{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "cap32",
      "profile": {
        "core_classification": "community_fork",
        "core_version": "4.5.4",
        "cores": [
          "cap32",
          "caprice32"
        ],
        "display_name": "Amstrad - CPC/GX4000 (Caprice32)",
        "emulator": "Caprice32",
        "files": [
          {
            "bundled": true,
            "md5": "a993f85b88ac4350cf4d41554e87fe4f",
            "mode": "standalone",
            "name": "cpc464.rom",
            "note": "CPC 464 OS + BASIC 1.0, read when model=0",
            "required": false,
            "sha1": "56d39c463da60968d93e58b4ba0e675829412a20",
            "size": 32768,
            "source_ref": "upstream src/cap32.cpp:212-217, upstream src/cap32.cpp:1038-1052, upstream rom/cpc464.rom",
            "system": "amstrad-cpc"
          },
          {
            "bundled": true,
            "md5": "5a384a2310f472c7857888371c00ed66",
            "mode": "standalone",
            "name": "cpc664.rom",
            "note": "CPC 664 OS + BASIC 1.1, read when model=1",
            "required": false,
            "sha1": "073a7665527b5bd8a148747a3947dbd3328682c8",
            "size": 32768,
            "source_ref": "upstream src/cap32.cpp:212-217, upstream src/cap32.cpp:1038-1052, upstream rom/cpc664.rom",
            "system": "amstrad-cpc"
          },
          {
            "bundled": true,
            "md5": "b96280dc6c95a48857b4b8eb931533ae",
            "mode": "standalone",
            "name": "cpc6128.rom",
            "note": "CPC 6128 OS + BASIC 1.1, default model=2. A missing file returns ERR_CPC_ROM_MISSING",
            "required": true,
            "sha1": "5977adbad3f7c1e0e082cd02fe76a700d9860c30",
            "size": 32768,
            "source_ref": "upstream src/cap32.cpp:212-217, upstream src/cap32.cpp:1038-1052, upstream src/cap32.cpp:1848, upstream rom/cpc6128.rom",
            "system": "amstrad-cpc"
          },
          {
            "bundled": true,
            "md5": "25629dfe870d097469c217b95fdc1c95",
            "mode": "standalone",
            "name": "amsdos.rom",
            "note": "AMSDOS disc ROM, shipped cap32.cfg sets slot07=DEFAULT, skipped on the 464. A missing file clears the slot",
            "required": false,
            "sha1": "39102c8e9cb55fcc0b9b62098780ed4a3cb6a4bb",
            "size": 16384,
            "source_ref": "upstream src/cap32.cpp:1202-1210, upstream src/cap32.cpp:1277-1281, upstream cap32.cfg:205-206, 215, upstream rom/amsdos.rom",
            "system": "amstrad-cpc"
          },
          {
            "bundled": true,
            "md5": "39b565e648172980aa552293e667070f",
            "mode": "standalone",
            "name": "system.cpr",
            "note": "CPC+ system cartridge, default cartridge path",
            "required": false,
            "sha1": "405e341437fab8db477606238af0c20eca2e39ee",
            "size": 131156,
            "source_ref": "upstream src/cap32.cpp:1953, upstream src/cap32.cpp:1182, upstream rom/system.cpr",
            "system": "amstrad-cpc"
          },
          {
            "bundled": true,
            "md5": "4c9f014e91d407cc6509fad0095ab909",
            "mode": "standalone",
            "name": "MF2.rom",
            "note": "Multiface 2 ROM, read when mf2=1. Checks the \"MULTIFACE 2\" signature at 0x0d32",
            "required": false,
            "sha1": "1431ec628d38f000715545dd2186b684c5fe5a6f",
            "size": 8192,
            "source_ref": "upstream src/cap32.cpp:1284-1310, upstream rom/MF2.rom",
            "system": "amstrad-cpc"
          }
        ],
        "notes": "Caprice32 is an Amstrad CPC emulator ported to libretro. Supports CPC 464,\nCPC 464 with DDI-1 disc interface, CPC 664, CPC 6128, and CPC+ (Plus) models.\n\nAll system ROMs are compiled directly into the core binary as C header\narrays in cap32/rom/*.h. No external BIOS files are required.\n\nEmbedded ROMs (cap32/cap32.c:345-349, cap32/slots.c:33):\n  - cap32/rom/464.h:    OS464_BASIC10[32768]  - CPC 464 OS + BASIC 1.0\n  - cap32/rom/664.h:    OS664_BASIC664[32768] - CPC 664 OS + BASIC 1.1\n  - cap32/rom/6128.h:   OS_BASIC11[32768]     - CPC 6128 OS + BASIC 1.1\n  - cap32/rom/amsdos.h: AMSDOS[16384]         - AMSDOS disc ROM\n  - cap32/rom/6128p.h:  OS_6128P[65580]       - CPC+ system cartridge\n  - cap32/rom/cpm.h:    CPM, CPM_SYS          - CP/M boot memory dumps\n\nROM selection in emulator_select_ROM() (cap32/cap32.c:1081-1111):\n  - CPC 464:     OS464_BASIC10, AMSDOS in slot 7 when the content is a disc\n  - CPC 664:     OS664_BASIC664 + AMSDOS in slot 7\n  - CPC 6128:    OS_BASIC11 + AMSDOS in slot 7\n  - CPC+:        OS_6128P loaded as system cartridge via cpr_load()\n\nCore option \"cap32_model\" lists \"464DDI\" (libretro/libretro-core.c:501),\nbut update_variables() matches only 464, 664, 6128 and 6128+ and leaves any\nother value on the 6128 default (libretro/libretro-core.c:1035-1039). A 464\nwith disc content (slot SLOT_DSK, libretro/libretro-core.c:1865-1866) gets\nAMSDOS in slot 7 (cap32/cap32.c:1088-1092).\n\nThe array chROMFile names \"cpc464.rom\", \"cpc664.rom\", \"cpc6128.rom\"\n(cap32/cap32.c:353-357) and loadConfiguration() parses the rom_path,\nslotNN and rom_mf2 keys of ./cap32.cfg (cap32/cap32.c:1842-1859), but no\ncode opens these files. The system directory is resolved in\nlibretro/libretro-core.c:1606-1625 under a \"TODO: future use to load\ncustom bios\" comment and no ROM is read from it.\n\nKeyboard layout patches are applied to the ROM in memory for French\nand Spanish layouts via rom_mods.h (cap32/cap32.c:1113-1137).\n\nCP/M support assembles a 128KB snapshot from the CPM and CPM_SYS arrays\nand loads it via snapshot_load_mem() in cap32/slots.c:71-90.\n",
        "platform_details": {
          "bios_mapping": {
            "note": "All ROMs are embedded. emulator_select_ROM() copies the ROM array for\nCPC.model into pbROM. No filesystem lookup occurs in the libretro\nport. retro_system_bios_directory is set in\nlibretro/libretro-core.c:1606-1625 and no ROM is read from it.\n",
            "source_ref": "source cap32/cap32.c:1081-1111, source cap32/cap32.c:345-349"
          },
          "embedded_roms": {
            "note": "6 headers embedded as C arrays:\nOS464_BASIC10 (32KB)  - CPC 464 OS + BASIC 1.0, sha1 56d39c463da60968d93e58b4ba0e675829412a20\nOS664_BASIC664 (32KB) - CPC 664 OS + BASIC 1.1, sha1 073a7665527b5bd8a148747a3947dbd3328682c8\nOS_BASIC11 (32KB)     - CPC 6128 OS + BASIC 1.1, sha1 5977adbad3f7c1e0e082cd02fe76a700d9860c30\nAMSDOS (16KB)         - disc ROM mapped to slot 7, sha1 39102c8e9cb55fcc0b9b62098780ed4a3cb6a4bb\nOS_6128P (65580 B)    - CPC+ system cartridge\nCPM, CPM_SYS          - CP/M memory dumps assembled into a 128KB snapshot\n",
            "source_ref": "source cap32/rom/464.h, source cap32/rom/664.h, source cap32/rom/6128.h, source cap32/rom/amsdos.h, source cap32/rom/6128p.h, source cap32/rom/cpm.h"
          },
          "model_rom_map": {
            "note": "CPC 464:     OS464_BASIC10, AMSDOS in ROM slot 7 when the content is a disc\nCPC 664:     OS664_BASIC664 + AMSDOS in ROM slot 7\nCPC 6128:    OS_BASIC11 + AMSDOS in ROM slot 7\nCPC+:        6128P system cartridge (or user-provided .cpr file)\n",
            "source_ref": "source cap32/cap32.c:1081-1111"
          }
        },
        "profiled_date": "2026-10-23",
        "source": "https://github.com/libretro/libretro-cap32",
        "source_commit": "8e61dd69d948cea16c3bad734f7b9d0c2a018cc8",
        "systems": [
          "amstrad-cpc"
        ],
        "type": "standalone + libretro",
        "upstream": "https://github.com/ColinPitrat/caprice32",
        "upstream_commit": "8c778bf072a06fb7c23b9cccd179041db7f79a52",
        "version_basis": {
          "kind": "file",
          "path": "libretro/libretro-core.h",
          "pattern": "#define\\s+VERSION_STRING\\s+\"([^\"]+)\""
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
