BBKEmu - RetroBIOS¶
Platform details
memory_map: - source_ref: crates/bbkemu-core/src/memory.rs:377-398 - note: Physical space seen through sixteen 4 KiB bank registers: RAM below
0x8000, 2 MiB flash at 0x200000, 8.BIN at 0x800000, E.BIN at 0xE00000. Reads outside a loaded image return 0x00; ROM windows ignore writes.
Technical notes
BBK A-series electronic dictionary game emulator written in Rust by AloysHF. The libretro core and the bbk-emu standalone binary share the bbkemu-core crate. A .gam game is 6502 code that calls into the dictionary's OS ROM for LCD, keyboard, audio, timer and file services.
Two ROM images are read from the system directory, in one subdirectory
per model: {system}/BBKEmu/if let Ok: a missing file is skipped without
any message to the frontend. The image is copied into a 2 MiB
zero-filled buffer (crates/bbkemu-core/src/memory.rs:197-209); nothing
checks its size or contents.
Without E.BIN, run_os_init (crates/bbkemu-core/src/emulator.rs:231-252) sets PC to 0x350, reads zeros from the ROM window, never sees _MTCT=0xFE and gives up after 10 million cycles; the bank registers stay unmapped and the game exits at its first OS call. Measured by running run_os_init from bbkemu-core against a dump: 1 092 023 cycles to completion with E.BIN, timeout without it. Without 8.BIN the font window reads as 0x00 and every glyph the OS draws is blank; execution continues.
The standalone binary takes -8/--rom8 and -e/--rome explicit paths and
otherwise reads system/BBKEmu/
During init the OS maps its own bank at logical bank D: 0xEA8 for the A4980 OS, 0xE88 for the A4988 OS (crates/bbkemu-core/src/model.rs:11-13). The core never reads that value back; detect_model (crates/bbkemu-core/src/model.rs:37-49) has no caller. The include_bytes! font in crates/bbkemu-core/src/font.rs is not declared in lib.rs and is not compiled. Content arrives through the frontend buffer (need_fullpath = false, crates/bbkemu-libretro/src/lib.rs:416). Save RAM is the first 0x14000 bytes of the emulated flash (crates/bbkemu-libretro/src/lib.rs:840-842).
4 files | 4 required, 0 optional | 4 in repo, 0 missing
8.BIN required in repo
BBK A-series font ROM
- Path:
BBKEmu/A4980/8.BIN - System: bbk-longman-4980
- Size: 2.0 MB
- Source:
crates/bbkemu-libretro/src/lib.rs:187-199,crates/bbkemu-libretro/src/lib.rs:470-471,crates/bbkemu-core/src/memory.rs:8,crates/bbkemu-core/src/memory.rs:197-202,crates/bbkemu-core/src/memory.rs:384-390,crates/bbkemu/src/main.rs:147-158 - Read whole from {system}/BBKEmu/A4980/8.BIN into the 2 MiB window at physical 0x800000. A missing file is skipped silently; the window then reads as 0x00 and text drawn through the OS is blank. No size or hash check; size is the window the image fills.
E.BIN required in repo
BBK A-series OS ROM
- Path:
BBKEmu/A4980/E.BIN - System: bbk-longman-4980
- Size: 2.0 MB
- Source:
crates/bbkemu-libretro/src/lib.rs:187-193,crates/bbkemu-libretro/src/lib.rs:201-206,crates/bbkemu-libretro/src/lib.rs:470-471,crates/bbkemu-core/src/memory.rs:9,crates/bbkemu-core/src/memory.rs:204-209,crates/bbkemu-core/src/memory.rs:224-226,crates/bbkemu-core/src/memory.rs:391-397,crates/bbkemu-core/src/emulator.rs:231-252,crates/bbkemu/src/main.rs:159-170 - Read whole from {system}/BBKEmu/A4980/E.BIN into the 2 MiB window at physical 0xE00000; the last 256 bytes also serve as the interrupt vector page at 0x0300. A missing file is skipped silently, the OS init loop times out after 10 million cycles and no game runs. No size or hash check; size is the window the image fills.
8.BIN required in repo standalone
BBK A-series font ROM, A4988 slot
- System: bbk-longman-4988
- Size: 2.0 MB
- Source:
crates/bbkemu/src/main.rs:108-117,crates/bbkemu/src/main.rs:147-158,crates/bbkemu-core/src/model.rs:28-34 - Read by the standalone binary with --model 4988 from system/BBKEmu/A4988/8.BIN relative to the working directory. The libretro core has no model option and never opens this directory.
E.BIN required in repo standalone
BBK A-series OS ROM, A4988 slot
- System: bbk-longman-4988
- Size: 2.0 MB
- Source:
crates/bbkemu/src/main.rs:108-117,crates/bbkemu/src/main.rs:159-170,crates/bbkemu-core/src/model.rs:28-34,crates/bbkemu-core/src/emulator.rs:148-153 - Read by the standalone binary with --model 4988 from system/BBKEmu/A4988/E.BIN relative to the working directory. The libretro core has no model option and never opens this directory.
Generated on 2026-09-14T09:03:09Z