diff options
Diffstat (limited to 'audio/src/data.rs')
| -rw-r--r-- | audio/src/data.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/audio/src/data.rs b/audio/src/data.rs new file mode 100644 index 0000000..2d1bdc5 --- /dev/null +++ b/audio/src/data.rs @@ -0,0 +1,30 @@ +use crate::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 megalovania: Program, +} +impl Data { + pub fn load() -> crate::Result<Self> { + let megalovania = load_asm!( + "assets/asm/megalovania_melody.asm", + "assets/asm/megalovania_base.asm" + ); + Ok(Self { megalovania }) + } +} |