Skip to content

# PCSX2 - RetroBIOS

Type | standalone
Source | https://github.com/PCSX2/pcsx2
Version | Git
Profiled | 2026-03-18
Cores | pcsx2
Systems | sony-playstation-2
BIOS directory | bios/
BIOS detection | romdir
BIOS selection | automatic

Memory layout

ROM:

    - **offset:** 0x1FC00000
    - **size:** 4 MB
    - **purpose:** Main BIOS binary

ROM1:

    - **offset:** ROM + 4MB
    - **size:** 4 MB
    - **purpose:** DVD player

ROM2:

    - **offset:** ROM + 8MB
    - **size:** 4 MB
    - **purpose:** Chinese ROM extension

Regions

J:

    - **zone:** Japan
    - **id:** 0

A:

    - **zone:** USA
    - **id:** 1

E:

    - **zone:** Europe
    - **id:** 2

H:

    - **zone:** Asia
    - **id:** 4

C:

    - **zone:** China
    - **id:** 6

T:

    - **zone:** T10K/COH-H
    - **id:** 8

X:

    - **zone:** Test
    - **id:** 9

P:

    - **zone:** Free
    - **id:** 10

NVM layout

format_0:

    - **applies_to:** BIOS v0.00+
    - **biosVer:** 0
    - **config0:** 640
    - **config1:** 768
    - **config2:** 512
    - **consoleId:** 456
    - **ilinkId:** 448
    - **modelNum:** 416
    - **regparams:** 384
    - **mac:** 408

format_1:

    - **applies_to:** BIOS v1.70+
    - **biosVer:** 326
    - **config0:** 624
    - **config1:** 688
    - **config2:** 512
    - **consoleId:** 496
    - **ilinkId:** 480
    - **modelNum:** 432
    - **regparams:** 384
    - **mac:** 408

Common BIOS filenames

- SCPH-10000_BIOS_V1_JAP_100.BIN
- SCPH-15000_BIOS_V3_JAP_120.BIN
- SCPH-30000_BIOS_V4_JAP_150.BIN
- SCPH-30001R_BIOS_V7_JAP_160.BIN
- SCPH-30004R_BIOS_V7_JAP_160.BIN
- SCPH-35000_BIOS_V5_JAP_160.BIN
- SCPH-50000_BIOS_V9_JAP_170.BIN
- SCPH-50004_BIOS_V9_JAP_170.BIN
- SCPH-70000_BIOS_V12_JAP_200.BIN
- SCPH-75000_BIOS_V14_JAP_220.BIN
- SCPH-77000_BIOS_V14_JAP_220.BIN
- SCPH-90000_BIOS_V18_JAP_230.BIN
- SCPH-30001_BIOS_V4_USA_150.BIN
- SCPH-39001_BIOS_V6_USA_160.BIN
- SCPH-50001_BIOS_V9_USA_170.BIN
- SCPH-50003_BIOS_V9_USA_170.BIN
- SCPH-70002_BIOS_V12_USA_200.BIN
- SCPH-70004_BIOS_V12_USA_200.BIN
- SCPH-70012_BIOS_V12_USA_200.BIN
- SCPH-75001_BIOS_V14_USA_220.BIN
- SCPH-77001_BIOS_V14_USA_220.BIN
- SCPH-90001_BIOS_V18_USA_230.BIN
- SCPH-30002_BIOS_V4_EUR_150.BIN
- SCPH-30003_BIOS_V4_EUR_150.BIN
- SCPH-30004_BIOS_V4_EUR_150.BIN
- SCPH-39002_BIOS_V6_EUR_160.BIN
- SCPH-39003_BIOS_V6_EUR_160.BIN
- SCPH-39004_BIOS_V6_EUR_160.BIN
- SCPH-50002_BIOS_V9_EUR_170.BIN
- SCPH-50004_BIOS_V9_EUR_170.BIN
- SCPH-70002_BIOS_V12_EUR_200.BIN
- SCPH-70003_BIOS_V12_EUR_200.BIN
- SCPH-70004_BIOS_V12_EUR_200.BIN
- SCPH-70008_BIOS_V12_EUR_200.BIN
- SCPH-75002_BIOS_V14_EUR_220.BIN
- SCPH-75003_BIOS_V14_EUR_220.BIN
- SCPH-75004_BIOS_V14_EUR_220.BIN
- SCPH-77002_BIOS_V14_EUR_220.BIN
- SCPH-77003_BIOS_V14_EUR_220.BIN
- SCPH-77004_BIOS_V14_EUR_220.BIN
- SCPH-90002_BIOS_V18_EUR_230.BIN
- SCPH-90003_BIOS_V18_EUR_230.BIN
- SCPH-90004_BIOS_V18_EUR_230.BIN
- SCPH-50009_BIOS_V9_HK_170.BIN
- SCPH-70005_BIOS_V12_HK_200.BIN
- SCPH-70006_BIOS_V12_HK_200.BIN
- SCPH-70008_BIOS_V12_HK_200.BIN
- SCPH-50009_BIOS_V9_CHN_170.BIN
- SCPH-70006_BIOS_V12_CHN_200.BIN

Technical notes

PCSX2 is filename-agnostic for the main BIOS. Detection relies on romdir structure parsing inside the binary itself, not on filename or extension. Any file between 4-8 MB with a valid romdir (containing at least RESET and ROMVER entries) is accepted.

The ROMVER entry encodes: version (2+2 digits), region letter, console/devel flag, build date (YYYYMMDD), and is used to determine the BIOS description and region.

Companion files (.nvm, .mec) are auto-created with sane defaults if missing. ROM1/ROM2 are silently skipped if not found - only the main BIOS binary is strictly required.

PCSX2 no longer ships as a libretro core in official builds. The standalone emulator is the primary distribution channel.

Devel console BIOSes (< ~2.3 MB) lack the OSD and are handled with NoOSD=true flag.

7 files | 1 required, 6 optional | 0 in repo, 7 missing | 3 with HLE fallback

`<user-selected>.bin` -required, missing from repo

- Source: `pcsx2/ps2/BiosTools.cpp:258-282`
- Pattern: `*`
- Size range: 4MB-8MB
- PCSX2 does not mandate a specific filename. It scans the entire bios/ directory for any file between 4-8 MB that contains a valid romdir structure (RESET + ROMVER entries). Common filenames follow the SCPH-XXXXX_BIOS_VYYY_REGION_ZZZ.BIN convention but this is not enforced. The file is loaded into the 4 MB ROM region of EE memory.

`<biosname>.rom1` -optional, missing from repo

- Size: max 4.0 MB
- Source: `pcsx2/ps2/BiosTools.cpp:214-241`
- Pattern: `{biosname}.rom1 or {biosbase}.rom1`
- DVD player ROM. Loaded via LoadExtraRom("rom1"). PCSX2 tries two naming patterns: 1) Full bios path + ".rom1" appended (e.g. scph70004.bin.rom1) 2) Bios path with extension replaced (e.g. scph70004.rom1) Mapped to EE memory at ROM1 region (0x1FC00000 + 4MB offset). Contains DVD player and region detection data (DVDID).

`<biosname>.rom2` -optional, missing from repo

- Size: max 4.0 MB
- Source: `pcsx2/ps2/BiosTools.cpp:214-241`
- Pattern: `{biosname}.rom2 or {biosbase}.rom2`
- Chinese ROM extension. Loaded via LoadExtraRom("rom2"). Same naming convention as rom1: tries appended extension first, then replaced extension. Only present on Chinese region consoles.

`<biosname>.nvm` -optional, HLE available, missing from repo

- Size: 1.0 KB
- Source: `pcsx2/CDVD/CDVD.cpp:160-238`
- Pattern: `{biosbase}.nvm`
- EEPROM / NVRAM data. Path derived from BiosPath with extension replaced to ".nvm" (cdvdGetNVRAMPath). Contains console configuration: language, timezone, iLink ID, region parameters, OSD settings. Auto-created with defaults if missing. Two NVM layouts exist: v0.00+ (biosVer 0x000) and v1.70+ (biosVer 0x146).

`<biosname>.mec` -optional, HLE available, missing from repo

- Size: 4 B
- Source: `pcsx2/CDVD/CDVD.cpp:190-204`
- Pattern: `{biosbase}.mec`
- Mechacon (mechanism controller) version file. 4 bytes containing the mecha version as a u32 value. Auto-created with DEFAULT_MECHA_VERSION (0x00020603) if missing. Path derived from BiosPath with extension replaced to ".mec".

`<custom>.irx` -optional, missing from repo

- Source: `pcsx2/ps2/BiosTools.cpp:243-256,384-385`
- Pattern: `*.irx`
- Custom IOP Reboot eXecutable module. Loaded into ROM at offset 0x3C0000 if EmuConfig.CurrentIRX is set (path length > 3). Injected at IOP reset (PC=0x1630). Used for debugging/development, not needed for normal operation.

`eeprom.dat` -optional, HLE available, missing from repo

- Size: 64 B
- Source: `pcsx2/DEV9/DEV9.cpp:110-160`
- DEV9 (network adapter / HDD expansion bay) EEPROM data. Fixed filename "eeprom.dat" opened from working directory. Contains network adapter configuration. Falls back to built-in defaults if file not found. Only relevant when using DEV9 features (online play, HDD).

Generated on 2026-03-25T14:56:43Z