diff --git a/README.md b/README.md index 007c7aae9d066c15e2d08dec70dd7d603dc8bbce..d2d7131269355c35032362831ccb1b57b77792a6 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ A Game Boy emulator that is written in Rust 🦀. +**This emulator has been written for educational purposes and shouldn't be taken to seriously.** But yeahh it plays games... 🎮 + ## Build ### WASM for Node.js diff --git a/src/gb.rs b/src/gb.rs index 0785ea67cd02b915a0de35f04cb2641b3b03ff8e..2750414133440ad4878dbccefafdda3a04301b6b 100644 --- a/src/gb.rs +++ b/src/gb.rs @@ -205,11 +205,11 @@ impl GameBoy { #[wasm_bindgen] extern "C" { #[wasm_bindgen(js_namespace = window)] - fn panic(s: &str); + fn panic(message: &str); } #[cfg(feature = "wasm")] pub fn hook_impl(info: &PanicInfo) { - let msg = info.to_string(); - panic(msg.as_str()); + let message = info.to_string(); + panic(message.as_str()); } diff --git a/src/rom.rs b/src/rom.rs index b791a353a2fa3446284313d4873141f74d6512b1..42947b9ba6b0df83dd8397924725326103c1c6a3 100644 --- a/src/rom.rs +++ b/src/rom.rs @@ -45,9 +45,9 @@ pub enum RomType { Unknown = 0xef, } -impl Display for RomType { - fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { - let str = match self { +impl RomType { + pub fn description(&self) -> &'static str { + match self { RomType::RomOnly => "ROM Only", RomType::Mbc1 => "MBC1", RomType::Mbc1Ram => "MBC1 + RAM", @@ -77,8 +77,13 @@ impl Display for RomType { RomType::HuC3 => "HuC3", RomType::HuC1RamBattery => "HuC1 + RAM + BATTERY", RomType::Unknown => "Unknown", - }; - write!(f, "{}", str) + } + } +} + +impl Display for RomType { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.description()) } } @@ -97,6 +102,21 @@ pub enum RomSize { } impl RomSize { + pub fn description(&self) -> &'static str { + match self { + RomSize::Size32K => "32 KB", + RomSize::Size64K => "64 KB", + RomSize::Size128K => "128 KB", + RomSize::Size256K => "256 KB", + RomSize::Size512K => "512 KB", + RomSize::Size1M => "1 MB", + RomSize::Size2M => "2 MB", + RomSize::Size4M => "4 MB", + RomSize::Size8M => "8 MB", + RomSize::SizeUnknown => "Unknown", + } + } + pub fn rom_banks(&self) -> u16 { match self { RomSize::Size32K => 2, @@ -115,19 +135,7 @@ impl RomSize { impl Display for RomSize { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { - let str = match self { - RomSize::Size32K => "32 KB", - RomSize::Size64K => "64 KB", - RomSize::Size128K => "128 KB", - RomSize::Size256K => "256 KB", - RomSize::Size512K => "512 KB", - RomSize::Size1M => "1 MB", - RomSize::Size2M => "2 MB", - RomSize::Size4M => "4 MB", - RomSize::Size8M => "8 MB", - RomSize::SizeUnknown => "Unknown", - }; - write!(f, "{}", str) + write!(f, "{}", self.description()) } } @@ -143,6 +151,18 @@ pub enum RamSize { } impl RamSize { + pub fn description(&self) -> &'static str { + match self { + RamSize::NoRam => "No RAM", + RamSize::Unused => "Unused", + RamSize::Size8K => "8 KB", + RamSize::Size32K => "32 KB", + RamSize::Size128K => "128 KB", + RamSize::Size64K => "64 KB", + RamSize::SizeUnknown => "Unknown", + } + } + pub fn ram_banks(&self) -> u16 { match self { RamSize::NoRam => 0, @@ -158,16 +178,7 @@ impl RamSize { impl Display for RamSize { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { - let str = match self { - RamSize::NoRam => "No RAM", - RamSize::Unused => "Unused", - RamSize::Size8K => "8 KB", - RamSize::Size32K => "32 KB", - RamSize::Size128K => "128 KB", - RamSize::Size64K => "64 KB", - RamSize::SizeUnknown => "Unknown", - }; - write!(f, "{}", str) + write!(f, "{}", self.description()) } } @@ -376,6 +387,18 @@ impl Cartridge { _ => RamSize::SizeUnknown, } } + + pub fn rom_type_s(&self) -> String { + String::from(self.rom_type().description()) + } + + pub fn rom_size_s(&self) -> String { + String::from(self.rom_size().description()) + } + + pub fn ram_size_s(&self) -> String { + String::from(self.ram_size().description()) + } } impl Display for Cartridge {