Skip to content
Snippets Groups Projects
Verified Commit ee1e04f6 authored by João Magalhães's avatar João Magalhães :rocket:
Browse files

feat: new global buffer usage

parent 17184e23
No related branches found
No related tags found
No related merge requests found
...@@ -153,6 +153,10 @@ pub extern "C" fn retro_init() { ...@@ -153,6 +153,10 @@ pub extern "C" fn retro_init() {
unsafe { unsafe {
EMULATOR = Some(GameBoy::new(None)); EMULATOR = Some(GameBoy::new(None));
KEY_STATES = Some(HashMap::new()); KEY_STATES = Some(HashMap::new());
AUDIO_BUFFER = Some(vec![
0x00;
EMULATOR.as_ref().unwrap().apu_i().audio_buffer_max()
]);
} }
} }
...@@ -219,6 +223,7 @@ pub extern "C" fn retro_run() { ...@@ -219,6 +223,7 @@ pub extern "C" fn retro_run() {
let input_poll_cb = unsafe { INPUT_POLL_CALLBACK.as_ref().unwrap() }; let input_poll_cb = unsafe { INPUT_POLL_CALLBACK.as_ref().unwrap() };
let input_state_cb = unsafe { INPUT_STATE_CALLBACK.as_ref().unwrap() }; let input_state_cb = unsafe { INPUT_STATE_CALLBACK.as_ref().unwrap() };
let key_states = unsafe { KEY_STATES.as_mut().unwrap() }; let key_states = unsafe { KEY_STATES.as_mut().unwrap() };
let audio_buffer_ref = unsafe { AUDIO_BUFFER.as_mut().unwrap() };
let channels = emulator.audio_channels(); let channels = emulator.audio_channels();
let mut last_frame = emulator.ppu_frame(); let mut last_frame = emulator.ppu_frame();
...@@ -272,14 +277,11 @@ pub extern "C" fn retro_run() { ...@@ -272,14 +277,11 @@ pub extern "C" fn retro_run() {
.map(|v| *v as i16 * 256) .map(|v| *v as i16 * 256)
.collect::<Vec<i16>>(); .collect::<Vec<i16>>();
unsafe { audio_buffer_ref[0..audio_buffer.len()].copy_from_slice(&audio_buffer);
AUDIO_BUFFER = Some(audio_buffer.to_vec()); sample_batch_cb(
let audio_buffer_ref = AUDIO_BUFFER.as_ref().unwrap(); audio_buffer_ref.as_ptr(),
sample_batch_cb( audio_buffer.len() / channels as usize,
audio_buffer_ref.as_ptr(), );
audio_buffer_ref.len() / channels as usize,
);
}
emulator.clear_audio_buffer(); emulator.clear_audio_buffer();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment