feat: reprofile linapple, extend pom2 card roms

This commit is contained in:
Abdessamad Derraz committed 2026-10-04 17:03:21 +02:00
1 parent 8663277871
commit 89b8a1f056
3 files changed
+558 -233

No files matched your search

+253 -106
View File
@@ -3,8 +3,8 @@ type: standalone
core_classification: community_fork
source: "https://github.com/linappleii/linapple"
upstream: "https://github.com/AppleWin/AppleWin"
profiled_date: "2026-09-04"
source_commit: "be9d1d2f3e26c1ef1f1bdc13455ea02954cd2109"
profiled_date: "2026-10-04"
source_commit: "02f948d92b0c4df3272ff2ccb0dfcc4daac3e430"
core_version: "3.0.0"
display_name: "Apple - Apple II (LinApple)"
cores:
@@ -14,57 +14,77 @@ systems:
mode: standalone
notes: |
SDL port of AppleWin for Linux. The tree was taken off SourceForge by
maxolasersquad, forked further by several users, and now sits under the
linappleii namespace (README.md:8-22). Five frontends build from one core:
sdl1, sdl2, sdl3, tui and headless (src/frontends/).
SDL port of AppleWin for Linux. The SourceForge project was abandoned and
its forks were gathered under the linappleii organization
(README.md:163-170). Five frontends build from one core: sdl1, sdl2, sdl3,
tui and headless (src/frontends/).
Every ROM is still compiled into the binary, but no longer as a hand-written
byte array. scripts/generate_roms.sh turns res/roms/*.rom into EmbeddedRoms.h
and EmbeddedRoms.cpp at build time (CMakeLists.txt:280-297), each image behind
an ENABLE_ROM_* macro. The relocation preserved the bytes: every hash this
profile recorded against the old string literals matches the .rom file that
replaced it.
The ROMs the emulator runs are compiled into the binary.
scripts/generate_roms.sh turns res/roms/*.rom into EmbeddedRoms.h and
EmbeddedRoms.cpp, once at configure time and again at build time
(CMakeLists.txt:308-346), each image behind an ENABLE_ROM_* macro
(scripts/generate_roms.sh:97-119). Nineteen images go through the generator:
ten system ROMs, four character generator ROMs and five card ROMs. The
printer card and the clock card carry their firmware as arrays in their own
source files (src/apple2/peripherals/printer/Printer.cpp:30,
src/apple2/peripherals/clock/ClockCard.cpp:20), and the Mockingboard
registers no ROM.
What that macro is set to decides whether a machine model runs at all.
CMakeLists.txt:43-148 leaves the Apple ][, ][+, J-Plus, //e and Enhanced //e
system ROMs ON, along with the Disk II, Super Serial Card, mouse,
Mockingboard, printer and clock firmware. The three clone options are OFF:
ENABLE_ROM_CLONE_BASE64A, ENABLE_ROM_CLONE_PRAVETS and
ENABLE_ROM_CLONE_TK3000E (CMakeLists.txt:81-83). Selecting one of those
machine types on a default build reaches mem_initialize with no rom_data,
which prints the model name and its cmake flag, destroys the context and
returns -1 (src/apple2/Memory.cpp:1252-1261). The message offers two ways
out, and the second is a file: -R, --rom <file> loads a system ROM at
runtime (src/frontends/common/AppArgs.cpp:87).
What a macro is set to decides whether a machine model runs at all.
CMakeLists.txt:57-145 leaves the Apple ][, ][+, J-Plus, //e and Enhanced //e
system ROMs ON, along with the Disk II, Super Serial Card and mouse
firmware. The three clone options are OFF: ENABLE_ROM_CLONE_BASE64A,
ENABLE_ROM_CLONE_PRAVETS and ENABLE_ROM_CLONE_TK3000E
(CMakeLists.txt:95-97). Selecting one of those machine types on a default
build reaches mem_initialize with no rom_data, which prints the model name
and its cmake flag, destroys the context and returns -1
(src/apple2/Memory.cpp:1124-1134). The message offers two ways out, and the
second is a file: -R, --rom <file> loads a system ROM at runtime
(src/frontends/common/AppArgs.cpp:77,186).
A custom ROM takes precedence over anything embedded. mem_initialize accepts
it at exactly 16384 or 12288 bytes, or larger, taking the trailing 16384 for
the //e-class types and the trailing 12288 otherwise
(src/apple2/Memory.cpp:1165-1186). Below 12288 nothing is selected and the
machine fails to start. No hash or name is checked; the file is whatever the
user points at.
A custom ROM takes precedence over anything embedded. load_custom_rom opens
the path as given, then through Path::find_data_file, and refuses a file
below 12288 or above 65536 bytes, which stops the start
(src/frontends/common/AppController.cpp:104-148,228-230). mem_initialize
accepts the buffer at exactly 16384 or 12288 bytes, or larger, taking the
trailing 16384 for the //e-class types and the trailing 12288 otherwise
(src/apple2/Memory.cpp:1038-1059). No hash or name is checked; the file is
whatever the user points at.
Character generators are res/charset40*.png, converted to XPM by CMake and
included at src/apple2/Video.cpp:37-41. One of five is chosen from the
machine type and the keyboard language (src/apple2/Video.cpp:1242-1266).
The status font is an XPM as well (src/core/Asset.cpp:22,44).
Character generators are res/charset40*.png, converted to XPM by CMake
(CMakeLists.txt:277-306) and included at src/apple2/Video.cpp:39-43. One of
five is chosen from the machine type and the keyboard language
(src/apple2/Video.cpp:1228-1252). The status font and the splash screen are
XPM as well (src/core/Asset.cpp:15-16,57,63). The four *_Video.rom images
are compiled in, and no source file reads their symbols.
Master.dsk is inserted into slot 6 drive 1 at startup. asset_find_master_disk
resolves it through Path::find_data_file (src/core/Asset.cpp:80-93), which
Master.dsk is inserted into slot 6 drive 1 at startup unless the command
line names a disk or the configuration autoloads one
(src/frontends/common/AppController.cpp:171-192). asset_find_master_disk
resolves it through Path::find_data_file (src/core/Asset.cpp:25-39), which
walks the user data and config directories, the executable directory and its
res/ neighbours, the share and etc prefixes, the compiled-in SOURCE_RES_DIR,
ASSET_DIR, SYSCONF_DIR and SYS_DIR, then every XDG_CONFIG_DIRS entry
(src/core/Util_Path.h:86-130). The same search serves icon.bmp.
res/ neighbours, the share and etc prefixes beside it, the compiled-in
SOURCE_RES_DIR, /usr/local/share/linapple, /usr/share/linapple, every
XDG_CONFIG_DIRS entry and /etc/linapple (src/core/Util_Path.h:116-179). The
same search serves icon.bmp and a --rom path that does not open as given.
The debugger reads its symbol tables through g_state.program_dir, declared at
src/core/LinAppleCore.h:159 and read in four places without ever being
The debugger reads its symbol tables through system_state.program_dir,
declared at src/core/LinAppleCore.h:103 and read without ever being
assigned, so the names resolve against the working directory.
g_file_name_symbols lists nine tables (src/Debugger/Debugger_Symbols.cpp:64-74)
and CmdSymbolsLoad preloads a table when the debugger calls it with no
arguments (src/Debugger/Debugger_Symbols.cpp:664-681). ParseSymbolTable opens
the file with fopen and a missing one leaves the debugger running without its
symbols (src/Debugger/Debugger_Symbols.cpp:524).
g_file_name_symbols lists nine tables (src/Debugger/Debugger_Symbols.cpp:37-48).
CmdSymbolsLoad reads a table's default file when it receives no argument
(src/Debugger/Debugger_Symbols.cpp:636-652); its only caller is the LOAD
parameter of the SYM commands (src/Debugger/Debugger_Symbols.cpp:817-819),
and debug_initialize loads no table (src/Debugger/Debug.cpp:29-37).
ParseSymbolTable opens the file with fopen and a missing one leaves the
debugger running without its symbols (src/Debugger/Debugger_Symbols.cpp:495).
Peripheral cards are linked into the executable by default. With
BUILD_SHARED_PERIPHERALS, OFF at CMakeLists.txt:43, each card builds as a
shared object, and peripheral_plugins_init opens every *.so found in the
plugin search paths in either build
(src/apple2/peripherals/Peripheral_Internal.cpp:192-219,
src/core/Util_Path.h:102-114).
linapple.conf carries preferences only (src/core/Registry.cpp,
src/frontends/common/AppEnvironment.cpp). Each accessor returns a compiled-in
@@ -77,9 +97,9 @@ files:
min_size: 143105
max_size: 143364
validation: [size]
source_ref: "src/core/Asset.cpp:25,80-93,96-99"
source_ref: "src/core/Asset.cpp:20,25-39,97-112; src/apple2/peripherals/disk/formats/SectorDiskImage.cpp:65-66,79-82"
note: >
asset_find_master_disk warns and returns non-zero when no search path
asset_find_master_disk warns and returns false when no search path
holds the file, and the emulator starts with an empty drive. No hash or
content check is performed. LinApple and Batocera ship different images
under this name, both 143360 bytes.
@@ -90,45 +110,46 @@ files:
size: 2102
md5: be7a389c5aa678f5e6ce4748593b0a29
sha1: 5aee3a718f3d541122b61b9b8203e8a28db97a34
source_ref: "src/frontends/sdl2/SDL_Asset.cpp:10-25,34-40"
source_ref: "src/frontends/sdl2/SDL_Asset.cpp:18-41,55-69"
note: >
asset_load_bmp resolves the name through Path::find_data_file, prints a
warning to stderr when no search path holds it and returns nullptr. The
sdl1 and sdl2 frontends load it; sdl3 declares the same helper. Absence
costs the window its icon and nothing else.
sdl_asset_load_bmp resolves the name through Path::find_data_file,
prints a warning to stderr when no search path holds it and returns
nullptr. The sdl1, sdl2 and sdl3 frontends each load it when the window
is created. Absence costs the window its icon and nothing else.
- name: APPLE2E.SYM
required: false
description: "Debugger symbol table for the main ROM"
source_ref: "src/Debugger/Debugger_Symbols.cpp:64-74,664-681"
source_ref: "src/Debugger/Debugger_Symbols.cpp:37-48,636-652"
note: >
Preloaded into the Main table when the debugger calls CmdSymbolsLoad with
no arguments. Parsed as text lines of address and symbol name, with no
size or hash check.
Read into the Main table when SYMMAIN LOAD is entered without a file
name. Parsed as text lines of address and symbol name, with no size or
hash check.
- name: A2_BASIC.SYM
required: false
description: "Debugger symbol table for Applesoft BASIC"
source_ref: "src/Debugger/Debugger_Symbols.cpp:64-74,664-681"
source_ref: "src/Debugger/Debugger_Symbols.cpp:37-48,636-652"
note: >
Preloaded into the Basic table when the debugger calls CmdSymbolsLoad with
no arguments. Parsed as text lines of address and symbol name, with no
size or hash check.
Read into the Basic table when SYMBASIC LOAD is entered without a file
name. Parsed as text lines of address and symbol name, with no size or
hash check.
# System ROMs the default build leaves out. ENABLE_ROM_CLONE_BASE64A,
# ENABLE_ROM_CLONE_PRAVETS and ENABLE_ROM_CLONE_TK3000E are OFF in
# CMakeLists.txt:81-83, so these machine types refuse to start unless the
# CMakeLists.txt:95-97, so these machine types refuse to start unless the
# user passes the image with --rom. The names are the ones upstream gives
# the images in res/roms; the option takes a path and checks no name.
- name: Base64A.rom
required: false
description: "Copam Base 64A clone system ROM, supplied with --rom"
min_size: 12288
max_size: 65536
validation: [size]
size: 49152
md5: 352fdbcae14c6a8c0398822c7a273309
sha1: f1c779af480b5bda2bdd03950c1201a5c5143bea
source_ref: "CMakeLists.txt:81,85-89; src/apple2/Memory.cpp:96-97,1165-1186,1252-1261"
source_ref: "CMakeLists.txt:95,99-103; scripts/generate_roms.sh:107; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:99-100,1038-1059,1124-1134"
note: >
Larger than a system ROM: mem_initialize takes the trailing 12288 bytes
for this machine type.
@@ -137,31 +158,34 @@ files:
required: false
description: "Pravets 82 clone system ROM, supplied with --rom"
min_size: 12288
max_size: 65536
validation: [size]
size: 12288
md5: c619b7edfcf021f3b8fd20d9386676ba
sha1: 8bd7ced83e209a15e9b19a05a5ef4b8e996dc1a5
source_ref: "CMakeLists.txt:82,91-95; src/apple2/Memory.cpp:98-99,1165-1186,1252-1261"
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:109; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:101-102,1038-1059,1124-1134"
- name: PRAVETS8M.ROM
required: false
description: "Pravets 8M clone system ROM, supplied with --rom"
min_size: 12288
max_size: 65536
validation: [size]
size: 12288
md5: 76c79535f7cf77973e2c711aa977a124
sha1: f1b4ff018acf95f3355f0d575b66a188d728b687
source_ref: "CMakeLists.txt:82,91-95; src/apple2/Memory.cpp:100-101,1165-1186,1252-1261"
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:111; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:103-104,1038-1059,1124-1134"
- name: PRAVETS8C.ROM
required: false
description: "Pravets 8C clone system ROM, supplied with --rom"
min_size: 12288
max_size: 65536
validation: [size]
size: 16384
md5: 1896d7b98dd940c89f7c8ea899b71006
sha1: c976fe56e57706c161f513a82ba3e0d8cda83904
source_ref: "CMakeLists.txt:82,91-95; src/apple2/Memory.cpp:102-103,1165-1186,1252-1261"
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:110; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:105-106,1038-1059,1124-1134"
note: >
A //e-class type: mem_initialize takes the trailing 16384 bytes when the
file is larger.
@@ -170,11 +194,12 @@ files:
required: false
description: "Microdigital TK-3000 //e clone system ROM, supplied with --rom"
min_size: 12288
max_size: 65536
validation: [size]
size: 16384
md5: 8d84b614b545d4eec8799d3f325332cb
sha1: f163e5753c18ff0e812a448e8da406f102600edf
source_ref: "CMakeLists.txt:83,97-101; src/apple2/Memory.cpp:104-105,1165-1186,1252-1261"
source_ref: "CMakeLists.txt:97,111-115; scripts/generate_roms.sh:112; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:107-108,1038-1059,1124-1134"
note: >
A //e-class type: mem_initialize takes the trailing 16384 bytes when the
file is larger.
@@ -183,8 +208,8 @@ analysis:
embedded_roms:
mechanism: >
res/roms/*.rom compiled into EmbeddedRoms.cpp by scripts/generate_roms.sh
at build time, each behind an ENABLE_ROM_* macro
source_ref: "CMakeLists.txt:43-148,280-297; scripts/generate_roms.sh"
at configure and build time, each behind an ENABLE_ROM_* macro
source_ref: "CMakeLists.txt:57-145,308-346; scripts/generate_roms.sh:97-119"
extraction: "hashes computed from the res/roms images the generator reads"
system_roms:
@@ -194,7 +219,7 @@ analysis:
image: res/roms/Apple2.rom
cmake_option: ENABLE_ROM_APPLE2
default: on
source_ref: "src/apple2/Memory.cpp:1189-1193"
source_ref: "src/apple2/Memory.cpp:1062-1066"
size: 12288
md5: 3c406514b9806a7c57ee65fb0b0c39b4
sha1: 09288be705464b608ff190519ab008d3dfcd1b05
@@ -205,7 +230,7 @@ analysis:
image: res/roms/Apple2_Plus.rom
cmake_option: ENABLE_ROM_APPLE2PLUS
default: on
source_ref: "src/apple2/Memory.cpp:1195-1199"
source_ref: "src/apple2/Memory.cpp:1068-1072"
size: 12288
md5: 572b3005a4fa49bc54917b069b82c1ab
sha1: 33a24f5489ba9195b44be77d9afb2252594cb5c7
@@ -216,7 +241,7 @@ analysis:
image: res/roms/Apple2_JPlus.rom
cmake_option: ENABLE_ROM_APPLE2_JPLUS
default: on
source_ref: "src/apple2/Memory.cpp:1201-1205"
source_ref: "src/apple2/Memory.cpp:1074-1078"
size: 12288
md5: f3e8237eca3809bec2a42b984a1332a8
sha1: ad200b3263d08e7235d0871c8595963a07adc905
@@ -227,7 +252,7 @@ analysis:
image: res/roms/Apple2e.rom
cmake_option: ENABLE_ROM_APPLE2E
default: on
source_ref: "src/apple2/Memory.cpp:1207-1211"
source_ref: "src/apple2/Memory.cpp:1080-1084"
size: 16384
md5: 346bc782c6a08a531c460e33bc03daf4
sha1: 61fa9254628e5bb7236fb474006116d67684d747
@@ -239,65 +264,185 @@ analysis:
image: res/roms/Apple2e_Enhanced.rom
cmake_option: ENABLE_ROM_APPLE2ENHANCED
default: on
source_ref: "src/apple2/Memory.cpp:1213-1217"
source_ref: "src/apple2/Memory.cpp:1086-1090"
size: 16384
md5: 38063e08c778503fc03ecebb979769e9
sha1: b8ea90abe135a0031065e01697c4a3a20d51198b
note: "First 4 KB loaded as internal Cx ROM, remaining 12 KB at $D000"
- symbol: g_rom_clone_base64a
machine: "Base64A"
machine_type: A2TYPE_CLONE_BASE64A
image: res/roms/Base64A.rom
cmake_option: ENABLE_ROM_CLONE_BASE64A
default: off
source_ref: "src/apple2/Memory.cpp:1092-1098"
note: "Trailing 12288 bytes of the image are used"
- symbol: g_rom_clone_pravets82
machine: "Pravets 82"
machine_type: A2TYPE_CLONE_PRAVETS82
image: res/roms/PRAVETS82.ROM
cmake_option: ENABLE_ROM_CLONE_PRAVETS
default: off
source_ref: "src/apple2/Memory.cpp:1099-1103"
- symbol: g_rom_clone_pravets8m
machine: "Pravets 8M"
machine_type: A2TYPE_CLONE_PRAVETS8M
image: res/roms/PRAVETS8M.ROM
cmake_option: ENABLE_ROM_CLONE_PRAVETS
default: off
source_ref: "src/apple2/Memory.cpp:1104-1107"
- symbol: g_rom_clone_pravets8c
machine: "Pravets 8C"
machine_type: A2TYPE_CLONE_PRAVETS8C
image: res/roms/PRAVETS8C.ROM
cmake_option: ENABLE_ROM_CLONE_PRAVETS
default: off
source_ref: "src/apple2/Memory.cpp:1108-1112"
- symbol: g_rom_clone_tk3000e
machine: "TK3000 //e"
machine_type: A2TYPE_CLONE_TK3000E
image: res/roms/TK3000e.rom
cmake_option: ENABLE_ROM_CLONE_TK3000E
default: off
source_ref: "src/apple2/Memory.cpp:1113-1118"
video_roms:
note: >
Compiled in under the macro of their machine. No source file reads
the symbols; the display uses the character_generators below.
images:
- symbol: g_rom_apple2_video
image: res/roms/Apple2_Video.rom
cmake_option: ENABLE_ROM_APPLE2
default: on
source_ref: "scripts/generate_roms.sh:98"
size: 2048
md5: 9ac0dc8c4d0002eb45b0b84be0bde5ec
sha1: f9d312f128c9557d9d6ac03bfad6c3ddf83e5659
- symbol: g_rom_apple2_jplus_video
image: res/roms/Apple2_JPlus_Video.rom
cmake_option: ENABLE_ROM_APPLE2_JPLUS
default: on
source_ref: "scripts/generate_roms.sh:101"
size: 2048
md5: 271e2c9bf928b95e7baeff391db45495
sha1: 0a382be58db5215c4a3de53b19a72fab660d5da2
- symbol: g_rom_apple2e_enhanced_video
image: res/roms/Apple2e_Enhanced_Video.rom
cmake_option: ENABLE_ROM_APPLE2ENHANCED
default: on
source_ref: "scripts/generate_roms.sh:104"
size: 4096
md5: 9123fff3442c0e688cc6816be88dd4ab
sha1: b2b5d87f52693817fc747df087a4aa1ddcdb1f10
- symbol: g_rom_clone_base64a_german_video
image: res/roms/Base64A_German_Video.rom
cmake_option: ENABLE_ROM_CLONE_BASE64A
default: off
source_ref: "scripts/generate_roms.sh:108"
size: 4096
md5: 4b45852b369e2afd864a02d0d91f70dc
sha1: 87ca8135f7526ddf829f9c2c4f7dbe4d568818fc
peripheral_firmware:
- device: "Parallel printer card"
slot: 1
image: res/roms/Parallel.rom
cmake_option: ENABLE_ROM_PRINTER
- device: "Disk II controller, 16 sector boot ROM"
slot: 6
symbol: g_rom_disk2
image: res/roms/DISK2.rom
cmake_option: ENABLE_ROM_DISK2
default: on
source_ref: "CMakeLists.txt:134,136-140"
source_ref: "CMakeLists.txt:118,121-125; scripts/generate_roms.sh:115; src/apple2/peripherals/disk/Disk.cpp:1125-1127"
size: 256
md5: 5902996f16dc78fc013f6e1db14805b3
sha1: c75c751589cbcc1ad4ab4f63676af7abadd86f5b
md5: 2020aa1413ff77fe29353f3ee72dc295
sha1: d4181c9f046aafc3fb326b381baac809d9e38d16
- device: "Disk II controller, P6 sequencer PROM"
slot: 6
symbol: g_rom_disk2_p6
image: res/roms/DISK2-P6.rom
cmake_option: ENABLE_ROM_DISK2
default: on
source_ref: "scripts/generate_roms.sh:117; src/apple2/peripherals/disk/Disk.cpp:618-624; CMakeLists.txt:942-955"
size: 256
md5: 5f1be0c1cdff26f5956eef9643911886
sha1: bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4
note: >
The controller state machine reads its opcodes from this image. A
build test pins its SHA-1 and its size. Without ENABLE_ROM_DISK2 the
sequencer returns a constant and the data register never moves.
- device: "Disk II controller, 13 sector boot ROM"
symbol: g_rom_disk2_13sector
image: res/roms/DISK2-13sector.rom
cmake_option: ENABLE_ROM_DISK2
default: on
source_ref: "scripts/generate_roms.sh:116"
size: 256
md5: 4f80448507cf43ab40c17ac08d89e278
sha1: afd060e6f35faf3bb0146fa889fc787adf56330a
note: "Compiled in; no source file reads the symbol"
- device: "Super Serial Card"
slot: 2
symbol: g_rom_ssc
image: res/roms/SSC.rom
cmake_option: ENABLE_ROM_SSC
default: on
source_ref: "CMakeLists.txt:105,112-116"
source_ref: "CMakeLists.txt:119,127-131; scripts/generate_roms.sh:118; src/apple2/peripherals/super_serial_card/SuperSerial.cpp:250-254"
size: 2048
md5: 67c0d61ab0911183faf05270f881a97e
sha1: 6dab633470c6bc4cb3e81d09fda46597caf8ee57
- device: "Mouse interface card"
slot: 4
symbol: g_rom_mouse_interface
image: res/roms/MouseInterface.rom
cmake_option: ENABLE_ROM_MOUSE
default: on
source_ref: "CMakeLists.txt:119,122-126"
source_ref: "CMakeLists.txt:133,135-139; scripts/generate_roms.sh:119; src/apple2/peripherals/mouse/Mouse.cpp:537-541"
size: 2048
md5: 22563ab338024dac7b03510371d49c57
sha1: 3a9d881a8a8d30f55b9719aceebbcf717f829d6f
- device: "Disk II controller, 16 sector"
slot: 6
image: res/roms/DISK2.rom
cmake_option: ENABLE_ROM_DISK2
default: on
source_ref: "CMakeLists.txt:104,107-111"
- device: "Parallel printer card"
slot: 1
symbol: printer_rom
image: res/roms/Parallel.rom
source_ref: "src/apple2/peripherals/printer/Printer.cpp:30-53,215; CMakeLists.txt:881-883"
size: 256
md5: 2020aa1413ff77fe29353f3ee72dc295
sha1: d4181c9f046aafc3fb326b381baac809d9e38d16
md5: 5902996f16dc78fc013f6e1db14805b3
sha1: c75c751589cbcc1ad4ab4f63676af7abadd86f5b
note: >
Not generated and behind no cmake option: the card carries the 256
bytes as an array in Printer.cpp. The generator does not read
res/roms/Parallel.rom; a build test pins its SHA-1 as the reference
of that transcription.
- device: "Clock card"
symbol: clock_rom
source_ref: "src/apple2/peripherals/clock/ClockCard.cpp:19-29,158"
note: >
A 256-byte page written in ClockCard.cpp that answers the ProDOS
ThunderClock identification and read entry points. No image under
res/roms backs it.
character_generators:
mechanism: "PNG converted to XPM by CMake, included at src/apple2/Video.cpp:37-41"
selection: "machine type, then keyboard language (src/apple2/Video.cpp:1242-1266)"
mechanism: "PNG converted to XPM by CMake, included at src/apple2/Video.cpp:39-43"
selection: "machine type, then keyboard language (src/apple2/Video.cpp:1228-1252)"
accepted_geometry: "128x128, or 128x256 for the Euro ROMs carrying a second language"
images:
- filename: charset40.png
used_for: "Apple //e and Enhanced //e, English (US)"
used_for: "Apple //e class machines, English (US)"
size: 2745
md5: c6029ef4d4fa272083769673bdcf2b6c
sha1: d79aa8af6446c3637401cb75ffdda92fdf7f3853
- filename: charset40_IIplus.png
used_for: "Apple ][ and Apple ][+"
used_for: "Apple ][, Apple ][+ and Apple ][ J-Plus"
size: 1956
md5: 2104f293d5df7137fdd579ea405da847
sha1: bc9aa5cbadfcffe82b5b20ce954555b9d07fa260
@@ -318,36 +463,38 @@ analysis:
sha1: f86bd5238604247e04d616850f244b489daef18d
symbol_tables:
source_ref: "src/Debugger/Debugger_Symbols.cpp:64-74"
lookup: "g_state.program_dir + filename, and g_state.program_dir is never assigned"
preloaded_at_init:
source_ref: "src/Debugger/Debugger_Symbols.cpp:37-48"
lookup: "system_state.program_dir + filename, and system_state.program_dir is never assigned"
loaded_on_command:
- APPLE2E.SYM
- A2_BASIC.SYM
- A2_USER1.SYM
loaded_on_command:
- A2_ASM.SYM
- A2_USER1.SYM
- A2_USER2.SYM
- A2_SRC1.SYM
- A2_SRC2.SYM
- A2_DOS33.SYM
- A2_PRODOS.SYM
note: >
Only APPLE2E.SYM and A2_BASIC.SYM are distributed with the emulator, in
res/. The user slots and the remaining tables have no shipped counterpart.
Each table is read by the LOAD parameter of its SYM command; no table is
loaded when the debugger starts. Only APPLE2E.SYM and A2_BASIC.SYM are
distributed with the emulator, in res/. The user slots and the remaining
tables have no shipped counterpart.
generated_files:
written_only:
- AppleWin.log
- linapple.log
- Profile.txt
- Trace.txt
- AppleWin_Text40.txt
- AppleWin_Text80.txt
- Printer.txt
- "save states"
- "printer spool file"
- "FTP directory cache"
written_and_read_back:
- LinAppleDebugger.cfg
note: "Produced by the emulator, none is user-supplied"
note: >
Produced by the emulator, none is user-supplied. CmdConfigSave builds
the LinAppleDebugger.cfg path and passes it to no open call
(src/Debugger/Debugger_Cmd_Config.cpp:218-221).
unused_resources:
- filename: font.bmp
+268 -90
View File
@@ -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-17"
source_commit: "95cdbd1dc18b86a6b347dacd513503ac8ed73921"
core_version: "0.9.3"
profiled_date: "2026-10-04"
source_commit: "c2ce3f685cf3c7429de7341b2b3df65e9981b907"
core_version: "0.9.4"
display_name: "Apple - Apple II (POM2)"
cores:
- pom2
@@ -38,57 +38,69 @@ 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 (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,
panel opens (src/MainWindow.cpp:328-336). A first run with no //e image
falls back to the ][+ chain (src/MainWindow.cpp:233-246).
Memory::loadAppleIIRom (src/Memory.cpp:174-237) 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 (src/CharRomCatalog.cpp:42-79,
picked in the toolbar (src/CharRomCatalog.cpp:42-91,
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,
and 8 KB dumps (src/Memory.cpp:325-358); 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 (src/SlotCardFactory.cpp).
The Disk II carries the 341-0027-A boot PROM and the 16-sector P6
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)
sequencer built in (src/DiskIICard.cpp:136-149). CFFA, Liron,
Workstation, the MC68705 mouse card, the 1981 Grappler, the Apple
Parallel Interface and the Videx Videoterm leave the slot empty without
their dump; Grappler+, ThunderClock+ and the Super Serial Card run a
synthetic ROM instead, and TransWarp accelerates without its boot
firmware. 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 (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).
Help > Download missing ROMs (src/RomFetch.cpp:68-301) fetches 45 files,
43 distinct dumps, with curl from raw.githubusercontent.com/Abdess/retrobios,
pinned to HTTPS (src/RomFetch.cpp:732-748). Every entry carries a
SHA-256, fourteen a CRC32 as well; a download is installed only when its
size, CRC32 and SHA-256 match (src/RomFetch.cpp:629-665). 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:579-627, 833-853, 862-880); a 12 KB apple2p.rom is the
one alternate size kept as is. Nine 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, ssc_341-0065-a.bin is 341-0065-a.bin from
a2ssc.zip, grappler_eps-1.bin is eps-1_c1981.u6 from a2grappler.zip,
341-0057.bin is 341-0057.7b from a2pic.zip, and the four Videoterm files
come from a2vidtrm.zip. Downloads land in the per-user data directory's
roms/ (src/RomFetch.cpp:801-821). Unavailable in the browser build
(src/RomFetch.cpp:922-925).
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_
(src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353); a
missing sample is logged and the drive stays silent.
(src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358); a
missing sample is logged and the drive stays silent. A second bank, the
Virtual ][ recordings, is read from roms/virtual_ii_sons/ when that
directory exists (src/MainWindow.cpp:362-376): eight drive and switch
takes under lecteur/ and interface/ (src/FloppySoundDevice.cpp:195-204)
and one printer loop under imprimante/. The bank is selectable once
Disk Rotation, Move arm, Disk Insertion and Disk Removal have loaded
(src/FloppySoundDevice.cpp:205-225); an .aiff name is retried as .wav
(src/FloppySoundDevice.cpp:166-187). The packaging manifest keeps the
directory out of release packages (packaging/bundle.manifest:75-78).
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
(src/main.cpp:282-286); the headless CLI mounts
(src/main.cpp:285-289); 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.
@@ -103,7 +115,7 @@ files:
sha256: "68d9db6bb4c305d40c3fa89fa0f2d7b7f71516a9431e3138859f23bc5bddb2d1"
sha1: "78008be557f643e956a106121bcc182c0fb9ea6d"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:38, src/Memory.cpp:173-236, src/RomFetch.cpp:70-73"
source_ref: "src/SystemProfile.cpp:38, src/Memory.cpp:174-237, src/RomFetch.cpp:72-75"
note: "First candidate of the Apple ][ Original profile; apple2.rom is probed next."
- name: "apple2.rom"
path: "roms/apple2.rom"
@@ -114,7 +126,7 @@ files:
sha256: "fc3e9d41e9428534a883df5aa10eb55b73ea53d2fcbb3ee4f39bed1b07a82905"
sha1: "33a24f5489ba9195b44be77d9afb2252594cb5c7"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:38, src/SystemProfile.cpp:54, src/ProfileSwitch.cpp:121-128, src/RomFetch.cpp:74-81"
source_ref: "src/SystemProfile.cpp:38, src/SystemProfile.cpp:54, src/ProfileSwitch.cpp:121-128, src/RomFetch.cpp:76-83"
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"
@@ -126,8 +138,8 @@ files:
sha256: "92c4bef609920842ea472d21b661a0d35dbda6cd90963b8b734a205e22d84108"
sha1: "29a53f3bb158b160433369e8e4a1d7cd5bf68ac6"
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."
source_ref: "src/SystemProfile.cpp:54, src/Memory.cpp:222-232, src/RomFetch.cpp:84-96, src/RomFetch.cpp:862-873"
note: "First candidate of the ][+ profile and of the first-run fallback (src/MainWindow.cpp:242-246). 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"
@@ -137,7 +149,7 @@ files:
sha256: "c17bc38c75ba96c33a30c688a1efd60144811073423533fe7f8453cdd9457aab"
sha1: "d756eba578a6c5a4807510dfee30ee585c63755e"
validation: [size, sha256]
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"
source_ref: "src/SystemProfile.cpp:101, src/SystemProfile.cpp:241-253, src/Memory.cpp:202-214, src/Memory.cpp:233-235, src/MainWindow.cpp:233-236, src/RomFetch.cpp:97-100"
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"
@@ -149,7 +161,7 @@ files:
sha256: "1fb812584c6633fa16b77b20915986ed1178d1e6fc07a647f7ee8d4e6ab9d40b"
sha1: "61fa9254628e5bb7236fb474006116d67684d747"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:78-79, src/SystemProfile.cpp:267-279, src/RomFetch.cpp:51-56, src/RomFetch.cpp:99-107"
source_ref: "src/SystemProfile.cpp:78-79, src/SystemProfile.cpp:267-279, src/RomFetch.cpp:51-56, src/RomFetch.cpp:101-109"
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"
@@ -161,7 +173,7 @@ files:
sha256: "d65bbf97058b9cdce8eaebf74124048e3b4e42dca1bd42be316747bbc27dc124"
sha1: "fb0d644aafaff1352d0816bc8494f6c9913809d5"
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"
source_ref: "src/SystemProfile.cpp:142-143, src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:429-434, src/Memory.cpp:202-214, src/Memory.cpp:233-235, src/RomFetch.cpp:110-113"
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"
@@ -173,7 +185,7 @@ files:
sha256: "3ca1c8a27bf111aa0f4dc9372c5e6404457adb9a458ce32ae4b03a7e989e0c76"
sha1: "1a9b8aca5e32bb702ddb7791daddd60a89655729"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:142-143, src/Memory.cpp:219-220, src/RomFetch.cpp:112-115"
source_ref: "src/SystemProfile.cpp:142-143, src/Memory.cpp:220-221, src/RomFetch.cpp:114-117"
note: "Second candidate of the //c chain, loaded at $C000."
- name: "3420033a.256"
path: "roms/3420033a.256"
@@ -185,7 +197,7 @@ files:
sha256: "678d5c9d374664d2ee94ba9c9564d26a917b31116b07c46df30a3e82c640885b"
sha1: "10767e96cc17bad0970afda3a4146564e6272ba1"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:142-143, src/RomFetch.cpp:116-119"
source_ref: "src/SystemProfile.cpp:142-143, src/RomFetch.cpp:118-121"
note: "Third candidate of the //c chain."
- name: "apple2cp.rom"
path: "roms/apple2cp.rom"
@@ -198,7 +210,7 @@ files:
sha256: "5a62070f6a0b07784681d4df4bf2ce88b2809bec0cbaa65fcb963e804ed60374"
sha1: "1a27ae26966bbafd825d08ad1a24742d3e33557c"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:429-434, src/RomFetch.cpp:120-123"
source_ref: "src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:429-434, src/RomFetch.cpp:122-125"
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"
@@ -209,7 +221,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:126-129, src/Memory.cpp:324-357"
source_ref: "src/SystemProfile.cpp:39, src/SystemProfile.cpp:55, src/CharRomCatalog.cpp:42-43, src/RomFetch.cpp:128-131, src/Memory.cpp:325-358"
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"
@@ -221,7 +233,7 @@ 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:130-142, src/Memory.cpp:324-357"
source_ref: "src/SystemProfile.cpp:105, src/SystemProfile.cpp:144, src/SystemProfile.cpp:206, src/CharRomCatalog.cpp:48-49, src/RomFetch.cpp:132-144, src/Memory.cpp:325-358"
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"
@@ -233,7 +245,7 @@ files:
sha256: "ed5bdd4afa509134e85f1d020685af7ff50e279226eb869a17825b471cc1634c"
sha1: "58ad0008df72896a18601e090ee0d58155ffa5be"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:83-84, src/CharRomCatalog.cpp:50-51, src/RomFetch.cpp:143-150, src/Memory.cpp:324-357"
source_ref: "src/SystemProfile.cpp:83-84, src/CharRomCatalog.cpp:50-51, src/RomFetch.cpp:145-152, src/Memory.cpp:325-358"
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"
@@ -245,7 +257,7 @@ files:
sha256: "52d8e46b487a617c288caaf12ab7ad6cb81030b6ab92419f9a2e19c43d765566"
sha1: "42afb02aab4146f781ac52803a2733adc4da834e"
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"
source_ref: "src/CharRomCatalog.cpp:52-53, src/CharRomCatalog.cpp:56-57, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:155-158, src/Memory.cpp:325-358"
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"
@@ -256,7 +268,7 @@ files:
sha256: "56479cbec4767651c62a4d0f61e6ed103395216f2b86eddba74d85495dd71cc4"
sha1: "4043e0808af8be096660827445e41149d16c5c85"
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"
source_ref: "src/CharRomCatalog.cpp:54-55, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:159-162, src/Memory.cpp:325-358"
note: "Locale picker entry; equals the low bank of 342-0274-a.e9."
- name: "apple2e_char_uk.rom"
path: "roms/apple2e_char_uk.rom"
@@ -267,7 +279,7 @@ files:
sha256: "d55bd5391485cd78c68c71408f09bd088e82a73d179a0a25820067a0c1554acd"
sha1: "d19c2e2cc12b27d77edc403d5d0701186a4ed988"
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"
source_ref: "src/CharRomCatalog.cpp:58-59, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:163-166, src/Memory.cpp:325-358"
note: "Locale picker entry."
- name: "apple2e_char_uk_unenh.rom"
path: "roms/apple2e_char_uk_unenh.rom"
@@ -278,7 +290,7 @@ files:
sha256: "f2199fbfb473e98a8c3fb7e7c3312faaf76b4b010b02c655b662e5f87dc997f3"
sha1: "6ca9767e0f47f642d1caab6ed41b8f58c58bb9eb"
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"
source_ref: "src/CharRomCatalog.cpp:60-61, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:167-170, src/Memory.cpp:325-358"
note: "Locale picker entry."
- name: "apple2e_char_de.rom"
path: "roms/apple2e_char_de.rom"
@@ -289,7 +301,7 @@ files:
sha256: "b92576b4fa994384501078ff99963b53cfa98eff4bb641eb61649d484a469315"
sha1: "a7fd75ae8611572b0b4d99ad54562014b879dbbf"
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"
source_ref: "src/CharRomCatalog.cpp:62-63, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:171-174, src/Memory.cpp:325-358"
note: "Locale picker entry."
- name: "apple2e_char_de_improved.rom"
path: "roms/apple2e_char_de_improved.rom"
@@ -300,7 +312,7 @@ files:
sha256: "0e32ab131e3932fc61c0a5f0f5509b4c37ab8db6239027f5955d47feba56d39f"
sha1: "12ce44f02bd28c350e2b0723d94ab8d9066f8798"
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"
source_ref: "src/CharRomCatalog.cpp:64-65, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:175-178, src/Memory.cpp:325-358"
note: "Locale picker entry."
- name: "342-0274-a.e9"
path: "roms/342-0274-a.e9"
@@ -311,7 +323,7 @@ files:
sha256: "d4d29771658372c6ab5d18ff3bdab6b3b2b02b8de30ed6b021efb8a415192432"
sha1: "c81c1bbf237e70f8c3e5eef3c8fd5bd9b9f54d1e"
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"
source_ref: "src/CharRomCatalog.cpp:81-84, src/CharRomCatalog.cpp:158-163, src/RomFetch.cpp:179-184, src/RomStatus_ImGui.cpp:250, src/Memory.cpp:325-358"
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"
@@ -322,8 +334,30 @@ files:
sha256: "c69c8e1eb26923c5df03d3507fdf86c5f768283a924a5fffdd80377cf2339321"
sha1: "f79815457437e50404f4f537d8aabe34bff3a220"
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"
source_ref: "src/CharRomCatalog.cpp:85-86, src/RomFetch.cpp:185-189, src/RomStatus_ImGui.cpp:250, src/Memory.cpp:325-358"
note: "Locale picker entry loaded dual-bank: annunciator 2 flips between the text set and the block glyphs."
- name: "apple2e_char_us_mt_iigs.rom"
path: "roms/apple2e_char_us_mt_iigs.rom"
description: "Apple //e US Enhanced character generator with the IIgs MouseText glyphs, 4 KB"
required: false
size: 4096
crc32: "a68a4f03"
sha1: "66eca035fd18024fceed4c30c32a4185792cb3ea"
sha256: "097cd3500afe6c15d710d2e96af539a8e5065853986289294aac08ee7a1f070a"
validation: [size]
source_ref: "src/CharRomCatalog.cpp:87-88, src/CharRomCatalog.cpp:165-180, src/RomStatus_ImGui.cpp:250, src/Memory.cpp:325-358"
note: "Locale picker entry. Shipped in roms/; the fetcher does not serve it, so only the size is checked."
- name: "apple2e_char_reactive.rom"
path: "roms/apple2e_char_reactive.rom"
description: "ReActive custom Apple //e character generator, 4 KB"
required: false
size: 4096
crc32: "af19aff6"
sha1: "02075efbfdb99af48360561323404a921b91a676"
sha256: "49716e2804b119810c22ab668ae37cebadf0cd53bc8911b5f17c4a62a3acb514"
validation: [size]
source_ref: "src/CharRomCatalog.cpp:89-90, src/CharRomCatalog.cpp:165-180, src/RomStatus_ImGui.cpp:250, src/Memory.cpp:325-358"
note: "Locale picker entry. Shipped in roms/; the fetcher does not serve it, so only the size is checked."
- name: "Videx Lower Case Chip ROM.bin"
path: "roms/Videx Lower Case Chip ROM.bin"
description: "Videx LOWER CASE CHIP character generator for the ][ and ][+, 2 KB"
@@ -333,7 +367,7 @@ files:
sha256: "6a516bcd96382597af7a498fb1da7547490c830db0f9d22d541fb065b9cd048b"
sha1: "447874fe0850c8add3fd5b13fa98f6648fe6f999"
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"
source_ref: "src/CharRomCatalog.cpp:44-45, src/RomCatalog.h:208-214, src/RomFetch.cpp:190-194, 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"
@@ -344,7 +378,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-173, src/RomFetch.cpp:195-198"
source_ref: "src/SlotCardFactory.cpp:102-115, src/DiskIICard.cpp:136-141, src/DiskIICard.cpp:151-174, src/RomFetch.cpp:197-200"
note: "The card carries the same PROM built in; the file replaces it when present."
- name: "diskii_p6.rom"
path: "roms/diskii_p6.rom"
@@ -355,7 +389,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-201, src/DiskIICard.cpp:250-262, src/RomFetch.cpp:199-202"
source_ref: "src/SlotCardFactory.cpp:102-115, src/DiskIICard.cpp:142-149, src/DiskIICard.cpp:176-202, src/DiskIICard.cpp:251-263, src/RomFetch.cpp:201-204"
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"
@@ -365,7 +399,7 @@ files:
sha256: "2d2599521fc5763d4e8c308c2ee7c5c4d5c93785b8fb9a4f7d0381dfd5eb60b6"
sha1: "afd060e6f35faf3bb0146fa889fc787adf56330a"
validation: [size, sha256]
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"
source_ref: "src/SlotCardFactory.cpp:102-115, src/DiskIICard.cpp:204-221, src/DiskIICard.cpp:264-288, src/RomCatalog.h:90-93, src/RomFetch.cpp:205-208"
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"
@@ -375,7 +409,7 @@ files:
sha256: "383c55f5333cbfde39dd41528186631e5aca2eddfec30716344f03b6a4d44655"
sha1: "e3d6d1c30653572b49ecc2dc54ce073978411a04"
validation: [size, sha256]
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"
source_ref: "src/SlotCardFactory.cpp:102-115, src/DiskIICard.cpp:223-240, src/DiskIICard.cpp:273-283, src/RomCatalog.h:94-97, src/RomFetch.cpp:209-212"
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"
@@ -386,7 +420,7 @@ files:
sha256: "a08cb25ad80054649ee5fcb620e01ed56f025acb28c753bc28dd187a1d149cab"
sha1: "080ff88f19de22328e162954ee2b51ee65f9d5cd"
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"
source_ref: "src/SlotCardFactory.cpp:124-148, src/CffaCard.cpp:26-40, src/RomCatalog.h:119-123, src/RomFetch.cpp:223-226"
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"
@@ -397,7 +431,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:124-129, src/RomFetch.cpp:217-220"
source_ref: "src/SlotCardFactory.cpp:124-148, src/CffaCard.cpp:26-40, src/RomCatalog.h:124-129, src/RomFetch.cpp:219-222"
note: "Preferred on an NMOS 6502, fallback for a 65C02."
- name: "mouse_341-0270-c.bin"
path: "roms/mouse_341-0270-c.bin"
@@ -407,7 +441,7 @@ files:
sha256: "7f8e50c0e8a409991264201f9300f109b872b68e09c43f3e6c26af35fd8b89af"
sha1: "3a9d881a8a8d30f55b9719aceebbcf717f829d6f"
validation: [size, sha256]
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"
source_ref: "src/SlotCardFactory.cpp:60-92, src/SlotCardFactory.cpp:337-352, src/MouseCard.cpp:119-153, src/MouseCardAppleWin.cpp:89-102, src/RomFetch.cpp:243-248"
note: "Needed by both mouse cards: the MC68705 card also needs the MCU ROM, the AppleWin HLE card needs this one only. The fetcher extracts it from the MAME a2mouse set as 341-0270-c.4b."
- name: "mouse_341-0269.bin"
path: "roms/mouse_341-0269.bin"
@@ -417,7 +451,7 @@ files:
sha256: "66480812edad5f6bd70349949cf8bd8fbafee2dc8bf396541d4e78bac2629ec0"
sha1: "3a2baa6648efe4456d3ec3721216e57c64f7acfc"
validation: [size, sha256]
source_ref: "src/SlotCardFactory.cpp:51-83, src/MouseCard.cpp:150-153, src/M68705P3.cpp:85-104, src/RomFetch.cpp:237-240"
source_ref: "src/SlotCardFactory.cpp:60-92, src/MouseCard.cpp:150-153, src/M68705P3.cpp:85-104, src/RomFetch.cpp:239-242"
note: "The MC68705 mouse card leaves its slot empty without it."
- name: "grappler_plus.bin"
path: "roms/grappler_plus.bin"
@@ -428,7 +462,7 @@ files:
sha256: "9be4dea7722ad8928aee64c2ae708f365a6d66c50a63bff8a3c1a4e7596d44c6"
sha1: "829072cc19a58b24d36c2af972abaad6f9ba35d9"
validation: [size, sha256]
source_ref: "src/SlotCardFactory.cpp:147-166, src/GrapplerCard.cpp:29-52, src/RomCatalog.h:132-138, src/RomFetch.cpp:233-236"
source_ref: "src/SlotCardFactory.cpp:156-175, src/GrapplerCard.cpp:30-53, src/RomCatalog.h:132-138, src/RomFetch.cpp:235-238"
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"
@@ -440,8 +474,88 @@ files:
sha256: "bcbb1a3bab083b0c2988b502f5e024ff4346fab5dbf09276b32724693bcbd0e9"
sha1: "7b75534e7895e04859a0b1337801c6eeb0cef52a"
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."
source_ref: "src/TranswarpCard.h:175, src/TranswarpCard.cpp:215-235, src/RomCatalog.h:139-146, src/RomFetch.cpp:231-234"
note: "Shipped in roms/ since v0.9.3. The dump is the card's boot firmware, 65C02 code overlaid on $F000-$FFFF until it writes $C072: it tests RAM and the Apple ROM, then boots through the Apple reset vector. Without it the card accelerates and the machine boots straight into the Apple ROM. The shadow steps aside for a main ROM reload and covers the new firmware."
- name: "ssc_341-0065-a.bin"
path: "roms/ssc_341-0065-a.bin"
description: "Apple Super Serial Card EPROM 341-0065-A, MAME a2ssc"
required: false
aliases: ["341-0065-a.bin", "SSC.rom"]
size: 2048
crc32: "b7539d4c"
sha256: "4fa1323ba31f4bd562486838397b7744257c126806766e360876720daca6e2aa"
sha1: "6dab633470c6bc4cb3e81d09fda46597caf8ee57"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:379-397, src/SuperSerialCard.cpp:722-728, src/RomCatalog.h:147-154, src/RomFetch.cpp:281-284"
note: "Three names are probed in order and a file that is not 2048 bytes is refused. Without it the card runs a hand-written slot ROM: PR#n, IN#n and the Pascal 1.1 entries work, the firmware commands and printer mode are absent. Not loaded on the //c and //c Plus. The fetcher extracts it from the MAME a2ssc set as 341-0065-a.bin."
- name: "grappler_eps-1.bin"
path: "roms/grappler_eps-1.bin"
description: "Orange Micro Grappler EPROM, the 1981 card, MAME a2grappler"
required: false
size: 2048
crc32: "862773cb"
sha256: "4cce25c87ba4dd396919ce82f8567894225519c3d9db76c5667760f77054694f"
sha1: "791ebae64a7fad8f42bdfaec36b9e2d34f12ded8"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:178-216, src/GrapplerClassicCard.cpp:28-34, src/RomCatalog.h:155-158, src/RomFetch.cpp:253-256"
note: "The original Grappler leaves its slot empty without it. The fetcher extracts it from the MAME a2grappler set as eps-1_c1981.u6."
- name: "341-0057.bin"
path: "roms/341-0057.bin"
description: "Apple Parallel Interface Card PROM 341-0057, MAME a2pic"
required: false
size: 512
crc32: "0a6b084b"
sha256: "634e91bae5938820da79183984c03aa06075cbd5701d480debcc4f6d70620001"
sha1: "de8aa285dcac88b1cc80ec9128b092833f5174b6"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:178-216, src/AppleParallelCard.cpp:28-34, src/RomCatalog.h:159-162, src/RomFetch.cpp:257-260"
note: "The Apple Parallel Interface leaves its slot empty without it. The fetcher extracts it from the MAME a2pic set as 341-0057.7b."
- name: "videx_videoterm_v24_60hz.bin"
path: "roms/videx_videoterm_v24_60hz.bin"
description: "Videx Videoterm firmware v2.4 with the 60 Hz CRTC table, 2 KB, MAME a2videoterm 6.ic6.bin"
required: false
priority: 1
size: 2048
crc32: "5776fa24"
sha256: "420da3867e489824f5fc0377c287c48a125296f19e1306df764e8f63bd23b00a"
sha1: "19f69011ed7d2551c39d5c1cac1f5a2defc8f8fb"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:235-246, src/SlotCardFactory.cpp:254-264, src/VidexVideotermCard.cpp:40-47, src/RomCatalog.h:165-171, src/RomFetch.cpp:263-266"
note: "First firmware candidate of the Videoterm card; the 50 Hz dump is probed second. With neither the slot stays empty. The fetcher extracts it from the MAME a2vidtrm set."
- name: "videx_videoterm_v24_50hz.bin"
path: "roms/videx_videoterm_v24_50hz.bin"
description: "Videx Videoterm firmware v2.4 with the 50 Hz CRTC table, 1 KB, MAME a2videoterm videx videoterm rom 2.4.bin"
required: false
priority: 2
size: 1024
crc32: "bbe3bb28"
sha256: "616f4d9f81a7a4ea0fa918842a05dfb3b503927776d2bfe97e6950b5431b562e"
sha1: "bb653836e84850ce3197f461d4e19355f738cfbf"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:235-246, src/VidexVideotermCard.cpp:40-47, src/RomCatalog.h:172-177, src/RomFetch.cpp:267-271"
note: "Fallback firmware of the Videoterm card, padded to 2 KB with $FF. The fetcher extracts it from the MAME a2vidtrm set."
- name: "videx_videoterm_char_normal.bin"
path: "roms/videx_videoterm_char_normal.bin"
description: "Videx Videoterm character ROM, normal set, MAME a2videoterm"
required: false
size: 2048
crc32: "87f89f08"
sha256: "ad873ca47e09def4c942177c84809d853231d4774e8d824e1b834d2033b8199c"
sha1: "410b54f33d13c82e3857f1be906d93a8c5b8d321"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:247-264, src/VidexVideotermCard.cpp:49-65, src/RomCatalog.h:178-182, src/RomFetch.cpp:272-276"
note: "The Videoterm card leaves its slot empty without it. The fetcher extracts it from the MAME a2vidtrm set as videx videoterm character rom normal.bin."
- name: "videx_videoterm_char_inverse.bin"
path: "roms/videx_videoterm_char_inverse.bin"
description: "Videx Videoterm character ROM, inverse set, MAME a2videoterm 4.ic4.bin"
required: false
size: 2048
crc32: "8a497a48"
sha256: "4d03bd0934ab39cb18f22444e0361f91d1984131759c07010398ad5cf84397c0"
sha1: "50c3df528109c65491a001ec74e50351a652c1fd"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:247-253, src/VidexVideotermCard.cpp:49-65, src/RomCatalog.h:183-188, src/RomFetch.cpp:277-280"
note: "Alternate set of the Videoterm card. A missing or wrong-size file is ignored and the card derives the set as the bitwise inverse of the normal one. The fetcher extracts it from the MAME a2vidtrm set."
- name: "thunderclock_u9_v1.3.bin"
path: "roms/thunderclock_u9_v1.3.bin"
description: "Thunderware ThunderClock+ slot ROM rev 1.3, U9"
@@ -452,7 +566,7 @@ files:
sha256: "ecca793179427fdd193373080bf23e49a95743bd7b5e0b218c747663938b6c03"
sha1: "60f434f5325899d7ea257a6e56e6f53eae65146a"
validation: [size, sha256]
source_ref: "src/ClockCard.cpp:469-530, src/RomCatalog.h:174-184, src/RomFetch.cpp:225-228"
source_ref: "src/ClockCard.cpp:469-530, src/RomCatalog.h:216-226, src/RomFetch.cpp:227-230"
note: "The card loads a 256-byte slot ROM or the 2 KB chip, which supplies the $C800 expansion ROM as well; the fetch gate names the 2 KB dump and replaces a 256-byte file. The first four even bytes must read $08, $28, $58, $70, the ProDOS clock signature, or the synthetic ROM stays in place."
- name: "liron.rom"
path: "roms/liron.rom"
@@ -462,7 +576,7 @@ files:
sha256: "42c1ae66c6bec932669239599eb8989a5364752d56fa5c8997bb23d8dfc0b657"
sha1: "fa94ecc2aa23f336f7da9e18bc8f4a6cfbb4ea60"
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"
source_ref: "src/SlotCardFactory.cpp:299-325, src/LironCard.cpp:61-85, src/SmartPortCard.cpp:80-97, src/RomCatalog.h:100-104, src/RomFetch.cpp:215-218"
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"
@@ -474,7 +588,7 @@ files:
sha256: "ce785b913b9fcec6db0fab89b2d94f07fcd07664a822531dcbba3a5ca70ca3bf"
sha1: "59c8e8c88bac5c31ada1306b412edfcf5912a720"
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"
source_ref: "src/SlotCardFactory.cpp:274-297, src/WorkstationCard.cpp:60-74, src/RomCatalog.h:198-206, src/RomFetch.cpp:291-294"
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"
@@ -485,7 +599,7 @@ files:
sha256: "084587835c1d2c92f5708a9745fdd43ba32136fcdb861a12ee7d690de22dc172"
sha1: "440c3f84176c7b9f542da0b6ddf4fb13ec326c46"
validation: [size, crc32, sha256]
source_ref: "src/RomCatalog.h:105-111, src/RomStatus_ImGui.cpp:169-181, src/RomFetch.cpp:249-252"
source_ref: "src/RomCatalog.h:105-111, src/RomStatus_ImGui.cpp:169-181, src/RomFetch.cpp:287-290"
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"
@@ -496,7 +610,7 @@ files:
sha256: "4ae7ff693a486b155a70a8833047b3d4363464dace6760ed64bfb68db233ed4b"
sha1: "806a602195c18ffec637c03b6bb3405188b0dc1e"
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"
source_ref: "src/RomCatalog.h:112-118, src/RomStatus_ImGui.cpp:169-181, src/RomStatus_ImGui.cpp:311, src/RomFetch.cpp:295-298"
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"
@@ -505,7 +619,7 @@ files:
required: false
size: 5336
sha1: "2d046a880476218685ed738fe8c8381962afd74a"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
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"
@@ -514,7 +628,7 @@ files:
required: false
size: 14860
sha1: "6f698055fa6e9da6c5ae3fd6fb05de76b92a45a9"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -522,7 +636,7 @@ files:
required: false
size: 22764
sha1: "fbbbb5e8724c076d194e66a4443d299d54a8efd6"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -530,7 +644,7 @@ files:
required: false
size: 30060
sha1: "b6cd14944454c743861196edb4fcab1cc9b586d4"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -538,7 +652,7 @@ files:
required: false
size: 8864
sha1: "4b13701d9a7f8ab0f0827f17ba80b5c32b4e0fa7"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -546,7 +660,7 @@ files:
required: false
size: 17708
sha1: "875f90538a3ff5db863ad4c384e1808841ddea9b"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -554,7 +668,7 @@ files:
required: false
size: 11180
sha1: "b87d89c4b46c36dd78dec3dc5170ca61501e7cd9"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -562,7 +676,7 @@ files:
required: false
size: 17708
sha1: "510476098848e2b5cdfe9f1608f8dfa3207fe9b4"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- name: "525_spin_end.wav"
path: "roms/floppy_samples/525_spin_end.wav"
description: "MAME floppy sample, 5.25 inch drive, motor stop"
@@ -570,7 +684,7 @@ files:
required: false
size: 8864
sha1: "f8d9b94c4d92d35d9ffb1117b693fc74a93f613f"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -578,7 +692,7 @@ files:
required: false
size: 6628
sha1: "669ee98fb9fac4371c72ed0b60be1bc8470bc7f8"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -586,7 +700,7 @@ files:
required: false
size: 7450
sha1: "55caafbd19486b8d517e4b33a6fa65250df55e25"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
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"
@@ -595,7 +709,7 @@ files:
required: false
size: 22230
sha1: "87e5dec269e67497681c15849777ebfc301131c1"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -603,7 +717,7 @@ files:
required: false
size: 26540
sha1: "c6b34fc61496943134ac45cc836a24e743caf794"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -611,7 +725,7 @@ files:
required: false
size: 44144
sha1: "b2fe4c3a4185146a7d11483d92d4412dd79dbc78"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -619,7 +733,7 @@ files:
required: false
size: 17708
sha1: "db04fc097bdd0411cff232f57525ded491b48c6c"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -627,7 +741,7 @@ files:
required: false
size: 17708
sha1: "96ce04a5b02af0da6d311f06fc4906a3cf71c78f"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -635,7 +749,7 @@ files:
required: false
size: 17708
sha1: "af770fd9261a8efee23d66cd39b27be7b2ab7853"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -643,7 +757,7 @@ files:
required: false
size: 35308
sha1: "c82b1714378bf2507ed86dea1e9fe743c380abab"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- name: "35_spin_end.wav"
path: "roms/floppy_samples/35_spin_end.wav"
description: "MAME floppy sample, 3.5 inch drive, motor stop"
@@ -651,7 +765,7 @@ files:
required: false
size: 17684
sha1: "a8901b692de15eb7a9052f61283f0e7a2b63d67d"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- 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"
@@ -659,7 +773,71 @@ files:
required: false
size: 6878
sha1: "40d756d0cb5f7998ca26ac1de142a96a83fa2b97"
source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:340-353"
source_ref: "src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358"
- name: "Disk Rotation.wav"
path: "roms/virtual_ii_sons/lecteur/Disk Rotation.wav"
description: "Virtual ][ recording, drive motor loop"
category: game_data
required: false
source_ref: "src/FloppySoundDevice.cpp:196, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
note: "The Virtual ][ bank is offered only when this file and the arm, insertion and removal takes have loaded."
- name: "Boot.wav"
path: "roms/virtual_ii_sons/lecteur/Boot.wav"
description: "Virtual ][ recording, boot one-shot"
category: game_data
required: false
source_ref: "src/FloppySoundDevice.cpp:197, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
- name: "Move arm.aiff"
path: "roms/virtual_ii_sons/lecteur/Move arm.aiff"
description: "Virtual ][ recording, head arm step"
category: game_data
required: false
aliases: ["Move arm.wav"]
source_ref: "src/FloppySoundDevice.cpp:198, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
note: "Needed for the bank; the .wav name is tried when the .aiff does not decode."
- name: "Disk Insertion.aiff"
path: "roms/virtual_ii_sons/lecteur/Disk Insertion.aiff"
description: "Virtual ][ recording, drive lid, disk inserted"
category: game_data
required: false
aliases: ["Disk Insertion.wav"]
source_ref: "src/FloppySoundDevice.cpp:199, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
note: "Needed for the bank; the .wav name is tried when the .aiff does not decode."
- name: "Disk Removal.aiff"
path: "roms/virtual_ii_sons/lecteur/Disk Removal.aiff"
description: "Virtual ][ recording, drive lid, disk removed"
category: game_data
required: false
aliases: ["Disk Removal.wav"]
source_ref: "src/FloppySoundDevice.cpp:200, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
note: "Needed for the bank; the .wav name is tried when the .aiff does not decode."
- name: "I-O Error.wav"
path: "roms/virtual_ii_sons/lecteur/I-O Error.wav"
description: "Virtual ][ recording, read error one-shot"
category: game_data
required: false
source_ref: "src/FloppySoundDevice.cpp:201, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
- name: "PopOn2.aiff"
path: "roms/virtual_ii_sons/interface/PopOn2.aiff"
description: "Virtual ][ recording, power switch on"
category: game_data
required: false
aliases: ["PopOn2.wav"]
source_ref: "src/FloppySoundDevice.cpp:202, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
- name: "PopOff2.aiff"
path: "roms/virtual_ii_sons/interface/PopOff2.aiff"
description: "Virtual ][ recording, power switch off"
category: game_data
required: false
aliases: ["PopOff2.wav"]
source_ref: "src/FloppySoundDevice.cpp:203, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
- name: "Matrix Printer.wav"
path: "roms/virtual_ii_sons/imprimante/Matrix Printer.wav"
description: "Virtual ][ recording, dot-matrix printer loop"
category: game_data
required: false
source_ref: "src/MainWindow.cpp:372-374, src/PrinterSoundDevice.cpp:272-299"
note: "Loaded when present; the printer sound is generated otherwise."
- name: "DejaVuSans.ttf"
path: "fonts/DejaVuSans.ttf"
description: "DejaVu Sans, the frontend text font"
@@ -669,7 +847,7 @@ files:
unsourceable: "host program component shipped inside every POM2 package, not emulation data"
size: 759720
sha1: "3061cf7af25793a655a1ff5a509385f3620f3eb3"
source_ref: "src/main.cpp:530-543"
source_ref: "src/main.cpp:533-546"
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"
@@ -680,7 +858,7 @@ files:
unsourceable: "host program component shipped inside every POM2 package, not emulation data"
size: 426112
sha1: "0c8c9706abc0116f08b66d11a69da6aa9ef7e6bf"
source_ref: "src/main.cpp:590-608"
source_ref: "src/main.cpp:593-611"
note: "Without it every icon renders as an empty box."
- name: "Apple_II_plus.jpg"
path: "pic/Apple_II_plus.jpg"
+37 -37
View File
@@ -3,8 +3,8 @@ type: standalone
core_classification: community_fork
source: "https://github.com/Rosalie241/RMG"
upstream: "https://github.com/Rosalie241/RMG"
profiled_date: "2026-08-08"
source_commit: "9dced048f747085f942f55941dd4304279acc145"
profiled_date: "2026-10-04"
source_commit: "4777ed3f1fb7f1e4a0e70438a27dc4a5e9fb1927"
core_version: "v0.9.0"
display_name: "Nintendo - Nintendo 64 (Rosalie's Mupen GUI)"
cores:
@@ -19,65 +19,65 @@ mode: standalone
notes: |
Qt front end by Rosalie Wanders built around its own vendored fork of
mupen64plus-core, compiled with OSD=0, NEW_DYNAREC=1 and VULKAN=0
(Source/3rdParty/CMakeLists.txt:74-96). Forks of the RSP plugins hle, cxd4
and parallel, the video plugins GLideN64, parallel and angrylion-plus, and
the raphnetraw input plugin are vendored alongside it, plus RMG's own audio
and input plugins. ES-DE runs it as `--nogui -q <rom>` for both n64 and
(Source/3rdParty/CMakeLists.txt:63-83). Forks of the RSP plugins hle, cxd4
and parallel, the video plugins GLideN64, parallel, angrylion-plus and
softrdp, and the raphnetraw input plugin are vendored alongside it, plus
RMG's own audio and input plugins. softrdp opens no data file. ES-DE runs it as `--nogui -q <rom>` for both n64 and
n64dd. Against mupen64plus-core 6dca4c15 the media loader, the DD region
enum and load_dd_rom are unchanged; the fork diverges on SDL3, video
capture, netplay and the dynarec.
Cartridge boot needs no boot ROM. The PIF boot ROM is simulated
(device/pif/bootrom_hle.c:48, reached from r4300/interrupt.c:448,499) and the
(Source/3rdParty/mupen64plus-core/src/device/pif/bootrom_hle.c:48, reached from Source/3rdParty/mupen64plus-core/src/device/r4300/interrupt.c:445,496) and the
CIC-NUS-6105 challenge is answered by an algorithm rather than a stored
table (device/pif/n64_cic_nus_6105.c:93).
table (Source/3rdParty/mupen64plus-core/src/device/pif/n64_cic_nus_6105.c:93).
Which 64DD IPL is used is not a user choice. scan_and_expand_disk_format
accepts a disk only when one of eight candidate blocks holds system data
carrying a known region word, and marks it development when that block sits
at index 2, 3, 10 or 11 (device/dd/disk.c:412-475). The core hands the
at index 2, 3, 10 or 11 (Source/3rdParty/mupen64plus-core/src/device/dd/disk.c:412-475). The core hands the
resulting region to the front end, which answers with one of three
configured paths, or with nothing when the region stayed unknown
(RMG-Core/MediaLoader.cpp:47-74). All three settings default to empty
(RMG-Core/Settings.cpp:284-292) and are filled from a file dialog filtered
on *.n64 (RMG/UserInterface/Dialog/SettingsDialog.cpp:1377-1390).
(Source/RMG-Core/MediaLoader.cpp:47-74). All three settings default to empty
(Source/RMG-Core/Settings.cpp:284-292) and are filled from a file dialog filtered
on *.n64 (Source/RMG/UserInterface/Dialog/SettingsDialog.cpp:1377-1390).
A bare .ndd or .d64 opens as a disk with no cartridge
(RMG-Core/Rom.cpp:111-133), which is the route ES-DE takes, so the IPL is
(Source/RMG-Core/Rom.cpp:111-133), which is the route ES-DE takes, so the IPL is
the only boot ROM and the core bails before starting when it is absent
(main/main.c:1723-1739). Passing a cartridge with --disk
(RMG/main.cpp:219,232,287) boots the cartridge and switches 64DD off instead.
(Source/3rdParty/mupen64plus-core/src/main/main.c:1722-1738). Passing a cartridge with --disk
(Source/RMG/main.cpp:219,232,287) boots the cartridge and switches 64DD off instead.
Disk content inside a .zip or .7z is extracted to the user cache directory
first (RMG-Core/MediaLoader.cpp:164-215, RMG-Core/Archive.cpp:188-227).
first (Source/RMG-Core/MediaLoader.cpp:164-215, Source/RMG-Core/Archive.cpp:188-227).
Transfer Pak carts come from the input profile, which copies its GameboyRom
and GameboySave paths into the per player core settings
(RMG-Input/main.cpp:317-318,469-480, RMG-Core/MediaLoader.cpp:76-114). The
(Source/RMG-Input/main.cpp:320-321,472-483, Source/RMG-Core/MediaLoader.cpp:76-114). The
core rejects a ROM under 32 KiB and an unknown cart type byte at 0x147
(device/gb/gb_cart.c:999-1012) and fixes no name, size or hash, so neither
(Source/3rdParty/mupen64plus-core/src/device/gb/gb_cart.c:999-1012) and fixes no name, size or hash, so neither
the cart nor its save carries an entry here.
Data the install places in the shared data directory (CMakeLists.txt:130-153;
/usr/share/RMG, or Data beside the executable for portable and Windows
builds, Directories.cpp:406-431): mupen64plus.ini, read as the ROM database
(main/rom.c:585-604) and used by GLideN64 to locate that same directory
(mupenplus/CommonAPIImpl_mupenplus.cpp:77-85); GLideN64.custom.ini, per ROM
builds, Source/RMG-Core/Directories.cpp:406-431): mupen64plus.ini, read as the ROM database
(Source/3rdParty/mupen64plus-core/src/main/rom.c:585-604) and used by GLideN64 to locate that same directory
(Source/3rdParty/mupen64plus-video-GLideN64/src/mupenplus/CommonAPIImpl_mupenplus.cpp:77-85); GLideN64.custom.ini, per ROM
overrides keyed on the uppercased header name
(mupenplus/Config_mupenplus.cpp:329-348); font.ttf, reached only after the
(Source/3rdParty/mupen64plus-video-GLideN64/src/mupenplus/Config_mupenplus.cpp:331-350); font.ttf, reached only after the
configured font name fails both as a system font path and as a full path
(TextDrawer.cpp:202-230); Cheats/<name>.cht, named from the header CRC pair
(Source/3rdParty/mupen64plus-video-GLideN64/src/TextDrawer.cpp:202-230); Cheats/<name>.cht, named from the header CRC pair
and country code, or from the ROM MD5 when all three are zero, and merged
with a user copy under the config directory
(RMG-Core/Cheats.cpp:82-116,579-598); InputProfileDB.json
(RMG-Input/Utilities/InputProfileDB.cpp:26-36); gamecontrollerdb.txt
(RMG-Input/main.cpp:1063-1069); and for VRU builds
(Source/RMG-Core/Cheats.cpp:82-116,579-598); InputProfileDB.json
(Source/RMG-Input/Utilities/InputProfileDB.cpp:26-36); gamecontrollerdb.txt
(Source/RMG-Input/main.cpp:1071-1077); and for VRU builds
vosk-model-small-en-us-0.15.zip, extracted into the user data directory when
any of the thirteen model files it checks for is missing
(RMG-Input/VRU.cpp:154-232). The published AppImage is the features-on build,
so the model ships with it (.github/workflows/build.yml:10,79,91).
(Source/RMG-Input/VRU.cpp:154-232). The published AppImage is the features-on build,
so the model ships with it (.github/workflows/build.yml:10,94,107).
Optional files with no canonical artifact: a .qss stylesheet under Styles in
the shared data directory (RMG/UserInterface/MainWindow.cpp:405-425), hi-res
the shared data directory (Source/RMG/UserInterface/MainWindow.cpp:405-425), hi-res
texture packs under hires_texture in the user data directory
(GLideN64 Config.cpp:118-123), and alp_screen.vert and alp_screen.frag, which
angrylion-plus opens as working directory relative paths before falling back
@@ -86,12 +86,12 @@ notes: |
Written rather than obtained: mupen64plus.cfg in the config directory,
GLideN64.ini written there by the plugin settings pages and read back from
both that directory and the shared data directory
(GLideNUI/Config_GLideNUI.cpp:20-21,45-46, GLideNUI/Settings.cpp:352-368),
(Source/3rdParty/mupen64plus-video-GLideN64/src/GLideNUI/Config_GLideNUI.cpp:20-21,45-46, Source/3rdParty/mupen64plus-video-GLideN64/src/GLideNUI/Settings.cpp:354-370),
the mempak, eeprom, flashram and sram saves opened with default
content when absent (main/main.c:1712-1716), 64DD disk saves in the format
the SaveDiskFormat setting selects (main/main.c:1286-1298), savestates,
content when absent (Source/3rdParty/mupen64plus-core/src/main/main.c:1711-1715), 64DD disk saves in the format
the SaveDiskFormat setting selects (Source/3rdParty/mupen64plus-core/src/main/main.c:1285-1297), savestates,
screenshots, the ROM browser header cache
(RMG-Core/CachedRomHeaderAndSettings.cpp:152), the GLideN64 texture cache and
(Source/RMG-Core/CachedRomHeaderAndSettings.cpp:152), the GLideN64 texture cache and
texture dumps (GLideN64 Config.cpp:120-123) and the parallel-rdp pipeline
cache (video-parallel vulkan/device.cpp:760,834).
@@ -101,7 +101,7 @@ notes: |
rsp_conf.bin, whose reader is the zilmar variant of update_conf behind
#if !defined(M64P_PLUGIN_API); the variant this build compiles takes settings
from the core config API and ignores its filename argument
(mupen64plus-rsp-cxd4/module.c:89-99,652-673).
(Source/3rdParty/mupen64plus-rsp-cxd4/module.c:89-99,652-673).
files:
- name: "64DD_IPL_JP.n64"
@@ -117,7 +117,7 @@ files:
byteswapped after identifying the first word as one of 0x80270740 (z64),
0x40072780 (n64) or 0x27804007 (v64); any other value disables 64DD.
Size is not checked and no hash is computed.
source_ref: "Source/RMG-Core/MediaLoader.cpp:47-74, Source/RMG-Core/Settings.cpp:284-286, Source/3rdParty/mupen64plus-core/src/main/main.c:1190-1255, Source/3rdParty/mupen64plus-core/src/device/dd/disk.c:434-445"
source_ref: "Source/RMG-Core/MediaLoader.cpp:47-74, Source/RMG-Core/Settings.cpp:284-286, Source/3rdParty/mupen64plus-core/src/main/main.c:1189-1254, Source/3rdParty/mupen64plus-core/src/device/dd/disk.c:434-445"
- name: "64DD_IPL_US.n64"
aliases: ["64DD_IPL_USA.bin", "IPL_USA.n64"]
@@ -130,7 +130,7 @@ files:
The other two IPL settings are not consulted for such a disk, so no
substitution is possible. Same load path, format check and absence of
size or hash validation as the Japanese image.
source_ref: "Source/RMG-Core/MediaLoader.cpp:54-56, Source/RMG-Core/Settings.cpp:287-289, Source/3rdParty/mupen64plus-core/src/main/main.c:1190-1255, Source/3rdParty/mupen64plus-core/src/device/dd/disk.c:434-445"
source_ref: "Source/RMG-Core/MediaLoader.cpp:54-56, Source/RMG-Core/Settings.cpp:287-289, Source/3rdParty/mupen64plus-core/src/main/main.c:1189-1254, Source/3rdParty/mupen64plus-core/src/device/dd/disk.c:434-445"
- name: "64DD_IPL_DEV.n64"
aliases: ["64DD_IPL_DEV.bin", "IPL_DEV.n64"]
@@ -143,4 +143,4 @@ files:
2, 3, 10 or 11, which is the development disk layout. Same load path,
format check and absence of size or hash validation as the Japanese
image.
source_ref: "Source/RMG-Core/MediaLoader.cpp:57-59, Source/RMG-Core/Settings.cpp:290-292, Source/3rdParty/mupen64plus-core/src/main/main.c:1190-1255, Source/3rdParty/mupen64plus-core/src/device/dd/disk.c:412-475"
source_ref: "Source/RMG-Core/MediaLoader.cpp:57-59, Source/RMG-Core/Settings.cpp:290-292, Source/3rdParty/mupen64plus-core/src/main/main.c:1189-1254, Source/3rdParty/mupen64plus-core/src/device/dd/disk.c:412-475"