BBKEmu
BBKEmu emulates BBK Longman A4980 and BBK Longman A4988. It reads 4 files, 4 of them required: without a required file it does not start games. A required file is needed only by the machines that use it. Each file below cites the line of source code that reads it.
About this profile
Install this emulator's files
For BBKEmu inside RetroArch, EmuDeck or another setup. The installer finds your setup and its BIOS folder, then downloads only the files this emulator reads there and checks each one.
Open the Start menu. Type PowerShell and open it. Paste the line. Press Enter.
&([scriptblock]::Create((irm https://abdess.github.io/retrobios/i.ps1))) --emulator bbkemuOpen Terminal, in Applications, then Utilities. Paste the line. Press Return.
curl -fsSL https://abdess.github.io/retrobios/i | sh -s -- --emulator bbkemuOpen a terminal. Paste the line. Press Enter.
curl -fsSL https://abdess.github.io/retrobios/i | sh -s -- --emulator bbkemuSwitch to Desktop Mode. Open Konsole. Paste with Ctrl+Shift+V. Press Enter.
curl -fsSL https://abdess.github.io/retrobios/i | sh -s -- --emulator bbkemuInstall Termux, a terminal app. Run pkg install python and termux-setup-storage once. Then paste the line. Press Enter.
curl -fsSL https://abdess.github.io/retrobios/i | sh -s -- --emulator bbkemuOpen a terminal on the device. Or connect from a computer with SSH, a terminal over the network. Paste the line. Press Enter.
curl -fsSL https://abdess.github.io/retrobios/i | sh -s -- --emulator bbkemuPlatform 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, and ROM windows ignore writes.
- source_ref:
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/<model>/8.BIN, the font ROM mapped at
physical 0x800000-0x9FFFFF, and E.BIN, the OS ROM mapped at
0xE00000-0xFFFFFF (crates/,
crates/). The libretro core always
loads content as the A4980 model (crates/),
so only BBKEmu/A4980/ is ever read from RetroArch. The core also accepts
8.bin, and E.bin or e.bin, when the upper-case name is absent. The
Emscripten build used by EmulatorJS looks in the folder of the content
and its BBKEmu/<model>/ subfolder as well. Both reads are std::fs::read
results taken only when they succeed: a missing file is skipped without
any message to the frontend. The image is copied into a 2 MiB
zero-filled buffer (crates/), and nothing
checks its size or contents.
Without E.BIN, run_os_init (crates/)
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, but execution
continues.
The standalone binary takes -8/--rom8 and -e/--rome explicit paths and
otherwise reads system/BBKEmu/<model>/8.BIN and E.BIN relative to the
working directory, --model 4980 (default) or 4988 selecting the
subdirectory (crates/, crates/).
The A4988 model differs by its flash save-area offset and key layout
(crates/,
crates/).
During init the OS maps its own bank at logical bank D: 0xEA8 for the
A4980 OS, 0xE88 for the A4988 OS (crates/).
The core never reads that value back: detect_model
(crates/) 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/). Save RAM
is the first 0x14000 bytes of the emulated flash
(crates/).
4 files: 4 required, 0 optional.
In this collection: 4 in repo and 0 missing.
Required
Section titled “Required”8.BIN required for BBK Longman A4980 in repo
BBK A-series font ROM
- Path:
BBKEmu/A4980/8.BIN - Standalone path:
system/BBKEmu/A4980/8.BIN - System: BBK Longman A4980
- Read whole from {system}/BBKEmu/A4980/8.BIN, or 8.bin, into the 2 MiB window at physical 0x800000. A missing file is skipped silently, and 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.
- Size: 2.0 MB
- Collection copy:
bios/BBK/ A4980/ BBKEmu/ A4980/ 8.BIN
E.BIN required for BBK Longman A4980 in repo
BBK A-series OS ROM
- Path:
BBKEmu/A4980/E.BIN - Standalone path:
system/BBKEmu/A4980/E.BIN - System: BBK Longman A4980
- Read whole from {system}/BBKEmu/A4980/E.BIN, or E.bin or 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.
- Size: 2.0 MB
- Collection copy:
bios/BBK/ A4980/ BBKEmu/ A4980/ E.BIN
Source
- Source:
crates/,bbkemu-libretro/ src/ lib.rs:191-212 crates/,bbkemu-libretro/ src/ lib.rs:216-218 crates/,bbkemu-libretro/ src/ lib.rs:491-492 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
8.BIN required for BBK Longman A4988 in repo standalone
BBK A-series font ROM, A4988 slot
- Standalone path:
system/BBKEmu/A4988/8.BIN - System: BBK Longman A4988
- 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.
- Size: 2.0 MB
- Collection copy:
bios/BBK/ A4980/ BBKEmu/ A4980/ 8.BIN
E.BIN required for BBK Longman A4988 in repo standalone
BBK A-series OS ROM, A4988 slot
- Standalone path:
system/BBKEmu/A4988/E.BIN - System: BBK Longman A4988
- 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.
- Size: 2.0 MB
- Collection copy:
bios/BBK/ A4980/ BBKEmu/ A4980/ E.BIN
Next steps
Section titled “Next steps”- Get your files, for the setup you play on
- Every system, and the files each one needs
- When a game does not start