From 6a5dad18270dded8fc0c9d181eccf9c250268adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com> Date: Wed, 29 Jun 2022 00:28:00 +0100 Subject: [PATCH] feat: more code simplification --- src/gb.rs | 24 +++++++++++++++++++----- src/mmu.rs | 9 +++++++-- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/gb.rs b/src/gb.rs index 0d1da401..cf4dd195 100644 --- a/src/gb.rs +++ b/src/gb.rs @@ -1,8 +1,14 @@ -use std::{cell::RefCell, rc::Rc}; - -use crate::{cpu::Cpu, mmu::Mmu, ppu::Ppu, util::read_file}; - -pub type SharedMut<T> = Rc<RefCell<T>>; +use std::{ + cell::RefCell, + rc::{Rc, Weak}, +}; + +use crate::{ + cpu::Cpu, + mmu::Mmu, + ppu::Ppu, + util::{read_file, SharedMut}, +}; pub struct GameBoy { cpu: Cpu, @@ -24,6 +30,14 @@ impl GameBoy { &self.cpu } + pub fn mmu(&mut self) -> &Mmu { + self.cpu.mmu() + } + + pub fn ppu(&mut self) -> &Ppu { + self.mmu().ppu() + } + pub fn load_boot(&mut self, path: &str) { let data = read_file(path); self.cpu.mmu().write_boot(0x0000, &data); diff --git a/src/mmu.rs b/src/mmu.rs index 23e74f4a..ad8bbaca 100644 --- a/src/mmu.rs +++ b/src/mmu.rs @@ -29,6 +29,10 @@ impl Mmu { } } + pub fn ppu(&self) -> &Ppu { + &self.ppu + } + pub fn read(&self, addr: u16) -> u8 { match addr & 0xf000 { // BIOS @@ -45,8 +49,9 @@ impl Mmu { if self.boot_active { if addr < 0x0100 { return self.boot[addr as usize]; - } - //else if self @todo implementar isto + } /* else if self.cpu.as_ref().unwrap().borrow().pc() == 0x0100 { + self.boot_active = false; + }*/ } self.rom[addr as usize] } -- GitLab