Fix bin_comp and factor out Patch struct to base lib.

This commit is contained in:
Lyle Mantooth 2022-05-23 09:46:44 -04:00
parent ca1c347386
commit 476f01fad3
Signed by: IslandUsurper
GPG key ID: 6DB52EAE123A5789
5 changed files with 91 additions and 35 deletions

View file

@ -6,4 +6,4 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
md5 = "0.7.0"
serde = { version = 1.0, features = ["derive"] }

42
enemize/src/lib.rs Normal file
View file

@ -0,0 +1,42 @@
use std::io::Read;
use std::path::{Path, PathBuf};
use serde::Serialize;
pub mod rom;
#[derive(Serialize)]
pub struct Patch {
pub address: usize,
pub patch_data: Vec<u8>,
}
#[derive(Serialize)]
pub struct PatchSet {
filename: PathBuf,
patches: Vec<Patch>
}
impl PatchSet {
pub fn load(filename: Path) -> Result<PatchSet, anyhow::Error> {
let patches = {
let mut file = File::open(filename)?;
let mut buffer = std::io::BufReader::new(file);
serde_json::from_reader(buffer)?
};
PatchSet {
filename: filename.into(),
patches: patches
}
}
pub fn filename(&self) -> Path {
self.filename.as_path()
}
pub fn patchRom(&self, &mut rom: RomData) {
for patch in self.patches {
rom.patch_data(patch);
}
}
}

7
enemize/src/rom.rs Normal file
View file

@ -0,0 +1,7 @@
const ENEMIZER_INFO_SEED_OFFSET: usize = 0;
const ENEMIZER_INFO_SEED_LENGTH: usize = 12;
const ENEMIZER_INFO_VERSION_OFFSET: usize = ENEMIZER_INFO_SEED_OFFSET + ENEMIZER_INFO_SEED_LENGTH;
const ENEMIZER_INFO_VERSION_LENGTH: usize = 8;
const ENEMIZER_INFO_FLAGS_OFFSET: usize = ENEMIZER_INFO_VERSION_OFFSET + ENEMIZER_INFO_VERSION_LENGTH;
const ENEMIZER_INFO_FLAGS_LENGTH: usize = 0x50;