From 23193db644a8787335c0a3663e0c0834ca60a40b Mon Sep 17 00:00:00 2001 From: Alex Janka Date: Wed, 25 Oct 2023 17:20:51 +1100 Subject: [PATCH] buffer size configurable + SHADERS WORK EVERYWHERE! 0.5.0 release!!! --- Cargo.lock | 6 +++--- gb-emu/Cargo.toml | 2 +- gb-emu/src/audio.rs | 18 ++++++++++++++---- gb-emu/src/main.rs | 4 ++++ gb-vst/Cargo.toml | 2 +- lib/Cargo.toml | 2 +- 6 files changed, 24 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ef666db..43436dc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1242,7 +1242,7 @@ dependencies = [ [[package]] name = "gb-emu" -version = "0.4.0" +version = "0.5.0" dependencies = [ "bytemuck", "chrono", @@ -1263,7 +1263,7 @@ dependencies = [ [[package]] name = "gb-emu-lib" -version = "0.4.0" +version = "0.5.0" dependencies = [ "ash", "ash-molten", @@ -3432,7 +3432,7 @@ checksum = "49d64318d8311fc2668e48b63969f4343e0a85c4a109aa8460d6672e364b8bd1" [[package]] name = "twinc_emu_vst" -version = "0.4.0" +version = "0.5.0" dependencies = [ "async-ringbuf", "baseview", diff --git a/gb-emu/Cargo.toml b/gb-emu/Cargo.toml index 406cb6e..fa5d0ae 100644 --- a/gb-emu/Cargo.toml +++ b/gb-emu/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gb-emu" -version = "0.4.0" +version = "0.5.0" edition = "2021" description = "TWINC Game Boy (CGB/DMG) emulator" diff --git a/gb-emu/src/audio.rs b/gb-emu/src/audio.rs index 7b17b02..98b42e5 100644 --- a/gb-emu/src/audio.rs +++ b/gb-emu/src/audio.rs @@ -5,8 +5,8 @@ use cpal::{ use futures::executor; use gb_emu_lib::connect::{AudioOutput, DownsampleType}; -const BUFFERS_PER_FRAME: usize = 5; -const DEFAULT_BUFFER_SIZE: u32 = 64; +use crate::access_config; + const DOWNSAMPLE_TYPE: DownsampleType = DownsampleType::ZeroOrderHold; pub fn create_output(muted: bool) -> (AudioOutput, Stream) { @@ -20,16 +20,26 @@ pub fn create_output(muted: bool) -> (AudioOutput, Stream) { .default_output_config() .expect("Couldn't get default config for audio output"); + let (buffers_per_frame, default_buffer_size) = { + let configs = access_config(); + ( + configs.standalone_config.buffers_per_frame, + configs.standalone_config.output_buffer_size, + ) + }; + let sample_rate = config.sample_rate().0; let mut stream_config = config.config(); if let cpal::SupportedBufferSize::Range { min, max } = config.buffer_size() { stream_config.buffer_size = - cpal::BufferSize::Fixed(DEFAULT_BUFFER_SIZE.min(*max).max(*min)); + cpal::BufferSize::Fixed(default_buffer_size.min(*max).max(*min)); } - let (output, mut rx) = AudioOutput::new(sample_rate as f32, BUFFERS_PER_FRAME, DOWNSAMPLE_TYPE); + println!("Using buffer size {:?}", stream_config.buffer_size); + + let (output, mut rx) = AudioOutput::new(sample_rate as f32, buffers_per_frame, DOWNSAMPLE_TYPE); let stream = if muted { device diff --git a/gb-emu/src/main.rs b/gb-emu/src/main.rs index ee717c5..a1cea9e 100644 --- a/gb-emu/src/main.rs +++ b/gb-emu/src/main.rs @@ -120,6 +120,8 @@ enum ConfigType { pub struct StandaloneConfig { scale_factor: usize, group_screenshots_by_rom: bool, + buffers_per_frame: usize, + output_buffer_size: u32, } impl Default for StandaloneConfig { @@ -127,6 +129,8 @@ impl Default for StandaloneConfig { Self { scale_factor: 3, group_screenshots_by_rom: true, + buffers_per_frame: 5, + output_buffer_size: 64, } } } diff --git a/gb-vst/Cargo.toml b/gb-vst/Cargo.toml index 836f889..baa8186 100644 --- a/gb-vst/Cargo.toml +++ b/gb-vst/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "twinc_emu_vst" -version = "0.4.0" +version = "0.5.0" edition = "2021" [lib] diff --git a/lib/Cargo.toml b/lib/Cargo.toml index 850db01..86b7002 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gb-emu-lib" -version = "0.4.0" +version = "0.5.0" edition = "2021" [features]