feat: profile five standalone emulators

This commit is contained in:
Abdessamad Derraz committed 2026-08-08 08:11:53 +02:00
1 parent 0296668ec6
commit 8aceb64e1a
5 files changed
+1340

No files matched your search

+592
View File
@@ -0,0 +1,592 @@
emulator: DREAMM
type: standalone
core_classification: other
source: "https://dreamm.aarongiles.com/"
upstream: "https://dreamm.aarongiles.com/"
profiled_date: "2026-08-08"
core_version: "4.0"
display_name: "LucasArts (DREAMM)"
cores:
- dreamm
systems:
- dos
- ibm-pc
- tandy-1000
- fmtowns
mode: standalone
notes: |
Closed-source emulator by Aaron Giles for LucasArts, Lucasfilm Games and
Lucas Learning titles, shipped as a single executable for Windows, macOS and
Linux on x64 and ARM64. The game database is compiled in: 67 definitions
covering 1013 variants, keyed on machine = pc, fmtowns or tandy and
osenv = dos, windows or fmtowns. Windows titles run on a reimplemented Win16
and Win32 layer carried inside the executable. The game directory is passed
on the command line and the title is detected from its contents.
ref: DREAMM 4.0 linux-x64, appended zip game/*.dreamm
Support files live in the SDL preference path for organisation
"Aaron Giles" and application "DREAMM":
%APPDATA%\Aaron Giles\DREAMM on Windows,
~/Library/Application Support/Aaron Giles/DREAMM on macOS,
$XDG_DATA_HOME/Aaron Giles/DREAMM on Linux. Paths below are relative to that
directory. Startup writes config.json and creates install, gamedelta,
screenshots, logs and sounddata.
ref: SDL_GetPrefPath; strace of DREAMM 4.0 linux-x64 with a clean HOME
Audio hardware is set per game and per variant: speaker, cms, adlib, sb16,
tandy, mt32 and gmidi. MT-32 and General MIDI output can go to an external
MIDI device, to the OPL MIDI generator or to a SoundFont, so no ROM file is
needed to play any title. ROMs add the two hardware synthesiser options.
ref: game/*.dreamm audiohw; "Expected one of 'speaker', 'cms', 'adlib',
'sb16', 'mt32', or 'gmidi' in audiohw"
MT-32 and CM-32L are emulated by a bundled munt build, unpacked at runtime
to sounddata/mt32emu-dreamm.so and driven through mt32emu_get_service_i.
Twelve ROM sets are declared in a table of twelve 64-byte records holding
display name, id, control ROM full image, control chips A and B, PCM full
image and PCM low and high halves: MT-32 v1.04, v1.05, v1.06, v1.07, Blue
Ridge Enhanced, v2.03, v2.04, v2.06, v2.07, CM-32L v1.00, CM-32L v1.02 and
CM-32LN v1.00. A set is offered once a control ROM is present as the full
image or as both chips, and a PCM ROM is present as the full image or as
both halves. The CM-32L sets name cm32l_pcm.rom as the full image,
mt32_pcm_l.rom as the low half and cm32l_pcm_h.rom as the high half. munt
identifies each file by size then SHA1 before opening the synth.
ref: set table 0x23db4a8, id lookup 0x164d050, availability 0x164d2a8;
munt ROMInfo.cpp:206-214 ROMInfo::getROMInfo
The SC-55 is emulated by the Nuked SC-55 CLAP plug-in, unpacked to
sounddata/Nuked-SC55.clap, which reads one model directory under
Nuked-SC55-Resources/ROMs. Five models are probed at startup: SC-55 v1.00,
v1.20, v1.21, v2.00 and SC-55mk2 v1.01. The plug-in identifies a set by
hashing the directory contents, so its own loader does not depend on the
file names.
ref: strace of DREAMM 4.0 linux-x64; Nuked-SC55-CLAP nuked_sc55.cpp:145-212
GetRomBasePaths and Init, rom_loader.cpp:31-80 DetectRomsetsByHash
Both families install by dropping files on the Manage Sound Fonts & ROMs
screen, or by copying them into sounddata by hand. A dropped file is matched
against a 51-entry manifest of {crc32, size, name} sorted by name: one path
resolves a file by name and checks its size then its CRC32, the other maps a
size and CRC32 back to the destination paths listed below. The manifest
sizes agree with the bundled munt ROM table. mt32_ctrl_2_03.rom is named by
the v2.03 set but has no manifest entry, so it loads from sounddata and
cannot be installed by drag and drop.
ref: manifest 0x23daf78, name match 0x16456a0, reverse lookup 0x1645880;
"To install Sound Fonts (.sf2 files) or ROMs for Roland MIDI emulation,
drop them onto this screen."
SoundFonts are read from sounddata as well: the directory is scanned at
startup and every .sf2 found becomes a MIDI output option for both MT-32 and
GMIDI. No name and no hash is compiled in and the file keeps the name it
arrived with, so none is listed below.
ref: sounddata scan; "Error loading soundfont '{}': {}", "Font file '{}'
seems to be an MT-32 set, not compatible with GMIDI"
Everything else the emulator reads is appended to the executable and
unpacked at runtime: the game definitions and their icons, the copy
protection artwork, gamecontrollerdb.txt, the shaders, the UI fonts and
images, the two synthesiser plug-ins, and the Win16 and Win32 system files,
fonts and sounds.
ref: appended zip, 488 entries
files:
# -- Roland MT-32 and CM-32L, sounddata/mt32emu --
# A set needs one control ROM and one PCM ROM, each supplied as the full
# image or as the two chip dumps.
- name: mt32_ctrl_1_04.rom
path: "sounddata/mt32emu/mt32_ctrl_1_04.rom"
description: "Roland MT-32 v1.04 control ROM"
required: false
size: 65536
crc32: "4c91fa96"
sha1: "5a5cb5a77d7d55ee69657c2f870416daed52dea7"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23dafc8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_1_04_a.rom
path: "sounddata/mt32emu/mt32_ctrl_1_04_a.rom"
description: "Roland MT-32 v1.04 control ROM, chip A"
required: false
size: 32768
crc32: "a93b65f2"
sha1: "9cd4858014c4e8a9dff96053f784bfaac1092a2e"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23dafd8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_1_04_b.rom
path: "sounddata/mt32emu/mt32_ctrl_1_04_b.rom"
description: "Roland MT-32 v1.04 control ROM, chip B"
required: false
size: 32768
crc32: "b5ee2192"
sha1: "fe8db469b5bfeb37edb269fd47e3ce6d91014652"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23dafe8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_1_05.rom
path: "sounddata/mt32emu/mt32_ctrl_1_05.rom"
description: "Roland MT-32 v1.05 control ROM"
required: false
size: 65536
crc32: "e6bb2b77"
sha1: "e17a3a6d265bf1fa150312061134293d2b58288c"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23daff8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_1_05_a.rom
path: "sounddata/mt32emu/mt32_ctrl_1_05_a.rom"
description: "Roland MT-32 v1.05 control ROM, chip A"
required: false
size: 32768
crc32: "3281216c"
sha1: "57a09d80d2f7ca5b9734edbe9645e6e700f83701"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db008, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_1_05_b.rom
path: "sounddata/mt32emu/mt32_ctrl_1_05_b.rom"
description: "Roland MT-32 v1.05 control ROM, chip B"
required: false
size: 32768
crc32: "e06d8020"
sha1: "52e3c6666db9ef962591a8ee99be0cde17f3a6b6"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db018, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_1_06.rom
path: "sounddata/mt32emu/mt32_ctrl_1_06.rom"
description: "Roland MT-32 v1.06 control ROM"
required: false
size: 65536
crc32: "d63319e8"
sha1: "a553481f4e2794c10cfe597fef154eef0d8257de"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db028, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_1_06_a.rom
path: "sounddata/mt32emu/mt32_ctrl_1_06_a.rom"
description: "Roland MT-32 v1.06 control ROM, chip A"
required: false
size: 32768
crc32: "29369ae1"
sha1: "cc83bf23cee533097fb4c7e2c116e43b50ebacc8"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db038, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_1_06_b.rom
path: "sounddata/mt32emu/mt32_ctrl_1_06_b.rom"
description: "Roland MT-32 v1.06 control ROM, chip B"
required: false
size: 32768
crc32: "4d495d98"
sha1: "bf4f15666bc46679579498386704893b630c1171"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db048, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_1_07.rom
path: "sounddata/mt32emu/mt32_ctrl_1_07.rom"
description: "Roland MT-32 v1.07 control ROM"
required: false
size: 65536
crc32: "a7c1531b"
sha1: "b083518fffb7f66b03c23b7eb4f868e62dc5a987"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db058, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_1_07_a.rom
path: "sounddata/mt32emu/mt32_ctrl_1_07_a.rom"
description: "Roland MT-32 v1.07 control ROM, chip A"
required: false
size: 32768
crc32: "67fd8968"
sha1: "13f06b38f0d9e0fc050b6503ab777bb938603260"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db068, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_1_07_b.rom
path: "sounddata/mt32emu/mt32_ctrl_1_07_b.rom"
description: "Roland MT-32 v1.07 control ROM, chip B"
required: false
size: 32768
crc32: "60f45882"
sha1: "c55e165487d71fa88bd8c5e9c083bc456c1a89aa"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db078, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_bluer.rom
path: "sounddata/mt32emu/mt32_ctrl_bluer.rom"
description: "Roland MT-32 Blue Ridge Enhanced control ROM"
required: false
size: 65536
crc32: "627b9a51"
sha1: "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db0b8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_bluer_a.rom
path: "sounddata/mt32emu/mt32_ctrl_bluer_a.rom"
description: "Roland MT-32 Blue Ridge Enhanced control ROM, chip A"
required: false
size: 32768
crc32: "d75fc3d9"
sha1: "11a6ae5d8b6ee328b371af7f1e40b82125aa6b4d"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db0c8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_bluer_b.rom
path: "sounddata/mt32emu/mt32_ctrl_bluer_b.rom"
description: "Roland MT-32 Blue Ridge Enhanced control ROM, chip B"
required: false
size: 32768
crc32: "5816476f"
sha1: "e0934320d7cbb5edfaa29e0d01ae835ef620085b"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db0d8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_2_03.rom
path: "sounddata/mt32emu/mt32_ctrl_2_03.rom"
description: "Roland MT-32 v2.03 control ROM"
required: false
size: 131072
sha1: "5837064c9df4741a55f7c4d8787ac158dff2d3ce"
validation: [size, sha1]
source_ref: "DREAMM 4.0 linux-x64: set table 0x23db5a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_2_04.rom
path: "sounddata/mt32emu/mt32_ctrl_2_04.rom"
description: "Roland MT-32 v2.04 control ROM"
required: false
size: 131072
crc32: "59a49d5c"
sha1: "2c16432b6c73dd2a3947cba950a0f4c19d6180eb"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db088, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_2_06.rom
path: "sounddata/mt32emu/mt32_ctrl_2_06.rom"
description: "Roland MT-32 v2.06 control ROM"
required: false
size: 131072
crc32: "94815415"
sha1: "2869cf4c235d671668cfcb62415e2ce8323ad4ed"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db098, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_ctrl_2_07.rom
path: "sounddata/mt32emu/mt32_ctrl_2_07.rom"
description: "Roland MT-32 v2.07 control ROM"
required: false
size: 131072
crc32: "a016b607"
sha1: "47b52adefedaec475c925e54340e37673c11707c"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db0a8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: cm32l_ctrl_1_00.rom
path: "sounddata/mt32emu/cm32l_ctrl_1_00.rom"
description: "Roland CM-32L v1.00 control ROM"
required: false
size: 65536
crc32: "ee62022f"
sha1: "73683d585cd6948cc19547942ca0e14a0319456d"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23daf88, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: cm32l_ctrl_1_02.rom
path: "sounddata/mt32emu/cm32l_ctrl_1_02.rom"
description: "Roland CM-32L v1.02 control ROM"
required: false
size: 65536
crc32: "b998047e"
sha1: "a439fbb390da38cada95a7cbb1d6ca199cd66ef8"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23daf98, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: cm32ln_ctrl_1_00.rom
path: "sounddata/mt32emu/cm32ln_ctrl_1_00.rom"
description: "Roland CM-32LN v1.00 control ROM"
required: false
size: 65536
crc32: "4a3bb4ef"
sha1: "dc1c5b1b90a4646d00f7daf3679733c7badc7077"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23daf78, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
# -- MT-32 and CM-32L PCM ROMs --
- name: mt32_pcm.rom
path: "sounddata/mt32emu/mt32_pcm.rom"
description: "Roland MT-32 PCM ROM"
required: false
size: 524288
crc32: "573e31cc"
sha1: "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db0e8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_pcm_l.rom
path: "sounddata/mt32emu/mt32_pcm_l.rom"
description: "Roland MT-32 PCM ROM, low half"
required: false
size: 262144
crc32: "dd9deac3"
sha1: "3a1e19b0cd4036623fd1d1d11f5f25995585962b"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db108, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: mt32_pcm_h.rom
path: "sounddata/mt32emu/mt32_pcm_h.rom"
description: "Roland MT-32 PCM ROM, high half"
required: false
size: 262144
crc32: "4ee6506c"
sha1: "2cadb99d21a6a4a6f5b61b6218d16e9b43f61d01"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db0f8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: cm32l_pcm.rom
path: "sounddata/mt32emu/cm32l_pcm.rom"
description: "Roland CM-32L PCM ROM"
required: false
size: 1048576
crc32: "4b961eba"
sha1: "289cc298ad532b702461bfc738009d9ebe8025ea"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23dafa8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
- name: cm32l_pcm_h.rom
path: "sounddata/mt32emu/cm32l_pcm_h.rom"
description: "Roland CM-32L PCM ROM, high half"
required: false
size: 524288
crc32: "8e9ea06e"
sha1: "3ad889fde5db5b6437cbc2eb6e305312fec3df93"
validation: [size, crc32, sha1]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23dafb8, set table 0x23db4a8; sounddata/mt32emu-dreamm.so ROM table"
# -- Roland SC-55, sounddata/Nuked-SC55-Resources/ROMs --
# One complete set per model directory; the plugin loads a single directory.
- name: sc55_rom1.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_rom1.bin"
description: "Roland SC-55 v1.00 program ROM (ROM1)"
required: false
size: 32768
crc32: "d072c251"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db118"
- name: sc55_rom2.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_rom2.bin"
description: "Roland SC-55 v1.00 program ROM (ROM2)"
required: false
size: 262144
crc32: "dbaaae8f"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db128"
- name: sc55_waverom1.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_waverom1.bin"
description: "Roland SC-55 v1.00 wave ROM (WAVEROM1)"
required: false
size: 1048576
crc32: "1ac774d3"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db138"
- name: sc55_waverom2.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_waverom2.bin"
description: "Roland SC-55 v1.00 wave ROM (WAVEROM2)"
required: false
size: 1048576
crc32: "8dcc592a"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db148"
- name: sc55_waverom3.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_waverom3.bin"
description: "Roland SC-55 v1.00 wave ROM (WAVEROM3)"
required: false
size: 1048576
crc32: "e21ebc04"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db158"
- name: sc55_rom1.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.20/sc55_rom1.bin"
description: "Roland SC-55 v1.20 program ROM (ROM1)"
required: false
size: 32768
crc32: "4ed0d171"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db168"
- name: sc55_rom2.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.20/sc55_rom2.bin"
description: "Roland SC-55 v1.20 program ROM (ROM2)"
required: false
size: 262144
crc32: "ebd488fd"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db178"
- name: sc55_waverom1.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.20/sc55_waverom1.bin"
description: "Roland SC-55 v1.20 wave ROM (WAVEROM1)"
required: false
size: 1048576
crc32: "1ac774d3"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db188"
- name: sc55_waverom2.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.20/sc55_waverom2.bin"
description: "Roland SC-55 v1.20 wave ROM (WAVEROM2)"
required: false
size: 1048576
crc32: "8dcc592a"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db198"
- name: sc55_waverom3.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.20/sc55_waverom3.bin"
description: "Roland SC-55 v1.20 wave ROM (WAVEROM3)"
required: false
size: 1048576
crc32: "e21ebc04"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db1a8"
- name: sc55_rom1.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.21/sc55_rom1.bin"
description: "Roland SC-55 v1.21 program ROM (ROM1)"
required: false
size: 32768
crc32: "4ed0d171"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db1b8"
- name: sc55_rom2.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.21/sc55_rom2.bin"
description: "Roland SC-55 v1.21 program ROM (ROM2)"
required: false
size: 262144
crc32: "2dc58549"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db1c8"
- name: sc55_waverom1.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.21/sc55_waverom1.bin"
description: "Roland SC-55 v1.21 wave ROM (WAVEROM1)"
required: false
size: 1048576
crc32: "1ac774d3"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db1d8"
- name: sc55_waverom2.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.21/sc55_waverom2.bin"
description: "Roland SC-55 v1.21 wave ROM (WAVEROM2)"
required: false
size: 1048576
crc32: "8dcc592a"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db1e8"
- name: sc55_waverom3.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.21/sc55_waverom3.bin"
description: "Roland SC-55 v1.21 wave ROM (WAVEROM3)"
required: false
size: 1048576
crc32: "e21ebc04"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db1f8"
- name: sc55_rom1.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v2.00/sc55_rom1.bin"
description: "Roland SC-55 v2.00 program ROM (ROM1)"
required: false
size: 32768
crc32: "a160da90"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db208"
- name: sc55_rom2.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v2.00/sc55_rom2.bin"
description: "Roland SC-55 v2.00 program ROM (ROM2)"
required: false
size: 262144
crc32: "1768cc18"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db218"
- name: sc55_waverom1.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v2.00/sc55_waverom1.bin"
description: "Roland SC-55 v2.00 wave ROM (WAVEROM1)"
required: false
size: 1048576
crc32: "1ac774d3"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db228"
- name: sc55_waverom2.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v2.00/sc55_waverom2.bin"
description: "Roland SC-55 v2.00 wave ROM (WAVEROM2)"
required: false
size: 1048576
crc32: "8dcc592a"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db238"
- name: sc55_waverom3.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55-v2.00/sc55_waverom3.bin"
description: "Roland SC-55 v2.00 wave ROM (WAVEROM3)"
required: false
size: 1048576
crc32: "e21ebc04"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db248"
- name: rom1.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/rom1.bin"
description: "Roland SC-55mk2 v1.01 program ROM (ROM1)"
required: false
size: 32768
crc32: "9b66631f"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db258"
- name: rom2.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/rom2.bin"
description: "Roland SC-55mk2 v1.01 program ROM (ROM2)"
required: false
size: 524288
crc32: "fcee1e8e"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db268"
- name: rom_sm.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/rom_sm.bin"
description: "Roland SC-55mk2 v1.01 sub-MCU ROM (SMROM)"
required: false
size: 4096
crc32: "702c0a82"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db278"
- name: waverom1.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/waverom1.bin"
description: "Roland SC-55mk2 v1.01 wave ROM (WAVEROM1)"
required: false
size: 2097152
crc32: "1519d3b3"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db288"
- name: waverom2.bin
path: "sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/waverom2.bin"
description: "Roland SC-55mk2 v1.01 wave ROM (WAVEROM2)"
required: false
size: 1048576
crc32: "0f826c7f"
validation: [size, crc32]
source_ref: "DREAMM 4.0 linux-x64: ROM manifest 0x23db298"
+282
View File
@@ -0,0 +1,282 @@
emulator: Flycast Dojo
type: standalone
core_classification: enhanced_fork
source: "https://github.com/blueminder/flycast-dojo"
upstream: "https://github.com/flyinghead/flycast"
source_commit: "d0e47e572b1e7b355e88bda8308c89d0c5156cbf"
upstream_commit: "a172e0001351dfbc49b86860a13d5390b1c493fe"
logo: "https://raw.githubusercontent.com/blueminder/flycast-dojo/master/shell/linux/flycast-dojo.png"
profiled_date: "2026-08-08"
core_version: "dojo-7-preview4"
display_name: "Sega - Dreamcast/Naomi (Flycast Dojo)"
cores:
- flycast-dojo
systems:
- sega-dreamcast
- sega-naomi
- sega-naomi2
- sega-atomiswave
mode: standalone
verification: existence
notes: |
Fork of Flycast adding rollback and delay netplay, a lobby, spectating,
replay recording and a training mode.
Every file below is read from the data directory, flat, with no subfolder.
The directory is <exe>/data on Windows, $XDG_DATA_HOME/flycast-dojo or
$HOME/.local/share/flycast-dojo on Linux, /flycast-dojo/data on Switch.
$FLYCAST_ROOT overrides the root, $FLYCAST_BIOS_PATH adds search paths,
and ContentPath entries are searched after the data directory.
ref: core/linux-dist/main.cpp:157-365, core/windows/winmain.cpp:245-266,
core/stdclass.cpp:78-97
The boot ROM prefix follows the platform (core/hw/holly/sb_mem.cpp:27-42):
Dreamcast -> dc_
NAOMI -> naomi_
NAOMI 2 -> naomi2_
Atomiswave -> aw_
Boot ROM search pattern (sb_mem.cpp:254,269):
{prefix}boot.bin, {prefix}boot.bin.bin, {prefix}bios.bin, {prefix}bios.bin.bin
Flash search takes a single name, {prefix}nvmem.bin (sb_mem.cpp:214), or
{prefix}nvmem.bin.net once Dojo mode is on (sb_mem.cpp:195).
The aw_ prefix never reaches a filename: sb_mem.cpp:267 skips the boot ROM
search on Atomiswave, whose BIOS comes from awbios.zip, and its flash
follows the per-game arcade path (sb_mem.cpp:216).
Arcade BIOS archives are opened as <name>.zip, then <name>.7z
(core/hw/naomi/naomi_cart.cpp:69-71). Each ROM inside is looked up by CRC
then by filename; the crc field of every BIOS blob is left at zero, so the
filename decides. No hash is checked on an archive.
NAOMI 2 is a platform of its own here: naomi_cart_GetPlatform returns
DC_PLATFORM_NAOMI2 for any game whose bios field is naomi2
(naomi_cart.cpp:646-657), which selects the naomi2_ prefix and naomi2.zip.
Under netplay, match playback or match recording the Dreamcast boot ROM is
skipped and reios is forced, so both sides start from the same state.
Product numbers T0019M and T-31101N are the two exceptions that keep the
real BIOS (sb_mem.cpp:237-259).
BIOS[] also declares airlbios and naomigd. No entry of Games[] carries
either name in its bios field and loadBios is only ever called with that
field or the literal naomi, so neither archive is opened. The Airline
Pilots sets use the naomi BIOS (naomi_roms.cpp:821-828,854-862).
flycast_roms.json ships beside the binary and lists an md5 for naomi.zip,
naomi2.zip and awbios.zip. The only function reading them, CompareBIOS,
has no live caller (DojoFile.cpp:228-242, DojoGui.cpp:1314,1369).
Distributed with the emulator and fetched at build time: data/default.zip
and the per-game .nvmem/.eeprom/.nvmem2 netplay files from
flycast-netplay-nvmem, data/game_values/*.json from
flycast-dojo-game-values, training/*.lua from flycast-dojo-training, and
flycast_roms.json.
ref: CMakeLists.txt:1787-1834, .github/workflows/c-cpp.yml:171-192,
shell/linux/make-appimage.sh:136-149
Also read but never user supplied: buttons.png overrides an on-screen
button sheet compiled into the binary (core/rend/osd.cpp:152-171),
mappings/*.cfg are written by the input configuration screen
(core/input/mapping.cpp:382-445), and flycast.lua is a user script
(core/lua/lua.cpp:746-761).
files:
# -------------------------------------------------------
# Sega Dreamcast
# -------------------------------------------------------
- name: dc_boot.bin
aliases: ["dc_boot.bin.bin", "dc_bios.bin", "dc_bios.bin.bin"]
system: sega-dreamcast
required: false
hle_fallback: true
min_size: 2097152
validation: [size]
note: "Boot ROM. reios takes over when it is absent, and is forced under netplay, match playback and match recording. Read fails below 2 MB."
source_ref: "core/hw/holly/sb_mem.cpp:269, core/emulator.cpp:566-569, core/hw/flashrom/flashrom.cpp:23-33"
- name: dc_nvmem.bin
system: sega-dreamcast
required: false
min_size: 131072
validation: [size]
note: "Flash memory. Created and filled with factory settings when absent."
source_ref: "core/hw/holly/sb_mem.cpp:214, core/hw/holly/sb_mem.cpp:111-187"
- name: dc_nvmem.bin.net
system: sega-dreamcast
required: false
min_size: 131072
validation: [size]
note: "Flash memory used once Dojo mode is enabled, keeping netplay settings apart from local ones."
source_ref: "core/hw/holly/sb_mem.cpp:192-195"
- name: font.bin
system: sega-dreamcast
required: false
note: "System font served by the reios font syscall. A built-in font is used when absent."
source_ref: "core/reios/reios.cpp:741-764, core/oslib/oslib.cpp:195-198"
# -------------------------------------------------------
# Sega NAOMI
# -------------------------------------------------------
- name: naomi_boot.bin
aliases: ["naomi_boot.bin.bin", "naomi_bios.bin", "naomi_bios.bin.bin"]
system: sega-naomi
required: false
min_size: 2097152
validation: [size]
note: "Flat boot ROM. Games whose bios field is null run from it when naomi.zip is missing."
source_ref: "core/hw/holly/sb_mem.cpp:269, core/hw/naomi/naomi_cart.cpp:202-207"
- name: naomi.zip
system: sega-naomi
required: true
category: bios_zip
note: "System BIOS archive. 89 game entries name it and abort without it."
source_ref: "core/hw/naomi/naomi_roms.cpp:84-140, core/hw/naomi/naomi_cart.cpp:194-208"
contents:
- name: epr-21576h.ic27
description: Japan
size: 2097152
- name: epr-21577h.ic27
description: USA
size: 2097152
- name: epr-21578h.ic27
description: Export
size: 2097152
- name: epr-21579d.ic27
description: Korea
size: 2097152
- name: f355bios.zip
system: sega-naomi
required: false
category: bios_zip
note: "Ferrari F355 Challenge twin. Required by f355twin, f355twinp and f355twn2."
source_ref: "core/hw/naomi/naomi_roms.cpp:47-54, core/hw/naomi/naomi_roms.cpp:1689,1725,1761"
contents:
- name: epr-22849.ic27
description: Japan
size: 2097152
- name: epr-22850.ic27
description: USA
size: 2097152
- name: epr-22851.ic27
description: Export
size: 2097152
- name: f355dlx.zip
system: sega-naomi
required: false
category: bios_zip
note: "Ferrari F355 Challenge deluxe. Required by f355."
source_ref: "core/hw/naomi/naomi_roms.cpp:56-70, core/hw/naomi/naomi_roms.cpp:1645"
contents:
- name: epr-21862.ic27
description: Japan
size: 2097152
- name: epr-21863.ic27
description: USA
size: 2097152
- name: epr-21864.ic27
description: Export
size: 2097152
- name: hod2bios.zip
system: sega-naomi
required: false
category: bios_zip
note: "House of the Dead 2. Required by hotd2, hotd2o, hotd2e and hotd2p."
source_ref: "core/hw/naomi/naomi_roms.cpp:72-82, core/hw/naomi/naomi_roms.cpp:2003,2042,2081,2120"
contents:
- name: epr-21329.ic27
description: Japan
size: 2097152
- name: epr-21330.ic27
description: USA
size: 2097152
- name: epr-21331.ic27
description: Export
size: 2097152
# -------------------------------------------------------
# Sega NAOMI 2
# -------------------------------------------------------
- name: naomi2_boot.bin
aliases: ["naomi2_boot.bin.bin", "naomi2_bios.bin", "naomi2_bios.bin.bin"]
system: sega-naomi2
required: false
min_size: 2097152
validation: [size]
note: "Flat boot ROM for the NAOMI 2 platform."
source_ref: "core/hw/holly/sb_mem.cpp:35-36,269"
- name: naomi2.zip
system: sega-naomi2
required: true
category: bios_zip
note: "System BIOS archive. All 43 NAOMI 2 game entries name it and abort without it."
source_ref: "core/hw/naomi/naomi_roms.cpp:166-172, core/hw/naomi/naomi_cart.cpp:646-657"
contents:
- name: epr-23605c.ic27
description: Japan
size: 2097152
- name: epr-23607c.ic27
description: USA
size: 2097152
- name: epr-23608c.ic27
description: Export
size: 2097152
# -------------------------------------------------------
# Sammy Atomiswave
# -------------------------------------------------------
- name: awbios.zip
system: sega-atomiswave
required: true
category: bios_zip
note: "System BIOS archive. All 34 Atomiswave game entries name it and abort without it."
source_ref: "core/hw/naomi/naomi_roms.cpp:38-45, core/hw/naomi/naomi_cart.cpp:194-208"
contents:
- name: bios0.ic23
size: 131072
# -------------------------------------------------------
# Input
# -------------------------------------------------------
- name: gamecontrollerdb.txt
required: false
category: game_data
note: "SDL controller mapping database, read from the data directory then the config directory. Not part of the release archive. SDL built-in mappings are used when absent."
source_ref: "core/sdl/sdl.cpp:183-191"
platform_details:
dreamcast:
bios_size: 2097152
flash_size: 131072
ram_size: 16777216
hle_available: true
source_ref: "core/emulator.cpp:436-442"
naomi:
bios_size: 2097152
sram_size: 32768
ram_size: 33554432
hle_available: false
source_ref: "core/emulator.cpp:443-449"
naomi2:
bios_size: 2097152
sram_size: 32768
ram_size: 33554432
eram_size: 33554432
hle_available: false
source_ref: "core/emulator.cpp:450-458"
atomiswave:
bios_size: 131072
sram_size: 131072
ram_size: 16777216
hle_available: false
source_ref: "core/emulator.cpp:459-465"
+229
View File
@@ -0,0 +1,229 @@
emulator: Gargoyle
type: standalone
core_classification: game_engine
source: "https://github.com/garglk/garglk"
upstream: "https://github.com/garglk/garglk"
profiled_date: "2026-08-08"
source_commit: "5717fbf3f9d6f2341773d0cc03f19d96c463af72"
core_version: "2026.1"
display_name: "Interactive Fiction (Gargoyle)"
cores:
- gargoyle
systems:
- adrift
- advsys
- agt
- alan
- glulx
- hugo
- jacl
- level9
- magnetic-scrolls
- scott-adams
- scott-adams-plus
- tads
- taylormade
- zmachine
mode: standalone
notes: |
Interactive fiction player built on the Glk library implementation garglk,
shipping one interpreter binary per story format. The gargoyle binary reads
the first 32 bytes of the file, matches it against a magic-number table,
falls back to the extension, and executes the matching interpreter.
ref: launcher.cpp:100-177 (probe, extensions, interpreters), 379-419 (rungame)
Formats and the interpreter each one runs: Adrift 4 (scare), Adrift 5
(FrankenDrift), AdvSys (advsys), AGT (agility), Alan 2 (alan2), Alan 3
(alan3), Glulx (git), Hugo (hugo), JACL (jacl), Level 9 (level9), Magnetic
Scrolls (magnetic), Scott Adams Graphic Adventures Plus (plus), Scott Adams
(scott), TADS 2 and 3 (tadsr), TaylorMade (taylor), Z-machine (bocfel).
Blorb files are unwrapped first and dispatched on the Exec chunk type.
ref: launcher.cpp:45-60 (interpreter names), 276-328 (runblorb)
Adrift 5 needs the FrankenDrift runner, a .NET build option that is off by
default, including in the official AppImage. Without it the launcher reports
that Adrift 5 is unsupported and stops.
ref: CMakeLists.txt:63 (WITH_FRANKENDRIFT), gargoyle-appimage.sh:14,
launcher.cpp:160-162,202-206
Every glyph is drawn through FreeType rather than by the operating system,
so a font file has to be reachable. The default config asks for the families
"Gargoyle Mono" and "Gargoyle Serif"; if fontconfig cannot resolve them, the
interpreter loads the shipped TTF files by name from the data directory,
then the executable directory, then the working directory, and calls
winabort() when all three miss.
ref: garglk.h:661-662 (defaults), garglk.ini:195,198, fontfc.cpp:83-154
(fontconfig lookup), draw.cpp:260-287 (path fallbacks), 300-350
(make_font, abort), 490-498 (file names)
Gargoyle Serif is Charis SIL and Gargoyle Mono is Go Mono, both renamed so
they can be installed system-wide without clashing. Font embedding was
dropped because the OFL and the GPL do not mix, which is why the files are
loaded from disk.
ref: fonts/README
Data directory by platform: /usr/share/gargoyle on Unix,
<binary>/../share/gargoyle for the AppImage, the install directory on
Windows, and the bundle Resources directory on macOS. Fonts sit at its root
and themes in its themes subdirectory. macOS keeps the eight Gargoyle faces
in Resources/Fonts and Unifont in Resources; the Windows installer also
registers the eight faces as system fonts.
ref: sysqt.cpp:898-942, sysmac.mm:986-1003, garglk/CMakeLists.txt:136,144,
510-534, gargoyle_osx.sh:120-121,207-209, installer.nsi:89-90,200-207
Themes are read from every *.json in the theme directories, which are the
Qt application data locations plus the executable directory on Windows and
the data directory for the AppImage. A parse failure is reported and the
file skipped. The light and dark themes are also compiled into the binary,
so the on-disk copies of those two replace identical entries.
ref: theme.cpp:266-319, sysqt.cpp:920-942, garglk/CMakeLists.txt:80-92
garglk.ini is not distributed: the default config is compiled in as a string
and written to the highest-priority user location on demand. Installing a
system copy is an off-by-default build option.
ref: config.cpp:399-449, garglk/CMakeLists.txt:14 (INSTALL_GARGLKINI),
garglk/CMakeLists.txt:60-78 (vtk_encode_string)
MIDI in Blorb resources goes through FluidSynth, which needs a SoundFont.
Gargoyle names none: the soundfont list is empty unless the user sets it in
garglk.ini or the build hardcodes one, and the fallback is whatever
FluidSynth reports as its own default.
ref: config.cpp:245-249,787-795, snddecode.cpp:373-395,
garglk/CMakeLists.txt:57 (DEFAULT_SOUNDFONT), INSTALL.md:137-141
Story files are content. Formats that carry companion data read it from the
story file's own name or directory, so it travels with the game: Level 9
graphics as PICTURE.DAT, Magnetic Scrolls graphics and hints as .gfx and
.hnt, Alan 3 resources as .a3r, TADS resources as .t3r, and the extra disk
sides the Scott Adams, Plus and TaylorMade interpreters read from C64,
Atari 8-bit and Apple II images.
ref: level9/Glk/glk.c:6415-6450, magnetic/Glk/glk.c:5758-5855,
terps/CMakeLists.txt:69,73,359,404,500 (c64diskimage, unp64)
exclusion_note: >
TADS character mapping files are not loaded by this build. The Glk port
reports utf-8 and asc7dflt as the local character sets, both built-in
tables, and its os_gen_charmap_filename() returns an empty name, so the
automatic .tcp lookup never runs; cmap_load() only fires for a path given
with -ctab. The agil.cfg read by AGiliTy lives in os_dos.c and os_dos16.c,
while the build compiles os_glk.c.
ref: tads/glk/osmisc.c:69-72,316-334, tads/tads2/cmap.c:290-315,
tads/tads2/trd.c:513-517, terps/CMakeLists.txt:111-119
files:
# -- Text fonts, data directory root --
# Loaded by name when fontconfig cannot resolve the configured families.
# Gargoyle aborts when a face is available from neither source.
- name: "Gargoyle-Mono.ttf"
description: "Gargoyle Mono regular (Go Mono)"
required: true
source_ref: "draw.cpp:491 (make_entry monor), 300-350 (make_font, winabort)"
- name: "Gargoyle-Mono-Bold.ttf"
description: "Gargoyle Mono bold (Go Mono)"
required: true
source_ref: "draw.cpp:492 (make_entry monob), 300-350 (make_font, winabort)"
- name: "Gargoyle-Mono-Italic.ttf"
description: "Gargoyle Mono italic (Go Mono)"
required: true
source_ref: "draw.cpp:493 (make_entry monoi), 300-350 (make_font, winabort)"
- name: "Gargoyle-Mono-Bold-Italic.ttf"
description: "Gargoyle Mono bold italic (Go Mono)"
required: true
source_ref: "draw.cpp:494 (make_entry monoz), 300-350 (make_font, winabort)"
- name: "Gargoyle-Serif.ttf"
description: "Gargoyle Serif regular (Charis SIL)"
required: true
source_ref: "draw.cpp:495 (make_entry propr), 300-350 (make_font, winabort)"
- name: "Gargoyle-Serif-Bold.ttf"
description: "Gargoyle Serif bold (Charis SIL)"
required: true
source_ref: "draw.cpp:496 (make_entry propb), 300-350 (make_font, winabort)"
- name: "Gargoyle-Serif-Italic.ttf"
description: "Gargoyle Serif italic (Charis SIL)"
required: true
source_ref: "draw.cpp:497 (make_entry propi), 300-350 (make_font, winabort)"
- name: "Gargoyle-Serif-Bold-Italic.ttf"
description: "Gargoyle Serif bold italic (Charis SIL)"
required: true
source_ref: "draw.cpp:498 (make_entry propz), 300-350 (make_font, winabort)"
# -- Glyph substitution fonts, data directory root --
# Tried for every face after the main fonts; a load failure is skipped.
- name: "unifont.otf"
description: "GNU Unifont, Basic Multilingual Plane glyph fallback"
required: false
source_ref: "draw.cpp:352-375 (make_substitution_fonts), 476-478"
note: >
Covers glyphs missing from the text fonts. Loaded directly rather than
through the system font mechanism, so it is not installed system-wide.
- name: "unifont_upper.otf"
description: "GNU Unifont, planes above the BMP"
required: false
source_ref: "draw.cpp:352-375 (make_substitution_fonts), 476-478"
# -- Color themes, themes subdirectory --
# Every *.json in the theme directories is parsed, keyed on its name field.
- name: "Blue.json"
path: "themes/Blue.json"
description: "Blue color theme"
required: false
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:524"
- name: "Breeze Darker.json"
path: "themes/Breeze Darker.json"
description: "Breeze Darker color theme"
required: false
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:525"
- name: "Lectrote Dark.json"
path: "themes/Lectrote Dark.json"
description: "Lectrote Dark color theme"
required: false
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:526"
- name: "Lectrote Sepia.json"
path: "themes/Lectrote Sepia.json"
description: "Lectrote Sepia color theme"
required: false
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:527"
- name: "Lectrote Slate.json"
path: "themes/Lectrote Slate.json"
description: "Lectrote Slate color theme"
required: false
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:528"
- name: "Pencil.json"
path: "themes/Pencil.json"
description: "Pencil color theme"
required: false
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:529"
- name: "Zoom.json"
path: "themes/Zoom.json"
description: "Zoom color theme"
required: false
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:530"
- name: "dark.json"
path: "themes/dark.json"
description: "Dark color theme"
required: false
source_ref: "theme.cpp:268-282,304-316, garglk/CMakeLists.txt:80-85,531"
note: "Also compiled in as the built-in dark theme."
- name: "light.json"
path: "themes/light.json"
description: "Light color theme"
required: false
source_ref: "theme.cpp:268-282,304-316, garglk/CMakeLists.txt:87-92,532"
note: "Also compiled in as the built-in light theme."
+169
View File
@@ -0,0 +1,169 @@
emulator: Gopher2600
type: standalone
core_classification: other
source: "https://github.com/JetSetIlly/Gopher2600"
upstream: "https://github.com/JetSetIlly/Gopher2600"
profiled_date: "2026-08-08"
source_commit: "7f9b2f73630979c0f38dbde4c6f3c7162d99bac1"
core_version: "v0.57.0"
display_name: "Atari - 2600 (Gopher2600)"
cores:
- gopher2600
systems:
- atari-2600
mode: standalone
notes: |
Atari 2600 emulator written in Go. The 6507, TIA and RIOT are emulated in
software and the console needs no ROM of its own, so a plain cartridge boots
with nothing supplied.
Supercharger emulation is the only path that reads a BIOS. NewSupercharger
branches three ways (supercharger.go:93-119). A tape held as WAV or MP3 sets
Loader.IsSoundData and calls loadBIOS, and the error is returned, so the
cartridge fails to attach without the file. A demo unit image calls loadBIOS
and substitutes fastloadOnlyBIOS() on failure. Everything else, including the
usual Supercharger BIN, takes fastloadOnlyBIOS() without ever looking for the
file: a 2048 byte stub holding a touch of the tape load register and the CPU
jump table (bios.go:151-166).
loadBIOS reads the current working directory, then the directory holding the
tape or BIN, then the configuration directory (bios.go:53-116). Each candidate
name is tried in turn and the content is gated on MD5 before the caller checks
the 2048 byte length, so a file under the right name with the wrong content is
refused. ReqSpec selects the PAL table and the PAL hash (bios.go:56-59);
ReqSpec comes from the television specification, the stella.pro entry or the
filename (cartridgeloader/loader.go:194-201).
The demo unit is recognised by MD5 of the 256 bytes at 0x300 of the loaded
image (demounit.go:58,78). When that image carries more than 2048 bytes it
holds the Schweber chip and the carousel together; otherwise the eight ROMs
are read from the directory of the loaded file (demounit_controller.go:
178-200). A read error or a length other than 8192 logs and returns nil, and
the peripheral is left unplugged.
stella.pro is Stella's cartridge properties database, read from the
configuration directory (properties.go:28,48-58). It is loaded by
NewDebugger (debugger.go:356), which drives play as well as debug
(gopher2600.go:261,307,326), so it applies to the plain `gopher2600 <rom>`
invocation. A missing file is logged and start-up continues; the ROM selector
then falls back to the filename and no television specification is inferred
from the cartridge name.
The ROM selector also reads a Named_Boxarts directory from the configuration
directory, listing it at start-up and fuzzy matching the cartridge name
against the entries before reading one image (win_rom_select.go:92,127-138,
678-689). It holds the box art of the libretro-thumbnails Atari 2600 set,
pinned upstream at commit 4ea759821724d6c7bcf2f46020d79fc4270ed2f6
(win_rom_select.go:91). Its content is whatever the user copies in and no
name is fixed by the code, so it carries no file entry here.
Fonts, shaders, bevels, the CPU instruction table and the Movie Cart core are
compiled in with go:embed. The remaining paths under the configuration
directory are written by the emulator or authored by hand: preferences,
debugger_imgui.ini, managerState, managerHotkeys, savekey, fa2_nvram,
elf_nvram, regression, patches and setupDB. ARM map files and DWARF sources
are read from a project build tree beside the ROM. AtariVox speech calls the
festival binary as a process, with the path taken from preferences
(atarivox_preferences.go:51).
files:
- name: "Supercharger BIOS.bin"
system: atari-2600
aliases:
- "Supercharger.BIOS.bin"
- "Supercharger_BIOS.bin"
- "supercharger_bios.bin"
- "SUPERCHARGER_BIOS.bin"
region: "NTSC"
required: false
hle_fallback: true
size: 2048
md5: "4565c1a7abce773e53c75b35414adefd"
validation: [size, md5]
description: "Starpath Supercharger BIOS, required to load a tape held as WAV or MP3"
source_ref: "hardware/memory/cartridge/supercharger/bios.go:30-36,45,53-116,141"
- name: "Supercharger BIOS PAL.bin"
system: atari-2600
aliases:
- "Supercharger_BIOS_PAL.bin"
- "SUPERCHARGER_BIOS_PAL.bin"
region: "PAL"
required: false
hle_fallback: true
size: 2048
md5: "4a8c743396b8ad69d97e6fd3dd3e3132"
validation: [size, md5]
description: "PAL Supercharger BIOS, selected when the loader resolves a PAL specification"
source_ref: "hardware/memory/cartridge/supercharger/bios.go:38-42,46,56-59,141"
- name: "Starpath Demonstration Unit 1P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 1, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 2P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 2, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 3P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 3, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 4P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 4, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 5P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 5, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 6P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 6, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 7P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 7, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 8P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 8, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "stella.pro"
system: atari-2600
required: false
description: "Stella cartridge properties database, keyed by cartridge MD5"
source_ref: "properties/properties.go:28,48-58; debugger/debugger.go:356"
+68
View File
@@ -0,0 +1,68 @@
emulator: gopher64
type: standalone
core_classification: other
source: "https://github.com/gopher64/gopher64"
upstream: "https://github.com/gopher64/gopher64"
profiled_date: "2026-08-08"
source_commit: "efe78e544a96ac6724a2c2651d8f0a62044e7467"
core_version: "v1.1.34"
display_name: "Nintendo - Nintendo 64 (gopher64)"
cores:
- gopher64
systems:
- nintendo-64
mode: standalone
notes: |
Nintendo 64 emulator written in Rust by Logan McNaughton, with parallel-rdp
driving the RDP and rcheevos providing RetroAchievements. Portions of the
emulation are adapted from mupen64plus and ares. ES-DE and RetroBat both run
the release binary, RetroBat in portable mode.
The boot chain reads no file. Both PIF ROMs are compiled in as 1984 byte
arrays, the size of the PIF ROM window (src/device/pif/rom.rs:1,90;
src/device/pif.rs:7). reset_pif installs the PAL image when the cartridge
country code is one of DFIPSUXY and the NTSC image otherwise
(src/device/pif.rs:252-257, src/device/cart/rom.rs:137-143), and the VR4300
runs IPL1 and IPL2 out of that array: reads below the PIF RAM offset are
served from it and writes there panic (src/device/pif.rs:31-58). The CIC needs
no file either. set_cic hashes the cartridge IPL3 region with SHA-256 and maps
the six known digests to a seed byte, with the 6102 seed as the fallback
(src/device/cart/rom.rs:147-175).
64DD is not emulated, so no IPL image is involved.
A Transfer Pak port reads two files whose paths come from the configuration,
gb_rom_path and gb_ram_path, and attaches them when both are set
(src/lib.rs:194-200). The pair is a Game Boy cartridge and its save, supplied
by the player: the loader takes the ROM as is and only inspects the tail of
the RAM for MBC3 clock state (src/device/controller/gbcart.rs:37-75), then
writes the RAM back on shutdown (src/lib.rs:276-288). The code fixes no name,
size or hash for either, so neither carries a file entry here.
The SC64 SD card image is created rather than obtained: an empty save is
resized to 64 MB and FAT formatted on first access
(src/device/cart/sc64.rs:4,34-38). Cartridges come from argv, plain or as the
first matching entry of a zip or 7z archive (src/device.rs:188-256).
Everything else under the configuration, data and cache directories is written
by the emulator: config.json and cheats.json (src/ui/config.rs:99-111,134-146),
retroachievements.json (src/lib.rs:209; src/retroachievements.rs:37,61),
ice_config.json from the netplay server response (src/ui/netplay.rs:713-716,
src/netplay.rs:419), the eeprom, sram, flash, mempak, sdcard and romsave saves
and the savestates (src/ui/storage.rs:212-232; src/savestates.rs:179,236). For
a netplay launch the GUI serialises the cheats to the cache directory, passes
them to a re-exec of itself through the hidden --cheats flag and deletes the
file afterwards (src/ui/gui.rs:583-593,600-615,630; src/lib.rs:141-147).
portable.txt is tested for existence only, to move those three directories
beside the executable (src/ui.rs:164-178).
Compiled-in data: the cheat database (src/cheats.rs:31), the No-Intro
Nintendo 64 export that names entries in the ROM browser
(src/ui/gui.rs:688-690), the RobotoMono face handed to SDL_ttf from memory
(src/ui/video.rs:109, src/ui/input_profile.rs:99), the parallel-rdp SPIR-V
modules (parallel-rdp/spirv.hpp and parallel-rdp/spirv_crt.hpp, used at
parallel-rdp/interface.cpp:4-5,615) and the Slint translations bundled at
build time (build.rs:11).
files: []