{
  "commit": "fbe5ba4e3e790ab07eddc5b57e0f45a02cbcd60e",
  "count": 1,
  "generated_at": "2026-10-24T00:06:47Z",
  "items": [
    {
      "id": "quasi88kai",
      "profile": {
        "built_by": [
          "retropie"
        ],
        "core_classification": "enhanced_fork",
        "core_version": "0.7.1",
        "cores": [
          "quasi88"
        ],
        "display_name": "NEC - PC-8800 series (QUASI88kai)",
        "emulator": "QUASI88kai",
        "files": [
          {
            "aliases": [
              "n88.rom"
            ],
            "name": "N88.ROM",
            "note": "N88-BASIC main ROM, read into main_rom (0x8000 bytes). Without it the Z80 runs from 0xFF filled memory and nothing boots. Its byte 0x79D7 selects the machine model.\n",
            "path": "rom/N88.ROM",
            "required": true,
            "size": 32768,
            "source_ref": "src/memory.cpp:87-88,317",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "n88ext0.rom",
              "N88_0.ROM",
              "n88_0.rom"
            ],
            "name": "N88EXT0.ROM",
            "note": "N88-BASIC extension ROM bank 0, mapped at 0x6000-0x7FFF when port 0x71 selects the extension ROM. Bank 0 holds the N88-BASIC V2 code that BASIC_AUTO boots on SR and later models.\n",
            "path": "rom/N88EXT0.ROM",
            "required": true,
            "size": 8192,
            "source_ref": "src/memory.cpp:89,318, src/pc88main.cpp:268-274",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "n88ext1.rom",
              "N88_1.ROM",
              "n88_1.rom"
            ],
            "name": "N88EXT1.ROM",
            "note": "N88-BASIC extension ROM bank 1, mapped at 0x6000-0x7FFF when selected.",
            "path": "rom/N88EXT1.ROM",
            "required": false,
            "size": 8192,
            "source_ref": "src/memory.cpp:90,319",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "n88ext2.rom",
              "N88_2.ROM",
              "n88_2.rom"
            ],
            "name": "N88EXT2.ROM",
            "note": "N88-BASIC extension ROM bank 2, mapped at 0x6000-0x7FFF when selected.",
            "path": "rom/N88EXT2.ROM",
            "required": false,
            "size": 8192,
            "source_ref": "src/memory.cpp:91,320",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "n88ext3.rom",
              "N88_3.ROM",
              "n88_3.rom"
            ],
            "name": "N88EXT3.ROM",
            "note": "N88-BASIC extension ROM bank 3, mapped at 0x6000-0x7FFF when selected.",
            "path": "rom/N88EXT3.ROM",
            "required": false,
            "size": 8192,
            "source_ref": "src/memory.cpp:92,321",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "n88n.rom",
              "N80.ROM",
              "n80.rom"
            ],
            "name": "N88N.ROM",
            "note": "N-BASIC ROM, mapped at 0x0000-0x7FFF in N mode, the PC-8001 compatible mode.\n",
            "path": "rom/N88N.ROM",
            "required": false,
            "size": 32768,
            "source_ref": "src/memory.cpp:93,322, src/pc88main.cpp:264-266",
            "system": "nec-pc-80"
          },
          {
            "aliases": [
              "n88sub.rom",
              "DISK.ROM",
              "disk.rom"
            ],
            "name": "N88SUB.ROM",
            "note": "Disk subsystem ROM run by the sub CPU. 2048 bytes is the 2D type and is mirrored to fill 8 KB, 8192 bytes is the 2HD type. Without it the sub CPU runs 0xFF and no floppy image boots.\n",
            "path": "rom/N88SUB.ROM",
            "required": true,
            "size": [
              2048,
              8192
            ],
            "source_ref": "src/memory.cpp:94,324-339,371-372",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "n88knj1.rom",
              "KANJI1.ROM",
              "kanji1.rom"
            ],
            "name": "N88KNJ1.ROM",
            "note": "Kanji ROM level 1. A file of exactly 0x20000 bytes sets has_kanji_rom. Otherwise the menu falls back to English and the ANK font comes from the built-in table.\n",
            "path": "rom/N88KNJ1.ROM",
            "required": false,
            "size": 131072,
            "source_ref": "src/memory.cpp:95,376-383",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "n88knj2.rom",
              "KANJI2.ROM",
              "kanji2.rom"
            ],
            "name": "N88KNJ2.ROM",
            "note": "Kanji ROM level 2.",
            "path": "rom/N88KNJ2.ROM",
            "required": false,
            "size": 131072,
            "source_ref": "src/memory.cpp:96,385",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "n88jisho.rom",
              "JISYO.ROM",
              "jisyo.rom"
            ],
            "name": "N88JISHO.ROM",
            "note": "Dictionary ROM, 32 banks of 16 KB. Read only with -jisho, off by default.\n",
            "path": "rom/N88JISHO.ROM",
            "required": false,
            "size": 524288,
            "source_ref": "src/memory.cpp:26,97,560-578, src/initval.h:57, src/getconf.cpp:377-378",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "font.rom"
            ],
            "hle_fallback": true,
            "name": "FONT.ROM",
            "note": "ANK font. When it is missing or not 2048 bytes the font is taken from the kanji ROM, or from the built-in table without one. -nofont skips the file (src/getconf.cpp:583).\n",
            "path": "rom/FONT.ROM",
            "required": false,
            "size": 2048,
            "source_ref": "src/memory.cpp:98,388-424",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "font2.rom"
            ],
            "hle_fallback": true,
            "name": "FONT2.ROM",
            "note": "Second font. 4096 bytes carries its own semigraphic half. Missing, the built-in ANH table is used.\n",
            "path": "rom/FONT2.ROM",
            "required": false,
            "size": [
              2048,
              4096
            ],
            "source_ref": "src/memory.cpp:99,426-459",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "font3.rom"
            ],
            "hle_fallback": true,
            "name": "FONT3.ROM",
            "note": "Third font. Missing, it is left transparent.",
            "path": "rom/FONT3.ROM",
            "required": false,
            "size": [
              2048,
              4096
            ],
            "source_ref": "src/memory.cpp:100,461-490",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "2608_bd.wav"
            ],
            "name": "2608_BD.WAV",
            "note": "OPNA rhythm bass drum sample. The six rhythm samples are read in the order BD, SD, TOP, HH, TOM, RIM, the uppercase name first, and loading stops at the first one missing or not mono PCM. They are read only by the fmgen OPNA, used with -fmgen and sound board II (-sd2), both off by default (src/snddrv/quasi88/mame-quasi88.cpp:32,529-536, src/initval.h:56). Without them the fmgen rhythm channel is silent.\n",
            "path": "rom/2608_BD.WAV",
            "required": false,
            "source_ref": "src/fmgen/opna.cpp:1264-1279,1344-1461",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "2608_sd.wav"
            ],
            "name": "2608_SD.WAV",
            "note": "OPNA rhythm snare drum sample, read with the bass drum sample.",
            "path": "rom/2608_SD.WAV",
            "required": false,
            "source_ref": "src/fmgen/opna.cpp:1264-1279,1344-1461",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "2608_top.wav"
            ],
            "name": "2608_TOP.WAV",
            "note": "OPNA rhythm top cymbal sample, read with the bass drum sample.",
            "path": "rom/2608_TOP.WAV",
            "required": false,
            "source_ref": "src/fmgen/opna.cpp:1264-1279,1344-1461",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "2608_hh.wav"
            ],
            "name": "2608_HH.WAV",
            "note": "OPNA rhythm hi-hat sample, read with the bass drum sample.",
            "path": "rom/2608_HH.WAV",
            "required": false,
            "source_ref": "src/fmgen/opna.cpp:1264-1279,1344-1461",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "2608_tom.wav"
            ],
            "name": "2608_TOM.WAV",
            "note": "OPNA rhythm tom sample, read with the bass drum sample.",
            "path": "rom/2608_TOM.WAV",
            "required": false,
            "source_ref": "src/fmgen/opna.cpp:1264-1279,1344-1461",
            "system": "nec-pc-88"
          },
          {
            "aliases": [
              "2608_rim.wav"
            ],
            "name": "2608_RIM.WAV",
            "note": "OPNA rhythm rim shot sample, read with the bass drum sample.",
            "path": "rom/2608_RIM.WAV",
            "required": false,
            "source_ref": "src/fmgen/opna.cpp:1264-1279,1344-1461",
            "system": "nec-pc-88"
          }
        ],
        "mode": "standalone",
        "notes": "Continuation of Showzoh Fukunaga's QUASI88, version 0.7.1 at the pinned\ncommit (CMakeLists.txt:3). It reads every ROM, the OPNA rhythm samples and\nthe floppy drive sound samples from one ROM directory.\n\nThe ROM directory is $QUASI88_ROM_DIR when set, else the rom folder under the\nQUASI88 home (src/file-op.cpp:444-464,521). The home is the working\ndirectory when it holds quasi88.ini, else $HOME/.quasi88 (src/file-op.cpp:\n494-516). The -romdir option replaces it (src/getconf.cpp:282-290,529). The\nCMake ROMDIR setting becomes the ROM_DIR macro (CMakeLists.txt:31,38), which\nonly fills the help text (src/help.h:214) and does not move the search.\nPaths below are relative to the QUASI88 home.\n\nload_rom tries each name of an entry in order inside the ROM directory and\nstops at the first that opens (src/memory.cpp:175-219). A missing ROM is\nfilled with 0xFF, and a short one is padded with 0xFF, so the emulator starts\nwith any ROM missing. The machine model comes from byte 0x79D7 of N88.ROM\n(src/memory.h:44, src/memory.cpp:503), and BASIC_AUTO, the default, boots V2\nwhen that byte is \"4\" or higher and V1S otherwise (src/initval.h:53,\nsrc/pc88main.cpp:2755-2761).\n\n-compatrom FILE loads every main and sub ROM from one P88SR.EXE image\ninstead of the separate files (src/getconf.cpp:535, src/memory.cpp:341-369).\nThere is no default name.\n\nWith -samples (off by default, src/snddrv/quasi88/mame-quasi88.cpp:506-510,\nsrc/snddrv/quasi88/SDL/audio.cpp:91-94) the drive sounds motoron.wav,\nmotoroff.wav, headdown.wav, headup.wav and seek.wav are read from the ROM\ndirectory (src/snddrv/quasi88/mame-quasi88.cpp:101-108,1085-1127). Any mono\nWAV is accepted (src/snddrv/quasi88/mame-quasi88.cpp:92). QUASI88 names no\nparticular recording.\n",
        "profiled_date": "2026-10-20",
        "source": "https://github.com/winterheart/quasi88",
        "source_commit": "0d4e171415cad7ac19ae4ff0dcf8cdcfd825947b",
        "systems": [
          "nec-pc-88",
          "nec-pc-80"
        ],
        "type": "standalone"
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
