emulator: PCSX-ReARMed type: libretro core_classification: embedded_hle source: "https://github.com/libretro/pcsx_rearmed" upstream: "https://github.com/notaz/pcsx_rearmed" profiled_date: "2026-03-25" core_version: "r25" display_name: "Sony - PlayStation (PCSX ReARMed)" cores: [pcsx_rearmed, pcsx_rearmed_neon, pcsx_rearmed_interpreter] systems: [sony-playstation] notes: > HLE BIOS built-in: core option pcsx_rearmed_bios = "HLE" bypasses real BIOS entirely. Default is "auto" which searches system dir for listed filenames, then scans all files. Region detection reads bytes at offset 0x7ff51: " E" = EU, " J" = JP, else US. Three CRC32 hardcoded as JP override: 0x18D0F7D8, 0x3B601FC8, 0x3539DEF6 (psxonpsp, scph1000). BIOS validity check: byte pattern at offset 1 (\x00\x08\x3c\x3f) or string "PS compatible" at 0x12c. Files named "unirom" (case-insensitive) are explicitly skipped. Region fallback: if the matching-region BIOS is missing, any available region BIOS is used over HLE. Three region slots: US (index 0), JP (index 1), EU (index 2) stored in Config.Bios[]. files: # -- Region: Japan (PSX_REGION_JP = 1) -- - name: "scph5500.bin" description: "SCPH-5500 (v3.0 09-09-96 J)" region: "NTSC-J" size: 524288 required: false hle_fallback: true validation: [size] source_ref: "frontend/libretro.c:3721-3724 (listed_bios[0])" note: "Preferred JP BIOS, searched first by exact filename." # -- Region: North America (PSX_REGION_US = 0) -- - name: "scph5501.bin" description: "SCPH-5501 (v3.0 11-18-96 A)" region: "NTSC-U" size: 524288 required: false hle_fallback: true validation: [size] source_ref: "frontend/libretro.c:3721-3724 (listed_bios[1])" note: "Preferred US BIOS, searched first by exact filename." # -- Region: Europe (PSX_REGION_EU = 2) -- - name: "scph5502.bin" description: "SCPH-5502 (v3.0 01-06-97 E)" region: "PAL" size: 524288 required: false hle_fallback: true validation: [size] source_ref: "frontend/libretro.c:3721-3724 (listed_bios[2])" note: "Preferred EU BIOS, searched first by exact filename." # -- Fallback BIOS filenames (searched in order after scph550x) -- - name: "psxonpsp660.bin" description: "PSP embedded PS1 BIOS (region detected at runtime)" region: "Auto" size: 524288 required: false hle_fallback: true validation: [size] source_ref: "frontend/libretro.c:3721-3724 (listed_bios[3])" note: "Region detected from content at runtime. Must be 512 KB in libretro context." - name: "scph101.bin" description: "SCPH-101 (v4.4 03-24-00 A) - PSone US" region: "NTSC-U" size: 524288 required: false hle_fallback: true validation: [size] source_ref: "frontend/libretro.c:3721-3724 (listed_bios[4])" note: "PSone slim model." - name: "scph7001.bin" description: "SCPH-7001 (v4.1 12-16-97 A)" region: "NTSC-U" size: 524288 required: false hle_fallback: true validation: [size] source_ref: "frontend/libretro.c:3721-3724 (listed_bios[5])" - name: "scph1001.bin" description: "SCPH-1001 (v2.2 12-04-95 A)" region: "NTSC-U" size: 524288 required: false hle_fallback: true validation: [size] source_ref: "frontend/libretro.c:3721-3724 (listed_bios[6])" note: "Original US model. Last in the explicit filename search list." # -- Dynamic scan fallback -- # After exhausting listed_bios[], the core calls find_any_bios() which scans # the entire system directory via opendir/readdir. Any 512 KB file passing the # validity check (magic bytes or "PS compatible" string) is accepted and assigned # to the detected region slot. This means scph1000.bin, scph3000.bin, scph7002.bin, # scph7502.bin, etc. all work without being explicitly listed.