Files
libretro/emulators/gam4980.yml
2026-03-24 09:33:06 +01:00

70 lines
2.5 KiB
YAML

emulator: GAM4980
type: libretro
core_classification: pure_libretro
source: "https://github.com/ThisBoringWorld/gam4980"
upstream: "https://codeberg.org/iyzsong/gam4980"
profiled_date: "2026-03-23"
core_version: "0.2"
display_name: "GAM4980"
cores:
- gam4980
systems:
- bbk-longman-4980
# GAM4980 emulates the BBK Longman 4980 (A4980/A4988) electronic dictionary.
# Original code from https://codeberg.org/iyzsong/gam4980, based on the
# BA4988 BBK simulator by Wuyun. Uses a 6502-based CPU with banked ROM access.
#
# ROM loading (src/libretro.c:692-760, sys_init):
# Opens romdir/8.BIN and reads 0x200000 bytes (2 MB) into sys.rom_8 (font ROM).
# Opens romdir/E.BIN and reads 0x200000 bytes (2 MB) into sys.rom_e (OS ROM).
# The upstream has error handling (error_msg + RETRO_ENVIRONMENT_SHUTDOWN on
# missing files). The fork (ThisBoringWorld) removed these checks -- crashes
# on missing files.
#
# Memory map (src/libretro.c:109-110, 300-305):
# 0x800000-0x9FFFFF rom_8 (font ROM, 8.BIN)
# 0xE00000-0xFFFFFF rom_e (OS ROM, E.BIN)
#
# No hash validation. No size validation. The .info declares firmware_count=0.
notes: |
Place 8.BIN and E.BIN in the RetroArch system/gam4980/ subdirectory.
Both files must be 2 MB dumps from a BBK Longman 4980 dictionary:
8.BIN - font ROM, dumped from address range 0x800000-0x9FFFFF
E.BIN - OS ROM, dumped from address range 0xE00000-0xFFFFFF
Game files use the .gam extension.
files:
- name: "gam4980/8.BIN"
size: 2097152
required: true
system: bbk-longman-4980
note: "Font ROM (2 MB). Loaded at 0x800000."
source_ref: "src/libretro.c:716-718"
- name: "gam4980/E.BIN"
size: 2097152
required: true
system: bbk-longman-4980
note: "OS ROM (2 MB). Loaded at 0xE00000."
source_ref: "src/libretro.c:720-722"
platform_details:
bios_mapping:
target: "0x800000-0x9FFFFF (font), 0xE00000-0xFFFFFF (OS) in banked address space"
source_ref: "src/libretro.c:109-110, 300-305"
notes: |
sys.rom_8 and sys.rom_e are flat 2 MB arrays. The CPU accesses them
through bank-switched memory (PA() macro resolves virtual to physical
address). rom_8_vread and rom_e_vread handle indirect reads via
the banking system.
load_path:
source_ref: "src/libretro.c:1173-1175"
notes: |
retro_init() builds the path as {system_directory}/gam4980/ and
passes it to sys_init(). Files must be named exactly 8.BIN and
E.BIN (case sensitive on Linux). No .info firmware declarations
exist, so RetroArch won't warn about missing files at scan time.