diff options
Diffstat (limited to 'graphics/src')
| -rw-r--r-- | graphics/src/audio/channel.rs | 14 | ||||
| -rw-r--r-- | graphics/src/audio/data.rs | 82 | ||||
| -rw-r--r-- | graphics/src/audio/mod.rs | 2 | ||||
| -rw-r--r-- | graphics/src/render.rs | 10 |
4 files changed, 36 insertions, 72 deletions
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<Self> { 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<Self> { 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<Self> { 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}; +use crate::audio::program::Program; +use std::fs; -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 -"#; +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<Self> { - 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<Self> { + 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<Self> { - 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, |