diff --git a/emulators/bbkemu.yml b/emulators/bbkemu.yml index ec9a4aeb5..608a01b57 100644 --- a/emulators/bbkemu.yml +++ b/emulators/bbkemu.yml @@ -3,8 +3,8 @@ type: standalone + libretro core_classification: pure_libretro source: "https://github.com/AloysHF/BBKEmu" upstream: "https://github.com/AloysHF/BBKEmu" -profiled_date: "2026-09-03" -source_commit: "aef61bd59d5eb65780ace33e288086dd98f709c5" +profiled_date: "2026-10-26" +source_commit: "6641863f6ec59a74635753766e3f9d34adf92b05" core_version: "0.1.0" display_name: "BBK - Electronic Dictionary (BBKEmu)" cores: @@ -22,11 +22,14 @@ notes: | Two ROM images are read from the system directory, in one subdirectory per model: {system}/BBKEmu//8.BIN, the font ROM mapped at physical 0x800000-0x9FFFFF, and E.BIN, the OS ROM mapped at - 0xE00000-0xFFFFFF (crates/bbkemu-libretro/src/lib.rs:187-206, + 0xE00000-0xFFFFFF (crates/bbkemu-libretro/src/lib.rs:186-219, crates/bbkemu-core/src/memory.rs:377-398). The libretro core always - loads content as the A4980 model (crates/bbkemu-libretro/src/lib.rs:470-471), - so only BBKEmu/A4980/ is ever read from RetroArch. Both reads are - std::fs::read guarded by `if let Ok`: a missing file is skipped without + loads content as the A4980 model (crates/bbkemu-libretro/src/lib.rs:491-492), + 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// 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/bbkemu-core/src/memory.rs:197-209), and nothing checks its size or contents. @@ -46,7 +49,7 @@ notes: | subdirectory (crates/bbkemu/src/main.rs:108-117, crates/bbkemu/src/main.rs:146-170). The A4988 model differs by its flash save-area offset and key layout (crates/bbkemu-core/src/emulator.rs:148-153, - crates/bbkemu-libretro/src/lib.rs:619-628). + crates/bbkemu-libretro/src/lib.rs:640-649). 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). @@ -54,9 +57,9 @@ notes: | (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 + (need_fullpath = false, crates/bbkemu-libretro/src/lib.rs:429). Save RAM is the first 0x14000 bytes of the emulated flash - (crates/bbkemu-libretro/src/lib.rs:840-842). + (crates/bbkemu-libretro/src/lib.rs:861-863). files: - name: 8.BIN @@ -67,11 +70,11 @@ files: required: true description: "BBK A-series font ROM" note: >- - Read whole from {system}/BBKEmu/A4980/8.BIN into the 2 MiB window at - physical 0x800000. A missing file is skipped silently, and the window + 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. - source_ref: "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" + source_ref: "crates/bbkemu-libretro/src/lib.rs:191-215, crates/bbkemu-libretro/src/lib.rs:491-492, 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" - name: E.BIN path: BBKEmu/A4980/E.BIN @@ -81,12 +84,12 @@ files: required: true description: "BBK A-series OS ROM" note: >- - 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 + 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. - source_ref: "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" + source_ref: "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" - name: 8.BIN standalone_path: system/BBKEmu/A4988/8.BIN