Skip to content

BIOS files

Some systems cannot boot without a copy of their original BIOS — the small program that was burned into the console itself. Saturn, Dreamcast, 3DO, CD-i and Amiga are the usual examples.

The PlayStation is the famous case and is not one of them: pcsx_rearmed emulates the firmware itself, so PS1 games run without a BIOS file. Supplying the real one is an accuracy and startup-screen upgrade rather than a requirement — see the PlayStation page.

RetroXR does not and cannot ship these files. They are copyrighted, and they belong to the hardware you own.

Open CORES and go to the BIOS / Extras view. Every system is listed with its status at a glance — complete, a count of optional files, or required files missing.

The BIOS / Extras overview: a grid of systems, each showing its BIOS status — complete, a number of optional files, or required files missing.

Open one and you get the files themselves, each marked required or optional, with its exact expected filename. The PlayStation entry, for instance, lists scph5500.bin, scph5501.bin, scph5502.bin and psxonpsp660.bin.

The BIOS / Extras view for PlayStation, listing the PS1 BIOS files with their required or optional status and per-file download buttons.

This is worth checking before you wonder why a game will not start. A missing BIOS usually shows up as a console that powers on and does nothing, not as an error.

Every core gets its own firmware folder. This is the single most important thing on this page, and it is not how RetroArch does it — there is no shared system/ pile that every core reads from.

libretro/system/<core name>/
Platform Full path
Windows %USERPROFILE%\retroxr\libretro\system\<core name>\
Linux / macOS ~/retroxr/libretro/system/<core name>/
Quest libretro/system/<core name>/ in the web file manager

The core name is the bare name with no _libretro suffix and no extension: mednafen_psx_hw, pcsx_rearmed, dolphin, flycast.

Because the folder is per core, running two cores for the same machine means the BIOS has to exist under both. Installing a second PlayStation core does not inherit the first one’s firmware:

libretro/system/mednafen_psx_hw/scph5500.bin
libretro/system/pcsx_rearmed/scph5500.bin

If a game works under one core and hangs on a black screen under another, this is the first thing to check.

The expected path is not always a bare filename — it can carry folders, and those folders are part of it. Dolphin wants dolphin-emu/Sys/GC/USA/IPL.bin; PPSSPP wants PPSSPP/ppge_atlas.zim. Those become:

libretro/system/dolphin/dolphin-emu/Sys/GC/USA/IPL.bin
libretro/system/ppsspp/PPSSPP/ppge_atlas.zim

The BIOS / Extras view shows the exact path it wants. Reproduce it exactly, folders and all.

Names are case-sensitive on Quest and Linux

Section titled “Names are case-sensitive on Quest and Linux”

RetroXR checks for the file by its exact name and does no case-folding, no renaming and no searching around. On Quest and Linux the filesystem is case-sensitive, so SCPH5500.BIN is simply not scph5500.bin and will be reported missing while sitting right there. On Windows and macOS the same mistake happens to work, because those filesystems ignore case — which makes this an easy thing to get away with on a PC and then trip over on a headset.

If you have a RomM server connected and it holds the file, each entry in the BIOS view gets a download button and RetroXR fetches it for you. This is by far the best route, for two reasons:

  • It writes the file to every installed core that wants it, in one action — so the two-copies problem above is handled for you.
  • It writes it under the name and subfolder the core expects, correcting the case and nesting on the way in. A file sitting on your server as MSX.ROM lands correctly as Machines/Shared Roms/MSX.rom.

That correction only happens on this path. A file you place by hand is taken exactly as you named it.

See connecting RomM.

On a headset this is the only practical route, and it is safe.

libretro/ lives in the app’s internal storage — /data/user/0/com.xenu.retroxr/files/libretro — not on /sdcard with your games. That means adb push and SideQuest’s file browser cannot reach it at all. Do not go hunting for it there.

The web file manager can. It is the app’s own server, so anything uploaded through it is owned by the app and stays writable:

  1. Turn on Web File Manager in OPTIONS and open the address it shows.
  2. From the root, open libretro — not media.
  3. Open system, then the folder named after your core, creating it if it is not there.
  4. Drop the file in.

There is no web file manager on Windows, Linux or macOS — it only runs on Android. Copy the files into the path from the table above with your normal file manager.

The view is called BIOS / Extras because it covers a second, much easier kind of file.

Several cores need supporting data that is not copyrighted console firmware — databases, compatibility lists, themes, game data. libretro publishes these as archives, so RetroXR can simply download and unpack them for you in one click. Nothing to find, nothing to supply, no RomM required.

The ones most people meet:

Core Pack What it is
PPSSPP (PSP) PPSSPP assets Compatibility database and the font/UI atlases the core will not start without
Dolphin (GameCube / Wii) Dolphin Sys folder The Sys tree, including codehandler.bin
ScummVM ScummVM themes + extras Engine data files and the UI theme
PCSX2 (PS2) PCSX2 resources GameIndex.yaml and friends

There are a dozen more behind the same button — blueMSX machine definitions, MAME 2003 and 2003-Plus support files, FinalBurn Neo hiscore data, and the self-contained game cores like PrBoom, Cave Story, ECWolf, Dinothawr, Cannonball and XRick, which need their game data to run at all.

If a core has a pack, its entry offers it. Take it.

Since v0.4.0, if a system’s BIOS is on the device, RetroXR turns on that core’s show the BIOS startup option for you — so a console you power on with no game in it comes up on its own firmware screen, the way it did on the shelf, instead of straight into nothing.

Four of the expansion units are cartridges carrying a program, and that program is firmware you supply. Until the file is present the unit is not offered in the spawn menu at all, because without it there would be nothing to run.

Unit File Folder
Super Game Boy SGB1.sfc system/bsnes/
Super Game Boy 2 SGB2.sfc system/bsnes/
Sufami Turbo STBIOS.bin system/snes9x/
BS-X BS-X.bin system/snes9x/

New in v0.5.0.

“Optional” means the core runs without it but something is reduced — a region that will not boot, a peripheral that will not work, or a slower fallback. If a specific game misbehaves and the system has an optional BIOS file you have not supplied, that is a reasonable thing to try.

In order:

  1. Check the case, character for character, on Quest and Linux.
  2. Check the subfolder, if the expected path had one.
  3. Check the core folder — it must be the core actually launching the system, which the Manager shows you.
  4. Re-open the BIOS view. Presence is re-checked from disk every time, so a correct file shows up immediately; there is no cache to clear.