{
  "commit": "fbe5ba4e3e790ab07eddc5b57e0f45a02cbcd60e",
  "count": 1,
  "generated_at": "2026-10-24T00:06:47Z",
  "items": [
    {
      "id": "px68k-sdl",
      "profile": {
        "built_by": [
          "retropie"
        ],
        "core_classification": "community_fork",
        "core_version": "0.15+K",
        "cores": [
          "px68k"
        ],
        "display_name": "Sharp - X68000 (px68k SDL)",
        "emulator": "px68k (SDL)",
        "files": [
          {
            "name": "iplrom.dat",
            "note": "X68000 IPL ROM. The four IPL names are tried in the order iplrom.dat, iplromxv.dat, iplromco.dat, iplrom30.dat and the first that opens is read, 0x20000 bytes into the upper half of the IPL area. The name sets the window title and iplrom30.dat marks the X68030.\n",
            "path": "iplrom.dat",
            "priority": 1,
            "required": true,
            "size": 131072,
            "source_ref": "SDL/SDL2/winx68k.cpp:277-279,288-307",
            "system": "sharp-x68000"
          },
          {
            "name": "iplromxv.dat",
            "note": "X68000 XVI IPL ROM, read when iplrom.dat is absent.",
            "path": "iplromxv.dat",
            "priority": 2,
            "required": false,
            "size": 131072,
            "source_ref": "SDL/SDL2/winx68k.cpp:277-279,288-307",
            "system": "sharp-x68000"
          },
          {
            "name": "iplromco.dat",
            "note": "X68000 Compact IPL ROM, read when the first two names are absent.",
            "path": "iplromco.dat",
            "priority": 3,
            "required": false,
            "size": 131072,
            "source_ref": "SDL/SDL2/winx68k.cpp:277-279,288-307",
            "system": "sharp-x68000"
          },
          {
            "name": "iplrom30.dat",
            "note": "X68030 IPL ROM, read when the three other names are absent.",
            "path": "iplrom30.dat",
            "priority": 4,
            "required": false,
            "size": 131072,
            "source_ref": "SDL/SDL2/winx68k.cpp:277-279,288-307",
            "system": "sharp-x68000"
          },
          {
            "name": "cgrom30.dat",
            "note": "X68030 character generator ROM. The font names are tried in the order cgrom30.dat, cgrom30.tmp, cgrom.dat, cgrom.tmp whatever IPL was loaded, and the first that opens is read, 0xC0000 bytes.\n",
            "path": "cgrom30.dat",
            "priority": 1,
            "required": false,
            "size": 786432,
            "source_ref": "SDL/SDL2/winx68k.cpp:280-282,317-331",
            "system": "sharp-x68000"
          },
          {
            "name": "cgrom30.tmp",
            "note": "Substitute X68030 font, read when cgrom30.dat is absent.",
            "path": "cgrom30.tmp",
            "priority": 2,
            "required": false,
            "size": 786432,
            "source_ref": "SDL/SDL2/winx68k.cpp:280-282,317-331",
            "system": "sharp-x68000"
          },
          {
            "name": "cgrom.dat",
            "note": "X68000 character generator ROM, read when neither X68030 font is present.",
            "path": "cgrom.dat",
            "priority": 3,
            "required": true,
            "size": 786432,
            "source_ref": "SDL/SDL2/winx68k.cpp:280-282,317-331",
            "system": "sharp-x68000"
          },
          {
            "name": "cgrom.tmp",
            "note": "Substitute font, read last. The separate mkcgrom tool (make cgrom) renders it from TrueType fonts.\n",
            "path": "cgrom.tmp",
            "priority": 4,
            "required": false,
            "size": 786432,
            "source_ref": "SDL/SDL2/winx68k.cpp:280-282,317-331, SDL/tool/create_cgrom.c:20",
            "system": "sharp-x68000"
          },
          {
            "hle_fallback": true,
            "name": "scsiinrom.dat",
            "note": "Built-in SCSI IPL of the XVI, Compact and X68030. It is read only when the loaded IPL points at the built-in SCSI ROM at 0xFC0000, 0x2000 bytes, and its IOCS entry is patched. Absent, a stub carrying the Human68k signature is placed there instead.\n",
            "path": "scsiinrom.dat",
            "required": false,
            "size": 8192,
            "source_ref": "SDL/SDL2/winx68k.cpp:140-271",
            "system": "sharp-x68000"
          },
          {
            "name": "scsiexrom.dat",
            "note": "CZ-6BS1 external SCSI board IPL, mapped at 0xEA0000 with any IPL. The code reads 0x1FD0 bytes and accepts a dump taken from 0xEA0020 or from 0xEA0000, located by the SCSIEX signature, then patches the IOCS entry after the NuSCSI tag. Absent, the board ROM area is left empty and no external SCSI drive boots.\n",
            "path": "scsiexrom.dat",
            "required": false,
            "size": 8192,
            "source_ref": "SDL/SDL2/winx68k.cpp:140-271",
            "system": "sharp-x68000"
          }
        ],
        "mode": "standalone",
        "notes": "SDL build of Kenjo's WinX68k (Keropi) by TurtleBazooka, forked from\nkenyahiro/px68k and hissorii/px68k. The Makefile builds the SDL3 front end by\ndefault and the SDL2 one with SDL2=1 (Makefile:21-24,236-243). Both read the\nsame files: the SDL3 lists are at SDL/SDL3/winx68k.cpp:189-190,273-278.\n\nEvery file is opened by name inside one folder. set_modulepath builds it as\n$HOME/.keropi, or ./.keropi when HOME is unset, and creates it when missing\n(SDL/prop.c:172-194). WinMain hands it to File_Setcd\n(SDL/SDL2/winx68k.cpp:713-717), and File_OpenCurDir joins each name to it\n(win32api/dosio.c:170-194). The same folder holds the config file\n(SDL/prop.c:196). Android uses /sdcard/px68k or the folder named in dir.txt,\niOS /var/mobile/px68k (SDL/prop.c:112-170). Paths below are relative to that\nfolder.\n\nWhen no IPL or no font loads, WinX68k_LoadROMs returns false and WinMain\nshows an error and never starts the CPU loop\n(SDL/SDL2/winx68k.cpp:798-800,811,866-868).\n\nsram.dat is the 16 KB battery backed SRAM. It is read when present and\nwritten back on exit (x68k/sram.c:25,151-201), so the emulator creates it.\nkeyconf.dat is an optional key table read on start (SDL/keyboard.c:49,85-114),\nand the repository ships a US layout as \"keyconf.dat(us)\". The printer output\ngoes to a file in the same folder (x68k/ioc.c:33-35).\n\nWith FLUID=1 MIDI goes through FluidSynth, which loads the SoundFont named by\nSoundFontFile in the config, else /usr/local/share/soundfonts/default.sf2\n(x68k/midi_fluid.c:27,52-66, SDL/prop.c:358-362, Makefile:165-195). Any\nGeneral MIDI SoundFont works. The Mercury unit is compiled out\n(Makefile:120-123).\n",
        "profiled_date": "2026-10-23",
        "source": "https://github.com/TurtleBazooka/px68k",
        "source_commit": "bdc3d87efb9f09df88c5c6eb271f9535aaf13210",
        "systems": [
          "sharp-x68000"
        ],
        "type": "standalone"
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
