Fix bin_comp and factor out Patch struct to base lib.
This commit is contained in:
		
							parent
							
								
									ca1c347386
								
							
						
					
					
						commit
						476f01fad3
					
				
					 5 changed files with 91 additions and 35 deletions
				
			
		
							
								
								
									
										42
									
								
								enemize/src/lib.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								enemize/src/lib.rs
									
										
									
									
									
										Normal 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
									
								
							
							
						
						
									
										7
									
								
								enemize/src/rom.rs
									
										
									
									
									
										Normal 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;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue