Skip to content

Commit d2d9a47

Browse files
committed
Use Box instead of Rc for cartridge
1 parent 852667d commit d2d9a47

File tree

3 files changed

+7
-9
lines changed

3 files changed

+7
-9
lines changed

fpt/src/memory/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,10 @@ use crate::memory::{create_empty_mbc, create_mbc, Cartridge};
99
pub type Address = usize;
1010
pub type MemoryRange = Range<Address>;
1111

12-
#[derive(Clone)]
1312
pub struct Memory {
1413
mem: Vec<u8>,
1514
pub bootrom_loaded: bool,
16-
pub cartridge: Rc<RefCell<dyn Cartridge>>,
15+
pub cartridge: Box<RefCell<dyn Cartridge>>,
1716
bootrom: &'static [u8; 256],
1817
code_listing: Vec<Option<String>>,
1918
pub buttons: Buttons,

fpt/src/memory/mbc_builder.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
use std::cell::RefCell;
2-
use std::rc::Rc;
32

43
use super::cartridge::{get_cartridge_type, EmptyCartridge};
54
use super::mbc_none::NoMbcCartridge;
65
use super::Cartridge;
76

8-
pub fn create_mbc(cartridge_data: &[u8]) -> Option<Rc<RefCell<dyn Cartridge>>> {
7+
pub fn create_mbc(cartridge_data: &[u8]) -> Option<Box<RefCell<dyn Cartridge>>> {
98
// https://gbdev.io/pandocs/The_Cartridge_Header.html#0147--cartridge-type
109
match get_cartridge_type(cartridge_data) {
11-
0x00 => Some(Rc::new(RefCell::new(NoMbcCartridge::new(cartridge_data)))), // rom only
10+
0x00 => Some(Box::new(RefCell::new(NoMbcCartridge::new(cartridge_data)))), // rom only
1211
_ => None,
1312
}
1413
}
1514

16-
pub fn create_empty_mbc() -> Rc<RefCell<dyn Cartridge>> {
17-
Rc::new(RefCell::new(EmptyCartridge::new()))
15+
pub fn create_empty_mbc() -> Box<RefCell<dyn Cartridge>> {
16+
Box::new(RefCell::new(EmptyCartridge::new()))
1817
}

fpt/src/memory/mbc_none.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use super::{map, Address};
55
///
66
/// <https://gbdev.io/pandocs/nombc.html>
77
pub struct NoMbcCartridge {
8-
memory: Vec<u8>,
8+
memory: [u8; 0x8000],
99
}
1010

1111
impl NoMbcCartridge {
@@ -15,7 +15,7 @@ impl NoMbcCartridge {
1515
"Expected cartridge size of 0x8000"
1616
);
1717
NoMbcCartridge {
18-
memory: cartridge.to_vec(),
18+
memory: cartridge.try_into().unwrap(),
1919
}
2020
}
2121
}

0 commit comments

Comments
 (0)