Files
libretro/emulators/cap32.yml
T
Abdessamad Derraz 11da070128 chore: recale the profile refs onto their pins
Upstream moved under 145 profiles: 679 refs shifted and 452 followed a
renamed file, against 6,483 that still anchor where they were written.
The recale rewrites the located ranges only, keeping the annotations and
the sentences that carry them, and 106 pins advance in the same commit
because refs and source_commit name one revision or the profile
describes two at once.

Nothing here was guessed. The 183 refs that are CHANGED, GONE or
AMBIGUOUS are untouched, and the 57 profiles holding them keep their old
pin until someone reads the diff: profile_sync refuses to recale a
profile while any of its refs needs a re-read. trident kept its pin too,
its annotated ref being one the writer will not rewrite.
2026-09-04 14:41:44 +02:00

122 lines
4.4 KiB
YAML

emulator: Caprice32
type: standalone + libretro
core_classification: community_fork
source: "https://github.com/libretro/libretro-cap32"
upstream: "https://github.com/ColinPitrat/caprice32"
profiled_date: "2026-03-23"
source_commit: "4abfb8be233bec630f369379fb6c1d92d31f1c7d"
core_version: "v4.2.0"
display_name: "Amstrad - CPC/GX4000 (Caprice32)"
cores:
- cap32
- caprice32
systems:
- amstrad-cpc
notes: |
Caprice32 is an Amstrad CPC emulator ported to libretro. Supports CPC 464,
CPC 664, CPC 6128, and CPC+ (Plus) models.
All system ROMs are compiled directly into the core binary as C header
arrays in cap32/rom/*.h. No external BIOS files are required.
Embedded ROMs (cap32/cap32.c:345-348):
- cap32/rom/464.h: OS_BASIC10[32768] - CPC 464 OS + BASIC 1.0
- cap32/rom/6128.h: OS_BASIC11[32768] - CPC 6128 OS + BASIC 1.1
- cap32/rom/amsdos.h: AMSDOS[16384] - AMSDOS disk controller ROM
- cap32/rom/6128p.h: OS_6128P - CPC+ system cartridge ROM
- cap32/rom/cpm.h: cpmROM - CP/M boot snapshot (128KB)
ROM selection in emulator_select_ROM() (cap32/cap32.c:1075-1103):
- CPC 464: OS_BASIC10 (32KB)
- CPC 664: OS_BASIC10 (32KB) + AMSDOS in slot 7
- CPC 6128: OS_BASIC11 (32KB) + AMSDOS in slot 7
- CPC+: OS_6128P loaded as system cartridge via cpr_load()
The standalone (non-libretro) version references external filenames
cpc464.rom, cpc664.rom, cpc6128.rom, amsdos.rom in cap32/cap32.c:352-355
via config file loading (cap32/cap32.c:1831-1843), but the libretro port
does not use this path. The libretro init (libretro/libretro-core.c:1526) has
a "TODO: future use to load custom bios" comment that is not
implemented.
Keyboard layout patches are applied to the ROM in memory for French
and Spanish layouts via rom_mods.h (cap32/cap32.c:1105-1129).
CP/M support loads a pre-built snapshot (cpm.h) into memory via
snapshot_load_mem() in cap32/slots.c:90.
files:
# Standalone loads from rom_path/ — libretro embeds all as C arrays
# ref: ColinPitrat/caprice32/src/cap32.cpp:1006-1007,1159-1171
- name: cpc464.rom
system: amstrad-cpc
required: true
mode: standalone
size: 32768
note: "CPC 464 OS + BASIC 1.0"
source_ref: "src/cap32.cpp:213, rom/cpc464.rom"
- name: cpc664.rom
system: amstrad-cpc
required: false
mode: standalone
size: 32768
note: "CPC 664 OS + BASIC 1.0"
source_ref: "caprice32/rom/cpc664.rom"
- name: cpc6128.rom
system: amstrad-cpc
required: false
mode: standalone
size: 32768
note: "CPC 6128 OS + BASIC 1.1"
source_ref: "caprice32/rom/cpc6128.rom"
- name: amsdos.rom
system: amstrad-cpc
required: false
mode: standalone
size: 16384
note: "AMSDOS disc ROM (sideways slot 7)"
source_ref: "src/cap32.cpp:1250"
- name: system.cpr
system: amstrad-cpc
required: false
mode: standalone
size: 131156
note: "CPC+ system cartridge"
source_ref: "caprice32/rom/system.cpr"
- name: MF2.rom
system: amstrad-cpc
required: false
mode: standalone
size: 8192
note: "Multiface 2 ROM"
source_ref: "caprice32/rom/MF2.rom, src/cap32.cpp:1328-1347"
platform_details:
bios_mapping:
source_ref: "cap32/cap32.c:1075-1103, cap32/cap32.c:345-348"
note: |
All ROMs are embedded. emulator_select_ROM() copies the appropriate
ROM array into the pbROM buffer based on CPC.model. No filesystem
lookup occurs in the libretro port. The retro_system_bios_directory
variable is set up in libretro/libretro-core.c:1513-1524 but only used for
a future custom BIOS feature that is not yet implemented.
embedded_roms:
source_ref: "cap32/rom/464.h, cap32/rom/6128.h, cap32/rom/amsdos.h, cap32/rom/6128p.h, cap32/rom/cpm.h"
note: |
5 ROM sets embedded as C arrays:
OS_BASIC10 (32KB) - CPC 464/664 OS + BASIC 1.0
OS_BASIC11 (32KB) - CPC 6128 OS + BASIC 1.1
AMSDOS (16KB) - Disk controller ROM, mapped to slot 7
OS_6128P - CPC+ system cartridge (White Label cartridge)
cpmROM (128KB+) - CP/M boot snapshot including SNA header
model_rom_map:
source_ref: "cap32/cap32.c:1075-1103"
note: |
CPC 464: OS_BASIC10 only (no disk support)
CPC 664: OS_BASIC10 + AMSDOS in ROM slot 7
CPC 6128: OS_BASIC11 + AMSDOS in ROM slot 7
CPC+: 6128P system cartridge (or user-provided .cpr file)