Skip to content

AetherSX2 - RetroBIOS

Type standalone
Classification Community forks
Source https://github.com/Trixarian/AetherSX2
Upstream https://github.com/PCSX2/pcsx2
Version 1.5-3939
Profiled 2026-08-11
Cores aethersx2, aethersx2-sa
Systems sony-playstation-2
BIOS directory bios/
Resources directory resources/
Technical notes

PlayStation 2 emulator for ARM, built on PCSX2 and carrying its own AArch64 recompilers. The application itself is closed source; the PCSX2-derived files were released separately as an LGPL tarball in which pcsx2/libAetherSX2.a holds the parts that stayed closed, and that drop sits on an earlier code line than any released build, with no Vulkan renderer in its GS tree and the older asset set. Every name, path and size below was read from the three builds that were distributed: v1.5-3939 for Apple Silicon macOS, v1.5-3668 for Android, and v1.5-3606 for AArch64 Linux, which ROCKNIX repackages as aethersx2-sa. The three agree throughout. ref: aethersx2/pcsx2/CMakeLists.txt:1585, aethersx2/pcsx2/Mdec.cpp:1

A BIOS image is required and boot stops without one. It belongs in the bios folder of the data directory, Library/Application Support/AetherSX2 on macOS and Android/data/xyz.aethersx2.android on Android, and the Folders section of PCSX2.ini names another path when set. ref: aethersx2 v1.5-3939 MacOS/AetherSX2, aethersx2 archive/desktop/mac/README.md

Detection is by content. The scan lists the BIOS folder with a . mask, keeps files between 4 and 8 MB, and accepts an image whose romdir carries a RESET entry followed by a readable ROMVER; the fifth ROMVER character gives the zone among T10K, Test, Japan, USA, Europe, HK, Free and China. An image named in the configuration is opened at its own path, without the size filter and without the romdir test. No name and no hash is matched anywhere. The image is read into the 4 MB ROM region and truncated to it, and one shorter than 2465792 bytes turns off the OSDSys parameter HLE. ref: aethersx2/pcsx2/ps2/BiosTools.cpp:27-28, aethersx2/pcsx2/ps2/BiosTools.cpp:62-175, aethersx2/pcsx2/ps2/BiosTools.cpp:235-260, aethersx2/pcsx2/ps2/BiosTools.cpp:272-316, aethersx2 v1.5-3606 usr/share/aethersx2 0xa45ffc, aethersx2 v1.5-3939 MacOS/AetherSX2 0x1006e7650

Companions derive from the selected image. rom1 and rom2 are appended to the full name first, then substituted for the existing extension, so an image at ps2-0230a-20080220.bin is followed by ps2-0230a-20080220.bin.rom1 then ps2-0230a-20080220.rom1. The nvm and the mec are read at the substituted extension only, and both are written with defaults when they are absent or too short. ref: aethersx2/pcsx2/ps2/BiosTools.cpp:192-218, aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, aethersx2/pcsx2/CDVD/CDVD.cpp:158-197

The network adapter opens eeprom.dat and flash.dat from the working directory, standing in a compiled-in image for the first and a blank card for the second. DEV9hdd.raw is the default name of the empty disk image its settings page writes. ref: aethersx2/pcsx2/DEV9/DEV9.cpp:109-161, aethersx2/pcsx2/DEV9/flash.cpp:76-104

An IRX named in the configuration is read into the ROM region at 0x3C0000 at boot. The field is empty by default and names no file of its own. ref: aethersx2/pcsx2/ps2/BiosTools.cpp:220-233, aethersx2/pcsx2/ps2/BiosTools.cpp:327-328

Read from the build's own resources folder and versioned with it: the shader sources each GS backend compiles at startup, the OSD and fullscreen interface fonts, the flag and placeholder textures, and the achievement notification sounds. The macOS build keeps the folder at AetherSX2.app/Contents/Resources and adds its Metal libraries; the Android build carries the shaders, fonts, icons and sounds as APK assets and draws its own interface. ref: aethersx2 v1.5-3939 AetherSX2.app/Contents/Resources, aethersx2 v1.5-3668 xyz.aethersx2.android assets

11 files | 1 required, 10 optional | 9 in repo, 2 missing | 4 with HLE fallback

ps2-0230a-20080220.bin required in repo
PS2 BIOS image

ps2-0230a-20080220.rom1 optional in repo
DVD player ROM

  • Path: bios/ps2-0230a-20080220.rom1
  • Size: max 4.0 MB
  • Source: aethersx2/pcsx2/ps2/BiosTools.cpp:192-218, aethersx2 v1.5-3606 usr/share/aethersx2 0xa45b44, aethersx2 v1.5-3939 MacOS/AetherSX2 0x1006e7184
  • Tried as {bios}.rom1 then {biosbase}.rom1. Read at 0x2404000 of the EE memory block and truncated to 4 MB. Logged and skipped when absent.

ps2-0230a-20080220.rom2 optional missing
Chinese ROM extension

  • Path: bios/ps2-0230a-20080220.rom2
  • Size: max 512.0 KB
  • Aliases: SCPH-90006_BIOS_VX_HK _230.ROM2
  • Source: aethersx2/pcsx2/ps2/BiosTools.cpp:192-218, aethersx2 v1.5-3606 usr/share/aethersx2 0xa45d50, aethersx2 v1.5-3939 MacOS/AetherSX2 0x1006e7338
  • Same two-step naming as rom1. Read at 0x2804000 of the EE memory block and truncated to 512 KB. Only present on Chinese region consoles.

ps2-0230a-20080220.nvm optional in repo HLE fallback
Console NVRAM

  • Path: bios/ps2-0230a-20080220.nvm
  • Size: 1.0 KB
  • Source: aethersx2/pcsx2/CDVD/CDVD.cpp:158-197, aethersx2 v1.5-3606 usr/share/aethersx2 0x95d8e0
  • Read at the BIOS path with the extension replaced by nvm. Carries the console id, the iLink id, the language and the OSD configuration. A 1024 byte image is written when the file is missing or shorter, zeroed except for a fixed iLink id and the language defaults of the BIOS region.

ps2-0230a-20080220.mec optional in repo HLE fallback
Mechacon version

  • Path: bios/ps2-0230a-20080220.mec
  • Size: 4 B
  • Source: aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, aethersx2 v1.5-3606 usr/share/aethersx2 0x95e7fc
  • Read at the BIOS path with the extension replaced by mec. Written as 03 06 02 00 when the file is missing or shorter than 4 bytes.

eeprom.dat optional in repo HLE fallback
DEV9 EEPROM

  • Size: 64 B
  • Source: aethersx2/pcsx2/DEV9/DEV9.cpp:146-161, aethersx2 v1.5-3606 usr/share/aethersx2 0x97ac90
  • Opened from the working directory when the network adapter starts and mapped over 64 bytes. A compiled-in image stands in when the file is missing or cannot be mapped.

flash.dat optional missing HLE fallback
DEV9 SmartMedia flash image

  • Size: max 8.2 MB
  • Source: aethersx2/pcsx2/DEV9/flash.cpp:76-104, aethersx2 v1.5-3606 usr/share/aethersx2 0x97ac40
  • Opened from the working directory at network adapter init and read as 1024 blocks of 16 pages of 512 bytes plus 16 ECC bytes. The card is filled with 0xFF when the file is absent, and a short read is logged.

GameIndex.yaml optional in repo bundled
Game database

cheats_ws.zip optional in repo
Widescreen patch archive

  • Path: resources/cheats_ws.zip
  • Source: aethersx2/pcsx2/Patch.cpp:202-231, aethersx2 v1.5-3939 MacOS/AetherSX2
  • Per-game pnach entries matched on the disc CRC, loaded when widescreen patches are enabled. The cheats_ws folder takes precedence and the archive is skipped when it holds a match. Shipped by the Linux and Android builds; the macOS build looks for it without carrying one.

cheats_ni.zip optional in repo
No-interlacing patch archive

  • Path: resources/cheats_ni.zip
  • Source: aethersx2/pcsx2/Patch.cpp:202-231, aethersx2 v1.5-3939 MacOS/AetherSX2
  • Same form as cheats_ws.zip, loaded when no-interlacing patches are enabled, with the cheats_ni folder taking precedence. Shipped by the Linux and Android builds; the macOS build looks for it without carrying one.

game_controller_db.txt optional in repo bundled
SDL controller mapping database

  • Path: resources/game_controller_db.txt
  • Source: aethersx2/pcsx2/PAD/Host/SDLJoystick.cpp:46, aethersx2 v1.5-3939 AetherSX2.app/Contents/Resources
  • Read from the resources folder and fed to SDL at input init. SDL falls back to its built-in mappings when the file cannot be read.

Generated on 2026-08-23T16:12:06Z