feat: re-profile 40 emulators, harden CI workflows

profile emulators pd777 through tic80, add frozen snapshots
(puae2021, snes9x2002/2005/2010, stella2014/2023).

CI: replace github-script with gh CLI, add test execution,
job-level permissions, propagate changed output, pin jsonschema.
This commit is contained in:
Abdessamad Derraz
2026-03-25 07:00:17 +01:00
parent 0543165ed2
commit ebb55a445b
69 changed files with 2337 additions and 1544 deletions

View File

@@ -11,9 +11,7 @@ on:
type: boolean
default: false
permissions:
contents: write
pages: write
permissions: {}
concurrency:
group: build
@@ -22,6 +20,11 @@ concurrency:
jobs:
regenerate:
runs-on: ubuntu-latest
permissions:
contents: write
pages: write
outputs:
changed: ${{ steps.commit.outputs.changed }}
steps:
- uses: actions/checkout@v6
@@ -57,6 +60,9 @@ jobs:
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
@@ -74,8 +80,10 @@ jobs:
release:
needs: regenerate
if: needs.regenerate.result == 'success' || github.event.inputs.force_release == 'true'
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'
@@ -105,6 +113,10 @@ jobs:
with:
python-version: "3.12"
- name: Install dependencies
if: steps.rate.outputs.skip != 'true'
run: pip install pyyaml
- name: Refresh data directories
if: steps.rate.outputs.skip != 'true'
run: python scripts/refresh_data_dirs.py
@@ -113,7 +125,6 @@ jobs:
- name: Build packs
if: steps.rate.outputs.skip != 'true'
run: |
pip install pyyaml
python scripts/generate_db.py --bios-dir bios --output database.json
python scripts/generate_pack.py --all --output-dir dist/

View File

@@ -31,8 +31,11 @@ jobs:
- name: Get changed BIOS files
id: changed
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: |
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }} | grep '^bios/' || true)
files=$(git diff --name-only "$BASE_SHA"..."$HEAD_SHA" | grep '^bios/' || true)
echo "files=$files" >> "$GITHUB_OUTPUT"
echo "$files" > /tmp/changed_files.txt
@@ -46,17 +49,11 @@ jobs:
fi
- name: Post validation report
uses: actions/github-script@v8
with:
script: |
const fs = require('fs');
const report = fs.readFileSync('/tmp/report.md', 'utf8');
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: report
});
if: always()
run: |
gh pr comment "${{ github.event.pull_request.number }}" --body-file /tmp/report.md
env:
GH_TOKEN: ${{ github.token }}
validate-configs:
runs-on: ubuntu-latest
@@ -68,7 +65,7 @@ jobs:
python-version: "3.12"
- name: Install dependencies
run: pip install pyyaml jsonschema
run: pip install pyyaml jsonschema==4.23.0
- name: Validate platform configs
run: |
@@ -88,15 +85,30 @@ jobs:
config = yaml.safe_load(f)
try:
validate(config, schema)
print(f' {yml_file.name}')
print(f'OK {yml_file.name}')
except ValidationError as e:
errors.append(f'{yml_file.name}: {e.message}')
print(f' {yml_file.name}: {e.message}')
print(f'FAIL {yml_file.name}: {e.message}')
if errors:
sys.exit(1)
"
run-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install dependencies
run: pip install pyyaml
- name: Run test suite
run: python -m unittest tests.test_e2e -v
label-pr:
runs-on: ubuntu-latest
permissions:
@@ -107,43 +119,25 @@ jobs:
fetch-depth: 0
- name: Auto-label PR
uses: actions/github-script@v8
with:
script: |
const { data: files } = await github.rest.pulls.listFiles({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
});
run: |
labels=""
files=$(gh pr diff "${{ github.event.pull_request.number }}" --name-only)
const labels = new Set();
if echo "$files" | grep -q '^bios/'; then
labels="$labels bios"
for sys in $(echo "$files" | grep '^bios/' | cut -d/ -f2 | sort -u); do
labels="$labels system:$(echo "$sys" | tr '[:upper:]' '[:lower:]')"
done
fi
if echo "$files" | grep -q '^platforms/'; then
labels="$labels platform-config"
fi
if echo "$files" | grep -q '^scripts/'; then
labels="$labels automation"
fi
for (const file of files) {
if (file.filename.startsWith('bios/')) {
labels.add('bios');
// Extract system from path
const parts = file.filename.split('/');
if (parts.length >= 3) {
labels.add(`system:${parts[1].toLowerCase()}`);
}
}
if (file.filename.startsWith('platforms/')) {
labels.add('platform-config');
}
if (file.filename.startsWith('scripts/')) {
labels.add('automation');
}
}
if (labels.size > 0) {
try {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: [...labels],
});
} catch (e) {
console.log('Could not add labels:', e.message);
}
}
for label in $labels; do
gh pr edit "${{ github.event.pull_request.number }}" --add-label "$label" 2>/dev/null || true
done
env:
GH_TOKEN: ${{ github.token }}

View File

@@ -1,5 +1,5 @@
{
"generated_at": "2026-03-24T21:16:05Z",
"generated_at": "2026-03-25T05:56:02Z",
"total_files": 6733,
"total_size": 5288644732,
"files": {
@@ -93684,6 +93684,10 @@
"4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
],
"dmg0_rom.bin": [
"4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
],
"sgb_bios.bin": [
"aa2f50a77dfb4823da96ba99309085a3c6278515",
"369e6eb5e0c975eaa52a4a3f6ee07b2a3c3c16de",
@@ -95178,9 +95182,6 @@
"DMG_ROM.bin": [
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
],
"dmg0_rom.bin": [
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
],
"amiga-os-300-a4000.rom": [
"f0b4e9e29e12218c2d5bd7020e4e785297d91fd7"
],
@@ -95211,6 +95212,9 @@
"terak.rom": [
"273a9933b68a290c5aedcd6d69faa7b1d22c0344"
],
"BS-X.bios": [
"604556b2e62860af18db5a77f2956ebc75450020"
],
"upd7801g.bin": [
"6e89d1227581c76441a53d605f9e324185f1da33"
],
@@ -95220,9 +95224,6 @@
"FdsBios.bin": [
"57fe1bdee955bb48d357e463ccbf129496930b62"
],
"BS-X.bios": [
"604556b2e62860af18db5a77f2956ebc75450020"
],
"N88_0.ROM": [
"d1ae642aed4f0584eeb81ff50180db694e5101d4"
],
@@ -95292,6 +95293,14 @@
"2608_RYM.WAV": [
"c65592330c9dd84011151daed52f9aec926b7e56"
],
"cgb0_boot.bin": [
"80e3ee82416c1a74827a5459fde32f04bf51a1f6",
"1293d68bf9643bc4f36954c1e80e38f39864528d"
],
"cgb_agb_boot.bin": [
"80e3ee82416c1a74827a5459fde32f04bf51a1f6",
"1293d68bf9643bc4f36954c1e80e38f39864528d"
],
"dc_flash_wb.bin": [
"72c65f2a11ee7b72b77b9945187b7a332632e14a"
],
@@ -95310,12 +95319,6 @@
"epr-21576d.bin": [
"6d27d71aec4dfba98f66316ae74a1426d567698a"
],
"cgb0_boot.bin": [
"1293d68bf9643bc4f36954c1e80e38f39864528d"
],
"cgb_agb_boot.bin": [
"1293d68bf9643bc4f36954c1e80e38f39864528d"
],
"nds_sd_card.bin": [
"3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3"
],
@@ -115616,9 +115619,9 @@
"9d76f3eefd64e032c763fa1ebf9cd3d9bd22317a",
"34fa37599f2f9eb607390ef2458a3c22d87f09a9",
"273a9933b68a290c5aedcd6d69faa7b1d22c0344",
"604556b2e62860af18db5a77f2956ebc75450020",
"6e89d1227581c76441a53d605f9e324185f1da33",
"57fe1bdee955bb48d357e463ccbf129496930b62",
"604556b2e62860af18db5a77f2956ebc75450020",
"d1ae642aed4f0584eeb81ff50180db694e5101d4",
"4ae4d37409ff99411a623da9f6a44192170a854e",
"e94278682ef9e9bbb82201f72c50382748dcea2a",
@@ -115636,6 +115639,7 @@
"db1031585968cfc6ec2ecda5c9a5a52f61444a3b",
"b4f14e58030ed40fff2dc312b58ea4440bdf8cc5",
"c65592330c9dd84011151daed52f9aec926b7e56",
"80e3ee82416c1a74827a5459fde32f04bf51a1f6",
"72c65f2a11ee7b72b77b9945187b7a332632e14a",
"6d27d71aec4dfba98f66316ae74a1426d567698a",
"1293d68bf9643bc4f36954c1e80e38f39864528d",

View File

@@ -1,7 +1,9 @@
emulator: PD777
type: libretro
source: "https://github.com/W88DodPECuThLOl/PD777"
profiled_date: "2026-03-18"
core_classification: community_fork
source: "https://github.com/mittonk/PD777"
upstream: "https://github.com/W88DodPECuThLOl/PD777"
profiled_date: "2026-03-24"
core_version: "v1.0.0"
display_name: "Epoch - Cassette Vision (PD777)"
cores:
@@ -10,12 +12,12 @@ systems:
- epochcv
notes: |
PD777 is an Epoch Cassette Vision emulator (NEC uPD777C CPU) with a libretro
interface, by W88DodPECuThLOl.
PD777 is an Epoch Cassette Vision emulator (NEC uPD777C CPU), by
W88DodPECuThLOl. Libretro port by Ken Mitton (mittonk).
No BIOS or firmware files required. The .info file declares firmware_count = 0.
Game loading in source/libretro/libretro.cpp:retro_load_game() (line 386-474).
Game loading in source/libretro/libretro.cpp:retro_load_game() (line 404-532).
The core loads a code ROM file (.bin777) directly from the content path, then
attempts to load a pattern ROM file (.ptn777) by replacing the extension.

View File

@@ -1,63 +1,34 @@
# Play! emulator BIOS profile
# Generated from source analysis of https://github.com/jpd002/Play-
# Commit analyzed: HEAD as of 2026-03-17
emulator: "Play!"
emulator: play
type: libretro
core_name: play_libretro
core_classification: official_port
source: "https://github.com/jpd002/Play-"
profiled_date: "2026-03-18"
upstream: "https://github.com/jpd002/Play-"
profiled_date: "2026-03-24"
core_version: "Git"
display_name: "Sony - PlayStation 2 (Play!)"
systems: [sony-playstation-2]
cores:
- play
systems:
- sony-playstation-2
bios_directory: null
bios_detection: "hle"
bios_selection: "not_applicable"
validation:
method: "none"
note: >
Play! is a full HLE (High-Level Emulation) PS2 emulator. It does not load or
require any real PS2 BIOS dump. The LoadBIOS() function in Ee_SubSystem.cpp
(which would read ./vfs/rom0/scph10000.bin) is commented out in PS2VM.cpp:ResetVM().
files: []
# No BIOS files required.
# IOP modules (rom0:SIO2MAN, rom0:PADMAN, rom0:MCMAN, rom0:MCSERV, etc.)
# are all replaced by HLE implementations in Source/iop/IopBios.cpp.
# The EE kernel/OS is reimplemented in Source/ee/PS2OS.cpp.
virtual_filesystem:
# Play! uses a virtual filesystem for memory cards and disc access,
# but these are runtime directories, not BIOS files.
mc0: {default: "vfs/mc0", purpose: "Memory card slot 0 (save data)"}
mc1: {default: "vfs/mc1", purpose: "Memory card slot 1 (save data)"}
host: {default: "vfs/host", purpose: "Host filesystem access"}
cdrom0: {default: null, purpose: "Disc image (set per-game)"}
memory_layout:
EE_RAM: {size: "32 MB (0x02000000)"}
EE_BIOS: {size: "4 MB (0x00400000)", note: "Allocated but unused, HLE replaces real BIOS"}
IOP_RAM: {size: "2 MB (0x00200000)"}
SPU_RAM: {size: "2 MB (0x00200000)"}
# Full HLE PS2 emulator by Jean-Philip Desjardins.
# All PS2 subsystems are reimplemented in C++: EE kernel (PS2OS.cpp),
# IOP BIOS modules (IopBios.cpp), GS, SPU2, VU units.
# The libretro core never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
#
# LoadBIOS() exists in Ee_SubSystem.cpp:832 but is commented out at line 232.
# IOP modules (SIO2MAN, PADMAN, MCMAN, MCSERV, CDVDMAN, CDVDFSV, etc.)
# are all HLE-replaced via m_hleModules in IopBios.cpp:279-290.
# _IOP_EMULATE_MODULES=1 is unconditionally defined in CMakeLists.txt:24.
#
# source_ref: Source/ee/Ee_SubSystem.cpp:232 (LoadBIOS commented out)
# source_ref: Source/iop/IopBios.cpp:279-290 (HLE module table)
# source_ref: Source/PS2VM.cpp:483-537 (ResetVM — no BIOS loading)
# source_ref: Source/ui_libretro/main_libretro.cpp:546-568 (retro_init — no file I/O)
# source_ref: README.md:4 ("Using an external BIOS file is not necessary or possible.")
# source_ref: play_libretro.info (firmware_count absent = 0)
notes: |
Play! does not require any PS2 BIOS files. Unlike PCSX2, it uses High-Level
Emulation to reimplement the PS2 kernel, IOP BIOS modules, and system services
entirely in C++.
Full HLE emulator. No BIOS or firmware files required. firmware_count=0 confirmed by source.
Key HLE components:
- EE kernel: Source/ee/PS2OS.cpp (handles BootFromCDROM, BootFromFile, syscalls)
- IOP BIOS: Source/iop/IopBios.cpp (HLE modules for rom0:PADMAN, MCMAN, MCSERV, etc.)
- No rom0/rom1/erom files are loaded at runtime
The legacy LoadBIOS() function in Source/ee/Ee_SubSystem.cpp references
"./vfs/rom0/scph10000.bin" but this call is commented out in PS2VM::ResetVM()
and has no effect on emulation.
mc2_ings.ico is not referenced anywhere in Play! source code. That file is
specific to PCSX2's memory card icon handling, not Play!.
The libretro core supports: .elf, .iso, .cso, .isz, .bin disc images.
Extensions handled in main_libretro.cpp:retro_get_system_info().
files: []

View File

@@ -1,14 +1,15 @@
emulator: PocketCDG
type: utility
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-pocketcdg"
profiled_date: "2026-03-18"
upstream: "https://github.com/redbug26/libretro-pocketcdg"
profiled_date: "2026-03-24"
core_version: "Git"
display_name: "PocketCDG"
cores: [pocketcdg]
systems: []
files: []
notes: >
CD+G (CD+Graphics) karaoke player for libretro. Renders the subcode
graphics channel from .cdg files synchronized with audio.
Loads .cdg content files directly.
No BIOS, firmware, or system directory files required.
CD+G (CD+Graphics) karaoke player. Renders subcode graphics from .cdg
files synchronized with MP3 audio. Font and MP3 decoder (libmad)
embedded in the binary.

View File

@@ -1,8 +1,9 @@
emulator: Potator
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/potern"
profiled_date: "2026-03-21"
source: "https://github.com/libretro/potator"
upstream: "https://github.com/alekmaul/potator"
profiled_date: "2026-03-24"
core_version: "1.0.5"
display_name: "Watara - Supervision (Potator)"
cores:
@@ -12,5 +13,6 @@ systems:
notes: |
Watara Supervision emulator. No BIOS required.
The Supervision has no BIOS ROM; games execute directly from cartridge.
files: []

View File

@@ -1,141 +1,44 @@
# PPSSPP emulator firmware profile
# Generated from source analysis of https://github.com/hrydgard/ppsspp
# Commit analyzed: HEAD as of 2026-03-17
emulator: PPSSPP
type: standalone
source: "https://github.com/hrydgard/ppsspp"
logo: "https://raw.githubusercontent.com/hrydgard/ppsspp/master/icons/icon-512.svg"
profiled_date: "2026-03-18"
type: standalone + libretro
core_classification: official_port
source: "https://github.com/libretro/ppsspp"
upstream: "https://github.com/hrydgard/ppsspp"
profiled_date: "2026-03-24"
core_version: "Git"
display_name: "Sony - PlayStation Portable (PPSSPP)"
cores:
- ppsspp
systems: [sony-psp]
firmware_required: false
firmware_detection: "none"
bios_directory: "N/A"
bios_selection: "N/A"
note: >
PPSSPP is a full HLE emulator - it does not require PSP firmware or BIOS files.
All PSP kernel modules (flash0:/kd/*.prx) are reimplemented in C++.
The emulator ships its own flash0/ directory with replacement fonts and assets.
pack_structure:
libretro: "PPSSPP"
default_firmware_version: 660 # PSP_DEFAULT_FIRMWARE in ConfigValues.h
source_ref_firmware: "Core/ConfigValues.h:40"
# Bundled assets (shipped with PPSSPP, not from Sony)
bundled_assets:
ppge_atlas:
files:
- {name: "ppge_atlas.zim", purpose: "UI texture atlas for dialogs, buttons, icons"}
- {name: "ppge_atlas.meta", purpose: "Atlas metadata (glyph positions, UV coords)"}
source_ref: "Core/Util/PPGeDraw.cpp:256-266"
note: >
PPGE (PlayStation Portable Graphics Engine) is PPSSPP's reimplementation of the
PSP system dialog renderer. The atlas contains button icons, dialog backgrounds,
and a basic font for system dialogs (save/load, network, etc).
Without ppge_atlas.zim, system dialogs render without graphics.
flash0_fonts:
path: "assets/flash0/font/"
source_ref: "Core/HLE/sceFont.cpp:88-106"
note: >
Replacement PGF font files shipped with PPSSPP. These are not the original Sony
fonts but open-source replacements that satisfy the sceFont API. Located in the
assets/flash0/font/ directory, mounted as flash0:/font/ at runtime.
files:
# Japanese
- {name: "jpn0.pgf", type: "FTT-NewRodin Pro DB", language: "Japanese", size: "standard"}
# Chinese
- {name: "zh_gb.pgf", type: "FTT-NewRodin Pro DB", language: "Chinese GB", note: "Also loaded from disc0: if present"}
# Korean
- {name: "kr0.pgf", type: "AsiaNHH(512Johab)", language: "Korean", size: "standard"}
# Latin - Standard size (0x288 height)
- {name: "ltn0.pgf", type: "FTT-NewRodin Pro Latin", style: "regular"}
- {name: "ltn1.pgf", type: "FTT-Matisse Pro Latin", style: "regular"}
- {name: "ltn2.pgf", type: "FTT-NewRodin Pro Latin", style: "italic"}
- {name: "ltn3.pgf", type: "FTT-Matisse Pro Latin", style: "italic"}
- {name: "ltn4.pgf", type: "FTT-NewRodin Pro Latin", style: "bold"}
- {name: "ltn5.pgf", type: "FTT-Matisse Pro Latin", style: "bold"}
- {name: "ltn6.pgf", type: "FTT-NewRodin Pro Latin", style: "bold_italic"}
- {name: "ltn7.pgf", type: "FTT-Matisse Pro Latin", style: "bold_italic"}
# Latin - Small size (0x1c0 height)
- {name: "ltn8.pgf", type: "FTT-NewRodin Pro Latin", style: "regular", size: "small"}
- {name: "ltn9.pgf", type: "FTT-Matisse Pro Latin", style: "regular", size: "small"}
- {name: "ltn10.pgf", type: "FTT-NewRodin Pro Latin", style: "italic", size: "small"}
- {name: "ltn11.pgf", type: "FTT-Matisse Pro Latin", style: "italic", size: "small"}
- {name: "ltn12.pgf", type: "FTT-NewRodin Pro Latin", style: "bold", size: "small"}
- {name: "ltn13.pgf", type: "FTT-Matisse Pro Latin", style: "bold", size: "small"}
- {name: "ltn14.pgf", type: "FTT-NewRodin Pro Latin", style: "bold_italic", size: "small"}
- {name: "ltn15.pgf", type: "FTT-Matisse Pro Latin", style: "bold_italic", size: "small"}
# HLE kernel modules (reimplemented, not loaded from firmware)
hle_modules:
source_ref: "Core/HLE/sceKernelModule.cpp:100-113"
note: >
When a PSP game tries to load these flash0:/kd/*.prx modules, PPSSPP intercepts
the load call and activates its built-in HLE implementation instead. No actual
PRX files are loaded from disk.
flash0_kd:
- {prx: "audiocodec.prx", hle: "sceAudiocodec_Driver"}
- {prx: "audiocodec_260.prx", hle: "sceAudiocodec_Driver"}
- {prx: "libatrac3plus.prx", hle: "sceATRAC3plus_Library"}
- {prx: "ifhandle.prx", hle: "sceNet_Service"}
- {prx: "pspnet.prx", hle: "sceNet_Library"}
- {prx: "pspnet_inet.prx", hle: "sceNetInet_Library"}
- {prx: "pspnet_apctl.prx", hle: "sceNetApctl_Library"}
- {prx: "pspnet_resolver.prx", hle: "sceNetResolver_Library"}
- {prx: "pspnet_adhoc.prx", hle: "sceNetAdhoc_Library"}
- {prx: "pspnet_adhocctl.prx", hle: "sceNetAdhocctl_Library"}
- {prx: "pspnet_adhoc_matching.prx", hle: "sceNetAdhocMatching_Library"}
- {prx: "pspnet_adhoc_download.prx", hle: "sceNetAdhocDownload_Library"}
- {prx: "pspnet_adhoc_discover.prx", hle: "sceNetAdhocDiscover_Library"}
# Flash0 filesystem layout
flash0_layout:
source_ref: "Core/HLE/sceIo.cpp:87,654"
note: >
flash0: is the PSP system partition. PPSSPP maps it to g_Config.flash0Directory
which is typically assets/flash0/ bundled with the emulator. The filesystem is
mounted read-only with FLASH flag.
directories:
font: "PGF/BWFON font files (mounted as flash0:/font/)"
kd: "Kernel drivers/modules (intercepted by HLE, not actually loaded)"
vsh: "Visual Shell resources"
dic: "Dictionary files"
data: "System data files"
# Font override path
font_override:
path: "ms0:/PSP/flash0/font/"
source_ref: "Core/HLE/sceFont.cpp:881"
note: >
Users can override bundled fonts by placing real PSP PGF files at
ms0:/PSP/flash0/font/ (inside the memory stick directory). PPSSPP
checks this path before falling back to the bundled flash0:/font/.
# Registry defaults relevant to fonts
registry_defaults:
font_path: "flash0:/font"
default_jpn_font: "jpn0.pgf"
default_latin_font: "ltn0.pgf"
source_ref: "Core/HLE/sceReg.cpp:81-281"
data_directories:
- ref: ppsspp-assets
destination: ""
source_ref: "libretro/libretro.cpp:537,549"
notes: |
PPSSPP does NOT require any firmware files, BIOS, or system software from Sony.
It is a complete HLE (High Level Emulation) implementation of the PSP operating system.
Full HLE emulator. No Sony firmware or BIOS required.
All PSP kernel modules (flash0:/kd/*.prx) are reimplemented in C++.
Libretro core loads assets from system/PPSSPP/ via VFS.
Assets include replacement PGF fonts (18 files in flash0/font/),
game compatibility database (compat.ini), language mapping (langregion.ini),
and post-processing shaders (shaders/).
Libretro fork (2020-03-18) behind upstream.
PSP_DEFAULT_FIRMWARE = 660 (Core/ConfigValues.h:40).
All PSP kernel modules (flash0:/kd/*.prx) are reimplemented in C++ within PPSSPP.
When games attempt to load these modules via sceKernelLoadModule, PPSSPP intercepts
the call and activates its built-in HLE implementation.
files:
- name: "ppge_atlas.zim"
path: "PPSSPP/ppge_atlas.zim"
description: "PPGe dialog texture atlas for save/load dialogs, on-screen keyboard, system UI"
required: false
source_ref: "Core/Util/PPGeDraw.cpp:227-228"
note: "PanicAlert if missing. System dialogs render without graphics but core continues running."
The bundled flash0/font/*.pgf files are open-source replacements for the original
Sony PSP fonts. They satisfy the sceFont API but are not identical to real PSP fonts.
For pixel-perfect font rendering, users can place original PGF files in the
ms0:/PSP/flash0/font/ override directory.
The ppge_atlas.zim/meta files provide PPSSPP's system dialog rendering (save/load
dialogs, on-screen keyboard, etc). These are PPSSPP-specific assets, not Sony firmware.
PPSSPP also exists as a libretro core (ppsspp_libretro), which uses the same HLE
approach and bundled assets.
- name: "ppge_atlas.meta"
path: "PPSSPP/ppge_atlas.meta"
description: "PPGe atlas metadata (glyph positions, UV coords)"
required: false
source_ref: "Core/Util/PPGeDraw.cpp:235-237"
note: "Loaded after ppge_atlas.zim. Without it, dialog UI has no glyph layout."

View File

@@ -1,9 +1,12 @@
emulator: PrBoom
type: libretro
core_classification: game_engine
source: "https://github.com/libretro/libretro-prboom"
profiled_date: "2026-03-18"
upstream: "http://prboom.sourceforge.net/"
profiled_date: "2026-03-24"
core_version: "v2.5.0"
display_name: "Doom (PrBoom)"
cores: [prboom]
systems: [doom]
notes: |
@@ -22,7 +25,7 @@ notes: |
(d_main.c:1073-1074), so the file is technically optional but expected
for correct rendering of menus, HUD digits, and extended features.
File search order (libretro.c I_FindFile, line 1743):
File search order (libretro.c I_FindFile, line 1742):
1. WAD directory (same folder as the loaded game WAD)
2. system/prboom/ subdirectory
3. system/ directory directly
@@ -47,5 +50,5 @@ files:
md5: "72ae1b47820fcc93cc0df9c428d0face"
sha1: "5f4aed208301449c2e9514edfd325fe9dead76fa"
crc32: "a5751b99"
source_ref: "d_main.c:1069-1078 (PACKAGE .wad load), libretro.c:1743-1780 (I_FindFile search), config.h:46 (PACKAGE=prboom)"
source_ref: "d_main.c:1069-1078 (PACKAGE .wad load), libretro.c:1742-1784 (I_FindFile search), config.h:46 (PACKAGE=prboom)"
notes: "Searched in system/prboom/ then system/. Falls back to internal defaults if missing, but menus and HUD may render incorrectly without it."

View File

@@ -1,7 +1,9 @@
emulator: ProSystem
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/prosystem-libretro"
profiled_date: "2026-03-18"
upstream: "https://github.com/gstanton/ProSystem1_3"
profiled_date: "2026-03-24"
core_version: "1.3e"
display_name: "Atari - 7800 (ProSystem)"
cores:
@@ -10,51 +12,37 @@ systems:
- atari-7800
notes: |
ProSystem is an Atari 7800 emulator ported to libretro.
Atari 7800 emulator by Greg Stanton, ported to libretro by community
contributors. The upstream is a Windows-only application with a single
user-configured BIOS path. The libretro port adds automatic region-based
BIOS selection: PAL carts get (E), everything else gets (U).
BIOS loading is in core/libretro.c:579-588. Region is read from the
cartridge header byte 57 (core/Cartridge.c:214) or overridden by the
internal database (core/Database.c). PAL carts get the (E) BIOS,
everything else gets (U).
Region is read from cartridge header byte 57 (core/Cartridge.c:214) or
overridden by the internal database (core/Database.c:1739-1757).
Both BIOS files are optional. The core runs games without them, but
some titles may have compatibility issues without the real BIOS
(startup encryption check, etc). bios_Store() maps the BIOS data
into the top of the 64K address space (65536 - bios_size).
Both BIOS files are optional. The core runs without them but some titles
have compatibility issues (startup encryption check). bios_Store() maps
the BIOS into ROM at address (65536 - bios_size).
No core option controls BIOS loading -- if the file exists in the
system directory, it is loaded automatically.
No core option controls BIOS loading. If the file exists in the system
directory, it is loaded automatically. No hash or size validation is
performed on the BIOS file.
The .info declares firmware_count=1 (U only), missing the PAL BIOS.
files:
- name: "7800 BIOS (U).rom"
system: atari-7800
required: false
hle_fallback: true
size: 4096 # 4 KB
note: "NTSC/US Atari 7800 BIOS. Loaded when cartridge_region != REGION_PAL."
size: 4096
description: "NTSC/US BIOS, loaded when cartridge_region != REGION_PAL"
source_ref: "core/libretro.c:585"
- name: "7800 BIOS (E).rom"
system: atari-7800
required: false
hle_fallback: true
size: 16384 # 16 KB (PAL BIOS is larger than NTSC)
note: "PAL/EU Atari 7800 BIOS. Loaded when cartridge_region == REGION_PAL."
size: 16384
description: "PAL/EU BIOS, loaded when cartridge_region == REGION_PAL"
source_ref: "core/libretro.c:583"
platform_details:
bios_mapping:
target: "top of 64K memory (65536 - bios_size)"
source_ref: "core/Bios.c:88"
notes: |
bios_Store() writes the BIOS into ROM at address (65536 - bios_size).
The BIOS size is read dynamically from the file, not hardcoded.
bios_enabled flag is set only if bios_Load() succeeds (file found
and read without error).
region_detection:
source_ref: "core/Cartridge.c:214, core/Database.c"
notes: |
Region byte is at offset 57 in the A7800 cartridge header.
The internal database (Database.c) can override the header value.
REGION_NTSC = 0, REGION_PAL = 1 (defined in Region.h).

View File

@@ -1,9 +1,11 @@
emulator: PUAE (P-UAE)
type: libretro
cores: [puae, puae2021]
core_classification: community_fork
cores: [puae]
source: "https://github.com/libretro/libretro-uae"
profiled_date: "2026-03-18"
core_version: "5.3.0"
upstream: "https://github.com/GnoStiC/PUAE"
profiled_date: "2026-03-24"
core_version: "5.3.1"
display_name: "Commodore - Amiga (PUAE)"
systems:
- commodore-amiga
@@ -41,7 +43,8 @@ notes: |
WHDLoad support copies kick33180.A500, kick34005.A500, kick40063.A600,
kick40068.A1200 into saves/WHDLoad/Devs/Kickstarts/ for use by WHDLoad
slave files.
slave files. Also copies rom.key (Amiga Forever decryption) and WHDLoad.key
(license) from the system directory.
ROM search order (libretro-core.c retro_config_kickstart):
1. Exact filename in system directory
@@ -232,6 +235,27 @@ files:
- "CD32 Extended-ROM rev 40.60 (1993)(Commodore)(CD32).rom"
source_ref: "libretro/libretro-core.h:241-244"
# -------------------------------------------------------
# WHDLoad support files
# -------------------------------------------------------
- name: "rom.key"
system: commodore-amiga
required: false
note: "Amiga Forever ROM decryption key. Copied to saves/WHDLoad/Devs/Kickstarts/ for WHDLoad."
source_ref: "libretro/libretro-core.c:5969-5980"
- name: "WHDLoad.key"
system: commodore-amiga
required: false
note: "WHDLoad license key. Copied to saves/WHDLoad/L/ for registered WHDLoad use."
source_ref: "libretro/libretro-core.c:5985-5998"
- name: "WHDLoad.prefs"
system: commodore-amiga
required: false
note: "WHDLoad preferences. Copied to saves/WHDLoad/S/ when present."
source_ref: "libretro/libretro-core.c:6002-6025"
model_kickstart_map:
A500: {kickstart: "kick34005.A500", ext: null}
A500OG: {kickstart: "kick34005.A500", ext: null}

295
emulators/puae2021.yml Normal file
View File

@@ -0,0 +1,295 @@
emulator: PUAE 2021
type: libretro
core_classification: frozen_snapshot
cores: [puae2021]
source: "https://github.com/libretro/libretro-uae/tree/2.6.1"
upstream: "https://github.com/GnoStiC/PUAE"
profiled_date: "2026-03-24"
core_version: "2.6.1"
display_name: "Commodore - Amiga (PUAE 2021)"
systems:
- commodore-amiga
- commodore-amiga-cd32
- commodore-cdtv
notes: |
Frozen snapshot of PUAE at WinUAE 2.6.1 era. Less accurate than current PUAE
(5.x), intended for weaker devices. BIOS handling is identical to the current
version.
PUAE is a port of UAE (Unix Amiga Emulator) to libretro, continuing E-UAE.
Emulates A500, 500+, 600, 1200, 2000, 4000, CD32, and CDTV. Kickstart ROMs
are loaded from the RetroArch system directory.
AROS (open-source Kickstart replacement) is available as a built-in fallback
when no Kickstart ROM is found. Compatibility is limited compared to real ROMs.
The core scans the system directory for files starting with "kick", "amiga-os",
or "KS ROM". Each filename is matched against a table of known naming
conventions: standard (kick*.A*), Amiga Forever (amiga-os-*.rom), and
TOSEC (Kickstart v*.rom). The first valid match is used.
Default kickstart per model (automatic selection):
A500, A500OG, A2000OG, CDTV -> kick34005.A500 (KS 1.3)
A500+ -> kick37175.A500 (KS 2.04)
A600 -> kick40063.A600 (KS 3.1)
A1200, A1200OG -> kick40068.A1200 (KS 3.1)
A2000 -> kick40063.A600 (KS 3.1)
A4030, A4040 -> kick40068.A4000 (KS 3.1)
CD32, CD32FR -> kick40060.CD32 (KS 3.1)
CDTV (ext) -> kick34005.CDTV
CD32 (ext) -> kick40060.CD32.ext
Extended ROM handling: CD32 and CDTV require an extended ROM in addition
to the main kickstart. If the main ROM filesize is <= 512 KB, the extended
ROM is loaded separately. Combined ROMs (main + ext in one file) skip the
extended ROM search.
WHDLoad support copies kick33180.A500, kick34005.A500, kick40063.A600,
kick40068.A1200 into saves/WHDLoad/Devs/Kickstarts/ for use by WHDLoad
slave files. Also copies rom.key (Amiga Forever decryption) and WHDLoad.key
(license) from the system directory.
ROM search order (libretro-core.c retro_config_kickstart):
1. Exact filename in system directory
2. Amiga Forever naming (amiga-os-*.rom)
3. TOSEC modified naming (with [!] suffix)
4. TOSEC naming (without [!] suffix)
capsimg.so/capsimg.dll is an optional shared library for IPF floppy image
support (SPS/CAPS format). Not a BIOS file, loaded dynamically at runtime.
Source: libretro/libretro-core.h:140-245, libretro/libretro-core.c:5534-5700,
libretro/libretro-core.c:5786-5945
files:
# -------------------------------------------------------
# Amiga 1000
# -------------------------------------------------------
- name: "kick31034.A1000"
system: commodore-amiga
required: false
hle_fallback: true
size: 262144 # 256 KB
note: "Kickstart 1.1 rev 31.34 (1985) NTSC. A1000 only."
aliases:
- "amiga-os-110-ntsc.rom"
- "Kickstart v1.1 rev 31.34 (1985)(Commodore)(A1000)(NTSC).rom"
source_ref: "libretro/libretro-core.h:170-174"
- name: "kick32034.A1000"
system: commodore-amiga
required: false
hle_fallback: true
size: 262144 # 256 KB
note: "Kickstart 1.1 rev 32.34 (1986) PAL. A1000 only."
aliases:
- "amiga-os-110-pal.rom"
- "Kickstart v1.1 rev 32.34 (1986)(Commodore)(A1000)(PAL).rom"
source_ref: "libretro/libretro-core.h:176-179"
# -------------------------------------------------------
# Amiga 500 / 2000
# -------------------------------------------------------
- name: "kick33180.A500"
system: commodore-amiga
required: false
hle_fallback: true
size: 262144 # 256 KB
note: "Kickstart 1.2 rev 33.180 (1986). A500/A2000. Also used by WHDLoad."
aliases:
- "amiga-os-120.rom"
- "Kickstart v1.2 rev 33.180 (1986)(Commodore)(A500-A2000)[!].rom"
- "Kickstart v1.2 rev 33.180 (1986)(Commodore)(A500-A1000-A2000).rom"
source_ref: "libretro/libretro-core.h:182-185"
- name: "kick34005.A500"
system: commodore-amiga
required: true
size: 262144 # 256 KB
note: "Kickstart 1.3 rev 34.5 (1987). Default for A500/A2000OG/CDTV models. Also used by WHDLoad."
aliases:
- "amiga-os-130.rom"
- "Kickstart v1.3 rev 34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[!].rom"
- "Kickstart v1.3 rev 34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV).rom"
source_ref: "libretro/libretro-core.h:187-190"
- name: "kick37175.A500"
system: commodore-amiga
required: false
hle_fallback: true
size: 262144 # 256 KB
note: "Kickstart 2.04 rev 37.175 (1991). Default for A500+ model."
aliases:
- "amiga-os-204.rom"
- "Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+)[!].rom"
- "Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+).rom"
source_ref: "libretro/libretro-core.h:192-195"
# -------------------------------------------------------
# Amiga 600
# -------------------------------------------------------
- name: "kick37350.A600"
system: commodore-amiga
required: false
hle_fallback: true
size: 262144 # 256 KB
note: "Kickstart 2.05 rev 37.350 (1992). A600HD."
aliases:
- "amiga-os-205-a600.rom"
- "Kickstart v2.05 rev 37.350 (1992)(Commodore)(A600HD)[!].rom"
source_ref: "libretro/libretro-core.h:198-201"
- name: "kick40063.A600"
system: commodore-amiga
required: false
hle_fallback: true
size: 524288 # 512 KB
note: "Kickstart 3.1 rev 40.63 (1993). Default for A600/A2000 models. Also used by WHDLoad."
aliases:
- "amiga-os-310-a600.rom"
- "Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000)[!].rom"
- "Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000).rom"
source_ref: "libretro/libretro-core.h:203-206"
# -------------------------------------------------------
# Amiga 1200
# -------------------------------------------------------
- name: "kick39106.A1200"
system: commodore-amiga
required: false
hle_fallback: true
size: 524288 # 512 KB
note: "Kickstart 3.0 rev 39.106 (1992). A1200."
aliases:
- "amiga-os-300-a1200.rom"
- "Kickstart v3.0 rev 39.106 (1992)(Commodore)(A1200)[!].rom"
source_ref: "libretro/libretro-core.h:209-212"
- name: "kick40068.A1200"
system: commodore-amiga
required: true
size: 524288 # 512 KB
note: "Kickstart 3.1 rev 40.68 (1993). Default for A1200/A1200OG models. Also used by WHDLoad."
aliases:
- "amiga-os-310-a1200.rom"
- "Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200)[!].rom"
- "Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200).rom"
source_ref: "libretro/libretro-core.h:214-217"
# -------------------------------------------------------
# Amiga 4000
# -------------------------------------------------------
- name: "kick39106.A4000"
system: commodore-amiga
required: false
hle_fallback: true
size: 524288 # 512 KB
note: "Kickstart 3.0 rev 39.106 (1992). A4000."
aliases:
- "amiga-os-300-a4000.rom"
- "Kickstart v3.0 rev 39.106 (1992)(Commodore)(A4000)[!].rom"
source_ref: "libretro/libretro-core.h:220-223"
- name: "kick40068.A4000"
system: commodore-amiga
required: false
hle_fallback: true
size: 524288 # 512 KB
note: "Kickstart 3.1 rev 40.68 (1993). Default for A4030/A4040 models."
aliases:
- "amiga-os-310-a4000.rom"
- "Kickstart v3.1 rev 40.68 (1993)(Commodore)(A4000).rom"
source_ref: "libretro/libretro-core.h:225-228"
# -------------------------------------------------------
# Commodore CDTV
# -------------------------------------------------------
- name: "kick34005.CDTV"
system: commodore-cdtv
required: true
size: 262144 # 256 KB
note: "CDTV Extended ROM v1.0 (1991). Required as extended ROM for CDTV model. Main kickstart is kick34005.A500."
aliases:
- "amiga-os-130-cdtv-ext.rom"
- "CDTV Extended-ROM v1.0 (1991)(Commodore)(CDTV)[!].rom"
- "CDTV Extended-ROM v1.0 (1992)(Commodore)(CDTV).rom"
source_ref: "libretro/libretro-core.h:231-234"
# -------------------------------------------------------
# Amiga CD32
# -------------------------------------------------------
- name: "kick40060.CD32"
system: commodore-amiga-cd32
required: true
size: 524288 # 512 KB
note: "CD32 Kickstart 3.1 rev 40.60 (1993). Main ROM for CD32 and CD32FR models."
aliases:
- "amiga-os-310-cd32.rom"
- "Kickstart v3.1 rev 40.60 (1993)(Commodore)(CD32).rom"
source_ref: "libretro/libretro-core.h:236-239"
- name: "kick40060.CD32.ext"
system: commodore-amiga-cd32
required: true
size: 524288 # 512 KB
note: "CD32 Extended ROM rev 40.60 (1993). Required when main ROM is <= 512 KB (not combined)."
aliases:
- "amiga-os-310-cd32-ext.rom"
- "CD32 Extended-ROM rev 40.60 (1993)(Commodore)(CD32).rom"
source_ref: "libretro/libretro-core.h:241-244"
# -------------------------------------------------------
# WHDLoad support files
# -------------------------------------------------------
- name: "rom.key"
system: commodore-amiga
required: false
note: "Amiga Forever ROM decryption key. Copied to saves/WHDLoad/Devs/Kickstarts/ for WHDLoad."
source_ref: "libretro/libretro-core.c:5887-5898"
- name: "WHDLoad.key"
system: commodore-amiga
required: false
note: "WHDLoad license key. Copied to saves/WHDLoad/L/ for registered WHDLoad use."
source_ref: "libretro/libretro-core.c:5903-5916"
- name: "WHDLoad.prefs"
system: commodore-amiga
required: false
note: "WHDLoad preferences. Copied to saves/WHDLoad/S/ when present."
source_ref: "libretro/libretro-core.c:5920-5943"
model_kickstart_map:
A500: {kickstart: "kick34005.A500", ext: null}
A500OG: {kickstart: "kick34005.A500", ext: null}
A500PLUS: {kickstart: "kick37175.A500", ext: null}
A600: {kickstart: "kick40063.A600", ext: null}
A1200: {kickstart: "kick40068.A1200", ext: null}
A1200OG: {kickstart: "kick40068.A1200", ext: null}
A2000: {kickstart: "kick40063.A600", ext: null}
A2000OG: {kickstart: "kick34005.A500", ext: null}
A4030: {kickstart: "kick40068.A4000", ext: null}
A4040: {kickstart: "kick40068.A4000", ext: null}
CDTV: {kickstart: "kick34005.A500", ext: "kick34005.CDTV"}
CD32: {kickstart: "kick40060.CD32", ext: "kick40060.CD32.ext"}
CD32FR: {kickstart: "kick40060.CD32", ext: "kick40060.CD32.ext"}
whdload_kickstarts:
- "kick33180.A500" # KS 1.2, 256 KB
- "kick34005.A500" # KS 1.3, 256 KB
- "kick40063.A600" # KS 3.1, 512 KB
- "kick40068.A1200" # KS 3.1, 512 KB
platform_details:
rom_sizes:
ROM_SIZE_128: 131072 # 128 KB
ROM_SIZE_256: 262144 # 256 KB
ROM_SIZE_512: 524288 # 512 KB
aros_fallback: true
naming_conventions:
standard: "kick{rev}.{model}"
amiga_forever: "amiga-os-{version}.rom"
tosec: "Kickstart v{version} rev {rev} ({year})(Commodore)({model}).rom"
scan_prefixes: ["kick", "amiga-os", "KS ROM"]
source_ref: "libretro/libretro-core.c:2617-2656"

View File

@@ -1,20 +1,21 @@
emulator: PuzzleScript
type: game
source: "https://github.com/libretro/puzzlescript-libretro"
profiled_date: "2026-03-18"
core_version: ""
display_name: "PuzzleScript (pzretro)"
core_classification: game_engine
source: "https://github.com/nwhitehead/pzretro"
upstream: "https://github.com/increpare/PuzzleScript"
profiled_date: "2026-03-25"
core_version: "0.2.1"
display_name: "PuzzleScript (pzretro)"
cores:
- puzzlescript
systems: []
notes: |
Libretro port of PuzzleScript, an open-source HTML5 puzzle game
engine by Stephen Lavelle (increpare). Runs .puz puzzle definition
files within RetroArch.
Libretro port of PuzzleScript, an open-source HTML5 puzzle game engine
by Stephen Lavelle (increpare). Runs .pz and .pzp puzzle definition files.
Also supports PuzzleScript Plus (Auroriax fork) for .pzp files.
No BIOS or system files required. The puzzle engine and renderer
are self-contained.
The PuzzleScript and PuzzleScript Plus JavaScript engines are compiled into
the binary via QuickJS. No external files required.
files: []

View File

@@ -1,7 +1,9 @@
emulator: px68k
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/px68k-libretro"
profiled_date: "2026-03-18"
upstream: "https://github.com/hissorii/px68k"
profiled_date: "2026-03-25"
core_version: "0.15+"
display_name: "Sharp - X68000 (PX68k)"
cores:

View File

@@ -1,19 +1,27 @@
emulator: QEMU
type: libretro
core_classification: community_fork
source: "https://github.com/io12/qemu-libretro"
profiled_date: "2026-03-18"
upstream: "https://github.com/qemu/qemu"
profiled_date: "2026-03-25"
core_version: "0.1.0"
display_name: "QEMU"
systems: [ibm-pc, x86, x86-64, ppc, sparc, sparc64, arm, aarch64, mips, riscv, s390x, m68k, alpha, hppa]
cores: [qemu]
systems: [ibm-pc, x86, x86-64, ppc, ppc64, sparc, sparc64, arm, aarch64, mips, mips64, riscv32, riscv64, s390x, m68k, alpha, hppa]
# QEMU (Quick Emulator) libretro core, based on QEMU 9.0.50.
# Supports x86_64, i386, PPC, Sparc, ARM, AArch64, MIPS, RISC-V, S390x, M68K, Alpha, HPPA.
# Opens .iso, .img, .qcow, .qcow2 files or custom .qemu_cmd_line for any architecture.
# Builds 17 targets: aarch64, alpha, arm, i386, m68k, mips(el), mips64(el),
# ppc, ppc64, riscv32, riscv64, s390x, sparc, sparc64, x86_64.
# Opens .iso, .img, .qcow, .qcow2 or custom .qemu_cmd_line for any architecture.
# Default architecture is x86_64 when loading .iso/.img/.qcow directly.
#
# All BIOS/firmware files are loaded from {retroarch_system_dir}/qemu/
# via qemu_add_data_dir(system_dir + "/qemu") in ui/libretro.c:659-660.
# QEMU resolves firmware by name through its data directory search path.
# No hash/size validation is performed on any firmware file.
#
# .info declares firmware_count=0. All firmware is loaded by QEMU's internal
# machine/device code, not declared in the .info.
files:
# ========================================================
@@ -58,9 +66,7 @@ files:
md5: "387c48aef9497c6c2b914b1e6b9bc7aa"
size: 16384
required: false
note: >
Minimal x86 firmware for fast Linux kernel booting.
Alternative to SeaBIOS for Linux-only workloads.
note: "Minimal x86 firmware for fast Linux kernel booting."
source_ref: "pc-bios/meson.build:32"
# ========================================================
@@ -83,9 +89,7 @@ files:
md5: "fcd3d3c0b07a9096693d69425cd940f6"
size: 38912
required: false
note: >
Cirrus Logic GD5446 VGA BIOS. Used by the cirrus-vga PCI
device and cirrus-vga-isa ISA device.
note: "Cirrus Logic GD5446 VGA BIOS."
source_ref: "hw/display/cirrus_vga.c:3001, hw/display/cirrus_vga_isa.c:67"
- name: "VGA BIOS stdvga"
@@ -94,9 +98,7 @@ files:
md5: "8117c3fd986fbbe327badfe38e77db1d"
size: 39424
required: false
note: >
Standard VGA PCI BIOS (Bochs VBE extensions). Used by the
VGA PCI device, the most common display adapter for x86.
note: "Standard VGA PCI BIOS (Bochs VBE extensions)."
source_ref: "hw/display/vga-pci.c:387"
- name: "VGA BIOS bochs-display"
@@ -105,7 +107,7 @@ files:
md5: "83e39bd3e056291ee50d2b5d937bab3e"
size: 28672
required: false
note: "Bochs display device VGA BIOS. Simpler non-VGA display adapter."
note: "Bochs display device VGA BIOS."
source_ref: "hw/display/bochs-display.c:365"
- name: "VGA BIOS ramfb"
@@ -114,7 +116,7 @@ files:
md5: "c55512e313c4cb08ec5a36198fdfef33"
size: 28672
required: false
note: "RAM framebuffer VGA BIOS for simple display output."
note: "RAM framebuffer VGA BIOS."
source_ref: "hw/display/ramfb.c:150"
- name: "VGA BIOS ATI"
@@ -154,7 +156,7 @@ files:
source_ref: "hw/display/vmware_vga.c:1349"
# ========================================================
# x86 OPTION ROMs (loaded on demand)
# x86 OPTION ROMs
# ========================================================
- name: "KVM VAPIC"
path: "qemu/kvmvapic.bin"
@@ -162,9 +164,7 @@ files:
md5: "b8cec9572e408a3259914f9aba8664cb"
size: 9216
required: false
note: >
KVM virtual APIC option ROM. Loaded as option ROM for
APIC acceleration on x86.
note: "KVM virtual APIC option ROM for APIC acceleration on x86."
source_ref: "hw/i386/vapic.c:733"
- name: "Linux boot ROM"
@@ -200,7 +200,7 @@ files:
md5: "e942cc4f612050c7331d33a34b0d5192"
size: 1024
required: false
note: "DMA-capable option ROM for Multiboot kernel loading."
note: "DMA-capable Multiboot option ROM."
source_ref: "hw/i386/multiboot.c:406"
- name: "PVH boot ROM"
@@ -213,7 +213,7 @@ files:
source_ref: "hw/i386/x86-common.c:735"
# ========================================================
# PXE NETWORK BOOT ROMs (iPXE)
# PXE NETWORK BOOT ROMs (iPXE legacy BIOS)
# ========================================================
- name: "PXE e1000"
path: "qemu/pxe-e1000.rom"
@@ -222,7 +222,7 @@ files:
size: 67072
required: false
note: "iPXE PXE boot ROM for Intel e1000 NIC (8086:100e)."
source_ref: "pc-bios/README"
source_ref: "pc-bios/meson.build:47"
- name: "PXE eepro100"
path: "qemu/pxe-eepro100.rom"
@@ -230,8 +230,8 @@ files:
md5: "2f8279177fdc2ce5abc47d9f1e303db1"
size: 61440
required: false
note: "iPXE PXE boot ROM for Intel eepro100 NIC (8086:1209)."
source_ref: "pc-bios/README"
note: "iPXE PXE boot ROM for Intel eepro100 NIC (8086:1209). Device default romfile."
source_ref: "hw/net/eepro100.c:2077"
- name: "PXE ne2k_pci"
path: "qemu/pxe-ne2k_pci.rom"
@@ -240,7 +240,7 @@ files:
size: 61440
required: false
note: "iPXE PXE boot ROM for NE2000 PCI NIC (1050:0940)."
source_ref: "pc-bios/README"
source_ref: "pc-bios/meson.build:49"
- name: "PXE pcnet"
path: "qemu/pxe-pcnet.rom"
@@ -249,7 +249,7 @@ files:
size: 61440
required: false
note: "iPXE PXE boot ROM for AMD PCnet NIC (1022:2000)."
source_ref: "pc-bios/README"
source_ref: "pc-bios/meson.build:50"
- name: "PXE rtl8139"
path: "qemu/pxe-rtl8139.rom"
@@ -258,7 +258,7 @@ files:
size: 61440
required: false
note: "iPXE PXE boot ROM for Realtek RTL8139 NIC (10ec:8139)."
source_ref: "pc-bios/README"
source_ref: "pc-bios/meson.build:51"
- name: "PXE virtio"
path: "qemu/pxe-virtio.rom"
@@ -267,7 +267,7 @@ files:
size: 60416
required: false
note: "iPXE PXE boot ROM for VirtIO NIC (1af4:1000)."
source_ref: "pc-bios/README"
source_ref: "pc-bios/meson.build:52"
# ========================================================
# EFI NETWORK BOOT ROMs (iPXE UEFI)
@@ -278,7 +278,7 @@ files:
md5: "d8330b99643e31b51e7710fa26c7e859"
size: 159232
required: false
note: "iPXE EFI boot ROM for Intel e1000 NIC."
note: "iPXE EFI boot ROM for Intel e1000 NIC. Device default romfile."
source_ref: "hw/net/e1000.c:1708"
- name: "EFI e1000e"
@@ -287,7 +287,7 @@ files:
md5: "a55bf3f4988d4a736c71a1300636cd69"
size: 159232
required: false
note: "iPXE EFI boot ROM for Intel e1000e NIC."
note: "iPXE EFI boot ROM for Intel e1000e NIC. Device default romfile."
source_ref: "hw/net/e1000e.c:689"
- name: "EFI eepro100"
@@ -297,7 +297,7 @@ files:
size: 159232
required: false
note: "iPXE EFI boot ROM for Intel eepro100 NIC."
source_ref: "hw/net/eepro100.c:2077"
source_ref: "pc-bios/meson.build:54"
- name: "EFI ne2k_pci"
path: "qemu/efi-ne2k_pci.rom"
@@ -305,7 +305,7 @@ files:
md5: "10b66275b3644af301c64a3c545c3daf"
size: 157696
required: false
note: "iPXE EFI boot ROM for NE2000 PCI NIC."
note: "iPXE EFI boot ROM for NE2000 PCI NIC. Device default romfile."
source_ref: "hw/net/ne2000-pci.c:111"
- name: "EFI pcnet"
@@ -314,7 +314,7 @@ files:
md5: "374696f4fffa83c9cf18272212c21d83"
size: 157696
required: false
note: "iPXE EFI boot ROM for AMD PCnet NIC."
note: "iPXE EFI boot ROM for AMD PCnet NIC. Device default romfile."
source_ref: "hw/net/pcnet-pci.c:267"
- name: "EFI rtl8139"
@@ -323,7 +323,7 @@ files:
md5: "f81dbbd7001a8db631f2a548b7d08c4e"
size: 160768
required: false
note: "iPXE EFI boot ROM for Realtek RTL8139 NIC."
note: "iPXE EFI boot ROM for Realtek RTL8139 NIC. Device default romfile."
source_ref: "hw/net/rtl8139.c:3423"
- name: "EFI virtio"
@@ -332,8 +332,8 @@ files:
md5: "d3887f04c23035cae3f0e1075deea459"
size: 160768
required: false
note: "iPXE EFI boot ROM for VirtIO NIC."
source_ref: "pc-bios/meson.build:58"
note: "iPXE EFI boot ROM for VirtIO NIC. Device default romfile."
source_ref: "hw/virtio/virtio-net-pci.c:73"
- name: "EFI vmxnet3"
path: "qemu/efi-vmxnet3.rom"
@@ -341,57 +341,132 @@ files:
md5: "ea1ba222dbd5aa356ea1f29393ae55e1"
size: 156672
required: false
note: "iPXE EFI boot ROM for VMware vmxnet3 NIC."
note: "iPXE EFI boot ROM for VMware vmxnet3 NIC. Device default romfile."
source_ref: "hw/net/vmxnet3.c:2508"
# ========================================================
# EDK2 UEFI FIRMWARE
# ========================================================
- name: "EDK2 x86_64 UEFI"
path: "qemu/edk2-x86_64-code.fd"
sha1: "eac1a94b8e0d7c53fd5df001c36794ec34c7c724"
size: 3653632
required: false
note: "TianoCore UEFI firmware for x86_64. Built from edk2-stable202302."
source_ref: "pc-bios/meson.build:12"
- name: "EDK2 x86_64 Secure Boot UEFI"
path: "qemu/edk2-x86_64-secure-code.fd"
sha1: "617abe2746696bb4a309d72cecb446dc76a2a61e"
size: 3653632
required: false
note: "TianoCore UEFI firmware for x86_64 with Secure Boot support."
source_ref: "pc-bios/meson.build:13"
- name: "EDK2 i386 UEFI"
path: "qemu/edk2-i386-code.fd"
sha1: "45b8faebdfaaf19d16e3a7c5f60d69214685071c"
size: 3653632
required: false
note: "TianoCore UEFI firmware for i386."
source_ref: "pc-bios/meson.build:9"
- name: "EDK2 i386 Secure Boot UEFI"
path: "qemu/edk2-i386-secure-code.fd"
sha1: "6982abec8ef2ed7c8293163d5a0bd69a01a2126f"
size: 3653632
required: false
note: "TianoCore UEFI firmware for i386 with Secure Boot support."
source_ref: "pc-bios/meson.build:10"
- name: "EDK2 i386 UEFI vars template"
path: "qemu/edk2-i386-vars.fd"
sha1: "b62e676c9317a32aaa9ee1d76268d8c55663bd6e"
size: 540672
required: false
note: "UEFI variable store template for i386/x86_64 EDK2 firmware."
source_ref: "pc-bios/meson.build:11"
- name: "EDK2 AArch64 UEFI"
path: "qemu/edk2-aarch64-code.fd"
sha1: "514edbce58bfa877170673c1799351a7dab3b6df"
size: 67108864
required: false
note: "TianoCore UEFI firmware for AArch64 (ARM 64-bit)."
source_ref: "pc-bios/meson.build:4"
- name: "EDK2 ARM UEFI"
path: "qemu/edk2-arm-code.fd"
sha1: "c20f01c28b59b388abb9d0febeec45d801a632f0"
size: 67108864
required: false
note: "TianoCore UEFI firmware for ARM (32-bit)."
source_ref: "pc-bios/meson.build:5"
- name: "EDK2 ARM UEFI vars template"
path: "qemu/edk2-arm-vars.fd"
sha1: "b051167e0e57bd13d77ed92ef7b474872f44ec6d"
size: 67108864
required: false
note: "UEFI variable store template for ARM/AArch64 EDK2 firmware."
source_ref: "pc-bios/meson.build:6"
- name: "EDK2 RISC-V UEFI"
path: "qemu/edk2-riscv-code.fd"
sha1: "2c8633d881ece0c4794d740138a318f7e9af480c"
size: 33554432
required: false
note: "TianoCore UEFI firmware for RISC-V 64-bit."
source_ref: "pc-bios/meson.build:7"
- name: "EDK2 RISC-V UEFI vars template"
path: "qemu/edk2-riscv-vars.fd"
sha1: "c4e6cce4247ba8f32f528c1c69f49228f616677f"
size: 33554432
required: false
note: "UEFI variable store template for RISC-V EDK2 firmware."
source_ref: "pc-bios/meson.build:8"
# ========================================================
# POWERPC FIRMWARE
# ========================================================
- name: "OpenBIOS PowerPC"
path: "qemu/openbios-ppc"
sha1: "0ef5051dcb318c0bc45d1908f8318d6eece8686a"
md5: ""
size: 677196
required: false
note: >
OpenBIOS (IEEE 1275 Open Firmware) for PowerPC emulation.
Required for -M mac99, -M g3beige and other PPC machines.
source_ref: "pc-bios/README"
Default for -M mac99, -M g3beige and other PPC machines.
source_ref: "hw/ppc/mac_oldworld.c:60, hw/ppc/mac_newworld.c:86"
- name: "SLOF (Slimline Open Firmware)"
path: "qemu/slof.bin"
sha1: "a03a94acfe555804d66cc6c74760ae1375a71a64"
md5: ""
size: 995000
required: false
note: >
IBM SLOF firmware for pSeries (POWER) machine type.
Built from qemu-slof-20230918 tag.
source_ref: "pc-bios/README"
note: "IBM SLOF firmware for pSeries (POWER) machine type. Built from qemu-slof-20230918."
source_ref: "hw/ppc/spapr.c:106"
- name: "skiboot"
path: "qemu/skiboot.lid"
sha1: "8052069aa9714c23be05b4e62fb245a3d572cb0f"
md5: ""
size: 2527328
required: false
note: >
OPAL firmware for OpenPOWER PowerNV (non-virtualized) machine type.
source_ref: "pc-bios/README"
note: "OPAL firmware for OpenPOWER PowerNV (non-virtualized) machine type."
source_ref: "hw/ppc/pnv.c:63"
- name: "VOF (Virtual Open Firmware)"
path: "qemu/vof.bin"
sha1: "fc737b34a390f5752cb7e35b33d71f4f438ab607"
md5: ""
size: 3456
required: false
note: "Minimal Open Firmware shim for -machine pseries,x-vof=on."
source_ref: "pc-bios/README"
note: "Minimal Open Firmware shim for -machine pseries,x-vof=on. Also default for Pegasos II."
source_ref: "hw/ppc/spapr.c:107, hw/ppc/pegasos2.c:43"
- name: "VOF NVRAM"
path: "qemu/vof-nvram.bin"
sha1: "5d1184609b87f78635f0575467a1c3f440900ff0"
md5: ""
size: 16384
required: false
note: "NVRAM template for VOF (Virtual Open Firmware)."
@@ -400,18 +475,14 @@ files:
- name: "U-Boot e500"
path: "qemu/u-boot.e500"
sha1: "9ea03f249f856cdcb4399cc1f5a5031729379911"
md5: ""
size: 421720
required: false
note: >
U-Boot for PowerPC e500 (qemu-ppce500 target).
Built from upstream denx u-boot, commit 2072e72.
source_ref: "pc-bios/README"
note: "U-Boot for PowerPC e500 (qemu-ppce500 target). Built from upstream denx u-boot, commit 2072e72."
source_ref: "hw/ppc/e500.c:1184"
- name: "U-Boot SAM460"
path: "qemu/u-boot-sam460-20100605.bin"
sha1: "0399a79ac0cf77f0da70af9baec7548a3b368f0a"
md5: ""
size: 524288
required: false
note: "U-Boot for Sam460ex (AmigaOne) PowerPC board."
@@ -420,11 +491,10 @@ files:
- name: "QEMU VGA Mac driver"
path: "qemu/qemu_vga.ndrv"
sha1: "638c6262a6eb579ec3d1c9292566ac94c942dc15"
md5: ""
size: 18752
required: false
note: "QemuMacDrivers VGA driver for PPC MacOS guests."
source_ref: "pc-bios/README"
source_ref: "hw/ppc/mac_oldworld.c:58, hw/ppc/mac_newworld.c:84"
# ========================================================
# SPARC FIRMWARE
@@ -432,38 +502,41 @@ files:
- name: "OpenBIOS Sparc32"
path: "qemu/openbios-sparc32"
sha1: "5a4f2124c8f093f8aee99fbcebcf5d17d789ff26"
md5: ""
size: 382080
required: false
note: >
OpenBIOS for Sparc32 emulation. Includes QEMU,tcx.bin
and QEMU,cgthree.bin display drivers.
source_ref: "pc-bios/README"
note: "OpenBIOS for Sparc32 emulation (sun4m)."
source_ref: "hw/sparc/sun4m.c:79"
- name: "OpenBIOS Sparc64"
path: "qemu/openbios-sparc64"
sha1: "c6e215fe460629d35688ab8e51faf6f765827cd6"
md5: ""
size: 1593408
required: false
note: "OpenBIOS for Sparc64 (UltraSPARC) emulation."
source_ref: "pc-bios/README"
note: "OpenBIOS for Sparc64 (UltraSPARC) emulation (sun4u)."
source_ref: "hw/sparc64/sun4u.c:67"
- name: "QEMU TCX display"
path: "qemu/QEMU,tcx.bin"
sha1: ""
md5: ""
sha1: "5f1792a73ee47d78b2160191ecb2c92f353f93ad"
size: 1402
required: false
note: "TCX framebuffer FCode driver for Sparc32 OpenBIOS."
source_ref: "pc-bios/meson.build:45"
source_ref: "hw/display/tcx.c:38,827"
- name: "QEMU cgthree display"
path: "qemu/QEMU,cgthree.bin"
sha1: ""
md5: ""
sha1: "619b86fb02faf8f682474be3f0653b58015008ba"
size: 850
required: false
note: "CG3 framebuffer FCode driver for Sparc32 OpenBIOS."
source_ref: "pc-bios/meson.build:46"
source_ref: "hw/display/cg3.c:44,303"
- name: "U-Boot LEON3"
path: "qemu/u-boot.bin"
sha1: ""
required: false
note: "U-Boot for LEON3 SPARC board. Not shipped with QEMU, user-supplied."
source_ref: "hw/sparc/leon3.c:53"
# ========================================================
# ALPHA FIRMWARE
@@ -471,11 +544,10 @@ files:
- name: "Alpha PALcode"
path: "qemu/palcode-clipper"
sha1: "47b0870aaa45a7aa0d48847fd905908fb06f3e9f"
md5: ""
size: 153728
required: false
note: "PALcode firmware for Alpha (Clipper/DP264) machine emulation."
source_ref: "pc-bios/README"
source_ref: "hw/alpha/dp264.c:139"
# ========================================================
# RISC-V FIRMWARE
@@ -483,24 +555,18 @@ files:
- name: "OpenSBI RISC-V 32"
path: "qemu/opensbi-riscv32-generic-fw_dynamic.bin"
sha1: "7a23dfdeef3d78ffc89d86e89fc06a36f1e4386f"
md5: ""
size: 268312
required: false
note: >
OpenSBI (Supervisor Binary Interface) firmware for RISC-V 32-bit.
Required for riscv32-softmmu machine types.
source_ref: "pc-bios/README"
note: "OpenSBI (Supervisor Binary Interface) firmware for RISC-V 32-bit."
source_ref: "hw/riscv/boot.c:92"
- name: "OpenSBI RISC-V 64"
path: "qemu/opensbi-riscv64-generic-fw_dynamic.bin"
sha1: "6883bfd1991c0ef0d67b0967e7dcbd60420dd480"
md5: ""
size: 272504
required: false
note: >
OpenSBI firmware for RISC-V 64-bit.
Required for riscv64-softmmu machine types.
source_ref: "pc-bios/README"
note: "OpenSBI firmware for RISC-V 64-bit."
source_ref: "hw/riscv/boot.c:92"
# ========================================================
# S390X FIRMWARE
@@ -508,20 +574,18 @@ files:
- name: "S390 CCW firmware"
path: "qemu/s390-ccw.img"
sha1: "7b4fa888d32ca8ddbc752f7442e4d055cee1871a"
md5: ""
size: 42608
required: false
note: "Channel Command Word boot firmware for s390x emulation."
source_ref: "pc-bios/meson.build:68"
source_ref: "hw/s390x/ipl.c:149"
- name: "S390 network boot"
path: "qemu/s390-netboot.img"
sha1: "f6cec671408117bd9a31e982682662f27ef4fb2c"
md5: ""
size: 67232
required: false
note: "Network boot firmware for s390x emulation."
source_ref: "pc-bios/meson.build:69"
source_ref: "hw/s390x/ipl.c:497"
# ========================================================
# HP-PA FIRMWARE
@@ -529,20 +593,77 @@ files:
- name: "HP-PA firmware (32-bit)"
path: "qemu/hppa-firmware.img"
sha1: "605c36ede6c120c6cc7efe147a75a3dc4b7e4fb0"
md5: ""
size: 167820
required: false
note: "SeaBIOS-hppa firmware for 32-bit HP-PARISC emulation."
source_ref: "pc-bios/README"
source_ref: "hw/hppa/machine.c:424"
- name: "HP-PA firmware (64-bit)"
path: "qemu/hppa-firmware64.img"
sha1: "b42f6d4ca74073de6c038579b4a9323ad0a6b398"
md5: ""
size: 206024
required: false
note: "SeaBIOS-hppa firmware for 64-bit HP-PARISC emulation."
source_ref: "pc-bios/README"
source_ref: "hw/hppa/machine.c:424"
# ========================================================
# MIPS FIRMWARE (not shipped, user-supplied)
# ========================================================
- name: "MIPS BIOS (big-endian)"
path: "qemu/mips_bios.bin"
sha1: ""
required: false
note: "Default BIOS for big-endian MIPS machines (Malta, MIPSsim, Jazz). Not shipped with QEMU."
source_ref: "hw/mips/malta.c:97"
- name: "MIPS BIOS (little-endian)"
path: "qemu/mipsel_bios.bin"
sha1: ""
required: false
note: "Default BIOS for little-endian MIPS machines (Malta, MIPSsim, Jazz). Not shipped with QEMU."
source_ref: "hw/mips/malta.c:99"
- name: "Loongson3 BIOS"
path: "qemu/bios_loongson3.bin"
sha1: ""
required: false
note: "Default BIOS for Loongson3 virtual MIPS machine. Not shipped with QEMU."
source_ref: "hw/mips/loongson3_virt.c:63"
- name: "PMON Fuloong2e"
path: "qemu/pmon_2e.bin"
sha1: ""
required: false
note: "PMON monitor for Fuloong2e MIPS board. Not shipped with QEMU."
source_ref: "hw/mips/fuloong2e.c:58"
# ========================================================
# M68K FIRMWARE (not shipped, user-supplied)
# ========================================================
- name: "Macintosh ROM"
path: "qemu/MacROM.bin"
sha1: ""
required: false
note: "Apple Macintosh ROM for Quadra 800 emulation. Not shipped with QEMU."
source_ref: "hw/m68k/q800.c:62"
# ========================================================
# ARM FIRMWARE (non-NPCM7xx, not shipped)
# ========================================================
- name: "Canon A1100 ROM"
path: "qemu/canon-a1100-rom1.bin"
sha1: ""
required: false
note: "Canon PowerShot A1100 IS DIGIC camera ROM. Not shipped with QEMU."
source_ref: "hw/arm/digic_boards.c:131"
- name: "NPCM7xx boot ROM"
path: "qemu/npcm7xx_bootrom.bin"
sha1: "22a75d26a0591d2c7763765b6381fa2f73de43e1"
size: 768
required: false
note: "Boot ROM for Nuvoton NPCM7xx BMC (ARM Cortex-A9)."
source_ref: "hw/arm/npcm7xx_boards.c:56"
# ========================================================
# DEVICE TREE BLOBS
@@ -550,50 +671,41 @@ files:
- name: "Bamboo DTB (PPC)"
path: "qemu/bamboo.dtb"
sha1: "ebdf1745479f4ec88459bbd9ef16ee1114018508"
md5: ""
size: 3211
required: false
note: "Device tree blob for PowerPC Bamboo (440EP) board."
source_ref: "pc-bios/meson.build:88"
source_ref: "hw/ppc/ppc440_bamboo.c:38"
- name: "Canyonlands DTB (PPC)"
path: "qemu/canyonlands.dtb"
sha1: "8a2fda0b4f23a92eb44776b5d7ffe951987062da"
md5: ""
size: 9779
required: false
note: "Device tree blob for PowerPC Canyonlands (460EX) board."
source_ref: "pc-bios/meson.build:89"
note: "Device tree blob for PowerPC Canyonlands (460EX) / Sam460ex board."
source_ref: "hw/ppc/sam460ex.c:45"
- name: "Petalogix ML605 DTB (MicroBlaze)"
path: "qemu/petalogix-ml605.dtb"
sha1: "892d265838866869b8a8ef104252ff5b2fda156f"
md5: ""
size: 9882
required: false
note: "Device tree blob for Xilinx Petalogix ML605 MicroBlaze board."
note: "Device tree blob for Xilinx Petalogix ML605 MicroBlaze board. MicroBlaze target not built in libretro core."
source_ref: "pc-bios/meson.build:91"
- name: "Petalogix S3ADSP1800 DTB (MicroBlaze)"
path: "qemu/petalogix-s3adsp1800.dtb"
sha1: "976600e3f89ecc1f3564b7077f53c58e0b565280"
md5: ""
size: 8161
required: false
note: "Device tree blob for Xilinx Petalogix S3ADSP1800 MicroBlaze board."
note: "Device tree blob for Xilinx Petalogix S3ADSP1800 MicroBlaze board. MicroBlaze target not built in libretro core."
source_ref: "pc-bios/meson.build:90"
# ========================================================
# OTHER
# ========================================================
- name: "NPCM7xx boot ROM"
path: "qemu/npcm7xx_bootrom.bin"
sha1: "22a75d26a0591d2c7763765b6381fa2f73de43e1"
md5: ""
size: 768
- name: "Virtex ML507 DTB (PPC)"
path: "qemu/virtex-ml507.dtb"
sha1: ""
required: false
note: "Boot ROM for Nuvoton NPCM7xx BMC (ARM Cortex-A9)."
source_ref: "pc-bios/README"
note: "Device tree blob for Xilinx Virtex ML507 PowerPC board. Not shipped with QEMU."
source_ref: "hw/ppc/virtex_ml507.c:148"
notes:
bios_directory: >
@@ -605,10 +717,12 @@ notes:
Other VGA BIOS variants are loaded depending on the emulated GPU.
PXE/EFI ROMs are only needed for network booting.
multi_arch: >
The libretro build supports 16 target architectures. Non-x86 firmware
The libretro build targets 17 architectures. Non-x86 firmware
is only needed when using .qemu_cmd_line files that invoke a different
qemu-system-* binary (e.g. qemu-system-ppc for MacOS 9).
experimental: >
This core is marked is_experimental=true in its .info file.
Savestates are not supported.
edk2: >
EDK2 UEFI firmware is shipped as bz2-compressed blobs in pc-bios/. These
provide UEFI boot for x86, ARM, and RISC-V machine types. Users specify
them via -bios or pflash in .qemu_cmd_line files.
experimental: "This core is marked is_experimental=true in its .info file."
version: "Based on QEMU 9.0.50 (io12/qemu-libretro)"

View File

@@ -1,7 +1,9 @@
emulator: QUASI88
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/quasi88-libretro"
profiled_date: "2026-03-18"
upstream: "https://www.retropc.net/showzoh/quasi88/"
profiled_date: "2026-03-25"
core_version: "0.6.4"
display_name: "NEC - PC-8000 / PC-8800 series (QUASI88)"
cores:
@@ -9,69 +11,63 @@ cores:
systems:
- pc-8801
# QUASI88 is a NEC PC-8801 emulator. The libretro port includes a pseudo-BIOS
# (pbios_n88, pbios_disk) compiled into the core that provides basic compatibility
# when real BIOS files are missing. With the pseudo-BIOS, many disk-based games
# will boot, but compatibility is lower than with real ROMs.
# QUASI88 by Showzoh Fukunaga, libretro port by Celerizer.
# Includes pseudo-BIOS (pbios_n88, pbios_disk) by cisc compiled into the core.
# With pseudo-BIOS, some disk-based games boot but compatibility is limited.
#
# ROM file search order (libretro.c:444-491):
# ROM search order (libretro.c:444-491):
# 1. <download_dir>/<filename>
# 2. <system_dir>/quasi88/<filename>
# 3. <system_dir>/<filename>
# Each ROM entry has up to 4 alternate filenames tried in order.
#
# ROM loading (libretro.c:550-594):
# N88.ROM and DISK.ROM (SUB_ROM) are the only two checked for failure.
# If missing, the core falls back to the built-in pseudo-BIOS.
# N88.ROM and DISK.ROM have pseudo-BIOS fallback if missing.
# All other ROMs are loaded silently if present, ignored if absent.
#
# The original QUASI88 (memory.c:80-95) uses uppercase-first filenames
# (N88.ROM, N88EXT0.ROM, etc.) while the libretro .info file standardizes
# on lowercase with underscore variants (n88.rom, n88_0.rom, etc.).
# (N88.ROM, N88EXT0.ROM, etc.) while the libretro .info file uses
# lowercase with underscore variants (n88.rom, n88_0.rom, etc.).
# The core tries both naming conventions.
#
# FONT.ROM/FONT2.ROM/FONT3.ROM are not listed in the .info file.
# When missing, the core uses built-in fonts or falls back to kanji ROM glyphs.
# FONT.ROM/FONT2.ROM/FONT3.ROM are not in the .info file.
# When missing, the core uses built-in fonts (font.h) or kanji ROM glyphs.
#
# Upstream supports 2HD disk ROM (8 KB) via memory.c:356-368.
# The libretro port reads only 2 KB (2D type) at libretro.c:552.
notes: |
Files go in <system_dir>/quasi88/ or directly in <system_dir>/.
The pseudo-BIOS built into the core covers N88-BASIC V2 and the disk
subsystem at a basic level. For full compatibility (N-BASIC, V1H/V1S modes,
dictionary lookup, kanji display), real ROM files are needed.
The pseudo-BIOS covers N88-BASIC V2 and the disk subsystem at a basic
level. For full compatibility (N-BASIC, V1H/V1S modes, dictionary lookup,
kanji display), real ROM files are needed.
N88_0.ROM (EXT0) is marked required in the .info file because it contains
the N88-BASIC V2 extension used by most software. EXT1-EXT3 are version-
specific extensions (V1H, V1S, older V2) needed only for specific titles.
The core option "quasi88_basic_mode" selects N88 V2, N88 V1H, N88 V1S,
or N mode. Each mode requires its corresponding ROM to be present.
Core option "quasi88_basic_mode" selects N88 V2, N88 V1H, N88 V1S,
or N mode. Each mode requires its corresponding ROM.
files:
# -- Required for full operation --
- name: n88.rom
path: "quasi88/n88.rom"
size: 32768
required: true
note: "N88-BASIC main ROM (32 KB). Core falls back to pseudo-BIOS if missing."
source_ref: "src/LIBRETRO/libretro.c:550"
hle_fallback: true
note: "N88-BASIC main ROM (32 KB). Falls back to pseudo-BIOS if missing."
source_ref: "src/LIBRETRO/libretro.c:550-551"
aliases: ["N88.ROM"]
- name: n88_0.rom
path: "quasi88/n88_0.rom"
size: 8192
required: true
note: "N88-BASIC V2 extension ROM 0 (8 KB). Needed for most PC-8801 software."
note: "N88-BASIC V2 extension ROM 0 (8 KB). Needed by most software."
source_ref: "src/LIBRETRO/libretro.c:555"
aliases: ["N88_0.ROM", "N88EXT0.ROM", "n88ext0.rom"]
# -- Optional extensions --
- name: n88_1.rom
path: "quasi88/n88_1.rom"
size: 8192
required: false
note: "N88-BASIC V1H extension ROM 1 (8 KB). For V1 High-speed mode software."
note: "N88-BASIC V1H extension ROM 1 (8 KB). For V1 High-speed mode."
source_ref: "src/LIBRETRO/libretro.c:556"
aliases: ["N88_1.ROM", "N88EXT1.ROM", "n88ext1.rom"]
@@ -79,7 +75,7 @@ files:
path: "quasi88/n88_2.rom"
size: 8192
required: false
note: "N88-BASIC V1S extension ROM 2 (8 KB). For V1 Standard mode software."
note: "N88-BASIC V1S extension ROM 2 (8 KB). For V1 Standard mode."
source_ref: "src/LIBRETRO/libretro.c:557"
aliases: ["N88_2.ROM", "N88EXT2.ROM", "n88ext2.rom"]
@@ -87,7 +83,7 @@ files:
path: "quasi88/n88_3.rom"
size: 8192
required: false
note: "N88-BASIC extension ROM 3 (8 KB). Older V2 extension, rarely needed."
note: "N88-BASIC extension ROM 3 (8 KB). Older V2 extension."
source_ref: "src/LIBRETRO/libretro.c:558"
aliases: ["N88_3.ROM", "N88EXT3.ROM", "n88ext3.rom"]
@@ -104,15 +100,15 @@ files:
size: 2048
required: false
hle_fallback: true
note: "Disk subsystem ROM (2 KB, 2D type). Core falls back to pseudo-BIOS if missing. 8 KB variant (2HD type) also accepted."
source_ref: "src/LIBRETRO/libretro.c:552"
note: "Disk subsystem ROM (2 KB, 2D type). Falls back to pseudo-BIOS if missing."
source_ref: "src/LIBRETRO/libretro.c:552-553"
aliases: ["DISK.ROM", "N88SUB.ROM", "n88sub.rom"]
- name: n88knj1.rom
path: "quasi88/n88knj1.rom"
size: 131072
required: false
note: "Kanji ROM level 1 (128 KB). Required for Japanese text display. Also used as font fallback."
note: "Kanji ROM level 1 (128 KB). Required for Japanese text display."
source_ref: "src/LIBRETRO/libretro.c:560"
aliases: ["N88KNJ1.ROM", "KANJI1.ROM", "kanji1.rom"]
@@ -128,18 +124,18 @@ files:
path: "quasi88/n88jisho.rom"
size: 524288
required: false
note: "Dictionary ROM (512 KB). Japanese dictionary lookup, very few titles use it."
note: "Dictionary ROM (512 KB). Japanese dictionary lookup."
source_ref: "src/LIBRETRO/libretro.c:562"
aliases: ["N88JISHO.ROM", "JISYO.ROM", "jisyo.rom"]
# -- Font ROMs (not in .info, core has built-in fallback) --
# Font ROMs (not in .info, core has built-in fallback via font.h)
- name: font.rom
path: "quasi88/font.rom"
size: 4096
size: 2048
required: false
hle_fallback: true
note: "ANK font ROM (4 KB). Falls back to built-in font or kanji ROM glyphs."
note: "ANK font ROM (2 KB). Falls back to built-in font or kanji ROM glyphs."
source_ref: "src/LIBRETRO/libretro.c:566"
aliases: ["FONT.ROM"]
@@ -148,7 +144,7 @@ files:
size: 4096
required: false
hle_fallback: true
note: "Second font ROM (4 KB). Falls back to built-in ANH font."
note: "Second font ROM (up to 4 KB). Falls back to built-in ANH font."
source_ref: "src/LIBRETRO/libretro.c:576"
aliases: ["FONT2.ROM"]
@@ -157,6 +153,6 @@ files:
size: 4096
required: false
hle_fallback: true
note: "Third font ROM (4 KB). Zeroed out if missing."
note: "Third font ROM (up to 4 KB). Zeroed out if missing."
source_ref: "src/LIBRETRO/libretro.c:588"
aliases: ["FONT3.ROM"]

View File

@@ -2,7 +2,8 @@ emulator: QuickNES
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/QuickNES_Core"
profiled_date: "2026-03-21"
upstream: "https://github.com/kode54/QuickNES"
profiled_date: "2026-03-25"
core_version: "1.0-WIP"
display_name: "Nintendo - NES / Famicom (QuickNES)"
cores:
@@ -11,7 +12,7 @@ systems:
- nintendo-nes
notes: |
NES emulator by blargg (Shay Green). No BIOS required.
NES cartridge games are self-contained.
NES emulator by blargg (Shay Green), maintained by kode54.
NES has no BIOS. All palettes compiled in.
files: []

View File

@@ -1,43 +1,28 @@
emulator: RACE (Neo Geo Pocket)
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/RACE"
profiled_date: "2026-03-18"
upstream: "https://github.com/8bitpsp/race"
profiled_date: "2026-03-25"
core_version: "v2.16"
display_name: "SNK - Neo Geo Pocket / Color (RACE)"
cores: [race]
systems: [snk-ngp, snk-ngpc]
notes: |
RACE is a Neo Geo Pocket and Neo Geo Pocket Color emulator, originally
developed for PSP (forked from Akop Karapetyan's port), adapted for
libretro.
RACE is a Neo Geo Pocket and Neo Geo Pocket Color emulator originally by
Judge_ (MHE), ported to GP2X by Flavor, to PSP by Akop Karapetyan, modified
by theelf, then adapted for libretro.
No external BIOS files are required. The core contains dead code in
race-memory.c that would load "NPBIOS.BIN" (64KB, loaded into cpurom
via filestream_open), but it is compiled out with #if 0 and loadBIOS()
unconditionally returns 0. The comment explains: "Using a real bios
file causes nothing but issues" and references Card Fighters' Clash
Test Mode as a known failure.
No external BIOS files are required. The upstream versions (GP2X, PSP) support
optional loading of NPBIOS.BIN, but the libretro port disabled it entirely
with #if 0 in race-memory.c:loadBIOS(). The comment explains: "Using a real
bios file causes nothing but issues."
Instead, the core uses a software HLE approach:
- A built-in koyote_bin memory dump (RAM state from a real console
post-boot) is copied into mainram at startup
- A fake SWI jump table is constructed at cpurom[0xE000] using the
TLCS-900H 0x1A (reg) dummy opcode to trap BIOS calls
- doBios() in tlcs900h.c handles 33 BIOS functions in software:
shutdown, clock speed, RTC, screen mode, font rendering, flash
read/write, communication, and sound control
- Interrupt vectors are set up at cpurom[0xFF00] and interrupt
handler code at cpurom[0xF800]
- CPU RAM defaults (interrupt priorities, timers) are loaded from
the ngpcpuram[256] table
The Z80 sound CPU is emulated in software (cz80 or DrZ80 backend).
Flash memory for game saves is handled internally by flash.c.
The only core option affecting system behavior is ngp_language
(english/japanese), which sets a RAM flag at 0x6F87.
ROM extensions: .ngp, .ngc, .ngpc, .npc
The core uses a software HLE approach: a compiled-in koyote_bin RAM dump
(post-boot console state) is copied into mainram at startup, a fake SWI jump
table is built at cpurom[0xE000], and doBios() in tlcs900h.c handles 33 BIOS
functions in software. The Z80 sound CPU is emulated via cz80 or DrZ80.
files: []
@@ -48,8 +33,9 @@ analysis:
loaded_by: "race-memory.c:loadBIOS()"
status: disabled
source_ref: "race-memory.c:337-361"
upstream_status: optional
upstream_ref: "memory.cpp:346-365 (8bitpsp/race)"
notes: |
loadBIOS() is wrapped in #if 0 and always returns 0.
Even if re-enabled, the realBIOSloaded=1 path has known
compatibility issues (e.g. Puzzle Bobble fails to boot).
The HLE path is the only functional code path.
loadBIOS() is wrapped in #if 0 and always returns 0 in the libretro port.
In upstream (8bitpsp/race, alekmaul/race), the function is live and loads
NPBIOS.BIN optionally, falling back to HLE if not found.

View File

@@ -1,7 +1,8 @@
emulator: Redbook
type: utility
source: "https://github.com/libretro/RetroArch"
profiled_date: "2026-03-18"
core_classification: pure_libretro
source: "https://github.com/libretro/redbook"
profiled_date: "2026-03-25"
core_version: "1.0"
display_name: "Redbook Audio Player"
cores:
@@ -9,10 +10,7 @@ cores:
systems: []
notes: |
Redbook is an audio CD player core for RetroArch. Plays standard
Red Book audio CDs and CD image files (CUE/BIN) containing audio
tracks.
No BIOS or system files required.
Audio CD player core. Plays Red Book audio CDs and CUE/BIN images.
Original libretro creation by Brad Parker, no upstream emulator.
files: []

View File

@@ -1,7 +1,9 @@
emulator: REminiscence
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/REminiscence"
profiled_date: "2026-03-18"
upstream: "https://github.com/cyxx/REminiscence"
profiled_date: "2026-03-25"
core_version: "0.3.6"
display_name: "Flashback (REminiscence)"
cores:
@@ -10,23 +12,22 @@ systems:
- flashback
notes: |
REminiscence is a re-implementation of the Flashback (Delphine Software, 1992) game engine,
ported to libretro. Version 0.3.6. It is not a general-purpose emulator; it only runs the
original Flashback game data files.
Game engine re-implementation of Flashback (Delphine Software, 1992) by Gregory Montoir,
ported to libretro by Stuart Carnie. Version 0.3.6 (upstream is at 0.5.5).
The core sets need_fullpath = true and valid_extensions = "map" (libretro.cpp:67-68).
The core sets need_fullpath = true and valid_extensions = "map" (libretro.cpp:66).
Content loading (retro_load_game) extracts the parent directory from the provided .MAP
file path and uses it as the data root via FileSystem (libretro.cpp:194-196).
Version detection (libretro.cpp:126-149) probes for these files in order:
Version detection (libretro.cpp:125-148) probes for these files in order:
DEMO_UK.ABA -> DOS Demo
INTRO.SEQ -> DOS CD
LEVEL1.MAP -> DOS
LEVEL1.LEV -> Amiga
DEMO.LEV -> Amiga Demo
Only kResourceTypeDOS is accepted by retro_load_game (line 199); Amiga data is rejected.
Only kResourceTypeDOS is accepted (line 199); Amiga data is rejected.
Language detection (libretro.cpp:151-175) probes for:
Language detection (libretro.cpp:150-174) probes for:
ENGCINE.TXT -> English
FR_CINE.TXT -> French
GERCINE.TXT -> German
@@ -35,27 +36,38 @@ notes: |
FRCINE.TXT -> French (Amiga)
Falls back to English if none found.
All game data files are loaded from the content directory at runtime via FileSystem
(fs.cpp), which recursively scans the directory and matches filenames case-insensitively
(strcasecmp at fs.cpp:52). The resource system (resource.cpp) loads files by constructing
names like "LEVEL1.MAP", "GLOBAL.ICN", "PERSO.SPR", "FB_TXT.FNT", etc.
All game data files are loaded from the content directory via FileSystem (fs.cpp),
which scans the directory and matches filenames case-insensitively (strcasecmp at
fs.cpp:52). The resource system (resource.cpp) loads files by constructing names
like "LEVEL1.MAP", "GLOBAL.ICN", "PERSO.SPR", "FB_TXT.FNT", etc.
The core never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. All data files must live
alongside the loaded .MAP content file (or in subdirectories of its parent). There are
no BIOS or firmware files; the required files are the original Flashback game data.
alongside the loaded .MAP content file. No BIOS or firmware files; the required files
are the original Flashback DOS game data.
Music is loaded from .mod files or Amiga-format module files (mod_player.cpp, staticres.cpp
lines 3198-3225). These are optional; the core has a built-in SFX player for in-game
action music (sfx_player.cpp with embedded music data in staticres.cpp).
Music loaded from .mod files (mod_player.cpp, staticres.cpp:3198-3225). Optional;
the core has a built-in SFX player for in-game action music (sfx_player.cpp with
embedded music data in staticres.cpp).
VOICE.VCE from the SegaCD version can optionally be placed in the data directory for
in-game voice playback (resource.cpp:910).
VOICE.VCE from the SegaCD version can be placed in the data directory for in-game
voice playback (resource.cpp:900-941). Optional.
INTRO.SEQ and other .SEQ files from the DOS CD version provide FMV cutscenes
(seq_player.cpp). Without them, the core falls back to polygon-based cutscenes.
SEQ cutscene playback is disabled in the libretro build: g_options is zero-initialized
(game.cpp:30) and rs.cfg is never parsed, so use_seq_cutscenes defaults to false.
The core always uses polygon-based cutscenes (cutscene.cpp).
Upstream (0.5.5) additionally supports Amiga, Macintosh, PC98 data, MIDI music,
OGG playback, SEQ cutscenes, and widescreen modes. None of these are in the
libretro port.
files: []
exclusion_note: >
Game engine core. All data files (game data, music, voice) are loaded from the content
directory alongside the .MAP file via FileSystem. The core never accesses the system
directory (RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY is never called). The .info declares
firmware_count=0, consistent with the code.
analysis:
content_type: game_data
content_extensions: ["map"]
@@ -77,7 +89,7 @@ analysis:
- "VOICE.VCE (SegaCD voice data)"
dos_cd:
additional:
- "INTRO.SEQ, CREDITS.SEQ, and other .SEQ cutscene videos"
- "INTRO.SEQ, CREDITS.SEQ, and other .SEQ cutscene videos (SEQ playback disabled in libretro build)"
demo:
archive: "DEMO_UK.ABA (contains all demo data in a single archive)"
detection_order:

View File

@@ -1,7 +1,9 @@
emulator: RemoteJoy
type: utility
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-remotejoy"
profiled_date: "2026-03-18"
upstream: "https://github.com/akiraink/RemoteJoyLite"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "PSP RemotePlay (RemoteJoy)"
cores:
@@ -9,11 +11,9 @@ cores:
systems: []
notes: |
RemoteJoy is a PSP remote display utility for libretro. It receives
video output from a PSP running the RemoteJoy plugin over USB or
network, displaying it within RetroArch.
No BIOS or system files required. Requires a PSP with the RemoteJoy
plugin installed on the device side.
USB streaming receiver for PSP. Connects via libusb to a PSP running the
RemoteJoy plugin (Sony VID 0x054C, PIDs 0x01C9/0x02D2) and displays
video frames at 480x272. No file I/O. Protocol reimplemented from
RemoteJoyLite Win32 client constants, not a port.
files: []

View File

@@ -1,18 +1,23 @@
emulator: Retro8
type: game
type: libretro
core_classification: game_engine
source: "https://github.com/libretro/retro8"
profiled_date: "2026-03-18"
core_version: "Git"
upstream: "https://github.com/Jakz/retro8"
profiled_date: "2026-03-25"
core_version: "0.1b"
display_name: "PICO-8 (Retro8)"
cores:
- retro8
systems: []
systems:
- pico8
notes: |
Retro8 is a PICO-8 compatible runtime for libretro. It can run .p8
and .p8.png cartridge files created for the PICO-8 fantasy console.
No BIOS, firmware, or system files required. The virtual machine and
Lua interpreter are self-contained in the core binary.
Open-source PICO-8 fantasy console reimplementation by Jacopo Santoni.
Runs .p8 and .p8.png cartridge files. The PICO-8 font is compiled into the
binary as a byte array (gen/pico_font.h, loaded in gfx.cpp:9). The Lua API
shim is compiled as a string constant (gen/lua_api.h, loaded in
lua_bridge.cpp:1126). The core never calls GET_SYSTEM_DIRECTORY and performs
no file I/O from the system directory.
exclusion_note: "all engine resources (font, Lua API, color palette, audio synth) compiled into the binary"
files: []

View File

@@ -1,60 +1,54 @@
emulator: RetroDream
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/redream-next"
profiled_date: "2026-03-18"
upstream: "https://github.com/inolen/redream"
profiled_date: "2026-03-25"
core_version: "Git"
display_name: "Sega - Dreamcast (RetroDream)"
cores:
- retrodream
systems:
- sega-dreamcast
notes: |
Fork of the final open-source redream release (pre-relicense). Experimental
core with no HLE BIOS -- real BIOS files are required to boot games.
Flycast is recommended over this core for actual gameplay.
Fork of the last GPLv3 release of redream (inolen) before it went closed-source.
The core has HLE bootstrap -- when boot.bin is missing, bios_invalid_instr()
traps at PC=0x0 and calls bios_boot(), which loads IP.BIN and 1ST_READ.BIN
directly from disc, sets up syscall vectors, and starts execution at 0xac008300.
The libretro core sets appdir to the RetroArch system directory
(src/host/retro_host.c:216-217). boot.bin and flash.bin are loaded
directly from appdir (src/guest/rom/boot.c:17, src/guest/rom/flash.c:30).
The fork sets appdir to the RetroArch system directory root
(retro_host.c:216-217), unlike the upstream which appends /dc
(upstream retro_host.c:196-198). The .info still declares dc/ prefix paths
matching the upstream, not this fork.
The .info file declares paths as dc/boot.bin and dc/flash.bin, which means
RetroArch resolves them under {system_dir}/dc/.
boot.bin is validated against four known MD5 hashes (boot.c:25-30).
Validation failure logs a warning but the core continues via HLE.
boot.bin is validated against four known MD5 hashes at load time
(src/guest/rom/boot.c:25-30). If validation fails, the core logs a warning
but still attempts to run via HLE syscall hooks (bios.c:440-447).
flash.bin is read/write -- the core saves modified flash data back to disk
on shutdown (src/guest/rom/flash.c:197-199).
Boot ROM size: 2 MB (0x200000). Flash ROM size: 128 KB (0x20000).
flash.bin is read/write. If missing, bios_validate_flash() resets all
partitions to defaults. Saved back to disk on shutdown (flash.c:197-199).
files:
- name: "boot.bin"
system: sega-dreamcast
path: "dc/boot.bin"
required: true
size: 2097152 # 2 MB (0x200000)
path: "boot.bin"
required: false
hle_fallback: true
size: 2097152
validation: [size, md5]
md5:
- e10c53c2f8b90bab96ead2d368858623 # original US/EU BIOS
- a5c6a00818f97c5e3e91569ee22416dc # Chinese BIOS
- 37c921eb47532cae8fb70e5d987ce91c # Japanese BIOS
- f2cd29d09f3e29984bcea22ab2e006fe # revised BIOS without MIL-CD
note: "Dreamcast boot ROM. Validated against known MD5 hashes at load."
- a5c6a00818f97c5e3e91569ee22416dc
- 37c921eb47532cae8fb70e5d987ce91c
- f2cd29d09f3e29984bcea22ab2e006fe
- e10c53c2f8b90bab96ead2d368858623
note: "Dreamcast boot ROM. Four known variants accepted."
source_ref: "src/guest/rom/boot.c:12-80"
- name: "flash.bin"
system: sega-dreamcast
path: "dc/flash.bin"
required: true
size: 131072 # 128 KB (0x20000)
md5:
- 0a93f7940c455905bea6e392dfde92a4
note: "Dreamcast flash memory (date, time, language). Written back on shutdown."
source_ref: "src/guest/rom/flash.c:25-35"
platform_details:
dreamcast:
bios_size: 2097152 # 2 MB
flash_size: 131072 # 128 KB
hle_available: false
source_ref: "src/guest/rom/boot.c, src/guest/rom/flash.c"
path: "flash.bin"
required: false
size: 131072
validation: [size]
note: "Dreamcast flash memory. Written back on shutdown."
source_ref: "src/guest/rom/flash.c:25-71"

View File

@@ -1,7 +1,9 @@
emulator: ROM Cleaner
type: utility
source: "https://github.com/libretro/libretro-database"
profiled_date: "2026-03-18"
core_classification: pure_libretro
source: "https://github.com/JesseTG/rom-cleaner"
upstream: "https://github.com/JesseTG/rom-cleaner"
profiled_date: "2026-03-25"
core_version: "1.0.0"
display_name: "ROM Cleaner"
cores:
@@ -9,10 +11,8 @@ cores:
systems: []
notes: |
ROM Cleaner is a utility core for identifying and cleaning ROM
headers. Uses the libretro database for ROM identification via
CRC32/SHA1 matching.
No BIOS or system files required.
Utility core that simulates blowing dust off a cartridge via microphone
input. All visual and audio assets are compiled into the binary.
No external files required.
files: []

View File

@@ -1,21 +1,24 @@
emulator: Rustation
type: libretro
core_classification: official_port
source: "https://github.com/libretro/rustation-libretro"
profiled_date: "2026-03-18"
upstream: "https://github.com/simias/rustation"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "Sony - PlayStation (Rustation)"
cores: [rustation]
systems: [sony-playstation]
bios_size: 524288 # 512 KB, enforced before SHA-256 check
verification: sha256
notes: >
No filename requirement: the core scans every file in the system directory,
filters by exact 512 KB size, then validates the full binary against an internal
SHA-256 database (lifted from Mednafen). Region must match the loaded disc
(Japan, NorthAmerica, Europe). Known-bad dumps are rejected even if hash matches.
"Boot to BIOS menu" option allows booting without a disc.
No HLE fallback: a real, database-matched BIOS is mandatory.
Database contains 24 entries (22 good, 2 known_bad) covering BIOS versions 1.0 through 4.5.
Scans every file in the system directory, filters by exact 512 KB size,
then validates the full binary against an internal SHA-256 database
(lifted from Mednafen). Region must match the loaded disc. Known-bad
dumps are rejected. No filename requirement. No HLE fallback.
"Boot to BIOS menu" core option allows booting without a disc.
Database contains 24 entries (22 good, 2 known-bad rejected)
covering BIOS versions 1.0 through 4.5.
.info declares firmware_count=0; incorrect.
Project abandoned, superseded by rustation-ng.
files:
# -- Region: Japan --
@@ -24,10 +27,11 @@ files:
description: "SCPH-5500 (v3.0 J)"
region: "NTSC-J"
required: true
size: 524288
validation: [size, sha256]
md5: "8dd7d5296a650fac7319bce665a6a53c"
sha256: "9c0421858e217805f4abe18698afea8d5aa36ff0727eb8484944e00eb5e7eadb"
source_ref: "rustation/src/bios/db.rs:226-232 (v3.0 Japan)"
notes: "Any filename works. Core matches by SHA-256, not name. v3.0 is the standard JP BIOS."
source_ref: "rustation/src/bios/db.rs:158-167 (v3.0 Japan)"
# -- Region: North America --
@@ -35,10 +39,11 @@ files:
description: "SCPH-5501 (v3.0 A)"
region: "NTSC-U"
required: true
size: 524288
validation: [size, sha256]
md5: "490f666e1afb15b7362b406ed1cea246"
sha256: "11052b6499e466bbf0a709b1f9cb6834a9418e66680387912451e971cf8a1fef"
source_ref: "rustation/src/bios/db.rs:234-244 (v3.0 NorthAmerica)"
notes: "Any filename works. Only NA BIOS with animation_jump_hook and debug UART patch support."
source_ref: "rustation/src/bios/db.rs:168-177 (v3.0 NorthAmerica)"
# -- Region: Europe --
@@ -46,149 +51,185 @@ files:
description: "SCPH-5502 (v3.0 E)"
region: "PAL"
required: true
size: 524288
validation: [size, sha256]
md5: "32736f17079d0b2b7024407c39bd3050"
sha256: "1faaa18fa820a0225e488d9f086296b8e6c46df739666093987ff7d8fd352c09"
source_ref: "rustation/src/bios/db.rs:246-256 (v3.0 Europe)"
notes: "Any filename works. Core matches by SHA-256, not name."
source_ref: "rustation/src/bios/db.rs:178-187 (v3.0 Europe)"
# -- Additional accepted BIOS versions (all validated by SHA-256 scan) --
# The core accepts any of the 22 good entries below. Only one per region is needed.
# Listed here for completeness; scph5500/5501/5502 above are the standard choices.
# -- Alternatives: any of the 22 good entries is accepted. One per region needed. --
# Japan alternatives
- name: "scph1000.bin"
description: "SCPH-1000 (v1.0 J)"
region: "NTSC-J"
required: false
size: 524288
validation: [size, sha256]
sha256: "cfc1fc38eb442f6f80781452119e931bcae28100c1c97e7e6c5f2725bbb0f8bb"
source_ref: "rustation/src/bios/db.rs:77-88 (v1.0 Japan)"
source_ref: "rustation/src/bios/db.rs:38-47 (v1.0 Japan)"
- name: "scph_v11j.bin"
description: "v1.1 J"
region: "NTSC-J"
required: false
size: 524288
validation: [size, sha256]
sha256: "5eb3aee495937558312b83b54323d76a4a015190decd4051214f1b6df06ac34b"
source_ref: "rustation/src/bios/db.rs:89-100 (v1.1 Japan)"
source_ref: "rustation/src/bios/db.rs:48-57 (v1.1 Japan)"
- name: "scph3000.bin"
description: "SCPH-3000 (v2.1 J)"
region: "NTSC-J"
required: false
size: 524288
validation: [size, sha256]
sha256: "6f71ca1e716da761dc53187bd39e00c213f566e55090708fd3e2b4b425c8c989"
source_ref: "rustation/src/bios/db.rs:126-136 (v2.1 Japan)"
source_ref: "rustation/src/bios/db.rs:78-87 (v2.1 Japan)"
- name: "scph3500.bin"
description: "SCPH-3500 (v2.2 J)"
region: "NTSC-J"
required: false
size: 524288
validation: [size, sha256]
sha256: "0c8359870cbac0ea091f1c87f188cd332dcc709753b91cafd9fd44a4a6188197"
source_ref: "rustation/src/bios/db.rs:162-172 (v2.2 Japan, good)"
source_ref: "rustation/src/bios/db.rs:108-117 (v2.2 Japan)"
notes: "A known-bad v2.2 J dump also exists in the DB but is rejected."
- name: "scph5000.bin"
description: "v2.2 J (alt)"
region: "NTSC-J"
required: false
size: 524288
validation: [size, sha256]
sha256: "4018749b3698b8694387beebcbabfb48470513066840f9441459ee4c9f0f39bc"
source_ref: "rustation/src/bios/db.rs:209-220 (v2.2 Japan, alt)"
source_ref: "rustation/src/bios/db.rs:148-157 (v2.2 Japan alt)"
- name: "scph7000.bin"
description: "SCPH-7000 (v4.0 J)"
region: "NTSC-J"
required: false
size: 524288
validation: [size, sha256]
sha256: "e900504d1755f021f861b82c8258c5e6658c7b592f800cccd91f5d32ea380d28"
source_ref: "rustation/src/bios/db.rs:269-281 (v4.0 Japan)"
notes: "Shares animation_jump_hook patch with NA v3.0."
source_ref: "rustation/src/bios/db.rs:198-207 (v4.0 Japan)"
- name: "scph7500.bin"
description: "SCPH-7500 (v4.1 J)"
region: "NTSC-J"
required: false
size: 524288
validation: [size, sha256]
sha256: "b3aa63cf30c81e0a40641740f4a43e25fda0b21b792fa9aaef60ce1675761479"
source_ref: "rustation/src/bios/db.rs:283-293 (v4.1 Japan)"
source_ref: "rustation/src/bios/db.rs:208-217 (v4.1 Japan)"
- name: "scph9000.bin"
description: "SCPH-9000 (v4.3 J)"
region: "NTSC-J"
required: false
size: 524288
validation: [size, sha256]
sha256: "b29b4b5fcddef369bd6640acacda0865e0366fcf7ea54e40b2f1a8178004f89a"
source_ref: "rustation/src/bios/db.rs:318-329 (v4.3 Japan)"
source_ref: "rustation/src/bios/db.rs:238-247 (v4.3 Japan)"
# North America alternatives
- name: "scph1001.bin"
description: "SCPH-1001 (v2.0 A)"
region: "NTSC-U"
required: false
size: 524288
validation: [size, sha256]
sha256: "42e4124be7623e2e28b1db0d8d426539646faee49d74b71166d8ba5bd7c472ed"
source_ref: "rustation/src/bios/db.rs:101-112 (v2.0 NorthAmerica)"
source_ref: "rustation/src/bios/db.rs:58-67 (v2.0 NorthAmerica)"
- name: "scph5001.bin"
description: "SCPH-5001 (v2.1 A)"
region: "NTSC-U"
required: false
size: 524288
validation: [size, sha256]
sha256: "6ad5521d105a6b86741f1af8da2e6ea1c732d34459940618c70305a105e8ec10"
source_ref: "rustation/src/bios/db.rs:138-148 (v2.1 NorthAmerica)"
source_ref: "rustation/src/bios/db.rs:88-97 (v2.1 NorthAmerica)"
- name: "scph_v22a.bin"
description: "v2.2 A"
region: "NTSC-U"
required: false
size: 524288
validation: [size, sha256]
sha256: "71af94d1e47a68c11e8fdb9f8368040601514a42a5a399cda48c7d3bff1e99d3"
source_ref: "rustation/src/bios/db.rs:186-196 (v2.2 NorthAmerica)"
source_ref: "rustation/src/bios/db.rs:128-137 (v2.2 NorthAmerica)"
- name: "scph7001.bin"
description: "SCPH-7001 (v4.1 A)"
region: "NTSC-U"
required: false
size: 524288
validation: [size, sha256]
sha256: "39dcc1a0717036c9b6ac52fefd1ee7a57d3808e8cfbc755879fa685a0a738278"
source_ref: "rustation/src/bios/db.rs:294-305 (v4.1 NorthAmerica)"
source_ref: "rustation/src/bios/db.rs:218-227 (v4.1 NorthAmerica)"
- name: "scph101.bin"
description: "SCPH-101 (v4.5 A)"
region: "NTSC-U"
required: false
size: 524288
validation: [size, sha256]
sha256: "aca9cbfa974b933646baad6556a867eca9b81ce65d8af343a7843f7775b9ffc8"
source_ref: "rustation/src/bios/db.rs:342-353 (v4.5 NorthAmerica)"
source_ref: "rustation/src/bios/db.rs:258-267 (v4.5 NorthAmerica)"
# Europe alternatives
- name: "scph1002.bin"
description: "SCPH-1002 (v2.0 E)"
region: "PAL"
required: false
size: 524288
validation: [size, sha256]
sha256: "0af2be3468d30b6018b3c3b0d98b8b64347e255e16d874d55f0363648973dbf0"
source_ref: "rustation/src/bios/db.rs:113-124 (v2.0 Europe)"
source_ref: "rustation/src/bios/db.rs:68-77 (v2.0 Europe)"
- name: "scph_v21e.bin"
description: "v2.1 E"
region: "PAL"
required: false
size: 524288
validation: [size, sha256]
sha256: "1efb0cfc5db8a8751a884c5312e9c6265ca1bc580dc0c2663eb2dea3bde9fcf7"
source_ref: "rustation/src/bios/db.rs:149-160 (v2.1 Europe)"
source_ref: "rustation/src/bios/db.rs:98-107 (v2.1 Europe)"
- name: "scph_v22e.bin"
description: "v2.2 E"
region: "PAL"
required: false
size: 524288
validation: [size, sha256]
sha256: "3d06d2c469313c2a2128d24fe2e0c71ff99bc2032be89a829a62337187f500b7"
source_ref: "rustation/src/bios/db.rs:198-208 (v2.2 Europe)"
source_ref: "rustation/src/bios/db.rs:138-147 (v2.2 Europe)"
- name: "scph7002.bin"
description: "SCPH-7002 (v4.1 E)"
region: "PAL"
required: false
size: 524288
validation: [size, sha256]
sha256: "5e84a94818cf5282f4217591fefd88be36b9b174b3cc7cb0bcd75199beb450f1"
source_ref: "rustation/src/bios/db.rs:306-317 (v4.1 Europe)"
source_ref: "rustation/src/bios/db.rs:228-237 (v4.1 Europe)"
- name: "scph102.bin"
description: "SCPH-102 (v4.4 E)"
region: "PAL"
required: false
size: 524288
validation: [size, sha256]
sha256: "5c0166da24e27deaa82246de8ff0108267fe4bb59f6df0fdec50e05e62448ca4"
source_ref: "rustation/src/bios/db.rs:330-341 (v4.4 Europe)"
source_ref: "rustation/src/bios/db.rs:248-257 (v4.4 Europe)"
- name: "scph102_v45.bin"
description: "v4.5 E"
region: "PAL"
required: false
size: 524288
validation: [size, sha256]
sha256: "42244b0c650821519751b7e77ad1d3222a0125e75586df2b4e84ba693b9809dc"
source_ref: "rustation/src/bios/db.rs:354-365 (v4.5 Europe)"
source_ref: "rustation/src/bios/db.rs:268-277 (v4.5 Europe)"

View File

@@ -1,21 +1,23 @@
emulator: RVVM
type: libretro
core_classification: official_port
source: "https://github.com/LekKit/RVVM"
profiled_date: "2026-03-18"
upstream: "https://github.com/LekKit/RVVM"
profiled_date: "2026-03-25"
core_version: "0.6-git"
display_name: "RVVM"
cores: [rvvm]
systems: [riscv]
# RVVM is a RISC-V virtual machine / emulator. The libretro core loads a
# ".rvvm" config file that specifies bootrom, kernel, nvme drives, memory,
# CPU mode (rv32/rv64), cmdline, and framebuffer resolution.
# RVVM emulates a RISC-V machine (rv64imafdcb or rv32ima). The libretro core
# loads a .rvvm plain-text config file specifying bootrom, kernel, nvme drives,
# memory, CPU mode, cmdline, and framebuffer resolution.
#
# The core itself does NOT bundle any firmware. Users must supply:
# 1. A bootrom (M-mode firmware): typically OpenSBI fw_payload.bin or fw_jump.bin
# 2. Optionally a kernel payload (S-mode): Linux Image, U-Boot, etc.
# 3. Optionally a custom DTB (the core auto-generates one if not provided)
# The core does NOT use the RetroArch system directory. All firmware paths are
# specified in the .rvvm config file and resolved relative to its directory.
# The core chdir()s to the .rvvm file's parent before initializing the VM.
#
# The .rvvm file is a plain-text key=value config parsed by retro_load_game():
# The .rvvm config format (parsed by retro_load_game):
# bootrom=/path/to/fw_payload.bin
# kernel=/path/to/Image
# nvme=/path/to/rootfs.img
@@ -24,80 +26,54 @@ systems: [riscv]
# rv64
# cmdline=root=/dev/nvme0n1 rootflags=discard rw console=tty0
#
# Paths in the .rvvm file are resolved relative to the .rvvm file's directory
# (the core chdir()s there before vm_init). The bootrom is mandatory - the core
# shows "RVVM: No bootrom" if missing.
# The libretro binding uses an older RVVM API (rvvm_load_bootrom, 4-param
# rvvm_create_machine) that has been renamed in the current upstream
# (rvvm_load_firmware, 3-param rvvm_create_machine). The binding may not
# compile against RVVM HEAD without updates.
# Source references:
# libretro binding: src/bindings/libretro/libretro.c
# firmware loading: src/rvvm.c:rvvm_load_firmware()
# kernel loading: src/rvvm.c:rvvm_load_kernel() (offset 0x200000 rv64, 0x400000 rv32)
# FDT generation: src/rvvm.c:rvvm_init_fdt() (auto-generated if not provided)
# CLI help: src/main.c:rvvm_print_help()
# config parsing: libretro.c:332-421 (retro_load_game)
# VM init + loading: libretro.c:288-330 (vm_init)
# firmware loading: rvvm.c:621-628 (rvvm_load_firmware)
# kernel loading: rvvm.c:630-638 (rvvm_load_kernel)
# FDT loading: rvvm.c:641-648 (rvvm_load_fdt, standalone only)
# standalone CLI: main.c:213-282 (rvvm_cli_configure)
files:
# -- OpenSBI firmware (required) --
# M-mode firmware loaded at RESET_PC (0x80000000). This is the first code
# executed by the virtual machine. The standard choice is OpenSBI with
# U-Boot as payload (fw_payload.bin) or OpenSBI standalone (fw_jump.bin).
# The core calls rvvm_load_bootrom() which maps to rvvm_load_firmware().
- name: "fw_payload.bin"
path: "rvvm/fw_payload.bin"
required: true
source_ref: "libretro.c:309-315, rvvm.c:621-628"
source_ref: "libretro.c:309-314, rvvm.c:621-628"
note: >
OpenSBI firmware with U-Boot payload. This is the M-mode bootrom
loaded at physical address 0x80000000. Without this file, the VM
cannot start. Common builds: opensbi fw_payload (includes U-Boot),
or fw_jump.bin (jumps to kernel directly). The file is referenced
by the bootrom= key in the .rvvm config file.
# -- Kernel image (optional) --
# S-mode kernel loaded at offset 0x200000 (rv64) or 0x400000 (rv32) from
# RAM base. Used with fw_jump.bin to boot Linux directly without U-Boot.
M-mode firmware loaded at 0x80000000. Typically OpenSBI with U-Boot
payload (fw_payload.bin) or standalone (fw_jump.bin). Referenced by
the bootrom= key in the .rvvm config.
- name: "Image"
path: "rvvm/Image"
required: false
source_ref: "libretro.c:316-318, rvvm.c:630-638"
note: >
Linux kernel image or other S-mode payload. Loaded at a fixed offset
from RAM base (0x200000 for rv64, 0x400000 for rv32). Only needed
when using fw_jump.bin as bootrom. Referenced by the kernel= key
in the .rvvm config file.
# -- Device Tree Blob (optional) --
# Custom FDT passed to the guest. The core auto-generates a complete DTB
# with cpu topology, memory map, and all attached devices if not provided.
S-mode kernel payload loaded at offset 0x200000 (rv64) or 0x400000
(rv32) from RAM base. Only needed with fw_jump.bin as bootrom.
Referenced by the kernel= key in the .rvvm config.
- name: "machine.dtb"
path: "rvvm/machine.dtb"
required: false
source_ref: "rvvm.c:641-648, main.c:230"
mode: standalone
source_ref: "main.c:230, rvvm.c:641-648"
note: >
Custom Flattened Device Tree. The core generates a DTB automatically
based on the machine configuration (cpus, memory, devices), so this
is only needed for special setups. The FDT address is passed to the
firmware in register a1 at boot.
Custom Flattened Device Tree. The core auto-generates a DTB based on
machine configuration. The libretro binding does not parse a dtb= key
in the .rvvm config, so this is only usable via the standalone CLI
(-dtb flag).
notes:
emulation_target: >
RVVM emulates a RISC-V machine with rv64imafdcb (or rv32ima) ISA,
SiFive PLIC interrupt controller, NVMe storage, RTL8169 networking,
framebuffer display, HID keyboard/mouse, UART, Goldfish RTC, and
PCI bus. It includes a tracing JIT with x86_64/ARM64/RISC-V backends.
firmware_sources: >
OpenSBI builds: https://github.com/riscv-software-src/opensbi/releases
Pre-built fw_payload.bin (OpenSBI + U-Boot) for RVVM:
https://github.com/LekKit/RVVM/wiki/Running
config_format: >
The .rvvm file is a plain-text key=value config. Supported keys:
bootrom, kernel, nvme (up to 4), mem (MB), smp, cmdline, rv64/rv32.
Default: rv64, 256 MB RAM, 1 core, 640x480 framebuffer.
libretro_info: >
Core name: rvvm_libretro. Extension: .rvvm. Experimental: yes.
No save states, no cheats, needs_fullpath=true.
The core does not use the RetroArch system directory for firmware -
all paths are specified in the .rvvm config file relative to its
own directory.
OpenSBI: https://github.com/riscv-software-src/opensbi/releases.
Pre-built images for RVVM: https://github.com/LekKit/RVVM/wiki/Running
info_firmware_count: >
.info declares 0 firmware. Correct: the core loads firmware via
user-specified paths in the .rvvm config, not from system_dir.

View File

@@ -1,226 +1,179 @@
emulator: SAME CDi
type: libretro
cores: [same_cdi]
core_classification: community_fork
source: "https://github.com/libretro/same_cdi"
profiled_date: "2026-03-18"
upstream: "https://github.com/mamedev/mame"
profiled_date: "2026-03-25"
core_version: "Git"
display_name: "Philips - CDi (SAME CDi)"
cores: [same_cdi]
systems:
- cdi
notes: |
SAME CDi is a Single Arcade Machine Emulator fork of MAME libretro, stripped
down to just the Philips CD-i driver. The core hardcodes "cdimono1" as the
forced system (retro_init.cpp:86) and searches for MAME ROM ZIPs in:
forced system (retro_init.cpp:86,454) and searches for MAME ROM ZIPs in:
<system_dir>/same_cdi/bios/
The ROM path (-rp) is built at retro_init.cpp:534 as:
<game_path>;<system_dir>/same_cdi/bios/
MAME expects each romset as a ZIP containing the individual ROM files listed
below. The ZIP filenames (cdimono1.zip, cdimono2.zip, cdibios.zip) match
the MAME driver names. Only cdimono1.zip is required for consumer CD-i games;
cdimono2.zip and cdibios.zip are optional (Mono-II and Quizard arcade).
MAME expects each romset as a ZIP containing the individual ROM files.
The ZIP filenames match the MAME driver names. Only cdimono1.zip is required
for consumer CD-i games; other ZIPs are for alternate hardware models or
Quizard arcade (unreachable without boot_from_cli core option).
cdi2015 is an older MAME 2015-based CD-i core with the same BIOS layout.
The driver includes 5 system ROM sets (cdimono1, cdi910, cdimono2, cdi490a,
cdibios) plus Quizard arcade game ROM sets (clones of cdibios with i8751
protection MCU dumps). Upstream MAME has additional ROM sets not present
in this fork (gpi1200, Italian Quizard variants, cdimono2 alternate BIOS).
ROM definitions: src/mame/drivers/cdi.cpp lines 574-650.
System forced: src/osd/libretro/libretro-internal/retro_init.cpp:86.
BIOS path: src/osd/libretro/libretro-internal/retro_init.cpp:534.
Firmware list: same_cdi_libretro.info firmware0-2.
ROM definitions: src/mame/drivers/cdi.cpp:574-640.
Quizard game ROMs: src/mame/drivers/cdi.cpp:662-820.
System forced: retro_init.cpp:86,454,525.
BIOS path: retro_init.cpp:534.
files:
# =====================================================
# cdimono1.zip - Philips CD-i Mono-I (PAL) - REQUIRED
# Contains main CPU BIOS + servo/slave MCU dumps
# =====================================================
# Main CPU BIOS (one of three, selected via MAME BIOS switch)
- name: "cdi200.rom"
zip: "cdimono1.zip"
- name: cdimono1.zip
category: bios_zip
system: cdi
region: [north-america]
required: true
size: 524288 # 0x80000
note: "Forced system. Main CPU BIOS (3 region variants via MAME BIOS switch) + servo/slave MCU dumps."
source_ref: "src/mame/drivers/cdi.cpp:574-589"
contents:
- name: cdi200.rom
description: Magnavox CD-i 200 BIOS (default, US)
size: 524288
crc32: "40c4e6b9"
sha1: "d961de803c89b3d1902d656ceb9ce7c02dccb40a"
note: "Magnavox CD-i 200 BIOS. Default BIOS for cdimono1."
source_ref: "src/mame/drivers/cdi.cpp:577"
- name: "cdi220b.rom"
zip: "cdimono1.zip"
system: cdi
region: [europe]
required: true
size: 524288 # 0x80000
- name: cdi220b.rom
description: Philips CD-i 220 F2 BIOS (alternate, PAL)
size: 524288
crc32: "279683ca"
sha1: "53360a1f21ddac952e95306ced64186a3fc0b93e"
note: "Philips CD-i 220 F2 BIOS. Alternate BIOS for cdimono1."
source_ref: "src/mame/drivers/cdi.cpp:579"
- name: "cdi220.rom"
zip: "cdimono1.zip"
system: cdi
region: [europe]
required: false
size: 524288 # 0x80000
- name: cdi220.rom
description: Philips CD-i 220 BIOS (non-working, does not boot)
size: 524288
crc32: "584c0af8"
sha1: "5d757ab46b8c8fc36361555d978d7af768342d47"
note: "Philips CD-i 220 BIOS (alternate, does not boot). Marked non-working."
source_ref: "src/mame/drivers/cdi.cpp:581"
# Servo MCU (MC68HC705C8A) - shared with cdi910 dump, BAD_DUMP
- name: "zx405037p__cdi_servo_2.1__b43t__llek9215.mc68hc705c8a_withtestrom.7201"
zip: "cdimono1.zip"
system: cdi
required: true
size: 8192 # 0x2000
description: Servo MCU 2.1 MC68HC705C8A (BAD_DUMP, from cdi910)
size: 8192
crc32: "7a3af407"
sha1: "fdf8d78d6a0df4a56b5b963d72eabd39fcec163f"
note: "Servo MCU 2.1, taken from cdi910 (BAD_DUMP, no Mono-I specific dump)."
source_ref: "src/mame/drivers/cdi.cpp:584"
# Slave MCU (MC68HC705C8A) - shared with cdi910 dump, BAD_DUMP
- name: "zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206"
zip: "cdimono1.zip"
system: cdi
required: true
size: 8192 # 0x2000
description: Slave MCU 2.0 MC68HC705C8A (BAD_DUMP, from cdi910)
size: 8192
crc32: "688cda63"
sha1: "56d0acd7caad51c7de703247cd6d842b36173079"
note: "Slave MCU 2.0, taken from cdi910 (BAD_DUMP, no Mono-I specific dump)."
source_ref: "src/mame/drivers/cdi.cpp:587"
# =====================================================
# cdimono2.zip - Philips CD-i Mono-II (NTSC) - OPTIONAL
# MACHINE_NOT_WORKING in MAME
# =====================================================
- name: "philips__cdi-220_ph3_r1.2__mb834200b-15__02f_aa__9402_z04.tc574200-le._1.7211"
zip: "cdimono2.zip"
- name: cdimono2.zip
category: bios_zip
system: cdi
required: false
size: 524288 # 0x80000
note: "CD-i Mono-II (NTSC). MACHINE_NOT_WORKING. Listed in .info as optional."
source_ref: "src/mame/drivers/cdi.cpp:609-618"
contents:
- name: "philips__cdi-220_ph3_r1.2__mb834200b-15__02f_aa__9402_z04.tc574200-le._1.7211"
description: Mono-II main CPU BIOS, Philips CDI-220 PH3 R1.2
size: 524288
crc32: "17d723e7"
sha1: "6c317a82e35d60ca5e7a74fc99f665055693169d"
note: "Mono-II main CPU BIOS. Philips CDI-220 PH3 R1.2."
source_ref: "src/mame/drivers/cdi.cpp:623"
- name: "zc405351p__servo_cdi_4.1__0d67p__lluk9404.mc68hc705c8a.7490"
zip: "cdimono2.zip"
system: cdi
required: false
size: 8192 # 0x2000
description: Mono-II servo MCU 4.1
size: 8192
crc32: "2bc8e4e9"
sha1: "8cd052b532fc052d6b0077261c12f800e8655bb1"
note: "Mono-II servo MCU 4.1."
source_ref: "src/mame/drivers/cdi.cpp:626"
- name: "zc405352p__slave_cdi_4.1__0d67p__lltr9403.mc68hc705c8a.7206"
zip: "cdimono2.zip"
system: cdi
required: false
size: 8192 # 0x2000
description: Mono-II slave MCU 4.1
size: 8192
crc32: "5b19da07"
sha1: "cf02d84977050c71e87a38f1249e83c43a93949b"
note: "Mono-II slave MCU 4.1."
source_ref: "src/mame/drivers/cdi.cpp:629"
# =====================================================
# cdibios.zip - CD-i BIOS for Quizard arcade - OPTIONAL
# Subset of cdimono1 ROMs + slave MCU, used by Quizard games
# =====================================================
# cdibios reuses cdi200.rom and cdi220b.rom (same hashes as cdimono1)
# plus the slave MCU. Listed here for completeness of the ZIP contents.
- name: "cdi200.rom"
zip: "cdibios.zip"
- name: cdibios.zip
category: bios_zip
system: cdi
required: false
size: 524288 # 0x80000
note: "CD-i BIOS for Quizard arcade. MACHINE_IS_BIOS_ROOT. Subset of cdimono1 + slave MCU."
source_ref: "src/mame/drivers/cdi.cpp:630-640"
contents:
- name: cdi200.rom
description: Magnavox CD-i 200 BIOS (same as cdimono1)
size: 524288
crc32: "40c4e6b9"
sha1: "d961de803c89b3d1902d656ceb9ce7c02dccb40a"
note: "Magnavox CD-i 200 BIOS (same as cdimono1). For Quizard arcade."
source_ref: "src/mame/drivers/cdi.cpp:639"
- name: "cdi220b.rom"
zip: "cdibios.zip"
system: cdi
required: false
size: 524288 # 0x80000
- name: cdi220b.rom
description: Philips CD-i 220 F2 BIOS (same as cdimono1)
size: 524288
crc32: "279683ca"
sha1: "53360a1f21ddac952e95306ced64186a3fc0b93e"
note: "Philips CD-i 220 F2 BIOS (same as cdimono1). For Quizard arcade."
source_ref: "src/mame/drivers/cdi.cpp:641"
- name: "zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206"
zip: "cdibios.zip"
system: cdi
required: false
size: 8192 # 0x2000
description: Slave MCU 2.0 (BAD_DUMP, same as cdimono1)
size: 8192
crc32: "688cda63"
sha1: "56d0acd7caad51c7de703247cd6d842b36173079"
note: "Slave MCU 2.0 (BAD_DUMP, same as cdimono1). For Quizard arcade."
source_ref: "src/mame/drivers/cdi.cpp:645"
# =====================================================
# Additional MAME romsets (not in libretro .info firmware list)
# These are part of the MAME driver but not declared as
# required firmware by the libretro core.
# =====================================================
# cdi910 - CD-i 910-17P Mini-MMC (PAL) - MACHINE_NOT_WORKING
- name: "philips__cd-i_2.1__mb834200b-15__26b_aa__9224_z01.tc574200.7211"
zip: "cdi910.zip"
- name: cdi910.zip
category: bios_zip
system: cdi
required: false
size: 524288 # 0x80000
note: "CD-i 910-17P Mini-MMC (PAL). MACHINE_NOT_WORKING. Not in .info firmware list."
source_ref: "src/mame/drivers/cdi.cpp:591-607"
contents:
- name: "philips__cd-i_2.1__mb834200b-15__26b_aa__9224_z01.tc574200.7211"
description: CD-i 910-17P Mini-MMC BIOS (default)
size: 524288
crc32: "4ae3bee3"
sha1: "9729b4ee3ce0c17172d062339c47b1ab822b222b"
note: "CD-i 910-17P Mini-MMC BIOS. Not listed in libretro firmware."
source_ref: "src/mame/drivers/cdi.cpp:594"
- name: "cdi910.rom"
zip: "cdi910.zip"
system: cdi
required: false
size: 524288 # 0x80000
- name: cdi910.rom
description: CD-i 910 alternate BIOS
size: 524288
crc32: "2f3048d2"
sha1: "11c4c3e602060518b52e77156345fa01f619e793"
note: "CD-i 910 alternate BIOS. Not listed in libretro firmware."
source_ref: "src/mame/drivers/cdi.cpp:596"
- name: "zx405037p__cdi_servo_2.1__b43t__llek9215.mc68hc705c8a_withtestrom.7201"
description: Servo MCU 2.1 (same ROM as cdimono1, not BAD_DUMP here)
size: 8192
crc32: "7a3af407"
sha1: "fdf8d78d6a0df4a56b5b963d72eabd39fcec163f"
- name: "zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206"
description: Slave MCU 2.0 (same ROM as cdimono1, not BAD_DUMP here)
size: 8192
crc32: "688cda63"
sha1: "56d0acd7caad51c7de703247cd6d842b36173079"
- name: "ti_portugal_206xf__tibpal20l8-15cnt__m7205n.7205.bin"
description: PAL chip dump
size: 324
crc32: "dd167e0d"
sha1: "2ba82a4619d7a0f19e62e02a2841afd4d45d56ba"
- name: "ti_portugal_774_206xf__tibpal16l8-10cn_m7204n.7204.bin"
description: PAL chip dump
size: 260
crc32: "04e6bd37"
sha1: "153d1a977291bedb7420484a9f889325dbd3628e"
# cdi490a - CD-i 490 - MACHINE_NOT_WORKING
- name: "cdi490a.rom"
zip: "cdi490a.zip"
- name: cdi490a.zip
category: bios_zip
system: cdi
required: false
size: 524288 # 0x80000
note: "CD-i 490. MACHINE_NOT_WORKING. Not in .info firmware list."
source_ref: "src/mame/drivers/cdi.cpp:620-628"
contents:
- name: cdi490a.rom
description: CD-i 490 main CPU BIOS
size: 524288
crc32: "e2f200f6"
sha1: "c9bf3c4c7e4fe5cbec3fe3fc993c77a4522ca547"
note: "CD-i 490 BIOS. Not listed in libretro firmware."
source_ref: "src/mame/drivers/cdi.cpp:633"
- name: "impega.rom"
zip: "cdi490a.zip"
system: cdi
required: false
size: 262144 # 0x40000
- name: impega.rom
description: MPEG audio decoder ROM
size: 262144
crc32: "84d6f6aa"
sha1: "02526482a0851ea2a7b582d8afaa8ef14a8bd914"
note: "CD-i 490 MPEG audio decoder ROM."
source_ref: "src/mame/drivers/cdi.cpp:636"
- name: "vmpega.rom"
zip: "cdi490a.zip"
system: cdi
required: false
size: 262144 # 0x40000
- name: vmpega.rom
description: MPEG video decoder ROM
size: 262144
crc32: "db264e8b"
sha1: "be407fbc102f1731a0862554855e963e5a47c17b"
note: "CD-i 490 MPEG video decoder ROM."
source_ref: "src/mame/drivers/cdi.cpp:637"
platform_details:
cdi:
@@ -232,4 +185,4 @@ platform_details:
rom_path_flag: "-rp"
rom_search_path: "<game_path>;<system_dir>/same_cdi/bios/"
supported_extensions: ["chd", "iso", "cue"]
source_ref: "retro_init.cpp:86,534 same_cdi_libretro.info"
source_ref: "retro_init.cpp:86,454,525,534"

View File

@@ -1,8 +1,10 @@
emulator: SameBoy
type: libretro
core_classification: official_port
source: "https://github.com/libretro/SameBoy"
profiled_date: "2026-03-18"
core_version: "0.14.7"
upstream: "https://github.com/LIJI32/SameBoy"
profiled_date: "2026-03-25"
core_version: "0.15.4"
display_name: "Nintendo - Game Boy / Color (SameBoy)"
cores:
- sameboy
@@ -13,128 +15,90 @@ systems:
notes: |
SameBoy is a high-accuracy Game Boy, Game Boy Color and Super Game Boy
emulator written by Lior Halphon (LIJI32).
emulator by LIJI32 (official_port: same author maintains upstream and
libretro fork).
All boot ROMs are optional. SameBoy ships its own open-source boot ROM
replacements compiled from BootROMs/*.asm and embedded directly into
the libretro core binary (extern arrays dmg_boot, cgb_boot, agb_boot,
sgb_boot, sgb2_boot in libretro.c:129-130). These built-in boot ROMs
are SameBoy-authored replacements, not Nintendo originals.
All boot ROMs are optional. SameBoy compiles open-source boot ROM
replacements from BootROMs/*.asm and embeds them into the libretro
binary (extern arrays dmg_boot, cgb_boot, agb_boot, sgb_boot,
sgb2_boot in libretro.c:129-130). These are SameBoy-authored
replacements, not Nintendo originals.
The libretro port (libretro.c boot_rom_load(), line 513) tries to load
an external boot ROM from the system directory first. The filename is
constructed as "{model}_boot.bin" where model is one of: dmg0, dmg,
mgb, sgb, sgb2, cgb0, cgb, agb. If the file is missing or unreadable,
the embedded boot ROM is used as fallback.
The libretro port (boot_rom_load, libretro.c:512-588) tries to load
an external boot ROM from the system directory first. Filename is
constructed as "{model}_boot.bin". If missing, the embedded boot ROM
is used as fallback.
Boot ROM type selection depends on the emulated model configured via
the sameboy_model core option (request_boot_rom in Core/gb.c:1588):
Boot ROM selection depends on the sameboy_model core option
(request_boot_rom in Core/gb.c:1587-1625):
DMG_B -> GB_BOOT_ROM_DMG -> dmg_boot.bin
MGB -> GB_BOOT_ROM_MGB -> mgb_boot.bin
SGB/SGB_NTSC -> GB_BOOT_ROM_SGB -> sgb_boot.bin
SGB_NTSC/PAL -> GB_BOOT_ROM_SGB -> sgb_boot.bin
SGB2 -> GB_BOOT_ROM_SGB2 -> sgb2_boot.bin
CGB_0 -> GB_BOOT_ROM_CGB_0 -> cgb0_boot.bin
CGB_A..CGB_E -> GB_BOOT_ROM_CGB -> cgb_boot.bin
AGB_A (GBA) -> GB_BOOT_ROM_AGB -> agb_boot.bin
CGB_A..E -> GB_BOOT_ROM_CGB -> cgb_boot.bin
AGB_A/GBP_A -> GB_BOOT_ROM_AGB -> agb_boot.bin
Built-in fallback mapping (some models share a boot ROM):
DMG_0 and MGB reuse dmg_boot (not yet separately implemented)
CGB_0 reuses cgb_boot (not yet separately implemented)
.info declares firmware_count=2 (dmg, cgb only). Actual reachable
files in the libretro port are 5 (adds sgb, sgb2, agb).
The boot ROM buffer is 0x900 (2304) bytes. DMG/MGB/SGB/SGB2 boot ROMs
are 256 bytes (mapped at 0x0000-0x00FF). CGB/AGB boot ROMs are 2304
bytes (mapped at 0x0000-0x00FF and 0x0200-0x08FF).
Unreachable boot ROMs in the libretro port (array entries exist in
boot_rom_load but no model option triggers them):
- dmg0_boot.bin: GB_MODEL_DMG_0 commented out (Core/gb.h:100)
- mgb_boot.bin: GB_MODEL_MGB active but not exposed by core options
- cgb0_boot.bin: GB_MODEL_CGB_0 active but not exposed by core options
Upstream standalone (v1.0.3) supports these plus cgbE_boot.bin and
agb0_boot.bin (10 boot ROM types total).
SameDuck (MegaDuck emulator) is a separate project, not part of this
core.
No validation performed on loaded boot ROMs. GB_load_boot_rom_from_buffer
(Core/gb.c:266-273) does a plain memcpy capped at 0x900 bytes.
files:
# --- DMG boot ROM (optional, built-in fallback) ---
- name: "dmg_boot.bin"
system: nintendo-gb
description: "Original Game Boy (DMG) boot ROM"
description: "Game Boy (DMG) boot ROM"
required: false
hle_fallback: true
size: 256
source_ref: "libretro.c:519,530,556 (boot_rom_load)"
notes: "Also used as fallback for DMG_0 and MGB models when dedicated boot ROMs are absent."
source_ref: "libretro.c:519,530,556 (boot_rom_load); Core/gb.c:1594 (request_boot_rom)"
# --- MGB boot ROM (optional, built-in fallback) ---
- name: "mgb_boot.bin"
system: nintendo-gb
description: "Game Boy Pocket (MGB) boot ROM"
required: false
hle_fallback: true
size: 256
source_ref: "libretro.c:520,531,556"
notes: "Built-in fallback reuses dmg_boot (mgb not separately implemented yet)."
# --- SGB boot ROM (optional, built-in fallback) ---
- name: "sgb_boot.bin"
system: nintendo-sgb
description: "Super Game Boy (SGB) boot ROM"
required: false
hle_fallback: true
size: 256
source_ref: "libretro.c:521,532,556"
notes: "Used for SGB and SGB_NTSC models. Also loaded temporarily when borrowing SGB border for non-SGB games."
source_ref: "libretro.c:521,532,556; Core/gb.c:1600-1604"
notes: "Used for SGB_NTSC, SGB_PAL models. Also loaded when borrowing SGB border (Core/gb.c:264)."
# --- SGB2 boot ROM (optional, built-in fallback) ---
- name: "sgb2_boot.bin"
system: nintendo-sgb
description: "Super Game Boy 2 (SGB2) boot ROM"
required: false
hle_fallback: true
size: 256
source_ref: "libretro.c:522,533,556"
notes: "Separate from sgb_boot.bin, unlike some other cores that merge SGB/SGB2."
source_ref: "libretro.c:522,533,556; Core/gb.c:1607"
# --- CGB boot ROM (optional, built-in fallback) ---
- name: "cgb_boot.bin"
system: nintendo-gbc
description: "Game Boy Color (CGB) boot ROM"
required: false
hle_fallback: true
size: 2304
source_ref: "libretro.c:524,535,556"
notes: "Also used as fallback for CGB_0 model (not separately implemented yet)."
source_ref: "libretro.c:524,535,556; Core/gb.c:1613-1618"
notes: "Used for CGB revisions A through E in the libretro port."
# --- CGB0 boot ROM (optional, built-in fallback) ---
- name: "cgb0_boot.bin"
system: nintendo-gbc
description: "Game Boy Color early revision (CGB-0) boot ROM"
required: false
hle_fallback: true
size: 2304
source_ref: "libretro.c:523,534,556"
notes: "Built-in fallback reuses cgb_boot (cgb0 not separately implemented yet)."
# --- AGB boot ROM (optional, built-in fallback) ---
- name: "agb_boot.bin"
system: nintendo-gbc
description: "Game Boy Advance in GBC mode (AGB) boot ROM"
required: false
hle_fallback: true
size: 2304
source_ref: "libretro.c:525,536,556"
notes: "Used when emulating a GBA running GB/GBC software. Enables GBA-enhanced palettes in compatible GBC games."
# --- DMG0 boot ROM (optional, built-in fallback) ---
- name: "dmg0_boot.bin"
system: nintendo-gb
description: "Original Game Boy early revision (DMG-0) boot ROM"
required: false
hle_fallback: true
size: 256
source_ref: "SDL/main.c:640 (standalone), libretro.c:518,529"
notes: "Only referenced in standalone SDL build filename list. Built-in fallback reuses dmg_boot."
source_ref: "libretro.c:525,536,556; Core/gb.c:1621"
notes: "Enables GBA-enhanced palettes in compatible GBC games."
builtin_boot_roms:
description: |
SameBoy includes open-source boot ROM replacements compiled from
assembly source in BootROMs/ directory. These are NOT Nintendo
originals. They reproduce the boot animation and hardware
initialization but are clean-room implementations.
Open-source boot ROM replacements compiled from BootROMs/ assembly.
Not Nintendo originals.
sources:
- "BootROMs/dmg_boot.asm -> dmg_boot (256 bytes)"
- "BootROMs/sgb_boot.asm -> sgb_boot (256 bytes)"
@@ -157,4 +121,3 @@ builtin_boot_roms:
agb_boot.bin:
md5: "7e095aa30941da3086fa0e9221335370"
sha1: "3b6231bdf840fb889f402d0ae89f21adb077323a"
notes: "These are SameBoy's own boot ROMs, not Nintendo originals. The hashes above identify the built-in versions."

View File

@@ -1,8 +1,25 @@
emulator: "sameduck"
type: alias
alias_of: "sameboy"
profiled_date: "2026-03-18"
core_version: "git"
emulator: sameduck
type: libretro
core_classification: official_port
source: "https://github.com/LIJI32/SameBoy"
upstream: "https://github.com/LIJI32/SameBoy"
profiled_date: "2026-03-25"
core_version: "0.13.6"
display_name: "Mega Duck / Cougar Boy (SameDuck)"
note: "This core uses the same BIOS/firmware as sameboy. See emulators/sameboy.yml for details."
cores:
- sameduck
systems:
- mega-duck
notes: |
SameDuck is the Mega Duck / Cougar Boy branch of SameBoy by LIJI32.
Built from the SameDuck branch of the upstream repo (no separate
libretro fork). The Mega Duck hardware has no boot ROM. All boot ROM
loading functions are stubs in this branch (GB_load_boot_rom returns 0,
request_boot_rom is empty, no BootROMs/ directory exists).
The libretro port loads only game ROMs via GB_load_rom(). No
boot_rom_load_callback is set. retro_system_directory is stored but
never used for file loading.
files: []

View File

@@ -1,10 +1,13 @@
emulator: ScummVM
type: libretro
core_classification: game_engine
source: "https://github.com/libretro/scummvm"
upstream: "https://github.com/scummvm/scummvm"
logo: "https://raw.githubusercontent.com/scummvm/scummvm/master/icons/scummvm.svg"
profiled_date: "2026-03-18"
profiled_date: "2026-03-25"
core_version: "2.8.0git"
display_name: "ScummVM"
cores: [scummvm]
systems: [scummvm]
# ScummVM is a multi-engine point-and-click adventure game interpreter.

View File

@@ -1,7 +1,9 @@
emulator: SDLPAL
type: libretro
core_classification: official_port
source: "https://github.com/sdlpal/sdlpal"
profiled_date: "2026-03-18"
upstream: "https://github.com/sdlpal/sdlpal"
profiled_date: "2026-03-25"
core_version: "v2.0.1"
display_name: "SDLPAL"
cores:
@@ -9,175 +11,171 @@ cores:
systems:
- sdlpal
# SDLPAL is an open-source reimplementation of the classic Chinese RPG
# "Xian Jian Qi Xia Zhuan" (Sword and Fairy / PAL) by SoftStar Inc.
#
# It does NOT include any game data. The original game files are proprietary
# and must be obtained separately (e.g. from the Steam release).
#
# The core accepts a .cfg file pointing to the game directory (needs_fullpath).
# When launched without a game (supports_no_game = true), it looks for data
# in <system_dir>/sdlpal/ (libretro.c:201-204).
#
# Data file search (util.c:728-781, UTIL_CheckResourceFiles):
# Required: 13 common .mkf archives + message file (word.dat or m.msg)
# Optional: sound files (voc.mkf, sounds.mkf), music files (midi.mkf, mus.mkf)
#
# Additional optional files loaded at runtime:
# desc.dat - object descriptions (global.c:204, DOS version only)
# mus.mkf - MIDI music archive (audio.c:305)
#
# All files are game data, not BIOS or firmware. No system files are needed
# beyond the original game resource files.
notes: |
No BIOS or firmware required. SDLPAL is a game engine that needs the
original PAL (Sword and Fairy) game data files to run.
Game engine reimplementing the classic Chinese RPG PAL (Sword and Fairy)
by SoftStar Inc. No BIOS or firmware required. All files are proprietary
game data from the original 1995 DOS or 1998 Win95 release.
Place game files in <system_dir>/sdlpal/ or point a .cfg file at the
game directory. The game is available on Steam (app 1546570).
Place game files in <system_dir>/sdlpal/ or point a .cfg at the game
directory. The game is available on Steam (app 1546570). Auto-detects
DOS vs Win95 game data.
The core supports both DOS (original 1995) and Win95 (1998 remake)
versions of the game data. It auto-detects which version is present.
The libretro port disables MP3, OGG, OPUS, native MIDI, and CD audio
backends (pal_config.h). Only RIX (mus.mkf) and software MIDI synthesis
via Timidity/TinySoundFont (midi.mkf + user-provided soundfont) are
available for music.
files:
# ================================================================
# Required game data archives (proprietary, not distributable)
# util.c:733-737 - UTIL_CheckResourceFiles common_files[]
# Required game data archives
# util.c:733-737 UTIL_CheckResourceFiles common_files[]
# global.c:175-182 PAL_InitGlobals
# ================================================================
- name: "abc.mkf"
category: game_data
path: "sdlpal/abc.mkf"
required: true
source_ref: "util.c:734, battle.c:879, global.c:55"
note: >
Animation/battle character data archive. Required for battle scenes
and character animations.
source_ref: "util.c:734, global.c:55, battle.c:879"
note: "Animation and battle character data archive."
- name: "ball.mkf"
category: game_data
path: "sdlpal/ball.mkf"
required: true
source_ref: "util.c:734, global.c:177"
note: >
Ball/magic effect graphics archive.
note: "Magic effect graphics archive."
- name: "data.mkf"
category: game_data
path: "sdlpal/data.mkf"
required: true
source_ref: "util.c:734, global.c:178"
note: >
Core game data archive containing scripts, events, and game logic.
note: "Core game data archive (scripts, events, game logic)."
- name: "f.mkf"
category: game_data
path: "sdlpal/f.mkf"
required: true
source_ref: "util.c:734, global.c:179"
note: >
Face/portrait graphics archive for character dialog.
note: "Face/portrait graphics archive."
- name: "fbp.mkf"
category: game_data
path: "sdlpal/fbp.mkf"
required: true
source_ref: "util.c:735, global.c:175"
note: >
Full-screen background picture archive (cutscenes, title screen).
note: "Full-screen background picture archive (cutscenes, title)."
- name: "fire.mkf"
category: game_data
path: "sdlpal/fire.mkf"
required: true
source_ref: "util.c:735, global.c:180"
note: >
Fire/spell effect graphics archive.
note: "Fire/spell effect graphics archive."
- name: "gop.mkf"
category: game_data
path: "sdlpal/gop.mkf"
required: true
source_ref: "util.c:735, res.c:234"
note: >
GOP (game object palette/graphics) archive.
note: "Game object palette/graphics archive."
- name: "map.mkf"
category: game_data
path: "sdlpal/map.mkf"
required: true
source_ref: "util.c:735, res.c:233, global.c:55"
note: >
Map tile and layout data archive for all game locations.
source_ref: "util.c:735, global.c:55, res.c:233"
note: "Map tile and layout data archive."
- name: "mgo.mkf"
category: game_data
path: "sdlpal/mgo.mkf"
required: true
source_ref: "util.c:736, global.c:176"
note: >
Map graphic object (sprite overlay) archive.
note: "Map graphic object (sprite overlay) archive."
- name: "pat.mkf"
category: game_data
path: "sdlpal/pat.mkf"
required: true
source_ref: "util.c:736, palette.c:53"
note: >
Palette data archive for color management.
note: "Palette data archive."
- name: "rgm.mkf"
category: game_data
path: "sdlpal/rgm.mkf"
required: true
source_ref: "util.c:736, global.c:181"
note: >
RGM graphics archive.
note: "RGM graphics archive."
- name: "rng.mkf"
category: game_data
path: "sdlpal/rng.mkf"
required: true
source_ref: "util.c:736, rngplay.c:402"
note: >
RNG animation/cutscene sequence archive.
note: "RNG animation/cutscene sequence archive."
- name: "sss.mkf"
category: game_data
path: "sdlpal/sss.mkf"
required: true
source_ref: "util.c:737, global.c:182"
note: >
SSS data archive.
note: "SSS data archive (message offsets in chunk 3)."
# ================================================================
# Message/text data (one of these is required)
# util.c:739-741 - msg_files[]
# Message/text data (both required in default mode)
# text.c:718-719 PAL_InitText
# ================================================================
- name: "m.msg"
category: game_data
path: "sdlpal/m.msg"
required: true
source_ref: "util.c:740, text.c:718"
note: "Message text data (dialog, story). Opened via UTIL_OpenRequiredFile in default mode."
- name: "word.dat"
category: game_data
path: "sdlpal/word.dat"
required: true
source_ref: "util.c:741, text.c:719, global.c:197"
note: >
Game text/dialog data file (DOS version). Contains all in-game text
strings. Either word.dat or m.msg is needed depending on game version.
note: "Word data (menu items, status labels, item/spell names)."
- name: "m.msg"
# ================================================================
# Object descriptions (DOS version only)
# global.c:204 PAL_LoadObjectDesc -> ui.c:864
# ================================================================
- name: "desc.dat"
category: game_data
path: "sdlpal/m.msg"
path: "sdlpal/desc.dat"
required: false
source_ref: "util.c:740"
note: >
Alternative message file format. Used by some game distributions
instead of word.dat. The core checks for a configured message file
first, then falls back to word.dat.
source_ref: "global.c:204, ui.c:864"
note: "Object description strings. DOS version only (skipped for Win95). Returns NULL if absent."
# ================================================================
# Embedded font files (optional, DOS game data)
# font.c:102-197 PAL_LoadEmbeddedFont
# ================================================================
- name: "wor16.asc"
category: game_data
path: "sdlpal/wor16.asc"
required: false
source_ref: "font.c:114"
note: "Chinese character code mapping for embedded font. Silently skipped if absent."
- name: "wor16.fon"
category: game_data
path: "sdlpal/wor16.fon"
required: false
source_ref: "font.c:172"
note: "Chinese character bitmap font data. Used with wor16.asc for DOS font rendering."
# ================================================================
# Sound effect files (optional, at least one recommended)
# util.c:743 - sound_files[]
# sound.c:962-975 SOUND_Init
# ================================================================
- name: "voc.mkf"
@@ -185,37 +183,78 @@ files:
path: "sdlpal/voc.mkf"
required: false
source_ref: "util.c:743, sound.c:969"
note: >
VOC format sound effects archive (DOS version). One of voc.mkf or
sounds.mkf is needed for sound effects.
note: "VOC format sound effects archive (DOS version). Preferred for DOS game data."
- name: "sounds.mkf"
category: game_data
path: "sdlpal/sounds.mkf"
required: false
source_ref: "util.c:743, sound.c:964"
note: >
WAV format sound effects archive (Win95 version). Alternative to
voc.mkf with higher quality audio.
note: "WAV format sound effects archive (Win95 version). Preferred for Win95 game data."
# ================================================================
# Music files (optional, at least one recommended)
# util.c:744 - music_files[]
# audio.c:302-305 AUDIO_OpenDevice
# ================================================================
- name: "midi.mkf"
category: game_data
path: "sdlpal/midi.mkf"
required: false
source_ref: "util.c:744, midi.c:78, midi_tsf.c:68"
note: >
MIDI music archive. Used when Music type is set to MIDI.
- name: "mus.mkf"
category: game_data
path: "sdlpal/mus.mkf"
required: false
source_ref: "util.c:744, audio.c:305"
note: >
RIX/OPL music archive. Default music source for the game. Contains
FM synthesizer music data played through OPL emulation.
note: "RIX/OPL music archive. Default music source, played through OPL emulation."
- name: "midi.mkf"
category: game_data
path: "sdlpal/midi.mkf"
required: false
source_ref: "util.c:744, midi.c:78, midi_tsf.c:68, midi_timidity.c:130"
note: "MIDI music archive. Used when Music=MIDI is configured in sdlpal.cfg."
# ================================================================
# AVI cutscene videos (Win95 version only, optional)
# aviplay.c:641-772 PAL_PlayAVI
# Guarded by fEnableAviPlay && fIsWIN95 (global.c:192)
# ================================================================
- name: "1.avi"
category: game_data
path: "sdlpal/1.avi"
required: false
source_ref: "main.c:197"
note: "Trademark screen video (Win95 only). Falls back to RNG animation if absent."
- name: "2.avi"
category: game_data
path: "sdlpal/2.avi"
required: false
source_ref: "main.c:237"
note: "Splash screen video (Win95 only). Falls back to sprite animation if absent."
- name: "3.avi"
category: game_data
path: "sdlpal/3.avi"
required: false
source_ref: "uigame.c:162"
note: "In-game event video (Win95 only)."
- name: "4.avi"
category: game_data
path: "sdlpal/4.avi"
required: false
source_ref: "ending.c:418"
note: "Ending sequence video part 1 (Win95 only)."
- name: "5.avi"
category: game_data
path: "sdlpal/5.avi"
required: false
source_ref: "ending.c:420"
note: "Ending sequence video part 2 (Win95 only)."
- name: "6.avi"
category: game_data
path: "sdlpal/6.avi"
required: false
source_ref: "ending.c:485"
note: "Ending sequence video part 3 (Win95 only)."

View File

@@ -1,7 +1,9 @@
emulator: SimCoupe
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/libretro-simcoupe"
profiled_date: "2026-03-18"
upstream: "https://github.com/simonowen/simcoupe"
profiled_date: "2026-03-25"
core_version: "Git"
display_name: "SAM Coupe (SimCoupe)"
cores:
@@ -10,15 +12,15 @@ systems:
- sam-coupe
notes: |
SimCoupe is an emulator for the SAM Coupe, a British 8-bit home
computer by Miles Gordon Technology (1989). The SAM Coupe was
designed as a successor to the ZX Spectrum with a Z80B CPU at 6 MHz
and custom ASIC graphics.
SAM Coupe emulator by Simon Owen. Port based on old pre-1.0 SimCoupe
codebase. Experimental, incomplete (no sound, partial input).
No external BIOS or ROM files required. The SAM Coupe ROM is built
into the emulator. The libretro wrapper does not request any files
from the system directory.
SAM Coupe ROM v3.0 and SAMDOS 2.0 embedded in the binary (SAMROM.h,
SAMDOS.h). HDBOOT patches for Atom Lite also embedded (HDBOOT.h).
The libretro wrapper never accesses the system directory.
Loads .dsk, .sad, .mgt, .sbt, and .cpm disk images as content.
Upstream v1.2.x loads external resource files (samcoupe.rom,
sp0256-al2.bin for VoiceBox speech synthesis). The libretro port
lacks VoiceBox/SP0256 support (commented out in IO.cpp).
files: []

View File

@@ -1,8 +1,70 @@
emulator: "skyemu"
type: alias
alias_of: "mgba"
profiled_date: "2026-03-18"
core_version: "Git"
emulator: skyemu
type: standalone + libretro
core_classification: official_port
source: https://github.com/skylersaleh/SkyEmu/blob/v5/src/libretro.c
upstream: https://github.com/skylersaleh/SkyEmu
profiled_date: "2026-03-25"
core_version: "v5"
display_name: "Nintendo - Game Boy/GBA/NDS (SkyEmu)"
note: "This core uses the same BIOS/firmware as mgba. See emulators/mgba.yml for details."
files: []
cores:
- skyemu
systems:
- nintendo-gb
- nintendo-gbc
- nintendo-gba
- nintendo-ds
notes: |
Multi-system emulator by skylersaleh. Libretro core built from the upstream repo.
All BIOS optional; bundles Cult-of-GBA BIOS (GBA), DraStic free BIOS (NDS ARM7/ARM9),
stub firmware (NDS), and HLE boot skip (GB/GBC). BIOS loading controlled by core options
(default: on). Files loaded from system_dir/SkyEmu/ subdirectory.
Standalone validates exact BIOS file size; libretro only rejects files exceeding buffer.
.info missing gb_bios.bin (gb.h:1603).
files:
- name: cgb_boot.bin
description: GBC boot ROM
path: SkyEmu/cgb_boot.bin
required: false
hle_fallback: true
aliases: [gbc_bios.bin, cgb0_boot.bin, cgb_agb_boot.bin]
source_ref: "src/gb.h:1593-1596, 1605-1608"
- name: dmg_rom.bin
description: DMG boot ROM
path: SkyEmu/dmg_rom.bin
required: false
hle_fallback: true
aliases: [dmg0_rom.bin, gb_bios.bin]
source_ref: "src/gb.h:1601-1603"
- name: gba_bios.bin
description: GBA BIOS
path: SkyEmu/gba_bios.bin
required: false
hle_fallback: true
source_ref: "src/gba.h:1726-1730"
- name: nds7.bin
description: NDS ARM7 BIOS
path: SkyEmu/nds7.bin
required: false
hle_fallback: true
source_ref: "src/nds.h:3088-3089"
- name: nds9.bin
description: NDS ARM9 BIOS
path: SkyEmu/nds9.bin
required: false
hle_fallback: true
source_ref: "src/nds.h:3091-3092"
- name: firmware.bin
description: NDS firmware
path: SkyEmu/firmware.bin
required: false
hle_fallback: true
source_ref: "src/nds.h:3094, 3200-3268"

View File

@@ -1,7 +1,9 @@
emulator: SMS Plus GX
type: libretro
type: standalone + libretro
core_classification: enhanced_fork
source: "https://github.com/libretro/smsplus-gx"
profiled_date: "2026-03-18"
upstream: "https://github.com/ekeeke/smsplus-gx"
profiled_date: "2026-03-25"
core_version: "1.8"
display_name: "Sega - MS/GG (SMS Plus GX)"
cores:
@@ -11,42 +13,35 @@ systems:
- sega-game-gear
- colecovision
- sega-sg1000
- sord-m5
notes: |
SMS Plus GX is a Sega Master System / Game Gear emulator with additional
support for ColecoVision, SG-1000 and Sord M5 via TMS9918 VDP emulation.
Enhanced fork of Charles MacDonald's SMS Plus 1.3 by Eke-Eke (GX) and
gameblabla. Master System, Game Gear, ColecoVision and SG-1000 emulator.
Standalone ports also support Sord M5 (behind SORDM5_EMU compile flag,
not compiled in libretro build).
BIOS loading happens in bios_init() (smsplus_libretro.c:203-252).
Two BIOS files are supported:
BIOS loading in bios_init() (smsplus_libretro.c:203-252). bios.sms is
always attempted but only activated when core option smsplus_sms_bios is
"auto" (default: disabled). BIOS.col is loaded only for ColecoVision
ROMs and required for them. Standalone ports use BIOS.sms (uppercase)
instead of bios.sms.
1. bios.sms -- Sega Master System boot ROM. Optional. Loaded for all
console types. A core option "smsplus_sms_bios" (default: disabled)
controls whether it is used. When set to "auto" and the file exists,
bios.enabled is set and the SMS boot sequence plays before games.
2. BIOS.col -- ColecoVision BIOS. Required for ColecoVision ROMs only.
Loaded into coleco.rom (0x2000 bytes = 8 KB). Without it, ColecoVision
games will not start and the core logs an error. The filename is
case-sensitive (uppercase BIOS, lowercase .col).
Both files are read from the system directory root (no subdirectory).
Path is built as: system_dir + "/" + filename (smsplus_libretro.c:211,234).
Console type is auto-detected from ROM file extension:
.col -> CONSOLE_COLECO
.sg -> CONSOLE_SG1000
Or forced via the "smsplus_hardware" core option.
.info marks BIOS.col as optional (firmware1_opt=true) but the libretro
code returns false from retro_load_game() when BIOS.col is missing for
.col ROMs.
files:
- name: "bios.sms"
system: sega-master-system
description: "Sega Master System boot ROM"
required: false
aliases: ["BIOS.sms"]
source_ref: "smsplus_libretro.c:211-229"
notes: |
Loaded into bios.rom (up to 1 MB allocated). Only active when the
core option smsplus_sms_bios is set to "auto". Displays the Sega
Master System startup screen before game execution.
Loaded into bios.rom (up to 1 MB allocated). Only active when core
option smsplus_sms_bios is "auto". Displays SMS startup screen
before game execution. Standalone ports use BIOS.sms (uppercase).
- name: "BIOS.col"
system: colecovision
@@ -55,30 +50,18 @@ files:
size: 8192
source_ref: "smsplus_libretro.c:232-248"
notes: |
Required for ColecoVision games. Read as 0x2000 (8192) raw bytes
into coleco.rom. Without this file, retro_load_game() returns false
when loading .col files. Filename is case-sensitive on Linux.
Required for ColecoVision games. Read as 0x2000 (8192) bytes into
coleco.rom. Without this file, retro_load_game() returns false for
.col files.
platform_details:
bios_mapping:
sms:
target: "bios.rom buffer, mapped via slot system"
source_ref: "smsplus_libretro.c:208-229, source/memz80.c"
- name: "BIOS_sordm5.bin"
system: sord-m5
description: "Sord M5 BIOS ROM"
required: false
size: 8192
mode: standalone
source_ref: "ports/sdl/smsplus.c:321-329"
notes: |
When bios.enabled has both bits set (file present + option enabled),
the BIOS ROM is paged into the Z80 address space at startup. The
BIOS executes the boot animation, then hands off to the cartridge.
coleco:
target: "coleco.rom, mapped at 0x0000-0x1FFF"
source_ref: "smsplus_libretro.c:245, source/memz80.c"
notes: |
The ColecoVision BIOS provides the interrupt handler, I/O routines
and startup code. Mapped into the first 8 KB of Z80 address space.
console_detection:
source_ref: "smsplus_libretro.c:605-609, source/loadrom.c:402"
notes: |
File extension .col forces CONSOLE_COLECO with MAPPER_NONE.
Extension .sg forces CONSOLE_SG1000.
The core option smsplus_hardware can override to: master system,
master system II, game gear, game gear (sms compatibility), coleco.
Read as 0x2000 (8192) bytes into coleco.rom (shared buffer). Only
in standalone builds (SORDM5_EMU define). Not compiled in libretro.
Code does not enforce presence but system needs BIOS to function.

View File

@@ -1,137 +1,49 @@
emulator: snes9x
type: libretro
core_classification: official_port
source: "https://github.com/libretro/snes9x"
upstream: "https://github.com/snes9xgit/snes9x"
logo: "https://raw.githubusercontent.com/snes9xgit/snes9x/master/gtk/data/snes9x.svg"
profiled_date: "2026-03-18"
profiled_date: "2026-03-25"
core_version: "1.61"
display_name: "Nintendo - SNES / SFC (Snes9x)"
systems: [nintendo-snes, nintendo-satellaview, nintendo-sufami-turbo]
# snes9x uses HLE for all coprocessors: DSP1-4, ST010, ST011, ST018, CX4.
# No external firmware files are needed for these chips - the emulation
# logic and lookup tables are hardcoded in dsp1.cpp, dsp2.cpp, dsp3.cpp,
# dsp4.cpp, seta010.cpp, seta011.cpp, seta018.cpp, c4emu.cpp.
#
# Unlike bsnes, snes9x does NOT support LLE coprocessor firmware.
# It also does NOT support Super Game Boy (RETRO_GAME_TYPE_SUPER_GAME_BOY
# is defined but never loads a SGB BIOS or boot ROM).
#
# The only external BIOS files used are for Satellaview (BS-X) and
# Sufami Turbo, loaded by LoadBIOS() in libretro/libretro.cpp and
# BSX_LoadBIOS() in bsx.cpp.
#
# BIOS lookup order (LoadBIOS):
# 1. ROM directory (same folder as the game)
# 2. RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY (system dir)
cores:
snes9x:
source: "https://github.com/libretro/snes9x"
firmware_loading: true
hle_only: true
notes: |
Current snes9x. Loads BS-X.bin (tries BS-X.bios as fallback)
and STBIOS.bin via LoadBIOS() in libretro.cpp.
Auto-detects Sufami Turbo carts (is_SufamiTurbo_Cart) and
BS-X games (is_bsx) when loading via retro_load_game().
Also handles retro_load_game_special() for multi-cart and
subsystem types (RETRO_GAME_TYPE_BSX, RETRO_GAME_TYPE_SUFAMI_TURBO,
RETRO_GAME_TYPE_MULTI_CART).
snes9x2010:
source: "https://github.com/libretro/snes9x2010"
firmware_loading: true
hle_only: true
notes: |
Based on snes9x 1.52. Same BIOS loading as snes9x current.
BSX_LoadBIOS() in src/bsx.c loads BS-X.bin (fallback BS-X.bios).
STBIOS.bin loaded in src/memmap.c for Sufami Turbo.
snes9x2005:
source: "https://github.com/libretro/snes9x2005"
firmware_loading: false
hle_only: true
notes: |
Based on snes9x 1.43. Detects BS-X and Sufami Turbo ROM headers
in source/memmap.c but has no LoadBIOS function - does not load
external BIOS files. No firmware needed.
snes9x2005_plus:
source: "https://github.com/libretro/snes9x2005"
firmware_loading: false
hle_only: true
notes: |
Same codebase as snes9x2005 with video enhancements.
No external BIOS loading. No firmware needed.
snes9x2002:
source: "https://github.com/libretro/snes9x2002"
firmware_loading: false
hle_only: true
notes: |
Based on snes9x 1.39 (PocketSNES). Minimal core for low-end
devices. No BS-X, no Sufami Turbo, no external BIOS loading.
No firmware needed.
Loads BS-X.bin and STBIOS.bin via LoadBIOS() in libretro.cpp.
BSX_LoadBIOS() in bsx.cpp tries BS-X.bios as fallback.
Auto-detects Satellaview and Sufami Turbo carts on load.
Subsystem support via retro_load_game_special() for
RETRO_GAME_TYPE_BSX, RETRO_GAME_TYPE_SUFAMI_TURBO,
RETRO_GAME_TYPE_MULTI_CART.
files:
# -- BS-X Satellaview BIOS --
# Required by: snes9x, snes9x2010
# Loaded by: LoadBIOS() in libretro.cpp (snes9x) / BSX_LoadBIOS() in bsx.c (snes9x2010)
# Auto-detected when game ROM header matches BS-X signature at 0x7FC0 or 0xFFC0.
# Size validated: must be exactly BIOS_SIZE (0x100000 = 1048576 bytes).
# Filename fallback: BS-X.bin -> BS-X.bios (bsx.cpp:1209-1215)
- name: "BS-X.bin"
system: nintendo-satellaview
description: "Satellaview BS-X BIOS (Japanese)"
description: "Satellaview BS-X BIOS"
required: false
size: 1048576
md5: "fed4d8242cfbed61343d53d48432aced"
sha1: "604556b2e62860af18db5a77f2956ebc75450020"
source_ref: "libretro.cpp:1209 (LoadBIOS, 'BS-X.bin'), bsx.cpp:1209-1215 (BSX_LoadBIOS)"
validation: [size]
source_ref: "libretro.cpp:1209, bsx.cpp:1209,1214"
aliases: ["BS-X.bios"]
notes: "Needed for Satellaview (.bs) game support. Without this file, BS-X games will fail to load."
# -- Sufami Turbo BIOS --
# Required by: snes9x, snes9x2010
# Loaded by: LoadBIOS() in libretro.cpp (snes9x) / memmap.c (snes9x2010)
# Auto-detected when cart has "BANDAI SFC-ADX" at offset 0, without "SFC-ADX BACKUP" at 0x10.
# Size: 0x40000 (262144 bytes). Validated by is_SufamiTurbo_BIOS().
notes: "Needed for Satellaview (.bs) games."
- name: "STBIOS.bin"
system: nintendo-sufami-turbo
description: "Bandai SuFami Turbo BIOS (Mini Cartridge add-on)"
description: "Sufami Turbo BIOS"
required: false
size: 262144
md5: "d3a44ba7d42a74d3ac58cb9c14c6a5ca"
sha1: "ef86ea192eed03d5c413fdbbfd46043be1d7a127"
source_ref: "libretro.cpp:1203,1317,1348 (LoadBIOS, 'STBIOS.bin'), memmap.cpp:1672"
notes: "Needed for Sufami Turbo multi-cart games. Validated by is_SufamiTurbo_BIOS() which checks for 'BANDAI SFC-ADX' + 'SFC-ADX BACKUP' headers."
validation: [size]
source_ref: "libretro.cpp:1203,1317, memmap.cpp:1672"
notes: "Needed for Sufami Turbo multi-cart games."
notes:
coprocessor_hle: |
All SNES coprocessor chips are emulated in software (HLE) across
every snes9x variant. No external firmware files are needed for:
- DSP1/DSP1B (dsp1.cpp, static DSP1ROM[1024] lookup table)
- DSP2 (dsp2.cpp)
- DSP3 (dsp3.cpp)
- DSP4 (dsp4.cpp)
- ST010 (seta010.cpp, static ST010_SinTable)
- ST011 (seta011.cpp)
- ST018 (seta018.cpp)
- CX4/Cx4 (c4.cpp, c4emu.cpp, math-based HLE)
This is the key difference from bsnes, which supports both HLE and
LLE (with optional external firmware ROM files).
sgb_status: |
RETRO_GAME_TYPE_SUPER_GAME_BOY (0x104) is defined in libretro.cpp
but no actual SGB emulation exists. No SGB BIOS or boot ROM is
loaded or used by any snes9x variant.
bsx_detection: |
BS-X games are auto-detected by is_bsx() which checks for the
"Satellaview BS-X" signature in the ROM header. When detected,
the BIOS is loaded automatically without user intervention.
sufami_detection: |
Sufami Turbo carts are auto-detected by is_SufamiTurbo_Cart()
which checks for "BANDAI SFC-ADX" at ROM offset 0 and absence
of "SFC-ADX BACKUP" at offset 0x10 (which would indicate BIOS,
not cart). Multi-cart support uses retro_load_game_special().
All coprocessors are HLE (DSP1-4, ST010, ST011, ST018, CX4).
No external firmware files needed. Lookup tables and math
emulation hardcoded in dsp1-4.cpp, seta010-018.cpp, c4emu.cpp.

23
emulators/snes9x2002.yml Normal file
View File

@@ -0,0 +1,23 @@
emulator: Snes9x 2002
type: libretro
core_classification: frozen_snapshot
source: "https://github.com/libretro/snes9x2002"
upstream: "https://github.com/snes9xgit/snes9x"
profiled_date: "2026-03-25"
core_version: "7.2.0"
display_name: "Nintendo - SNES / SFC (Snes9x 2002)"
cores:
- snes9x2002
systems:
- snes
- sufami-turbo
- satellaview
notes: |
Frozen snapshot of Snes9x 1.39 via PocketSNES, optimized for ARM.
SPC700 IPL ROM (64 bytes) embedded in globals.c:283 as APUROM[64].
All ROM I/O via memstream (snes9x.h:54-57). The core never calls
GET_SYSTEM_DIRECTORY and performs no file I/O from the system directory.
exclusion_note: "SPC700 IPL ROM embedded in binary (globals.c:283); no system_directory access"
files: []

25
emulators/snes9x2005.yml Normal file
View File

@@ -0,0 +1,25 @@
emulator: Snes9x 2005
type: libretro
core_classification: frozen_snapshot
source: "https://github.com/libretro/snes9x2005"
upstream: "https://github.com/ShadauxCat/CATSFC"
profiled_date: "2026-03-25"
core_version: "v1.36"
display_name: "Nintendo - SNES / SFC (Snes9x 2005)"
cores:
- snes9x2005
systems:
- snes
- sufami-turbo
- satellaview
notes: |
Frozen snapshot of Snes9x 1.43 via CATSFC (NDS/PSP port by ShadauxCat/Nebuleon).
SPC700 IPL ROM (64 bytes) embedded in globals.c:191 as APUROM[64].
DSP-1 ROM data (1024 x uint16) embedded in dsp1emu.c:8 as DSP1ROM[1024].
All coprocessors (DSP-1/2/4, CX4, ST010/011/018, SuperFX, SPC7110, SA-1, OBC-1)
are pure HLE. The core never calls GET_SYSTEM_DIRECTORY and performs no file I/O
from the system directory.
exclusion_note: "all coprocessor ROMs embedded in binary; no system_directory access"
files: []

View File

@@ -0,0 +1,26 @@
emulator: Snes9x 2005 Plus
type: libretro
core_classification: frozen_snapshot
source: "https://github.com/libretro/snes9x2005"
upstream: "https://github.com/ShadauxCat/CATSFC"
profiled_date: "2026-03-25"
core_version: "v1.36"
display_name: "Nintendo - SNES / SFC (Snes9x 2005 Plus)"
cores:
- snes9x2005_plus
systems:
- snes
- sufami-turbo
- satellaview
notes: |
Same codebase as Snes9x 2005 built with USE_BLARGG_APU=1 for more accurate audio.
Frozen snapshot of Snes9x 1.43 via CATSFC (NDS/PSP port by ShadauxCat/Nebuleon).
SPC700 IPL ROM (64 bytes) embedded in apu_blargg.c:3272 as APUROM[64].
DSP-1 ROM data (1024 x uint16) embedded in dsp1emu.c:8 as DSP1ROM[1024].
All coprocessors (DSP-1/2/4, CX4, ST010/011/018, SuperFX, SPC7110, SA-1, OBC-1)
are pure HLE. The core never calls GET_SYSTEM_DIRECTORY and performs no file I/O
from the system directory.
exclusion_note: "all coprocessor ROMs embedded in binary; no system_directory access"
files: []

40
emulators/snes9x2010.yml Normal file
View File

@@ -0,0 +1,40 @@
emulator: Snes9x 2010
type: libretro
core_classification: frozen_snapshot
source: "https://github.com/libretro/snes9x2010"
upstream: "https://github.com/snes9xgit/snes9x"
profiled_date: "2026-03-25"
core_version: "v1.52.4"
display_name: "Nintendo - SNES / SFC (Snes9x 2010)"
cores:
- snes9x2010
systems:
- snes
- sufami-turbo
- satellaview
notes: |
Frozen snapshot of Snes9x 1.52.4, rewritten in C with optimizations
for PS3 (originally called SNES9x Next).
SPC700 IPL ROM (64 bytes) embedded in src/apu.c:3442 as APUROM[64].
DSP-1 ROM data (1024 x uint16) embedded in src/dsp.c:219 as DSP1ROM[1024].
All coprocessors (DSP-1/2/3/4, CX4, ST010/011/018, SuperFX, SPC7110,
SA-1, S-DD1, S-RTC, OBC-1) are pure HLE.
Sufami Turbo support disabled: LoadSufamiTurbo in src/memmap.c is behind
#if SNES_SUPPORT_MULTI_CART which defaults to 0 and is never enabled in
any Makefile. retro_load_game_special returns false.
Upstream snes9x 1.52 supports Sufami Turbo (loads STBIOS.bin).
files:
- name: "BS-X.bin"
system: satellaview
description: "Satellaview BS-X BIOS"
required: false
size: 1048576
validation: [size]
aliases: ["BS-X.bios"]
source_ref: "src/bsx.c:959-993 (BSX_LoadBIOS), src/bsx.c:1068 (caller in S9xInitBSX)"
notes: |
Loaded when a BS game is auto-detected (is_bsx checks ROM header at
0x7FC0/0xFFC0). Without this file, BSX.bootup is set to FALSE and
BIOSROM is zeroed. BS games still load but lack the boot menu.

View File

@@ -1,94 +1,70 @@
emulator: SquirrelJME
type: libretro
core_classification: official_port
source: "https://github.com/SquirrelJME/SquirrelJME"
profiled_date: "2026-03-18"
upstream: "https://github.com/SquirrelJME/SquirrelJME"
profiled_date: "2026-03-25"
core_version: "0.3.0"
display_name: "Java ME (SquirrelJME)"
cores: [squirreljme]
systems: [j2me]
verification: existence
notes: |
Java ME 8 virtual machine for libretro. Runs J2ME MIDlets and older flip-phone games.
The core needs a class library JAR placed in RetroArch's system directory.
It searches for the JAR using a priority list: versioned-fast first, then versioned,
then unversioned variants. The first match wins.
Search order (from nanocoat/src/boot.c sjme_nvm_romNames[]):
1. squirreljme-{version}-fast.jar
2. squirreljme-{version}.jar
3. squirreljme-{version}-test.jar
4. squirreljme-{version}-slow.jar
5. squirreljme-{version}-slow-test.jar
6. squirreljme-fast.jar
7. squirreljme.jar
8. squirreljme-test.jar
9. squirreljme-slow.jar
10. squirreljme-slow-test.jar
Current version: 0.3.0. All firmware entries are marked optional in the .info file
because the core can launch its built-in modeless stars demo without a class library.
For actual J2ME software, one of these JARs is required.
The class library JAR is built from the SquirrelJME project itself (not a third-party
BIOS dump). It is open source under MPL-2.0.
Java ME 8 virtual machine. Runs J2ME MIDlets and older flip-phone games.
Requires a class library JAR in the system directory. The core searches
sjme_nvm_romNames[] in priority order and uses the first match found.
All entries are optional: without a class library, the core runs a built-in
modeless stars demo but cannot execute J2ME software.
The .info declares firmware_count=8 but the code defines 10 search names
(squirreljme-{version}-test.jar and squirreljme-test.jar are missing from .info).
files:
# -- Versioned JARs (v0.3.0, preferred) --
- name: "squirreljme-0.3.0-fast.jar"
description: "SquirrelJME class library v0.3.0 (fast/optimized build)"
description: "Class library v0.3.0, fast/optimized build"
required: false
bundled: false
source_ref: "nanocoat/src/boot.c:102, squirreljme_libretro.info:firmware5"
note: "Highest priority versioned JAR. Optimized runtime, recommended for normal use."
source_ref: "nanocoat/src/boot.c:102"
- name: "squirreljme-0.3.0.jar"
description: "SquirrelJME class library v0.3.0 (standard build)"
description: "Class library v0.3.0, standard build"
required: false
bundled: false
source_ref: "nanocoat/src/boot.c:103, squirreljme_libretro.info:firmware4"
note: "Standard versioned build. Second in search priority."
source_ref: "nanocoat/src/boot.c:103"
- name: "squirreljme-0.3.0-test.jar"
description: "Class library v0.3.0, standard build with test suites"
required: false
source_ref: "nanocoat/src/boot.c:104"
- name: "squirreljme-0.3.0-slow.jar"
description: "SquirrelJME class library v0.3.0 (slow/interpreter build)"
description: "Class library v0.3.0, slow/interpreter build"
required: false
bundled: false
source_ref: "nanocoat/src/boot.c:105, squirreljme_libretro.info:firmware6"
note: "Pure interpreter mode, no optimizations. Useful for debugging."
source_ref: "nanocoat/src/boot.c:105"
- name: "squirreljme-0.3.0-slow-test.jar"
description: "SquirrelJME class library v0.3.0 (slow build with tests)"
description: "Class library v0.3.0, slow build with test suites"
required: false
bundled: false
source_ref: "nanocoat/src/boot.c:106, squirreljme_libretro.info:firmware7"
note: "Interpreter mode with built-in test suites."
# -- Unversioned JARs (fallback) --
source_ref: "nanocoat/src/boot.c:106"
- name: "squirreljme-fast.jar"
description: "SquirrelJME class library (fast/optimized, unversioned)"
description: "Class library, fast/optimized build (unversioned)"
required: false
bundled: false
source_ref: "nanocoat/src/boot.c:107, squirreljme_libretro.info:firmware1"
note: "Highest priority unversioned JAR. Renamed from a versioned build."
source_ref: "nanocoat/src/boot.c:107"
- name: "squirreljme.jar"
description: "SquirrelJME class library (standard, unversioned)"
description: "Class library, standard build (unversioned)"
required: false
bundled: false
source_ref: "nanocoat/src/boot.c:108, squirreljme_libretro.info:firmware0"
note: "Most common filename. If only one JAR is provided, use this name."
source_ref: "nanocoat/src/boot.c:108"
- name: "squirreljme-test.jar"
description: "Class library, standard build with test suites (unversioned)"
required: false
source_ref: "nanocoat/src/boot.c:109"
- name: "squirreljme-slow.jar"
description: "SquirrelJME class library (slow/interpreter, unversioned)"
description: "Class library, slow/interpreter build (unversioned)"
required: false
bundled: false
source_ref: "nanocoat/src/boot.c:110, squirreljme_libretro.info:firmware2"
note: "Pure interpreter, unversioned."
source_ref: "nanocoat/src/boot.c:110"
- name: "squirreljme-slow-test.jar"
description: "SquirrelJME class library (slow with tests, unversioned)"
description: "Class library, slow build with test suites (unversioned)"
required: false
bundled: false
source_ref: "nanocoat/src/boot.c:111, squirreljme_libretro.info:firmware3"
note: "Interpreter with tests, unversioned."
source_ref: "nanocoat/src/boot.c:111"

View File

@@ -1,57 +1,18 @@
emulator: Stella
type: libretro
source: "https://github.com/libretro/stella2014-libretro"
profiled_date: "2026-03-18"
core_version: "6.6"
type: alias
alias_of: stella2014
source: "https://github.com/libretro/stella-libretro"
profiled_date: "2026-03-25"
core_version: "3.9.3"
display_name: "Atari - 2600 (Stella)"
cores:
- stella
- stella2014
- stella2023
systems:
- atari-2600
notes: |
Stella is an Atari 2600 (VCS) emulator. The libretro port available is
stella2014, which is a fork frozen at the 2014 codebase. The upstream
"stella-libretro" repo redirects to stella2014-libretro. There is no
separate stella2023 libretro core published at this time.
The Atari 2600 console has no BIOS ROM. Games run directly on the
hardware with no boot firmware.
The Starpath/Arcadia Supercharger add-on had a 2K BIOS ROM on the
physical hardware. Stella does NOT load this BIOS from an external
file. Instead, the core contains a built-in dummy BIOS
(ourDummyROMCode, 294 bytes in CartAR.cxx) that simulates the
Supercharger load sequence. The initializeROM() function copies this
dummy code into the ROM bank (bank 3) at reset, sets up the 6502
reset vector to 0xF80A, and handles multiload via a hotspot at
address 0x1850.
The "fastscbios" setting (offset 109 in the dummy ROM) controls
whether the SC load progress bars are shown (0x00) or skipped
(0xFF). This is toggled automatically during ROM format detection
(Console.cxx:119-120).
The real Supercharger BIOS ROM (MD5 4565c1a7abce773e53c75b35414adefd)
is recognized in DefProps.hxx as a known cartridge entry but is not
required or loaded as a system file.
The libretro interface (retro_set_environment) does not call
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY and declares no firmware
requirements. No core option references BIOS loading.
files: []
platform_details:
supercharger_emulation:
source_ref: "stella/src/emucore/CartAR.cxx, CartAR.hxx"
notes: |
The Supercharger (type AR) uses 4 banks: 3x 2K RAM + 1x 2K ROM.
The ROM bank is filled with ourDummyROMCode at reset. SC games
are multi-load images (8448 bytes per load: 8192 data + 256 header).
loadIntoRAM() handles loading game data when the hotspot at 0x1850
is accessed with the ROM bank mapped. The bank switching byte and
start address are written to zero-page RAM (0xFE, 0xFF, 0x80) for
the dummy BIOS to read.
note: |
Identical codebase to stella2014-libretro. Both repos share the same HEAD
commit and produce a binary reporting library_name "Stella 2014". The
stella_libretro.info incorrectly lists display_version "6.6"; the actual
embedded version is 3.9.3. See stella2014.yml for firmware requirements
and KidVid audio files.

60
emulators/stella2014.yml Normal file
View File

@@ -0,0 +1,60 @@
emulator: Stella 2014
type: libretro
core_classification: frozen_snapshot
source: "https://github.com/libretro/stella2014-libretro"
upstream: "https://github.com/stella-emu/stella"
profiled_date: "2026-03-25"
core_version: "3.9.3"
display_name: "Atari - 2600 (Stella 2014)"
cores:
- stella2014
systems:
- atari_2600
notes: |
Frozen snapshot of Stella 3.9.3. The Atari 2600 has no BIOS ROM; the TIA,
RIOT, and 6507 CPU are fully emulated in software. The SuperCharger (Starpath)
BIOS is emulated via a built-in dummy ROM (ourDummyROMCode in CartAR.cxx:518).
Game properties database (stella.pro) is compiled into DefProps.hxx; external
loading is disabled in the libretro port (PropsSet.cxx:35). The core does not
call GET_SYSTEM_DIRECTORY. KidVid Voice Module audio tapes (7 WAV files) are
loaded via rfopen with relative filenames from the content directory
(KidVid.cxx:166-185); absence is handled gracefully. EEPROM save data for
AtariVox and SaveKey peripherals is managed as NVRAM, not user-supplied.
files:
- name: kvs1.wav
description: "KidVid Voice Module audio tape 1 (Smurfs Save the Day)"
required: false
category: game_data
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
- name: kvs2.wav
description: "KidVid Voice Module audio tape 2 (Smurfs Save the Day)"
required: false
category: game_data
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
- name: kvs3.wav
description: "KidVid Voice Module audio tape 3 (Smurfs Save the Day)"
required: false
category: game_data
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
- name: kvb1.wav
description: "KidVid Voice Module audio tape 1 (Berenstain Bears)"
required: false
category: game_data
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
- name: kvb2.wav
description: "KidVid Voice Module audio tape 2 (Berenstain Bears)"
required: false
category: game_data
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
- name: kvb3.wav
description: "KidVid Voice Module audio tape 3 (Berenstain Bears)"
required: false
category: game_data
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
- name: kvshared.wav
description: "KidVid Voice Module shared audio samples"
required: false
category: game_data
source_ref: "stella/src/emucore/KidVid.cxx:185"

73
emulators/stella2023.yml Normal file
View File

@@ -0,0 +1,73 @@
emulator: Stella 2023
type: libretro
core_classification: frozen_snapshot
source: "https://github.com/libretro/stella2023"
upstream: "https://github.com/stella-emu/stella"
profiled_date: "2026-03-25"
core_version: "7.0_pre"
display_name: "Atari - 2600 (Stella 2023)"
cores:
- stella2023
systems:
- atari_2600
notes: |
Frozen snapshot of Stella development branch (7.0_pre, copyright 2024).
The .info reports display_version 6.6 which does not match the source
(src/common/Version.hxx defines STELLA_VERSION as "7.0_pre").
The Atari 2600 has no BIOS ROM; TIA, RIOT, and 6507 CPU are fully
emulated in software. The SuperCharger (Starpath) BIOS is emulated via
a built-in dummy ROM (ourDummyROMCode in CartAR.cxx:279). The game
properties database is compiled into DefProps.hxx; external loading is
disabled in the libretro port (OSystemLIBRETRO returns
CompositeKeyValueRepositoryNoop for the property repository).
The libretro interface does not call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY
and declares no firmware requirements (firmware_count=0 in .info).
KidVid Voice Module audio tapes (7 WAV files) are checked via
FSNode::exists() in baseDir (resolves to content directory in the
libretro port). SoundLIBRETRO does not override playWav()/wavSize()
from the base Sound class, so WAV playback is non-functional. Games
work without WAV files using a timing-based fallback in KidVid::setNextSong().
EEPROM save data for AtariVox and SaveKey peripherals is managed as
NVRAM, not user-supplied.
files:
- name: KVS1.WAV
description: "KidVid Voice Module audio tape 1 (Smurfs Save the Day)"
required: false
category: game_data
source_ref: "stella2023/src/emucore/KidVid.cxx:245,273"
- name: KVS2.WAV
description: "KidVid Voice Module audio tape 2 (Smurfs Save the Day)"
required: false
category: game_data
source_ref: "stella2023/src/emucore/KidVid.cxx:245,273"
- name: KVS3.WAV
description: "KidVid Voice Module audio tape 3 (Smurfs Save the Day)"
required: false
category: game_data
source_ref: "stella2023/src/emucore/KidVid.cxx:245,273"
- name: KVB1.WAV
description: "KidVid Voice Module audio tape 1 (Berenstain Bears)"
required: false
category: game_data
source_ref: "stella2023/src/emucore/KidVid.cxx:246,273"
- name: KVB2.WAV
description: "KidVid Voice Module audio tape 2 (Berenstain Bears)"
required: false
category: game_data
source_ref: "stella2023/src/emucore/KidVid.cxx:246,273"
- name: KVB3.WAV
description: "KidVid Voice Module audio tape 3 (Berenstain Bears)"
required: false
category: game_data
source_ref: "stella2023/src/emucore/KidVid.cxx:246,273"
- name: KVSHARED.WAV
description: "KidVid Voice Module shared audio samples"
required: false
category: game_data
source_ref: "stella2023/src/emucore/KidVid.cxx:274"

View File

@@ -1,20 +1,41 @@
emulator: Stone Soup
type: game
core_classification: frozen_snapshot
source: "https://github.com/libretro/crawl-ref"
profiled_date: "2026-03-18"
core_version: "Git"
upstream: "https://github.com/crawl/crawl"
profiled_date: "2026-03-25"
core_version: "0.16-a0"
display_name: "Dungeon Crawl Stone Soup"
cores: [stonesoup]
systems: []
notes: >
Dungeon Crawl Stone Soup, a roguelike dungeon crawler. The libretro port is
built from the crawl-ref source tree (crawl-ref/source/) with TILES=y and
the libretro backend. The core accepts no content extensions - it launches
directly into a new game or save selection. All game data (tiles, databases,
descriptions, lua scripts, des files for level generation) is compiled into
the core binary or loaded from the bundled dat/ directory built alongside
the core. No BIOS, firmware, or external system files are required. Save
files are stored in the RetroArch save directory.
notes: |
Roguelike dungeon crawler. Fork frozen at DCSS 0.16-a0 (upstream now ~0.32).
Last libretro commit: Oct 2019. Marked experimental.
Accepts .crawlrc config files as content (supported_extensions: crawlrc).
The libretro wrapper sets -dir to the content directory.
ref: libretro/libretro.cc:178-198 — main_wrap() passes -dir content_dir
Game data loaded at runtime from dat/ tree via datafile_path().
ref: source/files.cc:375-458 — _get_base_dirs() + datafile_path()
No DATA_DIR_PATH defined in Makefile.libretro — falls back to SysEnv.crawl_dir.
Data is NOT compiled into the binary.
dat/ tree contents (532 files, 16 MB):
- dat/tiles/*.png (floor, wall, feat, player, main, gui, icons) — tiletex.cc:89-97
- dat/DejaVuSans.ttf, dat/DejaVuSansMono.ttf — fontwrapper-ft.cc:79
- dat/descript/*.txt, dat/database/*.txt — database.cc:72-140
- dat/des/*.des (level generation) — maps.cc:1457
- dat/dlua/*.lua, dat/clua/*.lua — maps.cc:1465
- dat/defaults/ (settings)
Not on buildbot.libretro.com/assets/system/.
No divergence in file loading between upstream and libretro fork.
data_directories:
- ref: stonesoup
source_ref: "source/files.cc:375-458"
files: []
# no BIOS/firmware — game data loaded via data_directories

View File

@@ -1,14 +1,16 @@
emulator: Super Bros War
type: game
core_classification: game_engine
source: "https://github.com/libretro/superbroswar-libretro"
profiled_date: "2026-03-18"
upstream: "https://github.com/mmatyas/supermariowar"
profiled_date: "2026-03-25"
core_version: "v0.1"
display_name: "Super Bros War"
cores: [superbroswar]
systems: []
files: []
notes: >
Libretro port of Super Mario War, a fan-made multiplayer battle game
where players stomp each other in Mario-style arenas.
Game data (maps, sprites, sounds) ships with the core repository.
No BIOS, firmware, or system directory files required.
Libretro port of Super Mario War, a fan-made multiplayer battle game.
All game data (maps, sprites, sounds, tilesets, skins) loads from the
content directory via convertPath(). System directory not used for game
data, only as save directory fallback.

View File

@@ -1,8 +1,80 @@
emulator: "swanstation"
type: alias
alias_of: "beetle_psx"
profiled_date: "2026-03-18"
emulator: swanstation
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/swanstation"
upstream: "https://github.com/stenzek/duckstation"
profiled_date: "2026-03-25"
core_version: "v0.1"
display_name: "Sony - PlayStation (SwanStation)"
note: "This core uses the same BIOS/firmware as beetle_psx. See emulators/beetle_psx.yml for details."
files: []
cores: [swanstation]
systems: [sony-playstation]
notes: |
Fork of DuckStation maintained by the libretro community after stenzek removed
libretro support. Frozen at an early DuckStation state.
BIOS is required to boot. No HLE fallback.
ref: src/core/system.cpp:667-674 (GetBIOSImage fails = Shutdown)
Auto-detects BIOS by scanning system_dir for files of known sizes.
ref: src/core/host_interface.cpp:183-243 (FindBIOSImageInDirectory)
Accepts PS1 (512 KB), PS2 (4 MB), and PS3 (0x3E66F0) BIOS images.
Only the first 512 KB are loaded (bios.cpp:83, Image(BIOS_SIZE)).
ref: src/core/bios.h:9 (BIOS_SIZE=0x80000, BIOS_SIZE_PS2=0x400000, BIOS_SIZE_PS3=0x3E66F0)
27 known BIOS entries identified by MD5 hash (all PS1 variants).
ref: src/core/bios.cpp:27-70 (s_image_infos)
Each entry has: description, region, hash, patch_compatible flag.
Upstream DuckStation has evolved significantly (105 entries, PS2 BIOS, OpenBIOS,
priority system). SwanStation is frozen at the fork point.
files:
- name: "scph5500.bin"
description: "SCPH-5500 (v3.0 09-09-96 J)"
region: "NTSC-J"
required: false
md5: "8dd7d5296a650fac7319bce665a6a53c"
size: 524288
validation: [size, md5]
source_ref: "src/core/bios.cpp:47"
aliases: []
- name: "scph5501.bin"
description: "SCPH-5501, 5503, 7003 (v3.0 11-18-96 A)"
region: "NTSC-U"
required: false
md5: "490f666e1afb15b7362b406ed1cea246"
size: 524288
validation: [size, md5]
source_ref: "src/core/bios.cpp:48-49"
aliases: []
- name: "scph5502.bin"
description: "SCPH-5502, 5552 (v3.0 01-06-97 E)"
region: "PAL"
required: false
md5: "32736f17079d0b2b7024407c39bd3050"
size: 524288
validation: [size, md5]
source_ref: "src/core/bios.cpp:50-51"
aliases: []
- name: "psxonpsp660.bin"
description: "PSP, SCPH-1000R (v4.5 05-25-00 J)"
region: "Auto"
required: false
md5: "c53ca5908936d412331790f4426c6c33"
size: 524288
validation: [size, md5]
source_ref: "src/core/bios.cpp:65-66"
aliases: []
- name: "ps1_rom.bin"
description: "PS3 (v5.0 06-23-03 A)"
region: "Auto"
required: false
md5: "81bbe60ba7a3d1cea1d48c14cbcc647b"
size: 4089584
validation: [size, md5]
source_ref: "src/core/bios.cpp:70"
aliases: []

View File

@@ -1,14 +1,250 @@
emulator: Syobon Action
type: game
source: "https://github.com/libretro/syobonaction-libretro"
profiled_date: "2026-03-18"
core_version: "0.1"
core_classification: community_fork
source: "https://github.com/iyzsong/syobonaction-libretro"
upstream: "https://github.com/akemin-dayo/OpenSyobonAction"
profiled_date: "2026-03-25"
core_version: "0.3"
display_name: "Syobon Action"
cores: [syobonaction]
systems: []
files: []
notes: >
Libretro port of Syobon Action (Cat Mario), a parody platformer known
for deceptive traps and unfair level design by z_gundam_tanosii.
Game data (maps, sprites, sounds) ships with the core repository.
No BIOS, firmware, or system directory files required.
Libretro port of Open Syobon Action (Cat Mario), the SDL port of the
Japanese platformer by z_gundam_tanosii. Game assets required in
system_dir/SyobonAction/ with BGM/, SE/, and res/ subdirectories.
Level data hardcoded in source. The original libretro/syobonaction-libretro
repo was deleted; source points to the archived original by iyzsong.
The .info display_version is "0.1" but the code reports "0.3".
files:
# ── res/ - Graphics (required: LoadGraph → exit(1) on failure) ──
- name: player.PNG
path: SyobonAction/res/player.PNG
description: "Player character sprites"
required: true
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:40"
- name: brock.PNG
path: SyobonAction/res/brock.PNG
description: "Block tileset"
required: true
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:42"
- name: item.PNG
path: SyobonAction/res/item.PNG
description: "Item sprites"
required: true
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:44"
- name: teki.PNG
path: SyobonAction/res/teki.PNG
description: "Enemy sprites"
required: true
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:46"
- name: haikei.PNG
path: SyobonAction/res/haikei.PNG
description: "Background graphics"
required: true
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:48"
- name: brock2.PNG
path: SyobonAction/res/brock2.PNG
description: "Alternate block tileset"
required: true
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:50"
- name: omake.PNG
path: SyobonAction/res/omake.PNG
description: "Bonus sprites"
required: true
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:52"
- name: omake2.PNG
path: SyobonAction/res/omake2.PNG
description: "Bonus sprites (set 2)"
required: true
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:54"
- name: syobon3.PNG
path: SyobonAction/res/syobon3.PNG
description: "Title screen"
required: true
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:56"
# ── res/ - Font (required: TTF_OpenFont → exit(1) on failure) ──
- name: sazanami-gothic.ttf
path: SyobonAction/res/sazanami-gothic.ttf
description: "Sazanami Gothic Japanese font for text rendering"
required: true
category: game_data
source_ref: "OpenSyobonAction/DxLib.cpp:73"
# ── BGM/ - Music (optional: LoadMusicMem → NULL on failure, game continues) ──
- name: field.ogg
path: SyobonAction/BGM/field.ogg
description: "Field stage music"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:220"
- name: dungeon.ogg
path: SyobonAction/BGM/dungeon.ogg
description: "Dungeon stage music"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:221"
- name: star4.ogg
path: SyobonAction/BGM/star4.ogg
description: "Star power music"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:222"
- name: castle.ogg
path: SyobonAction/BGM/castle.ogg
description: "Castle stage music"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:223"
- name: puyo.ogg
path: SyobonAction/BGM/puyo.ogg
description: "Puyo stage music"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:224"
# ── SE/ - Sound effects (optional: LoadSoundMem → NULL on failure, game continues) ──
- name: jump.ogg
path: SyobonAction/SE/jump.ogg
description: "Jump sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:228"
- name: brockbreak.ogg
path: SyobonAction/SE/brockbreak.ogg
description: "Block break sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:230"
- name: coin.ogg
path: SyobonAction/SE/coin.ogg
description: "Coin sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:231"
- name: humi.ogg
path: SyobonAction/SE/humi.ogg
description: "Stomp sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:232"
- name: koura.ogg
path: SyobonAction/SE/koura.ogg
description: "Shell sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:233"
- name: dokan.ogg
path: SyobonAction/SE/dokan.ogg
description: "Pipe sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:234"
- name: brockkinoko.ogg
path: SyobonAction/SE/brockkinoko.ogg
description: "Mushroom from block sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:235"
- name: powerup.ogg
path: SyobonAction/SE/powerup.ogg
description: "Power-up sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:236"
- name: kirra.ogg
path: SyobonAction/SE/kirra.ogg
description: "Star sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:237"
- name: goal.ogg
path: SyobonAction/SE/goal.ogg
description: "Goal sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:238"
- name: death.ogg
path: SyobonAction/SE/death.ogg
description: "Death sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:239"
- name: Pswitch.ogg
path: SyobonAction/SE/Pswitch.ogg
description: "P-switch sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:240"
- name: jumpBlock.ogg
path: SyobonAction/SE/jumpBlock.ogg
description: "Jump block sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:241"
- name: hintBlock.ogg
path: SyobonAction/SE/hintBlock.ogg
description: "Hint block sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:242"
- name: 4-clear.ogg
path: SyobonAction/SE/4-clear.ogg
description: "Stage clear sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:243"
- name: allclear.ogg
path: SyobonAction/SE/allclear.ogg
description: "All stages clear sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:244"
- name: tekifire.ogg
path: SyobonAction/SE/tekifire.ogg
description: "Enemy fire sound"
required: false
category: game_data
source_ref: "OpenSyobonAction/loadg.cpp:245"

View File

@@ -1,14 +1,17 @@
emulator: TamaLIBretro
type: game
source: "https://github.com/libretro/tamern-libretro"
profiled_date: "2026-03-18"
type: libretro
core_classification: community_fork
source: "https://github.com/celerizer/tamalibretro"
upstream: "https://github.com/jcrona/tamalib"
source_ref: "main.c:345-365 (retro_load_game)"
profiled_date: "2026-03-25"
core_version: "1.0"
display_name: "Bandai - Tamagotchi P1 (TamaLIBretro)"
cores: [tamalibretro]
systems: []
systems: [tamagotchi-p1]
files: []
notes: >
Tamagotchi P1 virtual pet simulator for libretro based on TamaLIB.
Emulates the Bandai Tamagotchi P1 hardware (E0C6S46 CPU).
The original Tamagotchi ROM is compiled into the binary.
No content file, BIOS, or system directory files required.
Emulates Bandai Tamagotchi P1 hardware (Epson E0C6S46 CPU) via TamaLIB.
Loads the Tamagotchi ROM (tama.b from MAME set) as content.
No BIOS or system directory files required.
.info firmware_count=0 matches the code.

View File

@@ -1,7 +1,9 @@
emulator: TempGBA
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/TempGBA-libretro"
profiled_date: "2026-03-18"
upstream: "https://github.com/Nebuleon/ReGBA"
profiled_date: "2026-03-25"
core_version: "26731013"
display_name: "Nintendo - Game Boy Advance (TempGBA)"
cores:
@@ -10,22 +12,16 @@ systems:
- nintendo-gba
notes: |
TempGBA is a Game Boy Advance emulator forked from gpSP. Originally
developed for the Nintendo DS homebrew scene, the libretro port wraps
the dynarec-based GBA engine for use in RetroArch.
The GBA BIOS (gba_bios.bin) is optional. TempGBA includes HLE BIOS
stubs inherited from gpSP that handle most SWI calls. The real BIOS
improves boot logo display and SWI accuracy for a small number of
titles.
BIOS file goes in the system directory as gba_bios.bin (same path
used by gpSP and mGBA).
Fork chain: gpSP (Exophase) -> gpSP Kai (takka) -> TempGBA NDS
(Nebuleon) -> TempGBA4PSP (unknown) -> TempGBA-libretro.
PSP-optimized GBA emulator. No HLE BIOS: SWI calls execute from
the real BIOS ROM. The NDS version (ReGBA) added an open-source
BIOS replacement (Normmatt), but TempGBA4PSP did not carry it over.
Boot sequence skipped by default (PC starts at 0x08000000).
files:
- name: gba_bios.bin
system: nintendo-gba
required: false
hle_fallback: true
required: true
size: 16384
note: "GBA BIOS. Optional, HLE stubs cover most software."
source_ref: "memory.c:3308-3323 (load_bios), libretro.c:238-314 (retro_load_game returns false if missing)"

View File

@@ -1,7 +1,9 @@
emulator: test
type: test
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
upstream: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "Test"
cores:
@@ -9,10 +11,10 @@ cores:
systems: []
notes: |
Basic test core from libretro-samples. Minimal software-rendered core
used for sanity-checking the libretro frontend loop (frame timing, input
polling, audio sample generation).
Test core from libretro-samples. Software-rendered checkerboard pattern
with sine wave audio and input device testing (joypad, mouse, analog,
lightgun, keyboard, rumble). No emulation, no system files.
No system files, BIOS, or firmware required. Not an emulator.
Source: tests/test/libretro-test.c. Single file, no file I/O.
files: []

View File

@@ -1,7 +1,7 @@
emulator: test_netplay
type: test
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
core_classification: pure_libretro
profiled_date: "2026-03-25"
core_version: "1"
display_name: "Test for netplay"
cores:
@@ -9,11 +9,15 @@ cores:
systems: []
notes: |
Netplay test core from libretro-samples. Designed to validate the libretro
netplay subsystem: deterministic frame stepping, input synchronization,
savestate serialization for rollback. Renders a simple interactive scene
where two players can verify sync.
Phantom .info: declared in libretro-core-info since 2017 but no source code,
build recipe, or compiled binary exists anywhere in the libretro organization.
Not on the buildbot. The .info has empty authors, license, and extensions.
No system files, BIOS, or firmware required. Not an emulator.
No system files required.
exclusion_note: >
.info declares no firmware (firmware_count absent). No source code found
to analyze — searched libretro-samples, RetroArch cores, libretro-super,
and the full libretro GitHub org.
files: []

View File

@@ -1,7 +1,9 @@
emulator: testaudio_callback
type: test
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
upstream: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "TestAudio Callback"
cores:
@@ -11,9 +13,7 @@ systems: []
notes: |
Audio callback test core from libretro-samples. Tests the
RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK path where audio runs on a
separate thread managed by the frontend. Generates a simple tone
to validate callback-driven audio output.
No system files, BIOS, or firmware required. Not an emulator.
separate thread managed by the frontend. Generates a 300 Hz sine
tone to validate callback-driven audio output.
files: []

View File

@@ -1,7 +1,9 @@
emulator: testaudio_no_callback
type: test
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
upstream: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "TestAudio NoCallback"
cores:
@@ -9,11 +11,8 @@ cores:
systems: []
notes: |
Audio no-callback test core from libretro-samples. Tests the standard
synchronous audio path using retro_audio_sample/retro_audio_sample_batch
(no threaded callback). Generates a simple tone to validate the default
audio output mode.
No system files, BIOS, or firmware required. Not an emulator.
Audio test core from libretro-samples. Tests the synchronous audio path
using retro_audio_sample (no threaded callback). Generates a 300 Hz sine
wave at 30 kHz sample rate.
files: []

View File

@@ -1,7 +1,9 @@
emulator: testaudio_playback_wav
type: test
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
upstream: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "TestAudio Playback Wav"
cores:
@@ -9,11 +11,10 @@ cores:
systems: []
notes: |
Audio WAV playback test core from libretro-samples. Loads a .wav file
as content and plays it back through the libretro audio interface. Tests
audio sample rate conversion, buffer management, and content loading for
non-ROM file types.
WAV playback test core from libretro-samples. Loads a .wav file as content
and plays it back through the libretro audio interface. Renders a progress
bar on a 320x240 framebuffer. No emulation, no system files.
No system files, BIOS, or firmware required. Not an emulator.
Source: audio/audio_playback_wav/libretro-test.c. Single file, no file I/O.
files: []

View File

@@ -1,7 +1,9 @@
emulator: testgl
type: test
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
upstream: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "TestGL"
cores:
@@ -9,10 +11,8 @@ cores:
systems: []
notes: |
OpenGL test core from libretro-samples. Validates the hardware-accelerated
OpenGL rendering path in the frontend. Renders a spinning triangle or cube
using GL calls through the libretro hw_render interface.
No system files, BIOS, or firmware required. Not an emulator.
OpenGL programmable pipeline test core from libretro-samples. Renders two
spinning quads via GL 2.0+ / GLES 2.0+ shaders through the libretro
hw_render interface. Shaders are embedded as string constants in the source.
files: []

View File

@@ -1,7 +1,9 @@
emulator: testgl_compute_shaders
type: test
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
upstream: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "TestGL ComputeShaders"
cores:
@@ -12,8 +14,7 @@ notes: |
OpenGL compute shader test core from libretro-samples. Validates compute
shader support through the libretro hw_render interface. Runs a compute
shader kernel and renders the output, testing GL 4.3+ / GLES 3.1+
capability in the frontend.
No system files, BIOS, or firmware required. Not an emulator.
capability in the frontend. All visual assets (shaders, textures, mesh)
are bundled in the core's app/ directory alongside the binary.
files: []

View File

@@ -1,7 +1,10 @@
emulator: testgl_ff
type: test
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
upstream: null
source_ref: "video/opengl/libretro_test_gl_fixedfunction/libretro_gl_ff_test.c"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "TestGL (FF)"
cores:
@@ -9,11 +12,8 @@ cores:
systems: []
notes: |
OpenGL fixed-function test core from libretro-samples. Similar to testgl
but uses the legacy OpenGL fixed-function pipeline (glBegin/glEnd, matrix
stack) instead of shaders. Tests frontend compatibility with older GL code
paths.
No system files, BIOS, or firmware required. Not an emulator.
OpenGL fixed-function pipeline test core from libretro-samples.
Renders a colored quad using glBegin/glEnd and matrix stack (GL 1.4+ / GLES 1.x+).
No file loading of any kind. supports_no_game.
files: []

View File

@@ -1,7 +1,9 @@
emulator: testinput_buttontest
type: test
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
upstream: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "Button Test"
cores:
@@ -9,11 +11,10 @@ cores:
systems: []
notes: |
Input button test core from libretro-samples. Displays a visual
representation of all libretro input bindings (joypad buttons, analog
sticks, triggers) and highlights them in real time as they are pressed.
Used to debug controller mapping and input driver issues.
Input button test core from libretro-samples. Renders an RLE-encoded
controller image and highlights buttons in real time as pressed. Polls
joypad and analog inputs. No file I/O.
No system files, BIOS, or firmware required. Not an emulator.
Source: input/button_test/libretro.c. Single file, no external dependencies.
files: []

View File

@@ -1,7 +1,9 @@
emulator: testretroluxury
type: test
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
core_classification: pure_libretro
source: "https://github.com/libretro/retroluxury"
upstream: "https://github.com/leiradel/retroluxury"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "Test RetroLuxury"
cores:
@@ -9,11 +11,8 @@ cores:
systems: []
notes: |
RetroLuxury test core from libretro-samples. Demonstrates the rluxury
(RetroLuxury) middleware layer for libretro, which provides a simplified
game development framework on top of the core API. Used as a reference
implementation for the middleware.
No system files, BIOS, or firmware required. Not an emulator.
Tech demo for the retroluxury middleware layer. All resources (sprites, audio,
fonts) are embedded in the binary via xxd -i at compile time. No external
files loaded at runtime.
files: []

View File

@@ -1,7 +1,10 @@
emulator: testsw
type: test
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
source_ref: "video/software/rendering/libretro-test.c"
upstream: null
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "TestSW"
cores:
@@ -9,10 +12,8 @@ cores:
systems: []
notes: |
Software rendering test core from libretro-samples. Validates the basic
software framebuffer path (RETRO_HW_FRAME_BUFFER_VALID). Writes pixel
data directly to the framebuffer without any hardware acceleration.
No system files, BIOS, or firmware required. Not an emulator.
Software rendering test core from libretro-samples. Allocates a 320x240
XRGB8888 framebuffer and renders a moving checkered pattern. Reference
implementation for core authors testing the software rendering path.
files: []

View File

@@ -1,7 +1,10 @@
emulator: testsw_vram
type: test
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
upstream: "https://github.com/libretro/libretro-samples"
source_ref: "video/software/rendering_direct_to_vram/libretro-test.c"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "TestSW VRAM"
cores:
@@ -9,10 +12,8 @@ cores:
systems: []
notes: |
Software VRAM test core from libretro-samples. Tests the software rendering
path with VRAM access patterns, validating how the frontend handles direct
video memory writes and buffer management.
No system files, BIOS, or firmware required. Not an emulator.
Software rendering test core. Renders a checkered pattern directly to VRAM
via RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER, with fallback to
standard framebuffer copy. Single source file, no file I/O.
files: []

View File

@@ -1,7 +1,9 @@
emulator: testvulkan
type: test
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
upstream: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "TestVulkan"
cores:
@@ -11,8 +13,8 @@ systems: []
notes: |
Vulkan test core from libretro-samples. Validates the Vulkan hardware
rendering path in the frontend via the libretro hw_render_interface_vulkan
API. Renders a basic scene using Vulkan command buffers and swapchain
integration.
API. Renders a rotating triangle using Vulkan command buffers and swapchain
integration. Shaders embedded at compile time (SPIR-V).
No system files, BIOS, or firmware required. Not an emulator.

View File

@@ -1,7 +1,9 @@
emulator: testvulkan_async_compute
type: test
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-18"
upstream: "https://github.com/libretro/libretro-samples"
profiled_date: "2026-03-25"
core_version: "v1"
display_name: "TestVulkan AsyncCompute"
cores:
@@ -9,10 +11,10 @@ cores:
systems: []
notes: |
Vulkan async compute test core from libretro-samples. Extends testvulkan
to exercise async compute queue support in the Vulkan rendering path.
Tests concurrent graphics and compute workloads through the libretro
hw_render_interface_vulkan API.
Vulkan async compute test core from libretro-samples. Exercises async
compute queue support via the libretro hw_render_interface_vulkan API.
Renders a raymarching demo using concurrent graphics and compute workloads.
Compute shader embedded at compile time (SPIR-V).
No system files, BIOS, or firmware required. Not an emulator.

View File

@@ -1,7 +1,9 @@
emulator: TGB Dual
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/tgbdual-libretro"
profiled_date: "2026-03-18"
upstream: "http://gigo.retrogames.com/download.html#tgb-dual"
profiled_date: "2026-03-25"
core_version: "v0.8.3"
display_name: "Nintendo - Game Boy / Color (TGB Dual)"
cores:
@@ -11,22 +13,11 @@ systems:
- nintendo-gbc
notes: |
TGB Dual is a Game Boy / Game Boy Color emulator by GIGO and Hii with
link cable support for two Game Boy units side by side.
Game Boy / Game Boy Color emulator by GIGO and Hii with link cable support
for two units side by side. Libretro port based on shinichiro.h's SDL port.
No BIOS or boot ROM files are required or supported. The core does not
call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY for firmware loading and does
not attempt to open any files from the system directory.
In cpu.cpp:57, the program counter is initialized to 0x100 (post-boot ROM
entry point), and cpu::reset() sets all registers to their post-boot
values directly (AF=0x01B0 for DMG, 0x11B0 for CGB). This means the
core completely bypasses the boot ROM sequence via HLE register setup.
The load_rom() path in libretro.cpp passes ROM data directly to the gb
class without any BIOS file concatenation or boot ROM mapping.
Supported extensions: gb, dmg, gbc, cgb, sgb.
Library version: v0.8.3.
cpu::reset() initializes PC to 0x100 and sets post-boot register values
(AF=0x01B0 DMG, 0x11B0 CGB), bypassing the boot ROM via HLE.
No system directory access, no file I/O for firmware.
files: []

View File

@@ -1,12 +1,15 @@
emulator: Theodore
type: libretro
core_classification: pure_libretro
source: "https://github.com/Zlika/theodore"
profiled_date: "2026-03-18"
core_version: "v4.1"
upstream: "http://dcmoto.free.fr/"
profiled_date: "2026-03-25"
core_version: "Git (post-3.1)"
display_name: "Thomson - MO/TO (Theodore)"
cores: [theodore]
systems: [thomson-to7, thomson-to770, thomson-to8, thomson-to8d, thomson-to9, thomson-to9plus, thomson-mo5, thomson-mo6, olivetti-pc128]
notes: >
All system ROMs (monitor + BASIC) are compiled into the binary.
No external BIOS files needed.
All system ROMs (monitor, BASIC, disk drive controller) are compiled into the binary
as C arrays in src/rom/*.inc. Derived from Daniel Coulom's DCTO8D/DCTO9P/DCMO5 emulators.
The .info declares no firmware (firmware_count absent), consistent with the code.
files: []

View File

@@ -1,14 +1,15 @@
emulator: The Powder Toy
type: game
core_classification: pure_libretro
source: "https://github.com/libretro/ThePowderToy"
profiled_date: "2026-03-18"
upstream: "https://github.com/ThePowderToy/The-Powder-Toy"
profiled_date: "2026-03-25"
core_version: "v92.5.336"
display_name: "The Powder Toy"
cores: [thepowdertoy]
systems: []
files: []
notes: >
Libretro port of The Powder Toy, a falling-sand physics simulation game.
Simulate various materials (powder, liquid, gas, explosive, electronic)
interacting with each other. Can load .cps save files as content.
No BIOS, firmware, or system directory files required.
Falling-sand physics simulation game. All resources (fonts, shaders,
images) compiled into the binary. GetSystemDir() declared but never
called. No external files loaded from system directory.

View File

@@ -1,7 +1,9 @@
emulator: TIC-80
type: libretro
core_classification: game_engine
source: "https://github.com/libretro/TIC-80"
profiled_date: "2026-03-18"
upstream: "https://github.com/nesbox/TIC-80"
profiled_date: "2026-03-25"
core_version: "0.80.0"
display_name: "TIC-80"
cores:
@@ -10,22 +12,17 @@ systems:
- tic80
notes: |
TIC-80 is a fantasy computer for making, playing and sharing tiny games.
The libretro port wraps the nesbox/TIC-80 engine as a submodule.
Fantasy computer for making, playing and sharing tiny games.
The libretro repo wraps nesbox/TIC-80 as a submodule; the libretro
wrapper (tic80_libretro.c) lives in the upstream repo itself.
The core loads .tic cartridge files (and .png for cart-as-image format)
entirely through the libretro data buffer (need_fullpath = false,
tic80_libretro.c:340). Content bytes are passed directly to tic80_load()
at retro_load_game() (tic80_libretro.c:1152).
Content loaded entirely via libretro data buffer (need_fullpath = false,
tic80_libretro.c:340). No call to RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
No code path reads any file from the system directory. All VM resources
(sprites, palette, font, sound engine) are compiled into the binary.
The core never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. There is no
code path that reads any file from the system directory. No BIOS, firmware,
or boot ROM exists for this platform -- TIC-80 is a self-contained virtual
machine with all system resources built into the engine binary.
The TIC-80 VM provides 80x45 tilemap, 240x136 screen, 256 8x8 sprites,
4 channels of sound, and supports Lua, Moonscript, JavaScript, Wren,
Fennel, Squirrel, Ruby, Python, and Janet as scripting languages.
TIC_MODULE_EXT (dynamic scripting plugins) is disabled in libretro
builds via #if !defined(__LIBRETRO__) in tic80_config.h:36.
files: []
@@ -34,14 +31,12 @@ platform_details:
extensions: "tic, png"
source_ref: "tic80_libretro.c:339"
notes: |
.tic is the native cartridge format containing code, sprites, map,
sound, and music data. .png support allows loading cartridges
.tic is the native cartridge format. .png loads cartridges
encoded as cover images (code stored in PNG metadata).
runtime:
source_ref: "nesbox/TIC-80 (submodule at core/)"
notes: |
The entire TIC-80 runtime (CPU, GPU, APU, scripting engines) is
compiled into the core binary. No external dependencies at runtime.
Entire runtime compiled into the binary. No external dependencies.
State serialization uses TIC_PERSISTENT_SIZE * 4 bytes of pmem()
data (tic80_libretro.c:1203-1243).

View File

@@ -159,6 +159,16 @@ data_directories:
strip_components: 1
description: "FreeIntv per-game controller overlay PNGs"
# ref: crawl-ref/source/files.cc:375-458 — datafile_path() dat/ tree
# Not on buildbot — sourced from libretro repo
# 532 files (tiles, fonts, databases, lua scripts, level descriptions)
stonesoup:
source_url: "https://github.com/libretro/crawl-ref"
source_type: git_subtree
source_path: "crawl-ref/source/dat"
local_cache: data/stonesoup
description: "DCSS game data (tiles, fonts, databases, lua, level descriptions)"
# ref: dirksimple — system/
dirksimple:
source_url: "https://buildbot.libretro.com/assets/system/DirkSimple.zip"

View File

@@ -557,13 +557,21 @@ def _build_validation_index(profiles: dict) -> dict[str, dict]:
# Hash checks — collect all accepted hashes as sets (multiple valid
# versions of the same file, e.g. MT-32 ROM versions)
if "crc32" in checks and f.get("crc32"):
norm = f["crc32"].lower()
crc_val = f["crc32"]
crc_list = crc_val if isinstance(crc_val, list) else [crc_val]
for cv in crc_list:
norm = str(cv).lower()
if norm.startswith("0x"):
norm = norm[2:]
index[fname]["crc32"].add(norm)
for hash_type in ("md5", "sha1", "sha256"):
if hash_type in checks and f.get(hash_type):
index[fname][hash_type].add(f[hash_type].lower())
val = f[hash_type]
if isinstance(val, list):
for h in val:
index[fname][hash_type].add(str(h).lower())
else:
index[fname][hash_type].add(str(val).lower())
# Adler32 — stored as known_hash_adler32 field (not in validation: list
# for Dolphin, but support it in both forms for future profiles)
adler_val = f.get("known_hash_adler32") or f.get("adler32")