mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-13 12:22:33 -05:00
Compare commits
1 Commits
8ac64d6143
...
v2026.03.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f45f93a5a6 |
89
.github/workflows/build.yml
vendored
89
.github/workflows/build.yml
vendored
@@ -18,11 +18,13 @@ concurrency:
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
release:
|
||||
if: false # disabled until pack generation is validated in production
|
||||
regenerate:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
pages: write
|
||||
outputs:
|
||||
changed: ${{ steps.commit.outputs.changed }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
@@ -32,9 +34,57 @@ jobs:
|
||||
|
||||
- run: pip install pyyaml
|
||||
|
||||
- name: Restore large files from release
|
||||
run: |
|
||||
mkdir -p .cache/large
|
||||
gh release download large-files -D .cache/large/ 2>/dev/null || true
|
||||
# Copy large files to their bios/ paths so generate_db sees them
|
||||
for f in .cache/large/*; do
|
||||
[ -f "$f" ] || continue
|
||||
name=$(basename "$f")
|
||||
# Match against .gitignore entries to find target path
|
||||
target=$(grep "$name" .gitignore | head -1)
|
||||
if [ -n "$target" ] && [ ! -f "$target" ]; then
|
||||
mkdir -p "$(dirname "$target")"
|
||||
cp "$f" "$target"
|
||||
echo "Restored: $target"
|
||||
fi
|
||||
done
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
|
||||
- name: Regenerate database, readme, and site
|
||||
run: |
|
||||
pip install mkdocs-material
|
||||
python scripts/generate_db.py --force --bios-dir bios --output database.json
|
||||
python scripts/generate_readme.py --db database.json --platforms-dir platforms
|
||||
python scripts/generate_site.py
|
||||
|
||||
- name: Run tests
|
||||
run: python -m unittest tests.test_e2e -v
|
||||
|
||||
- name: Deploy site to GitHub Pages
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: mkdocs gh-deploy --force --clean
|
||||
|
||||
- name: Commit if changed
|
||||
id: commit
|
||||
run: |
|
||||
git diff --quiet database.json README.md CONTRIBUTING.md && echo "changed=false" >> "$GITHUB_OUTPUT" && exit 0
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||
git add database.json README.md CONTRIBUTING.md
|
||||
git commit -m "regenerate database and docs"
|
||||
git push
|
||||
echo "changed=true" >> "$GITHUB_OUTPUT"
|
||||
|
||||
release:
|
||||
needs: regenerate
|
||||
if: (needs.regenerate.outputs.changed == 'true' || github.event.inputs.force_release == 'true')
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- name: Rate limit
|
||||
if: github.event.inputs.force_release != 'true'
|
||||
id: rate
|
||||
@@ -53,6 +103,20 @@ jobs:
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- uses: actions/checkout@v6
|
||||
if: steps.rate.outputs.skip != 'true'
|
||||
with:
|
||||
ref: main
|
||||
|
||||
- uses: actions/setup-python@v6
|
||||
if: steps.rate.outputs.skip != 'true'
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
||||
- name: Install dependencies
|
||||
if: steps.rate.outputs.skip != 'true'
|
||||
run: pip install pyyaml
|
||||
|
||||
- name: Restore large files from release
|
||||
if: steps.rate.outputs.skip != 'true'
|
||||
run: |
|
||||
@@ -78,7 +142,9 @@ jobs:
|
||||
|
||||
- name: Build packs
|
||||
if: steps.rate.outputs.skip != 'true'
|
||||
run: python scripts/generate_pack.py --all --output-dir dist/
|
||||
run: |
|
||||
python scripts/generate_db.py --bios-dir bios --output database.json
|
||||
python scripts/generate_pack.py --all --output-dir dist/
|
||||
|
||||
- name: Release
|
||||
if: steps.rate.outputs.skip != 'true'
|
||||
@@ -102,17 +168,14 @@ jobs:
|
||||
${PACKS}
|
||||
|
||||
### Install
|
||||
Download the pack matching your frontend, extract to the BIOS directory.
|
||||
Download, extract to your emulator's BIOS directory.
|
||||
|
||||
| Platform | Pack | Path |
|
||||
|----------|------|------|
|
||||
| RetroArch / Lakka | RetroArch_Lakka_BIOS_Pack.zip | system/ |
|
||||
| Batocera | Batocera_BIOS_Pack.zip | /userdata/bios/ |
|
||||
| Recalbox | Recalbox_BIOS_Pack.zip | /recalbox/share/bios/ |
|
||||
| RetroBat | RetroBat_BIOS_Pack.zip | bios/ |
|
||||
| RetroDECK | RetroDECK_BIOS_Pack.zip | ~/retrodeck/bios/ |
|
||||
| EmuDeck | EmuDeck_BIOS_Pack.zip | Emulation/bios/ |
|
||||
| RomM | RomM_BIOS_Pack.zip | bios/{platform_slug}/ |
|
||||
| Platform | Path |
|
||||
|----------|------|
|
||||
| RetroArch / Lakka | system/ |
|
||||
| Batocera | /userdata/bios/ |
|
||||
| Recalbox | /recalbox/share/bios/ |
|
||||
| RetroBat | bios/ |
|
||||
|
||||
### Changes
|
||||
${CHANGES}
|
||||
|
||||
59
.github/workflows/deploy-site.yml
vendored
59
.github/workflows/deploy-site.yml
vendored
@@ -1,59 +0,0 @@
|
||||
name: Deploy Site
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- "platforms/**"
|
||||
- "emulators/**"
|
||||
- "wiki/**"
|
||||
- "scripts/generate_site.py"
|
||||
- "scripts/generate_readme.py"
|
||||
- "scripts/verify.py"
|
||||
- "scripts/common.py"
|
||||
- "database.json"
|
||||
- "mkdocs.yml"
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
concurrency:
|
||||
group: deploy-site
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
||||
- run: pip install pyyaml mkdocs-material pymdown-extensions
|
||||
|
||||
- name: Generate site
|
||||
run: |
|
||||
python scripts/generate_site.py
|
||||
python scripts/generate_readme.py --db database.json --platforms-dir platforms
|
||||
mkdocs build
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v4
|
||||
with:
|
||||
path: site/
|
||||
|
||||
deploy:
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
||||
9
.gitignore
vendored
9
.gitignore
vendored
@@ -11,8 +11,13 @@ site/
|
||||
*.log
|
||||
node_modules/
|
||||
|
||||
# Generated site pages (built by generate_site.py, deployed in CI)
|
||||
docs/
|
||||
# Generated site pages (built in CI)
|
||||
docs/index.md
|
||||
docs/platforms/
|
||||
docs/systems/
|
||||
docs/emulators/
|
||||
docs/contributing.md
|
||||
docs/gaps.md
|
||||
|
||||
# Large files stored as GitHub Release assets (> 50MB)
|
||||
bios/Arcade/Arcade/Firmware.19.0.0.zip
|
||||
|
||||
99
README.md
99
README.md
@@ -1,41 +1,21 @@
|
||||
# RetroBIOS
|
||||
# Retrogaming BIOS & Firmware Collection
|
||||
|
||||
Complete BIOS and firmware packs for Batocera, EmuDeck, Lakka, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie, and RomM.
|
||||
Complete, verified collection of BIOS, firmware, and system files for retrogaming emulators.
|
||||
|
||||
**6,748** verified files across **322** systems, ready to extract into your emulator's BIOS directory.
|
||||
> **6724** files | **5013.3 MB** | **8** platforms | **275** emulator profiles
|
||||
|
||||
## Download BIOS packs
|
||||
## Download
|
||||
|
||||
Pick your platform, download the ZIP, extract to the BIOS path.
|
||||
|
||||
| Platform | BIOS files | Extract to | Download |
|
||||
|----------|-----------|-----------|----------|
|
||||
| Batocera | 359 | `/userdata/bios/` | [Download](../../releases/latest) |
|
||||
| EmuDeck | 161 | `Emulation/bios/` | [Download](../../releases/latest) |
|
||||
| Lakka | 448 | `system/` | [Download](../../releases/latest) |
|
||||
| Recalbox | 346 | `/recalbox/share/bios/` | [Download](../../releases/latest) |
|
||||
| RetroArch | 448 | `system/` | [Download](../../releases/latest) |
|
||||
| RetroBat | 331 | `bios/` | [Download](../../releases/latest) |
|
||||
| RetroDECK | 2007 | `~/retrodeck/bios/` | [Download](../../releases/latest) |
|
||||
| RetroPie | 448 | `BIOS/` | [Download](../../releases/latest) |
|
||||
| RomM | 374 | `bios/{platform_slug}/` | [Download](../../releases/latest) |
|
||||
|
||||
## What's included
|
||||
|
||||
BIOS, firmware, and system files for consoles from Atari to PlayStation 3.
|
||||
Each file is checked against the emulator's source code to match what the code actually loads at runtime.
|
||||
|
||||
- **9 platforms** supported with platform-specific verification
|
||||
- **319 emulators** profiled from source (RetroArch cores + standalone)
|
||||
- **322 systems** covered (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
|
||||
- **6,748 files** verified with MD5, SHA1, CRC32 checksums
|
||||
- **5251 MB** total collection size
|
||||
|
||||
## Supported systems
|
||||
|
||||
NES, SNES, Nintendo 64, GameCube, Wii, Game Boy, Game Boy Advance, Nintendo DS, Nintendo 3DS, Switch, PlayStation, PlayStation 2, PlayStation 3, PSP, PS Vita, Mega Drive, Saturn, Dreamcast, Game Gear, Master System, Neo Geo, Atari 2600, Atari 7800, Atari Lynx, Atari ST, MSX, PC Engine, TurboGrafx-16, ColecoVision, Intellivision, Commodore 64, Amiga, ZX Spectrum, Arcade (MAME), and 288+ more.
|
||||
|
||||
Full list with per-file details: **[https://abdess.github.io/retrobios/](https://abdess.github.io/retrobios/)**
|
||||
| Platform | Files | Verification | Pack |
|
||||
|----------|-------|-------------|------|
|
||||
| Batocera | 359 | md5 | [Download](../../releases/latest) |
|
||||
| EmuDeck | 161 | md5 | [Download](../../releases/latest) |
|
||||
| Lakka | 448 | existence | [Download](../../releases/latest) |
|
||||
| Recalbox | 346 | md5 | [Download](../../releases/latest) |
|
||||
| RetroArch | 448 | existence | [Download](../../releases/latest) |
|
||||
| RetroBat | 331 | md5 | [Download](../../releases/latest) |
|
||||
| RetroDECK | 2007 | md5 | [Download](../../releases/latest) |
|
||||
| RetroPie | 448 | existence | [Download](../../releases/latest) |
|
||||
|
||||
## Coverage
|
||||
|
||||
@@ -47,58 +27,15 @@ Full list with per-file details: **[https://abdess.github.io/retrobios/](https:/
|
||||
| Recalbox | 346/346 (100.0%) | 346 | 0 | 0 |
|
||||
| RetroArch | 448/448 (100.0%) | 448 | 0 | 0 |
|
||||
| RetroBat | 331/331 (100.0%) | 331 | 0 | 0 |
|
||||
| RetroDECK | 2007/2007 (100.0%) | 2007 | 0 | 0 |
|
||||
| RetroDECK | 2007/2007 (100.0%) | 1698 | 309 | 0 |
|
||||
| RetroPie | 448/448 (100.0%) | 448 | 0 | 0 |
|
||||
| RomM | 374/374 (100.0%) | 359 | 15 | 0 |
|
||||
|
||||
## Build your own pack
|
||||
## Documentation
|
||||
|
||||
Clone the repo and generate packs for any platform, emulator, or system:
|
||||
|
||||
```bash
|
||||
# Full platform pack
|
||||
python scripts/generate_pack.py --platform retroarch --output-dir dist/
|
||||
python scripts/generate_pack.py --platform batocera --output-dir dist/
|
||||
|
||||
# Single emulator or system
|
||||
python scripts/generate_pack.py --emulator dolphin
|
||||
python scripts/generate_pack.py --system sony-playstation-2
|
||||
|
||||
# List available emulators and systems
|
||||
python scripts/generate_pack.py --list-emulators
|
||||
python scripts/generate_pack.py --list-systems
|
||||
|
||||
# Verify your BIOS collection
|
||||
python scripts/verify.py --all
|
||||
python scripts/verify.py --platform batocera
|
||||
python scripts/verify.py --emulator flycast
|
||||
```
|
||||
|
||||
Only dependency: Python 3 + `pyyaml`.
|
||||
|
||||
## Documentation site
|
||||
|
||||
The [documentation site](https://abdess.github.io/retrobios/) provides:
|
||||
|
||||
- **Per-platform pages** with file-by-file verification status and hashes
|
||||
- **Per-emulator profiles** with source code references for every file
|
||||
- **Per-system pages** showing which emulators and platforms cover each console
|
||||
- **Gap analysis** identifying missing files and undeclared core requirements
|
||||
- **Cross-reference** mapping files across 9 platforms and 319 emulators
|
||||
|
||||
## How it works
|
||||
|
||||
Documentation and metadata can drift from what emulators actually load.
|
||||
To keep packs accurate, each file is checked against the emulator's source code.
|
||||
|
||||
1. **Read emulator source code** - trace every file the code loads, its expected hash and size
|
||||
2. **Cross-reference with platforms** - match against what each platform declares
|
||||
3. **Build packs** - include baseline files plus what each platform's cores need
|
||||
4. **Verify** - run platform-native checks and emulator-level validation
|
||||
Full file listings, platform coverage, emulator profiles, and gap analysis: **[https://abdess.github.io/retrobios/](https://abdess.github.io/retrobios/)**
|
||||
|
||||
## Contributors
|
||||
|
||||
<a href="https://github.com/PixNyb"><img src="https://avatars.githubusercontent.com/u/40770831?v=4" width="50" title="PixNyb"></a>
|
||||
<a href="https://github.com/monster-penguin"><img src="https://avatars.githubusercontent.com/u/266009589?v=4" width="50" title="monster-penguin"></a>
|
||||
|
||||
|
||||
@@ -110,4 +47,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
||||
|
||||
This repository provides BIOS files for personal backup and archival purposes.
|
||||
|
||||
*Auto-generated on 2026-03-26T06:14:11Z*
|
||||
*Auto-generated on 2026-03-20T19:10:25Z*
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
917
database.json
917
database.json
File diff suppressed because it is too large
Load Diff
@@ -1,10 +1,9 @@
|
||||
emulator: Amiberry
|
||||
type: standalone + libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/BlitterStudio/amiberry"
|
||||
upstream: "https://github.com/tonioni/WinUAE"
|
||||
profiled_date: "2026-03-26"
|
||||
core_version: "v8.1.2"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "v6.3.4"
|
||||
display_name: "Commodore - Amiga (Amiberry)"
|
||||
cores: [amiberry]
|
||||
systems:
|
||||
@@ -13,236 +12,111 @@ systems:
|
||||
- commodore-cdtv
|
||||
|
||||
notes: |
|
||||
Amiberry is an Amiga emulator based on WinUAE, available as both standalone
|
||||
and libretro core. No built-in kickstart — requires a real Kickstart ROM or
|
||||
external AROS replacement files (aros-ext.bin + aros-rom.bin).
|
||||
Amiberry is an Amiga emulator based on WinUAE, available as both
|
||||
standalone and libretro core. No built-in kickstart fallback — a real
|
||||
Kickstart ROM is required.
|
||||
|
||||
Libretro core option "amiberry_kickstart" overrides ROM selection: auto,
|
||||
kick.rom, kick13.rom, kick20.rom, kick31.rom, kick205.rom, kick40068.A1200,
|
||||
kick40068.A4000, cd32.rom, cdtv.rom. "auto" selects per model.
|
||||
ref: libretro/libretro.cpp:558,621-640
|
||||
Core option "amiberry_kickstart" selects the ROM file:
|
||||
auto, kick.rom, kick13.rom, kick20.rom, kick31.rom, kick205.rom,
|
||||
kick40068.A1200, kick40068.A4000, cd32.rom, cdtv.rom.
|
||||
"auto" selects based on the model option.
|
||||
ref: BlitterStudio/amiberry/libretro/libretro.cpp:558,621-634
|
||||
|
||||
Libretro ROM search directories (in order): save_dir/Kickstarts,
|
||||
system_dir/Kickstarts, system_dir/save-data/Kickstarts, system_dir.
|
||||
ref: libretro/libretro.cpp:2722-2742
|
||||
|
||||
Standalone ROM path: configurable via amiberry.conf "rom_path" setting.
|
||||
Batocera sets this to /userdata/bios/amiga/. Fallback search order:
|
||||
{home_dir}/roms/kick.rom, {home_dir}/kick.rom, ../shared/rom/kick.rom,
|
||||
../System/rom/kick.rom, then ROM database guess.
|
||||
ref: src/memory.cpp:2030-2072
|
||||
|
||||
ROM identification uses SHA1 against WinUAE database (340+ entries) but does
|
||||
not reject unknown ROMs. Cloanto encrypted ROMs supported with rom.key.
|
||||
ref: src/rommgr.cpp:111-1100,1731-1787
|
||||
|
||||
Munt MT-32/CM-32L emulation compiled in (WITH_MIDIEMU). ROMs loaded from
|
||||
mt32-roms/ subdirectory of the ROM path. Split ROM pairs supported
|
||||
(e.g. pcm_mt32_l.rom + pcm_mt32_h.rom).
|
||||
ref: src/midiemu.cpp:82-157
|
||||
|
||||
Keyboard MCU emulation (keyboard_mode setting) loads MCU ROMs via ROM
|
||||
database scanning. Three MCU types supported: 6570-036 (A500/A600/A1000),
|
||||
68HC05 (A1200), D8039HLC (A2000).
|
||||
ref: src/kbmcu/keyboard_mcu_6500_1.cpp:385, keyboard_mcu_6805.cpp:544,
|
||||
keyboard_mcu_d8039hlc.cpp:235
|
||||
|
||||
WHDLoad autoboot requires whdboot/ directory with boot-data.zip, WHDLoad,
|
||||
AmiQuit, JST, whdload_db.xml. These ship with the standalone build but must
|
||||
be obtained separately for the libretro core.
|
||||
ref: src/osdep/amiberry_whdbooter.cpp:1380-1565
|
||||
Standalone mode ships with data/ directory (UI icons, virtual keyboards,
|
||||
floppy sounds, AmigaTopaz.ttf font, gamecontrollerdb.txt). These are
|
||||
compiled into the standalone binary but the libretro core may look for
|
||||
them in the system directory.
|
||||
|
||||
files:
|
||||
# --- Kickstart ROMs ---
|
||||
# Libretro: find_kickstart_in_system_dir() with per-model candidate lists
|
||||
# Standalone: get_kickstart_filehandle() with ROM database + config
|
||||
# ref: libretro/libretro.cpp:1503-1566, src/memory.cpp:2030-2072
|
||||
# --- Required Kickstart ROMs (from .info) ---
|
||||
# ref: BlitterStudio/amiberry/libretro/libretro.cpp:558
|
||||
# ref: WinUAE rommgr.cpp for ROM identification
|
||||
|
||||
- name: kick13.rom
|
||||
- name: kick34005.A500
|
||||
system: commodore-amiga
|
||||
required: true
|
||||
size: 262144
|
||||
note: "A500 Kickstart v1.3 rev 34.005, default for A500 model"
|
||||
source_ref: "libretro/libretro.cpp:1517 candidates_a500"
|
||||
crc32: c4f0f55f
|
||||
note: "A500 Kickstart v1.3 rev 34.5"
|
||||
source_ref: "libretro-super/dist/info/amiberry_libretro.info firmware0"
|
||||
|
||||
- name: kick12.rom
|
||||
- name: kick37350.A600
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
size: 262144
|
||||
note: "A500 Kickstart v1.2 rev 33.180, for A500OG model"
|
||||
source_ref: "libretro/libretro.cpp:1516 candidates_a500og"
|
||||
|
||||
- name: kick20.rom
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
required: true
|
||||
size: 524288
|
||||
aliases: [kick204.rom]
|
||||
note: "A500+ Kickstart v2.04 rev 37.175"
|
||||
source_ref: "libretro/libretro.cpp:1518 candidates_a500p"
|
||||
|
||||
- name: kick205.rom
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
size: 524288
|
||||
note: "A600 Kickstart v2.05 rev 37.350, also used for WHDLoad"
|
||||
source_ref: "libretro/libretro.cpp:1519 candidates_a600"
|
||||
|
||||
- name: kick31.rom
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
size: 524288
|
||||
note: "Kickstart v3.1 (generic), first candidate for A1200 and A4000"
|
||||
source_ref: "libretro/libretro.cpp:1520-1521 candidates_a1200/a4000"
|
||||
crc32: 43b0df7b
|
||||
note: "A600 Kickstart v2.05 rev 37.350"
|
||||
source_ref: "amiberry_libretro.info firmware1"
|
||||
|
||||
- name: kick40068.A1200
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
required: true
|
||||
size: 524288
|
||||
note: "A1200 Kickstart v3.1 rev 40.68, fallback after kick31.rom"
|
||||
source_ref: "libretro/libretro.cpp:1520 candidates_a1200"
|
||||
crc32: 1483a091
|
||||
note: "A1200 Kickstart v3.1 rev 40.68"
|
||||
source_ref: "amiberry_libretro.info firmware2"
|
||||
|
||||
# --- Optional Kickstart ROMs ---
|
||||
|
||||
- name: kick33180.A500
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
size: 262144
|
||||
crc32: a6ce1636
|
||||
note: "A500 Kickstart v1.2 rev 33.180"
|
||||
source_ref: "amiberry_libretro.info firmware3"
|
||||
|
||||
- name: kick40068.A4000
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
size: 524288
|
||||
note: "A4000 Kickstart v3.1 rev 40.68, fallback after kick31.rom"
|
||||
source_ref: "libretro/libretro.cpp:1521 candidates_a4000"
|
||||
crc32: d6bae334
|
||||
note: "A4000 Kickstart v3.1 rev 40.68"
|
||||
source_ref: "amiberry_libretro.info firmware4"
|
||||
|
||||
- name: kick.rom
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
note: "Generic name, any Kickstart ROM. Last resort fallback for all models."
|
||||
source_ref: "libretro/libretro.cpp:1510-1522 last in all candidate lists"
|
||||
|
||||
# --- CD32 ROMs ---
|
||||
|
||||
- name: cd32.rom
|
||||
- name: kick40060.CD32
|
||||
system: commodore-cd32
|
||||
required: false
|
||||
size: 524288
|
||||
aliases: [amiga-os-310-cd32.rom, kick40060.CD32]
|
||||
crc32: 1e62d4a5
|
||||
note: "CD32 Kickstart v3.1 rev 40.60"
|
||||
source_ref: "libretro/libretro.cpp:1522 candidates_cd32"
|
||||
source_ref: "amiberry_libretro.info firmware5"
|
||||
|
||||
- name: cd32ext.rom
|
||||
- name: kick40060.CD32.ext
|
||||
system: commodore-cd32
|
||||
required: false
|
||||
size: 524288
|
||||
aliases: [amiga-ext-310-cd32.rom, "CD32 Extended.ROM"]
|
||||
note: "CD32 extended ROM rev 40.60. Not needed if using a combined 1MB ROM."
|
||||
source_ref: "libretro/libretro.cpp:1580 candidates_cd32 (find_ext_rom_in_system_dir)"
|
||||
crc32: 87746be2
|
||||
note: "CD32 Extended ROM rev 40.60"
|
||||
source_ref: "amiberry_libretro.info firmware6"
|
||||
|
||||
# --- CDTV ROMs ---
|
||||
# --- Alternative names accepted by core option ---
|
||||
# these are common user-facing names, same ROMs as above
|
||||
|
||||
- name: cdtv.rom
|
||||
- name: kick13.rom
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
note: "alias for kick34005.A500 (v1.3)"
|
||||
source_ref: "libretro.cpp:630"
|
||||
|
||||
- name: kick34005.CDTV
|
||||
system: commodore-cdtv
|
||||
required: false
|
||||
aliases: [kick34005.CDTV]
|
||||
note: "CDTV extended ROM v1.00, used as kickstart candidate"
|
||||
source_ref: "libretro/libretro.cpp:1523 candidates_cdtv"
|
||||
note: "CDTV extended ROM"
|
||||
source_ref: "libretro.cpp:558 cdtv.rom option"
|
||||
|
||||
- name: cdtvext.rom
|
||||
system: commodore-cdtv
|
||||
required: false
|
||||
aliases: ["CDTV Extended.ROM"]
|
||||
note: "CDTV extended ROM file"
|
||||
source_ref: "libretro/libretro.cpp:1582 candidates_cdtv (find_ext_rom_in_system_dir)"
|
||||
# --- Standalone data files ---
|
||||
|
||||
# --- AROS replacement ROMs ---
|
||||
# ref: src/memory.cpp:1871-1954 load_kickstart_replacement
|
||||
|
||||
- name: aros-ext.bin
|
||||
- name: AmigaTopaz.ttf
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
hle_fallback: true
|
||||
note: "AROS extended ROM replacement. Used when no Kickstart ROM is found."
|
||||
source_ref: "src/memory.cpp:1877 load_kickstart_replacement"
|
||||
mode: standalone
|
||||
note: "Amiga Topaz font for UI rendering"
|
||||
source_ref: "BlitterStudio/amiberry/data/AmigaTopaz.ttf"
|
||||
|
||||
- name: aros-rom.bin
|
||||
- name: gamecontrollerdb.txt
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
hle_fallback: true
|
||||
note: "AROS main ROM replacement. Used with aros-ext.bin as Kickstart fallback."
|
||||
source_ref: "src/memory.cpp:1910 load_kickstart_replacement"
|
||||
|
||||
# --- Cloanto key ---
|
||||
|
||||
- name: rom.key
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
note: "Decryption key for Cloanto Amiga Forever encrypted ROMs"
|
||||
source_ref: "src/rommgr.cpp:1444-1525 load_keyring"
|
||||
|
||||
# --- Keyboard MCU ROMs ---
|
||||
# Loaded when keyboard_mode is set to MCU emulation.
|
||||
# Found via ROM database scanning (SHA1/CRC32 identification).
|
||||
# ref: src/kbmcu/keyboard_mcu_*.cpp
|
||||
|
||||
- name: "6570-036.rom"
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
size: 2048
|
||||
note: "6500-1/6570-036 keyboard MCU ROM for A500/A600/A1000 models"
|
||||
source_ref: "src/kbmcu/keyboard_mcu_6500_1.cpp:385-408 keymcu_reset, src/rommgr.cpp:126 ROM ID 321"
|
||||
|
||||
- name: "68HC05.rom"
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
size: 8192
|
||||
note: "68HC05 keyboard MCU ROM for A1200"
|
||||
source_ref: "src/kbmcu/keyboard_mcu_6805.cpp:544-567 keymcu2_reset, src/rommgr.cpp:128 ROM ID 322"
|
||||
|
||||
- name: "D8039HLC.rom"
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
size: 2048
|
||||
note: "D8039HLC keyboard MCU ROM for A2000"
|
||||
source_ref: "src/kbmcu/keyboard_mcu_d8039hlc.cpp:235-258 keymcu3_reset, src/rommgr.cpp:130 ROM ID 323"
|
||||
|
||||
# --- Munt MT-32/CM-32L MIDI ROMs ---
|
||||
# Located in mt32-roms/ subdirectory of the ROM path.
|
||||
# Code appends .rom extension and tries uppercase .ROM as fallback.
|
||||
# Split ROM pairs (e.g. pcm_mt32_l.rom + pcm_mt32_h.rom) also supported.
|
||||
# ref: src/midiemu.cpp:82-157 midi_emu_add_roms
|
||||
|
||||
- name: mt32-roms/mt32_control.rom
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
aliases:
|
||||
- mt32-roms/ctrl_mt32.rom
|
||||
- mt32-roms/ctrl_mt32_1_07.rom
|
||||
- mt32-roms/ctrl_mt32_1_06.rom
|
||||
- mt32-roms/ctrl_mt32_1_05.rom
|
||||
- mt32-roms/ctrl_mt32_1_04.rom
|
||||
- mt32-roms/ctrl_mt32_bluer.rom
|
||||
- mt32-roms/ctrl_mt32_2_04.rom
|
||||
- mt32-roms/ctrl_mt32_2_07.rom
|
||||
- mt32-roms/ctrl_mt32_2_06.rom
|
||||
- mt32-roms/ctrl_mt32_2_03.rom
|
||||
note: "Roland MT-32 control ROM for Munt MIDI emulation"
|
||||
source_ref: "src/midiemu.cpp:38-62 mt32ctl candidates, 151-156 load loop"
|
||||
|
||||
- name: mt32-roms/pcm_mt32.rom
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
aliases: [mt32-roms/mt32_pcm.rom]
|
||||
note: "Roland MT-32 PCM ROM for Munt MIDI emulation"
|
||||
source_ref: "src/midiemu.cpp:133-140 MT-32 PCM loading"
|
||||
|
||||
- name: mt32-roms/cm32l_control.rom
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
aliases:
|
||||
- mt32-roms/ctrl_cm32l.rom
|
||||
- mt32-roms/ctrl_cm32ln_1_00.rom
|
||||
- mt32-roms/ctrl_cm32l_1_02.rom
|
||||
- mt32-roms/ctrl_cm32l_1_00.rom
|
||||
note: "Roland CM-32L control ROM for Munt MIDI emulation"
|
||||
source_ref: "src/midiemu.cpp:25-37 cm32lctl candidates, 151-156 load loop"
|
||||
|
||||
- name: mt32-roms/pcm_cm32l.rom
|
||||
system: commodore-amiga
|
||||
required: false
|
||||
aliases: [mt32-roms/cm32l_pcm.rom]
|
||||
note: "Roland CM-32L PCM ROM for Munt MIDI emulation"
|
||||
source_ref: "src/midiemu.cpp:142-149 CM-32L PCM loading"
|
||||
mode: standalone
|
||||
note: "SDL gamepad mapping database"
|
||||
source_ref: "BlitterStudio/amiberry/controllers/gamecontrollerdb.txt"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
emulator: Beetle PC-FX (Mednafen)
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
cores: [mednafen_pcfx, pcfx]
|
||||
cores: [mednafen_pcfx]
|
||||
source: "https://github.com/libretro/beetle-pcfx-libretro"
|
||||
upstream: "https://mednafen.github.io/"
|
||||
profiled_date: "2026-03-24"
|
||||
|
||||
@@ -6,7 +6,7 @@ upstream: "https://mednafen.github.io/"
|
||||
profiled_date: "2026-03-24"
|
||||
core_version: "v0.9.36.1"
|
||||
display_name: "Nintendo - Virtual Boy (Beetle VB)"
|
||||
cores: [mednafen_vb, vb]
|
||||
cores: [mednafen_vb]
|
||||
systems: [nintendo-virtualboy]
|
||||
|
||||
notes: |
|
||||
|
||||
@@ -3,7 +3,7 @@ type: libretro
|
||||
core_classification: frozen_snapshot
|
||||
source: "https://github.com/libretro/bsnes2014"
|
||||
upstream: "https://github.com/bsnes-emu/bsnes"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "v094"
|
||||
display_name: "Nintendo - SNES / SFC (bsnes 2014)"
|
||||
cores: [bsnes2014_accuracy, bsnes2014_balanced, bsnes2014_performance]
|
||||
@@ -15,23 +15,30 @@ systems:
|
||||
|
||||
notes: |
|
||||
Frozen at bsnes v094. Three build profiles: accuracy (dot-based PPU),
|
||||
balanced, performance (scanline PPU). All 3 share the same 16 firmware
|
||||
balanced, performance (scanline PPU). All 3 share the same 18 firmware
|
||||
files. Profiles only differ in PPU (sfc/profile-*.hpp), not coprocessors.
|
||||
Performance .info is wrong (firmware_count=17, missing cx4.data.rom).
|
||||
SPC700 IPL ROM (64 bytes) embedded in target-libretro/libretro.cpp:31.
|
||||
No HLE fallback for any coprocessor in v094.
|
||||
Firmware loaded from system_dir via file::exists() + mmapstream.
|
||||
No hash or size validation on any firmware file.
|
||||
Libretro build uses heuristics only (ananke/heuristics/), not the SHA256
|
||||
database (ananke/database/). All DSP1 games use DSP1B filenames via
|
||||
heuristic fallback. The database dsp1.program.rom / dsp1.data.rom names
|
||||
are only in the standalone build (target-ethos via ananke).
|
||||
.info accuracy/balanced: firmware_count=18 (overcounts by 2, includes
|
||||
phantom dsp1.* from unused database). Performance .info: firmware_count=17
|
||||
(also missing cx4.data.rom).
|
||||
DSP1 (non-b) names used via embedded database for specific SHA256-matched
|
||||
games; DSP1B names used via heuristic fallback for all DSP1/DSP1B games.
|
||||
Upstream v094 source is contained within the libretro repo (sfc/, ananke/).
|
||||
bsnes-emu/bsnes is the modern rewrite (v115+).
|
||||
|
||||
files:
|
||||
- name: dsp1.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 6144
|
||||
source_ref: "ananke/database/super-famicom.hpp:5658"
|
||||
|
||||
- name: dsp1.data.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
size: 2048
|
||||
source_ref: "ananke/database/super-famicom.hpp:5659"
|
||||
|
||||
- name: dsp1b.program.rom
|
||||
system: nintendo-snes
|
||||
required: false
|
||||
|
||||
@@ -6,7 +6,7 @@ upstream: "https://github.com/bsnes-emu/bsnes"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "v10.6"
|
||||
display_name: "Nintendo - SNES / SFC (bsnes-hd beta)"
|
||||
cores: [bsnes_hd_beta, bsneshd]
|
||||
cores: [bsnes_hd_beta]
|
||||
systems:
|
||||
- nintendo-snes
|
||||
- nintendo-sgb
|
||||
|
||||
@@ -3,7 +3,7 @@ type: libretro
|
||||
core_classification: enhanced_fork
|
||||
source: "https://github.com/libretro/bsnes-mercury"
|
||||
upstream: "https://byuu.org/higan"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "v094 (Mercury)"
|
||||
display_name: "Nintendo - SNES / SFC (bsnes-mercury)"
|
||||
cores: [bsnes_mercury_accuracy, bsnes_mercury_balanced, bsnes_mercury_performance]
|
||||
@@ -22,7 +22,7 @@ notes: |
|
||||
|
||||
Firmware loaded from system_dir via file::exists + mmapstream.
|
||||
No hash or size validation on any firmware file.
|
||||
ref: target-libretro/libretro.cpp:242-264
|
||||
ref: target-libretro/libretro.cpp:241-263
|
||||
|
||||
firmware_appended: firmware can be appended to end of ROM file.
|
||||
ref: ananke/heuristics/super-famicom.hpp:83
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
emulator: Citron
|
||||
type: standalone
|
||||
core_classification: community_fork
|
||||
source: "https://git.citron-emu.org/citron-emu/Citron"
|
||||
upstream: "https://git.citron-emu.org/citron-emu/Citron"
|
||||
profiled_date: "2026-03-26"
|
||||
core_version: "2026.03.12"
|
||||
display_name: "Citron (Nintendo Switch)"
|
||||
systems: [nintendo-switch]
|
||||
analysis_date: "2026-03-26"
|
||||
analysis_commit: "79dee42 (depth=1)"
|
||||
mode: standalone
|
||||
|
||||
# Citron is a community fork of yuzu, continued by Zephyron after yuzu's takedown.
|
||||
# Key files loaded from <data_dir>/keys/ (fs_paths.h:18, path_util.cpp:124).
|
||||
# On Linux: $XDG_DATA_HOME/citron/keys/
|
||||
# On Batocera: XDG_DATA_HOME=/userdata/saves/switch → /userdata/saves/switch/citron/keys/
|
||||
# Firmware NCAs are installed into NAND via UI (main.cpp:1808), not placed as files.
|
||||
# HLE fallbacks exist for fonts, timezone, system version, mii model, ng word lists.
|
||||
|
||||
files:
|
||||
- name: "prod.keys"
|
||||
required: true
|
||||
path: "switch/"
|
||||
mode: standalone
|
||||
note: "Production keys for NCA decryption (master, key area, header, titlekek)"
|
||||
source_ref: "src/core/crypto/key_manager.cpp:655-656"
|
||||
|
||||
- name: "title.keys"
|
||||
required: false
|
||||
path: "switch/"
|
||||
mode: standalone
|
||||
note: "Per-title encryption keys (rights_id to titlekey mappings)"
|
||||
source_ref: "src/core/crypto/key_manager.cpp:659-660"
|
||||
|
||||
- name: "console.keys"
|
||||
required: false
|
||||
path: "switch/"
|
||||
mode: standalone
|
||||
note: "Console-specific keys (BIS, SD seed)"
|
||||
source_ref: "src/core/crypto/key_manager.cpp:661-662"
|
||||
|
||||
- name: "key_retail.bin"
|
||||
required: false
|
||||
path: "switch/"
|
||||
size: 160
|
||||
mode: standalone
|
||||
note: "Amiibo decryption keys (two InternalKey structs, 0x50 bytes each)"
|
||||
source_ref: "src/core/hle/service/nfc/common/amiibo_crypto.cpp:274-292"
|
||||
|
||||
notes: |
|
||||
Citron is a standalone Nintendo Switch emulator, community fork of yuzu by Zephyron.
|
||||
dev.keys can be used instead of prod.keys when use_dev_keys is enabled (for Switch dev units).
|
||||
Firmware (system NCAs) must be installed through Citron's UI from a firmware ZIP or NCA files.
|
||||
Required for commercial games. Homebrew (.nro, .nso) can run without keys or firmware.
|
||||
1248
emulators/clk.yml
1248
emulators/clk.yml
File diff suppressed because it is too large
Load Diff
@@ -1,157 +0,0 @@
|
||||
emulator: Demul
|
||||
type: standalone
|
||||
upstream: "https://demul.emulation64.com"
|
||||
profiled_date: "2026-03-26"
|
||||
core_version: "0.7"
|
||||
display_name: "Sega - Dreamcast/NAOMI/Hikaru (Demul)"
|
||||
cores:
|
||||
- demul
|
||||
systems:
|
||||
- sega-dreamcast
|
||||
- sega-naomi
|
||||
- sega-naomi2
|
||||
- sega-hikaru
|
||||
- sammy-atomiswave
|
||||
- sega-system-sp
|
||||
- gaelco-powervr
|
||||
- cave-cv1000
|
||||
|
||||
notes: |
|
||||
Closed-source Windows emulator for Sega Dreamcast and related arcade hardware.
|
||||
Run via Wine (32-bit, win32 prefix) on Linux platforms (Batocera, RetroBat).
|
||||
Uses MAME ROM naming conventions for arcade BIOS archives.
|
||||
|
||||
Batocera configgen (demulGenerator.py) maps roms0 to the BIOS directory.
|
||||
All BIOS ZIPs are placed directly in bios/ (no subdirectory prefix).
|
||||
Demul searches configured ROM paths for both game ROMs and BIOS archives.
|
||||
|
||||
Gaelco PowerVR and Cave CV1000 (3rd gen) games are self-contained ROM sets
|
||||
and do not require separate BIOS archives.
|
||||
|
||||
HLE MIE emulation available (changelog: "full HLE MIE" mode). LLE mode
|
||||
requires mie.zip with the 315-6146 MCU firmware.
|
||||
|
||||
Supported launch modes via -run= parameter:
|
||||
dc, naomi, naomi2, hikaru, atomiswave, gaelco, cave3rd, segasp.
|
||||
|
||||
BIOS requirements verified against Batocera configgen, batocera-systems
|
||||
declarations, MAME ROM set conventions, and community documentation.
|
||||
No source code available for direct verification.
|
||||
|
||||
files:
|
||||
# -------------------------------------------------------
|
||||
# Sega Dreamcast
|
||||
# -------------------------------------------------------
|
||||
- name: dc_boot.bin
|
||||
system: sega-dreamcast
|
||||
required: true
|
||||
size: 2097152
|
||||
note: "Dreamcast boot ROM (2 MB). No HLE fallback in Demul."
|
||||
|
||||
- name: dc_flash.bin
|
||||
system: sega-dreamcast
|
||||
required: false
|
||||
size: 131072
|
||||
note: "Dreamcast flash memory (128 KB). Created by emulator if missing."
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Sega NAOMI
|
||||
# -------------------------------------------------------
|
||||
- name: naomi.zip
|
||||
system: sega-naomi
|
||||
required: true
|
||||
category: bios_zip
|
||||
note: >
|
||||
NAOMI system BIOS archive (MAME format). Contains region-specific
|
||||
BIOS ROMs (EPR-21576 Japan, EPR-21577 USA, EPR-21578 Export,
|
||||
EPR-21579 Korea) plus development and special BIOS variants.
|
||||
|
||||
- name: naomigd.zip
|
||||
system: sega-naomi
|
||||
required: false
|
||||
category: bios_zip
|
||||
note: "NAOMI GD-ROM BIOS. Shares ROMs with naomi.zip (subset of region BIOS variants)."
|
||||
|
||||
- name: hod2bios.zip
|
||||
system: sega-naomi
|
||||
required: false
|
||||
category: bios_zip
|
||||
note: "House of the Dead 2 game-specific BIOS. Japan/USA/Export variants."
|
||||
|
||||
- name: f355bios.zip
|
||||
system: sega-naomi
|
||||
required: false
|
||||
category: bios_zip
|
||||
note: "Ferrari F355 Challenge game-specific BIOS. Japan/USA/Export variants."
|
||||
|
||||
- name: f355dlx.zip
|
||||
system: sega-naomi
|
||||
required: false
|
||||
category: bios_zip
|
||||
note: "Ferrari F355 Challenge Deluxe game-specific BIOS. Japan/USA/Export variants."
|
||||
|
||||
- name: airlbios.zip
|
||||
system: sega-naomi
|
||||
required: false
|
||||
category: bios_zip
|
||||
note: "Airline Pilots Deluxe game-specific BIOS. USA/Export variants."
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Sega NAOMI 2
|
||||
# -------------------------------------------------------
|
||||
- name: naomi2.zip
|
||||
system: sega-naomi2
|
||||
required: true
|
||||
category: bios_zip
|
||||
note: >
|
||||
NAOMI 2 system BIOS archive (MAME format). Contains region-specific
|
||||
BIOS ROMs (EPR-23605 Japan, EPR-23607 USA, EPR-23608 Export,
|
||||
EPR-23609 Korea, EPR-23610 Australia).
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Sega Hikaru
|
||||
# -------------------------------------------------------
|
||||
- name: hikaru.zip
|
||||
system: sega-hikaru
|
||||
required: true
|
||||
category: bios_zip
|
||||
note: >
|
||||
Hikaru system BIOS archive (MAME format). Contains EPR-23400a (latest),
|
||||
EPR-23400, EPR-21904 (early), prot_bot (dev/prototype). All 2 MB at IC94.
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Sammy Atomiswave
|
||||
# -------------------------------------------------------
|
||||
- name: awbios.zip
|
||||
system: sammy-atomiswave
|
||||
required: true
|
||||
category: bios_zip
|
||||
note: "Atomiswave system BIOS archive (MAME format). Contains bios0.ic23 and bios1.ic23 (128 KB each)."
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Sega System SP
|
||||
# -------------------------------------------------------
|
||||
- name: segasp.zip
|
||||
system: sega-system-sp
|
||||
required: true
|
||||
category: bios_zip
|
||||
note: >
|
||||
System SP (Aurora/Spider) BIOS archive (MAME format). Contains
|
||||
EPR-24236a, EPR-24328/a BIOS ROMs, serial EEPROM, and network
|
||||
firmware variants.
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Device ROMs (NAOMI / NAOMI 2 / Hikaru)
|
||||
# -------------------------------------------------------
|
||||
- name: mie.zip
|
||||
required: false
|
||||
hle_fallback: true
|
||||
category: bios_zip
|
||||
note: "MIE (Maple-JVS bridge) Z80 MCU firmware (315-6146.bin). HLE mode available; LLE mode requires this archive."
|
||||
|
||||
- name: jvs13551.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
note: >
|
||||
Sega 837-13551 JVS I/O board firmware. Contains sp5001.bin,
|
||||
sp5001-a.bin, sp5001-b.bin, sp5002-a.bin, 315-6215.bin.
|
||||
@@ -1,53 +0,0 @@
|
||||
emulator: eka2l1
|
||||
type: standalone
|
||||
source: "https://github.com/EKA2L1/EKA2L1"
|
||||
upstream: "https://github.com/EKA2L1/EKA2L1"
|
||||
profiled_date: "2026-03-26"
|
||||
core_version: "continuous"
|
||||
display_name: "EKA2L1 (Symbian OS / N-Gage)"
|
||||
cores:
|
||||
- eka2l1
|
||||
systems:
|
||||
- ngage
|
||||
analysis_date: "2026-03-26"
|
||||
analysis_commit: "e67f84d (depth=1)"
|
||||
mode: standalone
|
||||
|
||||
# EKA2L1 emulates Symbian OS kernel and reimplements critical app servers and
|
||||
# libraries. Supports S60v1 through Symbian Belle, including N-Gage 1.0/2.0.
|
||||
#
|
||||
# Each phone model requires its own ROM dump identified by firmware code.
|
||||
# ROM path at runtime: {storage}/roms/{firmware_code_lowercase}/SYM.ROM
|
||||
# Storage defaults to data/ relative to executable.
|
||||
#
|
||||
# Device installation (GUI or CLI) processes ROM dumps:
|
||||
# - Raw .rom files → copied to roms/{firmcode}/SYM.ROM
|
||||
# - RPKG files → extracted to drives/z/{firmcode}/ (system partition)
|
||||
# - VPL firmware packages → extracted to roms/ and drives/
|
||||
#
|
||||
# drives/z/{firmcode}/ content is generated during installation, not
|
||||
# user-placed. drives/c/, drives/d/, drives/e/ are runtime storage.
|
||||
#
|
||||
# Firmware codes for N-Gage systems:
|
||||
# NEM-4 = Nokia N-Gage (original, S60v1)
|
||||
# RH-29 = Nokia N-Gage QD (S60v1)
|
||||
# For N-Gage 2.0 games, a S60v3 phone ROM is needed (e.g., RM-409 = 5320 XpressMusic).
|
||||
#
|
||||
# No libretro core exists. No .info file.
|
||||
# resources/ files (shaders, soundfonts, gamecontrollerdb.txt) ship with the
|
||||
# emulator distribution, not user-supplied.
|
||||
|
||||
notes: |
|
||||
Pure standalone Symbian OS / N-Gage emulator. No libretro core.
|
||||
Requires phone ROM dumps (SYM.ROM) obtained from real Nokia devices.
|
||||
The emulator supports 100+ Nokia phone models (NEM-4, RH-29, RM-409, etc.).
|
||||
No hash or size validation on the ROM file; the loader parses the ROM structure.
|
||||
Batocera maps the ngage system to eka2l1 in configgen-defaults.yml.
|
||||
No dedicated Batocera configgen generator exists.
|
||||
|
||||
files:
|
||||
- name: "SYM.ROM"
|
||||
required: true
|
||||
mode: standalone
|
||||
description: "Symbian OS phone ROM dump. One per device, placed in roms/{firmware_code}/ subdirectory."
|
||||
source_ref: "src/emu/system/src/epoc.cpp:1225,754-759, src/emu/system/include/system/consts.h:23-25"
|
||||
@@ -1,10 +1,10 @@
|
||||
emulator: FS-UAE
|
||||
type: standalone + libretro
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/libretro-fsuae"
|
||||
upstream: "https://github.com/FrodeSolheim/fs-uae"
|
||||
profiled_date: "2026-03-26"
|
||||
core_version: "v5.0.7"
|
||||
profiled_date: "2026-03-23"
|
||||
core_version: "v2.7.15"
|
||||
display_name: "Commodore - Amiga (FS-UAE)"
|
||||
cores:
|
||||
- fsuae
|
||||
@@ -14,143 +14,122 @@ systems:
|
||||
notes: |
|
||||
FS-UAE is an Amiga emulator by Frode Solheim, based on UAE/WinUAE.
|
||||
|
||||
Standalone: scans --kickstarts_dir for .rom/.bin files (default: Documents/FS-UAE/Kickstarts/).
|
||||
Batocera overrides to bios/amiga/ via --kickstarts_dir (fsuaePaths.py:8, fsuaeGenerator.py:68).
|
||||
Libretro port: scans save_dir/fsuae/Kickstarts/ (frozen at v2.7.15).
|
||||
Identification by SHA-1 checksum, not filename (rommgr.cpp:92-151, romservice.py:78-91).
|
||||
AROS kickstart (1 MB) compiled into binary as fallback for all models (rommgr.cpp:112).
|
||||
rom.key searched in kickstart dir and multiple fallback paths (rommgr.cpp:1397-1498).
|
||||
ROMs loaded from save_dir/fsuae/Kickstarts/ (not system_dir).
|
||||
base_dir = RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY/fsuae (paths.c:197).
|
||||
Also scans base_dir/AmigaForever/Amiga Files/Shared/rom/ (config.c:129-135).
|
||||
Scans for .rom and .bin files. Identification by SHA-1 checksum, not filename.
|
||||
AROS kickstart (512 KB) bundled in fs-uae.dat as fallback for all models.
|
||||
rom.key enables decryption of Cloanto Amiga Forever encrypted ROMs.
|
||||
|
||||
Supported models: A1000, A500, A500+, A600, A1200, A3000, A4000, A4000T, CD32, CDTV.
|
||||
Default model is A500. Each model auto-selects its kickstart via quickstart
|
||||
mechanism (cfgfile.cpp:9468-9517 for A500, cfgfile.cpp:9732-9791 for dispatch).
|
||||
Supported models: A1000, A500, A500+, A600, A1200, A3000, A4000, CD32, CDTV.
|
||||
Default model is A500 (config.c:42). Each model auto-selects its kickstart
|
||||
via quickstart mechanism (cfgfile.c:7111-7154, config.c:140).
|
||||
|
||||
ROM database shared between standalone and libretro (same WinUAE-derived rommgr.cpp).
|
||||
Upstream v5.0.7 has a larger database (332 vs ~200 ROM IDs in libretro port).
|
||||
Also supports Arcadia, ALG, freezer cartridges, SCSI/CPU board ROMs when configured.
|
||||
The .info declares firmware_count=0. All ROMs are auto-discovered by
|
||||
directory scan, not by explicit filename lookup.
|
||||
|
||||
Libretro port is frozen at v2.7.15. Upstream ROM database is larger (3030
|
||||
vs 1980 lines in rommgr). Core functionality equivalent for standard models.
|
||||
|
||||
files:
|
||||
- name: "amiga-os-130.rom"
|
||||
system: amiga
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 262144
|
||||
sha1: "891e9a547772fe0c6c19b610baf8bc4ea7fcb785"
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
note: "Amiga 500 Kickstart 1.3 r34.5. Default model ROM."
|
||||
source_ref: "rommgr.cpp:150-151 (id=6, ROMTYPE_KICK)"
|
||||
source_ref: "sources/src/rommgr.c:141-142 (id=6, ROMTYPE_KICK)"
|
||||
|
||||
- name: "amiga-os-204.rom"
|
||||
system: amiga
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 524288
|
||||
sha1: "c5839f5cb98a7a8947065c3ed2f14f5f42e334a1"
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
note: "Amiga 500+ Kickstart 2.04 r37.175."
|
||||
source_ref: "rommgr.cpp:158-159 (id=7, ROMTYPE_KICK)"
|
||||
source_ref: "sources/src/rommgr.c:149-150 (id=7, ROMTYPE_KICK)"
|
||||
|
||||
- name: "amiga-os-205.rom"
|
||||
system: amiga
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 524288
|
||||
sha1: "02843c4253bbd29aba535b0aa3bd9a85034ecde4"
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
note: "Amiga 600 Kickstart 2.05 r37.350."
|
||||
source_ref: "rommgr.cpp:164-165 (id=10, ROMTYPE_KICK)"
|
||||
source_ref: "sources/src/rommgr.c:155-156 (id=10, ROMTYPE_KICK)"
|
||||
|
||||
- name: "amiga-os-120.rom"
|
||||
system: amiga
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 262144
|
||||
sha1: "11f9e62cf299f72184835b7b2a70a16333fc0d88"
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
note: "Amiga 1000 Kickstart 1.2 r33.180."
|
||||
source_ref: "rommgr.cpp:148-149 (id=5, ROMTYPE_KICK)"
|
||||
source_ref: "sources/src/rommgr.c:139-140 (id=5, ROMTYPE_KICK)"
|
||||
|
||||
- name: "amiga-os-310-a1200.rom"
|
||||
system: amiga
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 524288
|
||||
sha1: "e21545723fe8374e91342617604f1b3d703094f1"
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
note: "Amiga 1200 Kickstart 3.1 r40.68."
|
||||
source_ref: "rommgr.cpp:185-186 (id=15, ROMTYPE_KICK)"
|
||||
source_ref: "sources/src/rommgr.c:176-177 (id=15, ROMTYPE_KICK)"
|
||||
|
||||
- name: "amiga-os-310-a3000.rom"
|
||||
system: amiga
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 524288
|
||||
sha1: "f8e210d72b4c4853e0c9b85d223ba20e3d1b36ee"
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
note: "Amiga 3000 Kickstart 3.1 r40.68."
|
||||
source_ref: "rommgr.cpp:189-190 (id=61, ROMTYPE_KICK)"
|
||||
source_ref: "sources/src/rommgr.c:180-181 (id=61, ROMTYPE_KICK)"
|
||||
|
||||
- name: "amiga-os-310-a4000.rom"
|
||||
system: amiga
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 524288
|
||||
sha1: "5fe04842d04a489720f0f4bb0e46948199406f49"
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
note: "Amiga 4000 Kickstart 3.1 r40.68."
|
||||
source_ref: "rommgr.cpp:195-196 (id=16, ROMTYPE_KICK)"
|
||||
source_ref: "sources/src/rommgr.c:186-187 (id=16, ROMTYPE_KICK)"
|
||||
|
||||
- name: "amiga-os-310-cd32.rom"
|
||||
system: amiga
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 524288
|
||||
sha1: "3525be8887f79b5929e017b42380a79edfee542d"
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
note: "Amiga CD32 Kickstart 3.1 r40.60."
|
||||
source_ref: "rommgr.cpp:312-313 (id=18, ROMTYPE_KICKCD32)"
|
||||
source_ref: "sources/src/rommgr.c:197-198 (id=18, ROMTYPE_KICKCD32)"
|
||||
|
||||
- name: "amiga-ext-310-cd32.rom"
|
||||
system: amiga
|
||||
required: false
|
||||
size: 524288
|
||||
sha1: "5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
note: "CD32 extended ROM r40.60. Required for CD32 mode."
|
||||
source_ref: "rommgr.cpp:314-315 (id=19, ROMTYPE_EXTCD32)"
|
||||
source_ref: "sources/src/rommgr.c:199-200 (id=19, ROMTYPE_EXTCD32)"
|
||||
|
||||
- name: "cd32fmv.rom"
|
||||
system: amiga
|
||||
required: false
|
||||
size: 262144
|
||||
sha1: "03ca81c7a7b259cf64bc9582863eca0f6529f435"
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
note: "CD32 Full Motion Video cartridge ROM v40.30. Also accepts v40.22 (391777-01)."
|
||||
source_ref: "rommgr.cpp:323-326 (id=23/74, ROMTYPE_CD32CART)"
|
||||
note: "CD32 Full Motion Video cartridge ROM. For CD32/FMV model."
|
||||
source_ref: "sources/src/rommgr.c:208-209 (id=23, ROMTYPE_CD32CART)"
|
||||
|
||||
- name: "amiga-ext-130-cdtv.rom"
|
||||
system: amiga
|
||||
required: false
|
||||
size: 262144
|
||||
sha1: "7ba40ffa17e500ed9fed041f3424bd81d9c907be"
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
note: "CDTV extended ROM v1.0. Required for CDTV mode. Also accepts v2.30 and v2.7."
|
||||
source_ref: "rommgr.cpp:328-329 (id=20, ROMTYPE_EXTCDTV)"
|
||||
note: "CDTV extended ROM v1.0. Required for CDTV mode."
|
||||
source_ref: "sources/src/rommgr.c:213-214 (id=20, ROMTYPE_EXTCDTV)"
|
||||
|
||||
- name: "rom.key"
|
||||
system: amiga
|
||||
required: false
|
||||
mode: both
|
||||
note: "Cloanto Amiga Forever decryption key. Enables encrypted ROM loading."
|
||||
source_ref: "rommgr.cpp:119-124 (ROMTYPE_KEY), rommgr.cpp:1397-1412 (addkeydir)"
|
||||
source_ref: "libretro/libretro.c:206-222 (addkeyfile via amiga_add_key_dir)"
|
||||
|
||||
@@ -8,7 +8,6 @@ core_version: "v1.7.4"
|
||||
display_name: "Sega - MS/GG/MD/CD (Genesis Plus GX)"
|
||||
cores:
|
||||
- genesis_plus_gx
|
||||
- genesisplusgx
|
||||
systems:
|
||||
- sega-megadrive
|
||||
- sega-megacd
|
||||
|
||||
@@ -8,7 +8,6 @@ core_version: "v1.7.4"
|
||||
display_name: "Sega - MS/GG/MD/CD (Genesis Plus GX Wide)"
|
||||
cores:
|
||||
- genesis_plus_gx_wide
|
||||
- genesisplusgxwide
|
||||
systems:
|
||||
- sega-megadrive
|
||||
- sega-megacd
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
emulator: GSplus
|
||||
type: standalone
|
||||
source: "https://github.com/digarok/gsplus"
|
||||
upstream: "https://github.com/digarok/gsplus"
|
||||
profiled_date: "2026-03-26"
|
||||
core_version: "KEGS 1.38"
|
||||
display_name: "Apple - Apple IIGS (GSplus)"
|
||||
cores:
|
||||
- gsplus
|
||||
systems:
|
||||
- apple-iigs
|
||||
|
||||
notes: |
|
||||
Fork of KEGS (Kent's Emulated GS) by digarok. Cross-platform Apple IIGS
|
||||
emulator supporting ROM 01 (128K), ROM 03 (256K), and Apple //e (32K) ROMs.
|
||||
ROM version determined by file size at load time.
|
||||
|
||||
Batocera configgen (gsplusGenerator.py) sets g_cfg_rom_path to bios/ROM.03
|
||||
by default (configurable via gsplus_bios_filename system setting).
|
||||
|
||||
Built-in Disk II controller PROM derived via XOR diffs from main ROM.
|
||||
Built-in HD SmartPort PROM (slot 7) hardcoded in source.
|
||||
Built-in character font (kegsfont.h), optional ROMX-compatible charrom
|
||||
loadable via config UI.
|
||||
|
||||
files:
|
||||
- name: ROM
|
||||
aliases: [ROM.01, ROM.03, APPLE2GS.ROM, APPLE2GS.ROM2, xgs.rom, XGS.ROM, Rom03gd, 342-0077-b]
|
||||
required: true
|
||||
description: "Apple IIGS system ROM"
|
||||
source_ref: "config.c:131,403-407,1092-1149"
|
||||
note: "Accepted sizes: 32768 (Apple //e), 131072 (ROM 01), 262144 (ROM 03)"
|
||||
validation: [size]
|
||||
|
||||
- name: c600.rom
|
||||
aliases: [controller.rom, disk.rom, DISK.ROM, diskII.prom]
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 256
|
||||
description: "Disk II controller PROM (slot 6)"
|
||||
validation: [size]
|
||||
source_ref: "config.c:414-415,1188-1220"
|
||||
note: "Built-in PROM generated from XOR diffs against main ROM"
|
||||
@@ -2,8 +2,7 @@ emulator: "Game & Watch"
|
||||
type: libretro
|
||||
core_classification: pure_libretro
|
||||
source: "https://github.com/libretro/gw-libretro"
|
||||
upstream: "http://www.madrigaldesign.it/sim/"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-21"
|
||||
core_version: "Git"
|
||||
display_name: "Handheld Electronic (GW)"
|
||||
cores:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
emulator: Hatari
|
||||
type: standalone + libretro
|
||||
type: libretro
|
||||
core_classification: frozen_snapshot
|
||||
source: "https://github.com/libretro/hatari"
|
||||
upstream: "https://github.com/hatari/hatari"
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
emulator: Lexaloffle
|
||||
type: standalone
|
||||
upstream: "https://www.lexaloffle.com/"
|
||||
profiled_date: "2026-03-26"
|
||||
display_name: "Lexaloffle - PICO-8 / Voxatron"
|
||||
cores:
|
||||
- lexaloffle
|
||||
systems:
|
||||
- pico8
|
||||
- voxatron
|
||||
|
||||
notes: |
|
||||
Commercial fantasy consoles by Lexaloffle Games LLP. Closed-source binaries
|
||||
distributed as ZIP archives from lexaloffle.com (requires purchase).
|
||||
|
||||
Batocera configgen (lexaloffleGenerator.py) handles both systems via a single
|
||||
generator. PICO-8: binary at bios/pico-8/pico8. Voxatron: binary at
|
||||
bios/voxatron/vox. Generator checks binary existence and executable permission,
|
||||
raises BatoceraException if missing. LD_LIBRARY_PATH set to the BIOS directory
|
||||
for shared library resolution.
|
||||
|
||||
Each distribution ships a statically linked binary (pico8/vox) and a dynamically
|
||||
linked variant (pico8_dyn/vox_dyn). Batocera uses the static binary. The .dat
|
||||
file is loaded at startup and contains boot sequence, themes, and internal data.
|
||||
|
||||
PICO-8 supports x86_64 and ARM (Raspberry Pi). Voxatron x86_64 only.
|
||||
Voxatron depends on libHoloPlayCore.so (Looking Glass SDK), compile-time linked.
|
||||
|
||||
files:
|
||||
# -------------------------------------------------------
|
||||
# PICO-8
|
||||
# -------------------------------------------------------
|
||||
- name: pico8
|
||||
path: pico-8/pico8
|
||||
system: pico8
|
||||
required: true
|
||||
description: "PICO-8 main executable (statically linked)"
|
||||
source_ref: "lexaloffleGenerator.py:17,36,48-49"
|
||||
note: "Configgen checks existence and executable permission"
|
||||
|
||||
- name: pico8_dyn
|
||||
path: pico-8/pico8_dyn
|
||||
system: pico8
|
||||
required: false
|
||||
description: "PICO-8 dynamically linked executable"
|
||||
source_ref: "lexaloffleGenerator.py:17,36"
|
||||
note: "Alternative to pico8. Requires system SDL2. Some platforms prefer this variant."
|
||||
|
||||
- name: pico8.dat
|
||||
path: pico-8/pico8.dat
|
||||
system: pico8
|
||||
required: true
|
||||
description: "PICO-8 data file (boot sequence, themes, demo carts)"
|
||||
note: "POD format. Loaded by pico8/pico8_dyn from same directory at startup."
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Voxatron
|
||||
# -------------------------------------------------------
|
||||
- name: vox
|
||||
path: voxatron/vox
|
||||
system: voxatron
|
||||
required: true
|
||||
description: "Voxatron main executable"
|
||||
source_ref: "lexaloffleGenerator.py:20,42,48-49"
|
||||
note: "Configgen checks existence and executable permission. x86_64 only."
|
||||
|
||||
- name: vox_dyn
|
||||
path: voxatron/vox_dyn
|
||||
system: voxatron
|
||||
required: false
|
||||
description: "Voxatron dynamically linked executable"
|
||||
source_ref: "lexaloffleGenerator.py:20,42"
|
||||
note: "Alternative to vox. Requires system SDL2."
|
||||
|
||||
- name: vox.dat
|
||||
path: voxatron/vox.dat
|
||||
system: voxatron
|
||||
required: true
|
||||
description: "Voxatron data file"
|
||||
note: "Loaded by vox/vox_dyn from same directory at startup."
|
||||
|
||||
- name: libHoloPlayCore.so
|
||||
path: voxatron/libHoloPlayCore.so
|
||||
system: voxatron
|
||||
required: true
|
||||
description: "Looking Glass holographic display support library"
|
||||
source_ref: "lexaloffleGenerator.py:89"
|
||||
note: "Compile-time linked dependency. LD_LIBRARY_PATH set to bios/voxatron/ by configgen."
|
||||
@@ -3,7 +3,7 @@ type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/timoinutilis/lowres-nx"
|
||||
upstream: "https://github.com/timoinutilis/lowres-nx"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-22"
|
||||
core_version: "v1.2"
|
||||
display_name: "LowRes NX"
|
||||
cores:
|
||||
@@ -18,10 +18,9 @@ notes: |
|
||||
the same repository.
|
||||
|
||||
retro_load_game() copies the .nx source code into memory
|
||||
(libretro_main.c:490-493) and compiles it with the built-in interpreter.
|
||||
The boot intro is a string constant embedded in boot_intro.c:26. Default
|
||||
characters and charsets are compiled-in C arrays. The core never calls
|
||||
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. No BIOS, firmware, or external
|
||||
(libretro_main.c:490) and compiles it with the built-in interpreter.
|
||||
The boot intro is a string constant embedded in boot_intro.c. The core
|
||||
never accesses the system directory. No BIOS, firmware, or external
|
||||
files required.
|
||||
|
||||
files: []
|
||||
|
||||
@@ -7,7 +7,7 @@ type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/ps2"
|
||||
upstream: "https://github.com/PCSX2/pcsx2"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-24"
|
||||
core_version: "Git"
|
||||
display_name: "Sony - PlayStation 2 (LRPS2)"
|
||||
cores: [lrps2]
|
||||
@@ -17,14 +17,12 @@ bios_directory: "pcsx2/bios/"
|
||||
resources_directory: "pcsx2/resources/"
|
||||
|
||||
notes: |
|
||||
Hard fork of PCSX2 (pre-Qt, 1.7-dev era) ported to libretro. x86_64 only.
|
||||
BIOS detection is filename-agnostic: scans pcsx2/bios/ for any file between 4-8 MB
|
||||
with a valid romdir structure (RESET + ROMVER entries). No hash validation.
|
||||
Companion files (.rom1, .rom2, .nvm, .mec) derive paths from the selected BIOS.
|
||||
DEV9 (network/HDD) and USB are stubbed in the libretro port.
|
||||
Widescreen patches are largely compiled into the core (libretro/patches.cpp).
|
||||
.info firmware_count=2 counts the bios folder and GameIndex.yaml.
|
||||
.info description mentions EROM.BIN but no EROM loading path exists in the code.
|
||||
Hard fork of PCSX2 ported to libretro. BIOS detection is filename-agnostic: the core
|
||||
scans pcsx2/bios/ for any file between 4-8 MB with a valid romdir structure containing
|
||||
RESET and ROMVER entries. The ROMVER entry determines region and version.
|
||||
Companion files (.rom1, .rom2, .nvm, .mec) derive their paths from the selected BIOS.
|
||||
DEV9 (network adapter) and USB are stubbed in the libretro port.
|
||||
GameIndex.yaml in pcsx2/resources/ provides per-game patches for compatibility.
|
||||
|
||||
files:
|
||||
- name: "<bios>.bin"
|
||||
@@ -34,7 +32,7 @@ files:
|
||||
min_size: 4194304
|
||||
max_size: 8388608
|
||||
validation: [size]
|
||||
source_ref: "pcsx2/ps2/BiosTools.cpp:231-254,267-322"
|
||||
source_ref: "pcsx2/ps2/BiosTools.cpp:230-254,266-322"
|
||||
note: >
|
||||
Scans pcsx2/bios/ for any file between 4 MB and 8 MB. Validates via romdir
|
||||
structure parsing (RESET + ROMVER entries). User selects BIOS via core option
|
||||
@@ -45,7 +43,7 @@ files:
|
||||
required: false
|
||||
max_size: 4194304
|
||||
description: "DVD player ROM"
|
||||
source_ref: "pcsx2/ps2/BiosTools.cpp:190-211,314"
|
||||
source_ref: "pcsx2/ps2/BiosTools.cpp:189-210,313"
|
||||
note: >
|
||||
DVD player ROM. Tries <biospath>.rom1 (appended) then <biosbase>.rom1
|
||||
(extension replaced). Silently skipped if not found.
|
||||
@@ -53,9 +51,9 @@ files:
|
||||
- name: "<bios>.rom2"
|
||||
path: "pcsx2/bios/"
|
||||
required: false
|
||||
max_size: 524288
|
||||
max_size: 4194304
|
||||
description: "Chinese ROM extension"
|
||||
source_ref: "pcsx2/ps2/BiosTools.cpp:190-211,315"
|
||||
source_ref: "pcsx2/ps2/BiosTools.cpp:189-210,314"
|
||||
note: >
|
||||
Chinese region ROM extension. Same naming convention as rom1.
|
||||
Only present on Chinese region consoles.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
emulator: MAME
|
||||
type: standalone + libretro
|
||||
type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/libretro/mame"
|
||||
upstream: "https://github.com/mamedev/mame"
|
||||
|
||||
@@ -11,7 +11,6 @@ mame_version: "0.78 (plus backports)"
|
||||
|
||||
cores:
|
||||
- mame2003_plus
|
||||
- mame078plus
|
||||
|
||||
systems:
|
||||
- snk-neogeo-mvs
|
||||
|
||||
@@ -6,7 +6,7 @@ upstream: "https://mednafen.github.io/"
|
||||
profiled_date: "2026-03-24"
|
||||
core_version: "v1.31.0.0"
|
||||
display_name: "NEC - PC Engine / CD (Beetle PCE FAST)"
|
||||
cores: [mednafen_pce_fast, pce_fast]
|
||||
cores: [mednafen_pce_fast]
|
||||
systems: [nec-pc-engine]
|
||||
verification: existence
|
||||
notes: >
|
||||
|
||||
@@ -9,7 +9,7 @@ source: "https://github.com/libretro/Mesen-S"
|
||||
upstream: "https://github.com/SourMesen/Mesen-S"
|
||||
profiled_date: "2026-03-24"
|
||||
core_version: "0.4.0"
|
||||
cores: [mesen-s, mesen_s]
|
||||
cores: [mesen-s]
|
||||
systems: [nintendo-snes, nintendo-gb, nintendo-gbc, nintendo-super-game-boy, nintendo-satellaview]
|
||||
|
||||
notes: >
|
||||
|
||||
@@ -12,11 +12,10 @@ cores: [mupen64plus_next, mupen64plus_next_develop, mupen64plus_next_gles3, mupe
|
||||
files:
|
||||
- name: "IPL.n64"
|
||||
path: "Mupen64plus/IPL.n64"
|
||||
standalone_path: "64DD_IPL.bin"
|
||||
aliases: ["64DD_IPL.bin"]
|
||||
size: 4194304
|
||||
required: false
|
||||
description: "64DD IPL ROM"
|
||||
note: "Only needed for N64 Disk Drive games (.ndd) via subsystem API. Accepts Z64, N64, and V64 byte-swap formats."
|
||||
source_ref: "mupen64plus-core/src/main/main.c:940-1024"
|
||||
|
||||
- name: "font.ttf"
|
||||
|
||||
@@ -1,192 +0,0 @@
|
||||
emulator: openMSX
|
||||
type: standalone
|
||||
source: "https://github.com/openMSX/openMSX"
|
||||
upstream: "https://github.com/openMSX/openMSX"
|
||||
profiled_date: "2026-03-26"
|
||||
core_version: "21.0"
|
||||
display_name: "MSX / ColecoVision / Spectravideo (openMSX)"
|
||||
cores:
|
||||
- openmsx
|
||||
systems:
|
||||
- msx
|
||||
- msx1
|
||||
- msx2
|
||||
- msx2+
|
||||
- msxturbor
|
||||
- colecovision
|
||||
- spectravideo
|
||||
|
||||
notes: |
|
||||
Standalone MSX emulator supporting MSX1 through turboR, ColecoVision,
|
||||
Spectravideo, and Pioneer LaserDisc hardware. Uses XML machine definitions
|
||||
(share/machines/) that describe complete hardware configurations and
|
||||
reference system ROMs by filename and SHA1 hash.
|
||||
|
||||
ROM resolution via FilePool (src/file/FilePool.cc, FilePoolCore.cc):
|
||||
searches configured directories for files matching SHA1 checksums.
|
||||
Filenames are secondary hints; SHA1 is the primary lookup key.
|
||||
Files may be gzipped or individually zipped.
|
||||
|
||||
Batocera configgen (openmsxGenerator.py) configures filepool paths
|
||||
(/userdata/bios/Machines position 1, /userdata/bios/openmsx position 2)
|
||||
and selects machines per system type:
|
||||
msx1, msx2 -> Boosted_MSX2_EN (enhanced Philips NMS 8245)
|
||||
msx2+ -> Boosted_MSX2+_JP (enhanced Panasonic FS-A1WSX)
|
||||
msxturbor -> Boosted_MSXturboR_with_IDE (enhanced Panasonic FS-A1GT)
|
||||
colecovision -> ColecoVision_SGM
|
||||
spectravideo -> Spectravideo_SVI-328
|
||||
laserdisc (.ogv) -> Pioneer_PX-7
|
||||
|
||||
C-BIOS (open source MSX BIOS replacement) is shipped with openMSX in
|
||||
Contrib/cbios/ and supports cartridge-only games. Not used by Batocera.
|
||||
|
||||
237 machine definitions exist in total. Each machine has its own ROM
|
||||
requirements. Only ROMs for Batocera-selected machines are listed here.
|
||||
Users selecting other machines via openMSX GUI need additional ROMs.
|
||||
|
||||
files:
|
||||
# -------------------------------------------------------
|
||||
# Boosted_MSX2_EN (msx1, msx2)
|
||||
# Based on Philips NMS 8245 with extra hardware
|
||||
# -------------------------------------------------------
|
||||
- name: NMS8245SystemROM1.08.bin
|
||||
sha1: cc57c1dcd7249ea9f8e2547244592e7d97308ed0
|
||||
required: true
|
||||
size: 65536
|
||||
description: "NMS 8245 combined system ROM (BIOS+BASIC 0x0000-0x7FFF, Sub ROM 0x8000-0xBFFF, FDC 0xC000-0xFFFF)"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Boosted_MSX2_EN.xml:24,65,111"
|
||||
|
||||
- name: fmpac.rom
|
||||
sha1: fec451b9256570a0e4869355a40329c57f40705f
|
||||
required: true
|
||||
description: "Panasonic SW-M004 FMPAC (FM-PAC) sound cartridge ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Boosted_MSX2_EN.xml:83"
|
||||
|
||||
- name: phc-70fd2_basickun.rom
|
||||
sha1: 22b3191d865010264001b9d896186a9818478a6b
|
||||
required: true
|
||||
description: "Sanyo PHC-70FD2 MSX-BASIC Kun compiler ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Boosted_MSX2_EN.xml:89, Boosted_MSX2+_JP.xml:167, Boosted_MSXturboR_with_IDE.xml:79"
|
||||
|
||||
- name: yrw801.rom
|
||||
sha1: 32760893ce06dbe3930627755ba065cc3d8ec6ca
|
||||
required: true
|
||||
description: "Yamaha YRW801 MoonSound wavetable ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Boosted_MSX2_EN.xml:186, Boosted_MSX2+_JP.xml:120, Boosted_MSXturboR_with_IDE.xml:202"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Boosted_MSX2+_JP (msx2+)
|
||||
# Based on Panasonic FS-A1WSX with extra hardware
|
||||
# -------------------------------------------------------
|
||||
- name: fs-a1wsx_basic-bios2p.rom
|
||||
sha1: f4433752d3bf876bfefb363c749d4d2e08a218b6
|
||||
required: true
|
||||
description: "FS-A1WSX MSX2+ BIOS and BASIC ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Boosted_MSX2+_JP.xml:143"
|
||||
|
||||
- name: fs-a1wsx_fmbasic.rom
|
||||
sha1: aad42ba4289b33d8eed225d42cea930b7fc5c228
|
||||
required: true
|
||||
description: "FS-A1WSX MSX-MUSIC (OPLL) ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Boosted_MSX2+_JP.xml:155"
|
||||
|
||||
- name: fs-a1wsx_msx2psub.rom
|
||||
sha1: fe0254cbfc11405b79e7c86c7769bd6322b04995
|
||||
required: true
|
||||
description: "FS-A1WSX MSX2+ Sub ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Boosted_MSX2+_JP.xml:218"
|
||||
|
||||
- name: fs-a1wsx_kanjibasic.rom
|
||||
sha1: dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06
|
||||
required: true
|
||||
description: "FS-A1WSX Kanji Driver with BASIC ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Boosted_MSX2+_JP.xml:225"
|
||||
|
||||
- name: fs-a1wsx_disk.rom
|
||||
sha1: 7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6
|
||||
required: true
|
||||
description: "FS-A1WSX FDC (TC8566AF) disk controller ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Boosted_MSX2+_JP.xml:237"
|
||||
|
||||
- name: fs-a1wsx_firmware.rom
|
||||
sha1: 3330d9b6b76e3c4ccb7cf252496ed15d08b95d3f
|
||||
required: true
|
||||
description: "FS-A1WSX Panasonic firmware ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Boosted_MSX2+_JP.xml:251"
|
||||
|
||||
- name: fs-a1wsx_kanjifont.rom
|
||||
sha1: 5aff2d9b6efc723bc395b0f96f0adfa83cc54a49
|
||||
aliases: [fs-a1gt_kanjifont.rom]
|
||||
required: true
|
||||
description: "Kanji font ROM (shared by FS-A1WSX and FS-A1GT machines)"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Boosted_MSX2+_JP.xml:28, Boosted_MSXturboR_with_IDE.xml:215"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Boosted_MSXturboR_with_IDE (msxturbor)
|
||||
# Based on Panasonic FS-A1GT with IDE interface
|
||||
# -------------------------------------------------------
|
||||
- name: fs-a1gt_firmware.rom
|
||||
sha1:
|
||||
- e779c338eb91a7dea3ff75f3fde76b8af22c4a3a
|
||||
- 5fa3aa79aeba2c0441f349e78e9a16d9d64422ea
|
||||
required: true
|
||||
description: "FS-A1GT turboR combined firmware (512KB, contains BIOS, Sub ROM, Kanji, FDC, MSX-MUSIC, Opening ROM)"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Boosted_MSXturboR_with_IDE.xml:23"
|
||||
|
||||
- name: ide250.dat
|
||||
sha1: 93e41c7d479bc90c1d1f6d081af20fd9924b8ada
|
||||
required: true
|
||||
description: "Sunrise IDE 2.50 interface ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Boosted_MSXturboR_with_IDE.xml:49"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# ColecoVision_SGM (colecovision)
|
||||
# ColecoVision with built-in Super Game Module
|
||||
# -------------------------------------------------------
|
||||
- name: COLECO.ROM
|
||||
sha1: 45bedc4cbdeac66c7df59e9e599195c778d86a92
|
||||
required: true
|
||||
description: "ColecoVision system BIOS ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/ColecoVision_SGM.xml:57"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Spectravideo_SVI-328 (spectravideo)
|
||||
# -------------------------------------------------------
|
||||
- name: svi-3x8_v111.rom
|
||||
sha1: 10349ce675f6d6d47f0976e39cb7188eba858d89
|
||||
required: true
|
||||
description: "SVI-328 BASIC v1.11 ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Spectravideo_SVI-328.xml:52"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Pioneer_PX-7 (laserdisc)
|
||||
# MSX1 with LaserDisc controller
|
||||
# -------------------------------------------------------
|
||||
- name: px-7_basic-bios1.rom
|
||||
sha1: 302afb5d8be26c758309ca3df611ae69cced2821
|
||||
required: true
|
||||
description: "Pioneer PX-7 MSX1 BIOS and BASIC ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Pioneer_PX-7.xml:67"
|
||||
|
||||
- name: px-7_pbasic.rom
|
||||
sha1: 665d805f96616e1037f1823050657b7849899283
|
||||
required: true
|
||||
description: "Pioneer PX-7 LaserDisc PBASIC controller ROM"
|
||||
validation: [sha1]
|
||||
source_ref: "share/machines/Pioneer_PX-7.xml:82"
|
||||
@@ -6,7 +6,7 @@ upstream: "https://github.com/opentyrian/opentyrian"
|
||||
profiled_date: "2026-03-24"
|
||||
core_version: "1.0.0.6"
|
||||
display_name: "Tyrian (OpenTyrian)"
|
||||
cores: [opentyrian, tyrian]
|
||||
cores: [opentyrian]
|
||||
systems: [tyrian]
|
||||
verification: existence
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ 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"
|
||||
profiled_date: "2026-03-24"
|
||||
core_version: "r25"
|
||||
display_name: "Sony - PlayStation (PCSX ReARMed)"
|
||||
cores: [pcsx_rearmed, pcsx_rearmed_neon, pcsx_rearmed_interpreter]
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
emulator: Ryujinx
|
||||
type: standalone
|
||||
source: "https://git.ngram.ca/mirrors/Ryujinx"
|
||||
upstream: "https://github.com/Ryujinx/Ryujinx"
|
||||
profiled_date: "2026-03-26"
|
||||
core_version: "1.1.1403"
|
||||
display_name: "Ryujinx (Nintendo Switch)"
|
||||
systems: [nintendo-switch]
|
||||
analysis_date: "2026-03-26"
|
||||
analysis_commit: "HEAD (depth=1, ngram.ca mirror)"
|
||||
mode: standalone
|
||||
|
||||
# Key files are read from {BaseDirPath}/system/ (AppDataManager.cs:229)
|
||||
# Also searched in ~/.switch/ (AppDataManager.cs:47)
|
||||
# Batocera copies bios/switch/prod.keys to Ryujinx/system/prod.keys (ryujinxGenerator.py:108)
|
||||
# Firmware NCAs are installed via UI (ContentManager.cs:429), not placed as files
|
||||
|
||||
files:
|
||||
- name: "prod.keys"
|
||||
required: true
|
||||
path: "switch/"
|
||||
mode: standalone
|
||||
note: "Switch production keys for NCA decryption"
|
||||
source_ref: "src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs:239"
|
||||
|
||||
- name: "title.keys"
|
||||
required: false
|
||||
path: "switch/"
|
||||
mode: standalone
|
||||
note: "Per-title decryption keys, needed for specific game content"
|
||||
source_ref: "src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs:240"
|
||||
|
||||
- name: "console.keys"
|
||||
required: false
|
||||
path: "switch/"
|
||||
mode: standalone
|
||||
note: "Console-specific keys for encrypted content"
|
||||
source_ref: "src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs:241"
|
||||
|
||||
notes: |
|
||||
Ryujinx is a standalone Nintendo Switch emulator written in C#, created by gdkchan.
|
||||
Original repo discontinued October 2024 after Nintendo takedown.
|
||||
Firmware (system NCAs) must be installed through Ryujinx's UI from a ZIP or XCI.
|
||||
Required for commercial games (.nsp, .xci). Homebrew (.nro, .nso) runs without firmware.
|
||||
Firmware provides shared fonts, timezone data, SSL certificates, system version info.
|
||||
@@ -1,135 +0,0 @@
|
||||
emulator: shadps4
|
||||
type: standalone
|
||||
source: "https://github.com/shadps4-emu/shadPS4"
|
||||
upstream: "https://github.com/shadps4-emu/shadPS4"
|
||||
profiled_date: "2026-03-26"
|
||||
core_version: "pre-release 2026-03-25"
|
||||
display_name: "shadPS4 (PlayStation 4)"
|
||||
cores:
|
||||
- shadps4
|
||||
systems:
|
||||
- ps4
|
||||
mode: standalone
|
||||
analysis_date: "2026-03-26"
|
||||
analysis_commit: "31b2d9c (depth=1)"
|
||||
|
||||
notes: |
|
||||
shadPS4 is a standalone PlayStation 4 emulator. Most PS4 system libraries
|
||||
are reimplemented in HLE. For better game compatibility, real firmware
|
||||
modules (.sprx) can be loaded in LLE mode from the sys_modules/ directory.
|
||||
|
||||
Modules are loaded by sysmodule_internal.cpp via loadModuleInternal().
|
||||
If a module exists in sys_modules/, it is loaded as LLE. If absent and
|
||||
an HLE implementation exists, the emulator falls back to HLE. If neither,
|
||||
the module is stubbed and games needing it may fail.
|
||||
|
||||
Game-specific overrides are supported: sys_modules/{CUSA_ID}/ takes
|
||||
priority over the global sys_modules/ directory.
|
||||
|
||||
System fonts are mounted from fonts/font/ (/preinst/common/font on real
|
||||
PS4) and fonts/font2/ (/system/common/font2 on real PS4). These are SST
|
||||
(Sony Standard Text) typeface files in OTF format. The emulator mounts
|
||||
the directories wholesale; games load individual fonts by name. Without
|
||||
fonts, the emulator warns "No dumped system fonts, expect missing text
|
||||
or instability."
|
||||
|
||||
All firmware files are extracted from a real PS4 via FTP:
|
||||
- .sprx modules from /system/common/lib/
|
||||
- font/ from /preinst/common/font/
|
||||
- font2/ from /system/common/font2/
|
||||
|
||||
Batocera configgen (shadps4Generator.py) configures display, input, and
|
||||
saves but does not map BIOS/firmware paths. The emulator uses its own
|
||||
user directory for sys_modules/ and fonts/.
|
||||
|
||||
files:
|
||||
- name: "libSceLibcInternal.sprx"
|
||||
required: false
|
||||
hle_fallback: true
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 C standard library"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:221"
|
||||
|
||||
- name: "libSceNgs2.sprx"
|
||||
required: false
|
||||
hle_fallback: true
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 next-generation audio system"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:213"
|
||||
|
||||
- name: "libSceRtc.sprx"
|
||||
required: false
|
||||
hle_fallback: true
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 real-time clock library"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:215"
|
||||
|
||||
- name: "libSceJpegEnc.sprx"
|
||||
required: false
|
||||
hle_fallback: true
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 JPEG encoder"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:217"
|
||||
|
||||
- name: "libScePngEnc.sprx"
|
||||
required: false
|
||||
hle_fallback: true
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 PNG encoder"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:218"
|
||||
|
||||
- name: "libSceFont.sprx"
|
||||
required: false
|
||||
hle_fallback: true
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 font rendering library"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:224"
|
||||
|
||||
- name: "libSceFontFt.sprx"
|
||||
required: false
|
||||
hle_fallback: true
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 FreeType font library"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:225"
|
||||
|
||||
- name: "libSceUlt.sprx"
|
||||
required: false
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 user-level threading library"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:214"
|
||||
|
||||
- name: "libSceJpegDec.sprx"
|
||||
required: false
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 JPEG decoder"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:216"
|
||||
|
||||
- name: "libSceJson.sprx"
|
||||
required: false
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 JSON parser"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:219"
|
||||
|
||||
- name: "libSceJson2.sprx"
|
||||
required: false
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 JSON v2 parser"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:220"
|
||||
|
||||
- name: "libSceCesCs.sprx"
|
||||
required: false
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 character encoding conversion"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:222"
|
||||
|
||||
- name: "libSceAudiodec.sprx"
|
||||
required: false
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 audio decoder"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:223"
|
||||
|
||||
- name: "libSceFreeTypeOt.sprx"
|
||||
required: false
|
||||
path: "shadps4/sys_modules/"
|
||||
description: "PS4 FreeType OpenType library"
|
||||
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:226"
|
||||
@@ -1,39 +0,0 @@
|
||||
emulator: trident
|
||||
display_name: "Nintendo - 3DS (Trident)"
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: https://github.com/DanAlexMorton/3dsTrident
|
||||
upstream: https://github.com/wheremyfoodat/Panda3DS
|
||||
profiled_date: 2026-03-25
|
||||
core_version: git
|
||||
|
||||
cores:
|
||||
- trident
|
||||
|
||||
systems:
|
||||
- 3ds
|
||||
|
||||
notes: >-
|
||||
Libretro core wrapping Panda3DS, an HLE Nintendo 3DS emulator.
|
||||
Shared font, Mii data, country list and bad word list are embedded in
|
||||
the binary via CMRC and compiled-in headers. DSP firmware is loaded from
|
||||
the game ROM at runtime, not from an external file.
|
||||
DSP modes: HLE (default), LLE (Teakra), Null.
|
||||
Files are resolved from the RetroArch save directory
|
||||
(<save_dir>/Emulator Files/sysdata/), not the system directory.
|
||||
|
||||
files:
|
||||
- name: aes_keys.txt
|
||||
description: AES encryption keys for decrypting encrypted 3DS ROMs
|
||||
required: false
|
||||
source_ref: >-
|
||||
src/emulator.cpp:234,242-244 (path construction and existence check);
|
||||
src/core/crypto/aes_engine.cpp:13-92 (loadKeys, parses key=value text);
|
||||
src/core/loader/ncch.cpp:151-164 (panic if encrypted ROM loaded without keys)
|
||||
|
||||
- name: seeddb.bin
|
||||
description: seed database for seed-encrypted 3DS games
|
||||
required: false
|
||||
source_ref: >-
|
||||
src/emulator.cpp:235,246-248 (path construction and existence check);
|
||||
src/core/crypto/aes_engine.cpp:94-153 (setSeedPath, loadSeeds, getSeedFromDB)
|
||||
@@ -1,91 +0,0 @@
|
||||
emulator: tsugaru
|
||||
display_name: Tsugaru
|
||||
type: standalone
|
||||
source: "https://github.com/captainys/TOWNSEMU"
|
||||
upstream: "https://github.com/captainys/TOWNSEMU"
|
||||
profiled_date: "2026-03-26"
|
||||
cores:
|
||||
- tsugaru
|
||||
systems:
|
||||
- fmtowns
|
||||
|
||||
notes: |
|
||||
FM Towns / Marty emulator by CaptainYS. Takes a ROM directory as first
|
||||
argument. ROM format compatible with UNZ emulator. Free compatible ROMs
|
||||
available at ysflight.com/FM/towns/FreeTOWNS/. FMT_ALL.ROM is an
|
||||
alternative combined format that bundles all individual ROM files.
|
||||
|
||||
files:
|
||||
- name: FMT_SYS.ROM
|
||||
description: system ROM
|
||||
required: true
|
||||
size: 262144
|
||||
validation:
|
||||
- size
|
||||
source_ref: "physmem.cpp:392,503-507"
|
||||
- name: FMT_DOS.ROM
|
||||
description: DOS ROM
|
||||
required: true
|
||||
size: 524288
|
||||
validation:
|
||||
- size
|
||||
source_ref: "physmem.cpp:395,508-512"
|
||||
- name: FMT_FNT.ROM
|
||||
description: font ROM
|
||||
required: true
|
||||
size: 262144
|
||||
validation:
|
||||
- size
|
||||
source_ref: "physmem.cpp:398,513-517"
|
||||
- name: FMT_F20.ROM
|
||||
description: 20-dot font ROM, filled with 0xFF if missing
|
||||
required: false
|
||||
size: 524288
|
||||
hle_fallback: true
|
||||
validation:
|
||||
- size
|
||||
source_ref: "physmem.cpp:401,518-527"
|
||||
- name: FMT_DIC.ROM
|
||||
description: dictionary ROM
|
||||
required: true
|
||||
size: 524288
|
||||
validation:
|
||||
- size
|
||||
source_ref: "physmem.cpp:404,528-532"
|
||||
- name: MYTOWNS.ROM
|
||||
description: serial ROM for machine identity, uses defaults if absent
|
||||
required: false
|
||||
min_size: 32
|
||||
source_ref: "physmem.cpp:407,533-539"
|
||||
- name: FMT_ALL.ROM
|
||||
description: combined ROM file, alternative to individual ROM files
|
||||
required: false
|
||||
source_ref: "physmem.cpp:420-500"
|
||||
- name: MAR_EX0.ROM
|
||||
description: Marty extra ROM 0, all 4 MAR_EX ROMs needed for Marty mode
|
||||
required: false
|
||||
size: 524288
|
||||
validation:
|
||||
- size
|
||||
source_ref: "physmem.cpp:410,541-564"
|
||||
- name: MAR_EX1.ROM
|
||||
description: Marty extra ROM 1
|
||||
required: false
|
||||
size: 524288
|
||||
validation:
|
||||
- size
|
||||
source_ref: "physmem.cpp:412,541-564"
|
||||
- name: MAR_EX2.ROM
|
||||
description: Marty extra ROM 2
|
||||
required: false
|
||||
size: 524288
|
||||
validation:
|
||||
- size
|
||||
source_ref: "physmem.cpp:414,541-564"
|
||||
- name: MAR_EX3.ROM
|
||||
description: Marty extra ROM 3
|
||||
required: false
|
||||
size: 524288
|
||||
validation:
|
||||
- size
|
||||
source_ref: "physmem.cpp:416,541-564"
|
||||
@@ -1,25 +1,27 @@
|
||||
emulator: TyrQuake
|
||||
type: libretro
|
||||
core_classification: game_engine
|
||||
source: "https://github.com/libretro/tyrquake"
|
||||
upstream: "http://disenchant.net/tyrquake/"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "v0.62"
|
||||
display_name: "Quake (TyrQuake)"
|
||||
cores: [tyrquake]
|
||||
systems: [quake]
|
||||
verification: existence
|
||||
notes: >
|
||||
Quake engine source port by Kevin Shanahan (Tyrann). Plays Quake (id1), mission
|
||||
packs Scourge of Armagon (hipnotic) and Dissolution of Eternity (rogue), Quoth
|
||||
mod, and custom mods via -game parameter. Content is loaded directly from the
|
||||
PAK file path — the directory containing the PAK becomes basedir
|
||||
(libretro.c:988,1050). The engine auto-detects game variant by checking the
|
||||
content path for id1, hipnotic, rogue, or quoth substrings
|
||||
(libretro.c:1030-1070). All engine assets (gfx/palette.lmp, gfx/colormap.lmp,
|
||||
gfx.wad, textures, models, sounds) are loaded from within PAK files via
|
||||
COM_AddGameDirectory (common.c:1709), which tries pak0.pak through pak9.pak in
|
||||
both lowercase and uppercase. The core never calls
|
||||
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. BGM as OGG tracks in music/ subfolder
|
||||
of each game directory.
|
||||
Quake engine source port. Plays Quake (id1), mission packs Scourge of Armagon
|
||||
(hipnotic) and Dissolution of Eternity (rogue), Quoth mod, and custom mods via
|
||||
-game parameter. The core accepts .pak extensions (retro_get_system_info sets
|
||||
valid_extensions = "pak"). Content is loaded directly from the PAK file path -
|
||||
the directory containing the PAK becomes basedir (libretro.c:988,1050).
|
||||
The engine auto-detects game variant by checking the content path for id1,
|
||||
hipnotic, rogue, or quoth substrings (libretro.c:1030-1070) and passes the
|
||||
corresponding command-line flag. For non-standard paths it uses -game with the
|
||||
directory basename. PAK files are game data (maps, textures, models, sounds)
|
||||
shipped with the original retail game, not engine firmware. The engine checks
|
||||
for gfx/pop.lmp inside pak0.pak to distinguish registered vs shareware
|
||||
(common.c:974-991). COM_AddGameDirectory (common.c:1709) loads pak0.pak through
|
||||
pak9.pak sequentially from the game directory, trying both lowercase and
|
||||
uppercase filenames. No engine data files are required in the RetroArch system
|
||||
directory. The core needs no BIOS or firmware.
|
||||
|
||||
files: []
|
||||
|
||||
@@ -1,64 +1,8 @@
|
||||
emulator: uae4arm
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
cores: [uae4arm]
|
||||
source: "https://github.com/libretro/uae4arm-libretro"
|
||||
upstream: "https://github.com/PandTomB/uae4arm"
|
||||
profiled_date: "2026-03-25"
|
||||
emulator: "uae4arm"
|
||||
type: alias
|
||||
alias_of: "puae"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "v0.5"
|
||||
display_name: "Commodore - Amiga (UAE4ARM)"
|
||||
systems:
|
||||
- commodore-amiga
|
||||
|
||||
notes: |
|
||||
ARM-optimized Amiga emulator by TomB, ported to libretro by Chips-fr.
|
||||
Based on an older uae4arm version, intended for low-powered ARM hardware
|
||||
where PUAE cannot maintain full speed.
|
||||
|
||||
Core options expose three models: A500, A600, A1200. Each selects its
|
||||
Kickstart ROM automatically. Extended ROMs (CDTV/CD32) can be set via
|
||||
.uae config files but CD32/CDTV hardware emulation is absent from
|
||||
this port (no akiko chip, CD support listed as missing).
|
||||
|
||||
Built-in AROS Kickstart replacement used as fallback when no ROM is found.
|
||||
|
||||
Cloanto-encrypted ROMs require rom.key in the system directory.
|
||||
|
||||
files:
|
||||
- name: "kick34005.A500"
|
||||
description: "Amiga 500 Kickstart v1.3 rev 34.005"
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "libretro/core/libretro-core.cpp:73,420 src/memory.cpp:2080-2180"
|
||||
|
||||
- name: "kick40063.A600"
|
||||
description: "Amiga 600 Kickstart v3.1 rev 40.063"
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "libretro/core/libretro-core.cpp:74,391 src/memory.cpp:2080-2180"
|
||||
|
||||
- name: "kick40068.A1200"
|
||||
description: "Amiga 1200 Kickstart v3.1 rev 40.068"
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "libretro/core/libretro-core.cpp:75,405 src/memory.cpp:2080-2180"
|
||||
|
||||
- name: "kick34005.CDTV"
|
||||
description: "CDTV extended ROM v1.00 rev 34.005"
|
||||
required: false
|
||||
source_ref: "src/memory.cpp:1931-1971 (EXTENDED_ROM_CDTV via romextfile)"
|
||||
|
||||
- name: "kick40060.CD32"
|
||||
description: "CD32 Kickstart v3.1 rev 40.060"
|
||||
required: false
|
||||
source_ref: "src/memory.cpp:2080-2180 (loaded via romfile from .uae config)"
|
||||
|
||||
- name: "kick40060.CD32.ext"
|
||||
description: "CD32 extended ROM rev 40.060"
|
||||
required: false
|
||||
source_ref: "src/memory.cpp:1931-1971 (EXTENDED_ROM_CD32 via romextfile)"
|
||||
|
||||
- name: "rom.key"
|
||||
description: "Cloanto Amiga Forever decryption key"
|
||||
required: false
|
||||
source_ref: "src/memory.cpp:598-613,625-700 (addkeydir, load_keyring)"
|
||||
note: "This core uses the same BIOS/firmware as puae. See emulators/puae.yml for details."
|
||||
files: []
|
||||
|
||||
@@ -1,477 +1,8 @@
|
||||
emulator: UME 2015
|
||||
type: libretro
|
||||
core_classification: frozen_snapshot
|
||||
source: "https://github.com/libretro/mame2015-libretro"
|
||||
upstream: "https://github.com/mamedev/mame/tree/mame0159"
|
||||
logo: "https://raw.githubusercontent.com/mamedev/mame/master/docs/source/images/MAMElogo.svg"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "0.159"
|
||||
emulator: "ume2015"
|
||||
type: alias
|
||||
alias_of: "mame2016"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "0.160"
|
||||
display_name: "Multi (UME 2015)"
|
||||
mame_version: "0.159"
|
||||
|
||||
cores:
|
||||
- ume2015
|
||||
systems:
|
||||
- snk-neogeo-mvs
|
||||
- snk-neogeo-aes
|
||||
- igs-pgm
|
||||
- sega-naomi
|
||||
- sega-naomi2
|
||||
- sega-naomigd
|
||||
- sammy-atomiswave
|
||||
- sega-stv
|
||||
- sega-lindbergh
|
||||
- sega-hikaru
|
||||
- sega-chihiro
|
||||
- sega-triforce
|
||||
- deco-cassette
|
||||
- nintendo-playch10
|
||||
- sega-megaplay
|
||||
- sega-megatech
|
||||
- nintendo-sfcbox
|
||||
- nintendo-nss
|
||||
- philips-cdi
|
||||
- commodore-cubo
|
||||
- namco-system246
|
||||
- namco-system256
|
||||
- namco-system573
|
||||
- konami-viper
|
||||
- taito-gnet
|
||||
- super-kaneko-nova
|
||||
- capcom-zn1
|
||||
- capcom-zn2
|
||||
- konami-gv
|
||||
- panasonic-3do
|
||||
- hyper-neogeo64
|
||||
- konami-twinkle
|
||||
|
||||
notes: |
|
||||
Universal Machine Emulator — combined MAME + MESS before the official
|
||||
merge at MAME 0.162. Same repo as mame2015 (mame2015-libretro), built
|
||||
with -DWANT_UME including both mame.mak and mess.mak. 69 arcade BIOS
|
||||
root sets (identical to mame2015), plus 619 MESS computer/console
|
||||
drivers. Source version.c says 0.159, .info claims 0.160.
|
||||
|
||||
Paths under system_dir/ume2015/ (samples, artwork, cheat, hash, ini).
|
||||
Software list hash XMLs in system_dir/ume2015/hash/ (375 files from
|
||||
repo hash/ directory, required for MESS software list support).
|
||||
Per-game XML cheats in system_dir/ume2015/cheat/.
|
||||
hiscore.dat loaded via f.open("hiscore", ".dat") without explicit
|
||||
search path (libretro-specific path code disabled via #if 0).
|
||||
|
||||
ROM naming follows MAME 0.159 conventions.
|
||||
|
||||
files:
|
||||
# Data files (system_dir/ume2015/)
|
||||
- name: hiscore.dat
|
||||
required: false
|
||||
category: game_data
|
||||
source_ref: "src/emu/hiscore.c:335-337"
|
||||
note: "high score definitions, external file, not embedded"
|
||||
|
||||
# SNK Neo Geo MVS/AES
|
||||
- name: neogeo.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: snk-neogeo-mvs
|
||||
source_ref: "src/mame/drivers/neogeo.c:1529"
|
||||
|
||||
# IGS PGM
|
||||
- name: pgm.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: igs-pgm
|
||||
source_ref: "src/mame/drivers/pgm.c:4147"
|
||||
|
||||
# Sega Naomi / Naomi 2 / Naomi GD-ROM / Atomiswave
|
||||
- name: naomi.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: sega-naomi
|
||||
source_ref: "src/mame/drivers/naomi.c:8960"
|
||||
|
||||
- name: naomi2.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: sega-naomi2
|
||||
source_ref: "src/mame/drivers/naomi.c:8965"
|
||||
|
||||
- name: naomigd.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: sega-naomigd
|
||||
source_ref: "src/mame/drivers/naomi.c:8966"
|
||||
|
||||
- name: awbios.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: sammy-atomiswave
|
||||
source_ref: "src/mame/drivers/naomi.c:9275"
|
||||
|
||||
- name: hod2bios.zip
|
||||
required: false
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/naomi.c:8961"
|
||||
note: "game-specific BIOS for House of the Dead 2"
|
||||
|
||||
- name: f355dlx.zip
|
||||
required: false
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/naomi.c:8962"
|
||||
note: "game-specific BIOS for Ferrari F355 Challenge deluxe"
|
||||
|
||||
- name: f355bios.zip
|
||||
required: false
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/naomi.c:8963"
|
||||
note: "game-specific BIOS for Ferrari F355 Challenge twin"
|
||||
|
||||
- name: airlbios.zip
|
||||
required: false
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/naomi.c:8964"
|
||||
note: "game-specific BIOS for Airline Pilots deluxe"
|
||||
|
||||
# Sega ST-V
|
||||
- name: stvbios.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: sega-stv
|
||||
source_ref: "src/mame/drivers/stv.c:3042"
|
||||
|
||||
# Sega Hikaru / Chihiro / Triforce / Lindbergh
|
||||
- name: hikaru.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: sega-hikaru
|
||||
source_ref: "src/mame/drivers/hikaru.c:744"
|
||||
|
||||
- name: chihiro.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: sega-chihiro
|
||||
source_ref: "src/mame/drivers/chihiro.c:2192"
|
||||
|
||||
- name: triforce.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: sega-triforce
|
||||
source_ref: "src/mame/drivers/triforce.c:1021"
|
||||
|
||||
- name: lindbios.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: sega-lindbergh
|
||||
source_ref: "src/mame/drivers/lindbergh.c:569"
|
||||
|
||||
# DECO Cassette
|
||||
- name: decocass.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: deco-cassette
|
||||
source_ref: "src/mame/drivers/decocass.c:1647"
|
||||
|
||||
# Nintendo arcade
|
||||
- name: playch10.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: nintendo-playch10
|
||||
source_ref: "src/mame/drivers/playch10.c:1639"
|
||||
|
||||
- name: nss.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: nintendo-nss
|
||||
source_ref: "src/mame/drivers/nss.c:1058"
|
||||
|
||||
- name: sfcbox.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: nintendo-sfcbox
|
||||
source_ref: "src/mame/drivers/sfcbox.c:572"
|
||||
|
||||
# Sega Mega Drive arcade
|
||||
- name: megaplay.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: sega-megaplay
|
||||
source_ref: "src/mame/drivers/megaplay.c:942"
|
||||
|
||||
- name: megatech.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: sega-megatech
|
||||
source_ref: "src/mame/drivers/megatech.c:1393"
|
||||
|
||||
# Philips CD-i
|
||||
- name: cdibios.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: philips-cdi
|
||||
source_ref: "src/mame/drivers/cdi.c:611"
|
||||
|
||||
# Commodore Cubo (CD32-based)
|
||||
- name: cubo.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: commodore-cubo
|
||||
source_ref: "src/mame/drivers/cubo.c:1362"
|
||||
|
||||
# Namco boards
|
||||
- name: sys246.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: namco-system246
|
||||
source_ref: "src/mame/drivers/namcops2.c:672"
|
||||
|
||||
- name: sys256.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: namco-system256
|
||||
source_ref: "src/mame/drivers/namcops2.c:705"
|
||||
|
||||
- name: sys573.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: namco-system573
|
||||
source_ref: "src/mame/drivers/ksys573.c:4678"
|
||||
|
||||
# Konami
|
||||
- name: kviper.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: konami-viper
|
||||
source_ref: "src/mame/drivers/viper.c:2609"
|
||||
|
||||
- name: konamigv.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: konami-gv
|
||||
source_ref: "src/mame/drivers/konamigv.c:822"
|
||||
|
||||
- name: konamigx.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/konamigx.c:3775"
|
||||
|
||||
- name: gq863.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: konami-twinkle
|
||||
source_ref: "src/mame/drivers/twinkle.c:1330"
|
||||
|
||||
# Taito
|
||||
- name: taitogn.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: taito-gnet
|
||||
source_ref: "src/mame/drivers/taitogn.c:1081"
|
||||
|
||||
- name: taitotz.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/taitotz.c:2951"
|
||||
|
||||
- name: taitofx1.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/zn.c:4906"
|
||||
|
||||
# PSX-based arcade boards (ZN)
|
||||
- name: cpzn1.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: capcom-zn1
|
||||
source_ref: "src/mame/drivers/zn.c:4800"
|
||||
|
||||
- name: cpzn2.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: capcom-zn2
|
||||
source_ref: "src/mame/drivers/zn.c:4823"
|
||||
|
||||
- name: atpsx.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/zn.c:4853"
|
||||
|
||||
- name: acpsx.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/zn.c:4862"
|
||||
|
||||
- name: tps.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/zn.c:4873"
|
||||
|
||||
- name: vspsx.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/zn.c:4896"
|
||||
|
||||
- name: psarc95.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/zn.c:4935"
|
||||
|
||||
- name: atluspsx.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/zn.c:4961"
|
||||
|
||||
# Super Kaneko Nova System
|
||||
- name: skns.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: super-kaneko-nova
|
||||
source_ref: "src/mame/drivers/suprnova.c:1734"
|
||||
|
||||
- name: mac2bios.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/macs.c:747"
|
||||
|
||||
- name: macsbios.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/macs.c:746"
|
||||
|
||||
# Panasonic 3DO
|
||||
- name: 3dobios.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: panasonic-3do
|
||||
source_ref: "src/mame/drivers/3do.c:253"
|
||||
|
||||
# Hyper Neo-Geo 64
|
||||
- name: hng64.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
system: hyper-neogeo64
|
||||
source_ref: "src/mame/drivers/hng64.c:1991"
|
||||
|
||||
# Arcadia Systems
|
||||
- name: ar_bios.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/arcadia.c:963"
|
||||
|
||||
# American Laser Games
|
||||
- name: alg_bios.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/alg.c:772"
|
||||
|
||||
# Aleck64 (N64-based)
|
||||
- name: aleck64.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/aleck64.c:1161"
|
||||
|
||||
# Atari System 1
|
||||
- name: atarisy1.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/atarisy1.c:2368"
|
||||
|
||||
# Exidy Max-A-Flex
|
||||
- name: maxaflex.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/maxaflex.c:536"
|
||||
|
||||
# Crystal System
|
||||
- name: crysbios.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/crystal.c:1134"
|
||||
|
||||
# Galaxy Games
|
||||
- name: galgbios.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/tmaster.c:1850"
|
||||
|
||||
# Aristocrat MK5/MK6
|
||||
- name: aristmk5.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/aristmk5.c:739"
|
||||
|
||||
- name: aristmk6.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/aristmk6.c:224"
|
||||
|
||||
- name: mk6nsw11.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/aristmk6.c:225"
|
||||
|
||||
# Pinball
|
||||
- name: allied.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/allied.c:711"
|
||||
|
||||
- name: gp_110.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/gp_1.c:531"
|
||||
|
||||
- name: gts1.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/gts1.c:978"
|
||||
|
||||
- name: gts1s.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/gts1.c:981"
|
||||
|
||||
# Other BIOS root sets
|
||||
- name: bubsys.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/nemesis.c:2707"
|
||||
|
||||
- name: isgsm.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/segas16b.c:7501"
|
||||
|
||||
- name: iteagle.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/iteagle.c:315"
|
||||
|
||||
- name: pyson.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/pyson.c:251"
|
||||
|
||||
- name: sammymdl.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/sigmab98.c:2277"
|
||||
|
||||
- name: shtzone.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/shtzone.c:121"
|
||||
|
||||
- name: su2000.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/su2000.c:296"
|
||||
|
||||
- name: tourvis.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/tourvis.c:612"
|
||||
|
||||
- name: v4bios.zip
|
||||
required: true
|
||||
category: bios_zip
|
||||
source_ref: "src/mame/drivers/mpu4vid.c:3655"
|
||||
note: "This core uses the same BIOS/firmware as mame2016. See emulators/mame2016.yml for details."
|
||||
files: []
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
emulator: MicroW8
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "0.2.2"
|
||||
display_name: "MicroW8"
|
||||
type: game
|
||||
core_classification: pure_libretro
|
||||
source: https://github.com/libretro/uw8-libretro
|
||||
upstream: https://github.com/exoticorn/microw8
|
||||
cores: [uw8]
|
||||
systems: []
|
||||
files: []
|
||||
notes: >
|
||||
WebAssembly-based fantasy console. 320x240 screen, 32-color palette,
|
||||
256KB memory. The WASM runtime (platform + loader modules) is compiled
|
||||
to C via wasm2c and embedded in the binary. No external files required.
|
||||
firmware_count=0 in .info is correct.
|
||||
MicroW8 is a WebAssembly-based fantasy console with a 320x240 screen,
|
||||
32-color palette, and a 256KB memory limit. Programs are compiled to
|
||||
compact WASM modules (.uw8 format). The runtime is fully self-contained
|
||||
with no external dependencies. No BIOS or system directory files required.
|
||||
|
||||
@@ -1,19 +1,15 @@
|
||||
emulator: UXN
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://codeberg.org/iyzsong/uxn-libretro"
|
||||
upstream: "https://github.com/chmod222/zuxn"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "0.0.1"
|
||||
type: game
|
||||
source: "https://github.com/libretro/uxn"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "0.0.0"
|
||||
display_name: "Uxn / Varvara (zuxn)"
|
||||
cores: [uxn]
|
||||
systems: []
|
||||
files: []
|
||||
exclusion_note: >
|
||||
Uxn/Varvara is a software-defined stack machine with 64KB of memory.
|
||||
The VM has no firmware or BIOS. ROMs compiled from Uxntal assembly are
|
||||
loaded directly via libretro game_info. The .info declares no firmware.
|
||||
notes: >
|
||||
Libretro wrapper around the zuxn library (Zig implementation of the
|
||||
Uxn/Varvara spec by Hundred Rabbits). The file device in Varvara handles
|
||||
ROM-initiated I/O but does not load system files from the system directory.
|
||||
Libretro port of the Varvara/UXN stack machine designed by Hundred Rabbits.
|
||||
UXN is a portable 8-bit virtual computer with 64KB of memory and a
|
||||
minimal instruction set. Loads .rom files compiled from Uxntal assembly.
|
||||
The VM is entirely software-defined with no firmware or BIOS dependencies.
|
||||
No system directory files required.
|
||||
|
||||
@@ -1,38 +1,46 @@
|
||||
emulator: uzem
|
||||
type: libretro
|
||||
core_classification: pure_libretro
|
||||
source: "https://github.com/libretro/libretro-uzem"
|
||||
upstream: "https://github.com/Uzebox/uzebox"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "v2.0"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "3.1"
|
||||
display_name: "Uzem (Uzebox)"
|
||||
display_name: "Uzebox (Uzem)"
|
||||
cores:
|
||||
- uzem
|
||||
systems:
|
||||
- uzebox
|
||||
|
||||
# No BIOS or firmware files required. The Uzebox is an open-source 8-bit game
|
||||
# console (ATmega644 AVR MCU) with no proprietary firmware. Games are
|
||||
# self-contained .uze files loaded directly into progmem
|
||||
# (uzem_libretro.cpp:254-286, "UZEBOX" magic header + RomHeader + program data).
|
||||
# Uzem emulates the Uzebox, an open-source 8-bit game console based on an
|
||||
# ATmega644 AVR microcontroller. The console was designed by Alec Bourque (Uze)
|
||||
# and all hardware/software is open-source.
|
||||
#
|
||||
# The libretro core does not call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
|
||||
# SD card emulation uses GET_CORE_ASSETS_DIRECTORY (uzem_libretro.cpp:186-192)
|
||||
# for optional game data via virtual FAT16 filesystem (SDEmulator.cpp).
|
||||
# EEPROM is handled via RETRO_MEMORY_SAVE_RAM (uzem_libretro.cpp:407-408).
|
||||
# No BIOS or firmware files are required. The core loads .uze ROM files directly
|
||||
# into progmem (uzem_libretro.cpp:254-286). The .uze format includes a "UZEBOX"
|
||||
# magic header followed by a RomHeader struct (uzerom.h) and raw program data.
|
||||
#
|
||||
# The standalone uzem supports --boot (PC=0xF000) for bootloader mode
|
||||
# (uzem.cpp:206) and .hex format loading, neither exposed in the libretro port.
|
||||
# The standalone uzem (oldsrcs/uzem.cpp:90) has a --boot flag that sets PC to
|
||||
# 0xF000 for bootloader mode, but this is NOT exposed in the libretro port.
|
||||
# The libretro core has no retro_environment calls for RETRO_ENVIRONMENT_SET_SYSTEM_DIR
|
||||
# or any firmware loading paths.
|
||||
#
|
||||
# The .info file declares no firmware entries (firmware_count absent).
|
||||
# SD card emulation uses RETRO_ENVIRONMENT_GET_CORE_ASSETS_DIRECTORY
|
||||
# (uzem_libretro.cpp:186-192) for virtual FAT16 filesystem access via SDEmulator.cpp,
|
||||
# but this is optional game data, not system firmware.
|
||||
#
|
||||
# The .info file declares no firmware entries.
|
||||
|
||||
files: []
|
||||
|
||||
notes:
|
||||
open_source_console: >
|
||||
Fully open-source hardware and software designed by Alec Bourque.
|
||||
No proprietary BIOS or bootloader. Games are self-contained .uze files.
|
||||
The Uzebox is fully open-source hardware and software. There is no proprietary
|
||||
BIOS or bootloader required. Games are self-contained .uze files that include
|
||||
all code needed to run on the ATmega644 MCU emulation.
|
||||
sd_card: >
|
||||
Some games use SD card access for loading assets. The core reads from the
|
||||
libretro core assets directory to emulate a FAT16 SD card (game data, not
|
||||
system firmware).
|
||||
libretro core assets directory to emulate a FAT16 SD card, but this is game
|
||||
data, not system firmware.
|
||||
standalone_bootloader: >
|
||||
The original standalone uzem supports a --boot flag for bootloader mode
|
||||
(PC starts at 0xF000 instead of 0x0000). This feature is not available in
|
||||
the libretro port.
|
||||
|
||||
@@ -1,17 +1,14 @@
|
||||
emulator: VaporSpec
|
||||
type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/minkcv/vm"
|
||||
upstream: "https://github.com/minkcv/vm"
|
||||
profiled_date: "2026-03-25"
|
||||
type: game
|
||||
source: "https://github.com/libretro/libretro-vaporspec"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "GIT"
|
||||
display_name: "VaporSpec"
|
||||
cores: [vaporspec]
|
||||
systems: [vaporspec]
|
||||
systems: []
|
||||
files: []
|
||||
notes: >
|
||||
Fantasy console with fixed specs (256x192 display, 4-channel audio,
|
||||
256-color palette). Runs .vaporbin cartridge bundles containing code
|
||||
and optional ROM data. All content is self-contained in the bundle
|
||||
passed by the frontend; no system directory files loaded.
|
||||
firmware_count=0 confirmed by code analysis.
|
||||
Fantasy console for libretro inspired by retro hardware aesthetics.
|
||||
Provides a virtual machine with fixed specs (256x192 display, 4-channel
|
||||
audio) for running homebrew .vaporbin cartridge files.
|
||||
No BIOS, firmware, or system directory files required.
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
emulator: VBA-Next
|
||||
type: libretro
|
||||
core_classification: frozen_snapshot
|
||||
source: "https://github.com/libretro/vba-next"
|
||||
upstream: "https://github.com/visualboyadvance-m/visualboyadvance-m"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "SVN"
|
||||
display_name: "Nintendo - Game Boy Advance (VBA Next)"
|
||||
cores:
|
||||
@@ -12,34 +10,64 @@ systems:
|
||||
- nintendo-gba
|
||||
|
||||
notes: |
|
||||
Frozen snapshot of VBA-M circa 2011, optimized for libretro by Squarepusher.
|
||||
VBA-Next is a Game Boy Advance emulator forked from VBA-M, optimized for
|
||||
libretro. It includes a built-in HLE BIOS (myROM array in src/gba.cpp:8423)
|
||||
that handles all standard SWI calls, so no external BIOS file is needed for
|
||||
most games.
|
||||
|
||||
Built-in HLE BIOS (myROM array, src/gba.cpp:8423) handles all standard SWI
|
||||
calls. No external BIOS file needed for most games.
|
||||
BIOS loading is gated behind HAVE_HLE_BIOS (defined in build/Makefile.common)
|
||||
and controlled by core option vbanext_bios (default: enabled). When enabled,
|
||||
the libretro port looks for gba_bios.bin in RetroArch's system directory
|
||||
(libretro/libretro.cpp:198-203). CPUInit() loads the file via utilLoad(),
|
||||
validates it is exactly 0x4000 bytes (16 KB), and sets useBios = true
|
||||
(src/gba.cpp:12413-12443). If loading fails or the option is off, the HLE
|
||||
BIOS (myROM) is memcpy'd into the bios buffer instead.
|
||||
|
||||
BIOS loading gated by HAVE_HLE_BIOS (build/Makefile.common:3) and core option
|
||||
vbanext_bios (default: enabled). When enabled, retro_init resolves gba_bios.bin
|
||||
in system_dir (libretro/libretro.cpp:198-202). CPUInit loads via utilLoad(),
|
||||
validates size == 0x4000, sets useBios = true (src/gba.cpp:12430-12438). On
|
||||
failure, myROM is memcpy'd as HLE fallback (src/gba.cpp:12443).
|
||||
|
||||
With real BIOS, execution starts at 0x00000000 (BIOS entry point). Without,
|
||||
jumps to 0x08000000 (ROM entry), skipping boot animation
|
||||
(src/gba.cpp:12657-12675).
|
||||
|
||||
CPUIsGBABios accepts extensions: .gba, .agb, .bin, .bios, .rom
|
||||
CPUIsGBABios() accepts extensions: .gba, .agb, .bin, .bios, .rom
|
||||
(src/gba.cpp:8851-8873).
|
||||
|
||||
Upstream VBA-M CPUInit (src/core/gba/gba.cpp:3674-3702) is functionally
|
||||
identical. No divergences in BIOS handling.
|
||||
When useBios is true and skipBios is false, execution starts at 0x00000000
|
||||
(real BIOS entry). Otherwise it jumps straight to 0x08000000 (ROM entry),
|
||||
skipping the boot animation (src/gba.cpp:12657-12675).
|
||||
|
||||
The HLE BIOS covers: SoftReset, RegisterRamReset, Halt, VBlankIntrWait,
|
||||
Div, Sqrt, ArcTan, ArcTan2, CpuSet, CpuFastSet, GetBiosChecksum,
|
||||
BgAffineSet, ObjAffineSet, BitUnPack, LZ77UnComp (WRAM/VRAM),
|
||||
HuffUnComp, RLUnComp (WRAM/VRAM), Diff8bitUnFilter (WRAM/VRAM),
|
||||
Diff16bitUnFilter, MidiKey2Freq, SndDriverJmpTableCopy
|
||||
(src/gba.cpp:2369-2578).
|
||||
|
||||
Some per-game overrides in gbaover[] (libretro/libretro.cpp:235) have a
|
||||
useBios field, but all entries currently set it to 0 (no game forces BIOS).
|
||||
|
||||
files:
|
||||
# -------------------------------------------------------
|
||||
# Game Boy Advance - BIOS (optional, HLE fallback)
|
||||
# -------------------------------------------------------
|
||||
- name: gba_bios.bin
|
||||
system: nintendo-gba
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 16384
|
||||
validation: [size]
|
||||
description: "GBA BIOS"
|
||||
note: "Optional. HLE replacement handles all standard SWI calls. Real BIOS adds startup logo and may improve edge-case accuracy."
|
||||
source_ref: "libretro/libretro.cpp:198-202, src/gba.cpp:12430-12438"
|
||||
size: 16384 # 16 KB (0x4000)
|
||||
note: "GBA BIOS. Optional -- HLE replacement (myROM) handles all standard SWI calls. Real BIOS adds startup logo and may improve edge-case accuracy."
|
||||
source_ref: "libretro/libretro.cpp:198-203, src/gba.cpp:12413-12443"
|
||||
|
||||
platform_details:
|
||||
gba:
|
||||
bios_size: 16384 # 0x4000
|
||||
hle_bios: true
|
||||
source_ref: "src/gba.cpp:8423 (myROM), src/gba.cpp:2369-2578 (SWI handlers)"
|
||||
notes: |
|
||||
BIOS buffer is always allocated at 0x4000 bytes (src/gba.cpp:8963).
|
||||
If the real BIOS loads successfully (exactly 0x4000 bytes), useBios is
|
||||
set to true and CPUReset starts at address 0x00000000 with IRQ disabled.
|
||||
Otherwise myROM (built-in HLE stub) is copied in and execution starts
|
||||
at 0x08000000 with standard register init.
|
||||
|
||||
The core option vbanext_bios defaults to "enabled", so if gba_bios.bin
|
||||
is present in the system directory it will be loaded automatically.
|
||||
|
||||
BIOS reads at runtime go through the memory map (src/gba.cpp:792-1076).
|
||||
Address range 0x0000-0x3FFF maps to the bios buffer. A biosProtected[4]
|
||||
array at 0x00f029e1 is returned when reading outside the current PC
|
||||
region, matching real GBA BIOS protection behavior.
|
||||
|
||||
@@ -1,49 +1,8 @@
|
||||
emulator: VBA-M
|
||||
type: "standalone + libretro"
|
||||
core_classification: official_port
|
||||
source: "https://github.com/libretro/vbam-libretro"
|
||||
upstream: "https://github.com/visualboyadvance-m/visualboyadvance-m"
|
||||
profiled_date: "2026-03-25"
|
||||
emulator: "vbam"
|
||||
type: alias
|
||||
alias_of: "vba_next"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "2.1.4"
|
||||
display_name: "Nintendo - Game Boy Advance (VBA-M)"
|
||||
cores:
|
||||
- vbam
|
||||
systems:
|
||||
- nintendo-gba
|
||||
- nintendo-gb
|
||||
- nintendo-gbc
|
||||
|
||||
notes: |
|
||||
Supports GB, GBC, GBA, and SGB (borders/palette only).
|
||||
BIOS usage controlled by vbam_usebios core option (default: disabled).
|
||||
Built-in HLE BIOS (myROM array) handles GBA SWI calls without external file.
|
||||
GB/GBC boot sequence skipped when BIOS absent.
|
||||
Upstream repo includes the libretro port in src/libretro/.
|
||||
|
||||
files:
|
||||
- name: gba_bios.bin
|
||||
system: nintendo-gba
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 16384
|
||||
validation: [size]
|
||||
description: "GBA BIOS"
|
||||
source_ref: "src/gba/GBA.cpp:3262-3272 (CPUInit size check), src/libretro/libretro.cpp:846-851 (gba_init)"
|
||||
|
||||
- name: gb_bios.bin
|
||||
system: nintendo-gb
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 256
|
||||
validation: [size]
|
||||
description: "Game Boy boot ROM"
|
||||
source_ref: "src/gb/GB.cpp:2172-2192 (gbCPUInit size check), src/libretro/libretro.cpp:861-879 (gb_init)"
|
||||
|
||||
- name: gbc_bios.bin
|
||||
system: nintendo-gbc
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 2304
|
||||
validation: [size]
|
||||
description: "Game Boy Color boot ROM"
|
||||
source_ref: "src/gb/GB.cpp:2172-2192 (gbCPUInit size check), src/libretro/libretro.cpp:861-879 (gb_init)"
|
||||
note: "This core uses the same BIOS/firmware as vba_next. See emulators/vba_next.yml for details."
|
||||
files: []
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
emulator: vecx
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/libretro-vecx"
|
||||
upstream: "https://github.com/jhawthorn/vecx"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "SVN"
|
||||
display_name: "GCE - Vectrex (vecx)"
|
||||
cores:
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
emulator: VeMUlator
|
||||
type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/libretro/vemulator-libretro"
|
||||
upstream: "closed-source Android app (removed from Google Play ~2020)"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "0.1"
|
||||
display_name: "VeMUlator"
|
||||
cores:
|
||||
@@ -12,18 +10,32 @@ systems:
|
||||
- sega-vmu
|
||||
|
||||
notes: |
|
||||
Sega Dreamcast VMU/VMS emulator. Same author (Mahmoud Jaoune) ported
|
||||
the original Android Java app to C++ for libretro. Emulates the Sanyo
|
||||
LC8670 CPU, 128 KB flash, 48x32 LCD, piezo buzzer, and timers.
|
||||
VeMUlator is a Sega Dreamcast Visual Memory Unit (VMU/VMS) emulator ported
|
||||
from Android (Java) to C++ for libretro. It emulates the Sanyo LC8670
|
||||
"Potato" CPU, 128 KB flash memory, 48x32 monochrome LCD, piezo buzzer,
|
||||
and basic timer subsystems.
|
||||
|
||||
No BIOS files required. The core uses HLE exclusively: startCPU()
|
||||
checks BIOSExists (always false), then initializeHLE() sets SFR
|
||||
registers and system RAM directly (vmu.cpp:193-222).
|
||||
No BIOS files are required. The core uses High Level Emulation (HLE) to
|
||||
bypass the VMU firmware entirely:
|
||||
|
||||
A loadBIOS() function exists (vmu.cpp:82-137) handling encrypted and
|
||||
unencrypted BIOS images, but is never called from the libretro
|
||||
interface. retro_load_game() only loads game flash data, with no
|
||||
system directory query. README lists BIOS support as planned.
|
||||
- At startup, startCPU() checks the BIOSExists flag (vmu.cpp:195). When
|
||||
false (always, in the libretro port), it calls initializeHLE() which
|
||||
sets up SFR registers (SP=0x7F, PSW=0x02, IE=0x80, MCR=0x08, P7=0x02,
|
||||
OCR=0xA3, BTCR=0x41) and system RAM variables directly (vmu.cpp:206-222).
|
||||
|
||||
- A loadBIOS() function exists in the VMU class (vmu.cpp:82-137) and can
|
||||
handle both encrypted (XOR 0x37, 4-byte header stripped) and unencrypted
|
||||
BIOS images (first byte must be 0x2A = JMPF opcode). Maximum accepted
|
||||
size is 0xF004 (61444) bytes, loaded into 0xF000 (61440) bytes of ROM.
|
||||
However, this function is never called by the libretro frontend code.
|
||||
retro_load_game() in main.cpp only loads game flash data, with no BIOS
|
||||
path resolution or RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY call.
|
||||
|
||||
- The README lists "BIOS support" as a planned future feature.
|
||||
|
||||
The .info file declares no firmware entries (firmware_count absent).
|
||||
Supported ROM formats: VMS (.vms), DCI (.dci), raw flash dump (.bin).
|
||||
The core option "enable_flash_write" allows persistent saves for .bin files.
|
||||
|
||||
files: []
|
||||
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
emulator: "VICE x128"
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/vice-libretro"
|
||||
upstream: "https://sourceforge.net/projects/vice-emu/"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "3.10"
|
||||
display_name: "Commodore - C128 (VICE x128)"
|
||||
cores: [vice_x128, x128]
|
||||
systems: [commodore-c128]
|
||||
notes: >
|
||||
System ROMs embedded in binary: C128 kernal (318020-05), chargen (390059-01),
|
||||
BASIC lo (318018-04), BASIC hi (318019-04), C64 kernal (901227-03), C64 BASIC (901226-01),
|
||||
plus all drive ROMs (1540, 1541, 1541-II, 1551, 1570, 1571, 1571CR, 1581, 1001, 2031,
|
||||
2040, 3040, 4040, 9000). Embedded ROM check in sysfile_load takes priority over filesystem.
|
||||
Localized kernal/chargen variants (DE, FI, FR, IT, NO, SE, CH) are in the embedded list
|
||||
with NULL data pointers; selecting a non-international model produces uninitialized ROM data.
|
||||
JiffyDOS requires True Drive Emulation enabled and a 1541/1571/1581 drive type.
|
||||
C64 BASIC/kernal use shared names (basic-901226-01.bin, kernal-901227-03.bin) instead of
|
||||
upstream c128-specific names (basic64-901226-01.bin, kernal64-901227-03.bin) to share
|
||||
files with the C64 core in RetroArch's shared system directory.
|
||||
|
||||
files:
|
||||
- name: "JiffyDOS_C128.bin"
|
||||
description: "JiffyDOS C128 kernal replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:309-310"
|
||||
notes: "Loaded into KernalIntName when vice_jiffydos option is enabled."
|
||||
|
||||
- name: "JiffyDOS_C64.bin"
|
||||
description: "JiffyDOS C64 kernal replacement (GO64 mode)"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:307-308"
|
||||
notes: "Loaded into Kernal64Name when vice_jiffydos option is enabled."
|
||||
|
||||
- name: "JiffyDOS_1541-II.bin"
|
||||
description: "JiffyDOS 1541-II drive DOS replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:283-284"
|
||||
notes: "Loaded into DosName1541ii when vice_jiffydos option is enabled."
|
||||
|
||||
- name: "JiffyDOS_1571_repl310654.bin"
|
||||
description: "JiffyDOS 1571 drive DOS replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:285-286"
|
||||
notes: "Loaded into DosName1571 when vice_jiffydos option is enabled."
|
||||
|
||||
- name: "JiffyDOS_1581.bin"
|
||||
description: "JiffyDOS 1581 drive DOS replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:287-288"
|
||||
notes: "Loaded into DosName1581 when vice_jiffydos option is enabled."
|
||||
@@ -1,68 +0,0 @@
|
||||
emulator: "VICE x64"
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/vice-libretro"
|
||||
upstream: "https://sourceforge.net/projects/vice-emu/"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "3.10"
|
||||
display_name: "Commodore - C64 (VICE x64, fast)"
|
||||
cores: [vice_x64, x64]
|
||||
systems: [commodore-c64]
|
||||
notes: >
|
||||
System ROMs embedded in binary: C64 BASIC (901226-01), chargen (901225-01),
|
||||
chargen Japanese (906143-02), kernal Rev 3 (901227-03), kernal GS (390852-01),
|
||||
kernal SX-64 (251104-04), kernal 4064 (901246-01), kernal Japanese (906145-02),
|
||||
plus all drive ROMs (1540, 1541, 1541-II, 1551, 1570, 1571, 1571CR, 1581, 1001,
|
||||
2031, 2040, 3040, 4040, 9000) and VIC-II palettes. Embedded ROM check in
|
||||
sysfile_load takes priority over filesystem. Kernal Rev 1 (901227-01) and
|
||||
Rev 2 (901227-02) are NOT embedded; selecting C64 OLD NTSC or C64 OLD PAL model
|
||||
requires them on the filesystem in system/vice/C64/. JiffyDOS requires True Drive
|
||||
Emulation enabled and a 1541/1571/1581 drive type. SX-64 models use a separate
|
||||
JiffyDOS kernal (JiffyDOS_SX-64.bin) not declared in the .info.
|
||||
|
||||
files:
|
||||
- name: "JiffyDOS_C64.bin"
|
||||
description: "JiffyDOS C64 kernal replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:302-303"
|
||||
notes: "Loaded into KernalName when vice_jiffydos option is enabled (non-SX64 models)."
|
||||
|
||||
- name: "JiffyDOS_SX-64.bin"
|
||||
description: "JiffyDOS SX-64 kernal replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:295-296"
|
||||
notes: "Loaded into KernalName when vice_jiffydos option is enabled and SX-64 model selected."
|
||||
|
||||
- name: "JiffyDOS_1541-II.bin"
|
||||
description: "JiffyDOS 1541-II drive DOS replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:283-284"
|
||||
notes: "Loaded into DosName1541ii when vice_jiffydos option is enabled."
|
||||
|
||||
- name: "JiffyDOS_1571_repl310654.bin"
|
||||
description: "JiffyDOS 1571 drive DOS replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:285-286"
|
||||
notes: "Loaded into DosName1571 when vice_jiffydos option is enabled."
|
||||
|
||||
- name: "JiffyDOS_1581.bin"
|
||||
description: "JiffyDOS 1581 drive DOS replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:287-288"
|
||||
notes: "Loaded into DosName1581 when vice_jiffydos option is enabled."
|
||||
|
||||
- name: "kernal-901227-01.bin"
|
||||
description: "C64 Kernal Rev 1"
|
||||
required: false
|
||||
size: 8192
|
||||
validation: [size]
|
||||
source_ref: "vice/src/c64/c64-resources.c:253, vice/src/c64/c64model.c:131"
|
||||
notes: "Not embedded. Loaded via sysfile from system/vice/C64/ when C64 OLD NTSC model selected."
|
||||
|
||||
- name: "kernal-901227-02.bin"
|
||||
description: "C64 Kernal Rev 2"
|
||||
required: false
|
||||
size: 8192
|
||||
validation: [size]
|
||||
source_ref: "vice/src/c64/c64-resources.c:254, vice/src/c64/c64model.c:117"
|
||||
notes: "Not embedded. Loaded via sysfile from system/vice/C64/ when C64 OLD PAL model selected."
|
||||
@@ -1,34 +0,0 @@
|
||||
emulator: "VICE x64dtv"
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/vice-libretro"
|
||||
upstream: "https://sourceforge.net/projects/vice-emu/"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "3.10"
|
||||
display_name: "Commodore - C64DTV (VICE x64dtv)"
|
||||
cores: [vice_x64dtv]
|
||||
systems: [commodore-c64dtv]
|
||||
notes: >
|
||||
System ROMs embedded in binary: C64 BASIC (901226-01), kernal Rev 3
|
||||
(901227-03), chargen (901225-01), plus all drive ROMs (1540, 1541, 1541-II,
|
||||
1551, 1570, 1571, 1571CR, 1581, 1001, 2031, 2040, 3040, 4040, 9000).
|
||||
Embedded ROM check in sysfile_load takes priority over filesystem.
|
||||
DTV has its own color system (viciidtv-color.c); external palette loading
|
||||
is disabled. JiffyDOS is not supported (excluded from build conditionals).
|
||||
The .info declares 4 JiffyDOS firmware (firmware_count=4) but the code
|
||||
never loads them for this core. The .info also omits dtvrom.bin.
|
||||
|
||||
files:
|
||||
- name: "dtvrom.bin"
|
||||
description: "C64 DTV 2MB flash ROM image"
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 2097152
|
||||
source_ref: "vice/src/c64dtv/c64dtvflash.c:59-64,470-471,488-505"
|
||||
notes: >
|
||||
Loaded via sysfile_load from system/vice/C64DTV/. All model variants
|
||||
(V2 PAL/NTSC, V3 PAL/NTSC, Hummer) default to this filename. If not
|
||||
found, the core copies embedded BASIC, kernal and chargen ROMs into
|
||||
flash memory. Without it, the DTV operates as a basic C64 without the
|
||||
built-in DTV games and firmware. The original DTV ROM has distorted
|
||||
colors; a patched ROM is recommended.
|
||||
@@ -1,69 +0,0 @@
|
||||
emulator: "VICE x64sc"
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/vice-libretro"
|
||||
upstream: "https://sourceforge.net/projects/vice-emu/"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "3.10"
|
||||
display_name: "Commodore - C64 (VICE x64sc, accurate)"
|
||||
cores: [vice_x64sc]
|
||||
systems: [commodore-c64]
|
||||
notes: >
|
||||
Cycle-accurate C64 emulator using the viciisc VIC-II implementation.
|
||||
System ROMs embedded in binary: C64 BASIC (901226-01), chargen (901225-01),
|
||||
chargen Japanese (906143-02), kernal Rev 3 (901227-03), kernal GS (390852-01),
|
||||
kernal SX-64 (251104-04), kernal 4064 (901246-01), kernal Japanese (906145-02),
|
||||
plus all drive ROMs (1540, 1541, 1541-II, 1551, 1570, 1571, 1571CR, 1581, 1001,
|
||||
2031, 2040, 3040, 4040, 9000) and VIC-II palettes. Embedded ROM check in
|
||||
sysfile_load takes priority over filesystem. Kernal Rev 1 (901227-01) and
|
||||
Rev 2 (901227-02) are NOT embedded; selecting C64 OLD NTSC or C64 OLD PAL model
|
||||
requires them on the filesystem in system/vice/C64/. JiffyDOS requires True Drive
|
||||
Emulation enabled and a 1541/1571/1581 drive type. SX-64 models use a separate
|
||||
JiffyDOS kernal (JiffyDOS_SX-64.bin) not declared in the .info.
|
||||
|
||||
files:
|
||||
- name: "JiffyDOS_C64.bin"
|
||||
description: "JiffyDOS C64 kernal replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:302-303"
|
||||
notes: "Loaded into KernalName when vice_jiffydos option is enabled (non-SX64 models)."
|
||||
|
||||
- name: "JiffyDOS_SX-64.bin"
|
||||
description: "JiffyDOS SX-64 kernal replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:295-296"
|
||||
notes: "Loaded into KernalName when vice_jiffydos option is enabled and SX-64 model selected."
|
||||
|
||||
- name: "JiffyDOS_1541-II.bin"
|
||||
description: "JiffyDOS 1541-II drive DOS replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:283-284"
|
||||
notes: "Loaded into DosName1541ii when vice_jiffydos option is enabled."
|
||||
|
||||
- name: "JiffyDOS_1571_repl310654.bin"
|
||||
description: "JiffyDOS 1571 drive DOS replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:285-286"
|
||||
notes: "Loaded into DosName1571 when vice_jiffydos option is enabled."
|
||||
|
||||
- name: "JiffyDOS_1581.bin"
|
||||
description: "JiffyDOS 1581 drive DOS replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:287-288"
|
||||
notes: "Loaded into DosName1581 when vice_jiffydos option is enabled."
|
||||
|
||||
- name: "kernal-901227-01.bin"
|
||||
description: "C64 Kernal Rev 1"
|
||||
required: false
|
||||
size: 8192
|
||||
validation: [size]
|
||||
source_ref: "vice/src/c64/c64-resources.c:253, vice/src/c64/c64scmodel.c:141"
|
||||
notes: "Not embedded. Loaded via sysfile from system/vice/C64/ when C64 OLD NTSC model selected."
|
||||
|
||||
- name: "kernal-901227-02.bin"
|
||||
description: "C64 Kernal Rev 2"
|
||||
required: false
|
||||
size: 8192
|
||||
validation: [size]
|
||||
source_ref: "vice/src/c64/c64-resources.c:254, vice/src/c64/c64scmodel.c:123"
|
||||
notes: "Not embedded. Loaded via sysfile from system/vice/C64/ when C64 OLD PAL model selected."
|
||||
@@ -1,22 +0,0 @@
|
||||
emulator: "VICE xcbm2"
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/vice-libretro"
|
||||
upstream: "https://sourceforge.net/projects/vice-emu/"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "3.10"
|
||||
display_name: "Commodore - CBM-II 6x0/7x0 (VICE xcbm2)"
|
||||
cores: [vice_xcbm2, xcbm2]
|
||||
systems: [commodore-cbm-ii]
|
||||
notes: >
|
||||
System ROMs embedded in binary: chargen 600 (901237-01), chargen 700 (901232-01),
|
||||
kernal (901244-04a), BASIC 128K (901242+3-04a), BASIC 256K (901240+1-03), plus
|
||||
all drive ROMs (1001, 2031, 2040, 3040, 4040, 9000) and CRTC palettes (amber,
|
||||
green, white). Embedded ROM check in sysfile_load takes priority over filesystem.
|
||||
Models: 610 PAL/NTSC, 620 PAL/NTSC, 620+ PAL/NTSC, 710 NTSC, 720 NTSC,
|
||||
720+ NTSC. 600 series uses CRTC with 8 scanlines/char, 700 series uses 14
|
||||
scanlines/char (different chargen ROM). CBM-II uses IEEE-488 bus (not IEC serial),
|
||||
so no JiffyDOS support. Cartridge slots (Cart1-Cart6) are user content, not system
|
||||
files.
|
||||
|
||||
files: []
|
||||
@@ -1,19 +0,0 @@
|
||||
emulator: "VICE xcbm5x0"
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/vice-libretro"
|
||||
upstream: "https://sourceforge.net/projects/vice-emu/"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "3.10"
|
||||
display_name: "Commodore - CBM-II 5x0 (VICE xcbm5x0)"
|
||||
cores: [vice_xcbm5x0, xcbm5x0]
|
||||
systems: [commodore-cbm-ii]
|
||||
notes: >
|
||||
System ROMs embedded in binary: chargen 500 (901225-01), kernal 500
|
||||
(901234-02), BASIC 500 (901235+6-02), plus all drive ROMs (1001, 2031, 2040,
|
||||
3040, 4040, 9000) and VIC-II palettes. Embedded ROM check in sysfile_load
|
||||
takes priority over filesystem. Models: 510 PAL/NTSC. CBM-5x0 (P500/C510)
|
||||
uses VIC-II chip instead of CRTC. IEEE-488 bus (not IEC serial), no JiffyDOS
|
||||
support. Cartridge slots (Cart1-Cart6) are user content, not system files.
|
||||
|
||||
files: []
|
||||
@@ -1,24 +0,0 @@
|
||||
emulator: "VICE xpet"
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/vice-libretro"
|
||||
upstream: "https://sourceforge.net/projects/vice-emu/"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "3.10"
|
||||
display_name: "Commodore - PET (VICE xpet)"
|
||||
cores: [vice_xpet, xpet]
|
||||
systems: [commodore-pet]
|
||||
notes: >
|
||||
System ROMs embedded in binary: kernal 1 (901439-04-07), kernal 2 (901465-03),
|
||||
kernal 4 (901465-22), BASIC 1 (901439-09-05-02-06), BASIC 2 (901465-01-02),
|
||||
BASIC 4 (901465-23-20-21), chargen 1 (901447-08), chargen 2 (901447-10),
|
||||
SuperPET chargen (901640-01), 6 editor ROMs (1g40, 2b40, 2g40, 4b40, 4b80, 4g40),
|
||||
6 SuperPET Waterloo 6809 ROMs (a000-f000), plus all drive ROMs (1540, 1541, 1541-II,
|
||||
1551, 1570, 1571, 1571CR, 1581, 1001, 2031, 2040, 3040, 4040, 9000) and CRTC
|
||||
palettes (amber, green, white). Embedded ROM check in sysfile_load takes priority
|
||||
over filesystem. Models: 2001, 3008, 3016, 3032, 3032B, 4016, 4032, 4032B, 8032,
|
||||
8096, 8296, SuperPET. PET uses IEEE-488 bus (not IEC serial), so no JiffyDOS support.
|
||||
No cartridge support. Extension ROM slots ($9000/$A000/$B000) and German chargen
|
||||
(chargen.de) are standalone-only features not exposed via libretro core options.
|
||||
|
||||
files: []
|
||||
@@ -1,23 +0,0 @@
|
||||
emulator: "VICE xplus4"
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/vice-libretro"
|
||||
upstream: "https://sourceforge.net/projects/vice-emu/"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "3.10"
|
||||
display_name: "Commodore - PLUS/4 (VICE xplus4)"
|
||||
cores: [vice_xplus4, xplus4]
|
||||
systems: [commodore-plus4]
|
||||
notes: >
|
||||
All system ROMs embedded in binary: BASIC (318006-01), kernal PAL (318004-05),
|
||||
kernal NTSC (318005-05), kernal V232 (318004-01), kernal V364 (364),
|
||||
3+1 function low (317053-01), 3+1 function high (317054-01), V364 speech ROM
|
||||
(c2lo-364). All drive ROMs embedded (1540, 1541, 1541-II, 1551, 1570, 1571,
|
||||
1571CR, 1581, 1001, 2031, 2040, 3040, 4040, 9000). TED palettes embedded
|
||||
(colodore_ted, BT601, BT709, BT2020, yape-pal, yape-ntsc). Embedded check in
|
||||
sysfile_load takes priority over filesystem. Models: C16 PAL/NTSC, Plus/4
|
||||
PAL/NTSC, V364 NTSC, 232 NTSC — all use embedded kernal variants. No JiffyDOS
|
||||
support (C64/C128/SCPU64 only). 3+1 function ROMs loaded for Plus/4 and V364
|
||||
models, cleared to 0xFF for C16 and 232 models. c2lo loaded only for V364 model.
|
||||
|
||||
files: []
|
||||
@@ -1,59 +0,0 @@
|
||||
emulator: "VICE xscpu64"
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/vice-libretro"
|
||||
upstream: "https://sourceforge.net/projects/vice-emu/"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "3.10"
|
||||
display_name: "Commodore - C64 SuperCPU (VICE xscpu64)"
|
||||
cores: [vice_xscpu64, xscpu64]
|
||||
systems: [commodore-c64-supercpu]
|
||||
notes: >
|
||||
Embedded SCPU64 ROM V0.07 (free replacement by Soci/Singular, 64 KB), chargen
|
||||
(901225-01, 906143-02), C64 BASIC (901226-01), all C64 kernals (Rev 3, GS,
|
||||
SX-64, 4064, Japanese), all drive ROMs (1540 through 9000), and VIC-II palettes.
|
||||
Embedded ROM check in sysfile_load takes priority over filesystem. External
|
||||
scpu-dos-*.bin provide the original CMD SuperCPU DOS kernals, loaded from
|
||||
system/vice/SCPU64/ when SuperCPU Kernal core option is changed from Internal.
|
||||
JiffyDOS requires True Drive Emulation enabled and a non-internal SuperCPU
|
||||
kernal (the internal ROM is not JiffyDOS-compatible). The .info incorrectly
|
||||
declares JiffyDOS_C64.bin (firmware_count=4); the C64 kernal replacement is
|
||||
only loaded for x64/x64sc/x128, never for xscpu64. Correct firmware_count=5
|
||||
(2 SCPU64 kernals + 3 JiffyDOS drive DOSes).
|
||||
|
||||
files:
|
||||
- name: "scpu-dos-2.04.bin"
|
||||
description: "CMD SuperCPU Kernal v2.04"
|
||||
required: false
|
||||
min_size: 65536
|
||||
max_size: 524288
|
||||
validation: [size]
|
||||
source_ref: "retrodep/ui.c:262-263, vice/src/scpu64/scpu64rom.c:75-89"
|
||||
notes: "Loaded as SCPU64Name when SuperCPU Kernal option set to 2.04. Size must be power of 2 between 64 KB and 512 KB. Stored in system/vice/SCPU64/."
|
||||
|
||||
- name: "scpu-dos-1.4.bin"
|
||||
description: "CMD SuperCPU Kernal v1.4"
|
||||
required: false
|
||||
min_size: 65536
|
||||
max_size: 524288
|
||||
validation: [size]
|
||||
source_ref: "retrodep/ui.c:265-266, vice/src/scpu64/scpu64rom.c:75-89"
|
||||
notes: "Loaded as SCPU64Name when SuperCPU Kernal option set to 1.40. Size must be power of 2 between 64 KB and 512 KB. Stored in system/vice/SCPU64/."
|
||||
|
||||
- name: "JiffyDOS_1541-II.bin"
|
||||
description: "JiffyDOS 1541-II drive DOS replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:282-283"
|
||||
notes: "Loaded as DosName1541ii when JiffyDOS option enabled."
|
||||
|
||||
- name: "JiffyDOS_1571_repl310654.bin"
|
||||
description: "JiffyDOS 1571 drive DOS replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:285-286"
|
||||
notes: "Loaded as DosName1571 when JiffyDOS option enabled."
|
||||
|
||||
- name: "JiffyDOS_1581.bin"
|
||||
description: "JiffyDOS 1581 drive DOS replacement"
|
||||
required: false
|
||||
source_ref: "retrodep/ui.c:287-288"
|
||||
notes: "Loaded as DosName1581 when JiffyDOS option enabled."
|
||||
@@ -1,36 +0,0 @@
|
||||
emulator: "VICE xvic"
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/vice-libretro"
|
||||
upstream: "https://sourceforge.net/projects/vice-emu/"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "3.10"
|
||||
display_name: "Commodore - VIC-20 (VICE xvic)"
|
||||
cores: [vice_xvic, xvic]
|
||||
systems: [commodore-vic20]
|
||||
notes: >
|
||||
System ROMs embedded in binary: BASIC (901486-01), chargen (901460-03),
|
||||
kernal PAL Rev 7 (901486-07), kernal NTSC Rev 6 (901486-06), plus all
|
||||
drive ROMs (1540, 1541, 1541-II, 1551, 1570, 1571, 1571CR, 1581, 1001,
|
||||
2031, 2040, 3040, 4040, 9000) and VIC palettes. Embedded ROM check in
|
||||
sysfile_load takes priority over filesystem. Japanese VIC-1001 model
|
||||
requires kernal Rev 2 (901486-02) and chargen (901460-02) on the
|
||||
filesystem in system/vice/VIC20/; this model is not exposed via core
|
||||
options (only via vicerc). No JiffyDOS support for VIC-20.
|
||||
|
||||
files:
|
||||
- name: "kernal.901486-02.bin"
|
||||
description: "VIC-1001 Kernal Rev 2 (Japanese NTSC)"
|
||||
required: false
|
||||
size: 8192
|
||||
validation: [size]
|
||||
source_ref: "vice/src/vic20/vic20rom.h:49, vice/src/vic20/vic20model.c:60, vice/src/vic20/vic20rom.c:112-120"
|
||||
notes: "Not embedded. Loaded via sysfile from system/vice/VIC20/ when VIC-1001 Japanese model selected via vicerc."
|
||||
|
||||
- name: "chargen-901460-02.bin"
|
||||
description: "VIC-1001 Character ROM (Japanese)"
|
||||
required: false
|
||||
size: 4096
|
||||
validation: [size]
|
||||
source_ref: "vice/src/vic20/vic20rom.h:53, vice/src/vic20/vic20model.c:60, vice/src/vic20/vic20rom.c:173-179"
|
||||
notes: "Not embedded. Loaded via sysfile from system/vice/VIC20/ when VIC-1001 Japanese model selected via vicerc."
|
||||
@@ -1,8 +1,7 @@
|
||||
emulator: vidtest
|
||||
type: test
|
||||
core_classification: pure_libretro
|
||||
source: "https://github.com/schellingb/vidtest_libretro"
|
||||
profiled_date: "2026-03-25"
|
||||
source: "https://github.com/libretro/RetroArch"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "0.1"
|
||||
display_name: "VidTest"
|
||||
cores:
|
||||
@@ -10,9 +9,11 @@ cores:
|
||||
systems: []
|
||||
|
||||
notes: |
|
||||
Video mode and input test core for libretro frontends. Provides interactive
|
||||
GUI (Nuklear) to adjust resolution, aspect ratio, timing, and inspect full
|
||||
input state across all device types. Renders directly to a software surface.
|
||||
No system files required.
|
||||
Video test core built into RetroArch (not from libretro-samples). Tests
|
||||
video driver capabilities: pixel format negotiation, resolution switching,
|
||||
aspect ratio handling, and frame pacing. Renders test patterns for visual
|
||||
validation of the video output chain.
|
||||
|
||||
No system files, BIOS, or firmware required. Not an emulator.
|
||||
|
||||
files: []
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
emulator: Vircon32
|
||||
type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/vircon32/vircon32-libretro"
|
||||
upstream: "https://github.com/vircon32/ComputerSoftware"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "2026.2.18"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "2024.08.28"
|
||||
display_name: "Vircon32"
|
||||
cores:
|
||||
- vircon32
|
||||
@@ -20,7 +18,7 @@ notes: |
|
||||
C header (embedded/StandardBios.h), generated from Assets/StandardBios.v32
|
||||
at build time. The core never strictly requires an external BIOS file.
|
||||
|
||||
BIOS loading logic (libretro.cpp:415-429):
|
||||
BIOS loading logic (libretro.cpp:416-429):
|
||||
1. Check if system_dir/Vircon32Bios.v32 exists on disk
|
||||
2. If found, load it via Console.LoadBiosFile() (external override)
|
||||
3. If not found, load the embedded BIOS via LoadEmbeddedBios()
|
||||
@@ -46,7 +44,7 @@ files:
|
||||
size: 1073060
|
||||
md5: "73f04397cbb2dafcf2047b19a856153a"
|
||||
sha1: "67ddbcd018f03ed74b6e013074d92cc5f1f51c80"
|
||||
source_ref: "libretro.cpp:422-425"
|
||||
source_ref: "libretro.cpp:423-426"
|
||||
notes: |
|
||||
Optional external BIOS placed in the system directory root.
|
||||
If present, overrides the embedded Standard BIOS v1.2.
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
emulator: Virtual Jaguar
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/virtualjaguar-libretro"
|
||||
upstream: "http://shamusworld.gotdns.org/git/virtualjaguar"
|
||||
profiled_date: "2025-03-25"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "v2.1.0"
|
||||
display_name: "Atari - Jaguar (Virtual Jaguar)"
|
||||
cores:
|
||||
|
||||
@@ -1,32 +1,55 @@
|
||||
emulator: VirtualXT
|
||||
type: libretro
|
||||
core_classification: pure_libretro
|
||||
source: "https://codeberg.org/virtualxt/virtualxt"
|
||||
upstream: "https://codeberg.org/virtualxt/virtualxt"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "2.1.0"
|
||||
source: "https://github.com/libretro/virtualxt"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "0.9.0"
|
||||
display_name: "VirtualXT"
|
||||
cores: [virtualxt]
|
||||
systems: [ibm-pc]
|
||||
|
||||
# All BIOS ROMs are embedded at compile time via Odin's #load() directive.
|
||||
# No external files are loaded from system_dir in standard operation.
|
||||
# VirtualXT is a Turbo PC/XT emulator (Intel 8088/186). Written in Odin.
|
||||
# All BIOS ROMs are embedded at compile time via #load() directives in
|
||||
# src/frontend/core.odin. No external BIOS files are required at runtime.
|
||||
|
||||
# The default machine setup (setup_default_machine) loads these embedded ROMs:
|
||||
# - BIOS: GLaBIOS 0.2.6 or Turbo XT BIOS 3.1 (user selects via core option)
|
||||
# - VGA BIOS: vgabios.bin (loaded when VGA video mode is selected)
|
||||
# - Disk Extension: vxtx.bin (always loaded)
|
||||
# - RTC BIOS: GLaTICK 0.8.4 (loaded when RTC is enabled)
|
||||
|
||||
# Core option "virtualxt_bios" selects between GLaBIOS and TurboXT at startup.
|
||||
# Core option "virtualxt_video" selects CGA or VGA (VGA loads vgabios.bin).
|
||||
# Core option "virtualxt_rtc" selects GLaTICK or none (loads GLaTICK_0.8.4_AT.ROM).
|
||||
|
||||
# INI config files (.ini extension) can reference external ROM paths, but the
|
||||
# standard usage path does not require any files in the system directory.
|
||||
|
||||
# Embedded BIOS files (shipped inside the compiled core binary):
|
||||
#
|
||||
# Embedded ROMs (core.odin:323-394, edge branch):
|
||||
# GLABIOS.ROM, pcxtbios.bin, vgabios.bin, vxtx.bin, GLaTICK_0.8.4_AT.ROM
|
||||
#
|
||||
# INI config files can reference external ROM paths via load_from_file
|
||||
# (rom.odin:42-68), but this is not the standard usage path.
|
||||
#
|
||||
# source_ref: src/frontend/core.odin:323-394 (setup_default_machine, #load)
|
||||
# source_ref: src/modules/rom/rom.odin:42-68 (load_from_file, INI only)
|
||||
# source_ref: src/frontend/options.odin:55 (core option virtualxt_bios)
|
||||
# GLABIOS.ROM 8192 bytes md5:bbeb6f7e2175732eebc3f0b49976347a sha1:701bb8ab0f9797581f795394a5c09eb147ff93d2
|
||||
# pcxtbios.bin 8192 bytes md5:336bf8888a22075caa09e2e8e4d96a3b sha1:f7b73e441fd7b582a493837658fa17407e851d7c
|
||||
# vgabios.bin 32768 bytes md5:9c80b0a0784dcf80f84c35b1cc8db81b sha1:251d85a90d3df3d116c30568167587ee3819f623
|
||||
# vxtx.bin 2048 bytes md5:c6c7eef021e5e40503cb5ae860f02fde sha1:ccd27f24e5d7bd7d14b336be5b79b7ef8ba6e6be
|
||||
# GLaTICK_0.8.4_AT.ROM 2048 bytes md5:06ead46b977ffb4a056844e2965653eb sha1:025c5d6d9391698488cebad11623ee239ce070a2
|
||||
|
||||
# Source references:
|
||||
# src/frontend/core.odin:295-370 - BIOS embedding via #load("bios:...", []byte)
|
||||
# src/frontend/options.odin:55 - core option "virtualxt_bios" (GLaBIOS|TurboXT)
|
||||
# src/modules/rom/rom.odin:42-67 - load_from_file (INI path only)
|
||||
# bios/ - open-source BIOS files (GLaBIOS, TurboXT, vgabios)
|
||||
|
||||
files: []
|
||||
|
||||
notes:
|
||||
bios_approach: >
|
||||
All BIOS ROMs embedded at compile time via Odin #load() directive.
|
||||
Open-source replacements: GLaBIOS (GPL), Turbo XT BIOS 3.1, vgabios.
|
||||
No proprietary IBM PC/XT BIOS needed.
|
||||
VirtualXT embeds all BIOS ROMs into the core binary at compile time using
|
||||
Odin's #load() directive. The bios/ directory in the source tree contains
|
||||
open-source replacements: GLaBIOS (GPL), Turbo XT BIOS 3.1, and vgabios.
|
||||
No proprietary IBM PC/XT BIOS is needed.
|
||||
ini_config: >
|
||||
When loading an .ini file, the core can instantiate ROM modules with external
|
||||
file paths (rom.odin handles string values for "mem" via load_from_file).
|
||||
This is an advanced usage path; standard operation needs no external files.
|
||||
supported_extensions: "img, ini, exe, com"
|
||||
supported_features: >
|
||||
Intel 8088/186 CPU, CGA/VGA graphics, EMS memory, ethernet adapter,
|
||||
host file sharing (RIFS2), GDB server, floppy and hard disk images.
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
emulator: vitaQuakeII
|
||||
type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/libretro/vitaquake2"
|
||||
upstream: "https://github.com/Rinnegatamante/vitaQuakeII"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "git"
|
||||
display_name: "Quake II (vitaQuake 2)"
|
||||
cores: [vitaquake2, vitaquake2-rogue, vitaquake2-xatrix, vitaquake2-zaero]
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
emulator: vitaQuakeIII
|
||||
type: game
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/vitaquake3"
|
||||
upstream: "https://github.com/ioquake/ioq3"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "git"
|
||||
display_name: "Quake III: Arena (vitaQuake 3)"
|
||||
cores: [vitaquake3]
|
||||
cores: [vitaquake3, vitavoyager]
|
||||
systems: [quake3]
|
||||
|
||||
notes: >
|
||||
Quake III Arena source port built from ioquake3 with the libretro backend.
|
||||
Also supports Team Arena (missionpack), OpenArena (baseoa), Quake3Rally
|
||||
(baseq3r), and Urban Terror (q3ut4) via path detection. Content is loaded
|
||||
from the .pk3 file path - the engine resolves the parent directory structure
|
||||
to find baseq3/ and loads pak0.pk3 through pak8.pk3 sequentially. Game data
|
||||
files (.pk3 archives) come from the retail game. No files are required in
|
||||
the RetroArch system directory.
|
||||
Quake III Arena and Star Trek Voyager Elite Force source ports. Built from
|
||||
ioquake3 with the libretro backend. vitaquake3 plays Quake III Arena and
|
||||
Team Arena, vitavoyager plays Star Trek Voyager Elite Force (Holomatch
|
||||
multiplayer). Both cores accept .pk3 extensions. Content is loaded from the
|
||||
.pk3 file path - the engine resolves the parent directory structure to find
|
||||
baseq3/ (or baseEF/ for vitavoyager) and loads pak0.pk3 through pak8.pk3
|
||||
sequentially. Game data files (.pk3 archives containing maps, textures,
|
||||
models, shaders, sounds) come from the retail game, not engine firmware.
|
||||
No files are required in the RetroArch system directory. The cores need
|
||||
no BIOS or firmware.
|
||||
|
||||
files: []
|
||||
|
||||
@@ -1,20 +1,8 @@
|
||||
emulator: vitavoyager
|
||||
type: game
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/vitavoyager"
|
||||
upstream: "https://github.com/zturtleman/lilium-voyager"
|
||||
profiled_date: "2026-03-25"
|
||||
emulator: "vitavoyager"
|
||||
type: alias
|
||||
alias_of: "vitaquake3"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "git"
|
||||
display_name: "Star Trek: Voyager - Elite Force (vitaVoyager)"
|
||||
cores: [vitavoyager]
|
||||
systems: [quake3]
|
||||
|
||||
notes: >
|
||||
Star Trek Voyager Elite Force Holomatch (multiplayer) source port built from
|
||||
Lilium Voyager (itself an ioquake3 fork) with the libretro backend. Content
|
||||
is loaded from the .pk3 file path - the engine resolves the parent directory
|
||||
structure to find baseEF/ and loads pak0.pk3 through pak3.pk3 sequentially.
|
||||
Game data files (.pk3 archives) come from the retail game. No files are
|
||||
required in the RetroArch system directory.
|
||||
|
||||
note: "This core uses the same BIOS/firmware as vitaquake3. See emulators/vitaquake3.yml for details."
|
||||
files: []
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
emulator: WASM-4
|
||||
type: game
|
||||
core_classification: game_engine
|
||||
source: "https://github.com/aduros/wasm4"
|
||||
upstream: "https://github.com/aduros/wasm4"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "2.1.0"
|
||||
display_name: "WASM-4"
|
||||
cores: [wasm4]
|
||||
systems: []
|
||||
files: []
|
||||
notes: >
|
||||
Fantasy game console for WebAssembly. 160x160 display, 4-color palette,
|
||||
1024 bytes persistent storage. Self-contained runtime, no external file
|
||||
dependencies. Libretro backend is in the upstream repo (no separate fork).
|
||||
WASM-4 is a low-level fantasy game console for building small games with
|
||||
WebAssembly. It provides a fixed 160x160 display, 4-color palette, gamepad
|
||||
input, and 1024 bytes of persistent storage. Games are standalone .wasm
|
||||
cartridges. The runtime is fully self-contained with no external file
|
||||
dependencies. No BIOS or system directory files required.
|
||||
|
||||
@@ -1,92 +1,83 @@
|
||||
emulator: "X Millennium"
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/xmil-libretro"
|
||||
upstream: "http://amethyst.yui.ne.jp/svn/x1/xmil/trunk/"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "0.60a"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "0.60"
|
||||
display_name: "Sharp X1 (X Millennium)"
|
||||
cores:
|
||||
- x1
|
||||
systems:
|
||||
- sharp-x1
|
||||
|
||||
# X Millennium (XMIL) is a Sharp X1 series emulator by yui, ported to libretro
|
||||
# by r-type. Supports X1, X1 Turbo, and X1 TurboZ models via the "X1_ROMTYPE"
|
||||
# core option (X1 = ROM_TYPE 1, TURBO = 2, TURBOZ = 3).
|
||||
#
|
||||
# SUPPORT_TURBOZ is not compiled in the libretro build (compiler.h), so TurboZ
|
||||
# extended color modes are unavailable. ROM_TYPE 3 still selects IPLROM.X1T.
|
||||
# X Millennium (XMIL) is a Sharp X1 series emulator by yui. The libretro port
|
||||
# supports X1, X1 Turbo, and X1 TurboZ models via the "X1_ROMTYPE" core option
|
||||
# (values: X1, TURBO, TURBOZ; default: X1 = ROM_TYPE 1).
|
||||
#
|
||||
# All system files go under: <system_dir>/xmil/
|
||||
# retro_init() builds: retro_system_conf = "<system_dir>/xmil" (libretro.c:597)
|
||||
# (libretro.c:597 builds the path as "<system_dir>/xmil")
|
||||
#
|
||||
# IPL ROM loading (memio.c:87-121):
|
||||
# biosmem is initialized with defaultiplrom (575-byte boot stub from defipl.res).
|
||||
# ROM_TYPE >= 1: loads external IPL ROM into biosmem, overwriting the stub.
|
||||
# ROM_TYPE 1 (X1): xmil/IPLROM.X1
|
||||
# ROM_TYPE >= 2 (Turbo/TurboZ): xmil/IPLROM.X1T
|
||||
# Path built explicitly: sprintf(rtmp, "%s%c%s", retro_system_conf, slash, iplfile)
|
||||
# If file missing, the 575-byte stub remains (limited boot capability).
|
||||
# IPL ROM loading (memio.c:88-116):
|
||||
# ROM_TYPE 0: uses built-in default IPL (575 bytes, basic boot stub from defipl.res)
|
||||
# ROM_TYPE 1 (X1): loads xmil/IPLROM.X1 (32 KB)
|
||||
# ROM_TYPE 2 (Turbo): loads xmil/IPLROM.X1T (32 KB)
|
||||
# ROM_TYPE 3 (TurboZ): loads xmil/IPLROM.X1T (32 KB, same file as Turbo)
|
||||
# If the file is missing, the core falls back to the built-in default IPL.
|
||||
#
|
||||
# Font loading (fontx1.c:69-122, font.c:89-127):
|
||||
# font_load(NULL, TRUE) called from pccore_initialize() (pccore.c:67).
|
||||
# Built-in defaults (defrom_ank, defrom_txt from fontdata.c) provide basic ASCII.
|
||||
# x1fontread() tries to load external font files via fontopen().
|
||||
# Font path resolution uses file_getcd() which defaults to "./" in the libretro
|
||||
# port (file_setcd() is never called). Upstream win9x/sdl2 calls file_setcd()
|
||||
# to set the working dir. Fonts may not be found from xmil/ in practice.
|
||||
# Font loading (font.c:90-127, fontx1.c:70-123):
|
||||
# font_load() calls x1fontread() which looks for font files using fontopen().
|
||||
# fontopen() resolves paths relative to the working directory (file_getcd()),
|
||||
# which in libretro context is the xmil subdirectory.
|
||||
# Built-in defaults (defrom_ank, defrom_txt) are used for basic ASCII rendering.
|
||||
# External font ROMs add full Japanese character support.
|
||||
#
|
||||
# .info declares firmware_count=2 (IPL ROMs only). Font files are not declared.
|
||||
# .info firmware1_desc incorrectly says "8x8 Font ROM" (actually Turbo IPL ROM).
|
||||
# The .info file only lists IPLROM.X1 and IPLROM.X1T as required BIOS files.
|
||||
# Font ROMs are optional -- the core renders basic text without them but Japanese
|
||||
# kanji display requires the external font files.
|
||||
|
||||
notes: |
|
||||
Place all files in: <system_dir>/xmil/
|
||||
The core selects between IPLROM.X1 and IPLROM.X1T based on the "X1_ROMTYPE"
|
||||
core option. A 575-byte built-in IPL stub provides limited boot without the
|
||||
real ROMs. Font files add Japanese character support; the libretro port has a
|
||||
path resolution quirk where fonts are searched in "./" instead of "xmil/"
|
||||
(missing file_setcd call).
|
||||
core option. A built-in fallback IPL exists but lacks full boot functionality.
|
||||
Font files are optional; without them, kanji/JIS characters won't render.
|
||||
|
||||
files:
|
||||
# -- IPL ROMs --
|
||||
|
||||
- name: IPLROM.X1
|
||||
path: xmil/IPLROM.X1
|
||||
size: 32768
|
||||
required: false
|
||||
hle_fallback: true
|
||||
description: "X1 IPL ROM. Loaded when ROM_TYPE=1 (X1 model)."
|
||||
source_ref: "io/memio.c:82,96-108"
|
||||
md5: eeeea1cd29c6e0e8b094790ae969bfa7
|
||||
required: true
|
||||
note: "X1 IPL ROM (32 KB). Loaded when ROM_TYPE=1 (X1 model). Listed in .info."
|
||||
source_ref: "io/memio.c:82,96-103"
|
||||
|
||||
- name: IPLROM.X1T
|
||||
path: xmil/IPLROM.X1T
|
||||
size: 32768
|
||||
required: false
|
||||
hle_fallback: true
|
||||
description: "X1 Turbo/TurboZ IPL ROM. Loaded when ROM_TYPE=2 or 3."
|
||||
source_ref: "io/memio.c:83,97-108"
|
||||
md5: 851e4a5936f17d13f8c39a980cf00d77
|
||||
required: true
|
||||
note: "X1 Turbo/TurboZ IPL ROM (32 KB). Loaded when ROM_TYPE=2 or 3. Listed in .info."
|
||||
source_ref: "io/memio.c:83,97-99"
|
||||
|
||||
# -- Font ROMs (optional, for Japanese text rendering) --
|
||||
|
||||
- name: FNT0808.X1
|
||||
path: xmil/FNT0808.X1
|
||||
size: 2048
|
||||
validation: [size]
|
||||
required: false
|
||||
hle_fallback: true
|
||||
description: "8x8 ANK font ROM. Built-in defrom_ank fallback provides basic ASCII."
|
||||
note: "8x8 ANK font ROM (2 KB). Provides half-width ASCII/kana characters."
|
||||
source_ref: "font/fontdata.c:6, font/fontx1.c:79-87"
|
||||
|
||||
- name: FNT0816.X1
|
||||
path: xmil/FNT0816.X1
|
||||
size: 4096
|
||||
validation: [size]
|
||||
required: false
|
||||
hle_fallback: true
|
||||
description: "8x16 ANK font ROM. Built-in fallback derived from defrom_ank/defrom_txt."
|
||||
note: "8x16 ANK font ROM (4 KB). Provides taller half-width characters for text mode."
|
||||
source_ref: "font/fontdata.c:7, font/fontx1.c:89-103"
|
||||
|
||||
- name: FNT1616.X1
|
||||
path: xmil/FNT1616.X1
|
||||
size: 306176
|
||||
validation: [size]
|
||||
required: false
|
||||
description: "16x16 Kanji font ROM. No built-in kanji data (zeroed). Required for Japanese text."
|
||||
note: "16x16 Kanji font ROM (~299 KB). Full JIS kanji character set for Japanese text."
|
||||
source_ref: "font/fontdata.c:8, font/fontx1.c:105-120"
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
emulator: x16emu
|
||||
type: standalone
|
||||
upstream: "https://github.com/X16Community/x16-emulator"
|
||||
profiled_date: "2026-03-26"
|
||||
core_version: "r50"
|
||||
display_name: "Commander X16 (x16emu)"
|
||||
cores:
|
||||
- x16emu
|
||||
systems:
|
||||
- commanderx16
|
||||
|
||||
notes: |
|
||||
Standalone emulator for the Commander X16 retro computer by Michael Steil.
|
||||
65C02/65C816 CPU, VERA video, YM2151+PSG audio, SD card, cartridge support.
|
||||
|
||||
System ROM built separately from the x16-rom repo (KERNAL + BASIC + DOS,
|
||||
32 banks x 16 KB = 512 KB). Emulator and ROM versions must match.
|
||||
|
||||
Batocera configgen (x16emuGenerator.py) passes -rom /userdata/bios/commanderx16/rom.bin.
|
||||
Also sets -ram 2048, -rtc, and scale/quality/widescreen per user config.
|
||||
|
||||
files:
|
||||
- name: rom.bin
|
||||
path: commanderx16/rom.bin
|
||||
required: true
|
||||
size: 524288
|
||||
description: "Commander X16 system ROM (KERNAL, BASIC, DOS, charset)"
|
||||
source_ref: "x16-emulator/src/main.c:602,1158-1165; glue.h:19,24"
|
||||
note: >
|
||||
Default filename "rom.bin", loaded from executable directory or via -rom flag.
|
||||
ROM_SIZE = NUM_ROM_BANKS(32) * 16384 = 524288 bytes. exit(1) if file not found.
|
||||
Built from x16-rom repo (open source, derived from C64 KERNAL/BASIC).
|
||||
@@ -1,181 +1,20 @@
|
||||
emulator: x64sdl
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/r-type/sdlvice-libretro"
|
||||
upstream: "https://sourceforge.net/projects/vice-emu/"
|
||||
profiled_date: "2026-03-25"
|
||||
core_version: "3.1"
|
||||
source: "https://github.com/libretro/vice-libretro"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "v3.1"
|
||||
display_name: "Commodore - C64 (VICE SDL)"
|
||||
cores: [x64sdl]
|
||||
systems: [commodore-c64]
|
||||
notes: >
|
||||
Old port of VICE 3.1 using an SDL-to-libretro shim (r-type/sdlvice-libretro).
|
||||
Separate codebase from the newer vice-libretro port. Marked experimental and
|
||||
superseded. Unlike the newer port, this core does NOT embed system ROMs; all ROMs
|
||||
must be on disk in <system_dir>/data/C64/ and <system_dir>/data/DRIVES/.
|
||||
The .info declares firmware_count=0 which is incorrect. No JiffyDOS support.
|
||||
No save states, no netplay, no cheats.
|
||||
cores:
|
||||
- vice_x64
|
||||
systems:
|
||||
- commodore-c64
|
||||
|
||||
files:
|
||||
# C64 system ROMs (required, path: data/C64/)
|
||||
- name: "kernal"
|
||||
description: "C64 Kernal ROM"
|
||||
required: true
|
||||
size: 8192
|
||||
path: "data/C64/kernal"
|
||||
source_ref: "src/c64/c64rom.c:133, src/c64/c64-resources.c:255"
|
||||
notes: |
|
||||
Alias for the VICE x64 core. x64sdl is an alternate build name
|
||||
referencing the SDL-based VICE x64 Commodore 64 emulator. In the
|
||||
libretro ecosystem this maps to the same vice_x64 core binary.
|
||||
|
||||
- name: "basic"
|
||||
description: "C64 BASIC ROM"
|
||||
required: true
|
||||
size: 8192
|
||||
path: "data/C64/basic"
|
||||
source_ref: "src/c64/c64rom.c:192, src/c64/c64-resources.c:258"
|
||||
See vice.yml for full ROM and BIOS details. All standard ROMs are
|
||||
embedded in the core binary.
|
||||
|
||||
- name: "chargen"
|
||||
description: "C64 character generator ROM"
|
||||
required: true
|
||||
size: 4096
|
||||
path: "data/C64/chargen"
|
||||
source_ref: "src/c64/c64rom.c:207, src/c64/c64-resources.c:252"
|
||||
|
||||
# C64 variant kernals (optional, for alternate models via c64model.c)
|
||||
- name: "sxkernal"
|
||||
description: "SX-64 Kernal ROM"
|
||||
required: false
|
||||
size: 8192
|
||||
path: "data/C64/sxkernal"
|
||||
source_ref: "src/c64/c64model.c:142,147"
|
||||
notes: "Loaded when SX64 PAL or SX64 NTSC model selected."
|
||||
|
||||
- name: "jpkernal"
|
||||
description: "Japanese C64 Kernal ROM"
|
||||
required: false
|
||||
size: 8192
|
||||
path: "data/C64/jpkernal"
|
||||
source_ref: "src/c64/c64model.c:152"
|
||||
notes: "Loaded when C64 JAP NTSC model selected."
|
||||
|
||||
- name: "jpchrgen"
|
||||
description: "Japanese C64 character generator ROM"
|
||||
required: false
|
||||
size: 4096
|
||||
path: "data/C64/jpchrgen"
|
||||
source_ref: "src/c64/c64model.c:152"
|
||||
notes: "Loaded when C64 JAP NTSC model selected."
|
||||
|
||||
- name: "gskernal"
|
||||
description: "C64 Games System Kernal ROM"
|
||||
required: false
|
||||
size: 8192
|
||||
path: "data/C64/gskernal"
|
||||
source_ref: "src/c64/c64model.c:157"
|
||||
notes: "Loaded when C64 GS PAL model selected."
|
||||
|
||||
- name: "edkernal"
|
||||
description: "PET64/Educator64 Kernal ROM"
|
||||
required: false
|
||||
size: 8192
|
||||
path: "data/C64/edkernal"
|
||||
source_ref: "src/c64/c64model.c:162,167"
|
||||
notes: "Loaded when PET64 PAL or PET64 NTSC model selected."
|
||||
|
||||
# IEC drive ROMs (optional, path: data/DRIVES/)
|
||||
- name: "dos1540"
|
||||
description: "1540 floppy drive ROM"
|
||||
required: false
|
||||
path: "data/DRIVES/dos1540"
|
||||
source_ref: "src/drive/iec/iecrom.c:99, src/drive/iec/iec-resources.c:182"
|
||||
notes: "Hardware-level 1540 drive emulation. Absence disables this drive type."
|
||||
|
||||
- name: "dos1541"
|
||||
description: "1541 floppy drive ROM"
|
||||
required: false
|
||||
path: "data/DRIVES/dos1541"
|
||||
source_ref: "src/drive/iec/iecrom.c:106, src/drive/iec/iec-resources.c:185"
|
||||
notes: "Hardware-level 1541 drive emulation. Most common C64 drive."
|
||||
|
||||
- name: "d1541II"
|
||||
description: "1541-II floppy drive ROM"
|
||||
required: false
|
||||
path: "data/DRIVES/d1541II"
|
||||
source_ref: "src/drive/iec/iecrom.c:113, src/drive/iec/iec-resources.c:187"
|
||||
|
||||
- name: "dos1570"
|
||||
description: "1570 floppy drive ROM"
|
||||
required: false
|
||||
path: "data/DRIVES/dos1570"
|
||||
source_ref: "src/drive/iec/iecrom.c:121, src/drive/iec/iec-resources.c:189"
|
||||
|
||||
- name: "dos1571"
|
||||
description: "1571 floppy drive ROM"
|
||||
required: false
|
||||
path: "data/DRIVES/dos1571"
|
||||
source_ref: "src/drive/iec/iecrom.c:127, src/drive/iec/iec-resources.c:191"
|
||||
|
||||
- name: "dos1581"
|
||||
description: "1581 floppy drive ROM"
|
||||
required: false
|
||||
path: "data/DRIVES/dos1581"
|
||||
source_ref: "src/drive/iec/iecrom.c:133, src/drive/iec/iec-resources.c:193"
|
||||
|
||||
- name: "dos2000"
|
||||
description: "CMD FD-2000 drive ROM"
|
||||
required: false
|
||||
path: "data/DRIVES/dos2000"
|
||||
source_ref: "src/drive/iec/iecrom.c:139, src/drive/iec/iec-resources.c:195"
|
||||
notes: "Not shipped with VICE 3.1 data files."
|
||||
|
||||
- name: "dos4000"
|
||||
description: "CMD FD-4000 drive ROM"
|
||||
required: false
|
||||
path: "data/DRIVES/dos4000"
|
||||
source_ref: "src/drive/iec/iecrom.c:145, src/drive/iec/iec-resources.c:197"
|
||||
notes: "Not shipped with VICE 3.1 data files."
|
||||
|
||||
# IEEE drive ROMs (optional, path: data/DRIVES/)
|
||||
- name: "dos2031"
|
||||
description: "2031 IEEE drive ROM"
|
||||
required: false
|
||||
path: "data/DRIVES/dos2031"
|
||||
source_ref: "src/drive/ieee/ieee.c:115, src/drive/ieee/ieee-resources.c:93"
|
||||
notes: "IEEE488 interface drive. Requires parallel IEEE488 extension."
|
||||
|
||||
- name: "dos2040"
|
||||
description: "2040 IEEE drive ROM"
|
||||
required: false
|
||||
path: "data/DRIVES/dos2040"
|
||||
source_ref: "src/drive/ieee/ieee.c:116, src/drive/ieee/ieee-resources.c:96"
|
||||
|
||||
- name: "dos3040"
|
||||
description: "3040 IEEE drive ROM"
|
||||
required: false
|
||||
path: "data/DRIVES/dos3040"
|
||||
source_ref: "src/drive/ieee/ieee.c:117, src/drive/ieee/ieee-resources.c:98"
|
||||
|
||||
- name: "dos4040"
|
||||
description: "4040 IEEE drive ROM"
|
||||
required: false
|
||||
path: "data/DRIVES/dos4040"
|
||||
source_ref: "src/drive/ieee/ieee.c:118, src/drive/ieee/ieee-resources.c:100"
|
||||
|
||||
- name: "dos1001"
|
||||
description: "1001/8050/8250 IEEE drive ROM"
|
||||
required: false
|
||||
path: "data/DRIVES/dos1001"
|
||||
source_ref: "src/drive/ieee/ieee.c:119, src/drive/ieee/ieee-resources.c:102"
|
||||
|
||||
# Printer ROMs (optional, path: data/PRINTER/)
|
||||
- name: "mps803"
|
||||
description: "MPS-803 printer character ROM"
|
||||
required: false
|
||||
path: "data/PRINTER/mps803"
|
||||
source_ref: "src/printerdrv/drv-mps803.c:420"
|
||||
notes: "Loaded on demand when MPS-803 printer opened."
|
||||
|
||||
- name: "nl10-cbm"
|
||||
description: "NL10 printer ROM"
|
||||
required: false
|
||||
path: "data/PRINTER/nl10-cbm"
|
||||
source_ref: "src/printerdrv/drv-nl10.c:2210"
|
||||
notes: "Loaded on demand when NL10 printer opened."
|
||||
files: []
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
emulator: XRick
|
||||
type: libretro
|
||||
core_classification: game_engine
|
||||
source: "https://github.com/libretro/xrick-libretro"
|
||||
upstream: "https://github.com/fabiensanglard/xrick"
|
||||
profiled_date: "2026-03-25"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "1.0.0.6"
|
||||
display_name: "Rick Dangerous (XRick)"
|
||||
cores:
|
||||
|
||||
@@ -1,401 +0,0 @@
|
||||
emulator: XRoar
|
||||
type: standalone
|
||||
source: "https://www.6809.org.uk/git/xroar.git"
|
||||
upstream: "https://www.6809.org.uk/xroar/"
|
||||
profiled_date: "2026-03-26"
|
||||
core_version: "1.10"
|
||||
display_name: "Dragon / CoCo / MC-10 (XRoar)"
|
||||
cores:
|
||||
- xroar
|
||||
systems:
|
||||
- dragon32
|
||||
- dragon64
|
||||
- coco
|
||||
- coco3
|
||||
- mc10
|
||||
|
||||
notes: |
|
||||
XRoar by Ciaran Anscomb emulates Dragon 32/64, Tandy CoCo 1/2/3,
|
||||
MC-10, Alice, and clones (MX-1600, CP-400, Dragon 200-E, Deluxe CoCo).
|
||||
ROM files are searched in a configurable rompath directory with automatic
|
||||
extension appending (.rom, .ROM, .dgn, .DGN). Batocera sets rompath to
|
||||
/userdata/bios/xroar/.
|
||||
|
||||
The romlist mechanism defines fallback filenames per ROM slot. Each machine
|
||||
type has a default romlist that tries filenames in priority order. CRC32 is
|
||||
computed for loaded ROMs and matched against known-good values for breakpoint
|
||||
and feature detection, but mismatches do not prevent loading.
|
||||
|
||||
Machine selection: Batocera maps system names to default machines via
|
||||
xroarGenerator.py (mc10 -> mc10, dragon64 -> dragon64, others -> coco2bus).
|
||||
|
||||
files:
|
||||
# ---- Dragon 32 ----
|
||||
|
||||
- name: "d32.rom"
|
||||
system: dragon32
|
||||
description: "Dragon 32 BASIC ROM"
|
||||
required: true
|
||||
size: 16384
|
||||
crc32: "e3879310"
|
||||
validation: [crc32]
|
||||
aliases: [dragon32, d32rom, "Dragon Data Ltd - Dragon 32 - IC17"]
|
||||
source_ref: "xroar.c:643 (romlist d32), dragon.c:792,798-803,820-821 (load + CRC)"
|
||||
notes: "Combined 16K ROM. Loaded into a single 16384-byte rombank slot."
|
||||
|
||||
# ---- Dragon 64 ----
|
||||
|
||||
- name: "d64_1.rom"
|
||||
system: dragon64
|
||||
description: "Dragon 64 32K mode BASIC ROM"
|
||||
required: true
|
||||
size: 16384
|
||||
crc32: "84f68bf9"
|
||||
validation: [crc32]
|
||||
aliases: [d64rom1, dragrom, "Dragon Data Ltd - Dragon 64 - IC17", "Dragon Data Ltd - TANO IC18", "Eurohard S.A. - Dragon 200 IC18"]
|
||||
source_ref: "xroar.c:641 (romlist d64_1), xroar.c:647 (romlist dragon64), dragon64.c:138-141,155-157 (load + CRC)"
|
||||
notes: "IC17 ROM. Required for the machine to start."
|
||||
|
||||
- name: "d64_2.rom"
|
||||
system: dragon64
|
||||
description: "Dragon 64 64K mode BASIC ROM"
|
||||
required: false
|
||||
size: 16384
|
||||
crc32: "17893a42"
|
||||
validation: [crc32]
|
||||
aliases: [d64rom2, "Dragon Data Ltd - Dragon 64 - IC18", "Dragon Data Ltd - TANO IC17", "Eurohard S.A. - Dragon 200 IC17"]
|
||||
source_ref: "xroar.c:642 (romlist d64_2), xroar.c:648 (romlist dragon64_alt), dragon64.c:146-152,160-162 (load + CRC)"
|
||||
notes: "IC18 ROM. 64K mode alternate BASIC. Machine starts without it (32K mode only)."
|
||||
|
||||
# ---- Dragon 200-E ----
|
||||
|
||||
- name: "d200e_1.rom"
|
||||
system: dragon64
|
||||
description: "Dragon 200-E BASIC IC18 (Spanish)"
|
||||
required: true
|
||||
size: 16384
|
||||
crc32: "95af0a0a"
|
||||
validation: [crc32]
|
||||
aliases: [d200e_rom1, ic18_v1.4e.ic34]
|
||||
source_ref: "xroar.c:644 (romlist d200e_1), xroar.c:650 (romlist dragon200e), xroar.c:735 (crclist)"
|
||||
notes: "Required for Dragon 200-E. Falls back to d64_1 then generic dragon if not found."
|
||||
|
||||
- name: "d200e_2.rom"
|
||||
system: dragon64
|
||||
description: "Dragon 200-E BASIC IC17 (Spanish)"
|
||||
required: false
|
||||
size: 16384
|
||||
aliases: [d200e_rom2, ic17_v1.4e.ic37]
|
||||
source_ref: "xroar.c:645 (romlist d200e_2), xroar.c:651 (romlist dragon200e_alt)"
|
||||
notes: "64K mode alternate. Falls back to d64_2 if not found."
|
||||
|
||||
- name: "d200e_26.rom"
|
||||
system: dragon64
|
||||
description: "Dragon 200-E external character generator ROM"
|
||||
required: false
|
||||
size: 4096
|
||||
aliases: [rom26.ic1]
|
||||
source_ref: "xroar.c:652 (romlist dragon200e_charset), dragon.c:523-539 (ext_charset load)"
|
||||
notes: "Spanish character set. Loaded into a 4096-byte rombank. Machine works without it (uses standard charset)."
|
||||
|
||||
# ---- Dragon Professional (Alpha) ----
|
||||
|
||||
- name: "alpha-boot-v1.0.rom"
|
||||
system: dragon64
|
||||
description: "Dragon Professional (Alpha) boot ROM v1.0"
|
||||
required: true
|
||||
crc32: "d6172b56"
|
||||
validation: [crc32]
|
||||
aliases: [alpha_bt_10, "Dragon Data Ltd - Dragon Alpha Boot v1.0 150584"]
|
||||
source_ref: "xroar.c:654 (romlist dragonpro_boot), xroar.c:741 (crclist), dragonpro.c:231-234 (load)"
|
||||
notes: "Required for Dragon Professional machine. Loaded as extbas_rom (boot ROM)."
|
||||
|
||||
- name: "alpha-basic.rom"
|
||||
system: dragon64
|
||||
description: "Dragon Professional (Alpha) BASIC ROM"
|
||||
required: true
|
||||
aliases: [alpha_ba, "Dragon Data Ltd - Dragon Alpga Basic"]
|
||||
source_ref: "xroar.c:655 (romlist dragonpro_basic), dragonpro.c:240-243 (load)"
|
||||
notes: "Loaded as altbas_rom. Falls back to d64_1 if not found."
|
||||
|
||||
# ---- Tandy CoCo (Colour BASIC) ----
|
||||
|
||||
- name: "bas13.rom"
|
||||
system: coco
|
||||
description: "Tandy CoCo Colour BASIC 1.3"
|
||||
required: true
|
||||
size: 8192
|
||||
crc32: "d8f4d15e"
|
||||
validation: [crc32]
|
||||
source_ref: "xroar.c:657 (romlist coco), xroar.c:747 (crclist bas13), dragon.c:807-812,824-826 (load + CRC)"
|
||||
notes: "Default Colour BASIC. First tried in the @coco romlist. 8K ROM loaded into slot 1 of a 2-slot rombank."
|
||||
|
||||
- name: "bas12.rom"
|
||||
system: coco
|
||||
description: "Tandy CoCo Colour BASIC 1.2"
|
||||
required: false
|
||||
size: 8192
|
||||
crc32: "54368805"
|
||||
validation: [crc32]
|
||||
aliases: ["Color Basic v1.2 (1982)(Tandy)"]
|
||||
source_ref: "xroar.c:657 (romlist coco), xroar.c:746 (crclist bas12)"
|
||||
notes: "Alternative to bas13. Second in fallback order."
|
||||
|
||||
- name: "bas11.rom"
|
||||
system: coco
|
||||
description: "Tandy CoCo Colour BASIC 1.1"
|
||||
required: false
|
||||
size: 8192
|
||||
crc32: "6270955a"
|
||||
validation: [crc32]
|
||||
source_ref: "xroar.c:657 (romlist coco), xroar.c:745 (crclist bas11)"
|
||||
notes: "Used by CoCo 1E. Third in fallback order."
|
||||
|
||||
- name: "bas10.rom"
|
||||
system: coco
|
||||
description: "Tandy CoCo Colour BASIC 1.0"
|
||||
required: false
|
||||
size: 8192
|
||||
crc32: "00b50aaa"
|
||||
validation: [crc32]
|
||||
source_ref: "xroar.c:657 (romlist coco), xroar.c:744 (crclist bas10)"
|
||||
notes: "Earliest version. Used by original CoCo 1. Last in fallback order."
|
||||
|
||||
# ---- Tandy CoCo (Extended Colour BASIC) ----
|
||||
|
||||
- name: "extbas11.rom"
|
||||
system: coco
|
||||
description: "Tandy CoCo Extended Colour BASIC 1.1"
|
||||
required: true
|
||||
size: 8192
|
||||
crc32: "a82a6254"
|
||||
validation: [crc32]
|
||||
source_ref: "xroar.c:658 (romlist coco_ext), xroar.c:752 (crclist extbas11), dragon.c:798-803,828-829 (load + CRC)"
|
||||
notes: "Default Extended BASIC. 8K ROM loaded into slot 0 of a 2-slot rombank."
|
||||
|
||||
- name: "extbas10.rom"
|
||||
system: coco
|
||||
description: "Tandy CoCo Extended Colour BASIC 1.0"
|
||||
required: false
|
||||
size: 8192
|
||||
crc32: "e031d076"
|
||||
validation: [crc32]
|
||||
source_ref: "xroar.c:658 (romlist coco_ext), xroar.c:751 (crclist extbas10)"
|
||||
notes: "Earlier version. Second in fallback order."
|
||||
|
||||
# ---- Tandy CoCo 3 ----
|
||||
|
||||
- name: "coco3.rom"
|
||||
system: coco3
|
||||
description: "CoCo 3 Super Extended Colour BASIC (NTSC)"
|
||||
required: true
|
||||
size: 32768
|
||||
crc32: "b4c88d6c"
|
||||
validation: [crc32]
|
||||
source_ref: "xroar.c:688 (romlist coco3), xroar.c:762 (crclist coco3), coco3.c:254-256,512-526 (load + CRC)"
|
||||
notes: "32K combined ROM. Single required ROM for CoCo 3 NTSC."
|
||||
|
||||
- name: "coco3p.rom"
|
||||
system: coco3
|
||||
description: "CoCo 3 Super Extended Colour BASIC (PAL)"
|
||||
required: true
|
||||
size: 32768
|
||||
source_ref: "xroar.c:689 (romlist coco3p), xroar.c:505,514 (machine config), coco3.c:254-256"
|
||||
notes: "PAL variant of the CoCo 3 ROM. Required for PAL CoCo 3 machines."
|
||||
|
||||
# ---- Tandy MC-10 ----
|
||||
|
||||
- name: "mc10.rom"
|
||||
system: mc10
|
||||
description: "Tandy MC-10 Microcolour BASIC"
|
||||
required: true
|
||||
size: 8192
|
||||
crc32: "11fda97e"
|
||||
validation: [crc32]
|
||||
source_ref: "xroar.c:695 (romlist mc10), xroar.c:767 (crclist mc10), mc10.c:157-158,397-407 (load + CRC)"
|
||||
notes: "Single required ROM for MC-10."
|
||||
|
||||
- name: "alice.rom"
|
||||
system: mc10
|
||||
description: "Matra & Hachette Alice Microcolour BASIC"
|
||||
required: true
|
||||
size: 8192
|
||||
crc32: "f876abe9"
|
||||
validation: [crc32]
|
||||
source_ref: "xroar.c:697 (romlist alice), xroar.c:769 (crclist alice), mc10.c:157-158"
|
||||
notes: "French Alice variant. Required for Alice machine. MC-10 compatible."
|
||||
|
||||
# ---- Deluxe CoCo (prototype) ----
|
||||
|
||||
- name: "deluxe.rom"
|
||||
system: coco
|
||||
description: "Tandy Deluxe CoCo Advanced BASIC (bank 0)"
|
||||
required: true
|
||||
crc32: "1cce231e"
|
||||
validation: [crc32]
|
||||
aliases: [adv070_u24]
|
||||
source_ref: "xroar.c:673 (romlist deluxecoco), xroar.c:757 (crclist), deluxecoco.c:191-194 (load)"
|
||||
notes: "Primary ROM for the Deluxe CoCo prototype. Loaded as extbas_rom."
|
||||
|
||||
- name: "adv071_u24.rom"
|
||||
system: coco
|
||||
description: "Tandy Deluxe CoCo ROM bank 1"
|
||||
required: false
|
||||
source_ref: "xroar.c:675 (romlist deluxecoco1), deluxecoco.c:201-204 (load)"
|
||||
|
||||
- name: "adv072_u24.rom"
|
||||
system: coco
|
||||
description: "Tandy Deluxe CoCo ROM bank 2"
|
||||
required: false
|
||||
source_ref: "xroar.c:676 (romlist deluxecoco2), deluxecoco.c:208-211 (load)"
|
||||
|
||||
- name: "adv073-2_u24.rom"
|
||||
system: coco
|
||||
description: "Tandy Deluxe CoCo ROM bank 3"
|
||||
required: false
|
||||
aliases: [adv073_u24]
|
||||
source_ref: "xroar.c:677 (romlist deluxecoco3), deluxecoco.c:215-218 (load)"
|
||||
|
||||
# ---- Dynacom MX-1600 (Brazilian clone) ----
|
||||
|
||||
- name: "mx1600bas.rom"
|
||||
system: coco
|
||||
description: "Dynacom MX-1600 Colour BASIC"
|
||||
required: true
|
||||
crc32: "d918156e"
|
||||
validation: [crc32]
|
||||
aliases: [mx1600bas_zephyr]
|
||||
source_ref: "xroar.c:679 (romlist mx1600), xroar.c:748 (crclist mx1600)"
|
||||
notes: "Required for MX-1600. Zephyr-patched variant (CRC32 d11b1c96) is an alias."
|
||||
|
||||
- name: "mx1600extbas.rom"
|
||||
system: coco
|
||||
description: "Dynacom MX-1600 Extended Colour BASIC"
|
||||
required: true
|
||||
crc32: "322a3d58"
|
||||
validation: [crc32]
|
||||
source_ref: "xroar.c:680 (romlist mx1600ext), xroar.c:753 (crclist mx1600ext)"
|
||||
|
||||
# ---- Prologica CP-400 (Brazilian clone) ----
|
||||
|
||||
- name: "cp400bas.rom"
|
||||
system: coco
|
||||
description: "Prologica CP-400 Colour BASIC"
|
||||
required: true
|
||||
crc32: "0b2903d4"
|
||||
validation: [crc32]
|
||||
source_ref: "xroar.c:682 (romlist cp400), xroar.c:749 (crclist cp400)"
|
||||
|
||||
- name: "cp400ext.rom"
|
||||
system: coco
|
||||
description: "Prologica CP-400 Extended Colour BASIC"
|
||||
required: true
|
||||
crc32: "114accbc"
|
||||
validation: [crc32]
|
||||
source_ref: "xroar.c:683 (romlist cp400ext), xroar.c:754 (crclist cp400ext)"
|
||||
|
||||
# ---- DOS cartridge ROMs (all optional) ----
|
||||
|
||||
- name: "disk11.rom"
|
||||
system: coco
|
||||
description: "Tandy RS-DOS 1.1 (CoCo floppy disk controller)"
|
||||
required: false
|
||||
source_ref: "xroar.c:708 (romlist rsdos), rsdos.c:176 (default @rsdos)"
|
||||
notes: "Primary CoCo disk controller ROM. disk10.rom (RS-DOS 1.0) is an earlier version used as fallback."
|
||||
|
||||
- name: "hdbdw3bck.rom"
|
||||
system: coco
|
||||
description: "RS-DOS with Becker port (DriveWire)"
|
||||
required: false
|
||||
source_ref: "xroar.c:718 (romlist rsdos_becker), xroar.c:572-574 (cart becker)"
|
||||
notes: "For CoCo with Becker port hardware. Enables DriveWire connectivity."
|
||||
|
||||
- name: "ddos12a.rom"
|
||||
system: dragon64
|
||||
description: "DragonDOS 1.2a (Dragon floppy disk controller)"
|
||||
required: false
|
||||
source_ref: "xroar.c:702 (romlist dragondos), dragondos.c:173 (default @dragondos_compat)"
|
||||
notes: "Latest DragonDOS version. Fallback chain tries DOSPlus -> SuperDOS -> DragonDOS -> Cumana. Older versions: ddos12, ddos40, ddos15, ddos10."
|
||||
|
||||
- name: "dplus49b.rom"
|
||||
system: dragon64
|
||||
description: "DOSPlus 4.9b (Dragon compatible DOS)"
|
||||
required: false
|
||||
source_ref: "xroar.c:703 (romlist dosplus)"
|
||||
notes: "First tried in DragonDOS-compatible cartridge. Enhanced Dragon DOS. Older version: dplus48 (alias: dosplus-4.8, DOSPLUS)."
|
||||
|
||||
- name: "sdose6.rom"
|
||||
system: dragon64
|
||||
description: "SuperDOS E6 (Dragon compatible DOS)"
|
||||
required: false
|
||||
aliases: ["PNP - SuperDOS E6"]
|
||||
source_ref: "xroar.c:704 (romlist superdos)"
|
||||
notes: "Latest SuperDOS. Older versions: sdose5, sdose4."
|
||||
|
||||
- name: "cdos20.rom"
|
||||
system: dragon64
|
||||
description: "Cumana DOS 2.0 (Dragon compatible DOS)"
|
||||
required: false
|
||||
aliases: [CDOS20, "CumanaDOSv2.0"]
|
||||
source_ref: "xroar.c:705 (romlist cumana)"
|
||||
|
||||
- name: "delta2.rom"
|
||||
system: dragon64
|
||||
description: "Delta System 2 (Premier Microsystems disk controller)"
|
||||
required: false
|
||||
aliases: ["Premier Micros - DeltaDOS"]
|
||||
source_ref: "xroar.c:711 (romlist delta), deltados.c:160 (default @delta)"
|
||||
notes: "Latest Delta version. Older versions: delta1a, delta19, delta, deltados."
|
||||
|
||||
- name: "cp450dsk.rom"
|
||||
system: coco
|
||||
description: "Prologica CP-450 DOS cartridge"
|
||||
required: false
|
||||
source_ref: "xroar.c:709 (romlist cp450)"
|
||||
notes: "Falls back to RS-DOS if not found."
|
||||
|
||||
# ---- Other cartridge ROMs (all optional) ----
|
||||
|
||||
- name: "orch90.rom"
|
||||
system: coco
|
||||
description: "Orchestra-90 CC sound cartridge ROM"
|
||||
required: false
|
||||
source_ref: "orch90.c:122 (default rom = orch90)"
|
||||
notes: "Sound synthesis cartridge. Loaded directly (no romlist fallback)."
|
||||
|
||||
- name: "mcx128.rom"
|
||||
system: mc10
|
||||
description: "MCX128 memory expansion BASIC ROM"
|
||||
required: false
|
||||
aliases: [MCX_Basic_21]
|
||||
source_ref: "xroar.c:724 (romlist mcx128), mcx128.c:208 (default @mcx128)"
|
||||
notes: "128K memory expansion for MC-10. Adds enhanced BASIC."
|
||||
|
||||
- name: "mcx128a.rom"
|
||||
system: mc10
|
||||
description: "MCX128 memory expansion BASIC ROM (AZERTY)"
|
||||
required: false
|
||||
aliases: [MCX_Basic_21_AZERTY]
|
||||
source_ref: "xroar.c:725 (romlist mcx128_azerty), xroar.c:632-633 (cart mcx128a)"
|
||||
notes: "AZERTY keyboard variant for Alice. Same MCX128 hardware."
|
||||
|
||||
- name: "yados.rom"
|
||||
system: coco
|
||||
description: "YADOS (Glenside IDE interface ROM)"
|
||||
required: false
|
||||
source_ref: "xroar.c:690 (romlist glenside_ide), idecart.c:204 (default @glenside_ide)"
|
||||
notes: "IDE hard disk interface. Fallback: hdblba.rom (alternative IDE ROM)."
|
||||
|
||||
- name: "sdbdos.rom"
|
||||
system: dragon64
|
||||
description: "SDBDOS (MOOH memory cartridge ROM)"
|
||||
required: false
|
||||
source_ref: "mooh.c:254 (default rom = sdbdos)"
|
||||
notes: "SD card boot DOS for MOOH cartridge. Loaded directly."
|
||||
|
||||
- name: "dragonfly-2.3.rom"
|
||||
system: dragon64
|
||||
description: "Ikon Ultra Drive Dragonfly ROM 2.3"
|
||||
required: false
|
||||
source_ref: "xroar.c:715 (romlist ikon), ikon.c:151 (default @ikon)"
|
||||
notes: "Experimental. Ikon Ultra Drive storage interface. Older version: dragonfly-1.3."
|
||||
@@ -1,55 +1,8 @@
|
||||
emulator: yabasanshiro
|
||||
type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/libretro/yabause/tree/yabasanshiro"
|
||||
upstream: "https://github.com/devmiyax/yabause"
|
||||
profiled_date: "2026-03-25"
|
||||
emulator: "yabasanshiro"
|
||||
type: alias
|
||||
alias_of: "kronos"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "v2.6.8"
|
||||
display_name: "Sega - Saturn (YabaSanshiro)"
|
||||
cores:
|
||||
- yabasanshiro
|
||||
systems:
|
||||
- sega-saturn
|
||||
|
||||
notes: |
|
||||
YabaSanshiro is a Sega Saturn emulator by devmiyax, forked from Yabause.
|
||||
Requires OpenGL 3.3 or OpenGL ES 3.0.
|
||||
|
||||
Saturn BIOS search order:
|
||||
1. {system}/saturn_bios.bin
|
||||
2. {system}/sega_101.bin
|
||||
3. {system}/mpr-17933.bin
|
||||
First file found wins. Real BIOS required for normal operation.
|
||||
HLE available via yabasanshiro_force_hle_bios core option (deprecated,
|
||||
debug only).
|
||||
|
||||
Addon cartridges: 1M/4M RAM expansion via core option (no files needed).
|
||||
ROM cartridge and MPEG card ROM loading disabled in libretro port
|
||||
(cartpath = empty, mpegpath = NULL).
|
||||
|
||||
BIOS loading: libretro.c retro_load_game() lines 1048-1069.
|
||||
Core load: memory.c LoadBios() line 1353, T123Load() memory.h lines 219-280.
|
||||
|
||||
files:
|
||||
- name: "saturn_bios.bin"
|
||||
system: sega-saturn
|
||||
required: true
|
||||
hle_fallback: true
|
||||
note: "Primary Saturn BIOS. Any region accepted."
|
||||
source_ref: "libretro.c:1048"
|
||||
|
||||
- name: "sega_101.bin"
|
||||
system: sega-saturn
|
||||
region: [japan]
|
||||
required: false
|
||||
hle_fallback: true
|
||||
note: "Saturn BIOS v1.01 (Japan). Fallback if saturn_bios.bin missing."
|
||||
source_ref: "libretro.c:1052"
|
||||
|
||||
- name: "mpr-17933.bin"
|
||||
system: sega-saturn
|
||||
region: [north-america, europe]
|
||||
required: false
|
||||
hle_fallback: true
|
||||
note: "Saturn BIOS v1.003 (NA/EU). Last fallback."
|
||||
source_ref: "libretro.c:1056"
|
||||
note: "This core uses the same BIOS/firmware as kronos. See emulators/kronos.yml for details."
|
||||
files: []
|
||||
|
||||
@@ -1,61 +1,8 @@
|
||||
emulator: yabause
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/libretro/yabause"
|
||||
upstream: "https://github.com/Yabause/yabause"
|
||||
profiled_date: "2026-03-25"
|
||||
emulator: "yabause"
|
||||
type: alias
|
||||
alias_of: "kronos"
|
||||
profiled_date: "2026-03-18"
|
||||
core_version: "v0.9.15"
|
||||
display_name: "Sega - Saturn (Yabause)"
|
||||
cores:
|
||||
- yabause
|
||||
systems:
|
||||
- sega-saturn
|
||||
|
||||
notes: |
|
||||
Yabause is a software-rendered Sega Saturn emulator. Upstream project is
|
||||
dead; libretro port maintained by the community on the master branch of
|
||||
libretro/yabause.
|
||||
|
||||
Saturn BIOS search order:
|
||||
1. {system}/saturn_bios.bin
|
||||
2. {system}/sega_101.bin
|
||||
3. {system}/mpr-17933.bin
|
||||
First file found wins. HLE BIOS available via yabause_force_hle_bios core
|
||||
option (reduced compatibility). Multi-disc (m3u) requires real BIOS.
|
||||
|
||||
Addon cartridges: 1M/4M RAM expansion via core option (no files needed).
|
||||
ROM cartridge loading, SH1 ROM (CD Block LLE), and MPEG card ROM are
|
||||
standalone-only features disabled in the libretro port.
|
||||
|
||||
BIOS loading: libretro.c retro_load_game() lines 1035-1049.
|
||||
Core load: memory.c LoadBios() line 1260, T123Load() memory.h lines 196-264.
|
||||
|
||||
files:
|
||||
- name: "saturn_bios.bin"
|
||||
system: sega-saturn
|
||||
required: true
|
||||
hle_fallback: true
|
||||
max_size: 524288
|
||||
validation: [max_size]
|
||||
note: "Primary Saturn BIOS. Any region accepted."
|
||||
source_ref: "libretro.c:1035"
|
||||
|
||||
- name: "sega_101.bin"
|
||||
system: sega-saturn
|
||||
region: [japan]
|
||||
required: false
|
||||
hle_fallback: true
|
||||
max_size: 524288
|
||||
validation: [max_size]
|
||||
note: "Saturn BIOS v1.01 (Japan). Fallback if saturn_bios.bin missing."
|
||||
source_ref: "libretro.c:1039"
|
||||
|
||||
- name: "mpr-17933.bin"
|
||||
system: sega-saturn
|
||||
region: [north-america, europe]
|
||||
required: false
|
||||
hle_fallback: true
|
||||
max_size: 524288
|
||||
validation: [max_size]
|
||||
note: "Saturn BIOS (NA/EU). Last fallback."
|
||||
source_ref: "libretro.c:1043"
|
||||
note: "This core uses the same BIOS/firmware as kronos. See emulators/kronos.yml for details."
|
||||
files: []
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
emulator: ymir
|
||||
type: standalone + libretro
|
||||
core_classification: community_fork
|
||||
source:
|
||||
standalone: "https://github.com/StrikerX3/Ymir"
|
||||
libretro: "https://github.com/warmenhoven/Ymir/tree/libretro"
|
||||
upstream: "https://github.com/StrikerX3/Ymir"
|
||||
profiled_date: "2026-03-26"
|
||||
core_version:
|
||||
standalone: "v0.2.1"
|
||||
libretro: "PR#746"
|
||||
display_name: "Sega - Saturn (Ymir)"
|
||||
cores:
|
||||
- ymir
|
||||
systems:
|
||||
- sega-saturn
|
||||
|
||||
notes: |
|
||||
Ymir is a Sega Saturn emulator by StrikerX3. The libretro port by
|
||||
warmenhoven wraps the shared ymir-core library (PR #746, not yet merged).
|
||||
No .info file exists in libretro-core-info.
|
||||
|
||||
Standalone: scans configured directories recursively for files matching
|
||||
the expected size. No specific filenames required. Identifies known ROMs
|
||||
by XXH128 hash from an internal database (19 IPL variants, 4 CD Block
|
||||
versions, 2 ROM carts). Unknown files are accepted if size matches.
|
||||
|
||||
Libretro: searches {system}/sega_101.bin, mpr-17933.bin, saturn_bios.bin
|
||||
in order. First file found with exact 512 KiB size wins.
|
||||
|
||||
Batocera standalone: configgen maps IPLROMImages to /userdata/bios,
|
||||
CDBlockROMImages to /userdata/roms/saturn/cdb/, ROMCartImages to
|
||||
/userdata/roms/saturn.
|
||||
|
||||
No HLE fallback for IPL ROM. CD Block LLE is optional; falls back to
|
||||
HLE when disabled or no ROM found. Known CDB versions: 1.04, 1.05, 1.06.
|
||||
|
||||
ROM cartridges: KoF95 and Ultraman shipped with physical ROM carts.
|
||||
Auto-detected from game database when loading a disc.
|
||||
|
||||
Addon cartridges: 1M/4M DRAM expansion handled via core option (no files).
|
||||
|
||||
XXH128 hashes used for ROM identification only, not validation.
|
||||
All file loading validates size only.
|
||||
|
||||
files:
|
||||
- name: "sega_101.bin"
|
||||
system: sega-saturn
|
||||
required: true
|
||||
size: 524288
|
||||
validation: [size]
|
||||
aliases: [mpr-17933.bin, saturn_bios.bin]
|
||||
description: "Saturn IPL ROM (BIOS). Any region accepted."
|
||||
source_ref:
|
||||
standalone: "apps/ymir-sdl3/src/util/rom_loader.cpp:9-22, apps/ymir-sdl3/src/app/rom_manager.cpp:14-56, libs/ymir-core/include/ymir/sys/memory_defs.hpp:9"
|
||||
libretro: "libretro.cpp:260-263,534-558"
|
||||
|
||||
- name: "cdb/cdb_rom.bin"
|
||||
system: sega-saturn
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 65536
|
||||
validation: [size]
|
||||
description: "SH1 CD Block ROM for low-level CD drive emulation. Scans cdb/ subdirectory for any matching file."
|
||||
source_ref:
|
||||
standalone: "apps/ymir-sdl3/src/util/rom_loader.cpp:25-38, apps/ymir-sdl3/src/app/rom_manager.cpp:58-93, libs/ymir-core/include/ymir/hw/sh1/sh1_defs.hpp:7"
|
||||
libretro: "libretro.cpp:567-591"
|
||||
|
||||
- name: "mpr-18811-mx.ic1"
|
||||
system: sega-saturn
|
||||
required: false
|
||||
category: game_data
|
||||
size: 2097152
|
||||
validation: [size]
|
||||
description: "ROM cartridge for The King of Fighters '95."
|
||||
source_ref:
|
||||
standalone: "apps/ymir-sdl3/src/app/rom_manager.cpp:96-131, libs/ymir-core/include/ymir/db/rom_cart_db.hpp:19-22"
|
||||
libretro: "libretro.cpp:619-620,597-616"
|
||||
|
||||
- name: "mpr-19367-mx.ic1"
|
||||
system: sega-saturn
|
||||
required: false
|
||||
category: game_data
|
||||
size: 2097152
|
||||
validation: [size]
|
||||
description: "ROM cartridge for Ultraman: Hikari no Kyojin Densetsu."
|
||||
source_ref:
|
||||
standalone: "apps/ymir-sdl3/src/app/rom_manager.cpp:96-131, libs/ymir-core/include/ymir/db/rom_cart_db.hpp:25-28"
|
||||
libretro: "libretro.cpp:619,621,597-616"
|
||||
@@ -1,143 +0,0 @@
|
||||
emulator: Zelda Classic v2.10
|
||||
type: libretro
|
||||
core_classification: game_engine
|
||||
source: https://github.com/netux79/zc210-libretro
|
||||
upstream: https://www.zeldaclassic.com/
|
||||
core_version: "2.10 Beta 5"
|
||||
display_name: Zelda Classic v2.10 (ZC210)
|
||||
profiled_date: 2026-03-26
|
||||
cores:
|
||||
- zc210
|
||||
systems:
|
||||
- zc210
|
||||
notes: >-
|
||||
Libretro port of Zelda Classic 2.10 quest player by netux79. Removed
|
||||
Allegro dependency, runs .qst quest files. No ZQuest editor, no ZC Music
|
||||
(mp3/ogg), no menus. MIDI playback via SoundFont (SF2). Data files
|
||||
distributed with the core source in the datfile/ directory.
|
||||
files:
|
||||
- name: zcdata.dat
|
||||
path: zc210/zcdata.dat
|
||||
description: main engine data (fonts, palette, SFX samples, MIDI tracks)
|
||||
required: true
|
||||
source_ref: "zelda.cpp:1173-1181 load_datafile + signature validation"
|
||||
|
||||
- name: default.sf2
|
||||
path: zc210/sf2/default.sf2
|
||||
description: default SoundFont for MIDI music playback
|
||||
required: true
|
||||
source_ref: "zc_sys.cpp:2234-2238 file_exists + midi_init"
|
||||
|
||||
- name: custom0.sf2
|
||||
path: zc210/sf2/custom0.sf2
|
||||
description: alternative SoundFont (selectable via core option)
|
||||
required: false
|
||||
source_ref: "zc_sys.cpp:2234-2238, libretro.cpp:147"
|
||||
|
||||
- name: custom1.sf2
|
||||
path: zc210/sf2/custom1.sf2
|
||||
description: alternative SoundFont (selectable via core option)
|
||||
required: false
|
||||
source_ref: "zc_sys.cpp:2234-2238, libretro.cpp:147"
|
||||
|
||||
- name: custom2.sf2
|
||||
path: zc210/sf2/custom2.sf2
|
||||
description: alternative SoundFont (selectable via core option)
|
||||
required: false
|
||||
source_ref: "zc_sys.cpp:2234-2238, libretro.cpp:147"
|
||||
|
||||
- name: custom3.sf2
|
||||
path: zc210/sf2/custom3.sf2
|
||||
description: alternative SoundFont (selectable via core option)
|
||||
required: false
|
||||
source_ref: "zc_sys.cpp:2234-2238, libretro.cpp:147"
|
||||
|
||||
- name: custom4.sf2
|
||||
path: zc210/sf2/custom4.sf2
|
||||
description: alternative SoundFont (selectable via core option)
|
||||
required: false
|
||||
source_ref: "zc_sys.cpp:2234-2238, libretro.cpp:147"
|
||||
|
||||
- name: custom5.sf2
|
||||
path: zc210/sf2/custom5.sf2
|
||||
description: alternative SoundFont (selectable via core option)
|
||||
required: false
|
||||
source_ref: "zc_sys.cpp:2234-2238, libretro.cpp:147"
|
||||
|
||||
- name: custom6.sf2
|
||||
path: zc210/sf2/custom6.sf2
|
||||
description: alternative SoundFont (selectable via core option)
|
||||
required: false
|
||||
source_ref: "zc_sys.cpp:2234-2238, libretro.cpp:147"
|
||||
|
||||
- name: custom7.sf2
|
||||
path: zc210/sf2/custom7.sf2
|
||||
description: alternative SoundFont (selectable via core option)
|
||||
required: false
|
||||
source_ref: "zc_sys.cpp:2234-2238, libretro.cpp:147"
|
||||
|
||||
- name: custom8.sf2
|
||||
path: zc210/sf2/custom8.sf2
|
||||
description: alternative SoundFont (selectable via core option)
|
||||
required: false
|
||||
source_ref: "zc_sys.cpp:2234-2238, libretro.cpp:147"
|
||||
|
||||
- name: custom9.sf2
|
||||
path: zc210/sf2/custom9.sf2
|
||||
description: alternative SoundFont (selectable via core option)
|
||||
required: false
|
||||
source_ref: "zc_sys.cpp:2234-2238, libretro.cpp:147"
|
||||
|
||||
- name: LinkTothePast.dat
|
||||
path: zc210/sfx/LinkTothePast.dat
|
||||
description: Zelda A Link to the Past SFX replacement
|
||||
required: false
|
||||
source_ref: "zelda.cpp:1193-1218, libretro.cpp:148"
|
||||
|
||||
- name: LinksAwakening.dat
|
||||
path: zc210/sfx/LinksAwakening.dat
|
||||
description: Zelda Link's Awakening SFX replacement
|
||||
required: false
|
||||
source_ref: "zelda.cpp:1193-1218, libretro.cpp:148"
|
||||
|
||||
- name: BSZelda.dat
|
||||
path: zc210/sfx/BSZelda.dat
|
||||
description: BS Zelda SFX replacement
|
||||
required: false
|
||||
source_ref: "zelda.cpp:1193-1218, libretro.cpp:148"
|
||||
|
||||
- name: Metroid.dat
|
||||
path: zc210/sfx/Metroid.dat
|
||||
description: Metroid NES SFX replacement
|
||||
required: false
|
||||
source_ref: "zelda.cpp:1193-1218, libretro.cpp:148"
|
||||
|
||||
- name: Tortuga.dat
|
||||
path: zc210/sfx/Tortuga.dat
|
||||
description: Link to Tortuga quest SFX replacement
|
||||
required: false
|
||||
source_ref: "zelda.cpp:1193-1218, libretro.cpp:148"
|
||||
|
||||
- name: Castle.dat
|
||||
path: zc210/sfx/Castle.dat
|
||||
description: Castle Hunt quest SFX replacement
|
||||
required: false
|
||||
source_ref: "zelda.cpp:1193-1218, libretro.cpp:148"
|
||||
|
||||
- name: Elise.dat
|
||||
path: zc210/sfx/Elise.dat
|
||||
description: Search for Elise quest SFX replacement
|
||||
required: false
|
||||
source_ref: "zelda.cpp:1193-1218, libretro.cpp:148"
|
||||
|
||||
- name: SwangSong.dat
|
||||
path: zc210/sfx/SwangSong.dat
|
||||
description: Swang Song quest SFX replacement
|
||||
required: false
|
||||
source_ref: "zelda.cpp:1193-1218, libretro.cpp:148"
|
||||
|
||||
- name: Custom.dat
|
||||
path: zc210/sfx/Custom.dat
|
||||
description: user-provided custom SFX replacement
|
||||
required: false
|
||||
source_ref: "zelda.cpp:1193-1218, libretro.cpp:148"
|
||||
508
mkdocs.yml
508
mkdocs.yml
@@ -24,7 +24,6 @@ theme:
|
||||
- navigation.tabs
|
||||
- navigation.sections
|
||||
- navigation.top
|
||||
- navigation.indexes
|
||||
- search.suggest
|
||||
- search.highlight
|
||||
- content.tabs.link
|
||||
@@ -33,13 +32,8 @@ markdown_extensions:
|
||||
- tables
|
||||
- admonition
|
||||
- attr_list
|
||||
- md_in_html
|
||||
- toc:
|
||||
permalink: true
|
||||
- pymdownx.details
|
||||
- pymdownx.superfences
|
||||
- pymdownx.tabbed:
|
||||
alternate_style: true
|
||||
plugins:
|
||||
- search
|
||||
nav:
|
||||
@@ -52,9 +46,7 @@ nav:
|
||||
- Recalbox: platforms/recalbox.md
|
||||
- RetroArch: platforms/retroarch.md
|
||||
- RetroBat: platforms/retrobat.md
|
||||
- RetroDECK: platforms/retrodeck.md
|
||||
- RetroPie: platforms/retropie.md
|
||||
- RomM: platforms/romm.md
|
||||
- Systems:
|
||||
- Overview: systems/index.md
|
||||
- 3DO Company: systems/3do-company.md
|
||||
@@ -64,7 +56,6 @@ nav:
|
||||
- Apple: systems/apple.md
|
||||
- Arcade: systems/arcade.md
|
||||
- Atari: systems/atari.md
|
||||
- BBK: systems/bbk.md
|
||||
- Bally: systems/bally.md
|
||||
- Bandai: systems/bandai.md
|
||||
- Bit Corporation: systems/bit-corporation.md
|
||||
@@ -88,27 +79,20 @@ nav:
|
||||
- GamePark: systems/gamepark.md
|
||||
- Grundy: systems/grundy.md
|
||||
- Hartung: systems/hartung.md
|
||||
- IBM: systems/ibm.md
|
||||
- Id Software: systems/id-software.md
|
||||
- Infocom: systems/infocom.md
|
||||
- Java: systems/java.md
|
||||
- Jupiter: systems/jupiter.md
|
||||
- Lambda: systems/lambda.md
|
||||
- Lexaloffle: systems/lexaloffle.md
|
||||
- Magnavox: systems/magnavox.md
|
||||
- Mattel: systems/mattel.md
|
||||
- Microdigital: systems/microdigital.md
|
||||
- Microsoft: systems/microsoft.md
|
||||
- NEC: systems/nec.md
|
||||
- Nintendo: systems/nintendo.md
|
||||
- Nokia: systems/nokia.md
|
||||
- Oric: systems/oric.md
|
||||
- Other: systems/other.md
|
||||
- Palm: systems/palm.md
|
||||
- Philips: systems/philips.md
|
||||
- Pioneer: systems/pioneer.md
|
||||
- RPG Maker: systems/rpg-maker.md
|
||||
- Ringo: systems/ringo.md
|
||||
- SNK: systems/snk.md
|
||||
- ScummVM: systems/scummvm.md
|
||||
- Sega: systems/sega.md
|
||||
@@ -119,7 +103,6 @@ nav:
|
||||
- Tandy: systems/tandy.md
|
||||
- Texas Instruments: systems/texas-instruments.md
|
||||
- Tiger: systems/tiger.md
|
||||
- Timex: systems/timex.md
|
||||
- Tomy: systems/tomy.md
|
||||
- VTech: systems/vtech.md
|
||||
- Videoton: systems/videoton.md
|
||||
@@ -128,307 +111,192 @@ nav:
|
||||
- xrick: systems/xrick.md
|
||||
- Emulators:
|
||||
- Overview: emulators/index.md
|
||||
- Official ports (60):
|
||||
- amiarcadia: emulators/amiarcadia.md
|
||||
- Amiberry: emulators/amiberry.md
|
||||
- Ardens: emulators/ardens.md
|
||||
- Atari800: emulators/atari800.md
|
||||
- BlastEm: emulators/blastem.md
|
||||
- Boytacean: emulators/boytacean.md
|
||||
- bsnes: emulators/bsnes.md
|
||||
- ClownMDEmu: emulators/clownmdemu.md
|
||||
- CrocoDS: emulators/crocods.md
|
||||
- DirkSimple: emulators/dirksimple.md
|
||||
- DuckStation: emulators/duckstation.md
|
||||
- emux (CHIP-8): emulators/emux_chip8.md
|
||||
- emux (Game Boy): emulators/emux_gb.md
|
||||
- emux (NES): emulators/emux_nes.md
|
||||
- emux (SMS): emulators/emux_sms.md
|
||||
- FinalBurn Neo: emulators/fbneo.md
|
||||
- FinalBurn Neo (CPS-1/CPS-2): emulators/fbneo_cps12.md
|
||||
- FinalBurn Neo (Neo Geo): emulators/fbneo_neogeo.md
|
||||
- fixGB: emulators/fixgb.md
|
||||
- fixNES: emulators/fixnes.md
|
||||
- Flycast: emulators/flycast.md
|
||||
- FreeJ2ME: emulators/freej2me.md
|
||||
- galaksija: emulators/galaksija.md
|
||||
- Gearboy: emulators/gearboy.md
|
||||
- Gearcoleco: emulators/gearcoleco.md
|
||||
- Geargrafx: emulators/geargrafx.md
|
||||
- Gearlynx: emulators/gearlynx.md
|
||||
- Gearsystem: emulators/gearsystem.md
|
||||
- Geolith: emulators/geolith.md
|
||||
- Holani: emulators/holani.md
|
||||
- JAXE: emulators/jaxe.md
|
||||
- JollyCV: emulators/jollycv.md
|
||||
- Kronos: emulators/kronos.md
|
||||
- LowRes NX: emulators/lowresnx.md
|
||||
- M2000: emulators/m2000.md
|
||||
- MAME: emulators/mame.md
|
||||
- MAME Arcade: emulators/mamearcade.md
|
||||
- MAME MESS: emulators/mamemess.md
|
||||
- Mesen: emulators/mesen.md
|
||||
- mesen-s: emulators/mesen-s.md
|
||||
- mGBA: emulators/mgba.md
|
||||
- Mr.Boom: emulators/mrboom.md
|
||||
- Panda3DS: emulators/panda3ds.md
|
||||
- PicoDrive: emulators/picodrive.md
|
||||
- play: emulators/play.md
|
||||
- PPSSPP: emulators/ppsspp.md
|
||||
- Rustation: emulators/rustation.md
|
||||
- RVVM: emulators/rvvm.md
|
||||
- SameBoy: emulators/sameboy.md
|
||||
- sameduck: emulators/sameduck.md
|
||||
- SDLPAL: emulators/sdlpal.md
|
||||
- skyemu: emulators/skyemu.md
|
||||
- snes9x: emulators/snes9x.md
|
||||
- SquirrelJME: emulators/squirreljme.md
|
||||
- VaporSpec: emulators/vaporspec.md
|
||||
- VBA-M: emulators/vbam.md
|
||||
- VeMUlator: emulators/vemulator.md
|
||||
- Vircon32: emulators/vircon32.md
|
||||
- vitaQuakeII: emulators/vitaquake2.md
|
||||
- yabasanshiro: emulators/yabasanshiro.md
|
||||
- Community forks (105):
|
||||
- EightyOne: emulators/81.md
|
||||
- a5200: emulators/a5200.md
|
||||
- Anarch: emulators/anarch.md
|
||||
- AppleWin: emulators/applewin.md
|
||||
- Azahar: emulators/azahar.md
|
||||
- b2: emulators/b2.md
|
||||
- Beetle Lynx (Mednafen Lynx): emulators/beetle_lynx.md
|
||||
- Beetle NGP (Mednafen Neo Geo Pocket): emulators/beetle_ngp.md
|
||||
- Beetle PCE (Mednafen PCE): emulators/beetle_pce.md
|
||||
- Beetle PC-FX (Mednafen): emulators/beetle_pcfx.md
|
||||
- Beetle PSX (Mednafen PSX): emulators/beetle_psx.md
|
||||
- beetle_saturn: emulators/beetle_saturn.md
|
||||
- Beetle VB (Mednafen Virtual Boy): emulators/beetle_vb.md
|
||||
- BennuGD: emulators/bennugd.md
|
||||
- bk-emulator: emulators/bk.md
|
||||
- blueMSX: emulators/bluemsx.md
|
||||
- bsnes-jg: emulators/bsnes-jg.md
|
||||
- Caprice32: emulators/cap32.md
|
||||
- ChimeraSNES: emulators/chimerasnes.md
|
||||
- Citra: emulators/citra.md
|
||||
- Citra Canary: emulators/citra_canary.md
|
||||
- Citron: emulators/citron.md
|
||||
- Daphne: emulators/daphne.md
|
||||
- DeSmuME: emulators/desmume.md
|
||||
- DICE: emulators/dice.md
|
||||
- Dolphin: emulators/dolphin.md
|
||||
- DOSBox: emulators/dosbox.md
|
||||
- DOSBox-core: emulators/dosbox_core.md
|
||||
- DOSBox-SVN: emulators/dosbox_svn.md
|
||||
- DOSBox-SVN CE: emulators/dosbox_svn_ce.md
|
||||
- EmuSCV: emulators/emuscv.md
|
||||
- ep128emu_core: emulators/ep128emu_core.md
|
||||
- FCEUmm: emulators/fceumm.md
|
||||
- fMSX: emulators/fmsx.md
|
||||
- Frodo: emulators/frodo.md
|
||||
- FS-UAE: emulators/fsuae.md
|
||||
- Fuse: emulators/fuse.md
|
||||
- Gambatte: emulators/gambatte.md
|
||||
- Genesis Plus GX: emulators/genesis_plus_gx.md
|
||||
- gpSP: emulators/gpsp.md
|
||||
- Handy: emulators/handy.md
|
||||
- higan (SFC Accuracy): emulators/higan_sfc.md
|
||||
- LRPS2: emulators/lrps2.md
|
||||
- mednafen_pce: emulators/mednafen_pce.md
|
||||
- mednafen_pce_fast: emulators/mednafen_pce_fast.md
|
||||
- mednafen_supafaust: emulators/mednafen_supafaust.md
|
||||
- mednafen_supergrafx: emulators/mednafen_supergrafx.md
|
||||
- melonDS: emulators/melonds.md
|
||||
- melonDS DS: emulators/melonds_ds.md
|
||||
- Meteor GBA: emulators/meteor.md
|
||||
- Mini vMac: emulators/minivmac.md
|
||||
- Moonlight: emulators/moonlight.md
|
||||
- mpv: emulators/mpv.md
|
||||
- nekop2: emulators/nekop2.md
|
||||
- nes: emulators/nes.md
|
||||
- Nestopia UE: emulators/nestopia.md
|
||||
- NooDS: emulators/noods.md
|
||||
- Numero: emulators/numero.md
|
||||
- O2EM: emulators/o2em.md
|
||||
- Oberon: emulators/oberon.md
|
||||
- ONScripter: emulators/onscripter.md
|
||||
- Opera (4DO): emulators/opera.md
|
||||
- ParaLLEl N64: emulators/parallel_n64.md
|
||||
- PCem: emulators/pcem.md
|
||||
- PCSX1: emulators/pcsx1.md
|
||||
- PD777: emulators/pd777.md
|
||||
- PokeMini: emulators/pokemini.md
|
||||
- Potator: emulators/potator.md
|
||||
- ProSystem: emulators/prosystem.md
|
||||
- PUAE (P-UAE): emulators/puae.md
|
||||
- px68k: emulators/px68k.md
|
||||
- QEMU: emulators/qemu.md
|
||||
- QUASI88: emulators/quasi88.md
|
||||
- QuickNES: emulators/quicknes.md
|
||||
- RACE (Neo Geo Pocket): emulators/race.md
|
||||
- REminiscence: emulators/reminiscence.md
|
||||
- RetroDream: emulators/retrodream.md
|
||||
- SAME CDi: emulators/same_cdi.md
|
||||
- SimCoupe: emulators/simcp.md
|
||||
- swanstation: emulators/swanstation.md
|
||||
- Syobon Action: emulators/syobonaction.md
|
||||
- TamaLIBretro: emulators/tamalibretro.md
|
||||
- TempGBA: emulators/tempgba.md
|
||||
- TGB Dual: emulators/tgbdual.md
|
||||
- trident: emulators/trident.md
|
||||
- uae4arm: emulators/uae4arm.md
|
||||
- UXN: emulators/uxn.md
|
||||
- vecx: emulators/vecx.md
|
||||
- VICE x128: emulators/vice_x128.md
|
||||
- VICE x64: emulators/vice_x64.md
|
||||
- VICE x64dtv: emulators/vice_x64dtv.md
|
||||
- VICE x64sc: emulators/vice_x64sc.md
|
||||
- VICE xcbm2: emulators/vice_xcbm2.md
|
||||
- VICE xcbm5x0: emulators/vice_xcbm5x0.md
|
||||
- VICE xpet: emulators/vice_xpet.md
|
||||
- VICE xplus4: emulators/vice_xplus4.md
|
||||
- VICE xscpu64: emulators/vice_xscpu64.md
|
||||
- VICE xvic: emulators/vice_xvic.md
|
||||
- Virtual Jaguar: emulators/virtualjaguar.md
|
||||
- vitaQuakeIII: emulators/vitaquake3.md
|
||||
- vitavoyager: emulators/vitavoyager.md
|
||||
- X Millennium: emulators/x1.md
|
||||
- x64sdl: emulators/x64sdl.md
|
||||
- yabause: emulators/yabause.md
|
||||
- ymir: emulators/ymir.md
|
||||
- Pure libretro (29):
|
||||
- '2048': emulators/2048.md
|
||||
- 3DEngine: emulators/3dengine.md
|
||||
- Arduous: emulators/arduous.md
|
||||
- Beetle WonderSwan (Mednafen WonderSwan): emulators/beetle_wswan.md
|
||||
- Craft: emulators/craft.md
|
||||
- Cruzes: emulators/cruzes.md
|
||||
- DirectXBox: emulators/directxbox.md
|
||||
- FFmpeg: emulators/ffmpeg.md
|
||||
- FreeChaF: emulators/freechaf.md
|
||||
- FreeIntv: emulators/freeintv.md
|
||||
- GAM4980: emulators/gam4980.md
|
||||
- Game Music Emu: emulators/gme.md
|
||||
- Gong: emulators/gong.md
|
||||
- Game & Watch: emulators/gw.md
|
||||
- Image Viewer: emulators/imageviewer.md
|
||||
- MCSoftserve: emulators/mcsoftserve.md
|
||||
- MojoZork: emulators/mojozork.md
|
||||
- Mu: emulators/mu.md
|
||||
- NeoCD: emulators/neocd.md
|
||||
- Pascal Pong: emulators/pascal_pong.md
|
||||
- PocketCDG: emulators/pocketcdg.md
|
||||
- Redbook: emulators/redbook.md
|
||||
- RemoteJoy: emulators/remotejoy.md
|
||||
- ROM Cleaner: emulators/romcleaner.md
|
||||
- Theodore: emulators/theodore.md
|
||||
- The Powder Toy: emulators/thepowdertoy.md
|
||||
- MicroW8: emulators/uw8.md
|
||||
- uzem: emulators/uzem.md
|
||||
- VirtualXT: emulators/virtualxt.md
|
||||
- Game engines (25):
|
||||
- boom3: emulators/boom3.md
|
||||
- Cannonball: emulators/cannonball.md
|
||||
- ChaiLove: emulators/chailove.md
|
||||
- Dinothawr: emulators/dinothawr.md
|
||||
- doukutsu-rs: emulators/doukutsu_rs.md
|
||||
- EasyRPG Player: emulators/easyrpg.md
|
||||
- ECWolf: emulators/ecwolf.md
|
||||
- FAKE-08: emulators/fake08.md
|
||||
- Jump 'n Bump: emulators/jumpnbump.md
|
||||
- Lutro: emulators/lutro.md
|
||||
- mkxp-z: emulators/mkxp_z.md
|
||||
- NXEngine: emulators/nxengine.md
|
||||
- ONScripter Yuri: emulators/onsyuri.md
|
||||
- OpenLara: emulators/openlara.md
|
||||
- OpenTyrian: emulators/opentyrian.md
|
||||
- PrBoom: emulators/prboom.md
|
||||
- PuzzleScript: emulators/puzzlescript.md
|
||||
- Retro8: emulators/retro8.md
|
||||
- ScummVM: emulators/scummvm.md
|
||||
- Super Bros War: emulators/superbroswar.md
|
||||
- TIC-80: emulators/tic80.md
|
||||
- TyrQuake: emulators/tyrquake.md
|
||||
- WASM-4: emulators/wasm4.md
|
||||
- XRick: emulators/xrick.md
|
||||
- Zelda Classic v2.10: emulators/zc210.md
|
||||
- Enhanced forks (12):
|
||||
- bsnes-hd beta: emulators/bsnes_hd_beta.md
|
||||
- bsnes-mercury: emulators/bsnes_mercury.md
|
||||
- DOSBox Pure: emulators/dosbox_pure.md
|
||||
- DoubleCherryGB: emulators/doublecherrygb.md
|
||||
- Genesis Plus GX Wide: emulators/genesis_plus_gx_wide.md
|
||||
- HBMAME (Homebrew MAME): emulators/hbmame.md
|
||||
- nSide (SFC Balanced): emulators/higan_sfc_balanced.md
|
||||
- Ishiiruka: emulators/ishiiruka.md
|
||||
- MAME 2003-Plus: emulators/mame2003_plus.md
|
||||
- Mupen64Plus-Next: emulators/mupen64plus_next.md
|
||||
- NP2kai: emulators/np2kai.md
|
||||
- SMS Plus GX: emulators/smsplus.md
|
||||
- Frozen snapshots (32):
|
||||
- bnes: emulators/bnes.md
|
||||
- bsnes 2014: emulators/bsnes2014.md
|
||||
- bsnes C++98: emulators/bsnes_cplusplus98.md
|
||||
- CDi 2015: emulators/cdi2015.md
|
||||
- Citra 2018: emulators/citra2018.md
|
||||
- DeSmuME 2015: emulators/desmume2015.md
|
||||
- FB Alpha 2012: emulators/fbalpha2012.md
|
||||
- FB Alpha 2012 CPS-1: emulators/fbalpha2012_cps1.md
|
||||
- FB Alpha 2012 CPS-2: emulators/fbalpha2012_cps2.md
|
||||
- FB Alpha 2012 CPS-3: emulators/fbalpha2012_cps3.md
|
||||
- FB Alpha 2012 Neo Geo: emulators/fbalpha2012_neogeo.md
|
||||
- Hatari: emulators/hatari.md
|
||||
- MAME 2000: emulators/mame2000.md
|
||||
- MAME 2003: emulators/mame2003.md
|
||||
- MAME 2003 Midway: emulators/mame2003_midway.md
|
||||
- MAME 2009: emulators/mame2009.md
|
||||
- MAME 2010: emulators/mame2010.md
|
||||
- MAME 2015: emulators/mame2015.md
|
||||
- MAME 2016: emulators/mame2016.md
|
||||
- mednafen_gba: emulators/mednafen_gba.md
|
||||
- mednafen_snes: emulators/mednafen_snes.md
|
||||
- MESS 2015: emulators/mess2015.md
|
||||
- PUAE 2021: emulators/puae2021.md
|
||||
- Snes9x 2002: emulators/snes9x2002.md
|
||||
- Snes9x 2005: emulators/snes9x2005.md
|
||||
- Snes9x 2005 Plus: emulators/snes9x2005_plus.md
|
||||
- Snes9x 2010: emulators/snes9x2010.md
|
||||
- Stella 2014: emulators/stella2014.md
|
||||
- Stella 2023: emulators/stella2023.md
|
||||
- Stone Soup: emulators/stonesoup.md
|
||||
- UME 2015: emulators/ume2015.md
|
||||
- VBA-Next: emulators/vba_next.md
|
||||
- Embedded HLE (1):
|
||||
- PCSX-ReARMed: emulators/pcsx_rearmed.md
|
||||
- Launchers (1):
|
||||
- Dolphin Launcher: emulators/dolphin_launcher.md
|
||||
- Other (21):
|
||||
- Beetle GBA (Mednafen): emulators/beetle_gba.md
|
||||
- Cemu: emulators/cemu.md
|
||||
- Clock Signal (CLK): emulators/clk.md
|
||||
- Demul: emulators/demul.md
|
||||
- eka2l1: emulators/eka2l1.md
|
||||
- ep128emu-core: emulators/ep128emu.md
|
||||
- GSplus: emulators/gsplus.md
|
||||
- Lexaloffle: emulators/lexaloffle.md
|
||||
- openMSX: emulators/openmsx.md
|
||||
- PCSX2: emulators/pcsx2.md
|
||||
- Redream: emulators/redream.md
|
||||
- RPCS3: emulators/rpcs3.md
|
||||
- Ryujinx: emulators/ryujinx.md
|
||||
- shadps4: emulators/shadps4.md
|
||||
- tsugaru: emulators/tsugaru.md
|
||||
- VBA-M: emulators/vba_m.md
|
||||
- VICE: emulators/vice.md
|
||||
- Vita3K: emulators/vita3k.md
|
||||
- x16emu: emulators/x16emu.md
|
||||
- Xemu: emulators/xemu.md
|
||||
- XRoar: emulators/xroar.md
|
||||
- Cross-reference: cross-reference.md
|
||||
- '2048': emulators/2048.md
|
||||
- 3DEngine: emulators/3dengine.md
|
||||
- EightyOne: emulators/81.md
|
||||
- a5200: emulators/a5200.md
|
||||
- amiarcadia: emulators/amiarcadia.md
|
||||
- Anarch: emulators/anarch.md
|
||||
- AppleWin: emulators/applewin.md
|
||||
- Ardens: emulators/ardens.md
|
||||
- Arduous: emulators/arduous.md
|
||||
- Atari800: emulators/atari800.md
|
||||
- b2: emulators/b2.md
|
||||
- Beetle Lynx (Mednafen Lynx): emulators/beetle_lynx.md
|
||||
- Beetle NGP (Mednafen Neo Geo Pocket): emulators/beetle_ngp.md
|
||||
- Beetle PCE (Mednafen PCE): emulators/beetle_pce.md
|
||||
- Beetle PC-FX (Mednafen): emulators/beetle_pcfx.md
|
||||
- Beetle PSX (Mednafen PSX): emulators/beetle_psx.md
|
||||
- Beetle Saturn (Mednafen): emulators/beetle_saturn.md
|
||||
- Beetle VB (Mednafen Virtual Boy): emulators/beetle_vb.md
|
||||
- Beetle WonderSwan (Mednafen WonderSwan): emulators/beetle_wswan.md
|
||||
- BennuGD: emulators/bennugd.md
|
||||
- bk-emulator: emulators/bk.md
|
||||
- BlastEm: emulators/blastem.md
|
||||
- blueMSX: emulators/bluemsx.md
|
||||
- bnes: emulators/bnes.md
|
||||
- boom3: emulators/boom3.md
|
||||
- Boytacean: emulators/boytacean.md
|
||||
- bsnes: emulators/bsnes.md
|
||||
- Cannonball: emulators/cannonball.md
|
||||
- Caprice32: emulators/cap32.md
|
||||
- Cemu: emulators/cemu.md
|
||||
- ChaiLove: emulators/chailove.md
|
||||
- Citra / Lime3DS / Azahar: emulators/citra.md
|
||||
- ClownMDEmu: emulators/clownmdemu.md
|
||||
- Craft: emulators/craft.md
|
||||
- CrocoDS: emulators/crocods.md
|
||||
- Cruzes: emulators/cruzes.md
|
||||
- Daphne: emulators/daphne.md
|
||||
- DeSmuME: emulators/desmume.md
|
||||
- DICE: emulators/dice.md
|
||||
- Dinothawr: emulators/dinothawr.md
|
||||
- DirectXBox: emulators/directxbox.md
|
||||
- Dolphin: emulators/dolphin.md
|
||||
- Dolphin Launcher: emulators/dolphin_launcher.md
|
||||
- DOSBox-core: emulators/dosbox_core.md
|
||||
- DOSBox Pure: emulators/dosbox_pure.md
|
||||
- DoubleCherryGB: emulators/doublecherrygb.md
|
||||
- doukutsu-rs: emulators/doukutsu_rs.md
|
||||
- DuckStation: emulators/duckstation.md
|
||||
- EasyRPG Player: emulators/easyrpg.md
|
||||
- ECWolf: emulators/ecwolf.md
|
||||
- EmuSCV: emulators/emuscv.md
|
||||
- emux (CHIP-8): emulators/emux_chip8.md
|
||||
- ep128emu-core: emulators/ep128emu.md
|
||||
- FAKE-08: emulators/fake08.md
|
||||
- FinalBurn Neo: emulators/fbneo.md
|
||||
- FCEUmm: emulators/fceumm.md
|
||||
- FFmpeg: emulators/ffmpeg.md
|
||||
- fixGB: emulators/fixgb.md
|
||||
- Flycast: emulators/flycast.md
|
||||
- fMSX: emulators/fmsx.md
|
||||
- FreeChaF: emulators/freechaf.md
|
||||
- FreeIntv: emulators/freeintv.md
|
||||
- FreeIntv (Touchscreen Overlay): emulators/freeintv_ts_overlay.md
|
||||
- FreeJ2ME: emulators/freej2me.md
|
||||
- Frodo: emulators/frodo.md
|
||||
- Fuse: emulators/fuse.md
|
||||
- galaksija: emulators/galaksija.md
|
||||
- GAM4980: emulators/gam4980.md
|
||||
- Gambatte: emulators/gambatte.md
|
||||
- Gearcoleco: emulators/gearcoleco.md
|
||||
- Geargrafx: emulators/geargrafx.md
|
||||
- Gearlynx: emulators/gearlynx.md
|
||||
- Gearsystem: emulators/gearsystem.md
|
||||
- Genesis Plus GX: emulators/genesis_plus_gx.md
|
||||
- Geolith: emulators/geolith.md
|
||||
- Game Music Emu: emulators/gme.md
|
||||
- Gong: emulators/gong.md
|
||||
- gpSP: emulators/gpsp.md
|
||||
- Game & Watch: emulators/gw.md
|
||||
- Handy: emulators/handy.md
|
||||
- Hatari: emulators/hatari.md
|
||||
- HBMAME (Homebrew MAME): emulators/hbmame.md
|
||||
- Holani: emulators/holani.md
|
||||
- Image Viewer: emulators/imageviewer.md
|
||||
- Ishiiruka: emulators/ishiiruka.md
|
||||
- JAXE: emulators/jaxe.md
|
||||
- JollyCV: emulators/jollycv.md
|
||||
- Jump 'n Bump: emulators/jumpnbump.md
|
||||
- Kronos: emulators/kronos.md
|
||||
- LowRes NX: emulators/lowresnx.md
|
||||
- Lutro: emulators/lutro.md
|
||||
- M2000: emulators/m2000.md
|
||||
- MAME 2003-Plus: emulators/mame2003_plus.md
|
||||
- MAME 2010: emulators/mame2010.md
|
||||
- MAME 2016: emulators/mame2016.md
|
||||
- MCSoftserve: emulators/mcsoftserve.md
|
||||
- MelonDS: emulators/melonds.md
|
||||
- Mesen: emulators/mesen.md
|
||||
- Meteor GBA: emulators/meteor.md
|
||||
- mGBA: emulators/mgba.md
|
||||
- Mini vMac: emulators/minivmac.md
|
||||
- mkxp-z: emulators/mkxp_z.md
|
||||
- MojoZork: emulators/mojozork.md
|
||||
- Moonlight: emulators/moonlight.md
|
||||
- mpv: emulators/mpv.md
|
||||
- Mr.Boom: emulators/mrboom.md
|
||||
- Mu: emulators/mu.md
|
||||
- Mupen64Plus-Next: emulators/mupen64plus.md
|
||||
- NeoCD: emulators/neocd.md
|
||||
- Nestopia UE: emulators/nestopia.md
|
||||
- NooDS: emulators/noods.md
|
||||
- NP2kai: emulators/np2kai.md
|
||||
- Numero: emulators/numero.md
|
||||
- NXEngine: emulators/nxengine.md
|
||||
- O2EM: emulators/o2em.md
|
||||
- Oberon: emulators/oberon.md
|
||||
- ONScripter: emulators/onscripter.md
|
||||
- ONScripter Yuri: emulators/onsyuri.md
|
||||
- OpenLara: emulators/openlara.md
|
||||
- OpenTyrian: emulators/opentyrian.md
|
||||
- Opera (4DO): emulators/opera.md
|
||||
- Panda3DS: emulators/panda3ds.md
|
||||
- Pascal Pong: emulators/pascal_pong.md
|
||||
- PCem: emulators/pcem.md
|
||||
- PCSX2: emulators/pcsx2.md
|
||||
- PCSX-ReARMed: emulators/pcsx_rearmed.md
|
||||
- PD777: emulators/pd777.md
|
||||
- PicoDrive: emulators/picodrive.md
|
||||
- Play!: emulators/play.md
|
||||
- PocketCDG: emulators/pocketcdg.md
|
||||
- PokeMini: emulators/pokemini.md
|
||||
- PPSSPP: emulators/ppsspp.md
|
||||
- PrBoom: emulators/prboom.md
|
||||
- ProSystem: emulators/prosystem.md
|
||||
- PUAE (P-UAE): emulators/puae.md
|
||||
- PuzzleScript: emulators/puzzlescript.md
|
||||
- px68k: emulators/px68k.md
|
||||
- QEMU: emulators/qemu.md
|
||||
- QUASI88: emulators/quasi88.md
|
||||
- RACE (Neo Geo Pocket): emulators/race.md
|
||||
- Redbook: emulators/redbook.md
|
||||
- REminiscence: emulators/reminiscence.md
|
||||
- RemoteJoy: emulators/remotejoy.md
|
||||
- Retro8: emulators/retro8.md
|
||||
- RetroDream: emulators/retrodream.md
|
||||
- ROM Cleaner: emulators/romcleaner.md
|
||||
- RPCS3: emulators/rpcs3.md
|
||||
- Rustation: emulators/rustation.md
|
||||
- RVVM: emulators/rvvm.md
|
||||
- SAME CDi: emulators/same_cdi.md
|
||||
- SameBoy: emulators/sameboy.md
|
||||
- ScummVM: emulators/scummvm.md
|
||||
- SDLPAL: emulators/sdlpal.md
|
||||
- SimCoupe: emulators/simcp.md
|
||||
- SMS Plus GX: emulators/smsplus.md
|
||||
- snes9x: emulators/snes9x.md
|
||||
- SquirrelJME: emulators/squirreljme.md
|
||||
- Stella: emulators/stella.md
|
||||
- Stone Soup: emulators/stonesoup.md
|
||||
- Super Bros War: emulators/superbroswar.md
|
||||
- Syobon Action: emulators/syobonaction.md
|
||||
- TamaLIBretro: emulators/tamalibretro.md
|
||||
- TempGBA: emulators/tempgba.md
|
||||
- TGB Dual: emulators/tgbdual.md
|
||||
- Theodore: emulators/theodore.md
|
||||
- The Powder Toy: emulators/thepowdertoy.md
|
||||
- TIC-80: emulators/tic80.md
|
||||
- TyrQuake: emulators/tyrquake.md
|
||||
- MicroW8: emulators/uw8.md
|
||||
- UXN: emulators/uxn.md
|
||||
- uzem: emulators/uzem.md
|
||||
- VaporSpec: emulators/vaporspec.md
|
||||
- VBA-Next: emulators/vba_next.md
|
||||
- vecx: emulators/vecx.md
|
||||
- VeMUlator: emulators/vemulator.md
|
||||
- VICE: emulators/vice.md
|
||||
- Vircon32: emulators/vircon32.md
|
||||
- Virtual Jaguar: emulators/virtualjaguar.md
|
||||
- VirtualXT: emulators/virtualxt.md
|
||||
- Vita3K: emulators/vita3k.md
|
||||
- vitaQuakeII: emulators/vitaquake2.md
|
||||
- vitaQuakeIII: emulators/vitaquake3.md
|
||||
- WASM-4: emulators/wasm4.md
|
||||
- X Millennium: emulators/x1.md
|
||||
- x64sdl: emulators/x64sdl.md
|
||||
- Xemu: emulators/xemu.md
|
||||
- XRick: emulators/xrick.md
|
||||
- Gap Analysis: gaps.md
|
||||
- Wiki:
|
||||
- Overview: wiki/index.md
|
||||
- Architecture: wiki/architecture.md
|
||||
- Tools: wiki/tools.md
|
||||
- Profiling guide: wiki/profiling.md
|
||||
- Data model: wiki/data-model.md
|
||||
- Contributing: contributing.md
|
||||
- Contributing: contributing.md
|
||||
@@ -93,5 +93,3 @@ Full libretro docs: `https://docs.libretro.com/library/<core>/`
|
||||
| RetroBat | md5 | MD5 check via JSON config | `batocera-systems.json` |
|
||||
| EmuDeck | md5 | MD5 whitelist per system | `checkBIOS.sh` |
|
||||
| Recalbox | md5 | multi-hash comma-separated | `es_bios.xml` + `Bios.cpp` |
|
||||
| RetroDECK | md5 | MD5 per file via component manifests | `api_data_processing.sh` |
|
||||
| RomM | md5 | size + any hash (MD5/SHA1/CRC32) | `firmware.py` |
|
||||
|
||||
@@ -86,17 +86,6 @@ platforms:
|
||||
# Each component/<name>/component_manifest.json declares BIOS requirements
|
||||
# Scraper enumerates top-level dirs via GitHub API, fetches each manifest directly
|
||||
|
||||
romm:
|
||||
config: romm.yml
|
||||
status: active
|
||||
logo: "https://avatars.githubusercontent.com/u/168586850"
|
||||
scraper: romm
|
||||
source_url: "https://raw.githubusercontent.com/rommapp/romm/master/backend/models/fixtures/known_bios_files.json"
|
||||
source_format: json
|
||||
hash_type: sha1
|
||||
schedule: monthly
|
||||
inherits_from: emulatorjs # cores inherited from emulatorjs.yml
|
||||
|
||||
retropie:
|
||||
config: retropie.yml
|
||||
status: archived # Last release: v4.8 (March 2022) - no update in 4 years
|
||||
|
||||
@@ -5,87 +5,6 @@ source: "https://raw.githubusercontent.com/batocera-linux/batocera.linux/master/
|
||||
base_destination: bios
|
||||
hash_type: md5
|
||||
verification_mode: md5
|
||||
standalone_cores:
|
||||
- abuse
|
||||
- azahar
|
||||
- bstone
|
||||
- cannonball
|
||||
- catacombgl
|
||||
- cdogs
|
||||
- cemu
|
||||
- cgenius
|
||||
- citron
|
||||
- clk
|
||||
- corsixth
|
||||
- demul
|
||||
- devilutionx
|
||||
- dhewm3
|
||||
- dolphin
|
||||
- dxx-rebirth
|
||||
- easyrpg
|
||||
- ecwolf
|
||||
- eduke32
|
||||
- eka2l1
|
||||
- etlegacy
|
||||
- fallout1-ce
|
||||
- fallout2-ce
|
||||
- flatpak
|
||||
- fury
|
||||
- gsplus
|
||||
- gzdoom
|
||||
- hcl
|
||||
- hurrican
|
||||
- hypseus-singe
|
||||
- ikemen
|
||||
- ioquake3
|
||||
- iortcw
|
||||
- jazz2-native
|
||||
- lexaloffle
|
||||
- lindbergh-loader
|
||||
- mame
|
||||
- model2emu
|
||||
- moonlight
|
||||
- mupen64plus
|
||||
- odcommander
|
||||
- openbor
|
||||
- openjazz
|
||||
- openjk
|
||||
- openjkdf2
|
||||
- openmohaa
|
||||
- pcsx2
|
||||
- play
|
||||
- ppsspp
|
||||
- pygame
|
||||
- pyxel
|
||||
- raze
|
||||
- rpcs3
|
||||
- ruffle
|
||||
- samcoupe
|
||||
- scummvm
|
||||
- sdlpop
|
||||
- shadps4
|
||||
- solarus
|
||||
- sonic-mania
|
||||
- sonic2013
|
||||
- sonic3-air
|
||||
- steam
|
||||
- supermodel
|
||||
- taradino
|
||||
- theforceengine
|
||||
- thextech
|
||||
- tr1x
|
||||
- tr2x
|
||||
- tsugaru
|
||||
- tyrian
|
||||
- uqm
|
||||
- vice
|
||||
- vita3k
|
||||
- vpinball
|
||||
- x16emu
|
||||
- xash3d_fwgs
|
||||
- xemu
|
||||
- xenia-canary
|
||||
- yquake2
|
||||
cores:
|
||||
- 81
|
||||
- a5200
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
# EmulatorJS base config (not a standalone platform).
|
||||
# Provides the core list for platforms that use EmulatorJS as their emulation engine.
|
||||
# Source: emulatorjs/emulatorjs data/src/consts.js + emulatorjs/build cores.json
|
||||
# RomM mapping: rommapp/romm frontend/src/utils/index.ts (_EJS_CORES_MAP)
|
||||
platform: EmulatorJS
|
||||
version: "4.2.3"
|
||||
homepage: "https://emulatorjs.org"
|
||||
source: "https://github.com/emulatorjs/emulatorjs"
|
||||
cores:
|
||||
- a5200
|
||||
- beetle_vb
|
||||
- cap32
|
||||
- crocods
|
||||
- desmume
|
||||
- desmume2015
|
||||
- dosbox_pure
|
||||
- fbalpha2012_cps1
|
||||
- fbalpha2012_cps2
|
||||
- fbneo
|
||||
- fceumm
|
||||
- freeintv
|
||||
- fuse
|
||||
- gambatte
|
||||
- gearcoleco
|
||||
- genesis_plus_gx
|
||||
- handy
|
||||
- mame2003
|
||||
- mame2003_plus
|
||||
- mednafen_ngp
|
||||
- mednafen_pce
|
||||
- mednafen_pcfx
|
||||
- mednafen_psx_hw
|
||||
- mednafen_wswan
|
||||
- melonds
|
||||
- mgba
|
||||
- mupen64plus_next
|
||||
- nestopia
|
||||
- opera
|
||||
- parallel_n64
|
||||
- pcsx_rearmed
|
||||
- picodrive
|
||||
- ppsspp
|
||||
- prboom
|
||||
- prosystem
|
||||
- puae
|
||||
- same_cdi
|
||||
- smsplus
|
||||
- snes9x
|
||||
- stella2014
|
||||
- vice_x128
|
||||
- vice_x64
|
||||
- vice_x64sc
|
||||
- vice_xpet
|
||||
- vice_xplus4
|
||||
- vice_xvic
|
||||
- virtualjaguar
|
||||
- yabause
|
||||
2731
platforms/romm.yml
2731
platforms/romm.yml
File diff suppressed because it is too large
Load Diff
@@ -26,7 +26,7 @@ import urllib.error
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
from common import list_registered_platforms, load_database, load_platform_config
|
||||
from common import load_database, load_platform_config
|
||||
|
||||
try:
|
||||
import yaml
|
||||
@@ -381,9 +381,10 @@ def main():
|
||||
db = load_database(args.db)
|
||||
|
||||
if args.all:
|
||||
platforms = list_registered_platforms(
|
||||
args.platforms_dir, include_archived=True,
|
||||
)
|
||||
platforms = []
|
||||
for f in Path(args.platforms_dir).glob("*.yml"):
|
||||
if not f.name.startswith("_"):
|
||||
platforms.append(f.stem)
|
||||
elif args.platform:
|
||||
platforms = [args.platform]
|
||||
else:
|
||||
|
||||
@@ -9,8 +9,6 @@ from __future__ import annotations
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import urllib.error
|
||||
import urllib.request
|
||||
import zipfile
|
||||
import zlib
|
||||
from pathlib import Path
|
||||
@@ -167,31 +165,6 @@ def load_data_dir_registry(platforms_dir: str = "platforms") -> dict:
|
||||
return data.get("data_directories", {})
|
||||
|
||||
|
||||
def list_registered_platforms(
|
||||
platforms_dir: str = "platforms",
|
||||
include_archived: bool = False,
|
||||
) -> list[str]:
|
||||
"""List platforms registered in _registry.yml.
|
||||
|
||||
Only registered platforms generate packs and appear in CI.
|
||||
Unregistered YAMLs (e.g., emulatorjs.yml) are base configs for inheritance.
|
||||
"""
|
||||
registry_path = os.path.join(platforms_dir, "_registry.yml")
|
||||
if not os.path.exists(registry_path):
|
||||
return []
|
||||
with open(registry_path) as f:
|
||||
registry = yaml.safe_load(f) or {}
|
||||
platforms = []
|
||||
for name, meta in sorted(registry.get("platforms", {}).items()):
|
||||
status = meta.get("status", "active")
|
||||
if status == "archived" and not include_archived:
|
||||
continue
|
||||
config_path = os.path.join(platforms_dir, meta.get("config", f"{name}.yml"))
|
||||
if os.path.exists(config_path):
|
||||
platforms.append(name)
|
||||
return platforms
|
||||
|
||||
|
||||
def resolve_local_file(
|
||||
file_entry: dict,
|
||||
db: dict,
|
||||
@@ -443,23 +416,16 @@ def group_identical_platforms(
|
||||
"""Group platforms that produce identical packs (same files + base_destination).
|
||||
|
||||
Returns [(group_of_platform_names, representative), ...].
|
||||
The representative is the root platform (one that does not inherit).
|
||||
"""
|
||||
fingerprints: dict[str, list[str]] = {}
|
||||
representatives: dict[str, str] = {}
|
||||
inherits: dict[str, bool] = {}
|
||||
|
||||
for platform in platforms:
|
||||
try:
|
||||
raw_path = os.path.join(platforms_dir, f"{platform}.yml")
|
||||
with open(raw_path) as f:
|
||||
raw = yaml.safe_load(f) or {}
|
||||
inherits[platform] = "inherits" in raw
|
||||
config = load_platform_config(platform, platforms_dir)
|
||||
except FileNotFoundError:
|
||||
fingerprints.setdefault(platform, []).append(platform)
|
||||
representatives.setdefault(platform, platform)
|
||||
inherits[platform] = False
|
||||
continue
|
||||
|
||||
base_dest = config.get("base_destination", "")
|
||||
@@ -474,16 +440,9 @@ def group_identical_platforms(
|
||||
|
||||
fp = hashlib.sha1("|".join(sorted(entries)).encode()).hexdigest()
|
||||
fingerprints.setdefault(fp, []).append(platform)
|
||||
# Prefer the root platform (no inherits) as representative
|
||||
if fp not in representatives or (not inherits[platform] and inherits.get(representatives[fp], False)):
|
||||
representatives[fp] = platform
|
||||
representatives.setdefault(fp, platform)
|
||||
|
||||
result = []
|
||||
for fp, group in fingerprints.items():
|
||||
rep = representatives[fp]
|
||||
ordered = [rep] + [p for p in group if p != rep]
|
||||
result.append((ordered, rep))
|
||||
return result
|
||||
return [(group, representatives[fp]) for fp, group in fingerprints.items()]
|
||||
|
||||
|
||||
def resolve_platform_cores(
|
||||
@@ -508,20 +467,11 @@ def resolve_platform_cores(
|
||||
}
|
||||
|
||||
if isinstance(cores_config, list):
|
||||
core_set = {str(c) for c in cores_config}
|
||||
# Build reverse index: platform core name -> profile name
|
||||
# Uses profile filename (dict key) + all names in cores: field
|
||||
core_to_profile: dict[str, str] = {}
|
||||
for name, p in profiles.items():
|
||||
if p.get("type") == "alias":
|
||||
continue
|
||||
core_to_profile[name] = name
|
||||
for core_name in p.get("cores", []):
|
||||
core_to_profile[str(core_name)] = name
|
||||
core_set = set(cores_config)
|
||||
return {
|
||||
core_to_profile[c]
|
||||
for c in core_set
|
||||
if c in core_to_profile
|
||||
name for name in profiles
|
||||
if name in core_set
|
||||
and profiles[name].get("type") != "alias"
|
||||
}
|
||||
|
||||
# Fallback: system ID intersection
|
||||
@@ -587,10 +537,8 @@ def _build_validation_index(profiles: dict) -> dict[str, dict]:
|
||||
"min_size": None, "max_size": None,
|
||||
"crc32": set(), "md5": set(), "sha1": set(), "sha256": set(),
|
||||
"adler32": set(), "crypto_only": set(),
|
||||
"emulators": set(),
|
||||
}
|
||||
sources[fname] = {}
|
||||
index[fname]["emulators"].add(emu_name)
|
||||
index[fname]["checks"].update(checks)
|
||||
# Track non-reproducible crypto checks
|
||||
index[fname]["crypto_only"].update(
|
||||
@@ -636,7 +584,6 @@ def _build_validation_index(profiles: dict) -> dict[str, dict]:
|
||||
for v in index.values():
|
||||
v["checks"] = sorted(v["checks"])
|
||||
v["crypto_only"] = sorted(v["crypto_only"])
|
||||
v["emulators"] = sorted(v["emulators"])
|
||||
# Keep hash sets as frozensets for O(1) lookup in check_file_validation
|
||||
return index
|
||||
|
||||
@@ -730,59 +677,6 @@ def filter_files_by_mode(files: list[dict], standalone: bool) -> list[dict]:
|
||||
return result
|
||||
|
||||
|
||||
LARGE_FILES_RELEASE = "large-files"
|
||||
LARGE_FILES_REPO = "Abdess/retrobios"
|
||||
LARGE_FILES_CACHE = ".cache/large"
|
||||
|
||||
|
||||
def fetch_large_file(name: str, dest_dir: str = LARGE_FILES_CACHE,
|
||||
expected_sha1: str = "", expected_md5: str = "") -> str | None:
|
||||
"""Download a large file from the 'large-files' GitHub release if not cached."""
|
||||
cached = os.path.join(dest_dir, name)
|
||||
if os.path.exists(cached):
|
||||
if expected_sha1 or expected_md5:
|
||||
hashes = compute_hashes(cached)
|
||||
if expected_sha1 and hashes["sha1"].lower() != expected_sha1.lower():
|
||||
os.unlink(cached)
|
||||
elif expected_md5:
|
||||
md5_list = [m.strip().lower() for m in expected_md5.split(",") if m.strip()]
|
||||
if hashes["md5"].lower() not in md5_list:
|
||||
os.unlink(cached)
|
||||
else:
|
||||
return cached
|
||||
else:
|
||||
return cached
|
||||
else:
|
||||
return cached
|
||||
|
||||
encoded_name = urllib.request.quote(name)
|
||||
url = f"https://github.com/{LARGE_FILES_REPO}/releases/download/{LARGE_FILES_RELEASE}/{encoded_name}"
|
||||
try:
|
||||
req = urllib.request.Request(url, headers={"User-Agent": "retrobios/1.0"})
|
||||
with urllib.request.urlopen(req, timeout=300) as resp:
|
||||
os.makedirs(dest_dir, exist_ok=True)
|
||||
with open(cached, "wb") as f:
|
||||
while True:
|
||||
chunk = resp.read(65536)
|
||||
if not chunk:
|
||||
break
|
||||
f.write(chunk)
|
||||
except (urllib.error.URLError, urllib.error.HTTPError):
|
||||
return None
|
||||
|
||||
if expected_sha1 or expected_md5:
|
||||
hashes = compute_hashes(cached)
|
||||
if expected_sha1 and hashes["sha1"].lower() != expected_sha1.lower():
|
||||
os.unlink(cached)
|
||||
return None
|
||||
if expected_md5:
|
||||
md5_list = [m.strip().lower() for m in expected_md5.split(",") if m.strip()]
|
||||
if hashes["md5"].lower() not in md5_list:
|
||||
os.unlink(cached)
|
||||
return None
|
||||
return cached
|
||||
|
||||
|
||||
def safe_extract_zip(zip_path: str, dest_dir: str) -> None:
|
||||
"""Extract a ZIP file safely, preventing zip-slip path traversal."""
|
||||
dest = os.path.realpath(dest_dir)
|
||||
|
||||
@@ -25,7 +25,7 @@ except ImportError:
|
||||
sys.exit(1)
|
||||
|
||||
sys.path.insert(0, os.path.dirname(__file__))
|
||||
from common import list_registered_platforms, load_database, load_emulator_profiles, load_platform_config
|
||||
from common import load_database, load_emulator_profiles, load_platform_config
|
||||
|
||||
DEFAULT_EMULATORS_DIR = "emulators"
|
||||
DEFAULT_PLATFORMS_DIR = "platforms"
|
||||
@@ -36,8 +36,10 @@ def load_platform_files(platforms_dir: str) -> tuple[dict[str, set[str]], dict[s
|
||||
"""Load all platform configs and collect declared filenames + data_directories per system."""
|
||||
declared = {}
|
||||
platform_data_dirs = {}
|
||||
for platform_name in list_registered_platforms(platforms_dir, include_archived=True):
|
||||
config = load_platform_config(platform_name, platforms_dir)
|
||||
for f in sorted(Path(platforms_dir).glob("*.yml")):
|
||||
if f.name.startswith("_"):
|
||||
continue
|
||||
config = load_platform_config(f.stem, platforms_dir)
|
||||
for sys_id, system in config.get("systems", {}).items():
|
||||
for fe in system.get("files", []):
|
||||
name = fe.get("name", "")
|
||||
|
||||
@@ -18,7 +18,7 @@ from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, os.path.dirname(__file__))
|
||||
from common import compute_hashes, list_registered_platforms
|
||||
from common import compute_hashes
|
||||
|
||||
CACHE_DIR = ".cache"
|
||||
CACHE_FILE = os.path.join(CACHE_DIR, "db_cache.json")
|
||||
@@ -216,62 +216,6 @@ def save_cache(cache_path: str, cache: dict):
|
||||
json.dump(cache, f)
|
||||
|
||||
|
||||
def _load_gitignored_large_files() -> dict[str, str]:
|
||||
"""Read .gitignore and return {filename: bios_path} for large files."""
|
||||
gitignore = Path(".gitignore")
|
||||
if not gitignore.exists():
|
||||
return {}
|
||||
entries = {}
|
||||
for line in gitignore.read_text().splitlines():
|
||||
line = line.strip()
|
||||
if line.startswith("bios/") and not line.startswith("#"):
|
||||
name = Path(line).name
|
||||
entries[name] = line
|
||||
return entries
|
||||
|
||||
|
||||
def _preserve_large_file_entries(files: dict, db_path: str) -> int:
|
||||
"""Preserve database entries for large files not on disk.
|
||||
|
||||
Large files (>50 MB) are stored as GitHub release assets and listed
|
||||
in .gitignore. When generate_db runs locally without them, their
|
||||
entries would be lost. This reads the existing database, downloads
|
||||
missing files from the release, and re-adds entries with paths
|
||||
pointing to the local cache.
|
||||
"""
|
||||
from common import fetch_large_file
|
||||
|
||||
large_files = _load_gitignored_large_files()
|
||||
if not large_files:
|
||||
return 0
|
||||
|
||||
try:
|
||||
with open(db_path) as f:
|
||||
existing_db = json.load(f)
|
||||
except (FileNotFoundError, json.JSONDecodeError):
|
||||
return 0
|
||||
|
||||
count = 0
|
||||
for sha1, entry in existing_db.get("files", {}).items():
|
||||
if sha1 in files:
|
||||
continue
|
||||
name = entry.get("name", "")
|
||||
path = entry.get("path", "")
|
||||
# Match by gitignored bios/ path OR by filename of a known large file
|
||||
if path not in large_files.values() and name not in large_files:
|
||||
continue
|
||||
cached = fetch_large_file(
|
||||
name,
|
||||
expected_sha1=entry.get("sha1", ""),
|
||||
expected_md5=entry.get("md5", ""),
|
||||
)
|
||||
if cached:
|
||||
entry = {**entry, "path": cached}
|
||||
files[sha1] = entry
|
||||
count += 1
|
||||
return count
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Generate multi-indexed BIOS database")
|
||||
parser.add_argument("--force", action="store_true", help="Force rehash all files")
|
||||
@@ -292,11 +236,6 @@ def main():
|
||||
if not files:
|
||||
print("Warning: No BIOS files found", file=sys.stderr)
|
||||
|
||||
# Preserve entries for large files stored as release assets (.gitignore)
|
||||
preserved = _preserve_large_file_entries(files, args.output)
|
||||
if preserved:
|
||||
print(f" Preserved {preserved} large file entries from existing database")
|
||||
|
||||
platform_aliases = _collect_all_aliases(files)
|
||||
for sha1, name_list in platform_aliases.items():
|
||||
for alias_entry in name_list:
|
||||
@@ -353,8 +292,9 @@ def _collect_all_aliases(files: dict) -> dict:
|
||||
if platforms_dir.is_dir():
|
||||
try:
|
||||
import yaml
|
||||
for platform_name in list_registered_platforms(str(platforms_dir), include_archived=True):
|
||||
config_file = platforms_dir / f"{platform_name}.yml"
|
||||
for config_file in platforms_dir.glob("*.yml"):
|
||||
if config_file.name.startswith("_"):
|
||||
continue
|
||||
try:
|
||||
with open(config_file) as f:
|
||||
config = yaml.safe_load(f) or {}
|
||||
|
||||
@@ -26,11 +26,10 @@ from pathlib import Path
|
||||
sys.path.insert(0, os.path.dirname(__file__))
|
||||
from common import (
|
||||
_build_validation_index, build_zip_contents_index, check_file_validation,
|
||||
check_inside_zip, compute_hashes, fetch_large_file, filter_files_by_mode,
|
||||
group_identical_platforms, list_emulator_profiles, list_registered_platforms,
|
||||
list_system_ids, load_database, load_data_dir_registry,
|
||||
load_emulator_profiles, load_platform_config, md5_composite,
|
||||
resolve_local_file,
|
||||
check_inside_zip, compute_hashes, filter_files_by_mode,
|
||||
group_identical_platforms, list_emulator_profiles, list_system_ids,
|
||||
load_database, load_data_dir_registry, load_emulator_profiles,
|
||||
load_platform_config, md5_composite, resolve_local_file,
|
||||
)
|
||||
from deterministic_zip import rebuild_zip_deterministic
|
||||
|
||||
@@ -44,48 +43,55 @@ DEFAULT_PLATFORMS_DIR = "platforms"
|
||||
DEFAULT_DB_FILE = "database.json"
|
||||
DEFAULT_OUTPUT_DIR = "dist"
|
||||
DEFAULT_BIOS_DIR = "bios"
|
||||
LARGE_FILES_RELEASE = "large-files"
|
||||
LARGE_FILES_REPO = "Abdess/retrobios"
|
||||
|
||||
MAX_ENTRY_SIZE = 512 * 1024 * 1024 # 512MB
|
||||
|
||||
|
||||
def _find_candidate_satisfying_both(
|
||||
file_entry: dict,
|
||||
db: dict,
|
||||
local_path: str,
|
||||
validation_index: dict,
|
||||
bios_dir: str,
|
||||
) -> str | None:
|
||||
"""Search for a repo file that satisfies both platform MD5 and emulator validation.
|
||||
def _verify_file_hash(path: str, expected_sha1: str = "",
|
||||
expected_md5: str = "") -> bool:
|
||||
if not expected_sha1 and not expected_md5:
|
||||
return True
|
||||
hashes = compute_hashes(path)
|
||||
if expected_sha1:
|
||||
return hashes["sha1"].lower() == expected_sha1.lower()
|
||||
md5_list = [m.strip().lower() for m in expected_md5.split(",") if m.strip()]
|
||||
return hashes["md5"].lower() in md5_list
|
||||
|
||||
When the current file passes platform verification but fails emulator checks,
|
||||
search all candidates with the same name for one that passes both.
|
||||
Returns a better path, or None if no upgrade found.
|
||||
"""
|
||||
fname = file_entry.get("name", "")
|
||||
if not fname:
|
||||
return None
|
||||
entry = validation_index.get(fname)
|
||||
if not entry:
|
||||
|
||||
def fetch_large_file(name: str, dest_dir: str = ".cache/large",
|
||||
expected_sha1: str = "", expected_md5: str = "") -> str | None:
|
||||
"""Download a large file from the 'large-files' GitHub release if not cached."""
|
||||
cached = os.path.join(dest_dir, name)
|
||||
if os.path.exists(cached):
|
||||
if expected_sha1 or expected_md5:
|
||||
if _verify_file_hash(cached, expected_sha1, expected_md5):
|
||||
return cached
|
||||
os.unlink(cached)
|
||||
else:
|
||||
return cached
|
||||
|
||||
encoded_name = urllib.request.quote(name)
|
||||
url = f"https://github.com/{LARGE_FILES_REPO}/releases/download/{LARGE_FILES_RELEASE}/{encoded_name}"
|
||||
try:
|
||||
req = urllib.request.Request(url, headers={"User-Agent": "retrobios-pack/1.0"})
|
||||
with urllib.request.urlopen(req, timeout=300) as resp:
|
||||
os.makedirs(dest_dir, exist_ok=True)
|
||||
with open(cached, "wb") as f:
|
||||
while True:
|
||||
chunk = resp.read(65536)
|
||||
if not chunk:
|
||||
break
|
||||
f.write(chunk)
|
||||
except (urllib.error.URLError, urllib.error.HTTPError):
|
||||
return None
|
||||
|
||||
md5_expected = file_entry.get("md5", "")
|
||||
md5_set = {m.strip().lower() for m in md5_expected.split(",") if m.strip()} if md5_expected else set()
|
||||
|
||||
by_name = db.get("indexes", {}).get("by_name", {})
|
||||
files_db = db.get("files", {})
|
||||
|
||||
for sha1 in by_name.get(fname, []):
|
||||
candidate = files_db.get(sha1, {})
|
||||
path = candidate.get("path", "")
|
||||
if not path or not os.path.exists(path) or os.path.realpath(path) == os.path.realpath(local_path):
|
||||
continue
|
||||
# Must still satisfy platform MD5
|
||||
if md5_set and candidate.get("md5", "").lower() not in md5_set:
|
||||
continue
|
||||
# Check emulator validation
|
||||
reason = check_file_validation(path, fname, validation_index, bios_dir)
|
||||
if reason is None:
|
||||
return path
|
||||
return None
|
||||
if expected_sha1 or expected_md5:
|
||||
if not _verify_file_hash(cached, expected_sha1, expected_md5):
|
||||
os.unlink(cached)
|
||||
return None
|
||||
return cached
|
||||
|
||||
|
||||
def _sanitize_path(raw: str) -> str:
|
||||
@@ -112,11 +118,10 @@ def resolve_file(file_entry: dict, db: dict, bios_dir: str,
|
||||
|
||||
path, status = resolve_local_file(file_entry, db, zip_contents,
|
||||
dest_hint=dest_hint)
|
||||
if path and status != "hash_mismatch":
|
||||
if path:
|
||||
return path, status
|
||||
|
||||
# Large files from GitHub release assets — tried when local file is
|
||||
# missing OR has a hash mismatch (wrong variant on disk)
|
||||
# Last resort: large files from GitHub release assets
|
||||
name = file_entry.get("name", "")
|
||||
sha1 = file_entry.get("sha1")
|
||||
md5_raw = file_entry.get("md5", "")
|
||||
@@ -126,10 +131,6 @@ def resolve_file(file_entry: dict, db: dict, bios_dir: str,
|
||||
if cached:
|
||||
return cached, "release_asset"
|
||||
|
||||
# Fall back to hash_mismatch local file if release asset unavailable
|
||||
if path:
|
||||
return path, status
|
||||
|
||||
return None, "not_found"
|
||||
|
||||
|
||||
@@ -204,7 +205,7 @@ def _collect_emulator_extras(
|
||||
if not u["in_repo"]:
|
||||
continue
|
||||
name = u["name"]
|
||||
dest = u.get("path") or name
|
||||
dest = name
|
||||
full_dest = f"{base_dest}/{dest}" if base_dest else dest
|
||||
if full_dest in seen:
|
||||
continue
|
||||
@@ -242,9 +243,7 @@ def generate_pack(
|
||||
platform_display = config.get("platform", platform_name)
|
||||
base_dest = config.get("base_destination", "")
|
||||
|
||||
version = config.get("version", config.get("dat_version", ""))
|
||||
version_tag = f"_{version.replace(' ', '')}" if version else ""
|
||||
zip_name = f"{platform_display.replace(' ', '_')}{version_tag}_BIOS_Pack.zip"
|
||||
zip_name = f"{platform_display.replace(' ', '_')}_BIOS_Pack.zip"
|
||||
zip_path = os.path.join(output_dir, zip_name)
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
|
||||
@@ -363,28 +362,20 @@ def generate_pack(
|
||||
else:
|
||||
file_status.setdefault(dedup_key, "ok")
|
||||
|
||||
# Emulator-level validation: informational only for platform packs.
|
||||
# Platform verification (existence/md5) is the authority for pack status.
|
||||
# Emulator checks are supplementary — logged but don't downgrade.
|
||||
# When a discrepancy is found, try to find a file satisfying both.
|
||||
# Emulator-level validation (matches verify.py behavior)
|
||||
# In existence mode: validation is informational (warning, not downgrade)
|
||||
# In md5 mode: validation downgrades OK to UNTESTED
|
||||
if (file_status.get(dedup_key) == "ok"
|
||||
and local_path and validation_index):
|
||||
fname = file_entry.get("name", "")
|
||||
reason = check_file_validation(local_path, fname, validation_index,
|
||||
bios_dir)
|
||||
reason = check_file_validation(local_path, fname, validation_index)
|
||||
if reason:
|
||||
better = _find_candidate_satisfying_both(
|
||||
file_entry, db, local_path, validation_index, bios_dir,
|
||||
)
|
||||
if better:
|
||||
local_path = better
|
||||
if verification_mode == "existence":
|
||||
# Existence mode: file present = OK, validation is extra info
|
||||
file_reasons.setdefault(dedup_key, reason)
|
||||
else:
|
||||
ventry = validation_index.get(fname, {})
|
||||
emus = ", ".join(ventry.get("emulators", []))
|
||||
file_reasons.setdefault(
|
||||
dedup_key,
|
||||
f"{platform_display} says OK but {emus} says {reason}",
|
||||
)
|
||||
file_status[dedup_key] = "untested"
|
||||
file_reasons[dedup_key] = reason
|
||||
|
||||
if already_packed:
|
||||
continue
|
||||
@@ -484,7 +475,7 @@ def generate_pack(
|
||||
|
||||
for key, reason in sorted(file_reasons.items()):
|
||||
status = file_status.get(key, "")
|
||||
label = "UNTESTED" if status == "untested" else "DISCREPANCY"
|
||||
label = "UNTESTED"
|
||||
print(f" {label}: {key} — {reason}")
|
||||
for name in missing_files:
|
||||
print(f" MISSING: {name}")
|
||||
@@ -821,8 +812,13 @@ def generate_system_pack(
|
||||
|
||||
|
||||
def list_platforms(platforms_dir: str) -> list[str]:
|
||||
"""List available platform names from registry."""
|
||||
return list_registered_platforms(platforms_dir, include_archived=True)
|
||||
"""List available platform names from YAML files."""
|
||||
platforms = []
|
||||
for f in sorted(Path(platforms_dir).glob("*.yml")):
|
||||
if f.name.startswith("_"):
|
||||
continue
|
||||
platforms.append(f.stem)
|
||||
return platforms
|
||||
|
||||
|
||||
def main():
|
||||
@@ -897,9 +893,9 @@ def main():
|
||||
|
||||
# Platform mode (existing)
|
||||
if args.all:
|
||||
platforms = list_registered_platforms(
|
||||
args.platforms_dir, include_archived=args.include_archived,
|
||||
)
|
||||
sys.path.insert(0, os.path.dirname(__file__))
|
||||
from list_platforms import list_platforms as _list_active
|
||||
platforms = _list_active(include_archived=args.include_archived)
|
||||
elif args.platform:
|
||||
platforms = [args.platform]
|
||||
else:
|
||||
@@ -919,11 +915,10 @@ def main():
|
||||
groups = group_identical_platforms(platforms, args.platforms_dir)
|
||||
|
||||
for group_platforms, representative in groups:
|
||||
variants = [p for p in group_platforms if p != representative]
|
||||
if variants:
|
||||
all_names = [load_platform_config(p, args.platforms_dir).get("platform", p) for p in group_platforms]
|
||||
label = " / ".join(all_names)
|
||||
print(f"\nGenerating pack for {label}...")
|
||||
if len(group_platforms) > 1:
|
||||
names = [load_platform_config(p, args.platforms_dir).get("platform", p) for p in group_platforms]
|
||||
combined_name = " + ".join(names)
|
||||
print(f"\nGenerating shared pack for {combined_name}...")
|
||||
else:
|
||||
print(f"\nGenerating pack for {representative}...")
|
||||
|
||||
@@ -934,13 +929,10 @@ def main():
|
||||
zip_contents=zip_contents, data_registry=data_registry,
|
||||
emu_profiles=emu_profiles,
|
||||
)
|
||||
if zip_path and variants:
|
||||
rep_cfg = load_platform_config(representative, args.platforms_dir)
|
||||
ver = rep_cfg.get("version", rep_cfg.get("dat_version", ""))
|
||||
ver_tag = f"_{ver.replace(' ', '')}" if ver else ""
|
||||
all_names = [load_platform_config(p, args.platforms_dir).get("platform", p) for p in group_platforms]
|
||||
combined = "_".join(n.replace(" ", "") for n in all_names) + f"{ver_tag}_BIOS_Pack.zip"
|
||||
new_path = os.path.join(os.path.dirname(zip_path), combined)
|
||||
if zip_path and len(group_platforms) > 1:
|
||||
names = [load_platform_config(p, args.platforms_dir).get("platform", p) for p in group_platforms]
|
||||
combined_filename = "_".join(n.replace(" ", "") for n in names) + "_BIOS_Pack.zip"
|
||||
new_path = os.path.join(os.path.dirname(zip_path), combined_filename)
|
||||
if new_path != zip_path:
|
||||
os.rename(zip_path, new_path)
|
||||
print(f" Renamed -> {os.path.basename(new_path)}")
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user