Files
libretro/emulators/capriceforever.yml
T
Abdessamad Derraz 0fce01826d docs: hash the Caprice Forever ROM resources
Each built-in ROM resource of Caprice.exe 26.4 is listed with the sha1
of its bytes and the dump it equals in this and other profiles. The
release date taken from History.txt is gone.
2026-11-10 14:13:51 +01:00

162 lines
11 KiB
YAML

emulator: CaPriCe Forever
type: standalone
core_classification: other
source: "https://www.retrobat.org/repo/win64/stable/emulators/capriceforever.7z"
upstream: closed-source
profiled_date: "2026-10-20"
core_version: "26.4"
version_basis:
kind: package
url: "https://www.retrobat.org/repo/win64/stable/emulators/capriceforever.7z"
artifact: "capriceforever.7z, Caprice.exe version resource ProductVersion"
display_name: "Amstrad - CPC / PLUS (CaPriCe Forever)"
cores:
- capriceforever
systems:
- amstrad-cpc
mode: standalone
notes: |
Closed source Amstrad CPC and PLUS emulator for Windows. The build read here
is the one RetroBat installs, capriceforever.7z sha256
54c9f7f3df96011bdbd09e72413fed798a395c241e8c2d05eb6af075a15b79b4, release
26.4 (version resource 26.4.0.0). Caprice.exe
md5 a33e841c80e9fd9067a1c373492cd53b is a 32-bit C++Builder (RAD Studio
28.0) VCL program, cited by virtual address. Functions are named by their
address, or by the published method table entry for form event handlers.
The machine ROMs are RT_RCDATA resources of the executable. None of them
is read from disc, so none is a file entry below. Each resource, with the
sha1 of its bytes and the dump it equals:
ROMCPC464_UK 32 KiB 56d39c463da6 cpc464.rom, os464.rom + basic464.rom
ROMCPC664_UK 32 KiB 073a7665527b cpc664.rom, os664.rom + basic664.rom
ROMCPC6128_UK 32 KiB 5977adbad3f7 cpc6128.rom, os6128.rom + basic6128.rom
ROMCPC464_FR 32 KiB c68d84f37ab9 OS464_FR.rom of ACE-DL
ROMCPC6128_FR 32 KiB 200d59076dfe OS6128_FR.rom of ACE-DL, CPC6128.ROM.FR of CPCemu
ROMCPC6128_SP 32 KiB 1acd01c2c034 OS6128_S.rom of ACE-DL, CPC6128.ROM.ES of CPCemu
ROMCPC464_SP 32 KiB 6291af67cb34 Spanish 464, same BASIC half as ROMCPC464_FR
ROMAmsdos 16 KiB 39102c8e9cb5 amsdos.rom
ROMMultiface2 8 KiB 1431ec628d38 multiface2.rom of ACE-DL and CPCemu
ROMDKSpeech 16 KiB bf28e07d5fad dkspeech.rom of MAME
ROMSiliconDisk13 16 KiB 932bc3bbe38a no other profile lists it
A slot left blank in a device file takes the built-in image,
and the names "Default OS", "Default BASIC", "Default AMSDOS", "Default
Multiface Two", "Default Silicon Disc 1.3" and "Default DK'Tronics Speech"
select them explicitly.
ref: Caprice.exe 26.4.0.0 FUN_006fa870 0x6faff6-0x6fb036 (TResourceStream
of ROMCPC464_UK, type 0xa), 0x6fba6e-0x6fbaa9 (ROMAmsdos),
0x6fc0fc-0x6fc109 (ROMSiliconDisk13), 0x6fc168-0x6fc18f (ROMDKSpeech),
FUN_006fd4c0 0x6feae9-0x6feb6a (LowerROM compared to Default OS),
0x6fde23-0x6fde70 (Default Silicon Disc, DK'Tronics, Empty and
AMSDOS names taken for the upper slot loop), 0x6fe839-0x6fe8b7 and 0x6fef2f-0x6fef65
(Default Multiface Two, TResourceStream of ROMMultiface2),
FUN_0074ebe4 0x74f95c-0x74fab5 (Default OS, BASIC and AMSDOS as the
initial slot values)
RetroBat writes Device.ini on every launch: CPC_6128_UK, or PLUS_6128_UK for
the gx4000 system, LowerROM and UpperROM0 blank, UpperROM7 "Default
AMSDOS", UpperROM1 a built-in Silicon Disc or DK'Tronics image or Empty, and
CartridgeFilename the launched .cpr. No slot it writes names a file, so
nothing outside the program is read for a RetroBat launch.
ref: emulatorLauncher Generators/CapriceForever.Generator.cs:277-405
Files of 1 to 16512 bytes in RomsDirectory (Roms\ by default) are offered
by name for the lower and upper ROM slots. A slot file whose first 128
bytes are an AMSDOS header with a valid checksum is read from offset 128
for its declared length, at most 16 KiB, and any other file is used as is.
A missing file is skipped and nothing is copied into the slot. The cartridge is
chosen through an open dialog filtered on *.cpr, and a CartridgeFilename
without a directory is looked up in CartridgesDirectory (Cartridges\ by
default). A RIFF AMS! file is split by its cb chunks into 16 KiB banks,
any other file into consecutive 16 KiB banks. The package ships four ROMs
and three PLUS system cartridges there. Only the bundled device template
"PLUS 6128 UK.ini" names one of them (the UK cartridge), and RetroBat
replaces that choice with the launched game.
ref: Caprice.exe 26.4.0.0 FUN_0074ebe4 0x74f621 (Roms\ default),
FUN_0072483c 0x740f0f-0x740f35 (Roms\ when the configured folder is
missing), 0x73e0b5 (RomsDirectory key), 0x73e481 (CartridgesDirectory
key), FUN_0059fc34 0x5a0e55-0x5a0ef5 (size filter),
FUN_007000f8 0x7001e6-0x700274 (AMSDOS header),
FUN_0071c58c 0x71ca9d-0x71cb48 (cartridge parsing)
files:
- name: "Burnin' Rubber + BASIC (UK).cpr"
path: "Cartridges/Burnin' Rubber + BASIC (UK).cpr"
system: amstrad-cpc
required: false
bundled: true
size: 131156
sha1: "405e341437fab8db477606238af0c20eca2e39ee"
md5: "39b565e648172980aa552293e667070f"
description: "Amstrad PLUS system cartridge, English"
source_ref: "Caprice.exe 26.4.0.0 settings loader FUN_0072483c 0x73e829-0x73e858 (Roms section, CartridgeFilename key), FUN_006fd1a8 0x6fd1f1-0x6fd361 (a name without directory is prefixed with CartridgesDirectory), 0x6fd394 (cartridge loader called), FUN_0071c58c 0x71c956-0x71c9d0 (FileOpen, whole file read), 0x71ca9d-0x71cac5 (RIFF and AMS! test), 0x71cb85-0x71cc46 (cb chunks copied to 16 KiB banks), 0x71cacb-0x71cb48 (any other file split into 16 KiB banks), TFormEmulatorSettings.PanelButtonCartridgeFileClick 0x5aa26a-0x5aa2d1 (open dialog filtered on *.cpr)"
note: "Named by the bundled Settings/PLUS 6128 UK.ini template."
- name: "Burnin' Rubber + BASIC (FR).cpr"
path: "Cartridges/Burnin' Rubber + BASIC (FR).cpr"
system: amstrad-cpc
required: false
bundled: true
size: 131148
sha1: "958437ad6292ecd368e8c6c963cb3ae7d48b9406"
md5: "2adf22a2046a18bd39de90ad01c15998"
description: "Amstrad PLUS system cartridge, French"
source_ref: "Caprice.exe 26.4.0.0 settings loader FUN_0072483c 0x73e829-0x73e858 (Roms section, CartridgeFilename key), FUN_006fd1a8 0x6fd1f1-0x6fd361 (a name without directory is prefixed with CartridgesDirectory), 0x6fd394 (cartridge loader called), FUN_0071c58c 0x71c956-0x71c9d0 (FileOpen, whole file read), 0x71ca9d-0x71cac5 (RIFF and AMS! test), 0x71cb85-0x71cc46 (cb chunks copied to 16 KiB banks), 0x71cacb-0x71cb48 (any other file split into 16 KiB banks), TFormEmulatorSettings.PanelButtonCartridgeFileClick 0x5aa26a-0x5aa2d1 (open dialog filtered on *.cpr)"
- name: "Burnin' Rubber + BASIC (SP).cpr"
path: "Cartridges/Burnin' Rubber + BASIC (SP).cpr"
system: amstrad-cpc
required: false
bundled: true
size: 131148
sha1: "076939a2cd7593b5e56c775d7a4752f2d138ff6c"
md5: "75632137fcbe51eaec1f47a22e55d6a3"
description: "Amstrad PLUS system cartridge, Spanish"
source_ref: "Caprice.exe 26.4.0.0 settings loader FUN_0072483c 0x73e829-0x73e858 (Roms section, CartridgeFilename key), FUN_006fd1a8 0x6fd1f1-0x6fd361 (a name without directory is prefixed with CartridgesDirectory), 0x6fd394 (cartridge loader called), FUN_0071c58c 0x71c956-0x71c9d0 (FileOpen, whole file read), 0x71ca9d-0x71cac5 (RIFF and AMS! test), 0x71cb85-0x71cc46 (cb chunks copied to 16 KiB banks), 0x71cacb-0x71cb48 (any other file split into 16 KiB banks), TFormEmulatorSettings.PanelButtonCartridgeFileClick 0x5aa26a-0x5aa2d1 (open dialog filtered on *.cpr)"
- name: "albireo.rom"
path: "Roms/albireo.rom"
system: amstrad-cpc
required: false
bundled: true
size: 16512
sha1: "9dd652574638682876a55febe3dca7b5bb3ad222"
md5: "9afe71e4c38040864576358a71474ab6"
description: "Albireo ROM (AMSDOS header, title ALBIREO ROM)"
source_ref: "Caprice.exe 26.4.0.0 TFormEmulatorSettings.StringGridROMMappingSelectCell 0x5a386b (list builder FUN_0059fc34 called), FUN_0059fc34 0x5a08ab-0x5a0916 (FindFirst of RomsDirectory plus *.*), 0x5a0e55-0x5a0ef5 (FileOpen, FileSeek to the end, files of 1 to 16512 bytes added to ComboBoxAvailableROM), FUN_006fd4c0 0x6feae9-0x6febfa (LowerROM other than Default OS prefixed with RomsDirectory and loaded), 0x6fe3a7-0x6fe47b (UpperROM name prefixed with RomsDirectory, loaded, 0x4000 bytes copied to the bank), FUN_007000f8 0x700140-0x7001de (FileExists, FileOpen, whole file read), 0x7001e6-0x700274 (AMSDOS header: sum of bytes 0 to 0x42 against the word at 0x43, length at 0x40 capped at 0x4000, image taken from offset 0x80, any other file used as is)"
- name: "unidos.rom"
path: "Roms/unidos.rom"
system: amstrad-cpc
required: false
bundled: true
size: 16512
sha1: "e78a94ab8de917270179b80b071d3e90d98ea5dc"
md5: "a9d1b46e49701c85d9a3a66ff725c6e6"
description: "UniDOS ROM"
source_ref: "Caprice.exe 26.4.0.0 TFormEmulatorSettings.StringGridROMMappingSelectCell 0x5a386b (list builder FUN_0059fc34 called), FUN_0059fc34 0x5a08ab-0x5a0916 (FindFirst of RomsDirectory plus *.*), 0x5a0e55-0x5a0ef5 (FileOpen, FileSeek to the end, files of 1 to 16512 bytes added to ComboBoxAvailableROM), FUN_006fd4c0 0x6feae9-0x6febfa (LowerROM other than Default OS prefixed with RomsDirectory and loaded), 0x6fe3a7-0x6fe47b (UpperROM name prefixed with RomsDirectory, loaded, 0x4000 bytes copied to the bank), FUN_007000f8 0x700140-0x7001de (FileExists, FileOpen, whole file read), 0x7001e6-0x700274 (AMSDOS header: sum of bytes 0 to 0x42 against the word at 0x43, length at 0x40 capped at 0x4000, image taken from offset 0x80, any other file used as is)"
- name: "unitools.rom"
path: "Roms/unitools.rom"
system: amstrad-cpc
required: false
bundled: true
size: 16512
sha1: "982e523b2d5b5c9873526a7363fcac4cbc1b6dfd"
md5: "83c6ecbf655b8f3c65e46a46c6bc7161"
description: "UniTools ROM for UniDOS"
source_ref: "Caprice.exe 26.4.0.0 TFormEmulatorSettings.StringGridROMMappingSelectCell 0x5a386b (list builder FUN_0059fc34 called), FUN_0059fc34 0x5a08ab-0x5a0916 (FindFirst of RomsDirectory plus *.*), 0x5a0e55-0x5a0ef5 (FileOpen, FileSeek to the end, files of 1 to 16512 bytes added to ComboBoxAvailableROM), FUN_006fd4c0 0x6feae9-0x6febfa (LowerROM other than Default OS prefixed with RomsDirectory and loaded), 0x6fe3a7-0x6fe47b (UpperROM name prefixed with RomsDirectory, loaded, 0x4000 bytes copied to the bank), FUN_007000f8 0x700140-0x7001de (FileExists, FileOpen, whole file read), 0x7001e6-0x700274 (AMSDOS header: sum of bytes 0 to 0x42 against the word at 0x43, length at 0x40 capped at 0x4000, image taken from offset 0x80, any other file used as is)"
- name: "fw-v3-u5.rom"
path: "Roms/fw-v3-u5.rom"
system: amstrad-cpc
required: false
bundled: true
size: 16512
sha1: "bb9b4c487fa6e338d6b8f78b6fc10a3912263e22"
md5: "96c5c16e8db2f5c7d6c3c160d686725a"
description: "Firmware V3-U5 ROM (AMSDOS header title V3-U5 ROM)"
source_ref: "Caprice.exe 26.4.0.0 TFormEmulatorSettings.StringGridROMMappingSelectCell 0x5a386b (list builder FUN_0059fc34 called), FUN_0059fc34 0x5a08ab-0x5a0916 (FindFirst of RomsDirectory plus *.*), 0x5a0e55-0x5a0ef5 (FileOpen, FileSeek to the end, files of 1 to 16512 bytes added to ComboBoxAvailableROM), FUN_006fd4c0 0x6feae9-0x6febfa (LowerROM other than Default OS prefixed with RomsDirectory and loaded), 0x6fe3a7-0x6fe47b (UpperROM name prefixed with RomsDirectory, loaded, 0x4000 bytes copied to the bank), FUN_007000f8 0x700140-0x7001de (FileExists, FileOpen, whole file read), 0x7001e6-0x700274 (AMSDOS header: sum of bytes 0 to 0x42 against the word at 0x43, length at 0x40 capped at 0x4000, image taken from offset 0x80, any other file used as is)"