From 1902884df9d86aef27b738e4d63d2f104512f061 Mon Sep 17 00:00:00 2001 From: Franco Colmenarez Date: Tue, 12 Oct 2021 19:11:52 -0500 Subject: [PATCH] Logic to load a rom file --- roms/cpu_instrs.gb | Bin 0 -> 65536 bytes src/bin/main.rs | 9 ++++++--- src/lib.rs | 1 + src/rom.rs | 21 +++++++++++++++++++++ src/utils.rs | 2 ++ 5 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 roms/cpu_instrs.gb create mode 100644 src/rom.rs diff --git a/roms/cpu_instrs.gb b/roms/cpu_instrs.gb new file mode 100644 index 0000000000000000000000000000000000000000..7b06221b23dcd84644e7910bb8ba91a957c9ba04 GIT binary patch literal 65536 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 MfFZyT_;UpQ3qRkrD*ylh literal 0 HcmV?d00001 diff --git a/src/bin/main.rs b/src/bin/main.rs index a16f297..b613d5a 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -1,4 +1,7 @@ -fn main() { - println!("TEST"); - println!("{}", false as u8); +use rust_boy::rom::ROM; + +fn main() -> std::io::Result<()> { + let myrom = ROM::load_file("roms/cpu_instrs.gb".to_string())?; + myrom.print_content(); + Ok(()) } diff --git a/src/lib.rs b/src/lib.rs index 2144f0d..73e657f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,2 +1,3 @@ pub mod utils; pub mod cpu; +pub mod rom; diff --git a/src/rom.rs b/src/rom.rs new file mode 100644 index 0000000..50fc099 --- /dev/null +++ b/src/rom.rs @@ -0,0 +1,21 @@ +use std::fs::File; +use std::io::Read; + +pub struct ROM { + bytes: Vec, +} + +impl ROM { + pub fn load_file(filename: String) -> std::io::Result { + let mut file = File::open(filename)?; + let mut bytes = vec![]; + file.read_to_end(&mut bytes)?; + Ok(Self { + bytes, + }) + } + + pub fn print_content(&self) { + println!("{:02X?}", self.bytes); + } +} diff --git a/src/utils.rs b/src/utils.rs index 77a2d7f..d2d1171 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,3 +1,5 @@ +pub struct AddressRange(u16, u16); + pub enum BitIndex { I0, I1,