# emulators

id: dsmile
name: D.Smile
type: standalone
classification: other
source: https://github.com/derik-dot-digital/D.Smile
upstream: https://github.com/derik-dot-digital/D.Smile
source_commit: d4bbc3be27537def21513991647f14ea9a9c2d15
profile_json:
{"core_classification": "other", "core_version": "0.4.4", "cores": ["dsmile"], "display_name": "VTech - V.Smile (D.Smile)", "emulator": "D.Smile", "exclusion_note": "The system ROM is the only file to obtain. The cartridge dump arrives as the intent payload and everything else the app touches it writes itself: the save states and their PNG thumbnails under states in the external files directory, and the dsmile preferences, which also hold the touch layouts as a JSON string rather than as files. The Art Studio NVRAM the SPG200 maps over bank 2 is dead here, the sole SetCart call passing a null pointer for it, so no such image exists to name. Oboe and libc++_shared are linked into the package by CMake at build time and are never opened as files. The native sources perform no file I/O at all. ref: EmuActivity.kt:123-145, EmuActivity.kt:246-296, EmuActivity.kt:528-555,\n     vsmile.cpp:294, spg200.cpp:204,214, CMakeLists.txt:11,26\n", "files": [{"description": "V.Smile system ROM, revision 1.03", "hle_fallback": true, "name": "vsmile_v103.bin", "required": false, "size": 2097152, "source_ref": "app/src/main/java/com/dsmile/emulator/ui/MainActivity.kt:238-261 (size and vector test), app/src/main/java/com/dsmile/emulator/ui/MainActivity.kt:277-288 (folder detection), app/src/main/java/com/dsmile/emulator/ui/EmuActivity.kt:156-168 (selection), app/src/main/cpp/jni_bridge.cpp:34-40, app/src/main/cpp/core/vsmile.cpp:326-334 (load)", "system": "vtech-vsmile", "validation": ["size"]}, {"description": "V.Smile system ROM, revision 1.02", "hle_fallback": true, "name": "vsmile_v102.bin", "required": false, "size": 2097152, "source_ref": "app/src/main/java/com/dsmile/emulator/ui/MainActivity.kt:238-261 (size and vector test), app/src/main/java/com/dsmile/emulator/ui/MainActivity.kt:277-288 (folder detection), app/src/main/java/com/dsmile/emulator/ui/EmuActivity.kt:156-168 (selection), app/src/main/cpp/jni_bridge.cpp:34-40, app/src/main/cpp/core/vsmile.cpp:326-334 (load)", "system": "vtech-vsmile", "validation": ["size"]}, {"description": "V.Smile system ROM, revision 1.00", "hle_fallback": true, "name": "vsmile_v100.bin", "required": false, "size": 2097152, "source_ref": "app/src/main/java/com/dsmile/emulator/ui/MainActivity.kt:238-261 (size and vector test), app/src/main/java/com/dsmile/emulator/ui/MainActivity.kt:277-288 (folder detection), app/src/main/java/com/dsmile/emulator/ui/EmuActivity.kt:156-168 (selection), app/src/main/cpp/jni_bridge.cpp:34-40, app/src/main/cpp/core/vsmile.cpp:326-334 (load)", "system": "vtech-vsmile", "validation": ["size"]}], "mode": "standalone", "notes": "V.Smile emulator for Android, package com.dsmile.emulator, built on an SPG200\n(unSP) core of its own. Frontends launch the exported EmuActivity either with\nACTION_VIEW and a content or file Uri, or with the LAUNCH_GAME action and a\nrom, ROM, path or uri string extra carrying a path; ES-DE uses the first form.\nref: AndroidManifest.xml:34-51, EmuActivity.kt:123-145,\n     docs/iisu-integration.md:42-51\n\nThe machine never boots from the system ROM. UnSP::Reset takes the program\ncounter from 0xFFF7, and the FIQ, IRQ n and BREAK vectors are read from\n0xFFF6, 0xFFF8+n and 0xFFF5; all four sit in bank 0, which ExtRead answers\nfrom the cartridge under every decode mode. The system ROM sits on bank 3 and\nis reachable only once cartridge code selects decode mode 2 or 3;\nextmem_ctrl_ resets to 0x0028, which is decode 0, so nothing but the\ncartridge is mapped at power on.\nref: unsp.cpp:49,67,77,253, spg200.cpp:188-209, spg200.cpp:37\n\nAbsent a file the constructor synthesises the region: 0x100000 words zero\nfilled, with 0x0031 written into the odd word of each pair across\n0xFFFC0-0xFFFDB so that calls into the BIOS land on zeroed memory. LoadSysrom\nreplaces it, reading the image as little-endian 16-bit words and clamping at\n0x100000 words, and runs only when bytes were passed.\nref: vsmile.cpp:273-283, vsmile.cpp:326-334, jni_bridge.cpp:34-40\n\nTwo paths reach LoadSysrom and one of them checks nothing. The BIOS button\nimports through a file picker: validateBios demands exactly 0x200000 bytes and\nnine of the eleven words at 0xFFF5-0xFFFF decoding inside 0x0100-0xFFF0, tries\nboth byte orders, rewrites the image to little-endian when the swapped reading\nscores higher, and stores the result as sysrom.bin in the app's private\ndirectory. With no imported file the ROM folder is searched instead: any entry\nwhose extension is bin, rom or vsmile and whose lowercased name holds bios,\nsysrom or system rom, or begins with vsmile_v, is taken as the system ROM and\nhanded over unmeasured, the last match in directory order winning. No hash is\ncomputed on either path. The three dumped revisions satisfy both tests as they\nstand, scoring eleven of eleven in both byte orders, so they load unswapped.\nref: MainActivity.kt:31, MainActivity.kt:34, MainActivity.kt:215-236,\n     MainActivity.kt:238-261, MainActivity.kt:277-288, EmuActivity.kt:156-168\n\nRegion is a jumper, never a file. Port C carries the region code in its low\nnibble and the intro jumper in bit 4. The code is fixed at 0xF and SetRegion\nhas no caller, so one image serves every session; the jumper is exposed only\nas the Game intros setting, passed through nativeInit.\nref: vsmile.cpp:365-369, vsmile.h:76, vsmile.h:77, vsmile.h:116,\n     jni_bridge.cpp:39, MainActivity.kt:309,320\n\nThe system ROM has no directory of its own. The validated copy is written by\nthe app into private storage, which the user cannot reach, so the one\nplacement open to a collection is the folder chosen with ROM folder, beside\nthe cartridge dumps.\nref: MainActivity.kt:34, MainActivity.kt:154-168, MainActivity.kt:263-288\n", "profiled_date": "2026-08-11", "source": "https://github.com/derik-dot-digital/D.Smile", "source_commit": "d4bbc3be27537def21513991647f14ea9a9c2d15", "systems": ["vtech-vsmile"], "type": "standalone", "upstream": "https://github.com/derik-dot-digital/D.Smile"}


id: duckstation
name: DuckStation
type: standalone + libretro
classification: official_port
source: https://github.com/stenzek/duckstation
upstream: https://github.com/stenzek/duckstation
source_commit: 6f704d405b2374a35944d85e330452e4c3cbc08b
profile_json:
{"bios_size": 524288, "core_classification": "official_port", "core_version": "v0.1", "cores": ["duckstation"], "display_name": "Sony - PlayStation (DuckStation)", "emulator": "DuckStation", "files": [{"description": "SCPH-1000, DTL-H1000 (v1.0)", "fast_boot": "Type1", "md5": "239665b1a3dade1b5a52c06338011044", "name": "scph1000.bin", "priority": 50, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:35"}, {"description": "SCPH-1001, 5003, DTL-H1201, H3001 (v2.2 12-04-95 A)", "fast_boot": "Type1", "md5": "924e392ed05558ffdb115408c263dccf", "name": "scph1001.bin", "priority": 10, "region": ["north-america"], "region_check": false, "required": false, "source_ref": "src/core/bios.cpp:36"}, {"description": "SCPH-1002, DTL-H1002 (v2.0 05-10-95 E)", "fast_boot": "Type1", "md5": "54847e693405ffeb0359c6287434cbef", "name": "scph1002a.bin", "priority": 10, "region": ["europe"], "region_check": false, "required": false, "source_ref": "src/core/bios.cpp:37"}, {"description": "SCPH-1002, DTL-H1102 (v2.1 07-17-95 E)", "fast_boot": "Type1", "md5": "417b34706319da7cf001e76e40136c23", "name": "scph1002b.bin", "priority": 10, "region": ["europe"], "region_check": false, "required": false, "source_ref": "src/core/bios.cpp:38"}, {"description": "SCPH-1002, DTL-H1202, H3002 (v2.2 12-04-95 E)", "fast_boot": "Type1", "md5": "e2110b8a2b97a8e0b857a45d32f7e187", "name": "scph1002c.bin", "priority": 10, "region": ["europe"], "region_check": false, "required": false, "source_ref": "src/core/bios.cpp:39"}, {"description": "DTL-H1100 (v2.2 03-06-96 D)", "fast_boot": "Type1", "md5": "ca5cfc321f916756e3f0effbfaeba13b", "name": "dtlh1100.bin", "priority": 20, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:40"}, {"description": "SCPH-3000, DTL-H1000H (v1.1 01-22-95)", "fast_boot": "Type1", "md5": "849515939161e62f6b866f6853006780", "name": "scph3000.bin", "priority": 10, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:41"}, {"description": "SCPH-1001, DTL-H1001 (v2.0 05-07-95 A)", "fast_boot": "Type1", "md5": "dc2b9bf8da62ec93e868cfd29f0d067d", "name": "scph1001_v20.bin", "priority": 10, "region": ["north-america"], "region_check": false, "required": false, "source_ref": "src/core/bios.cpp:42"}, {"description": "SCPH-3500 (v2.1 07-17-95 J)", "fast_boot": "Type1", "md5": "cba733ceeff5aef5c32254f1d617fa62", "name": "scph3500.bin", "priority": 10, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:43"}, {"description": "SCPH-1001, DTL-H1101 (v2.1 07-17-95 A)", "fast_boot": "Type1", "md5": "da27e8b6dab242d8f91a9b25d80c63b8", "name": "scph1001_v21.bin", "priority": 10, "region": ["north-america"], "region_check": false, "required": false, "source_ref": "src/core/bios.cpp:44"}, {"description": "SCPH-5000, DTL-H1200, H3000 (v2.2 12-04-95 J)", "fast_boot": "Type1", "md5": "57a06303dfa9cf9351222dfcbb4a29d9", "name": "scph5000.bin", "priority": 5, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:45"}, {"description": "SCPH-5500 (v3.0 09-09-96 J)", "fast_boot": "Type1", "md5": "8dd7d5296a650fac7319bce665a6a53c", "name": "scph5500.bin", "priority": 5, "region": ["japan"], "region_check": true, "required": true, "source_ref": "src/core/bios.cpp:46"}, {"description": "SCPH-5501, 5503, 7003 (v3.0 11-18-96 A)", "fast_boot": "Type1", "md5": "490f666e1afb15b7362b406ed1cea246", "name": "scph5501.bin", "priority": 5, "region": ["north-america"], "region_check": false, "required": true, "source_ref": "src/core/bios.cpp:47"}, {"description": "SCPH-5502, 5552 (v3.0 01-06-97 E)", "fast_boot": "Type1", "md5": "32736f17079d0b2b7024407c39bd3050", "name": "scph5502.bin", "priority": 5, "region": ["europe"], "region_check": false, "required": true, "source_ref": "src/core/bios.cpp:48"}, {"description": "SCPH-7000, 7500, 9000 (v4.0 08-18-97 J)", "fast_boot": "Type1", "md5": "8e4c14f567745eff2f0408c8129f72a6", "name": "scph7000.bin", "priority": 10, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:49"}, {"description": "SCPH-7000W (v4.1 11-14-97 A)", "fast_boot": "Type1", "md5": "b84be139db3ee6cbd075630aa20a6553", "name": "scph7000w.bin", "priority": 10, "region": ["japan"], "region_check": false, "required": false, "source_ref": "src/core/bios.cpp:50"}, {"description": "SCPH-7001, 7501, 7503, 9001, 9003, 9903 (v4.1 12-16-97 A)", "fast_boot": "Type1", "md5": "1e68c231d0896b7eadcad1d7d8e76129", "name": "scph7001.bin", "priority": 10, "region": ["north-america"], "region_check": false, "required": false, "source_ref": "src/core/bios.cpp:51"}, {"description": "SCPH-7002, 7502, 9002 (v4.1 12-16-97 E)", "fast_boot": "Type1", "md5": "b9d9a0286c33dc6b7237bb13cd46fdee", "name": "scph7002.bin", "priority": 10, "region": ["europe"], "region_check": false, "required": false, "source_ref": "src/core/bios.cpp:52"}, {"description": "SCPH-100 (v4.3 03-11-00 J)", "fast_boot": "Type1", "md5": "8abc1b549a4a80954addc48ef02c4521", "name": "scph100.bin", "priority": 10, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:53"}, {"description": "SCPH-101 (v4.4 03-24-00 A)", "fast_boot": "Type1", "md5": "9a09ab7e49b422c007e6d54d7c49b965", "name": "scph101_v44.bin", "priority": 10, "region": ["north-america"], "region_check": false, "required": false, "source_ref": "src/core/bios.cpp:54"}, {"description": "SCPH-101 (v4.5 05-25-00 A)", "fast_boot": "Type1", "md5": "6e3735ff4c7dc899ee98981385f6f3d0", "name": "scph101_v45.bin", "priority": 10, "region": ["north-america"], "region_check": false, "required": false, "source_ref": "src/core/bios.cpp:55"}, {"description": "SCPH-102 (v4.4 03-24-00 E)", "fast_boot": "Type1", "md5": "b10f5e0e3d9eb60e5159690680b1e774", "name": "scph102_v44.bin", "priority": 20, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:56"}, {"description": "SCPH-102 (v4.5 05-25-00 E)", "fast_boot": "Type1", "md5": "de93caec13d1a141a40a79f5c86168d6", "name": "scph102_v45.bin", "priority": 20, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:57"}, {"description": "SCPH-1000R (v4.5 05-25-00 J)", "fast_boot": "Type1", "md5": "476d68a94ccec3b9c8303bbd1daf2810", "name": "scph1000r.bin", "priority": 10, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:58"}, {"description": "PS2, SCPH-18000 (v5.0 10-27-00 J)", "fast_boot": "Type2", "md5": "d8f485717a5237285e4d7c5f881b7f32", "name": "ps2_scph18000.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:59"}, {"description": "PS2, SCPH-30003 (v5.0 09-02-00 E)", "fast_boot": "Type2", "md5": "71f50ef4f4e17c163c78908e16244f7d", "name": "ps2_scph30003.bin", "priority": 150, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:60"}, {"description": "PS2, DTL-H10000 (v5.0 01/17/00 T)", "fast_boot": "Type2", "md5": "32f2e4d5ff5ee11072a6bc45530f5765", "name": "ps2_dtlh10000_0117.bin", "priority": 100, "region": ["world"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:61"}, {"description": "PS2, SCPH-10000 (v5.0 01/17/00 T)", "fast_boot": "Type2", "md5": "acf4730ceb38ac9d8c7d8e21f2614600", "name": "ps2_scph10000_0117.bin", "priority": 100, "region": ["world"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:62"}, {"description": "PS2, DTL-H10000 (v5.0 02/17/00 T)", "fast_boot": "Type2", "md5": "acf9968c8f596d2b15f42272082513d1", "name": "ps2_dtlh10000_0217.bin", "priority": 100, "region": ["world"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:63"}, {"description": "PS2, SCPH-10000/SCPH-15000 (v5.0 02/17/00 T)", "fast_boot": "Type2", "md5": "b1459d7446c69e3e97e6ace3ae23dd1c", "name": "ps2_scph10000_15000.bin", "priority": 100, "region": ["world"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:64"}, {"description": "PS2, DTL-H10000 (v5.0 02/24/00 T)", "fast_boot": "Type2", "md5": "d3f1853a16c2ec18f3cd1ae655213308", "name": "ps2_dtlh10000_0224.bin", "priority": 100, "region": ["world"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:65"}, {"description": "PS2, DTL-H30001 (v5.0 07/27/00 A)", "fast_boot": "Type2", "md5": "63e6fd9b3c72e0d7b920e80cf76645cd", "name": "ps2_dtlh30001.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:66"}, {"description": "PS2, SCPH-30001 (v5.0 07/27/00 A)", "fast_boot": "Type2", "md5": "a20c97c02210f16678ca3010127caf36", "name": "ps2_scph30001_0727.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:67"}, {"description": "PS2, SCPH-30001 (v5.0 09/02/00 A)", "fast_boot": "Type2", "md5": "8db2fbbac7413bf3e7154c1e0715e565", "name": "ps2_scph30001_0902.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:68"}, {"description": "PS2, DTL-H30002 (v5.0 09/02/00 E)", "fast_boot": "Type2", "md5": "91c87cb2f2eb6ce529a2360f80ce2457", "name": "ps2_dtlh30002.bin", "priority": 150, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:69"}, {"description": "PS2, DTL-H30102 (v5.0 09/02/00 E)", "fast_boot": "Type2", "md5": "3016b3dd42148a67e2c048595ca4d7ce", "name": "ps2_dtlh30102_0902.bin", "priority": 150, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:70"}, {"description": "PS2, SCPH-30002/SCPH-30003/SCPH-30004 (v5.0 09/02/00 E)", "fast_boot": "Type2", "md5": "b7fa11e87d51752a98b38e3e691cbf17", "name": "ps2_scph30002_0902.bin", "priority": 100, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:71"}, {"description": "PS2, SCPH-18000 (GH-003) (v5.0 10/27/00 J)", "fast_boot": "Type2", "md5": "f63bc530bd7ad7c026fcd6f7bd0d9525", "name": "ps2_scph18000_gh003.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:72"}, {"description": "PS2, SCPH-18000 (GH-008) (v5.0 10/27/00 J)", "fast_boot": "Type2", "md5": "cee06bd68c333fc5768244eae77e4495", "name": "ps2_scph18000_gh008.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:73"}, {"description": "PS2, DTL-H30101 (v5.0 12/28/00 A)", "fast_boot": "Type2", "md5": "0bf988e9c7aaa4c051805b0fa6eb3387", "name": "ps2_dtlh30101.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:74"}, {"description": "PS2, SCPH-30001/SCPH-35001 (v5.0 12/28/00 A)", "fast_boot": "Type2", "md5": "8accc3c49ac45f5ae2c5db0adc854633", "name": "ps2_scph30001_35001.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:75"}, {"description": "PS2, DTL-H30102 (v5.0 12/28/00 E)", "fast_boot": "Type2", "md5": "6f9a6feb749f0533aaae2cc45090b0ed", "name": "ps2_dtlh30102_1228.bin", "priority": 150, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:76"}, {"description": "PS2, SCPH-30002/SCPH-30003/SCPH-30004/SCHP-35002/SCPH-35003/SCPH-35004 (v5.0 12/28/00 E)", "fast_boot": "Type2", "md5": "838544f12de9b0abc90811279ee223c8", "name": "ps2_scph30002_1228.bin", "priority": 100, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:77"}, {"description": "PS2, DTL-H30000 (v5.0 01/18/01 J)", "fast_boot": "Type2", "md5": "bb6bbc850458fff08af30e969ffd0175", "name": "ps2_dtlh30000.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:78"}, {"description": "PS2, SCPH-30000/SCPH-35000 (v5.0 01/18/01 J)", "fast_boot": "Type2", "md5": "815ac991d8bc3b364696bead3457de7d", "name": "ps2_scph30000_35000.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:79"}, {"description": "PS2, SCPH-30001R (v5.0 04/27/01 A)", "fast_boot": "Type2", "md5": "b107b5710042abe887c0f6175f6e94bb", "name": "ps2_scph30001r_0427.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:80"}, {"description": "PS2, SCPH-30000 (v5.0 04/27/01 J)", "fast_boot": "Type2", "md5": "ab55cceea548303c22c72570cfd4dd71", "name": "ps2_scph30000_0427.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:81"}, {"description": "PS2, SCPH-30001R (v5.0 07/04/01 A)", "fast_boot": "Type2", "md5": "18bcaadb9ff74ed3add26cdf709fff2e", "name": "ps2_scph30001r_0704.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:82"}, {"description": "PS2, SCPH-30002R/SCPH-30003R/SCPH-30004R (v5.0 07/04/01 E)", "fast_boot": "Type2", "md5": "491209dd815ceee9de02dbbc408c06d6", "name": "ps2_scph30002r_0704.bin", "priority": 100, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:83"}, {"description": "PS2, SCPH-30001R (v5.0 10/04/01 A)", "fast_boot": "Type2", "md5": "7200a03d51cacc4c14fcdfdbc4898431", "name": "ps2_scph30001r_1004.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:84"}, {"description": "PS2, SCPH-30002R/SCPH-30003R/SCPH-30004R (v5.0 10/04/01 E)", "fast_boot": "Type2", "md5": "8359638e857c8bc18c3c18ac17d9cc3c", "name": "ps2_scph30002r_1004.bin", "priority": 100, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:85"}, {"description": "PS2, SCPH-30005R/SCPH-30006R/SCPH-30007R (v5.0 07/30/01 J)", "fast_boot": "Type2", "md5": "352d2ff9b3f68be7e6fa7e6dd8389346", "name": "ps2_scph30005r.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:86"}, {"description": "PS2, SCPH-39001 (v5.0 02/07/02 A)", "fast_boot": "Type2", "md5": "d5ce2c7d119f563ce04bc04dbc3a323e", "name": "ps2_scph39001.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:87"}, {"description": "PS2, SCPH-39002/SCPH-39003/SCPH-39004 (v5.0 03/19/02 E)", "fast_boot": "Type2", "md5": "0d2228e6fd4fb639c9c39d077a9ec10c", "name": "ps2_scph39002.bin", "priority": 100, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:88"}, {"description": "PS2, SCPH-37000/SCPH-39000 (v5.0 04/26/02 J)", "fast_boot": "Type2", "md5": "72da56fccb8fcd77bba16d1b6f479914", "name": "ps2_scph37000_39000.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:89"}, {"description": "PS2, SCPH-39008 (v5.0 04/26/02 E)", "fast_boot": "Type2", "md5": "5b1f47fbeb277c6be2fccdd6344ff2fd", "name": "ps2_scph39008.bin", "priority": 150, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:90"}, {"description": "PS2, SCPH-39005/SCPH-39006/SCPH-39007 (v5.0 04/26/02 J)", "fast_boot": "Type2", "md5": "315a4003535dfda689752cb25f24785c", "name": "ps2_scph39005.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:91"}, {"description": "PS2, DTL-H50000 (v5.0 02/06/03 J)", "fast_boot": "Type2", "md5": "54ecde087258557e2ddb5c3ddb004028", "name": "ps2_dtlh50000.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:92"}, {"description": "PS2, SCPH-50000/SCPH-55000 (v5.0 02/06/03 J)", "fast_boot": "Type2", "md5": "312ad4816c232a9606e56f946bc0678a", "name": "ps2_scph50000_55000.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:93"}, {"description": "PS2, DTL-H50002 (v5.0 02/27/03 E)", "fast_boot": "Type2", "md5": "666018ffec65c5c7e04796081295c6c7", "name": "ps2_dtlh50002.bin", "priority": 150, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:94"}, {"description": "PS2, SCPH-50002/SCPH-50003/SCPH-50004 (v5.0 02/27/03 E)", "fast_boot": "Type2", "md5": "6e69920fa6eef8522a1d688a11e41bc6", "name": "ps2_scph50002_0227.bin", "priority": 100, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:95"}, {"description": "PS2, DTL-H50001 (v5.0 03/25/03 A)", "fast_boot": "Type2", "md5": "eb960de68f0c0f7f9fa083e9f79d0360", "name": "ps2_dtlh50001_0325.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:96"}, {"description": "PS2, SCPH-50001 (v5.0 03/25/03 A)", "fast_boot": "Type2", "md5": "8aa12ce243210128c5074552d3b86251", "name": "ps2_scph50001_0325.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:97"}, {"description": "PS2, DTL-H50009 (v5.0 02/24/03 J)", "fast_boot": "Type2", "md5": "240d4c5ddd4b54069bdc4a3cd2faf99d", "name": "ps2_dtlh50009.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:98"}, {"description": "PS2, DESR-5000/DESR-5100/DESR-7000/DESR-7100 (v5.0 10/28/03 J)", "fast_boot": "Type2", "md5": "1c6cd089e6c83da618fbf2a081eb4888", "name": "ps2_desr5000.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:99"}, {"description": "PS2, SCPH-55000 (v5.0 06/23/03 J)", "fast_boot": "Type2", "md5": "463d87789c555a4a7604e97d7db545d1", "name": "ps2_scph55000_0623.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:100"}, {"description": "PS2, DTL-H50001 (v5.0 06/23/03 A)", "fast_boot": "Type2", "md5": "ab9d49ad40ae49f19856ad187777b1b3", "name": "ps2_dtlh50001_0623.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:101"}, {"description": "PS2, SCPH-50001/SCPH-50010 (v5.0 06/23/03 A)", "fast_boot": "Type2", "md5": "35461cecaa51712b300b2d6798825048", "name": "ps2_scph50001_0623.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:102"}, {"description": "PS2, SCPH-50002/SCPH-50003/SCPH-50004 (v5.0 06/23/03 E)", "fast_boot": "Type2", "md5": "bd6415094e1ce9e05daabe85de807666", "name": "ps2_scph50002_0623.bin", "priority": 100, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:103"}, {"description": "PS2, SCPH-50006/SCPH-50007 (v5.0 06/23/03 J)", "fast_boot": "Type2", "md5": "2e70ad008d4ec8549aada8002fdf42fb", "name": "ps2_scph50006.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:104"}, {"description": "PS2, SCPH-50005 (v5.0 06/23/03 J)", "fast_boot": "Type2", "md5": "50d5b97b57d8c9b6534adcb46c2027d4", "name": "ps2_scph50005.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:105"}, {"description": "PS2, SCPH-50008 (v5.0 06/23/03 E)", "fast_boot": "Type2", "md5": "b53d51edc7fc086685e31b811dc32aad", "name": "ps2_scph50008.bin", "priority": 150, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:106"}, {"description": "PS2, SCPH-50009 (v5.0 06/23/03 J)", "fast_boot": "Type2", "md5": "1b6e631b536247756287b916f9396872", "name": "ps2_scph50009.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:107"}, {"description": "PS2, SCPH-50000 (v5.0 08/22/03 J)", "fast_boot": "Type2", "md5": "00da1b177096cfd2532c8fa22b43e667", "name": "ps2_scph50000_0822.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:108"}, {"description": "PS2, SCPH-50004 (v5.0 08/22/03 E)", "fast_boot": "Type2", "md5": "afde410bd026c16be605a1ae4bd651fd", "name": "ps2_scph50004_0822.bin", "priority": 150, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:109"}, {"description": "PS2, SCPH-50011 (v5.0 03/29/04 A)", "fast_boot": "Type2", "md5": "81f4336c1de607dd0865011c0447052e", "name": "ps2_scph50011.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:110"}, {"description": "PS2, SCPH-70000 (v5.0 06/14/04 J)", "fast_boot": "Type2", "md5": "0eee5d1c779aa50e94edd168b4ebf42e", "name": "ps2_scph70000.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:111"}, {"description": "PS2, SCPH-70001/SCPH-70011/SCPH-70012 (v5.0 06/14/04 A)", "fast_boot": "Type2", "md5": "d333558cc14561c1fdc334c75d5f37b7", "name": "ps2_scph70001.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:112"}, {"description": "PS2, SCPH-70002/SCPH-70003/SCPH-70004/SCPH-70008 (v5.0 06/14/04 E)", "fast_boot": "Type2", "md5": "dc752f160044f2ed5fc1f4964db2a095", "name": "ps2_scph70002.bin", "priority": 100, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:113"}, {"description": "PS2, SCPH-70002 (v5.0 06/14/04 E)", "fast_boot": "Type2", "md5": "7ebb4fc5eab6f79a27d76ac9aad392b2", "name": "ps2_scph70002_alt.bin", "priority": 150, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:114"}, {"description": "PS2, DTL-H70002 (v5.0 06/14/04 E)", "fast_boot": "Type2", "md5": "63ead1d74893bf7f36880af81f68a82d", "name": "ps2_dtlh70002.bin", "priority": 150, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:115"}, {"description": "PS2, SCPH-70005/SCPH-70006/SCPH-70007 (v5.0 06/14/04 J)", "fast_boot": "Type2", "md5": "3e3e030c0f600442fa05b94f87a1e238", "name": "ps2_scph70005.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:116"}, {"description": "PS2, DESR-5500/DESR-5700/DESR-7500/DESR-7700 (v5.0 09/17/04 J)", "fast_boot": "Type2", "md5": "1ad977bb539fc9448a08ab276a836bbc", "name": "ps2_desr5500.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:117"}, {"description": "PS2, DTL-H75000 (v5.0 06/20/05 J)", "fast_boot": "Type2", "md5": "bf0078ba5e19d57eae18047407f3b6e5", "name": "ps2_dtlh75000.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:118"}, {"description": "PS2, SCPH-75000 (v5.0 06/20/05 J)", "fast_boot": "Type2", "md5": "eb4f40fcf4911ede39c1bbfe91e7a89a", "name": "ps2_scph75000.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:119"}, {"description": "PS2, DTL-H75000A (v5.0 06/20/05 A)", "fast_boot": "Type2", "md5": "9959ad7a8685cad66206e7752ca23f8b", "name": "ps2_dtlh75000a.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:120"}, {"description": "PS2, SCPH-75001/SCPH-75010 (v5.0 06/20/05 A)", "fast_boot": "Type2", "md5": "929a14baca1776b00869f983aa6e14d2", "name": "ps2_scph75001.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:121"}, {"description": "PS2, SCPH-75002/SCPH-75003/SCPH-75004/SCPH-75008 (v5.0 06/20/05 E)", "fast_boot": "Type2", "md5": "573f7d4a430c32b3cc0fd0c41e104bbd", "name": "ps2_scph75002.bin", "priority": 100, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:122"}, {"description": "PS2, SCPH-75006 (v5.0 06/20/05 J)", "fast_boot": "Type2", "md5": "df63a604e8bff5b0599bd1a6c2721bd0", "name": "ps2_scph75006.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:123"}, {"description": "PS2, SCPH-77000 (v5.0 02/10/06 J)", "fast_boot": "Type2", "md5": "5b1ba4bb914406fae75ab8e38901684d", "name": "ps2_scph77000.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:124"}, {"description": "PS2, SCPH-77001/SCPH-77010 (v5.0 02/10/06 A)", "fast_boot": "Type2", "md5": "cb801b7920a7d536ba07b6534d2433ca", "name": "ps2_scph77001.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:125"}, {"description": "PS2, SCPH-77002/SCPH-77003/SCPH-77004/SCPH-77008 (v5.0 02/10/06 E)", "fast_boot": "Type2", "md5": "af60e6d1a939019d55e5b330d24b1c25", "name": "ps2_scph77002.bin", "priority": 100, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:126"}, {"description": "PS2, SCPH-77006/SCPH-77007 (v5.0 02/10/06 J)", "fast_boot": "Type2", "md5": "549a66d0c698635ca9fa3ab012da7129", "name": "ps2_scph77006.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:127"}, {"description": "PS2, DTL-H90000 (v5.0 09/05/06 J)", "fast_boot": "Type2", "md5": "5e2014472c88f74f7547d8c2c60eca45", "name": "ps2_dtlh90000_j.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:128"}, {"description": "PS2, SCPH-79000/SCPH-90000 (v5.0 09/05/06 J)", "fast_boot": "Type2", "md5": "5de9d0d730ff1e7ad122806335332524", "name": "ps2_scph79000_90000.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:129"}, {"description": "PS2, DTL-H90000 (v5.0 09/05/06 A)", "fast_boot": "Type2", "md5": "21fe4cad111f7dc0f9af29477057f88d", "name": "ps2_dtlh90000_a.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:130"}, {"description": "PS2, SCPH-79001/SCPH-79010/SCPH-90001 (v5.0 09/05/06 A)", "fast_boot": "Type2", "md5": "40c11c063b3b9409aa5e4058e984e30c", "name": "ps2_scph79001_90001.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:131"}, {"description": "PS2, SCPH-79002/SCPH-79003/SCPH-79004/SCPH-79008/SCPH-90002/SCPH-90003/SCPH-90004 (v5.0 09/05/06 E)", "fast_boot": "Type2", "md5": "80bbb237a6af9c611df43b16b930b683", "name": "ps2_scph79002_90002.bin", "priority": 100, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:132"}, {"description": "PS2, SCPH-79006/SCPH-79007/SCPH-90006/SCPH-90007 (v5.0 09/05/06 J)", "fast_boot": "Type2", "md5": "c37bce95d32b2be480f87dd32704e664", "name": "ps2_scph79006_90006.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:133"}, {"description": "PS2, SCPH-90000 (v5.0 02/20/08 J)", "fast_boot": "Type2", "md5": "80ac46fa7e77b8ab4366e86948e54f83", "name": "ps2_scph90000_0220.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:134"}, {"description": "PS2, SCPH-90001/SCPH-90010 (v5.0 02/20/08 A)", "fast_boot": "Type2", "md5": "21038400dc633070a78ad53090c53017", "name": "ps2_scph90001_0220.bin", "priority": 100, "region": ["north-america"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:135"}, {"description": "PS2, SCPH-90002/SCPH-90003/SCPH-90004/SCPH-90008 (v5.0 02/20/08 E)", "fast_boot": "Type2", "md5": "dc69f0643a3030aaa4797501b483d6c4", "name": "ps2_scph90002_0220.bin", "priority": 100, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:136"}, {"description": "PS2, SCPH-90005/SCPH-90006/SCPH-90007 (v5.0 02/20/08 J)", "fast_boot": "Type2", "md5": "30d56e79d89fbddf10938fa67fe3f34e", "name": "ps2_scph90005_0220.bin", "priority": 100, "region": ["japan"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:137"}, {"description": "PS2, KDL-22PX300 (v5.0 04/15/10 E)", "fast_boot": "Type2", "md5": "93ea3bcee4252627919175ff1b16a1d9", "name": "ps2_kdl22px300.bin", "note": "Sony Bravia TV with embedded PS2", "priority": 150, "region": ["europe"], "region_check": true, "required": false, "source_ref": "src/core/bios.cpp:138"}, {"description": "OpenBIOS", "fast_boot": "unsupported", "md5": null, "name": "openbios.bin", "note": "Detected by 'OpenBIOS' signature at offset 0x78, not by MD5 hash", "priority": 200, "region": ["world"], "region_check": false, "required": false, "source_ref": "src/core/bios.cpp:144-146"}], "logo": "https://raw.githubusercontent.com/stenzek/duckstation/master/data/resources/images/duck.png", "notes": "DuckStation auto-detects BIOS by MD5 hash from a flat scan of the BIOS directory.\nref: src/core/bios.cpp:460-482 (FindBIOSImagesInDirectory — scans all files by size)\nref: src/core/bios.cpp:208 (MD5Digest::HashData identification)\n\nAccepts PS1 (512 KB), PS2 (4 MB), and PS3 (0x3E66F0) BIOS images.\nref: src/core/bios.h:24-26 (BIOS_SIZE, BIOS_SIZE_PS2, BIOS_SIZE_PS3)\nOnly the first 512 KB are mapped (bios.cpp:212).\n\n105 known BIOS entries: 24 PS1 + 80 PS2 (identified by MD5) + 1 OpenBIOS (by signature).\nref: src/core/bios.cpp:34-139 (s_image_info_by_hash)\nEach image has: region, region_check, fast_boot_patch type, priority score.\n\nImageInfo gained a version and an expected_filename field after the previous\nprofiling pass. Neither takes part in identification: expected_filename is read\nonly by the two settings screens, which fall back to the real filename when it\nis null.\nref: src/core/bios.h:41-43 (field declarations)\nref: src/duckstation-qt/biossettingswidget.cpp:150, src/core/fullscreenui_settings.cpp:3219\nLower priority = preferred. PS2 deprioritized (>= 100) for dynamic fast boot.\nLate PAL deprioritized (>= 150) due to additional regional checks.\nOpenBIOS detected by signature at offset 0x78, not by hash.\nref: src/core/bios.cpp:142-147\n\nStandalone: BIOS dir = EmuFolders::Bios (configurable, default bios/).\nref: src/core/bios.cpp:375,380\nLibretro: BIOS dir = RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY (flat).\nThe libretro core was removed by the author (license change to non-commercial).\nThe .info file and buildbot builds still exist from community forks.\n", "profiled_date": "2026-03-23", "source": "https://github.com/stenzek/duckstation", "source_commit": "6f704d405b2374a35944d85e330452e4c3cbc08b", "systems": ["sony-playstation"], "type": "standalone + libretro", "upstream": "https://github.com/stenzek/duckstation", "verification": "md5"}


id: easyrpg
name: EasyRPG Player
type: standalone + libretro
classification: game_engine
source: https://github.com/libretro/easyrpg-libretro
upstream: https://github.com/EasyRPG/Player
source_commit: 03dda252dae0a133181e1c61b77d68c8feb9412d
profile_json:
{"core_classification": "game_engine", "core_version": "0.8.1.0", "cores": ["easyrpg"], "display_name": "RPG Maker 2000/2003 (EasyRPG)", "emulator": "EasyRPG Player", "files": [{"category": "game_data", "hle_fallback": true, "name": "easyrpg.soundfont", "note": "General MIDI soundfont (SF2 format) for MIDI music playback. Many RPG Maker games use MIDI for background music. Without a soundfont, MIDI falls back to the built-in FmMidi synthesizer (lower quality). Any GM-compatible .sf2 works.\n", "path": "easyrpg.soundfont", "required": false, "source_ref": "src/decoder_fluidsynth.cpp:125"}, {"category": "game_data", "hle_fallback": true, "name": "wildmidi.cfg", "note": "WildMidi configuration file pointing to GUS patch sets for MIDI playback. Alternative to FluidSynth/SF2. Only used if WildMidi support is compiled in and FluidSynth is not available or disabled.\n", "path": "wildmidi.cfg", "required": false, "source_ref": "src/decoder_wildmidi.cpp:103-104"}, {"category": "game_data", "name": "RPG Maker 2000 RTP", "note": "Run-Time Package for RPG Maker 2000 games. Contains default tilesets, character sprites, battle animations, music, and sound effects. Only needed by games that reference RTP assets instead of bundling them. Multiple RTP variants exist (Japanese official, English official, Don Miguel English translation). EasyRPG auto-detects which variant a game expects.\n", "path": "rtp/2000/", "required": false, "source_ref": "src/filefinder_rtp.cpp:73-74", "type": "directory"}, {"category": "game_data", "name": "RPG Maker 2003 RTP", "note": "Run-Time Package for RPG Maker 2003 games. Same concept as the 2000 RTP but with additional battle system assets for the side-view ATB combat. Multiple variants exist (Japanese official, English official, RPG Advocate English, Vlad Russian, Korean, Traditional Chinese).\n", "path": "rtp/2003/", "required": false, "source_ref": "src/filefinder_rtp.cpp:73-74", "type": "directory"}], "notes": "No BIOS or firmware required. All files listed below are optional runtime\ndata that improve compatibility and audio quality.\n\nRTP (Run-Time Package) contains default assets (sprites, music, sound effects)\nshared by many RPG Maker games. Games that ship all their own assets do not\nneed it. The RPG Maker 2000 and 2003 RTPs are separate packages. EasyRPG\nalso supports translated/third-party RTP variants (Don Miguel, Kadokawa,\nEnterbrain, RPG Advocate, etc.) and auto-detects which one a game uses.\n\nFor MIDI music, a General MIDI soundfont in SF2 format is needed. Place it\nas easyrpg.soundfont in the system directory, or put any .sf2 file in\neasyrpg-player/Soundfont/ and select it from the core settings menu.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/easyrpg-libretro", "source_commit": "03dda252dae0a133181e1c61b77d68c8feb9412d", "systems": ["rpgmaker"], "type": "standalone + libretro", "upstream": "https://github.com/EasyRPG/Player"}


id: ecwolf
name: ECWolf
type: standalone + libretro
classification: game_engine
source: https://github.com/libretro/ecwolf
upstream: https://bitbucket.org/ecwolf/ecwolf
source_commit: f5a68634244c8719645626ef714387b268a5ae32
profile_json:
{"core_classification": "game_engine", "core_version": "1.3.99999", "cores": ["ecwolf"], "display_name": "Wolfenstein 3D (ECWolf)", "emulator": "ECWolf", "files": [{"description": "ECWolf engine data package", "md5": "c011b428819eea4a80b455c245a5a04d", "mode": "standalone", "name": "ecwolf.pk3", "note": "Built from wadsrc/static/ via zipdir. Contains IWADINFO (game detection rules), palettes (wolfpal, spearpal, blakepal, noahpal), map lump remappers (wl6map, sodmap, etc.), DECORATE actor definitions, MAPINFO, SNDINFO, SNDSEQ, textures, sprites, fonts, and localization strings. md5 from .info, not validated by code.\n", "required": true, "source_ref": "src/version.h:12 (MAIN_PK3), src/wl_iwad.cpp:664-672 (embedded open + fatal)"}], "notes": "Wolfenstein 3D source port by Braden Obrzut. Plays Wolf3D (wl6/wl1),\nSpear of Destiny (sod/sdm), Super 3D Noah's Ark (n3d), and community pk3 mods.\nBlake Stone and Rise of the Triad support flagged as Preview in upstream.\n\nRequires ecwolf.pk3 — engine data package built from wadsrc/static/.\nContains IWADINFO (game detection rules), palettes, sprites, map configs,\nDECORATE actor definitions, MAPINFO, SNDINFO, fonts, and localization strings.\nWithout this file: \"Could not open ecwolf.pk3!\" fatal error.\n\nLibretro no longer reads ecwolf.pk3 from disk: it is compiled into the core as\na byte array and opened through a MemoryReader, with a fatal error naming it\n\"embedded\" when that fails. The system directory is still passed to SelectGame,\nbut for the game data search, not for the engine package.\nref: src/libretro/ecwolf_pk3_data.c, src/wl_iwad.cpp:664-672,\nsrc/libretro/libretro.cpp:990-992\n\nStandalone: ecwolf.pk3 searched in progdir (binary directory).\nref: wl_main.cpp:1295 (progdir passed to SelectGame)\nAlso: INSTALL_PREFIX/share/ecwolf/ on Linux (wl_iwad.cpp:648)\n\nGame data files (vswap, gamemaps, vgagraph, audiot) loaded from content\ndirectory, not system directory. Auto-detects game variant by scanning\nlump contents against IWADINFO MustContain rules.\n\nLibretro fork based on ECWolf 1.3.99999-dev (forked 2020-02-23).\nUpstream head at 1.5.0pre with broader game support.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/ecwolf", "source_commit": "f5a68634244c8719645626ef714387b268a5ae32", "systems": ["wolfenstein3d"], "type": "standalone + libretro", "upstream": "https://bitbucket.org/ecwolf/ecwolf"}


id: eden
name: Eden
type: standalone
classification: community_fork
source: https://git.eden-emu.dev/eden-emu/eden
upstream: https://git.eden-emu.dev/eden-emu/eden
source_commit: c0ffc900cdf19b9373549c59a7e6b22c33615ea4
profile_json:
{"analysis_commit": "9347202 (depth=1)", "analysis_date": "2026-03-26", "core_classification": "community_fork", "core_version": "0.1.1", "cores": ["eden"], "display_name": "Eden (Nintendo Switch)", "emulator": "Eden", "files": [{"mode": "standalone", "name": "prod.keys", "note": "Production keys for NCA decryption (master, key area, header, titlekek)", "path": "switch/", "required": true, "source_ref": "src/core/crypto/key_manager.cpp:574-575, 853"}, {"mode": "standalone", "name": "dev.keys", "note": "Development-unit keys, read instead of prod.keys when use_dev_keys is set", "path": "switch/", "required": false, "source_ref": "src/core/crypto/key_manager.cpp:570-571, 852"}, {"mode": "standalone", "name": "title.keys", "note": "Per-title encryption keys (rights_id to titlekey mappings)", "path": "switch/", "required": false, "source_ref": "src/core/crypto/key_manager.cpp:577-578, 850"}, {"mode": "standalone", "name": "console.keys", "note": "Console-specific keys (BIS, SD seed)", "path": "switch/", "required": false, "source_ref": "src/core/crypto/key_manager.cpp:579-580"}, {"mode": "standalone", "name": "key_retail.bin", "note": "Amiibo decryption keys (two InternalKey structs, 0x50 bytes each)", "path": "switch/", "required": false, "size": 160, "source_ref": "src/core/hle/service/nfc/common/amiibo_crypto.cpp:281-302"}], "mode": "standalone", "notes": "Eden is a standalone Nintendo Switch emulator, community fork of yuzu by Camille LaVey.\nFirmware (system NCAs) must be installed through Eden's UI from a firmware ZIP or NCA folder.\nRequired for commercial games. Homebrew (.nro, .nso) can run without keys or firmware.\n", "profiled_date": "2026-03-26", "source": "https://git.eden-emu.dev/eden-emu/eden", "source_commit": "c0ffc900cdf19b9373549c59a7e6b22c33615ea4", "systems": ["nintendo-switch"], "type": "standalone", "upstream": "https://git.eden-emu.dev/eden-emu/eden"}


id: eden-nightly
name: Eden Nightly
type: alias
classification: alias
source: https://git.eden-emu.dev/eden-emu/eden
upstream: https://git.eden-emu.dev/eden-emu/eden
source_commit: 8648c27cbb4c17b176076b09ac245271829cbd9f
profile_json:
{"alias_of": "eden", "core_classification": "alias", "core_version": "Git", "cores": ["eden-nightly"], "display_name": "Eden Nightly (Nintendo Switch)", "emulator": "Eden Nightly", "files": [], "note": "Same tree as eden, built from master with the gradle property nightly=true\n(src/android/app/build.gradle.kts:41-42). The property sets applicationIdSuffix\n\".nightly\" (:139) and passes -DNIGHTLY_BUILD=ON -DENABLE_UPDATE_CHECKER=ON (:95-99).\n\nNIGHTLY_BUILD points the update feed at nightly.eden-emu.dev, repo eden-ci/nightly,\ninstead of stable.eden-emu.dev, repo eden-emu/eden\n(CMakeModules/GenerateSCMRev.cmake:43-52), splits the release tag on \".\" before the\nversion compare (src/common/net/net.cpp:27-35,\nsrc/frontend_common/update_checker.cpp:26-43), sets the g_is_nightly_build constant\n(src/common/scm_rev.cpp.in:28,45) and exposes NativeLibrary.isNightlyBuild\n(src/android/app/src/main/jni/native.cpp:1703-1711). No file loading path differs,\nso the keys are those of eden.\n\nNightly builds carry no release tag: getGitVersion() returns git describe\n(build.gradle.kts:368-383) and GenerateSCMRev.cmake:22-24 marks the result a dev build.\n\nThe android package ids are the three product flavors plus the suffix:\ndev.eden.eden_emulator.nightly (build.gradle.kts:67),\ncom.miHoYo.Yuanshen.nightly (:206), dev.legacy.eden_emulator.nightly (:224).\n", "profiled_date": "2026-08-11", "source": "https://git.eden-emu.dev/eden-emu/eden", "source_commit": "8648c27cbb4c17b176076b09ac245271829cbd9f", "systems": ["nintendo-switch"], "type": "alias", "upstream": "https://git.eden-emu.dev/eden-emu/eden"}


id: eka2l1
name: eka2l1
type: standalone
source: https://github.com/EKA2L1/EKA2L1
upstream: https://github.com/EKA2L1/EKA2L1
source_commit: 46ef1ebdcfbd7454c080d0f1efb5fb54cfa7f622
profile_json:
{"analysis_commit": "e67f84d (depth=1)", "analysis_date": "2026-03-26", "core_version": "continuous", "cores": ["eka2l1"], "display_name": "EKA2L1 (Symbian OS / N-Gage)", "emulator": "eka2l1", "files": [{"description": "Symbian OS phone ROM dump. One per device, placed in roms/{firmware_code}/ subdirectory.", "mode": "standalone", "name": "SYM.ROM", "required": true, "source_ref": "src/emu/system/src/epoc.cpp:1225,754-759, src/emu/system/include/system/consts.h:23-25"}], "mode": "standalone", "notes": "Pure standalone Symbian OS / N-Gage emulator. No libretro core.\nRequires phone ROM dumps (SYM.ROM) obtained from real Nokia devices.\nThe emulator supports 100+ Nokia phone models (NEM-4, RH-29, RM-409, etc.).\nNo hash or size validation on the ROM file; the loader parses the ROM structure.\nBatocera maps the ngage system to eka2l1 in configgen-defaults.yml.\nNo dedicated Batocera configgen generator exists.\n", "profiled_date": "2026-03-26", "source": "https://github.com/EKA2L1/EKA2L1", "source_commit": "46ef1ebdcfbd7454c080d0f1efb5fb54cfa7f622", "systems": ["ngage"], "type": "standalone", "upstream": "https://github.com/EKA2L1/EKA2L1"}


id: emucorev
name: EmuCoreV
type: standalone
classification: community_fork
source: https://github.com/sashkinbro/EmuCoreV
upstream: https://github.com/Vita3K/Vita3K
source_commit: b71d8cf5397b1c6394e92eeb48427cd17e542971
profile_json:
{"author": "Oleksandr (sashkinbro)", "core_classification": "community_fork", "core_version": "0.1.8", "cores": ["emucorev"], "display_name": "Sony - PlayStation Vita (EmuCoreV)", "emulator": "EmuCoreV", "exclusion_note": "Left out are the files EmuCoreV writes and reads back, which are emulator state rather than system files: config.yml and the per-title custom configs, the shader and texture caches under cache, savedata and users under ux0, the TROPUSR.DAT trophy progress, play_time.json, the settings backup JSON and the driver_name.txt the driver installer writes. Left out with them are the static assets of Vita3K, which on Android are read from inside the package and never exist on the filesystem: the built-in shaders, the ImGui fonts and images, and the language files. ref: app/src/main/cpp/vita3k/vita3k/app/src/app_init.cpp:244-256,\n     app/src/main/java/com/sbro/emucorev/core/EmulatorStorage.kt:122-148,\n     app/src/main/java/com/sbro/emucorev/core/GpuDriverManager.kt:90,\n     app/src/main/cpp/vita3k/vita3k/np/src/trophy/collection.cpp:95\n", "files": [{"description": "PS Vita system software update package", "md5": "f2c7b12fe85496ec88a0391b514d6e3b", "name": "PSVUPDAT.PUP", "note": "Base firmware, pinned to 3.74 by a hardcoded URL whose rel_ segment is the MD5 of the package. Downloaded on demand to firmware-downloads under the external files directory, or picked from anywhere through the file picker, then consumed by install_pup, which extracts whichever of os0, vs0, pd0 and sa0 the package carries. This one is what fills vs0, and the app refuses to start a title while vs0 is empty.", "required": true, "source_ref": "app/src/main/java/com/sbro/emucorev/core/FirmwareSource.kt:17-23, app/src/main/java/com/sbro/emucorev/ui/onboarding/FirmwareDownloadViewModel.kt:96-105, app/src/main/java/com/sbro/emucorev/core/VitaInstallBridge.kt:25-36, app/src/main/cpp/emucorev/src/vita_install_bridge.cpp:97-101, app/src/main/cpp/vita3k/vita3k/packages/src/pup.cpp:292-299, app/src/main/java/com/sbro/emucorev/core/VitaLaunchBridge.kt:25-27", "storage": "large_file", "system": "sony-playstation-vita"}, {"description": "PS Vita firmware font package", "md5": "59dcf059d3328fb67be7e51f8aa33418", "name": "PSP2UPDAT.PUP", "note": "Second package of the same 3.74 release, pinned by a URL whose sd_ segment is its MD5, and the one that fills sa0 with the PVF system fonts. Installed through the same path as the base package. The app refuses to start a title while sa0 is empty, and asks for it even though the overlay carries a system font fallback of its own.", "required": true, "source_ref": "app/src/main/java/com/sbro/emucorev/core/FirmwareSource.kt:25-31, app/src/main/cpp/vita3k/vita3k/packages/src/pup.cpp:296-297, app/src/main/cpp/vita3k/vita3k/renderer/src/renderer.cpp:121-127, app/src/main/java/com/sbro/emucorev/core/VitaLaunchBridge.kt:28-30", "storage": "large_file", "system": "sony-playstation-vita"}, {"category": "game_data", "description": "per-title compatibility ratings", "name": "app_compat_db.xml", "note": "Downloaded as app_compat_db.xml.zip from the Vita3K compatibility releases, unpacked into the compatibility directory of internal storage and parsed for the badges the library and catalog screens draw. The native side looks for the same filename in the cache directory at bootstrap and logs a warning when it finds none.", "path": "compatibility/app_compat_db.xml", "required": false, "source_ref": "app/src/main/java/com/sbro/emucorev/data/VitaCompatibilityRepository.kt:18-20, app/src/main/java/com/sbro/emucorev/data/VitaCompatibilityRepository.kt:54-107, app/src/main/java/com/sbro/emucorev/data/VitaCompatibilityRepository.kt:346-350, app/src/main/cpp/vita3k/vita3k/android/jni/native_bootstrap.cpp:122, app/src/main/cpp/vita3k/vita3k/compat/src/compat.cpp:127-150", "system": "sony-playstation-vita"}, {"category": "game_data", "description": "commercial title index", "name": "commercial_list.json", "note": "Fetched from the Vita3K web API and merged over the XML snapshot, so a title the database does not carry still resolves. Read only when the file is present and not empty.", "path": "compatibility/commercial_list.json", "required": false, "source_ref": "app/src/main/java/com/sbro/emucorev/data/VitaCompatibilityRepository.kt:20, app/src/main/java/com/sbro/emucorev/data/VitaCompatibilityRepository.kt:69-73, app/src/main/java/com/sbro/emucorev/data/VitaCompatibilityRepository.kt:349", "system": "sony-playstation-vita"}, {"bundled": true, "category": "game_data", "description": "bundled catalog of Vita titles", "name": "psvita_games.db", "note": "SQLite catalog carried in the package assets and copied into internal storage the first time the catalog screen opens, then reopened read only from there. A copy already present is kept.", "path": "psvita_games.db", "required": false, "source_ref": "app/src/main/java/com/sbro/emucorev/data/VitaCatalogRepository.kt:8-9, app/src/main/java/com/sbro/emucorev/data/VitaCatalogRepository.kt:276-292", "system": "sony-playstation-vita"}, {"category": "game_data", "description": "taiHEN plugin configuration", "name": "config.txt", "note": "Read once per session from ux0:tai/config.txt, then from ur0:tai/config.txt when the first is absent. Sections name a title id or KERNEL and list the plugin paths loaded for it. No file found is logged and the session continues.", "path": "vita/ux0/tai/config.txt", "required": false, "source_ref": "app/src/main/cpp/vita3k/vita3k/modules/taiHEN/taiHEN.cpp:1253-1272, app/src/main/cpp/vita3k/vita3k/interface.cpp:535", "system": "sony-playstation-vita", "unsourceable": "plugin list the user writes for their own titles"}, {"category": "game_data", "description": "taiHEN plugin", "name": "<plugin>.suprx", "note": "Loaded at the path config.txt gives it, kernel plugins once per session and title plugins on each launch of the matching title id. A plugin that fails to load is logged and skipped. Exports of a loaded plugin that already have an HLE implementation are overridden by it.", "path": "vita/ux0/tai/<plugin>.suprx", "required": false, "source_ref": "app/src/main/cpp/vita3k/vita3k/modules/taiHEN/taiHEN.cpp:1362-1405, app/src/main/cpp/vita3k/vita3k/modules/taiHEN/taiHEN.cpp:1306-1359", "system": "sony-playstation-vita", "unsourceable": "homebrew plugin built against taiHEN, chosen per collection"}, {"category": "game_data", "description": "per-title binary patch list", "name": "<TITLEID>.txt", "note": "The patch directory is scanned at module load and any filename holding the running title id and ending in .txt is parsed. A bracketed header names the binary the lines under it apply to, eboot.bin until one says otherwise, and each line is a segment and an offset followed by the values written there. A line that fails to parse is logged and the rest of the file is kept.", "path": "patch/<TITLEID>.txt", "required": false, "source_ref": "app/src/main/cpp/vita3k/vita3k/patch/src/patch.cpp:26-70, app/src/main/cpp/vita3k/vita3k/patch/src/patch.cpp:77-90, app/src/main/cpp/vita3k/vita3k/patch/src/util.cpp:24-50, app/src/main/cpp/vita3k/vita3k/interface.cpp:482-484", "system": "sony-playstation-vita", "unsourceable": "patch list authored per title, with no released artefact behind it"}, {"category": "game_data", "description": "shared binary patch list", "name": "PATCHLIST.TXT", "note": "Read alongside the per-title files whatever the running title is, the name matched case insensitively as a substring. Its headers take a title id and an optional binary, so one file holds patches for several titles, and the lines under a header for another title are skipped.", "path": "patch/PATCHLIST.TXT", "required": false, "source_ref": "app/src/main/cpp/vita3k/vita3k/patch/src/patch.cpp:30-37, app/src/main/cpp/vita3k/vita3k/patch/src/patch.cpp:57-59, app/src/main/cpp/vita3k/vita3k/patch/src/util.cpp:30-38", "system": "sony-playstation-vita"}, {"category": "game_data", "description": "replacement texture", "name": "<hash>.png", "note": "Read when the import textures option is on. The import folder is walked recursively and a file counts only when its name parses as a hexadecimal hash, which is the key the texture cache looks it up by.", "path": "textures/import/<TITLEID>/<hash>.png", "required": false, "source_ref": "app/src/main/cpp/vita3k/vita3k/renderer/src/texture/cache.cpp:312-315, app/src/main/cpp/vita3k/vita3k/renderer/src/texture/replacement.cpp:607-630, app/src/main/java/com/sbro/emucorev/core/VitaCoreConfigRepository.kt:30, app/src/main/java/com/sbro/emucorev/core/VitaCoreConfigRepository.kt:262", "system": "sony-playstation-vita", "unsourceable": "replacement artwork authored against the texture hashes of one title"}, {"category": "game_data", "description": "replacement texture, compressed", "name": "<hash>.dds", "note": "Same folder and same hash naming as the png form, taken as a DDS instead and used for the block compressed formats.", "path": "textures/import/<TITLEID>/<hash>.dds", "required": false, "source_ref": "app/src/main/cpp/vita3k/vita3k/renderer/src/texture/replacement.cpp:624-629", "system": "sony-playstation-vita", "unsourceable": "replacement artwork authored against the texture hashes of one title"}, {"description": "replacement Vulkan driver package", "name": "<driver>.zip", "note": "Listed by a catalog fetched from the EmuCoreV-Drivers repository, or picked from the device. The archive is unpacked into a directory named after it under driver in internal storage, the Vulkan library it holds is recorded in a driver_name.txt written beside it, libvulkan.so taken first and any other name carrying vulkan after it, and the renderer resolves vkGetInstanceProcAddr through adrenotools from that pair before the Vulkan instance is created. The system loader is used when no driver is configured or the injection fails. The setting is shown only when the device strings name Qualcomm hardware, or match an sm model with no other vendor named.", "required": false, "source_ref": "app/src/main/java/com/sbro/emucorev/core/GpuDriverCatalogRepository.kt:45-78, app/src/main/java/com/sbro/emucorev/core/GpuDriverCatalogRepository.kt:130-136, app/src/main/java/com/sbro/emucorev/core/GpuDriverManager.kt:52-125, app/src/main/java/com/sbro/emucorev/core/GpuDriverManager.kt:136-171, app/src/main/java/com/sbro/emucorev/ui/settings/SettingsTabContent.kt:215, app/src/main/cpp/vita3k/vita3k/util/src/android_driver.cpp:202-215, app/src/main/cpp/vita3k/vita3k/util/src/android_driver.cpp:362-380, app/src/main/cpp/vita3k/vita3k/renderer/src/vulkan/renderer.cpp:371-387, app/src/main/cpp/vita3k/vita3k/renderer/src/vulkan/renderer.cpp:569-578", "system": "sony-playstation-vita", "unsourceable": "Vulkan driver built for one Adreno family, not an emulator artefact"}, {"category": "game_data", "description": "title license", "name": "work.bin", "note": "A picked file named work.bin, or carrying the .rif or .bin extension, is read as a license, checked for its magic and copied under ux0:license as <content id>.rif. A PKG install with no zRIF given reads the license already sitting there for that content id and derives one from it. A missing or corrupt license is logged and the retail livearea path is used instead.", "path": "vita/ux0/license/<TITLEID>/<CONTENTID>.rif", "required": false, "source_ref": "app/src/main/cpp/emucorev/src/vita_install_bridge.cpp:122-124, app/src/main/cpp/vita3k/vita3k/packages/src/license.cpp:53-84, app/src/main/cpp/vita3k/vita3k/packages/src/license.cpp:99-106, app/src/main/cpp/vita3k/vita3k/packages/src/pkg.cpp:356-376", "system": "sony-playstation-vita", "unsourceable": "NpDrm license issued for one copy of one title"}], "mode": "standalone", "notes": "PlayStation Vita emulator for Android, package com.sbro.emucorev, arm64-v8a\nonly. A Kotlin and Compose front end drives a Vita3K tree vendored verbatim\nunder app/src/main/cpp/vita3k, reached through an adapter layer that owns\nevery JNI entry point. Frontends start the exported activity\ncom.sbro.emucorev.core.vita.Emulator with an AppStartParameters string array;\nES-DE passes -r followed by the title id read from the .psvita file.\nref: app/src/main/cpp/emucorev/README.md:1-13,\n     app/src/main/AndroidManifest.xml:85-101,\n     app/src/main/java/com/sbro/emucorev/core/vita/Emulator.kt:128,\n     app/src/main/java/com/sbro/emucorev/core/vita/Emulator.kt:140-152,\n     app/build.gradle.kts:85-86, app/build.gradle.kts:95\n\nThe Android library is built from the JNI sources plus interface.cpp and\nperformance.cpp, and links app, audio, compat, config, cppcommon, ctrl,\ndialog, display, ime, lang, gdbstub, gxm, io, miniz, modules, motion,\npackages, patch, renderer, shader, touch, util and psvpfsparser, with overlay\nand np arriving through renderer and modules. The ImGui front end under\nvita3k/gui is never added as\na subdirectory, gui-qt is desktop only, and the adapter drops those two and\nupdater from the link line as well when a configuration defines them. So the\nhome screen, live area, themes, trophy collection, user avatars and the pd0\nbackground music player are not compiled: pd0 is written by a firmware install\nand never read back, which is why no third preinst package is offered.\nref: app/src/main/cpp/vita3k/vita3k/CMakeLists.txt:122-124,\n     app/src/main/cpp/vita3k/vita3k/CMakeLists.txt:154-172,\n     app/src/main/cpp/vita3k/vita3k/CMakeLists.txt:212-215,\n     app/src/main/cpp/emucorev/cmake/AttachToVita3K.cmake:31,\n     app/src/main/cpp/emucorev/cmake/CoreTargetFilter.cmake:19-23\n\nFirmware installation calls vanilla install_pup. The file is tested for the\nSCEUF magic and nothing else, the SCE segments are decrypted with the built-in\nkeys, os0.img, pd0.img, sa0.img and vs0.img are joined from their pieces, and\neach image with content is extracted into the Vita filesystem root. The\nversion string is read from the version.txt the package carries. No digest and\nno length is compared.\nref: app/src/main/cpp/emucorev/src/vita_install_bridge.cpp:86-102,\n     app/src/main/cpp/vita3k/vita3k/packages/src/pup.cpp:119-123,\n     app/src/main/cpp/vita3k/vita3k/packages/src/pup.cpp:239-258,\n     app/src/main/cpp/vita3k/vita3k/packages/src/pup.cpp:260-314\n\nTwo packages are named in code, both pinned to firmware 3.74 and fetched from\nSony. Each URL carries the MD5 of the package it serves in its rel_ and sd_\npath segment. The byte counts beside them feed the progress bar and its\nfallback alone, and one of the two is not the length of the file it names, so\nnothing measures what was downloaded.\nref: app/src/main/java/com/sbro/emucorev/core/FirmwareSource.kt:16-37,\n     app/src/main/java/com/sbro/emucorev/ui/onboarding/FirmwareDownloadViewModel.kt:96-124\n\nBoth packages are required. launchInstalledTitle returns MissingFirmware\nbefore doing any work when vita/vs0 holds no file, and MissingFirmwareUpdate\nwhen vita/sa0 holds no file, each with its own refusal string. The refusal is\nthe app's own: nothing in the vendored core tests either partition before a\nrun, and the only sa0 test in the tree sits in the front end that is not\ncompiled. The gate also sits in the in-app launcher alone, so a frontend\nstarting the activity itself, which is what ES-DE does, reaches the core\nwithout passing through it.\nref: app/src/main/java/com/sbro/emucorev/core/VitaLaunchBridge.kt:24-30,\n     app/src/main/java/com/sbro/emucorev/core/EmulatorStorage.kt:262-272,\n     app/src/main/java/com/sbro/emucorev/core/vita/Emulator.kt:140-152,\n     app/src/main/res/values/strings.xml:27-31,\n     app/src/main/res/values/strings.xml:710-711\n\nWhat the partitions are read for. Every launch queues os0:kd/bootimage.skprx\nand os0:kd/sysmodule.skprx, then for each preload module that is LLE takes\napp0:sce_module/<name>.suprx when the title carries one and\nvs0:sys/external/<name>.suprx otherwise. libc, libSceFt2, libpvf and libfiber\nare always LLE, alongside an automatic list of nineteen sysmodules, and a\nfailed module load is logged and stepped over. The overlay renderer registers\nsa0/data/font/pvf as the firmware font directory and asks it for the ltn, jpn,\ncn and kr faces by name, falling back to /system/fonts for its own text.\nref: app/src/main/cpp/vita3k/vita3k/interface.cpp:499-535,\n     app/src/main/cpp/vita3k/vita3k/module/src/load_module.cpp:142-161,\n     app/src/main/cpp/vita3k/vita3k/module/src/load_module.cpp:187-195,\n     app/src/main/cpp/vita3k/vita3k/renderer/src/renderer.cpp:114-127,\n     app/src/main/cpp/vita3k/vita3k/overlay/src/font.cpp:116-160,\n     app/src/main/cpp/vita3k/vita3k/overlay/src/font.cpp:174-234\n\nStorage. The Vita filesystem is a directory named vita under a storage root\nthe user can move to a card, holding ux0 and the partitions a firmware install\nwrites. Configuration, logs, patches, the texture folders and the cache stay\non internal storage. Static assets never reach the filesystem: on Android the\nstatic assets path is left empty and shaders, fonts and images are read out of\nthe package through SDL.\nref: app/src/main/java/com/sbro/emucorev/core/EmulatorStorage.kt:36-46,\n     app/src/main/java/com/sbro/emucorev/core/EmulatorStorage.kt:101-148,\n     app/src/main/cpp/vita3k/vita3k/app/src/app_init.cpp:244-256\n\nTitles arrive as VPK, ZIP, PKG or an already extracted directory, and a PKG\nneeds a zRIF that is either typed in or derived from a license already\ninstalled for that content id.\nref: app/src/main/cpp/emucorev/src/vita_install_bridge.cpp:104-197,\n     app/src/main/cpp/vita3k/vita3k/packages/src/pkg.cpp:356-376\n", "profiled_date": "2026-08-11", "source": "https://github.com/sashkinbro/EmuCoreV", "source_commit": "b71d8cf5397b1c6394e92eeb48427cd17e542971", "systems": ["sony-playstation-vita"], "type": "standalone", "upstream": "https://github.com/Vita3K/Vita3K"}


id: emucorex
name: EmuCoreX
type: standalone
classification: community_fork
source: https://github.com/sashkinbro/EmuCoreX
upstream: https://github.com/PCSX2/pcsx2
source_commit: 7d103230adfa671a3e66b090b8a7fe8f44edc09c
profile_json:
{"author": "Oleksandr (sashkinbro)", "bios_directory": "bios/", "core_classification": "community_fork", "core_version": "0.3.3", "cores": ["emucorex"], "display_name": "Sony - PlayStation 2 (EmuCoreX)", "emulator": "EmuCoreX", "exclusion_note": "Left out are the parts of the bundled resource tree that this platform compiles out. ImGuiManager::Initialize returns false before the ImGui context exists, so LoadFontData never runs and fonts/RobotoMono-Medium.ttf, fonts/fa-solid-900.ttf and fonts/promptfont.otf are never read; InitializeFullscreenUI returns false unconditionally, so FullscreenUI::Initialize never runs and nothing under fullscreenui or icons is loaded, cover-placeholder.png included. The DX11 and DX12 renderers sit in the Windows branch of the core CMakeLists, so shaders/dx11 is dead here. game_controller_db.txt has one consumer, Input/SDLInputSource.cpp, which the adapter removes from the target and replaces with a source that never opens it. The user resource override folder is only ever consulted by those same font and controller database reads, so it is dead with them. Left out with these are the app's other package assets, which are read through the asset manager and never reach the filesystem: catalog/rom_identity_index.json, catalog/rom_identity_overrides.json and catalog/pcsx2_compat_index.json. Left out too is what the emulator writes and reads back, which is state rather than system files: the inis, the per-game settings and input profiles, the memory cards, the save states, the snapshots, the shader and texture caches, the logs, the dumped textures, and the system-ca-bundle.pem the app exports from the Android trust store. The covers folder is inert: its only readers are the FullscreenUI game list and GameList::DownloadCovers, which has no caller, and the app runs its own cover cache. ref: app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:133-136,\n     app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:193-198,\n     app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:449-511,\n     app/src/main/cpp/pcsx2/pcsx2/ImGui/FullscreenUI.cpp:335,\n     app/src/main/cpp/pcsx2/pcsx2/CMakeLists.txt:691,\n     app/src/main/cpp/pcsx2/pcsx2/CMakeLists.txt:708-712,\n     app/src/main/cpp/pcsx2/pcsx2/Input/SDLInputSource.cpp:24,\n     app/src/main/cpp/ARM_ANDROID/CMakeLists.txt:239-243,\n     app/src/main/cpp/pcsx2/pcsx2/Pcsx2Config.cpp:2439-2446,\n     app/src/main/cpp/pcsx2/pcsx2/GameList.cpp:1336,\n     app/src/main/java/com/sbro/emucorex/data/ps2/Ps2CatalogRepository.kt:191-203,\n     app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:166-171\n", "files": [{"agnostic": true, "description": "PS2 BIOS image", "max_size": 8388608, "min_size": 4194304, "name": "ps2-0230a-20080220.bin", "note": "Any image whose romdir holds RESET and ROMVER is accepted, whatever its name. The 4 to 8 MB range gates the folder scan; an image named in the configuration skips that range. Read into the 4 MB ROM region and truncated to it. Shorter than 2465792 bytes disables the OSDSys parameter HLE.", "path": "bios/ps2-0230a-20080220.bin", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:16-17, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:80-197, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:258-294, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:317-369", "system": "sony-playstation-2", "validation": ["size"]}, {"description": "DVD player ROM", "max_size": 4194304, "name": "ps2-0230a-20080220.rom1", "note": "Tried as {bios}.rom1 then {biosbase}.rom1, with a case-insensitive retry on the open. Copied to the ROM1 region and truncated to 4 MB. Logged and skipped when absent. The storage access framework import does not carry this extension, so it is reachable only from a plain BIOS folder path.", "path": "bios/ps2-0230a-20080220.rom1", "required": false, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:214-241, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:366, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:371-381, app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:25-27, app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:433-438", "system": "sony-playstation-2"}, {"aliases": ["SCPH-90006_BIOS_VX_HK _230.ROM2"], "description": "Chinese ROM extension", "max_size": 4194304, "name": "ps2-0230a-20080220.rom2", "note": "Same two-step naming as rom1, copied to the ROM2 region. Present on Chinese region consoles. Carried by the same import restriction as rom1.", "path": "bios/ps2-0230a-20080220.rom2", "required": false, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:214-241, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:367, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:371-381", "system": "sony-playstation-2"}, {"description": "Console NVRAM", "hle_fallback": true, "name": "ps2-0230a-20080220.nvm", "note": "Read at the BIOS path with the extension replaced by nvm, case-insensitively. Carries the console id, the iLink id, the model number and the OSD configuration. A 1024 byte image is built in memory when the file is absent, short, or carries a blank config block, filled with a fixed iLink id and the language and region defaults of the detected BIOS region.", "path": "bios/ps2-0230a-20080220.nvm", "required": false, "size": 1024, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:46-47, app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:160-163, app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:165-189", "system": "sony-playstation-2"}, {"description": "Mechacon version", "hle_fallback": true, "name": "ps2-0230a-20080220.mec", "note": "Read at the BIOS path with the extension replaced by mec. Defaults to 0x00020603 and is written back at that path when it cannot be read.", "path": "bios/ps2-0230a-20080220.mec", "required": false, "size": 4, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:49, app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:191-204", "system": "sony-playstation-2"}, {"description": "DEV9 EEPROM", "hle_fallback": true, "name": "eeprom.dat", "note": "Opened from the working directory when the network adapter starts and mapped over 64 bytes. A compiled-in image stands in when the file is missing or cannot be mapped.", "required": false, "size": 64, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/DEV9/DEV9.cpp:97-160", "system": "sony-playstation-2"}, {"description": "DEV9 SmartMedia flash image", "hle_fallback": true, "max_size": 8650752, "name": "flash.dat", "note": "Opened from the working directory at network adapter init and read as 1024 blocks of 16 pages of 512 bytes plus 16 ECC bytes. The card is filled with 0xFF when the file is absent.", "required": false, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/DEV9/flash.cpp:9-16, app/src/main/cpp/pcsx2/pcsx2/DEV9/flash.cpp:62-86", "system": "sony-playstation-2"}, {"config_key": "EmuCore/CurrentIRX", "description": "IOP module injected at boot", "name": "<module>.irx", "note": "Read into the ROM region at 0x3C0000 when the IOP program counter reaches 0x1630 and the setting is longer than three characters. The launcher fills it from the boot parameters when the picked file is an IRX. Empty otherwise.", "required": false, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:243-256, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:384-385, app/src/main/cpp/pcsx2/pcsx2/VMManager.cpp:1434, app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:334", "system": "sony-playstation-2", "unsourceable": "any IOP module the user points at, under no name and no version the code expects"}, {"bundled": true, "category": "game_data", "description": "per-title compatibility and fix database", "name": "GameIndex.yaml", "note": "Opened from the resources directory and parsed into the game database that drives per-title rounding modes, clamp modes, GS hacks and memory card filters. The Kotlin catalog reads the same file straight out of the package for the compatibility badges it draws.", "path": "resources/GameIndex.yaml", "required": false, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:39, app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:976-977, app/src/main/java/com/sbro/emucorex/ui/gamedb/GameDbCatalogRepository.kt:96, app/src/main/java/com/sbro/emucorex/ui/gamedb/GameDbCatalogRepository.kt:202", "system": "sony-playstation-2"}, {"bundled": true, "category": "game_data", "description": "disc hash database", "name": "RedumpDatabase.yaml", "note": "Opened from the resources directory and parsed into the hash database used to name a disc from its dump.", "path": "resources/RedumpDatabase.yaml", "required": false, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:1081, app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:1138-1139", "system": "sony-playstation-2"}, {"bundled": true, "category": "game_data", "description": "built-in game patch archive", "name": "patches.zip", "note": "Opened read only from the resources directory as a zip source and searched for the pnach matching the running serial and CRC. A failure to open is reported once and the built-in patches are dropped for the session.", "path": "resources/patches.zip", "required": false, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:117, app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:289-310, app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:163-165", "system": "sony-playstation-2"}, {"bundled": true, "description": "core text font", "name": "Roboto-Regular.ttf", "note": "Read by the adapter's own font setup before the VM starts and handed to the core as the standard font. An empty font list is logged as a setup failure.", "path": "resources/fonts/Roboto-Regular.ttf", "required": false, "source_ref": "app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:254-262, app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:271-282, app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:307", "system": "sony-playstation-2"}, {"bundled": true, "description": "core emoji font", "name": "Twemoji.Mozilla.ttf", "note": "Read by the same font setup and appended as the emoji face. Skipped when the file cannot be read.", "path": "resources/fonts/Twemoji.Mozilla.ttf", "required": false, "source_ref": "app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:263-270, app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:271-282", "system": "sony-playstation-2"}, {"bundled": true, "description": "Vulkan texture and framebuffer shader", "name": "tfx.glsl", "note": "Read from the resources directory when the Vulkan device is created. A read failure is reported and device creation fails.", "path": "resources/shaders/vulkan/tfx.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:346-349, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2400-2404", "system": "sony-playstation-2"}, {"bundled": true, "description": "Vulkan format conversion shader", "name": "convert.glsl", "note": "Read when the conversion pipelines are compiled and again as the vertex stage of the FXAA pipeline.", "path": "resources/shaders/vulkan/convert.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4462-4466, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4847-4851", "system": "sony-playstation-2"}, {"bundled": true, "description": "Vulkan presentation shader", "name": "present.glsl", "path": "resources/shaders/vulkan/present.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4676-4680", "system": "sony-playstation-2"}, {"bundled": true, "description": "Vulkan deinterlacing shader", "name": "interlace.glsl", "path": "resources/shaders/vulkan/interlace.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4726-4730", "system": "sony-playstation-2"}, {"bundled": true, "description": "Vulkan field merge shader", "name": "merge.glsl", "path": "resources/shaders/vulkan/merge.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4777-4781", "system": "sony-playstation-2"}, {"bundled": true, "description": "Vulkan brightness and contrast shader", "name": "shadeboost.glsl", "path": "resources/shaders/vulkan/shadeboost.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4882-4886", "system": "sony-playstation-2"}, {"bundled": true, "description": "Vulkan contrast adaptive sharpening shader", "name": "cas.glsl", "note": "Read as a compute shader and its two include lines substituted with the contents of the common headers. The Vulkan device compiles the CAS pipelines unconditionally and returns on a failure, so a missing file stops device creation rather than dropping the feature.", "path": "resources/shaders/vulkan/cas.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2438-2439, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4932-4934, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1038-1049", "system": "sony-playstation-2"}, {"bundled": true, "description": "Vulkan overlay shader", "name": "imgui.glsl", "path": "resources/shaders/vulkan/imgui.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4959-4962", "system": "sony-playstation-2"}, {"bundled": true, "description": "OpenGL texture and framebuffer vertex shader", "name": "tfx_vgs.glsl", "note": "Read from the resources directory when the OpenGL device is created.", "path": "resources/shaders/opengl/tfx_vgs.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:346-349, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:778", "system": "sony-playstation-2"}, {"bundled": true, "description": "OpenGL texture and framebuffer fragment shader", "name": "tfx_fs.glsl", "path": "resources/shaders/opengl/tfx_fs.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:779", "system": "sony-playstation-2"}, {"bundled": true, "description": "OpenGL format conversion shader", "name": "convert.glsl", "path": "resources/shaders/opengl/convert.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:514-518", "system": "sony-playstation-2"}, {"bundled": true, "description": "OpenGL presentation shader", "name": "present.glsl", "path": "resources/shaders/opengl/present.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:584", "system": "sony-playstation-2"}, {"bundled": true, "description": "OpenGL deinterlacing shader", "name": "interlace.glsl", "path": "resources/shaders/opengl/interlace.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:643", "system": "sony-playstation-2"}, {"bundled": true, "description": "OpenGL field merge shader", "name": "merge.glsl", "path": "resources/shaders/opengl/merge.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:620", "system": "sony-playstation-2"}, {"bundled": true, "description": "OpenGL brightness and contrast shader", "name": "shadeboost.glsl", "path": "resources/shaders/opengl/shadeboost.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2423", "system": "sony-playstation-2"}, {"bundled": true, "description": "OpenGL contrast adaptive sharpening shader", "name": "cas.glsl", "note": "Read as a compute program with the two include lines substituted, and needs an ES 3.1 or 3.2 context. A failure turns CAS sharpening off.", "path": "resources/shaders/opengl/cas.glsl", "required": false, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2577-2597, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1038-1049", "system": "sony-playstation-2"}, {"bundled": true, "description": "OpenGL overlay shader", "name": "imgui.glsl", "path": "resources/shaders/opengl/imgui.glsl", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2661", "system": "sony-playstation-2"}, {"bundled": true, "description": "antialiasing shader shared by both renderers", "name": "fxaa.fx", "note": "Read as the fragment stage of the FXAA pipeline on Vulkan, inside the post-processing pipelines the device creation chain requires, so a missing file stops device creation there. On OpenGL the program is compiled on its own and an invalid one makes the FXAA pass return without drawing.", "path": "resources/shaders/common/fxaa.fx", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2425-2430, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4854-4858, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2385-2390, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2404-2407", "system": "sony-playstation-2"}, {"bundled": true, "description": "CAS support header", "name": "ffx_a.h", "note": "Read from the resources directory and pasted over the matching include line of the CAS shader, the compilers having no include support. It shares the fate of the CAS shader it is pasted into: fatal to device creation on Vulkan, and only the sharpening feature on OpenGL.", "path": "resources/shaders/common/ffx_a.h", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1038-1049, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2438-2439, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:667", "system": "sony-playstation-2"}, {"bundled": true, "description": "CAS kernel header", "name": "ffx_cas.h", "note": "Read and substituted the same way as the other CAS header, with the same consequence per renderer when it is missing.", "path": "resources/shaders/common/ffx_cas.h", "required": true, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1038-1049, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2438-2439, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:667", "system": "sony-playstation-2"}, {"description": "achievement notification sound", "name": "message.wav", "note": "Played from the resources directory whenever an achievement notification is raised and no custom sound is configured. Sound effects and the notification sound both default on. The vendored tree carries only the README for this directory, so the file has to be supplied; the Android sound callback returns without playing when the path is not a file. Upstream v2.7.316 ships it at 15696 bytes.", "path": "resources/sounds/achievements/message.wav", "required": false, "source_ref": "app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:81, app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:1245-1250, app/src/main/cpp/pcsx2/pcsx2/Pcsx2Config.cpp:1951-1954, app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:194-200", "system": "sony-playstation-2"}, {"description": "achievement unlock sound", "name": "unlock.wav", "note": "Played on an unlock under the same two settings, both on by default. Absent from the vendored tree. Upstream v2.7.316 ships it at 202702 bytes.", "path": "resources/sounds/achievements/unlock.wav", "required": false, "source_ref": "app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:82, app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:1313-1318", "system": "sony-playstation-2"}, {"description": "leaderboard submission sound", "name": "lbsubmit.wav", "note": "Played on a leaderboard submission under the same two settings, both on by default. Absent from the vendored tree. Upstream v2.7.316 ships it at 82096 bytes.", "path": "resources/sounds/achievements/lbsubmit.wav", "required": false, "source_ref": "app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:83, app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:1458-1463", "system": "sony-playstation-2"}, {"bundled": true, "category": "game_data", "description": "bundled catalog of PS2 titles", "name": "games.db", "note": "SQLite catalog carried in the package assets and copied into internal storage the first time the catalog is queried, then read from there. A copy already present is kept.", "path": "games.db", "required": false, "source_ref": "app/src/main/java/com/sbro/emucorex/data/ps2/Ps2CatalogRepository.kt:18, app/src/main/java/com/sbro/emucorex/data/ps2/Ps2CatalogRepository.kt:38-56", "system": "sony-playstation-2"}, {"category": "game_data", "description": "per-title cheat file", "name": "<SERIAL>_<CRC>.pnach", "note": "The cheats folder is searched for the running serial and CRC, then for files carrying the CRC alone, both with a trailing wildcard so a suffix after the CRC is kept. The patches folder is searched the same way for patches rather than cheats. The app also imports pnach files out of a picked zip.", "path": "cheats/<SERIAL>_<CRC>.pnach", "required": false, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:331-342, app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:344-366, app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:355", "system": "sony-playstation-2", "unsourceable": "cheat list authored per title, with no released artefact behind it"}, {"category": "game_data", "description": "replacement texture", "name": "<hash>.png", "note": "Read when texture replacement is on. The replacements folder under the running serial is walked recursively and a file counts only when its name parses as the TEX0 hash, optional CLUT hash, optional region size and format that the texture cache looks it up by. A directory whose case does not match is reported.", "path": "textures/<SERIAL>/replacements/<hash>.png", "required": false, "source_ref": "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/HW/GSTextureReplacements.cpp:36-42, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/HW/GSTextureReplacements.cpp:328-331, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/HW/GSTextureReplacements.cpp:442-500", "system": "sony-playstation-2", "unsourceable": "replacement artwork authored against the texture hashes of one title"}, {"description": "replacement Vulkan driver package", "name": "<driver>.zip", "note": "Listed by a catalog fetched from the EmuCoreV-Drivers repository, or picked from the device. The archive is unpacked into a directory named after it under driver in internal storage, entries carrying a parent path segment being refused, and the Vulkan library it holds is recorded in a driver_name.txt written beside it. The renderer then resolves the driver through adrenotools from that pair. The system loader is used when no driver is configured.", "required": false, "source_ref": "app/src/main/java/com/sbro/emucorex/core/GpuDriverCatalogRepository.kt:131-135, app/src/main/java/com/sbro/emucorex/core/GpuDriverManager.kt:89-128, app/src/main/java/com/sbro/emucorex/core/GpuDriverManager.kt:135-141, app/src/main/cpp/ARM_ANDROID/src/runtime/android_runtime.cpp:98-112, app/src/main/cpp/ARM_ANDROID/src/runtime/android_runtime.cpp:362", "system": "sony-playstation-2", "unsourceable": "Vulkan driver built for one Adreno family, not an emulator artefact"}], "mode": "standalone", "notes": "PlayStation 2 emulator for Android, package com.sbro.emucorex, arm64-v8a only,\nminSdk 29. A Kotlin and Compose front end drives a PCSX2 tree vendored under\napp/src/main/cpp/pcsx2 and pinned to v2.7.316, reached through the ARM_ANDROID\nadapter that owns the JNI entry points. Frontends start the exported activity\ncom.sbro.emucorex.MainActivity; ES-DE passes the disc as the intent data URI.\nref: app/build.gradle.kts:53-56, app/build.gradle.kts:77,\n     app/src/main/AndroidManifest.xml:48-62,\n     app/src/main/cpp/ARM_ANDROID/CMakeLists.txt:77-79,\n     app/src/main/cpp/ARM_ANDROID/CMakeLists.txt:338\n\nThe whole upstream core is linked, with three files swapped out of the target:\nAchievements.cpp, Host/SDLAudioStream.cpp and Input/SDLInputSource.cpp are\nremoved and replaced by the adapter's own achievements, AAudio and OpenSL, and\ninput sources. OpenGL and Vulkan are on, pcsx2-qt is never added, and the\nDX11 and DX12 renderers sit in the Windows branch of the core CMakeLists.\nref: app/src/main/cpp/ARM_ANDROID/CMakeLists.txt:239-256,\n     app/src/main/cpp/ARM_ANDROID/CMakeLists.txt:58-59,\n     app/src/main/cpp/pcsx2/pcsx2/CMakeLists.txt:691,\n     app/src/main/cpp/pcsx2/pcsx2/CMakeLists.txt:708-712\n\nStorage. The data root is the app files directory; the app creates cache,\nresources, inis, sstates and memcards under it, then copies the whole resources\nasset tree out of the package into resources. The core is handed AppRoot,\nDataRoot, Resources, Settings and Cache from that root, and the launcher sets\nFolders for Bios, Savestates, MemoryCards, Textures, Cheats, Patches and Logs\nper run.\nref: app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:28,\n     app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:163-165,\n     app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:293-300,\n     app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:316-348,\n     app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:135-139,\n     app/src/main/java/com/sbro/emucorex/core/EmulatorBridge.kt:546-552\n\nA BIOS image is required and boot stops without one: LoadBIOS returning false\nmakes VMManager report that a PlayStation 2 BIOS is needed. Only a GS dump\nreplay skips the load. Detection is by content: the folder scan keeps files\nbetween 4 and 8 MB and accepts an image whose romdir carries a RESET entry\nfollowed by a readable ROMVER, the fifth ROMVER character giving the zone among\nJapan, USA, Europe, Asia, China, T10K, COH-H, Test and Free, with EXTINFO\nsupplying the serial. An image named in the configuration is opened at its own\npath without the size filter. No name and no hash is matched.\nref: app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:16-17,\n     app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:80-197,\n     app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:258-294,\n     app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:317-369,\n     app/src/main/cpp/pcsx2/pcsx2/VMManager.cpp:1487-1499\n\nThe app runs its own gate over the same test before launching. A candidate is\na .bin or .rom between 512 KB and 8 MB whose name carries scph, ps2, bios or\nrom, and it is confirmed by isBiosPath or isBiosFd, both of which call the\ncore's IsBIOS on the path or on /proc/self/fd.\nref: app/src/main/java/com/sbro/emucorex/core/BiosValidator.kt:13-19,\n     app/src/main/java/com/sbro/emucorex/core/BiosValidator.kt:110-137,\n     app/src/main/cpp/ARM_ANDROID/src/jni/native_app_jni.cpp:414-436\n\nA BIOS folder picked through the storage access framework is copied flat into\nimported-bios under the external files directory, and Folders/Bios points there.\nThe import filter takes any .bin or .rom, plus .mec, .nvm and .elf whose name\ncarries one of the hints. Neither rom1 nor rom2 is an accepted extension, and\nLoadExtraRom looks for exactly {bios}.rom1 or {biosbase}.rom1, so the two ROM\nmodules only reach the core when Folders/Bios is a plain filesystem path used\nas-is. A re-import preserves the .nvm and .mec sitting beside the image.\nref: app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:25-27,\n     app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:101-154,\n     app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:366-388,\n     app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:433-438,\n     app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:492-499\n\nMuch of the bundled resource tree is compiled out on this platform and never\nread. ImGuiManager::Initialize returns false before creating the ImGui context,\nso LoadFontData and the three fonts it reads are unreachable, and SetFonts and\nReloadFonts both guard on that context. InitializeFullscreenUI returns false\nunconditionally, so FullscreenUI::Initialize never runs and nothing under\nfullscreenui or icons is loaded. The adapter reads two fonts of its own instead\nand hands them over through SetFonts.\nref: app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:115-128,\n     app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:132-136,\n     app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:147,\n     app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:193-198,\n     app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:262-281,\n     app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:449-511,\n     app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:254-282,\n     app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:307\n\nThe three achievement sounds are the one resource the code reads that the tree\ndoes not carry. Their directory holds only the README naming their origin,\nwhile upstream v2.7.316 ships message.wav at 15696 bytes, lbsubmit.wav at 82096\nand unlock.wav at 202702. All four sound settings default on, so a signed-in\nsession asks for them at every notification.\nref: app/src/main/cpp/pcsx2/bin/resources/sounds/achievements/README.txt:1-3,\n     app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:81-83,\n     app/src/main/cpp/pcsx2/pcsx2/Config.h:1346-1349,\n     app/src/main/cpp/pcsx2/pcsx2/Pcsx2Config.cpp:1951-1954\n", "profiled_date": "2026-08-11", "resources_directory": "resources/", "source": "https://github.com/sashkinbro/EmuCoreX", "source_commit": "7d103230adfa671a3e66b090b8a7fe8f44edc09c", "systems": ["sony-playstation-2"], "type": "standalone", "upstream": "https://github.com/PCSX2/pcsx2", "upstream_commit": "53e3838c1dd59f611fa3d2fd36915903a1304c6e"}


id: emuscv
name: EmuSCV
type: libretro
classification: community_fork
source: https://github.com/wzcwzc/emuscv
upstream: http://takeda-toshiya.my.coocan.jp/
source_commit: 6d6e4594d79862dd5c2ff7f725c109e4266f0b03
profile_json:
{"core_classification": "community_fork", "core_version": "0.12", "cores": ["emuscv"], "display_name": "EPOCH/YENO Super Cassette Vision", "emulator": "EmuSCV", "files": [{"aliases": ["upd7801g.bin", "upd7801g.bios", "bios.rom", "bios.bin"], "md5": "635a978fd40db9a18ee44eff449fc126", "name": "upd7801g.s01", "note": "UPD7801G internal ROM (BIOS). Mapped at 0x0000-0x0FFF. Contains character font at offset 0x200.", "required": true, "size": 4096, "source_ref": "src/vm/scv/memory.cpp:74-243", "system": "scv", "validation": ["md5"]}], "notes": "Libretro port of eSCV by Takeda Toshiya (Common Source Code Project),\nported to libretro by MARCONATO Maxime. Upstream source mirrored at\nhttps://github.com/tautologico/common-src-project (src/vm/scv/).\n\nBIOS loading in src/vm/scv/memory.cpp:initialize() (lines 74-243).\nTries filenames in order: upd7801g.s01, upd7801g.bin, upd7801g.bios,\nbios.rom, bios.bin. First successful open wins. Upstream eSCV uses\nonly BIOS.ROM (uppercase); the libretro port renamed and added\nfallback aliases.\n\nThe BIOS is read as 0x1000 (4096) bytes into the bios[] array, mapped\nread-only at CPU address 0x0000-0x0FFF (UPD7801 internal ROM area).\n\nWhen CHECKBIOS core option is YES, the core computes MD5 of the loaded\ndata and compares against 635a978fd40db9a18ee44eff449fc126. If the\nhash does not match, the BIOS is rejected (zeroed out,\nbios_present=false). When CHECKBIOS is AUTO (default) or NO, any file\ncontent is accepted. The log message for AUTO says \"automatic (yes)\"\nbut the code skips the check (code bug: != YES_VAL at line 80).\n\nThe font/character data is embedded within the BIOS at offset 0x200\n(memory.h get_font() returns bios + 0x200). No separate font ROM file.\n\nThe core can start without BIOS (supports_no_game=true) but shows\n\"BIOS not found\" or \"Bad BIOS\" on the OSD. Games will not run without\nit.\n\nThe .info declares firmware_count=1, firmware0_opt=false. Matches code.\n", "platform_details": {"bios_mapping": {"upd7801g": {"format": "raw binary", "notes": "Memory map from memory.cpp:initialize():\n  0x0000-0x0FFF  BIOS ROM (read-only)\n  0x2000-0x3FFF  VRAM (8 KB)\n  0x8000-0xFF7F  Cartridge ROM (up to 4 banks of 32 KB)\n  0xFF80-0xFFFF  CPU internal RAM (128 bytes)\nFont data lives inside the BIOS at offset 0x200, accessed via\nget_font() for the VDP character rendering (src/vm/scv/vdp.cpp).\n", "source_ref": "src/vm/scv/memory.cpp:249-254", "target": "0x0000-0x0FFF (CPU internal ROM, 4 KB)"}}, "cartridge_loading": {"banking": "4 banks of 32 KB via PC5/PC6 port lines", "formats": "cart, bin, rom, 0 (multi-file: .0/.1/.2/.3), zip", "source_ref": "src/vm/scv/memory.h, src/vm/scv/memory.cpp"}, "cpu": "NEC UPD7801G"}, "profiled_date": "2026-03-23", "source": "https://github.com/wzcwzc/emuscv", "source_commit": "6d6e4594d79862dd5c2ff7f725c109e4266f0b03", "systems": ["scv"], "type": "libretro", "upstream": "http://takeda-toshiya.my.coocan.jp/"}


id: emux_chip8
name: emux (CHIP-8)
type: libretro
classification: official_port
source: https://github.com/libretro/emux
upstream: https://github.com/sronsse/emux
source_commit: 120362977493765032cba7bed9c7aee1ff5b8579
profile_json:
{"core_classification": "official_port", "core_version": "0.1", "cores": ["emux_chip8"], "display_name": "CHIP-8 (Emux CHIP-8)", "emulator": "emux (CHIP-8)", "exclusion_note": "CHIP-8 has no BIOS, font data hardcoded in char_mem[]", "files": [], "notes": "emux is a multi-system emulator supporting CHIP-8, Game Boy, NES, and\nSega Master System as separate libretro cores. The CHIP-8 core\n(emux_chip8) does not require any external BIOS or firmware files.\n\nThe CHIP-8 architecture has no real BIOS. The standard font/character\nset (hex digits 0-F, 5 bytes each = 80 bytes) is hardcoded in\nmach/chip8.c:40-57 as the char_mem[] array. On reset, this font data\nis copied into the beginning of the 4 KB RAM (address 0x000-0x04F)\nvia memcpy in chip8_reset() at mach/chip8.c:105.\n\nROM loading: the game ROM is loaded via file_open(PATH_DATA, ...) in\nchip8_init() at mach/chip8.c:68-74. On reset, ROM contents are copied\ninto RAM starting at address 0x200 (mach/chip8.c:113). The core\naccepts .ch8, .bin, and .rom extensions (libretro/Makefile.rules:20).\n\nMemory map from mach/chip8.c:17-20:\n  0x000-0x04F  font/character data (hardcoded)\n  0x050-0x1FF  unused\n  0x200-0xFFF  program ROM + working RAM\n\nThe libretro frontend retrieves the system directory via\nRETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY (libretro/libretro.c:34) but\nonly uses it as a general config path, not for BIOS loading.\n", "platform_details": {"bios_mapping": {"note": "No external BIOS. The 80-byte character font is compiled into the\nbinary as char_mem[] and memcpy'd into RAM[0x000] on every reset.\nThis is standard CHIP-8 behavior -- all interpreters embed the font.\n", "source_ref": "mach/chip8.c:40-57, mach/chip8.c:98-115", "target": "none"}}, "profiled_date": "2026-03-23", "source": "https://github.com/libretro/emux", "source_commit": "120362977493765032cba7bed9c7aee1ff5b8579", "systems": ["chip8"], "type": "libretro", "upstream": "https://github.com/sronsse/emux"}


id: emux_gb
name: emux (Game Boy)
type: libretro
classification: official_port
source: https://github.com/libretro/emux
upstream: https://github.com/sronsse/emux
source_commit: 02f7ba42bedad6882ce47f24c8fc3af7eaac79ae
profile_json:
{"core_classification": "official_port", "core_version": "0.1", "cores": ["emux_gb"], "display_name": "Nintendo - Game Boy / Color (Emux GB)", "emulator": "emux (Game Boy)", "files": [{"aliases": ["DMG_ROM.bin"], "description": "Game Boy (DMG) boot ROM", "name": "dmg_boot.bin", "note": "Upstream name DMG_ROM.bin, renamed by libretro port (gb_mapper.c:33-34).", "required": true, "size": 256, "source_ref": "controllers/mapper/gb_mapper.c:35 (bootrom_path), controllers/mapper/gb_mapper.h:13 (BOOTROM_SIZE=256), controllers/mapper/gb_mapper.c:225-232 (file_map + error)", "system": "nintendo-gb"}], "notes": "emux is a multi-system emulator by Sebastien Ronsse. The libretro port\nrenamed the boot ROM from DMG_ROM.bin (upstream, gb_mapper.c:32) to\ndmg_boot.bin (libretro, gb_mapper.c:35) to match RetroArch conventions.\n\nBoot ROM loaded via file_map(PATH_SYSTEM, \"dmg_boot.bin\", 0, 256) in\ngb_mapper_init (gb_mapper.c:225-228). Returns false on failure — no HLE\nfallback. Mapped at 0x0000-0x00FF, overlays ROM0 until BOOT_LOCK (0xFF50)\nis written non-zero (lock_writeb, gb_mapper.c:97-106).\n\nNo hash validation. Code accepts any 256+ byte file.\nis_experimental=true. No save states, rewind, or netplay.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/emux", "source_commit": "02f7ba42bedad6882ce47f24c8fc3af7eaac79ae", "systems": ["nintendo-gb"], "type": "libretro", "upstream": "https://github.com/sronsse/emux"}


id: emux_nes
name: emux (NES)
type: libretro
classification: official_port
source: https://github.com/libretro/emux
upstream: https://github.com/sronsse/emux
source_commit: 120362977493765032cba7bed9c7aee1ff5b8579
profile_json:
{"core_classification": "official_port", "core_version": "0.1", "cores": ["emux_nes"], "display_name": "Nintendo - NES / Famicom (Emux NES)", "emulator": "emux (NES)", "exclusion_note": "NES has no boot ROM, CPU starts at reset vector from cartridge", "files": [], "notes": "emux is a multi-system emulator by Sebastien Ronsse, supporting CHIP-8,\nGame Boy, NES, and Sega Master System as separate libretro cores.\n\nThe NES core does not require any BIOS or firmware files.\nThe .info declares no firmware_count.\n\nThe NES has no boot ROM. CPU starts at the reset vector address\nstored at 0xFFFC-0xFFFD (cpu/rp2a03.c RESET_VECTOR).\n\nCartridge loading in controllers/mapper/nes_mapper.c:\n  - iNES header parsed (magic 0x1A53454E)\n  - Mapper number extracted from flags6/flags7\n  - Supported mappers: NROM (0), MMC1 (1), MMC3 (4)\n  - PRG-ROM and CHR-ROM mapped via file_map(PATH_DATA, ...)\n\nMemory map from mach/nes.c:\n  CPU bus:\n    0x0000-0x07FF  WRAM (2 KB, mirrored to 0x1FFF)\n    0x2000-0x2007  PPU registers (mirrored to 0x3FFF)\n    0x4000-0x4013  APU registers\n    0x4014         Sprite DMA\n    0x4016-0x4017  Controller ports\n    0x6000-0x7FFF  SRAM\n    0x8000-0xFFFF  PRG-ROM\n\n  PPU bus:\n    0x0000-0x1FFF  CHR-ROM/RAM (pattern tables)\n    0x2000-0x2FFF  VRAM (nametables, 4 KB)\n    0x3F00-0x3F1F  Palette RAM\n\nsystem_directory obtained via RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY\n(libretro/libretro.c:23-25) but not used for any file loading.\n\nis_experimental=true. No save states, rewind, or netplay support.\nSupported extensions: nes, bin, rom.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/emux", "source_commit": "120362977493765032cba7bed9c7aee1ff5b8579", "systems": ["nes"], "type": "libretro", "upstream": "https://github.com/sronsse/emux"}


id: emux_sms
name: emux (SMS)
type: libretro
classification: official_port
source: https://github.com/libretro/emux
upstream: https://github.com/sronsse/emux
source_commit: 02f7ba42bedad6882ce47f24c8fc3af7eaac79ae
profile_json:
{"core_classification": "official_port", "core_version": "0.1", "cores": ["emux_sms"], "display_name": "Sega - Master System (Emux SMS)", "emulator": "emux (SMS)", "files": [{"description": "Sega Master System BIOS", "name": "bios.sms", "note": "Mapped at 0x0000, overlays cartridge ROM until bios_disable bit set. file_map rejects files < 8192 bytes (file.c:59).", "required": true, "size": 8192, "source_ref": "controllers/mapper/sms_mapper.c:12 (BIOS_SIZE=0x2000), :61 (bios_path), :162-170 (file_map + NULL check → return false)", "system": "sms", "validation": ["size"]}], "notes": "emux is a multi-system emulator by Sebastien Ronsse. BIOS and cartridge\ncode identical between upstream and libretro fork (only difference: libretro\nadds g_ram_data/g_ram_size exposure in mach/sms.c for RETRO_MEMORY_SYSTEM_RAM).\n\nBIOS loaded via file_map(PATH_SYSTEM, \"bios.sms\", 0, BIOS_SIZE) in\nsms_mapper_init (sms_mapper.c:162-165). Returns false on failure — no HLE\nfallback. Mapped at 0x0000, overlays cartridge ROM until bios_disable bit\nset in slot control register (sms_mapper.c:79-82).\n\nNo hash validation. Code accepts any file >= 8192 bytes.\nis_experimental=true. No save states, rewind, or netplay.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/emux", "source_commit": "02f7ba42bedad6882ce47f24c8fc3af7eaac79ae", "systems": ["sms"], "type": "libretro", "upstream": "https://github.com/sronsse/emux"}


id: ep128emu
name: ep128emu-core
type: libretro
source: https://github.com/libretro/ep128emu-core
source_commit: 6af5d03de220e6effcd0ffcd99e0fb8e8c77cc9e
profile_json:
{"core_version": "v1.2.10", "cores": ["ep128emu_core"], "display_name": "Enterprise - 64/128 (ep128emu)", "emulator": "ep128emu-core", "files": [{"has_builtin": true, "hle_fallback": true, "md5": "f36f24cbb87745fbd2714e4df881db09", "name": "exos21.rom", "note": "Enterprise 128 EXOS 2.1. Default OS for EP128 machines.", "path": "ep128emu/roms/exos21.rom", "required": false, "source_ref": "core/core.cpp:237-240", "system": "enterprise-128"}, {"has_builtin": true, "hle_fallback": true, "md5": "5ad3baaad3b5156d6b60b34229a676fb", "name": "exos20.rom", "note": "Enterprise 64 EXOS 2.0. Used when EP64 machine type is selected.", "path": "ep128emu/roms/exos20.rom", "required": false, "source_ref": "core/core.cpp:229-232", "system": "enterprise-64"}, {"has_builtin": true, "hle_fallback": true, "md5": "55af78f877a21ca45eb2df68a74fcc60", "name": "exos24uk.rom", "note": "Enterprise 128 EXOS 2.4 (UK). Used when enhanced ROM mode is enabled. 64K, loaded across segments 0-3.", "path": "ep128emu/roms/exos24uk.rom", "required": false, "source_ref": "core/core.cpp:217-224", "system": "enterprise-128"}, {"has_builtin": true, "hle_fallback": true, "md5": "e972fe42b398c9ff1d93ff014786aec6", "name": "basic21.rom", "note": "Enterprise 128 BASIC 2.1. Loaded when cartridge mode is active (default).", "path": "ep128emu/roms/basic21.rom", "required": false, "source_ref": "core/core.cpp:251, core/core.cpp:279", "system": "enterprise-128"}, {"has_builtin": true, "hle_fallback": true, "md5": "8e18edce4a7acb2c33cc0ab18f988482", "name": "basic20.rom", "note": "Enterprise 64 BASIC 2.0. Used with EP64 machine type.", "path": "ep128emu/roms/basic20.rom", "required": false, "source_ref": "core/core.cpp:249, core/core.cpp:267, core/core.cpp:277", "system": "enterprise-64"}, {"has_builtin": true, "hle_fallback": true, "md5": "ddff70c014d1958dc75378b6c9aab6f8", "name": "exdos13.rom", "note": "EXDOS 1.3 disk controller. Loaded for EP128_DISK and EP64_DISK modes. 32K across segments 0x20-0x21.", "path": "ep128emu/roms/exdos13.rom", "required": false, "source_ref": "core/core.cpp:306-323", "system": "enterprise-128"}, {"has_builtin": true, "hle_fallback": true, "md5": "f91c4a507cc6895bdd9c43df4f021df3", "name": "exdos14isdos10uk.rom", "note": "EXDOS 1.4 + IS-DOS 1.0 (UK). Used for IS-DOS disk mode instead of exdos13.rom.", "path": "ep128emu/roms/exdos14isdos10uk.rom", "required": false, "size": 32768, "source_ref": "core/core.cpp:255, roms/roms.hpp:30104 (built-in data, MD5 verified)", "system": "enterprise-128"}, {"bundled": true, "has_builtin": true, "hle_fallback": true, "md5": "a68ebcbc73a4d2178d755b7755bf18fe", "name": "epfileio.rom", "note": "Direct file I/O extension. Loaded for EP128_FILE and EP64_FILE modes. Source included in roms/ directory.", "path": "ep128emu/roms/epfileio.rom", "required": false, "source_ref": "core/core.cpp:286-287", "system": "enterprise-128"}, {"has_builtin": true, "hle_fallback": true, "md5": "228540b6be83ae2acd7569c8ff0f91d0", "name": "zt19uk.rom", "note": "ZozoTools 1.9 (UK). Loaded for DTF (direct tape file) mode. 32K across segments 0x40-0x41.", "path": "ep128emu/roms/zt19uk.rom", "required": false, "source_ref": "core/core.cpp:290-293", "system": "enterprise-128"}, {"has_builtin": true, "hle_fallback": true, "md5": "22167938f142c222f40992839aa21a06", "name": "hun.rom", "note": "Hungarian language extension. Auto-loaded when content locale is Hungarian.", "path": "ep128emu/roms/hun.rom", "required": false, "source_ref": "core/core.cpp:245-246", "system": "enterprise-128"}, {"has_builtin": true, "hle_fallback": true, "md5": "6593dff00ab32a4b1fc084674ededf2b", "name": "epdos16f.rom", "note": "EP-DOS 1.6f. Provides HFONT and CLKOFF for Hungarian locale. 32K across segments 0x06-0x07.", "path": "ep128emu/roms/epdos16f.rom", "required": false, "size": 32768, "source_ref": "core/core.cpp:238-239, roms/roms.hpp:43780 (built-in data, MD5 verified)", "system": "enterprise-128"}, {"has_builtin": true, "hle_fallback": true, "md5": "6af0402906944fd134004b85097c8524", "name": "brd.rom", "note": "German (BRD) language extension. Auto-loaded when content locale is German.", "path": "ep128emu/roms/brd.rom", "region": ["germany"], "required": false, "source_ref": "core/core.cpp:263-264", "system": "enterprise-128"}, {"has_builtin": true, "hle_fallback": true, "md5": "8c54285f541930cde766069942bad0f2", "name": "tvc22_sys.rom", "note": "TVC system ROM v2.2. Main BIOS for all TVC modes.", "path": "ep128emu/roms/tvc22_sys.rom", "required": false, "source_ref": "core/core.cpp:328-329", "system": "videoton-tvc"}, {"has_builtin": true, "hle_fallback": true, "md5": "5ce95a26ceed5bec73995d83568da9cf", "name": "tvc22_ext.rom", "note": "TVC extension ROM v2.2. Loaded alongside tvc22_sys.rom.", "path": "ep128emu/roms/tvc22_ext.rom", "required": false, "source_ref": "core/core.cpp:366-367", "system": "videoton-tvc"}, {"bundled": true, "has_builtin": true, "hle_fallback": true, "md5": "a2cf86ba8e7fc58b242137fe59036832", "name": "tvcfileio.rom", "note": "TVC direct file I/O extension. Used for TVC64_FILE mode. Source included in roms/ directory.", "path": "ep128emu/roms/tvcfileio.rom", "required": false, "source_ref": "core/core.cpp:370-371", "system": "videoton-tvc"}, {"has_builtin": true, "hle_fallback": true, "md5": "88dc7876d584f90e4106f91444ab23b7", "name": "tvc_dos12d.rom", "note": "TVC DOS 1.2d. Loaded for TVC64_DISK mode.", "path": "ep128emu/roms/tvc_dos12d.rom", "required": false, "source_ref": "core/core.cpp:375-376", "system": "videoton-tvc"}, {"has_builtin": true, "hle_fallback": true, "md5": "a993f85b88ac4350cf4d41554e87fe4f", "name": "cpc464.rom", "note": "CPC 464 combined ROM (OS + BASIC). 32K loaded at segments 0x10 (OS) and 0x00 (BASIC) with offset.", "path": "ep128emu/roms/cpc464.rom", "required": false, "source_ref": "core/core.cpp:353-356", "system": "amstrad-cpc"}, {"has_builtin": true, "hle_fallback": true, "md5": "5a384a2310f472c7857888371c00ed66", "name": "cpc664.rom", "note": "CPC 664 combined ROM (OS + BASIC). Used for CPC_664_DISK mode.", "path": "ep128emu/roms/cpc664.rom", "required": false, "source_ref": "core/core.cpp:361-364", "system": "amstrad-cpc"}, {"has_builtin": true, "hle_fallback": true, "md5": "b96280dc6c95a48857b4b8eb931533ae", "name": "cpc6128.rom", "note": "CPC 6128 combined ROM (OS + BASIC). Default CPC machine when no specific model requested.", "path": "ep128emu/roms/cpc6128.rom", "required": false, "source_ref": "core/core.cpp:370-373", "system": "amstrad-cpc"}, {"has_builtin": true, "hle_fallback": true, "md5": "25629dfe870d097469c217b95fdc1c95", "name": "cpc_amsdos.rom", "note": "AMSDOS disk controller ROM. Loaded for CPC_DISK and CPC_664_DISK modes.", "path": "ep128emu/roms/cpc_amsdos.rom", "required": false, "source_ref": "core/core.cpp:377", "system": "amstrad-cpc"}, {"has_builtin": true, "hle_fallback": true, "md5": "85fede415f4294cc777517d7eada482e", "name": "zx128.rom", "note": "ZX Spectrum 128K ROM. 32K loaded at segments 0x00-0x01.", "path": "ep128emu/roms/zx128.rom", "required": false, "source_ref": "core/core.cpp:400-403", "system": "zx-spectrum"}, {"has_builtin": true, "hle_fallback": true, "md5": "4c42a2f075212361c3117015b107ff68", "name": "zx48.rom", "note": "ZX Spectrum 48K ROM. Used for ZX16 and ZX48 modes.", "path": "ep128emu/roms/zx48.rom", "required": false, "source_ref": "core/core.cpp:407-408", "system": "zx-spectrum"}], "notes": "All ROMs go under <system_dir>/ep128emu/roms/. The core has built-in ROM\nfallbacks for every file, so it works without any user-supplied ROMs.\nExternal ROMs provide byte-exact originals vs the built-in copies.\n\nEnterprise EP128 is the default machine. EP64 is selected when content\nrequires it. Machine type can also be forced via core options.\n\nHungarian and German locale ROMs are loaded automatically when content\nmetadata indicates the locale. The IS-DOS disk system is an alternative\nto the standard EXDOS disk controller.\n", "profiled_date": "2026-03-18", "source": "https://github.com/libretro/ep128emu-core", "source_commit": "6af5d03de220e6effcd0ffcd99e0fb8e8c77cc9e", "systems": ["enterprise-64", "enterprise-128", "videoton-tvc", "amstrad-cpc", "zx-spectrum"], "type": "libretro"}


id: ep128emu_core
name: ep128emu_core
type: libretro
classification: community_fork
source: https://github.com/libretro/ep128emu-core
upstream: https://github.com/istvan-v/ep128emu
source_commit: 6af5d03de220e6effcd0ffcd99e0fb8e8c77cc9e
profile_json:
{"core_classification": "community_fork", "core_version": "1.2.10", "cores": ["ep128emu_core", "ep128emu-core"], "display_name": "Enterprise - 64/128 (ep128emu)", "emulator": "ep128emu_core", "files": [{"aliases": ["EXOS21.ROM"], "description": "Enterprise 128 Expandible OS 2.1", "name": "exos21.rom", "path": "ep128emu/roms/exos21.rom", "required": false, "source_ref": "core/core.cpp:235-238, roms/roms.hpp:18472-21205"}, {"aliases": ["EXOS20.ROM"], "description": "Enterprise 64 Expandible OS 2.0", "name": "exos20.rom", "path": "ep128emu/roms/exos20.rom", "required": false, "source_ref": "core/core.cpp:227-230, roms/roms.hpp:15738-18471"}, {"description": "Enterprise 128 Expandible OS 2.4 (enhanced, fast memory test)", "name": "exos24uk.rom", "path": "ep128emu/roms/exos24uk.rom", "required": false, "source_ref": "core/core.cpp:215-222, roms/roms.hpp:32838-38302"}, {"description": "Enterprise 128 BASIC Interpreter v2.1", "name": "basic21.rom", "path": "ep128emu/roms/basic21.rom", "required": false, "source_ref": "core/core.cpp:249, core/core.cpp:267, core/core.cpp:277, roms/roms.hpp:3433-4801"}, {"description": "Enterprise 64 BASIC Interpreter v2.0", "name": "basic20.rom", "path": "ep128emu/roms/basic20.rom", "required": false, "source_ref": "core/core.cpp:247, core/core.cpp:265, core/core.cpp:275, roms/roms.hpp:2064-3432"}, {"aliases": ["EXDOS14.ROM"], "description": "Enterprise 128 Disk Controller v1.3", "name": "exdos13.rom", "path": "ep128emu/roms/exdos13.rom", "required": false, "source_ref": "core/core.cpp:304-307, roms/roms.hpp:13004-15737"}, {"description": "Enterprise 128 IS-DOS (CP/M compatible disk system)", "name": "exdos14isdos10uk.rom", "path": "ep128emu/roms/exdos14isdos10uk.rom", "required": false, "source_ref": "core/core.cpp:296-299, roms/roms.hpp:30103-32836"}, {"description": "Enterprise 128 Direct File I/O", "name": "epfileio.rom", "path": "ep128emu/roms/epfileio.rom", "required": false, "source_ref": "core/core.cpp:284-285, roms/roms.hpp:9-1377"}, {"description": "Enterprise 128 EP-DOS v1.6f (Hungarian font and CLKOFF)", "name": "epdos16f.rom", "path": "ep128emu/roms/epdos16f.rom", "required": false, "source_ref": "core/core.cpp:253-256, roms/roms.hpp:43779-46512"}, {"description": "Enterprise 128 Hungarian language extension", "name": "hun.rom", "path": "ep128emu/roms/hun.rom", "required": false, "source_ref": "core/core.cpp:243, roms/roms.hpp:41039-42407"}, {"description": "Enterprise 128 German language extension", "name": "brd.rom", "path": "ep128emu/roms/brd.rom", "region": ["germany"], "required": false, "source_ref": "core/core.cpp:261, roms/roms.hpp:42409-43777"}, {"description": "Enterprise 128 ZozoTools extension (DTF file loading)", "name": "zt19uk.rom", "path": "ep128emu/roms/zt19uk.rom", "required": false, "source_ref": "core/core.cpp:288-291, roms/roms.hpp:38304-41037"}, {"aliases": ["TVC22_D6_D4.64K"], "description": "Videoton TVC system ROM v2.2", "name": "tvc22_sys.rom", "path": "ep128emu/roms/tvc22_sys.rom", "required": false, "source_ref": "core/core.cpp:328-329, roms/roms.hpp:21206-22574"}, {"aliases": ["TVC22_D7.64K"], "description": "Videoton TVC extension ROM v2.2", "name": "tvc22_ext.rom", "path": "ep128emu/roms/tvc22_ext.rom", "required": false, "source_ref": "core/core.cpp:330-331, roms/roms.hpp:22575-23260"}, {"description": "Videoton TVC Direct File I/O", "name": "tvcfileio.rom", "path": "ep128emu/roms/tvcfileio.rom", "required": false, "source_ref": "core/core.cpp:334-335, roms/roms.hpp:1378-2063"}, {"aliases": ["VT-DOS12-DISK.ROM"], "description": "Videoton TVC disk BIOS v1.2d", "name": "tvc_dos12d.rom", "path": "ep128emu/roms/tvc_dos12d.rom", "required": false, "source_ref": "core/core.cpp:339-340, roms/roms.hpp:23261-24629"}, {"description": "Amstrad CPC 464 OS + BASIC", "name": "cpc464.rom", "path": "ep128emu/roms/cpc464.rom", "required": false, "source_ref": "core/core.cpp:353-356, roms/roms.hpp:4802-7535"}, {"description": "Amstrad CPC 664 OS + BASIC", "name": "cpc664.rom", "path": "ep128emu/roms/cpc664.rom", "required": false, "source_ref": "core/core.cpp:361-364, roms/roms.hpp:7536-10269"}, {"description": "Amstrad CPC 6128 OS + BASIC", "name": "cpc6128.rom", "path": "ep128emu/roms/cpc6128.rom", "required": false, "source_ref": "core/core.cpp:370-373, roms/roms.hpp:10270-13003"}, {"aliases": ["AMSDOS_0.5.ROM"], "description": "Amstrad CPC AMSDOS disk BIOS", "name": "cpc_amsdos.rom", "path": "ep128emu/roms/cpc_amsdos.rom", "required": false, "source_ref": "core/core.cpp:377-378, roms/roms.hpp:24630-25998"}, {"description": "ZX Spectrum 128 ROM", "name": "zx128.rom", "path": "ep128emu/roms/zx128.rom", "required": false, "source_ref": "core/core.cpp:400-403, roms/roms.hpp:27368-30101"}, {"aliases": ["48.rom"], "description": "ZX Spectrum 48 ROM", "name": "zx48.rom", "path": "ep128emu/roms/zx48.rom", "required": false, "source_ref": "core/core.cpp:407-408, roms/roms.hpp:25999-27367"}], "notes": "Emulates Enterprise 64/128, Videoton TVC, Amstrad CPC 464/664/6128, and ZX Spectrum 16/48/128. All ROMs are embedded in the binary since v1.1.0; external files override built-in data. Content type is auto-detected and determines machine configuration and ROM selection. Custom ROM mappings are possible via .ep128cfg config files placed in ep128emu/config/ or next to content. The .info declares epd19hft.rom and zt19hfnt.rom which are phantom entries never referenced in code. The .info omits epdos16f.rom and exdos14isdos10uk.rom which are used by the code. SDEXT, ReSID, and MIDI port features are compile-disabled in the libretro build.", "profiled_date": "2026-03-30", "source": "https://github.com/libretro/ep128emu-core", "source_commit": "6af5d03de220e6effcd0ffcd99e0fb8e8c77cc9e", "systems": ["enterprise-64", "enterprise-128", "videoton-tvc", "amstrad-cpc", "zx-spectrum"], "type": "libretro", "upstream": "https://github.com/istvan-v/ep128emu"}


id: epsxe
name: ePSXe
type: standalone
classification: other
source: https://www.epsxe.com/download.php
upstream: closed-source
profile_json:
{"author": "calb, _Demo_, Galtor (ePSXe Software S.L.)", "bios_directory": "bios/", "bios_size": 524288, "core_classification": "other", "core_version": "2.0.18", "cores": ["epsxe"], "display_name": "Sony - PlayStation (ePSXe)", "emulator": "ePSXe", "exclusion_note": "Left out are the files ePSXe writes and reads back itself, which are emulator state rather than files a user has to obtain: the epsxerc configuration and the per-title profiles under config, the memory cards memcards/epsxe000.mcr and epsxe001.mcr with the per-game pairs memcards/games/<name>-00.mcr and -01.mcr and the Windows scratch pair memcards/temp.000 and temp.001, the savestates and their .pic thumbnails under sstates, the ECM indexes under idx, the game list and scan records under info, epsxe.log, and shadererr.txt, which is only written when a shader stage fails to compile. Left out with them are the ROM images themselves and the .cue, .ccd, .mds, .ecm and .pbp sidecars of a disc. The HLE BIOS is not a file either: it is code, and the ASCII and JIS fonts it draws with are compiled into the binary as bios_ascii_font and bios_jis_font. ref: ePSXe 2.0.5 Linux x64 write_configuration 0x42d330,\n     ePSXe 2.0.5 Linux x64 bios_ascii_font 0x883740,\n     ePSXe 2.0.5 Linux x64 bios_jis_font 0x883d00,\n     ePSXe 2.0.5 Linux x64 0x565110, ePSXe 2.0.5 Linux x64 0x56d164,\n     ePSXe 2.0.18 Windows 0x595600\n", "files": [{"config_key": "BiosPath", "description": "SCPH-1000, DTL-H1000 (v1.0 J)", "hle_fallback": true, "md5": "239665b1a3dade1b5a52c06338011044", "name": "scph1000.bin", "note": "Windows names this image scph1000 - JP and identifies it by id 0xb817c93d.", "path": "bios/scph1000.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ScanBiosTask.java:162-172, ePSXe 2.0.18 Windows 0x5c10b4", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-1001, DTL-H1201, DTL-H3001 (v2.2 12-04-95 A)", "hle_fallback": true, "md5": "924e392ed05558ffdb115408c263dccf", "name": "scph1001.bin", "note": "The name the default BiosPath and biosPref point at on every platform. Windows names it scph1001 - US (Recommended) and identifies it by id 0x4c1e4c6a.", "path": "bios/scph1001.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.5 Linux x64 write_configfiledefault 0x42ae99, ePSXeReadPreferences.java:21, ePSXe 2.0.18 Windows 0x5c10d8", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "DTL-H1001 (v2.0 05-07-95 A)", "hle_fallback": true, "md5": "dc2b9bf8da62ec93e868cfd29f0d067d", "name": "scph1001_v20.bin", "note": "Windows names this image scph1200 - JP and identifies it by id 0xdac96c37.", "path": "bios/scph1001_v20.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c1120", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-1002, DTL-H1002 (v2.0 05-10-95 E)", "hle_fallback": true, "md5": "54847e693405ffeb0359c6287434cbef", "name": "scph1002a.bin", "note": "Windows names this image scph1002 - PAL and identifies it by id 0xea0b1691.", "path": "bios/scph1002a.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c10fc", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-3000, DTL-H1000H (v1.1 01-22-95)", "hle_fallback": true, "md5": "849515939161e62f6b866f6853006780", "name": "scph3000.bin", "note": "Windows names this image scph3000 - JP and identifies it by id 0x4d0889a4.", "path": "bios/scph3000.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c1144", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-3500 (v2.1 07-17-95 J)", "hle_fallback": true, "md5": "cba733ceeff5aef5c32254f1d617fa62", "name": "scph3500.bin", "note": "Windows names this image scph3500 - JP and identifies it by id 0x4dab5145.", "path": "bios/scph3500.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c1168", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "biosPref", "description": "DTL-H1100 (v2.2 03-06-96 D)", "hle_fallback": true, "md5": "ca5cfc321f916756e3f0effbfaeba13b", "name": "dtlh1100.bin", "note": "Known to the Android table alone; no Windows record carries its checksum.", "path": "bios/dtlh1100.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ScanBiosTask.java:162-172", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "biosPref", "description": "DTL-H1101 (v2.1 07-17-95 A)", "hle_fallback": true, "md5": "da27e8b6dab242d8f91a9b25d80c63b8", "name": "scph1001_v21.bin", "note": "Known to the Android table alone; no Windows record carries its checksum.", "path": "bios/scph1001_v21.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ScanBiosTask.java:162-172", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "biosPref", "description": "SCPH-1002, DTL-H1102 (v2.1 07-17-95 E)", "hle_fallback": true, "md5": "417b34706319da7cf001e76e40136c23", "name": "scph1002b.bin", "note": "Known to the Android table alone; no Windows record carries its checksum.", "path": "bios/scph1002b.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ScanBiosTask.java:162-172", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "biosPref", "description": "SCPH-5000, DTL-H1200 (v2.2 12-04-95 J)", "hle_fallback": true, "md5": "57a06303dfa9cf9351222dfcbb4a29d9", "name": "scph5000.bin", "note": "Known to the Android table alone. The Windows record labelled scph5000 identifies a different dump.", "path": "bios/scph5000.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ScanBiosTask.java:162-172", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-1002, DTL-H1202, DTL-H3002 (v2.2 12-04-95 E)", "hle_fallback": true, "md5": "e2110b8a2b97a8e0b857a45d32f7e187", "name": "scph1002c.bin", "note": "Windows names this image dtlh3002 - PAL and identifies it by id 0xc8ec73c0.", "path": "bios/scph1002c.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c1090", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-5500 (v3.0 09-09-96 J)", "hle_fallback": true, "md5": "8dd7d5296a650fac7319bce665a6a53c", "name": "scph5500.bin", "note": "Windows names this image scph5500 - JP and identifies it by id 0xa8bc4eba.", "path": "bios/scph5500.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c11b0", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-5501, SCPH-7003 (v3.0 11-18-96 A)", "hle_fallback": true, "md5": "490f666e1afb15b7362b406ed1cea246", "name": "scph5501.bin", "note": "Windows names this image scph7003 - JP and identifies it by id 0xbe16f916.", "path": "bios/scph5501.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c1288", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-5502, SCPH-5552 (v3.0 01-06-97 E)", "hle_fallback": true, "md5": "32736f17079d0b2b7024407c39bd3050", "name": "scph5502.bin", "note": "Windows names this image scph5552 - PAL and identifies it by id 0x19181dce.", "path": "bios/scph5502.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c11f8", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-7000, SCPH-9000 (v4.0 08-18-97 J)", "hle_fallback": true, "md5": "8e4c14f567745eff2f0408c8129f72a6", "name": "scph7000.bin", "note": "Windows names this image scph7000 - JP and identifies it by id 0x43771cd1.", "path": "bios/scph7000.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c121c", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-7001, SCPH-7501, SCPH-7503, SCPH-9001 (v4.1 12-16-97 A)", "hle_fallback": true, "md5": "1e68c231d0896b7eadcad1d7d8e76129", "name": "scph7001.bin", "note": "Windows names this image scph7001 - US and identifies it by id 0x6c1ba989.", "path": "bios/scph7001.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c1240", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-7002, SCPH-7502, SCPH-9002 (v4.1 12-16-97 E)", "hle_fallback": true, "md5": "b9d9a0286c33dc6b7237bb13cd46fdee", "name": "scph7002.bin", "note": "The one dump three Windows records share, scph7002 - PAL, scph7502 - PAL (Recommended) and scph9002 - PAL, all carrying id 0x701bad89.", "path": "bios/scph7002.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c1264, ePSXe 2.0.18 Windows 0x5c12ac, ePSXe 2.0.18 Windows 0x5c12d0", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-100 (v4.3 03-11-00 J)", "hle_fallback": true, "md5": "8abc1b549a4a80954addc48ef02c4521", "name": "scph100.bin", "note": "Windows names this image scph100 - JP and identifies it by id 0x061a33e2.", "path": "bios/scph100.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c12f4", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-102 (v4.4 03-24-00 E)", "hle_fallback": true, "md5": "b10f5e0e3d9eb60e5159690680b1e774", "name": "scph102_v44.bin", "note": "Windows names this image scph102A - PAL and identifies it by id 0x9337252b, the A and B suffixes separating the two SCPH-102 revisions.", "path": "bios/scph102_v44.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c133c", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-101 (v4.5 05-25-00 A)", "hle_fallback": true, "md5": "6e3735ff4c7dc899ee98981385f6f3d0", "name": "scph101_v45.bin", "note": "Windows names this image scph101 - US and identifies it by id 0x6e7f8edd.", "path": "bios/scph101_v45.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c1318", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-102 (v4.5 05-25-00 E)", "hle_fallback": true, "md5": "de93caec13d1a141a40a79f5c86168d6", "name": "scph102_v45.bin", "note": "Windows names this image scph102B - PAL and identifies it by id 0x727f8add.", "path": "bios/scph102_v45.bin", "required": false, "size": 524288, "source_ref": "ScanBiosTask.java:28, ePSXe 2.0.18 Windows 0x5c1360", "system": "sony-playstation", "validation": ["size", "md5"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-5000, DTL-H1200, DTL-H3000 (v2.2 12-04-95 J), bad dump", "hle_fallback": true, "md5": "eb201d2d98251a598af467d4347bb62f", "name": "scph5000_b.bin", "note": "Recognised by Windows alone, as scph5000 - JP with id 0xa63468aa. That record is pinned on a checksum, not on a hash the code spells out; the md5 here is the dump that reproduces the checksum. TOSEC tags the same dump [b].", "path": "bios/scph5000_b.bin", "required": false, "size": 524288, "source_ref": "ePSXe 2.0.18 Windows 0x5c118c, ePSXe 2.0.18 Windows 0x42f525-0x42f568", "system": "sony-playstation", "validation": ["size"], "variant_group": "psx-bios"}, {"config_key": "BiosPath", "description": "SCPH-5502, SCPH-5552 (v3.0 01-06-97 E), bad dump", "hle_fallback": true, "md5": "e56ec1b027e2fe8a49217d9678f7f6bb", "name": "scph5502_b.bin", "note": "Recognised by Windows alone, as scph5502 - PAL with id 0x702fa307, resolved the same way as the SCPH-5000 bad dump above. TOSEC tags it [b].", "path": "bios/scph5502_b.bin", "required": false, "size": 524288, "source_ref": "ePSXe 2.0.18 Windows 0x5c11d4, ePSXe 2.0.18 Windows 0x42f525-0x42f568", "system": "sony-playstation", "validation": ["size"], "variant_group": "psx-bios"}, {"aliases": ["<game>.SBI"], "category": "game_data", "description": "subchannel data for a libcrypt protected disc", "name": "<game>.sbi", "note": "Named after the running disc. The uppercase extension is tried first and the lowercase one second, and a disc with neither runs on the built-in substitute, reported as fake .sbi.", "path": "patches/<game>.sbi", "required": false, "source_ref": "ePSXe 2.0.5 Linux x64 ISOtestsubchannel 0x46f198-0x46f263", "system": "sony-playstation"}, {"category": "game_data", "description": "cheat code database", "name": "database.dat", "note": "Opened read only from cheats at startup. Absent, the session runs with no library behind the per-title files.", "path": "cheats/database.dat", "required": false, "source_ref": "ePSXe 2.0.5 Linux x64 load_cheat_dynamic_database 0x431bc7-0x431bd0", "system": "sony-playstation"}, {"category": "game_data", "description": "cheat database index, keyed on the disc serial", "name": "dataconf.dat", "note": "Read after database.dat into CheatDataConf, mapping serials such as SLUS_011.60 onto entries of the library.", "path": "cheats/dataconf.dat", "required": false, "source_ref": "ePSXe 2.0.5 Linux x64 load_cheat_dynamic_database 0x431ca7-0x431cfa", "system": "sony-playstation"}, {"category": "game_data", "description": "cheat codes for one title", "name": "<code>.txt", "note": "Named after the disc serial and parsed as a list of hex address and value pairs under bracketed titles. Android downloads it from epsxe.com into the same directory.", "path": "cheats/<code>.txt", "required": false, "source_ref": "ePSXe 2.0.5 Linux x64 initGSCodes 0x432ea4-0x43304d, DownloadCheatFileTask.java:49-55", "system": "sony-playstation"}, {"category": "game_data", "description": "vertex stage of one GPUCORE shader effect", "name": "gpuCore.slv", "note": "One directory per effect. A stage that will not open logs the unable to read shader file message and the effect is dropped. The shaders pack on epsxe.com carries the set.", "path": "shaders/<name>/gpuCore.slv", "required": false, "source_ref": "ePSXe 2.0.5 Linux x64 createProgramCustom 0x4f7d7e-0x4f7db9, DownloadShaderPluginTask.java:68-76"}, {"category": "game_data", "description": "fragment stage of one GPUCORE shader effect", "name": "gpuCore.slf", "note": "Read straight after the vertex stage from the same directory.", "path": "shaders/<name>/gpuCore.slf", "required": false, "source_ref": "ePSXe 2.0.5 Linux x64 createProgramCustom 0x4f7dcd-0x4f7df1, DownloadShaderPluginTask.java:69-78"}, {"category": "game_data", "description": "parameters of one GPUCORE shader effect", "name": "gpuCore.ini", "note": "Read beside the two stages once they link. Not every effect in the pack ships one.", "path": "shaders/<name>/gpuCore.ini", "required": false, "source_ref": "ePSXe 2.0.5 Linux x64 readPropertiesProgramCustom 0x4f7c30, ePSXe 2.0.5 Linux x64 createProgramCustom 0x4f7f15, DownloadShaderPluginTask.java:70-80"}, {"category": "game_data", "description": "GLSlang vertex stage of the integrated Pete OpenGL2 plugin", "name": "gpuPeteOGL2.slv", "note": "Resolved under the configured shader directory, defaulting to SHADERS\\. Selected by the GLSlang shader effect setting.", "path": "shaders/gpuPeteOGL2.slv", "required": false, "source_ref": "ePSXe 2.0.18 Windows 0x4fbd79-0x4fbd7e, ePSXe 2.0.18 Windows 0x4fb220-0x4fb263"}, {"category": "game_data", "description": "GLSlang fragment stage of the integrated Pete OpenGL2 plugin", "name": "gpuPeteOGL2.slf", "note": "Read from the same directory as the vertex stage.", "path": "shaders/gpuPeteOGL2.slf", "required": false, "source_ref": "ePSXe 2.0.18 Windows 0x4fbe80, ePSXe 2.0.18 Windows 0x4fb220-0x4fb263"}, {"category": "game_data", "description": "ARB vertex program of the integrated Pete OpenGL2 plugin", "name": "gpuPeteOGL2.vp", "note": "The ARB alternative to the GLSlang pair, taken by a different value of the shader effect setting, and reporting the offset when the program fails to assemble.", "path": "shaders/gpuPeteOGL2.vp", "required": false, "source_ref": "ePSXe 2.0.18 Windows 0x4faaf2, ePSXe 2.0.18 Windows 0x59f534-0x59f580"}, {"category": "game_data", "description": "ARB fragment program of the integrated Pete OpenGL2 plugin", "name": "gpuPeteOGL2.fp", "note": "Read alongside the vertex program.", "path": "shaders/gpuPeteOGL2.fp", "required": false, "source_ref": "ePSXe 2.0.18 Windows 0x4fabbb, ePSXe 2.0.18 Windows 0x59f4c8-0x59f518"}, {"category": "game_data", "description": "linear lookup texture of the integrated Pete OpenGL2 plugin", "name": "gpuPeteOGL2_t<n>l.tga", "note": "Numbered per effect and resolved from the same directory as the shader stages. One of two names formatted into the same slot, the other being the nearest flavour, picked on the remainder of the effect index.", "path": "shaders/gpuPeteOGL2_t<n>l.tga", "required": false, "source_ref": "ePSXe 2.0.18 Windows 0x4fb429-0x4fb433, ePSXe 2.0.18 Windows 0x59f43c"}, {"category": "game_data", "description": "nearest lookup texture of the integrated Pete OpenGL2 plugin", "name": "gpuPeteOGL2_t<n>n.tga", "note": "The alternative to the linear flavour, taken when the index divides evenly, and read again on its own further in.", "path": "shaders/gpuPeteOGL2_t<n>n.tga", "required": false, "source_ref": "ePSXe 2.0.18 Windows 0x4fb3de, ePSXe 2.0.18 Windows 0x4fb573, ePSXe 2.0.18 Windows 0x59f424"}, {"aliases": ["libgpu<name>.so"], "category": "game_data", "description": "PSEmu Pro video plugin", "name": "gpu<name>.dll", "note": "Named by the VideoPlugin setting, opened from plugins and bound entry point by entry point, from GPUinit and GPUopen through GPUdmaChain to GPUregisterResolutionCallback, each missing symbol logged as a dlsym error. Windows enumerates the directory on gpu*.dll. The built-in GPUCORE and the integrated Pete OpenGL2 plugin need no file.", "path": "plugins/gpu<name>.dll", "required": false, "source_ref": "ePSXe 2.0.5 Linux x64 init_gpu 0x4408a1-0x440d5d, ePSXe 2.0.18 Windows 0x58aded", "system": "sony-playstation"}, {"aliases": ["libspu<name>.so"], "category": "game_data", "description": "PSEmu Pro sound plugin", "name": "spu<name>.dll", "note": "Named by the SoundPlugin setting. Windows enumerates the directory on spu*.dll. The built-in SPUCORE needs no file.", "path": "plugins/spu<name>.dll", "required": false, "source_ref": "ePSXe 2.0.5 Linux x64 init_spu_plugins, ePSXe 2.0.5 Linux x64 write_configfiledefault 0x42ae40", "system": "sony-playstation"}, {"aliases": ["libcdr<name>.so"], "category": "game_data", "description": "PSEmu Pro cdrom plugin", "name": "cdr<name>.dll", "note": "Enumerated on cdr*.dll and initialised through init_plugins_cdrom. Reading a disc image directly needs none.", "path": "plugins/cdr<name>.dll", "required": false, "source_ref": "ePSXe 2.0.5 Linux x64 init_plugins_cdrom, ePSXe 2.0.18 Windows 0x58af0d", "system": "sony-playstation"}, {"aliases": ["libpad<name>.so"], "category": "game_data", "description": "PSEmu Pro input plugin", "name": "pad<name>.dll", "note": "Named by the InputPlugin and Input2Plugin settings and loaded from plugins by LoadPadPlugins. The built-in INPUTCORE needs no file.", "path": "plugins/pad<name>.dll", "required": false, "source_ref": "ePSXe 2.0.5 Linux x64 LoadPadPlugins 0x51927e, ePSXe 2.0.5 Linux x64 write_configfiledefault 0x42ae57-0x42ae6e", "system": "sony-playstation"}, {"bundled": true, "category": "game_data", "description": "OpenGL2 renderer of the Android build", "name": "liboglplugin2.so", "note": "Android only. Read when the renderer setting is 5: a copy found under plugins is staged into the private directory and used, otherwise the one inside the package answers and the setting falls back to the software renderer if neither is there.", "path": "plugins/liboglplugin2.so", "required": false, "source_ref": "ePSXe.java:847-886", "system": "sony-playstation"}, {"bundled": true, "category": "game_data", "description": "extended OpenGL2 renderer of the Android build", "name": "libogl2extplugin.so", "note": "Android only. Same override path as liboglplugin2.so, taken when the renderer setting is 4.", "path": "plugins/libogl2extplugin.so", "required": false, "source_ref": "ePSXe.java:887-926", "system": "sony-playstation"}, {"category": "game_data", "description": "external OpenGL plugin of the Android build", "name": "libopenglplugin.so", "note": "Android only. Named by the gpuPref setting, which points at the root of shared storage by default and is also looked for under the package library directory and the secondary card.", "path": "libopenglplugin.so", "required": false, "source_ref": "ePSXe.java:927-966, ePSXeReadPreferences.java:32-34, ePSXe 2.0.15 libepsxe.so 0x176128, ePSXe 2.0.15 libepsxe.so 0x176160", "system": "sony-playstation"}, {"category": "game_data", "description": "in-app guide for one title", "name": "<code>.txt", "note": "Android only. Named after the disc serial and loaded into the help viewer as a local page; the menu entry is offered only when the file is there.", "path": "faqs/<code>.txt", "required": false, "source_ref": "ePSXe.java:1047, ePSXe.java:1857, ePSXe.java:1896", "system": "sony-playstation", "unsourceable": "guide text the user files under the disc serial"}, {"category": "game_data", "description": "on-screen controller skin", "name": "skin.png", "note": "Android only. Named by the skinPref setting, which points at the root of shared storage by default, and handed to the view as the input skin.", "path": "skin.png", "required": false, "source_ref": "ePSXeReadPreferences.java:36-38, ePSXeNative.java:702", "unsourceable": "pad artwork the user supplies"}, {"category": "game_data", "description": "cover art for one title", "name": "<hash>.jpg", "note": "Cached under covers and fetched from epsxe.com when absent, the desktop builds falling back to a shipped na.jpg when the fetch finds nothing.", "path": "covers/<hash>.jpg", "required": false, "source_ref": "ImageLoader.java:88, ePSXe 2.0.5 Linux x64 download_covers, ePSXe 2.0.5 Linux x64 0x572ea0", "system": "sony-playstation"}], "mode": "standalone", "notes": "PlayStation emulator, closed source and distributed as a binary. Five builds\nare read here. The desktop ones come from the download page: 2.0.18 Windows\n(md5 c1abd8cffcd0bc3dbd9c72b13bfc20e5, UPX packed, cited at the virtual\naddresses of the unpacked image), 2.0.5 Windows (bfa6eb173d9bae9b2e7983b23383c789),\n2.0.5 Linux x64 (52ef10e78aeec86f84105b7b59d375ee), 2.0.5 Linux x86\n(efe6c2c6303d4f7c5251166342bfb002) and 2.0.5 macOS x64\n(c4ca85710fbea827da2a1ce304536973). The Linux x64 build keeps 1771 of its own\nfunctions in .dynsym although it reports as stripped, so it is cited by\nfunction name. The Android side is package com.epsxe.ePSXe, versionCode 139\nversionName 2.0.15, apk md5 e18988b825f263bbc961bfbed1c4bc0b, with 2.0.6\n(fce9c60c5cbc4e075cf97a587e64eb78) read alongside it; both verify against the\nepsxe.com signing certificate (CN=epsxeteam, serial 0x4fdaca68), every entry\ndigest matches and none is unsigned. Two copies of 2.0.16 circulating on\narchive.org are repackaged, signed CN=A1 and ModYolo, and are not read here.\nref: epsxe.com/download.php, com.epsxe.ePSXe META-INF/CERT.RSA\n\nOne root holds everything. On Linux and macOS it is $HOME/.epsxe, created at\nstartup together with plugins, bios, cheats, sstates, patches, idx, config,\ninfo, covers, memcards, memcards/games, memcards/net, shaders and configs, and\nthe process chdirs into it. On Windows it is the program directory with the\nsame names. On Android it is a directory named epsxe at the root of shared\nstorage, holding sstates, bios, isos, cheats, config, idx, patches, plugins,\nfaqs, shaders, memcards and covers. Paths below are relative to that root.\nref: ePSXe 2.0.5 Linux x64 create_folders 0x42a727-0x42abcf,\n     ePSXe.java:1517, ePSXe.java:1541-1577\n\nExactly one BIOS file is ever loaded, and its full path is a setting, not a\nname the code looks for: BiosPath in $HOME/.epsxe/epsxerc on Linux and macOS,\nbiosPref in the shared preferences on Android, both defaulting to\nbios/scph1001.bin below the root. load_bios opens it read only, reads one block\nof 0x80000 bytes into the 0x80000-byte psxBIOS object and logs\n\" * ePSXe: PSX BIOS loaded [%s]. \". A file that will not open reaches\nemu_mesg_exit_error with \" * !Error: PSX BIOS not found [%s]. \" and the run\nends. The HLE branch, taken when the BiosHLE setting is on, skips the read\nentirely and logs \" * ePSXe: using HLE BIOS (compatibility limited)\", so any\none of the images below fills the slot and none of them is needed on its own.\nHLE arrived in 1.9.25 and savestates made under it are not interchangeable\nwith savestates made under a real image.\nref: ePSXe 2.0.5 Linux x64 load_bios 0x433540-0x433621,\n     ePSXe 2.0.5 Linux x64 bios_name_select 0x4334c0-0x4334f2,\n     ePSXe 2.0.5 Linux x64 write_configfiledefault 0x42ae99-0x42aeeb,\n     ePSXeReadPreferences.java:20-30, ePSXe.java:445-453,\n     docs/ePSXe_en.txt:260-271, docs/ePSXe_en.txt:883-888\n\nBoth consumer families carry a table of the images they recognise, and the two\ntables are built differently and do not hold the same set. Android ships 21\npairs of label and md5; findBios walks the tree to a depth of ten, skipping\nDCIM, Camera, asec, secure, dev, obb, .lfs and anything under /Android/data,\nkeeps files whose lowercased name ends in .bin and whose length is exactly\n524288, md5s each one and on a hit writes biosPref to that path and turns\nBiosHLE off. Windows ships 21 records of a 32-byte name and a 32-bit id, globs\nbios\\*.bin, reads each candidate whole and identifies it by a checksum of its\nown: over the 512 KB as big endian 16-bit words, the sum shifted left 16 bits\nor'd with the low 16 bits of the xor. That value is looked up only to name the\nimage in the setup wizard. The Linux and macOS builds carry neither table.\nSeventeen dumps are in both tables; four are known to Android alone; two are\nknown to Windows alone and both turn out to be dumps TOSEC marks [b].\nref: ScanBiosTask.java:28, ScanBiosTask.java:145-191, ePSXeNative.java:280,\n     ePSXe 2.0.18 Windows 0x5c1090-0x5c1384, ePSXe 2.0.18 Windows 0x5c108c,\n     ePSXe 2.0.18 Windows 0x42f264-0x42f2c7,\n     ePSXe 2.0.18 Windows 0x42f4b0-0x42f568,\n     ePSXe 2.0.18 Windows 0x42f584-0x42f5b4\n\nNo region decides which image is taken. findBios keeps the first md5 that\nanswers anywhere in the walk, the Windows ids only pick a label to display, and\nthe JP, US and PAL words are part of that label string. Automatic selection of\na required BIOS per game existed once and was removed because it stopped\nLegend of Dragoon US and Wild Arms 2 US from running.\nref: ScanBiosTask.java:167-171, ePSXe 2.0.18 Windows 0x42f5aa-0x42f5c2,\n     docs/ePSXe_en.txt:1243-1244\n\nVideo, sound, cdrom and input go through the PSEmu Pro plugin interface.\ninit_gpu builds plugins/<name> from the configured name, dlopens it and\nresolves GPUinit, GPUopen, GPUdmaChain and the rest of the entry points one by\none; init_spu_plugins and LoadPadPlugins do the same for their own. Windows\nenumerates gpu*.dll, spu*.dll and cdr*.dll in plugins\\. GPUCORE, SPUCORE and\nINPUTCORE are the built-in defaults and are not files. Android has no PSEmu Pro\nloader: its two OpenGL renderers ship inside the package and are only replaced\nwhen a file of the matching name is found under plugins.\nref: ePSXe 2.0.5 Linux x64 init_gpu 0x4408a1-0x440bc0,\n     ePSXe 2.0.5 Linux x64 LoadPadPlugins 0x51927e,\n     ePSXe 2.0.5 Linux x64 write_configfiledefault 0x42ae29-0x42ae6e,\n     ePSXe.java:842-977\n\nPer-title files are looked up beside the running game. ISOtestsubchannel reads\npatches/<name>.SBI, then patches/<name>.sbi, and reports \" * Subchannel support\nfrom .sbi file. \" when one answers. initGSCodes reads the cheat file\ncheats/<code>.txt keyed on the game code, on top of the two cheat databases\nload_cheat_dynamic_database opens from cheats. Android downloads the same cheat\nfile from epsxe.com into cheats, reads faqs/<code>.txt into its help viewer and\nfills covers from epsxe.com.\nref: ePSXe 2.0.5 Linux x64 ISOtestsubchannel 0x46f198-0x46f263,\n     ePSXe 2.0.5 Linux x64 initGSCodes 0x432ea4-0x432f11,\n     ePSXe 2.0.5 Linux x64 load_cheat_dynamic_database 0x431bc7-0x431cac,\n     DownloadCheatFileTask.java:49-55, ePSXe.java:1047, ePSXe.java:1896,\n     ImageLoader.java:88\n\nShaders are directories, not single files. createProgramCustom reads\n<dir>/gpuCore.slv and <dir>/gpuCore.slf and readPropertiesProgramCustom reads\n<dir>/gpuCore.ini beside them, one directory per effect, and a stage that will\nnot open logs \" (unable to read shader file %s) \". The shaders pack on\nepsxe.com carries these triplets and Android pulls the same set one file at a\ntime from an index it downloads first. The integrated Pete OpenGL2 plugin has\nits own set under the configured shader directory, defaulting to SHADERS\\.\nref: ePSXe 2.0.5 Linux x64 createProgramCustom 0x4f7d7e-0x4f7f42,\n     ePSXe 2.0.18 Windows 0x4fb220-0x4fb263,\n     DownloadShaderPluginTask.java:56-80\n", "profiled_date": "2026-08-11", "source": "https://www.epsxe.com/download.php", "systems": ["sony-playstation"], "type": "standalone", "upstream": "closed-source"}


id: fake08
name: FAKE-08
type: libretro
classification: game_engine
source: https://github.com/jtothebell/fake-08
upstream: https://github.com/jtothebell/fake-08
source_commit: 3e89519ca4b4eaf65be9e8cb982ea2c1ccd34e5d
profile_json:
{"core_classification": "game_engine", "core_version": "v0.0.2.19", "cores": ["fake08"], "display_name": "PICO-8 (FAKE-08)", "emulator": "FAKE-08", "exclusion_note": "all engine resources compiled into binary via include_bytes!", "files": [], "notes": "FAKE-08 is an open-source PICO-8 compatible runtime for running .p8 and\n.p8.png cartridges on platforms where the official PICO-8 binary is not\navailable (3DS, Vita, Switch, Wii U, various handhelds).\n\nThe core retrieves RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY in\nretro_set_environment() (libretro.cpp:162-163) but never uses the value.\nNo file is loaded from the system directory. The PICO-8 boot sequence,\nglobal Lua functions, and default cart menu are compiled directly into the\nbinary as string constants (p8GlobalLuaFunctions.h, DefaultCart.h).\n\nWhen no ROM is passed (supports_no_game = true), the core queues its\nbuilt-in BIOS cart \"__FAKE08-BIOS.p8\" (libretro.cpp:751). This is not\nan external file -- it is generated internally by the VM.\n\nThe core accepts .p8 (text) and .png (cartridge-as-image) formats\n(libretro.cpp:258). Content is loaded either via the libretro data buffer\nor full path depending on the _NEED_FULL_PATH_ compile flag.\n", "platform_details": {"cartridge_format": {"extensions": "p8, png", "note": ".p8 is the PICO-8 text cartridge format containing Lua code, gfx,\ngff, map, sfx, and music sections. .png is the cartridge-as-image\nformat where cart data is steganographically encoded in the image.\n", "source_ref": "platform/libretro/libretro.cpp:258"}, "runtime": {"note": "The FAKE-08 VM reimplements the PICO-8 API (128x128 screen, 16 colors,\n4-channel audio, Lua scripting) entirely in C++. The built-in BIOS\nprovides a cart browser and error display. Audio runs at 22050 Hz\nwith save state support via custom serialization (libretro.cpp:517-736).\n", "source_ref": "source/vm.h, source/p8GlobalLuaFunctions.h"}}, "profiled_date": "2026-03-23", "source": "https://github.com/jtothebell/fake-08", "source_commit": "3e89519ca4b4eaf65be9e8cb982ea2c1ccd34e5d", "systems": ["pico8"], "type": "libretro", "upstream": "https://github.com/jtothebell/fake-08"}


id: fbalpha2012
name: FB Alpha 2012
type: libretro
classification: frozen_snapshot
source: https://github.com/libretro/fbalpha2012
upstream: https://www.fbalpha.com
source_commit: 0ce31536bef3162fe7e69ff5f555334ec4913cef
profile_json:
{"core_classification": "frozen_snapshot", "core_version": "v0.2.97.29", "cores": ["fbalpha2012", "fbalpha"], "display_name": "Arcade (FB Alpha 2012)", "emulator": "FB Alpha 2012", "exclusion_note": "All BIOS ROMs (Neo Geo, PGM, CPS-3, Sega) are inside game ROM set ZIPs, not standalone system files. neogeo.zip is a parent ROM set loaded automatically by the emulator when a Neo Geo game is started.", "files": [{"description": "High score persistence database", "name": "hiscore.dat", "note": "Loaded from save directory (g_save_dir). Gated by EnableHiscores core option and per-game BDF_HISCORE_SUPPORTED flag.", "required": false, "source_ref": "svn-current/trunk/src/burn/hiscore.cpp:411"}, {"category": "game_data", "description": "Donkey Kong audio samples", "name": "dkong.zip", "note": "WAV samples for Donkey Kong and clones (dkongo, dkongj, dkongjo, dkongjo1, dkongf, dkongx, dkongx11)", "path": "fba2012/samples/dkong.zip", "required": false, "source_ref": "svn-current/trunk/src/burn/snd/samples.cpp:248,262"}, {"category": "game_data", "description": "Donkey Kong Jr audio samples", "name": "dkongjr.zip", "note": "WAV samples for Donkey Kong Jr and clones (dkongjrj, dkongjnrj, dkongjrb, jrking, dkingjr, dkongjre)", "path": "fba2012/samples/dkongjr.zip", "required": false, "source_ref": "svn-current/trunk/src/burn/snd/samples.cpp:248,262"}, {"category": "game_data", "description": "Galaga audio samples", "name": "galaga.zip", "note": "WAV samples for Galaga and clones (galagao, galagamw, galagamk, galagamf, gallag)", "path": "fba2012/samples/galaga.zip", "required": false, "source_ref": "svn-current/trunk/src/burn/snd/samples.cpp:248,262"}, {"category": "game_data", "description": "Rally-X audio samples", "name": "rallyx.zip", "note": "WAV samples for Rally-X and clones (rallyxa, rallyxm, rallyxmr, nrallyx)", "path": "fba2012/samples/rallyx.zip", "required": false, "source_ref": "svn-current/trunk/src/burn/snd/samples.cpp:248,262"}, {"category": "game_data", "description": "Ghox audio samples", "name": "ghox.zip", "note": "WAV samples for Ghox and Ghox (joystick). Substitutes undumped MCU sound.", "path": "fba2012/samples/ghox.zip", "required": false, "source_ref": "svn-current/trunk/src/burn/snd/samples.cpp:248,262"}, {"category": "game_data", "description": "Fire Shark / Same! Same! Same! audio samples", "name": "fireshrk.zip", "note": "WAV samples for Fire Shark and clones (fireshrkd, fireshrkdh, samesame, samesame2)", "path": "fba2012/samples/fireshrk.zip", "required": false, "source_ref": "svn-current/trunk/src/burn/snd/samples.cpp:248,262"}, {"category": "game_data", "description": "Teki Paki audio samples", "name": "tekipaki.zip", "path": "fba2012/samples/tekipaki.zip", "required": false, "source_ref": "svn-current/trunk/src/burn/snd/samples.cpp:248,262"}, {"category": "game_data", "description": "Vimana audio samples", "name": "vimana.zip", "note": "WAV samples for Vimana and clones (vimanan, vimanaj)", "path": "fba2012/samples/vimana.zip", "required": false, "source_ref": "svn-current/trunk/src/burn/snd/samples.cpp:248,262"}], "notes": "Frozen snapshot of Final Burn Alpha v0.2.97.29 (circa 2012), full version.\nSupports CPS-1, CPS-2, CPS-3, Neo Geo, PGM, Sega, Cave, Toaplan, and more.\n\nMultiple arcade systems have BIOS ROMs marked BRF_BIOS in source:\n\nNeo Geo (d_neogeo.cpp:923-1011): neogeo.zip ROM set contains ~35 BIOS variants\n  - 68K BIOS: asia-s3.rom (default), sp-s2.sp1, sp-s.sp1, sp-u2.sp1, sp-e.sp1,\n    vs-bios.rom, sp-j2.sp1, sp1.jipan.1024, sp-45.sp1, japan-j3.bin, neo-po.bin,\n    neo-epo.bin, neodebug.bin, sp-1v1_3db8c.bin, 16 Universe BIOS variants,\n    neopen.sp1, plus PCB/CD/trackball BIOS variants\n  - Z80 BIOS: sm1.sm1 (sound program)\n  - Graphics: sfix.sfix (text layer tiles)\n  - Data: 000-lo.lo (zoom table)\n  - Neo Geo CD: neocd.bin\n\nPGM (d_pgm.cpp:303-379): per-game BIOS sets in each ROM ZIP\n  - pgm_t01s.rom (text tiles), pgm_m01s.rom (samples),\n    pgm_p01s.u20/pgm_p02s.u20 (68K BIOS v1/v2),\n    ddp3_bios.u37, bios.u42, svg_bios.u49 (custom per-game)\n\nCPS-3 (d_cps3.cpp): 18 SH-2 BIOS variants, 512 KB each, region-specific\n  (see fbalpha2012_cps3.yml for full list)\n\nSega System 16B (d_sys16b.cpp:8900): ism2006v00.u1\n\nAll BIOS files are part of their respective game ROM set ZIPs (arcade standard).\nNone are standalone system directory files. The .info note \"BIOS files must be\ninside the ROM directory\" refers to the ROM directory containing the game ZIPs,\nwhich already include their BIOS.\n\nROM path: g_rom_dir from content path.\nSample path: g_system_dir/fba2012/samples/ (samples.cpp:248).\nHiscore path: g_save_dir/hiscore.dat (hiscore.cpp:411).\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/fbalpha2012", "source_commit": "0ce31536bef3162fe7e69ff5f555334ec4913cef", "systems": ["arcade", "neogeo", "cps1", "cps2", "cps3", "pgm"], "type": "libretro", "upstream": "https://www.fbalpha.com"}


id: fbalpha2012_cps1
name: FB Alpha 2012 CPS-1
type: libretro
classification: frozen_snapshot
source: https://github.com/libretro/fbalpha2012_cps1
upstream: https://www.fbalpha.com
source_commit: 5542c1848ef81e92db311193b01dc349bc29d7cc
profile_json:
{"core_classification": "frozen_snapshot", "core_version": "v0.2.97.28", "cores": ["fbalpha2012_cps1"], "display_name": "Arcade (FB Alpha 2012 CPS-1)", "emulator": "FB Alpha 2012 CPS-1", "files": [{"description": "High score database, loaded from system directory", "name": "hiscore.dat", "path": "fbalpha2012/hiscore.dat", "required": false, "source_ref": "src/burn/hiscore.cpp:226"}], "notes": "Frozen snapshot of Final Burn Alpha v0.2.97.28 (circa 2012), CPS-1 only.\nExists for RAM-constrained platforms (3DS, embedded). Most users should use FBNeo.\n\nCPS-1 has no system BIOS. Each game's ROM set is self-contained:\n68000 program ROMs + Z80 sound program + GFX ROMs + (optional) QSound samples.\nQSound games (Cadillacs & Dinosaurs, etc.) include audio samples directly in\ntheir ROM set (cd-q1.1k through cd-q4.4k), not as a separate DSP BIOS.\n\nBoard PLDs (buf1, ioa1, prg1, rom1, sou1) are listed in ROM definitions as\nBRF_OPT (optional). These are GAL/PAL dumps for hardware preservation —\nnever loaded by the emulator.\n\nROM path: ROMs are loaded from the content directory (g_rom_dir).\nsystem_directory (libretro.cpp:2202) is used only for hiscore.dat.\n\nThe .info note \"BIOS files must be inside the ROM directory\" is misleading —\nthere are no BIOS files for CPS-1. This note is generic across all FBA cores.\n\n244 ROM sets defined (488 STD_ROM_PICK/FN entries = 244 games).\nis_experimental=false, need_fullpath=true, block_extract=true.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/fbalpha2012_cps1", "source_commit": "5542c1848ef81e92db311193b01dc349bc29d7cc", "systems": ["cps1"], "type": "libretro", "upstream": "https://www.fbalpha.com"}


id: fbalpha2012_cps2
name: FB Alpha 2012 CPS-2
type: libretro
classification: frozen_snapshot
source: https://github.com/libretro/fbalpha2012_cps2
upstream: https://www.fbalpha.com
source_commit: e3f3ae46f120228b74d41e2b2862f1fbf1d7eb5b
profile_json:
{"core_classification": "frozen_snapshot", "core_version": "v0.2.97.28", "cores": ["fbalpha2012_cps2"], "display_name": "Arcade (FB Alpha 2012 CPS-2)", "emulator": "FB Alpha 2012 CPS-2", "files": [{"description": "High score persistence database", "name": "hiscore.dat", "note": "Loaded from <system_dir>/fbalpha2012/hiscore.dat", "path": "fbalpha2012/hiscore.dat", "required": false, "source_ref": "src/burn/hiscore.c:228-232"}], "notes": "Frozen snapshot of Final Burn Alpha v0.2.97.28 (circa 2012), CPS-2 only.\nExists for RAM-constrained platforms (3DS, embedded).\n\nCPS-2 has no system BIOS. Each game's ROM set is self-contained:\n68000 program ROMs + Z80 sound program + GFX ROMs + QSound samples.\nZero BRF_BIOS entries in entire codebase. No BRF_OPT entries either\n(PLD references stripped from this CPS-2-only build).\n\nQSound emulated in software (qs_c.c). No external QSound DSP ROM needed.\nAll audio data loaded from game ROM ZIP.\n\nROMs loaded from content directory (g_rom_dir, libretro.cpp:969).\ng_system_dir used only for hiscore.dat (hiscore.c:228-232).\n\nHiscore support gated by fba2012cps2_hiscores core option\n(libretro.cpp:561-563) and per-game BDF_HISCORE_SUPPORTED flag.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/fbalpha2012_cps2", "source_commit": "e3f3ae46f120228b74d41e2b2862f1fbf1d7eb5b", "systems": ["cps2"], "type": "libretro", "upstream": "https://www.fbalpha.com"}


id: fbalpha2012_cps3
name: FB Alpha 2012 CPS-3
type: libretro
classification: frozen_snapshot
source: https://github.com/libretro/fbalpha2012_cps3
upstream: https://www.fbalpha.com
source_commit: 57f8015c2e0cdebcf42d3add2c314bb7448f9421
profile_json:
{"core_classification": "frozen_snapshot", "core_version": "v0.2.97.29", "cores": ["fbalpha2012_cps3"], "display_name": "Arcade (FB Alpha 2012 CPS-3)", "emulator": "FB Alpha 2012 CPS-3", "exclusion_note": "CPS-3 BIOS ROMs (SH-2 flash, 18 variants) are part of each game's ROM set ZIP archive, not standalone system files. Users obtain them as part of the arcade ROM set, not separately.", "files": [{"description": "High score persistence database", "name": "hiscore.dat", "note": "Loaded from save directory (g_save_dir)", "required": false, "source_ref": "svn-current/trunk/src/burn/hiscore.cpp:116-118"}], "notes": "Frozen snapshot of Final Burn Alpha v0.2.97.29 (circa 2012), CPS-3 only.\nExists for RAM-constrained platforms. Most users should use FBNeo.\n\nCPS-3 uses a Hitachi SH-2 CPU with per-game, per-region BIOS ROMs.\nEach BIOS is a 512 KB (0x080000) 29F400 flash chip dump, region-locked.\nBIOS ROMs are marked BRF_ESS | BRF_BIOS in the ROM definitions.\n\nBIOS is loaded into RomBios (cps3run.cpp:1048-1064), byte-swapped to\nlittle-endian, then decrypted via cps3_decrypt_bios() (cps3run.cpp:255).\nThe SH-2 boots from BIOS, which initializes hardware and loads the game\nprogram from simulated flash/CD-ROM.\n\nBIOS files are INSIDE the game ROM set ZIP (arcade standard), not separate\nsystem directory files. Each game variant has its own region BIOS.\n\nUnique BIOS ROMs across all ROM sets (CRC32 from source):\n  sfiii_usa.29f400.u2           0xfb172a8e  SF3: New Generation (USA)\n  sfiii_japan.29f400.u2         0x74205250  SF3: New Generation (Japan)\n  sfiii_hispanic.29f400.u2      0xd2b3cd48  SF3: New Generation (Hispanic)\n  sfiii_asia_nocd.29f400.u2     0x73e32463  SF3: New Generation (Asia NoCD)\n  sfiii2_usa.29f400.u2          0x75dd72e0  SF3: 2nd Impact (USA)\n  sfiii2_japan.29f400.u2        0xfaea0a3e  SF3: 2nd Impact (Japan)\n  sfiii2_asia_nocd.29f400.u2    0xfd297c0d  SF3: 2nd Impact (Asia NoCD)\n  sfiii3_euro.29f400.u2         0x30bbf293  SF3: 3rd Strike (Euro)\n  sfiii3_usa.29f400.u2          0xecc545c1  SF3: 3rd Strike (USA)\n  sfiii3_japan_nocd.29f400.u2   0x1edc6366  SF3: 3rd Strike (Japan NoCD)\n  jojo_usa.29f400.u2            0x8d40f7be  JoJo's Venture (USA)\n  jojo_japan.29f400.u2          0x02778f60  JoJo's Venture (Japan)\n  jojo_asia_nocd.29f400.u2      0x05b4f953  JoJo's Venture (Asia NoCD)\n  jojoba_japan.29f400.u2        0x3085478c  JoJo's Bizarre Adventure (Japan)\n  jojoba_japan_nocd.29f400.u2   0x4dab19f5  JoJo's Bizarre Adventure (Japan NoCD)\n  jojoba_euro_nocd.29f400.u2    0x1ee2d679  JoJo's Bizarre Adventure (Euro NoCD)\n  redearth_euro.29f400.u2       0x02e0f336  Red Earth (Euro)\n  warzard_japan.29f400.u2       0xf8e2f0c6  Warzard (Japan)\n\n18 unique BIOS ROMs, all 512 KB, all region-specific.\nThese are arcade ROM set components, not user-supplied BIOS files.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/fbalpha2012_cps3", "source_commit": "57f8015c2e0cdebcf42d3add2c314bb7448f9421", "systems": ["cps3"], "type": "libretro", "upstream": "https://www.fbalpha.com"}


id: fbalpha2012_neogeo
name: FB Alpha 2012 Neo Geo
type: libretro
classification: frozen_snapshot
source: https://github.com/libretro/fbalpha2012_neogeo
upstream: https://www.fbalpha.com
source_commit: ce4949b1557cc7134e736342801ed25b2f3bd790
profile_json:
{"core_classification": "frozen_snapshot", "core_version": "v0.2.97.29", "cores": ["fbalpha2012_neogeo"], "display_name": "Arcade (FB Alpha 2012 Neo Geo)", "emulator": "FB Alpha 2012 Neo Geo", "exclusion_note": "Neo Geo BIOS is a parent ROM set (neogeo.zip) placed in the ROM directory alongside game ZIPs. Not a system directory file — follows arcade ROM set convention.", "files": [], "notes": "Frozen snapshot of Final Burn Alpha v0.2.97.29 (circa 2012), Neo Geo only.\nExists for RAM-constrained platforms. Most users should use FBNeo.\n\nNeo Geo requires a BIOS ROM set (neogeo.zip) placed alongside game ROMs.\nThe BIOS set contains ~35 variants (d_neogeo.cpp:903-981), all BRF_BIOS:\n\n68K main BIOS (BRF_SELECT, one active at a time):\n  asia-s3.rom       0x91b64be3  MVS Asia/Europe ver. 6 (default)\n  sp-s2.sp1         0x9036d879  MVS Asia/Europe ver. 5\n  sp-s.sp1          0xc7f2fa45  MVS Asia/Europe ver. 3 (4 slot)\n  sp-u2.sp1         0xe72943de  MVS USA ver. 5 (2 slot)\n  sp-e.sp1          0x2723a5b5  MVS USA ver. 5 (6 slot)\n  vs-bios.rom       0xf0e8f27d  MVS Japan ver. 6\n  sp-j2.sp1         0xacede59c  MVS Japan ver. 5\n  sp1.jipan.1024    0x9fb0abe4  MVS Japan ver. 3 (4 slot)\n  sp-45.sp1         0x03cc9f6a  NEO-MVH MV1C (512 KB)\n  japan-j3.bin      0xdff6d41f  MVS Japan (J3)\n  neo-po.bin        0x16d0c132  AES Japan\n  neo-epo.bin       0xd27a71f1  AES Asia\n  neodebug.bin      0x698ebb7d  Development Kit\n  sp-1v1_3db8c.bin  0x162f0ebe  Deck ver. 6 (Git Ver 1.3)\n  uni-bios_4_0.rom  0xa7aab458  Universe BIOS 4.0\n  (+ 14 more Universe BIOS variants, versions 1.0-3.3)\n  neopen.sp1        0xcb915e76  NeoOpen BIOS v0.1 beta\n\nSystem ROMs (always required):\n  sm1.sm1           0x94416d67  Z80 BIOS (sound program)\n  sfix.sfix         0xc2ea0cfd  Text layer tiles (fix layer)\n  000-lo.lo         0x5a86cff2  Zoom table\n\nSpecial sets:\n  236-bios.sp1      0x853e6b96  Trackball BIOS\n  sp-4x.sp1         0xb4590283  PCB BIOS\n  spj.sp1           0x148dd727  PCB BIOS (Japan)\n  neocd.bin          0xdf9de490  Neo Geo CD BIOS\n\nneogeo.zip is a parent ROM set, loaded from g_rom_dir alongside game ZIPs.\ng_system_dir is set (libretro.cpp:3016) but never used for file loading.\n\nThe .info note \"BIOS files must be inside the ROM directory\" is accurate here:\nneogeo.zip must be in the same directory as game ROM ZIPs.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/fbalpha2012_neogeo", "source_commit": "ce4949b1557cc7134e736342801ed25b2f3bd790", "systems": ["neogeo"], "type": "libretro", "upstream": "https://www.fbalpha.com"}


id: fbneo
name: FinalBurn Neo
type: libretro
classification: official_port
source: https://github.com/libretro/FBNeo
upstream: https://github.com/finalburnneo/FBNeo
source_commit: ef1f64b7023bc511858e96b8961f99c18a09f112
profile_json:
{"archive_prefix": "fbneo", "core_classification": "official_port", "core_version": "v1.0.0.2", "cores": ["fbneo"], "data_directories": [{"destination": "fbneo/cheats", "ref": "fbneo-cheats", "source_ref": "src/burner/conc.cpp:167"}, {"destination": "fbneo", "ref": "fbneo-samples", "source_ref": "src/burn/snd/samples.cpp:21-35"}], "display_name": "Arcade (FinalBurn Neo)", "emulator": "FinalBurn Neo", "files": [{"archive": "neogeo.zip", "crc32": "91b64be3", "name": "sp-s3.sp1", "note": "MVS Asia/Europe ver. 6 (1 slot) - default BIOS", "required": true, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1624", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "9036d879", "name": "sp-s2.sp1", "note": "MVS Asia/Europe ver. 5 (1 slot)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1625", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "c7f2fa45", "name": "sp-s.sp1", "note": "MVS Asia/Europe ver. 3 (4 slot)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1626", "system": "snk-neogeo-mvs"}, {"aliases": ["usa_2slt.bin"], "archive": "neogeo.zip", "crc32": "e72943de", "name": "sp-u2.sp1", "note": "MVS USA ver. 5 (2 slot)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1627", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "62f021f4", "name": "sp1-u2", "note": "MVS USA ver. 5 (4 slot)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1628", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "2723a5b5", "name": "sp-e.sp1", "note": "MVS USA ver. 5 (6 slot)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1629", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "1179a30f", "name": "sp1-u4.bin", "note": "MVS USA (U4)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1630", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "2025b7a2", "name": "sp1-u3.bin", "note": "MVS USA (U3)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1631", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "f0e8f27d", "name": "vs-bios.rom", "note": "MVS Japan ver. 6", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1632", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "acede59c", "name": "sp-j2.sp1", "note": "MVS Japan ver. 5", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1633", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "9fb0abe4", "name": "sp1.jipan.1024", "note": "MVS Japan ver. 3 (4 slot)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1634", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "03cc9f6a", "name": "sp-45.sp1", "note": "NEO-MVH MV1C (Asia)", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1635", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "486cb450", "name": "sp-j3.sp1", "note": "NEO-MVH MV1C (Japan)", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1636", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "dff6d41f", "name": "japan-j3.bin", "note": "MVS Japan (J3)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1637", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "fbc6d469", "name": "sp1-j3.bin", "note": "MVS Japan (J3, alt)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1638", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "16d0c132", "name": "neo-po.bin", "note": "AES Japan", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1640", "system": "snk-neogeo-aes"}, {"archive": "neogeo.zip", "crc32": "d27a71f1", "name": "neo-epo.bin", "note": "AES Asia", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1641", "system": "snk-neogeo-aes"}, {"archive": "neogeo.zip", "crc32": "698ebb7d", "name": "neodebug.bin", "note": "Development Kit BIOS", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1642", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "162f0ebe", "name": "sp-1v1_3db8c.bin", "note": "Deck ver. 6 (Git Ver 1.3)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1648", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "a7aab458", "name": "uni-bios_4_0.rom", "note": "Universe BIOS ver. 4.0 (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1649", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "24858466", "name": "uni-bios_3_3.rom", "note": "Universe BIOS ver. 3.3 (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1650", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "a4e8b9b3", "name": "uni-bios_3_2.rom", "note": "Universe BIOS ver. 3.2 (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1651", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "0c58093f", "name": "uni-bios_3_1.rom", "note": "Universe BIOS ver. 3.1 (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1652", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "a97c89a9", "name": "uni-bios_3_0.rom", "note": "Universe BIOS ver. 3.0 (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1653", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "27664eb5", "name": "uni-bios_2_3.rom", "note": "Universe BIOS ver. 2.3 (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1654", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "601720ae", "name": "uni-bios_2_3o.rom", "note": "Universe BIOS ver. 2.3 older (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1655", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "2d50996a", "name": "uni-bios_2_2.rom", "note": "Universe BIOS ver. 2.2 (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1656", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "8dabf76b", "name": "uni-bios_2_1.rom", "note": "Universe BIOS ver. 2.1 (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1657", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "0c12c2ad", "name": "uni-bios_2_0.rom", "note": "Universe BIOS ver. 2.0 (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1658", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "b24b44a0", "name": "uni-bios_1_3.rom", "note": "Universe BIOS ver. 1.3 (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1659", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "4fa698e9", "name": "uni-bios_1_2.rom", "note": "Universe BIOS ver. 1.2 (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1660", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "e19d3ce9", "name": "uni-bios_1_2o.rom", "note": "Universe BIOS ver. 1.2 older (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1661", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "5dda0d84", "name": "uni-bios_1_1.rom", "note": "Universe BIOS ver. 1.1 (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1662", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "0ce453a0", "name": "uni-bios_1_0.rom", "note": "Universe BIOS ver. 1.0 (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1663", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "cb915e76", "name": "neopen.sp1", "note": "NeoOpen BIOS v0.1 beta (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1665", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "94416d67", "name": "sm1.sm1", "note": "Z80 sound BIOS", "required": true, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1672", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "c2ea0cfd", "name": "sfix.sfix", "note": "Text layer fix tiles", "required": true, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1673", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "5a86cff2", "name": "000-lo.lo", "note": "Zoom lookup table", "required": true, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1674", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "853e6b96", "name": "236-bios.sp1", "note": "Trackball BIOS / Asia MV1B 263", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1764", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "02bf4426", "name": "236-bios_japan_hack.sp1", "note": "Trackball BIOS / Japan (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1765", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "b4590283", "name": "sp-4x.sp1", "note": "PCB BIOS for Metal Slug 5 PCB and SVC Chaos PCB", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1811", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "148dd727", "name": "spj.sp1", "note": "PCB BIOS for KOF 2003 PCB", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1899", "system": "snk-neogeo-mvs"}, {"archive": "neocdz.zip", "crc32": "df9de490", "name": "neocd.bin", "note": "Neo Geo CD/CDZ top-loading BIOS", "required": true, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1983", "system": "snk-neogeo-cd"}, {"archive": "neocdz.zip", "crc32": "42f6b6c4", "name": "neocd_sz.rom", "note": "Neo Geo CDZ custom BIOS by SMKDan", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1984", "system": "snk-neogeo-cd"}, {"archive": "neocdz.zip", "crc32": "ff3abc59", "name": "uni-bioscd33.rom", "note": "Universe BIOS CD ver. 3.3 (hack)", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1985", "system": "snk-neogeo-cd"}, {"archive": "neocdz.zip", "crc32": "0ffb3127", "name": "uni-bioscd32.rom", "note": "Universe BIOS CD ver. 3.2 (hack)", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1986", "system": "snk-neogeo-cd"}, {"archive": "neocdz.zip", "crc32": "5a86cff2", "name": "000-lo.lo", "note": "Zoom lookup table (shared with MVS)", "required": true, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1988", "system": "snk-neogeo-cd"}, {"archive": "pgm.zip", "crc32": "1a7123a0", "name": "pgm_t01s.rom", "note": "8x8 text layer tiles", "required": true, "size": 2097152, "source_ref": "src/burn/drv/pgm/d_pgm.cpp:880", "system": "igs-pgm"}, {"archive": "pgm.zip", "crc32": "45ae7159", "name": "pgm_m01s.rom", "note": "ICS2115 sound samples", "required": true, "size": 2097152, "source_ref": "src/burn/drv/pgm/d_pgm.cpp:881", "system": "igs-pgm"}, {"archive": "pgm.zip", "crc32": "e42b166e", "name": "pgm_p01s.u20", "note": "68K BIOS V0001 older (02/26/97)", "required": false, "size": 131072, "source_ref": "src/burn/drv/pgm/d_pgm.cpp:883", "system": "igs-pgm"}, {"archive": "pgm.zip", "crc32": "78c15fa2", "name": "pgm_p02s.u20", "note": "68K BIOS V0001 newer (07/10/97)", "required": true, "size": 131072, "source_ref": "src/burn/drv/pgm/d_pgm.cpp:884", "system": "igs-pgm"}, {"archive": "pgm.zip", "crc32": "b3cc5c8f", "name": "ddp3_bios.u37", "note": "68K BIOS V0001 custom (07/17/97) for DoDonPachi III", "required": false, "size": 524288, "source_ref": "src/burn/drv/pgm/d_pgm.cpp:886", "system": "igs-pgm"}, {"archive": "pgm.zip", "crc32": "517cf7a2", "name": "bios.u42", "note": "68K BIOS V0001-01J custom (02/25/03) for The Gladiator", "required": false, "size": 131072, "source_ref": "src/burn/drv/pgm/d_pgm.cpp:887", "system": "igs-pgm"}, {"archive": "pgm.zip", "crc32": "3346401f", "name": "svg_bios.u49", "note": "68K BIOS V0001 custom (05/13/05) for SVG PCB", "required": false, "size": 131072, "source_ref": "src/burn/drv/pgm/d_pgm.cpp:928", "system": "igs-pgm"}, {"archive": "sfiii.zip", "crc32": "27699ddc", "name": "sfiii_euro.29f400.u2", "note": "SH-2 BIOS, SF3 1st Impact Europe", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:336", "system": "capcom-cps3"}, {"archive": "sfiiiu.zip", "crc32": "fb172a8e", "name": "sfiii_usa_region_b1.29f400.u2", "note": "SH-2 BIOS, SF3 1st Impact USA", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:351", "system": "capcom-cps3"}, {"archive": "sfiiia.zip", "crc32": "cbd28de7", "name": "sfiii_asia_region_bd.29f400.u2", "note": "SH-2 BIOS, SF3 1st Impact Asia", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:366", "system": "capcom-cps3"}, {"archive": "sfiiij.zip", "crc32": "74205250", "name": "sfiii_japan.29f400.u2", "note": "SH-2 BIOS, SF3 1st Impact Japan", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:381", "system": "capcom-cps3"}, {"archive": "sfiiih.zip", "crc32": "d2b3cd48", "name": "sfiii_hispanic.29f400.u2", "note": "SH-2 BIOS, SF3 1st Impact Hispanic", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:396", "system": "capcom-cps3"}, {"archive": "sfiiin.zip", "crc32": "ca2b715f", "name": "sfiii_asia_nocd.29f400.u2", "note": "SH-2 BIOS, SF3 1st Impact Asia (No CD)", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:411", "system": "capcom-cps3"}, {"archive": "sfiii2.zip", "crc32": "75dd72e0", "name": "sfiii2_usa.29f400.u2", "note": "SH-2 BIOS, SF3 2nd Impact USA", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:475", "system": "capcom-cps3"}, {"archive": "sfiii2j.zip", "crc32": "faea0a3e", "name": "sfiii2_japan.29f400.u2", "note": "SH-2 BIOS, SF3 2nd Impact Japan", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:490", "system": "capcom-cps3"}, {"archive": "sfiii2h.zip", "crc32": "5c799526", "name": "sfiii2_hispanic.29f400.u2", "note": "SH-2 BIOS, SF3 2nd Impact Hispanic", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:505", "system": "capcom-cps3"}, {"archive": "sfiii2n.zip", "crc32": "fd297c0d", "name": "sfiii2_asia_nocd.29f400.u2", "note": "SH-2 BIOS, SF3 2nd Impact Asia (No CD)", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:520", "system": "capcom-cps3"}, {"archive": "sfiii3.zip", "crc32": "30bbf293", "name": "sfiii3_euro.29f400.u2", "note": "SH-2 BIOS, SF3 3rd Strike Europe", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:579", "system": "capcom-cps3"}, {"archive": "sfiii3u.zip", "crc32": "ecc545c1", "name": "sfiii3_usa.29f400.u2", "note": "SH-2 BIOS, SF3 3rd Strike USA", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:594", "system": "capcom-cps3"}, {"archive": "sfiii3j.zip", "crc32": "63f23d1f", "name": "sfiii3_japan.29f400.u2", "note": "SH-2 BIOS, SF3 3rd Strike Japan", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:609", "system": "capcom-cps3"}, {"archive": "sfiii3n.zip", "crc32": "1edc6366", "name": "sfiii3_japan_nocd.29f400.u2", "note": "SH-2 BIOS, SF3 3rd Strike Japan (No CD)", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:624", "system": "capcom-cps3"}, {"archive": "sfiii3na.zip", "crc32": "a12ebcd1", "name": "sfiii3_asia_nocd.29f400.u2", "note": "SH-2 BIOS, SF3 3rd Strike Asia (No CD)", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:637", "system": "capcom-cps3"}, {"archive": "jojo.zip", "crc32": "513e40ec", "name": "jojo_euro.29f400.u2", "note": "SH-2 BIOS, JoJo's Venture Europe", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:799", "system": "capcom-cps3"}, {"archive": "jojou.zip", "crc32": "8d40f7be", "name": "jojo_usa.29f400.u2", "note": "SH-2 BIOS, JoJo's Venture USA", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:814", "system": "capcom-cps3"}, {"archive": "jojoa.zip", "crc32": "789aa72a", "name": "jojo_asia.29f400.u2", "note": "SH-2 BIOS, JoJo's Venture Asia", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:829", "system": "capcom-cps3"}, {"archive": "jojoj.zip", "crc32": "02778f60", "name": "jojo_japan.29f400.u2", "note": "SH-2 BIOS, JoJo's Venture Japan", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:844", "system": "capcom-cps3"}, {"archive": "jojon.zip", "crc32": "05b4f953", "name": "jojo_asia_nocd.29f400.u2", "note": "SH-2 BIOS, JoJo's Venture Asia (No CD)", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:859", "system": "capcom-cps3"}, {"archive": "jojobar1.zip", "crc32": "63cc8800", "name": "jojoba_euro.29f400.u2", "note": "SH-2 BIOS, JoJo's BA: Heritage Europe", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:1184", "system": "capcom-cps3"}, {"archive": "jojobajr1.zip", "crc32": "3085478c", "name": "jojoba_japan.29f400.u2", "note": "SH-2 BIOS, JoJo's BA: Heritage Japan", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:1199", "system": "capcom-cps3"}, {"archive": "jojoba.zip", "crc32": "1ee2d679", "name": "jojoba_euro_nocd.29f400.u2", "note": "SH-2 BIOS, JoJo's BA: Heritage Europe (No CD)", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:1120", "system": "capcom-cps3"}, {"archive": "jojoban.zip", "crc32": "4dab19f5", "name": "jojoba_japan_nocd.29f400.u2", "note": "SH-2 BIOS, JoJo's BA: Heritage Japan (No CD)", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:1133", "system": "capcom-cps3"}, {"archive": "redearth.zip", "crc32": "02e0f336", "name": "redearth_euro.29f400.u2", "note": "SH-2 BIOS, Red Earth Europe", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:1362", "system": "capcom-cps3"}, {"archive": "warzard.zip", "crc32": "f8e2f0c6", "name": "warzard_japan.29f400.u2", "note": "SH-2 BIOS, Warzard Japan", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:1377", "system": "capcom-cps3"}, {"archive": "redearthn.zip", "crc32": "7a4f0851", "name": "redearth_asia_nocd.29f400.u2", "note": "SH-2 BIOS, Red Earth Asia (No CD)", "required": true, "size": 524288, "source_ref": "src/burn/drv/cps3/d_cps3.cpp:1392", "system": "capcom-cps3"}, {"archive": "skns.zip", "crc32": "7e2b836c", "name": "sknsj1.u10", "note": "SKNS BIOS Japan", "required": true, "size": 524288, "source_ref": "src/burn/drv/pst90s/d_suprnova.cpp:1846", "system": "super-kaneko-nova"}, {"archive": "skns.zip", "crc32": "e2b9d7d1", "name": "sknse2.u10", "note": "SKNS BIOS Europe", "required": false, "size": 524288, "source_ref": "src/burn/drv/pst90s/d_suprnova.cpp:1847", "system": "super-kaneko-nova"}, {"archive": "skns.zip", "crc32": "745e5212", "name": "sknsa1.u10", "note": "SKNS BIOS Asia", "required": false, "size": 524288, "source_ref": "src/burn/drv/pst90s/d_suprnova.cpp:1848", "system": "super-kaneko-nova"}, {"archive": "skns.zip", "crc32": "384d21ec", "name": "sknsu1.u10", "note": "SKNS BIOS USA", "required": false, "size": 524288, "source_ref": "src/burn/drv/pst90s/d_suprnova.cpp:1849", "system": "super-kaneko-nova"}, {"archive": "skns.zip", "crc32": "ff1c9f79", "name": "sknsk1.u10", "note": "SKNS BIOS Korea", "required": false, "size": 524288, "source_ref": "src/burn/drv/pst90s/d_suprnova.cpp:1850", "system": "super-kaneko-nova"}, {"archive": "channelf.zip", "crc32": "9c047ba3", "name": "sl31254.rom", "note": "Channel F BIOS bottom half", "required": true, "size": 1024, "source_ref": "src/burn/drv/channelf/d_channelf.cpp:538", "system": "fairchild-channelf"}, {"archive": "channelf.zip", "crc32": "04694ed9", "name": "sl31253.rom", "note": "Channel F BIOS top half", "required": true, "size": 1024, "source_ref": "src/burn/drv/channelf/d_channelf.cpp:540", "system": "fairchild-channelf"}, {"archive": "channelf.zip", "crc32": "015c1e38", "name": "sl90025.rom", "note": "Luxor Video Entertainment System BIOS (top half)", "required": false, "size": 1024, "source_ref": "src/burn/drv/channelf/d_channelf.cpp:541", "system": "fairchild-channelf"}, {"archive": "coleco.zip", "crc32": "3aa93ef3", "name": "coleco.rom", "note": "ColecoVision BIOS (Coleco, 1982)", "required": true, "size": 8192, "source_ref": "src/burn/drv/coleco/d_coleco.cpp:1070", "system": "coleco-colecovision"}, {"archive": "coleco.zip", "crc32": "39bb16fc", "name": "colecoa.rom", "note": "ColecoVision BIOS thick characters (Coleco, 1982)", "required": false, "size": 8192, "source_ref": "src/burn/drv/coleco/d_coleco.cpp:1071", "system": "coleco-colecovision"}, {"archive": "coleco.zip", "crc32": "19e91b82", "name": "svi603.rom", "note": "SVI-603 Coleco Game Adapter (Spectravideo, 1983)", "required": false, "size": 8192, "source_ref": "src/burn/drv/coleco/d_coleco.cpp:1072", "system": "coleco-colecovision"}, {"archive": "coleco.zip", "crc32": "4999abc6", "name": "czz50.rom", "note": "Chuang Zao Zhe 50 (Bit Corporation, 1986)", "required": false, "size": 16384, "source_ref": "src/burn/drv/coleco/d_coleco.cpp:1073", "system": "coleco-colecovision"}, {"archive": "spectrum.zip", "crc32": "ddee531f", "name": "spectrum.rom", "note": "ZX Spectrum 48K BIOS", "required": true, "size": 16384, "source_ref": "src/burn/drv/spectrum/d_spectrum.cpp:181", "system": "sinclair-spectrum"}, {"archive": "spec128.zip", "crc32": "e76799d2", "name": "zx128_0.rom", "note": "ZX Spectrum 128K BIOS bank 0", "required": true, "size": 16384, "source_ref": "src/burn/drv/spectrum/d_spectrum.cpp:188", "system": "sinclair-spectrum"}, {"archive": "spec128.zip", "crc32": "b96a36be", "name": "zx128_1.rom", "note": "ZX Spectrum 128K BIOS bank 1", "required": true, "size": 16384, "source_ref": "src/burn/drv/spectrum/d_spectrum.cpp:189", "system": "sinclair-spectrum"}, {"archive": "spec1282a.zip", "crc32": "30c9f490", "name": "zx128_2a_0.rom", "note": "ZX Spectrum +2A BIOS bank 0", "required": false, "size": 16384, "source_ref": "src/burn/drv/spectrum/d_spectrum.cpp:196", "system": "sinclair-spectrum"}, {"archive": "spec1282a.zip", "crc32": "a7916b3f", "name": "zx128_2a_1.rom", "note": "ZX Spectrum +2A BIOS bank 1", "required": false, "size": 16384, "source_ref": "src/burn/drv/spectrum/d_spectrum.cpp:197", "system": "sinclair-spectrum"}, {"archive": "spec1282a.zip", "crc32": "c9a0b748", "name": "zx128_2a_2.rom", "note": "ZX Spectrum +2A BIOS bank 2", "required": false, "size": 16384, "source_ref": "src/burn/drv/spectrum/d_spectrum.cpp:198", "system": "sinclair-spectrum"}, {"archive": "spec1282a.zip", "crc32": "b88fd6e3", "name": "zx128_2a_3.rom", "note": "ZX Spectrum +2A BIOS bank 3", "required": false, "size": 16384, "source_ref": "src/burn/drv/spectrum/d_spectrum.cpp:199", "system": "sinclair-spectrum"}, {"archive": "msx.zip", "crc32": "a317e6b4", "name": "msx.rom", "note": "MSX1 standard BIOS", "required": true, "size": 32768, "source_ref": "src/burn/drv/msx/d_msx.cpp:1773", "system": "msx"}, {"archive": "msx.zip", "crc32": "071135e0", "name": "msxj.rom", "note": "MSX1 Japanese BIOS", "required": false, "size": 32768, "source_ref": "src/burn/drv/msx/d_msx.cpp:1774", "system": "msx"}, {"archive": "msx.zip", "crc32": "1f6406fb", "name": "kanji.rom", "note": "MSX Kanji character support", "required": false, "size": 262144, "source_ref": "src/burn/drv/msx/d_msx.cpp:1775", "system": "msx"}, {"archive": "fdsbios.zip", "crc32": "5e607dcf", "name": "fdsbios.nes", "note": "Famicom Disk System BIOS", "required": true, "size": 8192, "source_ref": "src/burn/drv/nes/d_nes.cpp:517", "system": "nes-fds"}, {"archive": "ngp.zip", "crc32": "6232df8d", "name": "SNK Neo-Geo Pocket BIOS (1998)(SNK)(en-ja).bin", "note": "Neo Geo Pocket (b&w) BIOS", "required": true, "size": 65536, "source_ref": "src/burn/drv/pst90s/d_ngp.cpp:962", "system": "snk-neogeo-pocket"}, {"archive": "ngp.zip", "crc32": "6eeb6f40", "name": "SNK Neo-Geo Pocket Color BIOS (1999)(SNK)(en-ja).bin", "note": "Neo Geo Pocket Color BIOS", "required": true, "size": 65536, "source_ref": "src/burn/drv/pst90s/d_ngp.cpp:963", "system": "snk-neogeo-pocket"}, {"archive": "decocass.zip", "crc32": "3d33ac34", "name": "v0a-.7e", "note": "BIOS A Japan, Main M6502", "required": true, "size": 4096, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3596", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "b66b2c2a", "name": "v1-.5a", "note": "BIOS A Japan, Sound M6502 (shared across regions)", "required": true, "size": 2048, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3599", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "238fdb40", "name": "v2.3m", "note": "BIOS PROM (shared across regions)", "required": false, "size": 32, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3601", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "3b5836b4", "name": "v4.10d", "note": "BIOS PROM (shared across regions)", "required": false, "size": 32, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3602", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "51eef657", "name": "v3.3j", "note": "BIOS PROM (shared across regions)", "required": false, "size": 32, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3603", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "2541e34b", "name": "dsp-3_p0-a.m9", "note": "BIOS A Japan Older, Main M6502 (part 1)", "required": false, "size": 2048, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3608", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "3bfff5f3", "name": "dsp-3_p1-.l9", "note": "BIOS A Japan Older, Main M6502 (part 2, shared)", "required": false, "size": 2048, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3609", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "6c4a891f", "name": "rms-3_p2-.c9", "note": "BIOS A Japan Older, Sound M6502 (shared)", "required": false, "size": 1024, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3611", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "539a5a64", "name": "dsp-3_p3-.e5", "note": "BIOS Older PROM (shared)", "required": false, "size": 32, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3613", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "9014c0fd", "name": "rms-3_p4-.f6", "note": "BIOS Older PROM (shared)", "required": false, "size": 32, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3614", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "e52089a0", "name": "dsp-3_p5-.m4", "note": "BIOS Older PROM (shared)", "required": false, "size": 32, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3615", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "23d929b7", "name": "v0b-.7e", "note": "BIOS B USA, Main M6502", "required": false, "size": 4096, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3620", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "b67a91d9", "name": "dsp-3_p0-b.m9", "note": "BIOS B USA Older, Main M6502", "required": false, "size": 2048, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3632", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "9f505709", "name": "v0c-.7e", "note": "BIOS C UK, Main M6502", "required": false, "size": 4096, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3644", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "c76c4057", "name": "dsp-3_p0-c.m9", "note": "BIOS C UK Older, Main M6502", "required": false, "size": 2048, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3656", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "1e0c22b1", "name": "v0d-.7e", "note": "BIOS D Europe, Main M6502", "required": false, "size": 4096, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3668", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "4b7d72bc", "name": "dsp-3_p0-d.m9", "note": "BIOS D Europe Older, Main M6502", "required": false, "size": 2048, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3680", "system": "deco-cassette"}, {"archive": "decocass.zip", "crc32": "a6df18fd", "name": "cassmcu.1c", "note": "MCU BIOS, shared across all DECO Cassette regions", "required": true, "size": 1024, "source_ref": "src/burn/drv/dataeast/d_decocass.cpp:3692", "system": "deco-cassette"}, {"archive": "namcoc69.zip", "crc32": "349134d9", "name": "c69.bin", "note": "C69 MCU internal ROM for Namco NA-1", "required": true, "size": 16384, "source_ref": "src/burn/drv/pst90s/d_namcona1.cpp:1346", "system": "namco-na1"}, {"archive": "namcoc70.zip", "crc32": "b4015f23", "name": "c70.bin", "note": "C70 MCU internal ROM for Namco NA-2", "required": true, "size": 16384, "source_ref": "src/burn/drv/pst90s/d_namcona1.cpp:1367", "system": "namco-na1"}, {"archive": "namcoc75.zip", "crc32": "42f539a5", "name": "c75.bin", "note": "C75 MCU internal ROM for Namco NB-1", "required": true, "size": 16384, "source_ref": "src/burn/drv/pst90s/d_namconb1.cpp:1978", "system": "namco-nb1"}, {"archive": "bubsys.zip", "crc32": "f0774fc2", "name": "boot.bin", "note": "M68000 vectors", "required": true, "size": 480, "source_ref": "src/burn/drv/konami/d_nemesis.cpp:4526", "system": "konami-bubsys"}, {"archive": "bubsys.zip", "crc32": "85c2afc5", "name": "400b03.8g", "note": "Z80 code", "required": true, "size": 8192, "source_ref": "src/burn/drv/konami/d_nemesis.cpp:4528", "system": "konami-bubsys"}, {"archive": "bubsys.zip", "crc32": "5827b1e8", "name": "400a1.2b", "note": "K005289 wavetable 1", "required": true, "size": 256, "source_ref": "src/burn/drv/konami/d_nemesis.cpp:4530", "system": "konami-bubsys"}, {"archive": "bubsys.zip", "crc32": "2f44f970", "name": "400a2.1b", "note": "K005289 wavetable 2", "required": true, "size": 256, "source_ref": "src/burn/drv/konami/d_nemesis.cpp:4531", "system": "konami-bubsys"}, {"archive": "isgsm.zip", "crc32": "2292585c", "name": "ism2006v00.u1", "note": "ISG Selection Master Type 2006 BIOS", "required": true, "size": 131072, "source_ref": "src/burn/drv/sega/d_sys16b.cpp:11270", "system": "sega-system16b"}, {"archive": "nmk004.zip", "crc32": "8ae61a09", "name": "nmk004.bin", "note": "NMK004 TLCS90 internal ROM", "required": true, "size": 8192, "source_ref": "src/burn/drv/pst90s/d_nmk16.cpp:6123", "system": "nmk16"}, {"archive": "cchip.zip", "crc32": "43021521", "name": "cchip_upd78c11.bin", "note": "Taito C-Chip UPD78C11 internal ROM", "required": true, "size": 4096, "source_ref": "src/burn/drv/taito/d_taitof2.cpp:4392", "system": "taito-cchip"}, {"archive": "midssio.zip", "crc32": "e1281ee9", "name": "82s123.12d", "note": "Midway SSIO sound PROM", "required": true, "size": 32, "source_ref": "src/burn/drv/pre90s/d_mcr.cpp:1630", "system": "midway-mcr"}, {"archive": "ym2608.zip", "crc32": "23c9e0d8", "name": "ym2608_adpcm_rom.bin", "note": "YM2608 internal ADPCM-A rhythm samples, used by multiple drivers", "required": true, "size": 8192, "source_ref": "src/burn/drv/pst90s/d_pipedrm.cpp:876", "system": "ym2608"}, {"archive": "st010.zip", "crc32": "aa11ee2d", "name": "st010.bin", "note": "Seta ST010 coprocessor microcode", "required": true, "size": 69632, "source_ref": "src/burn/drv/snes/d_snes.cpp:574", "system": "snes"}, {"archive": "st011.zip", "crc32": "34d2952c", "name": "st011.bin", "note": "Seta ST011 coprocessor microcode", "required": true, "size": 69632, "source_ref": "src/burn/drv/snes/d_snes.cpp:593", "system": "snes"}, {"archive": "dsp1.zip", "crc32": "2838f9f5", "name": "dsp1.bin", "note": "DSP-1 coprocessor microcode", "required": true, "size": 10240, "source_ref": "src/burn/drv/snes/d_snes.cpp:632", "system": "snes"}, {"archive": "dsp1b.zip", "crc32": "453557e0", "name": "dsp1b.bin", "note": "DSP-1B coprocessor microcode (revised)", "required": true, "size": 10240, "source_ref": "src/burn/drv/snes/d_snes.cpp:651", "system": "snes"}, {"archive": "dsp2.zip", "crc32": "8e9fbd9b", "name": "dsp2.bin", "note": "DSP-2 coprocessor microcode", "required": true, "size": 10240, "source_ref": "src/burn/drv/snes/d_snes.cpp:670", "system": "snes"}, {"archive": "dsp3.zip", "crc32": "6b86728a", "name": "dsp3.bin", "note": "DSP-3 coprocessor microcode", "required": true, "size": 10240, "source_ref": "src/burn/drv/snes/d_snes.cpp:689", "system": "snes"}, {"archive": "dsp4.zip", "crc32": "ce0c7783", "name": "dsp4.bin", "note": "DSP-4 coprocessor microcode", "required": true, "size": 10240, "source_ref": "src/burn/drv/snes/d_snes.cpp:708", "system": "snes"}, {"name": "hiscore.dat", "note": "High score database, enables persistent high scores across all arcade games", "path": "fbneo/hiscore.dat", "required": false, "source_ref": "src/burn/hiscore.cpp:407"}, {"category": "game_data", "name": "donpachi.zip", "note": "DonPachi CD-quality soundtrack samples (14 WAVs)", "path": "fbneo/samples/donpachi.zip", "required": false, "size": 209000000, "source_ref": "src/burn/snd/samples.cpp", "storage": "release"}, {"category": "game_data", "name": "sfz3mix.zip", "note": "Street Fighter Zero 3 Mix custom audio samples (43 WAVs)", "path": "fbneo/samples/sfz3mix.zip", "required": false, "size": 116000000, "source_ref": "src/burn/snd/samples.cpp", "storage": "release"}, {"category": "game_data", "name": "twotiger.zip", "note": "Two Tigers with Journey CD audio samples (2 WAVs)", "path": "fbneo/samples/twotiger.zip", "required": false, "size": 155000000, "source_ref": "src/burn/snd/samples.cpp", "storage": "release"}, {"archive": "gba.zip", "crc32": "81977335", "name": "gba_bios.bin", "required": true, "size": 16384, "source_ref": "src/burn/drv/gba/d_gba.cpp:328"}, {"archive": "st018.zip", "crc32": "5c403cc5", "name": "st018.bin", "required": true, "size": 163840, "source_ref": "src/burn/drv/snes/d_snes.cpp:612"}, {"archive": "atarisy1.zip", "crc32": "88d0be26", "name": "136032.205.l13", "required": true, "size": 16384, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1196"}, {"archive": "atarisy1.zip", "crc32": "3c79ef05", "name": "136032.206.l12", "required": true, "size": 16384, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1197"}, {"archive": "atarisy1.zip", "crc32": "7a29dc07", "name": "136032.104.f5", "required": true, "size": 8192, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1198"}, {"archive": "atarisy1.zip", "crc32": "7e84972a", "name": "136032.101.e3", "required": true, "size": 256, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1199"}, {"archive": "atarisy1.zip", "crc32": "ebf1e0ae", "name": "136032.102.e5", "required": true, "size": 256, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1200"}, {"archive": "atarisy1.zip", "crc32": "92d6a0b4", "name": "136032.103.f7", "required": true, "size": 235, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1201"}, {"archive": "atarisy1.zip", "crc32": "79021d3c", "name": "136032.105.l13", "required": true, "size": 16384, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1205"}, {"archive": "atarisy1.zip", "crc32": "76ee86c4", "name": "136032.106.l12", "required": true, "size": 16384, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1206"}, {"archive": "atarisy1.zip", "crc32": "7a29dc07", "name": "136032.104.f5", "required": true, "size": 8192, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1207"}, {"archive": "atarisy1.zip", "crc32": "7e84972a", "name": "136032.101.e3", "required": true, "size": 256, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1208"}, {"archive": "atarisy1.zip", "crc32": "ebf1e0ae", "name": "136032.102.e5", "required": true, "size": 256, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1209"}, {"archive": "atarisy1.zip", "crc32": "92d6a0b4", "name": "136032.103.f7", "required": true, "size": 235, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1210"}, {"archive": "atarisy1.zip", "crc32": "195c54ad", "name": "136032.114.j11", "required": true, "size": 16384, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1214"}, {"archive": "atarisy1.zip", "crc32": "7275b4dc", "name": "136032.115.j10", "required": true, "size": 16384, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1215"}, {"archive": "atarisy1.zip", "crc32": "7a29dc07", "name": "136032.107.b2", "required": true, "size": 8192, "source_ref": "src/burn/drv/atari/d_atarisy1.cpp:1216"}, {"archive": "astrocde.zip", "crc32": "ebc77f3a", "name": "astro.bin", "required": true, "size": 8192, "source_ref": "src/burn/drv/pre90s/d_astrocde.cpp:3034"}], "logo": "https://raw.githubusercontent.com/finalburnneo/FBNeo/master/projectfiles/xcode/Emulator/Assets.xcassets/AppIcon.appiconset/icon_512.png", "notes": "FinalBurn Neo is a multi-system arcade and console emulator. BIOS files are\nexpected as MAME-format ZIP archives containing individual ROM chips. The\nlibretro core searches for BIOS ZIPs in this order\n(src/burner/libretro/libretro.cpp:930-1083):\n  1. {system_dir}/fbneo/patched/{romName}\n  2. {rom_dir}/{romName}\n  3. {rom_dir}/{arcade|consoles}/{romName}\n  4. {system_dir}/fbneo/{romName}\n  5. {system_dir}/fbneo/{arcade|consoles}/{romName}\n  6. {system_dir}/{romName}\n  7. directories listed in rom_path.opt, plain then per-type subdirectories\n\nEach game driver specifies a parent BIOS set via BurnDriver. The BIOS ZIP\nmust contain the individual ROM chip files listed below. CRC32 values from\nBurnRomInfo structs are used to match ROMs inside ZIPs.\n\nNeo Geo games reference \"neogeo\" as parent. The neogeo.zip BIOS set contains\nmultiple selectable BIOS variants (MVS, AES, Universe BIOS). Only one 68K\nBIOS ROM is active at a time (selected via dipswitch), but the Z80 BIOS,\nfix tiles, and zoom table are always required.\n\nCPS-3 games are self-contained: each game ZIP includes its own SH-2 BIOS\nchip. There is no shared cps3.zip. BIOS selection is per-game per-region.\n\nPGM games reference \"pgm\" as parent. The pgm.zip contains shared text tiles,\nsamples, and 68K BIOS ROMs. Some PGM sub-boards use alternate BIOS sets\n(theglad, dmnfrnt, svgpcb, ddp3).\n\nConsole subsystems (Channel F, ColecoVision, Spectrum, MSX, NES/FDS, NGP)\neach have their own BIOS set referenced as parent for their game drivers.\n\nDECO Cassette games reference \"decocass\" as parent. The decocass.zip contains\nmultiple regional BIOS variants (Japan, USA, UK, Europe) with older/newer\nversions for each.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/FBNeo", "source_commit": "ef1f64b7023bc511858e96b8961f99c18a09f112", "systems": ["snk-neogeo-mvs", "snk-neogeo-aes", "snk-neogeo-cd", "snk-neogeo-pocket", "capcom-cps3", "igs-pgm", "fairchild-channelf", "coleco-colecovision", "sinclair-spectrum", "msx", "nes-fds", "super-kaneko-nova", "deco-cassette", "namco-na1", "namco-nb1", "sega-system16b", "konami-bubsys", "nmk16", "midway-mcr", "snes", "taito-cchip", "ym2608"], "type": "libretro", "upstream": "https://github.com/finalburnneo/FBNeo"}


id: fbneo_cps12
name: FinalBurn Neo (CPS-1/CPS-2)
type: libretro
classification: official_port
source: https://github.com/libretro/FBNeo
upstream: https://github.com/finalburnneo/FBNeo
source_commit: ef1f64b7023bc511858e96b8961f99c18a09f112
profile_json:
{"archive_prefix": "fbneo", "core_classification": "official_port", "core_version": "v1.0.0.2", "cores": ["fbneo_cps12"], "display_name": "Arcade (FinalBurn Neo) (CPS-1 / CPS-2)", "emulator": "FinalBurn Neo (CPS-1/CPS-2)", "files": [{"name": "hiscore.dat", "note": "High score database, enables persistent high scores across all arcade games", "path": "fbneo/hiscore.dat", "required": false, "source_ref": "src/burn/hiscore.cpp:407"}], "notes": "CPS-1/CPS-2 subset of FinalBurn Neo, current codebase (not frozen).\nExists for platforms that cannot run the full FBNeo core.\n\nCPS-1 and CPS-2 have no system BIOS. Each game ROM set is self-contained:\n68000 program + Z80 sound + GFX + QSound samples (CPS-2).\n\nZero BRF_BIOS entries in d_cps1.cpp and d_cps2.cpp. QSound emulated in\nsoftware (qs_c.cpp:QscInit, panning table). No DSP ROM needed.\n\nBoard PLDs (buf1, ioa1, prg1/prg2, rom1, sou1) are BRF_OPT — GAL/PAL\ndumps for hardware preservation, never loaded by the emulator.\n\nhiscore.dat enables persistent high scores across all arcade games.\n\nROM path: game ZIPs loaded from content directory.\nsystem/fbneo/ used for hiscore.dat, samples, cheats, blend files, IPS patches.\n\nneed_fullpath=false, extensions=zip|7z, savestate=deterministic.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/FBNeo", "source_commit": "ef1f64b7023bc511858e96b8961f99c18a09f112", "systems": ["cps1", "cps2"], "type": "libretro", "upstream": "https://github.com/finalburnneo/FBNeo"}


id: fbneo_neogeo
name: FinalBurn Neo (Neo Geo)
type: libretro
classification: official_port
source: https://github.com/libretro/FBNeo
upstream: https://github.com/finalburnneo/FBNeo
source_commit: ef1f64b7023bc511858e96b8961f99c18a09f112
profile_json:
{"archive_prefix": "fbneo", "core_classification": "official_port", "core_version": "v1.0.0.2", "cores": ["fbneo_neogeo"], "display_name": "Arcade (FinalBurn Neo) (Neo-Geo)", "emulator": "FinalBurn Neo (Neo Geo)", "files": [{"archive": "neogeo.zip", "crc32": "91b64be3", "name": "sp-s3.sp1", "note": "MVS Asia/Europe ver. 6 (1 slot) - default BIOS", "required": true, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1624", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "9036d879", "name": "sp-s2.sp1", "note": "MVS Asia/Europe ver. 5 (1 slot)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1625", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "c7f2fa45", "name": "sp-s.sp1", "note": "MVS Asia/Europe ver. 3 (4 slot)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1626", "system": "snk-neogeo-mvs"}, {"aliases": ["usa_2slt.bin"], "archive": "neogeo.zip", "crc32": "e72943de", "name": "sp-u2.sp1", "note": "MVS USA ver. 5 (2 slot)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1627", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "62f021f4", "name": "sp1-u2", "note": "MVS USA ver. 5 (4 slot)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1628", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "2723a5b5", "name": "sp-e.sp1", "note": "MVS USA ver. 5 (6 slot)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1629", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "1179a30f", "name": "sp1-u4.bin", "note": "MVS USA (U4)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1630", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "2025b7a2", "name": "sp1-u3.bin", "note": "MVS USA (U3)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1631", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "f0e8f27d", "name": "vs-bios.rom", "note": "MVS Japan ver. 6", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1632", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "acede59c", "name": "sp-j2.sp1", "note": "MVS Japan ver. 5", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1633", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "9fb0abe4", "name": "sp1.jipan.1024", "note": "MVS Japan ver. 3 (4 slot)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1634", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "03cc9f6a", "name": "sp-45.sp1", "note": "NEO-MVH MV1C (Asia)", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1635", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "486cb450", "name": "sp-j3.sp1", "note": "NEO-MVH MV1C (Japan)", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1636", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "dff6d41f", "name": "japan-j3.bin", "note": "MVS Japan (J3)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1637", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "fbc6d469", "name": "sp1-j3.bin", "note": "MVS Japan (J3, alt)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1638", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "16d0c132", "name": "neo-po.bin", "note": "AES Japan", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1640", "system": "snk-neogeo-aes"}, {"archive": "neogeo.zip", "crc32": "d27a71f1", "name": "neo-epo.bin", "note": "AES Asia", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1641", "system": "snk-neogeo-aes"}, {"archive": "neogeo.zip", "crc32": "698ebb7d", "name": "neodebug.bin", "note": "Development Kit BIOS", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1642", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "162f0ebe", "name": "sp-1v1_3db8c.bin", "note": "Deck ver. 6 (Git Ver 1.3)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1648", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "a7aab458", "name": "uni-bios_4_0.rom", "note": "Universe BIOS ver. 4.0", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1649", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "24858466", "name": "uni-bios_3_3.rom", "note": "Universe BIOS ver. 3.3", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1650", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "a4e8b9b3", "name": "uni-bios_3_2.rom", "note": "Universe BIOS ver. 3.2", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1651", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "0c58093f", "name": "uni-bios_3_1.rom", "note": "Universe BIOS ver. 3.1", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1652", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "a97c89a9", "name": "uni-bios_3_0.rom", "note": "Universe BIOS ver. 3.0", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1653", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "27664eb5", "name": "uni-bios_2_3.rom", "note": "Universe BIOS ver. 2.3", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1654", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "601720ae", "name": "uni-bios_2_3o.rom", "note": "Universe BIOS ver. 2.3 (older)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1655", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "2d50996a", "name": "uni-bios_2_2.rom", "note": "Universe BIOS ver. 2.2", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1656", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "8dabf76b", "name": "uni-bios_2_1.rom", "note": "Universe BIOS ver. 2.1", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1657", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "0c12c2ad", "name": "uni-bios_2_0.rom", "note": "Universe BIOS ver. 2.0", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1658", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "b24b44a0", "name": "uni-bios_1_3.rom", "note": "Universe BIOS ver. 1.3", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1659", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "4fa698e9", "name": "uni-bios_1_2.rom", "note": "Universe BIOS ver. 1.2", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1660", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "e19d3ce9", "name": "uni-bios_1_2o.rom", "note": "Universe BIOS ver. 1.2 (older)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1661", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "5dda0d84", "name": "uni-bios_1_1.rom", "note": "Universe BIOS ver. 1.1", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1662", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "0ce453a0", "name": "uni-bios_1_0.rom", "note": "Universe BIOS ver. 1.0", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1663", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "cb915e76", "name": "neopen.sp1", "note": "NeoOpen BIOS v0.1 beta", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1665", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "94416d67", "name": "sm1.sm1", "note": "Z80 sound BIOS", "required": true, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1672", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "c2ea0cfd", "name": "sfix.sfix", "note": "Text layer fix tiles", "required": true, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1673", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "5a86cff2", "name": "000-lo.lo", "note": "Zoom lookup table", "required": true, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1988", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "853e6b96", "name": "236-bios.sp1", "note": "Trackball BIOS / Asia MV1B 263", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1764", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "02bf4426", "name": "236-bios_japan_hack.sp1", "note": "Trackball BIOS / Japan (hack)", "required": false, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1765", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "b4590283", "name": "sp-4x.sp1", "note": "PCB BIOS for Metal Slug 5 PCB and SVC Chaos PCB", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1811", "system": "snk-neogeo-mvs"}, {"archive": "neogeo.zip", "crc32": "148dd727", "name": "spj.sp1", "note": "PCB BIOS for KOF 2003 PCB", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1899", "system": "snk-neogeo-mvs"}, {"archive": "neocdz.zip", "crc32": "df9de490", "name": "neocd.bin", "note": "Neo Geo CD/CDZ BIOS", "required": true, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1983", "system": "snk-neogeo-cd"}, {"archive": "neocdz.zip", "crc32": "42f6b6c4", "name": "neocd_sz.rom", "note": "Neo Geo CDZ custom BIOS by SMKDan", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1984", "system": "snk-neogeo-cd"}, {"archive": "neocdz.zip", "crc32": "ff3abc59", "name": "uni-bioscd33.rom", "note": "Universe BIOS CD ver. 3.3", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1985", "system": "snk-neogeo-cd"}, {"archive": "neocdz.zip", "crc32": "0ffb3127", "name": "uni-bioscd32.rom", "note": "Universe BIOS CD ver. 3.2", "required": false, "size": 524288, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1986", "system": "snk-neogeo-cd"}, {"archive": "neocdz.zip", "crc32": "5a86cff2", "name": "000-lo.lo", "note": "Zoom lookup table (shared with MVS)", "required": true, "size": 131072, "source_ref": "src/burn/drv/neogeo/d_neogeo.cpp:1988", "system": "snk-neogeo-cd"}, {"name": "hiscore.dat", "note": "High score database, enables persistent high scores", "path": "fbneo/hiscore.dat", "required": false, "source_ref": "src/burn/hiscore.cpp:407"}], "notes": "Neo Geo subset of FinalBurn Neo, current codebase (not frozen).\nBuilt with SUBSET=neogeo, includes only d_neogeo.cpp drivers.\nExists for platforms that cannot run the full FBNeo core.\n\nNeo Geo games reference \"neogeo\" as parent ROM set. The BIOS ZIP\nmust be alongside game ZIPs or in system_dir/fbneo/.\nSearch order (libretro.cpp:930-1083):\n  1. {system_dir}/fbneo/patched/{romName}\n  2. {rom_dir}/{romName}\n  3. {rom_dir}/{arcade|consoles}/{romName}\n  4. {system_dir}/fbneo/{romName}\n  5. {system_dir}/fbneo/{arcade|consoles}/{romName}\n  6. {system_dir}/{romName}\n  7. directories listed in rom_path.opt, plain then per-type subdirectories\n\nneogeo.zip contains multiple selectable 68K BIOS variants (MVS, AES,\nUniverse BIOS). One 68K BIOS active at a time (dipswitch). Z80 BIOS,\nfix tiles, and zoom table always required.\n\nNeo Geo CDZ uses neocdz.zip with parent \"neogeo\". CD/CDZ BIOS plus\nzoom table.\n\nhiscore.dat loaded from system_dir/fbneo/ (hiscore.cpp:407).\n\nneed_fullpath=false, extensions=zip|7z|cue|ccd, savestate=deterministic.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/FBNeo", "source_commit": "ef1f64b7023bc511858e96b8961f99c18a09f112", "systems": ["snk-neogeo-mvs", "snk-neogeo-aes", "snk-neogeo-cd"], "type": "libretro", "upstream": "https://github.com/finalburnneo/FBNeo"}


id: fceumm
name: FCEUmm
type: libretro
classification: community_fork
source: https://github.com/libretro/libretro-fceumm
upstream: https://sourceforge.net/projects/fceumm/
source_commit: b5e3566515c27dc66c9c20572171673126532e06
profile_json:
{"core_classification": "community_fork", "core_version": "SVN", "cores": ["fceumm"], "display_name": "Nintendo - NES / Famicom (FCEUmm)", "emulator": "FCEUmm", "files": [{"description": "FDS BIOS ROM", "name": "disksys.rom", "note": "Loaded at 0xE000, mapped as 8 KB PRG bank 0. Load fails if missing or short read.", "required": true, "size": 8192, "source_ref": "src/fds.c:680-715 (FDSLoad), src/general.c:65-67 (FCEUMKF_FDSROM)", "system": "nintendo-fds", "validation": ["size"]}, {"description": "Game Genie add-on cartridge ROM", "name": "gamegenie.nes", "note": "iNES format ROM (4 KB PRG + 256 bytes CHR). Core option disabled by default. Only applies to cartridge games.", "required": false, "source_ref": "src/cart.c:401-455 (FCEU_OpenGenie), src/general.c:61-63 (FCEUMKF_GGROM)", "system": "nintendo-nes"}, {"description": "External NES color palette", "name": "nes.pal", "note": "RGB triplets (64 standard or 512 with de-emphasis). Only loaded when palette core option is set to Custom.", "required": false, "source_ref": "src/palette.c:170-200 (FCEU_LoadGamePalette), src/general.c:69-71 (FCEUMKF_PALETTE), src/drivers/libretro/libretro.c:1991-2000", "system": "nintendo-nes"}], "notes": "FCEUmm (FCE Ultra mappers modified) is a NES/Famicom emulator forked from\nFCEU Ultra by CaH4e3. FDS games require the FDS BIOS ROM (disksys.rom).\nGame Genie emulation requires gamegenie.nes when the core option is enabled.\nAn external palette file (nes.pal) overrides the built-in palette when the\ncore option is set to Custom.\n\nFile path construction: src/general.c FCEU_MakeFName() joins the system\ndirectory with each filename directly - no subdirectories.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/libretro-fceumm", "source_commit": "b5e3566515c27dc66c9c20572171673126532e06", "systems": ["nintendo-nes", "nintendo-fds"], "type": "libretro", "upstream": "https://sourceforge.net/projects/fceumm/"}


id: ffmpeg
name: FFmpeg
type: libretro
classification: pure_libretro
source: https://github.com/libretro/FFmpeg
upstream: https://www.ffmpeg.org/
source_commit: 4920879d2f09a78cdf855403c349457cee1c31da
profile_json:
{"core_classification": "pure_libretro", "core_version": "Git", "cores": ["ffmpeg"], "display_name": "FFmpeg", "emulator": "FFmpeg", "files": [], "notes": "Media player core using libavcodec, libavformat, and libswscale.\nPlays video and audio files within RetroArch with an audio visualizer.\nNo external files required. Codecs are linked at build time.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/FFmpeg", "source_commit": "4920879d2f09a78cdf855403c349457cee1c31da", "systems": [], "type": "libretro", "upstream": "https://www.ffmpeg.org/"}


id: fixgb
name: fixGB
type: libretro
classification: official_port
source: https://github.com/libretro/fixGB
upstream: https://github.com/FIX94/fixGB
source_commit: ecbaee13b64a0308539e73d0eec1847925898e5d
profile_json:
{"core_classification": "official_port", "core_version": "Alpha v0.8.2", "cores": ["fixgb"], "display_name": "Nintendo - Game Boy / Color (fixGB)", "emulator": "fixGB", "files": [{"description": "Game Boy Color (CGB-001) boot ROM", "hle_fallback": true, "md5": "dbfce9db9deaa2567f6a84fde55f9680", "name": "gbc_bios.bin", "note": "Minimum 0x900 (2304) bytes. Only first 0x900 bytes read. Disabled via memDisableCGBBootrom() on register write.", "required": false, "sha1": "1293d68bf9643bc4f36954c1e80e38f39864528d", "size": 2304, "source_ref": "libretro/libretro.c:246-254 (doOpenCGBBootrom), mem.c:567-586 (memInitCGBBootrom)", "system": "nintendo-gbc", "validation": ["size"]}], "notes": "Game Boy / Game Boy Color emulator by FIX94. Supports .gb, .gbc, and\n.gbs (Game Boy Sound) files. FIX94 maintains both standalone and\nlibretro versions in the same upstream repo.\n\nOptionally loads gbc_bios.bin from the system directory. Validates\nfile size (>= 0x900 bytes), reads the first 0x900 bytes into\nmemCGBBootrom[], sets cgbBootromEnabled. Enables the GBC startup\nanimation and palette selection for DMG games.\n\nWithout the boot ROM, the core skips the boot sequence and starts\ngames directly. No DMG boot ROM support in the source.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/fixGB", "source_commit": "ecbaee13b64a0308539e73d0eec1847925898e5d", "systems": ["nintendo-gbc"], "type": "libretro", "upstream": "https://github.com/FIX94/fixGB"}


id: fixnes
name: fixNES
type: libretro
classification: official_port
source: https://github.com/libretro/fixNES
upstream: https://github.com/FIX94/fixNES
source_commit: d5d8cba579e139fec823f64636a972d1acdf782c
profile_json:
{"core_classification": "official_port", "core_version": "Alpha v1.3.1", "cores": ["fixnes"], "display_name": "Nintendo - NES / Famicom (fixNES)", "emulator": "fixNES", "files": [{"description": "Family Computer Disk System BIOS", "mode": "both", "name": "disksys.rom", "required": true, "size": 8192, "source_ref": "mapper.c:87-110 (mapperInitFDS), libretro/libretro.c:277-285 (doOpenFDSBIOS)", "system": "nintendo-fds", "validation": ["size"]}], "notes": "fixNES is an NES/Famicom emulator by FIX94 (same author as fixGB).\n\nFDS games require disksys.rom (8192 bytes) in the system directory.\nmapperInitFDS() in mapper.c:87-110 opens the file, validates exact\nsize 0x2000, reads into fdsBIOS[]. Returns false if missing or wrong\nsize. No hash validation.\n\nRegular NES/NSF games need no BIOS.\n\nNo other system files loaded. system_dir accessed only for disksys.rom\n(libretro/libretro.c:277-285, doOpenFDSBIOS).\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/fixNES", "source_commit": "d5d8cba579e139fec823f64636a972d1acdf782c", "systems": ["nintendo-nes", "nintendo-fds"], "type": "libretro", "upstream": "https://github.com/FIX94/fixNES"}


id: flycast
name: Flycast
type: standalone + libretro
classification: official_port
source: https://github.com/libretro/flycast
upstream: https://github.com/flyinghead/flycast
source_commit: 45bd2f4e59708a7c16a5bb1cb90a94d1b39e330d
profile_json:
{"core_classification": "official_port", "core_version": "0.1", "cores": ["flycast", "flycast_dev", "flycastvl"], "display_name": "Sega - Dreamcast/Naomi (Flycast)", "emulator": "Flycast", "files": [{"aliases": ["dc_bios.bin", "dc_boot.bin.bin", "dc_bios.bin.bin"], "hle_fallback": true, "name": "dc_boot.bin", "note": "Dreamcast boot ROM. HLE BIOS (reios) used as fallback. Code searches prefix + boot.bin, boot.bin.bin, bios.bin, bios.bin.bin sequentially.", "path": "dc/dc_boot.bin", "required": false, "size": 2097152, "source_ref": "core/hw/holly/sb_mem.cpp:219,55-57", "system": "sega-dreamcast"}, {"aliases": ["dc_flash_wb.bin", "dc_flash.bin", "dc_flash.bin.bin"], "hle_fallback": true, "name": "dc_nvmem.bin", "note": "Dreamcast flash memory / NVRAM. Created if not found. Code searches prefix + nvmem.bin, flash_wb.bin, flash.bin, flash.bin.bin sequentially.", "path": "dc/dc_nvmem.bin", "required": false, "size": 131072, "source_ref": "core/hw/holly/sb_mem.cpp:231,196-213", "system": "sega-dreamcast"}, {"name": "font.bin", "note": "Dreamcast system font for HLE BIOS text rendering. Built-in font used as fallback.", "path": "dc/font.bin", "required": false, "source_ref": "core/reios/reios.cpp:737-753", "system": "sega-dreamcast"}, {"aliases": ["naomi_bios.bin", "naomi_boot.bin.bin", "naomi_bios.bin.bin", "epr-21576d.bin"], "name": "naomi_boot.bin", "note": "NAOMI boot ROM (flat binary). Alternative to naomi.zip. epr-21576d.bin is searched without prefix.", "path": "dc/naomi_boot.bin", "required": false, "size": 2097152, "source_ref": "core/hw/holly/sb_mem.cpp:219,58-59", "system": "sega-naomi"}, {"name": "naomi.zip", "note": "NAOMI system BIOS archive (MAME format). Contains region-specific BIOS ROMs: epr-21576h.ic27 (Japan), epr-21577h.ic27 (USA), epr-21578h.ic27 (Export), epr-21579d.ic27 (Korea). Also used for NAOMI 2 games in the libretro port (no separate naomi2.zip).\n", "path": "dc/naomi.zip", "required": true, "source_ref": "core/hw/naomi/naomi_roms.h:133-188", "system": "sega-naomi"}, {"name": "f355bios.zip", "note": "Ferrari F355 Challenge BIOS. Japan/USA/Export variants.", "path": "dc/f355bios.zip", "required": false, "source_ref": "core/hw/naomi/naomi_roms.h:96-103", "system": "sega-naomi"}, {"name": "f355dlx.zip", "note": "Ferrari F355 Challenge Deluxe BIOS. Japan/USA/Export variants.", "path": "dc/f355dlx.zip", "required": false, "source_ref": "core/hw/naomi/naomi_roms.h:105-119", "system": "sega-naomi"}, {"name": "hod2bios.zip", "note": "House of the Dead 2 BIOS. Japan/USA/Export variants.", "path": "dc/hod2bios.zip", "required": false, "source_ref": "core/hw/naomi/naomi_roms.h:121-131", "system": "sega-naomi"}, {"name": "awbios.zip", "note": "Atomiswave system BIOS archive (MAME format). Contains bios0.ic23 (Sammy, 128 KB).", "path": "dc/awbios.zip", "required": true, "source_ref": "core/hw/naomi/naomi_roms.h:87-94", "system": "sega-atomiswave"}], "logo": "https://raw.githubusercontent.com/flyinghead/flycast/master/shell/linux/flycast.png", "notes": "Flycast has a built-in HLE BIOS (reios) for Dreamcast that can boot most\ngames without real BIOS files. Arcade systems (NAOMI, Atomiswave) require\nMAME-format BIOS ROM archives.\n\nThe libretro port (libretro/flycast, last updated 2025-12-12) is significantly\nbehind upstream (flyinghead/flycast). Key divergences:\n- NAOMI 2 has no separate BIOS entry or platform detection; NAOMI 2 games\n  run as NAOMI using naomi.zip. Upstream has naomi2.zip with dedicated ROMs.\n- System SP is not supported. Upstream has segasp.zip support.\n- The n2_ prefix for NAOMI 2 flat boot ROMs is dead code (DC_PLATFORM_NAOMI2\n  is never assigned to settings.System in the libretro port).\n- Flash search includes legacy names (%flash_wb.bin, %flash.bin, %flash.bin.bin)\n  that upstream has removed.\n- NAOMI flat boot ROM search includes epr-21576d.bin fallback not in upstream.\n\nBIOS file search uses prefix + name pattern. The libretro port appends \"dc/\"\nto the system directory (libretro.cpp:1972). All files below are relative\nto system_dir/dc/.\n\nThe prefix is determined by platform (sb_mem.cpp:32-49):\n  Dreamcast   -> dc_\n  Dev Unit    -> hkt_\n  NAOMI       -> naomi_\n  Atomiswave  -> (no prefix, BIOS loaded from awbios.zip)\n\nBoot ROM search pattern (sb_mem.cpp:51-68):\n  {prefix}boot.bin, {prefix}boot.bin.bin, {prefix}bios.bin, {prefix}bios.bin.bin\nNAOMI also tries: epr-21576d.bin (sb_mem.cpp:59)\nFlash/NVRAM search pattern (sb_mem.cpp:231):\n  {prefix}nvmem.bin, {prefix}flash_wb.bin, {prefix}flash.bin, {prefix}flash.bin.bin\n\nBIOS[] also declares airlbios and naomigd. No entry of Games[] carries\neither name in its bios field and naomi_LoadBios is only ever called with\nthat field or the literal naomi, so neither archive is opened.\nref: naomi_cart.cpp:79,229-240,476-479, naomi_roms.h:79,191\n", "platform_details": {"atomiswave": {"bios_size": 131072, "hle_available": false, "ram_size": 16777216, "source_ref": "core/nullDC.cpp:364-375", "sram_size": 131072}, "dreamcast": {"bios_size": 2097152, "flash_size": 131072, "hle_available": true, "ram_size": 16777216, "source_ref": "core/nullDC.cpp:333-345"}, "naomi": {"bios_size": 2097152, "hle_available": false, "ram_size": 33554432, "source_ref": "core/nullDC.cpp:346-354", "sram_size": 32768}, "naomi2": {"bios_size": 2097152, "hle_available": false, "note": "Treated as NAOMI in the libretro port. Separate platform only in upstream.", "ram_size": 33554432, "source_ref": "core/nullDC.cpp:355-363", "sram_size": 32768}}, "profiled_date": "2026-03-23", "source": "https://github.com/libretro/flycast", "source_commit": "45bd2f4e59708a7c16a5bb1cb90a94d1b39e330d", "systems": ["sega-dreamcast", "sega-naomi", "sega-naomi2", "sega-atomiswave"], "type": "standalone + libretro", "upstream": "https://github.com/flyinghead/flycast"}


id: flycast-dojo
name: Flycast Dojo
type: standalone
classification: enhanced_fork
source: https://github.com/blueminder/flycast-dojo
upstream: https://github.com/flyinghead/flycast
source_commit: d0e47e572b1e7b355e88bda8308c89d0c5156cbf
profile_json:
{"core_classification": "enhanced_fork", "core_version": "dojo-7-preview4", "cores": ["flycast-dojo"], "display_name": "Sega - Dreamcast/Naomi (Flycast Dojo)", "emulator": "Flycast Dojo", "files": [{"aliases": ["dc_boot.bin.bin", "dc_bios.bin", "dc_bios.bin.bin"], "hle_fallback": true, "min_size": 2097152, "name": "dc_boot.bin", "note": "Boot ROM. reios takes over when it is absent, and is forced under netplay, match playback and match recording. Read fails below 2 MB.", "required": false, "source_ref": "core/hw/holly/sb_mem.cpp:269, core/emulator.cpp:566-569, core/hw/flashrom/flashrom.cpp:23-33", "system": "sega-dreamcast", "validation": ["size"]}, {"min_size": 131072, "name": "dc_nvmem.bin", "note": "Flash memory. Created and filled with factory settings when absent.", "required": false, "source_ref": "core/hw/holly/sb_mem.cpp:214, core/hw/holly/sb_mem.cpp:111-187", "system": "sega-dreamcast", "validation": ["size"]}, {"min_size": 131072, "name": "dc_nvmem.bin.net", "note": "Flash memory used once Dojo mode is enabled, keeping netplay settings apart from local ones.", "required": false, "source_ref": "core/hw/holly/sb_mem.cpp:192-195", "system": "sega-dreamcast", "validation": ["size"]}, {"name": "font.bin", "note": "System font served by the reios font syscall. A built-in font is used when absent.", "required": false, "source_ref": "core/reios/reios.cpp:741-764, core/oslib/oslib.cpp:195-198", "system": "sega-dreamcast"}, {"aliases": ["naomi_boot.bin.bin", "naomi_bios.bin", "naomi_bios.bin.bin"], "min_size": 2097152, "name": "naomi_boot.bin", "note": "Flat boot ROM. Games whose bios field is null run from it when naomi.zip is missing.", "required": false, "source_ref": "core/hw/holly/sb_mem.cpp:269, core/hw/naomi/naomi_cart.cpp:202-207", "system": "sega-naomi", "validation": ["size"]}, {"category": "bios_zip", "contents": [{"description": "Japan", "name": "epr-21576h.ic27", "size": 2097152}, {"description": "USA", "name": "epr-21577h.ic27", "size": 2097152}, {"description": "Export", "name": "epr-21578h.ic27", "size": 2097152}, {"description": "Korea", "name": "epr-21579d.ic27", "size": 2097152}], "name": "naomi.zip", "note": "System BIOS archive. 89 game entries name it and abort without it.", "required": true, "source_ref": "core/hw/naomi/naomi_roms.cpp:84-140, core/hw/naomi/naomi_cart.cpp:194-208", "system": "sega-naomi"}, {"category": "bios_zip", "contents": [{"description": "Japan", "name": "epr-22849.ic27", "size": 2097152}, {"description": "USA", "name": "epr-22850.ic27", "size": 2097152}, {"description": "Export", "name": "epr-22851.ic27", "size": 2097152}], "name": "f355bios.zip", "note": "Ferrari F355 Challenge twin. Required by f355twin, f355twinp and f355twn2.", "required": false, "source_ref": "core/hw/naomi/naomi_roms.cpp:47-54, core/hw/naomi/naomi_roms.cpp:1689,1725,1761", "system": "sega-naomi"}, {"category": "bios_zip", "contents": [{"description": "Japan", "name": "epr-21862.ic27", "size": 2097152}, {"description": "USA", "name": "epr-21863.ic27", "size": 2097152}, {"description": "Export", "name": "epr-21864.ic27", "size": 2097152}], "name": "f355dlx.zip", "note": "Ferrari F355 Challenge deluxe. Required by f355.", "required": false, "source_ref": "core/hw/naomi/naomi_roms.cpp:56-70, core/hw/naomi/naomi_roms.cpp:1645", "system": "sega-naomi"}, {"category": "bios_zip", "contents": [{"description": "Japan", "name": "epr-21329.ic27", "size": 2097152}, {"description": "USA", "name": "epr-21330.ic27", "size": 2097152}, {"description": "Export", "name": "epr-21331.ic27", "size": 2097152}], "name": "hod2bios.zip", "note": "House of the Dead 2. Required by hotd2, hotd2o, hotd2e and hotd2p.", "required": false, "source_ref": "core/hw/naomi/naomi_roms.cpp:72-82, core/hw/naomi/naomi_roms.cpp:2003,2042,2081,2120", "system": "sega-naomi"}, {"aliases": ["naomi2_boot.bin.bin", "naomi2_bios.bin", "naomi2_bios.bin.bin"], "min_size": 2097152, "name": "naomi2_boot.bin", "note": "Flat boot ROM for the NAOMI 2 platform.", "required": false, "source_ref": "core/hw/holly/sb_mem.cpp:35-36,269", "system": "sega-naomi2", "validation": ["size"]}, {"category": "bios_zip", "contents": [{"description": "Japan", "name": "epr-23605c.ic27", "size": 2097152}, {"description": "USA", "name": "epr-23607c.ic27", "size": 2097152}, {"description": "Export", "name": "epr-23608c.ic27", "size": 2097152}], "name": "naomi2.zip", "note": "System BIOS archive. All 43 NAOMI 2 game entries name it and abort without it.", "required": true, "source_ref": "core/hw/naomi/naomi_roms.cpp:166-172, core/hw/naomi/naomi_cart.cpp:646-657", "system": "sega-naomi2"}, {"category": "bios_zip", "contents": [{"name": "bios0.ic23", "size": 131072}], "name": "awbios.zip", "note": "System BIOS archive. All 34 Atomiswave game entries name it and abort without it.", "required": true, "source_ref": "core/hw/naomi/naomi_roms.cpp:38-45, core/hw/naomi/naomi_cart.cpp:194-208", "system": "sega-atomiswave"}, {"category": "game_data", "name": "gamecontrollerdb.txt", "note": "SDL controller mapping database, read from the data directory then the config directory. Not part of the release archive. SDL built-in mappings are used when absent.", "required": false, "source_ref": "core/sdl/sdl.cpp:183-191"}], "logo": "https://raw.githubusercontent.com/blueminder/flycast-dojo/master/shell/linux/flycast-dojo.png", "mode": "standalone", "notes": "Fork of Flycast adding rollback and delay netplay, a lobby, spectating,\nreplay recording and a training mode.\n\nEvery file below is read from the data directory, flat, with no subfolder.\nThe directory is <exe>/data on Windows, $XDG_DATA_HOME/flycast-dojo or\n$HOME/.local/share/flycast-dojo on Linux, /flycast-dojo/data on Switch.\n$FLYCAST_ROOT overrides the root, $FLYCAST_BIOS_PATH adds search paths,\nand ContentPath entries are searched after the data directory.\nref: core/linux-dist/main.cpp:157-365, core/windows/winmain.cpp:245-266,\ncore/stdclass.cpp:78-97\n\nThe boot ROM prefix follows the platform (core/hw/holly/sb_mem.cpp:27-42):\n  Dreamcast   -> dc_\n  NAOMI       -> naomi_\n  NAOMI 2     -> naomi2_\n  Atomiswave  -> aw_\nBoot ROM search pattern (sb_mem.cpp:254,269):\n  {prefix}boot.bin, {prefix}boot.bin.bin, {prefix}bios.bin, {prefix}bios.bin.bin\nFlash search takes a single name, {prefix}nvmem.bin (sb_mem.cpp:214), or\n{prefix}nvmem.bin.net once Dojo mode is on (sb_mem.cpp:195).\nThe aw_ prefix never reaches a filename: sb_mem.cpp:267 skips the boot ROM\nsearch on Atomiswave, whose BIOS comes from awbios.zip, and its flash\nfollows the per-game arcade path (sb_mem.cpp:216).\n\nArcade BIOS archives are opened as <name>.zip, then <name>.7z\n(core/hw/naomi/naomi_cart.cpp:69-71). Each ROM inside is looked up by CRC\nthen by filename; the crc field of every BIOS blob is left at zero, so the\nfilename decides. No hash is checked on an archive.\n\nNAOMI 2 is a platform of its own here: naomi_cart_GetPlatform returns\nDC_PLATFORM_NAOMI2 for any game whose bios field is naomi2\n(naomi_cart.cpp:646-657), which selects the naomi2_ prefix and naomi2.zip.\n\nUnder netplay, match playback or match recording the Dreamcast boot ROM is\nskipped and reios is forced, so both sides start from the same state.\nProduct numbers T0019M and T-31101N are the two exceptions that keep the\nreal BIOS (sb_mem.cpp:237-259).\n\nBIOS[] also declares airlbios and naomigd. No entry of Games[] carries\neither name in its bios field and loadBios is only ever called with that\nfield or the literal naomi, so neither archive is opened. The Airline\nPilots sets use the naomi BIOS (naomi_roms.cpp:821-828,854-862).\n\nflycast_roms.json ships beside the binary and lists an md5 for naomi.zip,\nnaomi2.zip and awbios.zip. The only function reading them, CompareBIOS,\nhas no live caller (DojoFile.cpp:228-242, DojoGui.cpp:1314,1369).\n\nDistributed with the emulator and fetched at build time: data/default.zip\nand the per-game .nvmem/.eeprom/.nvmem2 netplay files from\nflycast-netplay-nvmem, data/game_values/*.json from\nflycast-dojo-game-values, training/*.lua from flycast-dojo-training, and\nflycast_roms.json.\nref: CMakeLists.txt:1787-1834, .github/workflows/c-cpp.yml:171-192,\nshell/linux/make-appimage.sh:136-149\n\nAlso read but never user supplied: buttons.png overrides an on-screen\nbutton sheet compiled into the binary (core/rend/osd.cpp:152-171),\nmappings/*.cfg are written by the input configuration screen\n(core/input/mapping.cpp:382-445), and flycast.lua is a user script\n(core/lua/lua.cpp:746-761).\n", "platform_details": {"atomiswave": {"bios_size": 131072, "hle_available": false, "ram_size": 16777216, "source_ref": "core/emulator.cpp:459-465", "sram_size": 131072}, "dreamcast": {"bios_size": 2097152, "flash_size": 131072, "hle_available": true, "ram_size": 16777216, "source_ref": "core/emulator.cpp:436-442"}, "naomi": {"bios_size": 2097152, "hle_available": false, "ram_size": 33554432, "source_ref": "core/emulator.cpp:443-449", "sram_size": 32768}, "naomi2": {"bios_size": 2097152, "eram_size": 33554432, "hle_available": false, "ram_size": 33554432, "source_ref": "core/emulator.cpp:450-458", "sram_size": 32768}}, "profiled_date": "2026-08-08", "source": "https://github.com/blueminder/flycast-dojo", "source_commit": "d0e47e572b1e7b355e88bda8308c89d0c5156cbf", "systems": ["sega-dreamcast", "sega-naomi", "sega-naomi2", "sega-atomiswave"], "type": "standalone", "upstream": "https://github.com/flyinghead/flycast", "upstream_commit": "a172e0001351dfbc49b86860a13d5390b1c493fe", "verification": "existence"}


id: flycast_gles2
name: Flycast GLES2
type: alias
profile_json:
{"alias_of": "flycast", "core_version": "0.1", "cores": ["flycast_gles2"], "display_name": "Sega - Dreamcast/Naomi (Flycast GLES2)", "emulator": "Flycast GLES2", "files": [], "note": "Same codebase as flycast, compiled with -DHAVE_OPENGLES2 for older mobile GPUs. Same BIOS files.", "profiled_date": "2026-03-23", "type": "alias"}


id: fmsx
name: fMSX
type: libretro
classification: community_fork
source: https://github.com/libretro/fmsx-libretro
upstream: https://fms.komkon.org/fMSX/
source_commit: f013e213458e06d9df718e4bc4b09d46f88aa899
profile_json:
{"core_classification": "community_fork", "core_version": "6.0", "cores": ["fmsx"], "display_name": "Microsoft - MSX (fMSX)", "emulator": "fMSX", "files": [{"bundled": true, "md5": "aa95aea2563cd5ec0a0919b44cc17d47", "name": "MSX.ROM", "note": "MSX1 main BIOS (32 KB). Loaded for MSX1 model (fMSX/MSX.c:693).", "required": true, "sha1": "409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498", "size": 32768, "source_ref": "fMSX/ROMs/MSX.ROM", "system": "msx"}, {"bundled": true, "md5": "ec3a01c91f24fbddcbcab0ad301bc9ef", "name": "MSX2.ROM", "note": "MSX2 main BIOS (32 KB). Loaded for MSX2 model (fMSX/MSX.c:709).", "required": true, "sha1": "6103b39f1e38d1aa2d84b1c3219c44f1abb5436e", "size": 32768, "source_ref": "fMSX/ROMs/MSX2.ROM", "system": "msx2"}, {"bundled": true, "md5": "2183c2aff17cf4297bdb496de78c2e8a", "name": "MSX2EXT.ROM", "note": "MSX2 extension BIOS (16 KB). Loaded alongside MSX2.ROM (fMSX/MSX.c:710).", "required": true, "sha1": "5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02", "size": 16384, "source_ref": "fMSX/ROMs/MSX2EXT.ROM", "system": "msx2"}, {"bundled": true, "md5": "6d8c0ca64e726c82a4b726e9b01cdf1e", "name": "MSX2P.ROM", "note": "MSX2+ main BIOS (32 KB). Loaded for MSX2+ model, the default (fMSX/MSX.c:731).", "required": true, "sha1": "e2fbd56e42da637609d23ae9df9efd1b4241b18a", "size": 32768, "source_ref": "fMSX/ROMs/MSX2P.ROM", "system": "msx2plus"}, {"bundled": true, "md5": "7c8243c71d8f143b2531f01afa6a05dc", "name": "MSX2PEXT.ROM", "note": "MSX2+ extension BIOS (16 KB). Loaded alongside MSX2P.ROM (fMSX/MSX.c:732).", "required": true, "sha1": "fe0254cbfc11405b79e7c86c7769bd6322b04995", "size": 16384, "source_ref": "fMSX/ROMs/MSX2PEXT.ROM", "system": "msx2plus"}, {"bundled": true, "md5": "80dcd1ad1a4cf65d64b7ba10504e8190", "name": "DISK.ROM", "note": "Disk controller BIOS (16 KB). Needed for .dsk content. Enable 'Simulate DiskROM' option (fMSX/MSX.c:780).", "required": false, "sha1": "032cb1c1c75b9a191fa1230978971698d9d2a17f", "size": 16384, "source_ref": "fMSX/ROMs/DISK.ROM"}, {"bundled": true, "md5": "6f69cc8b5ed761b03afd78000dfb0e19", "name": "FMPAC.ROM", "note": "FM-PAC cartridge ROM (64 KB, YM2413 FM synthesis). Auto-loaded into first free slot (fMSX/MSX.c:557).", "required": false, "sha1": "9d789166e3caf28e4742fe933d962e99618c633d", "size": 65536, "source_ref": "fMSX/ROMs/FMPAC.ROM"}, {"bundled": true, "md5": "febe8782b466d7c3b16de6d104826b34", "name": "KANJI.ROM", "note": "Kanji font ROM (128 KB). Auto-loaded if present, no option needed (fMSX/MSX.c:530).", "required": false, "sha1": "84a645becec0a25d3ab7a909cde1b242699a8662", "size": 131072, "source_ref": "fMSX/ROMs/KANJI.ROM"}, {"bundled": true, "md5": "6418d091cd6907bbcf940324339e43bb", "name": "MSXDOS2.ROM", "note": "MSX-DOS 2 ROM (64 KB). Loaded when 'fmsx_dos2' option enabled and model is MSX2 or MSX2+ (fMSX/MSX.c:545).", "required": false, "sha1": "c36c9e0f96738a340381e23b4f97245388801a46", "size": 65536, "source_ref": "fMSX/ROMs/MSXDOS2.ROM"}, {"bundled": true, "md5": "403cdea1cbd2bb24fae506941f8f655e", "name": "PAINTER.ROM", "note": "Paint utility ROM (64 KB). Auto-loaded for MSX2 and MSX2+ models (fMSX/MSX.c:552).", "required": false, "sha1": "7fd2a28c4fdaeb140f3c8c8fb90271b1472c97b9", "size": 65536, "source_ref": "fMSX/ROMs/PAINTER.ROM"}, {"bundled": true, "md5": "279efd1eae0d358eecd4edc7d9adedf3", "name": "RS232.ROM", "note": "RS-232C serial interface ROM (16 KB + 256 B). Loaded into slot 3:3 (fMSX/MSX.c:533).", "required": false, "sha1": "7aec0134ad6a5177f4056fcb6047083e8e00529b", "size": 16640, "source_ref": "fMSX/ROMs/RS232.ROM"}, {"bundled": false, "name": "GMASTER2.ROM", "note": "Konami GameMaster2 cartridge ROM. Loaded when 'fmsx_game_master' option enabled (fMSX/MSX.c:576).", "required": false}, {"bundled": false, "name": "GMASTER.ROM", "note": "Konami GameMaster cartridge ROM. Fallback if GMASTER2.ROM is missing (fMSX/MSX.c:580).", "required": false}, {"bundled": false, "name": "CMOS.ROM", "note": "RTC/CMOS settings. Auto-saved by the core on exit, auto-loaded on start (fMSX/MSX.c:526).", "required": false}, {"bundled": true, "md5": "85b38e4128bbc300e675f55b278683a8", "name": "DEFAULT.FNT", "note": "Default text font. Loaded by LoadFNT() (fMSX/MSX.c:523). Same content as CYRILLIC.FNT.", "required": false, "source_ref": "fMSX/ROMs/DEFAULT.FNT, libretro.c:1546"}, {"bundled": true, "md5": "c83e50e9f33b8dd893c414691822740d", "name": "ITALIC.FNT", "note": "Italic text font.", "required": false, "source_ref": "fMSX/ROMs/ITALIC.FNT, libretro.c:1546"}, {"bundled": true, "md5": "ac4f4a90c1b1887db48ded39c9d9c847", "name": "INTERNAT.FNT", "note": "International text font.", "required": false, "source_ref": "fMSX/ROMs/INTERNAT.FNT, libretro.c:1546"}, {"bundled": true, "md5": "85b38e4128bbc300e675f55b278683a8", "name": "CYRILLIC.FNT", "note": "Cyrillic text font. Same content as DEFAULT.FNT.", "required": false, "source_ref": "fMSX/ROMs/CYRILLIC.FNT, libretro.c:1546"}, {"bundled": true, "md5": "73291e76638a2f5aa2eceb843df468f4", "name": "KOREAN.FNT", "note": "Korean text font.", "region": ["south-korea"], "required": false, "source_ref": "fMSX/ROMs/KOREAN.FNT, libretro.c:1546"}, {"bundled": true, "md5": "aa28f0703b951a6be8df3e28e20d263d", "name": "JAPANESE.FNT", "note": "Japanese text font.", "region": ["japan"], "required": false, "source_ref": "fMSX/ROMs/JAPANESE.FNT, libretro.c:1546"}, {"bundled": false, "name": "CARTS.CRC", "note": "CRC database for cartridge identification and mapper detection. Tried first, before CARTS.SHA (fMSX/MSX.c:2697).", "required": false, "unsourceable": "dead legacy code path, never created or distributed, replaced by CARTS.SHA"}, {"bundled": true, "md5": "74b0f217fa0e2b8bb5a2f8e2ecc69da3", "name": "CARTS.SHA", "note": "SHA1 database for cartridge identification and mapper detection. Fallback when CARTS.CRC absent (fMSX/MSX.c:2712).", "required": false, "source_ref": "fMSX/ROMs/CARTS.SHA"}], "notes": "Place all ROM files directly in the RetroArch system directory. No subdirectory\nneeded. The core does chdir() to system_dir before loading.\n\nThe default model is MSX2+, which needs MSX2P.ROM and MSX2PEXT.ROM. If you only\nplay cartridge ROMs, these two files are sufficient. For disk games (.dsk), also\nadd DISK.ROM and enable \"Simulate DiskROM\" in core options.\n\nKANJI.ROM and FMPAC.ROM are loaded automatically when present, no option needed.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/fmsx-libretro", "source_commit": "f013e213458e06d9df718e4bc4b09d46f88aa899", "systems": ["msx", "msx2", "msx2plus"], "type": "libretro", "upstream": "https://fms.komkon.org/fMSX/"}


id: fpse
name: FPse
type: standalone
classification: other
source: https://play.google.com/store/apps/details?id=com.emulator.fpse
upstream: closed-source
profile_json:
{"author": "Schtruck & LDchen (EMUSOFT)", "bios_directory": "bios/", "bios_size": 524288, "core_classification": "other", "core_version": "12.1", "cores": ["fpse"], "display_name": "Sony - PlayStation (FPse)", "emulator": "FPse", "exclusion_note": "Left out are the files FPse writes and reads back itself, which are emulator state rather than files a user has to obtain: fpse.ini and the per-title configurations under cfg, the memory cards slot1.mcd and slot2.mcd, savestates and the snapshots under snaps, fpselog.txt and the cpulog.txt and gpulog.txt traces. gamelist.ini is left out with them for a different reason: it is rewritten from the package at every start, so a copy placed there never survives. Left out too are the shipped overlay pad artwork, skin/pad.ini with its button and stick images, which unpack from the package, and the shader pairs, which the package carries in assets while the Shaders setting selects a directory rather than a file. bios/kanji.rom is left out on the same ground: it is a FONTX2 font the core draws Japanese text with, header FONTX2X11, 238586 bytes, md5 040d9dcbad83388c14d2628ac69ce88b, sha1 915880f8bb04de39fd5132b92dfb99872f54fa47 in 12.1, and it has only ever existed inside the package, unpacked into bios at first start and left alone afterwards so a replacement stays. It is not a dump of the font ROM inside the Japanese BIOS, and it shares its generic name with the unrelated kanji ROMs of the MSX and the PC-88. Only the ARM builds name it; the x86 build of 0.11.190 carries neither it nor the v2.2 identification strings. The disc images and their .cue sidecars are not emulator files. The HLE BIOS is not a file either: it is code, and the strings it answers a BIOS identification with sit in .rodata beside the rest of the core messages, with no 512 KB image anywhere in the library. ref: res/raw/fpse.ini MemCard1, Main.java:30046, Main.java:29721,\n     Main.java:29758-29859, res/raw/kanji.rom,\n     FPse 0.11.190 libfpse.so armeabi-v7a .rodata 0x245818-0x2458cc\n", "files": [{"config_key": "BiosName", "description": "SCPH-1001, DTL-H1201, DTL-H3001 (v2.2 12-04-95 A)", "hle_fallback": true, "md5": "924e392ed05558ffdb115408c263dccf", "name": "scph1001.bin", "note": "The only image the code identifies, and it identifies it by a checksum of its own rather than by a hash it spells out: the 524288 bytes summed as signed bytes, accepted at 85958. The md5 and sha1 here are the dump that reproduces that sum. Selecting a BIOS by hand takes any file ending in .bin that is exactly 524288 bytes, so the other images of the group fill the slot without being recognised by name or by sum.", "path": "bios/scph1001.bin", "required": false, "sha1": "10155d8d6e6e832d6ea66db9bc098321fb5e8ebf", "size": 524288, "source_ref": "Main.java:4159-4175, Main.java:5919, Main.java:25217, res/raw/fpse.ini BiosName", "system": "sony-playstation", "validation": ["size"], "variant_group": "psx-bios"}, {"description": "PlayStation library executable loaded at startup when present", "name": "LibPS.exe", "note": "Loaded by bare name through the same loader as any PS-X EXE, reporting \"LibPS.exe found and loaded.\" on success and continuing untouched when the loader returns -1. Not carried by the package, and the core never chdirs, so it resolves against the working directory of the process.", "required": false, "source_ref": "FPse 0.11.190 libfpse.so x86 0x95545-0x9558a, FPse 12.1 libfpse.so .rodata 0x344634", "system": "sony-playstation"}, {"bundled": true, "category": "game_data", "description": "software renderer plugin", "name": "libsoft1.so", "note": "Named by System.loadLibrary(\"soft1\") and listed in DT_NEEDED by the core. 0.11.190 listed it the same way without shipping it, tested for the file in the private directory and stopped on an error dialog before the core when it was absent, the file coming from plugins267.zip.", "required": true, "source_ref": "Main.java:29688, FPse 0.11.190 Main.java:24148-24162"}, {"bundled": true, "category": "game_data", "description": "sound plugin", "name": "libspuplugin.so", "note": "Named by System.loadLibrary(\"spuplugin\") and listed in DT_NEEDED. 0.11.190 picked libspupluginex.so, libspuplugin2.so or libspuplugin1.so by device and API level and copied the winner over this name.", "required": true, "source_ref": "Main.java:29687, FPse 0.11.190 Main.java:24126-24132"}, {"aliases": ["libopengl1.so", "libopenglex.so"], "bundled": true, "category": "game_data", "description": "OpenGL renderer plugin", "name": "libopengl.so", "note": "Named by System.loadLibrary(\"opengl\") and listed in DT_NEEDED. A plugin chosen from the .so browser is copied over libopengl1.so, which 0.11.190 in turn copied over this name, the ex variant standing in for it on the devices that ask for it.", "required": true, "source_ref": "Main.java:29690, Main.java:11010, FPse 0.11.190 Main.java:24178-24199"}, {"aliases": ["libnfs.so"], "bundled": true, "category": "game_data", "description": "NFS client plugin, for discs read from a network share", "name": "libnfsplugin.so", "note": "Named by System.loadLibrary(\"nfsplugin\") and listed in DT_NEEDED. Called libnfs.so through the 0.11.x line.", "required": true, "source_ref": "Main.java:29689, FPse 0.11.190 Main.java:24163-24177"}, {"bundled": true, "category": "game_data", "description": "SDL 1.2 audio backend", "name": "libsdl.so", "note": "Named by System.loadLibrary(\"sdl\") and listed in DT_NEEDED.", "required": true, "source_ref": "Main.java:20405, FPse 12.1 libfpse.so readelf -d"}, {"bundled": true, "category": "game_data", "description": "NEON colour conversion routines", "name": "libneon.so", "note": "Named by System.loadLibrary(\"neon\") and listed in DT_NEEDED, which resolves bgr555rgb565neon for the core.", "required": true, "source_ref": "Main.java:20406, FPse 12.1 libfpse.so readelf -d"}, {"bundled": true, "category": "game_data", "description": "archive extractor for .zip, .rar, .7z, .ape and .ecm images", "name": "libuncompress.so", "note": "Named by System.loadLibrary(\"uncompress\") and the only one of the plugins the core does not list in DT_NEEDED. 0.11.190 loaded it on demand from the private directory.", "required": false, "source_ref": "Main.java:29686, FPse 0.11.190 Main.java:6244-6249"}, {"category": "game_data", "description": "external overlay pad skin", "name": "<skin>.ini", "note": "Selected through a browser listing .ini files, which is what the External entry of the gamepad skin setting opens. The default set unpacks from the package as skin/pad.ini with its button and stick artwork.", "path": "skin/<skin>.ini", "required": false, "source_ref": "Main.java:5936-5938, Main.java:29758", "unsourceable": "overlay pad artwork published by other users"}, {"category": "game_data", "description": "cheat codes for one title", "name": "<game>.txt", "note": "Selected through a browser listing .txt files and parsed as titles between hashes followed by address and value pairs. Cheats apply only when a BIOS image is loaded.", "required": false, "source_ref": "Main.java:5965-5967, Main.java:30552", "unsourceable": "cheat codes the user writes or collects per title"}], "mode": "standalone", "notes": "PlayStation emulator for Android, closed source, sold on Google Play as package\ncom.emulator.fpse. Two builds are read here and both carry the same signing\ncertificate, CN=FPse Team issued 2011, sha256\n9af45a593faf3b522c5120fc976a03b7d82a88a9e5008162b9d6822ade7c981a: 12.1\nversionCode 940, apk md5 09160e917333d546296d4fcdae7b35f9, armeabi-v7a, and\n0.11.190 versionCode 720, apk md5 818ee3fe71370ac983283926234e920e, armeabi\nplus armeabi-v7a plus x86, taken from the OUYA store archive. The archive.org\nitem labelled FPse 1.7.8 is package com.emulator.fpse64, signed with the Android\ntest key and carrying an assets/hook.apk payload, and is not read here. The\nemulator descends from LDchen's PC FPSE and keeps its console messages, its\nfpse.ini keys and its bios, plugin, cfg and snaps directory names.\nref: com.emulator.fpse META-INF/BNDLTOOL.RSA, META-INF/CERT.RSA,\n     res/raw/fpse.ini\n\nOne root holds everything and it is the private files directory of the package,\nnot shared storage. Main sets it from getFilesDir and creates bios, plugin, cfg\nand skin under it right after the native libraries load, then unpacks its own\nresources into them. Paths below are relative to that root. The plugins have no\nstable path of their own: 12.1 loads them from the native library directory of\nthe package and 0.11.190 loaded them from this root, so they are recorded by\nname alone.\nref: Main.java:32088, Main.java:29716-29719\n\nExactly one BIOS image is ever loaded and its full path is a setting rather than\na name the code looks for. The Load Bios browser lists .bin files only, the\nchosen path is written to the preference com.emulator.fpse.biospath and pushed\ninto the emulator core as string slot 6, and leaving the browser without a\nchoice writes an empty string, which is the documented way to switch to HLE.\nThe stored path is re-checked at every start: a file that no longer exists or is\nnot exactly 524288 bytes clears the preference and the session runs on HLE. On\nthe core side a path that will not open reports\n\"Can't load biosfile '%s', switching to HLE\" and emulation continues, so no\nimage is needed on its own. fpse.ini ships with EnableHLE=on and BiosName set to\nthe placeholder scph1001.bin_is_recommended, and the core resolves BiosName\nunder bios/ when the setting is left alone.\nref: Main.java:5917-5919, Main.java:1173, Main.java:1965-1971,\n     Main.java:25213-25222, res/raw/fpse.ini BiosName,\n     FPse 0.11.190 libfpse.so x86 0x5c2c8-0x5c395\n\nAutomatic detection recognises one dump and does it on content. Scanning\nstorage, FPse keeps files whose lowercased name ends in .bin and whose length is\nexactly 524288, reads all 524288 bytes, sums them as signed bytes and accepts\nthe file when the total is 85958, writing the path to the preference and turning\nthe BIOS on. The same constant answers over NFS through isnfsbios. Reimplemented\nover the collection, that sum resolves to a single image, the v2.2 12/04/95 A\ndump listed below, and to no other. The HLE path impersonates the same revision:\nits identification strings sit in .rodata as ordinary C strings next to\n\"HLE enabled.\", and the library carries no 512 KB image of its own.\nref: Main.java:4155-4175, Main.java:4185, Main.java:21188,\n     FPse 0.11.190 libfpse.so armeabi-v7a .rodata 0x245828-0x2458cc\n\nEmulation itself lives in plugins that Main names one by one before the core:\nuncompress, spuplugin, soft1, nfsplugin and opengl, then fpse. libfpse.so lists\nall of them except uncompress in DT_NEEDED, so the core will not link without\nthem. They are distributed both ways. 0.11.190 shipped none of them, tested for\neach file in the private directory, stopped on an error dialog before loading\nthe core when one was absent, and fetched plugins267.zip and its per GPU and per\nABI variants from fpse.net; 12.1 carries them in the package and keeps an\nupdater that asks getfile.php for the list matching its own versionCode and ABI,\nalongside plugins605 constants nothing reads. Both generations of the pack still\nanswer: plugins605v7.zip is 1359776 bytes and holds the armeabi-v7a build of\nlibsoft1.so, libspuplugin.so, libopengl.so, libnfsplugin.so and\nlibuncompress.so at the same lengths as the copies inside 12.1 but not the same\nbytes, plus the libopenglex.so, libspuplugin1.so and libspupluginex.so variants\nthe package does not carry, and twenty shader pairs. An OpenGL plugin picked by\nhand from the .so browser is copied over libopengl1.so and used in place of the\npackaged one. libGLESv2, libjnigraphics, liblog, libstdc++, libdl, libm and libc\nare the Android runtime and are not files anyone supplies.\nref: Main.java:29686-29698, Main.java:20405-20406, Main.java:11010,\n     Main.java:3417-3423, Main.java:1120-1137,\n     FPse 0.11.190 Main.java:24126-24207, FPse 0.11.190 Main.java:860-871,\n     FPse 12.1 libfpse.so readelf -d,\n     fpse.net/plugins605v7.zip md5 ae5dbdc27452092af3e712448f427fd3\n\nResources unpack through two helpers that differ in one respect. b2 writes only\nwhen the target is absent, so bios/kanji.rom, fpse.ini and the whole skin set\nsurvive being replaced by hand. c2 truncates, so gamelist.ini is rewritten from\nthe package at every start and a copy put there does not last.\nref: Main.java:26892-26895, Main.java:26956-26957, Main.java:29721,\n     Main.java:29755-29758, Main.java:30046\n", "profiled_date": "2026-08-11", "source": "https://play.google.com/store/apps/details?id=com.emulator.fpse", "systems": ["sony-playstation"], "type": "standalone", "upstream": "closed-source"}


id: fpse-ng
name: FPseNG
type: standalone
classification: other
source: https://play.google.com/store/apps/details?id=com.emulator.fpse64
upstream: closed-source
profile_json:
{"author": "Schtruck & LDchen", "bios_directory": "bios/", "bios_size": 524288, "core_classification": "other", "core_version": "1.13", "cores": ["fpse-ng", "fpseng", "fpse64"], "display_name": "Sony - PlayStation (FPseNG)", "emulator": "FPseNG", "exclusion_note": "Left out are the files FPseNG writes and reads back itself, which are emulator state rather than files a user has to obtain: fpse.ini and the per-title configurations under cfg, the memory cards slot1.mcd and slot2.mcd under FPse64/memcards, the savestates and snapshots under FPse64/sstates, the game list cache FPse64/filelist.txt, the recorded clips under FPse64/videos, and the fpselog.txt, cpulog.txt and gpulog.txt traces. gamelist.ini is left out with them for a different reason: it is rewritten from the package at every start, so a copy placed there never survives. Left out too are the covers, titles and game notes the application downloads into FPse64/icons, FPse64/titles and fpse64/infos, which are interface metadata keyed by game identifier, and the shipped overlay pad artwork, skin/pad.ini with its button and stick images, which unpacks from the package. The .sbi files downloaded into FPse64/sbi are left out on the ground that nothing loads them: neither the java nor any of the eight libraries reads that directory back, and the string \".sbi\" appears nowhere in the native code. The disc images and their .cue sidecars are not emulator files. The HLE BIOS is not a file either: it is code, and the identification strings it answers with sit in .rodata beside the rest of the core messages, with no 512 KB image anywhere in the library. ref: res/raw fpse.ini MemCard1, Main.java:27463, Main.java:34054-34057,\n     Main.java:15415-15430, libfpse.so .rodata 0x1b8d81-0x1b8dfb\n", "files": [{"config_key": "com.emulator.fpse64.biospath", "description": "SCPH-1001, DTL-H1201, DTL-H3001 (v2.2 12-04-95 A)", "hle_fallback": true, "md5": "924e392ed05558ffdb115408c263dccf", "name": "scph1001.bin", "note": "The only image the code identifies, and it identifies it by a checksum of its own rather than by a hash it spells out: the 524288 bytes summed as signed bytes, accepted at 85958. The md5 and sha1 here are the dump that reproduces that sum. Selecting a BIOS by hand takes any .bin of exactly 524288 bytes, so the other images of the group fill the slot without being recognised by name or by sum.", "path": "bios/scph1001.bin", "required": false, "sha1": "10155d8d6e6e832d6ea66db9bc098321fb5e8ebf", "size": 524288, "source_ref": "Main.java:24466-24487, Main.java:9945-9952, Main.java:30177-30192, Main.java:5392-5396, libfpse.so 0x70e20-0x70ed0", "system": "sony-playstation", "validation": ["size"], "variant_group": "psx-bios"}, {"bundled": true, "description": "FONTX2 font the core draws Japanese text with", "md5": "040d9dcbad83388c14d2628ac69ce88b", "name": "kanji.rom", "note": "Header FONTX2X11. Unpacked into bios/ at first start and left alone afterwards, so a replacement stays. The core appends the name to the root and its bios/ component, opens the result read only and carries on when the file is absent.", "path": "bios/kanji.rom", "required": false, "sha1": "915880f8bb04de39fd5132b92dfb99872f54fa47", "size": 238586, "source_ref": "Main.java:27334, Main.java:33974-33977, libfpse.so 0x71074-0x710b4, libfpse.so 0x95ce0-0x95ce8", "unsourceable": "ships inside the paid application package"}, {"bundled": true, "category": "game_data", "description": "software renderer plugin", "name": "libsoft1.so", "note": "Named by System.loadLibrary(\"soft1\") outside any catch and listed in DT_NEEDED by the core. Also holds the VR background loader.", "required": true, "source_ref": "Main.java:27302, libfpse.so readelf -d", "unsourceable": "ships inside the paid application package"}, {"bundled": true, "category": "game_data", "description": "sound plugin", "name": "libspuplugin.so", "note": "Named by System.loadLibrary(\"spuplugin\") outside any catch and listed in DT_NEEDED.", "required": true, "source_ref": "Main.java:27301, libfpse.so readelf -d", "unsourceable": "ships inside the paid application package"}, {"aliases": ["libopengl1.so"], "bundled": true, "category": "game_data", "description": "OpenGL renderer plugin", "name": "libopengl.so", "note": "Named by System.loadLibrary(\"opengl\") outside any catch and listed in DT_NEEDED. A plugin chosen from the .so browser is copied over libopengl1.so under the root.", "required": true, "source_ref": "Main.java:27304, Main.java:9985, libfpse.so readelf -d", "unsourceable": "ships inside the paid application package"}, {"bundled": true, "category": "game_data", "description": "NFS client plugin, for discs read from a network share", "name": "libnfsplugin.so", "note": "Named by System.loadLibrary(\"nfsplugin\") outside any catch and listed in DT_NEEDED. Backs the isnfsbios and copyfromnfs entry points.", "required": true, "source_ref": "Main.java:27303, Main.java:25670, libfpse.so readelf -d", "unsourceable": "ships inside the paid application package"}, {"bundled": true, "category": "game_data", "description": "SDL audio backend", "name": "libsdl.so", "note": "Named by System.loadLibrary(\"sdl\") from a static block that catches UnsatisfiedLinkError, and listed in DT_NEEDED, so the core will not link without it.", "required": true, "source_ref": "Main.java:25134, libfpse.so readelf -d", "unsourceable": "ships inside the paid application package"}, {"bundled": true, "category": "game_data", "description": "NEON colour conversion routines", "name": "libneon.so", "note": "Named by System.loadLibrary(\"neon\") from the same static block and listed in DT_NEEDED.", "required": true, "source_ref": "Main.java:25135, libfpse.so readelf -d", "unsourceable": "ships inside the paid application package"}, {"bundled": true, "category": "game_data", "description": "archive extractor for .zip, .rar, .7z, .ape and .ecm images", "name": "libuncompress.so", "note": "Named by System.loadLibrary(\"uncompress\") outside any catch, and the only one of the plugins the core does not list in DT_NEEDED.", "required": true, "source_ref": "Main.java:27300, Main.java:25408, libfpse.so readelf -d", "unsourceable": "ships inside the paid application package"}, {"bundled": true, "category": "game_data", "description": "vertex shader read whole and handed to the OpenGL renderer", "name": "<shader>.vsh", "note": "The Shaders setting walks the directory and reads the selected pair, passing the bytes to setVSH. The packaged set is copied out of assets once storage access is granted, and a pair dropped in by hand joins the list.", "path": "FPse64/shaders/<shader>.vsh", "required": false, "source_ref": "Main.java:25962-25975, Main.java:35655-35669, Main.java:35829-35845", "unsourceable": "ships inside the paid application package"}, {"bundled": true, "category": "game_data", "description": "fragment shader read whole and handed to the OpenGL renderer", "name": "<shader>.fsh", "note": "Read from the same directory as the vertex shader of the same name and passed to setFSH.", "path": "FPse64/shaders/<shader>.fsh", "required": false, "source_ref": "Main.java:25983-25996, Main.java:35677-35691, Main.java:35829-35845", "unsourceable": "ships inside the paid application package"}, {"category": "game_data", "description": "background image the software renderer draws behind the VR view", "name": "vrback.raw", "note": "Opened read only at the root of shared storage and read as 640 by 512 sixteen bit pixels. Not carried by the package: the application downloads fpse.net/vrback.zip, extracts it at that root and deletes the archive. The distributed file is 655364 bytes.", "path": "vrback.raw", "required": false, "source_ref": "libsoft1.so 0x5fda8-0x5fdb8, libsoft1.so 0x5fa3c-0x5fa50, Main.java:12555-12585"}, {"category": "game_data", "description": "cheat codes for one title", "name": "<game>.txt", "note": "The path is pushed into the core as string slots 140, 141 and 143, keyed by the licence string of the running disc. A file chosen through a browser listing .txt is copied there, and the cheat search writes its results to the same name.", "path": "FPse64/cheats/<game>.txt", "required": false, "source_ref": "Main.java:21973-21975, Main.java:10319-10357, Main.java:26918, Main.java:28219-28226", "unsourceable": "cheat codes fetched per title from the developer site or written by the user"}, {"category": "game_data", "description": "OpenGL option mask for one title", "name": "<game>.txt", "note": "Read as a single integer and applied through setOptionGL, keyed by the licence string. Distributed as fpse.net/o/ogl.zip, which the application extracts into that directory, and rewritten there when the options are changed by hand.", "path": "FPse64/ogl/<game>.txt", "required": false, "source_ref": "Main.java:29309-29322, Main.java:18286-18294, Main.java:16605-16644", "unsourceable": "per title OpenGL option value distributed by the developer"}, {"category": "game_data", "description": "external overlay pad skin", "name": "<skin>.ini", "note": "Selected through a browser listing .ini files. The default set unpacks from the package as skin/pad.ini with its button and stick artwork, and a pack downloaded from the developer arrives as padtemp.zip and is extracted into the same directory.", "path": "skin/<skin>.ini", "required": false, "source_ref": "Main.java:21943-21947, Main.java:27355, Main.java:11014", "unsourceable": "overlay pad artwork published by other users"}, {"description": "PlayStation library executable loaded after the BIOS resources", "name": "LibPS.exe", "note": "Loaded by bare name during \"Loading files...\" when the matching option bit is set, reporting \"LibPS.exe found and loaded.\" on success and continuing untouched when the loader returns -1. Not carried by the package, and the core never chdirs, so it resolves against the working directory of the process.", "required": false, "source_ref": "libfpse.so 0x95de8-0x95e1c, libfpse.so .rodata 0x1ba534", "system": "sony-playstation"}], "mode": "standalone", "notes": "PlayStation emulator for Android, closed source, sold on Google Play as package\ncom.emulator.fpse64 and named FPse64 until the rename. The build read here is\n1.13, versionCode 245, minSdk 23, targetSdk 33, activity\ncom.emulator.fpse64.Main. Google signs the package through Play App Signing,\nCN=Android O=Google Inc. issued 2020-05-02, sha256\n5df4c204abac4d2a10c4b8f497689e28c2bfb5dc44a56081ebb4a5e1c2f1d27f, and that\nsignature block travels inside the copy read here: the repackager kept the\noriginal apk as assets/SignatureKiller/origin.apk, whose MANIFEST.MF carries\nthe sha256 of all 1278 entries of the distributed build. 1274 match byte for\nbyte, among them every native library and every resource; AndroidManifest.xml,\nclasses.dex and resources.arsc differ, stamp-cert-sha256 is dropped and one\nclass, bin/mt/signature/KillerApplication, is added. Native code and resources\nare therefore the distributed ones and the java below is the application's own,\nminus that injection. A second copy, apkvision 1.8, is signed with the Android\ntest key and ships three of the eight libraries its own core links against; it\nis read only to confirm that the preference key, the two size tests and the\nchecksum constant below are the application's and not the repackager's.\nref: com.emulator.fpse64 1.13 assets/SignatureKiller/origin.apk\n     META-INF/GOOGPLAY.RSA, META-INF/MANIFEST.MF\n\nTwo roots hold everything. The private files directory of the package is the\none the core is given, and bios, plugin, cfg and skin are created under it\nright after the libraries load; the emulator resolves its own paths against it.\nThe second is a directory named FPse64 at the root of shared storage, holding\nmemcards, cheats, shaders, ogl, sbi, sstates, titles, icons, videos and\nfilelist.txt. Paths below are relative to the first root unless they name the\nsecond.\nref: Main.java:36420, Main.java:3004, Main.java:27329-27332,\n     Main.java:27458-27459, Main.java:30411-30413\n\nExactly one BIOS image is ever loaded and its full path is a setting rather\nthan a name the code looks for. The Load Bios browser keeps .bin files and\nlists only those of exactly 524288 bytes, the chosen path is written to the\npreference com.emulator.fpse64.biospath and pushed into the core as string\nslot 6, and the stored path is re-checked at every start: a file that no longer\nexists or is not exactly 524288 bytes clears the preference and the session\nruns on HLE. Slot 6 receives the empty string whenever the path is empty, the\nBIOS switch is off or the launching intent carried bios=0, which is the\ndocumented way to ask for HLE; the shortcuts the application pins carry that\nsame extra. On the core side the value is opened as given, then retried below\nbios/ under the root, so a bare name resolves there; a hit is read as one block\nof 0x80000 bytes after \"Loading '%s'...\", and a miss reports \"Can't load\nbiosfile '%s', switching to HLE\", sets the HLE bit and writes\n\"CEX-3000/1001/1002 by K.S.\", \"System ROM Version 2.2 12/04/95 A\" and the Sony\ncopyright line into BIOS memory, so no image is needed on its own. The FAQ on\nthe emulator's own site states that a file named scph1001.bin is recommended\nand is not distributed with the emulator.\nref: Main.java:1169, Main.java:21925-21927, Main.java:25833-25835,\n     Main.java:9943-9977, Main.java:30177-30192, Main.java:5392-5396,\n     Main.java:36446-36451, Main.java:28751-28754,\n     libfpse.so 0x70e20-0x70f20, fpsece.net/faq.html\n\nAutomatic detection recognises one dump and does it on content. Scanning\nstorage, FPseNG keeps files whose lowercased name ends in .bin and whose length\nis exactly 524288, reads all 524288 bytes, sums them as signed bytes and\naccepts the file when the total is 85958, writing the path to the preference\nand turning the BIOS on. The same constant answers over NFS through isnfsbios.\nRecomputed over the collection, that sum resolves to a single image, the\nv2.2 12/04/95 A dump listed below, and to no other. The HLE path impersonates\nthe same revision: its identification strings sit in .rodata beside \"HLE\nenabled.\" and the library carries no 512 KB image of its own.\nref: Main.java:24466-24487, Main.java:24491, Main.java:25670,\n     libfpse.so .rodata 0x1b8d81-0x1b8dfb\n\nEmulation is split across libraries the core links against. libfpse.so lists\nlibopengl, libsoft1, libspuplugin, libneon, libsdl and libnfsplugin in\nDT_NEEDED, and Main names uncompress, spuplugin, soft1, nfsplugin and opengl\nbefore fpse; sdl and neon are named earlier from a static block that swallows\nUnsatisfiedLinkError, the rest are not guarded. All eight ship in the package\nfor arm64-v8a and no other ABI. Eighteen constants naming nine plugins296\narchives on fpse.net and fpsece.net survive in the class and nothing reads\nthem, and the two archive extractors keep a branch counting eight .so members\nthat no caller reaches. What getfile.php still answers, once per versionCode\nand keyed by ABI as type p64, is a blob handed to setnfspos and summed into a\npreference, not a library anything writes to disk. An OpenGL plugin picked by\nhand from the .so browser is copied over libopengl1.so under the root.\nlibGLESv2, libjnigraphics, liblog, libstdc++, libdl, libm and libc are the\nAndroid runtime and are not files anyone supplies.\nref: Main.java:25134-25137, Main.java:27300-27312, Main.java:9985,\n     Main.java:1116-1133, Main.java:8496, Main.java:13854,\n     Main.java:23615-23621, libfpse.so readelf -d\n\nResources unpack through helpers that differ in one respect. The guarded one\nwrites only when the target is absent, so bios/kanji.rom, fpse.ini and the\nwhole skin set survive being replaced by hand, and the same rule puts\nslot1.mcd and slot2.mcd under FPse64/memcards on shared storage. The\nunguarded one truncates, so gamelist.ini is rewritten from the package at every\nstart and a copy put there does not last. The shipped shaders are copied out of\nassets into FPse64/shaders once storage access is granted.\nref: Main.java:33974-33977, Main.java:34054-34057, Main.java:34750-34753,\n     Main.java:27334, Main.java:27346-27347, Main.java:27463,\n     Main.java:35829-35845\n\nWhat the application fetches for itself comes from the developer's servers:\ncheat files from fpse.net/c/, per title OpenGL option files packed as\nfpse.net/o/ogl.zip, covers from fpse.net/i64/, titles from fpse.net/t/, game\nnotes from fpse.net/games64/, overlay pad skins from fpse.net/s/ as\npadtemp.zip extracted into skin/, and vrback.zip extracted at the root of\nshared storage. Files named after a game identifier and ending in .sbi are\ndownloaded into FPse64/sbi for the titles of one internal list; no library and\nno java path reads them back, and the string \".sbi\" appears in none of the\neight libraries.\nref: Main.java:10505-10507, Main.java:16605, Main.java:16644,\n     Main.java:11468, Main.java:11827, l0.java:82-89, Main.java:10846,\n     Main.java:11014, Main.java:12555-12585, Main.java:15415-15430,\n     Main.java:15489\n", "profiled_date": "2026-08-11", "source": "https://play.google.com/store/apps/details?id=com.emulator.fpse64", "systems": ["sony-playstation"], "type": "standalone", "upstream": "closed-source"}


id: freechaf
name: FreeChaF
type: libretro
classification: pure_libretro
source: https://github.com/libretro/FreeChaF
source_commit: 76c7a84f1f7e80f3e6f2bba96fe100cb24e99124
profile_json:
{"core_classification": "pure_libretro", "core_version": "GIT", "cores": ["freechaf"], "display_name": "Fairchild - ChannelF (FreeChaF)", "emulator": "FreeChaF", "files": [{"hle_fallback": true, "name": "sl31253.bin", "note": "Channel F PSU1 ROM (original). Fallback if sl90025.bin is missing.", "priority": 2, "required": false, "source_ref": "src/libretro.c:192", "system": "fairchild-channelf"}, {"hle_fallback": true, "name": "sl31254.bin", "note": "Channel F PSU2 ROM. Always loaded at address 0x400.", "required": false, "source_ref": "src/libretro.c:202", "system": "fairchild-channelf"}, {"hle_fallback": true, "name": "sl90025.bin", "note": "Channel F II PSU1 ROM. Tried first, preferred over sl31253.bin.", "priority": 1, "required": false, "source_ref": "src/libretro.c:186", "system": "fairchild-channelf"}], "notes": "FreeChaF is a Fairchild Channel F emulator written for libretro.\n\nBIOS loading is in src/libretro.c:186-208. The core first tries to load\nsl90025.bin (Channel F II PSU1) at address 0x000. If that fails, it falls\nback to sl31253.bin (original Channel F PSU1) at the same address. PSU2\n(sl31254.bin) is always loaded at address 0x400.\n\nMemory layout from src/memory.h:27-30:\n  0x000-0x3FF  PSU1 ROM (sl31253 or sl90025)\n  0x400-0x7FF  PSU2 ROM (sl31254)\n  0x800-0x1FFF cartridge ROM\n  0x2000+      VRAM\n\nIf either PSU ROM fails to load, the core switches to experimental HLE\n(high-level emulation) for that PSU. A warning message is shown to the\nuser recommending real BIOS files. HLE state is tracked per-PSU via\nhle_state.psu1_hle and hle_state.psu2_hle (src/channelf_hle.c).\n\nThe .info file declares all three firmware files as required (opt=false),\nbut the core does not abort on missing BIOS -- it falls back to HLE.\n", "platform_details": {"bios_mapping": {"note": "MEMORY_loadSysROM_libretro() reads the file and copies it into\nMemory[] at the given address offset. PSU1 is loaded at 0x000,\nPSU2 at 0x400. The loader caps file size to (MEMORY_SIZE - address)\nto prevent overflow. MEMORY_RAMStart is advanced past the loaded\nROM to protect it from writes.\n", "source_ref": "src/memory.h:27-29, src/memory.c:29-61", "target": "0x000-0x7FF in 64K memory space"}, "hle_fallback": {"note": "When BIOS files are missing, FreeChaF uses HLE to emulate the\nPSU routines in software. This is marked as experimental and may\ncause compatibility issues with some games. Each PSU can\nindependently fall back to HLE.\n", "source_ref": "src/channelf_hle.c"}, "load_priority": {"note": "PSU1 loading order: sl90025.bin (Channel F II) first, then\nsl31253.bin (original Channel F) as fallback. If both fail,\nHLE is used. sl90025.bin is the preferred BIOS as it includes\nChannel F II improvements.\n", "source_ref": "src/libretro.c:186-198"}}, "profiled_date": "2026-03-23", "source": "https://github.com/libretro/FreeChaF", "source_commit": "76c7a84f1f7e80f3e6f2bba96fe100cb24e99124", "systems": ["fairchild-channelf"], "type": "libretro"}


id: freeintv
name: FreeIntv
type: libretro
classification: pure_libretro
source: https://github.com/libretro/FreeIntv
source_commit: 428915baf2bfc032fc03e645f4f8f9c6c3144979
profile_json:
{"core_classification": "pure_libretro", "core_version": "2018.1.5", "cores": ["freeintv"], "display_name": "Mattel - Intellivision (FreeIntv)", "emulator": "FreeIntv", "files": [{"name": "exec.bin", "note": "Executive ROM. Big-endian 16-bit words loaded at 0x1000-0x1FFF.", "required": true, "size": 8192, "source_ref": "src/intv.c:47-71, src/libretro.c:1169", "system": "intellivision"}, {"name": "grom.bin", "note": "Graphics ROM. Raw bytes loaded at 0x3000-0x37FF.", "required": true, "size": 2048, "source_ref": "src/intv.c:73-98, src/libretro.c:1173", "system": "intellivision"}], "notes": "Written for libretro by David Richardson. Intellivoice SP0256 emulation\ncontributed by Joe Zbiciak (jzIntv), mask ROM embedded in source\n(src/ivoice.c:337-510, 4097-byte static array). No external ivoice ROM.\n\nBIOS loading in retro_init() (src/libretro.c:1166-1174). Paths joined\ndirectly to system directory, no subdirectory.\n\nloadExec() reads exec.bin as big-endian 16-bit words into 0x1000-0x1FFF.\nloadGrom() reads grom.bin as raw bytes into 0x3000-0x37FF.\n\nBoth files required for operation. Without them, the OSD shows\n\"PUT GROM/EXEC IN SYSTEM DIRECTORY\" and games do not run.\n\nNo hash or size validation on either file.\n\nNo ECS support. No ecs.bin loading code in the source.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/FreeIntv", "source_commit": "428915baf2bfc032fc03e645f4f8f9c6c3144979", "systems": ["intellivision"], "type": "libretro"}


id: freeintv_ts_overlay
name: FreeIntv (Touchscreen Overlay)
type: alias
classification: alias
source: https://github.com/jcarr71/FreeIntvTSOverlay
upstream: https://github.com/libretro/FreeIntv
profile_json:
{"alias_of": "freeintv", "bios_identical_to": "freeintv", "core_classification": "alias", "core_version": "1.2", "cores": ["freeintv", "freeintvtsoverlay"], "data_directories": [{"destination": "freeintv_overlays", "ref": "freeintv-overlays"}], "display_name": "Mattel - Intellivision (FreeIntvTSOverlay)", "emulator": "FreeIntv (Touchscreen Overlay)", "files": [{"md5": "62e761035cb657903761800f4437b8af", "name": "exec.bin", "note": "Executive ROM.", "required": true, "size": 8192, "source_ref": "src/intv.c:47-71, src/libretro.c:1169", "system": "intellivision"}, {"md5": "0cd5946c6473e42e8e4c2137785e427f", "name": "grom.bin", "note": "Graphics ROM.", "required": true, "size": 2048, "source_ref": "src/intv.c:73-98, src/libretro.c:1173", "system": "intellivision"}], "notes": "Alias of FreeIntv. The jcarr71/FreeIntvTSOverlay fork is 100% identical\nto libretro/FreeIntv (zero diff). Jason Carr's overlay work was merged\nupstream. The Makefile produces freeintv_libretro (TARGET_NAME = freeintv),\nand library_name is \"freeintv\" (src/libretro.c:1413).\n\nThe FreeIntvTSOverlay_libretro.info in libretro-core-info has errors:\nwrong overlay directory (claims FreeIntvTS_Overlays, code uses\nfreeintv_overlays), wrong dimensions (claims 300x670, code uses 370x600),\nphantom external PNG files (controller_base.png, default.png,\nbutton_swapscreen.png are either embedded in C headers or nonexistent),\nand firmware1 key typos (uses firmware0_path/firmware0_opt).\n", "profiled_date": "2026-03-22", "source": "https://github.com/jcarr71/FreeIntvTSOverlay", "systems": ["intellivision"], "type": "alias", "upstream": "https://github.com/libretro/FreeIntv"}


id: freej2me
name: FreeJ2ME
type: libretro
classification: official_port
source: https://github.com/hex007/freej2me
upstream: https://github.com/hex007/freej2me
source_commit: b1c4cf13e012938f9d5270621fddea60e5554858
profile_json:
{"core_classification": "official_port", "core_version": "GIT", "cores": ["freej2me"], "display_name": "Mobile - J2ME (FreeJ2ME)", "emulator": "FreeJ2ME", "files": [{"description": "FreeJ2ME libretro Java application", "name": "freej2me-lr.jar", "note": "Not a BIOS dump. Java emulator loaded by the native core at startup via execvp('java', '-jar', path). Built from source via 'ant'. Must be in the system directory root.", "required": true, "source_ref": "src/libretro/freej2me_libretro.c:483-486 (GET_SYSTEM_DIRECTORY + fill_pathname_join + java -jar)", "system": "j2me"}], "notes": "The native core is a C bridge that spawns a Java process running\nfreej2me-lr.jar, which handles all J2ME emulation. Communication\nhappens over pipes (Linux) or named pipes (Windows). A Java runtime\n(JRE/JDK 8+) must be installed on the host. The jar is built from\nsource via Apache Ant (build.xml). Same repo hosts standalone AWT\nand SDL2 frontends alongside the libretro frontend.\n", "profiled_date": "2026-03-23", "source": "https://github.com/hex007/freej2me", "source_commit": "b1c4cf13e012938f9d5270621fddea60e5554858", "systems": ["j2me"], "type": "libretro", "upstream": "https://github.com/hex007/freej2me"}


id: frodo
name: Frodo
type: libretro
classification: community_fork
source: https://github.com/libretro/frodo-libretro
upstream: https://github.com/cebix/frodo4
source_commit: 29dd1864b89d903ed93f1d86d85636ef9e194359
profile_json:
{"core_classification": "community_fork", "core_version": "v4.2", "cores": ["frodo"], "display_name": "Commodore - C64 (Frodo)", "emulator": "Frodo", "files": [{"description": "C64 BASIC V2 ROM", "hle_fallback": true, "name": "Basic ROM", "note": "Embedded as builtin_basic_rom[] in Basic_ROM.h. External file never loaded in practice (DATADIR is empty, path is bare filename in cwd).", "required": false, "size": 8192, "source_ref": "Src/main.cpp:71,77,100-102", "system": "commodore-c64"}, {"description": "C64 Kernal ROM", "hle_fallback": true, "name": "Kernal ROM", "note": "Embedded as builtin_kernal_rom[] in Kernal_ROM.h. Patched at runtime for fast reset and 1541 IEC traps.", "required": false, "size": 8192, "source_ref": "Src/main.cpp:72,78,104-106", "system": "commodore-c64"}, {"description": "C64 Character Generator ROM", "hle_fallback": true, "name": "Char ROM", "note": "Embedded as builtin_char_rom[] in Char_ROM.h. Used by VIC-II for text/bitmap rendering.", "required": false, "size": 4096, "source_ref": "Src/main.cpp:73,79,108-110", "system": "commodore-c64"}, {"description": "Commodore 1541 floppy drive ROM", "hle_fallback": true, "name": "1541 ROM", "note": "Embedded as builtin_drive_rom[] in 1541_ROM.h. Patched at runtime to disable checksum and trap disk I/O.", "required": false, "size": 16384, "source_ref": "Src/main.cpp:74,80,112-114", "system": "commodore-c64"}], "notes": "Frodo is a Commodore 64 emulator by Christian Bauer (Frodo V4.2), ported\nto libretro. It emulates the C64 (MOS 6510, VIC-II, SID, CIA x2) and an\noptional 1541 floppy drive.\n\nAll four ROMs are embedded directly in the core binary as compiled-in\nbyte arrays (Basic_ROM.h, Kernal_ROM.h, Char_ROM.h, 1541_ROM.h). No\nexternal BIOS files are required for normal operation.\n\nThe core attempts to load external ROM files from the current working\ndirectory (DATADIR is empty in the libretro build) at startup via\nload_rom_files() in main.cpp. If any file fails to open or has the wrong\nsize, the embedded ROM is used as fallback via memcpy(). The filenames\nare hardcoded with spaces, no subdirectory prefix.\n\nROM loading order in load_rom_files():\n1. \"Basic ROM\"  (8192 bytes, BASIC_ROM_SIZE 0x2000) -> TheC64->Basic\n2. \"Kernal ROM\" (8192 bytes, KERNAL_ROM_SIZE 0x2000) -> TheC64->Kernal\n3. \"Char ROM\"   (4096 bytes, CHAR_ROM_SIZE 0x1000) -> TheC64->Char\n4. \"1541 ROM\"   (16384 bytes, DRIVE_ROM_SIZE 0x4000) -> TheC64->ROM1541\n\nThe core does NOT construct paths relative to retro_system_directory for\nROM loading. The system directory variable is fetched in retro_init() but\nonly used for the save directory fallback, not for ROM path construction.\nDATADIR defaults to \"\" (empty string) when not defined by the build\nsystem, so the filenames resolve to bare names in the cwd. In practice,\nthe external ROM loading path is effectively unused in the libretro build\nsince the cwd is unpredictable and the filenames contain spaces.\n\nThe Kernal ROM is patched at runtime by PatchKernal() in C64.cpp for\nfast reset (addresses 0x1D84-0x1D85) and IEC bus replacement when 1541\nprocessor emulation is enabled (multiple addresses in the 0x0D00-0x0E00\nrange are patched with 0xF2 trap opcodes).\n\nThe 1541 drive ROM is also patched in PatchKernal(): ROM checksum\nverification is disabled (0x2AE4-0x2AE9 NOPed), DOS idle loop is\ntrapped (0x2C9B), and write sector / format track operations are\nintercepted (0x3594-0x3598, 0x3B0C-0x3B0D).\n\nSource: Src/main.cpp:67-115 (ROM defines, load_rom, load_rom_files),\nSrc/C64.h:33-37 (ROM size constants), Src/C64.cpp:221-285 (PatchKernal),\nSrc/C64.cpp:734-746 (Run init, saves original kernal bytes, calls PatchKernal),\nSrc/Basic_ROM.h, Src/Kernal_ROM.h, Src/Char_ROM.h, Src/1541_ROM.h\n(embedded ROM arrays)\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/frodo-libretro", "source_commit": "29dd1864b89d903ed93f1d86d85636ef9e194359", "systems": ["commodore-c64"], "type": "libretro", "upstream": "https://github.com/cebix/frodo4"}


id: fsuae
name: FS-UAE
type: standalone + libretro
classification: community_fork
source: https://github.com/libretro/libretro-fsuae
upstream: https://github.com/FrodeSolheim/fs-uae
source_commit: 06e3030a46a6063aa0f7028c269d972f06c46d5d
profile_json:
{"core_classification": "community_fork", "core_version": "v5.0.7", "cores": ["fsuae"], "display_name": "Commodore - Amiga (FS-UAE)", "emulator": "FS-UAE", "files": [{"hle_fallback": true, "mode": "both", "name": "amiga-os-130.rom", "note": "Amiga 500 Kickstart 1.3 r34.5. Default model ROM.", "required": false, "sha1": "891e9a547772fe0c6c19b610baf8bc4ea7fcb785", "size": 262144, "source_ref": "rommgr.cpp:150-151 (id=6, ROMTYPE_KICK)", "system": "amiga", "validation": ["sha1"]}, {"hle_fallback": true, "mode": "both", "name": "amiga-os-204.rom", "note": "Amiga 500+ Kickstart 2.04 r37.175.", "required": false, "sha1": "c5839f5cb98a7a8947065c3ed2f14f5f42e334a1", "size": 524288, "source_ref": "rommgr.cpp:158-159 (id=7, ROMTYPE_KICK)", "system": "amiga", "validation": ["sha1"]}, {"hle_fallback": true, "mode": "both", "name": "amiga-os-205.rom", "note": "Amiga 600 Kickstart 2.05 r37.350.", "required": false, "sha1": "02843c4253bbd29aba535b0aa3bd9a85034ecde4", "size": 524288, "source_ref": "rommgr.cpp:164-165 (id=10, ROMTYPE_KICK)", "system": "amiga", "validation": ["sha1"]}, {"hle_fallback": true, "mode": "both", "name": "amiga-os-120.rom", "note": "Amiga 1000 Kickstart 1.2 r33.180.", "required": false, "sha1": "11f9e62cf299f72184835b7b2a70a16333fc0d88", "size": 262144, "source_ref": "rommgr.cpp:148-149 (id=5, ROMTYPE_KICK)", "system": "amiga", "validation": ["sha1"]}, {"hle_fallback": true, "mode": "both", "name": "amiga-os-310-a1200.rom", "note": "Amiga 1200 Kickstart 3.1 r40.68.", "required": false, "sha1": "e21545723fe8374e91342617604f1b3d703094f1", "size": 524288, "source_ref": "rommgr.cpp:185-186 (id=15, ROMTYPE_KICK)", "system": "amiga", "validation": ["sha1"]}, {"hle_fallback": true, "mode": "both", "name": "amiga-os-310-a3000.rom", "note": "Amiga 3000 Kickstart 3.1 r40.68.", "required": false, "sha1": "f8e210d72b4c4853e0c9b85d223ba20e3d1b36ee", "size": 524288, "source_ref": "rommgr.cpp:189-190 (id=61, ROMTYPE_KICK)", "system": "amiga", "validation": ["sha1"]}, {"hle_fallback": true, "mode": "both", "name": "amiga-os-310-a4000.rom", "note": "Amiga 4000 Kickstart 3.1 r40.68.", "required": false, "sha1": "5fe04842d04a489720f0f4bb0e46948199406f49", "size": 524288, "source_ref": "rommgr.cpp:195-196 (id=16, ROMTYPE_KICK)", "system": "amiga", "validation": ["sha1"]}, {"hle_fallback": true, "mode": "both", "name": "amiga-os-310-cd32.rom", "note": "Amiga CD32 Kickstart 3.1 r40.60.", "required": false, "sha1": "3525be8887f79b5929e017b42380a79edfee542d", "size": 524288, "source_ref": "rommgr.cpp:312-313 (id=18, ROMTYPE_KICKCD32)", "system": "amiga", "validation": ["sha1"]}, {"mode": "both", "name": "amiga-ext-310-cd32.rom", "note": "CD32 extended ROM r40.60. Required for CD32 mode.", "required": false, "sha1": "5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f", "size": 524288, "source_ref": "rommgr.cpp:314-315 (id=19, ROMTYPE_EXTCD32)", "system": "amiga", "validation": ["sha1"]}, {"mode": "both", "name": "cd32fmv.rom", "note": "CD32 Full Motion Video cartridge ROM v40.30. Also accepts v40.22 (391777-01).", "required": false, "sha1": "03ca81c7a7b259cf64bc9582863eca0f6529f435", "size": 262144, "source_ref": "rommgr.cpp:323-326 (id=23/74, ROMTYPE_CD32CART)", "system": "amiga", "validation": ["sha1"]}, {"mode": "both", "name": "amiga-ext-130-cdtv.rom", "note": "CDTV extended ROM v1.0. Required for CDTV mode. Also accepts v2.30 and v2.7.", "required": false, "sha1": "7ba40ffa17e500ed9fed041f3424bd81d9c907be", "size": 262144, "source_ref": "rommgr.cpp:328-329 (id=20, ROMTYPE_EXTCDTV)", "system": "amiga", "validation": ["sha1"]}, {"mode": "both", "name": "rom.key", "note": "Cloanto Amiga Forever decryption key. Enables encrypted ROM loading.", "required": false, "source_ref": "rommgr.cpp:119-124 (ROMTYPE_KEY), rommgr.cpp:1397-1412 (addkeydir)", "system": "amiga"}], "notes": "FS-UAE is an Amiga emulator by Frode Solheim, based on UAE/WinUAE.\n\nStandalone: scans --kickstarts_dir for .rom/.bin files (default: Documents/FS-UAE/Kickstarts/).\nBatocera overrides to bios/amiga/ via --kickstarts_dir (fsuaePaths.py:8, fsuaeGenerator.py:68).\nLibretro port: scans save_dir/fsuae/Kickstarts/ (frozen at v2.7.15).\nIdentification by SHA-1 checksum, not filename (rommgr.cpp:92-151, romservice.py:78-91).\nAROS kickstart (1 MB) compiled into binary as fallback for all models (rommgr.cpp:112).\nrom.key searched in kickstart dir and multiple fallback paths (rommgr.cpp:1397-1498).\n\nSupported models: A1000, A500, A500+, A600, A1200, A3000, A4000, A4000T, CD32, CDTV.\nDefault model is A500. Each model auto-selects its kickstart via quickstart\nmechanism (cfgfile.cpp:9468-9517 for A500, cfgfile.cpp:9732-9791 for dispatch).\n\nROM database shared between standalone and libretro (same WinUAE-derived rommgr.cpp).\nUpstream v5.0.7 has a larger database (332 vs ~200 ROM IDs in libretro port).\nAlso supports Arcadia, ALG, freezer cartridges, SCSI/CPU board ROMs when configured.\n", "profiled_date": "2026-03-26", "source": "https://github.com/libretro/libretro-fsuae", "source_commit": "06e3030a46a6063aa0f7028c269d972f06c46d5d", "systems": ["amiga"], "type": "standalone + libretro", "upstream": "https://github.com/FrodeSolheim/fs-uae"}


id: fuse
name: Fuse
type: libretro
classification: community_fork
source: https://github.com/libretro/fuse-libretro
upstream: https://sourceforge.net/projects/fuse-emulator/
source_commit: 000a8ae51a5141d75c109a22150e37ba06d57910
profile_json:
{"core_classification": "community_fork", "core_version": "1.6.0", "cores": ["fuse"], "display_name": "Sinclair - ZX Spectrum (Fuse)", "emulator": "Fuse", "files": [{"hle_fallback": true, "md5": "4c42a2f075212361c3117015b107ff68", "name": "fuse/48.rom", "note": "Spectrum 48K ROM. Also used for 16K and 48K NTSC. Embedded in core.", "required": false, "sha1": "5ea7c2b824672e914525d1d5c419d71b84a426a2", "size": 16384, "source_ref": "fuse/settings.c:216-217, fuse/machines/spec48.c:76", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "b4d2692115a9f2924df92a3cbfb358fb", "name": "fuse/128-0.rom", "note": "Spectrum 128K ROM 0 (editor). Embedded in core.", "required": false, "sha1": "4f4b11ec22326280bdb96e3baf9db4b4cb1d02c5", "size": 16384, "source_ref": "fuse/settings.c:214, fuse/machines/spec128.c:70", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "6e09e5d3c4aef166601669feaaadc01c", "name": "fuse/128-1.rom", "note": "Spectrum 128K ROM 1 (48 BASIC). Embedded in core.", "required": false, "sha1": "80080644289ed93d71a1103992a154cc9802b2fa", "size": 16384, "source_ref": "fuse/settings.c:215, fuse/machines/spec128.c:73", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "4ed7af4636308b8a48d7a35e6c5b546b", "name": "fuse/plus2-0.rom", "note": "Spectrum +2 ROM 0. Embedded in core.", "required": false, "sha1": "72703f9a3e734f3c23ec34c0727aae4ccbef9a91", "size": 16384, "source_ref": "fuse/settings.c:237, fuse/machines/specplus2.c:70", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "b3db95931cc844efaeb82db9c171b9f3", "name": "fuse/plus2-1.rom", "note": "Spectrum +2 ROM 1. Embedded in core.", "required": false, "sha1": "de8b0d2d0379cfe7c39322a086ca6da68c7f23cb", "size": 16384, "source_ref": "fuse/settings.c:238, fuse/machines/specplus2.c:73", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "9833b8b73384dd5fa3678377ff00a2bb", "name": "fuse/plus3-0.rom", "note": "Spectrum +3 ROM 0. Also used for +2A. Embedded in core.", "required": false, "sha1": "e319ed08b4d53a5e421a75ea00ea02039ba6555b", "size": 16384, "source_ref": "fuse/settings.c:239, fuse/settings.c:243, fuse/machines/specplus3.c:197", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "0f711ceb5ab801b4701989982e0f334c", "name": "fuse/plus3-1.rom", "note": "Spectrum +3 ROM 1. Also used for +2A. Embedded in core.", "required": false, "sha1": "c9969fc36095a59787554026a9adc3b87678c794", "size": 16384, "source_ref": "fuse/settings.c:240, fuse/settings.c:244, fuse/machines/specplus3.c:200", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "3b6dd659d5e4ec97f0e2f7878152c987", "name": "fuse/plus3-2.rom", "note": "Spectrum +3 ROM 2. Also used for +2A. Embedded in core.", "required": false, "sha1": "22e50c6ba4157a3f6a821bd9937cd26e292775c6", "size": 16384, "source_ref": "fuse/settings.c:241, fuse/settings.c:245, fuse/machines/specplus3.c:203", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "a148bcc575e51389e84fdf5d555c3196", "name": "fuse/plus3-3.rom", "note": "Spectrum +3 ROM 3. Also used for +2A. Embedded in core.", "required": false, "sha1": "65f031caa8148a5493afe42c41f4929deab26b4e", "size": 16384, "source_ref": "fuse/settings.c:242, fuse/settings.c:246, fuse/machines/specplus3.c:206", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "bc123f625e245c225f92ef05933ed134", "name": "fuse/plus3e-0.rom", "note": "Spectrum +3e ROM 0. Embedded in core.", "required": false, "sha1": "649fbd233490bf58b35350b0123d36caaaa011eb", "size": 16384, "source_ref": "fuse/settings.c:247, fuse/machines/specplus3e.c:70", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "617364264c587d20c9fc4746c29679f2", "name": "fuse/plus3e-1.rom", "note": "Spectrum +3e ROM 1. Embedded in core.", "required": false, "sha1": "f12198108cbb14de4f03c6695bc16d08c85ee214", "size": 16384, "source_ref": "fuse/settings.c:248, fuse/machines/specplus3e.c:73", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "c363e95dcd0a90e6e7f847e6e47e0179", "name": "fuse/plus3e-2.rom", "note": "Spectrum +3e ROM 2. Embedded in core.", "required": false, "sha1": "773633dce5ba323a9e00d9d0f9e4d8c295df7c87", "size": 16384, "source_ref": "fuse/settings.c:249, fuse/machines/specplus3e.c:76", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "a148bcc575e51389e84fdf5d555c3196", "name": "fuse/plus3e-3.rom", "note": "Spectrum +3e ROM 3. Same as plus3-3.rom. Embedded in core.", "required": false, "sha1": "65f031caa8148a5493afe42c41f4929deab26b4e", "size": 16384, "source_ref": "fuse/settings.c:250, fuse/machines/specplus3e.c:79", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "fb3f86eb1e5a695d9c50c124e7cfb875", "name": "fuse/se-0.rom", "note": "Spectrum SE ROM 0. Embedded in core.", "required": false, "sha1": "8608328d7dd66602a4846f046b24fed500f7d828", "size": 16384, "source_ref": "fuse/settings.c:257, fuse/machines/spec_se.c:89", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "88de4a3129086f34bb9ca559acc51e6c", "name": "fuse/se-1.rom", "note": "Spectrum SE ROM 1. Embedded in core.", "required": false, "sha1": "3be5de57dd3bd0a9d15c57cabe9179afe2906a52", "size": 16384, "source_ref": "fuse/settings.c:258, fuse/machines/spec_se.c:92", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "9dd7ecf784a6c04265c073c236f5fadb", "name": "fuse/tc2048.rom", "note": "Timex TC2048 ROM. Embedded in core.", "required": false, "sha1": "febb2d495b6eda7cdcb4074935d6e9d9f328972d", "size": 16384, "source_ref": "fuse/settings.c:260, fuse/machines/tc2048.c:80", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "55d462fccc6c536037404ef4ced08bec", "name": "fuse/tc2068-0.rom", "note": "Timex TC2068 ROM 0. Also used for TS2068. Embedded in core.", "required": false, "sha1": "1446cb2780a9dedf640404a639fa3ae518b2d8aa", "size": 16384, "source_ref": "fuse/settings.c:261, fuse/settings.c:263, fuse/machines/tc2068.c:138", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"hle_fallback": true, "md5": "575d203c6e15e679fba0b73f854ec7a2", "name": "fuse/tc2068-1.rom", "note": "Timex TC2068 ROM 1 (EXROM). Also used for TS2068. Embedded in core.", "required": false, "sha1": "7e265a2c1f621ed365ea23bdcafdedbc79c1299c", "size": 8192, "source_ref": "fuse/settings.c:262, fuse/settings.c:264, fuse/machines/tc2068.c:141", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/128p-0.rom", "note": "Pentagon 128K/512K/1024 ROM 0. Required for Pentagon machines.", "required": true, "size": 16384, "source_ref": "fuse/settings.c:226, fuse/settings.c:230, fuse/settings.c:234, fuse/machines/pentagon.c:135", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/128p-1.rom", "note": "Pentagon 128K/512K/1024 ROM 1. Required for Pentagon machines.", "required": true, "size": 16384, "source_ref": "fuse/settings.c:227, fuse/settings.c:231, fuse/settings.c:235, fuse/machines/pentagon.c:138", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/trdos.rom", "note": "TR-DOS ROM (Beta 128 disk interface). Used by Pentagon and Scorpion.", "required": true, "size": 16384, "source_ref": "fuse/settings.c:228, fuse/settings.c:232, fuse/settings.c:236, fuse/machines/pentagon.c:141", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/gluck.rom", "note": "Gluck ROM. Required for Pentagon 512K and 1024.", "required": true, "size": 16384, "source_ref": "fuse/settings.c:229, fuse/settings.c:233, fuse/machines/pentagon512.c:82", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/256s-0.rom", "note": "Scorpion 256K ROM 0. Required for Scorpion machine.", "required": true, "size": 16384, "source_ref": "fuse/settings.c:252, fuse/machines/scorpion.c:76", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/256s-1.rom", "note": "Scorpion 256K ROM 1. Required for Scorpion machine.", "required": true, "size": 16384, "source_ref": "fuse/settings.c:253, fuse/machines/scorpion.c:79", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/256s-2.rom", "note": "Scorpion 256K ROM 2. Required for Scorpion machine.", "required": true, "size": 16384, "source_ref": "fuse/settings.c:254, fuse/machines/scorpion.c:82", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/256s-3.rom", "note": "Scorpion 256K ROM 3 (TR-DOS). Required for Scorpion machine.", "required": true, "size": 16384, "source_ref": "fuse/settings.c:255, fuse/machines/scorpion.c:85", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/if1-2.rom", "note": "Interface 1 ROM (edition 2). Loaded by peripherals/if1.c:403.", "required": false, "size": 8192, "source_ref": "fuse/settings.c:221, fuse/peripherals/if1.c:404", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"md5": "78e61a2a02121873c1756b21fd1398b1", "name": "fuse/disciple.rom", "note": "DISCiPLE disk interface ROM. Bundled in repo but not in mem_entries[].", "required": false, "sha1": "9a75ed4b293f968985be4c9aa893cd88276d1ced", "size": 8192, "source_ref": "fuse/settings.c:220, fuse/peripherals/disk/disciple.c:279", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"md5": "42e5de16fb5e50082bb954ec7ce45851", "name": "fuse/plusd.rom", "note": "+D disk interface ROM. Bundled in repo but not in mem_entries[].", "required": false, "sha1": "6b841dc5797ef7eb219ad455cd1e434ca3b9d30d", "size": 8192, "source_ref": "fuse/settings.c:251, fuse/peripherals/disk/plusd.c:239", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/didaktik80.rom", "note": "Didaktik 80 disk interface ROM. Not embedded.", "required": false, "size": 14336, "source_ref": "fuse/settings.c:219, fuse/peripherals/disk/didaktik.c:236", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/opus.rom", "note": "Opus Discovery disk interface ROM. Not embedded.", "required": false, "size": 8192, "source_ref": "fuse/settings.c:225, fuse/peripherals/disk/opus.c:210", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/mf1.rom", "note": "Multiface 1 ROM. Not embedded.", "required": false, "size": 8192, "source_ref": "fuse/settings.c:222, fuse/peripherals/multiface.c:224", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/mf128.rom", "note": "Multiface 128 ROM. Not embedded.", "required": false, "size": 8192, "source_ref": "fuse/settings.c:223, fuse/peripherals/multiface.c:225", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/mf3.rom", "note": "Multiface 3 ROM. Not embedded.", "required": false, "size": 8192, "source_ref": "fuse/settings.c:224, fuse/peripherals/multiface.c:226", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"md5": "c54aa8f374b0971f51546c29d5d1eba1", "name": "fuse/speccyboot-1.4.rom", "note": "SpeccyBoot ethernet ROM. Bundled in repo but not in mem_entries[].", "required": false, "sha1": "16af6f052b38a027dd49ba6e96e3a59d16b62672", "size": 8192, "source_ref": "fuse/settings.c:259, fuse/peripherals/speccyboot.c:148", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/ttx2000s.rom", "note": "TTX2000S teletext adapter ROM. Not embedded.", "required": false, "size": 8192, "source_ref": "fuse/settings.c:265, fuse/peripherals/ttx2000s.c:198", "system": "sinclair-zxspectrum", "validation": ["size"]}, {"name": "fuse/usource.rom", "note": "Currah uSource ROM. Not embedded.", "required": false, "size": 8192, "source_ref": "fuse/settings.c:266, fuse/peripherals/usource.c:129", "system": "sinclair-zxspectrum", "validation": ["size"]}], "notes": "Fuse (Free Unix Spectrum Emulator) ported to libretro. Emulates the ZX\nSpectrum family: 16K, 48K, 48K NTSC, 128K, +2, +2A, +3, +3e, SE, Timex\nTC2048, TC2068, TS2068, Pentagon 128K/512K/1024, and Scorpion 256K.\n\nROM loading is in src/compat/file.c:91-118. The core first checks an\ninternal table of embedded ROMs (mem_entries[]). If the ROM filename is\nnot found there, it falls back to the filesystem at\n{system_dir}/fuse/{rom_filename} (file.c:160-175).\n\nEmbedded ROMs cover 48K-family, 128K, +2, +3, +3e, SE, TC2048, TC2068.\nPentagon, Scorpion, and peripheral ROMs are NOT embedded and must be\nplaced in {system_dir}/fuse/ by the user.\n\nDefault ROM filenames are set in fuse/settings.c:209-260. Each machine\ntype loads its ROMs during reset via machine_load_rom() calls in\nfuse/machines/*.c files. All ROMs are size-validated at load time\n(fuse/machine.c:289).\n\nThe +2A reuses the +3 ROMs (plus3-0/1/2/3.rom) per settings.c:234-237.\nThe TS2068 reuses TC2068 ROMs (tc2068-0/1.rom) per settings.c:257-258.\nSpectrum 16K uses 48.rom per settings.c:211.\n\nUpstream FUSE 1.7.0 has SP0256 speech chip (sp0256-al2.rom) and Currah\nuSpeech (uspeech.rom) peripherals not ported to libretro.\n", "platform_details": {"bios_mapping": {"note": "ROM resolution order in compat_file_open():\n1. Check mem_entries[] (18 embedded ROMs compiled as .h arrays)\n2. If not found, try {system_dir}/fuse/{filename} on filesystem\nThe path is constructed by concatenating system_dir + \"/fuse\" + path\nwhere path includes the leading slash from fuse's internal path.\n", "source_ref": "src/compat/file.c:55-89, 129-223"}, "embedded_roms": {"note": "18 ROMs embedded in the binary via .h headers generated from .rom files:\n48.rom, 128-0.rom, 128-1.rom, plus2-0.rom, plus2-1.rom,\nplus3-0/1/2/3.rom, plus3e-0/1/2/3.rom, se-0.rom, se-1.rom,\ntc2048.rom, tc2068-0.rom, tc2068-1.rom.\ndisciple.rom, plusd.rom, speccyboot-1.4.rom are present in the repo\nfuse/roms/ directory but NOT in mem_entries[], so they are loaded\nfrom the filesystem only.\n", "source_ref": "src/compat/file.c:55-73"}, "machine_rom_map": {"note": "Spectrum 16K:       48.rom (1 ROM)\nSpectrum 48K:       48.rom (1 ROM)\nSpectrum 48K NTSC:  48.rom (1 ROM)\nSpectrum 128K:      128-0.rom, 128-1.rom (2 ROMs)\nSpectrum +2:        plus2-0.rom, plus2-1.rom (2 ROMs)\nSpectrum +2A:       plus3-0.rom, plus3-1.rom, plus3-2.rom, plus3-3.rom (4 ROMs)\nSpectrum +3:        plus3-0.rom, plus3-1.rom, plus3-2.rom, plus3-3.rom (4 ROMs)\nSpectrum +3e:       plus3e-0/1/2/3.rom (4 ROMs)\nSpectrum SE:        se-0.rom, se-1.rom (2 ROMs)\nTimex TC2048:       tc2048.rom (1 ROM)\nTimex TC2068:       tc2068-0.rom, tc2068-1.rom (2 ROMs)\nTimex TS2068:       tc2068-0.rom, tc2068-1.rom (2 ROMs, same files)\nPentagon 128K:      128p-0.rom, 128p-1.rom, trdos.rom (3 ROMs)\nPentagon 512K:      128p-0.rom, 128p-1.rom, trdos.rom, gluck.rom (4 ROMs)\nPentagon 1024:      128p-0.rom, 128p-1.rom, trdos.rom, gluck.rom (4 ROMs)\nScorpion 256K:      256s-0.rom, 256s-1.rom, 256s-2.rom, 256s-3.rom (4 ROMs)\n", "source_ref": "fuse/settings.c:209-260, fuse/machines/*.c"}, "rom_copyright": {"note": "Most ROMs are copyright Amstrad. Amstrad allows free distribution but\nretains copyright. Selling ROMs standalone is not permitted. SE ROMs\nare GPLv2+. DISCiPLE/+D ROMs are copyright Datel, distribution allowed.\nSpeccyBoot ROM is MIT licensed.\n", "source_ref": "fuse/roms/README.copyright"}}, "profiled_date": "2026-03-23", "source": "https://github.com/libretro/fuse-libretro", "source_commit": "000a8ae51a5141d75c109a22150e37ba06d57910", "systems": ["sinclair-zxspectrum"], "type": "libretro", "upstream": "https://sourceforge.net/projects/fuse-emulator/"}


id: future-pinball
name: future-pinball
type: standalone
classification: game_engine
source: https://futurepinball.com/
upstream: closed-source
profile_json:
{"analysis": {"named_but_not_read": {"entries": [{"note": "Passed to the toolbar builder, which calls CreateToolbarEx with hBMInst zero and a bitmap handle held in a global as wBMID. The module has no resource under that name and neither syscall trace shows an open for it, although both traces reach the main window.", "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x00438ff5, 0x00448ba0, 0x00432240-0x00432290", "what": "skin\\toolbar.bmp"}, {"note": "Searched for inside a feed URL and skipped past to recover the table name, with the literal opps as the fallback. Not a path being built.", "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x00439e40-0x00439e79", "what": "tables\\ in lower case"}, {"note": "A second extension accepted beside .fpl in the library dialogs. No file with it ships and nothing opens one by name.", "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x004414d0", "what": ".jlb"}], "note": "String literals that survive a path scan without ever reaching a file"}, "shipped_with_the_binary": {"entries": [{"note": "DmdDisplayDemo.fpt, LightSequencerDemo.fpt, Ramp-VUK-Demo.fpt and SegmentDisplayDemo.fpt. The directory itself is the default table path and the last prefix the external script resolver tries.", "source_ref": "FuturePinballSetup_v1.9.1.20101231.exe app/Tables", "what": "Tables\\, four demonstration tables"}, {"note": "Named st_<id>_<n>_<n>.jpg from the entries of fpLatestTables.xml and fetched with the same libcurl path, so the set changes with the feed.", "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x0043d60f", "what": "Feeds\\, 385 table screenshots"}], "note": "Present in the release and read by the program, but named at runtime rather than by a literal in the code, so there is no fixed filename to record."}, "user_supplied_paths": {"entries": [{"note": "LoadExternalScript takes whatever name the table's script passes. The bare attempt resolves against the working directory, which is the table's own folder. No Scripts directory ships.", "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x004797c0-0x00479905, 0x00478be0", "what": "external table scripts, tried bare then under Scripts\\ then Tables\\"}, {"note": "Built as the prefix, the table name and the .fpRAM extension. Written from play, so it is save data rather than something to obtain. The installer creates the directory empty.", "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x0043aa80, 0x00475602, 0x00475892", "what": "fpRAM\\<table>.fpRAM, per table persistent state"}, {"note": "Each site only fills the initial directory of a GetOpenFileName or GetSaveFileName call in the DMD font and model import and export dialogs, so nothing is read until the user picks a file. DmdFonts ships empty and Models is not created at all. Fonts carry .dmdf and models .fpm, both authored rather than distributed.", "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x00443595, 0x00443efc, 0x00516ba8, 0x00516d31, 0x00441fc8, 0x004429bb, 0x004317fa", "what": "DmdFonts\\ and Models\\, editor working directories"}], "note": "Named by a table or written by the program, with no fixed filename"}}, "core_classification": "game_engine", "core_version": "1.9.1.20101231", "cores": ["fpinball", "future-pinball"], "display_name": "Future Pinball", "emulator": "future-pinball", "files": [{"bundled": true, "description": "Newton Game Dynamics, the rigid body solver under the ball physics", "name": "Newton.dll", "note": "83 functions are bound from it, the largest third party surface in the binary. The process does not start without it.", "required": true, "size": 446464, "source_ref": "Future Pinball.exe 1.9.1.20101231 import directory", "system": "fpinball"}, {"bundled": true, "description": "FMOD 3 audio engine", "name": "fmod.dll", "note": "22 functions bound, FSOUND_Init through the sample and stream calls. Every one of those calls passes FSOUND_LOADMEMORY, so it decodes the table's own buffers rather than reading files.", "required": true, "size": 162816, "source_ref": "Future Pinball.exe 1.9.1.20101231 import directory", "system": "fpinball"}, {"aliases": ["DevIL.dll"], "bundled": true, "description": "DevIL image decoder", "name": "devil.dll", "note": "8 functions bound, ilInit through ilLoadL. Spelled DevIL.dll in the import descriptors and shipped lowercase, which the case insensitive loader treats as one name.", "required": true, "size": 269312, "source_ref": "Future Pinball.exe 1.9.1.20101231 import directory", "system": "fpinball"}, {"aliases": ["ILU.dll"], "bundled": true, "description": "DevIL image utility library, scaling and canvas resize", "name": "ilu.dll", "note": "4 functions bound: iluInit, iluScale, iluEnlargeCanvas and iluImageParameter, used to fit imported artwork to texture dimensions.", "required": true, "size": 27648, "source_ref": "Future Pinball.exe 1.9.1.20101231 import directory", "system": "fpinball"}, {"aliases": ["ILUT.dll"], "bundled": true, "description": "DevIL toolkit layer, image to Windows bitmap conversion", "name": "ilut.dll", "note": "3 functions bound: ilutRenderer, ilutConvertToHBitmap and ilutGetBmpInfo, which produce the preview bitmaps the editor's manager windows draw.", "required": true, "size": 16384, "source_ref": "Future Pinball.exe 1.9.1.20101231 import directory", "system": "fpinball"}, {"bundled": true, "description": "HTTP client for the table feed", "name": "libcurl.dll", "note": "Only four functions are bound, curl_easy_init, setopt, perform and cleanup, and the single use is fetching the table list from http://www.pinsimdb.org/fpreleases/backend_xml.php under the user agent FuturePinball-agent/1.0. The binding is static all the same, so the process still refuses to start without the file.", "required": true, "size": 626688, "source_ref": "Future Pinball.exe 1.9.1.20101231 import directory, .text:0x0043dc70", "system": "fpinball"}, {"bundled": true, "description": "Scintilla, the editing control behind the table script editor", "name": "SciLexer.dll", "note": "The one library taken with LoadLibraryA rather than the import directory. A null return puts up \"The Scintilla DLL could not be loaded.\", stores a null handle and falls through to the rest of startup, so the program runs and only the script editor is lost.", "required": false, "size": 407552, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x0042c501-0x0042c528", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "260 pinball part models, the library the manual tells tables to link", "name": "fpModels.fpl", "note": "Models cannot be authored outside the development team, so a table that wants a bumper cap or a flipper bat either embeds a copy or links here, and the Model Manager documents linking as the recommended choice. Absent, the table still loads and every model it linked is missing.", "path": "Libraries/fpModels.fpl", "required": false, "size": 5166080, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x004e6cf0-0x004e6ebf, Future Pinball Manual.chm ModelManager.html", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "90 textures for the standard table objects", "name": "fpTextures.fpl", "note": "Carries the surface art the built in parts expect, bulbs, triggers, plungers and the rest. Resolved the same way as every other library.", "path": "Libraries/fpTextures.fpl", "required": false, "size": 3495424, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x004e6cf0-0x004e6ebf, Future Pinball Manual.chm TextureManager.html", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "82 ramp models, keyed by profile, width and height", "name": "fpRamps.fpl", "note": "Storage names encode the shape and the dimensions, ramp-pool-t1_w30_h20 and so on, with a left and a right variant of each.", "path": "Libraries/fpRamps.fpl", "required": false, "size": 2813440, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x004e6cf0-0x004e6ebf", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "20 machine sounds, ball release, bumpers, coin in and the rest", "name": "fpSounds.fpl", "path": "Libraries/fpSounds.fpl", "required": false, "size": 170496, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x004e6cf0-0x004e6ebf, Future Pinball Manual.chm SoundManager.html", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "11 sphere maps giving metal and plastic parts their reflections", "name": "fpSphereMaps.fpl", "note": "Storage names are bracketed, [chrome-silver], [chrome-gold] and similar, which is how a material references one.", "path": "Libraries/fpSphereMaps.fpl", "required": false, "size": 223744, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x004e6cf0-0x004e6ebf", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "6 dot matrix fonts, named for their cell size", "name": "fpDmdFonts.fpl", "note": "dmd05x05p through dmd08x13p. A DMD display element with no font draws nothing.", "path": "Libraries/fpDmdFonts.fpl", "required": false, "size": 58880, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x004e6cf0-0x004e6ebf, Future Pinball Manual.chm FontManager.html", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "3 playfield images, including the plunger cutout template", "name": "fpPlayfields.fpl", "path": "Libraries/fpPlayfields.fpl", "required": false, "size": 364032, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x004e6cf0-0x004e6ebf", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Script library, holding the one sample script the manual quotes", "name": "fpScripts.fpl", "note": "The manual's worked example is ExecuteGlobal LoadExternalScript(\"fpScripts.fpl\\myscript\"), which is the branch taken when a reference carries the .fpl extension. What ships is a single storage named testscript.", "path": "Libraries/fpScripts.fpl", "required": false, "size": 4096, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x00478d20, Future Pinball Manual.chm GlobalScript.html", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Template opened by File then New", "name": "NewTable.fpt", "note": "The install directory is copied into the default table path buffer and this name appended, then the result goes through the ordinary table open. It is a full table with a playfield and a plunger, not an empty document.", "required": false, "size": 226816, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x00448ea9-0x00448edb", "system": "fpinball"}, {"bundled": true, "description": "Development guide, 79 topics", "name": "Future Pinball Manual.chm", "note": "Opened with ShellExecuteA on the install directory plus this path when the help command carries id 0x8043. It is the only description of the library link mechanism and of LoadExternalScript.", "path": "Help/Future Pinball Manual.chm", "required": false, "size": 8992653, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x00478477-0x004784c4", "system": "fpinball"}, {"description": "Microsoft Windows Script 5.6 documentation, the VBScript reference", "name": "Script56.chm", "note": "The script editor's help falls to this path for every command id other than 0x8043, again through ShellExecuteA against the install directory. No Future Pinball release ships it: table scripts are VBScript and this is Microsoft's own reference for the language, expected to be dropped into Help beside the manual.", "path": "Help/Script56.chm", "required": false, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x004784a3-0x004784c4", "system": "fpinball"}, {"bundled": true, "description": "Cached table list from pinsimdb.org", "name": "fpLatestTables.xml", "note": "libcurl writes it, CreateFileA with OPEN_EXISTING reads it back and DeleteFileA drops it when the panel refreshes. The code builds the path as feeds\\ against a directory the installer creates as Feeds. A snapshot ships with the release, so the panel has something to show before any fetch.", "path": "Feeds/fpLatestTables.xml", "required": false, "size": 752639, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x0043dc70-0x0043dc99, 0x0043e776-0x0043e79c", "system": "fpinball"}, {"description": "NaturalPoint TrackIR client library, head tracking", "name": "NPClient.dll", "note": "The directory is read from HKCU\\Software\\NaturalPoint\\NATURALPOINT\\NPClient Location, this name appended and the result given to LoadLibraryA; NP_GetSignature and the rest are then bound with GetProcAddress. A null handle jumps past all tracking setup. It comes from a TrackIR install, not from any Future Pinball distribution, which is why no path is given here.", "required": false, "source_ref": "Future Pinball.exe 1.9.1.20101231 .text:0x0045f1b8-0x0045f1f8", "system": "fpinball"}], "mode": "standalone", "notes": "Closed-source Windows pinball simulator and table editor written by Chris\nLeathley for BSP Software Design Solutions. Development stopped with\nv1.9.1.20101231, still served from futurepinball.com. Rendering is OpenGL\n(88 imports from opengl32 and 4 from glu32); ddraw is loaded by name only to\ncall DirectDrawCreateEx while enumerating display modes. Physics come from\nNewton Game Dynamics, audio from FMOD 3, image decoding from DevIL and the\nscript editor from Scintilla. The binary registers its own type library at\nstartup through LoadTypeLib and RegisterTypeLib on its own path, which is the\nregistration RetroBat checks under TypeLib\\{FB22A459-4AD0-4CB3-B959-15158F7139F5}\nbefore deciding to relaunch elevated.\nref: Future Pinball.exe 1.9.1.20101231 import directory, .text:0x0042c7a2-0x0042c82e\n\nThe release is named 1.9.1.20101231 but the executable inside it carries\nFileVersion 1.9.2008.1225 in its version resource and prints\n\"Version 1.9.1.20091231\" in its own banner.\nref: Future Pinball.exe 1.9.1.20101231 .rsrc version, .text:0x0043d288-0x0043d298\n\nEvery relative path below hangs off one root. At startup GetModuleFileNameA\nfills a buffer, the code scans back to the last backslash and terminates the\nstring just after it, and that install directory with its trailing separator\nis kept for the life of the process.\nref: Future Pinball.exe 1.9.1.20101231 .text:0x00432af0-0x00432b49\n\nA table is an OLE compound document with the .fpt extension and it carries\nits own media. Every FMOD load passes FSOUND_LOADMEMORY (mode 0x8130 for\nsamples, 0x4000a130 for streams) and images go through ilLoadL, the memory\nlump entry point, never ilLoadImage. So sounds, music and textures are read\nout of the table file and no external media is opened while a table plays.\nref: Future Pinball.exe 1.9.1.20101231 .text:0x00457ede,0x00457f6f,0x00457fe6,0x0045805b,0x004417f6\n\nWhat a table can pull from outside itself is a resource library. Libraries\nare .fpl files, also OLE compound documents, holding models, textures, sounds,\nDMD fonts and scripts under one storage per item. The Texture, Sound, Model\nand DMD Font managers each offer Import, which copies the item into the table,\nand Link, which records the library name and the item name instead; the manual\nrecommends always linking to the shipped model library. A linked library is\nopened by StgOpenStorage on the name as written, which resolves against the\ntable's own folder, and on failure against the install directory plus\n\"Libraries\\\". Both failing raises \"Unabled to Open Library - '<name>'\" followed\nby \"There will be some functions missing from the game.\" as a warning box, and\nthe program carries on.\nref: Future Pinball.exe 1.9.1.20101231 .text:0x004e6cf0-0x004e6ebf, .rsrc string 149-150,\nFuture Pinball Manual.chm LibraryResourceManager.html, ModelManager.html, TextureManager.html,\nSoundManager.html, FontManager.html\n\nA table script reaches outside itself through LoadExternalScript, whose result\nis handed to VBScript's ExecuteGlobal. When the reference ends in .fpl the\nscript is pulled from that library, otherwise the name is tried as given\nagainst the working directory, then under the install directory with the\n\"Scripts\\\" prefix, then with \"Tables\\\", and a miss reports\n\"Unable to load external script\". No Scripts directory ships, so what it holds\nis whatever a given table asks for.\nref: Future Pinball.exe 1.9.1.20101231 .text:0x004797c0-0x00479905, 0x00478be0-0x00478c66,\n0x00478d20, Future Pinball Manual.chm GlobalScript.html\n\nSettings live in the registry under HKCU\\Software\\Future Pinball, split into\nGamePlayer, GamePlayer\\Joypads and Editor keys; there is no ini file.\nRetroBat writes resolution, aspect ratio, camera, render preset and the whole\njoypad map there before launching. Per table state is written to\nfpRAM\\<table>.fpRAM beside the program. Nothing in the program verifies a size\nor a hash on any file it opens, so the figures recorded below are those of the\n1.9.1.20101231 release and are informative.\nref: Future Pinball.exe 1.9.1.20101231 .text:0x0043aa80,0x00475602,0x00475892,\nretrobat emulatorLauncher/Generators/Fpinball.Generator.cs:326-491\n\nFront ends drive it with the documented switches /Open \"<table>\", /Play, /Exit\nand /ArcadeRender. ES-DE declares it for Windows only, as FUTURE-PINBALL\nfinding \"Future Pinball.exe\" and as FUTURE-PINBALL-FPLOADER finding\n\"BAM\\FPLoader.exe\", both invoked with /Exit /Play /Open; the fpinball system\nis a placeholder on its six other platforms. RetroBat maps the emulator keys\nfpinball and bam to one generator, one install folder and the same\n\"Future Pinball.exe\" presence check, swapping only the launched binary, and\noptionally starts dmdext against DmdDevice.ini to mirror the DMD. Batocera ran\nit in a wine bottle on x86_64 and dropped it for Visual Pinball. BAM is\nravarcade's loader: FPLoader.exe starts the same executable with BAM.dll\ninjected, and it names none of its own files from inside Future Pinball.\nref: es-de resources/systems/windows/es_find_rules.xml:438-461,\nes-de resources/systems/windows/es_systems.xml, Future Pinball Manual.chm CommandLine.html,\nretrobat emulatorLauncher/Generators/Fpinball.Generator.cs:109-181,\nbatocera-linux batocera-Changelog.md:214\n", "profiled_date": "2026-08-11", "source": "https://futurepinball.com/", "systems": ["fpinball"], "type": "standalone", "upstream": "closed-source"}


id: future-pinball-fploader
name: future-pinball-fploader
type: standalone
classification: enhanced_fork
source: https://github.com/ravarcade/BAM_FPloader
upstream: https://www.ravarcade.pl/
source_commit: e13007994011ae57dd9d9f48674c1f774183914b
profile_json:
{"analysis": {"named_but_not_obtainable": {"entries": [{"note": "fopen_s with rb then fread, guarded by two globals and reached only after glGetFloatv has read the modelview and projection matrices. The path is absolute and points at a directory no install creates.", "source_ref": "BAM.dll 1.5-408 .text:0x100cff69-0x100cffa5", "what": "c:\\games\\ppmm.bin"}], "note": "A literal the code opens that no distribution can provide"}, "platform_components": {"entries": [{"note": "Visual C++ 2015 or later runtime. Neither distribution carries it.", "source_ref": "BAM.dll, renderingengine.dll import directories", "what": "MSVCP140.dll, VCRUNTIME140.dll, CONCRT140.dll and the api-ms-win-crt set"}, {"note": "Visual C++ 2010 and 2013 runtimes, for the older plugins.", "source_ref": "PostFX.dll, TrackIR.dll, DesktopKinect.dll, PinballHighScore.dll import directories", "what": "MSVCR100.dll, MSVCR120.dll and MSVCP120.dll"}, {"note": "Windows components.", "source_ref": "BAM.dll, renderingengine.dll, plugin import directories", "what": "opengl32, glu32, dinput8, hid, avicap32, avifil32, msvfw32, d3d11, dxgi"}], "note": "Named in import directories but supplied by Windows or by a Microsoft redistributable, so they are prerequisites rather than payload."}, "shipped_but_not_loaded": {"entries": [{"note": "No shipped binary imports it and neither BAM.dll nor renderingengine.dll names it in any string; both carry their own zlib.", "source_ref": "BAM.dll, renderingengine.dll and every plugin import directory", "what": "zlib.dll in BAM-OpenVR.zip"}, {"note": "The zlib licence the loader source carries, copied into the install.", "source_ref": "bam-setup.exe payload", "what": "License.txt, 3741 bytes"}], "note": "Present in a distribution with no code path that opens it"}, "written_not_read": {"entries": [{"note": "Built as cfg\\\\<table> then finished with the extension. Saved from the menu and read back on the next launch of the same table.", "source_ref": "BAM.dll 1.5-408 .text:0x10025e59, 0x100319b9, 0x10032bdb", "what": "cfg\\<table>.cfg and cfg\\<table>.seq, per table settings and camera sequences"}, {"note": "Checked with GetFileAttributesA and rebuilt when absent. Holds shadowmaps.txt and one <name>-shadows.tga per light, written through the rendering engine.", "source_ref": "BAM.dll 1.5-408 .text:0x10105c18-0x1010697f", "what": "Cache\\<table>-shadows.zip, precomputed shadow maps"}, {"note": "fopen_s with wb, fwrite, fclose. No read site exists.", "source_ref": "BAM.dll 1.5-408 .text:0x10077b80-0x10077bd7", "what": "set3points.dat, the three point calibration of the screen corners"}, {"note": "The crash log is written from the fault handler installed at load time; the other two only when the matching switch is on the command line.", "source_ref": "BAM.dll 1.5-408 .text:0x1007a45b, 0x1007ae0a, 0x100d4318-0x100d4391", "what": "BAM_debug.log, BAM_CRASH.log and OpenGLdbg.log"}], "note": "Opened only for writing, so they are output rather than something to obtain. All of them sit in the BAM directory."}}, "core_classification": "enhanced_fork", "core_version": "1.5-408", "cores": ["future-pinball-fploader", "bam"], "display_name": "Future Pinball (BAM)", "emulator": "future-pinball-fploader", "files": [{"bundled": true, "description": "The mod, injected into Future Pinball and holding every feature", "name": "BAM.dll", "note": "Taken from the loader's directory, else from C:\\Games\\Future Pinball\\BAM\\. Neither present ends the loader with a message box.", "required": true, "size": 8266240, "source_ref": "BAM_FPloader FPLoader.cpp:45, 166-182", "system": "fpinball"}, {"bundled": true, "description": "Rendering engine and asset loader behind BAM", "name": "renderingengine.dll", "note": "Bound statically by BAM.dll, so the injected LoadLibraryA fails without it. The loader adds its own directory to %PATH% for this file alone.", "required": true, "size": 8791552, "source_ref": "BAM.dll 1.5-408 import directory, BAM_FPloader FPLoader.cpp:249-257", "system": "fpinball"}, {"description": "The program BAM starts and modifies", "name": "Future Pinball.exe", "note": "Probed with GetFileAttributesA at four locations, /FPEXE first. Absent, the loader stops before creating any process. The size is that of release 1.9.1.20101231.", "required": true, "size": 28547584, "source_ref": "BAM_FPloader FPLoader.cpp:41, 46, 184-240", "system": "fpinball"}, {"bundled": true, "description": "Head tracking calibration host", "name": "BAM-Tracker.exe", "note": "Imports BAM.dll and runs it outside the game. BAM.dll lowercases the host command line and looks for this name to know it is hosted by the tracker rather than by Future Pinball.", "required": false, "size": 207104, "source_ref": "BAM-Tracker.exe import directory, BAM.dll 1.5-408 .text:0x1008320e", "system": "fpinball"}, {"bundled": true, "description": "Converts models to the .fpm form tables import", "name": "ModelImporter.exe", "note": "Bound to renderingengine.dll for the Assimp side. Its open dialog accepts .fpm, .obj, .ms3d, .md5mesh and .fbx.", "required": false, "size": 4553472, "source_ref": "ModelImporter.exe import directory, .rdata dialog filter", "system": "fpinball"}, {"aliases": ["Keyboard.cfg"], "description": "Key bindings and screenshot paths, the one text config", "name": "bam.cfg", "note": "Keyboard.cfg is the older name and is renamed on sight. 9999 in a key slot leaves the function unbound.", "required": false, "size": 316, "source_ref": "BAM.dll 1.5-408 .text:0x100c3960-0x100c3a97", "system": "fpinball"}, {"description": "Global camera, lighting, physics and rendering settings", "name": "default.cfg", "note": "A binary block of the same shape as a per table cfg. Saving it reports \"default.cfg saved\".", "required": false, "size": 3072, "source_ref": "BAM.dll 1.5-408 .text:0x100326ba-0x100371bc", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Camera animation sequences used when a table brings none", "name": "default.seq", "note": "Read as text. Every line is a comment to Future Pinball's own parser and carries a position, a scale, two angles and a duration.", "required": false, "size": 1284, "source_ref": "BAM.dll 1.5-408 .text:0x10025e40-0x1002608f", "system": "fpinball"}, {"description": "Physics values applied when a table specifies none", "name": "default.xml", "note": "Same document shape as the presets under XML\\. The save path produces one by extracting resource 464 of type XML from Future Pinball, 6264 bytes, so no copy ships.", "required": false, "source_ref": "BAM.dll 1.5-408 .text:0x100ae843-0x100ae8a7, 0x10037130-0x100371de", "system": "fpinball"}, {"category": "game_data", "description": "Texture pack applied to every table", "name": "default.zip", "note": "Holds BMP/<id>.bmp entries keyed by Future Pinball resource id, the form the ball packs and the Zendonius packs use.", "required": false, "source_ref": "BAM.dll 1.5-408 .text:0x100ae8ec-0x100ae990", "system": "fpinball"}, {"description": "List of physics documents offered in the presets menu", "name": "XML_Presets.txt", "note": "Read whole and split on \"%d: %s\" lines. The menu entry Add current XML appends to it, which is how the files under XML\\ become reachable.", "required": false, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbd8a", "system": "fpinball"}, {"description": "Physical measurements of the cabinet and the screen", "name": "Reality.dat", "note": "Read at startup and rewritten from the Reality submenu. Head tracking and stereo geometry are computed from it.", "required": false, "size": 920, "source_ref": "BAM.dll 1.5-408 .text:0x10031bbb, 0x10031ebe", "system": "fpinball"}, {"description": "WiiMote identifiers kept for the WiiMote camera mode", "name": "WiiMoteCams.dat", "required": false, "size": 16, "source_ref": "BAM.dll 1.5-408 .text:0x10031d22, 0x10032f9f", "system": "fpinball"}, {"description": "Dimensions of the printed board used to calibrate cameras", "name": "CalibrationBoardData.cfg", "required": false, "size": 272, "source_ref": "BAM.dll 1.5-408 .text:0x10031ad8, 0x10032d4b", "system": "fpinball"}, {"description": "Result of the two camera calibration pass", "name": "stereoCalibrationData.cfg", "required": false, "size": 1160, "source_ref": "BAM.dll 1.5-408 .text:0x10031c75, 0x10032de3", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Ball texture showing the rotation axes", "name": "axis.zip", "path": "Balls/axis.zip", "required": false, "size": 480842, "source_ref": "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Baseball ball texture", "name": "Baseball.zip", "path": "Balls/Baseball.zip", "required": false, "size": 248548, "source_ref": "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Basketball ball texture", "name": "Basketball 1.zip", "path": "Balls/Basketball 1.zip", "required": false, "size": 148883, "source_ref": "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Second basketball ball texture", "name": "Basketball 2.zip", "path": "Balls/Basketball 2.zip", "required": false, "size": 74296, "source_ref": "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Black cue ball texture", "name": "Cue Black.zip", "path": "Balls/Cue Black.zip", "required": false, "size": 548084, "source_ref": "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "White cue ball texture", "name": "Cue White.zip", "path": "Balls/Cue White.zip", "required": false, "size": 554040, "source_ref": "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Globe ball texture, three BMP resources", "name": "earth.zip", "path": "Balls/earth.zip", "required": false, "size": 728508, "source_ref": "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "EyeToy ball texture", "name": "EYETOY.zip", "path": "Balls/EYETOY.zip", "required": false, "size": 373860, "source_ref": "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Fireball ball texture", "name": "Fireball.zip", "path": "Balls/Fireball.zip", "required": false, "size": 240337, "source_ref": "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Knight ball texture", "name": "Knight.zip", "path": "Balls/Knight.zip", "required": false, "size": 421287, "source_ref": "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Latitude and longitude grid ball texture", "name": "latlong.zip", "path": "Balls/latlong.zip", "required": false, "size": 1066167, "source_ref": "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Soccer ball texture", "name": "Soccer Ball 1.zip", "path": "Balls/Soccer Ball 1.zip", "required": false, "size": 54397, "source_ref": "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Physics 1.0 preset", "name": "fp-p1.0.xml", "path": "XML/fp-p1.0.xml", "required": false, "size": 6290, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Physics 2.0 preset", "name": "fp-p2.0.xml", "path": "XML/fp-p2.0.xml", "required": false, "size": 6267, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Physics 2.1 preset", "name": "fp-p2.1.xml", "path": "XML/fp-p2.1.xml", "required": false, "size": 6267, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Physics 2.2 preset", "name": "fp-p2.2.xml", "path": "XML/fp-p2.2.xml", "required": false, "size": 6267, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Physics 2.3 preset, first variant", "name": "fp-p2.3 Version 1.xml", "path": "XML/fp-p2.3 Version 1.xml", "required": false, "size": 6278, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Physics 2.3 preset, second variant", "name": "fp-p2.3 Version 2.xml", "path": "XML/fp-p2.3 Version 2.xml", "required": false, "size": 6278, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Physics 2.4 preset", "name": "fp-p2.4.xml", "path": "XML/fp-p2.4.xml", "required": false, "size": 6267, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Physics 2.5 preset", "name": "fp-p2.5.xml", "path": "XML/fp-p2.5.xml", "required": false, "size": 6315, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Physics 2.5 preset with the slamtilt rubber values", "name": "fp-p2.5 slamtilt rubbers.xml", "path": "XML/fp-p2.5 slamtilt rubbers.xml", "required": false, "size": 6335, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Physics 2.6 preset", "name": "fp-p2.6.xml", "path": "XML/fp-p2.6.xml", "required": false, "size": 6315, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Physics 2.7 preset", "name": "fp-p2.7.xml", "path": "XML/fp-p2.7.xml", "required": false, "size": 6314, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Zendonius physics preset", "name": "Zendonius_v1.0.xml", "path": "XML/Zendonius_v1.0.xml", "required": false, "size": 6333, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Zendonius physics preset, second revision", "name": "Zendonius_v1.1.xml", "path": "XML/Zendonius_v1.1.xml", "required": false, "size": 6333, "source_ref": "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Texture pack for the Zendonius preset, resources 315 to 464", "name": "zedonius_v1_0.zip", "path": "XML/zedonius_v1_0.zip", "required": false, "size": 862294, "source_ref": "BAM.dll 1.5-408 .text:0x100ae8ec-0x100ae990", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Texture pack for the second Zendonius revision", "name": "zedonius_v1_1.zip", "path": "XML/zedonius_v1_1.zip", "required": false, "size": 862287, "source_ref": "BAM.dll 1.5-408 .text:0x100ae8ec-0x100ae990", "system": "fpinball"}, {"bundled": true, "description": "Head tracking from any webcam, desktop geometry", "name": "DesktopCam.dll", "note": "Bound to AVICAP32 and MSVFW32 and reads the cascade files below.", "path": "plugins/DesktopCam.dll", "required": false, "size": 3388680, "source_ref": "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c", "system": "fpinball"}, {"bundled": true, "description": "Head tracking from any webcam, cabinet geometry", "name": "Simple Cam.dll", "path": "plugins/Simple Cam.dll", "required": false, "size": 3262728, "source_ref": "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c", "system": "fpinball"}, {"bundled": true, "description": "Head tracking from a PlayStation Eye", "name": "PS3Eye.dll", "note": "Bound to CLEyeMulticam.dll, which comes from the CL-Eye SDK.", "path": "plugins/PS3Eye.dll", "required": false, "size": 1699080, "source_ref": "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c", "system": "fpinball"}, {"bundled": true, "description": "PlayStation Eye tracking with desktop geometry", "name": "DesktopPS3Eye.dll", "path": "plugins/DesktopPS3Eye.dll", "required": false, "size": 1813768, "source_ref": "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c", "system": "fpinball"}, {"bundled": true, "description": "Two PlayStation Eye cameras tracking an infrared marker", "name": "HT-PS3Eyes.dll", "note": "Keeps its calibration in HT-PS3Eyes.dat and HT-PS3Eyes-FixCamExport.dat beside itself, both produced by the calibration pass.", "path": "plugins/HT-PS3Eyes.dll", "required": false, "size": 1432272, "source_ref": "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c", "system": "fpinball"}, {"bundled": true, "description": "Head tracking from a Kinect for Xbox 360", "name": "Kinect.dll", "note": "Bound to Kinect10.dll and FaceTrackLib.dll.", "path": "plugins/Kinect.dll", "required": false, "size": 2792144, "source_ref": "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c", "system": "fpinball"}, {"bundled": true, "description": "Kinect tracking with desktop geometry", "name": "DesktopKinect.dll", "path": "plugins/DesktopKinect.dll", "required": false, "size": 31952, "source_ref": "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c", "system": "fpinball"}, {"bundled": true, "description": "Head tracking from a Kinect for Windows v2", "name": "Kinect2.dll", "note": "Bound to Kinect20.dll.", "path": "plugins/Kinect2.dll", "required": false, "size": 2791632, "source_ref": "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c", "system": "fpinball"}, {"bundled": true, "description": "Microsoft face tracking library used by the Kinect plugins", "name": "FaceTrackLib.dll", "path": "plugins/FaceTrackLib.dll", "required": false, "size": 920272, "source_ref": "DesktopKinect.dll, Kinect.dll import directories", "system": "fpinball"}, {"bundled": true, "description": "Model data for the face tracking library", "name": "FaceTrackData.dll", "path": "plugins/FaceTrackData.dll", "required": false, "size": 10650832, "source_ref": "FaceTrackLib.dll .rdata, wide literal FaceTrackData.dll", "system": "fpinball"}, {"bundled": true, "description": "Head tracking from a FreeTrack server", "name": "FreeTrack.dll", "path": "plugins/FreeTrack.dll", "required": false, "size": 95440, "source_ref": "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c", "system": "fpinball"}, {"bundled": true, "description": "Head tracking from a NaturalPoint TrackIR", "name": "TrackIR.dll", "note": "Matches the name NPClient with strstr and pairs LoadLibraryA with GetProcAddress on it. The plugin imports no registry function, so the client library is resolved as a plain module name.", "path": "plugins/TrackIR.dll", "required": false, "size": 20176, "source_ref": "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c, TrackIR.dll .text:0x100018c7", "system": "fpinball"}, {"bundled": true, "description": "Bloom and the unfinished ambient occlusion pass", "name": "PostFX.dll", "note": "Named in BAM.dll and compared against the enumerated file names, so it is the one plugin the mod knows by name. Its nine GLSL programs are TEXT resources inside the plugin, read with FindResourceA. Two builds circulate under this name, the 39632 bytes of bam-setup.exe and 191240 bytes in BAM-OpenVR.zip.", "path": "plugins/PostFX.dll", "required": false, "size": 39632, "source_ref": "BAM.dll 1.5-408 .text:0x100cf5ff, BAM_Plugins PostFX/PostFX.cpp:41-45", "system": "fpinball"}, {"bundled": true, "description": "Records high scores across tables", "name": "PinballHighScore.dll", "path": "plugins/PinballHighScore.dll", "required": false, "size": 918224, "source_ref": "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c", "system": "fpinball"}, {"bundled": true, "description": "Settings block the high score plugin reads and writes", "name": "PinballHighScore.cfg", "path": "plugins/PinballHighScore.cfg", "required": false, "size": 1016, "source_ref": "BAM_Plugins Common/BAM.h:136-157", "system": "fpinball"}, {"description": "Score database the plugin opens by name", "name": "PinballHighScore.db", "note": "Only BAM-OpenVR.zip carries a copy; the plugin creates one otherwise.", "path": "plugins/PinballHighScore.db", "required": false, "size": 45056, "source_ref": "PinballHighScore.dll .rdata", "system": "fpinball"}, {"bundled": true, "description": "PuPCOM script object drawing PinUP Player video onto table textures", "name": "PuPPlugin.dll", "note": "Takes BAM_GetTextureId and BAM_ReplaceTexture from the plugin API.", "path": "plugins/PuPPlugin.dll", "required": false, "size": 240216, "source_ref": "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c, PuPPlugin.dll .rdata IPuPCOM, PuPVideo", "system": "fpinball"}, {"bundled": true, "description": "Gives a table script the COM objects the cabinet stack exposes", "name": "icom.dll", "note": "Matches created objects against PinUpPlayer, Vpinmame, B2S, PUPDMDControl, UltraDMD, PinSSF and DirectOutput.", "path": "plugins/icom.dll", "required": false, "size": 67280, "source_ref": "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c, icom.dll .rdata ProgID pattern", "system": "fpinball"}, {"bundled": true, "description": "Renders the table to an OpenVR headset", "name": "OpenVR.dll", "note": "Ships only in BAM-OpenVR.zip, which ES-DE also looks for as BAM-OpenVR\\.", "path": "plugins/OpenVR.dll", "required": false, "size": 419328, "source_ref": "BAM_Plugins OpenVR/main.cpp, BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c", "system": "fpinball"}, {"bundled": true, "description": "Valve OpenVR runtime interface", "name": "openvr_api.dll", "path": "plugins/openvr_api.dll", "required": false, "size": 620760, "source_ref": "OpenVR.dll import directory", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "OpenCV Haar cascade for frontal faces", "name": "haarcascade_frontalface_alt.xml", "path": "plugins/haarcascades/haarcascade_frontalface_alt.xml", "required": false, "size": 919871, "source_ref": "DesktopCam.dll, PS3Eye.dll, Simple Cam.dll .rdata", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "Second OpenCV Haar cascade for frontal faces", "name": "haarcascade_frontalface_default.xml", "path": "plugins/haarcascades/haarcascade_frontalface_default.xml", "required": false, "size": 1254733, "source_ref": "DesktopCam.dll, PS3Eye.dll, Simple Cam.dll .rdata", "system": "fpinball"}, {"bundled": true, "category": "game_data", "description": "OpenCV local binary pattern cascade for frontal faces", "name": "lbpcascade_frontalface.xml", "path": "plugins/lbpcascades/lbpcascade_frontalface.xml", "required": false, "size": 51856, "source_ref": "DesktopCam.dll, PS3Eye.dll, Simple Cam.dll .rdata", "system": "fpinball"}, {"description": "OpenCV 2.4.10 FFmpeg bridge, video files as a camera source", "name": "opencv_ffmpeg2410.dll", "note": "LoadLibraryA followed by GetProcAddress on cvCreateFileCapture_FFMPEG, cvGrabFrame_FFMPEG and the rest. A null handle leaves the entry points unbound and only the file source is lost.", "required": false, "source_ref": "BAM.dll 1.5-408 .text:0x102a6013-0x102a605b", "system": "fpinball"}, {"description": "CL-Eye Platform SDK driver interface for the PlayStation Eye", "name": "CLEyeMulticam.dll", "required": false, "source_ref": "PS3Eye.dll, DesktopPS3Eye.dll, HT-PS3Eyes.dll import directories", "system": "fpinball"}, {"description": "Kinect for Windows SDK 1.x runtime", "name": "Kinect10.dll", "required": false, "source_ref": "Kinect.dll, DesktopKinect.dll, FaceTrackLib.dll import directories", "system": "fpinball"}, {"description": "Kinect for Windows SDK 2.0 runtime", "name": "Kinect20.dll", "required": false, "source_ref": "Kinect2.dll import directory", "system": "fpinball"}, {"description": "NaturalPoint TrackIR client library", "name": "NPClient.dll", "note": "Comes from a TrackIR install rather than from any BAM distribution, which is why no path is given here.", "required": false, "source_ref": "TrackIR.dll .rdata", "system": "fpinball"}], "mode": "standalone", "notes": "BAM, Better Arcade Mode, by Rafal Janicki. FPLoader.exe starts\nFuture Pinball.exe suspended, writes the BAM.dll path into the new process\nwith VirtualAllocEx and WriteProcessMemory, runs LoadLibraryA on it through\nCreateRemoteThread, waits for that thread and resumes the main one. Everything\nelse lives in BAM.dll, which detours the running program. The loader is\npublished as source; the shipped FPLoader.exe carries the same .text and\n.rdata as the build committed to that repository and differs only by an\nAuthenticode blob, 9472 bytes against 5384.\nref: BAM_FPloader FPLoader.cpp:259-305, FPLoader.exe .text sha1\nd5ca74154fe97002, PE timestamp 2016-04-25 19:17:12\n\nBAM.dll is searched in the loader's own directory first, then in\nC:\\Games\\Future Pinball\\BAM\\. Both missing puts up \"Couldn't locate BAM.dll.\"\nand returns -1. Future Pinball.exe comes from /FPEXE if that switch names an\nexisting file, otherwise from one level above the loader, then from the\nloader's directory, then from C:\\Games\\Future Pinball\\; the same failure path\nreports \"Couldn't locate Future Pinball.exe.\". Before the process is created\nthe loader prepends its own directory to %PATH% so the system resolves\nrenderingengine.dll from there while the working directory is the game\ndirectory. /STAYINRAM keeps the loader alive until the game thread ends; the\nrest of the command line is handed to Future Pinball untouched, which is how\n/Open, /Play, /Exit and /ArcadeRender reach it.\nref: BAM_FPloader FPLoader.cpp:40-48, 87-111, 166-240, 249-257\n\nBAM.dll is closed source. Its version resource reads 1.5.408 and its debug\ntags name BAM.cpp, dllmain.cpp, BallManager.cpp, RenderEngine.cpp,\nplugin.cpp, pbo.cpp, stereo3d.cpp and debug.cpp. Twenty five entry points are\ndetoured in one pass: CreateFileA, CreateFileW, ReadFile, WriteFile,\nCloseHandle, GetFileSize, DeleteFileA, FindResourceA, LoadResource,\nLockResource, SizeofResource, CoCreateInstance, StgOpenStorage,\nGetOpenFileNameA, ChooseColorA, GetDlgItem, SendMessageA, ShowWindow,\nSwapBuffers, ChoosePixelFormat, SetPixelFormat, wglCreateContext,\nwglDeleteContext, wglMakeCurrent and wglGetProcAddress, with glFrustum,\nglTexImage2D and wglChoosePixelFormatARB taken separately. That is how BAM\nsees the program's own resource and file traffic and can answer it. Newton is\nreached through GetModuleHandleA on the copy Future Pinball already imported\nfollowed by GetProcAddress on 83 entry points; no second copy is loaded.\nref: BAM.dll 1.5-408 .text:0x10082a75-0x10082f3d, 0x100831b3-0x100831d9,\n0x1002ab92-0x1002abeb, .rsrc version, debug tags Routed_glTexImage2D and\nRouted_wglChoosePixelFormatARB\n\nEvery path BAM builds hangs off the directory holding BAM.dll. The module\nhandle saved at load time goes through GetModuleFileNameA, the result is cut\nat the last separator, and one of two format strings finishes the job:\n\"%s\\%s.%s\" for a name and an extension, \"%s\\%s\" for the cfg subdirectory.\nSettings for a table are cfg\\<table>.cfg and cfg\\<table>.seq, with default.cfg\nand default.seq as the fallbacks.\nref: BAM.dll 1.5-408 .text:0x10025e40-0x1002605a, 0x100319a0-0x10031d48,\n0x10032bdb-0x10032f23\n\nKeys are the one text file. bam.cfg is read with fopen_s and parsed as\n\"%s = %s\" lines over the names Menu, Menu2, Left, Right, Up, Down, Enter,\nSnapshot, 3DSwitch, SaveXML, SnapShotPath, SnapShotBackboxPath, HeadTracking,\nForceArcadeMode, SwitchToNextBall, SwitchToPrevBall, RoomOnOff, Cam, Overlay,\nBallShadows and OverlayAspectFix. A Keyboard.cfg found beside it is renamed to\nbam.cfg first. RetroBat rewrites the two SnapShotPath lines before launching.\nref: BAM.dll 1.5-408 .text:0x100c3960-0x100c3a97, .rdata:0x10654208-0x10654324,\nretrobat emulatorLauncher/Generators/Fpinball.Generator.cs:183-209\n\nA ball or a room is a zip of BMP/<id>.bmp entries named for the resource ids\nFuture Pinball itself uses: the program carries 29 resources of type BMP and\nevery id the shipped packs contain is one of them, 452 being the ball.\nballs\\*.zip is walked with FindFirstFileA and each hit becomes a choice in the\nmenu; default.zip in the BAM directory is applied without being chosen. The\nrouted FindResourceA answers the nine SHADERS resources the same way, while\nthe single XML resource, id 464, is read straight from the program by the save\npath and is what the presets under XML\\ are edited copies of. The 83 GLSL\nprograms BAM renders with are\nresources of type TEXT inside BAM.dll, so no shader file is read from disk.\nref: BAM.dll 1.5-408 .text:0x1002d4f3-0x1002d52d, 0x100ae8ec-0x100ae990,\n0x10037130-0x100371de, 0x1007e83b-0x1007e896, .rsrc TEXT,\nFuture Pinball.exe 1.9.1.20101231 .rsrc BMP, SHADERS, XML\n\nPlugins are loaded by changing the working directory to plugins\\, walking\n*.dll with FindFirstFileA, calling LoadLibraryA on each and binding\nBAM_PluginStart and BAM_PluginStop. A plugin keeps its settings by writing a\nraw structure to <its own name>.cfg in that working directory, which is why\nthe cfg files beside the plugins carry no text.\nref: BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c,\nBAM_Plugins Common/BAM.h:116-157\n\nrenderingengine.dll is bound in BAM.dll's import directory through\nFindProgram, SetModuleWithResources, LoadFileToMemory and SaveFileFromMemory,\nso the loader resolves it before any BAM code runs. It carries Assimp, zlib,\nlibpng and libjpeg, reads the zip packs and writes the per table shadow cache\nunder Cache\\.\nref: BAM.dll 1.5-408 import directory, .text:0x10105c18-0x1010697f\n\nES-DE declares the emulator as FUTURE-PINBALL-FPLOADER for Windows only,\nfinding FPLoader.exe under BAM\\, BAM-OpenVR\\ or BAM-OpenVR-OC\\, and invokes it\nwith /Exit /Play /Open in the background. RetroBat reaches the same binary\nunder the emulator or core key bam, through the generator it shares with\nFuture Pinball. Two distributions are served: bam-setup.exe carries the\nloader, the mod, the renderer, the tools, the plugins, the ball packs and the\nphysics presets, while BAM-OpenVR.zip carries the OpenVR plugin and the\nsettings files the other package leaves for the first save to create.\nref: es-de resources/systems/windows/es_find_rules.xml:448-461,\nes-de resources/systems/windows/es_systems.xml:764,\nretrobat emulatorLauncher/Generators/Fpinball.Generator.cs:131-135\n", "profiled_date": "2026-08-11", "source": "https://github.com/ravarcade/BAM_FPloader", "source_commit": "e13007994011ae57dd9d9f48674c1f774183914b", "systems": ["fpinball"], "type": "standalone", "upstream": "https://www.ravarcade.pl/"}


id: galaksija
name: galaksija
type: libretro
classification: official_port
source: https://github.com/libretro/galaxy-libretro
upstream: https://github.com/nikp123/Galaksija-Emulator
source_commit: 4e197680d2dc9f8159d3a5565fcc4bbdd0e905ea
profile_json:
{"core_classification": "official_port", "core_version": "v0.1", "cores": ["galaksija"], "display_name": "Elektronika Inženjering - Galaksija (Galaksija)", "emulator": "galaksija", "files": [{"hle_fallback": true, "name": "CHRGEN.BIN", "note": "Character generator ROM. Defines the 128-character bitmap font (8x13 pixels each). The core has this embedded compressed in rom.c and only loads the external file if all firmware files are present in the system directory.\n", "path": "galaksija/CHRGEN.BIN", "required": false, "size": 2048, "source_ref": "src/rom.h:5, src/libretro.c:95-99, src/external/galaksija-emulator/src/init.c:55-67", "validation": ["size"]}, {"hle_fallback": true, "name": "ROM1.BIN", "note": "System ROM / BASIC interpreter. Mapped at 0x0000-0x0FFF. Contains the Galaksija BASIC language and boot routines. Embedded in rom.c as fallback.\n", "path": "galaksija/ROM1.BIN", "required": false, "size": 4096, "source_ref": "src/rom.h:8, src/libretro.c:101-105, src/external/galaksija-emulator/src/init.c:69-81", "validation": ["size"]}, {"hle_fallback": true, "name": "ROM2.BIN", "note": "Math extension ROM. Mapped at 0x1000-0x1FFF. Adds floating-point math functions (SIN, COS, TG, SQR, LN, EXP, POW, etc). Optional even when loading from disk -- missing ROM2 only triggers a warning. Embedded in rom.c as fallback.\n", "path": "galaksija/ROM2.BIN", "required": false, "size": 4096, "source_ref": "src/rom.h:11, src/libretro.c:107-110, src/external/galaksija-emulator/src/init.c:83-92", "validation": ["size"]}], "notes": {"embedded_firmware": "All three ROMs (CHRGEN.BIN, ROM1.BIN, ROM2.BIN) are embedded as compressed blobs in src/rom.c using RLE compression. The core works out of the box without any external firmware files. External files only serve as overrides for users who want alternative ROM versions (e.g. different BASIC revisions or character sets).\n", "firmware_override_logic": "The override is all-or-nothing for CHRGEN.BIN and ROM1.BIN. If either file is missing from galaksija/, the core ignores all external firmware and uses embedded copies. ROM2.BIN is handled separately and can be absent even when loading from disk.\n", "license": "The emulator code and included firmware are public domain. External dependencies (libz80, libretro-common, tinyfiledialogs) have separate licenses (GPL2, MIT).\n"}, "profiled_date": "2026-03-23", "source": "https://github.com/libretro/galaxy-libretro", "source_commit": "4e197680d2dc9f8159d3a5565fcc4bbdd0e905ea", "systems": ["galaksija"], "type": "libretro", "upstream": "https://github.com/nikp123/Galaksija-Emulator"}


id: gam4980
name: GAM4980
type: libretro
classification: pure_libretro
source: https://github.com/ThisBoringWorld/gam4980
upstream: https://codeberg.org/iyzsong/gam4980
source_commit: 2fbed643f61c6bde758f179c93d6f0595ef0a7e6
profile_json:
{"core_classification": "pure_libretro", "core_version": "0.2", "cores": ["gam4980"], "display_name": "GAM4980", "emulator": "GAM4980", "files": [{"name": "gam4980/8.BIN", "note": "Font ROM (2 MB). Loaded at 0x800000.", "required": true, "size": 2097152, "source_ref": "libretro.c:716-718", "system": "bbk-longman-4980"}, {"name": "gam4980/E.BIN", "note": "OS ROM (2 MB). Loaded at 0xE00000.", "required": true, "size": 2097152, "source_ref": "libretro.c:720-722", "system": "bbk-longman-4980"}], "notes": "Place 8.BIN and E.BIN in the RetroArch system/gam4980/ subdirectory.\nBoth files must be 2 MB dumps from a BBK Longman 4980 dictionary:\n  8.BIN - font ROM, dumped from address range 0x800000-0x9FFFFF\n  E.BIN - OS ROM, dumped from address range 0xE00000-0xFFFFFF\nGame files use the .gam extension.\n", "platform_details": {"bios_mapping": {"note": "sys.rom_8 and sys.rom_e are flat 2 MB arrays. The CPU accesses them\nthrough bank-switched memory (PA() macro resolves virtual to physical\naddress). rom_8_vread and rom_e_vread handle indirect reads via\nthe banking system.\n", "source_ref": "libretro.c:109-110, 300-305", "target": "0x800000-0x9FFFFF (font), 0xE00000-0xFFFFFF (OS) in banked address space"}, "load_path": {"note": "retro_init() builds the path as {system_directory}/gam4980/ and\npasses it to sys_init(). Files must be named exactly 8.BIN and\nE.BIN (case sensitive on Linux). No .info firmware declarations\nexist, so RetroArch won't warn about missing files at scan time.\n", "source_ref": "libretro.c:1173-1175"}}, "profiled_date": "2026-03-23", "source": "https://github.com/ThisBoringWorld/gam4980", "source_commit": "2fbed643f61c6bde758f179c93d6f0595ef0a7e6", "systems": ["bbk-longman-4980"], "type": "libretro", "upstream": "https://codeberg.org/iyzsong/gam4980"}


id: gambatte
name: Gambatte
type: libretro
classification: community_fork
source: https://github.com/libretro/gambatte-libretro
upstream: https://github.com/sinamas/gambatte
source_commit: 96174369b3c30d9fc57c926fa3379c273dc6a9a5
profile_json:
{"core_classification": "community_fork", "core_version": "v0.5.0", "cores": ["gambatte"], "display_name": "Nintendo - Game Boy / Color (Gambatte)", "emulator": "Gambatte", "files": [{"description": "Original Game Boy (DMG-01) boot ROM", "hle_fallback": true, "name": "gb_bios.bin", "note": "Mapped at 0x0000-0x00FF, swapped out when register 0xFF50 is written.", "required": false, "size": 256, "source_ref": "libgambatte/libretro/libretro.cpp:1303-1363 (get_bootloader_from_file), libgambatte/src/bootloader.cpp:20-55 (load)", "system": "nintendo-gb", "validation": {"core": ["size"], "upstream": ["size", "crc32"]}}, {"description": "Game Boy Color (CGB-001) boot ROM", "hle_fallback": true, "name": "gbc_bios.bin", "note": "Mapped at 0x0000-0x08FF with cartridge data preserved at 0x0100-0x01FF. Also used for GBA mode with a patch at 0xF2. Presence required for FORCE_CGB flag when hw mode is GBC or GBA.", "required": false, "size": 2304, "source_ref": "libgambatte/libretro/libretro.cpp:1303-1363 (get_bootloader_from_file), libgambatte/src/bootloader.cpp:20-55 (load)", "system": "nintendo-gbc", "validation": {"core": ["size"], "upstream": ["size", "crc32"]}}], "notes": "Accuracy-focused GB/GBC emulator. No BIOS required for normal operation;\nbuilt-in HLE boot sequence skips the Nintendo logo animation.\n\nCore option gambatte_gb_bootloader (default: enabled) enables loading\nofficial boot ROMs from the system directory for the real startup animation.\nIf missing, emulation works without them.\n\nBoot ROM selection by hardware mode:\n- DMG: gb_bios.bin (256 bytes)\n- CGB or GBA: gbc_bios.bin (2304 bytes)\n\nIn GBA mode the core patches the CGB boot ROM at 0xF2 to fake GBA\ndetection (ld b,0x01), enabling GBA-enhanced features in compatible\nGBC games.\n\nThe upstream standalone supports SGB boot ROM loading; the libretro\nport does not implement this.\n\nCustom palette files (palettes/*.pal) are user-created colorization\nconfigs loaded when GB Colorization is set to \"custom\". These are\nuser-generated content, not distributable files.\n", "profiled_date": "2026-03-23", "source": "https://github.com/libretro/gambatte-libretro", "source_commit": "96174369b3c30d9fc57c926fa3379c273dc6a9a5", "systems": ["nintendo-gb", "nintendo-gbc"], "type": "libretro", "upstream": "https://github.com/sinamas/gambatte"}


id: gargoyle
name: Gargoyle
type: standalone
classification: game_engine
source: https://github.com/garglk/garglk
upstream: https://github.com/garglk/garglk
source_commit: 5717fbf3f9d6f2341773d0cc03f19d96c463af72
profile_json:
{"core_classification": "game_engine", "core_version": "2026.1", "cores": ["gargoyle"], "display_name": "Interactive Fiction (Gargoyle)", "emulator": "Gargoyle", "exclusion_note": "TADS character mapping files are not loaded by this build. The Glk port reports utf-8 and asc7dflt as the local character sets, both built-in tables, and its os_gen_charmap_filename() returns an empty name, so the automatic .tcp lookup never runs; cmap_load() only fires for a path given with -ctab. The agil.cfg read by AGiliTy lives in os_dos.c and os_dos16.c, while the build compiles os_glk.c. ref: tads/glk/osmisc.c:69-72,316-334, tads/tads2/cmap.c:290-315, tads/tads2/trd.c:513-517, terps/CMakeLists.txt:111-119\n", "files": [{"description": "Gargoyle Mono regular (Go Mono)", "name": "Gargoyle-Mono.ttf", "required": true, "source_ref": "garglk/draw.cpp:491 (make_entry monor), garglk/draw.cpp:300-350 (make_font, winabort)"}, {"description": "Gargoyle Mono bold (Go Mono)", "name": "Gargoyle-Mono-Bold.ttf", "required": true, "source_ref": "garglk/draw.cpp:492 (make_entry monob), garglk/draw.cpp:300-350 (make_font, winabort)"}, {"description": "Gargoyle Mono italic (Go Mono)", "name": "Gargoyle-Mono-Italic.ttf", "required": true, "source_ref": "garglk/draw.cpp:493 (make_entry monoi), garglk/draw.cpp:300-350 (make_font, winabort)"}, {"description": "Gargoyle Mono bold italic (Go Mono)", "name": "Gargoyle-Mono-Bold-Italic.ttf", "required": true, "source_ref": "garglk/draw.cpp:494 (make_entry monoz), garglk/draw.cpp:300-350 (make_font, winabort)"}, {"description": "Gargoyle Serif regular (Charis SIL)", "name": "Gargoyle-Serif.ttf", "required": true, "source_ref": "garglk/draw.cpp:495 (make_entry propr), garglk/draw.cpp:300-350 (make_font, winabort)"}, {"description": "Gargoyle Serif bold (Charis SIL)", "name": "Gargoyle-Serif-Bold.ttf", "required": true, "source_ref": "garglk/draw.cpp:496 (make_entry propb), garglk/draw.cpp:300-350 (make_font, winabort)"}, {"description": "Gargoyle Serif italic (Charis SIL)", "name": "Gargoyle-Serif-Italic.ttf", "required": true, "source_ref": "garglk/draw.cpp:497 (make_entry propi), garglk/draw.cpp:300-350 (make_font, winabort)"}, {"description": "Gargoyle Serif bold italic (Charis SIL)", "name": "Gargoyle-Serif-Bold-Italic.ttf", "required": true, "source_ref": "garglk/draw.cpp:498 (make_entry propz), garglk/draw.cpp:300-350 (make_font, winabort)"}, {"description": "GNU Unifont, Basic Multilingual Plane glyph fallback", "name": "unifont.otf", "note": "Covers glyphs missing from the text fonts. Loaded directly rather than through the system font mechanism, so it is not installed system-wide.\n", "required": false, "source_ref": "garglk/draw.cpp:352-375 (make_substitution_fonts), garglk/draw.cpp:476-478"}, {"description": "GNU Unifont, planes above the BMP", "name": "unifont_upper.otf", "required": false, "source_ref": "garglk/draw.cpp:352-375 (make_substitution_fonts), garglk/draw.cpp:476-478"}, {"description": "Blue color theme", "name": "Blue.json", "path": "themes/Blue.json", "required": false, "source_ref": "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:524"}, {"description": "Breeze Darker color theme", "name": "Breeze Darker.json", "path": "themes/Breeze Darker.json", "required": false, "source_ref": "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:525"}, {"description": "Lectrote Dark color theme", "name": "Lectrote Dark.json", "path": "themes/Lectrote Dark.json", "required": false, "source_ref": "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:526"}, {"description": "Lectrote Sepia color theme", "name": "Lectrote Sepia.json", "path": "themes/Lectrote Sepia.json", "required": false, "source_ref": "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:527"}, {"description": "Lectrote Slate color theme", "name": "Lectrote Slate.json", "path": "themes/Lectrote Slate.json", "required": false, "source_ref": "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:528"}, {"description": "Pencil color theme", "name": "Pencil.json", "path": "themes/Pencil.json", "required": false, "source_ref": "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:529"}, {"description": "Zoom color theme", "name": "Zoom.json", "path": "themes/Zoom.json", "required": false, "source_ref": "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:530"}, {"description": "Dark color theme", "name": "dark.json", "note": "Also compiled in as the built-in dark theme.", "path": "themes/dark.json", "required": false, "source_ref": "garglk/theme.cpp:268-282, garglk/theme.cpp:304-316, garglk/CMakeLists.txt:80-85, garglk/CMakeLists.txt:531"}, {"description": "Light color theme", "name": "light.json", "note": "Also compiled in as the built-in light theme.", "path": "themes/light.json", "required": false, "source_ref": "garglk/theme.cpp:268-282, garglk/theme.cpp:304-316, garglk/CMakeLists.txt:87-92, garglk/CMakeLists.txt:532"}], "mode": "standalone", "notes": "Interactive fiction player built on the Glk library implementation garglk,\nshipping one interpreter binary per story format. The gargoyle binary reads\nthe first 32 bytes of the file, matches it against a magic-number table,\nfalls back to the extension, and executes the matching interpreter.\nref: launcher.cpp:100-177 (probe, extensions, interpreters), 379-419 (rungame)\n\nFormats and the interpreter each one runs: Adrift 4 (scare), Adrift 5\n(FrankenDrift), AdvSys (advsys), AGT (agility), Alan 2 (alan2), Alan 3\n(alan3), Glulx (git), Hugo (hugo), JACL (jacl), Level 9 (level9), Magnetic\nScrolls (magnetic), Scott Adams Graphic Adventures Plus (plus), Scott Adams\n(scott), TADS 2 and 3 (tadsr), TaylorMade (taylor), Z-machine (bocfel).\nBlorb files are unwrapped first and dispatched on the Exec chunk type.\nref: launcher.cpp:45-60 (interpreter names), 276-328 (runblorb)\n\nAdrift 5 needs the FrankenDrift runner, a .NET build option that is off by\ndefault, including in the official AppImage. Without it the launcher reports\nthat Adrift 5 is unsupported and stops.\nref: CMakeLists.txt:63 (WITH_FRANKENDRIFT), gargoyle-appimage.sh:14,\n     launcher.cpp:160-162,202-206\n\nEvery glyph is drawn through FreeType rather than by the operating system,\nso a font file has to be reachable. The default config asks for the families\n\"Gargoyle Mono\" and \"Gargoyle Serif\"; if fontconfig cannot resolve them, the\ninterpreter loads the shipped TTF files by name from the data directory,\nthen the executable directory, then the working directory, and calls\nwinabort() when all three miss.\nref: garglk.h:661-662 (defaults), garglk.ini:195,198, fontfc.cpp:83-154\n     (fontconfig lookup), draw.cpp:260-287 (path fallbacks), 300-350\n     (make_font, abort), 490-498 (file names)\n\nGargoyle Serif is Charis SIL and Gargoyle Mono is Go Mono, both renamed so\nthey can be installed system-wide without clashing. Font embedding was\ndropped because the OFL and the GPL do not mix, which is why the files are\nloaded from disk.\nref: fonts/README\n\nData directory by platform: /usr/share/gargoyle on Unix,\n<binary>/../share/gargoyle for the AppImage, the install directory on\nWindows, and the bundle Resources directory on macOS. Fonts sit at its root\nand themes in its themes subdirectory. macOS keeps the eight Gargoyle faces\nin Resources/Fonts and Unifont in Resources; the Windows installer also\nregisters the eight faces as system fonts.\nref: sysqt.cpp:898-942, sysmac.mm:986-1003, garglk/CMakeLists.txt:136,144,\n     510-534, gargoyle_osx.sh:120-121,207-209, installer.nsi:89-90,200-207\n\nThemes are read from every *.json in the theme directories, which are the\nQt application data locations plus the executable directory on Windows and\nthe data directory for the AppImage. A parse failure is reported and the\nfile skipped. The light and dark themes are also compiled into the binary,\nso the on-disk copies of those two replace identical entries.\nref: theme.cpp:266-319, sysqt.cpp:920-942, garglk/CMakeLists.txt:80-92\n\ngarglk.ini is not distributed: the default config is compiled in as a string\nand written to the highest-priority user location on demand. Installing a\nsystem copy is an off-by-default build option.\nref: config.cpp:399-449, garglk/CMakeLists.txt:14 (INSTALL_GARGLKINI),\n     garglk/CMakeLists.txt:60-78 (vtk_encode_string)\n\nMIDI in Blorb resources goes through FluidSynth, which needs a SoundFont.\nGargoyle names none: the soundfont list is empty unless the user sets it in\ngarglk.ini or the build hardcodes one, and the fallback is whatever\nFluidSynth reports as its own default.\nref: config.cpp:245-249,787-795, snddecode.cpp:373-395,\n     garglk/CMakeLists.txt:57 (DEFAULT_SOUNDFONT), INSTALL.md:137-141\n\nStory files are content. Formats that carry companion data read it from the\nstory file's own name or directory, so it travels with the game: Level 9\ngraphics as PICTURE.DAT, Magnetic Scrolls graphics and hints as .gfx and\n.hnt, Alan 3 resources as .a3r, TADS resources as .t3r, and the extra disk\nsides the Scott Adams, Plus and TaylorMade interpreters read from C64,\nAtari 8-bit and Apple II images.\nref: level9/Glk/glk.c:6415-6450, magnetic/Glk/glk.c:5758-5855,\n     terps/CMakeLists.txt:69,73,359,404,500 (c64diskimage, unp64)\n", "profiled_date": "2026-08-08", "source": "https://github.com/garglk/garglk", "source_commit": "5717fbf3f9d6f2341773d0cc03f19d96c463af72", "systems": ["adrift", "advsys", "agt", "alan", "glulx", "hugo", "jacl", "level9", "magnetic-scrolls", "scott-adams", "scott-adams-plus", "tads", "taylormade", "zmachine"], "type": "standalone", "upstream": "https://github.com/garglk/garglk"}


id: gba-emu
name: GBA.emu
type: standalone
classification: community_fork
source: https://github.com/Rakashazi/emu-ex-plus-alpha
upstream: https://github.com/visualboyadvance-m/visualboyadvance-m
source_commit: 1c12fac5ce49badaadff2e2f210dcc30b89f4943
profile_json:
{"core_classification": "community_fork", "core_version": "1.5.85", "cores": ["gba-emu", "GBA.emu", "GBA-EMU"], "display_name": "Nintendo - Game Boy Advance (GBA.emu)", "emulator": "GBA.emu", "files": [{"agnostic": true, "description": "Game Boy Advance BIOS", "has_builtin": true, "hle_fallback": true, "name": "gba_bios.bin", "note": "Picked by the user from any path, under any name ending in .bin or .rom. The only test is the length, and a file of another length aborts the load rather than falling back.", "required": false, "size": 16384, "source_ref": "GBA.emu/src/main/Main.cc:190-197 (read and size check), GBA.emu/src/core/gba/gba.cpp:3758-3778 (second check, copy, useBios), GBA.emu/src/main/EmuMenuViews.cc:485-510 (picker and extension filter)", "system": "nintendo-gba", "validation": ["size"]}, {"aliases": ["MotocrossChallenge.7z"], "bundled": true, "category": "game_data", "description": "Bundled homebrew game, listed under Bundled Content", "name": "Motocross Challenge.7z", "note": "Opened from the application bundle by the name the build gives it, the Linux build dropping the space.", "required": false, "source_ref": "GBA.emu/src/main/AppMeta.cc:32-33 (names), EmuFramework/src/gui/BundledGamesView.cc:41,47 (open and load)", "system": "nintendo-gba"}], "mode": "standalone", "notes": "Android and Linux member of the EX Emulator series by Robert Broglia,\npublished as com.explusalpha.GbaEmu (GBA.emu/metadata/conf.mk:2,6,7) and\nreached by ES-DE through its GBA-EMU find rule. VBA-M components are vendored\nunder GBA.emu/src/core (GBA.emu/metadata/conf.mk:8,\nGBA.emu/src/main/AppMeta.cc:26) and driven by the app's own GBASys, video,\nsound and IO layers. The build defines C_CORE, FINAL_VERSION, NO_PNG, NO_LINK\nand NO_DEBUGGER (GBA.emu/CMakeLists.txt:14). Content is read from .gba and .mb\nfiles, a .mb name sending the image to work RAM instead of the ROM area\n(GBA.emu/metadata/conf.mk:5, GBA.emu/src/main/AppMeta.cc:31,\nGBA.emu/src/main/Main.cc:182-183, GBA.emu/src/main/VbamApi.cc:211-246).\n\nThe BIOS is the one file the user supplies and it carries no name of its own.\nThe picker takes any .bin or .rom and stores the chosen URI in biosPath\n(GBA.emu/src/main/EmuMenuViews.cc:485-510, GBA.emu/src/main/system.ccm:88,\nGBA.emu/src/main/options.cc:50,79). loadContent reads the file whole and\nthrows unless it is exactly 16384 bytes (GBA.emu/src/main/Main.cc:190-197),\nthe length CPUInit tests again before copying it and setting useBios\n(GBA.emu/src/core/gba/gba.cpp:3758-3778). Nothing else about the file is\nexamined: CPUIsGBABios, the extension test upstream passes to utilLoad, has no\ncaller here (GBA.emu/src/core/gba/gba.cpp:1655-1675; upstream\nsrc/core/gba/gba.cpp:4975-4986).\n\nWithout a file the app runs on the built-in myROM stub copied into the BIOS\narea (GBA.emu/src/core/gba/gba.cpp:131-305,3776-3778) and on the service call\nimplementations of gbaBios.cpp; useBios decides only whether an SWI enters\nBIOS code or the HLE routine, and which register reset a boot performs\n(GBA.emu/src/core/gba/gba.cpp:2525-2545,4104-4112). Two settings gate the\nread: the per-content Use BIOS tristate defaults to Auto, which follows the\nglobal Default Use BIOS switch, itself off until the user turns it on\n(GBA.emu/src/main/system.ccm:107-108,165-174,\nGBA.emu/src/main/EmuMenuViews.cc:387-395).\n\nThe 473 entry override table is byte-identical to VBA-M's\nsrc/libretro/gba-over.inc, and its bios column is dropped on arrival:\nsetGameSpecificSettings takes save type, save size, RTC and mirroring and\nnothing more (GBA.emu/src/main/gba-over.inc:1,\nGBA.emu/src/main/Main.cc:283-319), so BIOS use never follows from the game.\n\nPer content the app writes and reads files named after the ROM: .sav backup\nmemory created full of 0xFF (GBA.emu/src/main/Main.cc:98-108), .gqs states\n(GBA.emu/src/main/system.ccm:128), and a .clt cheat list it saves itself under\nthe cheats path (GBA.emu/src/main/Cheats.cc:210-235,\nGBA.emu/src/core/gba/gbaCheats.cpp:2738,2755). Under the patches path it\napplies the first of .ips, .ups or .ppf that opens\n(GBA.emu/src/main/Main.cc:147-178). ui.png, gpOverlay.png and the shader\nsources are drawn by the framework from the application bundle\n(EmuFramework/include/emuframework/AssetManager.hh:61-66,\nEmuFramework/src/AssetManager.cc:58-73,\nEmuFramework/src/VideoImageEffect.cc:164-172).\n\nVBA-M's own file entry points reach nothing in this build. CPULoadRom, the\nbattery, state, GSA snapshot and eeprom import functions and the EmulatedSystem\ntable sit inside #if 0 blocks (GBA.emu/src/core/gba/gba.cpp:1301-1614,\n1885-2134,4803-4869); CPUExportEepromFile and cheatsImportGSACodeFile keep no\ncaller (GBA.emu/src/core/gba/gba.cpp:1276,\nGBA.emu/src/core/gba/gbaCheats.cpp:2081); and utilOpenFile, the call all of\nthem open files with, is implemented by no source in the build\n(GBA.emu/src/CMakeLists.txt:6-36, GBA.emu/src/main/VbamApi.cc:279-321). The\ne-Reader reads no dotcode either, the tree carrying its header alone and the\nthree entry points being stubbed (GBA.emu/src/core/gba/internal/gbaEreader.h,\nGBA.emu/src/main/VbamApi.cc:109-113).\n", "profiled_date": "2026-08-11", "source": "https://github.com/Rakashazi/emu-ex-plus-alpha", "source_commit": "1c12fac5ce49badaadff2e2f210dcc30b89f4943", "systems": ["nintendo-gba"], "type": "standalone", "upstream": "https://github.com/visualboyadvance-m/visualboyadvance-m", "upstream_commit": "fbd043dea0920a2356c44e1458a160455403c640"}


id: gbc-emu
name: GBC.emu
type: standalone
classification: community_fork
source: https://github.com/Rakashazi/emu-ex-plus-alpha
upstream: https://github.com/sinamas/gambatte
source_commit: 1c12fac5ce49badaadff2e2f210dcc30b89f4943
profile_json:
{"core_classification": "community_fork", "core_version": "1.5.85", "cores": ["gbc-emu", "GBC.emu", "GBC-EMU"], "display_name": "Nintendo - Game Boy / Color (GBC.emu)", "emulator": "GBC.emu", "files": [], "mode": "standalone", "notes": "Member of the EX Emulator series by Robert Broglia, which targets Android and\nLinux (README.md:3-4,12-13) and keeps iOS and Pandora build shortcuts in the\ntree (GBC.emu/ios.mk, GBC.emu/pandora.mk). Published as\ncom.explusalpha.GbcEmu (GBC.emu/metadata/conf.mk:2,4,6,7) and reached by\nES-DE through its GBC-EMU find rule. Gambatte components are\nvendored under GBC.emu/src/libgambatte (GBC.emu/metadata/conf.mk:8,\nGBC.emu/src/main/AppMeta.cc:26) and driven by the app's own video, audio,\ninput and save layers, with the OSD compiled out\n(GBC.emu/CMakeLists.txt:14-19). Content is read from .gb, .gbc and .dmg files\n(GBC.emu/metadata/conf.mk:5, GBC.emu/src/main/AppMeta.cc:30); an archive is\nopened by the framework, which keeps the first entry passing that same filter\n(EmuFramework/src/EmuSystem.cc:392-419).\n\nThe content image is the only one the app loads. GB::load hands the buffer to\nCartridge::loadROM and starts the machine from the register, memory and\npalette values setInitState writes, the path a reset takes as well\n(GBC.emu/src/libgambatte/src/gambatte.cpp:83-121,\nGBC.emu/src/libgambatte/src/mem/cartridge.cpp:557-669,\nGBC.emu/src/libgambatte/src/initstate.cpp:1151). The vendored API carries no\nboot ROM entry point (GBC.emu/src/libgambatte/include/gambatte.h:38-211) and\nno menu offers a path for one, the file path view adding a cheats directory\nto the stock save and screenshot entries\n(GBC.emu/src/main/EmuMenuViews.cc:187-212,\nEmuFramework/src/gui/FilePathOptionView.cc:159-163). Gambatte's own file\nlayer is left out of the build (GBC.emu/src/CMakeLists.txt:13-39).\n\nDMG content is colored from tables held in the binary: 13 palettes and a\ntitle-keyed list matched against the ROM header\n(GBC.emu/src/main/Main.cc:41-57,155-161, GBC.emu/src/main/Palette.cc:352,359,\n466-474, GBC.emu/src/main/EmuMenuViews.cc:74-96). Report Hardware as GBA\npasses GBA_CGB to the load call (GBC.emu/src/main/Main.cc:150,\nGBC.emu/src/main/system.ccm:113).\n\nPer content the app writes and reads back files named after the ROM: a .sav\nsized to the cartridge SRAM bank and created full of 0xFF\n(GBC.emu/src/main/Main.cc:86-94,105-112, EmuFramework/src/EmuApp.cc:842-849),\na four byte .rtc base time for cartridges carrying a clock\n(GBC.emu/src/main/Main.cc:95-102,113-124), .gqs states\n(GBC.emu/src/main/Main.cc:66-69), a .gbcht cheat list under the cheats path\n(GBC.emu/src/main/Cheats.cc:70-113) and GbcEmu.config\n(GBC.emu/src/main/AppMeta.cc:27). Gambatte's own save file code sits inside\nan #if 0 block and its two entry points are defined as no-ops by the app\n(GBC.emu/src/libgambatte/src/mem/cartridge.cpp:671-715,\nGBC.emu/src/main/Main.cc:308-313).\n\nui.png, gpOverlay.png and the shader sources are drawn from the application\nbundle (EmuFramework/include/emuframework/AssetManager.hh:61-65,\nEmuFramework/src/AssetManager.cc:58-65,\nEmuFramework/src/VideoImageEffect.cc:163-173). The app declares no bundled\ncontent, the framework definition defaulting to an empty span\n(EmuFramework/src/AppMeta.cc:40,\nEmuFramework/include/emuframework/AppMeta.hh:66-68).\n", "profiled_date": "2026-08-11", "source": "https://github.com/Rakashazi/emu-ex-plus-alpha", "source_commit": "1c12fac5ce49badaadff2e2f210dcc30b89f4943", "systems": ["nintendo-gb", "nintendo-gbc"], "type": "standalone", "upstream": "https://github.com/sinamas/gambatte"}


id: gearboy
name: Gearboy
type: libretro
classification: official_port
source: https://github.com/drhelius/Gearboy
upstream: https://github.com/drhelius/Gearboy
source_commit: 5cb627121bc01e9704545d436f8393453bbc479f
profile_json:
{"core_classification": "official_port", "core_version": "3.4.1", "cores": ["gearboy"], "display_name": "Nintendo - Game Boy / Color (Gearboy)", "emulator": "Gearboy", "files": [{"description": "Game Boy DMG bootrom", "hle_fallback": true, "name": "dmg_boot.bin", "required": false, "size": 256, "source_ref": "platforms/libretro/libretro.cpp:828, platforms/libretro/libretro.cpp:359, platforms/libretro/libretro.cpp:359", "validation": ["size"]}, {"description": "Game Boy Color bootrom", "hle_fallback": true, "name": "cgb_boot.bin", "required": false, "size": 2304, "source_ref": "platforms/libretro/libretro.cpp:829, platforms/libretro/libretro.cpp:360, platforms/libretro/libretro.cpp:360", "validation": ["size"]}], "notes": "Gearboy is a Game Boy / Game Boy Color emulator by drhelius (Ignacio Sanchez).\nThe buildbot builds from drhelius/Gearboy (upstream), not from libretro/Gearboy\n(abandoned fork frozen at v2.6.0 from 2018).\nBootrom loading is gated behind core options (disabled by default).\nWithout bootroms, the core HLE-skips the boot animation.\n", "profiled_date": "2026-03-23", "source": "https://github.com/drhelius/Gearboy", "source_commit": "5cb627121bc01e9704545d436f8393453bbc479f", "systems": ["nintendo-gb", "nintendo-gbc"], "type": "libretro", "upstream": "https://github.com/drhelius/Gearboy"}


id: gearcoleco
name: Gearcoleco
type: libretro
classification: official_port
source: https://github.com/drhelius/Gearcoleco
upstream: https://github.com/drhelius/Gearcoleco
source_commit: ca4d13bae91e402d0dce29ed98d6bee2b41b1922
profile_json:
{"core_classification": "official_port", "core_version": "1.0.0", "cores": ["gearcoleco"], "display_name": "Coleco - ColecoVision (Gearcoleco)", "emulator": "Gearcoleco", "files": [{"aliases": ["coleco.rom"], "name": "colecovision.rom", "required": true, "size": 8192, "source_ref": "platforms/libretro/libretro.cpp:446-468, src/Memory.cpp:202-255", "system": "colecovision", "validation": ["size"]}], "notes": "ColecoVision emulator by Ignacio Sanchez (drhelius). Official port\nmaintained by the upstream author. The ColecoVision BIOS ROM is required.\nWithout it, the core renders a static placeholder image (kNoBiosImage from\nno_bios.h) and games do not execute.\n\nThe libretro wrapper (libretro.cpp:293-306) tries \"colecovision.rom\" first,\nthen falls back to \"coleco.rom\". Both resolve to the same LoadBios() call\nin Memory.cpp:228-259 which validates size == 0x2000 (8192 bytes) only.\nNo hash check is performed.\n\nOn reset, BIOS byte at offset 0x69 is patched for region selection:\n0x3C for NTSC, 0x32 for PAL (Memory.cpp:178-181).\n\nSGM (Super Game Module) expanded RAM requires no additional BIOS files.\n", "profiled_date": "2026-03-23", "source": "https://github.com/drhelius/Gearcoleco", "source_commit": "ca4d13bae91e402d0dce29ed98d6bee2b41b1922", "systems": ["colecovision"], "type": "libretro", "upstream": "https://github.com/drhelius/Gearcoleco"}


id: geargrafx
name: Geargrafx
type: libretro
classification: official_port
source: https://github.com/drhelius/Geargrafx
upstream: https://github.com/drhelius/Geargrafx
source_commit: b6a81478b54e27af7076b57fd6a8974a1c3f7137
profile_json:
{"core_classification": "official_port", "core_version": "1.6.0", "cores": ["geargrafx"], "display_name": "NEC - PC Engine / SuperGrafx / CD (Geargrafx)", "emulator": "Geargrafx", "files": [{"description": "Super CD-ROM System Card 3.0", "name": "syscard3.pce", "note": "Default BIOS for CD-ROM games (cdrom_bios Auto or System Card 3). game_db.h recognizes Japan (CRC32 6D9A73EF) and USA (CRC32 2B5B75FE) variants under the same filename.\n", "required": true, "size": 262144, "source_ref": "platforms/libretro/libretro.cpp:581, platforms/libretro/libretro.cpp:599-601, src/media.cpp:339-436, src/defines.h:52, src/game_db.h:50, src/game_db.h:52", "validation": ["size", "crc32"]}, {"description": "CD-ROM System Card 2.0", "name": "syscard2.pce", "note": "cdrom_bios = 'System Card 2'. For older CD-ROM2 titles. game_db.h recognizes three variants: v2.0 Japan (CRC32 52520BC6), v2.1 Japan (CRC32 283B74E0), and USA (CRC32 FF2A5EC3).\n", "required": false, "size": 262144, "source_ref": "platforms/libretro/libretro.cpp:580, platforms/libretro/libretro.cpp:590-591, src/media.cpp:339-436, src/game_db.h:48-49, src/game_db.h:51", "validation": ["size", "crc32"]}, {"description": "CD-ROM System Card 1.0 (Japan)", "name": "syscard1.pce", "note": "cdrom_bios = 'System Card 1'. Very early CD-ROM2 games only. CRC32 3F9F95A4.\n", "required": false, "size": 262144, "source_ref": "platforms/libretro/libretro.cpp:579, platforms/libretro/libretro.cpp:587-588, src/media.cpp:339-436, src/game_db.h:47", "validation": ["size", "crc32"]}, {"description": "Game Express CD Card", "name": "gexpress.pce", "note": "Always loaded alongside the selected System Card BIOS (libretro.cpp:618). Required for Game Express CD-ROM titles. game_db.h recognizes Blue Version (CRC32 51A12D90) and Green Version (CRC32 16AAF05A).\n", "required": false, "size": 32768, "source_ref": "platforms/libretro/libretro.cpp:582, platforms/libretro/libretro.cpp:596-597, platforms/libretro/libretro.cpp:481-482, src/media.cpp:339-436, src/defines.h:53, src/game_db.h:53-54", "validation": ["size", "crc32"]}], "notes": "Geargrafx is a PC Engine / TurboGrafx-16 / SuperGrafx / CD-ROM emulator by\nIgnacio Sanchez (drhelius). HuCard games run without BIOS.\n\nCD-ROM games require a System Card BIOS from the system directory. The core\noption \"geargrafx_cdrom_bios\" selects which card: Auto (default, maps to\nsyscard3.pce), System Card 1, System Card 2, System Card 3, or Game Express.\nload_bios() in libretro.cpp builds \"{system_directory}/{filename}\" and calls\ncore->LoadBios(path, true) for the syscard, then always attempts to load\ngexpress.pce via core->LoadBios(path, false).\n\nLoadBios() in media.cpp reads the file, strips a 512-byte header if present,\ncomputes CRC32, and checks it against k_game_database entries flagged with\nGG_GAMEDB_BIOS_SYSCARD or GG_GAMEDB_BIOS_GAME_EXPRESS. If the CRC32 is not\nfound, the BIOS is marked as \"Unknown\" and invalid, but loading still proceeds.\nSize is checked against expected constants and logged if wrong, but not enforced.\n\nGame Express CD-ROM games are auto-detected via CRC32 lookup in game_db.h\n(GG_GAMEDB_GAME_EXPRESS flag). Arcade Card games are also detected from\ngame_db.h and enable extra 0x30000 bytes of Card RAM for Super CD-ROM mode.\n", "profiled_date": "2026-03-23", "source": "https://github.com/drhelius/Geargrafx", "source_commit": "b6a81478b54e27af7076b57fd6a8974a1c3f7137", "systems": ["nec-pc-engine", "nec-supergrafx", "nec-pc-engine-cd"], "type": "libretro", "upstream": "https://github.com/drhelius/Geargrafx", "valid_bios_crc32": {"game_express": [{"crc32": "51A12D90", "name": "Game Express Card Blue Version (J)"}, {"crc32": "16AAF05A", "name": "Game Express Card Green Version (J)"}], "syscard": [{"crc32": "3F9F95A4", "name": "CD-ROM System Card 1.0 (J)"}, {"crc32": "52520BC6", "name": "CD-ROM System Card 2.0 (J)"}, {"crc32": "283B74E0", "name": "CD-ROM System Card 2.1 (J)"}, {"crc32": "6D9A73EF", "name": "Super CD-ROM System 3.0 (J)"}, {"crc32": "FF2A5EC3", "name": "TurboGrafx CD System Card 2.0 (USA)"}, {"crc32": "2B5B75FE", "name": "TurboGrafx CD Super System 3.0 (USA)"}]}}


