mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 13:33:24 -05:00
chore: update profiles to current upstream pins
This commit is contained in:
1 parent
61688111f0
commit
92b2a1a498
22 files changed
+3186
-1156
No files matched your search
+608
-237
File diff suppressed because it is too large.
Load diff
+81
-26
@@ -3,44 +3,99 @@ type: standalone + libretro
|
||||
core_classification: pure_libretro
|
||||
source: "https://github.com/AloysHF/DingooEmu"
|
||||
upstream: "https://github.com/AloysHF/DingooEmu"
|
||||
profiled_date: "2026-09-03"
|
||||
source_commit: "746d6f116c707b9a2ede23c4b25468f90e26af26"
|
||||
core_version: "0.2.0"
|
||||
display_name: "Dingoo - A320 (DingooEmu)"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "f57c9339e6021cd37c4bd694c14b0813a9b5ee72"
|
||||
core_version: "0.3.0"
|
||||
display_name: "Dingoo - A320 / Gemei A330 (DingooEmu)"
|
||||
cores:
|
||||
- dingooemu
|
||||
systems:
|
||||
- dingoo-a320
|
||||
- gemei-a330
|
||||
|
||||
notes: |
|
||||
Dingoo A320 emulator written in Rust by AloysHF. The libretro core and
|
||||
the dingoo-emu standalone binary share the dingooemu-core crate. A .app
|
||||
file is parsed from its full path (need_fullpath = true,
|
||||
crates/dingooemu-libretro/src/api.rs:87; Emulator::from_path,
|
||||
crates/dingooemu-core/src/emulator.rs:316-319;
|
||||
crates/dingooemu-core/src/app_loader.rs:119-122) and its imports are
|
||||
bound to Rust implementations of the Dingoo SDK
|
||||
(crates/dingooemu-core/src/emulator/sdk_hle/mod.rs:22-30). No firmware
|
||||
image, font or system file backs those calls.
|
||||
Dingoo A320 and Gemei A330 emulator written in Rust by AloysHF. The
|
||||
libretro core and the dingoo-emu standalone binary share the
|
||||
dingooemu-core crate. Content is read from its full path (need_fullpath
|
||||
= true, crates/dingooemu-libretro/src/api.rs:87;
|
||||
crates/dingooemu/src/main.rs:226; crates/dingooemu-core/src/emulator.rs:33-37;
|
||||
crates/dingooemu-core/src/package.rs:124-135). The CCDL package's load
|
||||
address selects the runtime: a .app loaded in the 0x8xxxxxxx range runs on
|
||||
the MIPS32 interpreter as an A320, a .cc, .c2s or .c3s loaded at
|
||||
0x10100000 (retail SDK) or 0x13800000 (homebrew SDK) runs on the
|
||||
ARM32/Thumb interpreter as an A330
|
||||
(crates/dingooemu-core/src/content.rs:66-74, 104-121;
|
||||
crates/dingooemu-core/src/emulator.rs:44-55). Both runtimes bind the
|
||||
package's imports to Rust implementations of the device SDK
|
||||
(crates/dingooemu-core/src/a320/runtime/sdk_hle/mod.rs:22-30;
|
||||
crates/dingooemu-core/src/a330/runtime/sdk_hle/mod.rs:226-234). No
|
||||
firmware code is executed and no font or system file backs those calls.
|
||||
|
||||
The guest file API (crates/dingooemu-core/src/emulator/sdk_hle/files.rs:43-129)
|
||||
The A320 guest file API
|
||||
(crates/dingooemu-core/src/a320/runtime/sdk_hle/files.rs:43-128)
|
||||
resolves a name in three steps: a file under the save directory, a
|
||||
resource packed inside the .app, then a host file relative to the .app's
|
||||
own directory (crates/dingooemu-core/src/emulator.rs:1684-1706,
|
||||
crates/dingooemu-core/src/emulator.rs:1433-1501). fsys_findfirst
|
||||
own directory (crates/dingooemu-core/src/a320/runtime.rs:1645-1665,
|
||||
crates/dingooemu-core/src/a320/runtime.rs:1592-1618,
|
||||
crates/dingooemu-core/src/a320/runtime.rs:1424-1428,
|
||||
crates/dingooemu-core/src/a320/runtime.rs:1449-1462). fsys_findfirst
|
||||
enumerates the .app's directory and refuses to leave it
|
||||
(crates/dingooemu-core/src/emulator.rs:1545-1591). Files the game
|
||||
creates land in the frontend save directory
|
||||
(crates/dingooemu-libretro/src/api.rs:152-155) or, when the frontend
|
||||
gives none, beside the .app (crates/dingooemu-core/src/emulator.rs:411).
|
||||
The core queries RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY only
|
||||
(crates/dingooemu-core/src/a320/runtime.rs:1519-1529).
|
||||
|
||||
The A330 guest file API
|
||||
(crates/dingooemu-core/src/a330/runtime/sdk_hle/files.rs:74-135)
|
||||
resolves a name in five steps: a file under the save directory, a host
|
||||
file relative to the content's directory, a resource packed inside the
|
||||
package, the zip payload appended to the package, then an entry of the
|
||||
firmware archive mounted from the content's directory; a name none of
|
||||
them answers fails the open. fsys_findfirst enumerates the content's
|
||||
directory and refuses to leave it
|
||||
(crates/dingooemu-core/src/a330/runtime/sdk_hle/files.rs:381-395).
|
||||
|
||||
Files the game creates land in the frontend save directory
|
||||
(crates/dingooemu-libretro/src/api.rs:150-155,
|
||||
crates/dingooemu-core/src/emulator.rs:173-179) or, when the frontend
|
||||
gives none and in the standalone, beside the content
|
||||
(crates/dingooemu-core/src/a320/runtime.rs:372,
|
||||
crates/dingooemu-core/src/a330/runtime.rs:415-417). The core queries
|
||||
RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY only
|
||||
(crates/dingooemu-libretro/src/constants.rs:30); no system directory
|
||||
constant exists in the crate.
|
||||
|
||||
With the diagnostic core option on, dingooemu-diagnostic.txt is written
|
||||
to the save directory (crates/dingooemu-libretro/src/diagnostics.rs:83-89,
|
||||
crates/dingooemu-libretro/src/diagnostics.rs:311-316). No include_bytes!
|
||||
data is compiled in.
|
||||
to the save directory, or beside the content without one
|
||||
(crates/dingooemu-libretro/src/api.rs:156-159,
|
||||
crates/dingooemu-libretro/src/diagnostics.rs:8,
|
||||
crates/dingooemu-libretro/src/diagnostics.rs:83-89,
|
||||
crates/dingooemu-libretro/src/diagnostics.rs:310-318). No include_bytes!
|
||||
data is compiled in. The .info declares firmware_count = 0: the one file
|
||||
below is read from the content's directory, never from the system
|
||||
directory.
|
||||
|
||||
exclusion_note: "No file is read outside the content: the .app path is the only input, guest file calls resolve to the save directory, the .app's resource table or the .app's own directory, nothing queries the system directory, no data is embedded with include_bytes!, and the .info declares firmware_count = 0."
|
||||
files: []
|
||||
files:
|
||||
- name: "A330.HXF"
|
||||
system: gemei-a330
|
||||
required: false
|
||||
storage: large_file
|
||||
load_from: content_dir
|
||||
size: 76352901
|
||||
validation: [signature]
|
||||
md5: "d8e1849773223a842076ca04053a13a4"
|
||||
sha1: "69b3544d992a23e8b736c61837914a4d1b4e7bb5"
|
||||
description: "Gemei A330 firmware update archive, V1.1 build3 of 2011-02-13"
|
||||
note: >-
|
||||
Mounted when an A330 package loads: the content's directory is
|
||||
scanned and the first entry whose extension is hxf, in any case, is
|
||||
read whole. The file must start with WADF0100 and declare at offset
|
||||
20 a size within its own length; each record is a u32 name length,
|
||||
the name, one byte, a u32 data length and the data, and a zero name
|
||||
length ends the table. Names are lowercased, backslashes turned to
|
||||
slashes and a leading drive letter dropped, so Z:\SYSTEM\nls\c_936.nls
|
||||
and system/nls/c_936.nls reach the same entry. The archive is the
|
||||
last source consulted when a game opens a file the save directory,
|
||||
the content directory, the package's resources and its appended zip
|
||||
payload do not hold; without it such an open fails and the runtime
|
||||
goes on. The image itself is never hashed, and the hashes here name
|
||||
the last firmware Gemei published; the V1.10 image of 2011-01-25
|
||||
indexes the same way.
|
||||
source_ref: "crates/dingooemu-core/src/a330/runtime.rs:415-418, crates/dingooemu-core/src/a330/firmware_archive.rs:16-50, 54-58, 63-96, 117-124, crates/dingooemu-core/src/a330/runtime/sdk_hle/files.rs:108-133"
|
||||
+43
-30
@@ -3,9 +3,9 @@ type: standalone
|
||||
core_classification: enhanced_fork
|
||||
source: "https://github.com/joncampbell123/dosbox-x"
|
||||
upstream: "https://github.com/joncampbell123/dosbox-x"
|
||||
source_commit: "6cad735d685406bd4ef2a0b60a4613569e211fd8"
|
||||
profiled_date: "2026-08-08"
|
||||
core_version: "2026.08.02"
|
||||
source_commit: "c98f5a359729f61263d88ae816a4263a7a15f12e"
|
||||
profiled_date: "2026-09-17"
|
||||
core_version: "2026.08.31"
|
||||
display_name: "DOS (DOSBox-X)"
|
||||
cores:
|
||||
- dosbox-x
|
||||
@@ -25,7 +25,7 @@ notes: |
|
||||
olivetti/m24/att6300, pc3270, ega, ega200, jega, mcga, vgaonly, the S3,
|
||||
Tseng, Paradise and ATI SVGA cards, the vesa variants, and pc98/pc9801/pc9821.
|
||||
fm_towns is marked STUB in the same list.
|
||||
ref: src/dosbox.cpp:1530-1566
|
||||
ref: src/dosbox.cpp:1534-1574
|
||||
|
||||
No system BIOS: the PC BIOS, VGA BIOS, video fonts, keyboard layouts, codepage
|
||||
tables, the Z: drive utilities including GLIDE2X.OVL, and the TTF text font are
|
||||
@@ -36,10 +36,17 @@ notes: |
|
||||
Files named without a directory are searched in the working directory, the
|
||||
program directory, the user configuration directory and the resource
|
||||
directory. On Linux the configuration directory is $XDG_CONFIG_HOME/dosbox-x
|
||||
or ~/.config/dosbox-x, and the resource directory is $XDG_DATA_HOME/dosbox-x,
|
||||
then /usr/local/share/dosbox-x, then /usr/share/dosbox-x. Windows uses
|
||||
C:\DOSBox-X.
|
||||
ref: src/ints/int10.cpp:1442-1485, src/misc/cross.cpp:128-175
|
||||
or ~/.config/dosbox-x, and the resource directory is $APPDIR/usr/share/dosbox-x
|
||||
inside an AppImage, otherwise $XDG_DATA_HOME/dosbox-x, then
|
||||
/usr/local/share/dosbox-x, then /usr/share/dosbox-x. Windows uses C:\DOSBox-X.
|
||||
ref: src/ints/int10.cpp:1442-1485, src/misc/cross.cpp:129-190, 193-226
|
||||
|
||||
Configuration: -conf and -userconf name the files to read. Otherwise
|
||||
dosbox-x.conf then dosbox.conf is tried in the working directory, then in the
|
||||
program directory, then in the configuration directory, which is last tried
|
||||
for dosbox-x-<version>.conf; that file is written with the defaults when it
|
||||
does not exist.
|
||||
ref: src/gui/sdlmain.cpp:8664-8740, src/misc/cross.cpp:229-245
|
||||
|
||||
MT-32: libmt32emu is built from src/libs/mt32. Only four file names are ever
|
||||
opened, and each candidate is identified by exact file size then SHA1, so the
|
||||
@@ -51,7 +58,7 @@ notes: |
|
||||
the MT32 names. The directory is mt32.romdir, then the working directory, then
|
||||
the resource directory, then the configuration directory. A missing pair logs
|
||||
the accepted file names and disables the device.
|
||||
ref: src/gui/midi_mt32.h:246-275, src/dosbox.cpp:3577-3582
|
||||
ref: src/gui/midi_mt32.h:246-275, src/dosbox.cpp:3585-3595
|
||||
|
||||
FluidSynth reads fluid.soundfont; fluid_synth_sfload is the only check. With
|
||||
the setting empty it probes /usr/share/soundfonts/default.sf2,
|
||||
@@ -77,22 +84,27 @@ notes: |
|
||||
identified by its size, which covers ASC16 and ASCFONT.15 from UCDOS and ETen
|
||||
Chinese DOS, ASC24, HZK14, HZK16, HZK24 and STDFONT.15 and STDFONT.24.
|
||||
Unset settings fall back to the built-in font data.
|
||||
ref: src/ints/int_dosv.cpp:654-749, 1631-1710, src/dosbox.cpp:2539-2574
|
||||
ref: src/ints/int_dosv.cpp:654-749, 1631-1710, src/dosbox.cpp:2547-2580
|
||||
|
||||
BOOT -bios loads a BIOS image at the top of the first megabyte, truncated to
|
||||
128 KB, or 96 KB on PC-98 where it also looks for <image>.itf.rom, <image>.ITF.ROM,
|
||||
itf.rom and ITF.ROM to serve the bank switched Initial Firmware Test region
|
||||
through port 43Dh.
|
||||
ref: src/dos/dos_programs.cpp:2250-2338
|
||||
ref: src/dos/dos_programs.cpp:2225-2226, 2249-2338
|
||||
|
||||
BIOSTEST.COM loads an image of up to 64 KB at F000:0 and restarts the CPU at
|
||||
the reset vector; it is compiled only when the debugger is enabled. The
|
||||
settings call binary on reset and call binary on boot load blobs of up to
|
||||
128 KB into the ROM BIOS area for CPU testing.
|
||||
ref: src/dos/dos_programs.cpp:3587-3646, src/ints/bios.cpp:13280-13353
|
||||
ref: src/dos/dos_programs.cpp:3589-3642, src/ints/bios.cpp:13280-13356
|
||||
|
||||
A build configured with --enable-dosbox_agent reads the key=value file named
|
||||
by -agent-config to start the RPC debugger agent; the file names the
|
||||
transport and endpoint, nothing else is read from disk.
|
||||
ref: configure.ac:1441-1448, src/gui/sdlmain.cpp:8487-8493, src/agent/protocol/agent_protocol.cpp:477-632
|
||||
|
||||
Glide passthrough loads glide2x.dll, libglide2x.so or libglide2x.dylib.
|
||||
ref: src/hardware/glide.cpp:353-359, src/dosbox.cpp:3477-3479
|
||||
ref: src/hardware/glide.cpp:353-359, src/dosbox.cpp:3485-3487
|
||||
|
||||
ttf.font, ttf.fontbold, ttf.fontital and ttf.fontboit name a TTF, OTF, FON or
|
||||
TTC font resolved through the same search order plus the system font
|
||||
@@ -109,9 +121,10 @@ notes: |
|
||||
the customcodepage translation table, .kl layout files and the KEYBOARD.SYS
|
||||
to KEYBRD4.SYS libraries read from a mounted drive, the glshaders directory
|
||||
and the .lng translations.
|
||||
ref: src/ints/bios.cpp:11463-11472, src/gui/sdlmain.cpp:7010-7017,
|
||||
src/dos/dos.cpp:4402-4425, src/dos/dos_keyboard_layout.cpp:300-340,
|
||||
src/gui/render.cpp:1538-1545, src/misc/messages.cpp:294-320
|
||||
ref: src/ints/bios.cpp:11463-11472, src/gui/sdlmain.cpp:966-968, 7010-7018,
|
||||
src/gui/sdl_mapper.cpp:5731-5787, src/dos/dos.cpp:4402-4437,
|
||||
src/dos/dos_keyboard_layout.cpp:300-340, src/gui/render.cpp:1538-1545,
|
||||
src/misc/messages.cpp:294-320
|
||||
|
||||
files:
|
||||
# -- MT-32 and CM-32L control ROMs --
|
||||
@@ -260,7 +273,7 @@ files:
|
||||
note: >
|
||||
any SF2 or SF3 file loads; fluid.soundfont names it and
|
||||
fluid_synth_sfload is the only check
|
||||
source_ref: "src/gui/midi_synth.h:346-384, src/gui/midi_synth.h:462-473, src/dosbox.cpp:3710"
|
||||
source_ref: "src/gui/midi_synth.h:346-384, src/gui/midi_synth.h:462-473, src/dosbox.cpp:3724"
|
||||
|
||||
# -- PC-98 character generator --
|
||||
|
||||
@@ -274,7 +287,7 @@ files:
|
||||
256 8x8 cells at 0x0, 256 8x16 cells at 0x800, 96 by 92 16x16 cells at
|
||||
0x1800; a file of any other length is rejected. Enabled by
|
||||
pc-98 try font rom, on by default
|
||||
source_ref: "src/ints/int10.cpp:1487-1549, src/dosbox.cpp:2483-2484"
|
||||
source_ref: "src/ints/int10.cpp:1487-1549, src/dosbox.cpp:2491-2492"
|
||||
|
||||
- name: "ANEX86.BMP"
|
||||
description: "PC-98 character generator, Anex86 bitmap"
|
||||
@@ -285,7 +298,7 @@ files:
|
||||
pixel, no compression, inverse colour scheme; the first row is the 8x16
|
||||
single-width set and the rest is 16x16 full-width. Also reachable through
|
||||
the pc-98 anex86 font setting, which is tried before FONT.ROM
|
||||
source_ref: "src/ints/int10.cpp:1555-1647, src/dosbox.cpp:2487-2490"
|
||||
source_ref: "src/ints/int10.cpp:1555-1647, src/dosbox.cpp:2495-2498"
|
||||
|
||||
- name: "FREECG98.BMP"
|
||||
description: "PC-98 character generator, free generated bitmap"
|
||||
@@ -335,32 +348,32 @@ files:
|
||||
description: "Printer Roman typeface"
|
||||
required: false
|
||||
note: "also the fallback typeface for any unmapped LQ selection"
|
||||
source_ref: "src/hardware/parport/printer.cpp:320-321, src/hardware/parport/printer.cpp:336-337, src/dosbox.cpp:4621"
|
||||
source_ref: "src/hardware/parport/printer.cpp:320-321, src/hardware/parport/printer.cpp:336-337, src/dosbox.cpp:4629-4631"
|
||||
|
||||
- name: "sansserif.ttf"
|
||||
path: "FONTS/sansserif.ttf"
|
||||
description: "Printer Sans Serif typeface"
|
||||
required: false
|
||||
source_ref: "src/hardware/parport/printer.cpp:323-324, src/dosbox.cpp:4621"
|
||||
source_ref: "src/hardware/parport/printer.cpp:323-324, src/dosbox.cpp:4629-4631"
|
||||
|
||||
- name: "courier.ttf"
|
||||
path: "FONTS/courier.ttf"
|
||||
description: "Printer Courier typeface"
|
||||
required: false
|
||||
source_ref: "src/hardware/parport/printer.cpp:326-327, src/dosbox.cpp:4621"
|
||||
source_ref: "src/hardware/parport/printer.cpp:326-327, src/dosbox.cpp:4629-4631"
|
||||
|
||||
- name: "script.ttf"
|
||||
path: "FONTS/script.ttf"
|
||||
description: "Printer Script typeface"
|
||||
required: false
|
||||
source_ref: "src/hardware/parport/printer.cpp:329-330, src/dosbox.cpp:4621"
|
||||
source_ref: "src/hardware/parport/printer.cpp:329-330, src/dosbox.cpp:4629-4631"
|
||||
|
||||
- name: "ocra.ttf"
|
||||
path: "FONTS/ocra.ttf"
|
||||
description: "Printer OCR-A typeface"
|
||||
required: false
|
||||
note: "serves both the OCR-A and OCR-B selections"
|
||||
source_ref: "src/hardware/parport/printer.cpp:332-334, src/dosbox.cpp:4621"
|
||||
source_ref: "src/hardware/parport/printer.cpp:332-334, src/dosbox.cpp:4629-4631"
|
||||
|
||||
# -- PC-98 sound board BIOS --
|
||||
|
||||
@@ -373,7 +386,7 @@ files:
|
||||
note: >
|
||||
16 KB read into CC000h from the working directory only, when
|
||||
pc-98 sound bios and pc-98 load sound bios rom file are both set
|
||||
source_ref: "src/hardware/pc98_fm.cpp:367-385, src/dosbox.cpp:2384-2392"
|
||||
source_ref: "src/hardware/pc98_fm.cpp:367-385, src/dosbox.cpp:2392-2399"
|
||||
|
||||
# -- Video BIOS ROM images --
|
||||
# Loaded in place of the built-in INT 10h when vga bios use rom image is set.
|
||||
@@ -387,7 +400,7 @@ files:
|
||||
max_size: 65536
|
||||
validation: [size]
|
||||
note: "default file name for machine = svga_et4000"
|
||||
source_ref: "src/dosbox.cpp:942-986, src/dosbox.cpp:2751-2763"
|
||||
source_ref: "src/dosbox.cpp:943-994, src/dosbox.cpp:2759-2770"
|
||||
|
||||
- name: "TRIO64 (Ver. 1.5-07) [VGA] (S3 Incorporated).bin"
|
||||
description: "S3 Trio64 video BIOS"
|
||||
@@ -398,7 +411,7 @@ files:
|
||||
max_size: 65536
|
||||
validation: [size]
|
||||
note: "default file name for machine = svga_s3"
|
||||
source_ref: "src/dosbox.cpp:947-949, src/dosbox.cpp:2751-2763"
|
||||
source_ref: "src/dosbox.cpp:951-953, src/dosbox.cpp:2759-2770"
|
||||
|
||||
- name: "ibm-vga.bin"
|
||||
description: "IBM VGA option ROM of 10/27/86, laid out as mapped at C000:0"
|
||||
@@ -411,7 +424,7 @@ files:
|
||||
read by LOADROM.COM from a mounted local drive; accepted when the file
|
||||
starts with 55 AA, byte 3 masked with 0xFC equals 0xE8 and the string IBM
|
||||
appears at offset 0x1E, and the machine is EGA or better
|
||||
source_ref: "src/dos/dos_programs.cpp:3529-3555, src/dos/dos_programs.cpp:3566-3571"
|
||||
source_ref: "src/dos/dos_programs.cpp:3529-3555, src/dos/dos_programs.cpp:3566-3572"
|
||||
|
||||
# -- IBM ROM BASIC --
|
||||
|
||||
@@ -428,7 +441,7 @@ files:
|
||||
32 KB to 64 KB in 4 KB steps; LOADROM.COM maps the same image at F600:0
|
||||
when it is exactly 32768 bytes, starts with E9 8F 7E and carries the
|
||||
string IBM at offset 0x4CD4
|
||||
source_ref: "src/ints/bios.cpp:13212-13232, src/dos/dos_programs.cpp:3556-3560, src/dosbox.cpp:1937-1939"
|
||||
source_ref: "src/ints/bios.cpp:13212-13232, src/dos/dos_programs.cpp:3556-3560, src/dosbox.cpp:1945-1947"
|
||||
|
||||
# -- PCjr --
|
||||
|
||||
@@ -454,7 +467,7 @@ files:
|
||||
loaded at the top of the first megabyte, rounded up to a paragraph and
|
||||
truncated to 128 KB, or to 96 KB on PC-98; a larger image is clamped
|
||||
rather than rejected
|
||||
source_ref: "src/dos/dos_programs.cpp:2250-2299"
|
||||
source_ref: "src/dos/dos_programs.cpp:2249-2299"
|
||||
|
||||
- name: "ITF.ROM"
|
||||
description: "PC-98 Initial Firmware Test BIOS"
|
||||
|
||||
+807
-42
@@ -1,54 +1,819 @@
|
||||
emulator: eka2l1
|
||||
type: standalone
|
||||
source: "https://github.com/EKA2L1/EKA2L1"
|
||||
type: standalone + libretro
|
||||
core_classification: community_fork
|
||||
source:
|
||||
standalone: "https://github.com/EKA2L1/EKA2L1"
|
||||
libretro: "https://github.com/WizzardSK/eka2l1-libretro/tree/libretro"
|
||||
upstream: "https://github.com/EKA2L1/EKA2L1"
|
||||
profiled_date: "2026-03-26"
|
||||
source_commit: "f8a9a0a380d62f82a463bcc299f2b9250b819674"
|
||||
core_version: "continuous"
|
||||
display_name: "EKA2L1 (Symbian OS / N-Gage)"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit:
|
||||
standalone: "293e399b34eb0cee1519fb095587be65a0a4edd2"
|
||||
libretro: "97ac3df6767f819c95405e4c86e7007d2e8ae61d"
|
||||
upstream_commit:
|
||||
libretro: "47b4ad76a6dd7d3656f52be86dfd5b9ff9a50c70"
|
||||
core_version: "0.0.9"
|
||||
display_name: "Nokia - Symbian / N-Gage (EKA2L1)"
|
||||
cores:
|
||||
- eka2l1
|
||||
systems:
|
||||
- ngage
|
||||
analysis_date: "2026-03-26"
|
||||
analysis_commit: "e67f84d (depth=1)"
|
||||
mode: standalone
|
||||
|
||||
# EKA2L1 emulates Symbian OS kernel and reimplements critical app servers and
|
||||
# libraries. Supports S60v1 through Symbian Belle, including N-Gage 1.0/2.0.
|
||||
#
|
||||
# Each phone model requires its own ROM dump identified by firmware code.
|
||||
# ROM path at runtime: {storage}/roms/{firmware_code_lowercase}/SYM.ROM
|
||||
# Storage defaults to data/ relative to executable.
|
||||
#
|
||||
# Device installation (GUI or CLI) processes ROM dumps:
|
||||
# - Raw .rom files → copied to roms/{firmcode}/SYM.ROM
|
||||
# - RPKG files → extracted to drives/z/{firmcode}/ (system partition)
|
||||
# - VPL firmware packages → extracted to roms/ and drives/
|
||||
#
|
||||
# drives/z/{firmcode}/ content is generated during installation, not
|
||||
# user-placed. drives/c/, drives/d/, drives/e/ are runtime storage.
|
||||
#
|
||||
# Firmware codes for N-Gage systems:
|
||||
# NEM-4 = Nokia N-Gage (original, S60v1)
|
||||
# RH-29 = Nokia N-Gage QD (S60v1)
|
||||
# For N-Gage 2.0 games, a S60v3 phone ROM is needed (e.g., RM-409 = 5320 XpressMusic).
|
||||
#
|
||||
# No libretro core exists. No .info file.
|
||||
# resources/ files (shaders, soundfonts, gamecontrollerdb.txt) ship with the
|
||||
# emulator distribution, not user-supplied.
|
||||
- symbian
|
||||
|
||||
notes: |
|
||||
Pure standalone Symbian OS / N-Gage emulator. No libretro core.
|
||||
Requires phone ROM dumps (SYM.ROM) obtained from real Nokia devices.
|
||||
The emulator supports 100+ Nokia phone models (NEM-4, RH-29, RM-409, etc.).
|
||||
No hash or size validation on the ROM file; the loader parses the ROM structure.
|
||||
Batocera maps the ngage system to eka2l1 in configgen-defaults.yml.
|
||||
No dedicated Batocera configgen generator exists.
|
||||
Symbian OS and N-Gage emulator: the EKA1 and EKA2 kernels are emulated and
|
||||
the critical application servers and libraries reimplemented in C++, while
|
||||
the ROM of a real phone supplies the rest of the operating system, so every
|
||||
device to emulate is built from a firmware dump. Covers the N-Gage and
|
||||
N-Gage 2.0 libraries and the game libraries from S60v1 to Symbian Belle. One
|
||||
tree builds the Qt desktop frontend, the Android and iOS applications, and a
|
||||
libretro core; the core lives on the libretro branch of the WizzardSK fork,
|
||||
merged from upstream at 47b4ad76.
|
||||
ref: README.md:20, README.md:29-32, src/emu/CMakeLists.txt:61-62,
|
||||
CMakeLists.txt:18, .gitlab-ci.yml:14-22
|
||||
|
||||
A device is registered in <storage>/devices.yml and holds its ROM image at
|
||||
<storage>/roms/<firmware code, lower case>/SYM.ROM with the unpacked ROFS
|
||||
tree beside it under <storage>/drives/z/<firmware code>/. Selecting the
|
||||
device opens that SYM.ROM; a parse failure or a missing file makes set_device
|
||||
return false and nothing runs. The image is parsed for its root directory
|
||||
list and never checked against a size or a hash. <storage> is the
|
||||
data-storage option, "data" by default, relative to the working directory.
|
||||
ref: src/emu/system/include/system/consts.h:23-25,
|
||||
src/emu/system/src/epoc.cpp:1393-1401, src/emu/system/src/epoc.cpp:805-829,
|
||||
src/emu/loader/src/rom.cpp:281-299, src/emu/system/src/devices.cpp:175-200,
|
||||
src/emu/config/include/config/options.inl:45
|
||||
|
||||
Three installers produce that layout from a dump. A bare ROM image is enough
|
||||
when it is an EKA1 image carrying z:\system\versions\sw.txt, the N-Gage case:
|
||||
its files are unpacked to drives/z/, the firmware code is read from them and
|
||||
the image is copied to SYM.ROM. An EKA2 image needs the RPKG made by the
|
||||
Dumber tool beside it, which supplies the ROFS. A .vpl variant packing list
|
||||
names the .fpsx flash images of a factory firmware, from which the core image,
|
||||
the ROFS and the drive contents are extracted. The names of the dump files
|
||||
are free; SYM.ROM is the name the installers give the resident copy.
|
||||
ref: src/emu/system/src/installation/rpkg.cpp:43-64,
|
||||
src/emu/system/src/installation/rpkg.cpp:131-193,
|
||||
src/emu/system/src/installation/rpkg.cpp:202-248,
|
||||
src/emu/system/src/installation/rpkg.cpp:251-253,
|
||||
src/emu/system/src/installation/firmware.cpp:290-303,
|
||||
src/emu/system/src/installation/firmware.cpp:381-406,
|
||||
src/emu/system/src/installation/firmware.cpp:425-428,
|
||||
src/emu/system/src/installation/firmware.cpp:467-487
|
||||
|
||||
Standalone, the Qt frontend installs through its device dialog, from a ROM,
|
||||
a ROM with its RPKG, or a VPL; the settings dialog can also rescan drives/z/
|
||||
and rebuild devices.yml from the directories that still hold a SYM.ROM. On
|
||||
Linux and macOS the working directory is the EKA2L1 folder of the user data
|
||||
location and the shipped patch, resources, scripts and compat folders are
|
||||
copied there at startup; on Windows it is the directory the executable is
|
||||
started from.
|
||||
ref: src/emu/qt/src/device_install_dialog.cpp:161-171,
|
||||
src/emu/qt/src/device_install_dialog.cpp:180-184,
|
||||
src/emu/qt/src/settings_dialog.cpp:526, src/emu/system/src/epoc.cpp:383-445,
|
||||
src/emu/qt/src/main.cpp:101-121
|
||||
|
||||
The libretro core keeps everything under <system>/eka2l1: data-storage is
|
||||
forced to that directory whatever config.yml carries. On retro_init, when no
|
||||
device is registered, <system>/eka2l1/firmware is scanned once and the first
|
||||
.vpl found is installed, otherwise the first .rom or .fpsx with the first
|
||||
.rpkg beside it. The result is saved to devices.yml and device 0 is selected.
|
||||
Without a device the core logs where the dump goes and refuses to start when
|
||||
the GL context arrives, so the firmware folder is required. Content is a
|
||||
.sis, .sisx or .n-gage package, installed on first load and remembered in
|
||||
<system>/eka2l1/libretro-content.txt against the UID it registered, or a
|
||||
.eka2l1 text shortcut naming the UID of an application already installed.
|
||||
supports_no_game is false. is_experimental is true in the .info.
|
||||
ref: src/emu/libretro/src/main.cpp:51-53, src/emu/libretro/src/state.cpp:12-17,
|
||||
src/emu/libretro/src/main.cpp:82-100, src/emu/libretro/src/content.cpp:44-111,
|
||||
src/emu/libretro/src/main.cpp:161-169, src/emu/libretro/src/main.cpp:68-69,
|
||||
src/emu/libretro/src/main.cpp:116-117, src/emu/libretro/src/content.cpp:119,
|
||||
src/emu/libretro/src/content.cpp:244-249
|
||||
|
||||
At this revision the libretro build stages none of the shipped resource
|
||||
folders and never calls set_runtime_resource_root, so the GL shaders, the
|
||||
compat folder and panic.json are looked up relative to the process working
|
||||
directory. It calls neither initialize_user_parties nor mount for drive Z
|
||||
and creates no audio or controller driver, so the patch libraries, the Lua
|
||||
scripts, the MIDI banks and the controller database are not read there.
|
||||
Those entries carry mode standalone.
|
||||
ref: src/emu/libretro/CMakeLists.txt:8-45, src/emu/libretro/src/thread.cpp:19-38,
|
||||
src/emu/libretro/src/thread.cpp:41-60, src/emu/libretro/src/thread.cpp:83-89,
|
||||
src/emu/common/src/path.cpp:427-450, src/emu/system/src/epoc.cpp:1296-1317
|
||||
|
||||
Shipped runtime files are read at their own name below the working
|
||||
directory. Patch libraries: every patch/*.map is parsed, the DLL is
|
||||
<map name>_<version suffix>.dll for the device's Symbian version upward, then
|
||||
<map name>_general.dll; a map naming a source picks that DLL prefix; a map
|
||||
requiring host-tls is skipped below S60v3 FP1; a missing folder is skipped.
|
||||
goommonitor and avkonfep have no map: the Qt and Android frontends copy them
|
||||
over the ROM's own Z:\sys\bin DLL, from S60v5 and from S60v3 FP1 on. Shaders:
|
||||
the eight files under resources are compiled by the OpenGL driver at start
|
||||
and an unreadable one leaves the program without source. The upscale filter
|
||||
named in an application's screen-upscale setting is read from
|
||||
resources/upscale/<name>.frag; the 21 filters ship from the upscale-shaders
|
||||
submodule, pinned at 49dd304c. MIDI: resources/defaultbank.sf2 feeds the
|
||||
TinySoundFont player and resources/defaultbank.hsb the miniBAE player, the
|
||||
paths being the sf2-bank-path and hsb-bank-path options. SDL2 controller
|
||||
mappings come from resources/gamecontrollerdb.txt. compat/panicBlackList.json
|
||||
names thread panics to swallow and compat/<UID>.yml carries per-application
|
||||
settings; panic.json holds the panic category descriptions. Lua scripts under
|
||||
scripts/ are loaded when the build carries LuaJIT and require the eka2l1.*
|
||||
modules from scripts/eka2l1/; the libretro recipe builds without it. Fonts
|
||||
the user imports live in <storage>/fonts and are added to the font store
|
||||
after the ROM fonts.
|
||||
ref: src/emu/kernel/src/libmanager.cpp:407-411, src/emu/kernel/src/libmanager.cpp:435-438,
|
||||
src/emu/kernel/src/libmanager.cpp:495-540, src/emu/kernel/src/libmanager.cpp:557-561,
|
||||
src/emu/qt/src/state.cpp:181-204,
|
||||
src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:264-282,
|
||||
src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189,
|
||||
src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409,
|
||||
src/emu/drivers/src/audio/backend/tinysoundfont/player_tsf.cpp:66-77,
|
||||
src/emu/drivers/src/audio/backend/minibae/player_minibae.cpp:86-96,
|
||||
src/emu/config/include/config/options.inl:72-73,
|
||||
src/emu/drivers/src/input/backend/emu_controller_sdl2.cpp:143-145,
|
||||
src/emu/config/src/panic_blacklist.cpp:27-35, src/emu/config/src/app_settings.cpp:82-114,
|
||||
src/emu/utils/src/panic.cpp:32-38, src/emu/scripting/src/manager.cpp:196-202,
|
||||
src/emu/scripting/src/manager.cpp:230-256, src/emu/services/src/fbs/fbs.cpp:434,
|
||||
src/emu/services/src/fbs/impls/font.cpp:1190-1213, .gitlab-ci.yml:19,
|
||||
src/emu/qt/CMakeLists.txt:264-278, src/emu/qt/CMakeLists.txt:289-290,
|
||||
src/emu/qt/CMakeLists.txt:376-377, cmake/Symbian.cmake:20-31
|
||||
|
||||
config.yml, bindings/<profile>.yml, devices.yml, the drives/ tree and
|
||||
libretro-content.txt are written by the emulator itself.
|
||||
ref: src/emu/config/src/config.cpp:344-350, src/emu/config/src/config.cpp:358-368,
|
||||
src/emu/system/src/devices.cpp:248-249
|
||||
|
||||
files:
|
||||
- name: "SYM.ROM"
|
||||
- name: SYM.ROM
|
||||
system: ngage
|
||||
path: eka2l1/firmware/SYM.ROM
|
||||
standalone_path: data/roms/nem-4/SYM.ROM
|
||||
required: true
|
||||
size: 18612224
|
||||
description: "Nokia N-Gage (NEM-4) firmware 4.03 ROM image, EKA1"
|
||||
note: >-
|
||||
An EKA1 image carrying sw.txt installs on its own: the libretro core
|
||||
picks it up from the firmware folder under any name ending in .rom and
|
||||
the standalone frontends take it through the device dialog. The
|
||||
installers copy it to roms/nem-4/SYM.ROM, the path the emulator opens
|
||||
whenever the device is selected. Every other phone model needs its own
|
||||
dump, an EKA2 image with its RPKG, or a VPL with its .fpsx images.
|
||||
source_ref:
|
||||
standalone: "src/emu/system/src/epoc.cpp:1393-1401, src/emu/system/src/epoc.cpp:805-829, src/emu/system/include/system/consts.h:23-25, src/emu/system/src/installation/rpkg.cpp:43-64, src/emu/system/src/installation/rpkg.cpp:190-193, src/emu/qt/src/device_install_dialog.cpp:161-171"
|
||||
libretro: "src/emu/libretro/src/main.cpp:82-100, src/emu/libretro/src/content.cpp:44-111, src/emu/libretro/src/main.cpp:161-169, src/emu/system/src/installation/rpkg.cpp:202-248"
|
||||
|
||||
- name: audiooutputrouting.dll.map
|
||||
standalone_path: patch/audiooutputrouting.dll.map
|
||||
mode: standalone
|
||||
description: "Symbian OS phone ROM dump. One per device, placed in roms/{firmware_code}/ subdirectory."
|
||||
source_ref: "src/emu/system/src/epoc.cpp:1288, src/emu/system/src/epoc.cpp:794-799, src/emu/system/include/system/consts.h:23-25"
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Export map routing audiooutputrouting.dll to the host"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:407-411, src/emu/kernel/src/libmanager.cpp:495-540, cmake/Symbian.cmake:20-31, src/patch/CMakeLists.txt:6"
|
||||
|
||||
- name: audiooutputrouting_general.dll
|
||||
standalone_path: patch/audiooutputrouting_general.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched audiooutputrouting.dll, all Symbian versions"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:530-540, src/emu/kernel/src/libmanager.cpp:557-561, src/patch/audiooutputrouting/group/audiooutputrouting.dll.map:1"
|
||||
|
||||
- name: avkonfep_general.dll
|
||||
standalone_path: patch/avkonfep_general.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Avkon FEP bridged to the host input method, copied over Z:\\sys\\bin\\avkonfep.dll on S60v3 FP1 and later"
|
||||
source_ref: "src/emu/qt/src/state.cpp:181-204, src/patch/CMakeLists.txt:5"
|
||||
|
||||
- name: backlightctrl.dll.map
|
||||
standalone_path: patch/backlightctrl.dll.map
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Export map for backlightctrl.dll, bound to the DLL UIDs it names"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:407-411, src/emu/kernel/src/libmanager.cpp:448-464, src/patch/CMakeLists.txt:10"
|
||||
|
||||
- name: backlightctrl_v81a.dll
|
||||
standalone_path: patch/backlightctrl_v81a.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched backlightctrl.dll for Symbian 8.1a"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:511-528, src/patch/backlightctrl/group/backlightctrl.dll.map:1-4"
|
||||
|
||||
- name: commdb.dll.map
|
||||
standalone_path: patch/commdb.dll.map
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Export map for the in-ROM commdb.dll of Symbian 6"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:407-411, src/emu/kernel/src/libmanager.cpp:448-464, src/patch/CMakeLists.txt:17"
|
||||
|
||||
- name: commdb_v6.dll
|
||||
standalone_path: patch/commdb_v6.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched commdb.dll for Symbian 6"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:511-528, src/patch/commdb/group/commdb.dll.map:1-7"
|
||||
|
||||
- name: ecam.dll.map
|
||||
standalone_path: patch/ecam.dll.map
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Export map for ecam.dll, the camera API"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:407-411, src/emu/kernel/src/libmanager.cpp:495-540, src/patch/CMakeLists.txt:8"
|
||||
|
||||
- name: ecam_general.dll
|
||||
standalone_path: patch/ecam_general.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched ecam.dll, all Symbian versions"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:530-540, src/emu/kernel/src/libmanager.cpp:557-561, src/patch/ecam/group/ecam.dll.map:1-4"
|
||||
|
||||
- name: goommonitor_general.dll
|
||||
standalone_path: patch/goommonitor_general.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Global OOM monitor client, copied over Z:\\sys\\bin\\goommonitor.dll on S60v5 and later"
|
||||
source_ref: "src/emu/qt/src/state.cpp:181-204, src/patch/CMakeLists.txt:15"
|
||||
|
||||
- name: mediaclientaudio.dll.map
|
||||
standalone_path: patch/mediaclientaudio.dll.map
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Export map for mediaclientaudio.dll, CMdaAudioPlayerUtility and friends"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:407-411, src/emu/kernel/src/libmanager.cpp:495-540, src/patch/CMakeLists.txt:11"
|
||||
|
||||
- name: mediaclientaudio_general.dll
|
||||
standalone_path: patch/mediaclientaudio_general.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched mediaclientaudio.dll, EKA2 versions"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:530-540, src/emu/kernel/src/libmanager.cpp:557-561, src/patch/mediaclientaudio/group/mediaclientaudio.dll.map:1-4"
|
||||
|
||||
- name: mediaclientaudio_v81a.dll
|
||||
standalone_path: patch/mediaclientaudio_v81a.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched mediaclientaudio.dll for Symbian 8.1a"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:511-528, src/patch/mediaclientaudio/group/mediaclientaudio.dll.map:424-427"
|
||||
|
||||
- name: mediaclientaudioinputstream.dll.map
|
||||
standalone_path: patch/mediaclientaudioinputstream.dll.map
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Export map for mediaclientaudioinputstream.dll, served by the mediaclientaudiostream DLLs through its source key"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:495-508, src/patch/mediaclientaudiostream/group/mediaclientaudioinputstream.dll.map:1"
|
||||
|
||||
- name: mediaclientaudiostream.dll.map
|
||||
standalone_path: patch/mediaclientaudiostream.dll.map
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Export map for mediaclientaudiostream.dll"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:407-411, src/emu/kernel/src/libmanager.cpp:495-540, src/patch/CMakeLists.txt:12"
|
||||
|
||||
- name: mediaclientaudiostream_general.dll
|
||||
standalone_path: patch/mediaclientaudiostream_general.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched mediaclientaudiostream.dll, EKA2 versions"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:530-540, src/emu/kernel/src/libmanager.cpp:557-561, src/patch/mediaclientaudiostream/group/mediaclientaudiostream.dll.map:1"
|
||||
|
||||
- name: mediaclientaudiostream_v81a.dll
|
||||
standalone_path: patch/mediaclientaudiostream_v81a.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched mediaclientaudiostream.dll for Symbian 8.1a"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:511-528, src/patch/mediaclientaudiostream/group/mediaclientaudiostream.dll.map:1"
|
||||
|
||||
- name: mediaclientvideo.dll.map
|
||||
standalone_path: patch/mediaclientvideo.dll.map
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Export map for mediaclientvideo.dll"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:407-411, src/emu/kernel/src/libmanager.cpp:495-540, src/patch/CMakeLists.txt:13"
|
||||
|
||||
- name: mediaclientvideo_v100.dll
|
||||
standalone_path: patch/mediaclientvideo_v100.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched mediaclientvideo.dll for Symbian^3 and Belle"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:511-528, src/patch/mediaclientvideo/group/mediaclientvideo.dll.map:1"
|
||||
|
||||
- name: postingsurfacefactory.dll.map
|
||||
standalone_path: patch/postingsurfacefactory.dll.map
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Export map for postingsurfacefactory.dll, the video posting surface"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:407-411, src/emu/kernel/src/libmanager.cpp:495-540, src/patch/CMakeLists.txt:14"
|
||||
|
||||
- name: postingsurfacefactory_general.dll
|
||||
standalone_path: patch/postingsurfacefactory_general.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched postingsurfacefactory.dll, all Symbian versions"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:530-540, src/emu/kernel/src/libmanager.cpp:557-561, src/patch/postingsurfacefactory/group/postingsurfacefactory.dll.map:1"
|
||||
|
||||
- name: scdv.dll.map
|
||||
standalone_path: patch/scdv.dll.map
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Export map for scdv.dll, CFbsDrawDevice and CDirectScreenBitmap"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:407-411, src/emu/kernel/src/libmanager.cpp:495-540, src/patch/CMakeLists.txt:7"
|
||||
|
||||
- name: scdv_general.dll
|
||||
standalone_path: patch/scdv_general.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched scdv.dll, EKA2 versions"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:530-540, src/emu/kernel/src/libmanager.cpp:557-561, src/patch/scdv/group/scdv.dll.map:1-28"
|
||||
|
||||
- name: scdv_v81a.dll
|
||||
standalone_path: patch/scdv_v81a.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched scdv.dll for Symbian 8.1a and earlier EKA1 releases"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:511-528, src/patch/scdv/group/scdv.dll.map:29-45"
|
||||
|
||||
- name: ssl.dll.map
|
||||
standalone_path: patch/ssl.dll.map
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Export map for ssl.dll routed to the host TLS stack, skipped below S60v3 FP1"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:435-438, src/patch/ssl/group/ssl.dll.map:1-4, src/patch/CMakeLists.txt:16"
|
||||
|
||||
- name: ssl_general.dll
|
||||
standalone_path: patch/ssl_general.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched ssl.dll, all Symbian versions"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:530-540, src/emu/kernel/src/libmanager.cpp:557-561, src/patch/ssl/group/ssl.dll.map:6-9"
|
||||
|
||||
- name: vibractrl.dll.map
|
||||
standalone_path: patch/vibractrl.dll.map
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Export map for vibractrl.dll, bound to the DLL UIDs it names"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:407-411, src/emu/kernel/src/libmanager.cpp:448-464, src/patch/CMakeLists.txt:9"
|
||||
|
||||
- name: vibractrl_v81a.dll
|
||||
standalone_path: patch/vibractrl_v81a.dll
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Patched vibractrl.dll for Symbian 8.1a"
|
||||
source_ref: "src/emu/kernel/src/libmanager.cpp:511-528, src/patch/vibractrl/group/vibractrl.dll.map:1-4"
|
||||
|
||||
- name: sprite_norm.vert
|
||||
standalone_path: resources/sprite_norm.vert
|
||||
mode: standalone
|
||||
required: true
|
||||
bundled: true
|
||||
description: "Vertex shader shared by the sprite, mask and upscale programs"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:264, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:274, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189, src/emu/qt/CMakeLists.txt:272"
|
||||
|
||||
- name: sprite_norm.frag
|
||||
standalone_path: resources/sprite_norm.frag
|
||||
mode: standalone
|
||||
required: true
|
||||
bundled: true
|
||||
description: "Fragment shader of the sprite program"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:265, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:278, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189"
|
||||
|
||||
- name: sprite_mask.frag
|
||||
standalone_path: resources/sprite_mask.frag
|
||||
mode: standalone
|
||||
required: true
|
||||
bundled: true
|
||||
description: "Fragment shader of the masked sprite program"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:266, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:279, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189"
|
||||
|
||||
- name: sprite_upscaled.frag
|
||||
standalone_path: resources/sprite_upscaled.frag
|
||||
mode: standalone
|
||||
required: true
|
||||
bundled: true
|
||||
description: "Fragment shader of the default upscale program"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:267, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:280, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-398, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189"
|
||||
|
||||
- name: brush.vert
|
||||
standalone_path: resources/brush.vert
|
||||
mode: standalone
|
||||
required: true
|
||||
bundled: true
|
||||
description: "Vertex shader of the brush program"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:268, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:275, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189"
|
||||
|
||||
- name: brush.frag
|
||||
standalone_path: resources/brush.frag
|
||||
mode: standalone
|
||||
required: true
|
||||
bundled: true
|
||||
description: "Fragment shader of the brush program"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:269, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:281, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189"
|
||||
|
||||
- name: pen.vert
|
||||
standalone_path: resources/pen.vert
|
||||
mode: standalone
|
||||
required: true
|
||||
bundled: true
|
||||
description: "Vertex shader of the pen program"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:270, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:276, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189"
|
||||
|
||||
- name: pen.frag
|
||||
standalone_path: resources/pen.frag
|
||||
mode: standalone
|
||||
required: true
|
||||
bundled: true
|
||||
description: "Fragment shader of the pen program"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:271, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:282, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189"
|
||||
|
||||
- name: 2xBR.frag
|
||||
standalone_path: resources/upscale/2xBR.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: 4xBR.frag
|
||||
standalone_path: resources/upscale/4xBR.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: 4xhq.frag
|
||||
standalone_path: resources/upscale/4xhq.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: 5xBR-lv2.frag
|
||||
standalone_path: resources/upscale/5xBR-lv2.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: 5xBR.frag
|
||||
standalone_path: resources/upscale/5xBR.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: aacolor.frag
|
||||
standalone_path: resources/upscale/aacolor.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: CRT-Hyllian.frag
|
||||
standalone_path: resources/upscale/CRT-Hyllian.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: CRT-Lottes-TV.frag
|
||||
standalone_path: resources/upscale/CRT-Lottes-TV.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: CRT-Lottes.frag
|
||||
standalone_path: resources/upscale/CRT-Lottes.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: dot.frag
|
||||
standalone_path: resources/upscale/dot.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: dot_mobile.frag
|
||||
standalone_path: resources/upscale/dot_mobile.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: dotpsp_color_mobile.frag
|
||||
standalone_path: resources/upscale/dotpsp_color_mobile.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: fxaa.frag
|
||||
standalone_path: resources/upscale/fxaa.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: grayscale.frag
|
||||
standalone_path: resources/upscale/grayscale.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: inversecolors.frag
|
||||
standalone_path: resources/upscale/inversecolors.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: natural.frag
|
||||
standalone_path: resources/upscale/natural.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: scanline-emu.frag
|
||||
standalone_path: resources/upscale/scanline-emu.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: scanline.frag
|
||||
standalone_path: resources/upscale/scanline.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: sharpen.frag
|
||||
standalone_path: resources/upscale/sharpen.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: zfast_lcd.frag
|
||||
standalone_path: resources/upscale/zfast_lcd.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: zfast_lcd_mobile.frag
|
||||
standalone_path: resources/upscale/zfast_lcd_mobile.frag
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Upscale filter selected by an application's filter-shader-path setting"
|
||||
source_ref: "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:404-406, src/emu/qt/src/settings_dialog.cpp:312-313, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273"
|
||||
|
||||
- name: defaultbank.sf2
|
||||
standalone_path: resources/defaultbank.sf2
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "SoundFont bank of the TinySoundFont MIDI player, the sf2-bank-path option"
|
||||
source_ref: "src/emu/drivers/src/audio/backend/tinysoundfont/player_tsf.cpp:66-77, src/emu/drivers/src/audio/backend/tinysoundfont/player_tsf.cpp:192-196, src/emu/config/include/config/options.inl:73, src/emu/qt/src/state.cpp:157-158, src/emu/qt/CMakeLists.txt:275"
|
||||
|
||||
- name: defaultbank.hsb
|
||||
standalone_path: resources/defaultbank.hsb
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Beatnik bank of the miniBAE MIDI player, the hsb-bank-path option"
|
||||
source_ref: "src/emu/drivers/src/audio/backend/minibae/player_minibae.cpp:86-96, src/emu/config/include/config/options.inl:72, src/emu/qt/src/state.cpp:157-158, src/emu/qt/CMakeLists.txt:274"
|
||||
|
||||
- name: gamecontrollerdb.txt
|
||||
standalone_path: resources/gamecontrollerdb.txt
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "SDL2 controller mapping database handed to SDL_GameControllerAddMappingsFromFile"
|
||||
source_ref: "src/emu/drivers/src/input/backend/emu_controller_sdl2.cpp:143-145, src/emu/qt/CMakeLists.txt:277"
|
||||
|
||||
- name: joystick_base.png
|
||||
standalone_path: resources/joystick_base.png
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Joystick image of the Qt button mapping editor"
|
||||
source_ref: "src/emu/qt/src/btnmap/joystick.cpp:113-117, src/emu/qt/CMakeLists.txt:278"
|
||||
|
||||
- name: overlay_font.ttf
|
||||
standalone_path: resources/overlay_font.ttf
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Overlay font of the Qt button mapping editor"
|
||||
source_ref: "src/emu/qt/src/btnmap/editor.cpp:60-62, src/emu/qt/CMakeLists.txt:278"
|
||||
|
||||
- name: panicBlackList.json
|
||||
standalone_path: compat/panicBlackList.json
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Thread panics the kernel swallows instead of killing the thread, by process, thread, category and code"
|
||||
source_ref: "src/emu/config/src/panic_blacklist.cpp:27-35, src/emu/kernel/src/kernel.cpp:1536, src/emu/qt/CMakeLists.txt:276"
|
||||
|
||||
- name: 101FD3DE.yml
|
||||
standalone_path: compat/101FD3DE.yml
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Per-application settings for UID 0x101FD3DE: frame rate and launch delay"
|
||||
source_ref: "src/emu/config/src/app_settings.cpp:82-114, src/emu/qt/CMakeLists.txt:276"
|
||||
|
||||
- name: 101FD3F5.yml
|
||||
standalone_path: compat/101FD3F5.yml
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Per-application settings for UID 0x101FD3F5: frame rate and launch delay"
|
||||
source_ref: "src/emu/config/src/app_settings.cpp:82-114, src/emu/qt/CMakeLists.txt:276"
|
||||
|
||||
- name: 101FD3F6.yml
|
||||
standalone_path: compat/101FD3F6.yml
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Per-application settings for UID 0x101FD3F6: frame rate and launch delay"
|
||||
source_ref: "src/emu/config/src/app_settings.cpp:82-114, src/emu/qt/CMakeLists.txt:276"
|
||||
|
||||
- name: 101FD3FD.yml
|
||||
standalone_path: compat/101FD3FD.yml
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Per-application settings for UID 0x101FD3FD: frame rate and launch delay"
|
||||
source_ref: "src/emu/config/src/app_settings.cpp:82-114, src/emu/qt/CMakeLists.txt:276"
|
||||
|
||||
- name: 101FD409.yml
|
||||
standalone_path: compat/101FD409.yml
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Per-application settings for UID 0x101FD409, The ONE: T9 bypass"
|
||||
source_ref: "src/emu/config/src/app_settings.cpp:82-114, src/emu/qt/CMakeLists.txt:276"
|
||||
|
||||
- name: 101FE1CA.yml
|
||||
standalone_path: compat/101FE1CA.yml
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Per-application settings for UID 0x101FE1CA: frame rate and launch delay"
|
||||
source_ref: "src/emu/config/src/app_settings.cpp:82-114, src/emu/qt/CMakeLists.txt:276"
|
||||
|
||||
- name: panic.json
|
||||
standalone_path: panic.json
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Panic category descriptions read when the system is created"
|
||||
source_ref: "src/emu/utils/src/panic.cpp:32-38, src/emu/system/src/epoc.cpp:634, src/emu/qt/CMakeLists.txt:269"
|
||||
|
||||
- name: aq_crash_fix.lua
|
||||
standalone_path: scripts/aq_crash_fix.lua
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Compatibility script, loaded from scripts/ by builds carrying LuaJIT"
|
||||
source_ref: "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271"
|
||||
|
||||
- name: eternal_legacy_crash_fix.lua
|
||||
standalone_path: scripts/eternal_legacy_crash_fix.lua
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Compatibility script, loaded from scripts/ by builds carrying LuaJIT"
|
||||
source_ref: "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271"
|
||||
|
||||
- name: hero_of_sparta_crash_fix.lua
|
||||
standalone_path: scripts/hero_of_sparta_crash_fix.lua
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Compatibility script, loaded from scripts/ by builds carrying LuaJIT"
|
||||
source_ref: "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271"
|
||||
|
||||
- name: s3_driver_patch.lua
|
||||
standalone_path: scripts/s3_driver_patch.lua
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Compatibility script, loaded from scripts/ by builds carrying LuaJIT"
|
||||
source_ref: "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271"
|
||||
|
||||
- name: s60v3_empty_avkon_menu_fix.lua
|
||||
standalone_path: scripts/s60v3_empty_avkon_menu_fix.lua
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Compatibility script, loaded from scripts/ by builds carrying LuaJIT"
|
||||
source_ref: "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271"
|
||||
|
||||
- name: wh40k_slow_load_fix.lua
|
||||
standalone_path: scripts/wh40k_slow_load_fix.lua
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "Compatibility script, loaded from scripts/ by builds carrying LuaJIT"
|
||||
source_ref: "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271"
|
||||
|
||||
- name: common.lua
|
||||
standalone_path: scripts/eka2l1/common.lua
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "eka2l1.common module the shipped scripts require through package.path"
|
||||
source_ref: "src/emu/scripting/src/manager.cpp:252, src/scripts/aq_crash_fix.lua:1, src/emu/qt/CMakeLists.txt:289-290"
|
||||
|
||||
- name: cpu.lua
|
||||
standalone_path: scripts/eka2l1/cpu.lua
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "eka2l1.cpu module the shipped scripts require through package.path"
|
||||
source_ref: "src/emu/scripting/src/manager.cpp:252, src/scripts/aq_crash_fix.lua:3, src/emu/qt/CMakeLists.txt:289-290"
|
||||
|
||||
- name: events.lua
|
||||
standalone_path: scripts/eka2l1/events.lua
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "eka2l1.events module the shipped scripts require through package.path"
|
||||
source_ref: "src/emu/scripting/src/manager.cpp:252, src/scripts/aq_crash_fix.lua:2, src/emu/qt/CMakeLists.txt:289-290"
|
||||
|
||||
- name: helper.lua
|
||||
standalone_path: scripts/eka2l1/helper.lua
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "eka2l1.helper module required by the other eka2l1 modules"
|
||||
source_ref: "src/emu/scripting/src/manager.cpp:252, src/emu/qt/CMakeLists.txt:289-290"
|
||||
|
||||
- name: kernel.lua
|
||||
standalone_path: scripts/eka2l1/kernel.lua
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "eka2l1.kernel module the shipped scripts require through package.path"
|
||||
source_ref: "src/emu/scripting/src/manager.cpp:252, src/scripts/aq_crash_fix.lua:4, src/emu/qt/CMakeLists.txt:289-290"
|
||||
|
||||
- name: std.lua
|
||||
standalone_path: scripts/eka2l1/std.lua
|
||||
mode: standalone
|
||||
required: false
|
||||
bundled: true
|
||||
description: "eka2l1.std module the shipped scripts require through package.path"
|
||||
source_ref: "src/emu/scripting/src/manager.cpp:252, src/scripts/aq_crash_fix.lua:5, src/emu/qt/CMakeLists.txt:289-290"
|
||||
+78
-18
@@ -3,36 +3,96 @@ type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/drhelius/Gearcoleco"
|
||||
upstream: "https://github.com/drhelius/Gearcoleco"
|
||||
profiled_date: "2026-03-23"
|
||||
source_commit: "ca4d13bae91e402d0dce29ed98d6bee2b41b1922"
|
||||
core_version: "1.0.0"
|
||||
display_name: "Coleco - ColecoVision (Gearcoleco)"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "8d32d242c6ba2104d75c17bb79773275387d4c37"
|
||||
core_version: "1.7.0-7-g8d32d24"
|
||||
display_name: "Coleco - ColecoVision / ADAM (Gearcoleco)"
|
||||
cores:
|
||||
- gearcoleco
|
||||
systems:
|
||||
- colecovision
|
||||
- coleco-adam
|
||||
|
||||
notes: |
|
||||
ColecoVision emulator by Ignacio Sanchez (drhelius). Official port
|
||||
maintained by the upstream author. The ColecoVision BIOS ROM is required.
|
||||
Without it, the core renders a static placeholder image (kNoBiosImage from
|
||||
no_bios.h) and games do not execute.
|
||||
ColecoVision and Coleco ADAM emulator by Ignacio Sanchez (drhelius); the
|
||||
libretro port lives in the same repository. Three firmware roles are
|
||||
declared in kAdamFirmwareMetadata (src/Adam.cpp:26-42): OS-7, EOS and
|
||||
SmartWriter, each with a size, a CRC32 and its accepted file names.
|
||||
|
||||
The libretro wrapper (platforms/libretro/libretro.cpp:295-308) tries "colecovision.rom" first,
|
||||
then falls back to "coleco.rom". Both resolve to the same LoadBios() call
|
||||
in src/Memory.cpp:256-287 which validates size == 0x2000 (8192 bytes) only.
|
||||
No hash check is performed.
|
||||
find_firmware() (platforms/libretro/libretro.cpp:773-834) walks the
|
||||
frontend system directory and then its gearcoleco subdirectory
|
||||
(libretro.cpp:787), trying every accepted name in each. A file whose size
|
||||
differs from the role's size is skipped with a warning (libretro.cpp:806-811).
|
||||
Every candidate that passes is compared to the first one found: two
|
||||
valid-sized images with different bytes are an ambiguous role and the load
|
||||
fails (libretro.cpp:820-827). CRC32 is computed after the search and only
|
||||
logged when it differs from the table (libretro.cpp:867-870, 918-929).
|
||||
|
||||
On reset, BIOS byte at offset 0x69 is patched for region selection:
|
||||
0x3C for NTSC, 0x32 for PAL (src/Memory.cpp:206-209).
|
||||
The machine is chosen per load (libretro.cpp:2387-2389): .ddp, .dsk, a ZIP
|
||||
holding an ADAM image, an .m3u playlist, no content at all, or a cartridge
|
||||
with the core option gearcoleco_cartridge_hardware set to ADAM start the
|
||||
ADAM; any other cartridge starts the ColecoVision. The "adam" subsystem
|
||||
(libretro.cpp:529-537) takes a cartridge, two disks and two data packs.
|
||||
|
||||
SGM (Super Game Module) expanded RAM requires no additional BIOS files.
|
||||
ColecoVision: load_colecovision_firmware() (libretro.cpp:852-879) needs OS-7
|
||||
and retro_load_game() returns false without it (libretro.cpp:2399-2403).
|
||||
It runs again on retro_reset() (libretro.cpp:2204-2205). The image goes
|
||||
through Memory::LoadBiosFromBuffer() (src/Memory.cpp:310-319) and byte 0x69
|
||||
is patched on reset, 0x32 when the cartridge is PAL and 0x3C otherwise
|
||||
(src/Memory.cpp:246-249); the ADAM always gets 0x3C (src/Memory.cpp:221).
|
||||
|
||||
ADAM: load_adam_firmware() (libretro.cpp:881-942) needs all three roles and
|
||||
every ADAM entry point returns false when one is missing (libretro.cpp:
|
||||
2372-2373, 2429-2433, 2446-2447, 2530-2534). Adam::LoadFirmware()
|
||||
(src/Adam.cpp:168-190) copies the three images, IsFirmwareReady()
|
||||
(src/Adam.cpp:139-148) gates StartAdam() (src/GearcolecoCore.cpp:410-415).
|
||||
The MIOC maps SmartWriter over the lower 32 KiB with EOS replacing its
|
||||
last 8 KiB bank when the control latch selects it, and OS-7 over the first
|
||||
8 KiB in cartridge mode (src/Adam.cpp:531-555).
|
||||
|
||||
Save RAM, save states and IPS patches are read next to the content or in
|
||||
the frontend save directory; they are state the core writes, not files a
|
||||
user obtains.
|
||||
|
||||
files:
|
||||
- name: "colecovision.rom"
|
||||
aliases: ["coleco.rom"]
|
||||
aliases: ["coleco.rom", "os7.u2"]
|
||||
description: "ColecoVision OS-7 BIOS"
|
||||
system: colecovision
|
||||
required: true
|
||||
size: 8192
|
||||
validation: [size]
|
||||
source_ref: "platforms/libretro/libretro.cpp:448-470, src/Memory.cpp:230-283"
|
||||
crc32: "3aa93ef3"
|
||||
sha1: "45bedc4cbdeac66c7df59e9e599195c778d86a92"
|
||||
validation: [size, crc32]
|
||||
source_ref: "platforms/libretro/libretro.cpp:773-834 (find_firmware), 852-879 (load_colecovision_firmware), 2399-2403, 2204-2205, src/Adam.cpp:28-32, src/Adam.h:53, src/Memory.cpp:310-319, src/Memory.cpp:246-249"
|
||||
note: >
|
||||
Loaded for both machines. Any 8192-byte image is accepted; a CRC32
|
||||
other than 3aa93ef3 logs "Unknown OS-7 revision" and runs. PAL timing
|
||||
comes from the byte patched at 0x69, not from a PAL dump.
|
||||
|
||||
- name: "eos.rom"
|
||||
description: "ADAM EOS (Elementary Operating System) ROM"
|
||||
system: coleco-adam
|
||||
required: true
|
||||
size: 8192
|
||||
crc32: "05a37a34"
|
||||
validation: [size, crc32]
|
||||
source_ref: "platforms/libretro/libretro.cpp:881-942 (load_adam_firmware), 2372-2373, 2429-2433, 2446-2447, 2530-2534, src/Adam.cpp:33-36, src/Adam.h:54, src/Adam.cpp:139-148, src/Adam.cpp:168-190, src/GearcolecoCore.cpp:410-415, src/Adam.cpp:537-540"
|
||||
note: >
|
||||
The 8 KiB EOS bank, the first half of the 16 KiB u22 chip; a CRC32
|
||||
other than 05a37a34 logs "Unknown EOS revision" and runs. Only the ADAM
|
||||
needs it: ColecoVision cartridges load without it.
|
||||
|
||||
- name: "writer.rom"
|
||||
aliases: ["wp.rom", "wp_r80.rom"]
|
||||
description: "ADAM SmartWriter word processor ROM"
|
||||
system: coleco-adam
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "58d86a2a"
|
||||
sha1: "d4aec4efe1431e56fe52d83baf9118542c525255"
|
||||
validation: [size, crc32]
|
||||
source_ref: "platforms/libretro/libretro.cpp:881-942 (load_adam_firmware), 2372-2373, 2429-2433, 2446-2447, 2530-2534, src/Adam.cpp:37-41, src/Adam.h:55, src/Adam.cpp:139-148, src/Adam.cpp:168-190, src/GearcolecoCore.cpp:410-415, src/Adam.cpp:531-540"
|
||||
note: >
|
||||
A CRC32 other than 58d86a2a logs "Unknown SmartWriter revision" and
|
||||
runs. Only the ADAM needs it: ColecoVision cartridges load without it.
|
||||
+68
-38
@@ -3,9 +3,9 @@ type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/drhelius/Geargrafx"
|
||||
upstream: "https://github.com/drhelius/Geargrafx"
|
||||
profiled_date: "2026-03-23"
|
||||
source_commit: "0a68ce8f6d3d787e84d7bc9efa30e982fa3d4c77"
|
||||
core_version: "1.6.0"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "78fc3d7a1b9f55d78d8fe64c13368131a269e204"
|
||||
core_version: "1.7.22"
|
||||
display_name: "NEC - PC Engine / SuperGrafx / CD (Geargrafx)"
|
||||
cores:
|
||||
- geargrafx
|
||||
@@ -16,24 +16,49 @@ systems:
|
||||
|
||||
notes: |
|
||||
Geargrafx is a PC Engine / TurboGrafx-16 / SuperGrafx / CD-ROM emulator by
|
||||
Ignacio Sanchez (drhelius). HuCard games run without BIOS.
|
||||
Ignacio Sanchez (drhelius). HuCard games run without any external file.
|
||||
|
||||
CD-ROM games require a System Card BIOS from the system directory. The core
|
||||
option "geargrafx_cdrom_bios" selects which card: Auto (default, maps to
|
||||
syscard3.pce), System Card 1, System Card 2, System Card 3, or Game Express.
|
||||
load_bios() in libretro.cpp builds "{system_directory}/{filename}" and calls
|
||||
core->LoadBios(path, true) for the syscard, then always attempts to load
|
||||
gexpress.pce via core->LoadBios(path, false).
|
||||
CD-ROM content needs a System Card image from the frontend system directory.
|
||||
load_bios() in platforms/libretro/libretro.cpp:617-658 picks the file name
|
||||
from the core option geargrafx_cdrom_bios (libretro.cpp:1429-1452):
|
||||
System Card 1 loads syscard1.pce, System Card 2 loads syscard2.pce, System
|
||||
Card 3 (the default) and Force Game Express load syscard3.pce; the older
|
||||
values Auto and Game Express are still accepted and map to the same. The
|
||||
path is "{system_directory}/{name}" (libretro.cpp:644). When the card is
|
||||
missing the core posts "CD-ROM BIOS not found" and continues
|
||||
(libretro.cpp:645-654). gexpress.pce is then always attempted from the
|
||||
same directory (libretro.cpp:656-657), silently. load_bios() runs from
|
||||
retro_load_game() for CD content only (libretro.cpp:466-467) and again on
|
||||
retro_reset() when a CD is loaded (libretro.cpp:312). With the libretro
|
||||
VFS the file goes through load_bios_file() into LoadBiosFromBuffer(),
|
||||
otherwise through Media::LoadBios() (libretro.cpp:580-615,
|
||||
src/media.cpp:391-431).
|
||||
|
||||
LoadBios() in media.cpp reads the file, strips a 512-byte header if present,
|
||||
computes CRC32, and checks it against k_game_database entries flagged with
|
||||
GG_GAMEDB_BIOS_SYSCARD or GG_GAMEDB_BIOS_GAME_EXPRESS. If the CRC32 is not
|
||||
found, the BIOS is marked as "Unknown" and invalid, but loading still proceeds.
|
||||
Size is checked against expected constants and logged if wrong, but not enforced.
|
||||
Media::LoadBiosData() (src/media.cpp:447-488) compares the file size with
|
||||
GG_BIOS_SYSCARD_SIZE (0x40000) or GG_BIOS_GAME_EXPRESS_SIZE (0x8000)
|
||||
(src/defines.h:53-54) and only logs a mismatch. A 512-byte header is
|
||||
stripped when the size has bit 9 set, the data is copied into a zeroed
|
||||
buffer of the expected size, and CRC32 is computed over that whole buffer.
|
||||
GatherBIOSInfoFromDB() (src/media.cpp:777-811) looks the CRC up in
|
||||
k_game_database entries flagged GG_GAMEDB_BIOS_SYSCARD or
|
||||
GG_GAMEDB_BIOS_GAME_EXPRESS (src/game_db.h:48-56); an unknown CRC marks the
|
||||
image "Unknown" and invalid but it is still used. The CRC is therefore the
|
||||
CRC of the padded buffer, not of the file: the 16384-byte Game Express
|
||||
Green dump (file CRC32 20E0A364) is recognised as 16AAF05A.
|
||||
|
||||
Game Express CD-ROM games are auto-detected via CRC32 lookup in game_db.h
|
||||
(GG_GAMEDB_GAME_EXPRESS flag). Arcade Card games are also detected from
|
||||
game_db.h and enable extra 0x30000 bytes of Card RAM for Super CD-ROM mode.
|
||||
For CD content the ROM banks map onto the System Card buffer, or onto the
|
||||
Game Express buffer when the disc is a Game Express title
|
||||
(src/media.cpp:845-849). A Game Express disc is detected by its CRC in
|
||||
game_db.h (GG_GAMEDB_GAME_EXPRESS, src/media.cpp:743-747) or forced by the
|
||||
option (src/media.cpp:604-608). With no card loaded the buffer is zeros and
|
||||
the CD does not boot. Arcade Card titles are also detected from game_db.h
|
||||
and run on the selected System Card.
|
||||
|
||||
Backup RAM is exposed through RETRO_MEMORY_SAVE_RAM (libretro.cpp:540-548)
|
||||
and saved by the frontend. A connected Memory Base 128 is persisted by the
|
||||
core itself as geargrafx_mb128.sav in the frontend save directory
|
||||
(libretro.cpp:660-740). Both are state the core writes, not files a user
|
||||
obtains.
|
||||
|
||||
files:
|
||||
- name: "syscard3.pce"
|
||||
@@ -41,43 +66,47 @@ files:
|
||||
size: 262144
|
||||
required: true
|
||||
validation: [size, crc32]
|
||||
source_ref: "platforms/libretro/libretro.cpp:632, platforms/libretro/libretro.cpp:647-649, src/media.cpp:435-532, src/defines.h:52, src/game_db.h:50, src/game_db.h:54"
|
||||
source_ref: "platforms/libretro/libretro.cpp:622, platforms/libretro/libretro.cpp:634-639, platforms/libretro/libretro.cpp:644-654, src/media.cpp:447-488, src/defines.h:53, src/game_db.h:51-52, src/game_db.h:54"
|
||||
note: >
|
||||
Default BIOS for CD-ROM games (cdrom_bios Auto or System Card 3).
|
||||
game_db.h recognizes Japan (CRC32 6D9A73EF) and USA (CRC32 2B5B75FE)
|
||||
variants under the same filename.
|
||||
Loaded for the default option value System Card 3 and for Force Game
|
||||
Express. game_db.h accepts three images under this name: Japan
|
||||
(CRC32 6D9A73EF), the Japan NuFont Hack (CRC32 0ECEA1F3, syscard3.pce
|
||||
patched with xlateFont-JPN.ips from dshadoff/SYSCARD_Translatefont)
|
||||
and USA (CRC32 2B5B75FE).
|
||||
|
||||
- name: "syscard2.pce"
|
||||
description: "CD-ROM System Card 2.0"
|
||||
description: "CD-ROM System Card 2.0 / 2.1"
|
||||
size: 262144
|
||||
required: false
|
||||
validation: [size, crc32]
|
||||
source_ref: "platforms/libretro/libretro.cpp:631, platforms/libretro/libretro.cpp:641-642, src/media.cpp:435-532, src/game_db.h:48-49, src/game_db.h:53"
|
||||
source_ref: "platforms/libretro/libretro.cpp:621, platforms/libretro/libretro.cpp:631-632, src/media.cpp:447-488, src/defines.h:53, src/game_db.h:49-50, src/game_db.h:53"
|
||||
note: >
|
||||
cdrom_bios = 'System Card 2'. For older CD-ROM2 titles. game_db.h
|
||||
recognizes three variants: v2.0 Japan (CRC32 52520BC6), v2.1 Japan
|
||||
(CRC32 283B74E0), and USA (CRC32 FF2A5EC3).
|
||||
Loaded when geargrafx_cdrom_bios is System Card 2. game_db.h accepts
|
||||
v2.0 Japan (CRC32 52520BC6), v2.1 Japan (CRC32 283B74E0) and USA
|
||||
(CRC32 FF2A5EC3).
|
||||
|
||||
- name: "syscard1.pce"
|
||||
description: "CD-ROM System Card 1.0 (Japan)"
|
||||
size: 262144
|
||||
crc32: "3F9F95A4"
|
||||
required: false
|
||||
validation: [size, crc32]
|
||||
source_ref: "platforms/libretro/libretro.cpp:630, platforms/libretro/libretro.cpp:638-639, src/media.cpp:435-532, src/game_db.h:47"
|
||||
note: >
|
||||
cdrom_bios = 'System Card 1'. Very early CD-ROM2 games only.
|
||||
CRC32 3F9F95A4.
|
||||
source_ref: "platforms/libretro/libretro.cpp:620, platforms/libretro/libretro.cpp:628-629, src/media.cpp:447-488, src/defines.h:53, src/game_db.h:48"
|
||||
note: "Loaded when geargrafx_cdrom_bios is System Card 1."
|
||||
|
||||
- name: "gexpress.pce"
|
||||
description: "Game Express CD Card"
|
||||
description: "Games Express CD Card"
|
||||
size: 32768
|
||||
required: false
|
||||
validation: [size, crc32]
|
||||
source_ref: "platforms/libretro/libretro.cpp:633, platforms/libretro/libretro.cpp:633-634, platforms/libretro/libretro.cpp:535-536, src/media.cpp:435-532, src/defines.h:53, src/game_db.h:55-56"
|
||||
source_ref: "platforms/libretro/libretro.cpp:623, platforms/libretro/libretro.cpp:656-657, src/media.cpp:447-488, src/media.cpp:604-608, src/media.cpp:743-747, src/defines.h:54, src/game_db.h:55-56"
|
||||
note: >
|
||||
Always loaded alongside the selected System Card BIOS (platforms/libretro/libretro.cpp:642).
|
||||
Required for Game Express CD-ROM titles. game_db.h recognizes Blue Version
|
||||
(CRC32 51A12D90) and Green Version (CRC32 16AAF05A).
|
||||
Always attempted after the System Card, used for discs flagged
|
||||
GG_GAMEDB_GAME_EXPRESS in game_db.h or when the option is Force Game
|
||||
Express. game_db.h accepts the Blue Version (CRC32 51A12D90, 32768
|
||||
bytes) and the Green Version (CRC32 16AAF05A over the 32768-byte
|
||||
buffer; the dump is 16384 bytes, file CRC32 20E0A364, zero-padded by
|
||||
LoadBiosData).
|
||||
|
||||
valid_bios_crc32:
|
||||
syscard:
|
||||
@@ -85,8 +114,9 @@ valid_bios_crc32:
|
||||
- { crc32: "52520BC6", name: "CD-ROM System Card 2.0 (J)" }
|
||||
- { crc32: "283B74E0", name: "CD-ROM System Card 2.1 (J)" }
|
||||
- { crc32: "6D9A73EF", name: "Super CD-ROM System 3.0 (J)" }
|
||||
- { crc32: "0ECEA1F3", name: "Super CD-ROM System 3.0 (J) NuFont Hack" }
|
||||
- { crc32: "FF2A5EC3", name: "TurboGrafx CD System Card 2.0 (USA)" }
|
||||
- { crc32: "2B5B75FE", name: "TurboGrafx CD Super System 3.0 (USA)" }
|
||||
game_express:
|
||||
- { crc32: "51A12D90", name: "Game Express Card Blue Version (J)" }
|
||||
- { crc32: "16AAF05A", name: "Game Express Card Green Version (J)" }
|
||||
- { crc32: "51A12D90", name: "Games Express CD Card Blue Version (J)" }
|
||||
- { crc32: "16AAF05A", name: "Games Express CD Card Green Version (J)", file_crc32: "20E0A364", file_size: 16384 }
|
||||
+68
-51
@@ -4,8 +4,8 @@ core_classification: official_port
|
||||
source: "https://github.com/libretro/hatari"
|
||||
upstream: "https://github.com/hatari/hatari"
|
||||
logo: "https://raw.githubusercontent.com/hatari/hatari/main/share/icons/hicolor/scalable/apps/hatari.svg"
|
||||
profiled_date: "2026-09-03"
|
||||
source_commit: "7fd34ccf34c6ea12b7f2b960b2f167d7f251892d"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "5831f66e05ae19435bd9d8ef1c6f9c93998ff6f4"
|
||||
upstream_commit: "51ed9991101fdc4623b3b38ec16e5a170cf2dffa"
|
||||
core_version: "2.6.1-devel"
|
||||
display_name: "Atari - ST/STE/TT/Falcon (Hatari)"
|
||||
@@ -23,50 +23,61 @@ notes: |
|
||||
January 2026, plus the port commits that follow the merge base recorded
|
||||
as upstream_commit: VFS, disk control, core options and hard disk
|
||||
loading. It builds as hatari_libretro (.gitlab-ci-libretro.yml:10-11,
|
||||
src/CMakeLists.txt:371-402), reports library_name hatari and the
|
||||
HATARI_VERSION string 2.6.1-devel (src/retro/main_retro.c:219-220,
|
||||
src/CMakeLists.txt:371-404), reports library_name hatari and the
|
||||
HATARI_VERSION string 2.6.1-devel (src/retro/main_retro.c:218-219,
|
||||
src/includes/version.h:8). The .info shipped in the tree declares no
|
||||
firmware (share/libretro/info/libretro-hatari.info); the
|
||||
hatari_libretro.info in libretro-core-info still describes the 1.8 port
|
||||
and its tos.img MD5, which this code never checks.
|
||||
hatari_libretro.info in libretro-core-info took that file's metadata on
|
||||
2026-09-16 and keeps a tos.img firmware entry with the TOS 1.02 US MD5,
|
||||
which this code never checks.
|
||||
|
||||
retro_init builds <system>/tos.img, records whether it exists and passes
|
||||
it as --tos (src/retro/main_retro.c:157-204); when it is absent a
|
||||
it as --tos (src/retro/main_retro.c:157-207); when it is absent a
|
||||
frontend message is shown and retro_run only refreshes the framebuffer
|
||||
(src/retro/main_retro.c:186-189, src/retro/main_retro.c:251-262). The
|
||||
(src/retro/main_retro.c:186-189, src/retro/main_retro.c:250-261). The
|
||||
name is fixed by that check: the .rom and .tos fallbacks of File_Read
|
||||
(src/tos.c:61-67, src/file.c:298-339, src/file.c:530-569) are never
|
||||
reached under a frontend. Without a system directory Main_Init runs
|
||||
with no --tos and the TOS path falls back to tos.img in the Hatari data
|
||||
directory derived from the executable location (src/configuration.c:810-812,
|
||||
src/paths.c:299-331, CMakeLists.txt:418-430). TOS_LoadImage strips the
|
||||
256-byte (34-byte for 4.92) loader of a RAM TOS, detects EmuTOS by ETOS
|
||||
at offset 0x2c, refuses images below 0x40 bytes, above 1 MB, with a
|
||||
version outside 0x100-0x6FF or a load address other than 0xE00000 or
|
||||
0xFC0000, and coerces machine type and CPU to the TOS version unless
|
||||
the image is a 512 KB or larger EmuTOS (src/tos.c:976-1097,
|
||||
src/tos.c:838-969). ROM patches apply when the hatari_patch_tos option
|
||||
is on (src/retro/options.c:250-263, src/retro/options.c:783). No TOS is
|
||||
embedded. Because nSymbolsAutoLoad defaults to SYM_AUTOLOAD_DEBUGGER
|
||||
(src/configuration.c:621, src/includes/configuration.h:29-31), every TOS
|
||||
load also reads a <tos>.sym symbol table when one exists
|
||||
(src/tos.c:1094, src/debug/symbols.c:1095-1113,
|
||||
src/debug/symbols.c:1002-1020, src/debug/symbols.c:372-407).
|
||||
(src/tos.c:60-66, src/file.c:312-353, src/file.c:544-583) are never
|
||||
reached under a frontend. A missing --tos file fails option parsing
|
||||
(src/options.c:1026-1079, src/options.c:1937-1945); Main_ErrorExit only
|
||||
raises the quit flag in this build (src/retro/main_retro.c:478-490), so
|
||||
Main_Init carries on with bUseTos cleared and TOS_InitImage installs the
|
||||
built-in test stub of faketosData.c instead of reading a ROM
|
||||
(src/tos.c:43, src/tos.c:1112-1131, src/tos.c:1151-1162). Without a
|
||||
system directory Main_Init runs with no --tos, the TOS path falls back to
|
||||
tos.img in the Hatari data directory derived from the executable location
|
||||
(src/configuration.c:810-812, src/paths.c:305-356, CMakeLists.txt:422-434)
|
||||
and have_bios is never set. TOS_LoadImage strips the 256-byte (34-byte
|
||||
for 4.92) loader of a RAM TOS, detects EmuTOS by ETOS at offset 0x2c,
|
||||
refuses images below 0x40 bytes, above 1 MB, with a version outside
|
||||
0x100-0x6FF or a load address other than 0xE00000 or 0xFC0000, and
|
||||
coerces machine type and CPU to the TOS version unless the image is a
|
||||
512 KB or larger EmuTOS (src/tos.c:976-1097, src/tos.c:838-969). ROM
|
||||
patches apply when the hatari_patch_tos option is on and the image is
|
||||
not EmuTOS (src/retro/options.c:250-263, src/retro/options.c:784,
|
||||
src/tos.c:1220-1222). No TOS is embedded. Because nSymbolsAutoLoad
|
||||
defaults to SYM_AUTOLOAD_DEBUGGER (src/configuration.c:621,
|
||||
src/includes/configuration.h:29-31), every TOS load also reads a
|
||||
<tos>.sym symbol table when one exists (src/tos.c:1094,
|
||||
src/debug/symbols.c:1095-1113, src/debug/symbols.c:1002-1020,
|
||||
src/debug/symbols.c:372-407).
|
||||
|
||||
The Hatari home directory is the RetroArch save directory
|
||||
(src/paths.c:236-250). Configuration is read from <CONFDIR>/hatari.cfg,
|
||||
/etc on Unix and the current directory on Windows, then from hatari.cfg
|
||||
in that home directory, before the --tos argument is applied
|
||||
(src/main.c:256-278, src/main.c:315-318, src/configuration.c:862-867,
|
||||
src/configuration.c:1061-1071, CMakeLists.txt:440-457). Every section is
|
||||
honoured: the cartridge image (src/configuration.c:487-493), floppy
|
||||
images, GEMDOS directories and ACSI, SCSI and IDE images
|
||||
(src/configuration.c:362-364, src/configuration.c:375-483), MIDI, printer
|
||||
and RS232 host endpoints (src/configuration.c:509-543), all disabled by
|
||||
default (src/configuration.c:736-761) and opened by Midi_Host_Open,
|
||||
Printer_TransferByteTo and RS232_OpenCOMPort when enabled
|
||||
(src/midi.c:342-367, src/printer.c:42-65, src/printer.c:89-106,
|
||||
src/rs232.c:175-230). szMappingFileName is parsed
|
||||
(src/main.c:260-282, src/main.c:319-322, src/configuration.c:862-867,
|
||||
src/configuration.c:1061-1071, CMakeLists.txt:444-461). The boot core
|
||||
options are applied right after the command line, so the machine, DSP,
|
||||
CPU, FPU, memory and hatari_patch_tos keys of hatari.cfg are overwritten
|
||||
by them (src/main.c:328-330, src/retro/options.c:724-789). Every other
|
||||
section is honoured: the cartridge image (src/configuration.c:487-493),
|
||||
floppy images, GEMDOS directories and ACSI, SCSI and IDE images
|
||||
(src/configuration.c:362-364, src/configuration.c:375-483), MIDI, printer,
|
||||
RS232 and SCC host endpoints (src/configuration.c:509-543), all disabled
|
||||
by default (src/configuration.c:736-761) and opened by Midi_Host_Open,
|
||||
Printer_TransferByteTo, RS232_OpenCOMPort and SCC_Init_Channel when
|
||||
enabled (src/midi.c:342-367, src/printer.c:42-65, src/printer.c:89-106,
|
||||
src/rs232.c:175-246, src/scc.c:439-500). szMappingFileName is parsed
|
||||
(src/configuration.c:256) but the port's Keymap_LoadRemapFile is empty
|
||||
(src/retro/keymap.c:222-224); only the SDL build reads a keymap file
|
||||
(src/sdl/keymap.c:701). The autosave snapshot is restored by
|
||||
@@ -76,31 +87,35 @@ notes: |
|
||||
src/falcon/nvram.c:334-337).
|
||||
|
||||
Content is a floppy image, an .m3u list parsed relative to its own
|
||||
directory (src/retro/disk_control.c:96-184), an .ide image put on the
|
||||
directory (src/retro/disk_control.c:94-182), an .ide image put on the
|
||||
IDE master, a .vhd image put on ACSI 0 or a .gem marker naming a GEMDOS
|
||||
directory (src/retro/main_retro.c:370-424, src/retro/harddisk.c:32-129).
|
||||
directory (src/retro/main_retro.c:369-427, src/retro/harddisk.c:32-129).
|
||||
With a .gem, <system>/hatari/BOOT.ST is inserted into drive A when it
|
||||
exists (src/retro/harddisk.c:104-127). A disk whose name ends in A pulls
|
||||
exists (src/retro/harddisk.c:105-127). A disk whose name ends in A pulls
|
||||
the sibling ending in B into drive B (src/floppy.c:300-343,
|
||||
src/floppy.c:385-388), and an STX image reads its .wd1772 overlay from
|
||||
the same directory (src/floppies/stx.c:807-825). Savestates pass through
|
||||
the same directory (src/floppies/stx.c:807-827). Savestates pass through
|
||||
hatari_savestate.tmp in the system directory
|
||||
(src/retro/main_retro.c:41, src/retro/main_retro.c:293-357). IPF support
|
||||
(src/retro/main_retro.c:41, src/retro/main_retro.c:292-359). IPF support
|
||||
is compiled in from rsn8887/capsimg when ENABLE_STATIC_CAPSIMAGE is on
|
||||
(cmake/BuildDependencies.cmake:93-126); the Windows and Vita CI jobs turn
|
||||
it off (.gitlab-ci-libretro.yml:97, .gitlab-ci-libretro.yml:105,
|
||||
.gitlab-ci-libretro.yml:189).
|
||||
(cmake/BuildDependencies.cmake:93-126); the Windows jobs build with it
|
||||
since September 2026 (.gitlab-ci-libretro.yml:101,
|
||||
.gitlab-ci-libretro.yml:109) and the static Vita, Wii, Wii U and Switch
|
||||
jobs turn it off (.gitlab-ci-libretro.yml:193, .gitlab-ci-libretro.yml:202,
|
||||
.gitlab-ci-libretro.yml:210, .gitlab-ci-libretro.yml:218).
|
||||
File access goes through the libretro VFS when the frontend provides it
|
||||
(src/retro/vfs.c:17-49, src/file.c:239-286, src/file.c:465-478).
|
||||
(src/retro/vfs.c:17-48, src/file.c:253-302, src/file.c:479-492), and a
|
||||
device-prefixed path such as ux0:/ counts as absolute (src/file.c:152-164).
|
||||
|
||||
files:
|
||||
- name: "tos.img"
|
||||
path: "tos.img"
|
||||
description: "Atari TOS ROM image"
|
||||
required: true
|
||||
min_size: 64
|
||||
max_size: 1048576
|
||||
validation: [size]
|
||||
source_ref: "src/retro/main_retro.c:157-204, src/retro/main_retro.c:251-262, src/options.c:1937-1945, src/tos.c:61-67, src/tos.c:976-1097, src/tos.c:838-969, src/file.c:298-339"
|
||||
source_ref: "src/retro/main_retro.c:157-207, src/retro/main_retro.c:250-261, src/options.c:1937-1945, src/tos.c:60-66, src/tos.c:976-1097, src/tos.c:838-969, src/file.c:312-353"
|
||||
note: >
|
||||
Any TOS 1.00 to 4.04, TOS 0.00, a RAM TOS or EmuTOS. The file must
|
||||
carry this exact name: retro_init only enables emulation when
|
||||
@@ -125,19 +140,20 @@ files:
|
||||
min_size: 40
|
||||
max_size: 131076
|
||||
validation: [size]
|
||||
source_ref: "src/cart.c:39-46, src/cart.c:52-88, src/cart.c:97-105, src/cart.c:115-141, src/configuration.c:487-493, src/configuration.c:814"
|
||||
source_ref: "src/cart.c:41-47, src/cart.c:53-88, src/cart.c:97-104, src/cart.c:114-142, src/configuration.c:487-493, src/configuration.c:814"
|
||||
note: >
|
||||
Set through hatari.cfg. Raw images up to 0x20000 bytes or .stc
|
||||
images of exactly 0x20004 bytes whose 4-byte header is skipped;
|
||||
extensions .img, .rom and .stc are tried when the configured path is
|
||||
missing. Replaced by the built-in GEMDOS trampoline whenever GEMDOS
|
||||
hard disk emulation, extended VDI or OS tracing is on.
|
||||
hard disk emulation, extended VDI, program autostart or OS tracing
|
||||
is on.
|
||||
|
||||
- name: "BOOT.ST"
|
||||
path: "hatari/BOOT.ST"
|
||||
description: "Boot floppy inserted with GEMDOS hard disk folders"
|
||||
required: false
|
||||
source_ref: "src/retro/harddisk.c:78-129, src/retro/main_retro.c:393-396"
|
||||
source_ref: "src/retro/harddisk.c:78-129, src/retro/main_retro.c:391-395"
|
||||
note: "Inserted into drive A when the content is a .gem file."
|
||||
|
||||
- name: "hatari.cfg"
|
||||
@@ -146,10 +162,11 @@ files:
|
||||
required: false
|
||||
storage: user_provided
|
||||
unsourceable: "user settings in Hatari's INI format; no canonical contents"
|
||||
source_ref: "src/main.c:256-278, src/main.c:315-318, src/configuration.c:862-867, src/configuration.c:1061-1071, src/paths.c:236-250, CMakeLists.txt:440-457"
|
||||
source_ref: "src/main.c:260-282, src/main.c:319-322, src/main.c:328-330, src/configuration.c:862-867, src/configuration.c:1061-1071, src/paths.c:236-250, CMakeLists.txt:444-461"
|
||||
note: >
|
||||
Read from <CONFDIR>/hatari.cfg and then from hatari.cfg in the
|
||||
RetroArch save directory, before the --tos argument is applied.
|
||||
RetroArch save directory, before the --tos argument and the boot
|
||||
core options are applied.
|
||||
|
||||
- name: "hatari.nvram"
|
||||
path: null
|
||||
@@ -160,7 +177,7 @@ files:
|
||||
validation: [size]
|
||||
storage: user_provided
|
||||
unsourceable: "machine state the emulator writes itself at exit; no canonical contents"
|
||||
source_ref: "src/falcon/nvram.c:96-97, src/falcon/nvram.c:116-141, src/falcon/nvram.c:148-171, src/falcon/nvram.c:282-294, src/falcon/nvram.c:334-337, src/paths.c:236-250, src/main.c:204"
|
||||
source_ref: "src/falcon/nvram.c:96-97, src/falcon/nvram.c:116-141, src/falcon/nvram.c:148-171, src/falcon/nvram.c:282-294, src/falcon/nvram.c:334-337, src/paths.c:236-250, src/main.c:208"
|
||||
note: >
|
||||
Read from the RetroArch save directory at NvRam_Init; a short read
|
||||
keeps the built-in defaults. Saved back on exit.
|
||||
+33
-27
@@ -3,10 +3,10 @@ type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/bbbradsmith/hatariB"
|
||||
upstream: "https://github.com/hatari/hatari"
|
||||
profiled_date: "2026-09-03"
|
||||
source_commit: "e9bbbd5fb35076402dc6b3c8ee3259e1809001cf"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "55a67d34238031a79d9de7f91a5c51e9771bd146"
|
||||
upstream_commit: "6a8e26d69fb32d61efd398dc1ad9a77122400034"
|
||||
core_version: "0.5"
|
||||
core_version: "1.1 unstable preview"
|
||||
display_name: "Atari - ST/STE/TT/Falcon (hatariB)"
|
||||
cores:
|
||||
- hatarib
|
||||
@@ -19,17 +19,22 @@ systems:
|
||||
notes: |
|
||||
hatariB carries Hatari 2.6.1 in its hatari/ directory, every change
|
||||
fenced by __LIBRETRO__ (DEVELOP.md:7-14, DEVELOP.md:44-48), and
|
||||
builds as hatarib (makefile.libretro:1-3, core/core.c:1134); the
|
||||
upstream_commit is the v2.6.1 tag the tree was taken from. The core
|
||||
reads and writes through core_file.c, using the libretro VFS when the
|
||||
frontend offers version 3 (core/core_file.c:747-790). Hatari's own
|
||||
builds as hatarib (makefile.libretro:1, makefile.libretro:3,
|
||||
core/core.c:1134); the upstream_commit is the v2.6.1 tag the tree was
|
||||
taken from. The core reads and writes through core_file.c, using the
|
||||
libretro VFS when the frontend offers version 3
|
||||
(core/core_file.c:747-790). Hatari's own
|
||||
directory strings are replaced by <nopath> (hatari/src/paths.c:339-350),
|
||||
hatari.cfg is never read because Main_LoadInitialConfig calls
|
||||
core_config_init instead (hatari/src/main.c:984-1012,
|
||||
core/core_config.c:1421-1426), and printer, RS232 and keymap file
|
||||
core_config_init instead (hatari/src/main.c:987-1015,
|
||||
core/core_config.c:1440-1445), and printer, RS232 and keymap file
|
||||
settings keep their disabled defaults with no option to change them
|
||||
(hatari/src/configuration.c:728, hatari/src/keymap.c:63,
|
||||
hatari/src/keymap.c:699-718).
|
||||
hatari/src/keymap.c:699-718). The AVI recorder is compiled out and
|
||||
replaced by stubs (hatari/src/avi_record.c:102,
|
||||
hatari/src/avi_record.c:1535-1547), and File_Length, File_Lock and
|
||||
File_InputAvailable are removed with it (hatari/src/file.c:374,
|
||||
hatari/src/file.c:744, hatari/src/file.c:802).
|
||||
|
||||
At retro_set_environment the core looks for <system>/tos.img and lists
|
||||
every entry of <system>/hatarib/, up to 128 files and 16 directories
|
||||
@@ -37,29 +42,29 @@ notes: |
|
||||
hatarib_tos, hatarib_cartridge and hatarib_hardimg options, 100 values
|
||||
each: TOS candidates end in .img, .rom, .bin or .tos, cartridges in .img,
|
||||
.rom, .bin or .cart, hard disks are any file or subdirectory
|
||||
(core/core_config.c:11, core/core_config.c:1299-1366). The TOS option
|
||||
(core/core_config.c:11, core/core_config.c:1318-1385). The TOS option
|
||||
defaults to <tos.img> when the file exists and to EmuTOS 192uk otherwise
|
||||
(core/core_config.c:68-92, core/core_config.c:1306-1321); the four
|
||||
(core/core_config.c:68-92, core/core_config.c:1325-1340); the four
|
||||
special values select tos.img or one of the built-in images, any other
|
||||
value is a path under the system directory
|
||||
(core/core_config.c:1094-1117). TOS_LoadImage copies the built-in image
|
||||
(core/core_config.c:1112-1135). TOS_LoadImage copies the built-in image
|
||||
or reads the file with core_read_file_system and caches it
|
||||
(hatari/src/tos.c:45-63, hatari/src/tos.c:1028-1078); a failed load
|
||||
raises a notification and halts the CPU instead of leaving
|
||||
(hatari/src/tos.c:1080-1086, hatari/src/tos.c:1250-1262,
|
||||
core/core.c:419-433, hatari/src/main.c:903-922). Validation is
|
||||
core/core.c:419-433, hatari/src/main.c:906-925). Validation is
|
||||
upstream's (hatari/src/tos.c:1114-1160), but TOS_CheckSysConfig only
|
||||
warns and never switches machine or CPU (hatari/src/tos.c:859-1000). The
|
||||
hatarib_emutos_region and hatarib_emutos_framerate options rewrite the
|
||||
OS header word of an EmuTOS image (hatari/src/tos.c:1351-1365,
|
||||
core/core_config.c:1163-1169). Symbols_LoadTOS still runs
|
||||
core/core_config.c:1181-1187). Symbols_LoadTOS still runs
|
||||
(hatari/src/tos.c:1193) but resolves <tos>.sym against the process
|
||||
working directory, so nothing is read from the system directory.
|
||||
|
||||
The three EmuTOS images are EmuTOS 1.4 built from the hatarib-custom-140
|
||||
branch of bbbradsmith/emutos, which lets DESKTOP.INF and NEWDESK.INF be
|
||||
loaded, and are compiled in through emutos/bin_to_h.py
|
||||
(DEVELOP.md:10, README.md:305-307).
|
||||
(DEVELOP.md:10, README.md:313-315).
|
||||
|
||||
A cartridge is read with core_read_file_system from the option value
|
||||
(hatari/src/cart.c:40, hatari/src/cart.c:57-100) and disabled with
|
||||
@@ -67,15 +72,15 @@ notes: |
|
||||
(hatari/src/cart.c:108-147). A permanent hard disk comes from
|
||||
system/hatarib through hatarib_hardimg and hatarib_hardtype, GEMDOS
|
||||
folder, ACSI, SCSI or IDE (core/core_config.c:186-233,
|
||||
core/core_config.c:1000-1057, core/core_config.c:1151-1162); temporary
|
||||
core/core_config.c:1018-1075, core/core_config.c:1169-1180); temporary
|
||||
ones are content with an .acsi, .ahd, .vhd, .scsi, .shd, .ide or .gem
|
||||
extension or lines of an M3U (core/core_disk.c:16-23,
|
||||
core/core_disk.c:676-713, core/core_disk.c:782-785,
|
||||
core/core_config.c:1059-1087). Images open through core_file_open_hard
|
||||
core/core_config.c:1077-1105). Images open through core_file_open_hard
|
||||
(hatari/src/hdc.c:903, hatari/src/hdc.c:961-963,
|
||||
hatari/src/ide.c:663-666) and GEMDOS folders through core_scandir_hard
|
||||
(hatari/src/gemdos.c:663, hatari/src/gemdos.c:761,
|
||||
hatari/src/gemdos.c:1321); hard disks are write protected by default
|
||||
(hatari/src/gemdos.c:672, hatari/src/gemdos.c:770,
|
||||
hatari/src/gemdos.c:1330); hard disks are write protected by default
|
||||
(hatari/src/configuration.c:918). Floppy content is ST, MSA, DIM, STX,
|
||||
IPF or CTR, also inside a ZIP, ZST or GZ, or an M3U or M3U8 list with
|
||||
#BOOTA, #BOOTB, #AUTO and #RES directives (core/core_disk.c:14-24,
|
||||
@@ -98,9 +103,10 @@ files:
|
||||
description: "Atari TOS ROM image, default when present"
|
||||
required: false
|
||||
has_builtin: true
|
||||
min_size: 64
|
||||
max_size: 1048576
|
||||
validation: [size]
|
||||
source_ref: "core/core_file.c:791-851, core/core_config.c:68-92, core/core_config.c:1094-1117, core/core_config.c:1306-1321, hatari/src/tos.c:1028-1160"
|
||||
source_ref: "core/core_file.c:791-851, core/core_config.c:68-92, core/core_config.c:1112-1135, core/core_config.c:1325-1340, hatari/src/tos.c:1028-1160"
|
||||
note: >
|
||||
Any TOS 1.00 to 4.04, TOS 0.00, a RAM TOS or EmuTOS. Further images
|
||||
go in system/hatarib/ with an .img, .rom, .bin or .tos extension and
|
||||
@@ -116,7 +122,7 @@ files:
|
||||
sha1: 38dc8baf5224229df55e7d0804b6b7b6bacfc7a0
|
||||
sha256: 757c571b98b955887ea6d9034513555f4263040420e9d2195cd0c6f8de06c451
|
||||
crc32: 118b35b4
|
||||
source_ref: "emutos/bin_to_h.py:1-30, hatari/src/tos.c:45-63, hatari/src/tos.c:1038-1046, core/core_config.c:76, core/core_config.c:1096-1116"
|
||||
source_ref: "emutos/bin_to_h.py:1-30, hatari/src/tos.c:45-63, hatari/src/tos.c:1038-1046, core/core_config.c:76, core/core_config.c:1114-1134"
|
||||
note: >
|
||||
Compiled into the core from emutos/etos1024k.img and never opened at
|
||||
run time. Built from the hatarib-custom-140 branch of
|
||||
@@ -131,7 +137,7 @@ files:
|
||||
sha1: ef3a3ccffcb317bff7d0dceca0abacefc3a58abc
|
||||
sha256: 5c679e6b1b8ed178fa079e4957ed66f9277094f0fe0a5b50c8cbea041e220250
|
||||
crc32: fe4c3ff1
|
||||
source_ref: "emutos/bin_to_h.py:1-30, hatari/src/tos.c:45-63, hatari/src/tos.c:1038-1046, core/core_config.c:77, core/core_config.c:91, core/core_config.c:1096-1116"
|
||||
source_ref: "emutos/bin_to_h.py:1-30, hatari/src/tos.c:45-63, hatari/src/tos.c:1038-1046, core/core_config.c:77, core/core_config.c:91, core/core_config.c:1114-1134"
|
||||
note: >
|
||||
Compiled into the core from emutos/etos192uk.img and never opened at
|
||||
run time. Selected when no tos.img exists and no other image is
|
||||
@@ -147,7 +153,7 @@ files:
|
||||
sha1: bb98cd8a50df53afecfe183b049eda4014fc0d05
|
||||
sha256: ccccc420908012e03b4b38b8ed4530923bb04f27ab189eb2c694bf7e8509b666
|
||||
crc32: 18030f9a
|
||||
source_ref: "emutos/bin_to_h.py:1-30, hatari/src/tos.c:45-63, hatari/src/tos.c:1038-1046, core/core_config.c:78, core/core_config.c:1096-1116"
|
||||
source_ref: "emutos/bin_to_h.py:1-30, hatari/src/tos.c:45-63, hatari/src/tos.c:1038-1046, core/core_config.c:78, core/core_config.c:1114-1134"
|
||||
note: >
|
||||
Compiled into the core from emutos/etos192us.img and never opened at
|
||||
run time. Built from the hatarib-custom-140 branch of
|
||||
@@ -161,7 +167,7 @@ files:
|
||||
min_size: 40
|
||||
max_size: 131076
|
||||
validation: [size]
|
||||
source_ref: "core/core_config.c:166-185, core/core_config.c:1145-1149, core/core_config.c:1332-1344, core/core_file.c:256-259, hatari/src/cart.c:40, hatari/src/cart.c:57-100, hatari/src/cart.c:108-147"
|
||||
source_ref: "core/core_config.c:166-185, core/core_config.c:1163-1167, core/core_config.c:1351-1363, core/core_file.c:256-259, hatari/src/cart.c:40, hatari/src/cart.c:57-100, hatari/src/cart.c:108-147"
|
||||
note: >
|
||||
Any file of system/hatarib/ with an .img, .rom, .bin or .cart
|
||||
extension. Raw images up to 0x20000 bytes or .stc images of exactly
|
||||
@@ -188,7 +194,7 @@ files:
|
||||
path: null
|
||||
description: "CAPSImage 5.1 shared library for IPF and CTR floppy images, Linux, macOS, Android and Raspberry Pi builds"
|
||||
required: false
|
||||
source_ref: "hatari/src/floppy_ipf.c:320-331, hatari/src/floppy_ipf.c:632-640, hatari/src/floppy_ipf.c:686-744, hatari/src/floppy_ipf.c:752-764, hatari/CMakeLists.txt:246, hatari/cmake/config-cmake.h:99-101, DEVELOP.md:56, DEVELOP.md:59"
|
||||
source_ref: "hatari/src/floppy_ipf.c:320-331, hatari/src/floppy_ipf.c:637-645, hatari/src/floppy_ipf.c:691-749, hatari/src/floppy_ipf.c:757-769, hatari/CMakeLists.txt:246, hatari/cmake/config-cmake.h:99-101, DEVELOP.md:56, DEVELOP.md:59"
|
||||
note: >
|
||||
Opened with dlopen on the first IPF or CTR read, from the dlopen
|
||||
search path or next to the core, and required to export the CAPS
|
||||
@@ -200,7 +206,7 @@ files:
|
||||
path: null
|
||||
description: "CAPSImage 5.1 shared library for IPF and CTR floppy images, Windows build"
|
||||
required: false
|
||||
source_ref: "hatari/src/floppy_ipf.c:320-331, hatari/src/floppy_ipf.c:632-640, hatari/src/floppy_ipf.c:686-744, hatari/src/floppy_ipf.c:752-764, DEVELOP.md:56"
|
||||
source_ref: "hatari/src/floppy_ipf.c:320-331, hatari/src/floppy_ipf.c:637-645, hatari/src/floppy_ipf.c:691-749, hatari/src/floppy_ipf.c:757-769, DEVELOP.md:56"
|
||||
note: >
|
||||
Opened with LoadLibrary on the first IPF or CTR read, from the
|
||||
RetroArch directory or the library search path; without it those
|
||||
|
||||
+152
-63
@@ -1,11 +1,12 @@
|
||||
emulator: "higan (SFC Accuracy)"
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/nSide"
|
||||
upstream: "https://github.com/byuu/higan"
|
||||
profiled_date: "2026-03-23"
|
||||
source_commit: "5e965d0db4c0d05e7e8fb6449035538781c73473"
|
||||
core_version: "v105 (Super Famicom Accuracy)"
|
||||
core_classification: frozen_snapshot
|
||||
source: "https://gitlab.com/higan/higan"
|
||||
source_branch: libretro
|
||||
upstream: "https://gitlab.com/higan/higan"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "d3f592013a27cb78f17d84f90a6be6cf6f6af1d1"
|
||||
core_version: "106"
|
||||
display_name: "Nintendo - SNES / Famicom (higan Accuracy)"
|
||||
cores:
|
||||
- higan_sfc
|
||||
@@ -14,124 +15,212 @@ systems:
|
||||
- nintendo-sgb
|
||||
|
||||
notes: |
|
||||
Fork of higan v106 by hex-usr, renamed at byuu's request. Dot-based
|
||||
PPU profile (cycle-accurate, most demanding). Current nSide source
|
||||
blocks accuracy build (#error at libretro.cpp:39, libretro-sfc.cpp:8).
|
||||
Core is orphaned from an older nSide revision.
|
||||
Coprocessor firmware loaded via icarus manifest system from system_dir.
|
||||
File names follow icarus convention: {identifier}.{content}.rom.
|
||||
SGB emulation loads from SGB1.sfc/ or SGB2.sfc/ subdirectories,
|
||||
with fallback to SGB.sfc/ and Super GameBoy.sfc/.
|
||||
SPC700 IPL ROM (ipl.rom, 64 bytes) compiled into binary.
|
||||
Accuracy and balanced cartridge loading code is identical.
|
||||
The libretro target lives on the libretro branch of higan's own repository,
|
||||
merged with the v106 release: Emulator::Version is "106"
|
||||
(higan/emulator/emulator.hpp:15) and retro_get_system_info announces it as
|
||||
library_version under the name "higan (Super Famicom Accuracy)"
|
||||
(higan/target-libretro/libretro.cpp:405-412,
|
||||
higan/target-libretro/libretro-sfc.cpp:513). The buildbot recipe builds
|
||||
higan_sfc from that branch (libretro-super
|
||||
recipes/linux/cores-linux-x64-generic:71), whose last commit dates from
|
||||
2017-11-19. The library is named higan_$(corename)_libretro with corename
|
||||
sfc (higan/target-libretro/GNUmakefile:1-11,
|
||||
higan/target-libretro/GNUmakefile:13-19). nSide, from which
|
||||
nside_sfc_balanced is built, refuses core=sfc at build time
|
||||
(nSide nSide/target-libretro/GNUmakefile:1-2).
|
||||
|
||||
The system manifest and the 64-byte SPC700 IPL ROM are compiled into the
|
||||
binary and served from memory (higan/target-libretro/libretro-sfc.cpp:364-396,
|
||||
higan/sfc/smp/smp.cpp:25-33).
|
||||
|
||||
Coprocessor firmware. A ROM is imported through icarus, whose heuristics
|
||||
detect the coprocessor from the cartridge header
|
||||
(icarus/heuristics/super-famicom.cpp:707-759) and write a manifest naming
|
||||
each firmware file with its size
|
||||
(icarus/heuristics/super-famicom.cpp:482-545). DSP1 games are given the
|
||||
DSP1B names; dsp1.program.rom and dsp1.data.rom are named for the Campus
|
||||
Challenge '92 and Powerfest '94 cartridges
|
||||
(icarus/heuristics/super-famicom.cpp:623-640,
|
||||
icarus/heuristics/super-famicom.cpp:416-417,
|
||||
icarus/heuristics/super-famicom.cpp:437-438). When the image does not carry
|
||||
the firmware appended (icarus/heuristics/super-famicom.cpp:106-190), the
|
||||
importer reports the file as missing (icarus/core/super-famicom.cpp:64-71)
|
||||
and the target reads it through locate_libretro, appends it to the image
|
||||
and imports again (higan/target-libretro/libretro.cpp:105-141).
|
||||
locate_libretro tries the system directory, then higan/ under the user's
|
||||
config and data directories (higan/target-libretro/libretro.cpp:15-35). No
|
||||
hash is checked; the sizes below are those the manifest declares, and a
|
||||
shorter file leaves the second import short and the load fails.
|
||||
|
||||
The icarus database is read from Database/ next to the frontend
|
||||
executable or under the icarus config and data directories, and takes
|
||||
precedence over the heuristics when the image's SHA-256 is listed
|
||||
(icarus/core/core.cpp:1-16, icarus/icarus.cpp:7-15,
|
||||
icarus/core/super-famicom.cpp:17-24). It names dsp1.program.rom and
|
||||
dsp1.data.rom for several DSP1 titles and sgb.boot.rom for the Super Game
|
||||
Boy cartridge.
|
||||
|
||||
Super Game Boy. Loading a .gb or .gbc file selects the folder named by the
|
||||
higan_sfc_sgb_bios option, SGB1.sfc/ by default or SGB2.sfc/
|
||||
(higan/target-libretro/libretro-sfc.cpp:154-156,
|
||||
higan/target-libretro/libretro-sfc.cpp:354). program.rom is looked up in
|
||||
that folder, then in SGB.sfc/ and Super GameBoy.sfc/, and the folder's
|
||||
manifest is generated from its program.rom and *.boot.rom files
|
||||
(higan/target-libretro/libretro-sfc.cpp:202-243,
|
||||
icarus/core/super-famicom.cpp:1-11). The heuristics recognise the cartridge
|
||||
by its header and name the boot ROM sgb1.boot.rom or sgb2.boot.rom
|
||||
(icarus/heuristics/super-famicom.cpp:612-621,
|
||||
icarus/heuristics/super-famicom.cpp:225-245). The Game Boy system opens
|
||||
that name from the folder first and from the system directory root as a
|
||||
fallback (higan/gb/system/system.cpp:54-65,
|
||||
higan/sfc/coprocessor/icd2/icd2.cpp:34-38,
|
||||
higan/target-libretro/libretro.cpp:200-278). Once a Game Boy image is
|
||||
loaded both files are mandatory: a missing program.rom fails
|
||||
load_special_bios, a missing boot ROM sets the failure flag, and
|
||||
retro_load_game returns false (higan/target-libretro/libretro-sfc.cpp:223-227,
|
||||
higan/target-libretro/libretro.cpp:635-642). The source tree ships no copy
|
||||
of the boot ROMs or of the coprocessor firmware.
|
||||
|
||||
files:
|
||||
# DSP coprocessors - uPD7725 (split data+program format)
|
||||
- name: "dsp1.data.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:457-502"
|
||||
|
||||
# NEC uPD7725 (DSP1, DSP1B, DSP2, DSP3, DSP4): 2048 x 24-bit program words,
|
||||
# 1024 x 16-bit data words
|
||||
- name: "dsp1.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 6144
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:457-502"
|
||||
note: "Named for the Campus Challenge '92 and Powerfest '94 cartridges and by the icarus database; other DSP1 games use dsp1b.program.rom."
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:416, icarus/heuristics/super-famicom.cpp:437"
|
||||
|
||||
- name: "dsp1b.data.rom"
|
||||
- name: "dsp1.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 2048
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:457-502"
|
||||
note: "Named for the Campus Challenge '92 and Powerfest '94 cartridges and by the icarus database; other DSP1 games use dsp1b.data.rom."
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:417, icarus/heuristics/super-famicom.cpp:438"
|
||||
|
||||
- name: "dsp1b.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 6144
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:457-502"
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:482, icarus/heuristics/super-famicom.cpp:712-720"
|
||||
|
||||
- name: "dsp2.data.rom"
|
||||
- name: "dsp1b.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 2048
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:457-502"
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:483, icarus/heuristics/super-famicom.cpp:712-720"
|
||||
|
||||
- name: "dsp2.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 6144
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:457-502"
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:492, icarus/heuristics/super-famicom.cpp:734"
|
||||
|
||||
- name: "dsp3.data.rom"
|
||||
- name: "dsp2.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 2048
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:457-502"
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:493, icarus/heuristics/super-famicom.cpp:734"
|
||||
|
||||
- name: "dsp3.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 6144
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:457-502"
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:502, icarus/heuristics/super-famicom.cpp:738"
|
||||
|
||||
- name: "dsp4.data.rom"
|
||||
- name: "dsp3.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 2048
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:457-502"
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:503, icarus/heuristics/super-famicom.cpp:738"
|
||||
|
||||
- name: "dsp4.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 6144
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:457-502"
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:512, icarus/heuristics/super-famicom.cpp:742"
|
||||
|
||||
# CX4 coprocessor - HG51BS169
|
||||
- name: "dsp4.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 2048
|
||||
required: false
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:513, icarus/heuristics/super-famicom.cpp:742"
|
||||
|
||||
# Hitachi HG51B169 (Cx4): 1024 x 24-bit data words
|
||||
- name: "cx4.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 3072
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:405-454"
|
||||
|
||||
# Seta coprocessors - uPD96050
|
||||
- name: "st010.data.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:504-548"
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:201-225, icarus/heuristics/super-famicom.cpp:255, icarus/heuristics/super-famicom.cpp:708"
|
||||
|
||||
# NEC uPD96050 (ST010, ST011): 16384 x 24-bit program words,
|
||||
# 2048 x 16-bit data words
|
||||
- name: "st010.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 49152
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:504-548"
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:522, icarus/heuristics/super-famicom.cpp:750"
|
||||
|
||||
- name: "st011.data.rom"
|
||||
- name: "st010.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 4096
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:504-548"
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:523, icarus/heuristics/super-famicom.cpp:750"
|
||||
|
||||
- name: "st011.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 49152
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:504-548"
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:533, icarus/heuristics/super-famicom.cpp:754"
|
||||
|
||||
# ST018 coprocessor - ARM6
|
||||
- name: "st018.data.rom"
|
||||
- name: "st011.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 4096
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:362-402"
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:534, icarus/heuristics/super-famicom.cpp:754"
|
||||
|
||||
# SETA ARM6 (ST018): 128 KiB program, 32 KiB data
|
||||
- name: "st018.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 131072
|
||||
required: false
|
||||
source_ref: "nSide/sfc/cartridge/load.cpp:362-402"
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:185-199, icarus/heuristics/super-famicom.cpp:544, icarus/heuristics/super-famicom.cpp:758"
|
||||
|
||||
# Super Game Boy
|
||||
- name: "SGB1.sfc/sgb1.boot.rom"
|
||||
- name: "st018.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 32768
|
||||
required: false
|
||||
source_ref: "higan/sfc/cartridge/load.cpp:185-199, icarus/heuristics/super-famicom.cpp:545, icarus/heuristics/super-famicom.cpp:758"
|
||||
|
||||
# Super Game Boy: cartridge ROM and boot ROM per folder
|
||||
- name: "program.rom"
|
||||
path: "SGB1.sfc/program.rom"
|
||||
system: nintendo-sgb
|
||||
required: false
|
||||
source_ref: "nSide/gb/system/system.cpp:54-65"
|
||||
note: "Also looked up as SGB.sfc/program.rom and Super GameBoy.sfc/program.rom."
|
||||
source_ref: "higan/target-libretro/libretro-sfc.cpp:202-243, higan/sfc/cartridge/load.cpp:77-80"
|
||||
|
||||
- name: "SGB1.sfc/program.rom"
|
||||
- name: "sgb1.boot.rom"
|
||||
path: "SGB1.sfc/sgb1.boot.rom"
|
||||
system: nintendo-sgb
|
||||
aliases:
|
||||
- "sgb.boot.rom"
|
||||
size: 256
|
||||
required: false
|
||||
note: "Falls back to sgb1.boot.rom at the system directory root. Named sgb.boot.rom by the icarus database entry for the cartridge."
|
||||
source_ref: "higan/gb/system/system.cpp:54-65, icarus/heuristics/super-famicom.cpp:232, icarus/heuristics/super-famicom.cpp:619, icarus/core/super-famicom.cpp:17-24"
|
||||
|
||||
- name: "program.rom"
|
||||
path: "SGB2.sfc/program.rom"
|
||||
system: nintendo-sgb
|
||||
required: false
|
||||
source_ref: "nSide/target-libretro/libretro-sfc.cpp:179-215"
|
||||
note: "Selected by the higan_sfc_sgb_bios option."
|
||||
source_ref: "higan/target-libretro/libretro-sfc.cpp:202-243, higan/sfc/cartridge/load.cpp:77-80"
|
||||
|
||||
- name: "SGB2.sfc/sgb2.boot.rom"
|
||||
- name: "sgb2.boot.rom"
|
||||
path: "SGB2.sfc/sgb2.boot.rom"
|
||||
system: nintendo-sgb
|
||||
size: 256
|
||||
required: false
|
||||
source_ref: "nSide/gb/system/system.cpp:54-65"
|
||||
|
||||
- name: "SGB2.sfc/program.rom"
|
||||
system: nintendo-sgb
|
||||
required: false
|
||||
source_ref: "nSide/target-libretro/libretro-sfc.cpp:179-215"
|
||||
note: "Falls back to sgb2.boot.rom at the system directory root."
|
||||
source_ref: "higan/gb/system/system.cpp:54-65, icarus/heuristics/super-famicom.cpp:243, icarus/heuristics/super-famicom.cpp:614"
|
||||
@@ -3,131 +3,221 @@ type: libretro
|
||||
core_classification: enhanced_fork
|
||||
source: "https://github.com/libretro/nSide"
|
||||
upstream: "https://gitlab.com/higan/higan"
|
||||
profiled_date: "2026-03-23"
|
||||
source_commit: "5e965d0db4c0d05e7e8fb6449035538781c73473"
|
||||
core_version: "v105 (Super Famicom Balanced)"
|
||||
display_name: "Nintendo - SNES / Famicom (nSide Balanced)"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "f8a3ac45ef31a3a367d0a9ecd925110124e73eff"
|
||||
upstream_commit: "3353efd3a1087f4d16d9b9fd2a8e465087ab8ec0"
|
||||
core_version: "106.25"
|
||||
display_name: "Nintendo - SNES / SFC (nSide Balanced)"
|
||||
cores:
|
||||
- nside_sfc_balanced
|
||||
- higan_sfc_balanced
|
||||
systems:
|
||||
- nintendo-snes
|
||||
- nintendo-sgb
|
||||
|
||||
exclusion_note: >
|
||||
The .info declares SGB1.sfc/sgb1.boot.rom and SGB2.sfc/sgb2.boot.rom. The
|
||||
core opens the boot ROM under the name the manifest derives from the
|
||||
architecture, lr35902.boot.rom, in the selected SGB folder
|
||||
(nSide/gb/system/system.cpp:60-61, nSide/emulator/game.hpp:101-104). A
|
||||
sgb1.boot.rom or sgb2.boot.rom is only looked up, at the system directory
|
||||
root, when the Super Game Boy cartridge is itself imported as an SFC game
|
||||
(icarus/core/super-famicom.cpp:49-54), a load that ends on the Game Boy
|
||||
cartridge manifest the libretro target cannot provide
|
||||
(nSide/target-libretro/libretro.cpp:284-287).
|
||||
|
||||
notes: |
|
||||
Fork of higan v106 by hex-usr, renamed at byuu's request. Balanced
|
||||
PPU profile (scanline-precision, faster than dot-based accuracy).
|
||||
Coprocessor firmware loaded via icarus manifest system from system_dir.
|
||||
File names follow icarus convention: {identifier}.{content}.rom.
|
||||
SGB emulation loads from SGB1.sfc/ or SGB2.sfc/ subdirectories,
|
||||
with fallback to SGB.sfc/ and Super GameBoy.sfc/.
|
||||
Fork of higan by hex_usr (nSide v009r16, README.txt:1-4), synchronised with
|
||||
higan v106r25: Emulator::Version is "106.25" (nSide/emulator/emulator.hpp:16)
|
||||
and retro_get_system_info announces it as library_version under the name
|
||||
"higan (Super Famicom Balanced)" (nSide/target-libretro/libretro.cpp:87-93,
|
||||
nSide/target-libretro/libretro-sfc.cpp:486). The balanced profile keeps a
|
||||
scanline-based PPU; the accuracy profile is refused at build time
|
||||
(nSide/target-libretro/GNUmakefile:1-2, nSide/target-libretro/libretro.cpp:38-39).
|
||||
The library is named nside_$(corename)_libretro with corename sfc_balanced
|
||||
(nSide/target-libretro/GNUmakefile:4-13, nSide/target-libretro/GNUmakefile:18-23),
|
||||
which the GitLab CI publishes as nside_sfc_balanced (.gitlab-ci.yml:15,
|
||||
.gitlab-ci.yml:53-54). The core options keep the higan_sfc_ prefix so the
|
||||
settings are shared with higan's core (nSide/target-libretro/libretro-sfc.cpp:321-329).
|
||||
|
||||
System files manifest.bml, boards.bml and ipl.rom are compiled into the
|
||||
binary and served from memory (nSide/target-libretro/libretro-sfc.cpp:335-341,
|
||||
nSide/target-libretro/resource/sfc.bml:1-4, nSide/sfc-balanced/smp/smp.cpp:25-33).
|
||||
|
||||
Coprocessor firmware. A ROM is imported through icarus, whose manifest names
|
||||
each firmware memory by architecture and identifier
|
||||
(icarus/heuristics/super-famicom.cpp:90-115). When the image does not carry
|
||||
the firmware appended (icarus/heuristics/super-famicom.cpp:406-414), the
|
||||
importer reports {identifier}.{content}.rom as missing
|
||||
(icarus/core/super-famicom.cpp:46-57) and the libretro target reads that
|
||||
name through locate_libretro, appends it to the image and imports again
|
||||
(nSide/target-libretro/icarus.cpp:111-142). locate_libretro tries the system
|
||||
directory, then higan/ and nSide/ under the user's config and data
|
||||
directories (nSide/target-libretro/libretro.cpp:3-31). Identifiers come from
|
||||
the cartridge label: DSP1 for PILOTWINGS, DSP2 for DUNGEON MASTER, DSP3 for
|
||||
SD Gundam GX, DSP4 for TOP GEAR 3000 and PLANETS CHAMP TG3000, DSP1B
|
||||
otherwise; ST011 for 2DAN MORITA SHOUGI, ST010 otherwise; ST018 and Cx4 have
|
||||
a single revision (icarus/heuristics/super-famicom.cpp:512-541). No hash is
|
||||
checked; a file shorter than the size the manifest declares leaves the
|
||||
second import short and the load fails. The sizes below are those declared
|
||||
by the heuristics.
|
||||
|
||||
Super Game Boy. Loading a .gb or .gbc file selects the folder named by the
|
||||
higan_sfc_sgb_bios option, SGB1.sfc/ by default or SGB2.sfc/
|
||||
(nSide/target-libretro/libretro-sfc.cpp:142-145,
|
||||
nSide/target-libretro/libretro-sfc.cpp:326). program.rom is looked up in
|
||||
that folder, then in SGB.sfc/ and Super GameBoy.sfc/, and the folder's
|
||||
manifest is generated from its program.rom and *.boot.rom files
|
||||
(nSide/target-libretro/libretro-sfc.cpp:179-215,
|
||||
icarus/core/super-famicom.cpp:1-11). The Game Boy system then opens the boot
|
||||
ROM the manifest names, lr35902.boot.rom, from the folder first and from the
|
||||
system directory root as a fallback (nSide/gb/system/system.cpp:54-65,
|
||||
nSide/target-libretro/program.cpp:19-81). Once a Game Boy image is loaded
|
||||
both files are mandatory: a missing one sets the failure flag and
|
||||
retro_load_game returns false
|
||||
(nSide/target-libretro/program.cpp:75-78, nSide/target-libretro/libretro.cpp:286).
|
||||
The SHA-1 values on the boot ROMs and on cx4.data.rom are those of the copies
|
||||
the source tree ships in icarus/firmware/.
|
||||
|
||||
files:
|
||||
# DSP coprocessors - uPD7725 (split data+program format)
|
||||
# NEC uPD7725 (DSP1, DSP1B, DSP2, DSP3, DSP4): 2048 x 24-bit program words,
|
||||
# 1024 x 16-bit data words
|
||||
- name: "dsp1.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 2048
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:115, icarus/heuristics/super-famicom.cpp:534"
|
||||
|
||||
- name: "dsp1.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 6144
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:114, icarus/heuristics/super-famicom.cpp:534"
|
||||
|
||||
- name: "dsp1b.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 2048
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:115, icarus/heuristics/super-famicom.cpp:539"
|
||||
|
||||
- name: "dsp1b.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 6144
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:114, icarus/heuristics/super-famicom.cpp:539"
|
||||
|
||||
- name: "dsp2.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 2048
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:115, icarus/heuristics/super-famicom.cpp:535"
|
||||
|
||||
- name: "dsp2.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 6144
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:114, icarus/heuristics/super-famicom.cpp:535"
|
||||
|
||||
- name: "dsp3.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 2048
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:115, icarus/heuristics/super-famicom.cpp:536"
|
||||
|
||||
- name: "dsp3.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 6144
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:114, icarus/heuristics/super-famicom.cpp:536"
|
||||
|
||||
- name: "dsp4.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 2048
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:115, icarus/heuristics/super-famicom.cpp:537-538"
|
||||
|
||||
- name: "dsp4.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 6144
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:114, icarus/heuristics/super-famicom.cpp:537-538"
|
||||
|
||||
# CX4 coprocessor - HG51BS169
|
||||
# Hitachi HG51BS169 (Cx4): 1024 x 24-bit data words
|
||||
- name: "cx4.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 3072
|
||||
sha1: "a002f4efba42775a31185d443f3ed1790b0e949a"
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:405-454"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:405-454, icarus/heuristics/super-famicom.cpp:110, icarus/heuristics/super-famicom.cpp:529-531"
|
||||
|
||||
# Seta coprocessors - uPD96050
|
||||
# NEC uPD96050 (ST010, ST011): 16384 x 24-bit program words,
|
||||
# 2048 x 16-bit data words
|
||||
- name: "st010.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 4096
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:504-548"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:504-548, icarus/heuristics/super-famicom.cpp:99, icarus/heuristics/super-famicom.cpp:516-521"
|
||||
|
||||
- name: "st010.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 49152
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:504-548"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:504-548, icarus/heuristics/super-famicom.cpp:98, icarus/heuristics/super-famicom.cpp:516-521"
|
||||
|
||||
- name: "st011.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 4096
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:504-548"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:504-548, icarus/heuristics/super-famicom.cpp:99, icarus/heuristics/super-famicom.cpp:519"
|
||||
|
||||
- name: "st011.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 49152
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:504-548"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:504-548, icarus/heuristics/super-famicom.cpp:98, icarus/heuristics/super-famicom.cpp:519"
|
||||
|
||||
# ST018 coprocessor - ARM6
|
||||
# SETA ARM6 (ST018): 128 KiB program, 32 KiB data
|
||||
- name: "st018.data.rom"
|
||||
system: nintendo-snes
|
||||
size: 32768
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:362-402"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:362-402, icarus/heuristics/super-famicom.cpp:92, icarus/heuristics/super-famicom.cpp:512-514"
|
||||
|
||||
- name: "st018.program.rom"
|
||||
system: nintendo-snes
|
||||
size: 131072
|
||||
required: false
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:362-402"
|
||||
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:362-402, icarus/heuristics/super-famicom.cpp:91, icarus/heuristics/super-famicom.cpp:512-514"
|
||||
|
||||
# Super Game Boy
|
||||
- name: "SGB1.sfc/sgb1.boot.rom"
|
||||
# Super Game Boy: cartridge ROM and boot ROM per folder
|
||||
- name: "program.rom"
|
||||
path: "SGB1.sfc/program.rom"
|
||||
system: nintendo-sgb
|
||||
required: false
|
||||
source_ref: "nSide/gb/system/system.cpp:54-65"
|
||||
note: "Also looked up as SGB.sfc/program.rom and Super GameBoy.sfc/program.rom."
|
||||
source_ref: "nSide/target-libretro/libretro-sfc.cpp:179-215, nSide/sfc-balanced/cartridge/load.cpp:159-162"
|
||||
|
||||
- name: "SGB1.sfc/program.rom"
|
||||
- name: "lr35902.boot.rom"
|
||||
path: "SGB1.sfc/lr35902.boot.rom"
|
||||
system: nintendo-sgb
|
||||
size: 256
|
||||
sha1: "aa2f50a77dfb4823da96ba99309085a3c6278515"
|
||||
required: false
|
||||
note: "Falls back to lr35902.boot.rom at the system directory root."
|
||||
source_ref: "nSide/gb/system/system.cpp:54-65, nSide/emulator/game.hpp:101-104, icarus/heuristics/super-famicom.cpp:103, icarus/heuristics/super-famicom.cpp:523-527"
|
||||
|
||||
- name: "program.rom"
|
||||
path: "SGB2.sfc/program.rom"
|
||||
system: nintendo-sgb
|
||||
required: false
|
||||
source_ref: "nSide/target-libretro/libretro-sfc.cpp:179-215"
|
||||
note: "Selected by the higan_sfc_sgb_bios option."
|
||||
source_ref: "nSide/target-libretro/libretro-sfc.cpp:179-215, nSide/sfc-balanced/cartridge/load.cpp:159-162"
|
||||
|
||||
- name: "SGB2.sfc/sgb2.boot.rom"
|
||||
- name: "lr35902.boot.rom"
|
||||
path: "SGB2.sfc/lr35902.boot.rom"
|
||||
system: nintendo-sgb
|
||||
size: 256
|
||||
sha1: "93407ea10d2f30ab96a314d8eca44fe160aea734"
|
||||
required: false
|
||||
source_ref: "nSide/gb/system/system.cpp:54-65"
|
||||
|
||||
- name: "SGB2.sfc/program.rom"
|
||||
system: nintendo-sgb
|
||||
required: false
|
||||
source_ref: "nSide/target-libretro/libretro-sfc.cpp:179-215"
|
||||
note: "Falls back to lr35902.boot.rom at the system directory root."
|
||||
source_ref: "nSide/gb/system/system.cpp:54-65, nSide/emulator/game.hpp:101-104, icarus/heuristics/super-famicom.cpp:103, icarus/heuristics/super-famicom.cpp:523-527"
|
||||
@@ -4,8 +4,8 @@ core_classification: game_engine
|
||||
source: "https://github.com/glKarin/com.n0n3m4.diii4a"
|
||||
upstream: "https://github.com/glKarin/com.n0n3m4.diii4a"
|
||||
author: "glKarin"
|
||||
profiled_date: "2026-08-11"
|
||||
source_commit: "dea1eb9f122cfae042961cfc32a3474e59354589"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "e4d1382275155b18d51f91c3e1af35ca1fd16e13"
|
||||
core_version: "1.1.0harmattan72"
|
||||
display_name: "id Tech engine collection (idTech4A++)"
|
||||
cores:
|
||||
@@ -291,15 +291,19 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
category: game_data
|
||||
size: 98396
|
||||
md5: 3155df291027d253e2596db3fca1ac4a
|
||||
sha1: 2651f1eff1785999918c08600f079e1ad4a206e7
|
||||
size: 98425
|
||||
md5: a0fcf6c54d453a80c8aac693d17979b8
|
||||
sha1: 604636a62dd04c90392b19adf61d3a62381dfb02
|
||||
description: "The Dark Mod GLSL shader set rewritten for OpenGL ES"
|
||||
note: >-
|
||||
Unpacked into the standalone directory as `glslprogs/`, the tree the
|
||||
renderer compiles its programs from. Version-stamped with the engine
|
||||
release so a Dark Mod update replaces it.
|
||||
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:83-92, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:705-722, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:391"
|
||||
release and a patch number, so a Dark Mod update or a shader fix replaces
|
||||
it. TDM_GLSL_SHADER_VERSION reads 2.14.2 here: the four SSAO programs
|
||||
moved their uniform-dependent initialisers out of global scope and cast
|
||||
their integer terms to float. The 2.14.1 pack it replaced is kept as a
|
||||
variant.
|
||||
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:83-92, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:705-722, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:391, Q3E/src/main/jni/darkmod/glslprogs/ssao.frag.glsl:78-80, 163-166"
|
||||
|
||||
- name: renderprogs.pk4
|
||||
required: true
|
||||
|
||||
+45
-38
@@ -3,9 +3,10 @@ type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/libretro/jollycv"
|
||||
upstream: "https://gitlab.com/jgemu/jollycv"
|
||||
profiled_date: "2026-03-24"
|
||||
source_commit: "eb14292005d51e2bef954cb75145981037ee9988"
|
||||
core_version: "2.0.0"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "2790d59c7194d29e83f8603ffd7e9da17f11575e"
|
||||
upstream_commit: "18875ffdb1891cec04217cf02928af563a3af9d8"
|
||||
core_version: "2.1.0"
|
||||
display_name: "ColecoVision/CreatiVision/My Vision (JollyCV)"
|
||||
cores:
|
||||
- jollycv
|
||||
@@ -15,70 +16,76 @@ systems:
|
||||
- myvision
|
||||
|
||||
notes: |
|
||||
JollyCV is a multi-system emulator by Rupert Carmichael supporting
|
||||
ColecoVision (with Super Game Module), CreatiVision, and My Vision.
|
||||
JollyCV emulates the ColecoVision (with Super Game Module), the VTech
|
||||
CreatiVision and the Nichibutsu My Vision. The libretro port and the
|
||||
Jolly Good build share the same src/ tree; only the front end differs.
|
||||
|
||||
BIOS handling depends on the detected system type (set via core option
|
||||
or auto-detected from ROM database via jcv_process_hash/jcv_get_dbflags):
|
||||
The libretro port picks the system from the file name
|
||||
(libretro/libretro.c:670-679): ".myv" is My Vision, ".rom" and ".bin"
|
||||
are looked up by MD5 in the CreatiVision table (src/jcv_db.c:109-176,
|
||||
reached through src/jollycv.c:118-120) and fall back to ColecoVision,
|
||||
".col" is ColecoVision. A CreatiVision image whose MD5 is not in the
|
||||
table runs as ColecoVision. Version 2.1.0 moved that table from
|
||||
libretro/gamedb.h into src/jcv_db.c so both builds share it.
|
||||
|
||||
- ColecoVision (JCV_SYS_COLECO): loads "coleco.rom" from system dir.
|
||||
BIOS is mapped at 0x0000-0x1FFF. Size must be exactly 8192 bytes
|
||||
(SIZE_CVBIOS = SIZE_8K = 0x2000). Load fails if size mismatches.
|
||||
Without the BIOS, ColecoVision games will not run (load returns false).
|
||||
BIOS files are read from the front end's system directory, no
|
||||
subdirectory, as "<system_dir>/coleco.rom" or "<system_dir>/bioscv.rom"
|
||||
(libretro/libretro.c:696-716). jcv_bios_load_file (src/jollycv.c:406-432)
|
||||
opens the file, reads it whole and hands the buffer to
|
||||
jcv_coleco_bios_load or jcv_crvision_bios_load, which keep it only when
|
||||
the size is exactly SIZE_CVBIOS (8192) or SIZE_CRVBIOS (2048). The return
|
||||
value of that size check is dropped at src/jollycv.c:427, so a file of the
|
||||
wrong size passes the loader while the BIOS pointer stays NULL; the first
|
||||
BIOS read (src/jcv_coleco.c:281-282, src/jcv_crvision.c:443-444) then
|
||||
dereferences it. A missing file fails retro_load_game. My Vision loads no
|
||||
BIOS (libretro/libretro.c:717-719).
|
||||
|
||||
- CreatiVision (JCV_SYS_CRVISION): loads "bioscv.rom" from system dir.
|
||||
BIOS is mapped at 0xF800-0xFFFF. Size must be exactly 2048 bytes
|
||||
(SIZE_CRVBIOS = SIZE_2K = 0x800). Without the BIOS, CreatiVision
|
||||
games will not run.
|
||||
The Jolly Good build reads the same two names from the front end's BIOS
|
||||
path (jg.c:463-481) and declares them through jg_get_bioslist with an
|
||||
MD5 each (jg.c:151-156). The core never compares those MD5; the reference
|
||||
front end hashes the file against them for a debug log only
|
||||
(jgrf src/jgrf.c:441-458). The md5: fields below carry these values.
|
||||
|
||||
- My Vision (JCV_SYS_MYVISION): no BIOS required.
|
||||
|
||||
The libretro port constructs paths via snprintf("%s%c%s", sysdir, pss,
|
||||
filename) in libretro.c:699-711. jcv_bios_load_file() opens the file,
|
||||
reads it fully, then delegates to jcv_coleco_bios_load() or
|
||||
jcv_crvision_bios_load() which validate size before copying.
|
||||
|
||||
ColecoVision cartridge header bytes at offset 0x0000-0x0001 control
|
||||
boot behavior: 0xAA55 shows the BIOS title screen, 0x55AA jumps
|
||||
directly to the game code vector.
|
||||
|
||||
The core includes a built-in ROM database with MD5 hashes (gamedb.h)
|
||||
for game-specific flags, but this is for game compatibility, not BIOS
|
||||
verification.
|
||||
ColecoVision cartridges start with 0xAA55 to show the BIOS title screen or
|
||||
0x55AA to jump straight to the game vector (src/jcv_coleco.c:421-426).
|
||||
The MD5 database of ColecoVision games in src/jcv_db.c selects cartridge
|
||||
mappers and controller flags.
|
||||
|
||||
files:
|
||||
# --- ColecoVision BIOS (required for CV games) ---
|
||||
- name: "coleco.rom"
|
||||
system: colecovision
|
||||
description: "ColecoVision BIOS"
|
||||
required: true
|
||||
size: 8192
|
||||
md5: "2c66f5911e5b42b8ebe113403548eee7"
|
||||
validation: [size]
|
||||
source_ref: "libretro/libretro.c:701, src/jcv_coleco.c:402-406"
|
||||
note: "Mapped at 0x0000-0x1FFF. Replaced by SGM lower RAM when Super Game Module is active. Must be exactly 8192 bytes."
|
||||
source_ref: "libretro/libretro.c:697-703, src/jollycv.c:406-432, src/jcv_coleco.c:402-410, jg.c:151-153"
|
||||
note: "Mapped at 0x0000-0x1FFF, replaced by the lower 8K of SGM RAM when the Super Game Module enables it. The MD5 is the value the JG bioslist declares; the core compares the size only."
|
||||
|
||||
# --- CreatiVision BIOS (required for CreatiVision games) ---
|
||||
- name: "bioscv.rom"
|
||||
system: creativision
|
||||
description: "VTech CreatiVision BIOS ROM"
|
||||
required: true
|
||||
size: 2048
|
||||
md5: "3b1ef759d8e3fb4071582efd33dd05f9"
|
||||
validation: [size]
|
||||
source_ref: "libretro/libretro.c:711, src/jcv_crvision.c:315-318"
|
||||
note: "Mapped at 0xF800-0xFFFF. Must be exactly 2048 bytes."
|
||||
source_ref: "libretro/libretro.c:707-713, src/jollycv.c:406-432, src/jcv_crvision.c:316-324, jg.c:154-155"
|
||||
note: "Mapped at 0xF800-0xFFFF. The MD5 is the value the JG bioslist declares; the core compares the size only."
|
||||
|
||||
platform_details:
|
||||
colecovision:
|
||||
bios_filename: "coleco.rom"
|
||||
bios_size: 8192
|
||||
memory_map: "0x0000-0x1FFF"
|
||||
source_ref: "src/jcv_coleco.c:269-281"
|
||||
source_ref: "src/jcv_coleco.c:268-283"
|
||||
|
||||
creativision:
|
||||
bios_filename: "bioscv.rom"
|
||||
bios_size: 2048
|
||||
memory_map: "0xF800-0xFFFF"
|
||||
source_ref: "src/jcv_crvision.c:315-337, 441"
|
||||
source_ref: "src/jcv_crvision.c:316-318, 443-445"
|
||||
|
||||
myvision:
|
||||
bios_required: false
|
||||
note: "No BIOS needed. My Vision games run without any system ROM."
|
||||
source_ref: "libretro/libretro.c:717-719"
|
||||
note: "No BIOS is loaded for My Vision."
|
||||
+367
-119
@@ -1,11 +1,17 @@
|
||||
emulator: MesenCE
|
||||
type: standalone
|
||||
type: standalone + libretro
|
||||
core_classification: enhanced_fork
|
||||
source: "https://github.com/nesdev-org/MesenCE"
|
||||
source:
|
||||
standalone: "https://github.com/nesdev-org/MesenCE"
|
||||
libretro: "https://github.com/libretro/MesenCE"
|
||||
upstream: "https://github.com/SourMesen/Mesen2"
|
||||
profiled_date: "2026-08-06"
|
||||
source_commit: "af2342818ca81a93b346146802047760400fc7b1"
|
||||
core_version: "2.2.1"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit:
|
||||
standalone: "20f497c9620a7f4e55b7752e1d22734f9d7492fa"
|
||||
libretro: "4c4e069f16a8ad6ed79e046046c56d51558c7daf"
|
||||
core_version:
|
||||
standalone: "2.2.1"
|
||||
libretro: "2.0.0"
|
||||
display_name: "Multi-System (MesenCE)"
|
||||
cores: [mesence, mesen2]
|
||||
systems:
|
||||
@@ -35,131 +41,340 @@ notes: |
|
||||
GB/GBC/GBA, PC Engine (including CD-ROM and SuperGrafx), SMS/Game Gear/
|
||||
SG-1000/ColecoVision and WonderSwan (including Pocket Challenge V2).
|
||||
|
||||
All firmware is loaded from a flat <home>/Firmware/ folder
|
||||
(FolderUtilities::GetFirmwareFolder, Utilities/FolderUtilities.cpp:81-91).
|
||||
The core enforces exact file sizes at load time (FirmwareHelper.h
|
||||
AttemptLoadFirmware). The UI additionally knows SHA256 values per file
|
||||
(UI/Interop/FirmwareTypeExtensions.cs) and warns on mismatch when
|
||||
importing through the firmware prompt, but a mismatched file can still
|
||||
be used. The sha256 values below come from that table.
|
||||
The libretro port lives in the libretro fork of the same tree: Libretro/
|
||||
wraps the core and Makefile.libretro compiles every file under Core/ with
|
||||
LIBRETRO defined (Makefile.libretro:165-166,183-184). The fork branched from
|
||||
af2342818ca81a93b346146802047760400fc7b1 and does not touch
|
||||
Core/Shared/FirmwareHelper.h, so both builds read the same names with the
|
||||
same size checks. The buildbot publishes it as mesen2_libretro; the port
|
||||
announces library_version 2.0.0 (Libretro/libretro.cpp:2803) while the
|
||||
compiled core reports 2.2.1 (Core/Shared/EmuSettings.cpp:165-168).
|
||||
|
||||
SNES DSP-1/1B/2/3/4 and ST010/ST011 firmware is loaded from the combined
|
||||
file listed below, or from a split pair <name>.program.rom + <name>.data.rom
|
||||
Firmware folder. Standalone reads <home>/Firmware/ (Utilities/FolderUtilities.cpp:81-91).
|
||||
The libretro port sets the home folder to the frontend system directory
|
||||
and overrides the firmware folder with that same directory
|
||||
(Libretro/libretro.cpp:2253-2256), so every firmware sits at the system
|
||||
directory root. Satellaview streams and MesenNesDB.txt are read relative
|
||||
to the home folder in both builds, which puts them under system/Satellaview/
|
||||
and system/MesenNesDB.txt for libretro.
|
||||
|
||||
Size checks are exact at load time (FirmwareHelper.h AttemptLoadFirmware).
|
||||
The standalone UI additionally knows SHA256 values per file
|
||||
(UI/Interop/FirmwareTypeExtensions.cs) and warns on mismatch when
|
||||
importing through the firmware prompt; a mismatched file can still be
|
||||
used. The sha256 values below come from that table. The libretro port
|
||||
has no prompt: a MissingFirmware notification reaches no listener, the
|
||||
retry in FirmwareHelper fails the same way and the error goes to the OSD
|
||||
(Libretro/LibretroMessageManager.h:26-39).
|
||||
|
||||
SNES DSP-1/1B/2/3/4 and ST010/ST011 firmware is read as the combined
|
||||
file first, then as the split pair <name>.program.rom + <name>.data.rom
|
||||
(FirmwareHelper.h AttemptLoadDspFirmware). ROM dumps with the firmware
|
||||
appended to the game ROM need no external file (LoadDspFirmware embedded
|
||||
path, Core/Shared/FirmwareHelper.h:131-135).
|
||||
path, Core/Shared/FirmwareHelper.h:132-135).
|
||||
|
||||
GB/GBC/SGB boot ROM images are compiled into the core
|
||||
(Core/Gameboy/GbBootRom.h:8,49,99); the external files below override them.
|
||||
Super Game Boy mode falls back to the plain GB core when SGB1.sfc/SGB2.sfc
|
||||
is missing (Core/SNES/BaseCartridge.cpp:698-717).
|
||||
(Core/Gameboy/GbBootRom.h:8,49,99); the external files override them.
|
||||
Super Game Boy mode falls back to the plain GB core when the SNES-side
|
||||
ROM is missing (Core/SNES/BaseCartridge.cpp:698-716). GameboyConfig
|
||||
keeps UseSgb2 at true and no core option changes it
|
||||
(Core/Shared/SettingTypes.h:433), so the libretro build only ever asks
|
||||
for SGB2.sfc and sgb2_boot.bin; SGB1.sfc and sgb_boot.bin are standalone
|
||||
reads. The libretro port also offers a "Super Game Boy" subsystem taking
|
||||
a GB ROM plus an SNES-side ROM (Libretro/libretro.cpp:1041-1052): the
|
||||
second entry is copied into the system directory as SGB1.sfc or SGB2.sfc
|
||||
by size for the duration of the load, then removed or restored
|
||||
(Libretro/libretro.cpp:2627-2677,2692-2761).
|
||||
|
||||
Satellaview data broadcasts are read from <home>/Satellaview/ as
|
||||
BSX<channel>-<index>.bin (Core/SNES/Coprocessors/BSX/BsxStream.cpp:67-74). Five stream files and
|
||||
MesenNesDB.txt ship inside the application binary (Dependencies.zip) and
|
||||
are extracted to the home folder at startup; user-provided replacements
|
||||
are preserved (UI/Utilities/DependencyHelper.cs:14-66). NES and SNES
|
||||
cheat databases (CheatDb.Nes.json, CheatDb.Snes.json) are read directly
|
||||
from the embedded archive and never touch the filesystem
|
||||
WonderSwan boot ROMs are read only when WsConfig.UseBootRom is on
|
||||
(Core/WS/WsConsole.cpp:145-150). The libretro port never sets it, so
|
||||
those three files are standalone reads.
|
||||
|
||||
PC Engine CD. For .cue content the libretro port first materialises
|
||||
"[BIOS] Super CD-ROM System (Japan) (v3.0).pce" in the system directory
|
||||
from syscard3.pce, syscard3.bin, syscard.pce or syscard.bin when the
|
||||
canonical file is absent or not 256 KB: a 0x40200 or 0x60200 source is
|
||||
read past its 512-byte header, only the first 256 KB are written, and the
|
||||
stub is removed after the load (Libretro/libretro.cpp:108-196,2347-2358,2380-2384).
|
||||
Then FirmwareHelper reads the canonical name or syscard3.pce at exactly
|
||||
256 KB, in both builds.
|
||||
|
||||
NES game database. The libretro port embeds a 6213-line MesenDB.txt
|
||||
(Libretro/libretro.cpp:85-86,592-594) and then reads MesenNesDB.txt from
|
||||
the home folder on the first lookup (Core/NES/GameDatabase.cpp:92-103),
|
||||
merging its 10668 entries over the embedded ones. Standalone deploys the
|
||||
file from the application's Dependencies.zip. Five Satellaview stream
|
||||
files ship the same way and are extracted to the home folder at startup;
|
||||
user replacements are preserved (UI/Utilities/DependencyHelper.cs:14-67).
|
||||
Nothing deploys them for libretro. NES and SNES cheat databases
|
||||
(CheatDb.Nes.json, CheatDb.Snes.json) are read directly from the
|
||||
embedded archive and never touch the filesystem
|
||||
(DependencyHelper.cs GetFileContent, UI/ViewModels/CheatDatabaseViewModel.cs:33).
|
||||
|
||||
HdPacks are per-game texture/audio replacements under <home>/HdPacks/,
|
||||
game content rather than system files.
|
||||
MesenPalette.pal is a libretro read: the mesen_palette core option value
|
||||
Custom loads it from the home folder, 192 or 1536 bytes
|
||||
(Libretro/libretro.cpp:1178-1204,1304-1306).
|
||||
|
||||
HdPacks are per-game texture/audio replacements under <home>/HdPacks/
|
||||
(system/HdPacks/ for libretro), game content rather than system files.
|
||||
|
||||
The libretro port lists nes|fds|unf|unif|sfc|smc|gb|gbc|gba|pce|sgx|cue|
|
||||
sms|gg|ws|wsc as valid extensions (Libretro/libretro.cpp:2838-2840). The
|
||||
load path itself dispatches on the console extension tables, so .bs, .st,
|
||||
.col, .sg, .pc2 and .studybox content loads when the frontend passes it.
|
||||
|
||||
exclusion_note: >-
|
||||
The .info declares syscard1.pce, syscard2.pce and gexpress.pce. No code
|
||||
path opens those names: the CD firmware loader reads
|
||||
"[BIOS] Super CD-ROM System (Japan) (v3.0).pce" or syscard3.pce and the
|
||||
Games Express loader reads "[BIOS] Games Express CD Card (Japan).pce" or
|
||||
gecard.pce (Core/Shared/FirmwareHelper.h:330-368); the libretro stub
|
||||
adds syscard3.bin, syscard.pce and syscard.bin as sources for the Super
|
||||
CD-ROM image only (Libretro/libretro.cpp:114).
|
||||
|
||||
files:
|
||||
# -------------------------------------------------------
|
||||
# SNES coprocessor firmware
|
||||
# -------------------------------------------------------
|
||||
- name: "dsp1.rom"
|
||||
path: "Firmware/dsp1.rom"
|
||||
path: "dsp1.rom"
|
||||
standalone_path: "Firmware/dsp1.rom"
|
||||
aliases: ["SNES_dsp1.rom"]
|
||||
system: nintendo-snes
|
||||
required: true
|
||||
size: 8192
|
||||
validation: [size]
|
||||
sha256: "91e87d11e1c30d172556bed2211cce2efa94ba595f58c5d264809ef4d363a97b"
|
||||
note: "DSP-1 program+data (0x1800+0x800). Split pair dsp1.program.rom + dsp1.data.rom also accepted. Not needed when the game dump embeds the firmware."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:102, Core/Shared/FirmwareHelper.h:59-79,130-152"
|
||||
note: "DSP-1 program+data (0x1800+0x800). Tried before the split pair dsp1.program.rom + dsp1.data.rom. Not needed when the game dump embeds the firmware."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:102, Core/Shared/FirmwareHelper.h:59-79,130-152, UI/Interop/FirmwareTypeExtensions.cs:11"
|
||||
|
||||
- name: "dsp1.program.rom"
|
||||
path: "dsp1.program.rom"
|
||||
standalone_path: "Firmware/dsp1.program.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 6144
|
||||
validation: [size]
|
||||
note: "DSP-1 program ROM, read with dsp1.data.rom when dsp1.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:102, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "dsp1.data.rom"
|
||||
path: "dsp1.data.rom"
|
||||
standalone_path: "Firmware/dsp1.data.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
validation: [size]
|
||||
note: "DSP-1 data ROM, read with dsp1.program.rom when dsp1.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:102, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "dsp1b.rom"
|
||||
path: "Firmware/dsp1b.rom"
|
||||
path: "dsp1b.rom"
|
||||
standalone_path: "Firmware/dsp1b.rom"
|
||||
aliases: ["SNES_dsp1b.rom"]
|
||||
system: nintendo-snes
|
||||
required: true
|
||||
size: 8192
|
||||
validation: [size]
|
||||
sha256: "d789cb3c36b05c0b23b6c6f23be7aa37c6e78b6ee9ceac8d2d2aa9d8c4d35fa9"
|
||||
note: "DSP-1B revision. Split pair dsp1b.program.rom + dsp1b.data.rom also accepted."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:103, Core/Shared/FirmwareHelper.h:59-79"
|
||||
note: "DSP-1B revision. Tried before the split pair dsp1b.program.rom + dsp1b.data.rom."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:103, Core/Shared/FirmwareHelper.h:59-79, UI/Interop/FirmwareTypeExtensions.cs:12"
|
||||
|
||||
- name: "dsp1b.program.rom"
|
||||
path: "dsp1b.program.rom"
|
||||
standalone_path: "Firmware/dsp1b.program.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 6144
|
||||
validation: [size]
|
||||
note: "DSP-1B program ROM, read with dsp1b.data.rom when dsp1b.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:103, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "dsp1b.data.rom"
|
||||
path: "dsp1b.data.rom"
|
||||
standalone_path: "Firmware/dsp1b.data.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
validation: [size]
|
||||
note: "DSP-1B data ROM, read with dsp1b.program.rom when dsp1b.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:103, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "dsp2.rom"
|
||||
path: "Firmware/dsp2.rom"
|
||||
path: "dsp2.rom"
|
||||
standalone_path: "Firmware/dsp2.rom"
|
||||
aliases: ["SNES_dsp2.rom"]
|
||||
system: nintendo-snes
|
||||
required: true
|
||||
size: 8192
|
||||
validation: [size]
|
||||
sha256: "03ef4ef26c9f701346708cb5d07847b5203cf1b0818bf2930acd34510ffdd717"
|
||||
note: "DSP-2 (Dungeon Master). Split pair dsp2.program.rom + dsp2.data.rom also accepted."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:104, Core/Shared/FirmwareHelper.h:59-79"
|
||||
note: "DSP-2 (Dungeon Master). Tried before the split pair dsp2.program.rom + dsp2.data.rom."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:104, Core/Shared/FirmwareHelper.h:59-79, UI/Interop/FirmwareTypeExtensions.cs:13"
|
||||
|
||||
- name: "dsp2.program.rom"
|
||||
path: "dsp2.program.rom"
|
||||
standalone_path: "Firmware/dsp2.program.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 6144
|
||||
validation: [size]
|
||||
note: "DSP-2 program ROM, read with dsp2.data.rom when dsp2.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:104, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "dsp2.data.rom"
|
||||
path: "dsp2.data.rom"
|
||||
standalone_path: "Firmware/dsp2.data.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
validation: [size]
|
||||
note: "DSP-2 data ROM, read with dsp2.program.rom when dsp2.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:104, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "dsp3.rom"
|
||||
path: "Firmware/dsp3.rom"
|
||||
path: "dsp3.rom"
|
||||
standalone_path: "Firmware/dsp3.rom"
|
||||
aliases: ["SNES_dsp3.rom"]
|
||||
system: nintendo-snes
|
||||
required: true
|
||||
size: 8192
|
||||
validation: [size]
|
||||
sha256: "0971b08f396c32e61989d1067dddf8e4b14649d548b2188f7c541b03d7c69e4e"
|
||||
note: "DSP-3 (SD Gundam GX). Split pair dsp3.program.rom + dsp3.data.rom also accepted."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:105, Core/Shared/FirmwareHelper.h:59-79"
|
||||
note: "DSP-3 (SD Gundam GX). Tried before the split pair dsp3.program.rom + dsp3.data.rom."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:105, Core/Shared/FirmwareHelper.h:59-79, UI/Interop/FirmwareTypeExtensions.cs:14"
|
||||
|
||||
- name: "dsp3.program.rom"
|
||||
path: "dsp3.program.rom"
|
||||
standalone_path: "Firmware/dsp3.program.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 6144
|
||||
validation: [size]
|
||||
note: "DSP-3 program ROM, read with dsp3.data.rom when dsp3.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:105, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "dsp3.data.rom"
|
||||
path: "dsp3.data.rom"
|
||||
standalone_path: "Firmware/dsp3.data.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
validation: [size]
|
||||
note: "DSP-3 data ROM, read with dsp3.program.rom when dsp3.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:105, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "dsp4.rom"
|
||||
path: "Firmware/dsp4.rom"
|
||||
path: "dsp4.rom"
|
||||
standalone_path: "Firmware/dsp4.rom"
|
||||
aliases: ["SNES_dsp4.rom"]
|
||||
system: nintendo-snes
|
||||
required: true
|
||||
size: 8192
|
||||
validation: [size]
|
||||
sha256: "752d03b2d74441e430b7f713001fa241f8bbcfc1a0d890ed4143f174dbe031da"
|
||||
note: "DSP-4 (Top Gear 3000). Split pair dsp4.program.rom + dsp4.data.rom also accepted."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:106, Core/Shared/FirmwareHelper.h:59-79"
|
||||
note: "DSP-4 (Top Gear 3000). Tried before the split pair dsp4.program.rom + dsp4.data.rom."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:106, Core/Shared/FirmwareHelper.h:59-79, UI/Interop/FirmwareTypeExtensions.cs:15"
|
||||
|
||||
- name: "dsp4.program.rom"
|
||||
path: "dsp4.program.rom"
|
||||
standalone_path: "Firmware/dsp4.program.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 6144
|
||||
validation: [size]
|
||||
note: "DSP-4 program ROM, read with dsp4.data.rom when dsp4.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:106, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "dsp4.data.rom"
|
||||
path: "dsp4.data.rom"
|
||||
standalone_path: "Firmware/dsp4.data.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
validation: [size]
|
||||
note: "DSP-4 data ROM, read with dsp4.program.rom when dsp4.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:106, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "st010.rom"
|
||||
path: "Firmware/st010.rom"
|
||||
path: "st010.rom"
|
||||
standalone_path: "Firmware/st010.rom"
|
||||
aliases: ["SNES_st010.rom"]
|
||||
system: nintendo-snes
|
||||
required: true
|
||||
size: 53248
|
||||
validation: [size]
|
||||
sha256: "fa9bced838fedea11c6f6ace33d1878024bdd0d02cc9485899d0bdd4015ec24c"
|
||||
note: "ST010 (F1 ROC II) program+data (0xC000+0x1000). Split pair st010.program.rom + st010.data.rom also accepted."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:107, Core/Shared/FirmwareHelper.h:59-79"
|
||||
note: "ST010 (F1 ROC II) program+data (0xC000+0x1000). Tried before the split pair st010.program.rom + st010.data.rom."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:107, Core/Shared/FirmwareHelper.h:59-79, UI/Interop/FirmwareTypeExtensions.cs:17"
|
||||
|
||||
- name: "st010.program.rom"
|
||||
path: "st010.program.rom"
|
||||
standalone_path: "Firmware/st010.program.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 49152
|
||||
validation: [size]
|
||||
note: "ST010 program ROM, read with st010.data.rom when st010.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:107, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "st010.data.rom"
|
||||
path: "st010.data.rom"
|
||||
standalone_path: "Firmware/st010.data.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 4096
|
||||
validation: [size]
|
||||
note: "ST010 data ROM, read with st010.program.rom when st010.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:107, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "st011.rom"
|
||||
path: "Firmware/st011.rom"
|
||||
path: "st011.rom"
|
||||
standalone_path: "Firmware/st011.rom"
|
||||
aliases: ["SNES_st011.rom"]
|
||||
system: nintendo-snes
|
||||
required: true
|
||||
size: 53248
|
||||
validation: [size]
|
||||
sha256: "8b2b3f3f3e6e29f4d21d8bc736b400bc988b7d2214ebee15643f01c1fee2f364"
|
||||
note: "ST011 (Hayazashi Nidan Morita Shogi) program+data. Split pair st011.program.rom + st011.data.rom also accepted."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:108, Core/Shared/FirmwareHelper.h:59-79"
|
||||
note: "ST011 (Hayazashi Nidan Morita Shogi) program+data. Tried before the split pair st011.program.rom + st011.data.rom."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:108, Core/Shared/FirmwareHelper.h:59-79, UI/Interop/FirmwareTypeExtensions.cs:18"
|
||||
|
||||
- name: "st011.program.rom"
|
||||
path: "st011.program.rom"
|
||||
standalone_path: "Firmware/st011.program.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 49152
|
||||
validation: [size]
|
||||
note: "ST011 program ROM, read with st011.data.rom when st011.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:108, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "st011.data.rom"
|
||||
path: "st011.data.rom"
|
||||
standalone_path: "Firmware/st011.data.rom"
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 4096
|
||||
validation: [size]
|
||||
note: "ST011 data ROM, read with st011.program.rom when st011.rom is absent."
|
||||
source_ref: "Core/SNES/Coprocessors/DSP/NecDsp.cpp:108, Core/Shared/FirmwareHelper.h:69-76"
|
||||
|
||||
- name: "st018.rom"
|
||||
path: "Firmware/st018.rom"
|
||||
path: "st018.rom"
|
||||
standalone_path: "Firmware/st018.rom"
|
||||
aliases: ["SNES_st018.rom"]
|
||||
system: nintendo-snes
|
||||
required: true
|
||||
size: 163840
|
||||
validation: [size]
|
||||
sha256: "6df209ab5d2524d1839c038be400ae5eb20dafc14a3771a3239cd9e8acd53806"
|
||||
note: "ST018 ARM coprocessor (Hayazashi Nidan Morita Shogi 2). Missing file leaves the coprocessor ROMs zero-filled."
|
||||
source_ref: "Core/SNES/Coprocessors/ST018/St018.cpp:32-36, Core/Shared/FirmwareHelper.h:153-171"
|
||||
note: "ST018 ARM coprocessor (Hayazashi Nidan Morita Shogi 2). Missing file leaves the coprocessor ROMs uninitialised."
|
||||
source_ref: "Core/SNES/Coprocessors/ST018/St018.cpp:31-36, Core/Shared/FirmwareHelper.h:153-171, UI/Interop/FirmwareTypeExtensions.cs:19"
|
||||
|
||||
- name: "BS-X.bin"
|
||||
path: "Firmware/BS-X.bin"
|
||||
path: "BS-X.bin"
|
||||
standalone_path: "Firmware/BS-X.bin"
|
||||
system: nintendo-satellaview
|
||||
required: true
|
||||
size: 1048576
|
||||
@@ -167,10 +382,11 @@ files:
|
||||
validation: [size]
|
||||
sha256: "27cfdb99f7e4252bf3740d420147b63c4c88616883bc5e7fe43f2f30bf8c8cbb,a49827b45ff9ac9cf5b4658190e1428e59251bc82d8a63d8e9e0f71e439f008f,3ce321496edc5d77038de2034eb3fb354d7724afd0bc7fd0319f3eb5d57b984d,77d94d64d745014bf8b51280a4204056cdeb9d41ea30eae80dbc006675bebef8"
|
||||
note: "BS-X application cartridge ROM, mandatory for .bs Satellaview files. Core accepts any file of 32 KB or more; the known dumps are 1 MB (Japan/English, with and without DRM)."
|
||||
source_ref: "Core/SNES/BaseCartridge.cpp:60-64, Core/Shared/FirmwareHelper.h:81-92,172-188"
|
||||
source_ref: "Core/SNES/BaseCartridge.cpp:60-64, Core/Shared/FirmwareHelper.h:81-92,172-188, UI/Interop/FirmwareTypeExtensions.cs:23-31"
|
||||
|
||||
- name: "SufamiTurbo.sfc"
|
||||
path: "Firmware/SufamiTurbo.sfc"
|
||||
path: "SufamiTurbo.sfc"
|
||||
standalone_path: "Firmware/SufamiTurbo.sfc"
|
||||
aliases: ["STBIOS.bin"]
|
||||
system: nintendo-sufami-turbo
|
||||
required: true
|
||||
@@ -178,33 +394,36 @@ files:
|
||||
validation: [size]
|
||||
sha256: "edacb453da14f825f05d1134d6035f4bf034e55f7cfb97c70c4ee107eabc7342"
|
||||
note: "Sufami Turbo base cartridge BIOS, mandatory for .st files."
|
||||
source_ref: "Core/SNES/Coprocessors/SufamiTurbo/SufamiTurbo.h:38-42, Core/Shared/FirmwareHelper.h:189-207"
|
||||
source_ref: "Core/SNES/Coprocessors/SufamiTurbo/SufamiTurbo.h:39-44, Core/Shared/FirmwareHelper.h:189-207, UI/Interop/FirmwareTypeExtensions.cs:21"
|
||||
|
||||
- name: "SGB1.sfc"
|
||||
path: "Firmware/SGB1.sfc"
|
||||
standalone_path: "Firmware/SGB1.sfc"
|
||||
mode: standalone
|
||||
system: nintendo-super-game-boy
|
||||
required: false
|
||||
size: 262144
|
||||
validation: [size]
|
||||
sha256: "bba9c269273bedb9b38bd5eb23bfaa6e509b8decc7cb80bb5513905af04f4ceb,c6c4daab5c899b69900c460787de6089edabe94b760f96d9f583d30cc0a5bb30,a75160f7b89b1f0e20fd2f6441bb86285c7378db5035ef6885485eaff6059376"
|
||||
note: "Super Game Boy SNES-side ROM (Rev 0/1/2). Without it, GB games run on the plain GB core instead of SGB mode."
|
||||
source_ref: "Core/SNES/BaseCartridge.cpp:698-714, Core/Shared/FirmwareHelper.h:208-228"
|
||||
note: "Super Game Boy SNES-side ROM (Rev 0/1/2), read when the UseSgb2 setting is off. Without it, GB games run on the plain GB core instead of SGB mode. The libretro build keeps UseSgb2 on and never opens this name."
|
||||
source_ref: "Core/SNES/BaseCartridge.cpp:698-716, Core/Shared/FirmwareHelper.h:208-228, Core/Shared/SettingTypes.h:433, UI/Interop/FirmwareTypeExtensions.cs:40-47"
|
||||
|
||||
- name: "SGB2.sfc"
|
||||
path: "Firmware/SGB2.sfc"
|
||||
path: "SGB2.sfc"
|
||||
standalone_path: "Firmware/SGB2.sfc"
|
||||
system: nintendo-super-game-boy
|
||||
required: false
|
||||
size: 524288
|
||||
validation: [size]
|
||||
sha256: "c172498a23d1176672931bab33b629c7d28f914a43dca9e540b8af1b37ccf2c6"
|
||||
note: "Super Game Boy 2 SNES-side ROM, used when the SGB2 option is enabled."
|
||||
source_ref: "Core/SNES/BaseCartridge.cpp:698-714, Core/Shared/FirmwareHelper.h:208-228"
|
||||
note: "Super Game Boy 2 SNES-side ROM, read when the UseSgb2 setting is on (the default, and the only state of the libretro build). Without it, GB games run on the plain GB core instead of SGB mode."
|
||||
source_ref: "Core/SNES/BaseCartridge.cpp:698-716, Core/Shared/FirmwareHelper.h:208-228, Core/Shared/SettingTypes.h:433, UI/Interop/FirmwareTypeExtensions.cs:49"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Game Boy boot ROMs (embedded copies used when absent)
|
||||
# -------------------------------------------------------
|
||||
- name: "dmg_boot.bin"
|
||||
path: "Firmware/dmg_boot.bin"
|
||||
path: "dmg_boot.bin"
|
||||
standalone_path: "Firmware/dmg_boot.bin"
|
||||
aliases: ["gb_bios.bin"]
|
||||
system: nintendo-gb
|
||||
required: false
|
||||
@@ -212,10 +431,11 @@ files:
|
||||
validation: [size]
|
||||
sha256: "cf053eccb4ccafff9e67339d4e78e98dce7d1ed59be819d2a1ba2232c6fce1c7,26e71cf01e301e5dc40e987cd2ecbf6d0276245890ac829db2a25323da86818e"
|
||||
note: "DMG boot ROM override. An embedded copy is used when the file is absent."
|
||||
source_ref: "Core/Shared/FirmwareHelper.h:229-271, Core/Gameboy/Gameboy.cpp:102-110, Core/Gameboy/GbBootRom.h:8"
|
||||
source_ref: "Core/Shared/FirmwareHelper.h:229-271, Core/Gameboy/Gameboy.cpp:102-110, Core/Gameboy/GbBootRom.h:8, UI/Interop/FirmwareTypeExtensions.cs:33"
|
||||
|
||||
- name: "cgb_boot.bin"
|
||||
path: "Firmware/cgb_boot.bin"
|
||||
path: "cgb_boot.bin"
|
||||
standalone_path: "Firmware/cgb_boot.bin"
|
||||
aliases: ["gbc_bios.bin"]
|
||||
system: nintendo-gbc
|
||||
required: false
|
||||
@@ -223,48 +443,52 @@ files:
|
||||
validation: [size]
|
||||
sha256: "b4f2e416a35eef52cba161b159c7c8523a92594facb924b3ede0d722867c50c7,3a307a41689bee99a9a32ea021bf45136906c86b2e4f06c806738398e4f92e45"
|
||||
note: "GBC boot ROM override. An embedded copy is used when the file is absent."
|
||||
source_ref: "Core/Shared/FirmwareHelper.h:229-271, Core/Gameboy/GbBootRom.h:99"
|
||||
source_ref: "Core/Shared/FirmwareHelper.h:229-271, Core/Gameboy/GbBootRom.h:99, UI/Interop/FirmwareTypeExtensions.cs:34"
|
||||
|
||||
- name: "sgb_boot.bin"
|
||||
path: "Firmware/sgb_boot.bin"
|
||||
standalone_path: "Firmware/sgb_boot.bin"
|
||||
mode: standalone
|
||||
aliases: ["sgb_bios.bin"]
|
||||
system: nintendo-super-game-boy
|
||||
required: false
|
||||
size: 256
|
||||
validation: [size]
|
||||
sha256: "0e4ddff32fc9d1eeaae812a157dd246459b00c9e14f2f61751f661f32361e360"
|
||||
note: "SGB1 GB-side boot ROM override. An embedded copy is used when the file is absent."
|
||||
source_ref: "Core/Shared/FirmwareHelper.h:229-271, Core/Gameboy/GbBootRom.h:49"
|
||||
note: "SGB1 GB-side boot ROM override, read when the UseSgb2 setting is off. An embedded copy is used when the file is absent. The libretro build keeps UseSgb2 on and never opens this name."
|
||||
source_ref: "Core/Shared/FirmwareHelper.h:229-271, Core/Gameboy/Gameboy.cpp:94-97, Core/Gameboy/GbBootRom.h:49, UI/Interop/FirmwareTypeExtensions.cs:37"
|
||||
|
||||
- name: "sgb2_boot.bin"
|
||||
path: "Firmware/sgb2_boot.bin"
|
||||
path: "sgb2_boot.bin"
|
||||
standalone_path: "Firmware/sgb2_boot.bin"
|
||||
aliases: ["sgb_bios.bin"]
|
||||
system: nintendo-super-game-boy
|
||||
required: false
|
||||
size: 256
|
||||
validation: [size]
|
||||
sha256: "fd243c4fb27008986316ce3df29e9cfbcdc0cd52704970555a8bb76edbec3988"
|
||||
note: "SGB2 GB-side boot ROM override. An embedded copy is used when the file is absent."
|
||||
source_ref: "Core/Shared/FirmwareHelper.h:229-271, Core/Gameboy/GbBootRom.h:49"
|
||||
note: "SGB2 GB-side boot ROM override, read when the UseSgb2 setting is on. An embedded copy is used when the file is absent."
|
||||
source_ref: "Core/Shared/FirmwareHelper.h:229-271, Core/Gameboy/Gameboy.cpp:94-97, Core/Gameboy/GbBootRom.h:49, UI/Interop/FirmwareTypeExtensions.cs:38"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Game Boy Advance
|
||||
# -------------------------------------------------------
|
||||
- name: "gba_bios.bin"
|
||||
path: "Firmware/gba_bios.bin"
|
||||
path: "gba_bios.bin"
|
||||
standalone_path: "Firmware/gba_bios.bin"
|
||||
system: nintendo-gba
|
||||
required: true
|
||||
size: 16384
|
||||
validation: [size]
|
||||
sha256: "fd2547724b505f487e6dcb29ec2ecff3af35a841a77ab2e85fd87350abd36570"
|
||||
note: "GBA BIOS. When missing, the boot ROM region is zero-filled and games calling BIOS routines fail; there is no HLE replacement."
|
||||
source_ref: "Core/GBA/GbaConsole.cpp:76-79, Core/Shared/FirmwareHelper.h:272-291"
|
||||
source_ref: "Core/GBA/GbaConsole.cpp:76-79, Core/Shared/FirmwareHelper.h:272-291, UI/Interop/FirmwareTypeExtensions.cs:35"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# NES / Famicom
|
||||
# -------------------------------------------------------
|
||||
- name: "disksys.rom"
|
||||
path: "Firmware/disksys.rom"
|
||||
path: "disksys.rom"
|
||||
standalone_path: "Firmware/disksys.rom"
|
||||
aliases: ["FdsBios.bin"]
|
||||
system: nintendo-fds
|
||||
required: true
|
||||
@@ -272,30 +496,33 @@ files:
|
||||
validation: [size]
|
||||
sha256: "99c18490ed9002d9c6d999b9d8d15be5c051bdfa7cc7e73318053c9a994b0178,a0a9d57cbace21bf9c85c2b85e86656317f0768d7772acc90c7411ab1dbff2bf"
|
||||
note: "FDS BIOS. When missing, the BIOS region is zero-filled and disk games cannot boot."
|
||||
source_ref: "Core/NES/Mappers/FDS/Fds.cpp:21-28, Core/Shared/FirmwareHelper.h:292-310"
|
||||
source_ref: "Core/NES/Mappers/FDS/Fds.cpp:21-28, Core/Shared/FirmwareHelper.h:292-310, UI/Interop/FirmwareTypeExtensions.cs:51-57"
|
||||
|
||||
- name: "StudyBox.bin"
|
||||
path: "Firmware/StudyBox.bin"
|
||||
path: "StudyBox.bin"
|
||||
standalone_path: "Firmware/StudyBox.bin"
|
||||
system: nintendo-nes
|
||||
required: false
|
||||
size: 262144
|
||||
validation: [size]
|
||||
sha256: "365f84c86f7f7c3aaa2042d78494d41448e998ec5a89ac1b5fecb452951d514c"
|
||||
note: "Famicom Study Box BIOS, mandatory for .studybox tape dumps only. When missing, the BIOS region is zero-filled."
|
||||
source_ref: "Core/NES/Mappers/StudyBox.h:64-70, Core/Shared/FirmwareHelper.h:311-329"
|
||||
source_ref: "Core/NES/Mappers/StudyBox.h:64-70, Core/Shared/FirmwareHelper.h:311-329, UI/Interop/FirmwareTypeExtensions.cs:59"
|
||||
|
||||
- name: "ymf288_adpcm_rom.bin"
|
||||
path: "Firmware/ymf288_adpcm_rom.bin"
|
||||
path: "ymf288_adpcm_rom.bin"
|
||||
standalone_path: "Firmware/ymf288_adpcm_rom.bin"
|
||||
system: nintendo-nes
|
||||
required: false
|
||||
size: 8192
|
||||
validation: [size]
|
||||
sha256: "53afd0fa9c62eda3e2be939e23f3adf48a2af8ad37bb1640261726c5d5adeba8"
|
||||
note: "YMF288 ADPCM rhythm ROM for EPSM expansion audio (NES 2.0 header flag). Without it, EPSM sound is incorrect."
|
||||
source_ref: "Core/NES/BaseMapper.cpp:763-768, Core/Shared/FirmwareHelper.h:439-458"
|
||||
source_ref: "Core/NES/BaseMapper.cpp:764-768, Core/Shared/FirmwareHelper.h:439-456, UI/Interop/FirmwareTypeExtensions.cs:83"
|
||||
|
||||
- name: "lh5323m1.bin"
|
||||
path: "Firmware/lh5323m1.bin"
|
||||
path: "lh5323m1.bin"
|
||||
standalone_path: "Firmware/lh5323m1.bin"
|
||||
system: nintendo-nes
|
||||
required: false
|
||||
size: 262144
|
||||
@@ -309,99 +536,117 @@ files:
|
||||
required: false
|
||||
size: 548608
|
||||
sha256: "7eee6516f351ccc7db286587917bec415a1d8042ff5ef87c279f38200a3418dd"
|
||||
note: "NES game database for mapper and input detection, read from the home folder root. Deployed automatically from the application's embedded Dependencies.zip."
|
||||
source_ref: "Core/NES/GameDatabase.cpp:92-101, UI/Utilities/DependencyHelper.cs:14-66"
|
||||
note: "NES game database for mapper and input detection, read from the home folder root on the first lookup. Standalone deploys it from the application's embedded Dependencies.zip; the libretro build starts from a 6213-line embedded copy and merges this file over it when present."
|
||||
source_ref: "Core/NES/GameDatabase.cpp:92-103, UI/Utilities/DependencyHelper.cs:14-67, Libretro/libretro.cpp:85-86,592-594"
|
||||
|
||||
- name: "MesenPalette.pal"
|
||||
path: "MesenPalette.pal"
|
||||
mode: libretro
|
||||
system: nintendo-nes
|
||||
required: false
|
||||
size: [192, 1536]
|
||||
validation: [size]
|
||||
note: "NES colour palette read from the home folder when the mesen_palette core option is Custom: 64 RGB triplets, or 512 covering the emphasis combinations. Any other size leaves the default palette in place."
|
||||
source_ref: "Libretro/libretro.cpp:1178-1204, Libretro/libretro.cpp:1304-1306"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# PC Engine
|
||||
# -------------------------------------------------------
|
||||
- name: "[BIOS] Super CD-ROM System (Japan) (v3.0).pce"
|
||||
path: "Firmware/[BIOS] Super CD-ROM System (Japan) (v3.0).pce"
|
||||
aliases: ["syscard3.pce"]
|
||||
path: "[BIOS] Super CD-ROM System (Japan) (v3.0).pce"
|
||||
standalone_path: "Firmware/[BIOS] Super CD-ROM System (Japan) (v3.0).pce"
|
||||
aliases: ["syscard3.pce", "syscard3.bin", "syscard.pce", "syscard.bin"]
|
||||
system: nec-pc-engine-cd
|
||||
required: true
|
||||
size: 262144
|
||||
validation: [size]
|
||||
sha256: "e11527b3b96ce112a037138988ca72fd117a6b0779c2480d9e03eaebece3d9ce"
|
||||
note: "Super CD-ROM System card, mandatory for CD games. Load fails without it."
|
||||
source_ref: "Core/PCE/PceConsole.cpp:61-63,151-164, Core/Shared/FirmwareHelper.h:330-349"
|
||||
note: "Super CD-ROM System card, mandatory for CD games. Load fails without it. Both builds read this name or syscard3.pce at exactly 256 KB; the libretro build first builds the canonical file from syscard3.pce, syscard3.bin, syscard.pce or syscard.bin, skipping a 512-byte header, for the duration of a .cue load."
|
||||
source_ref: "Core/PCE/PceConsole.cpp:61-63,151-164, Core/Shared/FirmwareHelper.h:330-349, Libretro/libretro.cpp:108-183,2347-2358, UI/Interop/FirmwareTypeExtensions.cs:61-62"
|
||||
|
||||
- name: "[BIOS] Games Express CD Card (Japan).pce"
|
||||
path: "Firmware/[BIOS] Games Express CD Card (Japan).pce"
|
||||
path: "[BIOS] Games Express CD Card (Japan).pce"
|
||||
standalone_path: "Firmware/[BIOS] Games Express CD Card (Japan).pce"
|
||||
aliases: ["gecard.pce"]
|
||||
system: nec-pc-engine-cd
|
||||
required: false
|
||||
size: 32768
|
||||
size: [32768, 16384]
|
||||
validation: [size]
|
||||
sha256: "4b86bb96a48a4ca8375fc0109631d0b1d64f255a03b01de70594d40788ba6c3d,da173b20694c2b52087b099b8c44e471d3ee08a666c90d4afd997f8e1382add8"
|
||||
note: "Games Express CD card, mandatory for Games Express discs (auto-detected by sector signature). Exactly 0x8000 or 0x4000 bytes accepted."
|
||||
source_ref: "Core/PCE/PceConsole.cpp:153-160, Core/Shared/FirmwareHelper.h:350-368"
|
||||
note: "Games Express CD card, mandatory for Games Express discs (auto-detected by sector signature). Exactly 0x8000 bytes (Blue Version card) or 0x4000 bytes (Green Version card) accepted."
|
||||
source_ref: "Core/PCE/PceConsole.cpp:153-160, Core/Shared/FirmwareHelper.h:350-368, UI/Interop/FirmwareTypeExtensions.cs:64-68"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# SMS / Game Gear / ColecoVision
|
||||
# -------------------------------------------------------
|
||||
- name: "bios.sms"
|
||||
path: "Firmware/bios.sms"
|
||||
path: "bios.sms"
|
||||
standalone_path: "Firmware/bios.sms"
|
||||
system: sega-mastersystem
|
||||
required: false
|
||||
sha256: "477617917a12a30f9f43844909dc2de6e6a617430f5c9a36306c86414a670d50,1eb16fc06ceaf05651d7cfd69d1713e6ddccc4349a511f6fd17e037d71f9d85b,67846e26764bd862f19179294347f7353a4166b62ac4198a5ec32933b7da486e,cb01de3464797a77b52e82f5f9b05398540df8c1151d31128d49584028589062,6f4e6de10f1d07bda695c629c67457bb0248eeb8ffa0c61a2742b8529274de30,0c08e17b0ecc3967e1094f12841fdc97fdcbbf986e3bf9a06b35b69e7d95e4cd,1a73bc6e1a9973b98432774a1480b3ac1259027a97590d5e67d52745159abbbc,e9eb04ec80ded8658f765c4eca75cdbe23cbc7d8fed73f9c3db7a868dbf649ff,13c0639cc037167f53e6151dbdea013758c3d09a76b064a894bf15c39c0a3897,aaf39841be10f9cd6908a95a7451c3a0c8ac77125eb412b7a41cad260c888ab5,57abf3c00c82a8e042ebeb2bfe412adac9ba005e9009845236390de3ee645248,c51ec80b7a609c5ee3d203ceee2b602ae4dfb4479caf15dc1d030c40c0364e93"
|
||||
note: "Master System boot ROM, mapped when present. Loaded without any size check; known dumps are 8/16/128/256 KB."
|
||||
source_ref: "Core/SMS/SmsConsole.cpp:71-76, Core/Shared/FirmwareHelper.h:369-380"
|
||||
note: "Master System boot ROM, also read for SG-1000 content, mapped when present. Loaded without any size check; known dumps are 8/16/128/256 KB."
|
||||
source_ref: "Core/SMS/SmsConsole.cpp:71-76, Core/Shared/FirmwareHelper.h:369-379, UI/Interop/FirmwareTypeExtensions.cs:71-77"
|
||||
|
||||
- name: "bios.gg"
|
||||
path: "Firmware/bios.gg"
|
||||
path: "bios.gg"
|
||||
standalone_path: "Firmware/bios.gg"
|
||||
system: sega-gamegear
|
||||
required: false
|
||||
size: 1024
|
||||
sha256: "8c8a21335038285cfa03dc076100c1f0bfadf3e4ff70796f11f3dfaaab60eee2"
|
||||
note: "Game Gear boot ROM, mapped when present. Loaded without any size check."
|
||||
source_ref: "Core/SMS/SmsConsole.cpp:71-76, Core/Shared/FirmwareHelper.h:369-380"
|
||||
source_ref: "Core/SMS/SmsConsole.cpp:71-76, Core/Shared/FirmwareHelper.h:369-379, UI/Interop/FirmwareTypeExtensions.cs:79"
|
||||
|
||||
- name: "bios.col"
|
||||
path: "Firmware/bios.col"
|
||||
path: "bios.col"
|
||||
standalone_path: "Firmware/bios.col"
|
||||
system: coleco-colecovision
|
||||
required: true
|
||||
size: 8192
|
||||
validation: [size]
|
||||
sha256: "990bf1956f10207d8781b619eb74f89b00d921c8d45c95c334c16c8cceca09ad,fb4a898eb93b19b36773d87a6c70eb28f981b2686bebdd2d431b05dcdf9cffd4"
|
||||
note: "ColecoVision BIOS. The system boots through it; games cannot start without it."
|
||||
source_ref: "Core/SMS/SmsConsole.cpp:71-74, Core/Shared/FirmwareHelper.h:381-399"
|
||||
note: "ColecoVision BIOS, NTSC or PAL console dump. The system boots through it; games cannot start without it."
|
||||
source_ref: "Core/SMS/SmsConsole.cpp:71-74, Core/Shared/FirmwareHelper.h:381-398, UI/Interop/FirmwareTypeExtensions.cs:70"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# WonderSwan
|
||||
# WonderSwan (standalone only: UseBootRom is never set by the libretro port)
|
||||
# -------------------------------------------------------
|
||||
- name: "bootrom.ws"
|
||||
path: "Firmware/bootrom.ws"
|
||||
standalone_path: "Firmware/bootrom.ws"
|
||||
mode: standalone
|
||||
system: bandai-wswan
|
||||
required: false
|
||||
size: 4096
|
||||
validation: [size]
|
||||
sha256: "bf4480dbea1c47c8b54ce7be9382bc1006148f431fbe4277e136351fa74f635e"
|
||||
note: "WonderSwan boot ROM, also used for Pocket Challenge V2. Loaded only when the UseBootRom setting is enabled (default off); without it the boot screen is skipped."
|
||||
source_ref: "Core/WS/WsConsole.cpp:145-150, Core/Shared/SettingTypes.h:806, Core/Shared/FirmwareHelper.h:400-438"
|
||||
source_ref: "Core/WS/WsConsole.cpp:145-150, Core/Shared/SettingTypes.h:806, Core/Shared/FirmwareHelper.h:400-437, UI/Interop/FirmwareTypeExtensions.cs:80"
|
||||
|
||||
- name: "bootrom.wsc"
|
||||
path: "Firmware/bootrom.wsc"
|
||||
standalone_path: "Firmware/bootrom.wsc"
|
||||
mode: standalone
|
||||
system: bandai-wswanc
|
||||
required: false
|
||||
size: 8192
|
||||
validation: [size]
|
||||
sha256: "f5a5c044d84ce1681f94e9ef74287cb989784497be5bd5108df17908dfa55db2"
|
||||
note: "WonderSwan Color boot ROM. Loaded only when the UseBootRom setting is enabled."
|
||||
source_ref: "Core/WS/WsConsole.cpp:145-150, Core/Shared/FirmwareHelper.h:400-438"
|
||||
source_ref: "Core/WS/WsConsole.cpp:145-150, Core/Shared/SettingTypes.h:806, Core/Shared/FirmwareHelper.h:400-437, UI/Interop/FirmwareTypeExtensions.cs:81"
|
||||
|
||||
- name: "bootrom_sc.wsc"
|
||||
path: "Firmware/bootrom_sc.wsc"
|
||||
standalone_path: "Firmware/bootrom_sc.wsc"
|
||||
mode: standalone
|
||||
system: bandai-wswanc
|
||||
required: false
|
||||
size: 8192
|
||||
validation: [size]
|
||||
sha256: "82e96addf5ab1ce09a84b6eedaa904e4ca432756851f7e0cc0649006c183834d"
|
||||
note: "SwanCrystal boot ROM. Loaded only when the UseBootRom setting is enabled and the SwanCrystal model is selected."
|
||||
source_ref: "Core/WS/WsConsole.cpp:145-150, Core/Shared/FirmwareHelper.h:400-438"
|
||||
source_ref: "Core/WS/WsConsole.cpp:145-150, Core/Shared/SettingTypes.h:806, Core/Shared/FirmwareHelper.h:400-437, UI/Interop/FirmwareTypeExtensions.cs:82"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Satellaview broadcast data (auto-deployed)
|
||||
# Satellaview broadcast data (auto-deployed by the standalone UI)
|
||||
# -------------------------------------------------------
|
||||
- name: "BSX0120-0.bin"
|
||||
path: "Satellaview/BSX0120-0.bin"
|
||||
@@ -410,8 +655,8 @@ files:
|
||||
required: false
|
||||
size: 34
|
||||
sha256: "ba0c17b5786724959bc206714fc18f708c16fdcd77f8fb19aaf9768338e3ce01"
|
||||
note: "Satellaview data stream for channel 0120 (time channel). Deployed automatically from the application's embedded Dependencies.zip; user replacements are preserved."
|
||||
source_ref: "Core/SNES/Coprocessors/BSX/BsxStream.cpp:67-74, UI/Utilities/DependencyHelper.cs:46-49"
|
||||
note: "Satellaview data stream for channel 0120 (time channel), read from <home>/Satellaview/. Standalone deploys it from the application's embedded Dependencies.zip and preserves user replacements; the libretro build reads it from system/Satellaview/ and deploys nothing."
|
||||
source_ref: "Core/SNES/Coprocessors/BSX/BsxStream.cpp:68-74, UI/Utilities/DependencyHelper.cs:44-48"
|
||||
|
||||
- name: "BSX0121-0.bin"
|
||||
path: "Satellaview/BSX0121-0.bin"
|
||||
@@ -420,8 +665,8 @@ files:
|
||||
required: false
|
||||
size: 34
|
||||
sha256: "fbe51a53638dd366b50ea53adf92f54447667d7767c502e508d89b008e31c53f"
|
||||
note: "Satellaview data stream for channel 0121. Deployed automatically; user replacements are preserved."
|
||||
source_ref: "Core/SNES/Coprocessors/BSX/BsxStream.cpp:67-74, UI/Utilities/DependencyHelper.cs:46-49"
|
||||
note: "Satellaview data stream for channel 0121. Deployed by the standalone UI; user replacements are preserved."
|
||||
source_ref: "Core/SNES/Coprocessors/BSX/BsxStream.cpp:68-74, UI/Utilities/DependencyHelper.cs:44-48"
|
||||
|
||||
- name: "BSX0122-0.bin"
|
||||
path: "Satellaview/BSX0122-0.bin"
|
||||
@@ -430,8 +675,8 @@ files:
|
||||
required: false
|
||||
size: 1031
|
||||
sha256: "a0329450e1d42cd18d30070a86e0e481a876cb5c9cfbaab4a0d8895150976ee7"
|
||||
note: "Satellaview data stream for channel 0122. Deployed automatically; user replacements are preserved."
|
||||
source_ref: "Core/SNES/Coprocessors/BSX/BsxStream.cpp:67-74, UI/Utilities/DependencyHelper.cs:46-49"
|
||||
note: "Satellaview data stream for channel 0122. Deployed by the standalone UI; user replacements are preserved."
|
||||
source_ref: "Core/SNES/Coprocessors/BSX/BsxStream.cpp:68-74, UI/Utilities/DependencyHelper.cs:44-48"
|
||||
|
||||
- name: "BSX0123-0.bin"
|
||||
path: "Satellaview/BSX0123-0.bin"
|
||||
@@ -440,8 +685,8 @@ files:
|
||||
required: false
|
||||
size: 16
|
||||
sha256: "dbf5ef12ce586712ee666fc5805e6dfcaa1e253fdd36644f773909514868a590"
|
||||
note: "Satellaview data stream for channel 0123. Deployed automatically; user replacements are preserved."
|
||||
source_ref: "Core/SNES/Coprocessors/BSX/BsxStream.cpp:67-74, UI/Utilities/DependencyHelper.cs:46-49"
|
||||
note: "Satellaview data stream for channel 0123. Deployed by the standalone UI; user replacements are preserved."
|
||||
source_ref: "Core/SNES/Coprocessors/BSX/BsxStream.cpp:68-74, UI/Utilities/DependencyHelper.cs:44-48"
|
||||
|
||||
- name: "BSX0124-0.bin"
|
||||
path: "Satellaview/BSX0124-0.bin"
|
||||
@@ -450,12 +695,15 @@ files:
|
||||
required: false
|
||||
size: 97
|
||||
sha256: "4d7d7bf5afe5c4f71b96965e58003816c70c13e8af9b581431504d5e52a0cec1"
|
||||
note: "Satellaview data stream for channel 0124. Deployed automatically; user replacements are preserved."
|
||||
source_ref: "Core/SNES/Coprocessors/BSX/BsxStream.cpp:67-74, UI/Utilities/DependencyHelper.cs:46-49"
|
||||
note: "Satellaview data stream for channel 0124. Deployed by the standalone UI; user replacements are preserved."
|
||||
source_ref: "Core/SNES/Coprocessors/BSX/BsxStream.cpp:68-74, UI/Utilities/DependencyHelper.cs:44-48"
|
||||
|
||||
platform_details:
|
||||
firmware_folder: "Firmware/"
|
||||
firmware_folder:
|
||||
standalone: "Firmware/"
|
||||
libretro: "system directory root"
|
||||
firmware_size_check: exact
|
||||
ui_hash_check: "sha256, advisory (UI/Interop/FirmwareTypeExtensions.cs)"
|
||||
ui_hash_check: "sha256, advisory, standalone UI only (UI/Interop/FirmwareTypeExtensions.cs)"
|
||||
satellaview_streams: "Satellaview/BSX<channel>-<index>.bin"
|
||||
source_ref: "Utilities/FolderUtilities.cpp:81-91, Core/Shared/FirmwareHelper.h"
|
||||
libretro_subsystem: "Super Game Boy: gb|gbc|gbx + sfc|smc"
|
||||
source_ref: "Utilities/FolderUtilities.cpp:81-91, Libretro/libretro.cpp:2253-2256, Core/Shared/FirmwareHelper.h"
|
||||
@@ -3,9 +3,9 @@ type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/mentalfoundry/pokketstation"
|
||||
upstream: "https://github.com/mentalfoundry/pokketstation"
|
||||
profiled_date: "2026-09-03"
|
||||
source_commit: "11fb6de0139d5cbdbd44e37839571a0bf25e5ab2"
|
||||
core_version: "v1.11.1"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "484933271b7d362e8e76f1121839c33e5d5ec83e"
|
||||
core_version: "v1.12"
|
||||
display_name: "Sony - PocketStation (pokketstation)"
|
||||
cores: [pokketstation]
|
||||
systems: [sony-pocketstation]
|
||||
@@ -14,15 +14,19 @@ notes: |
|
||||
PocketStation emulator with a portable C core (core/) shared by the libretro
|
||||
core, an SDL2 desktop application and a PS Vita port. The libretro core
|
||||
reports library_version "0.1"; the project version is the release tag,
|
||||
v1.11.1 in the desktop frontend (frontends/desktop/main.c:40).
|
||||
v1.12 in the desktop frontend (frontends/desktop/main.c:40).
|
||||
|
||||
load_bios opens <system>/pocketstation.bin, reads 16384 bytes and fails when
|
||||
fewer are read; a longer file is accepted and truncated. psemu_load_bios
|
||||
copies the image and rejects any size other than PSEMU_BIOS_SIZE.
|
||||
retro_load_game returns false when load_bios fails, and psemu_run executes
|
||||
nothing while no BIOS is loaded: there is no HLE and no embedded copy.
|
||||
Content (.mcr, .mcd, .mcs, .pss) is identified by its bytes, not by the
|
||||
extension. Save RAM is the full 128 KB flash image.
|
||||
Content (.mcr, .mcd, .mcs, .pss, .bin, .gme) is identified by its bytes,
|
||||
not by the extension: a 128 KB image is a full card, a 134976-byte file
|
||||
opening with 123-456-STD is a DexDrive dump whose 3904-byte header is
|
||||
skipped, anything else is tried as a single save then as a Title Sector
|
||||
body (core/src/psemu.c:187-209, 301-317). Save RAM is the full 128 KB
|
||||
flash image.
|
||||
|
||||
psemu_settings_offsets_known hashes the loaded image with FNV-1a and compares
|
||||
it with 0xB2E46838, the retail 110 revision the project traced; a match
|
||||
@@ -30,7 +34,7 @@ notes: |
|
||||
16 KB image boots. Two mask ROM revisions are documented: 061, from
|
||||
prototype hardware, and 110, the retail one; the ASCII tags at offsets
|
||||
0x1DFC (C061 or C110) and 0x3FFC (J061 or J110) identify them
|
||||
(docs/hardware-notes.md:778-788). SWI 0Fh FlashWriteSerial works on 061
|
||||
(docs/hardware-notes.md:782-792). SWI 0Fh FlashWriteSerial works on 061
|
||||
and locks the CPU on 110.
|
||||
|
||||
The desktop application takes the BIOS path from the command line, then
|
||||
@@ -46,7 +50,7 @@ files:
|
||||
required: true
|
||||
validation: [size]
|
||||
standalone_path: "bios.bin"
|
||||
source_ref: "frontends/libretro/libretro.c:178-196, frontends/libretro/libretro.c:206-208, core/src/psemu.c:90-97, core/src/psemu.c:458-461, core/src/psemu.c:795-820, core/include/psemu/psemu.h:19"
|
||||
source_ref: "frontends/libretro/libretro.c:178-196, frontends/libretro/libretro.c:206-208, core/src/psemu.c:90-97, core/src/psemu.c:474-477, core/src/psemu.c:854-879, core/include/psemu/psemu.h:19"
|
||||
note: >
|
||||
Read from the frontend system directory. The desktop application reads
|
||||
the whole file and psemu_load_bios rejects any size other than 16384;
|
||||
|
||||
+166
-125
@@ -3,9 +3,9 @@ type: standalone
|
||||
core_classification: other
|
||||
source: "https://github.com/habib256/pom2"
|
||||
upstream: "https://github.com/habib256/pom2"
|
||||
profiled_date: "2026-09-14"
|
||||
source_commit: "78aa14c1135ea9eaf3e68f09d624fab788aab236"
|
||||
core_version: "0.9.2"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "95cdbd1dc18b86a6b347dacd513503ac8ed73921"
|
||||
core_version: "0.9.3"
|
||||
display_name: "Apple - Apple II (POM2)"
|
||||
cores:
|
||||
- pom2
|
||||
@@ -16,20 +16,21 @@ mode: standalone
|
||||
notes: |
|
||||
Apple ][, ][+, //e, //c and //c+ emulator by Arnaud Verhille, C++ with an
|
||||
ImGui frontend, plus a browser build and a headless CLI. Nine machine
|
||||
profiles (SystemProfile.cpp:32-300): Apple ][ Original, ][+, //e
|
||||
profiles (src/SystemProfile.cpp:32-302): Apple ][ Original, ][+, //e
|
||||
Unenhanced, //e Enhanced, //c, //c Plus, and PAL variants of the //e
|
||||
Unenhanced, //e Enhanced (the default) and //c (Le Chat Mauve).
|
||||
|
||||
Every file is looked up by a relative name through findResource
|
||||
(ResourcePaths.cpp:173-246): the per-user data directory
|
||||
(src/ResourcePaths.cpp:178-251): the per-user data directory
|
||||
(~/.local/share/POM2, ~/Library/Application Support/POM2,
|
||||
%LOCALAPPDATA%\POM2), the executable directory, its parent,
|
||||
../share/POM2, then the working directory and its two parents. The
|
||||
first hit wins. Release packages ship the whole roms/ tree, the fonts and
|
||||
the two photos (packaging/bundle.manifest).
|
||||
%LOCALAPPDATA%\POM2) when it really is per-user, the executable
|
||||
directory, its parent, ../share/POM2, the temp fallback data directory
|
||||
otherwise, then the working directory and its two parents. The first hit
|
||||
wins. Release packages ship the whole roms/ tree, the fonts and the two
|
||||
photos (packaging/bundle.manifest).
|
||||
|
||||
Machine firmware is a probe chain per profile, first name found wins
|
||||
(SystemProfile.cpp romProbeOrder, MainWindow_Slots.cpp:1458-1481):
|
||||
(SystemProfile.cpp romProbeOrder, src/ProfileSwitch.cpp:113-133):
|
||||
][ Original apple2o.rom, apple2.rom
|
||||
][+ apple2p.rom, apple2.rom
|
||||
//e Unenhanced apple2e_unenh.rom, 342-0135-b.64.rom, apple2e.rom
|
||||
@@ -37,47 +38,60 @@ notes: |
|
||||
//c apple2c-32Kv0.rom, apple2c-16K.rom, 3420033a.256
|
||||
//c Plus apple2cp.rom, apple2c-plus.rom, apple2c-32Kv0.rom
|
||||
With no candidate the machine runs on a $D000-$FFFF stub and the Welcome
|
||||
panel opens (MainWindow.cpp:318-326). A first run with no //e image falls
|
||||
back to the ][+ chain (MainWindow.cpp:223-236). Memory::loadAppleIIRom
|
||||
(Memory.cpp:174-224) maps 12 KB at $D000, 16 KB at $C000, skips the 4 KB
|
||||
pad of a 20 KB ][+ dump, and slices a 32 KB dump by profile: //e images
|
||||
carry the firmware in the upper half, //c and //c+ images are two firmware
|
||||
banks with bank 0 in the lower half (SystemProfile.cpp:432).
|
||||
panel opens (src/MainWindow.cpp:323-331). A first run with no //e image
|
||||
falls back to the ][+ chain (src/MainWindow.cpp:228-241).
|
||||
Memory::loadAppleIIRom (src/Memory.cpp:173-236) maps 12 KB at $D000,
|
||||
16 KB at $C000, skips the 4 KB pad of a 20 KB ][+ dump, and slices a
|
||||
32 KB dump by profile: //e images carry the firmware in the upper half,
|
||||
//c and //c+ images are two firmware banks with bank 0 in the lower half
|
||||
(src/SystemProfile.cpp:429).
|
||||
|
||||
Character generators follow charRomProbeOrder per profile, or the locale
|
||||
picked in the toolbar (CharRomCatalog.cpp:42-79, MainWindow_Slots.cpp:
|
||||
1489-1505). Memory::loadCharRom accepts 2 KB, 4 KB and 8 KB dumps
|
||||
(Memory.cpp:313-345); an 8 KB dump is two 4 KB banks, loaded as one bank
|
||||
or kept dual-bank with annunciator 2 selecting the live set.
|
||||
picked in the toolbar (src/CharRomCatalog.cpp:42-79,
|
||||
src/ProfileSwitch.cpp:135-141). Memory::loadCharRom accepts 2 KB, 4 KB
|
||||
and 8 KB dumps (src/Memory.cpp:324-357); an 8 KB dump is two 4 KB banks,
|
||||
loaded as one bank or kept dual-bank with annunciator 2 selecting the
|
||||
live set.
|
||||
|
||||
Peripheral ROMs are read when the card is plugged (SlotCardFactory.cpp).
|
||||
Peripheral ROMs are read when the card is plugged (src/SlotCardFactory.cpp).
|
||||
The Disk II carries the 341-0027-A boot PROM and the 16-sector P6
|
||||
sequencer built in (DiskIICard.cpp:135-150). CFFA, Liron, Workstation and
|
||||
the MC68705 mouse card leave the slot empty without their dump; Grappler+,
|
||||
ThunderClock+ and TransWarp run a synthetic ROM instead. The catalogue
|
||||
behind the ROM Status panel (RomCatalog.h) lists every name in probe
|
||||
order with the size the loader enforces and, where POM2 vouches for a
|
||||
dump, its CRC32; the panel hashes each present file
|
||||
(RomStatus_ImGui.cpp:169-181, 306).
|
||||
sequencer built in (src/DiskIICard.cpp:135-148). CFFA, Liron,
|
||||
Workstation and the MC68705 mouse card leave the slot empty without
|
||||
their dump; Grappler+, ThunderClock+ and TransWarp run a synthetic ROM
|
||||
instead. The catalogue behind the ROM Status panel (src/RomCatalog.h)
|
||||
lists every name in probe order with the size the loader enforces,
|
||||
what a missing dump costs (degraded, card unavailable, unused) and,
|
||||
where POM2 vouches for a dump, its CRC32; the panel hashes each present
|
||||
file (src/RomStatus_ImGui.cpp:169-181, 311).
|
||||
|
||||
Help > Download missing ROMs (RomFetch.cpp:61-141) fetches 18 dumps with
|
||||
curl from raw.githubusercontent.com/Abdess/retrobios and installs a
|
||||
download only when its size, CRC32 and SHA-256 match the catalogue
|
||||
(RomFetch.cpp:398-431); a present local file is re-checked with the same
|
||||
gate (RomFetch.cpp:583-603). Unavailable in the browser build.
|
||||
Help > Download missing ROMs (src/RomFetch.cpp:66-263) fetches 37 dumps
|
||||
with curl from raw.githubusercontent.com/Abdess/retrobios, pinned to
|
||||
HTTPS (src/RomFetch.cpp:694-710). Every entry carries the SHA-256 of the
|
||||
dump POM2 ships in its own roms/ tree, eight a CRC32 as well; a download
|
||||
is installed only when its size, CRC32 and SHA-256 match
|
||||
(src/RomFetch.cpp:591-627). A present file is re-checked with the same
|
||||
gate and, when it is not the catalogued dump, replaced after a copy to
|
||||
roms-replaced/ under the data directory (src/RomFetch.cpp:541-589,
|
||||
795-815, 824-842); a 12 KB apple2p.rom is the one alternate size kept as
|
||||
is. Two entries are members of MAME romsets, read in-process
|
||||
(src/ZipMember.cpp): apple2e_unenh.rom is 342-0135-b.64 then
|
||||
342-0134-a.64 from apple2e.zip, mouse_341-0270-c.bin is 341-0270-c.4b
|
||||
from a2mouse.zip. Downloads land in the per-user data directory's roms/
|
||||
(src/RomFetch.cpp:763-783). Unavailable in the browser build
|
||||
(src/RomFetch.cpp:884-887).
|
||||
|
||||
The floppy mechanical sounds are MAME's samples/floppy set, read from
|
||||
roms/floppy_samples/ as two banks of ten WAV files prefixed 525_ and 35_
|
||||
(FloppySoundDevice.cpp:80-118, MainWindow.cpp:335-348); a missing sample
|
||||
is logged and the drive stays silent.
|
||||
(src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353); a
|
||||
missing sample is logged and the drive stays silent.
|
||||
|
||||
Media named by the code are not firmware and are not listed here: the
|
||||
browser demo boots floppyemu/DIX.po (wasm/shell.html:89) or, when the
|
||||
shell passes no disk, floppyemu/Total Replay v6.1.hdv (main.cpp:281-285);
|
||||
the headless CLI mounts disks_5.4/dos33_master.dsk by default
|
||||
(pom2_headless.cpp:263). Disk, tape and hard-disk images are browsed
|
||||
from disks_5.4/, disks_3.5/, hdv/, floppyemu/, cassettes/ and
|
||||
prodos_folder/ next to the executable.
|
||||
shell passes no disk, floppyemu/Total Replay v6.1.hdv
|
||||
(src/main.cpp:282-286); the headless CLI mounts
|
||||
disks_5.4/dos33_master.dsk by default (src/pom2_headless.cpp:262-264).
|
||||
Disk, tape and hard-disk images are browsed from disks_5.4/, disks_3.5/,
|
||||
hdv/, floppyemu/, cassettes/ and prodos_folder/ next to the executable.
|
||||
|
||||
files:
|
||||
- name: "apple2o.rom"
|
||||
@@ -89,7 +103,7 @@ files:
|
||||
sha256: "68d9db6bb4c305d40c3fa89fa0f2d7b7f71516a9431e3138859f23bc5bddb2d1"
|
||||
sha1: "78008be557f643e956a106121bcc182c0fb9ea6d"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SystemProfile.cpp:38, src/Memory.cpp:174-224, src/RomFetch.cpp:61-63"
|
||||
source_ref: "src/SystemProfile.cpp:38, src/Memory.cpp:173-236, src/RomFetch.cpp:70-73"
|
||||
note: "First candidate of the Apple ][ Original profile; apple2.rom is probed next."
|
||||
- name: "apple2.rom"
|
||||
path: "roms/apple2.rom"
|
||||
@@ -100,18 +114,20 @@ files:
|
||||
sha256: "fc3e9d41e9428534a883df5aa10eb55b73ea53d2fcbb3ee4f39bed1b07a82905"
|
||||
sha1: "33a24f5489ba9195b44be77d9afb2252594cb5c7"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SystemProfile.cpp:38, src/SystemProfile.cpp:54, src/MainWindow_Slots.cpp:1470-1477, src/RomFetch.cpp:65-67"
|
||||
source_ref: "src/SystemProfile.cpp:38, src/SystemProfile.cpp:54, src/ProfileSwitch.cpp:121-128, src/RomFetch.cpp:74-81"
|
||||
note: "Probed after the profile image for the ][ and ][+ profiles. When it resolves in place of that image the loader logs that the ROM identity may not match the machine."
|
||||
- name: "apple2p.rom"
|
||||
path: "roms/apple2p.rom"
|
||||
description: "Apple ][+ Autostart monitor and Applesoft, 4 KB pad then $C000-$FFFF"
|
||||
required: false
|
||||
priority: 1
|
||||
size: 20480
|
||||
size_options: [12288, 20480]
|
||||
sha256: "92c4bef609920842ea472d21b661a0d35dbda6cd90963b8b734a205e22d84108"
|
||||
sha1: "29a53f3bb158b160433369e8e4a1d7cd5bf68ac6"
|
||||
validation: [size]
|
||||
source_ref: "src/SystemProfile.cpp:54, src/Memory.cpp:209-219, src/RomFetch.cpp:69-79"
|
||||
note: "First candidate of the ][+ profile and of the first-run fallback (MainWindow.cpp:234). The loader drops the leading 4 KB of a 20 KB dump. The fetcher builds a 12 KB image from the six 2 KB chips of the MAME apple2p set and accepts either size as present; it carries no digest for this file."
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SystemProfile.cpp:54, src/Memory.cpp:221-231, src/RomFetch.cpp:82-94, src/RomFetch.cpp:824-835"
|
||||
note: "First candidate of the ][+ profile and of the first-run fallback (src/MainWindow.cpp:237-241). The loader drops the leading 4 KB of the 20 KB dump. The fetch gate names that dump; a 12 KB six-chip image already on disk is kept as present without a digest check."
|
||||
- name: "apple2e.rom"
|
||||
path: "roms/apple2e.rom"
|
||||
description: "Apple //e Enhanced firmware, 32 KB dump with the 16 KB firmware in the upper half"
|
||||
@@ -121,7 +137,7 @@ files:
|
||||
sha256: "c17bc38c75ba96c33a30c688a1efd60144811073423533fe7f8453cdd9457aab"
|
||||
sha1: "d756eba578a6c5a4807510dfee30ee585c63755e"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SystemProfile.cpp:101, src/SystemProfile.cpp:239-251, src/Memory.cpp:189-201, src/Memory.cpp:220-222, src/MainWindow.cpp:223-226, src/RomFetch.cpp:80-83"
|
||||
source_ref: "src/SystemProfile.cpp:101, src/SystemProfile.cpp:241-253, src/Memory.cpp:201-213, src/Memory.cpp:232-234, src/MainWindow.cpp:228-231, src/RomFetch.cpp:95-98"
|
||||
note: "Sole candidate of the //e Enhanced profiles, NTSC and PAL, PAL being the default machine. Also the last fallback of the //e Unenhanced chain."
|
||||
- name: "apple2e_unenh.rom"
|
||||
path: "roms/apple2e_unenh.rom"
|
||||
@@ -133,8 +149,8 @@ files:
|
||||
sha256: "1fb812584c6633fa16b77b20915986ed1178d1e6fc07a647f7ee8d4e6ab9d40b"
|
||||
sha1: "61fa9254628e5bb7236fb474006116d67684d747"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SystemProfile.cpp:78-79, src/SystemProfile.cpp:265-277, src/RomFetch.cpp:84-87"
|
||||
note: "First candidate of the //e Unenhanced profiles; 342-0135-b.64.rom is probed second, apple2e.rom third."
|
||||
source_ref: "src/SystemProfile.cpp:78-79, src/SystemProfile.cpp:267-279, src/RomFetch.cpp:51-56, src/RomFetch.cpp:99-107"
|
||||
note: "First candidate of the //e Unenhanced profiles; 342-0135-b.64.rom is probed second, apple2e.rom third. The fetcher assembles it from the two 8 KB chips of the MAME apple2e set, 342-0135-b.64 then 342-0134-a.64."
|
||||
- name: "apple2c-32Kv0.rom"
|
||||
path: "roms/apple2c-32Kv0.rom"
|
||||
description: "Apple //c two-bank firmware, bank 0 in the lower 16 KB"
|
||||
@@ -142,8 +158,10 @@ files:
|
||||
priority: 1
|
||||
size: 32768
|
||||
crc32: "323952d1"
|
||||
sha256: "d65bbf97058b9cdce8eaebf74124048e3b4e42dca1bd42be316747bbc27dc124"
|
||||
sha1: "fb0d644aafaff1352d0816bc8494f6c9913809d5"
|
||||
source_ref: "src/SystemProfile.cpp:142-143, src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:432-438, src/Memory.cpp:189-201, src/Memory.cpp:220-222"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SystemProfile.cpp:142-143, src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:429-434, src/Memory.cpp:201-213, src/Memory.cpp:232-234, src/RomFetch.cpp:108-111"
|
||||
note: "First candidate of the //c and //c PAL profiles, third of the //c Plus chain. Bank 0 is mapped at reset, the $C028 ROMBANK switch selects the other. Identical to 3420033a.256 with its first 256 bytes zeroed."
|
||||
- name: "apple2c-16K.rom"
|
||||
path: "roms/apple2c-16K.rom"
|
||||
@@ -152,8 +170,10 @@ files:
|
||||
priority: 2
|
||||
size: 16384
|
||||
crc32: "f0edaa1b"
|
||||
sha256: "3ca1c8a27bf111aa0f4dc9372c5e6404457adb9a458ce32ae4b03a7e989e0c76"
|
||||
sha1: "1a9b8aca5e32bb702ddb7791daddd60a89655729"
|
||||
source_ref: "src/SystemProfile.cpp:142-143, src/Memory.cpp:207-208"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SystemProfile.cpp:142-143, src/Memory.cpp:219-220, src/RomFetch.cpp:112-115"
|
||||
note: "Second candidate of the //c chain, loaded at $C000."
|
||||
- name: "3420033a.256"
|
||||
path: "roms/3420033a.256"
|
||||
@@ -162,8 +182,10 @@ files:
|
||||
priority: 3
|
||||
size: 32768
|
||||
crc32: "c8b979b3"
|
||||
sha256: "678d5c9d374664d2ee94ba9c9564d26a917b31116b07c46df30a3e82c640885b"
|
||||
sha1: "10767e96cc17bad0970afda3a4146564e6272ba1"
|
||||
source_ref: "src/SystemProfile.cpp:142-143"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SystemProfile.cpp:142-143, src/RomFetch.cpp:116-119"
|
||||
note: "Third candidate of the //c chain."
|
||||
- name: "apple2cp.rom"
|
||||
path: "roms/apple2cp.rom"
|
||||
@@ -173,8 +195,10 @@ files:
|
||||
aliases: ["apple2c-plus.rom"]
|
||||
size: 32768
|
||||
crc32: "0b996420"
|
||||
sha256: "5a62070f6a0b07784681d4df4bf2ce88b2809bec0cbaa65fcb963e804ed60374"
|
||||
sha1: "1a27ae26966bbafd825d08ad1a24742d3e33557c"
|
||||
source_ref: "src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:432-438"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:429-434, src/RomFetch.cpp:120-123"
|
||||
note: "First candidate of the //c Plus profile; apple2c-plus.rom is probed second and apple2c-32Kv0.rom third."
|
||||
- name: "apple2_char.rom"
|
||||
path: "roms/apple2_char.rom"
|
||||
@@ -185,7 +209,7 @@ files:
|
||||
sha256: "08f5d22230481019844492dde0a29a018cb193712a9e4a43770a3870608f28de"
|
||||
sha1: "f9d312f128c9557d9d6ac03bfad6c3ddf83e5659"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SystemProfile.cpp:39, src/SystemProfile.cpp:55, src/CharRomCatalog.cpp:42-43, src/RomFetch.cpp:90-93, src/Memory.cpp:313-345"
|
||||
source_ref: "src/SystemProfile.cpp:39, src/SystemProfile.cpp:55, src/CharRomCatalog.cpp:42-43, src/RomFetch.cpp:126-129, src/Memory.cpp:324-357"
|
||||
note: "Sole candidate of the ][ and ][+ profiles and the last fallback of every //e-class chain."
|
||||
- name: "apple2e_char.rom"
|
||||
path: "roms/apple2e_char.rom"
|
||||
@@ -197,8 +221,8 @@ files:
|
||||
sha256: "52c3b87900ac939f6525402cab1ccfd8f8259290fc6df54da48fb4c98ae3ed0f"
|
||||
sha1: "b2b5d87f52693817fc747df087a4aa1ddcdb1f10"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SystemProfile.cpp:105, src/SystemProfile.cpp:144, src/SystemProfile.cpp:206, src/CharRomCatalog.cpp:48-49, src/RomFetch.cpp:94-97, src/Memory.cpp:313-345"
|
||||
note: "First candidate of the //e Enhanced, //c and //c Plus profiles; the same dump answers to apple2e_char_us.rom in the locale picker."
|
||||
source_ref: "src/SystemProfile.cpp:105, src/SystemProfile.cpp:144, src/SystemProfile.cpp:206, src/CharRomCatalog.cpp:48-49, src/RomFetch.cpp:130-142, src/Memory.cpp:324-357"
|
||||
note: "First candidate of the //e Enhanced, //c and //c Plus profiles; the same dump answers to apple2e_char_us.rom in the locale picker, and the fetcher writes both names."
|
||||
- name: "apple2e_char_us_unenh.rom"
|
||||
path: "roms/apple2e_char_us_unenh.rom"
|
||||
description: "Apple //e Unenhanced character generator 342-0133-A, 4 KB"
|
||||
@@ -209,8 +233,8 @@ files:
|
||||
sha256: "ed5bdd4afa509134e85f1d020685af7ff50e279226eb869a17825b471cc1634c"
|
||||
sha1: "58ad0008df72896a18601e090ee0d58155ffa5be"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SystemProfile.cpp:83-84, src/CharRomCatalog.cpp:50-51, src/RomFetch.cpp:98-101, src/Memory.cpp:313-345"
|
||||
note: "The //e Unenhanced profile probes apple2e_char_2k.rom then 341-0265-a.chr.rom then apple2_char.rom; the same dump ships under both names."
|
||||
source_ref: "src/SystemProfile.cpp:83-84, src/CharRomCatalog.cpp:50-51, src/RomFetch.cpp:143-150, src/Memory.cpp:324-357"
|
||||
note: "The //e Unenhanced profile probes apple2e_char_2k.rom then 341-0265-a.chr.rom then apple2_char.rom; the same dump ships under both names and the fetcher writes both."
|
||||
- name: "apple2e_char_fr.rom"
|
||||
path: "roms/apple2e_char_fr.rom"
|
||||
description: "Apple //e French character generator, 4 KB"
|
||||
@@ -218,19 +242,21 @@ files:
|
||||
aliases: ["apple2e_char_frca_unenh.rom"]
|
||||
size: 4096
|
||||
crc32: "ab0be706"
|
||||
sha256: "52d8e46b487a617c288caaf12ab7ad6cb81030b6ab92419f9a2e19c43d765566"
|
||||
sha1: "42afb02aab4146f781ac52803a2733adc4da834e"
|
||||
validation: [size]
|
||||
source_ref: "src/CharRomCatalog.cpp:52-53, src/CharRomCatalog.cpp:56-57, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345"
|
||||
note: "Locale picker entry. The same dump is also listed as the FR Canadian unenhanced set 341-0168-A."
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/CharRomCatalog.cpp:52-53, src/CharRomCatalog.cpp:56-57, src/CharRomCatalog.cpp:151-166, src/RomFetch.cpp:153-156, src/Memory.cpp:324-357"
|
||||
note: "Locale picker entry. The same dump is also listed as the FR Canadian unenhanced set 341-0168-A, a name the fetcher does not serve."
|
||||
- name: "apple2e_char_frca.rom"
|
||||
path: "roms/apple2e_char_frca.rom"
|
||||
description: "Apple //e French Canadian Enhanced character generator, 4 KB"
|
||||
required: false
|
||||
size: 4096
|
||||
crc32: "2c8fc403"
|
||||
sha256: "56479cbec4767651c62a4d0f61e6ed103395216f2b86eddba74d85495dd71cc4"
|
||||
sha1: "4043e0808af8be096660827445e41149d16c5c85"
|
||||
validation: [size]
|
||||
source_ref: "src/CharRomCatalog.cpp:54-55, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/CharRomCatalog.cpp:54-55, src/CharRomCatalog.cpp:151-166, src/RomFetch.cpp:157-160, src/Memory.cpp:324-357"
|
||||
note: "Locale picker entry; equals the low bank of 342-0274-a.e9."
|
||||
- name: "apple2e_char_uk.rom"
|
||||
path: "roms/apple2e_char_uk.rom"
|
||||
@@ -238,9 +264,10 @@ files:
|
||||
required: false
|
||||
size: 4096
|
||||
crc32: "dda11653"
|
||||
sha256: "d55bd5391485cd78c68c71408f09bd088e82a73d179a0a25820067a0c1554acd"
|
||||
sha1: "d19c2e2cc12b27d77edc403d5d0701186a4ed988"
|
||||
validation: [size]
|
||||
source_ref: "src/CharRomCatalog.cpp:58-59, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/CharRomCatalog.cpp:58-59, src/CharRomCatalog.cpp:151-166, src/RomFetch.cpp:161-164, src/Memory.cpp:324-357"
|
||||
note: "Locale picker entry."
|
||||
- name: "apple2e_char_uk_unenh.rom"
|
||||
path: "roms/apple2e_char_uk_unenh.rom"
|
||||
@@ -248,9 +275,10 @@ files:
|
||||
required: false
|
||||
size: 4096
|
||||
crc32: "7a9a91ef"
|
||||
sha256: "f2199fbfb473e98a8c3fb7e7c3312faaf76b4b010b02c655b662e5f87dc997f3"
|
||||
sha1: "6ca9767e0f47f642d1caab6ed41b8f58c58bb9eb"
|
||||
validation: [size]
|
||||
source_ref: "src/CharRomCatalog.cpp:60-61, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/CharRomCatalog.cpp:60-61, src/CharRomCatalog.cpp:151-166, src/RomFetch.cpp:165-168, src/Memory.cpp:324-357"
|
||||
note: "Locale picker entry."
|
||||
- name: "apple2e_char_de.rom"
|
||||
path: "roms/apple2e_char_de.rom"
|
||||
@@ -258,9 +286,10 @@ files:
|
||||
required: false
|
||||
size: 4096
|
||||
crc32: "0d72f153"
|
||||
sha256: "b92576b4fa994384501078ff99963b53cfa98eff4bb641eb61649d484a469315"
|
||||
sha1: "a7fd75ae8611572b0b4d99ad54562014b879dbbf"
|
||||
validation: [size]
|
||||
source_ref: "src/CharRomCatalog.cpp:62-63, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/CharRomCatalog.cpp:62-63, src/CharRomCatalog.cpp:151-166, src/RomFetch.cpp:169-172, src/Memory.cpp:324-357"
|
||||
note: "Locale picker entry."
|
||||
- name: "apple2e_char_de_improved.rom"
|
||||
path: "roms/apple2e_char_de_improved.rom"
|
||||
@@ -268,9 +297,10 @@ files:
|
||||
required: false
|
||||
size: 4096
|
||||
crc32: "d345d332"
|
||||
sha256: "0e32ab131e3932fc61c0a5f0f5509b4c37ab8db6239027f5955d47feba56d39f"
|
||||
sha1: "12ce44f02bd28c350e2b0723d94ab8d9066f8798"
|
||||
validation: [size]
|
||||
source_ref: "src/CharRomCatalog.cpp:64-65, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/CharRomCatalog.cpp:64-65, src/CharRomCatalog.cpp:151-166, src/RomFetch.cpp:173-176, src/Memory.cpp:324-357"
|
||||
note: "Locale picker entry."
|
||||
- name: "342-0274-a.e9"
|
||||
path: "roms/342-0274-a.e9"
|
||||
@@ -278,9 +308,10 @@ files:
|
||||
required: false
|
||||
size: 8192
|
||||
crc32: "8f342081"
|
||||
sha256: "d4d29771658372c6ab5d18ff3bdab6b3b2b02b8de30ed6b021efb8a415192432"
|
||||
sha1: "c81c1bbf237e70f8c3e5eef3c8fd5bd9b9f54d1e"
|
||||
validation: [size]
|
||||
source_ref: "src/CharRomCatalog.cpp:73-76, src/CharRomCatalog.cpp:144-149, src/Memory.cpp:313-345"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/CharRomCatalog.cpp:73-76, src/CharRomCatalog.cpp:144-149, src/RomFetch.cpp:177-182, src/RomStatus_ImGui.cpp:250, src/Memory.cpp:324-357"
|
||||
note: "Locale picker entries select bank 0 or bank 1; loaded whole, both banks stay live and annunciator 2 picks the set."
|
||||
- name: "apple2e_char_ft_blockascii.rom"
|
||||
path: "roms/apple2e_char_ft_blockascii.rom"
|
||||
@@ -288,9 +319,10 @@ files:
|
||||
required: false
|
||||
size: 8192
|
||||
crc32: "1eae3944"
|
||||
sha256: "c69c8e1eb26923c5df03d3507fdf86c5f768283a924a5fffdd80377cf2339321"
|
||||
sha1: "f79815457437e50404f4f537d8aabe34bff3a220"
|
||||
validation: [size]
|
||||
source_ref: "src/CharRomCatalog.cpp:77-78, src/Memory.cpp:313-345"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/CharRomCatalog.cpp:77-78, src/RomFetch.cpp:183-187, src/RomStatus_ImGui.cpp:250, src/Memory.cpp:324-357"
|
||||
note: "Locale picker entry loaded dual-bank: annunciator 2 flips between the text set and the block glyphs."
|
||||
- name: "Videx Lower Case Chip ROM.bin"
|
||||
path: "roms/Videx Lower Case Chip ROM.bin"
|
||||
@@ -298,9 +330,10 @@ files:
|
||||
required: false
|
||||
size: 2048
|
||||
crc32: "00f68076"
|
||||
sha256: "6a516bcd96382597af7a498fb1da7547490c830db0f9d22d541fb065b9cd048b"
|
||||
sha1: "447874fe0850c8add3fd5b13fa98f6648fe6f999"
|
||||
validation: [size, crc32]
|
||||
source_ref: "src/CharRomCatalog.cpp:44-45, src/RomCatalog.h:143-148, src/RomStatus_ImGui.cpp:306"
|
||||
validation: [size, crc32, sha256]
|
||||
source_ref: "src/CharRomCatalog.cpp:44-45, src/RomCatalog.h:166-172, src/RomFetch.cpp:188-192, src/RomStatus_ImGui.cpp:311"
|
||||
note: "Locale picker entry for the ][ and ][+ profiles; without it the picker keeps the stock uppercase set."
|
||||
- name: "disk2.rom"
|
||||
path: "roms/disk2.rom"
|
||||
@@ -311,7 +344,7 @@ files:
|
||||
sha256: "de1e3e035878bab43d0af8fe38f5839c527e9548647036598ee6fe7ec74d2a7d"
|
||||
sha1: "d4181c9f046aafc3fb326b381baac809d9e38d16"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:135-140, src/DiskIICard.cpp:150-172, src/RomFetch.cpp:104-107"
|
||||
source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:135-140, src/DiskIICard.cpp:150-173, src/RomFetch.cpp:195-198"
|
||||
note: "The card carries the same PROM built in; the file replaces it when present."
|
||||
- name: "diskii_p6.rom"
|
||||
path: "roms/diskii_p6.rom"
|
||||
@@ -322,7 +355,7 @@ files:
|
||||
sha256: "e5e30615040567c1e7a2d21599681f8dac820edbdcda177b816a64d74b3a12f2"
|
||||
sha1: "bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:141-148, src/DiskIICard.cpp:175-197, src/DiskIICard.cpp:245-262, src/RomFetch.cpp:108-111"
|
||||
source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:141-148, src/DiskIICard.cpp:175-201, src/DiskIICard.cpp:250-262, src/RomFetch.cpp:199-202"
|
||||
note: "Loading the file switches the bit-level LSS path on for every image; without it the legacy 32-cycle nibble gate serves non-WOZ images and the built-in PROM serves WOZ images."
|
||||
- name: "disk2_13.rom"
|
||||
path: "roms/disk2_13.rom"
|
||||
@@ -332,8 +365,8 @@ files:
|
||||
sha256: "2d2599521fc5763d4e8c308c2ee7c5c4d5c93785b8fb9a4f7d0381dfd5eb60b6"
|
||||
sha1: "afd060e6f35faf3bb0146fa889fc787adf56330a"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:203-220, src/RomCatalog.h:79-81, src/RomFetch.cpp:112-115"
|
||||
note: "13-sector disks mount but cannot boot without it."
|
||||
source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:203-220, src/DiskIICard.cpp:263-287, src/RomCatalog.h:90-93, src/RomFetch.cpp:203-206"
|
||||
note: "A mounted 13-sector disk switches the card to this PROM at $Cn00 and forces the bit-level LSS; without it the disk mounts but cannot boot."
|
||||
- name: "diskii_p6_13.rom"
|
||||
path: "roms/diskii_p6_13.rom"
|
||||
description: "Disk II 13-sector P6 logic state sequencer PROM 341-0010"
|
||||
@@ -342,17 +375,18 @@ files:
|
||||
sha256: "383c55f5333cbfde39dd41528186631e5aca2eddfec30716344f03b6a4d44655"
|
||||
sha1: "e3d6d1c30653572b49ecc2dc54ce073978411a04"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:222-239, src/RomCatalog.h:82-84, src/RomFetch.cpp:116-119"
|
||||
note: "Paired with disk2_13.rom; the card never switches to the 13-sector pair without both."
|
||||
source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:222-239, src/DiskIICard.cpp:272-282, src/RomCatalog.h:94-97, src/RomFetch.cpp:207-210"
|
||||
note: "Read into the card and not consumed: the 13-sector switch depends on disk2_13.rom alone, and the sequencer keeps running the 16-sector P6 on 13-sector disks."
|
||||
- name: "cffa20eec02.bin"
|
||||
path: "roms/cffa20eec02.bin"
|
||||
description: "CFFA 2.0 firmware, 65C02 build"
|
||||
required: false
|
||||
size: 4096
|
||||
crc32: "fb3726f8"
|
||||
sha256: "a08cb25ad80054649ee5fcb620e01ed56f025acb28c753bc28dd187a1d149cab"
|
||||
sha1: "080ff88f19de22328e162954ee2b51ee65f9d5cd"
|
||||
validation: [size, crc32]
|
||||
source_ref: "src/SlotCardFactory.cpp:115-139, src/CffaCard.cpp:26-40, src/RomCatalog.h:103-106"
|
||||
validation: [size, crc32, sha256]
|
||||
source_ref: "src/SlotCardFactory.cpp:115-139, src/CffaCard.cpp:26-40, src/RomCatalog.h:119-123, src/RomFetch.cpp:221-224"
|
||||
note: "Preferred when the CPU is a 65C02, the 6502 build is the fallback; the slot stays empty when neither is found."
|
||||
- name: "cffa20ee02.bin"
|
||||
path: "roms/cffa20ee02.bin"
|
||||
@@ -363,7 +397,7 @@ files:
|
||||
sha256: "3d7f6918f9af3828f5a6299299a817df0d354ee62e547bc0238755de66162a88"
|
||||
sha1: "d600692ed9626668233a22a48236af639410cb7b"
|
||||
validation: [size, crc32, sha256]
|
||||
source_ref: "src/SlotCardFactory.cpp:115-139, src/CffaCard.cpp:26-40, src/RomCatalog.h:107-110, src/RomFetch.cpp:122-126"
|
||||
source_ref: "src/SlotCardFactory.cpp:115-139, src/CffaCard.cpp:26-40, src/RomCatalog.h:124-129, src/RomFetch.cpp:217-220"
|
||||
note: "Preferred on an NMOS 6502, fallback for a 65C02."
|
||||
- name: "mouse_341-0270-c.bin"
|
||||
path: "roms/mouse_341-0270-c.bin"
|
||||
@@ -373,8 +407,8 @@ files:
|
||||
sha256: "7f8e50c0e8a409991264201f9300f109b872b68e09c43f3e6c26af35fd8b89af"
|
||||
sha1: "3a9d881a8a8d30f55b9719aceebbcf717f829d6f"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SlotCardFactory.cpp:51-83, src/SlotCardFactory.cpp:232-247, src/MouseCard.cpp:115-149, src/MouseCardAppleWin.cpp:87-100, src/RomFetch.cpp:127-130"
|
||||
note: "Needed by both mouse cards: the MC68705 card also needs the MCU ROM, the AppleWin HLE card needs this one only."
|
||||
source_ref: "src/SlotCardFactory.cpp:51-83, src/SlotCardFactory.cpp:232-247, src/MouseCard.cpp:119-153, src/MouseCardAppleWin.cpp:87-100, src/RomFetch.cpp:241-246"
|
||||
note: "Needed by both mouse cards: the MC68705 card also needs the MCU ROM, the AppleWin HLE card needs this one only. The fetcher extracts it from the MAME a2mouse set as 341-0270-c.4b."
|
||||
- name: "mouse_341-0269.bin"
|
||||
path: "roms/mouse_341-0269.bin"
|
||||
description: "AppleMouse II card MC68705P3 MCU mask ROM 341-0269"
|
||||
@@ -383,7 +417,7 @@ files:
|
||||
sha256: "66480812edad5f6bd70349949cf8bd8fbafee2dc8bf396541d4e78bac2629ec0"
|
||||
sha1: "3a2baa6648efe4456d3ec3721216e57c64f7acfc"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SlotCardFactory.cpp:51-83, src/MouseCard.cpp:146-149, src/M68705P3.cpp:85-104, src/RomFetch.cpp:131-134"
|
||||
source_ref: "src/SlotCardFactory.cpp:51-83, src/MouseCard.cpp:150-153, src/M68705P3.cpp:85-104, src/RomFetch.cpp:237-240"
|
||||
note: "The MC68705 mouse card leaves its slot empty without it."
|
||||
- name: "grappler_plus.bin"
|
||||
path: "roms/grappler_plus.bin"
|
||||
@@ -394,7 +428,7 @@ files:
|
||||
sha256: "9be4dea7722ad8928aee64c2ae708f365a6d66c50a63bff8a3c1a4e7596d44c6"
|
||||
sha1: "829072cc19a58b24d36c2af972abaad6f9ba35d9"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SlotCardFactory.cpp:147-166, src/GrapplerCard.cpp:29-52, src/RomCatalog.h:113-118, src/RomFetch.cpp:135-138"
|
||||
source_ref: "src/SlotCardFactory.cpp:147-166, src/GrapplerCard.cpp:29-52, src/RomCatalog.h:132-138, src/RomFetch.cpp:233-236"
|
||||
note: "Without it the card runs a stub ROM: PR#n prints, the graphics dump commands are absent."
|
||||
- name: "ae_transwarp_1.4.bin"
|
||||
path: "roms/ae_transwarp_1.4.bin"
|
||||
@@ -403,28 +437,32 @@ files:
|
||||
aliases: ["ae transwarp rom v1.4.bin"]
|
||||
size: 4096
|
||||
crc32: "afe37f55"
|
||||
sha256: "bcbb1a3bab083b0c2988b502f5e024ff4346fab5dbf09276b32724693bcbd0e9"
|
||||
sha1: "7b75534e7895e04859a0b1337801c6eeb0cef52a"
|
||||
validation: [size, crc32]
|
||||
source_ref: "src/TranswarpCard.h:166, src/TranswarpCard.cpp:200-218, src/RomCatalog.h:119-125"
|
||||
note: "Not shipped by POM2. The card accelerates without it and only shadows $F000-$FFFF with the speed-corrected monitor when the dump is present."
|
||||
validation: [size, crc32, sha256]
|
||||
source_ref: "src/TranswarpCard.h:167, src/TranswarpCard.cpp:213-231, src/RomCatalog.h:139-146, src/RomFetch.cpp:229-232"
|
||||
note: "Shipped in roms/ since v0.9.3. The card accelerates without it and only shadows $F000-$FFFF with the speed-corrected monitor when the dump is present; the shadow steps aside for a main ROM reload and covers the new firmware."
|
||||
- name: "thunderclock_u9_v1.3.bin"
|
||||
path: "roms/thunderclock_u9_v1.3.bin"
|
||||
description: "Thunderware ThunderClock+ slot ROM rev 1.3, U9"
|
||||
required: false
|
||||
aliases: ["thunderclock_u9.bin", "thunderclock.rom", "Thunderware_REV_1.3_ROM_U9.bin"]
|
||||
size: 2048
|
||||
size_options: [256, 2048]
|
||||
sha256: "ecca793179427fdd193373080bf23e49a95743bd7b5e0b218c747663938b6c03"
|
||||
sha1: "60f434f5325899d7ea257a6e56e6f53eae65146a"
|
||||
validation: [size]
|
||||
source_ref: "src/ClockCard.cpp:469-524, src/RomCatalog.h:150-160"
|
||||
note: "A 2 KB dump supplies the $C800 expansion ROM as well. The first four even bytes must read $08, $28, $58, $70, the ProDOS clock signature, or the synthetic ROM stays in place."
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/ClockCard.cpp:469-530, src/RomCatalog.h:174-184, src/RomFetch.cpp:225-228"
|
||||
note: "The card loads a 256-byte slot ROM or the 2 KB chip, which supplies the $C800 expansion ROM as well; the fetch gate names the 2 KB dump and replaces a 256-byte file. The first four even bytes must read $08, $28, $58, $70, the ProDOS clock signature, or the synthetic ROM stays in place."
|
||||
- name: "liron.rom"
|
||||
path: "roms/liron.rom"
|
||||
description: "Apple Liron SmartPort controller firmware, 4 KB"
|
||||
required: false
|
||||
size: 4096
|
||||
sha256: "42c1ae66c6bec932669239599eb8989a5364752d56fa5c8997bb23d8dfc0b657"
|
||||
sha1: "fa94ecc2aa23f336f7da9e18bc8f4a6cfbb4ea60"
|
||||
validation: [size]
|
||||
source_ref: "src/SlotCardFactory.cpp:194-220, src/LironCard.cpp:61-85, src/SmartPortCard.cpp:80-97, src/RomCatalog.h:87-90"
|
||||
validation: [size, sha256]
|
||||
source_ref: "src/SlotCardFactory.cpp:194-220, src/LironCard.cpp:61-85, src/SmartPortCard.cpp:80-97, src/RomCatalog.h:100-104, src/RomFetch.cpp:213-216"
|
||||
note: "The Liron card refuses to plug without it. The SmartPort 3.5 card loads it on machines with physical slots and otherwise presents a synthetic identity."
|
||||
- name: "341-0358-A.bin"
|
||||
path: "roms/341-0358-A.bin"
|
||||
@@ -433,9 +471,10 @@ files:
|
||||
aliases: ["341-0358-a.bin"]
|
||||
size: 65536
|
||||
crc32: "63819dcb"
|
||||
sha256: "ce785b913b9fcec6db0fab89b2d94f07fcd07664a822531dcbba3a5ca70ca3bf"
|
||||
sha1: "59c8e8c88bac5c31ada1306b412edfcf5912a720"
|
||||
validation: [size, crc32]
|
||||
source_ref: "src/SlotCardFactory.cpp:169-192, src/WorkstationCard.cpp:60-74, src/RomCatalog.h:133-142"
|
||||
validation: [size, crc32, sha256]
|
||||
source_ref: "src/SlotCardFactory.cpp:169-192, src/WorkstationCard.cpp:60-74, src/RomCatalog.h:156-164, src/RomFetch.cpp:253-256"
|
||||
note: "The Workstation card leaves its slot empty without it; the card runs its own 65C02 on the upper 32 KB."
|
||||
- name: "341-0438-a.bin"
|
||||
path: "roms/341-0438-a.bin"
|
||||
@@ -443,9 +482,10 @@ files:
|
||||
required: false
|
||||
size: 32768
|
||||
crc32: "c73ff25b"
|
||||
sha256: "084587835c1d2c92f5708a9745fdd43ba32136fcdb861a12ee7d690de22dc172"
|
||||
sha1: "440c3f84176c7b9f542da0b6ddf4fb13ec326c46"
|
||||
validation: [size, crc32, sha256]
|
||||
source_ref: "src/RomCatalog.h:91-96, src/RomStatus_ImGui.cpp:169-181, src/RomFetch.cpp:139-141"
|
||||
source_ref: "src/RomCatalog.h:105-111, src/RomStatus_ImGui.cpp:169-181, src/RomFetch.cpp:249-252"
|
||||
note: "No card reads it; the ROM Status panel and the fetch gate check it."
|
||||
- name: "342-0326-a.f12"
|
||||
path: "roms/342-0326-a.f12"
|
||||
@@ -453,10 +493,11 @@ files:
|
||||
required: false
|
||||
size: 2048
|
||||
crc32: "f04970a9"
|
||||
sha256: "4ae7ff693a486b155a70a8833047b3d4363464dace6760ed64bfb68db233ed4b"
|
||||
sha1: "806a602195c18ffec637c03b6bb3405188b0dc1e"
|
||||
validation: [size, crc32]
|
||||
source_ref: "src/RomCatalog.h:97-102, src/RomStatus_ImGui.cpp:169-181, src/RomStatus_ImGui.cpp:306"
|
||||
note: "Host keys are mapped directly, no keyboard decode ROM is emulated; the ROM Status panel checks the file only."
|
||||
validation: [size, crc32, sha256]
|
||||
source_ref: "src/RomCatalog.h:112-118, src/RomStatus_ImGui.cpp:169-181, src/RomStatus_ImGui.cpp:311, src/RomFetch.cpp:257-260"
|
||||
note: "Host keys are mapped directly, no keyboard decode ROM is emulated; the ROM Status panel and the fetch gate check the file only."
|
||||
- name: "525_seek_2ms.wav"
|
||||
path: "roms/floppy_samples/525_seek_2ms.wav"
|
||||
description: "MAME floppy sample, 5.25 inch drive, 2 ms head seek"
|
||||
@@ -464,7 +505,7 @@ files:
|
||||
required: false
|
||||
size: 5336
|
||||
sha1: "2d046a880476218685ed738fe8c8381962afd74a"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
note: "One of ten samples per drive bank; a missing sample is logged and that sound stays silent."
|
||||
- name: "525_seek_6ms.wav"
|
||||
path: "roms/floppy_samples/525_seek_6ms.wav"
|
||||
@@ -473,7 +514,7 @@ files:
|
||||
required: false
|
||||
size: 14860
|
||||
sha1: "6f698055fa6e9da6c5ae3fd6fb05de76b92a45a9"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "525_seek_12ms.wav"
|
||||
path: "roms/floppy_samples/525_seek_12ms.wav"
|
||||
description: "MAME floppy sample, 5.25 inch drive, 12 ms head seek"
|
||||
@@ -481,7 +522,7 @@ files:
|
||||
required: false
|
||||
size: 22764
|
||||
sha1: "fbbbb5e8724c076d194e66a4443d299d54a8efd6"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "525_seek_20ms.wav"
|
||||
path: "roms/floppy_samples/525_seek_20ms.wav"
|
||||
description: "MAME floppy sample, 5.25 inch drive, 20 ms head seek"
|
||||
@@ -489,7 +530,7 @@ files:
|
||||
required: false
|
||||
size: 30060
|
||||
sha1: "b6cd14944454c743861196edb4fcab1cc9b586d4"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "525_spin_empty.wav"
|
||||
path: "roms/floppy_samples/525_spin_empty.wav"
|
||||
description: "MAME floppy sample, 5.25 inch drive, motor running, no disk"
|
||||
@@ -497,7 +538,7 @@ files:
|
||||
required: false
|
||||
size: 8864
|
||||
sha1: "4b13701d9a7f8ab0f0827f17ba80b5c32b4e0fa7"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "525_spin_loaded.wav"
|
||||
path: "roms/floppy_samples/525_spin_loaded.wav"
|
||||
description: "MAME floppy sample, 5.25 inch drive, motor running, disk loaded"
|
||||
@@ -505,7 +546,7 @@ files:
|
||||
required: false
|
||||
size: 17708
|
||||
sha1: "875f90538a3ff5db863ad4c384e1808841ddea9b"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "525_spin_start_empty.wav"
|
||||
path: "roms/floppy_samples/525_spin_start_empty.wav"
|
||||
description: "MAME floppy sample, 5.25 inch drive, motor start, no disk"
|
||||
@@ -513,7 +554,7 @@ files:
|
||||
required: false
|
||||
size: 11180
|
||||
sha1: "b87d89c4b46c36dd78dec3dc5170ca61501e7cd9"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "525_spin_start_loaded.wav"
|
||||
path: "roms/floppy_samples/525_spin_start_loaded.wav"
|
||||
description: "MAME floppy sample, 5.25 inch drive, motor start, disk loaded"
|
||||
@@ -521,7 +562,7 @@ files:
|
||||
required: false
|
||||
size: 17708
|
||||
sha1: "510476098848e2b5cdfe9f1608f8dfa3207fe9b4"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "525_spin_end.wav"
|
||||
path: "roms/floppy_samples/525_spin_end.wav"
|
||||
description: "MAME floppy sample, 5.25 inch drive, motor stop"
|
||||
@@ -529,7 +570,7 @@ files:
|
||||
required: false
|
||||
size: 8864
|
||||
sha1: "f8d9b94c4d92d35d9ffb1117b693fc74a93f613f"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "525_step_1_1.wav"
|
||||
path: "roms/floppy_samples/525_step_1_1.wav"
|
||||
description: "MAME floppy sample, 5.25 inch drive, single track step"
|
||||
@@ -537,7 +578,7 @@ files:
|
||||
required: false
|
||||
size: 6628
|
||||
sha1: "669ee98fb9fac4371c72ed0b60be1bc8470bc7f8"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "35_seek_2ms.wav"
|
||||
path: "roms/floppy_samples/35_seek_2ms.wav"
|
||||
description: "MAME floppy sample, 3.5 inch drive, 2 ms head seek"
|
||||
@@ -545,7 +586,7 @@ files:
|
||||
required: false
|
||||
size: 7450
|
||||
sha1: "55caafbd19486b8d517e4b33a6fa65250df55e25"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
note: "One of ten samples per drive bank; a missing sample is logged and that sound stays silent."
|
||||
- name: "35_seek_6ms.wav"
|
||||
path: "roms/floppy_samples/35_seek_6ms.wav"
|
||||
@@ -554,7 +595,7 @@ files:
|
||||
required: false
|
||||
size: 22230
|
||||
sha1: "87e5dec269e67497681c15849777ebfc301131c1"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "35_seek_12ms.wav"
|
||||
path: "roms/floppy_samples/35_seek_12ms.wav"
|
||||
description: "MAME floppy sample, 3.5 inch drive, 12 ms head seek"
|
||||
@@ -562,7 +603,7 @@ files:
|
||||
required: false
|
||||
size: 26540
|
||||
sha1: "c6b34fc61496943134ac45cc836a24e743caf794"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "35_seek_20ms.wav"
|
||||
path: "roms/floppy_samples/35_seek_20ms.wav"
|
||||
description: "MAME floppy sample, 3.5 inch drive, 20 ms head seek"
|
||||
@@ -570,7 +611,7 @@ files:
|
||||
required: false
|
||||
size: 44144
|
||||
sha1: "b2fe4c3a4185146a7d11483d92d4412dd79dbc78"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "35_spin_empty.wav"
|
||||
path: "roms/floppy_samples/35_spin_empty.wav"
|
||||
description: "MAME floppy sample, 3.5 inch drive, motor running, no disk"
|
||||
@@ -578,7 +619,7 @@ files:
|
||||
required: false
|
||||
size: 17708
|
||||
sha1: "db04fc097bdd0411cff232f57525ded491b48c6c"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "35_spin_loaded.wav"
|
||||
path: "roms/floppy_samples/35_spin_loaded.wav"
|
||||
description: "MAME floppy sample, 3.5 inch drive, motor running, disk loaded"
|
||||
@@ -586,7 +627,7 @@ files:
|
||||
required: false
|
||||
size: 17708
|
||||
sha1: "96ce04a5b02af0da6d311f06fc4906a3cf71c78f"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "35_spin_start_empty.wav"
|
||||
path: "roms/floppy_samples/35_spin_start_empty.wav"
|
||||
description: "MAME floppy sample, 3.5 inch drive, motor start, no disk"
|
||||
@@ -594,7 +635,7 @@ files:
|
||||
required: false
|
||||
size: 17708
|
||||
sha1: "af770fd9261a8efee23d66cd39b27be7b2ab7853"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "35_spin_start_loaded.wav"
|
||||
path: "roms/floppy_samples/35_spin_start_loaded.wav"
|
||||
description: "MAME floppy sample, 3.5 inch drive, motor start, disk loaded"
|
||||
@@ -602,7 +643,7 @@ files:
|
||||
required: false
|
||||
size: 35308
|
||||
sha1: "c82b1714378bf2507ed86dea1e9fe743c380abab"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "35_spin_end.wav"
|
||||
path: "roms/floppy_samples/35_spin_end.wav"
|
||||
description: "MAME floppy sample, 3.5 inch drive, motor stop"
|
||||
@@ -610,7 +651,7 @@ files:
|
||||
required: false
|
||||
size: 17684
|
||||
sha1: "a8901b692de15eb7a9052f61283f0e7a2b63d67d"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "35_step_1_1.wav"
|
||||
path: "roms/floppy_samples/35_step_1_1.wav"
|
||||
description: "MAME floppy sample, 3.5 inch drive, single track step"
|
||||
@@ -618,7 +659,7 @@ files:
|
||||
required: false
|
||||
size: 6878
|
||||
sha1: "40d756d0cb5f7998ca26ac1de142a96a83fa2b97"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348"
|
||||
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
|
||||
- name: "DejaVuSans.ttf"
|
||||
path: "fonts/DejaVuSans.ttf"
|
||||
description: "DejaVu Sans, the frontend text font"
|
||||
@@ -628,7 +669,7 @@ files:
|
||||
unsourceable: "host program component shipped inside every POM2 package, not emulation data"
|
||||
size: 759720
|
||||
sha1: "3061cf7af25793a655a1ff5a509385f3620f3eb3"
|
||||
source_ref: "src/main.cpp:522-535"
|
||||
source_ref: "src/main.cpp:530-543"
|
||||
note: "Falls back to the system DejaVu, Arial Unicode or Segoe UI, then to the ImGui bitmap font."
|
||||
- name: "fa-solid-900.ttf"
|
||||
path: "fonts/fa-solid-900.ttf"
|
||||
@@ -639,7 +680,7 @@ files:
|
||||
unsourceable: "host program component shipped inside every POM2 package, not emulation data"
|
||||
size: 426112
|
||||
sha1: "0c8c9706abc0116f08b66d11a69da6aa9ef7e6bf"
|
||||
source_ref: "src/main.cpp:582-600"
|
||||
source_ref: "src/main.cpp:590-608"
|
||||
note: "Without it every icon renders as an empty box."
|
||||
- name: "Apple_II_plus.jpg"
|
||||
path: "pic/Apple_II_plus.jpg"
|
||||
|
||||
+33
-14
@@ -3,8 +3,9 @@ type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/RACE"
|
||||
upstream: "https://github.com/8bitpsp/race"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "c7810dd7f172827bfa2004813bc000b13786636b"
|
||||
upstream_commit: "065db2eb614d4414ed49a1a9e241022450bb844d"
|
||||
core_version: "v2.16"
|
||||
display_name: "SNK - Neo Geo Pocket / Color (RACE)"
|
||||
cores: [race]
|
||||
@@ -15,15 +16,19 @@ notes: |
|
||||
Judge_ (MHE), ported to GP2X by Flavor, to PSP by Akop Karapetyan, modified
|
||||
by theelf, then adapted for libretro.
|
||||
|
||||
No external BIOS files are required. The upstream versions (GP2X, PSP) support
|
||||
optional loading of NPBIOS.BIN, but the libretro port disabled it entirely
|
||||
with #if 0 in race-memory.c:loadBIOS(). The comment explains: "Using a real
|
||||
bios file causes nothing but issues."
|
||||
No external BIOS files are required. The upstream versions (GP2X, PSP) load
|
||||
NPBIOS.BIN optionally; the libretro port's loadBIOS() returns 0
|
||||
unconditionally, and the disabled file-reading body it once carried under
|
||||
#if 0 was removed in June 2026, so the port no longer names the file. The
|
||||
core never queries the system directory: the only files it opens are the
|
||||
ROM and the .ngf flash save in the save directory.
|
||||
|
||||
The core uses a software HLE approach: a compiled-in koyote_bin RAM dump
|
||||
(post-boot console state) is copied into mainram at startup, a fake SWI jump
|
||||
table is built at cpurom[0xE000], and doBios() in tlcs900h.c handles 33 BIOS
|
||||
functions in software. The Z80 sound CPU is emulated via cz80 or DrZ80.
|
||||
The core boots through a software HLE path: a compiled-in koyote_bin RAM
|
||||
snapshot (12 KB of main RAM captured after a real BIOS has booted) is copied
|
||||
into mainram, a fake SWI jump table is built at cpurom[0xE000], doBios() in
|
||||
tlcs900h.c answers 14 BIOS call numbers in software, and the system font
|
||||
is an embedded table in ngpBios.c. The Z80 sound CPU is emulated via cz80
|
||||
or DrZ80.
|
||||
|
||||
files: []
|
||||
|
||||
@@ -33,10 +38,24 @@ analysis:
|
||||
size: 65536 # 64 KB (0x10000)
|
||||
loaded_by: "race-memory.c:loadBIOS()"
|
||||
status: disabled
|
||||
source_ref: "race-memory.c:337-361"
|
||||
source_ref: "race-memory.c:330-340, race-memory.c:354-357"
|
||||
upstream_status: optional
|
||||
upstream_ref: "memory.cpp:346-365 (8bitpsp/race)"
|
||||
upstream_ref: "memory.cpp:346-366 (8bitpsp/race)"
|
||||
note: |
|
||||
loadBIOS() is wrapped in #if 0 and always returns 0 in the libretro port.
|
||||
In upstream (8bitpsp/race, alekmaul/race), the function is live and loads
|
||||
NPBIOS.BIN optionally, falling back to HLE if not found.
|
||||
loadBIOS() returns 0 unconditionally in the libretro port, so mem_init()
|
||||
always takes the HLE branch. The #if 0 body that opened NPBIOS.BIN with
|
||||
filestream_open() was dropped by commit 0e4783a on 2026-06-15; the
|
||||
libretro tree no longer contains the name. In upstream, loadBIOS() opens
|
||||
NPBIOS.BIN from the working directory with fopen(), requires exactly
|
||||
0x10000 bytes, and falls back to HLE when the file is absent or short.
|
||||
hle:
|
||||
ram_snapshot: "koyote_bin.h:1-6"
|
||||
ram_snapshot_size: 12288
|
||||
ram_snapshot_copy: "race-memory.c:406-407"
|
||||
jump_table: "race-memory.c:360-369"
|
||||
interrupt_vectors: "race-memory.c:318-328"
|
||||
bios_calls: "tlcs900h.c:5837-5921"
|
||||
bios_call_count: 14
|
||||
system_font: "ngpBios.c:15"
|
||||
filesystem_access: "ROM at main.c:266-268, .ngf flash save at flash.c:231-233 and flash.c:344-346"
|
||||
system_directory_used: false
|
||||
+39
-33
@@ -3,9 +3,9 @@ type: standalone
|
||||
core_classification: game_engine
|
||||
source: "https://github.com/ruffle-rs/ruffle"
|
||||
upstream: "https://github.com/ruffle-rs/ruffle"
|
||||
profiled_date: "2026-08-08"
|
||||
source_commit: "1636c780671f5f751504240c462524ae6cfcc4bb"
|
||||
core_version: "0.5.0"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "74ade97342205ac55d264f2ceb1e642573a21d48"
|
||||
core_version: "0.6.0"
|
||||
display_name: "Adobe Flash (Ruffle)"
|
||||
cores:
|
||||
- ruffle
|
||||
@@ -16,18 +16,20 @@ mode: standalone
|
||||
notes: |
|
||||
Flash Player and Adobe AIR runtime written in Rust, playing SWF files of any
|
||||
ActionScript version, as a desktop binary or as a WebAssembly browser build.
|
||||
Distribution is by nightly build: Batocera compiles the nightly-2026-01-31 tag
|
||||
and installs ruffle_desktop as ruffle, RetroDECK pulls the rs.ruffle.Ruffle
|
||||
Flathub build. ES-DE runs it as `ruffle --fullscreen <rom>`, Batocera as
|
||||
`ruffle <rom>`, RetroBat as `ruffle.exe --graphics <renderer> --force-align
|
||||
-q <quality> <rom>`, RetroDECK as `ruffle --graphics vulkan --config
|
||||
/var/data/ruffle --save-directory <saves>/ruffle <rom>`. The ActionScript
|
||||
class library is compiled by build_playerglobal into playerglobal_avm1.swf and
|
||||
playerglobal_avm2.swf and linked into the binary from OUT_DIR
|
||||
(core/src/avm1/globals.rs:89, core/src/avm2/globals.rs:548), so startup reads
|
||||
nothing. Locale texts, wgsl shaders, the window icon and the OpenH264 license
|
||||
are embedded the same way (desktop/src/gui/locale.rs:7-12,
|
||||
desktop/src/app.rs:464, render/wgpu/src/shaders.rs:28-76).
|
||||
Versioned releases sit next to the nightlies: Batocera 43.1 compiles the
|
||||
nightly-2026-01-31 tag and installs ruffle_desktop as ruffle, RetroDECK pulls
|
||||
the rs.ruffle.Ruffle Flathub build. ES-DE runs it as `ruffle --fullscreen
|
||||
<rom>`, Batocera as `ruffle <rom>`, RetroBat as `ruffle.exe --graphics
|
||||
<renderer> --force-align -q <quality> <rom>`, RetroDECK as `ruffle --graphics
|
||||
vulkan --config /var/data/ruffle --save-directory <saves>/ruffle <rom>`. The
|
||||
ActionScript class library is compiled by build_playerglobal into
|
||||
playerglobal_avm1.swf and playerglobal_avm2.swf and linked into the binary
|
||||
from OUT_DIR (core/src/avm1/globals.rs:89, core/src/avm2/globals.rs:548), so
|
||||
startup reads nothing. Locale texts, wgsl shaders, the window icon and the
|
||||
OpenH264 license are embedded the same way (desktop/src/gui/locale.rs:7-12,
|
||||
desktop/src/app.rs:464, render/wgpu/src/shaders.rs:30-95,
|
||||
desktop/src/gui/movie.rs:44,
|
||||
desktop/src/gui/dialogs/preferences_dialog.rs:517).
|
||||
|
||||
H.264 video is the one external dependency. external_video is a default
|
||||
feature and pulls ruffle_video_external with openh264
|
||||
@@ -51,30 +53,34 @@ notes: |
|
||||
Text uses system fonts. fontdb::Database::load_system_fonts() fills the
|
||||
database at startup (desktop/src/app.rs:433-434), and both the Flash device
|
||||
fonts and the egui menu bar resolve family names against it and take whatever
|
||||
face the host answers with. How that face is read now depends on the renderer:
|
||||
freetype joined the desktop default features, so on Linux it goes through
|
||||
FreetypeFontRenderer, and the plain memory map of the file is the other branch
|
||||
(desktop/src/backends/ui.rs:366-406,518-562,
|
||||
desktop/src/gui/controller.rs:760-803). The families asked for are Times New
|
||||
Roman, Arial, Courier New and their metric-compatible substitutes, plus the
|
||||
CJK, Hebrew, Arabic and Thai faces (desktop/src/player.rs:361-412,
|
||||
desktop/src/gui/controller.rs:639-711), and on Unix fontconfig sorts the
|
||||
fallback chain (desktop/src/backends/ui.rs:363-376,536-550). No name, path,
|
||||
size or hash is fixed anywhere. The compiled-in Noto Sans subset sits behind
|
||||
the default_font feature, which the desktop build does not enable
|
||||
(core/src/player.rs:84-85, core/Cargo.toml:82,95, desktop/Cargo.toml:22), so
|
||||
an unmatched family leaves the run without that face rather than falling back
|
||||
face the host answers with (desktop/src/backends/ui.rs:321-360,
|
||||
desktop/src/gui/controller.rs:741-787). The face is memory-mapped and parsed
|
||||
by Ruffle's own rasterizer unless preferences.toml sets device_font_renderer
|
||||
to freetype, which routes Linux builds through FreetypeFontRenderer instead;
|
||||
the freetype default feature only compiles that branch, the preference
|
||||
selects it (desktop/src/backends/ui.rs:190-192,443-487,489-519,
|
||||
desktop/src/preferences/read.rs:74-75, desktop/Cargo.toml:83). The families
|
||||
asked for are Times New Roman, Arial, Courier New and their metric-compatible
|
||||
substitutes, plus the CJK, Hebrew, Arabic and Thai faces
|
||||
(desktop/src/player.rs:361-414, desktop/src/gui/controller.rs:620-694), and
|
||||
on Unix fontconfig sorts the fallback chain
|
||||
(desktop/src/backends/ui.rs:363-376,536-628). No name, path, size or hash is
|
||||
fixed anywhere. The compiled-in Noto Sans subset sits behind the default_font
|
||||
feature, which the web and exporter crates enable and the desktop build does
|
||||
not (core/src/player.rs:84-85, core/Cargo.toml:82,95, web/Cargo.toml:63-65,
|
||||
exporter/Cargo.toml:16, desktop/Cargo.toml:22), so on the desktop an
|
||||
unmatched family leaves the run without that face rather than falling back
|
||||
to a bundled one.
|
||||
|
||||
Files the player writes rather than expects: preferences.toml, bookmarks.toml
|
||||
and recents.toml under --config, each defaulted when absent
|
||||
(desktop/src/preferences.rs:54-96), .sol SharedObjects under --save-directory
|
||||
(frontend-utils/src/backends/storage.rs:31-60), and the log file
|
||||
(desktop/src/main.rs:156-166). ruffle-bundle.toml is the manifest inside a
|
||||
.ruf bundle, which is content alongside the .swf rather than a runtime input
|
||||
(frontend-utils/src/backends/storage.rs:31-60, desktop/src/cli.rs:129-130),
|
||||
and the log file under <cache>/ruffle/log (desktop/src/main.rs:155-166).
|
||||
ruffle-bundle.toml is the manifest inside a .ruf bundle, which is content
|
||||
alongside the .swf rather than a runtime input
|
||||
(frontend-utils/src/bundle/info.rs:11, frontend-utils/src/bundle.rs:42-53).
|
||||
mms.cfg is not
|
||||
implemented, the name appears only in an AVM2 error string
|
||||
mms.cfg is not implemented, the name appears only in an AVM2 error string
|
||||
(core/src/avm2/error_messages.rs:237).
|
||||
|
||||
files:
|
||||
|
||||
+120
-25
@@ -1,16 +1,23 @@
|
||||
emulator: Supermodel
|
||||
type: standalone
|
||||
source: https://github.com/trzy/Supermodel
|
||||
upstream: https://github.com/trzy/Supermodel
|
||||
profiled_date: "2026-03-26"
|
||||
source_commit: "24d2ffcfc7f14229337f05f4920fe26b56633d9d"
|
||||
core_version: "0.3a"
|
||||
display_name: "Supermodel (Sega Model 3)"
|
||||
type: standalone + libretro
|
||||
core_classification: community_fork
|
||||
source:
|
||||
standalone: "https://github.com/trzy/Supermodel"
|
||||
libretro: "https://git.libretro.com/libretro/Libretro-Supermodel"
|
||||
upstream: "https://github.com/trzy/Supermodel"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit:
|
||||
standalone: "24d2ffcfc7f14229337f05f4920fe26b56633d9d"
|
||||
libretro: "9f0a51daf6cef6ec2a304538f18c6dbb4c4b9da2"
|
||||
upstream_commit: "24d2ffcfc7f14229337f05f4920fe26b56633d9d"
|
||||
core_version:
|
||||
standalone: "0.3a-WIP"
|
||||
libretro: "v0.3a-libretro"
|
||||
display_name: "Sega - Model 3 (Supermodel)"
|
||||
cores:
|
||||
- supermodel
|
||||
systems:
|
||||
- sega-model3
|
||||
mode: standalone
|
||||
|
||||
notes: |
|
||||
Open-source Sega Model 3 arcade emulator by Bart Trzynadlowski (trzy) and
|
||||
@@ -18,54 +25,142 @@ notes: |
|
||||
2.0/2.1) including Real3D graphics, SCSP sound, DSB1/DSB2 MPEG music boards,
|
||||
drive boards, and net board. Cross-platform (Windows, Linux, macOS).
|
||||
|
||||
The libretro core is Libretro-Supermodel, developed by sgiannop on top of
|
||||
the 2019 libretro attempt and now held under the libretro organisation on
|
||||
GitHub, mirrored at the same revision on git.libretro.com where the buildbot
|
||||
pipeline lives (.gitlab-ci.yml). It carries the whole Supermodel tree with
|
||||
its own OSD under Src/OSD/libretro and reports v0.3a-libretro. The older
|
||||
libretro/supermodel repository on GitHub keeps the full trzy history and
|
||||
received the same feature branch as its PR #2, but has no CI file and is
|
||||
not what the buildbot publishes.
|
||||
ref: Src/OSD/libretro/libretro.cpp:937-938, Docs/README.md:5-12
|
||||
|
||||
Uses MAME-compatible ROM sets loaded from ZIP archives. GameLoader identifies
|
||||
games by CRC32 checksums defined in Config/Games.xml. Parent/child ROM set
|
||||
games by CRC32 checksums defined in Games.xml. Parent/child ROM set
|
||||
relationships exist between regional variants of the same game, not as shared
|
||||
BIOS sets. No standalone BIOS or firmware files are loaded outside of game ZIPs.
|
||||
The core routes the ZIP reads through the libretro VFS.
|
||||
ref: Src/OSD/libretro/LibretroWrapper.cpp:828-832, Src/OSD/libretro/vfs_ioapi.cpp
|
||||
|
||||
Standalone: four data files of its own are read from the install tree, Config/
|
||||
and Assets/ relative to the working directory on Windows and macOS. On Linux
|
||||
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.
|
||||
ref: Src/OSD/Windows/FileSystemPath.cpp:28-49, Src/OSD/OSX/FileSystemPath.cpp:28-48,
|
||||
Src/OSD/Unix/FileSystemPath.cpp:51-157, Src/OSD/SDL/Main.cpp:1394-1413,
|
||||
Src/OSD/SDL/Main.cpp:1451, Src/OSD/SDL/Main.cpp:2239
|
||||
|
||||
Libretro: retro_init joins "supermodel" to the frontend system directory and
|
||||
the core creates that directory through the VFS. Supermodel.ini, Games.xml and
|
||||
Music.xml are looked up flat in it first, then under a Config/ subdirectory
|
||||
kept for the initial port's layout. Games.xml and Supermodel.ini are also
|
||||
compiled into the binary from the repository copies, and when neither layout
|
||||
holds the file the embedded bytes are written to the flat path on first run.
|
||||
An external file is read in preference to the embedded one and never updated
|
||||
afterwards. Music.xml has no embedded copy.
|
||||
ref: Src/OSD/libretro/libretro.cpp:855-863, Src/OSD/libretro/libretro.cpp:889-894,
|
||||
Src/OSD/libretro/libretro.cpp:1113, Src/OSD/libretro/LibretroWrapper.cpp:166-206,
|
||||
Src/OSD/libretro/LibretroWrapper.cpp:208-228, Makefile:638-647, Makefile:653-655
|
||||
|
||||
Libretro NVRAM is the frontend .srm through the memory API. On the first frame
|
||||
a <game>.nv written by the standalone build is imported from the save directory
|
||||
when the .srm is empty; it is never written back. Save states are serialised in
|
||||
memory, and a state file on disk is loaded only when InitStateFile names one,
|
||||
which the core option layer leaves empty.
|
||||
ref: Src/OSD/libretro/libretro.cpp:766-781, Src/OSD/libretro/libretro.cpp:1380-1409,
|
||||
Src/OSD/libretro/libretro.cpp:1685-1690, Src/OSD/libretro/LibretroWrapper.cpp:479,
|
||||
Src/OSD/libretro/LibretroWrapper.cpp:544-545, Src/OSD/libretro/LibretroConfigProvider.h:15
|
||||
|
||||
The Legacy3D renderer compiles its shaders from built-in strings and reads a
|
||||
file only when VertexShader or FragmentShader names one; both default to an
|
||||
empty string in either build.
|
||||
ref: Src/Graphics/Shader.cpp:52-63, Src/Graphics/Shader.cpp:100-108,
|
||||
Src/OSD/libretro/LibretroConfigProvider.h:22-23
|
||||
|
||||
EmuDeck installs the Flatpak package (com.supermodel3.Supermodel). Config
|
||||
stored in ~/.supermodel/Config/. No checkBIOS entry in EmuDeck.
|
||||
|
||||
Four data files of its own are read from the install tree, Config/ and Assets/
|
||||
relative to the working directory on Windows and macOS, under the home
|
||||
directory on Linux. Supermodel.ini, NVRAM/<game>.nv and Saves/<game>.st<slot>
|
||||
are written by the emulator itself.
|
||||
ref: Src/OSD/Windows/FileSystemPath.cpp:28-49
|
||||
|
||||
files:
|
||||
- name: Games.xml
|
||||
path: "Config/Games.xml"
|
||||
standalone_path: "Config/Games.xml"
|
||||
mode: standalone
|
||||
required: true
|
||||
bundled: true
|
||||
size: 151626
|
||||
sha1: "6871a47de90ca67f9ff8e4e280416851a8164563"
|
||||
md5: "0c7cfc0cba2f2cd674d94e093936f9f8"
|
||||
description: "ROM set definitions"
|
||||
note: "Parsed at startup into the game database. Every ROM region, file name and CRC32 the loader matches against comes from here, so an unreadable file leaves no set to resolve and the launch returns before the emulator is built. The path is a config key, so -game-xml-file moves it."
|
||||
note: "Parsed at startup into the game database. Every ROM region, file name and CRC32 the loader matches against comes from here, so an unreadable file leaves no set to resolve and the launch returns before the emulator is built. The path is a config key, so -game-xml-file moves it. Nothing about the file is verified beyond parsing; the hash is that of the copy the pinned revision ships."
|
||||
source_ref: "Src/OSD/SDL/Main.cpp:117, Src/OSD/SDL/Main.cpp:1506, Src/OSD/SDL/Main.cpp:1963, Src/OSD/SDL/Main.cpp:2326-2336, Src/GameLoader.cpp:549-559, Src/GameLoader.cpp:1014-1017"
|
||||
|
||||
- name: Games.xml
|
||||
path: "supermodel/Games.xml"
|
||||
mode: libretro
|
||||
required: false
|
||||
bundled: true
|
||||
has_builtin: true
|
||||
size: [148364, 148362]
|
||||
sha1:
|
||||
- "fa334ab5ba6366bd28168860c913e6365b9fec96"
|
||||
- "57500ad35b883acb5e7766c04f5b42e65185715c"
|
||||
md5:
|
||||
- "2d16307ceb658636a05d34c7ba935b48"
|
||||
- "29fd5bc40cea222e040c1a1cfd60ea2e"
|
||||
description: "ROM set definitions, libretro copy"
|
||||
note: "Read through the VFS from {system}/supermodel/Games.xml, or Config/Games.xml under it, and parsed from memory. When the read yields nothing the bytes compiled in from Config/Games.xml are parsed instead, so the core identifies every set without a file on disk; a file that is present takes precedence. The second hash is the embedded array, which predates the indentation cleanup of the repository copy by one tab."
|
||||
source_ref: "Src/OSD/libretro/LibretroWrapper.cpp:187-206, Src/OSD/libretro/LibretroWrapper.cpp:221-222, Src/OSD/libretro/LibretroWrapper.cpp:822, Src/OSD/libretro/LibretroWrapper.cpp:834-859, Src/GameLoader.cpp:1019-1030, Makefile:645-647"
|
||||
|
||||
- name: Supermodel.ini
|
||||
path: "supermodel/Supermodel.ini"
|
||||
mode: libretro
|
||||
required: false
|
||||
bundled: true
|
||||
has_builtin: true
|
||||
size: 9421
|
||||
sha1: "cbda2b3fa65e37c5c2824a4630f95f145533c360"
|
||||
md5: "06533608174992f6ea180ae190011778"
|
||||
description: "Configuration override"
|
||||
note: "Read from {system}/supermodel/Supermodel.ini, or Config/Supermodel.ini under it, when present; a file that fails to parse aborts the load. Core options are applied over it afterwards, so it only reaches keys the options do not set and per-game sections. Extracted from the embedded copy when absent."
|
||||
source_ref: "Src/OSD/libretro/LibretroWrapper.cpp:187-206, Src/OSD/libretro/LibretroWrapper.cpp:219-220, Src/OSD/libretro/LibretroWrapper.cpp:812-817, Src/OSD/libretro/LibretroWrapper.cpp:858, Src/OSD/libretro/LibretroWrapper.cpp:865-866, Makefile:653-655"
|
||||
|
||||
- name: p1crosshair.bmp
|
||||
path: "Assets/p1crosshair.bmp"
|
||||
standalone_path: "Assets/p1crosshair.bmp"
|
||||
mode: standalone
|
||||
size: 295992
|
||||
sha1: "581cea232c296c7bd76f3101c3ae1bffdf5abf08"
|
||||
md5: "9012018f50f707c1707009346eb5d18b"
|
||||
required: true
|
||||
bundled: true
|
||||
description: "Player 1 light gun crosshair texture"
|
||||
note: "Both bitmaps are read on every launch whatever CrosshairStyle holds, since the load runs before the style decides anything, and a null surface aborts startup ahead of the Model 3 object. 32 bit BMP with alpha, sides a multiple of 2."
|
||||
source_ref: "Src/OSD/SDL/Crosshair.cpp:34-51, Src/OSD/SDL/Main.cpp:2379-2385, Assets/DIR.txt"
|
||||
note: "Both bitmaps are read on every launch whatever CrosshairStyle holds, since the load runs before the style decides anything, and a null surface aborts startup ahead of the Model 3 object. 32 bit BMP with alpha, sides a multiple of 2. The libretro build opens the same two files from the Assets directory of the standalone layout, outside the frontend directories, but forces the vector style and never draws them, and its repository does not ship them."
|
||||
source_ref: "Src/OSD/SDL/Crosshair.cpp:34-51, Src/OSD/SDL/Main.cpp:2379-2385, Assets/DIR.txt, Src/OSD/libretro/libretroCrosshair.cpp:36-60, Src/OSD/libretro/LibretroWrapper.cpp:465-471, Src/OSD/libretro/LibretroConfigProvider.h:361"
|
||||
|
||||
- name: p2crosshair.bmp
|
||||
path: "Assets/p2crosshair.bmp"
|
||||
standalone_path: "Assets/p2crosshair.bmp"
|
||||
mode: standalone
|
||||
size: 295992
|
||||
sha1: "13c5e692c7acf2ec8243ac421d58fdf69c6c2370"
|
||||
md5: "866dbf59a0e2d849de2365e1c953cc97"
|
||||
required: true
|
||||
bundled: true
|
||||
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."
|
||||
source_ref: "Src/OSD/SDL/Crosshair.cpp:35, 49-51, Src/OSD/SDL/Main.cpp:2379-2385"
|
||||
source_ref: "Src/OSD/SDL/Crosshair.cpp:35, 49-51, Src/OSD/SDL/Main.cpp:2379-2385, Src/OSD/libretro/libretroCrosshair.cpp:39, 55-58"
|
||||
|
||||
- name: Music.xml
|
||||
path: "Config/Music.xml"
|
||||
path: "supermodel/Music.xml"
|
||||
standalone_path: "Config/Music.xml"
|
||||
required: false
|
||||
bundled: true
|
||||
size: 9224
|
||||
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 the file is absent. Maps an MPEG ROM offset to an MP3 the user supplies."
|
||||
source_ref: "Src/OSD/SDL/Main.cpp:118, Src/OSD/SDL/Main.cpp:943, Src/Sound/MPEG/MpegAudio.cpp:88-108"
|
||||
note: "Consulted only for a game with a DSB1 or DSB2 board, and skipped when the file is absent. Maps an MPEG ROM offset to an MP3 the user supplies. The shipped file is a commented example. The libretro core resolves it beside Games.xml and has no embedded copy."
|
||||
source_ref: "Src/OSD/SDL/Main.cpp:118, Src/OSD/SDL/Main.cpp:943, Src/Sound/MPEG/MpegAudio.cpp:88-108, Src/OSD/libretro/LibretroWrapper.cpp:223, Src/OSD/libretro/LibretroWrapper.cpp:494"
|
||||
|
||||
exclusion_note: >
|
||||
The Sega Model 3 arcade hardware has no shared system BIOS. Each game board
|
||||
|
||||
+143
-64
@@ -1,83 +1,162 @@
|
||||
emulator: Xemu
|
||||
type: standalone
|
||||
source: "https://github.com/xemu-project/xemu"
|
||||
emulator: xemu
|
||||
type: standalone + libretro
|
||||
core_classification: community_fork
|
||||
source:
|
||||
standalone: "https://github.com/xemu-project/xemu"
|
||||
libretro: "https://github.com/LibretroAdmin/xemu-libretro"
|
||||
upstream: "https://github.com/xemu-project/xemu"
|
||||
logo: "https://raw.githubusercontent.com/xemu-project/xemu/master/data/xemu_64x64.png"
|
||||
profiled_date: "2026-03-18"
|
||||
source_commit: "d73326b62199c6dd952ef512947710e1333a49d3"
|
||||
core_version: "0.8.x"
|
||||
display_name: "xemu (Xbox)"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit:
|
||||
standalone: "f9b14039e5bb56ae2d8f028e31e7cc19f13f7e12"
|
||||
libretro: "d9804db79f87f6a6a5548b14ca4a8d5164390338"
|
||||
core_version:
|
||||
standalone: "0.8.136-49-gf9b14039e5"
|
||||
libretro: "libretro-experimental"
|
||||
display_name: "Microsoft - Xbox (xemu)"
|
||||
cores:
|
||||
- xemu
|
||||
systems: [microsoft-xbox]
|
||||
systems:
|
||||
- microsoft-xbox
|
||||
|
||||
notes: |
|
||||
Xemu is a free, open-source Xbox emulator based on QEMU.
|
||||
Three firmware files are required for operation: MCPX boot ROM,
|
||||
flash ROM (BIOS), and EEPROM image. A pre-built HDD image is
|
||||
also needed. The EEPROM can be auto-generated by xemu if not
|
||||
provided. Config stored in xemu.toml under sys.files section.
|
||||
Full-system Xbox emulator built on QEMU. One tree builds the standalone
|
||||
application and, with the libretro build option, a core in which a shim
|
||||
replaces ui/xemu.c: the QEMU machine runs on its own thread, retro_run pumps
|
||||
the RetroPads into the Duke controllers and blits the NV2A surface into the
|
||||
frontend's framebuffer through an OpenGL 4.0 core context, and content is a
|
||||
.iso or .xiso image that QEMU opens from its full path. Save states are not
|
||||
implemented; game saves live inside the hard disk image.
|
||||
ref: meson_options.txt:52-53, ui/xemu-libretro.c:1-27,
|
||||
ui/xemu-libretro.c:609-617, ui/xemu-libretro.c:680-697,
|
||||
ui/xemu-libretro.c:874-876
|
||||
|
||||
Four files feed the machine through the sys.files block of the
|
||||
configuration: the MCPX boot ROM, the flash ROM, the EEPROM and the hard disk
|
||||
image. qemu_init turns them into machine arguments: bootrom= on the xbox
|
||||
machine, -bios, a smbus-storage device and an IDE drive at index 0 with
|
||||
locked=on. The standalone keeps them in xemu.toml, read from the SDL
|
||||
preference directory or from the directory of the executable when a
|
||||
xemu.toml already sits there, and the file pickers of the settings menu fill
|
||||
the four paths; nothing is searched by name and only the EEPROM has a
|
||||
default location.
|
||||
ref: config_spec.yml:353-367, system/vl.c:2983-3006, system/vl.c:3030-3074,
|
||||
ui/xemu-settings.cc:70-133, ui/xemu.c:1382-1402,
|
||||
ui/xui/main-menu.cc:1553-1575
|
||||
|
||||
The core reads the same four files from the frontend system directory, each
|
||||
under a name picked by a core option that offers a default and a few
|
||||
alternatives, and keeps its configuration as xemu-libretro.toml in that
|
||||
directory. The boot ROM, the flash ROM and the disk image are opened before
|
||||
the machine starts, and a missing one fails the load with a message naming
|
||||
the file. The EEPROM is left to the machine, which generates one.
|
||||
ref: ui/xemu-libretro.c:112-127, ui/xemu-libretro.c:139-145,
|
||||
ui/xemu-libretro.c:178-236
|
||||
|
||||
The standalone boots whatever it can. An unreadable flash file or a
|
||||
rejected EEPROM clears autostart and queues an error for the HUD, an
|
||||
unreadable disk image only queues the error, and an empty boot ROM path
|
||||
starts the flash without the overlay.
|
||||
ref: system/vl.c:2983-3006, system/vl.c:3030-3039, system/vl.c:3041-3053,
|
||||
system/vl.c:3060-3074, hw/xbox/xbox.c:143-165
|
||||
|
||||
files:
|
||||
- name: "mcpx_1.0.bin"
|
||||
description: "MCPX HLE boot ROM (v1.0)"
|
||||
- name: mcpx_1.0.bin
|
||||
path: mcpx_1.0.bin
|
||||
required: true
|
||||
size: 512
|
||||
source_ref: "hw/xbox/xbox.c:151 (bootrom_size != 512 -> error)"
|
||||
config_key: "sys.files.bootrom_path"
|
||||
note: |
|
||||
Overlaid on the last 512 bytes of the flash ROM region at boot.
|
||||
Mapped to 0xFFFFFE00-0xFFFFFFFF. Disabled after early init
|
||||
via LPC config register write (hw/xbox/xbox_pci.c:362).
|
||||
Machine property: -machine xbox,bootrom=<path>
|
||||
validation: [size]
|
||||
config_key: sys.files.bootrom_path
|
||||
description: "MCPX boot ROM"
|
||||
note: >-
|
||||
Passed as the bootrom machine property and read over the last 512 bytes
|
||||
of the flash image, which the machine maps as a writable overlay at the
|
||||
top of the address space. qemu_init drops the path with an error when
|
||||
the file cannot be opened or is not 512 bytes, and the machine then runs
|
||||
the flash alone. The core option xemu_bootrom names the file, default
|
||||
mcpx_1.0.bin, with mcpx.bin, MCPX_1.0.bin and boot_rom.bin offered as
|
||||
alternatives; the core refuses to load when the chosen file is absent.
|
||||
source_ref:
|
||||
standalone: "system/vl.c:2983-3006, hw/xbox/xbox.c:143-171, hw/xbox/xbox.c:468-470"
|
||||
libretro: "ui/xemu-libretro.c:113-114, ui/xemu-libretro.c:192-193, ui/xemu-libretro.c:210-236"
|
||||
|
||||
- name: "Complex_4627.bin"
|
||||
description: "Xbox flash ROM / BIOS (256 KB, kernel 4627)"
|
||||
- name: Complex_4627.bin
|
||||
path: Complex_4627.bin
|
||||
required: true
|
||||
size_options: [262144, 524288, 1048576]
|
||||
size_note: "Must be a multiple of 64 KB. Default 256 KB."
|
||||
source_ref: "hw/xbox/xbox.c:70-81 (bios_name, bios_size validation)"
|
||||
config_key: "sys.files.flashrom_path"
|
||||
note: |
|
||||
Loaded as -bios argument (system/vl.c:3052-3053).
|
||||
Mapped to 0xFF000000-0xFFFFFFFF with mirroring.
|
||||
Common variants: Complex_4627 (1.0), Complex_4034 (debug),
|
||||
Complex_4817 (1.1). Any valid Xbox BIOS dump works.
|
||||
size: [262144, 524288, 1048576]
|
||||
validation: [size]
|
||||
size_note: "Any size that is a positive multiple of 64 KiB is mapped; the image is mirrored across the 16 MB flash window"
|
||||
config_key: sys.files.flashrom_path
|
||||
description: "Xbox flash ROM image"
|
||||
note: >-
|
||||
Passed as -bios and opened through qemu_find_file. An image whose size
|
||||
is not a multiple of 65536 bytes counts as a failed load, like a missing
|
||||
file: the 256 KB region is filled with 0xFF and the machine starts
|
||||
anyway. An unreadable path clears autostart in the standalone. The core
|
||||
option xemu_flashrom names the file, default Complex_4627.bin, with
|
||||
Complex_4627_v1.03.bin, complex_4627.bin, cerbios.bin, Cerbios.bin,
|
||||
bios.bin, xbox_bios.bin and Complex.bin offered as alternatives; the
|
||||
core refuses to load when the chosen file is absent.
|
||||
source_ref:
|
||||
standalone: "system/vl.c:3041-3053, hw/xbox/xbox.c:63-123"
|
||||
libretro: "ui/xemu-libretro.c:115-118, ui/xemu-libretro.c:195-196, ui/xemu-libretro.c:210-236"
|
||||
|
||||
- name: "eeprom.bin"
|
||||
description: "Xbox EEPROM dump (256 bytes)"
|
||||
- name: xbox_eeprom.bin
|
||||
path: xbox_eeprom.bin
|
||||
standalone_path: eeprom.bin
|
||||
aliases: [eeprom.bin]
|
||||
required: false
|
||||
hle_fallback: true
|
||||
has_builtin: true
|
||||
size: 256
|
||||
source_ref: "system/vl.c:2939 (size != 256 -> error)"
|
||||
config_key: "sys.files.eeprom_path"
|
||||
note: |
|
||||
Loaded via smbus-storage device (hw/xbox/smbus_storage.c:157).
|
||||
Auto-generated as XBOX_EEPROM_VERSION_R1 if missing
|
||||
(system/vl.c:2918-2919). Default path: <config_dir>/eeprom.bin.
|
||||
Contains serial, MAC, HDD key, region, video standard.
|
||||
Structure defined in hw/xbox/eeprom_generation.h.
|
||||
validation: [size]
|
||||
config_key: sys.files.eeprom_path
|
||||
description: "Xbox EEPROM image"
|
||||
note: >-
|
||||
Attached as the smbus-storage device at address 0x54, which reads the
|
||||
whole file at realize and writes it back on every guest write. A missing
|
||||
file is generated as a retail 1.0 image with a random serial, MAC, hard
|
||||
disk key and online key, the North American region and the NTSC-M video
|
||||
standard; a file of any size other than 256 bytes is rejected and
|
||||
autostart is cleared. The standalone defaults to eeprom.bin next to
|
||||
xemu.toml. The core option xemu_eeprom names the file, default
|
||||
xbox_eeprom.bin, with eeprom.bin and EEPROM.bin offered as alternatives,
|
||||
and does not check for it before the machine starts.
|
||||
source_ref:
|
||||
standalone: "system/vl.c:2909-2949, system/vl.c:3030-3039, ui/xemu-settings.cc:135-146, hw/xbox/smbus_storage.c:56-87, hw/xbox/smbus_storage.c:90-128, hw/xbox/smbus_storage.c:155-160, hw/xbox/eeprom_generation.c:93-140"
|
||||
libretro: "ui/xemu-libretro.c:119-120, ui/xemu-libretro.c:198-199, ui/xemu-libretro.c:204-209"
|
||||
|
||||
- name: "xbox_hdd.qcow2"
|
||||
description: "Xbox HDD image (8 GB, qcow2 format)"
|
||||
- name: xbox_hdd.qcow2
|
||||
path: xbox_hdd.qcow2
|
||||
required: true
|
||||
source_ref: "system/vl.c:3060-3073 (hdd_path loading)"
|
||||
config_key: "sys.files.hdd_path"
|
||||
note: |
|
||||
Attached as IDE drive index=0 with locked=on.
|
||||
Must contain Xbox partitions (C, E, X, Y, Z).
|
||||
Pre-built images available from xemu project.
|
||||
Not a BIOS file - excluded from retrobios packs.
|
||||
config_key: sys.files.hdd_path
|
||||
description: "Xbox hard disk image, 8 GB with the retail partition layout"
|
||||
note: >-
|
||||
Attached as the IDE drive at index 0 with locked=on when the path is set
|
||||
and the file opens; an unreadable file only queues an error and an empty
|
||||
path attaches no drive. Snapshots are stored inside the image. The
|
||||
project publishes a formatted image carrying its own unsigned dashboard
|
||||
and empty TDATA and UDATA folders. The core option xemu_hdd names the
|
||||
file, default xbox_hdd.qcow2, with xbox_hdd_8gb.qcow2, hdd.qcow2 and
|
||||
xbox_hdd.img offered as alternatives; the core refuses to load when the
|
||||
chosen file is absent.
|
||||
source_ref:
|
||||
standalone: "system/vl.c:3060-3074, ui/xemu-snapshots.c:156"
|
||||
libretro: "ui/xemu-libretro.c:121-123, ui/xemu-libretro.c:200-202, ui/xemu-libretro.c:210-236"
|
||||
|
||||
- name: wpcap.dll
|
||||
required: false
|
||||
description: "Npcap packet capture library"
|
||||
note: >-
|
||||
Loaded by name on Windows, with every entry point resolved individually,
|
||||
when networking is enabled with the pcap backend; the netdev is not
|
||||
created when the library or one of its symbols is missing. Networking is
|
||||
off by default and the backend defaults to NAT.
|
||||
source_ref: "winpcap-loader/loader.c:79-113, ui/xemu-net.c:68-78, system/vl.c:2870-2875, config_spec.yml:327-335"
|
||||
|
||||
machine_properties:
|
||||
bootrom: "MCPX boot ROM path (string)"
|
||||
avpack: "Video connector type: composite, scart, svideo, vga, rfu, hdtv, none"
|
||||
short-animation: "Skip Xbox boot animation (bool)"
|
||||
smc-version: "SMC version string, 3 chars, default P01"
|
||||
video-encoder: "Video encoder chip: conexant (default), focus, xcalibur"
|
||||
bootrom: "MCPX boot ROM path"
|
||||
avpack: "Video connector: scart, hdtv, vga, rfu, svideo, composite, none"
|
||||
short-animation: "Skip the boot animation"
|
||||
smc-version: "SMC version string, default P01"
|
||||
video-encoder: "Encoder presented to the OS: conexant, focus, xcalibur"
|
||||
source_ref: "hw/xbox/xbox.c:446-497"
|
||||
|
||||
memory_layout:
|
||||
ram: "64 MB or 128 MB (configurable via sys.mem_limit)"
|
||||
flash_rom: "0xFF000000-0xFFFFFFFF (mirrored per bios_size)"
|
||||
mcpx_overlay: "Last bios_size bytes, overlays flash ROM at reset"
|
||||
source_ref: "hw/xbox/xbox.c:64-173"
|
||||
+30
-20
@@ -4,10 +4,10 @@ core_classification: community_fork
|
||||
source: "https://github.com/rfandango/XenDroid"
|
||||
upstream: "https://github.com/has207/xenia-edge"
|
||||
author: "rfandango"
|
||||
profiled_date: "2026-08-12"
|
||||
profiled_date: "2026-09-17"
|
||||
source_commit: "779680ade075d2d2a4c589c6a8d57a8e26c116c0"
|
||||
upstream_commit: "84cf209221160590768f615a0369a9c4a1456bbf"
|
||||
core_version: "b70d643"
|
||||
core_version: "0b11201"
|
||||
display_name: "Microsoft - Xbox 360 (XenDroid)"
|
||||
cores:
|
||||
- "xendroid"
|
||||
@@ -23,19 +23,26 @@ notes: |
|
||||
app, AAudio and OpenSLES audio systems, an Android input driver, and Android
|
||||
providers for the guest keyboard, the message box and disc swap. The library
|
||||
recognises ISO, ZAR, GOD, extracted XEX folders and STFS containers, and the
|
||||
boot path reads the file signature before mounting.
|
||||
boot path reads the file signature before mounting. A disc that carries a
|
||||
content tree has its packages staged out through the app cache and installed
|
||||
under content: the library offers it when the game is launched and the
|
||||
install screen accepts the disc directly.
|
||||
ref: emulator-core/src/main/cpp/CMakeLists.txt:30-56, 112-152,
|
||||
emulator-core/src/main/cpp/xendroid_emu.cpp:333-346, 671-676,
|
||||
app/src/main/java/xendroid/compose/data/GameFormat.kt:6, 26-32
|
||||
emulator-core/src/main/cpp/xendroid_emu.cpp:337-350, 675-680,
|
||||
app/src/main/java/xendroid/compose/data/GameFormat.kt:6, 26-32,
|
||||
emulator-core/src/main/cpp/xenia/src/xenia/vfs/content_install_standalone.cc:138-183, 185-267,
|
||||
app/src/main/java/xendroid/compose/ui/library/GameLibraryViewModel.kt:142-152,
|
||||
app/src/main/java/xendroid/compose/ui/content/InstallContentViewModel.kt:127-172
|
||||
|
||||
Releases are tagged XenDroid-<short commit> and the version name is the git
|
||||
hash handed to the build, so b70d643 is both the head of main and the current
|
||||
release. version.h names canary_experimental dc561e4df, carried over from the
|
||||
ax360e tree the project started as, and it does not describe the vendored
|
||||
code. The Edge revision is named by the periodic merge pull request instead,
|
||||
and Edge rebases its branch, so that commit is no longer reachable there.
|
||||
ref: app/build.gradle:34, emulator-core/src/main/cpp/version.h:4-5,
|
||||
.github/workflows/XenDroid.yml:185-187
|
||||
hash handed to the build, so 0b11201 is the current release; the two commits
|
||||
main carries past it touch the README only. version.h names
|
||||
canary_experimental dc561e4df, carried over from the ax360e tree the project
|
||||
started as, and it does not describe the vendored code. The Edge revision is
|
||||
named by the periodic merge pull request instead, and Edge rebases its
|
||||
branch, so that commit is no longer reachable there.
|
||||
ref: app/build.gradle:34, .github/workflows/XenDroid.yml:178, 188, 274-275,
|
||||
emulator-core/src/main/cpp/version.h:4-5
|
||||
|
||||
No Xbox 360 system file is read. xboxkrnl, xam and xbdm are HLE modules
|
||||
registered at startup, the XEX1 retail, XEX2 retail and XEX2 devkit keys are
|
||||
@@ -52,12 +59,15 @@ notes: |
|
||||
passed as a launch argument beside the config path and the log path. content,
|
||||
cache, cache0, cache1, patches and plugins hang off it, the global
|
||||
configuration is xenia-canary.config.toml and per title overrides live in
|
||||
config/<TITLE_ID>.config.toml. The custom driver directory sits in internal
|
||||
storage instead, because the external filesystem cannot carry an executable
|
||||
mapping.
|
||||
ref: emulator-core/src/main/java/xendroid/compose/Application.java:14-33, 84-88,
|
||||
app/src/main/java/xendroid/compose/EmulatorHostActivity.kt:231-236,
|
||||
emulator-core/src/main/cpp/xendroid_emu.cpp:312-317, 355-381
|
||||
config/<TITLE_ID>.config.toml. The bundled default_config.toml is written
|
||||
under the storage root at every start, rewritten whenever the asset differs
|
||||
from the copy on disk, and seeds the global configuration when that file is
|
||||
missing. The custom driver directory sits in internal storage instead,
|
||||
because the external filesystem cannot carry an executable mapping.
|
||||
ref: emulator-core/src/main/java/xendroid/compose/Application.java:14-33, 80-91,
|
||||
app/src/main/java/xendroid/compose/settings/ConfigStore.kt:82-89,
|
||||
app/src/main/java/xendroid/compose/EmulatorHostActivity.kt:237-242,
|
||||
emulator-core/src/main/cpp/xendroid_emu.cpp:316-321, 359-385
|
||||
|
||||
479 game patches ship inside the APK, synced at build time from the
|
||||
xenia-canary game-patches submodule pinned at 3553a5ae. The patch database
|
||||
@@ -86,7 +96,7 @@ files:
|
||||
The configured path is read before the instance is created and opened
|
||||
through adrenotools when the file exists, otherwise the system libvulkan.so
|
||||
is used. The row is hidden on devices without /dev/kgsl-3d0.
|
||||
source_ref: "app/src/main/java/xendroid/compose/ui/settings/SettingRows.kt:175-200, app/src/main/java/xendroid/compose/settings/SettingsRepository.kt:34-35, 140, emulator-core/src/main/java/xendroid/compose/Utils.java:164-236, emulator-core/src/main/java/xendroid/compose/Application.java:21-24, emulator-core/src/main/cpp/xenia/src/xenia/ui/vulkan/vulkan_instance.cc:49, 168-192, 203"
|
||||
source_ref: "app/src/main/java/xendroid/compose/ui/settings/SettingRows.kt:175-200, app/src/main/java/xendroid/compose/settings/SettingsRepository.kt:34-35, 140, emulator-core/src/main/java/xendroid/compose/Utils.java:164-236, emulator-core/src/main/java/xendroid/compose/Application.java:21-24, emulator-core/src/main/cpp/xenia/src/xenia/ui/vulkan/vulkan_instance.cc:106, 236-260, 271"
|
||||
|
||||
- name: "<font>.ttf"
|
||||
required: false
|
||||
@@ -146,7 +156,7 @@ files:
|
||||
The title directory is mounted as the plugins device and each enabled entry
|
||||
whose hash matches the running module is loaded as a user module on its own
|
||||
thread.
|
||||
source_ref: "emulator-core/src/main/cpp/xenia/src/xenia/patcher/plugin_loader.cc:175-233, 235-252, emulator-core/src/main/cpp/xenia/src/xenia/emulator.cc:2625-2630"
|
||||
source_ref: "emulator-core/src/main/cpp/xenia/src/xenia/patcher/plugin_loader.cc:175-233, 235-252, emulator-core/src/main/cpp/xenia/src/xenia/emulator.cc:2622-2627"
|
||||
|
||||
- name: Account
|
||||
required: false
|
||||
|
||||
+21
-20
@@ -3,8 +3,8 @@ type: standalone
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/has207/xenia-edge"
|
||||
upstream: "https://github.com/has207/xenia-edge"
|
||||
source_commit: "62225fd74061634b17f036b87e20558bbadf05f9"
|
||||
profiled_date: "2026-08-10"
|
||||
source_commit: "d059e1771888ce5f3ae2da34521dc5ca416f1c6b"
|
||||
profiled_date: "2026-09-17"
|
||||
core_version: "edge"
|
||||
display_name: "Xenia Edge (Xbox 360)"
|
||||
cores:
|
||||
@@ -22,13 +22,13 @@ notes: |
|
||||
into a xenia-edge component and executes bin/xenia_edge.
|
||||
|
||||
No Xbox 360 system file is read. xboxkrnl, xam and xbdm are C++ HLE modules
|
||||
registered at startup (src/xenia/emulator.cc:382-391), the XEX2 retail and devkit AES
|
||||
keys are constant arrays in the binary (src/xenia/cpu/xex_module.cc:61-66), and every
|
||||
registered at startup (src/xenia/emulator.cc:392-401), the XEX2 retail and devkit AES
|
||||
keys are constant arrays in the binary (src/xenia/cpu/xex_module.cc:67-72), and every
|
||||
XConfig setting is synthesised from cvars and constants by BuildSetting
|
||||
rather than read from a flash image (src/xenia/kernel/xconfig.cc:87-246, 259-272). When the
|
||||
launched title is itself a system title the kernel resolves xam.xex, then
|
||||
$flash_xam.xex, through the guest filesystem under the \SystemRoot symlink
|
||||
pointing at that title's own directory (src/xenia/emulator.cc:737-752); that is a
|
||||
pointing at that title's own directory (src/xenia/emulator.cc:773-788); that is a
|
||||
companion module inside the dump the user launched, not a host-side lookup.
|
||||
|
||||
The fork's data ships inside the executable. assets/font/Inter-VariableFont
|
||||
@@ -36,26 +36,28 @@ notes: |
|
||||
assets/locale catalogues are compiled to .mo at configure time and bundled,
|
||||
with no .mo written next to the binary (src/xenia/ui/CMakeLists.txt:48-76).
|
||||
The UI font is read from that buffer with AddFontFromMemoryTTF
|
||||
(src/xenia/ui/imgui_drawer.cc:378-388), and xe::EmbeddedBundle decodes the SDL controller
|
||||
mappings (src/xenia/hid/sdl/sdl_input_driver.cc:148-165), the canary game patches
|
||||
(src/xenia/patcher/patch_db.cc:304-310), the game-compatibility master.json
|
||||
(src/xenia/ui/imgui_drawer.cc:374-384), and xe::EmbeddedBundle decodes the SDL controller
|
||||
mappings (src/xenia/hid/sdl/sdl_input_driver.cc:147-164), the canary game patches
|
||||
(src/xenia/patcher/patch_db.cc:318-324), the game-compatibility master.json
|
||||
(src/xenia/app/game_compat_db.cc:47-58) and the x360db games.json (src/xenia/app/game_title_db.cc:50-60).
|
||||
|
||||
Three cvars accept a file and name none by default, so nothing is expected at
|
||||
a fixed path: custom_font_path falls back to the embedded Inter
|
||||
(src/xenia/ui/imgui_drawer.cc:39-44, 364-397), mappings_file to the embedded controller DB
|
||||
(src/xenia/hid/sdl/sdl_input_driver.cc:35-38, 148-152), achievement_sound_path leaves the
|
||||
(src/xenia/ui/imgui_drawer.cc:39-44, 360-393), mappings_file to the embedded controller DB
|
||||
(src/xenia/hid/sdl/sdl_input_driver.cc:34-37, 147-151), achievement_sound_path leaves the
|
||||
achievement sound silent (src/xenia/ui/audio_helper.cc:21-24, 38-52). For glyphs the
|
||||
embedded font lacks, the host font comes from the OS: tahoma.ttf and
|
||||
msgothic.ttc out of the Windows fonts folder, or the fontconfig sans-serif and
|
||||
CJK matches on Linux (src/xenia/ui/imgui_drawer.cc:399-481, 483-567).
|
||||
CJK matches on Linux (src/xenia/ui/imgui_drawer.cc:395-477, 479-563).
|
||||
|
||||
Everything under the storage root is written by the emulator or dropped in by
|
||||
the user: xenia-edge.config.toml and per-game .config.toml (src/xenia/config.cc:43-46),
|
||||
patches/*.patch.toml read on top of the embedded set (src/xenia/emulator.cc:377,
|
||||
src/xenia/patcher/patch_db.cc:34-58), plugins/<title id>/plugins.toml behind allow_plugins,
|
||||
patches/*.patch.toml read on top of the embedded set (src/xenia/emulator.cc:387,
|
||||
src/xenia/patcher/patch_db.cc:34-52, 60-75) and listed by the patches panel
|
||||
beside the bundled ones (src/xenia/patcher/patch_db.cc:373-397),
|
||||
plugins/<title id>/plugins.toml behind allow_plugins,
|
||||
which defaults false (src/xenia/patcher/plugin_loader.cc:16-38, 58-72), content, cache0, cache1,
|
||||
scratch and mu (src/xenia/emulator.cc:1442-1501). portable.txt next to the executable
|
||||
scratch and mu (src/xenia/emulator.cc:1478-1537). portable.txt next to the executable
|
||||
keeps the storage root there instead of the user folder
|
||||
(src/xenia/app/xenia_main.cc:524-538).
|
||||
|
||||
@@ -79,7 +81,7 @@ files:
|
||||
system: microsoft-xbox-360
|
||||
required: true
|
||||
description: "DXIL signer and validator from DirectX Shader Compiler 1.9.2602.24"
|
||||
source_ref: "src/xenia/ui/d3d12/d3d12_provider.cc:227-236, src/xenia/gpu/d3d12/pipeline_cache.cc:105-113, src/xenia/ui/redist_installer_wx.cc:79-87, 120-122, src/xenia/ui/redist_installer_wx.cc:174-182, src/xenia/ui/redist_installer_wx.cc:582-614"
|
||||
source_ref: "src/xenia/ui/d3d12/d3d12_provider.cc:267-291, src/xenia/gpu/d3d12/pipeline_cache.cc:112-120, src/xenia/ui/redist_installer_wx.cc:79-87, 120-122, src/xenia/ui/redist_installer_wx.cc:174-182, src/xenia/ui/redist_installer_wx.cc:582-614"
|
||||
note: >-
|
||||
The only shader library the backend still needs. Loaded by full path from
|
||||
the D3D12 folder next to the executable, then by plain name from the
|
||||
@@ -87,9 +89,8 @@ files:
|
||||
D3D12/. D3D12 rejects an unsigned shader, so PipelineCache::Initialize
|
||||
stops when IsSignerAvailable() is false and asks for a recent dxil.dll in
|
||||
the D3D12 folder; that failure propagates to "Failed to setup
|
||||
graphics_system!" (src/xenia/emulator.cc:421-428). Windows defaults to
|
||||
gpu = "d3d12" (src/xenia/emulator.cc:109, the cvar having moved
|
||||
there beside the code that reads it) and the backend factory
|
||||
graphics_system!" (src/xenia/emulator.cc:432-443). Windows defaults to
|
||||
gpu = "d3d12" (src/xenia/emulator.cc:119) and the backend factory
|
||||
only falls back when D3D12GraphicsSystem::IsAvailable() is false, which
|
||||
tests the D3D12 API itself, not the redistributable. Taken from
|
||||
bin/x64/dxil.dll in dxc_2026_05_27.zip of DirectXShaderCompiler release
|
||||
@@ -103,7 +104,7 @@ files:
|
||||
system: microsoft-xbox-360
|
||||
required: true
|
||||
description: "DirectX 12 Agility SDK 1.619.3 runtime"
|
||||
source_ref: "src/xenia/ui/d3d12/d3d12_provider.cc:263-274, src/xenia/ui/windowed_app_main_win.cc:25-28, src/xenia/ui/redist_installer_wx.cc:88-94, 123-126, src/xenia/ui/redist_installer_wx.cc:623-668"
|
||||
source_ref: "src/xenia/ui/d3d12/d3d12_provider.cc:293-305, src/xenia/ui/windowed_app_main_win.cc:25-28, src/xenia/ui/redist_installer_wx.cc:88-94, 123-126, src/xenia/ui/redist_installer_wx.cc:623-668"
|
||||
note: >-
|
||||
The binary exports D3D12SDKVersion 619 and D3D12SDKPath ".\D3D12\", so
|
||||
d3d12.dll loads it at the first device creation. The provider checks for
|
||||
@@ -119,7 +120,7 @@ files:
|
||||
system: microsoft-xbox-360
|
||||
required: false
|
||||
description: "Direct3D 12 debug layer from Agility SDK 1.619.3"
|
||||
source_ref: "src/xenia/ui/d3d12/d3d12_provider.cc:295-323, src/xenia/ui/redist_installer_wx.cc:127-134, src/xenia/ui/redist_installer_wx.cc:670-715"
|
||||
source_ref: "src/xenia/ui/d3d12/d3d12_provider.cc:326-363, src/xenia/ui/redist_installer_wx.cc:127-134, src/xenia/ui/redist_installer_wx.cc:670-715"
|
||||
note: >-
|
||||
Reached only when d3d12_debug is set, which defaults false
|
||||
(src/xenia/ui/d3d12/d3d12_provider.cc:23). Fetching it re-extracts D3D12Core.dll alongside,
|
||||
|
||||
+128
-108
@@ -3,8 +3,8 @@ type: standalone
|
||||
core_classification: other
|
||||
source: "https://github.com/chernandezba/zesarux"
|
||||
upstream: "https://github.com/chernandezba/zesarux"
|
||||
source_commit: "91cce79eb7eea9cc4f5e56b6cc0949d2164a0977"
|
||||
profiled_date: "2026-08-10"
|
||||
source_commit: "331ba12286c008230643ce98a2963bbfe60f3b35"
|
||||
profiled_date: "2026-09-17"
|
||||
core_version: "13.1-SN"
|
||||
display_name: "Sinclair - ZX Spectrum and clones (ZEsarUX)"
|
||||
verification: existence
|
||||
@@ -34,33 +34,33 @@ systems:
|
||||
|
||||
notes: |
|
||||
Multi-machine Sinclair emulator. Every ROM is read from disk at run time;
|
||||
none is compiled into the binary. `rom_load` (src/cpu.c:3158-3751) maps
|
||||
none is compiled into the binary. `rom_load` (src/cpu.c:3203-3803) maps
|
||||
`current_machine_type` to a filename through a switch, then resolves it with
|
||||
`find_sharedfile` (src/utils.c:1310-1348), which searches the current directory,
|
||||
`find_sharedfile` (src/utils.c:1314-1352), which searches the current directory,
|
||||
`../Resources/`, `INSTALL_PREFIX/share/zesarux/` and the directory holding the
|
||||
binary, in that order.
|
||||
|
||||
ZEsarUX ships these files and installs them next to the binary: `src/configure:1909`
|
||||
ZEsarUX ships these files and installs them next to the binary: `src/configure:1921`
|
||||
lists `*.rom`, `zxuno.flash`, `zxmmcplus.flash`, `tbblue.mmc`, `pcw_8x_boot*dsk`,
|
||||
`mantransfev3.bin` and `alternate_roms` in COMMONFILES. A normal install
|
||||
therefore already carries every entry below, which is why they are marked
|
||||
`bundled: true`.
|
||||
|
||||
A missing machine ROM is not fatal: `rom_load` logs an error and returns
|
||||
(src/cpu.c:3420-3428), the panic having been removed deliberately. The machine then
|
||||
(src/cpu.c:3465-3473), the panic having been removed deliberately. The machine then
|
||||
runs on uninitialised memory, so the ROMs the switch names are marked required
|
||||
for the machine they serve. The one hard failure is `prism_failsafe.rom`, which
|
||||
`prism_load_failsafe_rom` loads through its own path and which calls `cpu_panic`
|
||||
when missing or short (src/machines/prism.c:581-590).
|
||||
|
||||
The emulator verifies no hash on any of these files. It does check size: the
|
||||
machine ROMs are compared against `get_rom_size` (src/utils.c:3514-3588) and the
|
||||
machine ROMs are compared against `get_rom_size` (src/utils.c:4084-4158) and the
|
||||
interface ROMs against their own `*_ROM_SIZE` constants, with a mismatch logged
|
||||
as an error. `validation: [size]` is set only where the code makes that
|
||||
comparison.
|
||||
|
||||
`--romfile` (src/start.c:998) overrides the machine ROM with any file the user
|
||||
picks (src/cpu.c:3410-3413); the ROMs under `alternate_roms/` and the extra
|
||||
`--romfile` (src/start.c:4870-4874) overrides the machine ROM with any file the user
|
||||
picks (src/cpu.c:3455-3458); the ROMs under `alternate_roms/` and the extra
|
||||
variants in the install root exist for that path and are documented in the
|
||||
shipped src/ALTERNATEROMS file. Interface ROMs are equally overridable
|
||||
(`--divide-rom`, `--divmmc-rom`, `--dandanator-rom`, `--ifrom-rom`,
|
||||
@@ -68,23 +68,25 @@ notes: |
|
||||
|
||||
ES-DE drives ZEsarUX for its `zxnext` system with `--machine tbblue
|
||||
--tbblue-fast-boot-mode --enable-esxdos-handler`. Fast boot swaps
|
||||
`tbblue_loader.rom` for `48.rom` (src/cpu.c:3263-3264), and the esxdos handler needs
|
||||
`tbblue_loader.rom` for `48.rom` (src/cpu.c:3308-3309), and the esxdos handler needs
|
||||
the divMMC firmware `esxmmc085.rom`, so that path loads `48.rom`, `esxmmc085.rom`
|
||||
and the `tbblue.mmc` card image rather than a dedicated Next ROM.
|
||||
|
||||
ZEsarUX also loads UI and bundled-software resources through the same
|
||||
`find_sharedfile` path: `keyboards/*.bmp` on-screen keyboard art
|
||||
(src/menu/menu_items.c:19210, 21731, 21752), `z88_shortcuts.bmp`
|
||||
(src/video/screen.c:11078) and the `my_soft/` homebrew collection
|
||||
(src/menu/menu_items.c:32146, 32205; src/menu/menu_items_storage.c:582). They are
|
||||
application resources rather than system firmware and carry no entry below.
|
||||
(src/menu/menu_items.c:19258, 21784, 21805), `z88_shortcuts.bmp`
|
||||
(src/video/screen.c:11210), the `my_soft/` homebrew collection
|
||||
(src/menu/menu_items.c:32199, 32258; src/menu/menu_items_storage.c:582), the
|
||||
`copiers/*.zsf` tape copier snapshots (src/menu/menu_items_storage.c:651, 742) and
|
||||
`editionnamegame.tzx` (src/cpu.h:73, src/utils.c:17879). They are application
|
||||
resources rather than system firmware and carry no entry below.
|
||||
`PrismChime.bin` sits in the source tree but no code reads it and COMMONFILES
|
||||
does not install it.
|
||||
|
||||
files:
|
||||
# ============================================================
|
||||
# ZX Spectrum and clones - machine ROMs
|
||||
# rom_load switch, src/cpu.c:3166-3406
|
||||
# rom_load switch, src/cpu.c:3212-3451
|
||||
# ============================================================
|
||||
|
||||
- name: "48.rom"
|
||||
@@ -94,8 +96,8 @@ files:
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
fast_boot: "tbblue"
|
||||
source_ref: "src/cpu.c:3168-3177 (16K/48K, CZ 2000, CZ Spectrum), src/cpu.c:3263 (tbblue fast boot), src/utils.c:3528 (size)"
|
||||
note: "48K BASIC. Also loaded four times over as the TBBlue fast-boot image (src/cpu.c:3543-3551)."
|
||||
source_ref: "src/cpu.c:3213-3222 (16K/48K, CZ 2000, CZ Spectrum), src/cpu.c:3308 (tbblue fast boot), src/utils.c:4098 (size)"
|
||||
note: "48K BASIC. Also loaded four times over as the TBBlue fast-boot image (src/cpu.c:3588-3597)."
|
||||
|
||||
- name: "48es.rom"
|
||||
size: 16384
|
||||
@@ -103,7 +105,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3267-3268, src/utils.c:3528"
|
||||
source_ref: "src/cpu.c:3312-3314, src/utils.c:4098"
|
||||
note: "Spanish 48K+ ROM, selected for MACHINE_ID_SPECTRUM_48_PLUS_SPA."
|
||||
|
||||
- name: "inves.rom"
|
||||
@@ -112,8 +114,8 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3179-3181, src/utils.c:3528"
|
||||
note: "Investronica Inves Spectrum+. Loaded at memoria_spectrum[65536] (src/cpu.c:3441-3447)."
|
||||
source_ref: "src/cpu.c:3224-3227, src/utils.c:4098"
|
||||
note: "Investronica Inves Spectrum+. Loaded at memoria_spectrum[65536] (src/cpu.c:3486-3492)."
|
||||
|
||||
- name: "128.rom"
|
||||
size: 32768
|
||||
@@ -121,7 +123,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3202-3203, src/utils.c:3530"
|
||||
source_ref: "src/cpu.c:3247-3249, src/utils.c:4100"
|
||||
|
||||
- name: "128s.rom"
|
||||
size: 32768
|
||||
@@ -129,7 +131,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3206-3207, src/utils.c:3530"
|
||||
source_ref: "src/cpu.c:3251-3253, src/utils.c:4100"
|
||||
|
||||
- name: "p2.rom"
|
||||
size: 32768
|
||||
@@ -137,7 +139,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3213-3214, src/utils.c:3530"
|
||||
source_ref: "src/cpu.c:3258-3260, src/utils.c:4100"
|
||||
note: "ZX Spectrum +2."
|
||||
|
||||
- name: "p2f.rom"
|
||||
@@ -146,7 +148,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3217-3218, src/utils.c:3530"
|
||||
source_ref: "src/cpu.c:3262-3264, src/utils.c:4100"
|
||||
|
||||
- name: "p2s.rom"
|
||||
size: 32768
|
||||
@@ -154,7 +156,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3221-3222, src/utils.c:3530"
|
||||
source_ref: "src/cpu.c:3266-3268, src/utils.c:4100"
|
||||
|
||||
- name: "p2a40.rom"
|
||||
size: 65536
|
||||
@@ -162,7 +164,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3227-3229, src/utils.c:3532"
|
||||
source_ref: "src/cpu.c:3272-3275, src/utils.c:4102"
|
||||
note: "+2A/+3 ROM v4.0."
|
||||
|
||||
- name: "p2a41.rom"
|
||||
@@ -171,7 +173,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3232-3234, src/utils.c:3532"
|
||||
source_ref: "src/cpu.c:3277-3280, src/utils.c:4102"
|
||||
note: "+2A/+3 ROM v4.1."
|
||||
|
||||
- name: "p2as.rom"
|
||||
@@ -180,7 +182,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3237-3239, src/utils.c:3532"
|
||||
source_ref: "src/cpu.c:3282-3285, src/utils.c:4102"
|
||||
|
||||
- name: "pentagon.rom"
|
||||
size: 32768
|
||||
@@ -188,7 +190,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3271-3272, src/utils.c:3530 (MACHINE_IS_SPECTRUM_128_P2 covers Pentagon, src/cpu.h:545)"
|
||||
source_ref: "src/cpu.c:3316-3318, src/utils.c:4100 (MACHINE_IS_SPECTRUM_128_P2 covers Pentagon, src/cpu.h:545)"
|
||||
|
||||
- name: "se.rom"
|
||||
size: 32768
|
||||
@@ -196,7 +198,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3247-3249, src/utils.c:3536"
|
||||
source_ref: "src/cpu.c:3292-3295, src/utils.c:4106"
|
||||
note: "Chloe 140SE/280SE, SE Basic IV."
|
||||
|
||||
- name: "chrome.rom"
|
||||
@@ -205,7 +207,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3296-3297, src/utils.c:3542"
|
||||
source_ref: "src/cpu.c:3341-3343, src/utils.c:4112"
|
||||
|
||||
- name: "prism.rom"
|
||||
size: 327680
|
||||
@@ -213,8 +215,8 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3258-3259, src/utils.c:3538"
|
||||
note: "20 pages of 16K. Page map documented at src/cpu.c:3512-3528."
|
||||
source_ref: "src/cpu.c:3303-3305, src/utils.c:4108"
|
||||
note: "20 pages of 16K. Page map documented at src/cpu.c:3557-3573."
|
||||
|
||||
- name: "prism_failsafe.rom"
|
||||
size: 16384
|
||||
@@ -222,7 +224,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/machines/prism.h:61, src/machines/prism.c:581-590, src/cpu.c:3536"
|
||||
source_ref: "src/machines/prism.h:61, src/machines/prism.c:581-590, src/cpu.c:3581"
|
||||
note: "Loaded straight after prism.rom by prism_load_failsafe_rom(). The only ROM whose absence is fatal: the loader calls cpu_panic both when the file is missing and when the read is not 16384 bytes."
|
||||
|
||||
- name: "zxuno_bootloader.rom"
|
||||
@@ -230,8 +232,8 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3243-3244, src/cpu.c:3486-3490"
|
||||
size_note: "Read caps at 8192 bytes and only errors when fewer than 1 byte is read, so no exact size check. get_rom_size returns 214 for ZX-Uno (src/utils.c:3534) but that value is unused on this path."
|
||||
source_ref: "src/cpu.c:3288-3290, src/cpu.c:3531-3535"
|
||||
size_note: "Read caps at 8192 bytes and only errors when fewer than 1 byte is read, so no exact size check. get_rom_size returns 214 for ZX-Uno (src/utils.c:4104) but that value is unused on this path."
|
||||
|
||||
- name: "zxevo_tsconf.rom"
|
||||
size: 524288
|
||||
@@ -239,7 +241,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3300-3301, src/utils.c:3544"
|
||||
source_ref: "src/cpu.c:3345-3347, src/utils.c:4114"
|
||||
|
||||
- name: "zxevo_baseconf.rom"
|
||||
size: 524288
|
||||
@@ -247,7 +249,8 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3304-3305, src/utils.c:3546"
|
||||
source_ref: "src/cpu.c:3349-3351, src/utils.c:4116"
|
||||
note: "ZX Evolution BaseConf ROM set. The 13.1 tree ships the Turbo 2+/PentEvo build with New ROM boot v1.06; the 13.0 release shipped the PentEvo edition 2013 image of the same size."
|
||||
|
||||
# ============================================================
|
||||
# ZX Spectrum Next (TBBlue)
|
||||
@@ -259,15 +262,15 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum-next
|
||||
source_ref: "src/cpu.c:3262-3264, src/cpu.c:3553-3559, src/utils.c:3540"
|
||||
note: "FPGA loader, mirrored to 16K at src/cpu.c:3555. Bypassed when --tbblue-fast-boot-mode selects 48.rom instead."
|
||||
source_ref: "src/cpu.c:3307-3310, src/cpu.c:3598-3604, src/utils.c:4110"
|
||||
note: "FPGA loader, mirrored to 16K at src/cpu.c:3600. Bypassed when --tbblue-fast-boot-mode selects 48.rom instead."
|
||||
|
||||
- name: "tbblue.mmc"
|
||||
size: 67108864
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum-next
|
||||
source_ref: "src/menu/menu_items_storage.c:12144-12155, src/configure:1909"
|
||||
source_ref: "src/menu/menu_items_storage.c:12129-12147, src/configure:1921"
|
||||
note: "SD card image carrying the Next system software. Assigned as MMC card 0 by the local-tbblue menu action; the emulator reports 'tbblue.mmc image not found' when absent."
|
||||
size_note: "64 MB, so it needs storage: large_file once the image is acquired and uploaded as a release asset."
|
||||
|
||||
@@ -281,7 +284,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3184-3185, src/utils.c:3528"
|
||||
source_ref: "src/cpu.c:3229-3231, src/utils.c:4098"
|
||||
|
||||
- name: "tk90xs.rom"
|
||||
size: 16384
|
||||
@@ -289,7 +292,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3188-3189, src/utils.c:3528"
|
||||
source_ref: "src/cpu.c:3233-3235, src/utils.c:4098"
|
||||
|
||||
- name: "tk95.rom"
|
||||
size: 16384
|
||||
@@ -297,7 +300,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3192-3193, src/utils.c:3528"
|
||||
source_ref: "src/cpu.c:3237-3239, src/utils.c:4098"
|
||||
|
||||
- name: "tk95es.rom"
|
||||
size: 16384
|
||||
@@ -305,7 +308,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/cpu.c:3196-3197, src/utils.c:3528"
|
||||
source_ref: "src/cpu.c:3241-3243, src/utils.c:4098"
|
||||
|
||||
# ============================================================
|
||||
# Timex
|
||||
@@ -317,7 +320,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: timex-tc2048
|
||||
source_ref: "src/cpu.c:3308-3309, src/utils.c:3528 (TC2048 falls under MACHINE_IS_SPECTRUM_16_48, src/cpu.h:543)"
|
||||
source_ref: "src/cpu.c:3353-3355, src/utils.c:4098 (TC2048 falls under MACHINE_IS_SPECTRUM_16_48, src/cpu.h:543)"
|
||||
|
||||
- name: "ts2068.rom"
|
||||
size: 24576
|
||||
@@ -325,7 +328,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: timex-ts2068
|
||||
source_ref: "src/cpu.c:3253-3255, src/cpu.c:3589-3600, src/utils.c:3548"
|
||||
source_ref: "src/cpu.c:3298-3301, src/cpu.c:3634-3648, src/utils.c:4118"
|
||||
note: "Read as two blocks: 16384 into the main ROM table, then 8192 into the EX ROM table. Serves TS2068 and TC2068."
|
||||
|
||||
- name: "ts1500.rom"
|
||||
@@ -334,7 +337,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: timex-ts1500
|
||||
source_ref: "src/cpu.c:3332-3334, src/utils.c:3564"
|
||||
source_ref: "src/cpu.c:3377-3381, src/utils.c:4134"
|
||||
|
||||
# ============================================================
|
||||
# ZX80 / ZX81 family
|
||||
@@ -347,8 +350,8 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx80
|
||||
source_ref: "src/cpu.c:3312-3317, src/cpu.c:3644-3654, src/utils.c:3560"
|
||||
note: "Serves ZX80, TK80 and TK82. An 8192-byte file is accepted as-is so the ZX81 ROM can run on a ZX80 (src/cpu.c:3648)."
|
||||
source_ref: "src/cpu.c:3357-3362, src/cpu.c:3689-3699, src/utils.c:4130"
|
||||
note: "Serves ZX80, TK80 and TK82. An 8192-byte file is accepted as-is so the ZX81 ROM can run on a ZX80 (src/cpu.c:3693)."
|
||||
|
||||
- name: "zx81.rom"
|
||||
size: 8192
|
||||
@@ -356,7 +359,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-zx81
|
||||
source_ref: "src/cpu.c:3319-3330, src/utils.c:3564"
|
||||
source_ref: "src/cpu.c:3364-3375, src/utils.c:4134"
|
||||
note: "Serves ZX81, Timex TS1000, TK82C, TK83 and the Czerweny CZ 1000/1500 models."
|
||||
|
||||
- name: "tk85.rom"
|
||||
@@ -365,7 +368,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: microdigital-tk85
|
||||
source_ref: "src/cpu.c:3338-3340, src/utils.c:3562"
|
||||
source_ref: "src/cpu.c:3383-3387, src/utils.c:4132"
|
||||
note: "The TK85 test precedes the generic ZX81 test in get_rom_size, so 10240 wins over 8192."
|
||||
|
||||
- name: "zxpand_zx81.rom"
|
||||
@@ -391,7 +394,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: jupiter-ace
|
||||
source_ref: "src/cpu.c:3344-3346, src/utils.c:3566"
|
||||
source_ref: "src/cpu.c:3389-3393, src/utils.c:4136"
|
||||
|
||||
# ============================================================
|
||||
# Sinclair QL, Cambridge Z88, MK14
|
||||
@@ -404,7 +407,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sinclair-ql
|
||||
source_ref: "src/cpu.c:3379-3380, src/cpu.c:3719-3728"
|
||||
source_ref: "src/cpu.c:3424-3429, src/cpu.c:3764-3773"
|
||||
size_note: "Reads up to 131072 bytes and errors only below 16384, so the check is a minimum rather than an exact size."
|
||||
|
||||
- name: "ql_jm.rom"
|
||||
@@ -412,15 +415,32 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-ql
|
||||
source_ref: "src/cpu.c:3383 (commented alternative), src/start.c:998"
|
||||
source_ref: "src/cpu.c:3428 (commented alternative), src/start.c:4870-4874"
|
||||
note: "JM release. Reachable through --romfile; the switch selects ql_js.rom."
|
||||
|
||||
- name: "tkii220.rom"
|
||||
size: 16384
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-ql
|
||||
source_ref: "src/machines/ql.c:1348-1375, src/start.c:5621-5646, src/cpu.c:3797-3801"
|
||||
note: "QJUMP Toolkit II 2.20, the ROM ql.c names as the example for --ql-rom-c000-file. ql_load_extra_roms() runs after the system ROM and reads 16K into memoria_ql at 0xC000 from the path the option gives; the read count is not checked."
|
||||
|
||||
- name: "qsound_V1.94.rom"
|
||||
aliases: ["Qsound_V1.94.rom"]
|
||||
size: 8192
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-ql
|
||||
source_ref: "src/soundchips/qsound.h:50, src/soundchips/qsound.c:329-369, src/start.c:6772-6779, src/cpu.c:3798-3801"
|
||||
note: "QL Qsound firmware, read into memoria_ql at 0xC0000 once --ql-qsound-enabled is set; the read count is not checked and --ql-qsound-rom points the loader at another file. QSOUND_ROM_FILE is spelled qsound_V1.94.rom while the shipped file is Qsound_V1.94.rom, so the default only resolves on a case-insensitive filesystem."
|
||||
|
||||
- name: "Z88OZ47.rom"
|
||||
size: 524288
|
||||
required: true
|
||||
bundled: true
|
||||
system: cambridge-z88
|
||||
source_ref: "src/cpu.c:3350-3352, src/cpu.c:3675-3685"
|
||||
source_ref: "src/cpu.c:3395-3400, src/cpu.c:3720-3730"
|
||||
size_note: "Reads up to 512K and errors only when nothing is read; z88_internal_rom_size is derived from the byte count, so any size is accepted."
|
||||
|
||||
- name: "mk14.rom"
|
||||
@@ -429,7 +449,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: science-of-cambridge-mk14
|
||||
source_ref: "src/cpu.c:3386-3387, src/utils.c:3578"
|
||||
source_ref: "src/cpu.c:3431-3433, src/utils.c:4148"
|
||||
|
||||
# ============================================================
|
||||
# Amstrad CPC and PCW
|
||||
@@ -441,7 +461,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: amstrad-cpc
|
||||
source_ref: "src/cpu.c:3358-3363, src/utils.c:3570"
|
||||
source_ref: "src/cpu.c:3403-3409, src/utils.c:4140"
|
||||
note: "Serves CPC 464 and CPC 4128."
|
||||
|
||||
- name: "cpc664.rom"
|
||||
@@ -450,7 +470,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: amstrad-cpc
|
||||
source_ref: "src/cpu.c:3366-3367, src/utils.c:3572"
|
||||
source_ref: "src/cpu.c:3411-3413, src/utils.c:4142"
|
||||
|
||||
- name: "cpc6128.rom"
|
||||
size: 49152
|
||||
@@ -458,7 +478,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: amstrad-cpc
|
||||
source_ref: "src/cpu.c:3370-3371, src/utils.c:3572"
|
||||
source_ref: "src/cpu.c:3415-3417, src/utils.c:4142"
|
||||
|
||||
- name: "pcw_boot.rom"
|
||||
size: 275
|
||||
@@ -466,15 +486,15 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: pcw
|
||||
source_ref: "src/cpu.c:3390-3396, src/cpu.c:3740-3746, src/utils.c:3580"
|
||||
note: "Boot block the PCW pulls into RAM rather than a mapped ROM (src/cpu.c:3739). Serves PCW 8256 and 8512."
|
||||
source_ref: "src/cpu.c:3435-3441, src/cpu.c:3785-3791, src/utils.c:4150"
|
||||
note: "Boot block the PCW pulls into RAM rather than a mapped ROM (src/cpu.c:3784). Serves PCW 8256 and 8512."
|
||||
|
||||
- name: "pcw_8x_boot1.dsk"
|
||||
size: 194864
|
||||
required: false
|
||||
bundled: true
|
||||
system: pcw
|
||||
source_ref: "src/machines/pcw.c:1431-1469"
|
||||
source_ref: "src/machines/pcw.c:1432-1470"
|
||||
note: "LocoScript boot disc, inserted by pcw_boot_locoscript()."
|
||||
|
||||
- name: "pcw_8x_boot2.dsk"
|
||||
@@ -482,7 +502,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: pcw
|
||||
source_ref: "src/machines/pcw.c:1431-1474"
|
||||
source_ref: "src/machines/pcw.c:1432-1475"
|
||||
note: "CP/M boot disc, inserted by pcw_boot_cpm() with boot end address 0x607."
|
||||
|
||||
# ============================================================
|
||||
@@ -495,7 +515,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sam-coupe
|
||||
source_ref: "src/cpu.c:3374-3376, src/utils.c:3574"
|
||||
source_ref: "src/cpu.c:3419-3422, src/utils.c:4144"
|
||||
|
||||
- name: "atomlite.rom"
|
||||
size: 32768
|
||||
@@ -503,7 +523,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sam-coupe
|
||||
source_ref: "src/cpu.c:3375, src/utils.c:3574"
|
||||
source_ref: "src/cpu.c:3420, src/utils.c:4144"
|
||||
note: "Replaces samcoupe.rom when Atom Lite emulation is on."
|
||||
|
||||
- name: "samram.rom"
|
||||
@@ -534,14 +554,14 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: colecovision
|
||||
source_ref: "src/cpu.c:3275-3276, src/utils.c:3550"
|
||||
source_ref: "src/cpu.c:3320-3322, src/utils.c:4120"
|
||||
|
||||
- name: "sg1000.rom"
|
||||
size: 155
|
||||
required: true
|
||||
bundled: true
|
||||
system: sg-1000
|
||||
source_ref: "src/cpu.c:3279-3280, src/cpu.c:3613-3617"
|
||||
source_ref: "src/cpu.c:3324-3326, src/cpu.c:3658-3662"
|
||||
size_note: "Nothing is read from this file. The SG-1000 branch is empty and the source comment states the file only has to exist for the open to succeed."
|
||||
|
||||
- name: "sms.rom"
|
||||
@@ -550,7 +570,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: sega-mastersystem
|
||||
source_ref: "src/cpu.c:3283-3284, src/utils.c:3554"
|
||||
source_ref: "src/cpu.c:3328-3330, src/utils.c:4124"
|
||||
|
||||
- name: "msx.rom"
|
||||
size: 32768
|
||||
@@ -558,7 +578,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: msx
|
||||
source_ref: "src/cpu.c:3287-3288, src/utils.c:3556"
|
||||
source_ref: "src/cpu.c:3332-3334, src/utils.c:4126"
|
||||
|
||||
- name: "svi.rom"
|
||||
size: 32768
|
||||
@@ -566,7 +586,7 @@ files:
|
||||
required: true
|
||||
bundled: true
|
||||
system: spectravideo
|
||||
source_ref: "src/cpu.c:3291-3293, src/utils.c:3558"
|
||||
source_ref: "src/cpu.c:3336-3339, src/utils.c:4128"
|
||||
note: "Serves SVI-318 and SVI-328."
|
||||
|
||||
# ============================================================
|
||||
@@ -579,7 +599,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/storage/divmmc.c:45, src/storage/divmmc.c:95-103, src/storage/diviface.h:27, src/storage/diviface.c:758-765"
|
||||
source_ref: "src/storage/divmmc.c:45, src/storage/divmmc.c:95-103, src/storage/diviface.h:27, src/storage/diviface.c:778-800"
|
||||
note: "divMMC esxdos firmware, the default when --divmmc-rom is unset. Needed by --enable-esxdos-handler, which the ES-DE zxnext command line sets."
|
||||
|
||||
- name: "esxide085.rom"
|
||||
@@ -588,7 +608,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/storage/divide.c:40, src/storage/divide.c:93, src/storage/diviface.h:27, src/storage/diviface.c:758-765"
|
||||
source_ref: "src/storage/divide.c:40, src/storage/divide.c:93, src/storage/diviface.h:27, src/storage/diviface.c:778-800"
|
||||
note: "divIDE esxdos firmware, the default when --divide-rom is unset."
|
||||
|
||||
- name: "unodos3.rom"
|
||||
@@ -597,7 +617,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/storage/divmmc.c:96-99, src/storage/diviface.h:27, src/storage/diviface.c:758-765"
|
||||
source_ref: "src/storage/divmmc.c:96-99, src/storage/diviface.h:27, src/storage/diviface.c:778-800"
|
||||
note: "divMMC firmware substituted for esxmmc085.rom on Chloe machines."
|
||||
|
||||
- name: "trdos.rom"
|
||||
@@ -606,7 +626,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/storage/betadisk.c:67, src/storage/betadisk.c:400, src/storage/betadisk.h:27, src/storage/betadisk.c:409-416"
|
||||
source_ref: "src/storage/betadisk.c:67, src/storage/betadisk.c:401, src/storage/betadisk.h:27, src/storage/betadisk.c:408-420"
|
||||
note: "Beta Disk / TR-DOS firmware."
|
||||
|
||||
- name: "if1-v1.rom"
|
||||
@@ -644,7 +664,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/storage/zxmmcplus.h:30, src/start.c:1690, src/storage/zxmmcplus.c:756, src/storage/zxmmcplus.c:768-775"
|
||||
source_ref: "src/storage/zxmmcplus.h:30, src/start.c:5950-5953, src/storage/zxmmcplus.c:756-778"
|
||||
note: "ZXMMC+ flash ROM image, the default for --zxmmcplus-flash-file."
|
||||
size_note: "The image holds ROM and RAM together, so the check is ZXMMCPLUS_FLASHROM_SIZE + ZXMMCPLUS_RAM_SIZE, not the 512K ROM constant alone."
|
||||
|
||||
@@ -654,7 +674,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/machines/zxuno.h:29, src/machines/zxuno.h:80, src/start.c:1712, src/cpu.c:3494, src/machines/zxuno.c:1198-1205"
|
||||
source_ref: "src/machines/zxuno.h:29, src/machines/zxuno.h:80, src/start.c:4910-4913, src/cpu.c:3539, src/machines/zxuno.c:1186-1208"
|
||||
note: "ZX-Uno SPI flash image, loaded by zxuno_load_spi_flash() right after the bootloader. Default for --zxunospifile. ZXUNO_SPI_SIZE is 4096 KB."
|
||||
|
||||
# ============================================================
|
||||
@@ -667,7 +687,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/copy_interfaces/multiface.c:224, src/copy_interfaces/multiface.c:232-242, src/menu/menu_items.c:41985-41988"
|
||||
source_ref: "src/copy_interfaces/multiface.c:224, src/copy_interfaces/multiface.c:232-242, src/menu/menu_items.c:42277-42282"
|
||||
note: "Multiface One. The file selector rejects anything that is not exactly 8 KB."
|
||||
|
||||
- name: "mf128.rom"
|
||||
@@ -676,7 +696,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/copy_interfaces/multiface.c:224, src/copy_interfaces/multiface.c:232-242, src/menu/menu_items.c:41985-41988"
|
||||
source_ref: "src/copy_interfaces/multiface.c:224, src/copy_interfaces/multiface.c:232-242, src/menu/menu_items.c:42277-42282"
|
||||
note: "Multiface 128."
|
||||
|
||||
- name: "mf3.rom"
|
||||
@@ -685,7 +705,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/copy_interfaces/multiface.c:224, src/copy_interfaces/multiface.c:232-242, src/menu/menu_items.c:41985-41988"
|
||||
source_ref: "src/copy_interfaces/multiface.c:224, src/copy_interfaces/multiface.c:232-242, src/menu/menu_items.c:42277-42282"
|
||||
note: "Multiface 3."
|
||||
|
||||
- name: "specmate.rom"
|
||||
@@ -817,7 +837,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/menu/menu_items.c:41529-41545"
|
||||
source_ref: "src/menu/menu_items.c:41821-41847"
|
||||
note: "Spectrum program the emulator injects to dump RAM to tape."
|
||||
|
||||
# ============================================================
|
||||
@@ -838,12 +858,12 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/configure:1909"
|
||||
source_ref: "src/configure:1921"
|
||||
note: "General Sound firmware v1.04. Shipped alongside gs105a.rom, but GS_ROM_NAME is fixed and there is no option to point the loader elsewhere, so it is usable only in place of gs105a.rom."
|
||||
|
||||
# ============================================================
|
||||
# Alternate machine ROMs, selectable with --romfile (src/start.c:998,
|
||||
# loaded at src/cpu.c:3410-3413). Documented in the shipped src/ALTERNATEROMS.
|
||||
# Alternate machine ROMs, selectable with --romfile (src/start.c:4870-4874,
|
||||
# loaded at src/cpu.c:3455-3458). Documented in the shipped src/ALTERNATEROMS.
|
||||
# ============================================================
|
||||
|
||||
- name: "80-lec.rom"
|
||||
@@ -851,21 +871,21 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/start.c:998, src/cpu.c:3410-3413"
|
||||
source_ref: "src/start.c:4870-4874, src/cpu.c:3455-3458"
|
||||
|
||||
- name: "tk90x_v1br.rom"
|
||||
size: 16384
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/ALTERNATEROMS:97, src/start.c:998, src/cpu.c:3410-3413"
|
||||
source_ref: "src/ALTERNATEROMS:97, src/start.c:4870-4874, src/cpu.c:3455-3458"
|
||||
|
||||
- name: "tk90x_v2es.rom"
|
||||
size: 16384
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/ALTERNATEROMS:98, src/start.c:998, src/cpu.c:3410-3413"
|
||||
source_ref: "src/ALTERNATEROMS:98, src/start.c:4870-4874, src/cpu.c:3455-3458"
|
||||
note: "Corrected TK90X ROM."
|
||||
|
||||
- name: "tk95es_modif.rom"
|
||||
@@ -873,7 +893,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/ALTERNATEROMS:101-106, src/start.c:998, src/cpu.c:3410-3413"
|
||||
source_ref: "src/ALTERNATEROMS:101-106, src/start.c:4870-4874, src/cpu.c:3455-3458"
|
||||
note: "TK95 Spanish ROM with message and symbol fixes by Rodolfo Edison Guerra."
|
||||
|
||||
- name: "Z88OZ431.rom"
|
||||
@@ -881,49 +901,49 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: cambridge-z88
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:4870-4874"
|
||||
|
||||
- name: "Z88OZ441.rom"
|
||||
size: 524288
|
||||
required: false
|
||||
bundled: true
|
||||
system: cambridge-z88
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:4870-4874"
|
||||
|
||||
- name: "Z88OZ45.rom"
|
||||
size: 524288
|
||||
required: false
|
||||
bundled: true
|
||||
system: cambridge-z88
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:4870-4874"
|
||||
|
||||
- name: "Z88OZ46.rom"
|
||||
size: 524288
|
||||
required: false
|
||||
bundled: true
|
||||
system: cambridge-z88
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:4870-4874"
|
||||
|
||||
- name: "Z88UK220.rom"
|
||||
size: 131072
|
||||
required: false
|
||||
bundled: true
|
||||
system: cambridge-z88
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:4870-4874"
|
||||
|
||||
- name: "Z88UK300.rom"
|
||||
size: 131072
|
||||
required: false
|
||||
bundled: true
|
||||
system: cambridge-z88
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:4870-4874"
|
||||
|
||||
- name: "Z88UK400.rom"
|
||||
size: 131072
|
||||
required: false
|
||||
bundled: true
|
||||
system: cambridge-z88
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:83-92, src/start.c:4870-4874"
|
||||
|
||||
- name: "aszmice07.rom"
|
||||
path: "alternate_roms/aszmice07.rom"
|
||||
@@ -931,7 +951,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx81
|
||||
source_ref: "src/ALTERNATEROMS:4-5, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:4-5, src/start.c:4870-4874"
|
||||
note: "ASZMIC E07 replacement ROM with assembler and debugger. The 4K image is stored twice to reach 8K."
|
||||
|
||||
- name: "sp-rom.rom"
|
||||
@@ -940,7 +960,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx81
|
||||
source_ref: "src/ALTERNATEROMS:7-9, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:7-9, src/start.c:4870-4874"
|
||||
note: "Comprocsys SP ROM add-on card, loaded at address 2000H."
|
||||
|
||||
- name: "ace.rom"
|
||||
@@ -950,7 +970,7 @@ files:
|
||||
bundled: true
|
||||
system: jupiter-ace
|
||||
variant_group: "jupiter-ace-rom"
|
||||
source_ref: "src/ALTERNATEROMS:11-12, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:11-12, src/start.c:4870-4874"
|
||||
note: "Jupiter Ace ROM patched by Dutra Lacerda, distinct from the root ace.rom."
|
||||
|
||||
- name: "opense.rom"
|
||||
@@ -959,7 +979,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/ALTERNATEROMS:14-15, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:14-15, src/start.c:4870-4874"
|
||||
note: "OpenSE BASIC 3.1.2 for the 48K."
|
||||
|
||||
- name: "sebasic4_rom1.rom"
|
||||
@@ -968,7 +988,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/ALTERNATEROMS:18-19, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:18-19, src/start.c:4870-4874"
|
||||
note: "SE BASIC 4.1.0 standalone ROM 1 for the 48K."
|
||||
|
||||
- name: "derby_p_32K.rom"
|
||||
@@ -977,7 +997,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/ALTERNATEROMS:21-23, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:21-23, src/start.c:4870-4874"
|
||||
note: "Derby+ for 128K machines with 32K of ROM."
|
||||
|
||||
- name: "derby_pp_64K.rom"
|
||||
@@ -986,7 +1006,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/ALTERNATEROMS:21-23, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:21-23, src/start.c:4870-4874"
|
||||
note: "Derby++ for 128K machines with 64K of ROM."
|
||||
|
||||
- name: "plus2c.rom"
|
||||
@@ -995,7 +1015,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/ALTERNATEROMS:40-41, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:40-41, src/start.c:4870-4874"
|
||||
note: "Unofficial +2C ROM by Andrew Owen, for 128K/+2."
|
||||
|
||||
- name: "plus2b.rom"
|
||||
@@ -1004,7 +1024,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/ALTERNATEROMS:46-76, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:46-76, src/start.c:4870-4874"
|
||||
note: "+2B ROM set for +2A/+3: 128 editor, 48K BASIC, BBC BASIC, OpenSE BASIC 3.1.1."
|
||||
|
||||
- name: "plus3e_mmcen3eE.rom"
|
||||
@@ -1013,7 +1033,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/menu/menu_items.c:30627-30630, src/ALTERNATEROMS:26-30"
|
||||
source_ref: "src/cpu.h:365, src/menu/menu_items.c:30678-30688, src/ALTERNATEROMS:26-30"
|
||||
note: "+3e v1.38 English for MMC. Resolved by name through find_sharedfile for the +2e/+3e MMC machine preset."
|
||||
|
||||
- name: "plus3e_mmces3eE.rom"
|
||||
@@ -1022,7 +1042,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/ALTERNATEROMS:26-30, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:26-30, src/start.c:4870-4874"
|
||||
note: "+3e v1.38 Spanish for MMC."
|
||||
|
||||
- name: "plus3e_sm8en3eE.rom"
|
||||
@@ -1031,7 +1051,7 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/ALTERNATEROMS:32-36, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:32-36, src/start.c:4870-4874"
|
||||
note: "+3e v1.38 English for simple 8-bit IDE."
|
||||
|
||||
- name: "plus3e_sm8es3eE.rom"
|
||||
@@ -1040,5 +1060,5 @@ files:
|
||||
required: false
|
||||
bundled: true
|
||||
system: sinclair-zx-spectrum
|
||||
source_ref: "src/ALTERNATEROMS:32-36, src/start.c:998"
|
||||
source_ref: "src/ALTERNATEROMS:32-36, src/start.c:4870-4874"
|
||||
note: "+3e v1.38 Spanish for simple 8-bit IDE."
|
||||
Reference in new issue
Block a user