Playing around with reading gameboy roms, and maybe emulation
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

decent start

+28 -17
+28 -17
src/main.rs
··· 14 14 } 15 15 16 16 17 + 18 + 19 + 20 + 17 21 impl CartridgeHeader { 18 - fn new(rom_location: &str ) -> Result<Self, Error> { 19 - let mut rom_file = File::open(rom_location)?; 20 - rom_file.seek(SeekFrom::Start(CartridgeHeaderAddress::CartridgeHeaderStart as u64))?; 21 - let mut header_buffer: [u8; 80] = [0; 80]; 22 - rom_file.read_exact(&mut header_buffer)?; 22 + fn new(rom_bytes: &[u8] ) -> Result<Self, Error> { 23 + let start = CartridgeHeaderAddress::CartridgeHeaderStart as usize; 24 + //We know the header is only 80 chars 25 + let end = start + 80; 26 + 23 27 Ok(Self { 24 - buffer: header_buffer 28 + buffer: rom_bytes[start..end].try_into().map_err(|_| Error::CartridgeReadError)? 25 29 }) 30 + } 31 + 32 + fn print_test(&self) { 33 + for byte in self.buffer.iter() { 34 + print!("{} ", *byte as char); 35 + } 26 36 } 27 37 } 28 38 ··· 35 45 36 46 fn main() -> std::io::Result<()> { 37 47 let mut rom_file = File::open(ROM_NAME)?; 38 - rom_file.seek(SeekFrom::Start(CartridgeHeaderAddress::CartridgeHeaderStart as u64))?; 39 - let mut header_buffer: [u8; 80] = [0; 80]; 40 - rom_file.read_exact(&mut header_buffer)?; 41 - let mut byte_index = 0x0100; 42 - for byte in header_buffer.iter() { 43 - // println!("{}", *byte as char); 44 - print!("{:02x} ", byte_index); 45 - byte_index += 1; 46 - 47 - } 48 - 48 + let mut rom_buffer: Vec<u8> = Vec::new(); 49 + rom_file.read_to_end(&mut rom_buffer)?; 50 + let cart_header = CartridgeHeader::new(&*rom_buffer).map_err(|err| std::io::Error::new(std::io::ErrorKind::Other, "Rom failed to parse"))?; 51 + cart_header.print_test(); 49 52 Ok(()) 50 53 } 54 + 55 + 56 + fn buffer_from_file(path: &str) -> Vec<u8> { 57 + let mut file = std::fs::File::open(path).expect("File not there"); 58 + let mut buffer = Vec::new(); 59 + file.read_to_end(&mut buffer).expect("Could not read file"); 60 + buffer 61 + }