chore: merge main into the p3 fixes

This commit is contained in:
Abdessamad Derraz committed 2026-10-26 21:01:32 +01:00
commit 7b49e3bbed
61 files changed
+12872 -526

No files matched your search

+5 -4
View File
@@ -24,7 +24,8 @@ irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex
# Android (Termux, after pkg install python and termux-setup-storage)
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh
# SD card mounted on a PC: --dest is the BIOS folder on the card
# SD card mounted on a PC: a muOS, KNULLI, ROCKNIX, Onion, spruceOS or MinUI card
# is found by itself. For another card, --dest is its BIOS folder
# (RetroArch on Switch: retroarch/cores/system, on Android: RetroArch/system)
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --platform retroarch --dest /path/to/sdcard/retroarch/cores/system
@@ -32,12 +33,12 @@ curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh |
&([scriptblock]::Create((irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1))) --check
```
The script auto-detects your platform, downloads only missing files, and verifies checksums.
The script opens a full-screen installer, driven with the arrow keys and Enter, or with a controller on a handheld. It finds your setup and its BIOS folder, downloads only the missing files and checks each one. It can also copy the BIOS files from your old SD card.
Every option, and what the installer detects and writes, is on the [installer page](https://abdess.github.io/retrobios/wiki/installer/#passing-options).
## Download BIOS packs
A pack holds everything its platform runs: its own BIOS list plus every file its emulator cores load. Pick your platform, download the ZIP, extract to the BIOS path. Each Download link is a page that keeps its address from one release to the next. The installer above does the same file by file. At a terminal it asks whether to install everything or to choose systems, cores and regions, and `--system`, `--core`, `--region` and `--target` make the same choice without questions. For a bare minimum, build your own pack below.
A pack holds everything its platform runs: its own BIOS list plus every file its emulator cores load. Pick your platform, download the ZIP, extract to the BIOS path. Each Download link is a page that keeps its address from one release to the next. The installer above does the same file by file. At a terminal it offers to install everything or to choose systems, cores and regions, and `--system`, `--core`, `--region` and `--target` make the same choice without questions. For a bare minimum, build your own pack below.
A pack over 2 GB comes in several parts (`Pack.part1of2.zip`, `Pack.part2of2.zip`), and every part is needed. Each part is an ordinary ZIP: extract them all into the same folder.
@@ -199,4 +200,4 @@ The scripts and tooling are released under the [MIT License](LICENSE).
The BIOS and firmware files are not covered by that license: they are third-party system software, preserved and provided for personal backup, archival, and interoperability with emulation software. [NOTICE](NOTICE) sets out their status and how to ask for a file to be removed.
The reasoning, and where it is weakest, is in [the project's legal position](https://abdess.github.io/retrobios/wiki/legal/).
*Auto-generated on 2026-10-24T00:06:47Z*
*Auto-generated on 2026-10-24T01:44:28Z*
File diff suppressed because it is too large. Load diff
+30 -27
View File
@@ -5,7 +5,7 @@ source: "https://github.com/7800-devtools/a7800"
upstream: "https://github.com/mamedev/mame"
profiled_date: "2026-08-08"
source_commit: "7a2afdc1ea08fc331b16b750d8c1f02d4ef62fc8"
upstream_commit: "61a222977fd29f22ce11fbea3f7c290fd7ced091"
upstream_commit: "9d8a6727a206fc822b8b69d67a51e6fd7dbf4d4b"
core_version: "5.2"
display_name: "Atari - 7800 (A7800)"
cores:
@@ -17,46 +17,49 @@ mode: standalone
notes: |
MAME fork by 7800.8bitdev.org built with the Atari 7800 driver alone. The
released binary carries eight machines, all declaring a7800 as parent: NTSC
and PAL at three palette temperatures, plus a developer mode showing DMA
usage per scanline (a7800.cpp:1837-1844). The temperature variants were
renamed after 5.2, from a7800u1/a7800u2/a7800pu1/a7800pu2 to
and PAL at three palette temperatures, plus a developer mode showing DMA usage
per scanline (src/mame/drivers/a7800.cpp:1837-1844). The temperature variants
were renamed after 5.2, from a7800u1/a7800u2/a7800pu1/a7800pu2 to
a7800a1/a7800a2/a7800pa1/a7800pa2. ROM definitions are identical in both.
Console BIOS is optional. Every entry carries ROM_OPTIONAL, so absence
yields a warning rather than the fatal "Required files are missing" exit
(romload.cpp:373-379, 488-493). The region is ERASEFF, and machine_reset
reads the reset vector: when 0xfffe and 0xffff both hold 0xff, m_ctrl_reg is
set to 4 and the console starts the cartridge (a7800.cpp:1529-1532). No code
substitutes for the BIOS when it is absent.
Console BIOS is optional. Every entry carries ROM_OPTIONAL, so absence yields
a warning rather than the fatal "Required files are missing" exit
(src/emu/romload.cpp:373-379, 488-493). The region is ERASEFF, and
machine_reset reads the reset vector: when 0xfffe and 0xffff both hold 0xff,
m_ctrl_reg is set to 4 and the console starts the cartridge
(src/mame/drivers/a7800.cpp:1529-1532). No code substitutes for the BIOS when
it is absent.
Lookup runs under rompath, which the shipped a7800.ini sets to "bios;roms".
open_rom_file walks the parent chain (romload.cpp:567-572), so all eight
machines fall back to the a7800 set, and the manual documents one merged
open_rom_file walks the parent chain (src/emu/romload.cpp:567-572), so all
eight machines fall back to the a7800 set, and the manual documents one merged
archive at bios/a7800.zip. Inside an archive the search tries name with CRC,
then CRC alone, then name (fileio.cpp:692-701), so a ROM whose filename
differs from the driver still resolves. Loose files under rompath/a7800/
match by name only. Loaded ROMs are checked for exact length and against the
declared CRC32 and SHA1, and a mismatch is a warning (romload.cpp:417-455).
then CRC alone, then name (src/emu/fileio.cpp:692-701), so a ROM whose
filename differs from the driver still resolves. Loose files under
rompath/a7800/ match by name only. Loaded ROMs are checked for exact length
and against the declared CRC32 and SHA1, and a mismatch is a warning
(src/emu/romload.cpp:417-455).
The PAL BIOS keeps the filename 7800pal.rom, which mainline MAME has since
renamed to c300558-001b.u7 for the same dump. Mainline also marks the 7800
ROMs mandatory.
Software list a7800 (hash/a7800.xml), attached by every machine
(a7800.cpp:1577, 1608, 1654, 1684), holds add-on hardware rather than games:
the High Score Cartridge and the XM Expansion Module, both backed by the
same 4KB highscre.bin served as the pass-through cart ROM
(hiscore.cpp:49-52, xm.cpp:177-183). Software list ROMs resolve as
a7800/<setname> then <setname> under rompath (romload.cpp:628-650) and carry
no optional flag, so selecting either configuration without the image exits
with EMU_ERR_MISSING_FILES.
(src/mame/drivers/a7800.cpp:1577, 1608, 1654, 1684), holds add-on hardware
rather than games: the High Score Cartridge and the XM Expansion Module, both
backed by the same 4KB highscre.bin served as the pass-through cart ROM
(src/devices/bus/a7800/hiscore.cpp:49-52,
src/devices/bus/a7800/xm.cpp:177-183). Software list ROMs resolve as
a7800/<setname> then <setname> under rompath (src/emu/romload.cpp:628-650) and
carry no optional flag, so selecting either configuration without the image
exits with EMU_ERR_MISSING_FILES.
The release ships the binary, a7800.ini, the manual, hash/a7800.xml, cfg
defaults, bgfx shaders and artwork masks, and no roms, samples, plugins or
language directory. The driver adds no samples device and no external
layout. Crosshair bitmaps fall back to a compiled-in shape
(crsshair.cpp:180-214) and the UI font to compiled-in data
(rendfont.cpp:587-600).
language directory. The driver adds no samples device and no external layout.
Crosshair bitmaps fall back to a compiled-in shape
(src/emu/crsshair.cpp:180-214) and the UI font to compiled-in data
(src/emu/rendfont.cpp:587-600).
files:
- name: a7800.zip
+1 -1
View File
@@ -4,7 +4,7 @@ core_classification: enhanced_fork
source: "https://github.com/amadvance/advancemame"
upstream: "https://www.mamedev.org"
profiled_date: "2026-10-23"
source_commit: "ebe8322f87f699f0426757f542720f7b30e305cd"
source_commit: "dcf44ccedfefd91e42119c548cb4c0120a8d15df"
core_version: "5.0"
mame_version: "0.106"
display_name: "Arcade (AdvanceMAME)"
+1 -1
View File
@@ -6,7 +6,7 @@ source: "https://github.com/Trixarian/AetherSX2"
upstream: "https://github.com/PCSX2/pcsx2"
profiled_date: "2026-08-11"
source_commit: "1d1f795dfc70e38da67724c7298779260f513889"
upstream_commit: "7fe1e5525a2c219c119aa9586cee4ceae2f54ce1"
upstream_commit: "5675313c6db3390fdc38f75a658ddfc68498103e"
core_version: "1.5-3939"
display_name: "Sony - PlayStation 2 (AetherSX2)"
cores:
+215 -214
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -4,7 +4,7 @@ core_classification: community_fork
source: "https://github.com/StillJC/ArcadeDuck"
upstream: "https://github.com/stenzek/duckstation"
source_commit: "26caf9cd27915a331fa32dc174489383b308ecad"
upstream_commit: "938c6d2a03e523d0e4275aa753f289a987bcb016"
upstream_commit: "fbf93c3ae9668a1ccaec28630f5ad9cc9627cda6"
profiled_date: "2026-10-20"
core_version: "latest (26caf9c)"
display_name: "Arcade - Sony ZN-1, Namco System 11, Konami GV/GQ (ArcadeDuck)"
+50 -42
View File
@@ -5,7 +5,7 @@ source: "https://github.com/Rakashazi/emu-ex-plus-alpha"
upstream: "https://github.com/VICE-Team/svn-mirror"
profiled_date: "2026-08-11"
source_commit: "1c12fac5ce49badaadff2e2f210dcc30b89f4943"
upstream_commit: "283fa5e7df83bdf524187f9dac41ad2a66f1d315"
upstream_commit: "2e2a43e0c4803203446a0ea41980bd86f61d2e1f"
core_version: "1.5.85"
display_name: "Commodore - C64 (C64.emu)"
mode: standalone
@@ -39,21 +39,23 @@ notes: |
Ten machines are built as separate shared libraries
(C64.emu/src/CMakeLists.txt:535-683): c64, c64sc, scpu64, c64dtv, c128, vic,
pet, plus4, cbm2, cbm5x0. Each opens its files under the VICE machine
directory named by its own machine_name (c64/c64.c:179, c128/c128.c:240,
vic20/vic20.c:144, plus4/plus4.c:131, pet/pet.c:128, cbm2/cbm2.c:131,
cbm2/cbm5x0.c:122, scpu64/scpu64.c:157, c64dtv/c64dtv.c:129), so c64 and c64sc
share C64/ and cbm2 and cbm5x0 share CBM-II/. Drive ROMs live in DRIVES/
(drive/driverom.c:104,174).
directory named by its own machine_name (C64.emu/src/vice/c64/c64.c:179,
C64.emu/src/vice/c128/c128.c:240, C64.emu/src/vice/vic20/vic20.c:144,
C64.emu/src/vice/plus4/plus4.c:131, C64.emu/src/vice/pet/pet.c:128,
C64.emu/src/vice/cbm2/cbm2.c:131, C64.emu/src/vice/cbm2/cbm5x0.c:122,
C64.emu/src/vice/scpu64/scpu64.c:157, C64.emu/src/vice/c64dtv/c64dtv.c:129),
so c64 and c64sc share C64/ and cbm2 and cbm5x0 share CBM-II/. Drive ROMs live
in DRIVES/ (C64.emu/src/vice/drive/driverom.c:104,174).
Nothing is embedded. The app implements sysfile_open, sysfile_locate and
sysfile_load itself (C64.emu/src/main/sysfile.cc:218-355) over a user-set
path that may be a directory or a ZIP archive, and that path is rejected
unless it carries a DRIVES folder (C64.emu/src/main/sysfile.cc:140-151). On
Linux two fallbacks follow it, ~/.local/share/C64.emu and
/usr/share/games/vice (C64.emu/src/main/Main.cc:91-95). A last fallback reads
the application bundle (C64.emu/src/main/sysfile.cc:107-119,252-259), which
supplies only the eight keymaps below (C64.emu/res/android/assets symlinks
C64.emu/res/vice, and each machine directory there holds one file).
sysfile_load itself (C64.emu/src/main/sysfile.cc:218-355) over a user-set path
that may be a directory or a ZIP archive, and that path is rejected unless it
carries a DRIVES folder (C64.emu/src/main/sysfile.cc:140-151). On Linux two
fallbacks follow it, ~/.local/share/C64.emu and /usr/share/games/vice
(C64.emu/src/main/Main.cc:91-95). A last fallback reads the application bundle
(C64.emu/src/main/sysfile.cc:107-119,252-259), which supplies only the eight
keymaps below (C64.emu/res/android/assets symlinks C64.emu/res/vice, and each
machine directory there holds one file).
Missing ROMs stop the app rather than degrading it: initC64 throws when the
path is unset, and again with the name of the first file that failed once
@@ -62,63 +64,69 @@ notes: |
All fourteen C64 models are offered (C64.emu/src/main/VicePlugin.cc:66-79), so
every kernal revision and both chargens are reachable. The MAX Machine model
loads nothing: c64rom.c:222-224 matches the kernal-none.bin name and zeroes
the ROM area instead of calling sysfile_load.
loads nothing: C64.emu/src/vice/c64/c64rom.c:222-224 matches the
kernal-none.bin name and zeroes the ROM area instead of calling sysfile_load.
C128 is the one machine that needs its whole language set present. mem_load
runs c128rom_check_res_file over both BASIC halves, all eight kernal
resources, all eight chargen resources, Kernal64 and Basic64, and returns -1
if any one of them cannot be located (c128/c128rom.c:762-806). Only the
selected variant is then read. MachineType stays at C128_MACHINE_INT
(c128/c128-resources.c:684) because no reachable code writes it, so the
Danish, Norwegian and Swedish kernal64 variants of c128rom.h:111-113 are never
named.
if any one of them cannot be located
(C64.emu/src/vice/c128/c128rom.c:762-806). Only the selected variant is then
read. MachineType stays at C128_MACHINE_INT
(C64.emu/src/vice/c128/c128-resources.c:684) because no reachable code writes
it, so the Danish, Norwegian and Swedish kernal64 variants of
C64.emu/src/vice/c128/c128rom.h:111-113 are never named.
Drive ROMs are optional in the strict sense: iec_drive_rom_load,
ieee_drive_rom_load, tcbm_drive_rom_load and iec128dcr_drive_rom_load return
void, and driverom_load logs the miss and disables the units of that type
(drive/driverom.c:186-196,131-144). Default unit 8 is a 1541-II on C64, SCPU64
and DTV (c64/c64drive.c:43), a 1571CR on C128 (c128/c128drive.c:56), a 1540 on
VIC-20 (vic20/vic20drive.c:44), a 1551 on Plus/4 (plus4/plus4drive.c:46) and a
2031 on PET and CBM-II (pet/petdrive.c:42, cbm2/cbm2drive.c:42).
(C64.emu/src/vice/drive/driverom.c:186-196,131-144). Default unit 8 is a
1541-II on C64, SCPU64 and DTV (C64.emu/src/vice/c64/c64drive.c:43), a 1571CR
on C128 (C64.emu/src/vice/c128/c128drive.c:56), a 1540 on VIC-20
(C64.emu/src/vice/vic20/vic20drive.c:44), a 1551 on Plus/4
(C64.emu/src/vice/plus4/plus4drive.c:46) and a 2031 on PET and CBM-II
(C64.emu/src/vice/pet/petdrive.c:42, C64.emu/src/vice/cbm2/cbm2drive.c:42).
Sizes come from the min and max arguments of each sysfile_load call. The
loader accepts a file two bytes over its maximum by dropping the leading load
address, pads a short file to the top of the buffer, and truncates anything
longer with a warning (C64.emu/src/main/sysfile.cc:30-71).
SHA-1s are those hardcoded in c64/c64rom.h:88-96. c64rom.c:120-131 hashes the
loaded kernal and matches that table to identify the revision, and an unmatched
image is reported and accepted. VICE distributes C128/kernal64-901227-03.bin
and C128/basic64-901226-01.bin with the same bytes as the C64 Rev 3 kernal and
SHA-1s are those hardcoded in C64.emu/src/vice/c64/c64rom.h:88-96.
C64.emu/src/vice/c64/c64rom.c:120-131 hashes the loaded kernal and matches
that table to identify the revision, and an unmatched image is reported and
accepted. VICE distributes C128/kernal64-901227-03.bin and
C128/basic64-901226-01.bin with the same bytes as the C64 Rev 3 kernal and
BASIC, so those two entries carry the same hashes.
Palettes are read only after the user enables an external palette: the
${CHIP}ExternalPalette resource is registered with factory value 0 and
${CHIP}PaletteFile with the chip's default name
(video/video-resources.c:393-398,916-923). The app lists every .vpl in the
machine directory and sets both resources
(C64.emu/src/vice/video/video-resources.c:393-398,916-923). The app lists
every .vpl in the machine directory and sets both resources
(C64.emu/src/main/EmuMenuViews.cc:186,1058,1074-1083,
C64.emu/src/main/options.cc:38-51). Only the code-named default of each chip
is listed here, and palette_load appends the .vpl extension itself
(palette.c:228-248).
(C64.emu/src/vice/palette.c:228-248).
Keymaps are named from KBD_PORT_PREFIX, which the app sets to gtk3
(C64.emu/src/config/kbd.h:7). keymap_init runs inside init_main and the lookup
falls back to <prefix>_sym.vkm (keymap.c:1249-1270,1386-1392), the file the
app bundles for each machine directory. Host-layout and keyboard-type variants
extend the name and are not enumerated here.
falls back to <prefix>_sym.vkm
(C64.emu/src/vice/keymap.c:1249-1270,1386-1392), the file the app bundles for
each machine directory. Host-layout and keyboard-type variants extend the name
and are not enumerated here.
Four subsystems are compiled but cannot reach their files. Printer ROMs and
the PRINTER/ palettes load from drv_mps803_open and drv_nl10_open, which
require Printer4, Printer5 or Printer6 to leave PRINTER_DEVICE_NONE
(printerdrv/interface-serial.c:145-149). The app writes no printer resource,
and neither main.c nor initcmdline.c is compiled, so the resource file and the
command line that would set one do not exist. Romset .vrs files, the monitor
command file and joystick .vjm maps have no default name at all
(joyport/joystick.c:2212) and no menu that supplies one. vice/arch is outside
the build, so the CBM font, icon and hotkey lookups of archdep_cbmfont.c,
archdep_icon_path.c and hotkeys/parser.c are never linked.
(C64.emu/src/vice/printerdrv/interface-serial.c:145-149). The app writes no
printer resource, and neither main.c nor initcmdline.c is compiled, so the
resource file and the command line that would set one do not exist. Romset
.vrs files, the monitor command file and joystick .vjm maps have no default
name at all (C64.emu/src/vice/joyport/joystick.c:2212) and no menu that
supplies one. vice/arch is outside the build, so the CBM font, icon and hotkey
lookups of archdep_cbmfont.c, archdep_icon_path.c and hotkeys/parser.c are
never linked.
files:
# ---------------------------------------------------------------- C64/
+1 -1
View File
@@ -4,7 +4,7 @@ core_classification: game_engine
source: "https://github.com/ArnoAnsems/CatacombGL"
upstream: "https://github.com/ArnoAnsems/CatacombGL"
profiled_date: "2026-10-04"
source_commit: "dd7d337fff89c32285b096190f6419828860bfe0"
source_commit: "d11ba549382278cbc67ba6171faf8af338e29f77"
core_version: "0.5.7 Beta"
display_name: "Catacomb 3-D (CatacombGL)"
cores: [catacombgl]
+14 -14
View File
@@ -6,7 +6,7 @@ source_mirror: "https://github.com/WizzardSK/cemu-libretro"
upstream: "https://github.com/cemu-project/Cemu"
logo: "https://raw.githubusercontent.com/cemu-project/Cemu/main/dist/linux/info.cemu.Cemu.png"
profiled_date: "2026-10-23"
source_commit: "a4462ccc4a010914b9ab929f0643901fa9d85cb9"
source_commit: "c9ff2361c7e236bbc66a17f02047fa41936da34d"
upstream_commit: "29f2f1fae4631e2317977debd9eacd55cc28dd7d"
core_version: "2.6"
display_name: "Nintendo - Wii U (Cemu)"
@@ -21,7 +21,7 @@ data_directories:
- ref: cemu-gameprofiles
destination: "Cemu/gameProfiles/default"
mode: libretro
source_ref: "source src/Cafe/GameProfile/GameProfile.cpp:181-195, source src/libretro/CemuLibretro.cpp:2155-2163"
source_ref: "source src/Cafe/GameProfile/GameProfile.cpp:181-195, source src/libretro/CemuLibretro.cpp:2160-2168"
- ref: cemu-graphic-packs
installed_on: [retrobat]
destination: "Cemu/graphicPacks/downloadedGraphicPacks"
@@ -72,9 +72,9 @@ notes: |
directory for the MLC (load_from), and standalone_path: is relative to the
Cemu user data directory, which holds the MLC by default (load_from
data_dir). The core reports library_name "Cemu"
(src/libretro/CemuLibretro.cpp:4154).
ref: src/libretro/CemuLibretro.cpp:2103-2163,
src/libretro/CemuLibretro.cpp:4064-4072,
(src/libretro/CemuLibretro.cpp:4164).
ref: src/libretro/CemuLibretro.cpp:2108-2168,
src/libretro/CemuLibretro.cpp:4074-4082,
src/gui/wxgui/CemuApp.cpp:90-123, src/gui/wxgui/CemuApp.cpp:127-171,
src/config/ActiveSettings.cpp:295-321
@@ -90,7 +90,7 @@ notes: |
directories are not encrypted with a disc key and load without the file.
ref: src/Cafe/Filesystem/FST/KeyCache.cpp:65-137,
src/Cafe/Filesystem/FST/FST.cpp:192-246,
src/libretro/CemuLibretro.cpp:6072-6120
src/libretro/CemuLibretro.cpp:6082-6130
Shared fonts. LoadSharedData runs at every title start and looks for the
four fonts of title 0005001b-10042400 in the MLC first, then under
@@ -159,9 +159,9 @@ notes: |
src/gui/wxgui/DownloadGraphicPacksWindow.cpp:234-238,
src/libretro/embed_graphic_packs.cmake:8-54,
src/libretro/LibretroGraphicPacks.cpp:30-103,
src/libretro/CemuLibretro.cpp:6333,
src/libretro/CemuLibretro.cpp:3529-3570,
src/libretro/CemuLibretro.cpp:3883-3893,
src/libretro/CemuLibretro.cpp:6343,
src/libretro/CemuLibretro.cpp:3539-3580,
src/libretro/CemuLibretro.cpp:3893-3903,
src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:21-31,
src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:124-125,
src/Cafe/OS/libs/nn_olv/nn_olv_InitializeTypes.cpp:242-248
@@ -179,9 +179,9 @@ notes: |
it when a title starts.
ref: src/main.cpp:117-141, src/config/NetworkSettings.cpp:10-14,
src/gui/wxgui/CemuApp.cpp:580-606,
src/libretro/CemuLibretro.cpp:2065-2101,
src/libretro/CemuLibretro.cpp:4089-4095,
src/libretro/CemuLibretro.cpp:4887-4899,
src/libretro/CemuLibretro.cpp:2070-2106,
src/libretro/CemuLibretro.cpp:4099-4105,
src/libretro/CemuLibretro.cpp:4897-4909,
src/Cafe/HW/Latte/Core/LatteShaderCache.cpp:232
files:
@@ -195,7 +195,7 @@ files:
or .wux image, with a 16-byte <image>.key beside the image as the last
resort. Created with a template when absent. The libretro core
refuses to load an encrypted image whose key is not in it.
source_ref: "source src/Cafe/Filesystem/FST/KeyCache.cpp:65-137, upstream src/Cafe/Filesystem/FST/FST.cpp:192-246, source src/libretro/CemuLibretro.cpp:6072-6120"
source_ref: "source src/Cafe/Filesystem/FST/KeyCache.cpp:65-137, upstream src/Cafe/Filesystem/FST/FST.cpp:192-246, source src/libretro/CemuLibretro.cpp:6082-6130"
- name: otp.bin
path: Cemu/otp.bin
@@ -881,7 +881,7 @@ firmware_titles:
content: ["language.txt", "country.txt"]
required: false
note: "Written when absent, by the wx frontend on first run and by the libretro core at init."
source_ref: "upstream src/gui/wxgui/CemuApp.cpp:580-606, source src/libretro/CemuLibretro.cpp:2065-2101"
source_ref: "upstream src/gui/wxgui/CemuApp.cpp:580-606, source src/libretro/CemuLibretro.cpp:2070-2106"
mlc_structure:
- "mlc01/sys/title/0005001b/10042400/content/"
+1 -1
View File
@@ -5,7 +5,7 @@ source: "https://github.com/libretro/desmume"
upstream: "https://github.com/TASEmulators/desmume"
profiled_date: "2026-03-23"
source_commit: "95b4d798731caa809125b6c3c11d17cc332ff6ef"
upstream_commit: "1275dc64f5d1f5ef18dc1bc1fa9e012024b6df1a"
upstream_commit: "e06d11f6df8c2e35d570412c45f5a63e5e7c031d"
core_version: "SVN"
display_name: "Nintendo - DS (DeSmuME)"
cores: [desmume]
+1 -1
View File
@@ -5,7 +5,7 @@ source: "https://github.com/libretro/desmume2015"
upstream: "https://github.com/TASEmulators/desmume"
profiled_date: "2026-03-23"
source_commit: "422b688009ccb9f2917c086a8fe79c8cecb030ae"
upstream_commit: "1275dc64f5d1f5ef18dc1bc1fa9e012024b6df1a"
upstream_commit: "0536aa6262b4728b78dc457dca2ec2019c50f5d4"
core_version: "SVN (2015 snapshot)"
display_name: "Nintendo - DS (DeSmuME 2015)"
cores: [desmume2015, desmume_2015]
+1 -1
View File
@@ -5,7 +5,7 @@ source: "https://github.com/libretro/dolphin"
upstream: "https://github.com/dolphin-emu/dolphin"
logo: "https://raw.githubusercontent.com/dolphin-emu/dolphin/master/Data/dolphin-emu.svg"
profiled_date: "2026-03-23"
source_commit: "eb68258ab5559a5c6dc8011bf9a746a0d1bab48e"
source_commit: "3aac3f052f733f8df2f1616843a4d2e14002ed11"
upstream_commit: "e1d35f666cc35f6ead55d32ea2679df44d04da72"
core_version: "Git"
display_name: "Nintendo - GameCube / Wii (Dolphin)"
+8 -8
View File
@@ -7,8 +7,8 @@ version_source:
url: "https://amigan.1emu.net/releases/"
pattern: 'Download DroidArcadia ([0-9.]+) for Android'
author: "James Jacobs (Amigan Software)"
profiled_date: "2026-10-20"
core_version: "4.74"
profiled_date: "2026-10-24"
core_version: "4.75"
display_name: "Emerson Arcadia 2001 / Interton VC 4000 (DroidArcadia)"
cores:
- droidarcadia
@@ -26,8 +26,8 @@ notes: |
by the manifest under MIME type application/octet-stream or application/zip,
a zip yielding its first member only, and the read stops at 32768 bytes. This
reading is taken from the author's own source archive DroidArcadia-src.rar
4.74, md5 1407628c01a2fe87e79e027dce2097f1, and confirmed against the
published DroidArcadia.apk, md5 ffa7a749c1c776c4b01ed145f2428531, signed
4.75, md5 831a22d93781e22b07e0995a0688d0a1, and confirmed against the
published DroidArcadia.apk, md5 9f6047977a7b2d0f91e51f886032f236, signed
by the Amigan Software key with certificate sha256
B4904B06F8BB0832BB90472F1655E776C4A859CEB72753C51CDDB5DD360086A5.
ref: app/src/main/cpp/da.h:3-5, app/src/main/AndroidManifest.xml:21-37,
@@ -38,7 +38,7 @@ notes: |
Elektor TV Games Computer basic and expanded, Emerson Arcadia 2001 types G
(Emerson), H (Tele-Fever) and I (Palladium), and the coin-ops Astro Wars,
Galaxia, Laser Battle and Lazarian (Zaccaria) with Malzak 1 and 2 (Kitronix).
ref: android.c:245-261, da.h:453-475
ref: android.c:245-261, da.h:455-477
Every ROM those machines run is a const array compiled into
libdroidarcadia.so and copied into memory when the machine is set up:
@@ -48,7 +48,7 @@ notes: |
astrowars_game, lb_game and lz_game for the Zaccaria coin-ops, m1_bios and
m2_bios for the Malzak pair. All ten arrays are present byte for byte in the
arm64 library of the published apk.
ref: android.c:874-885, arcadia.h:279 with arcadia.c:426, interton.h:1 with
ref: android.c:890-901, arcadia.h:279 with arcadia.c:426, interton.h:1 with
interton.c:36, elektor.h:1,130 with elektor.c:95-103,
zaccaria.h:1,644,1599,3653 with zaccaria.c:243,325,423,436,
malzak.h:1,558 with malzak.c:363,373
@@ -61,8 +61,8 @@ notes: |
argument left NULL, so the file reader of the bundled rcheevos is never
reached. A coin-op is stepped to through the machine button rather than
loaded, and a raw binary aimed at Zaccaria or Malzak hardware is refused.
ref: android.c:1161-1178, android.c:2450-2476, android.c:2366-2380,
android.c:1294-1297, android.c:5560-5599, elektor.c:95-103,
ref: android.c:1177-1194, android.c:2466-2492, android.c:2382-2396,
android.c:1310-1313, android.c:5586-5625, elektor.c:95-103,
OptionsActivity.java:457-467
exclusion_note: >
+1 -1
View File
@@ -5,7 +5,7 @@ source: "https://github.com/stenzek/duckstation"
upstream: "https://github.com/stenzek/duckstation"
logo: "https://raw.githubusercontent.com/stenzek/duckstation/master/data/resources/images/duck.png"
profiled_date: "2026-03-23"
source_commit: "938c6d2a03e523d0e4275aa753f289a987bcb016"
source_commit: "fbf93c3ae9668a1ccaec28630f5ad9cc9627cda6"
core_version: "v0.1-12070"
display_name: "Sony - PlayStation (DuckStation)"
cores: [duckstation, "Duckstation", "duckstation-sa"]
+4 -4
View File
@@ -7,7 +7,7 @@ source:
upstream: "https://github.com/EKA2L1/EKA2L1"
profiled_date: "2026-09-17"
source_commit:
standalone: "89ea682451ae13f53372c994ae56659bc9534503"
standalone: "cd7041f58192899d7f2c3c29444487b0d6fefe0b"
libretro: "e39ccac46e631be7470b4f420fb8eebed9c24eca"
upstream_commit:
libretro: "11f5b6cd141c0884a130ee45743f1f5e17bb1783"
@@ -22,11 +22,11 @@ systems:
data_root:
android:
path: "Android/data/com.github.eka2l1/files"
source_ref: "src/emu/android/app/src/main/java/com/github/eka2l1/emu/Emulator.java:134-149, 196, src/emu/android/app/src/main/cpp/src/native-lib.cpp:61-72"
source_ref: "src/emu/android/app/src/main/java/com/github/eka2l1/emu/Emulator.java:135-150, 197, src/emu/android/app/src/main/cpp/src/native-lib.cpp:61-72"
note: "EKA2L1 at the root of shared storage when the app runs with legacy external storage. A working folder chosen in the settings replaces it"
ios:
path: "Documents/data"
source_ref: "src/emu/ios/App/EKA2L1Bridge.swift:7-9, src/emu/ios/Bridge/IosEmulator.mm:936-938, 968, 983"
source_ref: "src/emu/ios/App/EKA2L1Bridge.swift:7-9, src/emu/ios/Bridge/IosEmulator.mm:939-941, 971, 986"
note: "the data-storage folder is this folder itself, so roms and drives sit directly in it. The shipped patch and resources folders are read from the app bundle"
windows:
path: "<folder of eka2l1_qt.exe>"
@@ -101,7 +101,7 @@ notes: |
started from.
ref: src/emu/qt/src/device_install_dialog.cpp:162-172,
src/emu/qt/src/device_install_dialog.cpp:181-185,
src/emu/qt/src/settings_dialog.cpp:534, src/emu/system/src/epoc.cpp:396-462,
src/emu/qt/src/settings_dialog.cpp:535, src/emu/system/src/epoc.cpp:396-462,
src/emu/qt/src/device_install_dialog.cpp:138,
src/emu/system/src/devices.cpp:378-385, src/emu/system/src/epoc.cpp:877-884,
src/emu/qt/src/main.cpp:106-126
+1 -1
View File
@@ -6,7 +6,7 @@ upstream: "https://github.com/finalburnneo/FBNeo"
logo: "https://raw.githubusercontent.com/finalburnneo/FBNeo/master/projectfiles/xcode/Emulator/Assets.xcassets/AppIcon.appiconset/icon_512.png"
profiled_date: "2026-10-23"
source_commit: "2b0c1c0679df115cada7df9199ea2762222e58fd"
upstream_commit: "c89fdfe3abe118dc4a006f3d887094f0d83360f0"
upstream_commit: "82b31ca6b7dfb6d9fa1ec23ac96c878cfcb613e2"
core_version: "v1.0.0.2"
display_name: "Arcade (FinalBurn Neo)"
cores:
+1 -1
View File
@@ -5,7 +5,7 @@ source: "https://github.com/libretro/FBNeo"
upstream: "https://github.com/finalburnneo/FBNeo"
profiled_date: "2026-03-23"
source_commit: "2b0c1c0679df115cada7df9199ea2762222e58fd"
upstream_commit: "c89fdfe3abe118dc4a006f3d887094f0d83360f0"
upstream_commit: "82b31ca6b7dfb6d9fa1ec23ac96c878cfcb613e2"
core_version: "v1.0.0.2"
display_name: "Arcade (FinalBurn Neo) (CPS-1 / CPS-2)"
cores:
+1 -1
View File
@@ -5,7 +5,7 @@ source: "https://github.com/libretro/FBNeo"
upstream: "https://github.com/finalburnneo/FBNeo"
profiled_date: "2026-10-23"
source_commit: "2b0c1c0679df115cada7df9199ea2762222e58fd"
upstream_commit: "c89fdfe3abe118dc4a006f3d887094f0d83360f0"
upstream_commit: "82b31ca6b7dfb6d9fa1ec23ac96c878cfcb613e2"
core_version: "v1.0.0.2"
display_name: "Arcade (FinalBurn Neo) (Neo-Geo)"
cores:
+1 -1
View File
@@ -5,7 +5,7 @@ source: "https://github.com/Rakashazi/emu-ex-plus-alpha"
upstream: "https://github.com/visualboyadvance-m/visualboyadvance-m"
profiled_date: "2026-08-11"
source_commit: "1c12fac5ce49badaadff2e2f210dcc30b89f4943"
upstream_commit: "8124d84a655e5261bee5eeb9f43c18630ec58a61"
upstream_commit: "b0f418b0e9305315c941f93765aa58ed1928a45c"
core_version: "1.5.85"
display_name: "Nintendo - Game Boy Advance (GBA.emu)"
mode: standalone
+1 -1
View File
@@ -4,7 +4,7 @@ core_classification: community_fork
source: "https://github.com/libretro/Genesis-Plus-GX"
upstream: "https://github.com/ekeeke/Genesis-Plus-GX"
profiled_date: "2026-03-23"
source_commit: "aa74d79634cd230f65cce4180e92688e53883d2f"
source_commit: "60bee4c724859710ce05672239e5b601ad01382e"
upstream_commit: "49c584764893b0505ac7f768a754f97330fa4392"
core_version: "v1.7.4"
display_name: "Sega - MS/GG/MD/CD (Genesis Plus GX)"
+1 -1
View File
@@ -4,7 +4,7 @@ core_classification: other
source: "https://github.com/JetSetIlly/Gopher2600"
upstream: "https://github.com/JetSetIlly/Gopher2600"
profiled_date: "2026-08-08"
source_commit: "7d59ca0ec7555d0e81ef525ecd2486ba4bb31e9e"
source_commit: "9af96801db6004a012f811bfe3bdf0d93b3e31bd"
core_version: "v0.57.0"
display_name: "Atari - 2600 (Gopher2600)"
cores:
+18 -18
View File
@@ -4,7 +4,7 @@ core_classification: game_engine
source: "https://github.com/deathkiller/jazz2-native"
upstream: "https://github.com/deathkiller/jazz2-native"
profiled_date: "2026-10-04"
source_commit: "36a1414d691142443ef7ad9078995e2be4755f11"
source_commit: "893c5200d75da7e9b5f8e9a932da4e744ae63ee3"
core_version: "3.9.0"
display_name: "Jazz Jackrabbit 2 (Jazz² Resurrection)"
cores: [jazz2]
@@ -43,7 +43,7 @@ notes: |
the levels name. Music and cinematics are read from Source/ as they
are.
ref: Sources/Jazz2/ContentResolver.cpp:324-353 (GetSourcePath),
Sources/Main.cpp:2237-2301 (RefreshCache),
Sources/Main.cpp:2241-2305 (RefreshCache),
Sources/Jazz2/Compatibility/AssetConverter.cpp:332-348,
Sources/Jazz2/Compatibility/AssetConverter.cpp:585-712
@@ -53,7 +53,7 @@ notes: |
cache the engine starts but is not playable. A Content/ tree prepared
by the AssetPacker tool carries Prebaked.pak: the conversion is then
skipped and Source/ is not read.
ref: Sources/Main.cpp:2149-2155,
ref: Sources/Main.cpp:2153-2159,
Sources/Jazz2/ContentResolver.cpp:698-706
On Android, Apple, Unix, UWP, Switch and Vita a Content/ directory
@@ -80,7 +80,7 @@ files:
standalone_path: "Content/Animations/"
mode: libretro
required: true
source_ref: "Sources/Jazz2/ContentResolver.cpp:1352, 1482, 3165-3166"
source_ref: "Sources/Jazz2/ContentResolver.cpp:1352, Sources/Jazz2/ContentResolver.cpp:1501, Sources/Jazz2/ContentResolver.cpp:3274-3275"
note: "Native graphics, sounds and the UI fonts, opened through OpenContentFile. No libretro build is published with the release, so the tree is placed by hand."
- name: "Animations/"
@@ -91,7 +91,7 @@ files:
mode: standalone
bundled: true
required: true
source_ref: "Sources/Jazz2/ContentResolver.cpp:1352, 1482, 3165-3166"
source_ref: "Sources/Jazz2/ContentResolver.cpp:1352, Sources/Jazz2/ContentResolver.cpp:1501, Sources/Jazz2/ContentResolver.cpp:3274-3275"
note: "Native graphics, sounds and the UI fonts, opened through OpenContentFile. Shipped beside the executable in the 3.8.0 Windows and Linux zips."
- name: "Metadata/"
@@ -147,7 +147,7 @@ files:
path: "jazz2/Source/Anims.j2a"
standalone_path: "Source/Anims.j2a"
required: true
source_ref: "Sources/Main.cpp:2237-2253, Sources/Jazz2/Compatibility/AssetConverter.cpp:336-339"
source_ref: "Sources/Main.cpp:2241-2257, Sources/Jazz2/Compatibility/AssetConverter.cpp:336-339"
note: "Main animation archive. The cache cannot be created without it and the game is not flagged playable."
- name: "AnimsSw.j2a"
@@ -156,7 +156,7 @@ files:
path: "jazz2/Source/AnimsSw.j2a"
standalone_path: "Source/AnimsSw.j2a"
required: false
source_ref: "Sources/Main.cpp:2240-2242"
source_ref: "Sources/Main.cpp:2244-2246"
note: "Animation archive of the shareware demo, read when Anims.j2a is absent."
- name: "Data.j2d"
@@ -174,7 +174,7 @@ files:
path: "jazz2/Source/Plus.j2d"
standalone_path: "Source/Plus.j2d"
required: false
source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:271-316, 512-515, Sources/Jazz2/Compatibility/JJ2Level.cpp:1128-1130"
source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:271-316, 512-515, Sources/Jazz2/Compatibility/JJ2Level.cpp:1045"
note: "Data file of a JJ2+ installation. Read once a converted level names one of its TextureBG.<n> textures. Without it a texture is made up for that layer."
# Episode descriptors (.j2e) and level files (.j2l) are optional per
@@ -323,7 +323,7 @@ files:
# Tilesets. Only those a converted level names are converted. The name
# is read from the level, lowercased and looked up in Source/ without
# regard to case.
# ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:136, 785-788,
# ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:143, 791-794,
# Sources/Jazz2/Compatibility/AssetConverter.cpp:684, 771-792
- name: "labrat1n.j2t"
@@ -332,7 +332,7 @@ files:
path: "jazz2/Source/labrat1n.j2t"
standalone_path: "Source/labrat1n.j2t"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:136, 785-788, Sources/Jazz2/Compatibility/AssetConverter.cpp:684, 771-792"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:143, Sources/Jazz2/Compatibility/JJ2Level.cpp:791-794, Sources/Jazz2/Compatibility/AssetConverter.cpp:684, 771-792"
note: "Tileset named by share1.j2l, sharect2.j2l and sharetrs.j2l."
- name: "psych2.j2t"
@@ -341,7 +341,7 @@ files:
path: "jazz2/Source/psych2.j2t"
standalone_path: "Source/psych2.j2t"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:136, 785-788, Sources/Jazz2/Compatibility/AssetConverter.cpp:684, 771-792"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:143, Sources/Jazz2/Compatibility/JJ2Level.cpp:791-794, Sources/Jazz2/Compatibility/AssetConverter.cpp:684, 771-792"
note: "Tileset named by share2.j2l."
- name: "diam2.j2t"
@@ -350,11 +350,11 @@ files:
path: "jazz2/Source/diam2.j2t"
standalone_path: "Source/diam2.j2t"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:136, 785-788, Sources/Jazz2/Compatibility/AssetConverter.cpp:684, 771-792"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:143, Sources/Jazz2/Compatibility/JJ2Level.cpp:791-794, Sources/Jazz2/Compatibility/AssetConverter.cpp:684, 771-792"
note: "Tileset named by share3.j2l and sharectf.j2l."
# Music, read from the user Content/Music/, then Content/Music/, then Source/
# ref: Sources/Jazz2/ContentResolver.cpp:3106-3122
# ref: Sources/Jazz2/ContentResolver.cpp:3215-3231
- name: "menu.j2b"
category: game_data
@@ -403,7 +403,7 @@ files:
# Level music. The name is read from the level, lowercased and given
# the .j2b extension when it has none.
# ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:140, 795-801
# ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:147, 801-807
- name: "labrat.j2b"
category: game_data
@@ -411,7 +411,7 @@ files:
path: "jazz2/Source/labrat.j2b"
standalone_path: "Source/labrat.j2b"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:140, 795-801, Sources/Jazz2/LevelHandler.cpp:700-706, Sources/Jazz2/ContentResolver.cpp:3106-3116"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:147, Sources/Jazz2/Compatibility/JJ2Level.cpp:801-807, Sources/Jazz2/LevelHandler.cpp:700-706, Sources/Jazz2/ContentResolver.cpp:3215-3225"
note: "Music named by share1.j2l, sharect2.j2l and sharetrs.j2l."
- name: "funkyg.j2b"
@@ -420,7 +420,7 @@ files:
path: "jazz2/Source/funkyg.j2b"
standalone_path: "Source/funkyg.j2b"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:140, 795-801, Sources/Jazz2/LevelHandler.cpp:700-706, Sources/Jazz2/ContentResolver.cpp:3106-3116"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:147, Sources/Jazz2/Compatibility/JJ2Level.cpp:801-807, Sources/Jazz2/LevelHandler.cpp:700-706, Sources/Jazz2/ContentResolver.cpp:3215-3225"
note: "Music named by share2.j2l."
- name: "diamond.j2b"
@@ -429,7 +429,7 @@ files:
path: "jazz2/Source/diamond.j2b"
standalone_path: "Source/diamond.j2b"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:140, 795-801, Sources/Jazz2/LevelHandler.cpp:700-706, Sources/Jazz2/ContentResolver.cpp:3106-3116"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:147, Sources/Jazz2/Compatibility/JJ2Level.cpp:801-807, Sources/Jazz2/LevelHandler.cpp:700-706, Sources/Jazz2/ContentResolver.cpp:3215-3225"
note: "Music named by share3.j2l and sharectf.j2l."
- name: "boss2.j2b"
@@ -438,7 +438,7 @@ files:
path: "jazz2/Source/boss2.j2b"
standalone_path: "Source/boss2.j2b"
required: false
source_ref: "Sources/Jazz2/Compatibility/EventConverter.cpp:360-370, Sources/Jazz2/Compatibility/AssetConverter.cpp:697-700, Sources/Jazz2/LevelHandler.cpp:1547-1550, Sources/Jazz2/ContentResolver.cpp:3106-3116"
source_ref: "Sources/Jazz2/Compatibility/EventConverter.cpp:413-423, Sources/Jazz2/Compatibility/AssetConverter.cpp:697-700, Sources/Jazz2/LevelHandler.cpp:1564-1567, Sources/Jazz2/ContentResolver.cpp:3215-3225"
note: "Boss music. The boss activation event carries a music index that is converted to boss1.j2b or boss2.j2b and recorded as music the level uses. share3.j2l carries index 1."
# Cinematics, read from Content/Cinematics/ then from Source/
+1 -1
View File
@@ -4,7 +4,7 @@ core_classification: other
source: "https://github.com/jsgroth/jgenesis"
upstream: "https://github.com/jsgroth/jgenesis"
profiled_date: "2026-08-08"
source_commit: "d41e2d975771c78ee2efe80f8ec5768b87e3f7eb"
source_commit: "8e0b993e90d77a77475df6574e24c08c0dd288ae"
core_version: "0.14.1"
display_name: "Multi-System (jgenesis)"
cores:
+30 -21
View File
@@ -7,8 +7,8 @@ version_source:
url: "https://play.google.com/store/apps/details?id=com.pixelrespawn.linkboy&hl=en"
pattern: '\[\[\["([^"]+)"\]\],\[\[\[\d+'
author: "Pixel Respawn LLC"
profiled_date: "2026-10-20"
core_version: "3.11.4"
profiled_date: "2026-10-24"
core_version: "4.0.0"
display_name: "Nintendo - Game Boy / Color / Advance (Linkboy)"
mode: standalone
cores:
@@ -23,51 +23,60 @@ systems:
notes: |
Android package com.pixelrespawn.linkboy, closed source, free on Google Play with a
paid unlock, reached by ES-DE through its LINKBOY find rule. Three Play distribution
builds are read here, 3.11.4 (versionCode 93, minSdk 32, targetSdk 36, xapk sha256
paid unlock, reached by ES-DE through its LINKBOY find rule. Four Play distribution
builds are read here, 4.0.0 (versionCode 95, minSdk 26, targetSdk 37, xapk sha256
9a10e00c6dcd2fdc66490000bf77bfa9846b37dffd31f8d96dc89d7c5997fee1), 3.11.4
(versionCode 93, minSdk 32, targetSdk 36, xapk sha256
4432cf9ab8ce2d148e8a0e89c26b786e4e7d060f43885d062f6d446b03ca4d32), 3.11.0
(versionCode 86, minSdk 26, xapk sha256
83b92276d28d71e491ebcbec3fa85cef42ef49d8ee0c6fd1bbe0045bc118f866) and 1.4.2
(versionCode 12), all carrying the app signing certificate sha256
feb643cfdd9c49f58eb325fde3d869cefcf59e45dfadb8e540beca35a7b1c28e and the Play
distribution source stamp. Emulation lives in liblinkboy.so behind a JNI bridge.
Addresses below are armeabi-v7a of 3.11.4 and class names are those of its
obfuscated dex.
Addresses below are armeabi-v7a of 4.0.0 (liblinkboy.so sha256
86334694df475bfba4ec312ef69ca71e45dfda65e51eb074660ca177d80c88f3) and class names
are those of its obfuscated dex.
Four subsystems are declared: GBA, GBC, GB and SGB (ve0.java:16-21). An SGB
cartridge runs in GB mode when prefer-sgb is off (wo0.java:62, c51.java:183-185).
Four subsystems are declared: GBA, GBC, GB and SGB (rd0.java:16-21). An SGB
cartridge runs in GB mode when prefer-sgb is off (y72.java:43, i71.java:203-205,
285-287).
The three firmware images are the only files the emulator reads that it does not
write itself. One table holds their names, sizes and md5 sums (cr.java:8), and the
write itself. One table holds their names, sizes and md5 sums (uq.java:8), and the
firmware screen reports each as present, mismatched or absent by comparing the
size and then the md5 of the whole file (br.java:24-88, yz1.java:39, hr1.java:110).
size and then the md5 of the whole file (tq.java:22-85, t32.java:197-204).
Importing a slot from that screen writes firmware/ and the name: a picked zip
gives its first entry whose length equals the slot size, any other document is
copied when its own length does (h.java:127-145, oq.java:58-167).
Saves, cheats, thumbnails, keymaps and the ips, ups and bps patches picked up next
to a ROM are written or supplied per game, not fixed files.
An image is read only while the use-bios preference is on, which is off until set
(wo0.java:63, b75.java:165-173, c51.java:186,268, w41.java:243). The loader appends
firmware/ and the name to the directory handed to setDataDir, the app's external
files directory (c51.java:69, hg3.java:32-38), and opens the result with fopen "rb".
(y72.java:44, tf5.java:186-194, i71.java:207,289, b71.java:233). The loader appends
/firmware/ and the name to the directory handed to setDataDir, the app's external
files directory or its internal one when none is mounted (i71.java:74,
qm3.java:32-41), and opens the result with fopen "rb".
A file whose length is not exactly the expected size is closed and treated as
absent, as is a short read. On success the loader returns the crc32 of the bytes
(liblinkboy.so 0x1ca40-0x1cbe0, crc32 at 0x1c69c).
(liblinkboy.so 0x1cb10-0x1cd1c, crc32 at 0x1c76c).
A missing image stops nothing. The GBA path copies a 236 byte replacement bios
compiled into the library over the 16 KB region and zero fills the remainder. Since
3.11.4 a second variant of that replacement is taken when the game code is B4GJ or
B4SJ (0x10a06c-0x10a108). The GB and GBC path hands the reset routine a boot rom
B4SJ (0x10a22c-0x10a2c8). The GB and GBC path hands the reset routine a boot rom
present flag, false when no image was loaded, and the machine starts from its post
boot state (0x14f7f4-0x14f878, 0x14f8f8-0x14f914).
boot state (0x14f9b4-0x14fa38, 0x14fab8-0x14fad4).
Since 3.11.4 a loaded GBA image is not run for every cartridge. When the ROM is at
least 0xa0 bytes the crc32 of the 156 header bytes from offset 4 is compared with a
fixed value, and a mismatch logs "Invalid logo, skipping BIOS" and resets with the
boot flag false. The image stays installed and the machine starts from its post
boot state (0x10a14c-0x10a1a4).
boot state (0x10a2ec-0x10a364).
Save states record the crc32 of the image they were made under. Loading a state
whose value differs from the running machine re-reads the file and refuses the state
when the crc32 still disagrees (0x10ad00-0x10ad58, 0x1500c0-0x150124).
when the crc32 still disagrees (0x10aecc-0x10af24, 0x1501b0-0x1501bc,
0x150280-0x1502e4).
files:
- name: gba_bios.bin
@@ -81,7 +90,7 @@ files:
config_key: "use-bios"
description: "Game Boy Advance BIOS"
note: "Read into the 16 KB bios region when use-bios is on. Absent, mismatched in size or short, the region is filled with a replacement bios compiled into the library and zero padded. A cartridge whose header logo fails the crc32 test boots past it."
source_ref: "Linkboy 3.11.4 cr.java:8, br.java:24-88, liblinkboy.so 0x10a06c-0x10a108 (size argument 0x4000), 0x10a14c-0x10a1a4 (logo test), loader 0x1ca40-0x1cbe0"
source_ref: "Linkboy 4.0.0 uq.java:8, tq.java:22-85, liblinkboy.so 0x10a22c-0x10a2c8 (size argument 0x4000 at 0x10a260), 0x10a2ec-0x10a364 (logo test), loader 0x1cb10-0x1cd1c"
- name: gbc_bios.bin
path: firmware/gbc_bios.bin
@@ -94,7 +103,7 @@ files:
config_key: "use-bios"
description: "Game Boy Color boot ROM"
note: "Read when use-bios is on and the machine is a Game Boy Color. Without it the reset routine receives a false boot rom flag and the machine starts from its post boot state."
source_ref: "Linkboy 3.11.4 cr.java:8, br.java:24-88, liblinkboy.so 0x14f860-0x14f870 (size argument 0x900), 0x14f8f8-0x14f914, loader 0x1ca40-0x1cbe0"
source_ref: "Linkboy 4.0.0 uq.java:8, tq.java:22-85, liblinkboy.so 0x14fa20-0x14fa2c (size argument 0x900), 0x14fab8-0x14fad4, loader 0x1cb10-0x1cd1c"
- name: gb_bios.bin
path: firmware/gb_bios.bin
@@ -107,4 +116,4 @@ files:
config_key: "use-bios"
description: "Game Boy boot ROM"
note: "Read when use-bios is on and the machine is a Game Boy. Without it the reset routine receives a false boot rom flag and the machine starts from its post boot state."
source_ref: "Linkboy 3.11.4 cr.java:8, br.java:24-88, liblinkboy.so 0x14f84c-0x14f85c (size argument 0x100), 0x14f8f8-0x14f914, loader 0x1ca40-0x1cbe0"
source_ref: "Linkboy 4.0.0 uq.java:8, tq.java:22-85, liblinkboy.so 0x14fa0c-0x14fa18 (size argument 0x100), 0x14fab8-0x14fad4, loader 0x1cb10-0x1cd1c"
+1 -1
View File
@@ -10,7 +10,7 @@ source: "https://github.com/libretro/parallel-ps2"
upstream: "https://github.com/PCSX2/pcsx2"
profiled_date: "2026-10-21"
source_commit: "38d3a83f4ecdec977d609ece8afcc527f5f68702"
upstream_commit: "7fe1e5525a2c219c119aa9586cee4ceae2f54ce1"
upstream_commit: "5675313c6db3390fdc38f75a658ddfc68498103e"
core_version: "Git"
display_name: "Sony - PlayStation 2 (LRPS2)"
cores: [lrps2, pcsx2, "ps2"]
+94 -13
View File
@@ -5,7 +5,7 @@ source: "https://github.com/libretro/mame2003-plus-libretro"
upstream: "https://www.mamedev.org"
logo: "https://raw.githubusercontent.com/mamedev/mame/master/docs/source/images/MAMElogo.svg"
profiled_date: "2026-03-24"
source_commit: "ffc68e38d9e6eca1b64dc8f50175b63447d37e49"
source_commit: "03fc843ad835d6569bf322a4f915545ab5ae9b8e"
core_version: "2003-Plus"
display_name: "Arcade (MAME 2003-Plus)"
mame_version: "0.78 (plus backports)"
@@ -36,6 +36,7 @@ systems:
- zn1-atlus
- atari-zn1
- eighting-zn1
- taito-gnet
- sega-model2
- namco-system11
- century-cvs
@@ -75,9 +76,9 @@ files:
required: false
category: game_data
system: arcade
sha1: "d41b1c32e9f5bee0cfca766a64f208dda081858b"
md5: "8be16faf51b064050359c10aa3850c27"
size: 131902
sha1: "b48347a133ab8f28b9875ab300fea2ffa2f37ebc"
md5: "f870afb431df16526e28cd9029b9d949"
size: 131926
source_ref: "src/hiscore.c:15,102-116,248, src/cpuexec.c:345-347"
note: >-
high score definitions, compiled into binary and spawned on first run.
@@ -505,7 +506,7 @@ files:
category: bios_zip
system: zn1-capcom
note: "Capcom ZN-1 BIOS"
source_ref: "src/drivers/zn.c:3473-3478, 3487-3500, 5993"
source_ref: "src/drivers/zn.c:4354-4359, 4368-4381, 7240"
contents:
- name: "m534002c-13.ic353"
description: BIOS
@@ -523,7 +524,7 @@ files:
category: bios_zip
system: zn2-capcom
note: "Capcom ZN-2 BIOS"
source_ref: "src/drivers/zn.c:3480-3485, 3921-3934, 6014"
source_ref: "src/drivers/zn.c:4361-4366, 4802-4815, 7261"
contents:
- name: "m534002c-59.ic353"
description: BIOS
@@ -541,7 +542,7 @@ files:
category: bios_zip
system: zn1-taito
note: "Taito FX-1 BIOS"
source_ref: "src/drivers/zn.c:5127-5132, 5134-5136, 6101"
source_ref: "src/drivers/zn.c:6008-6013, 6015-6017, 7348"
contents:
- name: "m534002c-14.ic353"
description: BIOS
@@ -559,7 +560,7 @@ files:
category: bios_zip
system: zn1-tecmo
note: "Tecmo TPS BIOS"
source_ref: "src/drivers/zn.c:4662-4667, 4672-4674, 6066"
source_ref: "src/drivers/zn.c:5543-5548, 5553-5555, 7313"
contents:
- name: "m534002c-61.ic353"
description: BIOS
@@ -577,7 +578,7 @@ files:
category: bios_zip
system: zn1-video-system
note: "Video System ZN-1 BIOS"
source_ref: "src/drivers/zn.c:5026-5031, 5044-5046, 6089"
source_ref: "src/drivers/zn.c:5907-5912, 5925-5927, 7336"
contents:
- name: "coh-1002v.ic353"
description: BIOS
@@ -595,7 +596,7 @@ files:
category: bios_zip
system: zn1-acclaim
note: "Acclaim ZN-1 BIOS"
source_ref: "src/drivers/zn.c:5888-5893, 5895-5897, 6057"
source_ref: "src/drivers/zn.c:6769-6774, 6776-6778, 7304"
contents:
- name: "m534002c-15.ic353"
description: BIOS
@@ -613,7 +614,7 @@ files:
category: bios_zip
system: zn1-atlus
note: "Atlus ZN-1 BIOS"
source_ref: "src/drivers/zn.c:5090-5095, 5097-5099, 6096"
source_ref: "src/drivers/zn.c:5971-5976, 5978-5980, 7343"
contents:
- name: "m534002c-17.ic353"
description: BIOS
@@ -631,7 +632,7 @@ files:
category: bios_zip
system: atari-zn1
note: "Time Warner ZN-1 BIOS"
source_ref: "src/drivers/zn.c:5858-5863, 5865-5867, 6046"
source_ref: "src/drivers/zn.c:6739-6744, 6746-6748, 7293"
contents:
- name: "msm27c402zb.ic353"
description: BIOS
@@ -649,7 +650,7 @@ files:
category: bios_zip
system: eighting-zn1
note: "Eighting / Raizing ZN-1 BIOS"
source_ref: "src/drivers/zn.c:5566-5571, 5573-5575, 6130"
source_ref: "src/drivers/zn.c:6447-6452, 6454-6456, 7377"
contents:
- name: "m27c402cz-54.ic353"
description: BIOS
@@ -662,6 +663,86 @@ files:
crc32: "a7dd922e"
sha1: "1069c1d9015028a51a1b314cfacb014ea90aa425"
- name: coh3002t.zip
required: true
category: bios_zip
system: taito-gnet
note: >-
Taito G-NET (COH-3002T) BIOS. The games are PC card CHDs and take the
board ROMs and one BIOS EPROM revision from this set: v1 for most, v2
for the Compact Flash games, the MB2011 mod BIOS for the bootlegs. No
game loads the MB2009 mod BIOS, only this set does.
source_ref: "src/drivers/zn.c:6877-6899, 6913-6919, 7392"
contents:
- name: "m534002c-60.ic353"
description: BIOS
size: 524288
crc32: "03967fa7"
sha1: "0e17fec2286e4e25deb23d40e41ce0986f373d49"
- name: "tt10.ic652"
description: CAT702 key, main board
size: 8
crc32: "235510b1"
sha1: "2cc02113207a8f0b078152d31ce6503411750e70"
- name: "tt16.u17"
description: CAT702 key, G-NET board
size: 8
crc32: "6bb167b3"
sha1: "9dcba08f10775a9adf2b1f382c947460edd3d239"
- name: "flash.u30"
description: U30 flash, sub BIOS
size: 2097152
crc32: "c48c8236"
sha1: "c6dad60266ce2ff635696bc0d91903c543273559"
- name: "f35-01_m27c800_v1.bin"
description: BIOS EPROM v1
size: 1048576
crc32: "cd15cc30"
sha1: "78361f46fa7186d5058937c86c66247a86b1257f"
- name: "f35-01_m27c800.bin"
description: BIOS EPROM v2
size: 1048576
crc32: "6225ec11"
sha1: "047852d456b6ff85f8e640887caa03cf3e63ffad"
- name: "f35-01_m27c800_modbios_mb-2009_dump_by_aje_fr.bin"
description: BIOS EPROM, MB2009 mod BIOS
size: 1048576
crc32: "6367aedf"
sha1: "8400775e0c974c8b017e26ef9339144cad457c63"
- name: "f35-01_m27c800_modbios_mb-2011.bin"
description: BIOS EPROM, MB2011 mod BIOS
size: 1048576
crc32: "f98ae118"
sha1: "c6918dfbb6fcf686dde4b731e84f740177ab31f0"
- name: coh1002t.zip
required: true
category: bios_zip
system: taito-gnet
note: "Taito G-NET (COH-1002T) BIOS, parent of Mawasunda"
source_ref: "src/drivers/zn.c:6900-6911, 6922-6924, 7393"
contents:
- name: "m534002c-14.ic353"
description: BIOS
size: 524288
crc32: "e3f23b6e"
sha1: "e18907cf8c6ba54d96edba0a9a00487a90219e0d"
- name: "tt01.ic652"
description: CAT702 key, main board
size: 8
crc32: "daac13e7"
sha1: "96d94f2b06fb7ecd91454969f4959a583ffb9d5a"
- name: "tt99.u17"
description: CAT702 key, G-NET board
size: 8
crc32: "2989b6eb"
sha1: "89981ec68d30729c27d31f820cbfd0c23ed14a03"
- name: "flash.u30"
description: U30 flash, sub BIOS
size: 2097152
crc32: "9100dbf2"
sha1: "9ce888bd2a7e575c8ca71d978cb85de22afb5660"
# ---------------------------------------------------------
# Sega Model 2 I/O boards. The games load the I/O board ROM with
# ROM_LOAD_OPTIONAL and simulate the board when it is absent.
+9 -9
View File
@@ -5,7 +5,7 @@ source: "https://github.com/libretro/mame"
upstream: "https://github.com/mamedev/mame"
profiled_date: "2026-03-29"
source_commit: "5f5a07748ce5c239c4118463ce8e6473743d4859"
upstream_commit: "61a222977fd29f22ce11fbea3f7c290fd7ced091"
upstream_commit: "f34f02505e32c1993c6a782b6814232cbfc74e36"
core_version: "0.287"
display_name: "Multi (MAME/MESS)"
@@ -912,7 +912,7 @@ files:
required: true
category: bios_zip
system: casio-pv2000
source_ref: "upstream src/mame/casio/pv2000.cpp:415-418"
source_ref: "upstream src/mame/casio/pv2000.cpp:416-419"
contents:
- name: hn613128pc64.bin
description: Z80 BASIC ROM
@@ -1990,7 +1990,7 @@ files:
required: true
category: bios_zip
system: tandy-vis
source_ref: "upstream src/mame/trs/vis.cpp:1062-1066"
source_ref: "upstream src/mame/trs/vis.cpp:1064-1068"
contents:
- name: p513bk0b.bin
description: BIOS bank 0
@@ -2011,7 +2011,7 @@ files:
required: true
category: bios_zip
system: trs80
source_ref: "upstream src/mame/trs/trs80.cpp:567-584"
source_ref: "upstream src/mame/trs/trs80.cpp:566-583"
note: "TRS-80 Model I Level I Basic (1977). Only fully working TRS-80 machine in MAME."
contents:
- name: level1.rom
@@ -2027,7 +2027,7 @@ files:
required: true
category: bios_zip
system: trs80
source_ref: "upstream src/mame/trs/trs80.cpp:587-603"
source_ref: "upstream src/mame/trs/trs80.cpp:586-602"
note: |
TRS-80 Model I Level II Basic (1978). Separate parent machine from trs80 (Level I).
2 BIOS variants: Radio Shack Level II and R/S L2 (alternate dumps).
@@ -2066,7 +2066,7 @@ files:
required: false
category: bios_zip
system: trs80
source_ref: "upstream src/mame/trs/trs80.cpp:608-617"
source_ref: "upstream src/mame/trs/trs80.cpp:607-616"
note: |
EACA Video Genie EG3003 (1980). TRS-80 Level II compatible clone.
Parent for sys80/sys80p/ht1080z/ht1080z2/ht108064 clones.
@@ -2097,7 +2097,7 @@ files:
required: false
category: bios_zip
system: trs80
source_ref: "upstream src/mame/trs/trs80.cpp:620-632"
source_ref: "upstream src/mame/trs/trs80.cpp:619-631"
note: "EACA System-80 (1980). Clone of eg3003 with different extension ROM. sys80p (50 Hz) shares ROMs."
contents:
- name: sys80.z13
@@ -2125,7 +2125,7 @@ files:
required: false
category: bios_zip
system: trs80
source_ref: "upstream src/mame/trs/trs80.cpp:649-658"
source_ref: "upstream src/mame/trs/trs80.cpp:648-657"
note: "Hiradastechnika HT-1080Z Series II (1984). Clone of eg3003."
contents:
- name: ht1080z2.z13
@@ -2141,7 +2141,7 @@ files:
required: false
category: bios_zip
system: trs80
source_ref: "upstream src/mame/trs/trs80.cpp:661-670"
source_ref: "upstream src/mame/trs/trs80.cpp:660-669"
note: "Hiradastechnika HT-1080Z/64 (1985). 64-column clone of eg3003."
contents:
- name: 3001_64.z10
+1 -1
View File
@@ -5,7 +5,7 @@ source: "https://github.com/libretro/nestopia"
upstream: "https://gitlab.com/jgemu/nestopia"
logo: "https://raw.githubusercontent.com/0ldsk00l/nestopia/master/icons/svg/nestopia.svg"
profiled_date: "2026-03-24"
source_commit: "06a8949e0b3cf60e3a38a374b1426bf40fccb9a0"
source_commit: "2110d21b7174455ec98948bb474147dea0e3cad0"
upstream_commit: "b3adbeb42482e979ab99e16bcd9a22480f13479f"
core_version: "1.53.1"
display_name: "Nintendo - NES / Famicom (Nestopia)"
+32 -27
View File
@@ -6,8 +6,8 @@ upstream: "https://problemkaputt.de/gba.htm"
version_source:
url: "https://problemkaputt.de/gba.htm"
pattern: 'no\$gba v(\d+(?:\.\d+)+)'
profiled_date: "2026-10-20"
core_version: "3.04"
profiled_date: "2026-10-24"
core_version: "3.06"
display_name: "Nintendo - GBA/DS/DSi (no$gba)"
cores:
- nosgba
@@ -21,19 +21,24 @@ mode: standalone
notes: |
Freeware gaming build of Martin Korth's Game Boy Advance, Nintendo DS and
DSi emulator for Windows, closed source. RetroBat installs it as nosgba and
starts NO$GBA.EXE with the ROM. Its NO$GBA.EXE (220079 bytes, sha1
935b857bc1249479124247612755eeb2a247f23c) is the one in no$gba-w.zip of
v3.04, 23 Mar 2021, byte for byte. The official zip also carries
DSI-SD.ZIP, which RetroBat leaves out. Everything below is read from that
executable after removing its UPX layer. Addresses are virtual addresses of
the unpacked image (base 0x400000).
starts NO$GBA.EXE with the ROM. Everything below is read from the
NO$GBA.EXE of no$gba-w.zip v3.06, 14 Apr 2025 (224175 bytes, sha1
a167242d3800ccc0ac7e5b42e8d6f3f150ed6283), after removing its UPX layer.
Addresses are virtual addresses of the unpacked image (base 0x400000). The
nosgba package RetroBat installs, stable and beta alike, still carries the
v3.04 executable of 23 Mar 2021 (220079 bytes, sha1
935b857bc1249479124247612755eeb2a247f23c). Its boot ROM table, loader,
checksum pairs, firmware and wifi reads, DSi image naming and Atheros ROM
reads are the same instructions at other addresses, and its 236-byte GBA
stub is the same bytes. The official zip also carries DSI-SD.ZIP, which
RetroBat leaves out.
Every file is opened by bare name. Before each open the program builds its
own folder from the module path and makes it the current directory
(0x431741, 0x4316ea), so all of them sit next to NO$GBA.EXE.
(0x432515, 0x4324be), so all of them sit next to NO$GBA.EXE.
The boot ROMs come from one table of six slots (0x471a81-0x471b80), loaded
by one routine (0x4357c6-0x4358a1). For each slot it clears the buffer, then
The boot ROMs come from one table of six slots (0x472ff5-0x4730f4), loaded
by one routine (0x436604-0x4366df). For each slot it clears the buffer, then
tries a list of (file, offset) pairs in order. The first file that opens and
is longer than its offset gives the bytes, read at that offset for the slot
size. No size is checked beyond that. The lists:
@@ -51,23 +56,23 @@ notes: |
count of dwords left, XORs it in and rotates right by one. The GBA, NDS ARM7,
NDS ARM9 and PocketStation slots carry the expected pair, the DSi slots carry
none. A mismatch only raises "Incorrect GBA/NDS BIOS version!" and the image
stays in use (0x43586a-0x43589a, 0x4358f0-0x43591e). The md5 and sha1 given
stays in use (0x4366a8-0x4366d8, 0x43672e-0x43675c). The md5 and sha1 given
below are those of the dumps that produce the expected pair.
Without a GBA image the slot receives a 236-byte stub held in the executable
(0x43578c-0x4357c5) and the BIOS calls run as x86 code, the default of the
(0x4365ca-0x436603) and the BIOS calls run as x86 code, the default of the
"Emulate BIOS Functions" option. Only the BIOS sound functions then stop with
"Sorry, no$gba needs a copy of the original GBA BIOS". The NDS slots stay
zero and the calls are emulated the same way. The ARM7 image is what
decrypts the secure area of an encrypted cartridge dump and CodeBreaker
codes ("Encrypted Cartridge, requires files BiosNds7.rom and BiosNds9.rom").
Without a PocketStation image a built-in clone named pockclon is expanded in
its place (0x435750-0x435771). DSi mode needs the DSi images for their RSA
its place (0x43658e-0x4365af). DSi mode needs the DSi images for their RSA
keys and stops with "Missing DSi BIOS dump (need RSA keys)" without them.
The DSi eMMC and SD card are files named from the emulated unit number, 1 for
the first machine: the name is written over a template as "DSi-", the digit,
then "mmc" or "sd" (0x43acea-0x43ad2d). The eMMC image must carry the
then "mmc" or "sd" (0x439a47-0x439a8a). The eMMC image must carry the
nocash footer with the CID and console ID ("Missing footer in .mmc file").
The template string itself reads New3DS-#.mmc, from the 3DS mode.
@@ -92,7 +97,7 @@ files:
Tried after NO$GBA.ROM and before GBA.ROM. Expected checksum pair
0xbaae187f, 0xc98cfa1d, which the retail GBA BIOS gives. Needed for the
BIOS sound functions and the Nintendo logo boot.
source_ref: "NO$GBA.EXE v3.04 0x471a81-0x471aac (slot), 0x4357c6-0x43589a (load and checksum), 0x43578c-0x4357c5 (stub when absent)"
source_ref: "NO$GBA.EXE v3.06 0x472ff5-0x473020 (slot), 0x436604-0x4366d8 (load and checksum), 0x4365ca-0x436603 (stub when absent)"
- name: BIOSNDS7.ROM
system: nintendo-ds
@@ -107,7 +112,7 @@ files:
Tried after NO$GBA.ROM at 0x4000 and BIOSNDS.ROM at 0. Expected checksum
pair 0xbc180972, 0x36b3e1b2. Carries the key that decrypts encrypted
cartridge secure areas and CodeBreaker codes.
source_ref: "NO$GBA.EXE v3.04 0x471ab1-0x471adc (slot), 0x4357c6-0x43589a (load and checksum)"
source_ref: "NO$GBA.EXE v3.06 0x473025-0x473050 (slot), 0x436604-0x4366d8 (load and checksum)"
- name: BIOSNDS9.ROM
system: nintendo-ds
@@ -121,7 +126,7 @@ files:
note: >
Tried after NO$GBA.ROM at 0x8000 and BIOSNDS.ROM at 0x4000. Expected
checksum pair 0xbb212bf7, 0x1bec1d77.
source_ref: "NO$GBA.EXE v3.04 0x471ae1-0x471b0c (slot), 0x4357c6-0x43589a (load and checksum)"
source_ref: "NO$GBA.EXE v3.06 0x473055-0x473080 (slot), 0x436604-0x4366d8 (load and checksum)"
- name: FIRMWARE.BIN
system: nintendo-ds
@@ -133,7 +138,7 @@ files:
Read whole into a buffer of 256 KiB, or 512 KiB when the file is larger.
A file over 512 KiB stops the program with "Unexpected Error". Absent, a
256 KiB buffer stands in. No hash is checked.
source_ref: "NO$GBA.EXE v3.04 0x4356a8-0x4356e8 (load), 0x4358a2-0x4358d3 (buffer size), 0x4348fa (error)"
source_ref: "NO$GBA.EXE v3.06 0x4364e6-0x436526 (load), 0x4366e0-0x436711 (buffer size), 0x435777 (error)"
- name: BIOSDSI7.ROM
system: nintendo-dsi
@@ -143,7 +148,7 @@ files:
note: >
Tried after BIOSDSI.ROM at 0. No checksum. DSi mode stops without it
since it holds the RSA keys.
source_ref: "NO$GBA.EXE v3.04 0x471b11-0x471b38 (slot), 0x4357c6-0x435802 (load)"
source_ref: "NO$GBA.EXE v3.06 0x473085-0x4730ac (slot), 0x436604-0x436640 (load)"
- name: BIOSDSI9.ROM
system: nintendo-dsi
@@ -151,7 +156,7 @@ files:
size: 65536
description: "Nintendo DSi ARM9 BIOS"
note: "Tried after BIOSDSI.ROM at 0x10000. No checksum."
source_ref: "NO$GBA.EXE v3.04 0x471b39-0x471b60 (slot), 0x4357c6-0x435802 (load)"
source_ref: "NO$GBA.EXE v3.06 0x4730ad-0x4730d4 (slot), 0x436604-0x436640 (load)"
- name: WIFI-DSI.BIN
system: nintendo-dsi
@@ -160,7 +165,7 @@ files:
description: "DSi wifi firmware flash"
note: >
Read whole. Absent, a 128 KiB buffer stands in. No hash is checked.
source_ref: "NO$GBA.EXE v3.04 0x435701-0x435741 (load), 0x4358d4-0x4358ef (buffer)"
source_ref: "NO$GBA.EXE v3.06 0x43653f-0x43657f (load), 0x436712-0x43672d (buffer)"
- name: AR6002G.ROM
system: nintendo-dsi
@@ -169,14 +174,14 @@ files:
note: >
Read for a DSi when the byte at firmware offset 0x1fd is not 2. Absent,
the ROM area is filled with 0x55.
source_ref: "NO$GBA.EXE v3.04 0x46014c-0x4601bd"
source_ref: "NO$GBA.EXE v3.06 0x460d54-0x460dc5"
- name: AR6013G.ROM
system: nintendo-dsi
required: false
description: "Atheros AR6013 wifi chip ROM"
note: "Read for a DSi when the byte at firmware offset 0x1fd is 2. Absent, the ROM area is filled with 0x55."
source_ref: "NO$GBA.EXE v3.04 0x46014c-0x4601bd"
source_ref: "NO$GBA.EXE v3.06 0x460d54-0x460dc5"
- name: DSi-1.mmc
system: nintendo-dsi
@@ -185,7 +190,7 @@ files:
note: >
eMMC of the first emulated DSi. The footer has to carry the CID and the
console ID. No hash or size is checked.
source_ref: "NO$GBA.EXE v3.04 0x43acea-0x43ad65"
source_ref: "NO$GBA.EXE v3.06 0x439a47-0x439ac2"
- name: DSi-1.sd
system: nintendo-dsi
@@ -198,7 +203,7 @@ files:
SD card of the first emulated DSi. The official zip ships a blank
FAT16 one as DSI-1.SD inside DSI-SD.ZIP. The hashes are those of that
file, the code checks none.
source_ref: "NO$GBA.EXE v3.04 0x43acea-0x43ad65"
source_ref: "NO$GBA.EXE v3.06 0x439a47-0x439ac2"
- name: POCKSTAT.ROM
system: sony-pocketstation
@@ -214,4 +219,4 @@ files:
in J061. An image ending in J110 is checked against 0xb16ce96c,
0xbedf0d0f instead, and one with POCKBIOS at 0x40 is not checked.
Absent, a built-in clone is used.
source_ref: "NO$GBA.EXE v3.04 0x471b61-0x471b80 (slot), 0x43582b-0x435863 (variant tests), 0x435750-0x435771 (clone)"
source_ref: "NO$GBA.EXE v3.06 0x4730d5-0x4730f4 (slot), 0x436669-0x4366a1 (variant tests), 0x43658e-0x4365af (clone)"
+1 -1
View File
@@ -3,7 +3,7 @@ type: standalone
source: "https://github.com/openMSX/openMSX"
upstream: "https://github.com/openMSX/openMSX"
profiled_date: "2026-03-26"
source_commit: "26e1e4945df406e250a05122889f88d40edd828b"
source_commit: "705ebf1aad7035467f7c065f48a01361aec307c8"
core_version: "21.0"
display_name: "MSX / ColecoVision / Spectravideo (openMSX)"
cores:
+1 -1
View File
@@ -6,7 +6,7 @@ cores: [opera]
source: "https://github.com/libretro/opera-libretro"
upstream: "https://sourceforge.net/projects/freedo/"
profiled_date: "2026-10-18"
source_commit: "2d03e484952f94e80b43142371e7784d6fbc68e0"
source_commit: "370d9a25c030bb9de4aade371b31045691c40a95"
core_version: "1.0.0"
display_name: "The 3DO Company - 3DO (Opera)"
systems:
+1 -1
View File
@@ -7,7 +7,7 @@ upstream: "https://github.com/PCSX2/pcsx2"
cores:
- pcsx2
profiled_date: "2026-03-30"
source_commit: "7fe1e5525a2c219c119aa9586cee4ceae2f54ce1"
source_commit: "5675313c6db3390fdc38f75a658ddfc68498103e"
core_version: "Git"
display_name: "Sony - PlayStation 2 (PCSX2)"
systems: [sony-playstation-2]
+19 -15
View File
@@ -6,9 +6,9 @@ upstream: closed-source
version_source:
url: "https://play.google.com/store/apps/details?id=it.dbtecno.pizzaboygbapro&hl=en"
pattern: '\[\[\["([^"]+)"\]\],\[\[\[\d+'
no_genuine_copy: "3.8.24"
no_genuine_copy: "3.9.0"
author: "Pizza Emulators"
profiled_date: "2026-10-20"
profiled_date: "2026-10-24"
core_version: "2.8.13"
display_name: "Nintendo - Game Boy Advance (Pizza Boy GBA)"
mode: standalone
@@ -27,18 +27,21 @@ notes: |
builds are read here, both carrying the source stamp: Pro 2.8.13 (versionCode 343,
Play App Signing certificate sha256
6b5547246e41921f25eba8abb1bc018729c4f0b8db029debbd3380a2b1ec2fe1), which supplies the
Java and the resources, and Basic 2.3.20 (versionCode 253, an APKMirror bundle whose
base and arm64-v8a splits carry the developer certificate sha256
Java and the resources, and Basic 2.3.22 (versionCode 255, an APKMirror bundle of
22 Oct 2026 whose base and arm64-v8a splits carry a valid v2 and v3 signature by the
developer certificate sha256
b3ee584096acf4667bb9346daa9cce19237ef7ce95c99e9260ac89be0f7d6130, CN=Davide Berra,
O=DBTecno), whose arm64-v8a libpizzaboy-jni.so ships DWARF and an unstripped symbol
table and supplies every native reference below as its own file and line. Java line
numbers are those of Pro 2.8.13. Two rebuilt copies of Pro 1.35.11 were rejected on
O=DBTecno, and the Play source stamp), whose arm64-v8a libpizzaboy-jni.so ships DWARF
and an unstripped symbol table and supplies every native reference below as its own
file and line. Every Basic reference first read on 2.3.20 falls on the same lines and
functions in 2.3.22, with the same 0x4000 read and 744 byte replacement in mmu_init.
Java line numbers are those of Pro 2.8.13. Two rebuilt copies of Pro 1.35.11 were rejected on
their certificate, one signed C=debugging with no source stamp and one signed
O=APKMODY. 69 of the 77 native methods the Pro declares are exported by the Basic
2.3.3 core, the three BIOS entry points among them: one core, compiled per package.
The Pro on the store is 3.8.24 and no genuine copy of it is reachable: apkcombo no
longer resolves, the APKPure API holds no entry for either package, APKMirror and
Uptodown carry the Basic package alone, apkvision stops at Basic 1.9.5, and the
The Pro on the store is 3.9.0 and no genuine copy of it is reachable: apkcombo no
longer resolves, APKPure answers 410 for the Pro package, APKMirror carries the Basic
package alone, Uptodown has no page for it, apkvision stops at Basic 1.9.5, and the
newest archive.org item, labelled Pro 2.8.14, holds no file.
One system is emulated, Game Boy Advance: the core is built from a tree named
@@ -49,7 +52,7 @@ notes: |
The BIOS is the one file the user supplies, and it is read only while Load BIOS file
is on, off by default. The picker and the Run BIOS animation switch, on by default,
both depend on that box (res/xml/pref_general.xml). In the free package the same
three preferences are declared android:enabled="false". The Basic 2.3.20 Java keeps
three preferences are declared android:enabled="false". The Basic 2.3.22 Java keeps
the whole handoff to the core behind them, and its document picker copies the
chosen file as it is, with no zip extraction.
@@ -57,7 +60,7 @@ notes: |
its own replacement, and one cartridge, checksum 0xc7d89508, forces the same at load
time. When a real image is installed the boot animation starts execution at 0 rather
than at the cartridge entry, and a multiplayer session exchanges the CRC32 of the file
so that both peers run the same one. In Basic 2.3.20 a save state records the CRC32
so that both peers run the same one. In Basic 2.3.22 a save state records the CRC32
of the 16 KB BIOS area, and a state written under another image is refused with
"Cannot restore stat: saved with another BIOS".
@@ -87,7 +90,7 @@ files:
that a real image is installed. Nothing about the file is examined: any read
returning at least one byte is accepted, and no size, name or hash test exists on
either side of the bridge. A read of zero bytes leaves the replacement in place
and logs "Cannot read BIOS file". In Basic 2.3.20 the document picker copies the
and logs "Cannot read BIOS file". In Basic 2.3.22 the document picker copies the
file into the temp directory under the name the picker reports without opening
a zip, and the legacy browser extracts a picked zip entry under its own name to
the uncompressed directory.
@@ -95,10 +98,11 @@ files:
(preference and picker), FileDialog.java:57,72,77,846-857 (legacy browser, zip entry
to bios.bin), Common.java:85-105 (copy to temp), :160-190 (single entry unzip),
MainActivity.java:833,835,865 (bridge), :10936-10941 (gate and handoff),
res/xml/pref_general.xml (defaults); Pizza Boy A Basic 2.3.20
res/xml/pref_general.xml (defaults); Pizza Boy A Basic 2.3.22
SettingsActivity.java:206-236, xw.java:2531-2554 (copy without zip extraction),
yj.java:279-300 (legacy browser zip entry), h3.java:123-128 (gate and handoff),
lt.java:76-80 (state refused), libpizzaboy-jni.so pizza.c:931-937 (path buffer),
lt.java:76-80 (state refused), MainActivity.java:524-541 (CRC32 of the file),
pv.java:56, :299, nu.java:173-186 (multiplayer BIOS exchange), libpizzaboy-jni.so pizza.c:931-937 (path buffer),
:944-945 (boot flag), :637-646 (low precision BIOS), global.c:22-24, :97-99
(defaults), mmu.c:1840-1853 (replacement, gate, read, flag), :2422-2426 (forced
HLE), cpu.c:34-40 (boot vector), gba.c:2739-2743 (CRC32 in the save state),
+18 -14
View File
@@ -6,9 +6,9 @@ upstream: closed-source
version_source:
url: "https://play.google.com/store/apps/details?id=it.dbtecno.pizzaboypro&hl=en"
pattern: '\[\[\["([^"]+)"\]\],\[\[\[\d+'
no_genuine_copy: "7.4.15"
no_genuine_copy: "7.4.17"
author: "Pizza Emulators"
profiled_date: "2026-10-20"
profiled_date: "2026-10-24"
core_version: "6.0.6"
display_name: "Nintendo - Game Boy / Color (Pizza Boy GBC)"
mode: standalone
@@ -29,13 +29,17 @@ notes: |
are read here, both carrying the developer certificate sha256
b3ee584096acf4667bb9346daa9cce19237ef7ce95c99e9260ac89be0f7d6130 (CN=Davide Berra,
O=DBTecno) and a source stamp: Pro 6.0.6 (versionCode 231), which supplies the Java
and the resources, and Basic 4.1.14 (versionCode 210, an APKMirror bundle), whose
arm64-v8a libpizzaboy-jni.so ships DWARF and an unstripped symbol table and supplies
every native reference below as its own file and line. Java line numbers are those
of Pro 6.0.6 unless a Basic 4.1.14 reference is named. The Pro on the store is 7.4.15
and no genuine copy of it is reachable: apkcombo no longer resolves, the APKPure API
holds no entry for either package, APKMirror and Uptodown carry the Basic package
alone, apkvision stops at Pro 5.2.2, and archive.org holds 6.0.6 alone. The Pro
and the resources, and Basic 4.1.15 (versionCode 211, an APKMirror bundle of 22 Oct
2026 whose base and arm64-v8a splits carry a valid v2 and v3 signature by that
certificate), whose arm64-v8a libpizzaboy-jni.so ships DWARF and an unstripped symbol
table and supplies every native reference below as its own file and line. Every
native reference first read on Basic 4.1.14 falls on the same lines and functions in
4.1.15, and mmu_load_bios keeps the 0x10000 clear, the 0x2000 read and the 0x100 and
0x900 gate. Java line numbers are those of Pro 6.0.6 unless a Basic 4.1.15 reference
is named. The Pro on the store is 7.4.17 and no genuine copy of it is reachable:
apkcombo no longer resolves, APKPure lists 7.4.17 as coming soon with no file,
APKMirror carries the Basic package alone, apkvision stops at Pro 5.2.2, and
archive.org holds 6.0.6 alone. The Pro
ships its core as a stripped armeabi-v7a build. It carries the same log strings and
the same constants as the Basic core, the 64 KB clear, the 8192 byte read cap, the
256 byte header copy and the 256 and 2304 byte gate, and 65 of the 70 entry points
@@ -55,7 +59,7 @@ notes: |
BIOS and Gameboy Color ROMs BIOS, and it is read only while Load BIOS file is on,
off by default (res/xml/pref_general.xml:89-99). In the free package the same three
preferences are declared android:enabled="false" behind a paid badge, and the Basic
4.1.14 Java keeps the whole handoff to the core behind them. A ROM whose name ends
4.1.15 Java keeps the whole handoff to the core behind them. A ROM whose name ends
in .gb or .sgb takes the first slot, every other name takes the second.
The library never examines the name, the extension or the content: the byte count of
@@ -67,7 +71,7 @@ notes: |
cartridge entry, and the animation runs until it reaches 0x100, at which point the
active MMU returns to the cartridge and the accumulator is restored. A multiplayer
session exchanges the CRC32 of the Game Boy slot so that both peers run the same
file. The Basic 4.1.14 Java carries no such exchange, and its core skips the boot
file. The Basic 4.1.15 Java carries no such exchange, and its core skips the boot
while a multiplayer peer is connected.
Everything else the app opens it makes itself: the default skins and the cheat
@@ -100,7 +104,7 @@ files:
Nothing else is examined: no name, size range, header or hash test exists on
either side of the bridge, and a count that is neither 256 nor 2304 is refused.
A multiplayer session exchanges the CRC32 of this file so that both peers run
the same one. In Basic 4.1.14 the picker alone remains: the document is copied
the same one. In Basic 4.1.15 the picker alone remains: the document is copied
into the temp directory, and when its name ends in zip every file entry is
extracted there instead, the last one written becoming the stored path.
source_ref: "Pizza Boy GBC Pro 6.0.6 MainActivity.java:702 (native method),
@@ -109,7 +113,7 @@ files:
codes), :96-113 (picker result and copy), :116-192 (both preferences),
Common.java:42 (copy to the application directory), FileDialog.java:949-975
(legacy browser, zip entry to bios.bin), res/xml/pref_general.xml:89-99
(defaults); Pizza Boy C Basic 4.1.14 MainActivity.java:3196-3202 (gate and slot
(defaults); Pizza Boy C Basic 4.1.15 MainActivity.java:3207-3213 (gate and slot
selection), SettingsActivity.java:66-155 (picker result, zip entries, copy),
wd.java:1607-1630 (copy to the temp directory), libpizzaboy-jni.so
pizza.c:1028-1029 (path into global_bios_file), global.c:28 (char[256]),
@@ -136,6 +140,6 @@ files:
gap the 2304 byte layout leaves for it.
source_ref: "Pizza Boy GBC Pro 6.0.6 MainActivity.java:8073-8078 (slot selection),
SettingsActivity.java:98 (preference key), :158-192 (preference and picker),
res/xml/pref_general.xml:97-99; Pizza Boy C Basic 4.1.14 libpizzaboy-jni.so
res/xml/pref_general.xml:97-99; Pizza Boy C Basic 4.1.15 libpizzaboy-jni.so
mmu.c:435-452 (read, header copy, 2304 gate), gameboy.c:1177-1180 (model from
the return value), :1193-1199 (program counter, accumulator, palette)"
+8 -8
View File
@@ -4,7 +4,7 @@ core_classification: other
source: "https://github.com/habib256/pom2"
upstream: "https://github.com/habib256/pom2"
profiled_date: "2026-10-23"
source_commit: "b7c14c5b5d8ed78402c0c1efc196bb1bc7f93e37"
source_commit: "37dbb9d885ec8771f9383959cb1a2ded9950ec31"
core_version: "0.9.8"
display_name: "Apple - Apple II (POM2)"
cores:
@@ -141,7 +141,7 @@ notes: |
Media named by the code are not firmware and are not listed here: the
browser demo boots bundled_disks/DIX-fix.po on the //c PAL preset
(wasm/shell.html:102-105, src/main.cpp:313-319), and the headless CLI
(wasm/shell.html:114-117, src/main.cpp:313-319), and the headless CLI
mounts disks_5.4/dos33_master.dsk by default
(src/pom2_headless.cpp:265-267). Disk, tape and hard-disk images are
browsed from disks_5.4/, disks_3.5/, hdv/, floppyemu/, bundled_disks/,
@@ -512,7 +512,7 @@ files:
sha256: "7f8e50c0e8a409991264201f9300f109b872b68e09c43f3e6c26af35fd8b89af"
sha1: "3a9d881a8a8d30f55b9719aceebbcf717f829d6f"
validation: [size, sha256]
source_ref: "src/SlotCardFactory.cpp:64-96, src/SlotCardFactory.cpp:399-414, src/MouseCard.cpp:119-153, src/MouseCardAppleWin.cpp:90-103, src/RomFetch.cpp:243-248"
source_ref: "src/SlotCardFactory.cpp:64-96, src/SlotCardFactory.cpp:399-414, src/MouseCard.cpp:120-154, src/MouseCardAppleWin.cpp:90-103, src/RomFetch.cpp:243-248"
note: "Needed by both mouse cards: the MC68705 card also needs the MCU ROM, the AppleWin HLE card needs this one only. The fetcher extracts it from the MAME a2mouse set as 341-0270-c.4b."
- name: "mouse_341-0269.bin"
path: "roms/mouse_341-0269.bin"
@@ -523,7 +523,7 @@ files:
sha256: "66480812edad5f6bd70349949cf8bd8fbafee2dc8bf396541d4e78bac2629ec0"
sha1: "3a2baa6648efe4456d3ec3721216e57c64f7acfc"
validation: [size, sha256]
source_ref: "src/SlotCardFactory.cpp:64-96, src/MouseCard.cpp:150-153, src/M68705P3.cpp:85-104, src/RomFetch.cpp:239-242"
source_ref: "src/SlotCardFactory.cpp:64-96, src/MouseCard.cpp:151-154, src/M68705P3.cpp:85-104, src/RomFetch.cpp:239-242"
note: "The MC68705 mouse card leaves its slot empty without it."
- name: "grappler_plus.bin"
path: "roms/grappler_plus.bin"
@@ -560,7 +560,7 @@ files:
sha256: "4fa1323ba31f4bd562486838397b7744257c126806766e360876720daca6e2aa"
sha1: "6dab633470c6bc4cb3e81d09fda46597caf8ee57"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:441-459, src/SuperSerialCard.cpp:765-771, src/RomCatalog.h:147-154, src/RomFetch.cpp:281-284"
source_ref: "src/SlotCardFactory.cpp:441-459, src/SuperSerialCard.cpp:773-779, src/RomCatalog.h:147-154, src/RomFetch.cpp:281-284"
note: "Three names are probed in order and a file that is not 2048 bytes is refused. Without it the card runs a hand-written slot ROM: PR#n, IN#n and the Pascal 1.1 entries work, the firmware commands and printer mode are absent. Not loaded on the //c and //c Plus. The fetcher extracts it from the MAME a2ssc set as 341-0065-a.bin."
- name: "grappler_eps-1.bin"
path: "roms/grappler_eps-1.bin"
@@ -640,7 +640,7 @@ files:
sha256: "ecca793179427fdd193373080bf23e49a95743bd7b5e0b218c747663938b6c03"
sha1: "60f434f5325899d7ea257a6e56e6f53eae65146a"
validation: [size, sha256]
source_ref: "src/ClockCard.cpp:582-643, src/RomCatalog.h:216-226, src/RomFetch.cpp:227-230"
source_ref: "src/ClockCard.cpp:592-653, src/RomCatalog.h:216-226, src/RomFetch.cpp:227-230"
note: "The card loads a 256-byte slot ROM or the 2 KB chip, which supplies the $C800 expansion ROM as well. The fetch gate names the 2 KB dump and replaces a 256-byte file. The first four even bytes must read $08, $28, $58, $70, the ProDOS clock signature, or the synthetic ROM stays in place."
- name: "liron.rom"
path: "roms/liron.rom"
@@ -978,7 +978,7 @@ files:
bundled: true
size: 759720
sha1: "3061cf7af25793a655a1ff5a509385f3620f3eb3"
source_ref: "src/main.cpp:560-573"
source_ref: "src/main.cpp:581-594"
note: "Falls back to the system DejaVu, Arial Unicode or Segoe UI, then to the ImGui bitmap font."
- name: "fa-solid-900.ttf"
path: "fonts/fa-solid-900.ttf"
@@ -988,7 +988,7 @@ files:
bundled: true
size: 426112
sha1: "0c8c9706abc0116f08b66d11a69da6aa9ef7e6bf"
source_ref: "src/main.cpp:620-638"
source_ref: "src/main.cpp:641-659"
note: "Without it every icon renders as an empty box."
- name: "Apple_II_plus.jpg"
path: "pic/Apple_II_plus.jpg"
+2 -2
View File
@@ -3,7 +3,7 @@ type: standalone + libretro
core_classification: official_port
source: "https://github.com/hrydgard/ppsspp"
profiled_date: "2026-10-21"
source_commit: "c86d7a268d1ce9a94ae3be662f987c5b6a724ef9"
source_commit: "31e94fcf68e55d4794e436236dfcde10c817c0fb"
core_version: "Git"
display_name: "Sony - PlayStation Portable (PPSSPP)"
cores:
@@ -64,7 +64,7 @@ notes: |
(Core/Util/PathUtil.cpp:146-147), which the libretro core places under
the save directory (libretro/libretro.cpp:1265, 1269). On boot, a game
disc carrying a newer firmware updater than the installed one is
unpacked into it (Core/System.cpp:591-594). Its flash0:/font,
unpacked into it (Core/System.cpp:596-599). Its flash0:/font,
kd/libmp4.prx, kd/mp4msv.prx and kd/mpeg.prx replace the HLE modules
when present (Core/HLE/HLE.cpp:408-446).
PSP_DEFAULT_FIRMWARE = 660 (Core/ConfigValues.h:40).
+1 -1
View File
@@ -7,7 +7,7 @@ cores:
- rpcs3
- "rpcs3-sa"
profiled_date: "2026-03-30"
source_commit: "d9efc6e83eebf6f8cb495b82400f0e349a40e2c0"
source_commit: "87766f9e985a0f4e64b4139e44de26bab4dffe37"
core_version: "0.0.35"
display_name: "Sony - PlayStation 3 (RPCS3)"
systems: [sony-playstation-3]
+1 -1
View File
@@ -4,7 +4,7 @@ core_classification: official_port
source: "https://github.com/LekKit/RVVM"
upstream: "https://github.com/LekKit/RVVM"
profiled_date: "2026-03-25"
source_commit: "e7214efa23a9ab72c489c456889af79aa552873f"
source_commit: "343f6784c8922446083c5d5bd111d7c1eb8590eb"
core_version: "0.7-git"
display_name: "RVVM"
cores: [rvvm]
+1 -1
View File
@@ -5,7 +5,7 @@ source: "https://github.com/libretro/same_cdi"
upstream: "https://github.com/mamedev/mame"
profiled_date: "2026-03-25"
source_commit: "ff9bb99a50d518aef6d2add1c49b7c44447e3e78"
upstream_commit: "61a222977fd29f22ce11fbea3f7c290fd7ced091"
upstream_commit: "578dd9f9b7416ad57b1b92374ecf9dd4fa07fb92"
core_version: "Git"
display_name: "Philips - CDi (SAME CDi)"
cores: [same_cdi]
+16 -16
View File
@@ -4,7 +4,7 @@ core_classification: community_fork
source: "https://gitlab.com/jengun/sdltrs"
upstream: "http://sdltrs.sourceforge.net"
profiled_date: "2026-10-23"
source_commit: "57c90cc6393da6c2e5d565ddfbb0c80449fc6ed2"
source_commit: "675d169d350e77b31d494e1efd0354abacc3c8e3"
core_version: "1.2.35"
display_name: "Tandy - TRS-80 (SDL2TRS)"
cores:
@@ -25,14 +25,14 @@ notes: |
Three ROM slots exist, one per model family, and trs_rom_init picks one from
trs_model. Model I takes romfile1, Model III and Model 4 share romfile3, and
Model 4P takes romfile4p (src/trs_cmd_rom.c:868-894). The defaults are level2.rom,
model3.rom and model4p.rom, each prefixed by ROM_PATH (src/trs_options.c:864-866).
model3.rom and model4p.rom, each prefixed by ROM_PATH (src/trs_options.c:867-869).
ROM_PATH is a build define left empty unless a packager sets it
(src/trs_options.c:53-54, CMakeLists.txt:42), so a stock build resolves the names
against the working directory.
-rom, -r and -romfile write to the slot of the model selected at the moment
they are parsed (src/trs_options.c:597-607). Options are applied in command-line
order after the config file has been read (src/trs_options.c:984-1004), so -m has
they are parsed (src/trs_options.c:600-610). Options are applied in command-line
order after the config file has been read (src/trs_options.c:993-1013), so -m has
to come first to redirect them, and a model key in the config file otherwise
decides. -rom1, -rom3 and -rom4p address a slot directly. The GUI ROM browser
filters on .bin, .hex, .iii and .rom (src/trs_sdl_gui.h:63, src/trs_sdl_gui.c:2595-2601).
@@ -63,9 +63,9 @@ files:
description: "TRS-80 Model I ROM"
required: true
max_size: 18432
source_ref: "src/trs_options.c:81 (romfile1), src/trs_options.c:864 (default name), src/trs_cmd_rom.c:871-884 (trs_model 1)"
source_ref: "src/trs_options.c:81 (romfile1), src/trs_options.c:867 (default name), src/trs_cmd_rom.c:871-884 (trs_model 1)"
note: >
Model I is the model a stock configuration selects (src/trs_options.c:891), so
Model I is the model a stock configuration selects (src/trs_options.c:900), so
this is the slot an unconfigured run reads. Without it the machine runs the
compiled-in diagnostic stub and nothing else. max_size is the shared ROM
buffer ceiling: a longer file is truncated, never rejected, and only the
@@ -75,7 +75,7 @@ files:
description: "TRS-80 Model III and Model 4 ROM"
required: true
max_size: 18432
source_ref: "src/trs_options.c:82 (romfile3), src/trs_options.c:865 (default name), src/trs_cmd_rom.c:885-889 (trs_model 3 and 4)"
source_ref: "src/trs_options.c:82 (romfile3), src/trs_options.c:868 (default name), src/trs_cmd_rom.c:885-889 (trs_model 3 and 4)"
note: >
Serves Model III and Model 4 alike. The stub text spells out that Model 4
mode needs a Model 3 image (src/trs_cmd_rom.c:110-115). This is the one slot
@@ -89,7 +89,7 @@ files:
description: "TRS-80 Model 4P boot ROM"
required: false
max_size: 18432
source_ref: "src/trs_options.c:83 (romfile4p), src/trs_options.c:866 (default name), src/trs_cmd_rom.c:890-893 (trs_model 5)"
source_ref: "src/trs_options.c:83 (romfile4p), src/trs_options.c:869 (default name), src/trs_cmd_rom.c:890-893 (trs_model 5)"
note: >
Optional because the compiled-in replacement is a working boot ROM rather
than a stub. html/index.html states the free ROM boots only Model 4
@@ -202,7 +202,7 @@ analysis:
note: "Reads 0x0000-0x2FFF only. -speedup lnw sets the 4 MHz clock and the low 16 KB banking."
character_generators:
source_ref: "src/trs_chars.c:12 (trs_char_data), src/trs_options.c:404-436 (charset names), src/trs_sdl_interface.c:1903-1908"
source_ref: "src/trs_chars.c:12 (trs_char_data), src/trs_options.c:404-436 (charset names), src/trs_sdl_interface.c:1904-1909"
note: >
Every character set is a compiled-in bitmap table selected by -charset1,
-charset3 and -charset4. The tree holds no external font file and reads
@@ -250,24 +250,24 @@ analysis:
note: "Named on the command line, in the config file or in a disk set, with no fixed filename"
entries:
- what: "floppy images in drives 0-7, JV1, JV3 and DMK"
source_ref: "src/trs_options.c:584-586, src/trs_disk.c:775-913"
source_ref: "src/trs_options.c:587-589, src/trs_disk.c:775-913"
- what: "hard drive images, units 0-3"
source_ref: "src/trs_options.c:587-589, src/trs_hard.c:312-320, src/trs_hard.c:569-654"
source_ref: "src/trs_options.c:590-592, src/trs_hard.c:312-320, src/trs_hard.c:569-654"
- what: "cassette images, .cas, .cpt and .wav"
source_ref: "src/trs_options.c:581-583, src/trs_cassette.c:522-557"
source_ref: "src/trs_options.c:584-586, src/trs_cassette.c:522-557"
- what: "stringy floppy wafers in drives 0-7, .esf"
source_ref: "src/trs_options.c:590-592, src/trs_stringy.c:276-317, src/trs_stringy.c:342-350"
source_ref: "src/trs_options.c:593-595, src/trs_stringy.c:276-317, src/trs_stringy.c:342-350"
- what: "disk set, a plain list of the paths above"
source_ref: "src/trs_options.c:593-596, src/trs_disk.c:3753-3787"
source_ref: "src/trs_options.c:596-599, src/trs_disk.c:3753-3787"
- what: "CMD program loaded straight into memory, from a bare argument"
source_ref: "src/trs_options.c:978-979, src/trs_cmd_rom.c:845-866"
source_ref: "src/trs_options.c:987-988, src/trs_cmd_rom.c:845-866"
- what: "serial port tty, defaulting to /dev/ttyS0 on Linux"
source_ref: "src/trs_uart.c:54-56, src/trs_uart.c:144-202"
generated_files:
written_and_read_back:
- filename: ".sdltrs.t8c"
source_ref: "src/trs_options.c:903-916, src/trs_options.c:1010-1013"
source_ref: "src/trs_options.c:912-925, src/trs_options.c:1019-1022"
note: "Configuration, written to the home directory on first run when none is found."
- filename: "<name>.t8s"
source_ref: "src/trs_state_save.c:38-66, src/trs_state_save.c:68-113"
+1 -1
View File
@@ -4,7 +4,7 @@ core_classification: game_engine
source: "https://gitlab.com/solarus-games/solarus"
upstream: "https://gitlab.com/solarus-games/solarus"
profiled_date: "2026-08-08"
source_commit: "a0b5d4c966bf3f4daec2efc879378d4cf1b62ca7"
source_commit: "86fa2031e1303aaaf9924a2f03dfdb7b7d1cbf4b"
core_version: "2.2.0"
display_name: "Solarus Game Engine"
cores:
+7 -7
View File
@@ -5,14 +5,14 @@ source: "https://github.com/libretro/crawl-ref"
upstream: "https://github.com/crawl/crawl"
profiled_date: "2026-03-25"
source_commit: "cc2530f377a3a5d686d4b6a360d88b01de0fbc59"
upstream_commit: "8757df5d4397047058e25e456cac506db9c1442b"
upstream_commit: "a5ed93406571b9682050cfc318b15b9f637d4e7e"
core_version: "0.16-a0"
display_name: "Dungeon Crawl Stone Soup"
cores: [stonesoup]
systems: []
notes: |
Roguelike dungeon crawler. Fork frozen at DCSS 0.16-a0 (upstream now ~0.32).
Roguelike dungeon crawler. Fork frozen at DCSS 0.16-a0.
Last libretro commit: Oct 2019. Marked experimental.
Accepts .crawlrc config files as content (supported_extensions: crawlrc).
@@ -25,11 +25,11 @@ notes: |
Data is NOT compiled into the binary.
dat/ tree contents (532 files, 16 MB):
- dat/tiles/*.png (floor, wall, feat, player, main, gui, icons) (tiletex.cc:89-97)
- dat/DejaVuSans.ttf, dat/DejaVuSansMono.ttf (fontwrapper-ft.cc:79)
- dat/descript/*.txt, dat/database/*.txt (database.cc:72-140)
- dat/des/*.des (level generation) (maps.cc:1457)
- dat/dlua/*.lua, dat/clua/*.lua (maps.cc:1465)
- dat/tiles/*.png (floor, wall, feat, player, main, gui, icons) (crawl-ref/source/tiletex.cc:89-97)
- dat/DejaVuSans.ttf, dat/DejaVuSansMono.ttf (crawl-ref/source/fontwrapper-ft.cc:79)
- dat/descript/*.txt, dat/database/*.txt (crawl-ref/source/database.cc:72-140)
- dat/des/*.des (level generation) (crawl-ref/source/maps.cc:1457)
- dat/dlua/*.lua, dat/clua/*.lua (crawl-ref/source/maps.cc:1465)
- dat/defaults/ (settings)
Not on buildbot.libretro.com/assets/system/.
+7 -5
View File
@@ -7,9 +7,9 @@ source:
upstream: "https://github.com/trzy/Supermodel"
profiled_date: "2026-09-17"
source_commit:
standalone: "32c29b036fc18310e2e6b63370d89c7ee6d790d1"
standalone: "58d4b87470455fd942edea06f3268fe18815619b"
libretro: "84bc106b45b279bf868a53b9232897c8dc10ca17"
upstream_commit: "32c29b036fc18310e2e6b63370d89c7ee6d790d1"
upstream_commit: "58d4b87470455fd942edea06f3268fe18815619b"
core_version:
standalone: "0.3a-WIP"
libretro: "v0.3a-libretro"
@@ -61,11 +61,13 @@ notes: |
the same relative directories are used when Config/ exists in the working
directory, otherwise ~/.supermodel/ when present, otherwise the XDG data and
config homes. Supermodel.ini is written from a compiled-in default when it is
absent and rewritten after interactive input configuration. NVRAM/<game>.nv
and Saves/<game>.st<slot> are written by the emulator itself.
absent and rewritten after interactive input configuration and when the
GUI saves its settings. NVRAM/<game>.nv and Saves/<game>.st<slot> are
written by the emulator itself.
ref: Src/OSD/Windows/FileSystemPath.cpp:28-51, Src/OSD/OSX/FileSystemPath.cpp:28-50,
Src/OSD/Unix/FileSystemPath.cpp:51-160, Src/OSD/SDL/Main.cpp:1407-1426,
Src/OSD/SDL/Main.cpp:1458, Src/OSD/SDL/Main.cpp:2274
Src/OSD/SDL/Main.cpp:1458, Src/OSD/SDL/Gui.cpp:1492,
Src/OSD/SDL/Main.cpp:2274
The standalone also emulates the Real3D Pro-1000. Games.xml declares it as
the set pro1000 with platform Real3D Pro-1000, and its firmware (p1_p4.bin,
+12 -8
View File
@@ -5,9 +5,10 @@ source: "https://github.com/DirtBagXon/model3emu-code-sinden"
upstream: "https://github.com/trzy/Supermodel"
author: "DirtBagXon"
profiled_date: "2026-10-23"
source_commit: "44c83af50cb156773fdb0f4af1d8e311b10bf154"
upstream_commit: "32c29b036fc18310e2e6b63370d89c7ee6d790d1"
core_version: "0.3a-32c29b0-mm DirtBagXon (Sinden)"
source_commit: "04551891e9ca657347d050bfafc19fa2c0bd5efb"
upstream_commit: "e048c095839126f552b9c10dac34757a0164a284"
upstream_frozen: "The fork is rebased on trzy's tree at e048c09, the revision its version string names. Later trzy commits are not in the fork."
core_version: "0.3a-e048c09-mm DirtBagXon (Sinden)"
display_name: "Sega - Model 3 (Supermodel, Sinden fork)"
verification: existence
cores:
@@ -19,7 +20,7 @@ systems:
notes: |
DirtBagXon's Supermodel fork with Sinden light gun support, rebased on
trzy's tree at 32c29b0, the revision its version string names. RetroPie
trzy's tree at e048c09, the revision its version string names. RetroPie
builds the main branch on x86 and the arm branch everywhere else, the arm
branch at commit 454ed3f when the system SDL2 is 2.0.22 or older. The arm
branch is a separate, older line (revision
@@ -65,7 +66,10 @@ notes: |
Crosshairs are drawn as primitives, no Assets bitmap and no Music.xml are
read, which is why RetroPie installs Assets on x86 only. Its Games.xml
(63 sets, size 158300, sha1 ccbc64e2f5b9aefd89ff9acd7227eff230aed8ed)
differs from the main branch copy.
differs from the main branch copy. ROCKNIX builds its supermodel-sa
package from the arm branch at b13fdd5, eight commits before that revision,
with the same Games.xml and the same fixed paths
(ROCKNIX projects/ROCKNIX/packages/emulators/standalone/supermodel-sa/package.mk:5).
files:
- name: "Games.xml"
@@ -76,7 +80,7 @@ files:
sha1: "79fa74742f4b18e250c11c1dea5837fdf57cd54c"
md5: "f2f5f09ca0a275696319176b4f41b8d6"
description: "ROM set definitions"
note: "Parsed by the GameLoader constructor. Without it no game is defined, the archive name matches nothing and main returns 1. The path is the GameXMLFile key, so -game-xml-file moves it. The hash is that of Config/Games.xml at the pinned revision, 64 sets, which RetroPie copies on every install. Shipped in the 44c83af Linux, macOS and Windows release archives."
note: "Parsed by the GameLoader constructor. Without it no game is defined, the archive name matches nothing and main returns 1. The path is the GameXMLFile key, so -game-xml-file moves it. The hash is that of Config/Games.xml at the pinned revision, 64 sets, which RetroPie copies on every install. Shipped in the 0455189 Linux, macOS and Windows release archives."
source_ref: "upstream Src/OSD/SDL/Main.cpp:122, source Src/OSD/SDL/Main.cpp:1543, source Src/OSD/SDL/Main.cpp:2453-2458, source Src/GameLoader.cpp:601-610, source Src/GameLoader.cpp:1066-1071, source Src/GameLoader.cpp:1111-1113"
- name: "p1crosshair.bmp"
@@ -98,7 +102,7 @@ files:
sha1: "13c5e692c7acf2ec8243ac421d58fdf69c6c2370"
md5: "866dbf59a0e2d849de2365e1c953cc97"
description: "Player 2 light gun crosshair texture"
note: "Read in the same call as the player 1 bitmap and equally fatal when it fails to load. Both bitmaps are shipped in the 44c83af release archives."
note: "Read in the same call as the player 1 bitmap and equally fatal when it fails to load. Both bitmaps are shipped in the 0455189 release archives."
source_ref: "upstream Src/OSD/SDL/Crosshair.cpp:35, source Src/OSD/SDL/Crosshair.cpp:48-51"
- name: "Music.xml"
@@ -109,7 +113,7 @@ files:
sha1: "b44ed959fe2948a03d81b98e67ca32f2b4c37e78"
md5: "ddb4e23db15dda67539eee24de23de4b"
description: "Custom MPEG music track map"
note: "Consulted only for a game with a DSB1 or DSB2 board, and skipped when absent. RetroPie does not copy it. Shipped in the 44c83af release archives, the Windows zip with CRLF line endings (sha1 4c556c3a848ef61205a53a9a73ba5e46970d445f)."
note: "Consulted only for a game with a DSB1 or DSB2 board, and skipped when absent. RetroPie does not copy it. Shipped in the 0455189 release archives, the Windows zip with CRLF line endings (sha1 4c556c3a848ef61205a53a9a73ba5e46970d445f)."
source_ref: "upstream Src/OSD/SDL/Main.cpp:123, source Src/OSD/SDL/Main.cpp:963, source Src/Sound/MPEG/MpegAudio.cpp:88-102"
- name: "pro1000.zip"
+1 -1
View File
@@ -5,7 +5,7 @@ source: "https://github.com/libretro/swanstation"
upstream: "https://github.com/stenzek/duckstation"
profiled_date: "2026-03-25"
source_commit: "cc94ebcd38a88a0e90788d7c8bcd764a009a5fa0"
upstream_commit: "938c6d2a03e523d0e4275aa753f289a987bcb016"
upstream_commit: "fbf93c3ae9668a1ccaec28630f5ad9cc9627cda6"
core_version: "v0.1"
display_name: "Sony - PlayStation (SwanStation)"
cores: [swanstation]
+1 -1
View File
@@ -4,7 +4,7 @@ type: standalone
core_classification: game_engine
source: "https://github.com/LostArtefacts/TRX"
upstream: "https://github.com/LostArtefacts/TRX"
source_commit: "3d39911a1b839c753b6efad236db67d9fb2b273e"
source_commit: "ba65d2c12e64c6c4f00934ecaa5b3d053a6070d7"
upstream_commit: "3d39911a1b839c753b6efad236db67d9fb2b273e"
profiled_date: "2026-10-04"
cores: []
+1 -1
View File
@@ -4,7 +4,7 @@ type: standalone
core_classification: game_engine
source: "https://github.com/LostArtefacts/TRX"
upstream: "https://github.com/LostArtefacts/TRX"
source_commit: "3d39911a1b839c753b6efad236db67d9fb2b273e"
source_commit: "ba65d2c12e64c6c4f00934ecaa5b3d053a6070d7"
upstream_commit: "3d39911a1b839c753b6efad236db67d9fb2b273e"
profiled_date: "2026-10-23"
cores: []
+1 -1
View File
@@ -3,7 +3,7 @@ type: libretro
core_classification: frozen_snapshot
source: "https://github.com/libretro/vba-next"
upstream: "https://github.com/visualboyadvance-m/visualboyadvance-m"
upstream_commit: "8124d84a655e5261bee5eeb9f43c18630ec58a61"
upstream_commit: "b0f418b0e9305315c941f93765aa58ed1928a45c"
profiled_date: "2026-03-25"
source_commit: "788192f215ad0a1413f1625b40ebba3423fa0ade"
core_version: "SVN"
+1 -1
View File
@@ -5,7 +5,7 @@ source: "https://github.com/libretro/vbam-libretro"
upstream: "https://github.com/visualboyadvance-m/visualboyadvance-m"
profiled_date: "2026-03-25"
source_commit: "115defb3a318258ab84746d45258a1aec19d0b4b"
upstream_commit: "8124d84a655e5261bee5eeb9f43c18630ec58a61"
upstream_commit: "b0f418b0e9305315c941f93765aa58ed1928a45c"
core_version: "2.1.4"
display_name: "Nintendo - Game Boy Advance (VBA-M)"
cores:
+3 -3
View File
@@ -4,7 +4,7 @@ core_classification: game_engine
source: "https://github.com/vpinball/vpinball"
upstream: "https://github.com/vpinball/vpinball"
profiled_date: "2026-10-23"
source_commit: "f912c04bcf727a341524f251b600c6bba8f883d8"
source_commit: "639ec097a4b4e2b96455efe80da753606acd245c"
core_version: "10.8.1"
display_name: "Visual Pinball X"
cores:
@@ -83,7 +83,7 @@ notes: |
loaded with no fallback (src/renderer/Renderer.cpp:178-190),
the bumper and kicker textures (src/parts/bumper.cpp:150,162,171,186,
src/parts/kicker.cpp:200-241), the segment display textures
(src/renderer/Renderer.cpp:1640-1658), TableSizes.csv, the table size
(src/renderer/Renderer.cpp:1661-1679), TableSizes.csv, the table size
database (src/core/TableDB.cpp:16), vpinball.png for the window icon
(src/renderer/Window.cpp:280), LiberationSans-Regular.ttf, the font textboxes
and decals fall back to when neither the table folder, as
@@ -463,7 +463,7 @@ analysis:
- what: "scripts/, the .vbs library tables include"
source_ref: "src/core/FileLocator.cpp:400-433, src/core/ScriptGlobalTable.cpp:354-383, src/ui/win/codeview.cpp:2053-2061"
- what: "assets/, textures, segment display maps, TableSizes.csv, the window icon, the fallback font, the editor icons"
source_ref: "src/renderer/Renderer.cpp:178-190, src/renderer/Renderer.cpp:1640-1658, src/parts/bumper.cpp:150, 162, src/parts/bumper.cpp:171, src/parts/bumper.cpp:186, src/parts/kicker.cpp:200-241, src/core/TableDB.cpp:16, src/renderer/Window.cpp:280, src/renderer/TextRenderer.cpp:186-187, plugins/pup/PUPManager.cpp:483-485, src/ui/live/editor/EditorChrome.cpp:200"
source_ref: "src/renderer/Renderer.cpp:178-190, src/renderer/Renderer.cpp:1661-1679, src/parts/bumper.cpp:150, 162, src/parts/bumper.cpp:171, src/parts/bumper.cpp:186, src/parts/kicker.cpp:200-241, src/core/TableDB.cpp:16, src/renderer/Window.cpp:280, src/renderer/TextRenderer.cpp:186-187, plugins/pup/PUPManager.cpp:483-485, src/ui/live/editor/EditorChrome.cpp:200"
- what: "assets/blankTable.vpx, exampleTable.vpx, lightSeqTable.vpx, strippedTable.vpx"
source_ref: "src/core/AppCommands.cpp:287-293, src/ui/live/EditorUI.cpp:340-359"
note: "The live editor's default table and its four New Table templates."
+1 -1
View File
@@ -3,7 +3,7 @@ type: standalone
source: "https://github.com/Vita3K/Vita3K"
upstream: "https://github.com/Vita3K/Vita3K"
profiled_date: "2026-10-23"
source_commit: "5844e21fb6d7259a31ba1f13b98ed1a648170052"
source_commit: "dbde5491789bb5bc8cfea5d99e919518161a5dfc"
core_version: "0.2.1"
display_name: "Vita3K (PS Vita)"
cores:
+1 -1
View File
@@ -4,7 +4,7 @@ core_classification: game_engine
source: "https://github.com/Novum/vkQuake"
upstream: "https://sourceforge.net/projects/quakespasm/"
profiled_date: "2026-10-23"
source_commit: "80ec4293066505fefc1714408abd887369185c74"
source_commit: "a6cfba6904e0743dae4235f9dad9711bb5bd27f1"
core_version: "1.37.1"
display_name: "Quake (vkQuake)"
cores: ["vkquake"]
+1 -1
View File
@@ -2,7 +2,7 @@ emulator: WinUAE
type: standalone
core_classification: other
source: "https://github.com/tonioni/WinUAE"
source_commit: "17a26fa8e65e40cf4fbe33ffbdfa420a355a813d"
source_commit: "b5944088b805e518e7978ba821dca299cd1bae83"
profiled_date: "2026-10-20"
core_version: "6.1.0 beta 19"
display_name: "Commodore - Amiga (WinUAE)"
+1 -1
View File
@@ -6,7 +6,7 @@ upstream: "https://github.com/has207/xenia-edge"
author: "rfandango"
profiled_date: "2026-09-17"
source_commit: "779680ade075d2d2a4c589c6a8d57a8e26c116c0"
upstream_commit: "e569a1aa15632e957fc2adc3bfc875de51f79eab"
upstream_commit: "5045c19eefebb5807a699bc8dabac2460889242d"
core_version: "0b11201"
display_name: "Microsoft - Xbox 360 (XenDroid)"
cores:
+2 -2
View File
@@ -6,7 +6,7 @@ source:
libretro: "https://git.libretro.com/libretro/xenia-libretro"
upstream: "https://github.com/has207/xenia-edge"
source_commit:
standalone: "e569a1aa15632e957fc2adc3bfc875de51f79eab"
standalone: "5045c19eefebb5807a699bc8dabac2460889242d"
libretro: "f23c14c717ef274516f29c9b5e97d6a9db28643d"
profiled_date: "2026-10-23"
core_version:
@@ -87,7 +87,7 @@ notes: |
under the storage root, or the folder the xefu_path cvar names
(src/xenia/emulator.cc:151-165, 861-863). When xbox.xex is missing the
launch fails, the folder is created and the window names the missing file
(src/xenia/emulator.cc:882-895, src/xenia/app/emulator_window.cc:1975-1985).
(src/xenia/emulator.cc:882-895, src/xenia/app/emulator_window.cc:1995-2005).
The fork's data ships inside the executable. assets/font/Inter-VariableFont
and assets/icon are linked in by xe_embed_binary_assets and the 33
+6 -3
View File
@@ -562,7 +562,8 @@ def generate_readme(db: dict, platforms_dir: str, db_path: str = "database.json"
"# Android (Termux, after pkg install python and termux-setup-storage)",
"curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh",
"",
"# SD card mounted on a PC: --dest is the BIOS folder on the card",
"# SD card mounted on a PC: a muOS, KNULLI, ROCKNIX, Onion, spruceOS or MinUI card",
"# is found by itself. For another card, --dest is its BIOS folder",
"# (RetroArch on Switch: retroarch/cores/system, on Android: RetroArch/system)",
"curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --platform retroarch --dest /path/to/sdcard/retroarch/cores/system",
"",
@@ -570,12 +571,14 @@ def generate_readme(db: dict, platforms_dir: str, db_path: str = "database.json"
"&([scriptblock]::Create((irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1))) --check",
"```",
"",
"The script auto-detects your platform, downloads only missing files, and verifies checksums.",
"The script opens a full-screen installer, driven with the arrow keys and Enter, or with a"
" controller on a handheld. It finds your setup and its BIOS folder, downloads only the missing"
" files and checks each one. It can also copy the BIOS files from your old SD card.",
f"Every option, and what the installer detects and writes, is on the [installer page]({SITE_URL}wiki/installer/#passing-options).",
"",
"## Download BIOS packs",
"",
"A pack holds everything its platform runs: its own BIOS list plus every file its emulator cores load. Pick your platform, download the ZIP, extract to the BIOS path. Each Download link is a page that keeps its address from one release to the next. The installer above does the same file by file. At a terminal it asks whether to install everything or to choose systems, cores and regions, and `--system`, `--core`, `--region` and `--target` make the same choice without questions. For a bare minimum, build your own pack below.",
"A pack holds everything its platform runs: its own BIOS list plus every file its emulator cores load. Pick your platform, download the ZIP, extract to the BIOS path. Each Download link is a page that keeps its address from one release to the next. The installer above does the same file by file. At a terminal it offers to install everything or to choose systems, cores and regions, and `--system`, `--core`, `--region` and `--target` make the same choice without questions. For a bare minimum, build your own pack below.",
"",
"A pack over 2 GB comes in several parts (`Pack.part1of2.zip`,"
" `Pack.part2of2.zip`), and every part is needed. Each part is an"
+18 -1
View File
@@ -4011,6 +4011,11 @@ def build_parser() -> argparse.ArgumentParser:
"--offline", action="store_true",
help="read only what the cache holds, no network access",
)
parser.add_argument(
"--fresh", action="store_true",
help="ask the forges again for branch tips, tags and releases instead "
"of the answers cached in the last six hours",
)
parser.add_argument(
"--cache-dir", default=DEFAULT_CACHE,
help="download cache directory (default: %(default)s)",
@@ -4233,9 +4238,14 @@ def _apply_writes(
applied = rebase_refs(target, report, args.accept_changed)
moved = bump_commit(target, report, args.accept_changed)
if args.rebase_refs and applied and not moved:
keyed = any(isinstance(profile.get(f), dict) for f in ("source_commit", "upstream_commit"))
reason = (
"its pins are keyed by build mode and are set by hand"
if keyed else "the prose or an annotated ref has to move first"
)
print(
f"{name}: refs recaled but the pin will not follow, so nothing "
"was written: the prose or an annotated ref has to move first",
f"was written: {reason}",
file=sys.stderr,
)
return
@@ -4539,6 +4549,9 @@ def _print_triage(
def _refuse_flag_combinations(args: argparse.Namespace) -> None:
"""Exit on a flag the chosen mode would not apply, before any request."""
if args.fresh and args.offline:
print("--fresh asks the forges again, which --offline forbids.", file=sys.stderr)
raise SystemExit(1)
if args.accept_changed and not args.emulator:
print(
"--accept-changed applies to one profile at a time: its diff has "
@@ -4626,6 +4639,10 @@ def main() -> None:
"""Build one report per selected profile, then apply writes and output."""
args = build_parser().parse_args()
_refuse_flag_combinations(args)
if args.fresh:
# Tips cached before an upstream commit hid it for six hours: EKA2L1,
# trzy/Supermodel and VICE read as behind their real HEAD.
upstream.MOVING_TTL = 0
profiles = load_emulator_profiles(args.emulators_dir, skip_aliases=False)
selected = select_profiles(profiles, args)
_check_quota(len(selected), args.offline)
+5 -2
View File
@@ -743,8 +743,11 @@ class ARefusalTheProbeDoesNotRaise(unittest.TestCase):
install._DETECTION_REFUSED.clear()
self.addCleanup(install._DETECTION_REFUSED.clear)
quiet = mock.patch.object(install.Path, "exists", lambda self: False)
with quiet, mock.patch.object(install._SETUP_SEARCH, "active", True, create=True), \
contextlib.redirect_stderr(io.StringIO()):
# What _detection_guarded sets while it looks for setups.
outer = getattr(install._SETUP_SEARCH, "active", False)
install._SETUP_SEARCH.active = True
self.addCleanup(setattr, install._SETUP_SEARCH, "active", outer)
with quiet, contextlib.redirect_stderr(io.StringIO()):
self.assertFalse(install._exists(target))
self.assertFalse(install._exists(base / "absent"))
self.assertEqual(install.closed_folder(target), (closed, "Permission denied"))
+12
View File
@@ -4599,6 +4599,18 @@ class TestRateLimitEndsOneProfile(unittest.TestCase):
self.assertEqual(by_name["after"]["needs_review"], 1)
class FreshRefusesOffline(unittest.TestCase):
def test_the_pair_is_refused(self):
saved = sys.argv
try:
sys.argv = ["profile_sync.py", "--all", "--fresh", "--offline"]
with contextlib.redirect_stderr(io.StringIO()), self.assertRaises(SystemExit) as caught:
profile_sync.main()
finally:
sys.argv = saved
self.assertEqual(caught.exception.code, 1)
class TestOutputModesApplyTheirFlags(unittest.TestCase):
"""--changed-only narrows --json too. Extras are refused off the text report."""
+14 -6
View File
@@ -198,8 +198,10 @@ file list is downloaded once and handed to each run.
always come from one commit.
3. Prints the file count and total size, then a safety notice counting the
entries the collection cannot serve, how many of those the platform marks
required, and why. At a terminal, it then offers to install everything or
to choose systems, cores and regions (see below).
required, and why. At a terminal, the
[full-screen interface](#the-full-screen-interface) then offers to install
everything or to choose systems, cores and regions, and `--plain` asks the
same as questions (see below).
4. Hashes what is already in the destination and reports how many entries are
present, verified, or present with the wrong contents.
5. Copies from this machine what it already holds: a file misplaced in the
@@ -552,7 +554,10 @@ counts them (`3 fixed from copies already in the BIOS folder`).
## Choosing what to install
By default the installer fetches everything the platform runs. At a terminal,
after detection, it asks:
the plan screen of the [full-screen interface](#the-full-screen-interface)
offers **Install**, **Choose systems** and **Options**. With `--plain`, or where
the full screen cannot open (a terminal smaller than 40x12, `TERM=dumb`), the
same choice comes as questions after detection:
```
RetroArch: 8069 files, 6.5 GB.
@@ -906,10 +911,13 @@ forced `--platform minui` stops and asks for the card's root as `--dest`, and a
card (its `Bios/`) is refused with the root to name instead. On Android a forced `--platform retroarch` falls back to
`<shared storage>/RetroArch/system` instead, a home directory there belonging
to Termux rather than to the frontend. Pass `--dest` to say where instead of
relying on that.
relying on that. When detection met a folder this user cannot open, under the
home folder or above the default, no default is taken: the frontend's own
configuration there may name another folder, so the run asks for `--dest`.
With nothing detected, the installer lists the platforms and asks. With several
detected, it asks which one. Both prompts need a terminal: piped into a script
With nothing detected, the setup screen lists the platforms to choose from,
and `--plain` gives the same list numbered. With several detected, the setup
screen lists each one, and `--plain` asks which. Both need a terminal: piped into a script
with no platform to install for, it prints the manual invocation, in the form
the run was started with (the one-line command for a one-liner user), and
exits 1.