From a77477cbe82f16d8903329a62f4dc9a3be810c31 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Tue, 17 Mar 2026 20:11:18 +0100 Subject: [PATCH] feat: add 10 emulator profiles (119-series batch 1) 81 (ZX81, embedded), DoubleCherryGB (GB dual, no BIOS), amiarcadia (Arcadia 2001, no BIOS), applewin (Apple II, 26 embedded), ardens (Arduboy, 6 bootloaders embedded), daphne (LaserDisc, no BIOS), pcem (IBM PC, 75+ machine/video/sound ROMs), panda3ds (3DS, optional keys), easyrpg (RPG Maker, soundfont + RTP), frodo (C64, 4 ROMs embedded) 105 total profiles. --- emulators/81.yml | 49 +++ emulators/amiarcadia.yml | 35 ++ emulators/applewin.yml | 220 +++++++++++ emulators/ardens.yml | 84 +++++ emulators/daphne.yml | 56 +++ emulators/doublecherrygb.yml | 30 ++ emulators/easyrpg.yml | 119 ++++++ emulators/frodo.yml | 87 +++++ emulators/panda3ds.yml | 42 +++ emulators/pcem.yml | 708 +++++++++++++++++++++++++++++++++++ 10 files changed, 1430 insertions(+) create mode 100644 emulators/81.yml create mode 100644 emulators/amiarcadia.yml create mode 100644 emulators/applewin.yml create mode 100644 emulators/ardens.yml create mode 100644 emulators/daphne.yml create mode 100644 emulators/doublecherrygb.yml create mode 100644 emulators/easyrpg.yml create mode 100644 emulators/frodo.yml create mode 100644 emulators/panda3ds.yml create mode 100644 emulators/pcem.yml diff --git a/emulators/81.yml b/emulators/81.yml new file mode 100644 index 00000000..e210d2fa --- /dev/null +++ b/emulators/81.yml @@ -0,0 +1,49 @@ +emulator: EightyOne +type: libretro +source: "https://github.com/libretro/81-libretro" +cores: + - 81 +systems: + - sinclair-zx81 + +notes: | + EightyOne is a Sinclair ZX81 emulator ported to libretro. Also supports + ZX80, Jupiter ACE, TS1500, Lambda, R470, TK85, and ZX97LE machines, but + the libretro port hardcodes MACHINEZX81 in retro_load_game (libretro.cpp:393). + + ROM loading is in snap.c:487-512. The memory_load() function matches the + requested ROM filename against a compiled-in table and copies from embedded + byte arrays generated by xxd -i at build time (Makefile.libretro:519-522). + Only two ROMs are embedded: zx81.rom (the ZX81 8K BASIC ROM) and dkchr.rom + (dK'tronics character ROM). Any other ROM name logs an error and returns 0. + + The core never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, never opens + files from the filesystem for ROM data, and need_fullpath is set to false + (libretro.cpp:308). All ROM data is baked into the compiled .so/.dll. + + No external BIOS or firmware files are needed. + +files: [] + +analysis: + embedded_roms: + zx81_rom: + variable: bin_ROM_zx81_rom + source_file: "bin/ROM/zx81.rom" + build_step: "xxd -i -> C array" + source_ref: "snap.c:489-498" + dkchr_rom: + variable: bin_ROM_dkchr_rom + source_file: "bin/ROM/dkchr.rom" + build_step: "xxd -i -> C array" + source_ref: "snap.c:499-508" + machine_roms: + notes: | + eo.c sets CurRom based on machine type. The libretro port forces + MACHINEZX81 (eo.c:39-41), so CurRom is always zx81.ROM81 which + defaults to "zx81.rom". Other machine ROMs (zx80, ace, ts1500, + lambda, zx97le, ringo470, tk85) are referenced but only zx81.rom + and dkchr.rom are embedded. Selecting other machines would log + "ROM not found" and load nothing. + filesystem_access: false + system_directory_used: false diff --git a/emulators/amiarcadia.yml b/emulators/amiarcadia.yml new file mode 100644 index 00000000..58f05e64 --- /dev/null +++ b/emulators/amiarcadia.yml @@ -0,0 +1,35 @@ +emulator: amiarcadia +type: libretro +source: "https://amigan.yatho.com/" +cores: + - amiarcadia +systems: + - emerson-arcadia-2001 + - interton-vc4000 + - elektor-tv-games-computer + +# AmiArcadia is a libretro port of James Jacobs' emulator for Signetics +# 2636 PVI / 2637 UVI + 2650 CPU-based systems: Emerson Arcadia 2001 and +# clones (Bandai, Grandstand, Schmid, Hanimex, Leisurevision, etc.), +# Interton VC 4000 family (Voltmace, Rowtron, Fountain, etc.), Elektor +# TV Games Computer, and Zaccaria/Malzak coin-op arcade machines. +# +# The core does NOT require any BIOS or system ROM files. +# firmware_count = 0 in amiarcadia_libretro.info confirms this. +# +# ROM identification: +# The core auto-identifies known game ROMs by CRC32 and configures the +# correct machine type, memory map, and game-specific settings. For +# unknown ROMs, the user selects machine type via the "Machine" core +# option (Arcadia / Interton). +# +# Supported extensions: .bin, .tvc +# +# Source ref: libretro-core-info/amiarcadia_libretro.info (firmware_count = 0) +# Docs: https://docs.libretro.com/library/amiarcadia/ + +notes: | + No BIOS files required. The emulator has no external firmware dependencies. + Game ROMs are identified by CRC32 for automatic machine configuration. + +bios_files: [] diff --git a/emulators/applewin.yml b/emulators/applewin.yml new file mode 100644 index 00000000..027770a0 --- /dev/null +++ b/emulators/applewin.yml @@ -0,0 +1,220 @@ +emulator: AppleWin +type: libretro +source: "https://github.com/audetto/AppleWin" +cores: + - applewin +systems: + - apple-ii + +notes: | + AppleWin is an Apple II/IIe/II+ emulator. The libretro port embeds all + ROM images directly into the compiled binary via a CMake resource system + (resource/CMakeLists.txt -> apple2roms static library -> apple2roms_data.h). + The GNUFrame::GetResourceData() function serves ROMs from this compiled-in + map. No external BIOS/firmware files are needed. + + The core never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY and the official + applewin_libretro.info has zero firmware entries. + + Supported machine types (via core option applewin_machine): + Enhanced Apple //e, Apple ][ (Original), Apple ][+, Apple ][ J-Plus, + Apple //e, Pravets 82, Pravets 8M, Pravets 8A, Base64A, TK3000 //e + + Supported extensions: bin, do, dsk, nib, po, gz, woz, zip, 2mg, 2img, + iie, apl, hdv, yaml, m3u + + supports_no_game: true (can boot without content) + +files: [] + +analysis: + embedded_roms: + build_system: "CMake add_resources() in resource/CMakeLists.txt" + storage: "apple2roms static library linked into core binary" + accessor: "GNUFrame::GetResourceData() -> apple2roms::data map" + source_ref: "source/frontends/common2/gnuframe.cpp:83" + + system_roms: + - id: IDR_APPLE2_ROM + filename: Apple2.rom + size: 12288 + md5: 3c406514b9806a7c57ee65fb0b0c39b4 + sha1: 09288be705464b608ff190519ab008d3dfcd1b05 + note: "Apple ][ original ROM (12 KB)" + + - id: IDR_APPLE2_PLUS_ROM + filename: Apple2_Plus.rom + size: 12288 + md5: 572b3005a4fa49bc54917b069b82c1ab + sha1: 33a24f5489ba9195b44be77d9afb2252594cb5c7 + note: "Apple ][+ ROM (12 KB)" + + - id: IDR_APPLE2_JPLUS_ROM + filename: Apple2_JPlus.rom + size: 12288 + md5: f3e8237eca3809bec2a42b984a1332a8 + sha1: ad200b3263d08e7235d0871c8595963a07adc905 + note: "Apple ][ J-Plus ROM (12 KB)" + + - id: IDR_APPLE2E_ROM + filename: Apple2e.rom + size: 16384 + md5: 346bc782c6a08a531c460e33bc03daf4 + sha1: 61fa9254628e5bb7236fb474006116d67684d747 + note: "Apple //e ROM (16 KB)" + + - id: IDR_APPLE2E_ENHANCED_ROM + filename: Apple2e_Enhanced.rom + size: 16384 + md5: 38063e08c778503fc03ecebb979769e9 + sha1: b8ea90abe135a0031065e01697c4a3a20d51198b + note: "Enhanced Apple //e ROM (16 KB, default machine type)" + + - id: IDR_PRAVETS_82_ROM + filename: PRAVETS82.ROM + size: 12288 + md5: c619b7edfcf021f3b8fd20d9386676ba + sha1: 8bd7ced83e209a15e9b19a05a5ef4b8e996dc1a5 + note: "Pravets 82 ROM (12 KB)" + + - id: IDR_PRAVETS_8M_ROM + filename: PRAVETS8M.ROM + size: 12288 + md5: 76c79535f7cf77973e2c711aa977a124 + sha1: f1b4ff018acf95f3355f0d575b66a188d728b687 + note: "Pravets 8M ROM (12 KB)" + + - id: IDR_PRAVETS_8C_ROM + filename: PRAVETS8C.ROM + size: 16384 + md5: 1896d7b98dd940c89f7c8ea899b71006 + sha1: c976fe56e57706c161f513a82ba3e0d8cda83904 + note: "Pravets 8A/8C ROM (16 KB)" + + - id: IDR_TK3000_2E_ROM + filename: TK3000e.rom + size: 16384 + md5: 8d84b614b545d4eec8799d3f325332cb + sha1: f163e5753c18ff0e812a448e8da406f102600edf + note: "TK3000 //e ROM (16 KB)" + + - id: IDR_BASE_64A_ROM + filename: Base64A.rom + size: 49152 + md5: 352fdbcae14c6a8c0398822c7a273309 + sha1: f1c779af480b5bda2bdd03950c1201a5c5143bea + note: "Base64A ROM (48 KB)" + + - id: IDR_FREEZES_F8_ROM + filename: Freezes_Non-autostart_F8_Rom.rom + size: 2048 + md5: d0a61e95ed1e1dc37c8e4801326aa79e + sha1: 3180be6b555ee9ef1f59c4fc3f25c5aab8c39c81 + note: "Freezes non-autostart F8 ROM (2 KB)" + + video_roms: + - id: IDR_APPLE2_VIDEO_ROM + filename: Apple2_Video.rom + size: 2048 + md5: 9ac0dc8c4d0002eb45b0b84be0bde5ec + sha1: f9d312f128c9557d9d6ac03bfad6c3ddf83e5659 + note: "Apple II character generator ROM (2 KB)" + + - id: IDR_APPLE2_JPLUS_VIDEO_ROM + filename: Apple2_JPlus_Video.rom + size: 2048 + md5: 271e2c9bf928b95e7baeff391db45495 + sha1: 0a382be58db5215c4a3de53b19a72fab660d5da2 + note: "Apple ][ J-Plus character generator ROM (2 KB)" + + - id: IDR_APPLE2E_ENHANCED_VIDEO_ROM + filename: Apple2e_Enhanced_Video.rom + size: 4096 + md5: 9123fff3442c0e688cc6816be88dd4ab + sha1: b2b5d87f52693817fc747df087a4aa1ddcdb1f10 + note: "Enhanced Apple //e character generator ROM (4 KB)" + + - id: IDR_BASE64A_VIDEO_ROM + filename: Base64A_German_Video.rom + size: 4096 + md5: 4b45852b369e2afd864a02d0d91f70dc + sha1: 87ca8135f7526ddf829f9c2c4f7dbe4d568818fc + note: "Base64A German character generator ROM (4 KB)" + + peripheral_firmware: + - id: IDR_DISK2_13SECTOR_FW + filename: DISK2-13sector.rom + size: 256 + md5: 4f80448507cf43ab40c17ac08d89e278 + sha1: afd060e6f35faf3bb0146fa889fc787adf56330a + note: "Disk II 13-sector controller ROM (256 B)" + + - id: IDR_DISK2_16SECTOR_FW + filename: DISK2.rom + size: 256 + md5: 2020aa1413ff77fe29353f3ee72dc295 + sha1: d4181c9f046aafc3fb326b381baac809d9e38d16 + note: "Disk II 16-sector controller ROM (256 B)" + + - id: IDR_SSC_FW + filename: SSC.rom + size: 2048 + md5: 67c0d61ab0911183faf05270f881a97e + sha1: 6dab633470c6bc4cb3e81d09fda46597caf8ee57 + note: "Super Serial Card firmware (2 KB)" + + - id: IDR_HDDRVR_FW + filename: Hddrvr.bin + size: 256 + md5: e0a40e9166af27b16f60beb83c9233f0 + sha1: 69667800c54da1d4466e7b2168c0e418a4cf586c + note: "Hard disk controller firmware v1 (256 B)" + + - id: IDR_HDDRVR_V2_FW + filename: Hddrvr-v2.bin + size: 256 + md5: a49e45e7a6d4de23e0845a59c7e31e0c + sha1: 06115eebb4d58221b5c062a42bf3e41e137447ed + note: "Hard disk controller firmware v2 (256 B)" + + - id: IDR_HDC_SMARTPORT_FW + filename: HDC-SmartPort.bin + size: 256 + md5: 2592efa1d34ade55d490a1b39911c9b2 + sha1: fd557998fd5823ad69a42ad1282e4fe47db02dca + note: "SmartPort hard disk controller firmware (256 B)" + + - id: IDR_PRINTDRVR_FW + filename: Parallel.rom + size: 256 + md5: 5902996f16dc78fc013f6e1db14805b3 + sha1: c75c751589cbcc1ad4ab4f63676af7abadd86f5b + note: "Parallel printer card firmware (256 B)" + + - id: IDR_MOCKINGBOARD_D_FW + filename: Mockingboard-D.rom + size: 2048 + md5: ab53170c5ec66b63e6356f637f4388ed + sha1: e8d20f4b59fe867ff76434d35a14d2cbdc8533e3 + note: "Mockingboard-D sound card firmware (2 KB)" + + - id: IDR_MOUSEINTERFACE_FW + filename: MouseInterface.rom + size: 2048 + md5: 22563ab338024dac7b03510371d49c57 + sha1: 3a9d881a8a8d30f55b9719aceebbcf717f829d6f + note: "Mouse interface card firmware (2 KB)" + + - id: IDR_THUNDERCLOCKPLUS_FW + filename: ThunderClockPlus.rom + size: 2048 + md5: 138b1f7e30953fcaa58fcbf562c15001 + sha1: 60f434f5325899d7ea257a6e56e6f53eae65146a + note: "ThunderClock Plus firmware (2 KB)" + + - id: IDR_TKCLOCK_FW + filename: TKClock.rom + size: 2304 + md5: 7076083b9d748b7637b020636543971b + sha1: 3740516cc9050465f8b884dbeb0ecdd2c1354620 + note: "TK Clock firmware (2.25 KB)" diff --git a/emulators/ardens.yml b/emulators/ardens.yml new file mode 100644 index 00000000..1e62b3ce --- /dev/null +++ b/emulators/ardens.yml @@ -0,0 +1,84 @@ +emulator: Ardens +type: libretro +source: "https://github.com/tiberiusbrown/ardens" +cores: + - ardens +systems: + - arduboy + +notes: | + Ardens is an Arduboy FX simulator designed for profiling and debugging, + ported to libretro. It emulates the ATmega32U4 MCU, SSD1306 OLED display, + and W25Q128 external flash used by the Arduboy hardware. + + No BIOS or bootloader files are required. The core has all boot code + compiled directly into the binary: + + - Caterina/Arduboy3K bootloaders for multiple hardware revisions (D1, D2, + E2) are embedded as C arrays generated from .hex files via bin2c.py. + Located in src/boot/boot_game_*.c and src/boot/boot_menu_*.c. + The appropriate variant is selected at reset based on the configured + device type (absim_arduboy.cpp:115-161). + + - Flashcart header (1536 bytes) is embedded in src/boot/boot_flashcart.c + and written to the start of the W25Q128 flash image at init + (absim_w25q128.hpp:14). + + - EEPROM (1024 bytes) and external flash (W25Q128, 16 MB) state are + handled as save RAM through the libretro RETRO_MEMORY_SAVE_RAM + interface, not as system files. + + The libretro port does not call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY + and never attempts to load any file from the system directory. + The .info file declares firmware_count = 0. + + Supported ROM formats: Intel HEX (.hex) and Arduboy package (.arduboy). + block_extract is set to true (the core reads archives directly). + +files: [] + +platform_details: + embedded_bootloaders: + source_ref: "src/boot/_make.bat, src/absim_arduboy.cpp:115-161" + variants: + - name: "arduboy3k-bootloader-game-sda" + array: "ARDENS_BOOT_GAME_D1" + size: 8422 + device: "Arduboy FX (SDA)" + - name: "arduboy3k-bootloader-menu-sda" + array: "ARDENS_BOOT_MENU_D1" + size: 8422 + device: "Arduboy FX (SDA)" + - name: "arduboy3k-bootloader-game-devkit" + array: "ARDENS_BOOT_GAME_D2" + size: 8446 + device: "Arduboy FX DevKit" + - name: "arduboy3k-bootloader-menu-devkit" + array: "ARDENS_BOOT_MENU_D2" + size: 8446 + device: "Arduboy FX DevKit" + - name: "arduboymini-bootloader-game" + array: "ARDENS_BOOT_GAME_E2" + size: 8548 + device: "Arduboy Mini" + - name: "arduboymini-bootloader-menu" + array: "ARDENS_BOOT_MENU_E2" + size: 8548 + device: "Arduboy Mini" + notes: | + All bootloaders are compiled from Intel HEX into C arrays at build + time. The core selects the game or menu variant at reset depending + on whether a flashcart image was loaded and the boot_to_menu config + flag (absim_arduboy.cpp:142-158). The bootloader is written to the + top of the ATmega32U4 program memory at the address defined by the + BOOTSZ fuse bits (absim.hpp:811). + + embedded_flashcart_header: + source_ref: "src/boot/boot_flashcart.c, src/absim_w25q128.hpp:14" + array: "ARDENS_BOOT_FLASHCART" + size: 1536 + notes: | + Empty flashcart header written to the first 1536 bytes of the + W25Q128 flash image during initialization. This is not a BIOS + file -- it is the default flash content the Arduboy FX expects + at the start of external storage. diff --git a/emulators/daphne.yml b/emulators/daphne.yml new file mode 100644 index 00000000..63724542 --- /dev/null +++ b/emulators/daphne.yml @@ -0,0 +1,56 @@ +emulator: Daphne +type: libretro +source: "https://github.com/libretro/daphne" +systems: + - arcade-laserdisc + +notes: | + Daphne is a LaserDisc arcade game emulator ported to libretro. It emulates + classic full-motion video arcade games like Dragon's Lair, Space Ace, + Cliff Hanger, and others that used LaserDisc players for video output. + + The core does NOT require any shared system BIOS or firmware files. + The libretro-core-info file (daphne_libretro.info) declares no firmware. + + Each game loads its own arcade ROM set from a ZIP file named after the game + short name (e.g. lair.zip, cliff.zip, bega.zip). ROM files are individual + arcade chip dumps loaded via the rom_def struct in each game class + (daphne-1.0-src/game/*.cpp). CRC32 verification is performed at load time + (game.cpp:769-778). + + Content loading path (libretro.cpp:546-637): + 1. User points RetroArch to a .zip file (e.g. /Daphne/roms/lair.zip) + 2. The core strips the path to derive: + - rom_name: game short name (e.g. "lair"), lowercased + - rom_path: parent directory + 3. A home_dir is set to rom_path/.. (one level up from roms/) + 4. Additional data is expected relative to home_dir: + - roms/ -> game ROM ZIPs + - framefile/ -> frame description files (.txt) + - sound/ -> sound samples + - ram/ -> SRAM saves + - pics/ -> overlay graphics + + Expected directory layout: + Daphne/ + roms/lair.zip + roms/cliff.zip + framefile/lair.txt + framefile/cliff.txt + sound/lair/ (optional, game-specific samples) + + Supported games include (from README.md and libretro.cpp): + lair (Dragon's Lair), ace (Space Ace), cliff (Cliff Hanger), + bega (Bega's Battle), badlands (Badlands), esh (Esh's Aurunmilla), + interstellar, mach3, sdq (Super Don Quix-ote), tq (Thayer's Quest), + astron, galaxy, cobra, roadblaster, gpworld, lair2 (Dragon's Lair II), + and many ROM revision variants. + + The core is marked experimental. Savestates, cheats, and disk control are + not supported. Requires full file path (retro_load_game uses path, not + data buffer). + +files: [] + # No shared BIOS or firmware files. All ROMs are per-game arcade chip + # dumps distributed inside game-named ZIP archives. These are game content, + # not system files managed by retroarch_system. diff --git a/emulators/doublecherrygb.yml b/emulators/doublecherrygb.yml new file mode 100644 index 00000000..fadc5659 --- /dev/null +++ b/emulators/doublecherrygb.yml @@ -0,0 +1,30 @@ +emulator: DoubleCherryGB +type: libretro +source: "https://github.com/TimOelrichs/doublecherryGB-libretro" +cores: + - DoubleCherryGB +systems: + - nintendo-gb + - nintendo-gbc + +notes: | + DoubleCherryGB is a Game Boy / Game Boy Color emulator forked from TGB Dual + by GIGO and Hii. It adds multi-Game Boy emulation with virtual link cable + support for up to 16 players, DMG-07 4-Player Adapter emulation, and + built-in Pokemon distribution events. + + No BIOS or boot ROM files are required or supported. The core does not + call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY for firmware loading and does + not attempt to open any files from the system directory. + + In cpu.cpp:82, the program counter is initialized to 0x100 (post-boot ROM + entry point), and cpu::reset() sets all registers to their post-boot + values directly (AF=0x01B0 for DMG, 0x11B0 for CGB). This means the + core completely bypasses the boot ROM sequence via HLE register setup. + + The .info file at libretro-core-info confirms no firmware entries. + + Supported extensions: gb, dmg, gbc, cgb, sgb. + Library version: v0.18.0. + +files: [] diff --git a/emulators/easyrpg.yml b/emulators/easyrpg.yml new file mode 100644 index 00000000..7d8be7ec --- /dev/null +++ b/emulators/easyrpg.yml @@ -0,0 +1,119 @@ +emulator: EasyRPG Player +type: libretro +source: "https://github.com/libretro/easyrpg-libretro" +cores: + - easyrpg +systems: + - rpgmaker + +# EasyRPG Player is an open-source interpreter for RPG Maker 2000 and 2003 +# games. It does not require any BIOS or firmware files. All system data +# files are optional and improve the experience (MIDI music, RTP assets). +# +# The official libretro .info file declares zero firmware entries. +# +# Directory layout under : +# rtp/2000/ - RPG Maker 2000 Run-Time Package assets +# rtp/2003/ - RPG Maker 2003 Run-Time Package assets +# easyrpg-player/ - global config dir (auto-created) +# easyrpg-player/Soundfont/ - user-provided .sf2 files +# easyrpg-player/Font/ - user-provided font files +# +# RTP path resolution (filefinder_rtp.cpp:68-75, libretro build): +# 1. /rtp/ +# 2. /rtp/ +# where is "2000" or "2003" depending on the game +# +# MIDI playback uses FluidSynth (fluidlite) with this soundfont search +# order (decoder_fluidsynth.cpp:118-163): +# 1. User-configured soundfont from settings +# 2. "easyrpg.soundfont" (looked up via VFS, placed in game dir or system dir) +# 3. FluidSynth default soundfont setting +# 4. SDL_SOUNDFONTS environment variable +# 5. /usr/share/soundfonts/FluidR3_GM.sf2 (Linux desktop) +# 6. /usr/share/sounds/sf2/FluidR3_GM.sf2 (Linux desktop) +# +# WildMidi alternative MIDI (decoder_wildmidi.cpp:99-114, libretro build): +# 1. /wildmidi.cfg +# 2. /wildmidi/wildmidi.cfg +# +# Games that include all their assets (FullPackageFlag) need nothing extra. +# Games relying on RPG Maker RTP need the matching RTP installed. + +notes: | + No BIOS or firmware required. All files listed below are optional runtime + data that improve compatibility and audio quality. + + RTP (Run-Time Package) contains default assets (sprites, music, sound effects) + shared by many RPG Maker games. Games that ship all their own assets do not + need it. The RPG Maker 2000 and 2003 RTPs are separate packages. EasyRPG + also supports translated/third-party RTP variants (Don Miguel, Kadokawa, + Enterbrain, RPG Advocate, etc.) and auto-detects which one a game uses. + + For MIDI music, a General MIDI soundfont in SF2 format is needed. Place it + as easyrpg.soundfont in the system directory, or put any .sf2 file in + easyrpg-player/Soundfont/ and select it from the core settings menu. + +files: + # ================================================================ + # Soundfont for MIDI playback (optional) + # decoder_fluidsynth.cpp:125 - first custom path checked + # ================================================================ + + - name: "easyrpg.soundfont" + path: "easyrpg.soundfont" + required: false + source_ref: "decoder_fluidsynth.cpp:125, scene_logo.cpp:261" + note: > + General MIDI soundfont (SF2 format) for MIDI music playback. Many RPG + Maker games use MIDI for background music. Without a soundfont, MIDI + tracks are silent. Any GM-compatible .sf2 works. Can also be placed in + easyrpg-player/Soundfont/ with any filename. + + # ================================================================ + # WildMidi configuration (optional, alternative MIDI backend) + # decoder_wildmidi.cpp:99-114 + # ================================================================ + + - name: "wildmidi.cfg" + path: "wildmidi.cfg" + required: false + source_ref: "decoder_wildmidi.cpp:103-104" + note: > + WildMidi configuration file pointing to GUS patch sets for MIDI + playback. Alternative to FluidSynth/SF2. Only used if WildMidi + support is compiled in and FluidSynth is not available or disabled. + + # ================================================================ + # RPG Maker 2000 RTP (optional, game-dependent) + # filefinder_rtp.cpp:73-74 - /rtp/2000 + # ================================================================ + + - name: "RPG Maker 2000 RTP" + path: "rtp/2000/" + required: false + type: directory + source_ref: "filefinder_rtp.cpp:73-74" + note: > + Run-Time Package for RPG Maker 2000 games. Contains default tilesets, + character sprites, battle animations, music, and sound effects. Only + needed by games that reference RTP assets instead of bundling them. + Multiple RTP variants exist (Japanese official, English official, + Don Miguel English translation). EasyRPG auto-detects which variant + a game expects. + + # ================================================================ + # RPG Maker 2003 RTP (optional, game-dependent) + # filefinder_rtp.cpp:73-74 - /rtp/2003 + # ================================================================ + + - name: "RPG Maker 2003 RTP" + path: "rtp/2003/" + required: false + type: directory + source_ref: "filefinder_rtp.cpp:73-74" + note: > + Run-Time Package for RPG Maker 2003 games. Same concept as the 2000 + RTP but with additional battle system assets for the side-view ATB + combat. Multiple variants exist (Japanese official, English official, + RPG Advocate English, Vlad Russian, Korean, Traditional Chinese). diff --git a/emulators/frodo.yml b/emulators/frodo.yml new file mode 100644 index 00000000..52a15935 --- /dev/null +++ b/emulators/frodo.yml @@ -0,0 +1,87 @@ +emulator: Frodo +type: libretro +cores: [frodo] +source: "https://github.com/libretro/frodo-libretro" +systems: [commodore-c64] + +notes: | + Frodo is a Commodore 64 emulator by Christian Bauer (Frodo V4.2), ported + to libretro. It emulates the C64 (MOS 6510, VIC-II, SID, CIA x2) and an + optional 1541 floppy drive. + + All four ROMs are embedded directly in the core binary as compiled-in + byte arrays (Basic_ROM.h, Kernal_ROM.h, Char_ROM.h, 1541_ROM.h). No + external BIOS files are required for normal operation. + + The core attempts to load external ROM files from the current working + directory (DATADIR is empty in the libretro build) at startup via + load_rom_files() in main.cpp. If any file fails to open or has the wrong + size, the embedded ROM is used as fallback via memcpy(). The filenames + are hardcoded with spaces, no subdirectory prefix. + + ROM loading order in load_rom_files(): + 1. "Basic ROM" (8192 bytes, BASIC_ROM_SIZE 0x2000) -> TheC64->Basic + 2. "Kernal ROM" (8192 bytes, KERNAL_ROM_SIZE 0x2000) -> TheC64->Kernal + 3. "Char ROM" (4096 bytes, CHAR_ROM_SIZE 0x1000) -> TheC64->Char + 4. "1541 ROM" (16384 bytes, DRIVE_ROM_SIZE 0x4000) -> TheC64->ROM1541 + + The core does NOT construct paths relative to retro_system_directory for + ROM loading. The system directory variable is fetched in retro_init() but + only used for the save directory fallback, not for ROM path construction. + DATADIR defaults to "" (empty string) when not defined by the build + system, so the filenames resolve to bare names in the cwd. In practice, + the external ROM loading path is effectively unused in the libretro build + since the cwd is unpredictable and the filenames contain spaces. + + The Kernal ROM is patched at runtime by PatchKernal() in C64.cpp for + fast reset (addresses 0x1D84-0x1D85) and IEC bus replacement when 1541 + processor emulation is enabled (multiple addresses in the 0x0D00-0x0E00 + range are patched with 0xF2 trap opcodes). + + The 1541 drive ROM is also patched at Reset() in C64.cpp: ROM checksum + verification is disabled (0x2AE4-0x2AE9 NOPed), DOS idle loop is + trapped (0x2C9B), and write sector / format track operations are + intercepted (0x3594-0x3598, 0x3B0C-0x3B0D). + + Source: Src/main.cpp:67-115 (ROM defines, load_rom, load_rom_files), + Src/C64.h:33-37 (ROM size constants), Src/C64.cpp:221-284 (PatchKernal), + Src/C64.cpp:738-746 (Reset ROM patching), + Src/Basic_ROM.h, Src/Kernal_ROM.h, Src/Char_ROM.h, Src/1541_ROM.h + (embedded ROM arrays) + +files: + - name: "Basic ROM" + system: commodore-c64 + description: "C64 BASIC V2 ROM" + required: false + embedded: true + size: 8192 + note: "Embedded as builtin_basic_rom[] in Basic_ROM.h. External file never loaded in practice (DATADIR is empty, path is bare filename in cwd)." + source_ref: "Src/main.cpp:71,77,100-102" + + - name: "Kernal ROM" + system: commodore-c64 + description: "C64 Kernal ROM" + required: false + embedded: true + size: 8192 + note: "Embedded as builtin_kernal_rom[] in Kernal_ROM.h. Patched at runtime for fast reset and 1541 IEC traps." + source_ref: "Src/main.cpp:72,78,104-106" + + - name: "Char ROM" + system: commodore-c64 + description: "C64 Character Generator ROM" + required: false + embedded: true + size: 4096 + note: "Embedded as builtin_char_rom[] in Char_ROM.h. Used by VIC-II for text/bitmap rendering." + source_ref: "Src/main.cpp:73,79,108-110" + + - name: "1541 ROM" + system: commodore-c64 + description: "Commodore 1541 floppy drive ROM" + required: false + embedded: true + size: 16384 + note: "Embedded as builtin_drive_rom[] in 1541_ROM.h. Patched at runtime to disable checksum and trap disk I/O." + source_ref: "Src/main.cpp:74,80,112-114" diff --git a/emulators/panda3ds.yml b/emulators/panda3ds.yml new file mode 100644 index 00000000..c07558e4 --- /dev/null +++ b/emulators/panda3ds.yml @@ -0,0 +1,42 @@ +emulator: Panda3DS +type: libretro +core_name: panda3ds_libretro +source: "https://github.com/panda3ds-emu/panda3ds" +systems: [nintendo-3ds] + +notes: | + Panda3DS is an HLE 3DS emulator. Most games run without any system files. + Encrypted ROMs need AES keys in sysdata/aes_keys.txt, and seed-encrypted + titles (9.6+) also need sysdata/seeddb.bin. + DSP firmware is loaded from the game itself (not from disk), with HLE/LLE/Null + modes selectable via core option panda3ds_dsp_emulation. + System archives (shared font, bad word list, country list, mii data) are + compiled into the binary from citra_system_archives headers. + The libretro core does NOT use RetroArch's system directory. It stores data + under the save directory in "Emulator Files/sysdata/". + The .info file declares no firmware entries, so RetroArch will not check + for any system files. + Experimental core: is_experimental = true in the .info file. + +files: + - name: "aes_keys.txt" + path: "Emulator Files/sysdata/aes_keys.txt" + description: "AES encryption keys for decrypting encrypted ROMs" + required: false + source_ref: "src/emulator.cpp:229,238" + notes: | + Loaded at ROM load time from appDataRoot/sysdata/aes_keys.txt. + In libretro mode, appDataRoot = /Emulator Files/. + Contains key slot entries like "generator=XXXX", keyX/keyY values. + Only needed for encrypted .3ds/.cci/.cxi/.app files. + Decrypted dumps work without this file. + + - name: "seeddb.bin" + path: "Emulator Files/sysdata/seeddb.bin" + description: "Seed database for seed-encrypted games" + required: false + source_ref: "src/emulator.cpp:230,241-242, src/core/loader/ncch.cpp:77-93" + notes: | + Required for titles using seed encryption (firmware 9.6+). + Must be placed alongside aes_keys.txt in the sysdata directory. + Without it, seed-encrypted titles will fail to load with a warning. diff --git a/emulators/pcem.yml b/emulators/pcem.yml new file mode 100644 index 00000000..d01b04a2 --- /dev/null +++ b/emulators/pcem.yml @@ -0,0 +1,708 @@ +emulator: PCem +type: libretro +source: "https://github.com/libretro/libretro-pcem" +systems: [ibm-pc, ibm-xt, ibm-at, ibm-pcjr, ibm-ps1, tandy-1000] + +# PCem (PC Emulator) emulates IBM PC compatibles from 8088 through Pentium. +# All ROMs are loaded relative to the core's system directory via romfopen() +# which prepends pcempath (= RetroArch system dir) to the path. +# Each machine model requires its own BIOS ROM set under roms//. +# Video card ROMs are separate and only needed for the selected GPU. +# The font ROM (mda.rom) is always loaded at startup. + +files: + # ======================================================== + # FONT ROM (always loaded) + # ======================================================== + - name: "MDA font ROM" + path: "mda.rom" + required: true + note: > + MDA/Hercules character generator ROM. Loaded unconditionally by loadbios() + via loadfont() at startup, regardless of selected video card. + source_ref: "src/mem.c:107" + + # ======================================================== + # XT-IDE BIOS (optional, loaded for XT-class machines) + # ======================================================== + - name: "XT-IDE BIOS" + path: "roms/ide_xt.bin" + required: false + note: > + XT-IDE Universal BIOS for XT-class machines. Loaded as option ROM at + 0xC8000. Used by IBM PC, IBM XT, Generic XT, DTK XT, AMI XT, + Tandy, Amstrad, Euro PC, Olivetti, PC2086, PC3086, and other XT clones. + source_ref: "src/mem.c:60-72" + + - name: "AT-IDE BIOS" + path: "roms/ide_at.bin" + required: false + note: > + XT-IDE Universal BIOS for AT-class machines. Loaded as option ROM. + Used by IBM AT, Compaq Deskpro 386, Phoenix 386, DTK 386. + source_ref: "src/mem.c:74-86" + + - name: "AT-IDE BIOS v1.1.5" + path: "roms/ide_at_1_1_5.bin" + required: false + note: > + XT-IDE Universal BIOS v1.1.5 for AT-class machines. + Used specifically by IBM PS/1 model 2011. + source_ref: "src/mem.c:88-100" + + # ======================================================== + # MACHINE BIOS ROMs - IBM + # ======================================================== + - name: "IBM PC BIOS" + path: "roms/ibmpc/pc102782.bin" + required: false + note: "IBM 5150 PC BIOS dated 10/27/82 (8 KB)." + source_ref: "src/mem.c:382-386" + + - name: "IBM PC BASIC C1.1 F6" + path: "roms/ibmpc/basicc11.f6" + required: false + note: "IBM Cassette BASIC C1.1 ROM, bank F6. Optional for IBM PC." + source_ref: "src/mem.c:387-388" + + - name: "IBM PC BASIC C1.1 F8" + path: "roms/ibmpc/basicc11.f8" + required: false + note: "IBM Cassette BASIC C1.1 ROM, bank F8." + source_ref: "src/mem.c:391-393" + + - name: "IBM PC BASIC C1.1 FA" + path: "roms/ibmpc/basicc11.fa" + required: false + note: "IBM Cassette BASIC C1.1 ROM, bank FA." + source_ref: "src/mem.c:395-397" + + - name: "IBM PC BASIC C1.1 FC" + path: "roms/ibmpc/basicc11.fc" + required: false + note: "IBM Cassette BASIC C1.1 ROM, bank FC." + source_ref: "src/mem.c:399-401" + + - name: "IBM XT BIOS (combined)" + path: "roms/ibmxt/xt.rom" + required: false + note: > + IBM 5160 XT BIOS (64 KB combined ROM). Fallback: if this file + is missing, the core tries the split ROMs 5000027.u19 + 1501512.u18. + source_ref: "src/mem.c:203-222" + + - name: "IBM XT BIOS U19" + path: "roms/ibmxt/5000027.u19" + required: false + note: "IBM XT BIOS low chip. Used when xt.rom is not present." + source_ref: "src/mem.c:206" + + - name: "IBM XT BIOS U18" + path: "roms/ibmxt/1501512.u18" + required: false + note: "IBM XT BIOS high chip. Used when xt.rom is not present." + source_ref: "src/mem.c:207" + + - name: "IBM PCjr BIOS" + path: "roms/ibmpcjr/bios.rom" + required: false + note: "IBM PCjr BIOS (64 KB). Required for PCjr machine model." + source_ref: "src/mem.c:226-229" + + - name: "IBM AT BIOS U27" + path: "roms/ibmat/62x0820.u27" + required: false + note: "IBM 5170 AT BIOS low chip. Paired with 62x0821.u47." + source_ref: "src/mem.c:299" + + - name: "IBM AT BIOS U47" + path: "roms/ibmat/62x0821.u47" + required: false + note: "IBM 5170 AT BIOS high chip. Paired with 62x0820.u27." + source_ref: "src/mem.c:300" + + - name: "IBM PS/1 model 2011 BIOS" + path: "roms/ibmps1es/f80000.bin" + required: false + note: > + IBM PS/1 model 2011 BIOS (128 KB). 64 KB is read from offset 0x60000. + Also loaded separately by PS/1 motherboard init as a high ROM at 0xF80000. + source_ref: "src/mem.c:513-517, src/ps1.c:127-128" + + # ======================================================== + # MACHINE BIOS ROMs - Tandy + # ======================================================== + - name: "Tandy 1000 BIOS" + path: "roms/tandy/tandy1t1.020" + required: false + note: "Tandy 1000 BIOS v01.020 (64 KB)." + source_ref: "src/mem.c:165-168" + + - name: "Tandy 1000 HX BIOS" + path: "roms/tandy1000hx/v020000.u12" + required: false + note: "Tandy 1000 HX BIOS (128 KB)." + source_ref: "src/mem.c:172-176" + + - name: "Tandy 1000 SL/2 BIOS low" + path: "roms/tandy1000sl2/8079047.hu1" + required: false + note: "Tandy 1000 SL/2 BIOS low chip. Paired with 8079048.hu2." + source_ref: "src/mem.c:180" + + - name: "Tandy 1000 SL/2 BIOS high" + path: "roms/tandy1000sl2/8079048.hu2" + required: false + note: "Tandy 1000 SL/2 BIOS high chip. Paired with 8079047.hu1." + source_ref: "src/mem.c:181" + + # ======================================================== + # MACHINE BIOS ROMs - Amstrad / Sinclair + # ======================================================== + - name: "Amstrad PC1512 BIOS low" + path: "roms/pc1512/40043.v1" + required: false + note: "Amstrad PC1512 BIOS low chip." + source_ref: "src/mem.c:121" + + - name: "Amstrad PC1512 BIOS high" + path: "roms/pc1512/40044.v1" + required: false + note: "Amstrad PC1512 BIOS high chip." + source_ref: "src/mem.c:122" + + - name: "Amstrad PC1512 font ROM" + path: "roms/pc1512/40078.ic127" + required: false + note: "Amstrad PC1512 character generator ROM." + source_ref: "src/mem.c:132" + + - name: "Amstrad PC1640 BIOS low" + path: "roms/pc1640/40044.v3" + required: false + note: "Amstrad PC1640 BIOS low chip." + source_ref: "src/mem.c:135" + + - name: "Amstrad PC1640 BIOS high" + path: "roms/pc1640/40043.v3" + required: false + note: "Amstrad PC1640 BIOS high chip." + source_ref: "src/mem.c:136" + + - name: "Amstrad PC1640 video BIOS" + path: "roms/pc1640/40100" + required: false + note: "Amstrad PC1640 built-in EGA video BIOS. Also used by vid_pc1640 device." + source_ref: "src/mem.c:145, src/vid_pc1640.c:124" + + - name: "Sinclair PC200 BIOS high" + path: "roms/pc200/pc20v2.1" + required: false + note: "Sinclair PC200 BIOS high chip." + source_ref: "src/mem.c:151" + + - name: "Sinclair PC200 BIOS low" + path: "roms/pc200/pc20v2.0" + required: false + note: "Sinclair PC200 BIOS low chip." + source_ref: "src/mem.c:152" + + - name: "Sinclair PC200 font ROM" + path: "roms/pc200/40109.bin" + required: false + note: "Sinclair PC200 character generator ROM." + source_ref: "src/mem.c:162" + + - name: "Amstrad PC2086 BIOS low" + path: "roms/pc2086/40179.ic129" + required: false + note: "Amstrad PC2086 BIOS low chip." + source_ref: "src/mem.c:261" + + - name: "Amstrad PC2086 BIOS high" + path: "roms/pc2086/40180.ic132" + required: false + note: "Amstrad PC2086 BIOS high chip." + source_ref: "src/mem.c:262" + + - name: "Amstrad PC2086 video BIOS" + path: "roms/pc2086/40186.ic171" + required: false + note: "Amstrad PC2086 Paradise PVGA1A video BIOS." + source_ref: "src/mem.c:273, src/vid_paradise.c:329" + + - name: "Amstrad PC3086 BIOS" + path: "roms/pc3086/fc00.bin" + required: false + note: "Amstrad PC3086 system BIOS (16 KB)." + source_ref: "src/mem.c:281" + + - name: "Amstrad PC3086 video BIOS" + path: "roms/pc3086/c000.bin" + required: false + note: "Amstrad PC3086 Paradise PVGA1A video BIOS." + source_ref: "src/mem.c:285, src/vid_paradise.c:338" + + # ======================================================== + # MACHINE BIOS ROMs - Other XT clones + # ======================================================== + - name: "Generic XT BIOS" + path: "roms/genxt/pcxt.rom" + required: false + note: "Generic XT clone BIOS (8 KB)." + source_ref: "src/mem.c:233-236" + + - name: "DTK XT BIOS" + path: "roms/dtk/DTK_ERSO_2.42_2764.bin" + required: false + note: "DTK XT clone BIOS (8 KB)." + source_ref: "src/mem.c:240-243" + + - name: "AMI XT BIOS" + path: "roms/amixt/AMI_8088_BIOS_31JAN89.BIN" + required: false + note: "AMI 8088 XT clone BIOS dated 31 Jan 1989 (8 KB)." + source_ref: "src/mem.c:539-542" + + - name: "VTech Laser Turbo XT BIOS" + path: "roms/ltxt/27C64.bin" + required: false + note: "VTech Laser Turbo XT BIOS (8 KB)." + source_ref: "src/mem.c:547-550" + + - name: "VTech Laser XT3 BIOS" + path: "roms/lxt3/27C64D.bin" + required: false + note: "VTech Laser XT3 BIOS (8 KB)." + source_ref: "src/mem.c:555-558" + + - name: "Phoenix XT BIOS" + path: "roms/pxxt/000p001.bin" + required: false + note: "Phoenix XT clone BIOS (8 KB)." + source_ref: "src/mem.c:585-588" + + - name: "Juko PC BIOS" + path: "roms/jukopc/000o001.bin" + required: false + note: "Juko XT clone BIOS (8 KB)." + source_ref: "src/mem.c:593-596" + + - name: "Euro PC BIOS" + path: "roms/europc/50145" + required: false + note: "Schneider Euro PC BIOS (32 KB)." + source_ref: "src/mem.c:374-377" + + - name: "Olivetti M24 BIOS low" + path: "roms/olivetti_m24/olivetti_m24_version_1.43_low.bin" + required: false + note: "Olivetti M24 BIOS low chip, version 1.43." + source_ref: "src/mem.c:247" + + - name: "Olivetti M24 BIOS high" + path: "roms/olivetti_m24/olivetti_m24_version_1.43_high.bin" + required: false + note: "Olivetti M24 BIOS high chip, version 1.43." + source_ref: "src/mem.c:248" + + # ======================================================== + # MACHINE BIOS ROMs - 286 AT clones + # ======================================================== + - name: "Commodore PC 30 III BIOS even" + path: "roms/cmdpc30/commodore pc 30 iii even.bin" + required: false + note: "Commodore PC 30 III BIOS even chip." + source_ref: "src/mem.c:312" + + - name: "Commodore PC 30 III BIOS odd" + path: "roms/cmdpc30/commodore pc 30 iii odd.bin" + required: false + note: "Commodore PC 30 III BIOS odd chip." + source_ref: "src/mem.c:313" + + - name: "AMI 286 BIOS" + path: "roms/ami286/amic206.bin" + required: false + note: "AMI 286 clone BIOS (64 KB)." + source_ref: "src/mem.c:365-368" + + - name: "Dell System 200 BIOS low" + path: "roms/dells200/dell0.bin" + required: false + note: "Dell System 200 BIOS low chip." + source_ref: "src/mem.c:326" + + - name: "Dell System 200 BIOS high" + path: "roms/dells200/dell1.bin" + required: false + note: "Dell System 200 BIOS high chip." + source_ref: "src/mem.c:327" + + # ======================================================== + # MACHINE BIOS ROMs - 386 machines + # ======================================================== + - name: "Compaq Deskpro 386 BIOS U11" + path: "roms/deskpro386/109592-005.U11.bin" + required: false + note: "Compaq Deskpro 386 BIOS low chip." + source_ref: "src/mem.c:524" + + - name: "Compaq Deskpro 386 BIOS U13" + path: "roms/deskpro386/109591-005.U13.bin" + required: false + note: "Compaq Deskpro 386 BIOS high chip." + source_ref: "src/mem.c:525" + + - name: "Acer 386SX BIOS" + path: "roms/acer386/acer386.bin" + required: false + note: "Acer 386SX/25N BIOS (64 KB). Also requires oti067.bin video ROM." + source_ref: "src/mem.c:353-356" + + - name: "Acer 386SX OTI-067 video BIOS" + path: "roms/acer386/oti067.bin" + required: false + note: "OTI-067 video BIOS for Acer 386SX (on-board video)." + source_ref: "src/mem.c:359, src/vid_oti067.c:184" + + - name: "Phoenix 386 BIOS low" + path: "roms/px386/3iip001l.bin" + required: false + note: "Phoenix 386 clone BIOS low chip." + source_ref: "src/mem.c:563" + + - name: "Phoenix 386 BIOS high" + path: "roms/px386/3iip001h.bin" + required: false + note: "Phoenix 386 clone BIOS high chip." + source_ref: "src/mem.c:564" + + - name: "DTK 386 BIOS" + path: "roms/dtk386/3cto001.bin" + required: false + note: "DTK 386SX clone BIOS with NEAT chipset (64 KB)." + source_ref: "src/mem.c:577-580" + + - name: "Amstrad MegaPC BIOS low" + path: "roms/megapc/41651-bios lo.u18" + required: false + note: "Amstrad MegaPC BIOS low chip." + source_ref: "src/mem.c:407" + + - name: "Amstrad MegaPC BIOS high" + path: "roms/megapc/211253-bios hi.u19" + required: false + note: "Amstrad MegaPC BIOS high chip." + source_ref: "src/mem.c:408" + + - name: "AMI 386 BIOS" + path: "roms/ami386/ami386.bin" + required: false + note: "AMI 386 clone BIOS with Headland/OPTi 82C495 chipset (64 KB)." + source_ref: "src/mem.c:345-348" + + # ======================================================== + # MACHINE BIOS ROMs - 486 machines + # ======================================================== + - name: "AMI 486 BIOS" + path: "roms/ami486/ami486.BIN" + required: false + note: "AMI 486 clone BIOS with ALi M1429 chipset (64 KB)." + source_ref: "src/mem.c:422-425" + + - name: "AMI WinBIOS 486" + path: "roms/win486/ALI1429G.AMW" + required: false + note: "AMI WinBIOS 486 with ALi M1429G chipset (64 KB)." + source_ref: "src/mem.c:431-434" + + - name: "HOT-433 PCI 486 BIOS" + path: "roms/hot-433/hot-433.ami" + required: false + note: "HOT-433 PCI 486 BIOS with UMC UM8881F chipset (128 KB)." + source_ref: "src/mem.c:439-443" + + - name: "DTK 486 BIOS" + path: "roms/dtk486/4siw005.bin" + required: false + note: "DTK PKM-0038S E-2 BIOS with SiS 85C471 chipset (64 KB)." + source_ref: "src/mem.c:601-604" + + - name: "Award SiS 496 BIOS" + path: "roms/sis496/SIS496-1.AWA" + required: false + note: "Award BIOS for SiS 496/497 chipset (128 KB)." + source_ref: "src/mem.c:448-452" + + - name: "Rise R418 BIOS" + path: "roms/r418/r418i.bin" + required: false + note: "Rise Computer R418 BIOS with SiS 496/497 chipset (128 KB)." + source_ref: "src/mem.c:608-612" + + # ======================================================== + # MACHINE BIOS ROMs - Pentium machines + # ======================================================== + - name: "Intel Premiere/PCI (Batman) BIOS" + path: "roms/revenge/1009AF2_.BIO" + required: false + note: "Intel Premiere/PCI BIOS (430LX, code-name Batman). Main BIOS block." + source_ref: "src/mem.c:469-471" + + - name: "Intel Premiere/PCI (Batman) BIOS ext" + path: "roms/revenge/1009AF2_.BI1" + required: false + note: "Intel Premiere/PCI BIOS extension block." + source_ref: "src/mem.c:474-478" + + - name: "Intel Premiere/PCI II (Plato) BIOS" + path: "roms/plato/1016AX1_.BIO" + required: false + note: "Intel Premiere/PCI II BIOS (430NX). Main BIOS block." + source_ref: "src/mem.c:617-620" + + - name: "Intel Premiere/PCI II (Plato) BIOS ext" + path: "roms/plato/1016AX1_.BI1" + required: false + note: "Intel Premiere/PCI II BIOS extension block." + source_ref: "src/mem.c:622-625" + + - name: "Intel Advanced/EV (Endeavor) BIOS" + path: "roms/endeavor/1006CB0_.BIO" + required: false + note: "Intel Advanced/EV BIOS (430FX). Main BIOS block." + source_ref: "src/mem.c:483-485" + + - name: "Intel Advanced/EV (Endeavor) BIOS ext" + path: "roms/endeavor/1006CB0_.BI1" + required: false + note: "Intel Advanced/EV BIOS extension block." + source_ref: "src/mem.c:488-491" + + - name: "PC Partner MB500N BIOS" + path: "roms/mb500n/031396S.BIN" + required: false + note: "PC Partner MB500N BIOS (430FX, Award, 128 KB)." + source_ref: "src/mem.c:632-635" + + - name: "ASUS P/I-P54TP4XE BIOS" + path: "roms/p54tp4xe/T15I0302.AWD" + required: false + note: "ASUS P/I-P54TP4XE BIOS (430FX, Award, 128 KB)." + source_ref: "src/mem.c:640-643" + + - name: "Acer M3A BIOS" + path: "roms/acerm3a/r01-b3.bin" + required: false + note: "Acer M3A BIOS (430HX, 128 KB)." + source_ref: "src/mem.c:648-651" + + - name: "Acer V35N BIOS" + path: "roms/acerv35n/V35ND1S1.BIN" + required: false + note: "Acer V35N BIOS (430HX, 128 KB)." + source_ref: "src/mem.c:656-659" + + - name: "ASUS P/I-P55T2P4 BIOS" + path: "roms/p55t2p4/0207_J2.BIN" + required: false + note: "ASUS P/I-P55T2P4 BIOS (430HX, Award, 128 KB)." + source_ref: "src/mem.c:664-667" + + - name: "Award 430VX BIOS" + path: "roms/430vx/55XWUQ0E.BIN" + required: false + note: "Award 430VX PCI BIOS (128 KB)." + source_ref: "src/mem.c:459-463" + + - name: "Epox P55-VA BIOS" + path: "roms/p55va/VA021297.BIN" + required: false + note: "Epox P55-VA BIOS (430VX, Award, 128 KB)." + source_ref: "src/mem.c:672-675" + + # ======================================================== + # VIDEO CARD ROMs (selected via gfxcard option) + # ======================================================== + - name: "IBM EGA BIOS" + path: "roms/ibm_6277356_ega_card_u44_27128.bin" + required: false + note: "IBM EGA card BIOS (32 KB)." + source_ref: "src/vid_ega.c:957, 1078" + + - name: "Compaq EGA BIOS" + path: "roms/108281-001.bin" + required: false + note: "Compaq EGA card BIOS (32 KB)." + source_ref: "src/vid_ega.c:997, 1083" + + - name: "Chips & Technologies SuperEGA BIOS" + path: "roms/lega.vbi" + required: false + note: "Chips & Technologies SuperEGA BIOS (32 KB)." + source_ref: "src/vid_ega.c:1041, 1088" + + - name: "IBM VGA BIOS" + path: "roms/ibm_vga.bin" + required: false + note: "IBM VGA card BIOS. Also used by PS/1 VGA (same availability check)." + source_ref: "src/vid_vga.c:89, 127" + + - name: "Compaq/Paradise VGA BIOS" + path: "roms/1988-05-18.rom" + required: false + note: "Compaq/Paradise PVGA1A VGA BIOS dated 1988-05-18." + source_ref: "src/vid_paradise.c:366, 373" + + - name: "ATI VGA Edge-16 BIOS" + path: "roms/vgaedge16.vbi" + required: false + note: "ATI VGA Edge-16 (ATI-18800) video BIOS." + source_ref: "src/vid_ati18800.c:135, 155" + + - name: "ATI VGA Charger BIOS" + path: "roms/bios.bin" + required: false + note: "ATI VGA Charger (ATI-28800) video BIOS." + source_ref: "src/vid_ati28800.c:160, 180" + + - name: "OAK OTI-067 BIOS" + path: "roms/oti067/bios.bin" + required: false + note: "OAK OTI-067 standalone video BIOS." + source_ref: "src/vid_oti067.c:158, 194" + + - name: "Trident TVGA8900D BIOS" + path: "roms/TRIDENT.BIN" + required: false + note: "Trident TVGA8900D video BIOS." + source_ref: "src/vid_tvga.c:292, 307" + + - name: "Tseng ET4000AX BIOS" + path: "roms/et4000.BIN" + required: false + note: "Tseng ET4000AX video BIOS." + source_ref: "src/vid_et4000.c:153, 168" + + - name: "Tseng ET4000/W32p BIOS" + path: "roms/et4000w32.bin" + required: false + note: "Diamond Stealth 32 (Tseng ET4000/W32p) video BIOS." + source_ref: "src/vid_et4000w32.c:1081, 1103" + + - name: "S3 Vision864 BIOS" + path: "roms/bahamas64.BIN" + required: false + note: "Paradise Bahamas 64 (S3 Vision864) video BIOS." + source_ref: "src/vid_s3.c:2001, 2015" + + - name: "S3 Trio64 BIOS (Number Nine 9FX)" + path: "roms/s3_764.bin" + required: false + note: "Number Nine 9FX (S3 764/Trio64) video BIOS." + source_ref: "src/vid_s3.c:2020, 2034" + + - name: "S3 Trio32 BIOS (Phoenix)" + path: "roms/86C732P.bin" + required: false + note: "Phoenix S3 732/Trio32 video BIOS." + source_ref: "src/vid_s3.c:2039, 2055" + + - name: "S3 Trio64 BIOS (Phoenix)" + path: "roms/86c764x1.bin" + required: false + note: "Phoenix S3 764/Trio64 video BIOS." + source_ref: "src/vid_s3.c:2060, 2076" + + - name: "S3 ViRGE BIOS" + path: "roms/s3virge.bin" + required: false + note: "Diamond Stealth 3D 2000 (S3 ViRGE) video BIOS." + source_ref: "src/vid_s3_virge.c:3746, 3936" + + - name: "S3 ViRGE/DX BIOS" + path: "roms/86c375_1.bin" + required: false + note: "S3 ViRGE/DX (86C375) video BIOS." + source_ref: "src/vid_s3_virge.c:3836, 3941" + + - name: "ATI Mach64 GX BIOS" + path: "roms/mach64gx/bios.bin" + required: false + note: > + ATI Graphics Pro Turbo (Mach64 GX) video BIOS. Also used by the + Cirrus Logic CL-GD5429 init path (likely a copy/paste in the source). + source_ref: "src/vid_ati_mach64.c:2341, src/vid_cirrus.c:2324" + + - name: "Cirrus Logic CL-GD5429 BIOS" + path: "roms/5429.vbi" + required: false + note: "Cirrus Logic CL-GD5429 video BIOS." + source_ref: "src/vid_cl5429.c:847, 872" + + - name: "Trident TGUI9440 BIOS" + path: "roms/9440.vbi" + required: false + note: "Trident TGUI9440 video BIOS." + source_ref: "src/vid_tgui9440.c:495, 517" + + - name: "Paradise WD90C11 BIOS" + path: "roms/megapc/41651-bios lo.u18" + required: false + note: > + Paradise WD90C11 video BIOS for MegaPC. Uses the MegaPC BIOS ROMs + (same files as the MegaPC machine BIOS). + source_ref: "src/vid_paradise.c:348-358" + + - name: "nVidia RIVA 128 BIOS" + path: "roms/riva128.bin" + required: false + note: "nVidia RIVA 128 video BIOS (64 KB). Marked experimental." + source_ref: "src/vid_nv_riva128.c:1096, 1152" + + - name: "nVidia RIVA TNT BIOS" + path: "roms/rivatnt.bin" + required: false + note: "nVidia RIVA TNT video BIOS (64 KB). Marked experimental." + source_ref: "src/vid_nv_rivatnt.c:1126, 1182" + + # ======================================================== + # SOUND CARD ROMs + # ======================================================== + - name: "Sound Blaster AWE32 ROM" + path: "roms/awe32.raw" + required: false + note: > + Creative Sound Blaster AWE32 sample ROM for EMU8000 synth chip. + Required when SB AWE32 sound card is selected. + source_ref: "src/sound_emu8k.c:679, src/sound_sb.c:479" + + # ======================================================== + # NETWORK CARD ROMs + # ======================================================== + - name: "Realtek RTL8029AS boot ROM" + path: "roms/rtl8029as.rom" + required: false + note: "Realtek RTL8029AS PCI Ethernet boot ROM (32 KB)." + source_ref: "src/ne2000.c:1694" + + - name: "NE2000 boot ROM" + path: "roms/ne2000.rom" + required: false + note: "NE2000 ISA Ethernet boot ROM (64 KB)." + source_ref: "src/ne2000.c:1701" + +notes: + rom_structure: > + All ROM files are loaded relative to the RetroArch system directory. + Machine BIOS ROMs go in roms// subdirectories. + Video card ROMs go directly in roms/ (or roms// for some). + Which ROMs are needed depends on the selected machine model and video card. + minimum_requirement: > + At minimum, the mda.rom font and one machine BIOS set are required. + The video card ROM for the selected GPU is also needed unless the machine + has built-in video (PCjr, Tandy, Amstrad, Acer 386SX, PS/1). + libretro_version: > + Based on PCem v10.1. The libretro port is quite old and may not match + current standalone PCem/86Box ROM paths.