{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "sdlpal",
      "profile": {
        "core_classification": "official_port",
        "core_version": "2.0.1",
        "cores": [
          "sdlpal"
        ],
        "display_name": "SDLPAL",
        "emulator": "SDLPAL",
        "files": [
          {
            "category": "game_data",
            "name": "abc.mkf",
            "note": "Animation and battle character data archive.",
            "path": "sdlpal/abc.mkf",
            "required": true,
            "source_ref": "util.c:734, global.c:55, battle.c:879"
          },
          {
            "category": "game_data",
            "name": "ball.mkf",
            "note": "Magic effect graphics archive.",
            "path": "sdlpal/ball.mkf",
            "required": true,
            "source_ref": "util.c:734, global.c:177"
          },
          {
            "category": "game_data",
            "name": "data.mkf",
            "note": "Core game data archive (scripts, events, game logic).",
            "path": "sdlpal/data.mkf",
            "required": true,
            "source_ref": "util.c:734, global.c:178"
          },
          {
            "category": "game_data",
            "name": "f.mkf",
            "note": "Face/portrait graphics archive.",
            "path": "sdlpal/f.mkf",
            "required": true,
            "source_ref": "util.c:734, global.c:179"
          },
          {
            "category": "game_data",
            "name": "fbp.mkf",
            "note": "Full-screen background picture archive (cutscenes, title).",
            "path": "sdlpal/fbp.mkf",
            "required": true,
            "source_ref": "util.c:735, global.c:175"
          },
          {
            "category": "game_data",
            "name": "fire.mkf",
            "note": "Fire/spell effect graphics archive.",
            "path": "sdlpal/fire.mkf",
            "required": true,
            "source_ref": "util.c:735, global.c:180"
          },
          {
            "category": "game_data",
            "name": "gop.mkf",
            "note": "Game object palette/graphics archive.",
            "path": "sdlpal/gop.mkf",
            "required": true,
            "source_ref": "util.c:735, res.c:234"
          },
          {
            "category": "game_data",
            "name": "map.mkf",
            "note": "Map tile and layout data archive.",
            "path": "sdlpal/map.mkf",
            "required": true,
            "source_ref": "util.c:735, global.c:55, res.c:233"
          },
          {
            "category": "game_data",
            "name": "mgo.mkf",
            "note": "Map graphic object (sprite overlay) archive.",
            "path": "sdlpal/mgo.mkf",
            "required": true,
            "source_ref": "util.c:736, global.c:176"
          },
          {
            "category": "game_data",
            "name": "pat.mkf",
            "note": "Palette data archive.",
            "path": "sdlpal/pat.mkf",
            "required": true,
            "source_ref": "util.c:736, palette.c:53"
          },
          {
            "category": "game_data",
            "name": "rgm.mkf",
            "note": "RGM graphics archive.",
            "path": "sdlpal/rgm.mkf",
            "required": true,
            "source_ref": "util.c:736, global.c:181"
          },
          {
            "category": "game_data",
            "name": "rng.mkf",
            "note": "RNG animation/cutscene sequence archive.",
            "path": "sdlpal/rng.mkf",
            "required": true,
            "source_ref": "util.c:736, rngplay.c:402"
          },
          {
            "category": "game_data",
            "name": "sss.mkf",
            "note": "SSS data archive (message offsets in chunk 3).",
            "path": "sdlpal/sss.mkf",
            "required": true,
            "source_ref": "util.c:737, global.c:182"
          },
          {
            "category": "game_data",
            "name": "m.msg",
            "note": "Message text data (dialog, story). Opened via UTIL_OpenRequiredFile in default mode.",
            "path": "sdlpal/m.msg",
            "required": true,
            "source_ref": "util.c:740, text.c:718"
          },
          {
            "category": "game_data",
            "name": "word.dat",
            "note": "Word data (menu items, status labels, item/spell names).",
            "path": "sdlpal/word.dat",
            "required": true,
            "source_ref": "util.c:741, text.c:719, global.c:197"
          },
          {
            "category": "game_data",
            "name": "desc.dat",
            "note": "Object description strings. DOS version only (skipped for Win95). Returns NULL if absent.",
            "path": "sdlpal/desc.dat",
            "required": false,
            "source_ref": "global.c:204, ui.c:864"
          },
          {
            "category": "game_data",
            "name": "wor16.asc",
            "note": "Chinese character code mapping for embedded font. Silently skipped if absent.",
            "path": "sdlpal/wor16.asc",
            "required": false,
            "source_ref": "font.c:114"
          },
          {
            "category": "game_data",
            "name": "wor16.fon",
            "note": "Chinese character bitmap font data. Used with wor16.asc for DOS font rendering.",
            "path": "sdlpal/wor16.fon",
            "required": false,
            "source_ref": "font.c:172"
          },
          {
            "category": "game_data",
            "name": "voc.mkf",
            "note": "VOC format sound effects archive (DOS version). Preferred for DOS game data.",
            "path": "sdlpal/voc.mkf",
            "required": false,
            "source_ref": "util.c:743, sound.c:969"
          },
          {
            "category": "game_data",
            "name": "sounds.mkf",
            "note": "WAV format sound effects archive (Win95 version). Preferred for Win95 game data.",
            "path": "sdlpal/sounds.mkf",
            "required": false,
            "source_ref": "util.c:743, sound.c:964"
          },
          {
            "category": "game_data",
            "name": "mus.mkf",
            "note": "RIX/OPL music archive. Default music source, played through OPL emulation.",
            "path": "sdlpal/mus.mkf",
            "required": false,
            "source_ref": "util.c:744, audio.c:305"
          },
          {
            "category": "game_data",
            "name": "midi.mkf",
            "note": "MIDI music archive. Used when Music=MIDI is configured in sdlpal.cfg.",
            "path": "sdlpal/midi.mkf",
            "required": false,
            "source_ref": "util.c:744, midi.c:78, midi_tsf.c:68, midi_timidity.c:130"
          },
          {
            "category": "game_data",
            "name": "1.avi",
            "note": "Trademark screen video (Win95 only). Falls back to RNG animation if absent.",
            "path": "sdlpal/1.avi",
            "required": false,
            "source_ref": "main.c:197"
          },
          {
            "category": "game_data",
            "name": "2.avi",
            "note": "Splash screen video (Win95 only). Falls back to sprite animation if absent.",
            "path": "sdlpal/2.avi",
            "required": false,
            "source_ref": "main.c:237"
          },
          {
            "category": "game_data",
            "name": "3.avi",
            "note": "In-game event video (Win95 only).",
            "path": "sdlpal/3.avi",
            "required": false,
            "source_ref": "uigame.c:162"
          },
          {
            "category": "game_data",
            "name": "4.avi",
            "note": "Ending sequence video part 1 (Win95 only).",
            "path": "sdlpal/4.avi",
            "required": false,
            "source_ref": "ending.c:418"
          },
          {
            "category": "game_data",
            "name": "5.avi",
            "note": "Ending sequence video part 2 (Win95 only).",
            "path": "sdlpal/5.avi",
            "required": false,
            "source_ref": "ending.c:420"
          },
          {
            "category": "game_data",
            "name": "6.avi",
            "note": "Ending sequence video part 3 (Win95 only).",
            "path": "sdlpal/6.avi",
            "required": false,
            "source_ref": "ending.c:485"
          }
        ],
        "notes": "Game engine reimplementing the classic Chinese RPG PAL (Sword and Fairy)\nby SoftStar Inc. No BIOS or firmware required. All files are proprietary\ngame data from the original 1995 DOS or 1998 Win95 release.\n\nPlace game files in <system_dir>/sdlpal/ or point a .cfg at the game\ndirectory. The game is available on Steam (app 1546570). Auto-detects\nDOS vs Win95 game data.\n\nThe libretro port disables MP3, OGG, OPUS, native MIDI, and CD audio\nbackends (pal_config.h). Only RIX (mus.mkf) and software MIDI synthesis\nvia Timidity/TinySoundFont (midi.mkf + user-provided soundfont) are\navailable for music.\n",
        "profiled_date": "2026-03-25",
        "source": "https://github.com/sdlpal/sdlpal",
        "source_commit": "d4bf69b64d335cd680555af9df90e7ec4f3006a3",
        "systems": [
          "sdlpal"
        ],
        "type": "libretro",
        "upstream": "https://github.com/sdlpal/sdlpal",
        "version_basis": {
          "kind": "file",
          "path": "libretro/libretro.c",
          "pattern": "info->library_version\\s+=\\s+\"([^\"]+)"
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
