From 0843a34eb775bc22bcbec7fea83ec9ac80e66050 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Freitas?= Date: Fri, 26 Jul 2024 16:36:51 +0100 Subject: [PATCH] Use Box instead of Rc for cartridge --- fpt/src/memory/lib.rs | 3 +-- fpt/src/memory/mbc_builder.rs | 9 ++++----- fpt/src/memory/mbc_none.rs | 4 ++-- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/fpt/src/memory/lib.rs b/fpt/src/memory/lib.rs index 48e2512..7de0e20 100644 --- a/fpt/src/memory/lib.rs +++ b/fpt/src/memory/lib.rs @@ -9,11 +9,10 @@ use crate::memory::{create_empty_mbc, create_mbc, Cartridge}; pub type Address = usize; pub type MemoryRange = Range
; -#[derive(Clone)] pub struct Memory { mem: Vec, pub bootrom_loaded: bool, - pub cartridge: Rc>, + pub cartridge: Box>, bootrom: &'static [u8; 256], code_listing: Vec>, pub buttons: Buttons, diff --git a/fpt/src/memory/mbc_builder.rs b/fpt/src/memory/mbc_builder.rs index 333c529..2cc4002 100644 --- a/fpt/src/memory/mbc_builder.rs +++ b/fpt/src/memory/mbc_builder.rs @@ -1,18 +1,17 @@ use std::cell::RefCell; -use std::rc::Rc; use super::cartridge::{get_cartridge_type, EmptyCartridge}; use super::mbc_none::NoMbcCartridge; use super::Cartridge; -pub fn create_mbc(cartridge_data: &[u8]) -> Option>> { +pub fn create_mbc(cartridge_data: &[u8]) -> Option>> { // https://gbdev.io/pandocs/The_Cartridge_Header.html#0147--cartridge-type match get_cartridge_type(cartridge_data) { - 0x00 => Some(Rc::new(RefCell::new(NoMbcCartridge::new(cartridge_data)))), // rom only + 0x00 => Some(Box::new(RefCell::new(NoMbcCartridge::new(cartridge_data)))), // rom only _ => None, } } -pub fn create_empty_mbc() -> Rc> { - Rc::new(RefCell::new(EmptyCartridge::new())) +pub fn create_empty_mbc() -> Box> { + Box::new(RefCell::new(EmptyCartridge::new())) } diff --git a/fpt/src/memory/mbc_none.rs b/fpt/src/memory/mbc_none.rs index a85be87..59ef845 100644 --- a/fpt/src/memory/mbc_none.rs +++ b/fpt/src/memory/mbc_none.rs @@ -5,7 +5,7 @@ use super::{map, Address}; /// /// pub struct NoMbcCartridge { - memory: Vec, + memory: [u8; 0x8000], } impl NoMbcCartridge { @@ -15,7 +15,7 @@ impl NoMbcCartridge { "Expected cartridge size of 0x8000" ); NoMbcCartridge { - memory: cartridge.to_vec(), + memory: cartridge.try_into().unwrap(), } } }