chore: merge main

This commit is contained in:
Abdessamad Derraz committed 2026-10-26 21:01:54 +01:00
commit 9002c67eb6
17 files changed
+12540 -210

No files matched your search

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
+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/
+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: >
+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
+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"
+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.
+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)"
+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)"
+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"
+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"
+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
+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)
+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."""