convert from lsdpack output source
This commit is contained in:
parent
b11f484e7d
commit
28fd640d28
8
Cargo.lock
generated
8
Cargo.lock
generated
|
@ -14,6 +14,12 @@ version = "0.1.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6559b8c3065745016f5cc2d1095273fe8a175e953c976426947ad828d6ba6fda"
|
||||
|
||||
[[package]]
|
||||
name = "build_const"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7"
|
||||
|
||||
[[package]]
|
||||
name = "gba"
|
||||
version = "0.11.3"
|
||||
|
@ -29,7 +35,9 @@ dependencies = [
|
|||
name = "gba-template"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"build_const",
|
||||
"gba",
|
||||
"voladdress",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
|
@ -6,4 +6,10 @@ edition = "2021"
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
build_const = { version = "0.2.2", default-features = false }
|
||||
gba = "0.11.3"
|
||||
#once_cell = { version = "1.19.0", default-features = false }
|
||||
voladdress = "*"
|
||||
|
||||
[build-dependencies]
|
||||
build_const = "0.2.2"
|
||||
|
|
34
build.rs
Normal file
34
build.rs
Normal file
|
@ -0,0 +1,34 @@
|
|||
use build_const::ConstWriter;
|
||||
|
||||
const SONG_SOURCE: &str = include_str!("lsdpack.s");
|
||||
|
||||
fn main() {
|
||||
let mut consts = ConstWriter::for_build("lsdpack_bc")
|
||||
.unwrap()
|
||||
.finish_dependencies();
|
||||
let bytes: Vec<u8> = SONG_SOURCE
|
||||
.lines()
|
||||
.map(|s| s.trim().strip_prefix("DB "))
|
||||
.flatten() // filter to lines starting with DB
|
||||
.map(|s| {
|
||||
s.split_once(';')
|
||||
.unwrap_or((s, ""))
|
||||
.0 // remove comments
|
||||
.chars()
|
||||
.filter(|c| *c == ',' || c.is_ascii_hexdigit()) // remove spaces and dollars
|
||||
.collect::<String>()
|
||||
.split(',')
|
||||
.map(|s| u8::from_str_radix(s, 16).unwrap())
|
||||
.collect::<Vec<u8>>()
|
||||
})
|
||||
.flatten() // merge iterator of vectors
|
||||
.collect();
|
||||
let song_positions: Vec<usize> = SONG_SOURCE
|
||||
.lines()
|
||||
.map(|s| s.trim().strip_prefix("dw "))
|
||||
.flatten() // filter to lines from SongLocations
|
||||
.map(|s| usize::from_str_radix(s.split_once('$').unwrap().1, 16).unwrap() - 0x4000)
|
||||
.collect();
|
||||
consts.add_array("LSDPACK_DATA", "u8", &bytes);
|
||||
consts.add_array("LSDPACK_SONG_POSITIONS", "usize", &song_positions);
|
||||
}
|
Loading…
Reference in a new issue