diff --git a/src/gb.rs b/src/gb.rs index b1b7533be136055b5099255f4ed7290d73504aa0..1d03e62f00d0732bc3beb2721ad701ab5e8fe1b6 100644 --- a/src/gb.rs +++ b/src/gb.rs @@ -1,6 +1,6 @@ use std::{cell::RefCell, rc::Rc}; -use crate::{cpu::Cpu, mmu::Mmu, util::read_file}; +use crate::{cpu::Cpu, mmu::Mmu, ppu::Ppu, util::read_file}; pub type SharedMut<T> = Rc<RefCell<T>>; @@ -10,7 +10,8 @@ pub struct GameBoy { impl GameBoy { pub fn new() -> GameBoy { - let mmu = Mmu::new(); + let ppu = Ppu::new(); + let mmu = Mmu::new(ppu); let cpu = Cpu::new(mmu); GameBoy { cpu: cpu } } diff --git a/src/mmu.rs b/src/mmu.rs index 5044defd2dbcc947c1d7e112668fdaea65275e55..6666aeaee69bda1f2406616b602571e03a73ed03 100644 --- a/src/mmu.rs +++ b/src/mmu.rs @@ -1,16 +1,17 @@ +use crate::ppu::Ppu; + pub const RAM_SIZE: usize = 8192; -pub const VRAM_SIZE: usize = 8192; pub struct Mmu { + ppu: Ppu, ram: [u8; RAM_SIZE], - vram: [u8; VRAM_SIZE], } impl Mmu { - pub fn new() -> Mmu { + pub fn new(ppu: Ppu) -> Mmu { Mmu { + ppu: ppu, ram: [0u8; RAM_SIZE], - vram: [0u8; VRAM_SIZE], } } diff --git a/src/ppu.rs b/src/ppu.rs index 8b137891791fe96927ad78e64b0aad7bded08bdc..226a07a75cbad7b1dda6d2183db6f4ace1b88e47 100644 --- a/src/ppu.rs +++ b/src/ppu.rs @@ -1 +1,13 @@ +pub const VRAM_SIZE: usize = 8192; +pub struct Ppu { + vram: [u8; VRAM_SIZE], +} + +impl Ppu { + pub fn new() -> Ppu { + Ppu { + vram: [0u8; VRAM_SIZE], + } + } +}