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