feat: re-profile 22 emulators, refactor validation to common.py

batch re-profiled nekop2 through pokemini. mupen64plus renamed to
mupen64plus_next. new profiles: nes, mupen64plus_next.
validation functions (_build_validation_index, check_file_validation)
consolidated in common.py — single source of truth for verify.py
and generate_pack.py. pipeline 100% consistent on all 6 platforms.
This commit is contained in:
Abdessamad Derraz
2026-03-24 22:31:22 +01:00
parent 94000bdaef
commit 0543165ed2
33 changed files with 1449 additions and 783 deletions
+18 -18
View File
@@ -1,36 +1,36 @@
emulator: Panda3DS
type: libretro
type: standalone + libretro
core_classification: official_port
core_name: panda3ds_libretro
source: "https://github.com/panda3ds-emu/panda3ds"
profiled_date: "2026-03-18"
upstream: "https://github.com/panda3ds-emu/panda3ds"
profiled_date: "2026-03-24"
core_version: "Git"
display_name: "Nintendo - 3DS (Panda3DS)"
cores: [panda3ds]
systems: [nintendo-3ds]
notes: |
Panda3DS is an HLE 3DS emulator. Most games run without any system files.
HLE 3DS emulator. Most games run without 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.
DSP firmware is loaded from the game itself (HLE/LLE/Null modes via core
option panda3ds_dsp_emulation). System archives (shared font, bad word
list, country list, mii data) are compiled into the binary via cmrc.
The libretro core uses the save directory, not RetroArch's system
directory. Files go under <save_dir>/Emulator Files/sysdata/.
The .info declares firmware_count=0. is_experimental = true.
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"
source_ref: "src/emulator.cpp:229,237-238, src/core/crypto/aes_engine.cpp:13-92"
notes: |
Loaded at ROM load time from appDataRoot/sysdata/aes_keys.txt.
In libretro mode, appDataRoot = <save_dir>/Emulator Files/.
Contains key slot entries like "generator=XXXX", keyX/keyY values.
Contains key slot entries (generator, keyX, keyY, normalKey).
Only needed for encrypted .3ds/.cci/.cxi/.app files.
Decrypted dumps work without this file.
@@ -38,8 +38,8 @@ files:
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"
source_ref: "src/emulator.cpp:230,241-242, src/core/loader/ncch.cpp:78-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.
Used for titles with seed encryption (firmware 9.6+).
Placed alongside aes_keys.txt in the sysdata directory.
Without it, seed-encrypted titles fail to load with a warning.