diff --git a/emulators/3dsen.yml b/emulators/3dsen.yml new file mode 100644 index 00000000..3c68d164 --- /dev/null +++ b/emulators/3dsen.yml @@ -0,0 +1,40 @@ +emulator: 3dSen +type: standalone +core_classification: embedded_hle +source: "https://geodstudio.net" +upstream: "https://geodstudio.net" +profiled_date: "2026-08-07" +core_version: "1.1" +display_name: "3dSen (3D NES)" +cores: + - 3dsen + - 3dsen-windows +systems: + - nintendo-nes +mode: standalone + +notes: | + Closed-source Unity/C# NES emulator by Geod Studio, sold on Steam and + itch.io for Windows, macOS and Linux. Rebuilds NES cartridge games as + voxel scenes at runtime. Emulation is compiled into the binary and the + NES has no boot ROM, so no external BIOS or firmware is loaded. Cartridge + games only, no Famicom Disk System and therefore no disksys.rom: ES-DE + lists it under nes and famicom but not fds, and RetroBat maps it to nes3d + alone and documents "No specific BIOS is required to play NES games". + + Games are registered through the emulator UI, which writes rom.json in + the Unity persistent data path (Windows AppData\LocalLow\Geod Studio\3dSen\, + Linux ~/.config/unity3d/Geod Studio/3dSen/, macOS ~/Library/Logs/Geod + Studio/3dSen/) binding a fixed numeric ID to the user ROM. Launching + passes that ID rather than a path: 3dSen.exe -id=N. + + Per-game 3D profiles are .3dn files, protobuf-serialized behind a "3dn" + title header and a version field (3DNesManager Classes/3DNTools.cs:14-31, + 51-58), loaded when a game starts (3DNes_Engine Engine3D.cs:37, Load3DN). + The 100 official profiles ship inside the application. Profiles built + with 3dSenMaker are optional per-game additions installed from the UI + since v0.9, and cover art packs are optional files placed in CoverArt/ + under the same data path. ROMs are user-supplied, the emulator ships + with no game content. + +files: [] diff --git a/emulators/a7800.yml b/emulators/a7800.yml new file mode 100644 index 00000000..4971417f --- /dev/null +++ b/emulators/a7800.yml @@ -0,0 +1,121 @@ +emulator: A7800 +type: standalone +core_classification: enhanced_fork +source: "https://github.com/7800-devtools/a7800" +upstream: "https://github.com/mamedev/mame" +profiled_date: "2026-08-08" +source_commit: "7a2afdc1ea08fc331b16b750d8c1f02d4ef62fc8" +core_version: "5.2" +display_name: "Atari - 7800 (A7800)" +cores: + - a7800 +systems: + - atari-7800 +mode: standalone + +notes: | + MAME fork by 7800.8bitdev.org built with the Atari 7800 driver alone. The + released binary carries eight machines, all declaring a7800 as parent: NTSC + and PAL at three palette temperatures, plus a developer mode showing DMA + usage per scanline (a7800.cpp:1837-1844). The temperature variants were + renamed after 5.2, from a7800u1/a7800u2/a7800pu1/a7800pu2 to + a7800a1/a7800a2/a7800pa1/a7800pa2. ROM definitions are identical in both. + + Console BIOS is optional. Every entry carries ROM_OPTIONAL, so absence + yields a warning rather than the fatal "Required files are missing" exit + (romload.cpp:373-379, 488-493). The region is ERASEFF, and machine_reset + reads the reset vector: when 0xfffe and 0xffff both hold 0xff, m_ctrl_reg is + set to 4 and the console starts the cartridge (a7800.cpp:1529-1532). No code + substitutes for the BIOS when it is absent. + + Lookup runs under rompath, which the shipped a7800.ini sets to "bios;roms". + open_rom_file walks the parent chain (romload.cpp:567-572), so all eight + machines fall back to the a7800 set, and the manual documents one merged + archive at bios/a7800.zip. Inside an archive the search tries name with CRC, + then CRC alone, then name (fileio.cpp:692-701), so a ROM whose filename + differs from the driver still resolves; loose files under rompath/a7800/ + match by name only. Loaded ROMs are checked for exact length and against the + declared CRC32 and SHA1, and a mismatch is a warning (romload.cpp:417-455). + + The PAL BIOS keeps the filename 7800pal.rom, which mainline MAME has since + renamed to c300558-001b.u7 for the same dump. Mainline also marks the 7800 + ROMs mandatory. + + Software list a7800 (hash/a7800.xml), attached by every machine + (a7800.cpp:1577, 1608, 1654, 1684), holds add-on hardware rather than games: + the High Score Cartridge and the XM Expansion Module, both backed by the + same 4KB highscre.bin served as the pass-through cart ROM + (hiscore.cpp:49-52, xm.cpp:177-183). Software list ROMs resolve as + a7800/ then under rompath (romload.cpp:628-650) and carry + no optional flag, so selecting either configuration without the image exits + with EMU_ERR_MISSING_FILES. + + The release ships the binary, a7800.ini, the manual, hash/a7800.xml, cfg + defaults, bgfx shaders and artwork masks, and no roms, samples, plugins or + language directory. The driver adds no samples device and no external + layout. Crosshair bitmaps fall back to a compiled-in shape + (crsshair.cpp:180-214) and the UI font to compiled-in data + (rendfont.cpp:587-600). + +files: + - name: a7800.zip + required: false + category: bios_zip + system: atari-7800 + source_ref: "src/mame/drivers/a7800.cpp:1698-1748" + note: >- + Merged console BIOS archive documented by the manual at bios/a7800.zip. + Serves all eight machines through the parent chain, since the PAL + machines are clones of a7800 rather than of a7800p. + validation: [size, crc32, sha1] + contents: + - name: 7800.u7 + description: NTSC BIOS, default system BIOS "a7800", mapped at 0x3000 + size: 4096 + crc32: "5d13730c" + sha1: "d9d134bb6b36907c615a594cc7688f7bfcef5b43" + - name: c300558-001a.u7 + description: NTSC prototype BIOS with Asteroids, system BIOS "a7800pr" + size: 16384 + crc32: "a0e10edf" + sha1: "14584b1eafe9721804782d4b1ac3a4a7313e455f" + - name: 7800pal.rom + description: PAL BIOS with Asteroids, named c300558-001b.u7 in mainline MAME + size: 16384 + crc32: "d5b61170" + sha1: "5a140136a16d1d83e4ff32a19409ca376a8df874" + + - name: hiscore.zip + required: false + category: bios_zip + system: atari-7800 + source_ref: "hash/a7800.xml:8-21" + note: >- + Software list set for the High Score Cartridge configuration (CX78HSC, + slot a78_hsc). Fatal when that configuration is selected and the set is + absent. + validation: [size, crc32, sha1] + contents: + - name: highscre.bin + description: High Score Cartridge ROM, read through the pass-through cart + size: 4096 + crc32: "9be408d3" + sha1: "a3af676991391a6dd716c79022d4947206b78164" + + - name: xm.zip + required: false + category: bios_zip + system: atari-7800 + source_ref: "hash/a7800.xml:24-38" + note: >- + Software list set for the XM Expansion Module configuration (slot + a78_xm), which reuses the High Score Cartridge ROM alongside 128KB RAM, + POKEY and YM2151. Fatal when that configuration is selected and the set + is absent. + validation: [size, crc32, sha1] + contents: + - name: highscre.bin + description: High Score Cartridge ROM, gated by XM control register bit 3 + size: 4096 + crc32: "9be408d3" + sha1: "a3af676991391a6dd716c79022d4947206b78164" diff --git a/emulators/ace-dl.yml b/emulators/ace-dl.yml new file mode 100644 index 00000000..1b6572c4 --- /dev/null +++ b/emulators/ace-dl.yml @@ -0,0 +1,281 @@ +emulator: ACE-DL +type: standalone +core_classification: community_fork +source: "https://roudoudou.com/ACE-DL/" +upstream: "http://ace.cpcscene.net" +profiled_date: "2026-08-08" +core_version: "2026-06-03" +display_name: "Amstrad - CPC/Plus (ACE-DL)" +cores: + - ace-dl + - acedl +systems: + - amstrad-cpc +mode: standalone + +notes: | + SDL port of ACE, the Amstrad CPC/Plus emulator written by Philippe Rimauro + (OffseT) for MorphOS. ACE-DL is built by Edouard Bergé (Roudoudou) from the + MorphOS sources and released for Windows, macOS, Linux and Raspberry Pi; + a third port targets Haiku. All three are closed source, the original author + keeps the sources private, so the entries below were established on the + official 2026-06-03 Linux x86-64 build: path constants read from the binary, + file opens traced with strace, and required/optional decided by removing each + file and observing the result. + + Machines are CPC 464, 664 and 6128 plus the Plus range, which boots from a + cartridge and covers the GX-4000. An operating system is one 32 KB file + holding the 16 KB firmware ROM followed by the 16 KB BASIC ROM; the AMSDOS + disc ROM is a separate 16 KB file mapped in slot 7. The upstream MorphOS + release keeps the three ROMs apart under System/ and composes them at + startup, ACE-DL ships them pre-joined under private/firmware/ with one file + per machine and language. The pairs are exact: + + OS464_UK.rom Firmware v1 + BASIC 1.00 + OS464_FR.rom Firmware f1 + French BASIC 1.0 (md5 824f5213…) + OS664_UK.rom Firmware v2 + BASIC 1.10 + OS6128_UK.rom Firmware v3 + BASIC 1.20 + OS6128_FR.rom Firmware f3 + BASIC 1.23 + OS6128_S.rom Firmware s3 + BASIC 1.21 + OS6128_DK.rom Firmware d3 + BASIC 1.20 + XMEM_FW_3_15_UK.rom XMEM 3.15 firmware + BASIC 1.20 + XMEM_FW_3_15_FR.rom XMEM 3.15 firmware + BASIC 1.23 + + Firmware versions run 1 to 4 for the 464, 664, 6128 and Plus, and the letter + is the country: v English, f French, s Spanish, d Danish. The BASIC revision + attached to a version 3 firmware follows the country, 1.23 for France, 1.21 + for Spain, 1.20 elsewhere, which is what the pairs above show. The XMEM files + replace the firmware half with the X-MEM expansion firmware and keep the + stock BASIC. + + The nine operating systems are the entries of the Machine configuration + selector. OS6128_UK.rom is the built-in default and is opened at every + startup even when the config OS= key names another file. Command line -fuk, + -ffr, -fsp and -fdk switch to the UK, French, Spanish and Danish 6128 files. + A machine needs at least 32 KB in the file: truncated to 16384 bytes the + emulator prints "Error initializing ROMs!" and dies, padded to 40000 bytes it + boots, so the check is a lower bound rather than an exact length. The AMSDOS + ROM is checked for presence only, an 8 KB stub boots. + + Plus machines boot from a cartridge and no cartridge filename is compiled + into the binary, the three Amstrad_?4.cpr files are the system cartridges the + author ships in the same directory, which is also the default browse root of + the cartridge requester. The loader walks the RIFF chunk list and reports + "Cartridge Load Error (Header)" on a bad header and "truncated file!" when a + cb00..cb07 bank is short, each bank being 16 KB for 128 KB total. + + Plugins pull three more ROMs. Multiface II reads multiface2.rom, the Hacker + plugin reads hackit400uk.rom in its UK flavour and hacker481fr.rom in its + French one, and Play2CPC reads the YM2608 ADPCM rhythm ROM, warning with + "ym2608_adpcm_rom.bin not found!" and running without it. The Windows package + omits that ROM, the Linux and Raspberry Pi packages carry it. + + Expansion ROMs are user business: config keys ROM0 to ROM255 hold whatever + the user picks through the requester rooted at media/rom/, and the release + seeds that directory with third-party ROMs (ParaDOS, Protext, Maxam, Utopia, + uniDOS, SymbOS, FutureOS, Orgams, Discology and others). Disc, tape, + snapshot, Dandanator and X-MASS images are user content the same way, and the + Nova plugin regenerates its 32 KB private/Nova/nova.nvram when the file is + absent. Outside emulation the binary loads its own payload: seventeen QOI + images, fatal with "Error loading QOI file please reinstall"; seventeen WAV + drive and monitor samples, each merely reported as not found; and the + private/messages catalog holding the French, English and Spanish + translations. private/sounds/hitachi_long_seek.wav ships with every package + but appears in no path constant and is never opened. + +files: + # -- Operating systems, firmware ROM + BASIC ROM joined in one 32 KB file -- + - name: OS6128_UK.rom + path: "private/firmware/OS6128_UK.rom" + system: amstrad-cpc + required: true + min_size: 32768 + validation: [size] + md5: b96280dc6c95a48857b4b8eb931533ae + sha1: 5977adbad3f7c1e0e082cd02fe76a700d9860c30 + source_ref: "AceDL 2026-06-03: private/firmware/OS6128_UK.rom, default machine, opened at every startup" + note: >- + CPC 6128 English. Firmware v3 followed by BASIC 1.20. Absence stops + startup with "Error initializing ROMs!". + + - name: OS6128_FR.rom + path: "private/firmware/OS6128_FR.rom" + system: amstrad-cpc + required: false + min_size: 32768 + validation: [size] + md5: 5ee871d5600eb9b5a22989c295f902a5 + sha1: 200d59076dfef36db061d6d7d21d80021cab1237 + source_ref: "AceDL 2026-06-03: Machine configuration entry OS6128_FR.rom, command line -ffr" + note: "CPC 6128 French. Firmware f3 followed by BASIC 1.23." + + - name: OS6128_S.rom + path: "private/firmware/OS6128_S.rom" + system: amstrad-cpc + required: false + min_size: 32768 + validation: [size] + md5: 0246740371010333385665dfeb7cd0ec + sha1: 1acd01c2c03424a78b32c9440f4d890fb1104815 + source_ref: "AceDL 2026-06-03: Machine configuration entry OS6128_S.rom, command line -fsp" + note: "CPC 6128 Spanish. Firmware s3 followed by BASIC 1.21." + + - name: OS6128_DK.rom + path: "private/firmware/OS6128_DK.rom" + system: amstrad-cpc + required: false + min_size: 32768 + validation: [size] + md5: ca1635fd992e2aa7a776b30da13467e5 + sha1: a9e7ee6355730f319a37c95ca0a714212b88c3b1 + source_ref: "AceDL 2026-06-03: Machine configuration entry OS6128_DK.rom, command line -fdk" + note: "CPC 6128 Danish. Firmware d3 followed by BASIC 1.20." + + - name: OS464_UK.rom + path: "private/firmware/OS464_UK.rom" + system: amstrad-cpc + required: false + min_size: 32768 + validation: [size] + md5: a993f85b88ac4350cf4d41554e87fe4f + sha1: 56d39c463da60968d93e58b4ba0e675829412a20 + source_ref: "AceDL 2026-06-03: Machine configuration entry OS464_UK.rom" + note: "CPC 464 English. Firmware v1 followed by BASIC 1.00." + + - name: OS464_FR.rom + path: "private/firmware/OS464_FR.rom" + system: amstrad-cpc + required: false + min_size: 32768 + validation: [size] + md5: a588b7c9e1c142b5d8ebec65ac7713d8 + sha1: c68d84f37ab9defbb19200598c24948c97c9a644 + source_ref: "AceDL 2026-06-03: Machine configuration entry OS464_FR.rom" + note: >- + CPC 464 French. Firmware f1 followed by a French BASIC 1.0 that the + upstream MorphOS release does not carry. + + - name: OS664_UK.rom + path: "private/firmware/OS664_UK.rom" + system: amstrad-cpc + required: false + min_size: 32768 + validation: [size] + md5: 5a384a2310f472c7857888371c00ed66 + sha1: 073a7665527b5bd8a148747a3947dbd3328682c8 + source_ref: "AceDL 2026-06-03: Machine configuration entry OS664_UK.rom" + note: "CPC 664 English. Firmware v2 followed by BASIC 1.10." + + - name: XMEM_FW_3_15_UK.rom + path: "private/firmware/XMEM_FW_3_15_UK.rom" + system: amstrad-cpc + required: false + min_size: 32768 + validation: [size] + md5: 85accc17e98c79dbbdde826cbfaf4692 + sha1: c7d7e5116665e4f21ae3b9bcdca2ce3685f00293 + source_ref: "AceDL 2026-06-03: Machine configuration entry XMEM_FW_3_15_UK.rom" + note: "X-MEM firmware 3.15 English, followed by BASIC 1.20." + + - name: XMEM_FW_3_15_FR.rom + path: "private/firmware/XMEM_FW_3_15_FR.rom" + system: amstrad-cpc + required: false + min_size: 32768 + validation: [size] + md5: 046fa182f7574bde3ab97ee873f6e736 + sha1: faa49a3aeb1d7e972437f6b77515455d14e2d680 + source_ref: "AceDL 2026-06-03: Machine configuration entry XMEM_FW_3_15_FR.rom" + note: "X-MEM firmware 3.15 French, followed by BASIC 1.23." + + # -- Disc ROM, mapped in slot 7 -- + - name: Amsdos.rom + path: "private/amsdos/Amsdos.rom" + system: amstrad-cpc + required: true + size: 16384 + md5: 25629dfe870d097469c217b95fdc1c95 + sha1: 39102c8e9cb55fcc0b9b62098780ed4a3cb6a4bb + source_ref: "AceDL 2026-06-03: private/amsdos/Amsdos.rom, opened at every startup" + note: >- + AMSDOS disc ROM. Absence prints "Error loading AMSDOS ROM" then + "Error initializing ROMs!" and stops startup. Length is not checked. + + # -- Plus system cartridges, 8 banks of 16 KB in RIFF chunks -- + - name: Amstrad_v4.cpr + path: "private/firmware/Amstrad_v4.cpr" + system: amstrad-cpc + required: false + size: 131156 + md5: 39b565e648172980aa552293e667070f + sha1: 405e341437fab8db477606238af0c20eca2e39ee + source_ref: "AceDL 2026-06-03: private/firmware, cartridge requester root, CPR loader" + note: "464plus/6128plus/GX-4000 system cartridge, English, firmware version 4." + + - name: Amstrad_f4.cpr + path: "private/firmware/Amstrad_f4.cpr" + system: amstrad-cpc + required: false + size: 131156 + md5: e7159fd674022ba05f9b347ae3cdafc6 + sha1: e5aa80c501cfb435e2cba35ad92e427240394164 + source_ref: "AceDL 2026-06-03: private/firmware, cartridge requester root, CPR loader" + note: "464plus/6128plus/GX-4000 system cartridge, French, firmware version 4." + + - name: Amstrad_s4.cpr + path: "private/firmware/Amstrad_s4.cpr" + system: amstrad-cpc + required: false + size: 131156 + md5: 6eeed3fdd4abc98a2a932da810410128 + sha1: 05fb14df24b2b504a3ae463a086f02f0adcc07b9 + source_ref: "AceDL 2026-06-03: private/firmware, cartridge requester root, CPR loader" + note: "464plus/6128plus/GX-4000 system cartridge, Spanish, firmware version 4." + + # -- Plugin ROMs -- + - name: multiface2.rom + path: "private/multiface2/multiface2.rom" + system: amstrad-cpc + required: false + size: 8192 + md5: 4c9f014e91d407cc6509fad0095ab909 + sha1: 1431ec628d38f000715545dd2186b684c5fe5a6f + source_ref: "AceDL 2026-06-03: private/multiface2/multiface2.rom, read when PLUGIN_MULTIFACE2=1" + note: "Romantic Robot Multiface Two ROM. The plugin loads without it." + + - name: hackit400uk.rom + path: "private/hacker/hackit400uk.rom" + system: amstrad-cpc + required: false + size: 16384 + md5: 9a293eaaebca601f671070ad56cb81b6 + sha1: 56306e7234bcffd14b4f977d42d237c4ad9c12d5 + source_ref: "AceDL 2026-06-03: private/hacker/hackit400uk.rom, read when PLUGIN_HACKER=1" + note: >- + HackIt 4.00 by Siren Software, English, UK flavour of the Hacker plugin. + + - name: hacker481fr.rom + path: "private/hacker/hacker481fr.rom" + system: amstrad-cpc + required: false + size: 16384 + md5: dfdd9924295f491d54f30569874287f8 + sha1: 0c15d6753cf0ae2a1737b6e857e8e82ee135a697 + source_ref: "AceDL 2026-06-03: private/hacker/hacker481fr.rom, read when PLUGIN_HACKER=1 and PLUGIN_HACKERFR=1" + note: >- + Le Hackeur 4.81, the French edition of the same Siren Software ROM, + French flavour of the Hacker plugin. + + - name: ym2608_adpcm_rom.bin + path: "private/sounds/ym2608_adpcm_rom.bin" + system: amstrad-cpc + required: false + size: 8192 + md5: 8740932cda05e518a9955f1d08d6786f + sha1: 50b6c3e288eaa12ad275d4f323267bb72b0445df + source_ref: "AceDL 2026-06-03: private/sounds/ym2608_adpcm_rom.bin, read when PLUGIN_PLAY2CPC=1" + note: >- + YM2608 internal ADPCM rhythm ROM used by the Play2CPC cartridge sound. + Missing file prints "Warning: ym2608_adpcm_rom.bin not found!" and the + plugin keeps running. Shipped in the Linux and Raspberry Pi packages, + absent from the Windows package. diff --git a/emulators/advancemame.yml b/emulators/advancemame.yml new file mode 100644 index 00000000..27bbf88c --- /dev/null +++ b/emulators/advancemame.yml @@ -0,0 +1,795 @@ +emulator: AdvanceMAME +type: standalone +core_classification: enhanced_fork +source: "https://github.com/amadvance/advancemame" +upstream: "https://www.mamedev.org" +profiled_date: "2026-08-08" +source_commit: "0f6a7677ad42b4dfdfa36b046f74bef5238d5837" +core_version: "5.0" +mame_version: "0.106" +display_name: "Arcade (AdvanceMAME)" +mode: standalone + +cores: + - advancemame + - advmame + +systems: + - snk-neogeo-mvs + - igs-pgm + - sega-stv + - sega-megaplay + - sega-megatech + - deco-cassette + - nintendo-playch10 + - nintendo-nss + - super-kaneko-nova + - konami-gx + - konami-gv + - century-cvs + - capcom-zn1 + - capcom-zn2 + - tecmo-tps + - taito-fx1 + - eighting-zn1 + - atlus-zn1 + - atari-zn1 + - acclaim-zn1 + - hyper-neogeo64 + - arcadia-systems + - exidy-maxaflex + - brezzasoft-crystal + - imax-macs + +notes: | + MAME 0.106 core (src/version.c:12) carrying its own video layer and driver + backports from later MAME releases. Twenty-six BIOS root sets, each a + NOT_A_DRIVER entry (src/driver.h:180) registered in src/mamedriv.c. + src/drivers/macs.c:613 declares a twenty-seventh, macs2bios, that + src/mamedriv.c never registers, so no build reaches it and the five MACS + games all parent to macsbios. The set is unchanged between release 5.0 and + the profiled commit. + + ROM archives are searched under dir_rom, defaulting to $home/rom:$data/rom + on Linux and Mac OS X and to rom on DOS and Windows, in the forms + DIR/GAME/ROM.EXT, DIR/GAME.zip/ROM.EXT and DIR/GAME/ROM.zip/ROM + (advance/osd/fileio.c:74, doc/advmame.d:680,699-701). $home is $ADVANCE, or + $HOME/.advance when that variable is unset (doc/advmame.d:503-509). Each ROM + is looked up along the parent chain (src/romload.c:481-483), so a child game + reads its BIOS from the root set's own archive, which has to sit beside the + game archive. Inside an archive a member is matched by name, then by its + printable CRC32 (src/fileio.c:1213-1223). + + No BIOS ROM carries ROM_OPTIONAL or a no-good-dump marker, so a missing one + counts as an error rather than a warning and aborts with "required files are + missing, the game cannot be run" (src/romload.c:248-268,385-388). Loaded + ROMs are checked for exact length and against the declared CRC32 and SHA1, + both mismatches being warnings (src/romload.c:327-363). + + Where a system offers several BIOS revisions, SYSTEM_BIOS_ADD names them and + misc_bios selects one, entry 0 being the default (doc/advmame.d:2086-2094). + Only the selected revision is read; the others share the archive as + alternatives. Neo Geo lists MVS revisions alone, the AES, Universe and debug + entries being commented out (src/drivers/neogeo.c:1420-1423,1439-1442). + + The four support files sit directly in $home or $data + (advance/osd/fileio.c:81,88-90, advance/linux/file.c:249-256). Samples and + artwork are per-game archives under dir_sample and dir_artwork, ZIP only, + named after the driver: WAV members for samples + (src/sound/samples.c:198-200), a .art layout and its PNGs for + artwork (src/artwork.c:2119,2224). + + misc_historyfile and misc_infofile were retired and are discarded when found + in a configuration file (advance/osd/emu.c:517-518), leaving history.dat and + mameinfo.dat unread. options.controller is pinned to zero + (advance/osd/glue.c:708), so no controller file is read either. blitmax.dat, + startup.dat and help.dat are compiled into the binary + (advance/osd/video.c:1787,1795, advance/osd/ui.c:1575). + +files: + # Support files ($home or $data) + - name: hiscore.dat + required: false + category: game_data + source_ref: "src/hiscore.c:28,313" + note: >- + High score definitions, selected by misc_hiscorefile + (advance/osd/glue.c:800,3293). Absent, hiscore_open matches no entry and + no high score is restored or saved. + + - name: cheat.dat + required: false + category: game_data + source_ref: "src/cheat.c:8682,8751" + note: >- + Cheat definitions, selected by misc_cheatfile + (advance/osd/glue.c:799,3291) and read only when misc_cheat is on, which + it is not by default. Absent, the cheat menu reads "cheat database not + found" (src/cheat.c:2536). + + - name: event.dat + required: false + category: game_data + source_ref: "advance/osd/safequit.c:165-180,260" + note: >- + Event and safequit definitions, selected by misc_eventfile and read + straight from $home then $data rather than through the file type table. + Absent, the exit menu always prompts instead of checking coin and play + state. + + - name: english.lng + required: false + category: game_data + source_ref: "advance/osd/glue.c:716,3290" + note: >- + User interface translation, extension lng + (src/fileio.c:941), selected by misc_languagefile. Absent, uistring_init + keeps the built-in English strings (src/ui_text.c:263-265). + + # SNK Neo Geo MVS + - name: neogeo.zip + required: true + category: bios_zip + system: snk-neogeo-mvs + source_ref: "src/drivers/neogeo.c:7939-7953,8553" + note: >- + Eight MVS BIOS variants selected with misc_bios (euro, euro-s1, us, + us-e, asia, japan, japan-s2, japan-s1), euro by default. sm1.sm1, + 000-lo.lo and sfix.sfx are loaded whichever variant is selected. + validation: [size, crc32, sha1] + contents: + - name: sp-s2.sp1 + description: Europe MVS (Ver. 2) + size: 131072 + crc32: "9036d879" + sha1: "4f5ed7105b7128794654ce82b51723e16e389543" + - name: sp-s.sp1 + description: Europe MVS (Ver. 1) + size: 131072 + crc32: "c7f2fa45" + sha1: "09576ff20b4d6b365e78e6a5698ea450262697cd" + - name: usa_2slt.bin + description: US MVS (Ver. 2) + size: 131072 + crc32: "e72943de" + sha1: "5c6bba07d2ec8ac95776aa3511109f5e1e2e92eb" + - name: sp-e.sp1 + description: US MVS (Ver. 1) + size: 131072 + crc32: "2723a5b5" + sha1: "5dbff7531cf04886cde3ef022fb5ca687573dcb8" + - name: asia-s3.rom + description: Asia MVS (Ver. 3) + size: 131072 + crc32: "91b64be3" + sha1: "720a3e20d26818632aedf2c2fd16c54f213543e1" + - name: vs-bios.rom + description: Japan MVS (Ver. 3) + size: 131072 + crc32: "f0e8f27d" + sha1: "ecf01eda815909f1facec62abf3594eaa8d11075" + - name: sp-j2.rom + description: Japan MVS (Ver. 2) + size: 131072 + crc32: "acede59c" + sha1: "b6f97acd282fd7e94d9426078a90f059b5e9dd91" + - name: sp1.jipan.1024 + description: Japan MVS (Ver. 1) + size: 131072 + crc32: "9fb0abe4" + sha1: "18a987ce2229df79a8cf6a84f968f0e42ce4e59d" + - name: sm1.sm1 + description: Z80 sound BIOS + size: 131072 + crc32: "97cf998b" + sha1: "977387a7c76ef9b21d0b01fa69830e949a9a9626" + - name: 000-lo.lo + description: Y zoom control + size: 65536 + crc32: "e09e253c" + sha1: "2b1c719531dac9bb503f22644e6e4236b91e7cfc" + - name: sfix.sfx + description: fix layer tiles + size: 131072 + crc32: "354029fc" + sha1: "4ae4bf23b4c2acff875775d4cbff5583893ce2a1" + + # IGS PGM + - name: pgm.zip + required: true + category: bios_zip + system: igs-pgm + source_ref: "src/drivers/pgm.c:3708-3719,5487" + validation: [size, crc32, sha1] + contents: + - name: pgm_p01s.rom + description: 68000 BIOS + size: 131072 + crc32: "e42b166e" + sha1: "2a9df9ec746b14b74fae48b1a438da14973702ea" + - name: pgm_t01s.rom + description: text layer tiles + size: 2097152 + crc32: "1a7123a0" + sha1: "cc567f577bfbf45427b54d6695b11b74f2578af3" + - name: pgm_m01s.rom + description: samples + size: 2097152 + crc32: "45ae7159" + sha1: "d3ed3ff3464557fd0df6b069b2e431528b0ebfa8" + + # Sega ST-V + - name: stvbios.zip + required: true + category: bios_zip + system: sega-stv + source_ref: "src/drivers/stv.c:3092-3094,4026" + note: >- + Nine BIOS variants selected with misc_bios (japan, japana, us, japanb, + taiwan, europe, unknown, dev1061, japanc), japan by default. + validation: [size, crc32, sha1] + contents: + - name: epr19730.ic8 + description: Japan (bios epr19730) + size: 524288 + crc32: "d0e0889d" + sha1: "fae53107c894e0c41c49e191dbe706c9cd6e50bd" + - name: mp17951a.s + description: Japan (bios mp17951a) + size: 524288 + crc32: "2672f9d8" + sha1: "63cf4a6432f6c87952f9cf3ab0f977aed2367303" + - name: mp17952a.s + description: USA (bios mp17952a) + size: 524288 + crc32: "d1be2adf" + sha1: "eaf1c3e5d602e1139d2090a78d7e19f04f916794" + - name: 20091.bin + description: Japan (bios 20091) + size: 524288 + crc32: "59ed40f4" + sha1: "eff0f54c70bce05ff3a289bf30b1027e1c8cd117" + - name: mp17953a.ic8 + description: Taiwan (bios mp17953a) + size: 524288 + crc32: "a4c47570" + sha1: "9efc73717ec8a13417e65c54344ded9fc25bf5ef" + - name: mp17954a.s + description: Europe (bios mp17954a) + size: 524288 + crc32: "f7722da3" + sha1: "af79cff317e5b57d49e463af16a9f616ed1eee08" + - name: stv110.bin + description: Unknown (debug?) + size: 524288 + crc32: "3dfeda92" + sha1: "8eb33192a57df5f3a1dfb57263054867c6b2db6d" + - name: stv1061.bin + description: Development (bios 1.061) + size: 524288 + crc32: "728dbca3" + sha1: "0ed2030177f0aa8285645c395ae9ad9f568ab1d6" + - name: epr-17740.bin + description: Japan (bios epr17740) + size: 524288 + crc32: "5c5aa63d" + sha1: "06860d96923b81afbc21e0ad32ee19487d8ff6e7" + + # Sega Mega Play + - name: megaplay.zip + required: true + category: bios_zip + system: sega-megaplay + source_ref: "src/drivers/megaplay.c:735-738,933" + note: >- + Two BIOS variants selected with misc_bios (ver1, ver2), ver1 by + default. + validation: [size, crc32, sha1] + contents: + - name: ep15294.ic2 + description: Mega Play BIOS (Ver. 1) + size: 131072 + crc32: "aa8dc2d8" + sha1: "96771ad7b79dc9c83a1594243250d65052d23176" + - name: epr-a15294.ic2 + description: Mega Play BIOS (Ver. 2) + size: 131072 + crc32: "f97c68aa" + sha1: "bcabc879950bca1ced11c550a484e697ec5706b2" + + # Sega Mega-Tech + - name: megatech.zip + required: true + category: bios_zip + system: sega-megatech + source_ref: "src/drivers/megatech.c:454-457,866" + validation: [size, crc32, sha1] + contents: + - name: epr12664.20 + size: 32768 + crc32: "f71e9526" + sha1: "1c7887541d02c41426992d17f8e3db9e03975953" + + # DECO Cassette System + - name: decocass.zip + required: true + category: bios_zip + system: deco-cassette + source_ref: "src/drivers/decocass.c:727-730,1213" + note: >- + Two main CPU BIOS variants selected with misc_bios (bios0, bios1), + bios0 by default. The audio CPU, MCU and PROMs are loaded whichever + variant is selected. + validation: [size, crc32, sha1] + contents: + - name: rms8.cpu + description: main CPU BIOS (bios0) + size: 4096 + crc32: "23d929b7" + sha1: "063f83020ba3d6f43ab8471f95ca919767b93aa4" + - name: dsp3.p0b + description: main CPU BIOS (bios1) + size: 2048 + crc32: "b67a91d9" + sha1: "681c040be0f0ed1ba0a50161b36d0ad8e1c8c5cb" + - name: dsp3.p1b + description: main CPU BIOS (bios1) + size: 2048 + crc32: "3bfff5f3" + sha1: "4e9437cb1b76d64da6b37f01bd6e879fb399e8ce" + - name: rms8.snd + description: audio CPU + size: 2048 + crc32: "b66b2c2a" + sha1: "0097f38beb4872e735e560148052e258a26b08fd" + - name: cass8041.bin + description: MCU + size: 1024 + crc32: "a6df18fd" + sha1: "1f9ea47e372d31767c936c15852b43df2b0ee8ff" + - name: dsp8.3m + description: PROM + size: 32 + crc32: "238fdb40" + sha1: "b88e8fabb82092105c3828154608ea067acbf2e5" + - name: dsp8.10d + description: PROM + size: 32 + crc32: "3b5836b4" + sha1: "b630bb277d9ec09d46ef26b944014dd6165b35d8" + - name: rms8.j3 + description: DRAM banking and timing PROM + size: 32 + crc32: "51eef657" + sha1: "eaedce5caf55624ad6ae706aedf82c5717c60f1f" + + # Nintendo PlayChoice-10 + - name: playch10.zip + required: true + category: bios_zip + system: nintendo-playch10 + source_ref: "src/drivers/playch10.c:1648-1651,1659" + note: >- + Two BIOS variants selected with misc_bios (dual, single), dual by + default. Tiles and PROMs are loaded whichever variant is selected. + validation: [size, crc32, sha1] + contents: + - name: pch1-c.8t + description: Dual Monitor Version + size: 16384 + crc32: "d52fa07a" + sha1: "55cabf52ae10c050c2229081a80b9fe5454ab8c5" + - name: pck1-c.8t + description: Single Monitor Version + size: 16384 + crc32: "503ee8b1" + sha1: "3bd20bc71cac742d1b8c1430a6426d0a19db7ad0" + - name: pch1-c.8p + description: BIOS tiles + size: 8192 + crc32: "30c15e23" + sha1: "69166afdb2fe827c7f1919cdf4197caccbd961fa" + - name: pch1-c.8m + description: BIOS tiles + size: 8192 + crc32: "c1232eee" + sha1: "beaf9fa2d091a3c7f70c51e966d885b1f9f0935f" + - name: pch1-c.8k + description: BIOS tiles + size: 8192 + crc32: "9acffb30" + sha1: "b814f10ef23f2ca445fabafcbf7f25e2d454ba8c" + - name: pch1-c.6f + description: PROM + size: 256 + crc32: "e5414ca3" + sha1: "d2878411cda84ffe0afb2e538a67457f51bebffb" + - name: pch1-c.6e + description: PROM + size: 256 + crc32: "a2625c6e" + sha1: "a448b47c9289902e26a3d3c4c7d5a7968c385e81" + - name: pch1-c.6d + description: PROM + size: 256 + crc32: "1213ebd4" + sha1: "0ad386fc3eab5e53c0288ad1de33639a9e461b7c" + + # Nintendo Super System + - name: nss.zip + required: true + category: bios_zip + system: nintendo-nss + source_ref: "src/drivers/nss.c:524-526,657" + validation: [size, crc32, sha1] + contents: + - name: spc700.rom + description: SPC700 IPL ROM + size: 64 + crc32: "44bb3a40" + sha1: "97e352553e94242ae823547cd853eecda55c20f0" + - name: dsp1data.bin + description: DSP1 data ROM + size: 2048 + crc32: "4b02d66d" + sha1: "1534f4403d2a0f68ba6e35186fe7595d33de34b1" + - name: nss-c.dat + description: BIOS CPU + size: 32768 + crc32: "a8e202b3" + sha1: "b7afcfe4f5cf15df53452dc04be81929ced1efb2" + - name: nss-ic14.02 + description: BIOS CPU + size: 32768 + crc32: "e06cb58f" + sha1: "62f507e91a2797919a78d627af53f029c7d81477" + + # Super Kaneko Nova System + - name: skns.zip + required: true + category: bios_zip + system: super-kaneko-nova + source_ref: "src/drivers/suprnova.c:1269-1276,1744" + note: >- + Five region BIOS ROMs, all loaded into the same region. + validation: [size, crc32, sha1] + contents: + - name: sknsj1.u10 + description: Japan + size: 524288 + crc32: "7e2b836c" + sha1: "92c5a7a2472496028bff0e5980d41dd294f42144" + - name: sknse1.u10 + description: Europe + size: 524288 + crc32: "e2b9d7d1" + sha1: "b530a3bb9dedc8cfafcba9f1f10277590be04a15" + - name: sknsa1.u10 + description: Asia + size: 524288 + crc32: "745e5212" + sha1: "caba649ab2d83b2d7e007eecee0fc582c019df38" + - name: sknsu1.u10 + description: USA + size: 524288 + crc32: "384d21ec" + sha1: "a27e8a18099d9cea64fa32db28d01101c2a78815" + - name: sknsk1.u10 + description: Korea + size: 524288 + crc32: "ff1c9f79" + sha1: "a51e598d43e76d37da69b1f094c111273bdfc94a" + + # Konami System GX + - name: konamigx.zip + required: true + category: bios_zip + system: konami-gx + source_ref: "src/drivers/konamigx.c:2138-2141,3485" + validation: [size, crc32, sha1] + contents: + - name: 300a01.34k + size: 131072 + crc32: "d5fa95f5" + sha1: "c483aa98ff8ef40cdac359c19ad23fea5ecc1906" + + # Konami Baby Phoenix/GV System + - name: konamigv.zip + required: true + category: bios_zip + system: konami-gv + source_ref: "src/drivers/konamigv.c:972-976,1058" + validation: [size, crc32, sha1] + contents: + - name: 999a01.7e + size: 524288 + crc32: "ad498d2d" + sha1: "02a82a2fe1fba0404517c3602324bfa64e23e478" + + # Century Electronics CVS + - name: cvs.zip + required: true + category: bios_zip + system: century-cvs + source_ref: "src/drivers/cvs.c:420-430,1401" + validation: [size, crc32, sha1] + contents: + - name: 5b.bin + description: sound CPU + size: 2048 + crc32: "f055a624" + sha1: "5dfe89d7271092e665cdd5cd59d15a2b70f92f43" + - name: 82s185.10h + description: PROM + size: 2048 + crc32: "c205bca6" + sha1: "ec9bd220e75f7b067ede6139763ef8aca0fb7a29" + - name: 82s123.10k + description: PROM + size: 32 + crc32: "b5221cec" + sha1: "71d9830b33b1a8140b0fe1a2ba8024ba8e6e48e0" + + # Capcom ZN1 + - name: cpzn1.zip + required: true + category: bios_zip + system: capcom-zn1 + source_ref: "src/drivers/zn.c:3127-3129,4513" + validation: [size, crc32, sha1] + contents: + - name: coh-1000c.353 + size: 524288 + crc32: "50033af6" + sha1: "486d92ff6c7f1e54f8e0ef41cd9116eca0e10e1a" + + # Capcom ZN2 + - name: cpzn2.zip + required: true + category: bios_zip + system: capcom-zn2 + source_ref: "src/drivers/zn.c:3362-3364,4531" + validation: [size, crc32, sha1] + contents: + - name: coh-3002c.353 + size: 524288 + crc32: "e860ea8b" + sha1: "66e7e1d4e426466b8f48a2ba055a91b475569504" + + # Tecmo TPS + - name: tps.zip + required: true + category: bios_zip + system: tecmo-tps + source_ref: "src/drivers/zn.c:3805-3807,4578" + validation: [size, crc32, sha1] + contents: + - name: coh-1002m.353 + size: 524288 + crc32: "69ffbcb4" + sha1: "03eb2febfab3fcde716defff291babd9392de965" + + # Taito FX1 + - name: taitofx1.zip + required: true + category: bios_zip + system: taito-fx1 + source_ref: "src/drivers/zn.c:4040-4042,4603" + validation: [size, crc32, sha1] + contents: + - name: coh-1000t.353 + size: 524288 + crc32: "e3f23b6e" + sha1: "e18907cf8c6ba54d96edba0a9a00487a90219e0d" + + # Eighting/Raizing PS Arcade 95 + - name: psarc95.zip + required: true + category: bios_zip + system: eighting-zn1 + source_ref: "src/drivers/zn.c:4312-4314,4630" + validation: [size, crc32, sha1] + contents: + - name: coh-1002e.353 + size: 524288 + crc32: "910f3a8b" + sha1: "cd68532967a25f476a6d73473ec6b6f4df2e1689" + + # Atlus PSX + - name: atluspsx.zip + required: true + category: bios_zip + system: atlus-zn1 + source_ref: "src/drivers/zn.c:4483-4485,4642" + validation: [size, crc32, sha1] + contents: + - name: coh-1001l.353 + size: 524288 + crc32: "6721146b" + sha1: "9511d24bfe25eb180fb2db0835b131cb4a12730e" + + # Atari PSX + - name: atpsx.zip + required: true + category: bios_zip + system: atari-zn1 + source_ref: "src/drivers/zn.c:4398-4400,4558" + validation: [size, crc32, sha1] + contents: + - name: coh-1000w.353 + size: 524288 + crc32: "45e8a4b4" + sha1: "815488d8563c85f97fbc3384ff21f08e4c88b7b7" + + # Acclaim PSX + - name: acpsx.zip + required: true + category: bios_zip + system: acclaim-zn1 + source_ref: "src/drivers/zn.c:4421-4423,4567" + validation: [size, crc32, sha1] + contents: + - name: coh-1000a.353 + size: 524288 + crc32: "8d8d0764" + sha1: "7ee83d317190bb1cef2f8f01c81eaaae47150ebb" + + # SNK Hyper Neo Geo 64 + - name: hng64.zip + required: true + category: bios_zip + system: hyper-neogeo64 + source_ref: "src/drivers/hng64.c:1425-1431,1718" + validation: [size, crc32, sha1] + contents: + - name: brom1.bin + description: R4300 BIOS + size: 524288 + crc32: "a30dd3de" + sha1: "3e2fd0a56214e6f5dcb93687e409af13d065ea30" + - name: from1.bin + description: unused BIOS ROM + size: 524288 + crc32: "6b933005" + sha1: "e992747f46c48b66e5509fe0adf19c91250b00c7" + - name: rom1.bin + description: unused BIOS ROM + size: 130866 + crc32: "4a6832dc" + sha1: "ae504f7733c2f40450157cd1d3b85bc83fac8569" + + # Arcadia Systems + - name: ar_bios.zip + required: true + category: bios_zip + system: arcadia-systems + source_ref: "src/drivers/arcadia.c:352-354,717" + note: >- + Three BIOS variants selected with misc_bios (onep300, onep211, + tenp211), onep300 by default. kick12.rom is loaded whichever variant + is selected. + validation: [size, crc32, sha1] + contents: + - name: kick12.rom + description: Amiga Kickstart 1.2 + size: 262144 + crc32: "a6ce1636" + sha1: "11f9e62cf299f72184835b7b2a70a16333fc0d88" + - name: scpav3_0.1h + description: OnePlay 3.00 + size: 65536 + crc32: "2d8e1a06" + sha1: "be187f34624aeda110017c4a09242f7c00ef56a4" + - name: scpav3_0.1l + description: OnePlay 3.00 + size: 65536 + crc32: "e4f38fab" + sha1: "01c2eb5965070893be6734eb1372576727716476" + - name: scpa211h + description: OnePlay 2.11 + size: 65536 + crc32: "be9dbdc5" + sha1: "1554da09f051ec53937d65d4e451de51bc0c69e5" + - name: scpa211l + description: OnePlay 2.11 + size: 65536 + crc32: "95b84504" + sha1: "99999fc40909001b37aa1b543918118becc81800" + - name: gcp-1-hi + description: TenPlay 2.11 + size: 65536 + crc32: "67d44523" + sha1: "f3e3699132cdf741518accb890c04d17374c4049" + - name: gcp-1-lo + description: TenPlay 2.11 + size: 65536 + crc32: "65d9b9cf" + sha1: "5c60a0dd4a0a7d9b938ce6b0446a6ad2ecaf07ec" + - name: gcp-2-hi + description: TenPlay 2.11 + size: 65536 + crc32: "1d7594ae" + sha1: "6173bbfecf18d7d9ee6bc2b6753ca9d42fabd781" + - name: gcp-2-lo + description: TenPlay 2.11 + size: 65536 + crc32: "e776198d" + sha1: "694ca4cc99ed84a95d18201c94a3332f8599654f" + - name: gcp-3-hi + description: TenPlay 2.11 + size: 65536 + crc32: "3e7364be" + sha1: "26e10d0ddc031a891138db36ce4f1732722e6847" + - name: gcp-3-lo + description: TenPlay 2.11 + size: 65536 + crc32: "87229e0d" + sha1: "0b18544801e529f954b9e03226bd2e5475f36351" + + # Exidy Max-A-Flex + - name: maxaflex.zip + required: true + category: bios_zip + system: exidy-maxaflex + source_ref: "src/drivers/maxaflex.c:518-527,583" + validation: [size, crc32, sha1] + contents: + - name: atarixl.rom + description: main CPU ROM + size: 16384 + crc32: "1f9cd270" + sha1: "ae4f523ba08b6fd59f3cae515a2b2410bbd98f55" + - name: maxaflex.uc + description: microcontroller + size: 2048 + crc32: "fe9cf53c" + sha1: "4b02bc2f0c8a1eab799814fac82d5812c0160206" + - name: maxprom.prm + description: PROM + size: 512 + crc32: "edf5c950" + sha1: "9ad046ea41a61585dd8d2f2d4167a3cc39d2928f" + + # Brezzasoft Crystal System + - name: crysbios.zip + required: true + category: bios_zip + system: brezzasoft-crystal + source_ref: "src/drivers/crystal.c:854-857,923" + validation: [size, crc32, sha1] + contents: + - name: mx27l1000.u14 + size: 131072 + crc32: "beff39a9" + sha1: "b6f6dda58d9c82273f9422c1bd623411e58982cb" + + # I'Max Multi Amenity Cassette System + - name: macsbios.zip + required: true + category: bios_zip + system: imax-macs + source_ref: "src/drivers/macs.c:394-402,612" + validation: [size, crc32, sha1] + contents: + - name: macsos_l.u43 + description: BIOS low byte + size: 524288 + crc32: "0b5aed5e" + sha1: "042e705017ee34656e2c6af45825bb2dd3447747" + - name: macsos_h.u44 + description: BIOS high byte + size: 524288 + crc32: "538b68e4" + sha1: "a0534147791e94e726f49451d0e95671ae0a87d5" + + # Barcrest MPU4 Video + - name: bctvidbs.zip + required: true + category: bios_zip + source_ref: "src/drivers/mpu4.c:2014-2017,2175" + validation: [size, crc32, sha1] + contents: + - name: vid.p1 + size: 65536 + crc32: "e996bc18" + sha1: "49798165640627eb31024319353da04380787b10" diff --git a/emulators/azahar.yml b/emulators/azahar.yml index ff55d820..8ef0dff5 100644 --- a/emulators/azahar.yml +++ b/emulators/azahar.yml @@ -68,10 +68,10 @@ files: path: nand/private/movable.sed system: nintendo-3ds required: false - size: 320 + size: [288, 320] validation: [size, signature] - note: "console-unique key seed" - source_ref: "src/core/hw/unique_data.cpp:170-200, src/core/hw/unique_data.cpp:217" + note: "console-unique key seed; 288 bytes without the AES MAC block, 320 with it" + source_ref: "src/core/hw/unique_data.cpp:170-200, src/core/hw/unique_data.cpp:217, src/core/hw/unique_data.h:103-133" - name: SecureInfo_A path: nand/rw/sys/SecureInfo_A @@ -86,7 +86,7 @@ files: path: nand/rw/sys/LocalFriendCodeSeed_B system: nintendo-3ds required: false - size: 284 + size: 272 validation: [size, signature] note: "friend code generation seed" - source_ref: "src/core/hw/unique_data.cpp:94-123, src/core/hw/unique_data.cpp:209" + source_ref: "src/core/hw/unique_data.cpp:94-123, src/core/hw/unique_data.cpp:209, src/core/hw/unique_data.h:76" diff --git a/emulators/azaharplus.yml b/emulators/azaharplus.yml new file mode 100644 index 00000000..b6789fd9 --- /dev/null +++ b/emulators/azaharplus.yml @@ -0,0 +1,128 @@ +emulator: AzaharPlus +type: standalone +core_classification: community_fork +source: "https://github.com/AzaharPlus/AzaharPlus" +upstream: "https://github.com/AzaharPlus/AzaharPlus" +profiled_date: "2026-08-08" +source_commit: "18775d91a5c70be33ec828a32d9007384c4fad98" +core_version: "2126.0-A" +display_name: "Nintendo - 3DS (AzaharPlus)" +cores: + - azaharplus +systems: + - nintendo-3ds +mode: standalone + +notes: | + Fork of Azahar. Data dir: azaharplus-emu (AzaharPlus on Windows and macOS), + with citra-emu and lime3ds-emu probed as legacy locations. + ref: src/common/common_paths.h:27-49 + + InitKeys reads three key sources in order: boot9.bin, keys.txt, aes_keys.txt. + ref: src/core/hw/aes/key.cpp:617-633 + + keys.txt has an AES-encrypted key blob compiled into the binary, used when the + file is absent. ENABLE_BUILTIN_KEYBLOB defaults to ON. + ref: src/core/hw/aes/key.cpp:485-613, CMakeLists.txt:153 + + 1861 title seeds are compiled in and loaded before seeddb.bin is read. + ref: src/core/file_sys/seed_db.cpp:52-54, src/core/file_sys/seed_db.cpp:220 + + System archives (shared font, Mii data, country list, bad word list) have + open-source replacements embedded in the binary, and ClCertA falls back to an + embedded certificate and key pair. + ref: src/core/file_sys/archive_ncch.cpp:174-203, + src/core/hle/service/http/http_c.cpp:2107-2133 + + otp.bin, movable.sed, SecureInfo_A and LocalFriendCodeSeed_B are replaced by + embedded dummy data when enable_required_online_lle_modules is set. That + setting defaults to false, and every loader returns a not-found status without + it. + ref: src/common/settings.h:492-493 + + System titles are downloaded and installed in-app from the Nintendo CDN, so + the NAND title tree is not user-supplied. + ref: src/core/nus_download.cpp:13, src/core/hle/service/am/am.cpp:1220-1243 + + sector0x96.bin is defined but read by no code path. + ref: src/common/common_paths.h:88 + + mcu.dat, mac.txt, digests.txt, cecIds.txt and http_hle_replace_rules.txt live + in sysdata but hold per-installation state the emulator writes itself. + +files: + - name: keys.txt + path: sysdata/keys.txt + system: nintendo-3ds + required: false + hle_fallback: true + note: "AES key slots, common keys and NFC secrets; embedded encrypted blob used if missing" + source_ref: "src/core/hw/aes/key.cpp:227-366, src/core/hw/aes/key.cpp:475-615" + + - name: aes_keys.txt + path: sysdata/aes_keys.txt + system: nintendo-3ds + required: false + note: "legacy keyfile format, parsed without section markers" + source_ref: "src/core/hw/aes/key.cpp:368-471, src/common/common_paths.h:86" + + - name: boot9.bin + path: sysdata/boot9.bin + system: nintendo-3ds + required: false + size: 65536 + validation: [size] + note: "bootrom key section read at offset 55760, filling 80 key slots" + source_ref: "src/core/hw/aes/key.cpp:156-225, src/common/common_paths.h:87" + + - name: shared_font.bin + path: sysdata/shared_font.bin + system: nintendo-3ds + required: false + hle_fallback: true + note: "legacy path, tried after the shared font system archive" + source_ref: "src/core/hle/service/apt/apt.cpp:278-294, src/core/hle/service/apt/apt.cpp:305" + + - name: seeddb.bin + path: sysdata/seeddb.bin + system: nintendo-3ds + required: false + hle_fallback: true + note: "game seed database for 9.6+ titles; written out from the embedded seeds if absent" + source_ref: "src/core/file_sys/seed_db.cpp:52-103" + + - name: otp.bin + path: sysdata/otp.bin + system: nintendo-3ds + required: false + size: 256 + validation: [size, crypto] + note: "console-unique OTP, AES-CBC decrypted then checked against the OTP magic" + source_ref: "src/core/file_sys/otp.cpp:35-80, src/core/hw/unique_data.cpp:224-275" + + - name: movable.sed + path: nand/private/movable.sed + system: nintendo-3ds + required: false + size: [288, 320] + validation: [size, signature] + note: "console-unique key seed; 288 bytes without the AES MAC block, 320 with it" + source_ref: "src/core/hw/unique_data.cpp:277-319, src/core/hw/unique_data.h:105-135" + + - name: SecureInfo_A + path: nand/rw/sys/SecureInfo_A + system: nintendo-3ds + required: false + size: 273 + validation: [size, signature] + note: "console serial and region; a failed signature is retried against every region" + source_ref: "src/core/hw/unique_data.cpp:123-181, src/core/hw/unique_data.h:59" + + - name: LocalFriendCodeSeed_B + path: nand/rw/sys/LocalFriendCodeSeed_B + system: nintendo-3ds + required: false + size: 272 + validation: [size, signature] + note: "friend code generation seed" + source_ref: "src/core/hw/unique_data.cpp:183-222, src/core/hw/unique_data.h:78" diff --git a/emulators/basiliskii.yml b/emulators/basiliskii.yml new file mode 100644 index 00000000..a386a0f8 --- /dev/null +++ b/emulators/basiliskii.yml @@ -0,0 +1,72 @@ +emulator: Basilisk II +type: standalone +source: "https://github.com/cebix/macemu" +upstream: "https://github.com/cebix/macemu" +profiled_date: "2026-08-08" +source_commit: "96e512bd6376e78a2869f16dcc8a9028bce5ee72" +core_version: "1.0" +display_name: "Apple - Macintosh 68k (Basilisk II)" +cores: + - basiliskii +systems: + - apple-macintosh + - macintosh-ii +mode: standalone + +notes: | + 68k Macintosh emulator living in the macemu tree alongside SheepShaver. + Emulates a Mac Classic or a Mac II series machine depending on the ROM + supplied. Default model ID is 5 (Mac IIci) on a 68030 + (prefs_items.cpp:88-89). + + ROM loading (main_unix.cpp:681-702, main_windows.cpp:367, + main_macosx.mm:431): the path comes from the "rom" prefs item + (prefs_items.cpp:51) and falls back to a file named ROM in the working + directory (main_unix.cpp:109). A missing or unreadable file raises + STR_NO_ROM_FILE_ERR and calls QuitEmulator. + + Two gates run on the image. main_unix.cpp:692 accepts only sizes of 64K, + 128K, 256K, 512K or 1024K. CheckROM (rom_patches.cpp:830-842), called from + InitAll at main.cpp:67, then reads the version word at ROM offset 8 and + accepts 0x067c (32-bit clean Mac II, 512K/1MB) under real and direct + addressing, adding 0x0276 (SE/Classic, 256K/512K) under banks addressing. + configure.ac:61-68,1440-1477 defaults --enable-addressing to fastest, + which resolves to real or direct, so a stock build takes 32-bit clean ROMs + only. 0x0000 (Mac 128K), 0x0075 (Mac Plus) and 0x0178 (non 32-bit clean + Mac II) are refused by every addressing mode. PatchROM + (rom_patches.cpp:1834-1852) then rewrites the image in memory, injecting + replacement .Sony, .Disk, .AppleCD and serial drivers. Nothing is + checksummed: print_rom_info (rom_patches.cpp:298-310) prints the ROM header + checksum without comparing it against anything. + + Mac OS itself and the games live in disk images referenced by the disk, + floppy and cdrom prefs items, supplied by the user. + + Four files are installed by the emulator's own Makefile into + $(datadir)/BasiliskII (Makefile.in:25,155-157) and read from there: + keycodes X keycode to Mac keycode table, read only when the + keycodes prefs item is true, which defaults to false + (prefs_unix.cpp:119). Overridable with keycodefile. + video_sdl2.cpp:94-97,1231, video_x.cpp:1492 + BasiliskII_keycodes tried when keycodes is absent (video_sdl2.cpp:98, + 1232), shipped in src/MacOSX/ + fbdevices frame buffer device table, read by the X11 backend + built with --enable-fbdev-dga. Overridable with + fbdevicefile. video_x.cpp:1152,1186 + tunconfig script run to configure the tunN interface for + ethernet. Overridable with etherconfig. + ether_unix.cpp:108,381 + + The preferences file (.basilisk_ii_prefs, prefs_unix.cpp:50) and the PRAM + file (.basilisk_ii_xpram on Unix, BasiliskII_xpram.dat on Windows, + xpram_unix.cpp:32, xpram_windows.cpp:33) are written by the emulator when + absent. + +files: + - name: ROM + required: true + min_size: 524288 + max_size: 1048576 + validation: [size] + description: "Macintosh ROM image, 512 KB SE/Classic or 512 KB / 1 MB 32-bit clean Mac II" + source_ref: "src/Unix/main_unix.cpp:109,685,692, src/rom_patches.cpp:830-842, src/main.cpp:67" diff --git a/emulators/colem.yml b/emulators/colem.yml new file mode 100644 index 00000000..fd2bd5eb --- /dev/null +++ b/emulators/colem.yml @@ -0,0 +1,81 @@ +emulator: ColEm +type: standalone +core_classification: other +source: "https://fms.komkon.org/ColEm/" +upstream: "https://fms.komkon.org/ColEm/" +profiled_date: "2026-08-08" +core_version: "5.6" +display_name: "Coleco - ColecoVision / Adam (ColEm)" +cores: + - colem +systems: + - coleco-colecovision + - coleco-adam +mode: standalone + +notes: | + ColecoVision and Coleco Adam emulator by Marat Fayzullin, published as + versioned archives on a personal site rather than a repository. The 5.6 + source archive carries the portable core (ColEm/, EMULib/, Z80/) and the + Unix port; Windows and Android builds are binary-only. + + Three system ROMs are read by StartColeco (Coleco.c:266-300) before the + hardware reset and before the cartridge. Lookup runs in the directory + named by -home, which main() defaults to the directory holding the + executable (ColEm.c:66-72), so the ROMs sit next to the binary the way the + official archives ship them. Each name is passed to fopen as written, in + uppercase. + + COLECO.ROM is fatal. A failed open or a file yielding fewer than 8192 + bytes sets the error string, and StartColeco returns before ResetColeco + and RunZ80 (Coleco.c:306). It is loaded in both modes and maps at 0000h + on the ColecoVision and under the Super Game Module (Coleco.c:651). + Nothing in the tree substitutes for it. + + WRITER.ROM and EOS.ROM gate Adam emulation. Each has to yield its full + read to advance the AdamROMs counter, EOS.ROM is attempted only once + WRITER.ROM succeeded, and Coleco.c:300 collapses the counter unless both + landed. ResetColeco then clears CV_ADAM when the counter is zero + (Coleco.c:749), so -adam falls back to ColecoVision, and inserting the + first disk or tape into drive A: is refused (Coleco.c:1454, 1460, 1496, + 1502). SmartWriter maps at 0000h on boot and EOS at 4000h once port 20h + enables it (Coleco.c:628-646). + + No hash or magic number is checked on the three ROMs; the read length is + the only gate. CRC32 is computed for cartridges alone, feeding the + GuessROM hardware heuristics (Coleco.c:482-486). + + Cartridges, .DSK/.FDI disks and .DDP tapes are user content. Beside a + loaded cartridge, FindState (Coleco.c:1529-1548) probes .sav, + .sta, .cht and .pal, and StartColeco tries the palette + file named by -palette, defaulting to ColEm.pal (Coleco.c:75, 327-332). + Those are written by the emulator or hand-authored, and ChangePalette + supplies one of three built-in palettes when no file is found + (Coleco.c:324, 543). Console fonts are compiled-in arrays (Console.c:46, + 130), and LoadPNG (Image.c:1230) sits behind an undefined LIBPNG guard + with no caller. + +files: + - name: COLECO.ROM + system: coleco-colecovision + required: true + min_size: 8192 + validation: [size] + description: "OS7 ColecoVision BIOS, read into the 8kB ROM_OS7 window" + source_ref: "ColEm/Coleco.c:266-273, 306; ColEm/Coleco.h:78-79" + + - name: WRITER.ROM + system: coleco-adam + required: true + min_size: 32768 + validation: [size] + description: "Adam SmartWriter ROM, read into the 32kB ROM_WRITER window" + source_ref: "ColEm/Coleco.c:275-285, 300, 749; ColEm/Coleco.h:75" + + - name: EOS.ROM + system: coleco-adam + required: true + min_size: 8192 + validation: [size] + description: "Adam EOS, read into the 8kB ROM_EOS window" + source_ref: "ColEm/Coleco.c:287-297, 300, 749; ColEm/Coleco.h:83" diff --git a/emulators/es-de.yml b/emulators/es-de.yml new file mode 100644 index 00000000..2c4d7fcf --- /dev/null +++ b/emulators/es-de.yml @@ -0,0 +1,28 @@ +emulator: "ES-DE" +type: launcher +core_classification: launcher +exclusion_note: "frontend launches external emulators — BIOS handled by each emulator" +source: "https://gitlab.com/es-de/emulationstation-de" +upstream: "https://gitlab.com/es-de/emulationstation-de" +profiled_date: "2026-08-07" +source_commit: "60cd1ff1d7102f349c8b922cc834559f74955bf2" +core_version: "3.4.1" +display_name: "ES-DE Frontend" +cores: + - es-de +systems: [] + +notes: | + Game browsing frontend. Reads es_systems.xml and es_find_rules.xml from its + bundled resources (SystemData.cpp:1346-1359, SystemData.cpp:53-72) to locate + installed emulators and build launch commands, then runs them as subprocesses. + All other reads are bundled resources (fonts, graphics, shaders, sounds, + MAME name lists in MameNames.cpp:56-80, TLS bundle in HttpReq.cpp:74), + app-generated data (es_settings.xml, es_input.xml, gamelists, scraped media, + themes fetched by the built-in downloader) or optional user-authored config + (custom_systems/, scripts/). Performs no BIOS handling; the only BIOS-related + code filters MAME BIOS set names out of gamelists (FileData.cpp:572-580). + RetroDECK ships it as its frontend component, built from the RetroDECK/ES-DE + fork and repackaged from the AppImage. + +files: []