From d0adf3c6813bb9e357d74f7a606352c957530686 Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Sat, 22 Nov 2025 13:21:41 -0500 Subject: audio: move 'asm' files out of data segment --- assets/asm/megalovania_base.asm | 27 ++++++++++++ assets/asm/megalovania_melody.asm | 29 +++++++++++++ assets/atlas.bmp | Bin 16522 -> 0 bytes assets/bmp/atlas.bmp | Bin 0 -> 16522 bytes assets/bmp/error.bmp | Bin 0 -> 650 bytes assets/bmp/font.bmp | Bin 0 -> 3218 bytes assets/bmp/player.bmp | Bin 0 -> 4234 bytes assets/bmp/zombie.bmp | Bin 0 -> 8330 bytes assets/error.bmp | Bin 650 -> 0 bytes assets/font.bmp | Bin 3218 -> 0 bytes assets/noise_0.wav | Bin 88244 -> 0 bytes assets/noise_1.wav | Bin 88244 -> 0 bytes assets/player.bmp | Bin 4234 -> 0 bytes assets/pulse_12.wav | Bin 244 -> 0 bytes assets/pulse_25.wav | Bin 244 -> 0 bytes assets/pulse_50.wav | Bin 244 -> 0 bytes assets/pulse_75.wav | Bin 244 -> 0 bytes assets/speak.ogg | Bin 5916 -> 0 bytes assets/triangle.wav | Bin 244 -> 0 bytes assets/wav/noise_0.wav | Bin 0 -> 88244 bytes assets/wav/noise_1.wav | Bin 0 -> 88244 bytes assets/wav/pulse_12.wav | Bin 0 -> 244 bytes assets/wav/pulse_25.wav | Bin 0 -> 244 bytes assets/wav/pulse_50.wav | Bin 0 -> 244 bytes assets/wav/pulse_75.wav | Bin 0 -> 244 bytes assets/wav/triangle.wav | Bin 0 -> 244 bytes assets/zombie.bmp | Bin 8330 -> 0 bytes graphics/src/audio/channel.rs | 14 +++---- graphics/src/audio/data.rs | 84 +++++++++++--------------------------- graphics/src/audio/mod.rs | 2 +- graphics/src/render.rs | 10 ++--- 31 files changed, 93 insertions(+), 73 deletions(-) create mode 100644 assets/asm/megalovania_base.asm create mode 100644 assets/asm/megalovania_melody.asm delete mode 100644 assets/atlas.bmp create mode 100644 assets/bmp/atlas.bmp create mode 100644 assets/bmp/error.bmp create mode 100644 assets/bmp/font.bmp create mode 100644 assets/bmp/player.bmp create mode 100644 assets/bmp/zombie.bmp delete mode 100644 assets/error.bmp delete mode 100644 assets/font.bmp delete mode 100644 assets/noise_0.wav delete mode 100644 assets/noise_1.wav delete mode 100644 assets/player.bmp delete mode 100644 assets/pulse_12.wav delete mode 100644 assets/pulse_25.wav delete mode 100644 assets/pulse_50.wav delete mode 100644 assets/pulse_75.wav delete mode 100644 assets/speak.ogg delete mode 100644 assets/triangle.wav create mode 100644 assets/wav/noise_0.wav create mode 100644 assets/wav/noise_1.wav create mode 100644 assets/wav/pulse_12.wav create mode 100644 assets/wav/pulse_25.wav create mode 100644 assets/wav/pulse_50.wav create mode 100644 assets/wav/pulse_75.wav create mode 100644 assets/wav/triangle.wav delete mode 100644 assets/zombie.bmp diff --git a/assets/asm/megalovania_base.asm b/assets/asm/megalovania_base.asm new file mode 100644 index 0000000..11fdf1f --- /dev/null +++ b/assets/asm/megalovania_base.asm @@ -0,0 +1,27 @@ +; megalovania +; track: base + +; wait for melody +P4 +-128 + +; setup +b v100 d50 + +%define notes +b p$1 v100 -- b v0 -- +b p$1 v100 -- b v0 -- +b p$1 v100 - b v0 - +b p$1 v100 - b v0 - -- +b p$2 v100 - b v0 - -- +b p$2 v100 - b v0 - -- +b p$2 v100 - b v0 - +b p$2 v100 - b v0 - +b p$2 v100 - b v0 - +b p$2 v100 -- b v0 -- +%end + +notes d2 d2 +notes c2 c2 +notes b2 b2 +notes b2 c2 diff --git a/assets/asm/megalovania_melody.asm b/assets/asm/megalovania_melody.asm new file mode 100644 index 0000000..237f301 --- /dev/null +++ b/assets/asm/megalovania_melody.asm @@ -0,0 +1,29 @@ +; megalovania +; track: melody + +; setup +a v100 d50 +P4 + +%define notes +a p$1 v100 - a v0 - +a p$1 v100 - a v0 - +a pd4 v100 -- a v0 -- +a pa4 v100 -- a v0 -- -- +a pg3# v100 - a v0 - -- +a pg3 v100 - a v0 - -- +a pf3 v100 --- a v0 - +a pd3 v100 - a v0 - +a pf3 v100 - a v0 - +a pg3 v100 - a v0 - +%end + +notes d3 +notes c3 +notes b3 +notes b3b + +notes d3 +notes c3 +notes b3 +notes b3b diff --git a/assets/atlas.bmp b/assets/atlas.bmp deleted file mode 100644 index 3f7c4eb..0000000 Binary files a/assets/atlas.bmp and /dev/null differ diff --git a/assets/bmp/atlas.bmp b/assets/bmp/atlas.bmp new file mode 100644 index 0000000..3f7c4eb Binary files /dev/null and b/assets/bmp/atlas.bmp differ diff --git a/assets/bmp/error.bmp b/assets/bmp/error.bmp new file mode 100644 index 0000000..d857ade Binary files /dev/null and b/assets/bmp/error.bmp differ diff --git a/assets/bmp/font.bmp b/assets/bmp/font.bmp new file mode 100644 index 0000000..eb8e838 Binary files /dev/null and b/assets/bmp/font.bmp differ diff --git a/assets/bmp/player.bmp b/assets/bmp/player.bmp new file mode 100644 index 0000000..b6d39db Binary files /dev/null and b/assets/bmp/player.bmp differ diff --git a/assets/bmp/zombie.bmp b/assets/bmp/zombie.bmp new file mode 100644 index 0000000..effca5e Binary files /dev/null and b/assets/bmp/zombie.bmp differ diff --git a/assets/error.bmp b/assets/error.bmp deleted file mode 100644 index d857ade..0000000 Binary files a/assets/error.bmp and /dev/null differ diff --git a/assets/font.bmp b/assets/font.bmp deleted file mode 100644 index eb8e838..0000000 Binary files a/assets/font.bmp and /dev/null differ diff --git a/assets/noise_0.wav b/assets/noise_0.wav deleted file mode 100644 index dc1d2db..0000000 Binary files a/assets/noise_0.wav and /dev/null differ diff --git a/assets/noise_1.wav b/assets/noise_1.wav deleted file mode 100644 index c20882f..0000000 Binary files a/assets/noise_1.wav and /dev/null differ diff --git a/assets/player.bmp b/assets/player.bmp deleted file mode 100644 index b6d39db..0000000 Binary files a/assets/player.bmp and /dev/null differ diff --git a/assets/pulse_12.wav b/assets/pulse_12.wav deleted file mode 100644 index 0127fbb..0000000 Binary files a/assets/pulse_12.wav and /dev/null differ diff --git a/assets/pulse_25.wav b/assets/pulse_25.wav deleted file mode 100644 index 0bc51c7..0000000 Binary files a/assets/pulse_25.wav and /dev/null differ diff --git a/assets/pulse_50.wav b/assets/pulse_50.wav deleted file mode 100644 index 83e4676..0000000 Binary files a/assets/pulse_50.wav and /dev/null differ diff --git a/assets/pulse_75.wav b/assets/pulse_75.wav deleted file mode 100644 index 11f7364..0000000 Binary files a/assets/pulse_75.wav and /dev/null differ diff --git a/assets/speak.ogg b/assets/speak.ogg deleted file mode 100644 index dc3ef20..0000000 Binary files a/assets/speak.ogg and /dev/null differ diff --git a/assets/triangle.wav b/assets/triangle.wav deleted file mode 100644 index 0c9bb9e..0000000 Binary files a/assets/triangle.wav and /dev/null differ diff --git a/assets/wav/noise_0.wav b/assets/wav/noise_0.wav new file mode 100644 index 0000000..dc1d2db Binary files /dev/null and b/assets/wav/noise_0.wav differ diff --git a/assets/wav/noise_1.wav b/assets/wav/noise_1.wav new file mode 100644 index 0000000..c20882f Binary files /dev/null and b/assets/wav/noise_1.wav differ diff --git a/assets/wav/pulse_12.wav b/assets/wav/pulse_12.wav new file mode 100644 index 0000000..0127fbb Binary files /dev/null and b/assets/wav/pulse_12.wav differ diff --git a/assets/wav/pulse_25.wav b/assets/wav/pulse_25.wav new file mode 100644 index 0000000..0bc51c7 Binary files /dev/null and b/assets/wav/pulse_25.wav differ diff --git a/assets/wav/pulse_50.wav b/assets/wav/pulse_50.wav new file mode 100644 index 0000000..83e4676 Binary files /dev/null and b/assets/wav/pulse_50.wav differ diff --git a/assets/wav/pulse_75.wav b/assets/wav/pulse_75.wav new file mode 100644 index 0000000..11f7364 Binary files /dev/null and b/assets/wav/pulse_75.wav differ diff --git a/assets/wav/triangle.wav b/assets/wav/triangle.wav new file mode 100644 index 0000000..0c9bb9e Binary files /dev/null and b/assets/wav/triangle.wav differ diff --git a/assets/zombie.bmp b/assets/zombie.bmp deleted file mode 100644 index effca5e..0000000 Binary files a/assets/zombie.bmp and /dev/null differ diff --git a/graphics/src/audio/channel.rs b/graphics/src/audio/channel.rs index be12f75..a1ad144 100644 --- a/graphics/src/audio/channel.rs +++ b/graphics/src/audio/channel.rs @@ -43,10 +43,10 @@ pub struct PulseChannel { impl PulseChannel { pub fn load(handle: &'static RaylibAudio) -> crate::Result { Ok(Self { - pulse_12: load_audio!(handle, "assets/pulse_12.wav"), - pulse_25: load_audio!(handle, "assets/pulse_25.wav"), - pulse_50: load_audio!(handle, "assets/pulse_50.wav"), - pulse_75: load_audio!(handle, "assets/pulse_50.wav"), + pulse_12: load_audio!(handle, "assets/wav/pulse_12.wav"), + pulse_25: load_audio!(handle, "assets/wav/pulse_25.wav"), + pulse_50: load_audio!(handle, "assets/wav/pulse_50.wav"), + pulse_75: load_audio!(handle, "assets/wav/pulse_50.wav"), duty: DutyCycle::Percent50, }) } @@ -112,7 +112,7 @@ pub struct TriangleChannel { impl TriangleChannel { pub fn load(handle: &'static RaylibAudio) -> crate::Result { Ok(Self { - inner: load_audio!(handle, "assets/triangle.wav"), + inner: load_audio!(handle, "assets/wav/triangle.wav"), }) } } @@ -150,8 +150,8 @@ pub struct NoiseChannel { impl NoiseChannel { pub fn load(handle: &'static RaylibAudio) -> crate::Result { Ok(Self { - noise_0: load_audio!(handle, "assets/noise_0.wav"), - noise_1: load_audio!(handle, "assets/noise_1.wav"), + noise_0: load_audio!(handle, "assets/wav/noise_0.wav"), + noise_1: load_audio!(handle, "assets/wav/noise_1.wav"), mode: false, }) } diff --git a/graphics/src/audio/data.rs b/graphics/src/audio/data.rs index 8ed95bb..9c68523 100644 --- a/graphics/src/audio/data.rs +++ b/graphics/src/audio/data.rs @@ -1,66 +1,30 @@ -use crate::audio::{parse, program::Program}; - -const MELODY: &str = r#" -; setup -a v100 d50 -P4 - -%define notes -a p$1 v100 - a v0 - -a p$1 v100 - a v0 - -a pd4 v100 -- a v0 -- -a pa4 v100 -- a v0 -- -- -a pg3# v100 - a v0 - -- -a pg3 v100 - a v0 - -- -a pf3 v100 --- a v0 - -a pd3 v100 - a v0 - -a pf3 v100 - a v0 - -a pg3 v100 - a v0 - -%end - -notes d3 -notes c3 -notes b3 -notes b3b - -notes d3 -notes c3 -notes b3 -notes b3b -"#; - -const BASE: &str = r#" --128 - -; setup -b v100 d50 - -%define notes -b p$1 v100 -- b v0 -- -b p$1 v100 -- b v0 -- -b p$1 v100 - b v0 - -b p$1 v100 - b v0 - -- -b p$2 v100 - b v0 - -- -b p$2 v100 - b v0 - -- -b p$2 v100 - b v0 - -b p$2 v100 - b v0 - -b p$2 v100 -- b v0 -- -%end - -notes d2 d2 -notes c2 c2 -notes b2 b2 -notes b2 c2 -"#; +use crate::audio::program::Program; +use std::fs; + +macro_rules! load_asm { + ($path:tt) => {{ + if cfg!(any(feature = "static", target_arch = "wasm32")) { + let src = include_str!(concat!("../../../", $path)); + Program::parse(src, true)? + } else { + let src = fs::read_to_string($path)?; + Program::parse(&src, true)? + } + }}; + ($first:tt, $($arg:tt)*) => { + load_asm!($first)$(.merge(load_asm!($arg)))* + }; +} pub struct Data { - pub test: Program, + pub megalovania: Program, } impl Data { - pub fn load() -> parse::Result { - let melody = Program::parse(MELODY, true)?; - let base = Program::parse(BASE, true)?; - let test = melody.merge(base); - Ok(Self { test }) + pub fn load() -> crate::Result { + let megalovania = load_asm!( + "assets/asm/megalovania_melody.asm", + "assets/asm/megalovania_base.asm" + ); + Ok(Self { megalovania }) } } diff --git a/graphics/src/audio/mod.rs b/graphics/src/audio/mod.rs index f0de9d4..2b85a0f 100644 --- a/graphics/src/audio/mod.rs +++ b/graphics/src/audio/mod.rs @@ -80,7 +80,7 @@ impl Audio { pub fn update(&mut self) { if self.last.elapsed() >= TIME_SLICE { - self.data.test.exec(&mut self.channels); + self.data.megalovania.exec(&mut self.channels); self.last = Instant::now(); } diff --git a/graphics/src/render.rs b/graphics/src/render.rs index fe8ff92..7bae4e0 100644 --- a/graphics/src/render.rs +++ b/graphics/src/render.rs @@ -152,11 +152,11 @@ struct Textures { } impl Textures { fn new(handle: &mut RaylibHandle, thread: &RaylibThread) -> crate::Result { - let atlas = load_texture!(handle, thread, "assets/atlas.bmp"); - let player = load_texture!(handle, thread, "assets/player.bmp"); - let zombie = load_texture!(handle, thread, "assets/zombie.bmp"); - let error = load_texture!(handle, thread, "assets/error.bmp"); - let font = load_texture!(handle, thread, "assets/font.bmp"); + let atlas = load_texture!(handle, thread, "assets/bmp/atlas.bmp"); + let player = load_texture!(handle, thread, "assets/bmp/player.bmp"); + let zombie = load_texture!(handle, thread, "assets/bmp/zombie.bmp"); + let error = load_texture!(handle, thread, "assets/bmp/error.bmp"); + let font = load_texture!(handle, thread, "assets/bmp/font.bmp"); Ok(Self { atlas, -- cgit v1.2.3-freya