mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-01 07:33:45 -06:00
chore: merge main
This commit is contained in:
commit
9002c67eb6
17 files changed
+12540
-210
No files matched your search
File diff suppressed because it is too large.
Load diff
+30
-27
@@ -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
@@ -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/
|
||||
|
||||
@@ -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: >
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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"
|
||||
|
||||
@@ -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,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,
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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."""
|
||||
|
||||
|
||||
Reference in new issue
Block a user