1 个不稳定版本
0.1.0 | 2022 年 6 月 23 日 |
---|
#400 in 游戏
41KB
403 行
melee-inject
使用 rust 替换 v1.02 NTSC GALE01 中的 DAT 文件
简介
从 RC 发送:解析和转换超级炸弹人 melee
这是我曾在 The Recurse Center 做的演讲!
用法
此示例使用 dang3r
潜行灵感的 animelee 鹰
Cargo.toml
:
[dependencies]
melee_inject = { git = "https://github.com/djanatyn/melee-inject" }
src/main.rs
:
use melee_inject::characters::CaptainFalcon;
use melee_inject::replace::{build_iso, rebuild_fst, Replacement};
use std::io;
use std::path::PathBuf;
const SSBM_ISO: &str = "<path-to-ssbm.iso>";
fn main() -> io::Result<()> {
let replacements = vec![
// replace potemkin
Replacement {
target_file: CaptainFalcon::PlCaGr,
replacement: PathBuf::from("<path-to-skin.dat>"),
},
];
let updates = rebuild_fst(SSBM_ISO, &replacements);
std::fs::write("modified-fst.bin", &updates.new_fst)?;
let rebuilt_iso = build_iso(SSBM_ISO, &updates);
std::fs::write("modified-melee.iso", rebuilt_iso)?;
Ok(())
}
cargorun
:
[src/main.rs:226] matching.original_size - new_data_length as u32 = 123584
...
UpdateFST [offset 0x4f5b0000 -> 0x4f5b0000] [size 0x805cb -> 0x805cb] PlCaBu.dat
UpdateFST [offset 0x4f638000 -> 0x4f638000] [size 0x805ab -> 0x622eb] PlCaGr.dat
UpdateFST [offset 0x4f6c0000 -> 0x4f6a1d40] [size 0x8058b -> 0x8058b] PlCaGy.dat
...
❯ radiff2 ssbm-segment.fst potemkin-segment.fst
0x00000021 0805ab => 0622eb 0x00000021
0x00000029 6c0000 => 6a1d40 0x00000029
之后,你应该能够在 dolphin 中加载重建的 ISO!
依赖项
~1.5MB
~37K SLoC