mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-13 04:12:33 -05:00
240 file-level entries used notes: instead of the canonical note: field. verify.py and cross_reference.py only read note:, so these were silently ignored.
165 lines
5.6 KiB
YAML
165 lines
5.6 KiB
YAML
emulator: bk-emulator
|
|
type: libretro
|
|
core_classification: community_fork
|
|
source: "https://github.com/libretro/bk-emulator"
|
|
upstream: "https://github.com/emestee/bk-emulator"
|
|
profiled_date: "2026-03-23"
|
|
core_version: "1.00"
|
|
display_name: "Elektronika - BK-0010/BK-0011(M)"
|
|
cores:
|
|
- bk
|
|
systems:
|
|
- elektronika-bk
|
|
|
|
# BK-emulator is an Elektronika BK-0010/0011M emulator (Soviet PDP-11 based home
|
|
# computer). The libretro core supports six machine configurations selected via
|
|
# the "bk_model" core option:
|
|
# BK-0010 (model 0) - default
|
|
# BK-0010.01 (model 1)
|
|
# BK-0010.01 + FDD (model 2)
|
|
# BK-0011M + FDD (model 3)
|
|
# Slow BK-0011M (model 4) - same ROMs as model 3
|
|
# Terak 8510/a (model 9)
|
|
#
|
|
# ROM loading (boot.c:83-116):
|
|
# BK-0010 models use load_rom() which maps ROM into emulated memory at
|
|
# specific addresses: monitor at 0100000 (8 KB), BASIC/FOCAL at 0120000
|
|
# (24448-24576 bytes), disk controller at 0160000 (4 KB).
|
|
# BK-0011M uses load_rom11() which loads into separate ROM buffer arrays.
|
|
#
|
|
# ROM file resolution (libretro.c:1050-1107):
|
|
# Files are loaded from {system_dir}/bk/{filename} (libretro.c:720-728).
|
|
# If not found with original casing, the loader retries with lowercase
|
|
# filename (libretro.c:1071-1081).
|
|
# Size is validated (min/max bounds); no hash validation.
|
|
#
|
|
# All ROM files are required for their respective model. The core calls
|
|
# environ_cb(RETRO_ENVIRONMENT_SHUTDOWN) if any ROM file is missing.
|
|
|
|
notes: |
|
|
Files go in {system_dir}/bk/.
|
|
Each BK model requires a specific set of ROMs. The default model is BK-0010
|
|
which needs MONIT10.ROM and FOCAL10.ROM. Changing the core option "bk_model"
|
|
changes which ROMs are loaded. The core shuts down if a required ROM is
|
|
missing (no fallback or pseudo-BIOS).
|
|
If a ROM file with uppercase name is not found, the core retries with
|
|
the filename lowercased.
|
|
|
|
files:
|
|
# -- BK-0010 Monitor ROM (all BK-0010 variants) --
|
|
|
|
- name: MONIT10.ROM
|
|
path: "bk/MONIT10.ROM"
|
|
size: 8192
|
|
required: true
|
|
validation: [size]
|
|
note: "BK-0010 monitor ROM (8 KB). Loaded at address 0100000. Required for all BK-0010 models (0, 1, 2)."
|
|
source_ref: "main.c:53, boot.c:107"
|
|
aliases: ["monit10.rom"]
|
|
|
|
# -- BK-0010 language ROMs (model-dependent) --
|
|
|
|
- name: FOCAL10.ROM
|
|
path: "bk/FOCAL10.ROM"
|
|
size: 24576
|
|
required: false
|
|
validation: [size]
|
|
note: "FOCAL interpreter ROM (24448-24576 bytes). Loaded at 0120000. Used by BK-0010 (model 0, default)."
|
|
source_ref: "libretro.c:15, boot.c:110"
|
|
aliases: ["focal10.rom"]
|
|
|
|
- name: BASIC10.ROM
|
|
path: "bk/BASIC10.ROM"
|
|
size: 24576
|
|
required: false
|
|
validation: [size]
|
|
note: "BASIC interpreter ROM (24448-24576 bytes). Loaded at 0120000. Used by BK-0010.01 (model 1)."
|
|
source_ref: "libretro.c:16, boot.c:110"
|
|
aliases: ["basic10.rom"]
|
|
|
|
# -- Disk controller ROM (BK-0010.01+FDD and BK-0011M) --
|
|
|
|
- name: DISK_327.ROM
|
|
path: "bk/DISK_327.ROM"
|
|
size: 4096
|
|
required: false
|
|
validation: [size]
|
|
note: "Floppy disk controller ROM (4 KB). Loaded at 0160000 for BK-0010.01+FDD (model 2), or into system_rom for BK-0011M (model 3/4)."
|
|
source_ref: "main.c:54, boot.c:99,113"
|
|
aliases: ["disk_327.rom"]
|
|
|
|
# -- BK-0011M ROMs --
|
|
|
|
- name: B11M_BOS.ROM
|
|
path: "bk/B11M_BOS.ROM"
|
|
size: 8192
|
|
required: false
|
|
validation: [size]
|
|
note: "BK-0011M system ROM / BOS (8 KB). Loaded into system_rom at offset 0. Required for BK-0011M (model 3/4)."
|
|
source_ref: "main.c:55, boot.c:98"
|
|
aliases: ["b11m_bos.rom"]
|
|
|
|
- name: B11M_EXT.ROM
|
|
path: "bk/B11M_EXT.ROM"
|
|
size: 8192
|
|
required: false
|
|
validation: [size]
|
|
note: "BK-0011M extended BOS ROM (8 KB). Loaded into rom[1] at offset 8192. Required for BK-0011M (model 3/4)."
|
|
source_ref: "main.c:56, boot.c:102"
|
|
aliases: ["b11m_ext.rom"]
|
|
|
|
- name: BAS11M_0.ROM
|
|
path: "bk/BAS11M_0.ROM"
|
|
size: 16384
|
|
required: false
|
|
validation: [size]
|
|
note: "BK-0011M BASIC ROM part 0 (16 KB). Loaded into rom[0]. Required for BK-0011M (model 3/4)."
|
|
source_ref: "main.c:57, boot.c:100"
|
|
aliases: ["bas11m_0.rom"]
|
|
|
|
- name: BAS11M_1.ROM
|
|
path: "bk/BAS11M_1.ROM"
|
|
size: 8192
|
|
required: false
|
|
validation: [size]
|
|
note: "BK-0011M BASIC ROM part 1 (8 KB). Loaded into rom[1] at offset 0. Required for BK-0011M (model 3/4)."
|
|
source_ref: "main.c:58, boot.c:101"
|
|
aliases: ["bas11m_1.rom"]
|
|
|
|
# -- Terak 8510/a ROM --
|
|
|
|
- name: TERAK.ROM
|
|
path: "bk/TERAK.ROM"
|
|
size: 128
|
|
required: false
|
|
validation: [size]
|
|
note: "Terak 8510/a boot ROM (128 bytes). Used when model is set to Terak 8510/a (model 9)."
|
|
source_ref: "boot.c:94"
|
|
aliases: ["terak.rom"]
|
|
|
|
platform_details:
|
|
bios_mapping:
|
|
source_ref: "libretro.c:718-760, boot.c:83-116"
|
|
note: |
|
|
ROM directory is {system_dir}/bk/ (libretro.c:724-726).
|
|
Model selection via core option "bk_model" determines which ROMs are loaded.
|
|
The core shuts down immediately if any required ROM for the selected model
|
|
is not found.
|
|
|
|
model_rom_map:
|
|
source_ref: "libretro.c:734-756, boot.c:83-116"
|
|
note: |
|
|
BK-0010: MONIT10.ROM + FOCAL10.ROM
|
|
BK-0010.01: MONIT10.ROM + BASIC10.ROM
|
|
BK-0010.01 + FDD: MONIT10.ROM + DISK_327.ROM
|
|
BK-0011M + FDD: B11M_BOS.ROM + DISK_327.ROM + BAS11M_0.ROM + BAS11M_1.ROM + B11M_EXT.ROM
|
|
Slow BK-0011M: same as BK-0011M + FDD
|
|
Terak 8510/a: TERAK.ROM
|
|
|
|
rom_loading:
|
|
source_ref: "libretro.c:1050-1107"
|
|
note: |
|
|
load_rom_file() first tries {romdir}/{filename} with original casing.
|
|
If not found, retries with the filename converted to lowercase.
|
|
Returns NULL and shuts down the core on failure.
|