mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 21:43:23 -05:00
239 lines
7.1 KiB
Markdown
239 lines
7.1 KiB
Markdown
# Getting started - RetroBIOS
|
|
|
|
## What are BIOS files?
|
|
|
|
BIOS files are firmware dumps from original console hardware. Emulators need them to boot games for systems that relied on built-in software (PlayStation, Saturn, Dreamcast, etc.). Without the correct BIOS, the emulator either refuses to start the game or falls back to less accurate software emulation.
|
|
|
|
## Installation
|
|
|
|
Three ways to get BIOS files in place, from easiest to most manual.
|
|
|
|
### Option 1: the installer (recommended)
|
|
|
|
One command, nothing to clone. The bootstrap verifies `install.py` against the
|
|
SHA-256 embedded in it, then the installer detects the platform and its BIOS
|
|
directory, downloads only what is missing or incorrect, checks size and
|
|
SHA-256/SHA-1 before writing, and installs each file atomically.
|
|
|
|
```bash
|
|
# Linux / macOS / Steam Deck
|
|
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh
|
|
|
|
# Windows (PowerShell)
|
|
irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex
|
|
```
|
|
|
|
Running `install.py` directly works the same way and needs nothing beyond
|
|
Python 3.10+:
|
|
|
|
```bash
|
|
python install.py
|
|
```
|
|
|
|
Override detection when needed:
|
|
|
|
```bash
|
|
python install.py --platform retroarch --dest ~/custom/bios
|
|
python install.py --target switch # keep only files for that hardware
|
|
python install.py --check # verify existing files, download nothing
|
|
python install.py --list-platforms # supported platforms and what was detected
|
|
python install.py --list-targets # hardware targets for a platform
|
|
python install.py --jobs 4 # parallel downloads (default 8)
|
|
python install.py --verbose
|
|
python install.py --standalone-copies # opt in to extra standalone-emulator paths
|
|
```
|
|
|
|
The default flow writes inside the detected platform tree only. Copies into
|
|
separate standalone-emulator directories are opt-in, so discovery cannot cause
|
|
unexpected writes elsewhere on the machine.
|
|
Entries the collection cannot satisfy are reported as safely omitted and the
|
|
run continues; the installer never substitutes a same-named file for one a
|
|
hash-verifying platform would reject.
|
|
|
|
Arguments pass through the one-liner too, which is how you target an SD card
|
|
mounted on another machine:
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh \
|
|
| sh -s -- --platform retroarch --dest /path/to/sdcard
|
|
```
|
|
|
|
### Option 2: download.sh (Linux/macOS, from a clone)
|
|
|
|
Downloads a whole pack rather than the missing files. Needs `curl` and `unzip`:
|
|
|
|
```bash
|
|
bash scripts/download.sh retroarch ~/RetroArch/system/
|
|
bash scripts/download.sh --list # show available packs
|
|
```
|
|
|
|
### Option 3: manual download
|
|
|
|
1. Go to the [releases page](https://github.com/Abdess/retrobios/releases)
|
|
2. Download the ZIP pack for your platform
|
|
3. Extract to the BIOS directory listed below
|
|
|
|
Packs over 2 GB are split into numbered volumes (`.zip.001`, `.zip.002`).
|
|
Download every part and open the `.001` file with 7-Zip or PeaZip, which
|
|
extracts the whole set. See [Download](../which-pack.md) for the
|
|
per-setup instructions.
|
|
|
|
## BIOS directory by platform
|
|
|
|
### RetroArch
|
|
|
|
RetroArch uses the `system_directory` setting in `retroarch.cfg`. Default locations:
|
|
|
|
| OS | Default path |
|
|
|----|-------------|
|
|
| Windows (installer) | `%APPDATA%\RetroArch\system\` |
|
|
| Windows (portable .7z) | `system\` next to `retroarch.exe` |
|
|
| Linux | `~/.config/retroarch/system/` |
|
|
| Linux (Flatpak) | `~/.var/app/org.libretro.RetroArch/config/retroarch/system/` |
|
|
| macOS | `~/Library/Application Support/RetroArch/system/` |
|
|
| Steam Deck (Flatpak) | `~/.var/app/org.libretro.RetroArch/config/retroarch/system/` |
|
|
| Android | `/storage/emulated/0/RetroArch/system/` |
|
|
|
|
Windows has two layouts because the installer stores its data under `%APPDATA%`
|
|
while the portable archive keeps everything inside the folder you extracted it
|
|
to. If both exist on the machine, the one RetroArch actually reads is the one
|
|
shown in the UI.
|
|
|
|
To check your actual path: open RetroArch, go to **Settings > Directory > System/BIOS**, or look for `system_directory` in `retroarch.cfg`.
|
|
|
|
### Batocera
|
|
|
|
```
|
|
/userdata/bios/
|
|
```
|
|
|
|
Accessible via network share at `\\BATOCERA\share\bios\` (Windows) or `smb://batocera/share/bios/` (macOS/Linux).
|
|
|
|
### Recalbox
|
|
|
|
```
|
|
/recalbox/share/bios/
|
|
```
|
|
|
|
Accessible via network share at `\\RECALBOX\share\bios\`.
|
|
|
|
### RetroBat
|
|
|
|
```
|
|
bios/
|
|
```
|
|
|
|
Relative to the RetroBat installation directory (e.g., `C:\RetroBat\bios\`).
|
|
|
|
### RetroDECK
|
|
|
|
```
|
|
~/retrodeck/bios/
|
|
```
|
|
|
|
On a MicroSD install the root moves, e.g. `/run/media/mmcblk0p1/retrodeck/bios/`.
|
|
|
|
The RetroDECK pack is the exception to "extract into the BIOS directory": its
|
|
entries already start with `bios/` (and one with `roms/`), so extract it into
|
|
`~/retrodeck/` and the files land in the right place. Extracting into
|
|
`~/retrodeck/bios/` would create `~/retrodeck/bios/bios/`.
|
|
|
|
### EmuDeck
|
|
|
|
```
|
|
Emulation/bios/
|
|
```
|
|
|
|
Located inside your Emulation folder. On Steam Deck, typically `~/Emulation/bios/`.
|
|
|
|
### Lakka
|
|
|
|
```
|
|
/storage/system/
|
|
```
|
|
|
|
Accessible via SSH or Samba.
|
|
|
|
### RetroPie
|
|
|
|
```
|
|
~/RetroPie/BIOS/
|
|
```
|
|
|
|
RetroPie is archived in this project: its configuration is kept and packs are
|
|
still built, but the upstream data is no longer scraped on a schedule. It
|
|
inherits RetroArch's file set, so the RetroArch pack applies as well.
|
|
|
|
### ROCKNIX
|
|
|
|
```
|
|
/storage/roms/bios/
|
|
```
|
|
|
|
Accessible via SSH or Samba, like Lakka.
|
|
|
|
### MiSTer FPGA
|
|
|
|
```
|
|
/media/fat/games/
|
|
```
|
|
|
|
Files go under the per-core subdirectory the MiSTer BIOS database declares
|
|
(e.g. `/media/fat/games/3DO/boot.rom`). Only the entries the BIOS database
|
|
lists with a download URL are in scope: the rest ship with the MiSTer
|
|
distribution and install themselves.
|
|
|
|
### BizHawk
|
|
|
|
```
|
|
Firmware/
|
|
```
|
|
|
|
Relative to the BizHawk installation directory.
|
|
|
|
### RomM
|
|
|
|
BIOS files live in the RomM library under `bios/{platform_slug}/`, one
|
|
subfolder per system, and are managed through the web interface. Check the
|
|
[RomM documentation](https://github.com/rommapp/romm) for setup details.
|
|
|
|
## Verifying your setup
|
|
|
|
`install.py --check` verifies an existing install without downloading anything.
|
|
For the full report, run `verify.py` from a clone of the repository:
|
|
|
|
```bash
|
|
python scripts/verify.py --platform retroarch
|
|
python scripts/verify.py --platform batocera
|
|
python scripts/verify.py --platform recalbox
|
|
```
|
|
|
|
The output shows each expected file with its status: `ok`, `missing`, or
|
|
`untested`. `untested` means the file is there but its hash is not the expected
|
|
one, which is how a wrong revision or a bad dump shows up.
|
|
|
|
Only hash-checking platforms can catch a wrong version: Batocera, RetroBat,
|
|
Recalbox, EmuDeck, RetroDECK, RomM, ROCKNIX and MiSTer FPGA compare MD5,
|
|
BizHawk compares SHA1. RetroArch, Lakka and RetroPie only check that the file
|
|
exists, so add `--verbose` there to compare against the emulator ground truth.
|
|
|
|
For a single system:
|
|
|
|
```bash
|
|
python scripts/verify.py --system sony-playstation
|
|
```
|
|
|
|
For a single emulator core:
|
|
|
|
```bash
|
|
python scripts/verify.py --emulator beetle_psx
|
|
```
|
|
|
|
See [Tools](tools.md) for the full CLI reference.
|
|
|
|
## Next steps
|
|
|
|
- [FAQ](faq.md) - common questions and troubleshooting
|
|
- [Tools](tools.md) - all available scripts and options
|
|
- [Architecture](architecture.md) - how the project works internally
|