diff options
feat: 32k no music
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 51 | ||||
-rw-r--r-- | src/music.rs | 7 |
2 files changed, 36 insertions, 22 deletions
diff --git a/src/main.rs b/src/main.rs index 82ec725..83b2929 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,12 +4,14 @@ mod font; pub mod generated; mod interpolation; +#[cfg(all(feature = "music", not(feature = "32k")))] mod music; mod render; pub mod vendored; use std::time::{Duration, SystemTime}; +#[cfg(all(feature = "music", not(feature = "32k")))] use music::{mmc2r_to_pcm, Music}; use sdl2::{event::Event, keyboard::Keycode}; @@ -17,33 +19,38 @@ use sdl2::{event::Event, keyboard::Keycode}; const TIMEOUT_DEATH: f64 = render::JUST_DVD + 20.0; use sdl2::audio::AudioSpecDesired; + +#[cfg(all(feature = "music", not(feature = "32k")))] use vendored::micromod::MmC2r; pub fn main() { let sdl_context = sdl2::init().unwrap(); - let audio_subsystem = sdl_context.audio().unwrap(); - - let desired_spec = AudioSpecDesired { - freq: Some(48_000), - channels: Some(2), - samples: Some(8192 as u16), - }; - - let device = audio_subsystem - .open_playback(None, &desired_spec, |spec| { - // initialize the audio callback - Music { - offset: 0, - pcm: mmc2r_to_pcm( - &mut MmC2r::new(include_bytes!("../uwudhd.mod"), spec.freq as isize).unwrap(), - ), - } - }) - .unwrap(); - - // Start playback - device.resume(); + #[cfg(all(feature = "music", not(feature = "32k")))] + { + let audio_subsystem = sdl_context.audio().unwrap(); + + let desired_spec = AudioSpecDesired { + freq: Some(48_000), + channels: Some(2), + samples: Some(8192 as u16), + }; + + let device = audio_subsystem + .open_playback(None, &desired_spec, |spec| { + // initialize the audio callback + Music { + offset: 0, + pcm: mmc2r_to_pcm( + &mut MmC2r::new(include_bytes!("../uwudhd.mod"), spec.freq as isize).unwrap(), + ), + } + }) + .unwrap(); + + // Start playback + device.resume(); + } let video_subsystem = sdl_context.video().unwrap(); diff --git a/src/music.rs b/src/music.rs index 0f0f7e7..fe48989 100644 --- a/src/music.rs +++ b/src/music.rs @@ -1,12 +1,16 @@ +#[cfg(all(feature = "music", not(feature = "32k")))] use sdl2::audio::AudioCallback; +#[cfg(all(feature = "music", not(feature = "32k")))] use crate::vendored::micromod::MmC2r; +#[cfg(all(feature = "music", not(feature = "32k")))] pub struct Music { pub pcm: Vec<i16>, pub offset: usize, } +#[cfg(all(feature = "music", not(feature = "32k")))] impl AudioCallback for Music { type Channel = f32; @@ -22,6 +26,7 @@ impl AudioCallback for Music { } } +#[cfg(all(feature = "music", not(feature = "32k")))] pub fn mmc2r_to_pcm(state: &mut MmC2r) -> Vec<i16> { let mut destination = Vec::<i16>::new(); loop { @@ -35,6 +40,8 @@ pub fn mmc2r_to_pcm(state: &mut MmC2r) -> Vec<i16> { } destination } + +#[cfg(all(feature = "music", not(feature = "32k")))] pub fn pcm_to_f32pcm(input: &[i16], output: &mut [f32], len: usize) { for i in 0..len { output[i] = f32::from(input[i]) / f32::from(0x7FFF as i16); |