diff --git a/frontends/web/ts/gb.ts b/frontends/web/ts/gb.ts index 1f044191befd185d2cc28968fedd489e9951f0d8..1f57998f263097daf25aa675039d86e6c9c8db21 100644 --- a/frontends/web/ts/gb.ts +++ b/frontends/web/ts/gb.ts @@ -31,10 +31,13 @@ import { import { Cartridge, default as _wasm, + name, GameBoy, PadKey, GameBoyMode, - GameBoySpeed + GameBoySpeed, + version, + system } from "../lib/boytacean"; import info from "../package.json"; @@ -485,12 +488,12 @@ export class GameboyEmulator extends EmulatorBase implements Emulator { } get name(): string { - return this.gameBoy?.name() || info.name; + return name() || info.name; } get device(): Entry { return { - text: "Game Boy", + text: system(), url: "https://en.wikipedia.org/wiki/Game_Boy" }; } @@ -501,7 +504,7 @@ export class GameboyEmulator extends EmulatorBase implements Emulator { get version(): Entry | undefined { return { - text: this.gameBoy?.version() ?? info.version, + text: version() ?? info.version, url: "https://github.com/joamag/boytacean/blob/master/CHANGELOG.md" }; } diff --git a/src/gb.rs b/src/gb.rs index c3db3aed0d20bbbcf0561b4d5eb0dc0baedb405f..7b29e97db47acefb0bf71cb5ae42ca9a7b1590bc 100644 --- a/src/gb.rs +++ b/src/gb.rs @@ -11,8 +11,9 @@ use crate::{ data::{BootRom, CGB_BOOT, DMG_BOOT, DMG_BOOTIX, MGB_BOOTIX, SGB_BOOT}, devices::{printer::PrinterDevice, stdout::StdoutDevice}, dma::Dma, - gen::{COMPILATION_DATE, COMPILATION_TIME, COMPILER, COMPILER_VERSION, NAME, VERSION}, + gen::{COMPILATION_DATE, COMPILATION_TIME, COMPILER, COMPILER_VERSION}, genie::{GameGenie, GameGenieCode}, + info::version, mmu::Mmu, pad::{Pad, PadKey}, ppu::{ @@ -22,7 +23,7 @@ use crate::{ rom::{Cartridge, RamSize}, serial::{NullDevice, Serial, SerialDevice}, timer::Timer, - util::{capitalize, read_file}, + util::read_file, }; #[cfg(feature = "wasm")] @@ -701,16 +702,6 @@ impl GameBoy { tile.palette_buffer(self.ppu().palette_bg()) } - /// Obtains the name of the emulator. - pub fn name(&self) -> String { - capitalize(NAME) - } - - /// Obtains the version of the emulator. - pub fn version(&self) -> String { - String::from(VERSION) - } - /// Obtains the name of the compiler that has been /// used in the compilation of the base Boytacean /// library. Can be used for diagnostics. @@ -874,7 +865,7 @@ impl GameBoy { format!( "{} {}\n{} {}\n{} {}\n{} {}\n{} {}\n{} {}", version_l, - VERSION, + version(), mode_l, self.mode(), clock_l, diff --git a/src/info.rs b/src/info.rs new file mode 100644 index 0000000000000000000000000000000000000000..ef73a8dd7b7d1d443e232e07a6295dba744c1004 --- /dev/null +++ b/src/info.rs @@ -0,0 +1,25 @@ +use crate::{ + gen::{NAME, VERSION}, + util::capitalize, +}; + +#[cfg(feature = "wasm")] +use wasm_bindgen::prelude::*; + +/// Obtains the name of the emulator. +#[cfg_attr(feature = "wasm", wasm_bindgen)] +pub fn name() -> String { + capitalize(NAME) +} + +/// Obtains the version of the emulator. +#[cfg_attr(feature = "wasm", wasm_bindgen)] +pub fn version() -> String { + String::from(VERSION) +} + +/// Obtains the system this emulator is emulating.. +#[cfg_attr(feature = "wasm", wasm_bindgen)] +pub fn system() -> String { + String::from("Game Boy") +} diff --git a/src/lib.rs b/src/lib.rs index 560330b699fe18db9bd4a5f4f03c05047b98072e..81e68ee4cb0f7aa6bdb8c7faf724d15e23422dff 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,6 +8,7 @@ pub mod dma; pub mod gb; pub mod gen; pub mod genie; +pub mod info; pub mod inst; pub mod macros; pub mod mmu; diff --git a/src/state.rs b/src/state.rs index 507868a4f09b9e0c2a00a2e54e1129c410102d95..125819ebc2304f42c7e6f81cb83c415209e47e64 100644 --- a/src/state.rs +++ b/src/state.rs @@ -16,9 +16,9 @@ pub trait Serialize { } pub struct BeesState { - pub name: BeesName, - pub info: BeesInfo, - pub core: BeesCore, + name: BeesName, + info: BeesInfo, + core: BeesCore, } impl Serialize for BeesState { @@ -34,8 +34,8 @@ impl Serialize for BeesState { } pub struct BeesBlockHeader { - pub magic: String, - pub size: u32, + magic: String, + size: u32, } impl BeesBlockHeader { @@ -60,18 +60,18 @@ impl Serialize for BeesBlockHeader { } pub struct BeesBuffer { - pub size: u32, - pub offset: u32, + size: u32, + offset: u32, } pub struct BeesFooter { - pub start_offset: u32, - pub magic: u32, + start_offset: u32, + magic: u32, } pub struct BeesName { - pub header: BeesBlockHeader, - pub name: String, + header: BeesBlockHeader, + name: String, } impl BeesName { @@ -98,9 +98,9 @@ impl Serialize for BeesName { } pub struct BeesInfo { - pub header: BeesBlockHeader, - pub title: [u8; 16], - pub checksum: [u8; 2], + header: BeesBlockHeader, + title: [u8; 16], + checksum: [u8; 2], } impl Serialize for BeesInfo { @@ -110,35 +110,35 @@ impl Serialize for BeesInfo { } pub struct BeesCore { - pub header: BeesBlockHeader, + header: BeesBlockHeader, - pub major: u16, - pub minor: u16, + major: u16, + minor: u16, - pub model: u32, + model: u32, - pub pc: u16, - pub af: u16, - pub bc: u16, - pub de: u16, - pub hl: u16, - pub sp: u16, + pc: u16, + af: u16, + bc: u16, + de: u16, + hl: u16, + sp: u16, - pub ime: u8, - pub ie: u8, + ime: u8, + ie: u8, // 0 = running; 1 = halted; 2 = stopped - pub execution_mode: u8, + execution_mode: u8, _padding: u8, - pub io_registers: [u8; 128], + io_registers: [u8; 128], - pub ram: BeesBuffer, - pub vram: BeesBuffer, - pub mbc_ram: BeesBuffer, - pub oam: BeesBuffer, - pub hram: BeesBuffer, - pub background_palettes: BeesBuffer, - pub object_palettes: BeesBuffer, + ram: BeesBuffer, + vram: BeesBuffer, + mbc_ram: BeesBuffer, + oam: BeesBuffer, + hram: BeesBuffer, + background_palettes: BeesBuffer, + object_palettes: BeesBuffer, } impl Serialize for BeesCore {