mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-11 12:33:53 -06:00
fix: cite CPCemu 3.0.2 ROM loader code
Refs cited cpcemu0.cfg lines, the help file and strace runs. Each now names the loader, the config parser, the M4 board setup or the layout dialog in cpcemu_portable.exe 3.0.2. The loader never checks length, so size leaves validation, and NMIROM.BIN gains its own entry.
This commit is contained in:
1 parent
695b999fa3
commit
fff8cb5d23
1 file changed
+122
-111
+122
-111
@@ -6,7 +6,7 @@ upstream: "https://www.cpc-emu.org/"
|
||||
version_source:
|
||||
url: "https://www.cpc-emu.org/"
|
||||
pattern: 'CPCemu (\d+(?:\.\d+)+) released'
|
||||
profiled_date: "2026-08-08"
|
||||
profiled_date: "2026-11-10"
|
||||
core_version: "3.0.2"
|
||||
version_basis:
|
||||
kind: package
|
||||
@@ -26,71 +26,64 @@ notes: |
|
||||
6128. The firmware identifier and the message catalogue also know the 464+,
|
||||
the 6128+ and the KC compact.
|
||||
|
||||
Two packages were used. The 3.0.2 Windows portable and macOS builds of
|
||||
2025-04-24 carry the same fourteen ROM files and the same data files, and
|
||||
provide the path constants, the message catalogue and the v3.0 help file. The
|
||||
2.5 Linux x86-64 build of 2022-08-13 is still the newest Linux release, the
|
||||
3.0.2 Linux archives listed on the download page being absent from the
|
||||
server, and provides the runtime behaviour:
|
||||
file opens traced with strace, required and optional decided by removing,
|
||||
truncating and patching each file and reading the emulator's own messages.
|
||||
Reversed from cpcemu_portable.exe of the 3.0.2 Windows portable package of
|
||||
2025-04-24 (zip sha256 fa2cde7da210b0db, exe sha256 3560e3a9c52095f1, Borland
|
||||
C++ PE32). Addresses below are virtual addresses in that executable. The 3.0.2
|
||||
Linux archives listed on the download page are absent from the server. The
|
||||
2.5 Linux x86-64 package of 2022-08-13 ships the same ROM folder without
|
||||
XDDOS210.ROM, and its binary has no National ROM selection.
|
||||
|
||||
ROMs live in ROM_PATH, "./ROM/" in the shipped configuration, resolved against
|
||||
the working directory, while the macOS build reads them from the application bundle
|
||||
Resources folder. Slots are filled by ROM_BLOCK lines naming a ROM number, a
|
||||
file in ROM_PATH and a 16 KB block position inside that file:
|
||||
Configuration comes from a file given on the command line, then the
|
||||
cpcemu.cfg path assembled at 0x570a8c (FUN_00481bcc 0x481c96-0x481ca5) when
|
||||
it exists, then the built-in name cpcemu0.cfg (pointer 0x570a84) in the
|
||||
working directory, chosen at FUN_00481bcc 0x481d7a-0x481da2 and parsed by
|
||||
FUN_00466680. ROM_PATH ("./ROM/" in the shipped cpcemu0.cfg) is stored by
|
||||
FUN_00441008, which appends a backslash when the value does not end in one.
|
||||
Each ROM_BLOCK line (FUN_004665d0: ROM number, file name, 16 KB block number)
|
||||
becomes a node of the list at 0x5151a0. #IFCPC blocks are kept only when
|
||||
their number equals the CPC type at 0x564590, set by -t or CPC_TYPE. The
|
||||
shipped cpcemu0.cfg names CPC464.ROM for types 0 and 3, CPC664.ROM for type
|
||||
1, CPC6128.ROM for types 2, 4 and 5 (ROM 255 block 0, ROM 0 block 1),
|
||||
CPCADOS.ROM as ROM 7 for every type, and M4.ROM as ROM 6 outside any #IFCPC.
|
||||
|
||||
ROM_BLOCK = 255, "CPC6128.ROM", 0 lower ROM
|
||||
ROM_BLOCK = 0 , "CPC6128.ROM", 1 foreground ROM
|
||||
ROM_BLOCK = 7 , "CPCADOS.ROM", 0 AMSDOS
|
||||
ROM_BLOCK = 6 , "M4.ROM" , 0 M4 board
|
||||
FUN_004407d0 loads every listed ROM from slot 0 to 255: ROM_PATH + file name,
|
||||
an AMSDOS header skipped when its checksum matches (FUN_004721e4), a seek to
|
||||
block * 0x4000 and a read of 0x4000 bytes with no length check
|
||||
(FUN_0040a59c). A file that cannot be opened prints message 0xb8 "ROM: Cannot
|
||||
open file" and counts one error. FUN_0046ac64 returns the count plus 2, and
|
||||
FUN_00481bcc shows "CPCemu Error" and ends with that status for any value of
|
||||
3 or more, so a single missing file named by a ROM_BLOCK line stops startup
|
||||
with status 3, whatever the slot and whatever device it serves.
|
||||
|
||||
The shipped cpcemu0.cfg repeats the first three for every CPC_TYPE from 0 to
|
||||
5, with CPC464.ROM for types 0 and 3, CPC664.ROM for type 1 and CPC6128.ROM
|
||||
for types 2, 4 and 5, and adds the M4 line once for all types. A file named by
|
||||
a ROM_BLOCK line that cannot be opened prints "ROM: Cannot open file" and ends
|
||||
the process with status 3 before audio initialisation, whichever slot it fills
|
||||
and whether or not the matching device is enabled. Deleting the line instead
|
||||
lets the emulator start.
|
||||
The machine is identified from ROM 0 by FUN_00440bfc: byte 0 has to be 0x80
|
||||
(else "ROM: No foreground ROM found.") and byte 2 selects 464 (0), 664 (1),
|
||||
6128 (2) or 6128+ (4), anything else giving "ROM: Unknown ROM version.". A
|
||||
6128 whose lower ROM has 0x21 at offset 0x5a1 is reported as a KC compact.
|
||||
Without an identified machine startup ends on "CPC type not configured or
|
||||
ROM for CPC type not available. Unable to continue." ROM 7 is accepted as
|
||||
AMSDOS when its header is 01 00 05 or 01 00 07 (FUN_00440cc4), otherwise "ROM:
|
||||
No AMSDOS ROM found." and disc support stays off. Types 3, 4 and 5 have no
|
||||
dedicated ROM files: the shipped configuration loads the 464 and 6128 files
|
||||
for them. There is no cartridge support.
|
||||
|
||||
The machine is identified from the foreground ROM, not from the lower half and
|
||||
not from CPC_TYPE. CPCemu reads the four-byte CPC ROM header at the start of
|
||||
block 1: byte 0 has to be 0x80, and byte 2 selects the machine, 0x00 for the
|
||||
464, 0x01 for the 664, 0x02 for the 6128. A random block 1 gives "ROM: No
|
||||
foreground ROM found.", an unlisted version byte gives "ROM: Unknown ROM
|
||||
version.", and both end on "CPC type not configured or ROM for CPC type not
|
||||
available. Unable to continue." The modification byte is ignored, the lower
|
||||
16 KB half is never inspected, and padding past 32768 bytes is accepted, so
|
||||
the length requirement is a lower bound: a block 1 has to exist.
|
||||
The M4 board is set up at every startup by FUN_0044c6c4, called from
|
||||
FUN_0046ac64 0x46ae76 without reading M4_ENABLED (0x516cd0). It looks for the
|
||||
ROM_BLOCK entry whose file name is exactly "M4.ROM" and checks the ROM's name
|
||||
table for "M4 BOARD". It then reads M4_SD_PATH + /NMIROM.BIN, and only when
|
||||
that file is absent, ROM_PATH + /HACK.ROM, 0x4000 bytes each. The M4 firmware
|
||||
updater (routine at 0x449c1c) downloads cpc/M4FIRM.BIN from spinpoint.org and
|
||||
rewrites ROM_PATH + /M4.ROM and /HACK.ROM, 0x4000 bytes each.
|
||||
|
||||
Types 3, 4 and 5 need ROM images the packages do not carry. The help file
|
||||
states they have to be supplied in CPCEMU.CFG first, and no filename for them
|
||||
is compiled into the binary, the user names the file in the ROM_BLOCK line.
|
||||
Left on the shipped configuration those types load the 464 and 6128 files and
|
||||
report the machine those files describe. There is no cartridge support, the
|
||||
file types handled on the command line are dsk, sna, cfg and zip.
|
||||
|
||||
M4 board emulation is on by default. HACK.ROM, the board's lower ROM, is
|
||||
opened at every startup whatever M4_ENABLED holds, after M4_SD_PATH +
|
||||
NMIROM.BIN has been tried, so a NMIROM.BIN placed on the emulated SD card
|
||||
replaces it. With neither present the emulator prints "Unable to load
|
||||
HACK.ROM" and keeps running. M4.ROM contents are checked, a zeroed file boots
|
||||
the CPC and reports "M4 ROM not valid." The firmware updater downloads
|
||||
M4FIRM.BIN from spinpoint.org and rewrites M4.ROM and HACK.ROM in place.
|
||||
|
||||
Alongside the ROMs the binary reads its own payload from the program
|
||||
directory. cpcemu.msg is the message catalogue, and its absence leaves every
|
||||
message unprinted. cpcemu.dat holds colours and key tables, cpcemu.hlp is the
|
||||
online help opened on F1, cpcemu.dbf is the poke database opened from the poke
|
||||
menu, and cpcemu0.cfg is the template used when no user configuration exists.
|
||||
Configuration is looked up first in the user profile, ~/.CPCemu/cpcemu.cfg on
|
||||
Linux, then cpcemu0.cfg in the working directory. With neither, startup stops
|
||||
on "CPCEMU: Use INSTALL first". The disc, tape and snapshot folders and the
|
||||
M4 SD card folder hold user content.
|
||||
Alongside the ROMs the program reads the message catalogue cpcemu.msg (name
|
||||
passed at FUN_00481bcc 0x481c86) and the colour and key tables cpcemu.dat
|
||||
(built-in name at 0x570a88, passed to FUN_0045f734 at FUN_00481bcc 0x481dd9). The help file and the
|
||||
poke database are named only by the HELP_FILE and POKE_DATABASE lines of
|
||||
cpcemu0.cfg, "./cpcemu.hlp" and "./cpcemu.dbf". The disc, tape and snapshot folders and the M4 SD card folder hold
|
||||
user content.
|
||||
|
||||
files:
|
||||
# The 3.0.2 Windows, macOS and Android packages ship every ROM below in ROM/
|
||||
# (assets/DATA/ROM/ in the APK). The 2.5 Linux archive ships all but XDDOS210.ROM.
|
||||
# The 3.0.2 Windows package ships every ROM below in ROM/. The 2.5 Linux
|
||||
# package ships all but XDDOS210.ROM.
|
||||
# -- Firmware, lower ROM in block 0 and foreground ROM in block 1 --
|
||||
- name: CPC6128.ROM
|
||||
path: "ROM/CPC6128.ROM"
|
||||
@@ -98,13 +91,14 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
min_size: 32768
|
||||
validation: [size, signature]
|
||||
validation: [signature]
|
||||
md5: b96280dc6c95a48857b4b8eb931533ae
|
||||
sha1: 5977adbad3f7c1e0e082cd02fe76a700d9860c30
|
||||
source_ref: "CPCemu 2.5/3.0.2: ROM/CPC6128.ROM, cpcemu0.cfg ROM_BLOCK 255 and 0 for CPC_TYPE 2, 4 and 5"
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_004407d0 0x440848-0x4408b6 (ROM_PATH + ROM_BLOCK file name per slot, ifstream open), 0x4408d1-0x44093f (open failure: message 0xb8, error count), 0x440959-0x440976 (seek block * 0x4000, FUN_0040a59c reads 0x4000, no length check), FUN_0046ac64 0x46ae22-0x46ae2d and FUN_00481bcc 0x481efa-0x481f54 (count + 2 >= 3 ends startup), FUN_00440bfc 0x440c03-0x440c47 (ROM 0 byte 0 = 0x80, byte 2 = machine), cpcemu0.cfg ROM_BLOCK 255 and 0 under #IFCPC 2, 4 and 5, kept by FUN_00466680 0x466871-0x466879"
|
||||
note: >-
|
||||
CPC 6128 firmware and BASIC. Loaded for the shipped CPC_TYPE 2 and opened
|
||||
twice, once per block. Foreground ROM header 80 01 02 00.
|
||||
CPC 6128 firmware and BASIC, lower ROM in block 0 and foreground ROM in
|
||||
block 1, opened once per block. Loaded for the shipped CPC_TYPE 2 and
|
||||
for types 4 and 5. Foreground ROM header 80 01 02 00.
|
||||
|
||||
- name: CPC464.ROM
|
||||
path: "ROM/CPC464.ROM"
|
||||
@@ -112,13 +106,13 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
min_size: 32768
|
||||
validation: [size, signature]
|
||||
validation: [signature]
|
||||
md5: a993f85b88ac4350cf4d41554e87fe4f
|
||||
sha1: 56d39c463da60968d93e58b4ba0e675829412a20
|
||||
source_ref: "CPCemu 2.5/3.0.2: ROM/CPC464.ROM, cpcemu0.cfg ROM_BLOCK 255 and 0 for CPC_TYPE 0 and 3"
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_004407d0 0x440848-0x4408b6 (ROM_PATH + ROM_BLOCK file name, ifstream open), 0x4408d1-0x44093f (open failure: message 0xb8, error count), 0x440959-0x440976 (seek block * 0x4000, read 0x4000), FUN_00440bfc 0x440c03-0x440c47 (ROM 0 header), cpcemu0.cfg ROM_BLOCK 255 and 0 under #IFCPC 0 and 3, kept by FUN_00466680 0x466871-0x466879 when the CPC type at 0x564590 matches"
|
||||
note: >-
|
||||
CPC 464 firmware and BASIC, selected by CPC_TYPE 0 or the -t 0 command
|
||||
line. Foreground ROM header 80 01 00 00.
|
||||
CPC 464 firmware and BASIC, selected by CPC_TYPE 0 or 3 or the -t
|
||||
command line. Foreground ROM header 80 01 00 00.
|
||||
|
||||
- name: CPC664.ROM
|
||||
path: "ROM/CPC664.ROM"
|
||||
@@ -126,12 +120,12 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
min_size: 32768
|
||||
validation: [size, signature]
|
||||
validation: [signature]
|
||||
md5: 5a384a2310f472c7857888371c00ed66
|
||||
sha1: 073a7665527b5bd8a148747a3947dbd3328682c8
|
||||
source_ref: "CPCemu 2.5/3.0.2: ROM/CPC664.ROM, cpcemu0.cfg ROM_BLOCK 255 and 0 for CPC_TYPE 1"
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_004407d0 0x440848-0x4408b6 (ROM_PATH + ROM_BLOCK file name, ifstream open), 0x4408d1-0x44093f (open failure: message 0xb8, error count), 0x440959-0x440976 (seek block * 0x4000, read 0x4000), FUN_00440bfc 0x440c03-0x440c47 (ROM 0 header), cpcemu0.cfg ROM_BLOCK 255 and 0 under #IFCPC 1, kept by FUN_00466680 0x466871-0x466879 when the CPC type at 0x564590 matches"
|
||||
note: >-
|
||||
CPC 664 firmware and BASIC, selected by CPC_TYPE 1 or the -t 1 command
|
||||
CPC 664 firmware and BASIC, selected by CPC_TYPE 1 or the -t command
|
||||
line. Foreground ROM header 80 01 01 00.
|
||||
|
||||
# -- Disc ROM, slot 7 --
|
||||
@@ -141,15 +135,15 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
size: 16384
|
||||
validation: [signature]
|
||||
md5: aa2fb251814bd971b2b9874ab0971b3f
|
||||
sha1: 0e247123b9d3204784eeadb4629b9d35b9dfd984
|
||||
source_ref: "CPCemu 2.5/3.0.2: ROM/CPCADOS.ROM, cpcemu0.cfg ROM_BLOCK 7 for every CPC_TYPE"
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_004407d0 0x440848-0x4408b6 (ROM_PATH + ROM_BLOCK file name, ifstream open), 0x4408d1-0x44093f (open failure: message 0xb8, error count), 0x440959-0x440976 (read 0x4000, no length check), FUN_0046ac64 0x46ae22-0x46ae2d and FUN_00481bcc 0x481efa-0x481f54 (count + 2 >= 3 ends startup), FUN_00440f10 0x440fae-0x440fbf and FUN_00440cc4 (ROM 7 header 01 00 05 or 01 00 07, else message 0xbb), cpcemu0.cfg ROM_BLOCK 7 under every #IFCPC"
|
||||
note: >-
|
||||
AMSDOS disc ROM, the 8 KB image zero-padded to 16 KB. Declared for every
|
||||
machine by the shipped configuration, so startup ends on status 3 without
|
||||
it. Dropping the ROM_BLOCK line instead boots with "ROM: No AMSDOS ROM
|
||||
found." and no disc support. Length is not checked, an 8 KB file installs
|
||||
the AMSDOS speedup all the same.
|
||||
AMSDOS disc ROM, the 8 KB image zero-padded to 16 KB. Named for every
|
||||
machine by the shipped configuration, so startup ends with status 3
|
||||
without it. Dropping the ROM_BLOCK line instead boots with "ROM: No
|
||||
AMSDOS ROM found." and no disc support.
|
||||
|
||||
# -- M4 board, ROM slot 6 plus the board's own lower ROM --
|
||||
- name: M4.ROM
|
||||
@@ -161,11 +155,24 @@ files:
|
||||
validation: [signature]
|
||||
md5: 28a7e368badca8299ba24a15bb4ebe9b
|
||||
sha1: 05f9447d307ab17eae9e2100f91c36b0c9560d4b
|
||||
source_ref: "CPCemu 2.5/3.0.2: ROM/M4.ROM, cpcemu0.cfg ROM_BLOCK 6, M4_ENABLED = 1"
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_004407d0 0x440848-0x44093f (ROM_PATH + ROM_BLOCK file name, ifstream open, open failure counted), FUN_0046ac64 0x46ae22-0x46ae2d (count + 2 >= 3 ends startup), FUN_0044c6c4 0x44c6fa-0x44c74c (FUN_00440570 finds the ROM_BLOCK entry named \"M4.ROM\", else \"M4 ROM not found.\"), 0x44c751-0x44c7be (8-byte compare with \"M4 BOARD\" at the name table address in ROM bytes 4-5, else \"M4 ROM not valid.\"), routine at 0x449c1c 0x44a4f4-0x44a548 (updater writes ROM_PATH + /M4.ROM, 0x4000 bytes), cpcemu0.cfg ROM_BLOCK 6 outside any #IFCPC"
|
||||
note: >-
|
||||
M4 board firmware by Duke. Declared by the shipped configuration, so
|
||||
startup ends on status 3 without it even when M4_ENABLED is 0. Contents
|
||||
are checked, a zeroed file boots and reports "M4 ROM not valid."
|
||||
M4 board firmware by Duke. Named by the shipped configuration for every
|
||||
machine, so startup ends with status 3 without it, whatever M4_ENABLED
|
||||
holds. The board is recognised only by the file name M4.ROM in the
|
||||
ROM_BLOCK line. A failed lookup or name table check clears M4_ENABLED and
|
||||
emulation goes on without the board.
|
||||
|
||||
- name: NMIROM.BIN
|
||||
path: "SDCARD/NMIROM.BIN"
|
||||
system: amstrad-cpc
|
||||
required: false
|
||||
description: "M4 board NMI ROM on the emulated SD card"
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_0044c6c4 0x44c966-0x44c9c4 (FUN_0044c238 builds M4_SD_PATH from 0x516cd8 + /NMIROM.BIN, fopen rb, fread 0x4000), called from FUN_0046ac64 0x46ae76"
|
||||
note: >-
|
||||
Read at every startup once M4.ROM has passed its check, in place of
|
||||
HACK.ROM when present. The shipped cpcemu0.cfg sets M4_SD_PATH to
|
||||
./SDCARD/. Up to 0x4000 bytes are read, the length is not checked.
|
||||
|
||||
- name: HACK.ROM
|
||||
path: "ROM/HACK.ROM"
|
||||
@@ -175,11 +182,13 @@ files:
|
||||
size: 7994
|
||||
md5: ffcbcbce32223a152753d30766ad6215
|
||||
sha1: 582dd1706391f6f0161ad3486ae75a04fb0f7d5b
|
||||
source_ref: "CPCemu 2.5/3.0.2: ROM_PATH + /HACK.ROM, opened after M4_SD_PATH + NMIROM.BIN"
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_0044c6c4 0x44c966-0x44c9c4 (FUN_0044c238 builds M4_SD_PATH from 0x516cd8 + /NMIROM.BIN, fopen rb, fread 0x4000), 0x44c9c9-0x44ca3f (ROM_PATH from FUN_00440a5c + /HACK.ROM, fopen rb, fread 0x4000 into the buffer at 0x516210), 0x44ca41-0x44ca6a (\"Unable to load HACK.ROM\", returns 0), called from FUN_0046ac64 0x46ae76, routine at 0x449c1c 0x44a5b7-0x44a60b (updater writes ROM_PATH + /HACK.ROM, 0x4000 bytes)"
|
||||
note: >-
|
||||
M4 hack ROM, the lower ROM behind the Shift+F1 menu. Opened at every
|
||||
startup, and superseded by a NMIROM.BIN on the emulated SD card. Missing
|
||||
prints "Unable to load HACK.ROM" and emulation continues.
|
||||
startup once M4.ROM has passed its check, and only when M4_SD_PATH +
|
||||
NMIROM.BIN is absent. Missing prints "Unable to load HACK.ROM" and
|
||||
emulation continues. Up to 0x4000 bytes are read, the length is not
|
||||
checked.
|
||||
|
||||
# -- National firmware, configured by the 3.0.2 keyboard layout dialog --
|
||||
- name: CPC6128.ROM.UK
|
||||
@@ -188,13 +197,13 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
min_size: 32768
|
||||
validation: [size, signature]
|
||||
validation: [signature]
|
||||
md5: b96280dc6c95a48857b4b8eb931533ae
|
||||
sha1: 5977adbad3f7c1e0e082cd02fe76a700d9860c30
|
||||
source_ref: "CPCemu 2.5/3.0.2: ROM/National/CPC6128.ROM.UK"
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_004866e0 0x486881-0x486908 (system ROM picker: file selector FUN_00462fe0 rooted at ROM_PATH, path made relative, FUN_004405f0 sets ROM 255 or 0), FUN_004407d0 0x440848-0x440976 (ROM_PATH + name, open, read 0x4000 per block), no path constant names this file, the English layout of FUN_0048202c keeps CPC6128.ROM"
|
||||
note: >-
|
||||
English CPC 6128 firmware, the same image as CPC6128.ROM. Ships in the
|
||||
National folder without being named by any path constant.
|
||||
English CPC 6128 firmware, the same image as CPC6128.ROM. Loaded only when
|
||||
the user names it in a ROM_BLOCK line or picks it in the setup menu.
|
||||
|
||||
- name: CPC6128.ROM.FR
|
||||
path: "ROM/National/CPC6128.ROM.FR"
|
||||
@@ -202,11 +211,11 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
min_size: 32768
|
||||
validation: [size, signature]
|
||||
validation: [signature]
|
||||
md5: 5ee871d5600eb9b5a22989c295f902a5
|
||||
sha1: 200d59076dfef36db061d6d7d21d80021cab1237
|
||||
source_ref: "CPCemu 3.0.2: National/CPC6128.ROM.FR, keyboard layout dialog on first start"
|
||||
note: "French CPC 6128 firmware, configured when the French layout is picked."
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_0048202c 0x482045-0x48207d (layout dialog, keys 1, 3, 4, 5 give 0, 2, 3, 4), 0x4820c5 (layout 2: \"National/CPC6128.ROM.FR\"), 0x4820d8-0x4820f6 (FUN_004405f0 sets ROM 0 block 1 and ROM 255 block 0, reloaded by FUN_004407d0 through FUN_00440304 0x4403cc), called from FUN_00481bcc 0x481e23-0x481e5a when no keyboard layout is configured"
|
||||
note: "French CPC 6128 firmware, configured when the French layout is picked on first start."
|
||||
|
||||
- name: CPC6128.ROM.ES
|
||||
path: "ROM/National/CPC6128.ROM.ES"
|
||||
@@ -214,11 +223,11 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
min_size: 32768
|
||||
validation: [size, signature]
|
||||
validation: [signature]
|
||||
md5: 0246740371010333385665dfeb7cd0ec
|
||||
sha1: 1acd01c2c03424a78b32c9440f4d890fb1104815
|
||||
source_ref: "CPCemu 3.0.2: National/CPC6128.ROM.ES, keyboard layout dialog on first start"
|
||||
note: "Spanish CPC 6128 firmware, configured when the Spanish layout is picked."
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_0048202c 0x482045-0x48207d (layout dialog), 0x4820cc (layout 3: \"National/CPC6128.ROM.ES\"), 0x4820d8-0x4820f6 (FUN_004405f0 sets ROM 0 block 1 and ROM 255 block 0, reloaded by FUN_004407d0 through FUN_00440304 0x4403cc), called from FUN_00481bcc 0x481e23-0x481e5a when no keyboard layout is configured"
|
||||
note: "Spanish CPC 6128 firmware, configured when the Spanish layout is picked on first start."
|
||||
|
||||
- name: CPC6128.ROM.DK
|
||||
path: "ROM/National/CPC6128.ROM.DK"
|
||||
@@ -226,11 +235,11 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
min_size: 32768
|
||||
validation: [size, signature]
|
||||
validation: [signature]
|
||||
md5: ca1635fd992e2aa7a776b30da13467e5
|
||||
sha1: a9e7ee6355730f319a37c95ca0a714212b88c3b1
|
||||
source_ref: "CPCemu 3.0.2: National/CPC6128.ROM.DK, keyboard layout dialog on first start"
|
||||
note: "Danish CPC 6128 firmware, configured when the Danish layout is picked."
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_0048202c 0x482045-0x48207d (layout dialog), 0x4820d3 (layout 4: \"National/CPC6128.ROM.DK\"), 0x4820d8-0x4820f6 (FUN_004405f0 sets ROM 0 block 1 and ROM 255 block 0, reloaded by FUN_004407d0 through FUN_00440304 0x4403cc), called from FUN_00481bcc 0x481e23-0x481e5a when no keyboard layout is configured"
|
||||
note: "Danish CPC 6128 firmware, configured when the Danish layout is picked on first start."
|
||||
|
||||
- name: CPC6128.ROM.SE
|
||||
path: "ROM/National/CPC6128.ROM.SE"
|
||||
@@ -238,14 +247,14 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
min_size: 32768
|
||||
validation: [size, signature]
|
||||
validation: [signature]
|
||||
md5: 8ca256a832e83c875f5432b3dee8a36f
|
||||
sha1: 6765a91a42fed68a807325bf62a728e5ac5d622f
|
||||
source_ref: "CPCemu 2.5/3.0.2: ROM/National/CPC6128.ROM.SE"
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_004866e0 0x486881-0x486908 (system ROM picker: file selector FUN_00462fe0 rooted at ROM_PATH, path made relative, FUN_004405f0 sets ROM 255 or 0), FUN_004407d0 0x440848-0x440976 (ROM_PATH + name, open, read 0x4000 per block), no path constant names this file, FUN_0048202c 0x4820b3-0x4820d3 maps layouts 2, 3, 4 only"
|
||||
note: >-
|
||||
Swedish CPC 6128 firmware. Ships in the National folder without being
|
||||
named by any path constant, the layout dialog offering English, French,
|
||||
Spanish and Danish only.
|
||||
Swedish CPC 6128 firmware. Loaded only when the user names it in a
|
||||
ROM_BLOCK line or picks it in the setup menu, the layout dialog offering
|
||||
no Swedish ROM.
|
||||
|
||||
# -- Expansion ROMs mapped through a user ROM_BLOCK line --
|
||||
- name: XDDOS210.ROM
|
||||
@@ -256,11 +265,13 @@ files:
|
||||
size: 16384
|
||||
md5: 1d91a9ef315b302d335cd7e04e8d8d86
|
||||
sha1: 2f1bd4d6e2d2e62818b01e6e7a26488362a7a8ee
|
||||
source_ref: "CPCemu 3.0.2: ROM/XDDOS210.ROM, cpcemu0.cfg commented ROM_BLOCK 7, help topic DOBBERTIN HD20 ENABLED"
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_00486fc4 0x487026-0x487113 (expansion ROM picker: file selector FUN_00462fe0 rooted at ROM_PATH, FUN_004405f0 sets the slot), FUN_004665d0 (ROM_BLOCK line parser), FUN_004407d0 0x440848-0x440976 (ROM_PATH + name, open, read 0x4000), cpcemu0.cfg commented ROM_BLOCK 7, no path constant names this file"
|
||||
note: >-
|
||||
X-DDOS 2.10 by Dobbertin, the disc operating system of the HD20 hard disk.
|
||||
Required in a ROM slot to use DOBBERTIN_HD_ENABLED = 1. Added in 3.0, not
|
||||
shipped with 2.5.
|
||||
X-DDOS 2.10 by Dobbertin, the disc operating system of the HD20 hard disk
|
||||
that DOBBERTIN_HD_ENABLED emulates. Loaded once the user maps it to a ROM
|
||||
slot. Its header 01 02 01 is not taken as AMSDOS by FUN_00440cc4, so the
|
||||
AMSDOS speedup stays off with it in slot 7. Added in 3.0, not shipped
|
||||
with 2.5.
|
||||
|
||||
- name: COPYMATE.ROM
|
||||
path: "ROM/COPYMATE.ROM"
|
||||
@@ -270,11 +281,11 @@ files:
|
||||
size: 16512
|
||||
md5: e9c4288eab8885a1e6ae7504a4736115
|
||||
sha1: 15d52de01320d9b954e03b4c2e71ec75fd301bbb
|
||||
source_ref: "CPCemu 2.5/3.0.2: ROM/COPYMATE.ROM, cpcemu0.cfg commented ROM_BLOCK 4"
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_004665d0 (ROM_BLOCK line parser), FUN_004407d0 0x440848-0x440976 (ROM_PATH + name, open, read 0x4000), FUN_004721e4 0x4721ef-0x472246 and 0x4722f8-0x472300 (128-byte AMSDOS header recognised by its checksum over bytes 0-0x42, data read from offset 0x80), cpcemu0.cfg commented ROM_BLOCK 4, FUN_00486fc4 0x487026-0x487113 (expansion ROM picker)"
|
||||
note: >-
|
||||
Copy utility ROM, carrying a 128-byte AMSDOS file header ahead of the
|
||||
16 KB image. Shipped as the example expansion ROM of the configuration
|
||||
file and loaded once the line is uncommented.
|
||||
16 KB image, which the loader skips. Shipped as the example expansion ROM
|
||||
of the configuration file and loaded once the line is uncommented.
|
||||
|
||||
- name: multface.rom
|
||||
path: "ROM/multface.rom"
|
||||
@@ -284,7 +295,7 @@ files:
|
||||
size: 8192
|
||||
md5: 4c9f014e91d407cc6509fad0095ab909
|
||||
sha1: 1431ec628d38f000715545dd2186b684c5fe5a6f
|
||||
source_ref: "CPCemu 2.5/3.0.2: ROM/multface.rom, ROM_BLOCK filename or ROM Manager entry"
|
||||
source_ref: "cpcemu_portable.exe 3.0.2 FUN_00486fc4 0x487026-0x487113 (expansion ROM picker: file selector FUN_00462fe0 rooted at ROM_PATH, FUN_004405f0 sets the slot), FUN_004665d0 (ROM_BLOCK line parser), FUN_004407d0 0x440848-0x440976 (ROM_PATH + name, open, read up to 0x4000), no path constant names this file"
|
||||
note: >-
|
||||
Romantic Robot Multiface Two ROM. Ships in the ROM folder for the user to
|
||||
map into a slot, no path constant naming it.
|
||||
Romantic Robot Multiface Two ROM. Ships in the ROM folder and enters only
|
||||
as an ordinary ROM slot named by the user, no code path naming it.
|
||||
Reference in new issue
Block a user