{
  "count": 1,
  "generated_at": "2026-10-20T02:57:31Z",
  "items": [
    {
      "id": "vkquake3",
      "profile": {
        "core_classification": "game_engine",
        "core_version": "1.36",
        "cores": [
          "vkquake3"
        ],
        "display_name": "Quake III Arena (vkQuake3)",
        "emulator": "vkQuake3",
        "files": [
          {
            "category": "game_data",
            "name": "pak0.pk3",
            "note": "Retail Quake III Arena pak. A checksum mismatch prints a warning, the file is not refused.",
            "path": "baseq3/pak0.pk3",
            "required": true,
            "source_ref": "code/qcommon/files.c:180 (pak_checksums[0]=1566731103u), 3486 (checksum compare), 3596-3619 (fatal when a baseq3 pak is absent)",
            "system": "quake3",
            "unsourceable": "retail data the collection does not hold, and a same-named file of another game must not stand in"
          },
          {
            "category": "game_data",
            "name": "pak1.pk3",
            "path": "baseq3/pak1.pk3",
            "required": true,
            "source_ref": "code/qcommon/files.c:181 (pak_checksums[1]=298122907u), 3596-3619 (fatal when a baseq3 pak is absent)",
            "system": "quake3"
          },
          {
            "category": "game_data",
            "name": "pak2.pk3",
            "path": "baseq3/pak2.pk3",
            "required": true,
            "source_ref": "code/qcommon/files.c:182 (pak_checksums[2]=412165236u), 3596-3619 (fatal when a baseq3 pak is absent)",
            "system": "quake3"
          },
          {
            "category": "game_data",
            "name": "pak3.pk3",
            "path": "baseq3/pak3.pk3",
            "required": true,
            "source_ref": "code/qcommon/files.c:183 (pak_checksums[3]=2991495316u), 3596-3619 (fatal when a baseq3 pak is absent)",
            "system": "quake3"
          },
          {
            "category": "game_data",
            "name": "pak4.pk3",
            "path": "baseq3/pak4.pk3",
            "required": true,
            "source_ref": "code/qcommon/files.c:184 (pak_checksums[4]=1197932710u), 3596-3619 (fatal when a baseq3 pak is absent)",
            "system": "quake3"
          },
          {
            "category": "game_data",
            "name": "pak5.pk3",
            "path": "baseq3/pak5.pk3",
            "required": true,
            "source_ref": "code/qcommon/files.c:185 (pak_checksums[5]=4087071573u), 3596-3619 (fatal when a baseq3 pak is absent)",
            "system": "quake3"
          },
          {
            "category": "game_data",
            "name": "pak6.pk3",
            "path": "baseq3/pak6.pk3",
            "required": true,
            "source_ref": "code/qcommon/files.c:186 (pak_checksums[6]=3709064859u), 3596-3619 (fatal when a baseq3 pak is absent)",
            "system": "quake3"
          },
          {
            "category": "game_data",
            "name": "pak7.pk3",
            "path": "baseq3/pak7.pk3",
            "required": true,
            "source_ref": "code/qcommon/files.c:187 (pak_checksums[7]=908855077u), 3596-3619 (fatal when a baseq3 pak is absent)",
            "system": "quake3"
          },
          {
            "category": "game_data",
            "name": "pak8.pk3",
            "path": "baseq3/pak8.pk3",
            "required": true,
            "source_ref": "code/qcommon/files.c:188 (pak_checksums[8]=977125798u), 3596-3619 (fatal when a baseq3 pak is absent)",
            "system": "quake3"
          },
          {
            "category": "game_data",
            "name": "pak0.pk3",
            "note": "Demo pak. Recognised only under demoq3/ with this checksum, and the engine then prints a warning and counts baseq3/pak0.pk3 as found.",
            "path": "demoq3/pak0.pk3",
            "required": false,
            "source_ref": "code/qcommon/files.c:178 (DEMO_PAK0_CHECKSUM=2985612116u), 3475-3479 (demoq3 pak0 checksum compare), 3580-3590 (counted as baseq3/pak0.pk3)",
            "system": "quake3"
          },
          {
            "category": "game_data",
            "name": "pak0.pk3",
            "note": "Team Arena pak. Read with `+set fs_game missionpack`.",
            "path": "missionpack/pak0.pk3",
            "required": false,
            "source_ref": "code/qcommon/files.c:193 (missionpak_checksums[0]=2430342401u), 3622-3640 (fatal when a Team Arena pak is absent)",
            "system": "teamarena",
            "unsourceable": "retail data the collection does not hold, and a same-named file of another game must not stand in"
          },
          {
            "category": "game_data",
            "name": "pak1.pk3",
            "path": "missionpack/pak1.pk3",
            "required": false,
            "source_ref": "code/qcommon/files.c:194 (missionpak_checksums[1]=511014160u), 3622-3640 (fatal when a Team Arena pak is absent)",
            "system": "teamarena"
          },
          {
            "category": "game_data",
            "name": "pak2.pk3",
            "path": "missionpack/pak2.pk3",
            "required": false,
            "source_ref": "code/qcommon/files.c:195 (missionpak_checksums[2]=2662638993u), 3622-3640 (fatal when a Team Arena pak is absent)",
            "system": "teamarena"
          },
          {
            "category": "game_data",
            "name": "pak3.pk3",
            "path": "missionpack/pak3.pk3",
            "required": false,
            "source_ref": "code/qcommon/files.c:196 (missionpak_checksums[3]=1438664554u), 3622-3640 (fatal when a Team Arena pak is absent)",
            "system": "teamarena"
          }
        ],
        "notes": "ioquake3 fork with a Vulkan renderer. PRODUCT_VERSION \"1.36\",\nBASEGAME = \"baseq3\", BASETA = \"missionpack\" (code/qcommon/q_shared.h:45,\n68, 71). NUM_ID_PAKS 9, NUM_TA_PAKS 4 (code/qcommon/qcommon.h:597-598).\n\nfs_basepath defaults to Sys_DefaultInstallPath, the directory of the\nbinary (code/qcommon/files.c:3323, code/sys/sys_main.c:88-94, 738).\nFS_Startup mounts baseq3 under fs_basepath and fs_homepath, then fs_game\nwhen set (code/qcommon/files.c:3362-3377, 3396-3409). FS_AddGameDirectory\nmounts every .pk3 of each directory (code/qcommon/files.c:2933).\n\nFS_CheckPak0 compares the pak checksum of baseq3/pak0.pk3 through\npak8.pk3 and missionpack/pak0.pk3 through pak3.pk3 to pak_checksums[] and\nmissionpak_checksums[] (code/qcommon/files.c:179-197, 3486, 3516). The\nvalue is a block checksum over the CRC32 of every member\n(code/qcommon/files.c:2111), not a file hash. A mismatch prints a warning and the pak stays\nmounted. A missing baseq3 pak is fatal unless the engine runs standalone,\nwhich needs com_basegame other than baseq3 (code/qcommon/files.c:3570-3572,\n3596-3619). Once any Team Arena pak is found the four are required\n(code/qcommon/files.c:3622-3640). demoq3/pak0.pk3 with\nDEMO_PAK0_CHECKSUM counts as baseq3/pak0.pk3 (code/qcommon/files.c:178,\n3475-3479, 3580-3590).\n\nBatocera 43.1 installs the binary as /usr/bin/ioquake3/ioquake3 and runs\nit through the ioquake3 generator, which copies /usr/bin/ioquake3 into\n/userdata/roms/quake3 and starts /userdata/roms/quake3/ioquake3 with the\narguments written in the ROM file (configgen\ngenerators/ioquake3/ioquake3Generator.py). fs_basepath is therefore\n/userdata/roms/quake3. Patch 001-config-dir.patch sets\nHOMEPATH_NAME_UNIX to \"/configs/ioquake3\", appended to $HOME\n(code/sys/sys_unix.c:65, 79).\n",
        "profiled_date": "2026-10-17",
        "source": "https://github.com/suijingfeng/vkQuake3",
        "source_commit": "5300b32803c1c61bc3b6bdf86a084c1db1a217ad",
        "systems": [
          "quake3",
          "teamarena"
        ],
        "type": "standalone",
        "upstream": "https://github.com/ioquake/ioq3"
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
