feat: profile five more emulators and refine seven

This commit is contained in:
Abdessamad Derraz committed 2026-08-11 18:54:15 +02:00
1 parent 9af958e9f8
commit f3d912f3d3
12 files changed
+862

No files matched your search

+2
View File
@@ -36,6 +36,7 @@ notes: |
files:
- name: "sl31253.bin"
system: fairchild-channelf
priority: 2
required: false
hle_fallback: true
note: "Channel F PSU1 ROM (original). Fallback if sl90025.bin is missing."
@@ -50,6 +51,7 @@ files:
- name: "sl90025.bin"
system: fairchild-channelf
priority: 1
required: false
hle_fallback: true
note: "Channel F II PSU1 ROM. Tried first, preferred over sl31253.bin."
+203
View File
@@ -0,0 +1,203 @@
emulator: KEmulator nnmod
type: standalone
core_classification: community_fork
source: "https://github.com/shinovon/KEmulator"
upstream: "https://github.com/shinovon/KEmulator"
author: "shinovon"
profiled_date: "2026-08-11"
source_commit: "4230a6af24e8e5d60e00e760750cfd9f195f0bd5"
core_version: "2.21.5"
display_name: "Mobile - J2ME (KEmulator nnmod)"
cores:
- kemulator
- KEMULATOR
systems:
- j2me
mode: standalone
verification: existence
notes: |
MIDP/CLDC runtime running on the host JVM, developed from decompiled KEmulator
1.0.3. MIDlet bytecode executes against the javax.microedition classes compiled
into the application, so no device firmware is read.
Yamaha SMAF audio is the one thing the user supplies. MMFPlayer.initialize()
probes the directory holding the executable for a hardware emulator library in
a fixed order, MA-7 then MA-5 then MA-3, and keeps the first complete set. MA-3
ships with the emulator, so .mmf playback works on a stock install and the MA-5
and MA-7 libraries raise the chip generation: MA-5 adds 32 PCM channels, MA-7
adds DSP effects and is the only mode where supportsAudioTracks() is true,
which the MEXA phrase audio track API reads to size its track array.
ref: src/media/emulator/media/mmf/MMFPlayer.java:11-40,
src/media/emulator/media/mmf/MaDll.java:862-864,
src/media/emulator/media/mmf/PhrasePlayerImpl.java:20-26
The probe is 32-bit Windows only. isX64() returns before any file is touched,
so the x64 build loads none of these. The MIDI-through-MA path passes
notMmf=true, which skips the MA-7 branch and leaves MA-5 or MA-3.
ref: src/media/emulator/media/mmf/MMFPlayer.java:15-17,
src/media/javax/microedition/media/PlayerImpl.java:206-211,
win/src/main/emulator/EmulatorPlatform.java:9-11,
x64/src/main/emulator/EmulatorPlatform.java:9-11
Every caller degrades when the probe fails. PlayerImpl.midi() breaks out of the
ma block and falls back to MidiSystem; PlayerImpl.mmf(), SmafPlayer, AudioClip
and PhrasePlayerImpl each throw and lose SMAF audio alone. Only the file's
existence is tested, then the path goes to Native.load, so the code reads no
size and no hash.
ref: src/media/javax/microedition/media/PlayerImpl.java:212-249,
src/oem/com/jblend/media/smaf/SmafPlayer.java:91,
src/oem/com/samsung/util/AudioClip.java:61,
src/media/emulator/media/mmf/MaDll.java:181-190
The 3D and Mascot Capsule backends default to their OpenGL implementations, so
the two shipped native libraries below load only when the user selects the
SWERVE M3G engine or the Mascot Capsule DLL engine.
ref: src/main/emulator/Settings.java:20-21,
win/src/main/emulator/EmulatorPlatform.java:41-80
Two settings hold user-chosen paths with no fixed filename. SoundfontPath takes
any .sf2 or .dls and is empty by default, leaving useCustomSoundfont() false and
the JVM default soundbank in place. VlcDir points at a VLC installation that
vlcj scans for libvlc.
ref: src/media/emulator/media/EmulatorMIDI.java:26-36,
src/main/emulator/ui/swt/Property.java:1864-1905
files:
- name: M7_EmuSmw7.dll
system: j2me
required: false
validation: [existence]
description: "Yamaha MA-7 SMAF sequencer library"
note: "First branch of the MMFPlayer probe, taken only when M7_EmuHw.dll sits beside it and the caller did not pass notMmf. Selects MODE_MA7, the only mode carrying phrase audio tracks. Distributed with the SoftBank MEXA emulator."
source_ref: "src/media/emulator/media/mmf/MMFPlayer.java:19-23, src/media/emulator/media/mmf/MaDll.java:186"
- name: M7_EmuHw.dll
system: j2me
required: false
validation: [existence]
description: "Yamaha MA-7 SMAF hardware layer"
note: "Tested for existence next to M7_EmuSmw7.dll; the MA-7 branch is skipped unless both are present. Loaded by the Windows loader as a dependency of the sequencer library, which is the path handed to Native.load."
source_ref: "src/media/emulator/media/mmf/MMFPlayer.java:21"
- name: M5_EmuSmw5.dll
system: j2me
required: false
validation: [existence]
description: "Yamaha MA-5 SMAF sequencer library"
note: "Second branch of the probe, taken when the MA-7 pair is absent or the caller passed notMmf and M5_EmuHw.dll sits beside it. Selects MODE_MA5, whose init walks a 1024-byte allocation to an address ending in 0x81 before calling MaSound_EmuInitialize."
source_ref: "src/media/emulator/media/mmf/MMFPlayer.java:24-27, src/media/emulator/media/mmf/MaDll.java:184, src/media/emulator/media/mmf/MaDll.java:231-241"
- name: M5_EmuHw.dll
system: j2me
required: false
validation: [existence]
description: "Yamaha MA-5 SMAF hardware layer"
note: "Tested for existence next to M5_EmuSmw5.dll; the MA-5 branch is skipped unless both are present."
source_ref: "src/media/emulator/media/mmf/MMFPlayer.java:25"
- name: ma3smwemu.dll
system: j2me
required: false
bundled: true
size: 724992
md5: c1625f6c2fbf66e2e838c6bc74ffe641
sha1: b566d111ccd3e303d21ab5c4cd1519dc238a4fce
validation: [existence]
description: "Yamaha MA-3 SMAF emulator"
note: "Last branch of the probe and the only one satisfied by a single file. Selects MODE_MA3, whose init calls MaSound_Initialize directly. Present in a stock install, so .mmf playback needs nothing from the user on the 32-bit Windows build."
source_ref: "src/media/emulator/media/mmf/MMFPlayer.java:28-30, src/media/emulator/media/mmf/MaDll.java:182, src/media/emulator/media/mmf/MaDll.java:227-230"
- name: jsr184client.dll
system: j2me
required: false
bundled: true
size: 405504
md5: 9fcb2bd1f36d1e8d94f8e4e2650914c9
sha1: ed9a60d56ddcc91514b033c16f2062638c3e6eeb
validation: [existence]
description: "SWERVE M3G native engine"
note: "Loaded from the executable's directory by the static initializers of the SWERVE javax.microedition.m3g classes, with a System.loadLibrary fallback on the library path. Reached only when the 3D engine setting is SWERVE, the LWJGL engine being the default."
source_ref: "m3g_swerve/src/javax/microedition/m3g/Graphics3D.java:275, m3g_swerve/src/javax/microedition/m3g/Loader.java:378, src/main/emulator/i.java:6-14"
- name: java_micro3d_v3_32.dll
system: j2me
required: false
bundled: true
size: 27648
md5: 60045cd91e30880c731c9fea8c712093
sha1: b1d6aef4559bb46af27eebda50fe06e0de659966
validation: [existence]
description: "Mascot Capsule V3 JNI bridge"
note: "System.loadLibrary from the static initializers of the com.mascotcapsule.micro3d.v3 classes, reached only when the Mascot Capsule engine setting is DLL. Its import table names micro3d_v3_32.dll."
source_ref: "micro3d_dll/src/com/mascotcapsule/micro3d/v3/Figure.java:162-165, micro3d_dll/src/com/mascotcapsule/micro3d/v3/Graphics3D.java:279"
- name: micro3d_v3_32.dll
system: j2me
required: false
bundled: true
size: 475136
md5: d5ab04740801208b92fa3de7252a75d8
sha1: f59e0d445aafe2503c6e5249ca07df4b89626f8f
validation: [existence]
description: "Mascot Capsule V3 renderer"
note: "Pulled in by the Windows loader when java_micro3d_v3_32.dll loads; no Java code names it."
source_ref: "micro3d_dll/src/com/mascotcapsule/micro3d/v3/Figure.java:163"
- name: amrdecoder.dll
aliases:
- amrdecoder_64.dll
- amrdecoder_arm64.dll
- libamrdecoder.so
- libamrdecoder_64.so
- libamrdecoder_arm32.so
- libamrdecoder_arm64.so
- libamrdecoder.dylib
- libamrdecoder_arm64.dylib
system: j2me
required: false
bundled: true
validation: [existence]
description: "opencore-amr decoder for AMR audio"
note: "System.load on a name composed from os.name and os.arch, resolved against the executable's directory. The 32-bit Windows build asks for amrdecoder.dll unconditionally. A load failure is printed and swallowed."
source_ref: "win/src/main/emulator/EmulatorPlatform.java:91-97, x64/src/main/emulator/EmulatorPlatform.java:173-212"
- name: s60snr.ttf
system: j2me
required: false
bundled: true
category: game_data
validation: [existence]
description: "Series 60 typeface"
note: "Read from /res inside the jar the first time a FontAWT is built for the Series 60 face, then cached and derived per style and size."
source_ref: "src/main/emulator/graphics2D/awt/FontAWT.java:20-28"
- name: Nokia.ttf
system: j2me
required: false
bundled: true
category: game_data
validation: [existence]
description: "Nokia typeface"
note: "Read from /res inside the jar the first time a FontAWT is built for the Nokia face."
source_ref: "src/main/emulator/graphics2D/awt/FontAWT.java:29-37"
- name: presets.xml
system: j2me
required: false
bundled: true
category: game_data
validation: [existence]
description: "Device presets: screen sizes, key maps, platform identities"
note: "Devices.load reads the PresetsPath setting, /res/presets.xml by default, as a jar resource and falls back to a disk read when the resource is absent, which is how a user-supplied preset file is picked up."
source_ref: "src/main/emulator/Settings.java:133, src/main/emulator/Devices.java:25-50, src/main/emulator/Emulator.java:641"
- name: en.txt
system: j2me
required: false
bundled: true
category: game_data
validation: [existence]
description: "UI strings, English"
note: "Read from the lang directory next to the executable at startup and kept as the fallback bundle; the language setting names a sibling in the same directory. Every lookup that misses both bundles falls back to the string built into the call site."
source_ref: "src/main/emulator/UILocale.java:11-48"
+272
View File
@@ -0,0 +1,272 @@
emulator: Kenji-NX
type: standalone
core_classification: community_fork
source: "https://git.ryujinx.app/projects/Kenji-NX"
source_branch: libryujinx_bionic
upstream: "https://git.ryujinx.app/projects/Ryubing"
profiled_date: "2026-08-11"
source_commit: "8d7d8f344cb01257c5bc59bb02a74bb89ab9bb5f"
core_version: "2.1.0-pr.2"
display_name: "Nintendo - Switch (Kenji-NX)"
cores:
- kenji-nx
- kenjinx
- "KENJI-NX"
systems:
- nintendo-switch
mode: standalone
notes: |
Nintendo Switch emulator in C#, a fork of the Ryujinx line maintained by
KeatonTheBot. Two builds come out of one repository: the desktop Avalonia
front end on master, and the Android app on libryujinx_bionic, which carries
the whole desktop tree plus src/KenjinxAndroid and src/LibKenjinx. That branch
is the one read here, since master has no Android code at all. The Android
package is org.kenjinx.android and ES-DE launches it with the action
org.kenjinx.android.LAUNCH_GAME and the ROM in EXTRA_bootPath.
ref: README.md:15-24, src/KenjinxAndroid/app/build.gradle:11-15,
src/KenjinxAndroid/app/src/main/AndroidManifest.xml:8,69
Every external file hangs off one data root. AppDataManager.Initialize takes a
base path, keeps a portable directory next to the binary when one exists and
otherwise falls back to %APPDATA%/Ryujinx, the default directory name being
still Ryujinx. Android hands it getExternalFilesDir(null), which differs from
the user profile path and already exists, so the launch mode is Custom and the
~/.switch fallback that ReloadKeySet consults in UserProfile mode never fires
there. games, profiles and system are created under the root on every start.
ref: src/Ryujinx.Common/Configuration/AppDataManager.cs:11-17,47,50-104,223-230,
src/LibKenjinx/LibKenjinx.cs:54-95,
src/KenjinxAndroid/app/src/main/java/org/kenjinx/android/MainActivity.kt:264-298
Firmware is installed rather than placed. ContentManager takes a directory, a
zip or an xci with an update partition, verifies each NCA against the key set
and refuses a package carrying unrelated archives, then registers the contents
under bis/system/Contents/registered. Android passes a file descriptor instead
of a path but reaches the same two methods. Nothing gates the launch on it:
homebrew NRO goes through ProcessLoader without touching the key set, and the
failure is deferred to the first service that needs a system archive.
ref: src/Ryujinx.HLE/FileSystem/ContentManager.cs:431-498,675-749,893-903,
src/LibKenjinx/Android/JniExportedMethods.cs:459-495,
src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs:189-205
Two read paths belong to the desktop build alone, because the Android build
drops LibKenjinx.Native.cs and wires those subsystems differently.
SDL_GameControllerDB.txt is read by SDL3Driver, whose only callers are the
SDL3 audio, gamepad and keyboard drivers; on Android JnaDeviceInitialize
builds an OpenALHardwareDeviceDriver and InitializeInput builds a
VirtualGamepadDriver, so SDL3 never initialises. Amiibo diverge the same way:
the desktop scan decrypts a dump through AmiiboBinReader and therefore needs
key_retail.bin, while the Android entry buffers the raw tag in
KenjinxAmiiboShim and INfp reads the figure id straight out of offset 0x1DC.
ref: src/LibKenjinx/LibKenjinx.csproj:11-13,
src/LibKenjinx/Android/JniExportedMethods.cs:347-348,1046-1060,
src/LibKenjinx/LibKenjinx.Input.cs:28-39,
src/Ryujinx.HLE/Kenjinx/AmiiboBridge.cs:10-44,
src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/KenjinxAmiiboShim.cs:15-41,
src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/INfp.cs:149-166,257-279
Config.json, Profiles.json, updates.json, dlc.json, mods.json, metadata.json
and system/amiibo/<amiibo id>.json are written by the emulator itself, and
system/amiibo/Amiibo.json is a catalogue the desktop window downloads from
AmiiboAPI and rewrites. None of them is user supplied. The Android app keeps
its own settings in Android shared preferences.
ref: src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/VirtualAmiibo.cs:198-243,
src/Ryujinx/UI/ViewModels/AmiiboWindowViewModel.cs:61-63,
src/Ryujinx.Common/ReleaseInformation.cs:14-19,
src/KenjinxAndroid/app/src/main/java/org/kenjinx/android/viewmodels/QuickSettings.kt:92
Distribution moved off GitHub: Kenji-NX/Android-Releases returns HTTP 451
under the Nintendo notice of 2026-02-12, and both the source and the builds
are served by the Forgejo instance, which is where ES-DE points as well.
ref: https://github.com/github/dmca/blob/master/2026/02/2026-02-12-nintendo.md,
tmp/es-de/ANDROID.md:470-474
files:
- name: prod.keys
required: true
path: system/prod.keys
description: "Production key set for NCA decryption"
note: >-
Read from the system directory under the data root, and additionally from
~/.switch when the launch mode is UserProfile, which Android never is. The
four key files are looked up independently, so each is optional to the
reader, but an empty header key stops NCA header decryption outright and
no encrypted content loads. The desktop importer accepts a .keys file or a
zip of them and rejects any line that is not "name = value" in lowercase
hexadecimal; the Android importer accepts the name prod.keys only and
copies it straight into the system directory.
source_ref: "src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs:231-266, src/Ryujinx.HLE/FileSystem/ContentManager.cs:500-537,681-684,1082-1118, src/KenjinxAndroid/app/src/main/java/org/kenjinx/android/viewmodels/SettingsViewModel.kt:254-301"
- name: title.keys
required: false
path: system/title.keys
description: "Per-title key set mapping rights id to title key"
note: >-
Read beside prod.keys and passed to the same key file reader. Tickets
found in a container are imported into the key set at load time, so a
title shipping its own ticket does not need an entry here. The importer
validates each line as two 32-character hexadecimal fields.
source_ref: "src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs:241,250-253,266,269-297, src/Ryujinx.HLE/FileSystem/ContentManager.cs:1086,1100-1102"
- name: console.keys
required: false
path: system/console.keys
description: "Console-unique key set"
note: >-
Read beside prod.keys and passed to the same key file reader as the
console-specific set. Validated as "name = value" lines like prod.keys.
source_ref: "src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs:242,255-258,266, src/Ryujinx.HLE/FileSystem/ContentManager.cs:1103-1105"
- name: dev.keys
required: false
path: system/dev.keys
description: "Development-unit key set"
note: >-
Read beside prod.keys and handed to the key file reader as the development
set, alongside the production one rather than instead of it. Validated as
"name = value" lines.
source_ref: "src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs:243,260-263,266, src/Ryujinx.HLE/FileSystem/ContentManager.cs:1104-1105"
- name: "<firmware>.zip"
aliases: ["<firmware>.xci"]
required: false
storage: large_file
description: "Switch system firmware package"
note: >-
Chosen through a file picker and read whole at install time, by path on
desktop and by file descriptor on Android. A zip is walked entry by entry
and an xci is opened at its update partition; a directory of NCAs is also
accepted on desktop. Each NCA is decrypted with the key set to read its
title id and content type, the package is rejected when it carries
archives that belong to no system title, and the version string comes out
of title 0100000000000809. The NCAs are then registered under
bis/system/Contents/registered and read from there, never as loose files.
No digest of the package itself is compared against anything.
source_ref: "src/Ryujinx.HLE/FileSystem/ContentManager.cs:431-498,675-749,751-1045, src/LibKenjinx/Android/JniExportedMethods.cs:459-495, src/KenjinxAndroid/app/src/main/java/org/kenjinx/android/viewmodels/SettingsViewModel.kt:308-364"
- name: key_retail.bin
required: false
path: system/key_retail.bin
size: 160
validation: [size]
description: "Amiibo master keys used to decrypt tag dumps"
note: >-
Read from the system directory under the data root and split into two
80-byte master keys, the data key then the tag key, each being a 16-byte
HMAC key, a 14-byte type string, a reserved byte, a magic size byte, 16
magic bytes and a 32-byte XOR pad. Any total other than 160 bytes throws
and the scan fails. The desktop window hides its amiibo-from-dump entry
when the file is absent. Only the desktop scan path decrypts a dump; the
Android slots hand the raw bytes to the tag buffer instead.
source_ref: "src/Ryujinx.HLE/HOS/Services/Nfc/AmiiboDecryption/AmiiboBinReader.cs:22-44,331-336, src/Ryujinx.HLE/HOS/Services/Nfc/AmiiboDecryption/AmiiboDecryptor.cs:10-16, src/Ryujinx.HLE/HOS/Services/Nfc/AmiiboDecryption/AmiiboMasterKey.cs:15-39, src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs:385,2243"
- name: SDL_GameControllerDB.txt
required: false
path: SDL_GameControllerDB.txt
category: game_data
description: "SDL gamepad mapping database"
note: >-
Read from the data root and handed to SDL_AddGamepadMappingsFromFile when
the SDL3 driver starts, which happens on the desktop build only. Guarded
by an existence test, and SDL carries its own built-in mappings, so a
missing file costs only the extra pad definitions.
source_ref: "src/Ryujinx.SDL3.Common/SDL3Driver.cs:100-105, src/Ryujinx.Input.SDL3/SDL3GamepadDriver.cs:53, src/Ryujinx.Audio.Backends.SDL3/SDL3HardwareDeviceDriver.cs:36, src/Ryujinx/UI/Windows/MainWindow.axaml.cs:110"
- name: "<amiibo>.bin"
required: false
unsourceable: "dump of one physical amiibo figure, tied to the tag it was read from and never distributed generically"
description: "Amiibo tag dump"
note: >-
Read whole from wherever the picker points. The desktop path decrypts it
with key_retail.bin, accepts 532 bytes by padding to the 540 of 135 pages
of 4, and writes the tag back when a game edits its application area. The
Android slots read the bytes through the content resolver and buffer them
for the NFP service, which takes the figure id from offset 0x1DC without
decrypting anything.
source_ref: "src/Ryujinx.HLE/HOS/Horizon.cs:355-363, src/Ryujinx.HLE/HOS/Services/Nfc/AmiiboDecryption/AmiiboBinReader.cs:22-44,151-283, src/LibKenjinx/LibKenjinx.cs:700-729, src/KenjinxAndroid/app/src/main/java/org/kenjinx/android/views/GameViews.kt:328-349"
- name: "<CaCertificateId>.der"
required: false
path: system/ssl/
unsourceable: "replacement certificate the user picks for one certificate authority, with no canonical artefact behind the name"
description: "Override for one built-in root certificate"
note: >-
Looked up under system/ssl by the enumeration name of the certificate
being read out of the firmware certificate store, and substituted for the
store entry when the file exists. The store itself comes from title
0100000000000800, so the absence of an override changes nothing.
source_ref: "src/Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs:25,91-112,114-180"
- name: "<driver>.zip"
required: false
path: drivers/
unsourceable: "third-party Vulkan driver built for one GPU family, not an emulator artefact"
description: "Replacement Vulkan driver for the Android build"
note: >-
Imported through a picker filtered on application/zip and unpacked into a
folder named after the archive under drivers in the data root. A folder is
offered only when it holds a meta.json naming a libraryName that resolves
to a file present beside it; the chosen path is remembered in a file named
selected. At renderer start the folder is copied into internal storage,
because the external filesystem cannot carry an executable mapping, loaded
through the rootless Adreno driver loader, and the resulting handle is
passed to the Vulkan loader. An empty selection uses the system loader.
source_ref: "src/KenjinxAndroid/app/src/main/java/org/kenjinx/android/viewmodels/VulkanDriverViewModel.kt:13-167, src/KenjinxAndroid/app/src/main/java/org/kenjinx/android/viewmodels/MainViewModel.kt:202-243, src/LibKenjinx/Android/JniExportedMethods.cs:532-555, src/LibKenjinx/VulkanLoader.cs:27-29"
# System archives read out of the installed firmware, never as loose files.
firmware_titles:
- id: "0100000000000809"
name: "System version"
content: ["file"]
required: false
note: "Version string reported for the installed firmware, and the value the installer returns after verifying a package."
source_ref: "src/Ryujinx.HLE/FileSystem/ContentManager.cs:32,1047-1080"
- id: "010000000000080E"
name: "TimeZoneBinary"
content: ["binaryList.txt", "zoneinfo/"]
required: false
note: "Location list and zone rules. Without it the location cache holds UTC alone and the time zone manager is marked initialised without rules."
source_ref: "src/Ryujinx.HLE/HOS/Services/Time/TimeZone/TimeZoneContentManager.cs:24,62-86,88-119"
- id: "0100000000000810"
name: "FontNintendoExtended"
content: ["nintendo_ext_003.bfttf"]
required: false
note: "Shared font, XOR-decoded from BFTTF into the shared memory the pl:u service exposes."
source_ref: "src/Ryujinx.HLE/FileSystem/ContentManager.cs:73,93, src/Ryujinx.HLE/HOS/Services/Sdb/Pl/SharedFontManager.cs:63-125,159-180"
- id: "0100000000000811"
name: "FontStandard"
content: ["nintendo_udsg-r_std_003.bfttf"]
required: false
note: "Shared font. A missing font title throws InvalidSystemResourceException, so a title that asks for shared fonts stops there."
source_ref: "src/Ryujinx.HLE/FileSystem/ContentManager.cs:68,88, src/Ryujinx.HLE/HOS/Services/Sdb/Pl/SharedFontManager.cs:63-125"
- id: "0100000000000812"
name: "FontKorean"
content: ["nintendo_udsg-r_ko_003.bfttf"]
required: false
note: "Shared font."
source_ref: "src/Ryujinx.HLE/FileSystem/ContentManager.cs:71,91"
- id: "0100000000000813"
name: "FontChineseTraditional"
content: ["nintendo_udjxh-db_zh-tw_003.bfttf"]
required: false
note: "Shared font."
source_ref: "src/Ryujinx.HLE/FileSystem/ContentManager.cs:70,92"
- id: "0100000000000814"
name: "FontChineseSimplified"
content: ["nintendo_udsg-r_org_zh-cn_003.bfttf", "nintendo_udsg-r_ext_zh-cn_003.bfttf"]
required: false
note: "Shared fonts. One title carries both the base and the extended simplified faces."
source_ref: "src/Ryujinx.HLE/FileSystem/ContentManager.cs:69-70,89-90"
- id: "0100000000000800"
name: "Certificate store"
content: ["ssl_TrustedCerts.bdf", "ssl_TrustedCerts.tcf"]
required: false
note: "Trusted root certificates for the ssl service, the .tcf name being the one used up to firmware 2.3.0. Absent, the service logs and serves nothing."
source_ref: "src/Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs:25,114-180"
+3
View File
@@ -48,6 +48,7 @@ files:
- name: "saturn_bios.bin"
path: "kronos/saturn_bios.bin"
system: sega-saturn
priority: 1
required: true
size: 524288
validation: [size]
@@ -60,6 +61,7 @@ files:
- name: "sega_101.bin"
system: sega-saturn
region: [japan]
priority: 2
required: false
size: 524288
validation: [size]
@@ -72,6 +74,7 @@ files:
- name: "mpr-17933.bin"
system: sega-saturn
region: [north-america, europe]
priority: 3
required: false
size: 524288
validation: [size]
+98
View File
@@ -0,0 +1,98 @@
emulator: Linkboy
type: standalone
core_classification: embedded_hle
source: "https://play.google.com/store/apps/details?id=com.pixelrespawn.linkboy"
upstream: closed-source
author: "Pixel Respawn LLC"
profiled_date: "2026-08-11"
core_version: "3.11.0"
display_name: "Nintendo - Game Boy / Color / Advance (Linkboy)"
mode: standalone
cores:
- "linkboy"
- "Linkboy"
- "LINKBOY"
systems:
- nintendo-gb
- nintendo-gbc
- nintendo-gba
- nintendo-sgb
notes: |
Android package com.pixelrespawn.linkboy, closed source, free on Google Play with a
paid unlock, reached by ES-DE through its LINKBOY find rule. Two Play distribution
builds are read here, 3.11.0 (versionCode 86, minSdk 26, targetSdk 36, xapk sha256
83b92276d28d71e491ebcbec3fa85cef42ef49d8ee0c6fd1bbe0045bc118f866) and 1.4.2
(versionCode 12), both carrying the app signing certificate sha256
feb643cfdd9c49f58eb325fde3d869cefcf59e45dfadb8e540beca35a7b1c28e and the Play
distribution source stamp. Emulation lives in liblinkboy.so behind a JNI bridge;
addresses below are armeabi-v7a of 3.11.0 and class names are those of its
obfuscated dex.
Four subsystems are declared: GBA, GBC, GB and SGB (ve0.java:16-21). An SGB
cartridge runs in GB mode when prefer-sgb is off (wo0.java:62, c51.java:183-185).
The three firmware images are the only files the emulator reads that it does not
write itself. One table holds their names, sizes and md5 sums (cr.java:8), and the
firmware screen reports each as present, mismatched or absent by comparing the
size and then the md5 of the whole file (br.java:24-88, yz1.java:39, hr1.java:110).
Saves, cheats, thumbnails, keymaps and the ips, ups and bps patches picked up next
to a ROM are written or supplied per game, not fixed files.
An image is read only while the use-bios preference is on, which is off until set
(wo0.java:63, a75.java:165-173, c51.java:186,268, w41.java:243). The loader appends
firmware/ and the name to the directory handed to setDataDir, the app's external
files directory (c51.java:69, hg3.java:32-38), and opens the result with fopen "rb".
A file whose length is not exactly the expected size is closed and treated as
absent, as is a short read; on success the loader returns the crc32 of the bytes
(liblinkboy.so 0x1c870-0x1ca10, crc32 at 0x1c4cc).
A missing image stops nothing. The GBA path copies a replacement bios compiled into
the library over the 16 KB region and zero fills the remainder (0x109de8-0x109e64).
The GB and GBC path hands the reset routine a boot rom present flag, false when no
image was loaded, and the machine starts from its post boot state
(0x14f534-0x14f5b8, 0x14f638-0x14f654).
Save states record the crc32 of the image they were made under. Loading a state
whose value differs from the running machine re-reads the file and refuses the state
when the crc32 still disagrees (0x10aa40-0x10aa98, 0x14fe00-0x14fe64).
files:
- name: gba_bios.bin
path: firmware/gba_bios.bin
system: nintendo-gba
required: false
hle_fallback: true
size: 16384
md5: a860e8c0b6d573d191e4ec7db1b1e4f6
validation: [size, md5]
config_key: "use-bios"
description: "Game Boy Advance BIOS"
note: "Read into the 16 KB bios region when use-bios is on. Absent, mismatched in size or short, the region is filled with a replacement bios compiled into the library and zero padded."
source_ref: "Linkboy 3.11.0 cr.java:8, br.java:24-88, liblinkboy.so 0x109de8-0x109e64 (size argument 0x4000), loader 0x1c870-0x1ca10"
- name: gbc_bios.bin
path: firmware/gbc_bios.bin
system: nintendo-gbc
required: false
hle_fallback: true
size: 2304
md5: dbfce9db9deaa2567f6a84fde55f9680
validation: [size, md5]
config_key: "use-bios"
description: "Game Boy Color boot ROM"
note: "Read when use-bios is on and the machine is a Game Boy Color. Without it the reset routine receives a false boot rom flag and the machine starts from its post boot state."
source_ref: "Linkboy 3.11.0 cr.java:8, br.java:24-88, liblinkboy.so 0x14f5a0-0x14f5b0 (size argument 0x900), 0x14f638-0x14f654, loader 0x1c870-0x1ca10"
- name: gb_bios.bin
path: firmware/gb_bios.bin
system: nintendo-gb
required: false
hle_fallback: true
size: 256
md5: 32fbbd84168d3482956eb3c5051637f5
validation: [size, md5]
config_key: "use-bios"
description: "Game Boy boot ROM"
note: "Read when use-bios is on and the machine is a Game Boy. Without it the reset routine receives a false boot rom flag and the machine starts from its post boot state."
source_ref: "Linkboy 3.11.0 cr.java:8, br.java:24-88, liblinkboy.so 0x14f58c-0x14f59c (size argument 0x100), 0x14f638-0x14f654, loader 0x1c870-0x1ca10"
+105
View File
@@ -0,0 +1,105 @@
emulator: "Lynx.emu"
type: standalone
core_classification: community_fork
source: "https://github.com/Rakashazi/emu-ex-plus-alpha"
upstream: "https://mednafen.github.io/"
profiled_date: "2026-08-11"
source_commit: "1c12fac5ce49badaadff2e2f210dcc30b89f4943"
core_version: "1.5.85"
display_name: "Atari - Lynx (Lynx.emu)"
mode: standalone
cores:
- "lynx-emu"
- "Lynx.emu"
- "LYNX-EMU"
systems:
- atari-lynx
notes: |
Member of the EX Emulator series by Robert Broglia, which targets Android and
Linux (README.md:3-4,12-13) and keeps iOS and Pandora build shortcuts in the
tree (Lynx.emu/ios.mk, Lynx.emu/pandora.mk). Published as
com.explusalpha.LynxEmu (Lynx.emu/metadata/conf.mk:2,6,7) and reached by ES-DE
through its LYNX-EMU find rule. Mednafen's Lynx module, itself derived from
Handy by K. Wilkins, is vendored under Lynx.emu/src/lynx
(Lynx.emu/metadata/conf.mk:8, Lynx.emu/src/main/AppMeta.cc:26) and driven by
the app's own video, audio and input layers. The vendored copy declares
Mednafen 1.32.0-UNSTABLE
(EmuFramework/include/shared/mednafen/mednafen-config.h:167); the upstream
comparisons below are against the 1.32.1 release. Content is read from .lnx,
.lyx and .o files (Lynx.emu/metadata/conf.mk:5,
Lynx.emu/src/main/AppMeta.cc:30), and the module also takes a headerless image
of 128, 256 or 512 KB, a filetype upstream rejects
(Lynx.emu/src/lynx/system.cpp:90-91,112; mednafen src/lynx/system.cpp:86-93).
The boot ROM is the one file the user supplies and it carries no name of its
own. The picker takes any name ending in .img and stores the chosen URI in
biosPath (Lynx.emu/src/main/EmuMenuViews.cc:32-50,
Lynx.emu/src/main/system.ccm:70, Lynx.emu/src/main/options.cc:33,55).
MDFN_MakeFName returns that URI for MDFNMKF_FIRMWARE and drops the
lynxboot.img name the module hands it, the name upstream resolves in its
firmware directory (Lynx.emu/src/main/options.cc:150-154,
Lynx.emu/src/lynx/system.cpp:103; mednafen src/lynx/system.cpp:101). CRom
opens the file only when the path is not empty and throws unless it is exactly
512 bytes (Lynx.emu/src/lynx/rom.cpp:75-95). Upstream has neither test: it
opens whatever the firmware directory yields and takes 512 bytes or more
(mednafen src/lynx/rom.cpp:55-74). A path that is set but cannot be opened, or
that is the wrong length, aborts the content load rather than falling back
(EmuFramework/src/shared/mednafen-emuex/StreamImpl.cc:53-63,
Lynx.emu/src/lynx/system.cpp:337-342).
With no path mValid stays false (Lynx.emu/src/lynx/rom.h:77) and Reset builds a
stub boot ROM in place: 512 bytes of 0x88, the reset vectors, and STA $FD97 at
$FE00, $FE19, $FE4A and $FF80 (Lynx.emu/src/lynx/rom.cpp:55-72,
Lynx.emu/src/lynx/rom.h:50, Lynx.emu/src/lynx/system.cpp:241-263). A write to
that register from inside the ROM window dispatches to the four HLE routines
(Lynx.emu/src/lynx/mikie.cpp:1033-1053), which clear RAM, pull the encrypted
loader blocks off the cartridge shifter, run them through lynx_decrypt and jump
to $0200 (Lynx.emu/src/lynx/system.cpp:150-208,
Lynx.emu/src/lynx/lynxdec.cpp:265). Neither the stub nor lynxdec.cpp exists
upstream, where the constructor reaches the throw and Reset carries the
homebrew branch alone (mednafen src/lynx/system.cpp:169-177).
No hash is checked. The module holds no crc32 table, and its only md5 use is
the content hash that names saves and states (Lynx.emu/src/lynx/cart.cpp:
245-264, Lynx.emu/src/lynx/system.cpp:313,319). The custom palette entry
survives in the module table and reaches nothing: Lynx_SetPixelFormat passes an
empty span where upstream Emulate passes espec->CustomPalette
(Lynx.emu/src/lynx/system.cpp:352,555,583; mednafen src/lynx/system.cpp:
267,298), the app calls MDFNGI::Load directly instead of going through the
Mednafen frontend that reads .pal files
(EmuFramework/src/shared/mednafen-emuex/MDFNUtils.hh:133-145,
Lynx.emu/src/main/Main.cc:62-65), and the frame spec is value-initialised so
CustomPalette stays null
(EmuFramework/src/shared/mednafen-emuex/MDFNUtils.hh:153,
EmuFramework/src/shared/mednafen/git.h:399). Cheats answer false against
CheatInfo_Empty (Lynx.emu/src/main/options.cc:126-127,
Lynx.emu/src/lynx/system.cpp:586), no Cheats.cc is in the build
(Lynx.emu/src/CMakeLists.txt:6-21), and the app declares no bundled content,
the framework definition defaulting to an empty span
(EmuFramework/src/AppMeta.cc:40,
EmuFramework/include/emuframework/AppMeta.hh:66-68).
MDFN_MakeFName is called once and only for the firmware, so the module asks for
no save file (Lynx.emu/src/lynx/system.cpp:103). What the app writes is .mca
states (Lynx.emu/src/main/system.ccm:86, Lynx.emu/src/main/Main.cc:47-54) and
LynxEmu.config (Lynx.emu/src/main/AppMeta.cc:27). ui.png, gpOverlay.png and the
shader sources are drawn by the framework from the application bundle
(EmuFramework/include/emuframework/AssetManager.hh:61-65,
EmuFramework/src/AssetManager.cc:58-65,
EmuFramework/src/VideoImageEffect.cc:164-172).
files:
- name: lynxboot.img
system: atari-lynx
required: false
hle_fallback: true
has_builtin: true
size: 512
validation: [size]
description: "Atari Lynx boot ROM"
note: >-
Picked by the user from any path, under any name ending in .img. The length
is the only test and a file of another length aborts the load rather than
falling back.
source_ref: "Lynx.emu/src/lynx/system.cpp:103 (firmware request), Lynx.emu/src/main/options.cc:150-154 (path comes from the picker), Lynx.emu/src/lynx/rom.cpp:75-95 (open and size test), Lynx.emu/src/main/EmuMenuViews.cc:32-50 (picker and extension filter), Lynx.emu/src/lynx/system.cpp:241-263 (stub boot ROM when absent)"
+163
View File
@@ -0,0 +1,163 @@
emulator: M64Plus FZ
type: standalone
core_classification: community_fork
source: "https://github.com/fzurita/mupen64plus-ae"
upstream: "https://github.com/fzurita/mupen64plus-ae"
source_branch: fz-master
profiled_date: "2026-08-11"
source_commit: "f3c381bcc58e4adce897aba323193d3f407e30e3"
core_version: "3.0.335 (beta)"
display_name: "Nintendo - Nintendo 64 (M64Plus FZ)"
cores:
- m64plus-fz
- M64PLUS-FZ
- org.mupen64plusae.v3.fzurita
- org.mupen64plusae.v3.fzurita.pro
- org.mupen64plusae.v3.fzurita.amazon
systems:
- nintendo-64
- nintendo-64dd
mode: standalone
notes: |
Android application forked from Paul Lamb's Mupen64Plus AE and published under
three package ids built from one code line: org.mupen64plusae.v3.fzurita, the
paid .pro and the Amazon .amazon. Those flags gate advertising and Google
Drive backup and nothing else (AppData.java:334-337,
DataPrefsActivity.java:173-182, GamePrefsActivity.java:288-296), so the three
packages want the same files. The repository default branch is a 2017 snapshot
of the parent project; the application is built from fz-master, which carries
mupen64plus-core, the hle, cxd4 and parallel RSP plugins, the GLideN64,
glide64mk2, gln64, rice, angrylion-plus and parallel video plugins, its own
audio, touchscreen and raphnet input plugins, and a miniupnp bridge for
netplay (settings.gradle:1). ES-DE launches it for both n64 and n64dd with an
ACTION_VIEW intent carrying a storage access uri, which the splash screen
forwards to the gallery as a rom path (AndroidManifest.xml:83-96,
ActivityHelper.java:191-198).
Cartridge boot needs no boot ROM. The PIF boot sequence is simulated
(mupen64plus-core device/pif/bootrom_hle.c:48, entered from
device/r4300/interrupt.c:445,496 and main/main.c:1875) and the CIC-NUS-6105
challenge is answered by an algorithm rather than a stored table
(device/pif/n64_cic_nus_6105.c:93). Nothing fills the PIF ROM window from a
file.
Which 64DD IPL is used is not decided by the code. Two settings hold a path
and both end up as the same working file dd_rom.n64: the global one, titled
64DD IPL (J), read when the launched file is itself a disk, and a per game
one, titled 64DD IPL, read when a cartridge is launched with a disk attached
(CoreService.java:599-612, CoreInterface.java:142,229,455-484). The core
offers a callback that would name the image per disk region and the front end
leaves it null (CoreInterface.java:221, main/main.c:1082-1086), so whichever
image sits in the slot is the one loaded. A disk is recognised only when its
system data header matches and carries one of three region words, 0xe848d316
for Japan, 0x2263ee56 for the United States and 0x00000000 for development
(RomHeader.java:180-212); the word sets a country code used for the ROM
database and cheat lookup, never for picking the IPL. Launching a bare disk
with the global slot empty stops before the core starts
(CoreService.java:621-623), and since disk only games still need a cartridge
image the application feeds the m64p_test_rom.v64 asset in its place
(CoreService.java:620,625-630). Disk content inside a .zip or .7z is unpacked to
the working directory first (CoreInterface.java:486-518).
Transfer Pak carts come from four per player path settings copied into the
working directory as playerN_gb_rom.gb and playerN_gb_ram.gb
(CoreService.java:558-568, CoreInterface.java:196-210,430-452). The core
rejects a cart under 32 KiB and an unknown type byte at 0x147
(device/gb/gb_cart.c:994-1008) and fixes no name, size or hash, so neither the
cart nor its save carries an entry here.
Seven data files ship inside the package and are unpacked on first start into
the private files directory, which is also what the core is told is
SharedDataPath (ExtractAssetsOrCleanupTask.java:63-73, SplashActivity.java:402,
AppData.java:411-423, NativeConfigFiles.java:112). mupen64plus.ini is the ROM
database, read by the core (main/rom.c:473-490 from api/frontend.c:106) and by
the gallery (SplashActivity.java:447, ScanRomsFragment.java:195,
GamePrefsActivity.java:244). mupencheat.default is copied over
Profiles/customCheats.txt into mupencheat.txt and parsed in Java
(SplashActivity.java:443, CheatUtils.java:88-93, GamePrefsActivity.java:618);
the core's own cheat.c opens no file. font.ttf is reached by GLideN64 only
after /system/fonts/DroidSans.ttf fails, which it does on current Android
(TextDrawer.cpp:201-233,235-241, NativeConfigFiles.java:292); the core's OSD,
the other upstream reader of that name, is absent from the Android source list
(mupen64plus-core.mk:24-105). RiceVideoLinux.ini holds rice's per ROM settings
(rice Config.cpp:38,933-951), Glide64mk2.ini glide64mk2's
(glide64mk2 Main.cpp:1581-1590), and gln64.conf with gln64rom.conf gln64's
global and per ROM settings (gln64 Config.cpp:245-252,296-300).
Two more assets are read straight out of the package and never unpacked:
m64p_test_rom.v64, and GLideN64.custom.ini, whose per ROM overrides the front
end reads itself and writes into mupen64plus.cfg (AppData.java:416-417,
ConfigFile.java:224-230, NativeConfigFiles.java:224). GLideN64 also asks the
core for GLideN64.custom.ini in SharedDataPath, where it was never placed, so
that native lookup finds nothing (Config_mupenplus.cpp:325-341). The
touchscreen skins, the shader files and the controller, touchscreen and
emulation profile templates are used from the package the same way
(AppData.java:412,421-423).
Optional content with no canonical artifact: hi-res texture packs under
CoreConfig/UserData/mupen64plus/hires_texture, imported from a user archive
(GlobalPrefs.java:472, NativeConfigFiles.java:268, ExtractTexturesFragment.java),
the <ROM>_HIRESTEXTURES.htc and .hts caches the plugin builds from them, read
back for their alpha flag (NativeConfigFiles.java:364-371), customCheats.txt,
custom touchscreen skins and cover art (GlobalPrefs.java:484-490), and
alp_screen.vert with alp_screen.frag, which angrylion-plus opens as working
directory relative paths before falling back to its embedded shaders
(angrylion-plus output/vdac.c:119-165,245-247).
Written rather than obtained: mupen64plus.cfg and the plugin sections in it,
the mempak, eeprom, flashram and sram saves and 64DD disk saves opened with
default content when absent, savestates, screenshots, the texture dump and
cache directories, the GLideN64 shader cache and romInfoCache.cfg
(GlobalPrefs.java:466-484, NativeConfigFiles.java:109-112,276,289).
One file in the tree this build never reads: cxd4's rsp_conf.bin. Its reader
is the zilmar variant of update_conf behind #if !defined(M64P_PLUGIN_API); the
build defines that macro (mupen64plus-rsp-cxd4.mk:8), so the variant compiled
takes its settings from the core config API and ignores the filename it is
handed (mupen64plus-rsp-cxd4 module.c:83-93,239,636-657).
files:
- name: "64DD_IPL_JP.n64"
aliases: ["64DD_IPL_v12_JPN.bin", "64DD_IPL.bin"]
system: nintendo-64dd
required: true
validation: [signature]
description: "64DD IPL ROM (Japanese retail)"
note: >
The image every commercially released disk needs, and the one the global
setting is named for. No name is fixed by the code: the path comes from a
document picker with no extension filter and the file is copied to
dd_rom.n64 before the core sees it. The core reads it whole, then
byteswaps after identifying the first word as one of 0x80270740 (z64),
0x40072780 (n64) or 0x27804007 (v64); any other value logs an invalid IPL
and disables 64DD. Size is not checked and no hash is computed.
source_ref: "app/src/main/java/paulscode/android/mupen64plusae/jni/CoreService.java:599-612,622-624, app/src/main/java/paulscode/android/mupen64plusae/jni/CoreInterface.java:455-484, app/src/main/java/paulscode/android/mupen64plusae/persistent/GlobalPrefs.java:417,715, mupen64plus-core/upstream/src/main/main.c:1080-1145"
- name: "64DD_IPL_US.n64"
aliases: ["64DD_IPL_USA.bin", "IPL_USA.n64"]
system: nintendo-64dd
required: true
validation: [signature]
description: "64DD IPL ROM (American retail)"
note: >
Needed for a disk whose system data carries the US region word
0x2263ee56, which the header reader accepts alongside the Japanese and
development words. The front end holds one IPL path at a time and never
branches on that region, so this image is loaded by putting it in the same
setting. Same load path, format check and absence of size or hash
validation as the Japanese image.
source_ref: "app/src/main/java/paulscode/android/mupen64plusae/util/RomHeader.java:180-212, app/src/main/java/paulscode/android/mupen64plusae/jni/CoreInterface.java:221,455-484, mupen64plus-core/upstream/src/main/main.c:1080-1145"
- name: "64DD_IPL_DEV.n64"
aliases: ["64DD_IPL_DEV.bin", "IPL_DEV.n64"]
system: nintendo-64dd
required: true
validation: [signature]
description: "64DD IPL ROM (development)"
note: >
Needed for a disk whose system data carries the development region word
0x00000000, the third value the header reader accepts before giving up on
a file as a disk. Shares the single IPL setting with the other two images.
Same load path, format check and absence of size or hash validation.
source_ref: "app/src/main/java/paulscode/android/mupen64plusae/util/RomHeader.java:180-212, app/src/main/java/paulscode/android/mupen64plusae/jni/CoreInterface.java:221,455-484, mupen64plus-core/upstream/src/main/main.c:1080-1145"
+3
View File
@@ -39,6 +39,7 @@ files:
- name: "ti83se.rom"
system: ti-83
description: "TI-83 Plus Silver Edition ROM dump"
priority: 1
required: false
source_ref: "libnumero/libretro/libretronew.cpp:576-578"
note: "Checked first. Recommended for largest storage capacity."
@@ -46,6 +47,7 @@ files:
- name: "ti83plus.rom"
system: ti-83
description: "TI-83 Plus ROM dump"
priority: 2
required: false
source_ref: "libnumero/libretro/libretronew.cpp:583-585"
note: "Checked second, used if ti83se.rom is missing."
@@ -53,6 +55,7 @@ files:
- name: "ti83.rom"
system: ti-83
description: "TI-83 ROM dump"
priority: 3
required: false
source_ref: "libnumero/libretro/libretronew.cpp:591-593"
note: "Checked last. Original TI-83 (non-Plus)."
+3
View File
@@ -20,6 +20,7 @@ notes: >
files:
- name: "scph1001.bin"
description: "SCPH-1001 (v2.2 12-04-95 A)"
priority: 1
required: false
hle_fallback: true
size: 524288
@@ -28,6 +29,7 @@ files:
- name: "scph5501.bin"
description: "SCPH-5501 (v3.0 11-18-96 A)"
priority: 2
required: false
hle_fallback: true
size: 524288
@@ -36,6 +38,7 @@ files:
- name: "scph7001.bin"
description: "SCPH-7001 (v4.1 12-16-97 A)"
priority: 3
required: false
hle_fallback: true
size: 524288
+4
View File
@@ -43,6 +43,7 @@ files:
- name: "iplrom.dat"
path: "keropi/iplrom.dat"
priority: 1
size: 131072
required: true
note: >
@@ -53,6 +54,7 @@ files:
- name: "iplrom30.dat"
path: "keropi/iplrom30.dat"
priority: 2
size: 131072
required: false
note: >
@@ -62,6 +64,7 @@ files:
- name: "iplromco.dat"
path: "keropi/iplromco.dat"
priority: 3
size: 131072
required: false
note: >
@@ -71,6 +74,7 @@ files:
- name: "iplromxv.dat"
path: "keropi/iplromxv.dat"
priority: 4
size: 131072
required: false
note: >
+3
View File
@@ -35,6 +35,7 @@ notes: |
files:
- name: "saturn_bios.bin"
system: sega-saturn
priority: 1
required: true
hle_fallback: true
note: "Primary Saturn BIOS. Any region accepted."
@@ -43,6 +44,7 @@ files:
- name: "sega_101.bin"
system: sega-saturn
region: [japan]
priority: 2
required: false
hle_fallback: true
note: "Saturn BIOS v1.01 (Japan). Fallback if saturn_bios.bin missing."
@@ -51,6 +53,7 @@ files:
- name: "mpr-17933.bin"
system: sega-saturn
region: [north-america, europe]
priority: 3
required: false
hle_fallback: true
note: "Saturn BIOS v1.003 (NA/EU). Last fallback."
+3
View File
@@ -34,6 +34,7 @@ notes: |
files:
- name: "saturn_bios.bin"
system: sega-saturn
priority: 1
required: true
hle_fallback: true
max_size: 524288
@@ -44,6 +45,7 @@ files:
- name: "sega_101.bin"
system: sega-saturn
region: [japan]
priority: 2
required: false
hle_fallback: true
max_size: 524288
@@ -54,6 +56,7 @@ files:
- name: "mpr-17933.bin"
system: sega-saturn
region: [north-america, europe]
priority: 3
required: false
hle_fallback: true
max_size: 524288