diff --git a/.gitignore b/.gitignore index 31b8d9d..38ec904 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -/target +**/target /rom diff --git a/.idea/gameboy.iml b/.idea/gameboy.iml index 9b4cf84..66baba7 100644 --- a/.idea/gameboy.iml +++ b/.idea/gameboy.iml @@ -3,7 +3,11 @@ + + + + diff --git a/gameboy-bin/Cargo.lock b/gameboy-bin/Cargo.lock new file mode 100644 index 0000000..9d08170 --- /dev/null +++ b/gameboy-bin/Cargo.lock @@ -0,0 +1,14 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "gameboy" +version = "0.1.0" + +[[package]] +name = "gameboy-bin" +version = "0.1.0" +dependencies = [ + "gameboy", +] diff --git a/gameboy-bin/Cargo.toml b/gameboy-bin/Cargo.toml new file mode 100644 index 0000000..e1156b0 --- /dev/null +++ b/gameboy-bin/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "gameboy-bin" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +gameboy = { path = "../gameboy-lib" } \ No newline at end of file diff --git a/gameboy-bin/src/main.rs b/gameboy-bin/src/main.rs new file mode 100644 index 0000000..110b233 --- /dev/null +++ b/gameboy-bin/src/main.rs @@ -0,0 +1,11 @@ +extern crate gameboy; + +fn main() { + let boot_rom = load_boot_rom(); + boot_rom.iter().for_each(|n|println!("{:x}", n)); + gameboy::start_gameboy(boot_rom); +} + +fn load_boot_rom() -> Vec { + return std::fs::read("/mnt/datahub/projects/emulation/gameboy/rom/dmg_boot.bin").expect("Error while reading boot rom") +} \ No newline at end of file diff --git a/Cargo.lock b/gameboy-lib/Cargo.lock similarity index 100% rename from Cargo.lock rename to gameboy-lib/Cargo.lock diff --git a/Cargo.toml b/gameboy-lib/Cargo.toml similarity index 100% rename from Cargo.toml rename to gameboy-lib/Cargo.toml diff --git a/src/cpu/cpu.rs b/gameboy-lib/src/cpu/cpu.rs similarity index 100% rename from src/cpu/cpu.rs rename to gameboy-lib/src/cpu/cpu.rs diff --git a/src/cpu/instructions.rs b/gameboy-lib/src/cpu/instructions.rs similarity index 100% rename from src/cpu/instructions.rs rename to gameboy-lib/src/cpu/instructions.rs diff --git a/src/cpu/mod.rs b/gameboy-lib/src/cpu/mod.rs similarity index 100% rename from src/cpu/mod.rs rename to gameboy-lib/src/cpu/mod.rs diff --git a/src/cpu/registers/flag_register.rs b/gameboy-lib/src/cpu/registers/flag_register.rs similarity index 100% rename from src/cpu/registers/flag_register.rs rename to gameboy-lib/src/cpu/registers/flag_register.rs diff --git a/src/cpu/registers/mod.rs b/gameboy-lib/src/cpu/registers/mod.rs similarity index 100% rename from src/cpu/registers/mod.rs rename to gameboy-lib/src/cpu/registers/mod.rs diff --git a/src/cpu/registers/register.rs b/gameboy-lib/src/cpu/registers/register.rs similarity index 100% rename from src/cpu/registers/register.rs rename to gameboy-lib/src/cpu/registers/register.rs diff --git a/src/cpu/registers/register_8bit.rs b/gameboy-lib/src/cpu/registers/register_8bit.rs similarity index 100% rename from src/cpu/registers/register_8bit.rs rename to gameboy-lib/src/cpu/registers/register_8bit.rs diff --git a/src/cpu/registers/stack_pointer.rs b/gameboy-lib/src/cpu/registers/stack_pointer.rs similarity index 100% rename from src/cpu/registers/stack_pointer.rs rename to gameboy-lib/src/cpu/registers/stack_pointer.rs diff --git a/gameboy-lib/src/lib.rs b/gameboy-lib/src/lib.rs new file mode 100644 index 0000000..7f4cc66 --- /dev/null +++ b/gameboy-lib/src/lib.rs @@ -0,0 +1,11 @@ +use crate::cpu::cpu::CPU; + +pub mod cpu; +mod memory; + +pub fn start_gameboy(boot_rom: Vec) { + let mut cpu = CPU::boot(boot_rom); + loop { + cpu.step(); + } +} \ No newline at end of file diff --git a/src/memory.rs b/gameboy-lib/src/memory.rs similarity index 100% rename from src/memory.rs rename to gameboy-lib/src/memory.rs diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index 88c3577..0000000 --- a/src/main.rs +++ /dev/null @@ -1,16 +0,0 @@ -use crate::cpu::cpu::CPU; - -mod cpu; -mod memory; - -fn main() { - let boot_rom = load_boot_rom(); - let mut cpu = CPU::boot(boot_rom); - loop { - cpu.step(); - } -} - -fn load_boot_rom() -> Vec { - return std::fs::read("./rom/dmg_boot.bin").expect("Can't read file"); -}