# LRPS2 - libretro PlayStation 2 core # Source: https://github.com/libretro/ps2 # Upstream: https://github.com/PCSX2/pcsx2 emulator: LRPS2 type: libretro core_classification: community_fork source: "https://github.com/libretro/ps2" upstream: "https://github.com/PCSX2/pcsx2" profiled_date: "2026-03-25" core_version: "Git" display_name: "Sony - PlayStation 2 (LRPS2)" cores: [lrps2] systems: [sony-playstation-2] bios_directory: "pcsx2/bios/" resources_directory: "pcsx2/resources/" notes: | Hard fork of PCSX2 (pre-Qt, 1.7-dev era) ported to libretro. x86_64 only. BIOS detection is filename-agnostic: scans pcsx2/bios/ for any file between 4-8 MB with a valid romdir structure (RESET + ROMVER entries). No hash validation. Companion files (.rom1, .rom2, .nvm, .mec) derive paths from the selected BIOS. DEV9 (network/HDD) and USB are stubbed in the libretro port. Widescreen patches are largely compiled into the core (libretro/patches.cpp). .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. files: - name: ".bin" path: "pcsx2/bios/" required: true description: "PS2 BIOS binary" min_size: 4194304 max_size: 8388608 validation: [size] source_ref: "pcsx2/ps2/BiosTools.cpp:231-254,267-322" 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. - name: ".rom1" path: "pcsx2/bios/" required: false max_size: 4194304 description: "DVD player ROM" source_ref: "pcsx2/ps2/BiosTools.cpp:190-211,314" note: > DVD player ROM. Tries .rom1 (appended) then .rom1 (extension replaced). Silently skipped if not found. - name: ".rom2" path: "pcsx2/bios/" required: false max_size: 524288 description: "Chinese ROM extension" source_ref: "pcsx2/ps2/BiosTools.cpp:190-211,315" note: > Chinese region ROM extension. Same naming convention as rom1. Only present on Chinese region consoles. - name: ".nvm" path: "pcsx2/bios/" required: false hle_fallback: true size: 1024 description: "NVRAM / EEPROM data" source_ref: "pcsx2/CDVD/CDVD.cpp:155-198" 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. - name: ".mec" path: "pcsx2/bios/" required: false hle_fallback: true size: 4 description: "Mechacon version" source_ref: "pcsx2/CDVD/CDVD.cpp:186-197" note: > Mechacon (disc drive controller) version as u32. Auto-created with default 0x00020603 if missing. - name: "GameIndex.yaml" path: "pcsx2/resources/GameIndex.yaml" required: false description: "game compatibility database" source_ref: "pcsx2/GameDatabase.cpp:48,880" note: > YAML database of per-game patches, settings overrides, and compatibility fixes. OSD warning shown if missing. Some games may not boot or have issues without it. - name: "cheats_ws.zip" path: "pcsx2/resources/cheats_ws.zip" required: false description: "widescreen patches archive" source_ref: "pcsx2/VMManager.cpp:340-353" 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: "pcsx2/VMManager.cpp:375-388" 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.