mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-11 12:33:53 -06:00
RetroDECK carries GZDoom g4.14.2 in its components and installs LRPS2 14d19f8 from the buildbot's stable 1.22.2 cores. EmuDeck runs the Flathub ares, v148. Each gets its own config_reads entry, and an entry read at the pin no longer stands for a platform another entry names. At v148 ares reads NeoGeoAES/Firmware/BIOS.World, so that EmuDeck record holds. It names MSX2 firmware MAIN and SUB, and PC Engine CD and SuperGrafx CD firmware by card: EmuDeck's BIOS.* keys for those three are never read and stay unproven.
242 lines
10 KiB
YAML
242 lines
10 KiB
YAML
# LRPS2 - libretro PlayStation 2 core
|
|
# Source: https://github.com/libretro/parallel-ps2
|
|
# Upstream: https://github.com/PCSX2/pcsx2
|
|
|
|
emulator: LRPS2
|
|
type: libretro
|
|
core_classification: community_fork
|
|
bios_mode: agnostic
|
|
source: "https://github.com/libretro/parallel-ps2"
|
|
upstream: "https://github.com/PCSX2/pcsx2"
|
|
profiled_date: "2026-11-09"
|
|
source_commit: "87bcc96bbc3b4da7318fd1c2a7450f0c78bdc09e"
|
|
prose_written_at: "87bcc96bbc3b4da7318fd1c2a7450f0c78bdc09e"
|
|
upstream_commit: "f0523f8acb1d3a765ee73b74cffec63093569199"
|
|
core_version: "v2.0.0"
|
|
version_basis:
|
|
kind: file
|
|
path: "libretro/main.cpp"
|
|
pattern: 'library_version\s*=\s*"(v[0-9.]+)-"'
|
|
display_name: "Sony - PlayStation 2 (LRPS2)"
|
|
cores: [lrps2, pcsx2, "ps2"]
|
|
systems: [sony-playstation-2]
|
|
|
|
bios_directory: "pcsx2/bios/"
|
|
resources_directory: "pcsx2/resources/"
|
|
|
|
config_reads:
|
|
- file: "core options"
|
|
source_ref: "libretro/main.cpp:506, 525-527"
|
|
keys:
|
|
- key: "pcsx2_bios"
|
|
source_ref: "libretro/main.cpp:525-536, 2552-2560"
|
|
- file: "core options"
|
|
platforms: [retrodeck]
|
|
revision: "14d19f8339e3646b645c1c33e612b1888e632145"
|
|
revision_from: "library_version 14d19f8 of pcsx2_libretro.so in the buildbot's stable 1.22.2 RetroArch_cores.7z (2025-11-20), which RetroDECK's retroarch component installs (retroarch/component_recipe.json at fcd0d729)"
|
|
source_ref: "libretro/main.cpp:341, 1915-1926, 2013"
|
|
keys:
|
|
- key: "pcsx2_bios"
|
|
source_ref: "libretro/main.cpp:360-365, 1801-1830, pcsx2/VMManager.cpp:247-256, 1076-1092, 601, pcsx2/Pcsx2Config.cpp:887-891, 995-1000, pcsx2/ps2/BiosTools.cpp:267-281"
|
|
condition: "the value is a file of system/pcsx2/bios; without the option the core scans that folder for a 4 to 8 MiB BIOS"
|
|
|
|
notes: |
|
|
Hard fork of PCSX2 (pre-Qt, 1.7-dev era) ported to libretro, x86_64 only,
|
|
with much of the emulator since rewritten in C89. The system directory of
|
|
the core is system/pcsx2 (libretro/main.cpp:2699-2708).
|
|
|
|
BIOS detection is filename-agnostic: pcsx2/bios/ is scanned for any file
|
|
between 4 and 8 MB with a valid romdir structure (RESET and ROMVER
|
|
entries). No hash is checked. The companion files (.rom1, .rom2, .nvm,
|
|
.mec, .flash) take their path from the selected BIOS, and the MagicGate key
|
|
files sit in the same directory.
|
|
|
|
A COH-H BIOS is the BIOS of an arcade board: the core boots it as that
|
|
board, and its mechacon answers with the arcade key set (pcsx2/ps2/BiosTools.cpp:384-386, pcsx2/CDVD/CDVD.c:861-871).
|
|
A Konami Python game boots the selected BIOS when it is a COH-H one, else
|
|
the first COH-H BIOS of pcsx2/bios/ by name
|
|
(libretro/main.cpp:2548-2561, pcsx2/ps2/BiosTools.cpp:292-337). A Python 2
|
|
game is a .py2 descriptor whose files, HDD image, identity files, dongles
|
|
and cards, sit beside it (pcsx2/USB/usb-python2/py2desc.h:1-4).
|
|
|
|
GameIndex.yaml, the per-game patch, settings override and compatibility
|
|
database, is compiled into the core. pcsx2/resources/GameIndex.yaml is read
|
|
only when the pcsx2_use_external_gameindex option is enabled, off by
|
|
default, and the built-in copy applies when the file is missing
|
|
(libretro/main.cpp:3694-3728, libretro/libretro_core_options.h:261-264).
|
|
The buildbot still publishes one in LRPS2.zip (the lrps2 data directory).
|
|
|
|
Widescreen patches are largely compiled into the core (libretro/patches.cpp).
|
|
The DEV9 hard disk is DEV9hdd.chd or DEV9hdd.vhd when the user puts one in
|
|
system/pcsx2, otherwise a DEV9hdd.raw the core creates
|
|
(libretro/main.cpp:473-504): it is user storage, not a file to obtain.
|
|
.info firmware_count=2 counts the bios folder and GameIndex.yaml.
|
|
.info description mentions EROM.BIN but no EROM loading path exists in the code.
|
|
|
|
data_directories:
|
|
- ref: lrps2
|
|
installed_on: [batocera, lakka, recalbox, retrobat, retrodeck]
|
|
unread_on: [romm]
|
|
destination: ""
|
|
source_ref: "source pcsx2/GameDatabase.cpp:40, source pcsx2/GameDatabase.cpp:1144, source libretro/main.cpp:3694-3728"
|
|
|
|
files:
|
|
- name: "<bios>.bin"
|
|
found_by: content
|
|
path: "pcsx2/bios/<bios>.bin"
|
|
required: true
|
|
description: "PS2 BIOS binary"
|
|
min_size: 4194304
|
|
max_size: 8388608
|
|
validation: [size, romdir]
|
|
romdir:
|
|
reset_compare: 10
|
|
missing_reset: ends_walk
|
|
terminated_names: true
|
|
extinfo: true
|
|
unreadable_romver: ends_walk
|
|
truncated_walk: ends_walk
|
|
config_key: "pcsx2_bios"
|
|
source_ref: "source pcsx2/ps2/BiosTools.cpp:32-33, 64-187, 257-289, 349-415, source libretro/main.cpp:525-536"
|
|
note: >
|
|
Scans pcsx2/bios/ for any file between 4 MB and 8 MB. Validates via romdir
|
|
structure parsing (RESET + ROMVER entries). User selects BIOS via core option
|
|
pcsx2_bios. Falls back to first valid BIOS found if configured BIOS is missing.
|
|
A Konami Python game takes the first COH-H BIOS by name instead when the
|
|
selected one is not COH-H.
|
|
|
|
- name: "<bios>.rom1"
|
|
path: "pcsx2/bios/<bios>.rom1"
|
|
required: false
|
|
max_size: 4194304
|
|
description: "DVD player ROM"
|
|
source_ref: "source pcsx2/ps2/BiosTools.cpp:204-237, 406"
|
|
note: >
|
|
DVD player ROM. Tries <biospath>.rom1 (appended) then <biosbase>.rom1
|
|
(extension replaced). Silently skipped if not found.
|
|
|
|
- name: "<bios>.rom2"
|
|
path: "pcsx2/bios/<bios>.rom2"
|
|
required: false
|
|
max_size: 524288
|
|
description: "Chinese ROM extension"
|
|
source_ref: "source pcsx2/ps2/BiosTools.cpp:204-237, 407"
|
|
note: >
|
|
Chinese region ROM extension. Same naming convention as rom1.
|
|
Only present on Chinese region consoles.
|
|
|
|
- name: "<bios>.nvm"
|
|
path: "pcsx2/bios/<bios>.nvm"
|
|
required: false
|
|
hle_fallback: true
|
|
size: 1024
|
|
description: "NVRAM / EEPROM data"
|
|
source_ref: "source pcsx2/CDVD/CDVD.c:59, source pcsx2/CDVD/CDVD.c:198-271"
|
|
note: >
|
|
Console EEPROM data (language, timezone, region, iLink ID, OSD settings).
|
|
Path derived from BIOS path with extension replaced to .nvm.
|
|
Auto-created with region-appropriate defaults if missing or invalid.
|
|
With a COH-H BIOS a file that reads whole is kept as it is.
|
|
|
|
- name: "<bios>.mec"
|
|
path: "pcsx2/bios/<bios>.mec"
|
|
required: false
|
|
hle_fallback: true
|
|
size: 4
|
|
description: "Mechacon version"
|
|
source_ref: "source pcsx2/CDVD/CDVD.c:64, source pcsx2/CDVD/CDVD.c:278-292"
|
|
note: >
|
|
Mechacon (disc drive controller) version as u32.
|
|
Auto-created with default 0x00020603 if missing.
|
|
|
|
- name: "<bios>.flash"
|
|
path: "pcsx2/bios/<bios>.flash"
|
|
required: false
|
|
hle_fallback: true
|
|
size: 8650752
|
|
description: "DEV9 flash memory with ECC"
|
|
source_ref: "source pcsx2/DEV9/flash.cpp:26-33, source pcsx2/DEV9/flash.cpp:43-52, source pcsx2/DEV9/flash.cpp:110-146"
|
|
note: >
|
|
The 64 Mbit flash behind DEV9, 1024 blocks of 16 pages of 528 bytes.
|
|
Path derived from the BIOS path with the extension replaced. A bare
|
|
flash.dat in the working directory is read when it is absent, and the
|
|
flash is blank (0xFF) when neither exists. Written back only after the
|
|
emulated system programs it.
|
|
|
|
- name: "eeprom.dat"
|
|
load_from: working_directory
|
|
required: false
|
|
hle_fallback: true
|
|
size: 64
|
|
description: "DEV9 EEPROM"
|
|
source_ref: "source pcsx2/DEV9/DEV9.cpp:111-123, source pcsx2/DEV9/DEV9.cpp:159-176"
|
|
note: "Opened from the working directory when DEV9 starts and mapped over 64 bytes. A compiled-in image stands in when the file is missing."
|
|
|
|
- name: "mg_keystore.bin"
|
|
path: "pcsx2/bios/mg_keystore.bin"
|
|
required: false
|
|
size: 1024
|
|
description: "Mechacon MagicGate key store, encrypted"
|
|
source_ref: "source pcsx2/CDVD/MechaMg.h:33-36, source pcsx2/CDVD/MechaMg.c:266-335, source pcsx2/CDVD/CDVD.c:861-871"
|
|
note: >
|
|
Read from the directory of the selected BIOS with mg_card_keystore.bin and
|
|
mg_keystore_key.bin. With all three at their exact sizes the MagicGate
|
|
commands 0x80 to 0x98 run for real: memory card handshake, KELF header
|
|
and bit table checks, content decryption. Without them the fixed replies
|
|
stand. The retail key set is used, or the arcade one with a COH-H BIOS.
|
|
|
|
- name: "mg_card_keystore.bin"
|
|
path: "pcsx2/bios/mg_card_keystore.bin"
|
|
required: false
|
|
size: 96
|
|
description: "Mechacon MagicGate card key store"
|
|
source_ref: "source pcsx2/CDVD/MechaMg.h:33-36, source pcsx2/CDVD/MechaMg.c:301-317"
|
|
note: "Second of the three key files, see mg_keystore.bin."
|
|
|
|
- name: "mg_keystore_key.bin"
|
|
path: "pcsx2/bios/mg_keystore_key.bin"
|
|
required: false
|
|
size: 16
|
|
description: "Key of the MagicGate key store"
|
|
source_ref: "source pcsx2/CDVD/MechaMg.h:33-36, source pcsx2/CDVD/MechaMg.c:301-317"
|
|
note: "Third of the three key files, see mg_keystore.bin."
|
|
|
|
- name: "mg_kelf07_kbit.bin"
|
|
path: "pcsx2/bios/mg_kelf07_kbit.bin"
|
|
required: false
|
|
size: 16
|
|
description: "Arcade MagicGate Kbit for KELF application type 0x07"
|
|
source_ref: "source pcsx2/CDVD/MechaMg.h:38-44, source pcsx2/CDVD/MechaMg.c:318-326, source pcsx2/CDVD/MechaMg.c:499-507"
|
|
note: >
|
|
Read with mg_kelf07_kc.bin, only with a COH-H BIOS and the three key
|
|
files loaded. A KELF of application type 0x07 takes its Kbit and Kc from
|
|
these two files, and is refused without them.
|
|
|
|
- name: "mg_kelf07_kc.bin"
|
|
path: "pcsx2/bios/mg_kelf07_kc.bin"
|
|
required: false
|
|
size: 16
|
|
description: "Arcade MagicGate Kc for KELF application type 0x07"
|
|
source_ref: "source pcsx2/CDVD/MechaMg.h:38-44, source pcsx2/CDVD/MechaMg.c:318-326"
|
|
note: "Pair of mg_kelf07_kbit.bin."
|
|
|
|
- name: "cheats_ws.zip"
|
|
path: "pcsx2/resources/cheats_ws.zip"
|
|
required: false
|
|
description: "widescreen patches archive"
|
|
source_ref: "source pcsx2/VMManager.cpp:436-457"
|
|
note: >
|
|
ZIP archive of per-game widescreen (16:9) patches in pnach format.
|
|
Only loaded when widescreen patches are enabled via core options.
|
|
Fallback if no patches found in pcsx2/cheats_ws/ folder.
|
|
|
|
- name: "cheats_ni.zip"
|
|
path: "pcsx2/resources/cheats_ni.zip"
|
|
required: false
|
|
description: "no-interlacing patches archive"
|
|
source_ref: "source pcsx2/VMManager.cpp:469-491"
|
|
note: >
|
|
ZIP archive of per-game no-interlacing patches in pnach format.
|
|
Only loaded when no-interlacing patches are enabled via core options.
|
|
Fallback if no patches found in pcsx2/cheats_ni/ folder.
|