diff options
| -rw-r--r-- | assets/asm/megalovania_base.asm | 27 | ||||
| -rw-r--r-- | assets/asm/megalovania_melody.asm | 29 | ||||
| -rw-r--r-- | assets/bmp/atlas.bmp (renamed from assets/atlas.bmp) | bin | 16522 -> 16522 bytes | |||
| -rw-r--r-- | assets/bmp/error.bmp (renamed from assets/error.bmp) | bin | 650 -> 650 bytes | |||
| -rw-r--r-- | assets/bmp/font.bmp (renamed from assets/font.bmp) | bin | 3218 -> 3218 bytes | |||
| -rw-r--r-- | assets/bmp/player.bmp (renamed from assets/player.bmp) | bin | 4234 -> 4234 bytes | |||
| -rw-r--r-- | assets/bmp/zombie.bmp (renamed from assets/zombie.bmp) | bin | 8330 -> 8330 bytes | |||
| -rw-r--r-- | assets/speak.ogg | bin | 5916 -> 0 bytes | |||
| -rw-r--r-- | assets/wav/noise_0.wav (renamed from assets/noise_0.wav) | bin | 88244 -> 88244 bytes | |||
| -rw-r--r-- | assets/wav/noise_1.wav (renamed from assets/noise_1.wav) | bin | 88244 -> 88244 bytes | |||
| -rw-r--r-- | assets/wav/pulse_12.wav (renamed from assets/pulse_12.wav) | bin | 244 -> 244 bytes | |||
| -rw-r--r-- | assets/wav/pulse_25.wav (renamed from assets/pulse_25.wav) | bin | 244 -> 244 bytes | |||
| -rw-r--r-- | assets/wav/pulse_50.wav (renamed from assets/pulse_50.wav) | bin | 244 -> 244 bytes | |||
| -rw-r--r-- | assets/wav/pulse_75.wav (renamed from assets/pulse_75.wav) | bin | 244 -> 244 bytes | |||
| -rw-r--r-- | assets/wav/triangle.wav (renamed from assets/triangle.wav) | bin | 244 -> 244 bytes | |||
| -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 |
19 files changed, 92 insertions, 72 deletions
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/bmp/atlas.bmp Binary files differindex 3f7c4eb..3f7c4eb 100644 --- a/assets/atlas.bmp +++ b/assets/bmp/atlas.bmp diff --git a/assets/error.bmp b/assets/bmp/error.bmp Binary files differindex d857ade..d857ade 100644 --- a/assets/error.bmp +++ b/assets/bmp/error.bmp diff --git a/assets/font.bmp b/assets/bmp/font.bmp Binary files differindex eb8e838..eb8e838 100644 --- a/assets/font.bmp +++ b/assets/bmp/font.bmp diff --git a/assets/player.bmp b/assets/bmp/player.bmp Binary files differindex b6d39db..b6d39db 100644 --- a/assets/player.bmp +++ b/assets/bmp/player.bmp diff --git a/assets/zombie.bmp b/assets/bmp/zombie.bmp Binary files differindex effca5e..effca5e 100644 --- a/assets/zombie.bmp +++ b/assets/bmp/zombie.bmp diff --git a/assets/speak.ogg b/assets/speak.ogg Binary files differdeleted file mode 100644 index dc3ef20..0000000 --- a/assets/speak.ogg +++ /dev/null diff --git a/assets/noise_0.wav b/assets/wav/noise_0.wav Binary files differindex dc1d2db..dc1d2db 100644 --- a/assets/noise_0.wav +++ b/assets/wav/noise_0.wav diff --git a/assets/noise_1.wav b/assets/wav/noise_1.wav Binary files differindex c20882f..c20882f 100644 --- a/assets/noise_1.wav +++ b/assets/wav/noise_1.wav diff --git a/assets/pulse_12.wav b/assets/wav/pulse_12.wav Binary files differindex 0127fbb..0127fbb 100644 --- a/assets/pulse_12.wav +++ b/assets/wav/pulse_12.wav diff --git a/assets/pulse_25.wav b/assets/wav/pulse_25.wav Binary files differindex 0bc51c7..0bc51c7 100644 --- a/assets/pulse_25.wav +++ b/assets/wav/pulse_25.wav diff --git a/assets/pulse_50.wav b/assets/wav/pulse_50.wav Binary files differindex 83e4676..83e4676 100644 --- a/assets/pulse_50.wav +++ b/assets/wav/pulse_50.wav diff --git a/assets/pulse_75.wav b/assets/wav/pulse_75.wav Binary files differindex 11f7364..11f7364 100644 --- a/assets/pulse_75.wav +++ b/assets/wav/pulse_75.wav diff --git a/assets/triangle.wav b/assets/wav/triangle.wav Binary files differindex 0c9bb9e..0c9bb9e 100644 --- a/assets/triangle.wav +++ b/assets/wav/triangle.wav 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, |