mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-13 12:22:33 -05:00
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:
21
.github/workflows/build.yml
vendored
21
.github/workflows/build.yml
vendored
@@ -11,9 +11,7 @@ on:
|
|||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
|
|
||||||
permissions:
|
permissions: {}
|
||||||
contents: write
|
|
||||||
pages: write
|
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: build
|
group: build
|
||||||
@@ -22,6 +20,11 @@ concurrency:
|
|||||||
jobs:
|
jobs:
|
||||||
regenerate:
|
regenerate:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pages: write
|
||||||
|
outputs:
|
||||||
|
changed: ${{ steps.commit.outputs.changed }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
@@ -57,6 +60,9 @@ jobs:
|
|||||||
python scripts/generate_readme.py --db database.json --platforms-dir platforms
|
python scripts/generate_readme.py --db database.json --platforms-dir platforms
|
||||||
python scripts/generate_site.py
|
python scripts/generate_site.py
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: python -m unittest tests.test_e2e -v
|
||||||
|
|
||||||
- name: Deploy site to GitHub Pages
|
- name: Deploy site to GitHub Pages
|
||||||
if: github.ref == 'refs/heads/main'
|
if: github.ref == 'refs/heads/main'
|
||||||
run: mkdocs gh-deploy --force --clean
|
run: mkdocs gh-deploy --force --clean
|
||||||
@@ -74,8 +80,10 @@ jobs:
|
|||||||
|
|
||||||
release:
|
release:
|
||||||
needs: regenerate
|
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
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
steps:
|
steps:
|
||||||
- name: Rate limit
|
- name: Rate limit
|
||||||
if: github.event.inputs.force_release != 'true'
|
if: github.event.inputs.force_release != 'true'
|
||||||
@@ -105,6 +113,10 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
if: steps.rate.outputs.skip != 'true'
|
||||||
|
run: pip install pyyaml
|
||||||
|
|
||||||
- name: Refresh data directories
|
- name: Refresh data directories
|
||||||
if: steps.rate.outputs.skip != 'true'
|
if: steps.rate.outputs.skip != 'true'
|
||||||
run: python scripts/refresh_data_dirs.py
|
run: python scripts/refresh_data_dirs.py
|
||||||
@@ -113,7 +125,6 @@ jobs:
|
|||||||
- name: Build packs
|
- name: Build packs
|
||||||
if: steps.rate.outputs.skip != 'true'
|
if: steps.rate.outputs.skip != 'true'
|
||||||
run: |
|
run: |
|
||||||
pip install pyyaml
|
|
||||||
python scripts/generate_db.py --bios-dir bios --output database.json
|
python scripts/generate_db.py --bios-dir bios --output database.json
|
||||||
python scripts/generate_pack.py --all --output-dir dist/
|
python scripts/generate_pack.py --all --output-dir dist/
|
||||||
|
|
||||||
|
|||||||
100
.github/workflows/validate.yml
vendored
100
.github/workflows/validate.yml
vendored
@@ -31,8 +31,11 @@ jobs:
|
|||||||
|
|
||||||
- name: Get changed BIOS files
|
- name: Get changed BIOS files
|
||||||
id: changed
|
id: changed
|
||||||
|
env:
|
||||||
|
BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
||||||
|
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
|
||||||
run: |
|
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=$files" >> "$GITHUB_OUTPUT"
|
||||||
echo "$files" > /tmp/changed_files.txt
|
echo "$files" > /tmp/changed_files.txt
|
||||||
|
|
||||||
@@ -46,17 +49,11 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Post validation report
|
- name: Post validation report
|
||||||
uses: actions/github-script@v8
|
if: always()
|
||||||
with:
|
run: |
|
||||||
script: |
|
gh pr comment "${{ github.event.pull_request.number }}" --body-file /tmp/report.md
|
||||||
const fs = require('fs');
|
env:
|
||||||
const report = fs.readFileSync('/tmp/report.md', 'utf8');
|
GH_TOKEN: ${{ github.token }}
|
||||||
await github.rest.issues.createComment({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
issue_number: context.issue.number,
|
|
||||||
body: report
|
|
||||||
});
|
|
||||||
|
|
||||||
validate-configs:
|
validate-configs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -68,7 +65,7 @@ jobs:
|
|||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pip install pyyaml jsonschema
|
run: pip install pyyaml jsonschema==4.23.0
|
||||||
|
|
||||||
- name: Validate platform configs
|
- name: Validate platform configs
|
||||||
run: |
|
run: |
|
||||||
@@ -88,15 +85,30 @@ jobs:
|
|||||||
config = yaml.safe_load(f)
|
config = yaml.safe_load(f)
|
||||||
try:
|
try:
|
||||||
validate(config, schema)
|
validate(config, schema)
|
||||||
print(f'✅ {yml_file.name}')
|
print(f'OK {yml_file.name}')
|
||||||
except ValidationError as e:
|
except ValidationError as e:
|
||||||
errors.append(f'{yml_file.name}: {e.message}')
|
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:
|
if errors:
|
||||||
sys.exit(1)
|
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:
|
label-pr:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
@@ -107,43 +119,25 @@ jobs:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Auto-label PR
|
- name: Auto-label PR
|
||||||
uses: actions/github-script@v8
|
run: |
|
||||||
with:
|
labels=""
|
||||||
script: |
|
files=$(gh pr diff "${{ github.event.pull_request.number }}" --name-only)
|
||||||
const { data: files } = await github.rest.pulls.listFiles({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
pull_number: context.issue.number,
|
|
||||||
});
|
|
||||||
|
|
||||||
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) {
|
for label in $labels; do
|
||||||
if (file.filename.startsWith('bios/')) {
|
gh pr edit "${{ github.event.pull_request.number }}" --add-label "$label" 2>/dev/null || true
|
||||||
labels.add('bios');
|
done
|
||||||
// Extract system from path
|
env:
|
||||||
const parts = file.filename.split('/');
|
GH_TOKEN: ${{ github.token }}
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"generated_at": "2026-03-24T21:16:05Z",
|
"generated_at": "2026-03-25T05:56:02Z",
|
||||||
"total_files": 6733,
|
"total_files": 6733,
|
||||||
"total_size": 5288644732,
|
"total_size": 5288644732,
|
||||||
"files": {
|
"files": {
|
||||||
@@ -93684,6 +93684,10 @@
|
|||||||
"4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
"4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
||||||
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
|
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
|
||||||
],
|
],
|
||||||
|
"dmg0_rom.bin": [
|
||||||
|
"4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
||||||
|
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
|
||||||
|
],
|
||||||
"sgb_bios.bin": [
|
"sgb_bios.bin": [
|
||||||
"aa2f50a77dfb4823da96ba99309085a3c6278515",
|
"aa2f50a77dfb4823da96ba99309085a3c6278515",
|
||||||
"369e6eb5e0c975eaa52a4a3f6ee07b2a3c3c16de",
|
"369e6eb5e0c975eaa52a4a3f6ee07b2a3c3c16de",
|
||||||
@@ -95178,9 +95182,6 @@
|
|||||||
"DMG_ROM.bin": [
|
"DMG_ROM.bin": [
|
||||||
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
|
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
|
||||||
],
|
],
|
||||||
"dmg0_rom.bin": [
|
|
||||||
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
|
|
||||||
],
|
|
||||||
"amiga-os-300-a4000.rom": [
|
"amiga-os-300-a4000.rom": [
|
||||||
"f0b4e9e29e12218c2d5bd7020e4e785297d91fd7"
|
"f0b4e9e29e12218c2d5bd7020e4e785297d91fd7"
|
||||||
],
|
],
|
||||||
@@ -95211,6 +95212,9 @@
|
|||||||
"terak.rom": [
|
"terak.rom": [
|
||||||
"273a9933b68a290c5aedcd6d69faa7b1d22c0344"
|
"273a9933b68a290c5aedcd6d69faa7b1d22c0344"
|
||||||
],
|
],
|
||||||
|
"BS-X.bios": [
|
||||||
|
"604556b2e62860af18db5a77f2956ebc75450020"
|
||||||
|
],
|
||||||
"upd7801g.bin": [
|
"upd7801g.bin": [
|
||||||
"6e89d1227581c76441a53d605f9e324185f1da33"
|
"6e89d1227581c76441a53d605f9e324185f1da33"
|
||||||
],
|
],
|
||||||
@@ -95220,9 +95224,6 @@
|
|||||||
"FdsBios.bin": [
|
"FdsBios.bin": [
|
||||||
"57fe1bdee955bb48d357e463ccbf129496930b62"
|
"57fe1bdee955bb48d357e463ccbf129496930b62"
|
||||||
],
|
],
|
||||||
"BS-X.bios": [
|
|
||||||
"604556b2e62860af18db5a77f2956ebc75450020"
|
|
||||||
],
|
|
||||||
"N88_0.ROM": [
|
"N88_0.ROM": [
|
||||||
"d1ae642aed4f0584eeb81ff50180db694e5101d4"
|
"d1ae642aed4f0584eeb81ff50180db694e5101d4"
|
||||||
],
|
],
|
||||||
@@ -95292,6 +95293,14 @@
|
|||||||
"2608_RYM.WAV": [
|
"2608_RYM.WAV": [
|
||||||
"c65592330c9dd84011151daed52f9aec926b7e56"
|
"c65592330c9dd84011151daed52f9aec926b7e56"
|
||||||
],
|
],
|
||||||
|
"cgb0_boot.bin": [
|
||||||
|
"80e3ee82416c1a74827a5459fde32f04bf51a1f6",
|
||||||
|
"1293d68bf9643bc4f36954c1e80e38f39864528d"
|
||||||
|
],
|
||||||
|
"cgb_agb_boot.bin": [
|
||||||
|
"80e3ee82416c1a74827a5459fde32f04bf51a1f6",
|
||||||
|
"1293d68bf9643bc4f36954c1e80e38f39864528d"
|
||||||
|
],
|
||||||
"dc_flash_wb.bin": [
|
"dc_flash_wb.bin": [
|
||||||
"72c65f2a11ee7b72b77b9945187b7a332632e14a"
|
"72c65f2a11ee7b72b77b9945187b7a332632e14a"
|
||||||
],
|
],
|
||||||
@@ -95310,12 +95319,6 @@
|
|||||||
"epr-21576d.bin": [
|
"epr-21576d.bin": [
|
||||||
"6d27d71aec4dfba98f66316ae74a1426d567698a"
|
"6d27d71aec4dfba98f66316ae74a1426d567698a"
|
||||||
],
|
],
|
||||||
"cgb0_boot.bin": [
|
|
||||||
"1293d68bf9643bc4f36954c1e80e38f39864528d"
|
|
||||||
],
|
|
||||||
"cgb_agb_boot.bin": [
|
|
||||||
"1293d68bf9643bc4f36954c1e80e38f39864528d"
|
|
||||||
],
|
|
||||||
"nds_sd_card.bin": [
|
"nds_sd_card.bin": [
|
||||||
"3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3"
|
"3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3"
|
||||||
],
|
],
|
||||||
@@ -115616,9 +115619,9 @@
|
|||||||
"9d76f3eefd64e032c763fa1ebf9cd3d9bd22317a",
|
"9d76f3eefd64e032c763fa1ebf9cd3d9bd22317a",
|
||||||
"34fa37599f2f9eb607390ef2458a3c22d87f09a9",
|
"34fa37599f2f9eb607390ef2458a3c22d87f09a9",
|
||||||
"273a9933b68a290c5aedcd6d69faa7b1d22c0344",
|
"273a9933b68a290c5aedcd6d69faa7b1d22c0344",
|
||||||
|
"604556b2e62860af18db5a77f2956ebc75450020",
|
||||||
"6e89d1227581c76441a53d605f9e324185f1da33",
|
"6e89d1227581c76441a53d605f9e324185f1da33",
|
||||||
"57fe1bdee955bb48d357e463ccbf129496930b62",
|
"57fe1bdee955bb48d357e463ccbf129496930b62",
|
||||||
"604556b2e62860af18db5a77f2956ebc75450020",
|
|
||||||
"d1ae642aed4f0584eeb81ff50180db694e5101d4",
|
"d1ae642aed4f0584eeb81ff50180db694e5101d4",
|
||||||
"4ae4d37409ff99411a623da9f6a44192170a854e",
|
"4ae4d37409ff99411a623da9f6a44192170a854e",
|
||||||
"e94278682ef9e9bbb82201f72c50382748dcea2a",
|
"e94278682ef9e9bbb82201f72c50382748dcea2a",
|
||||||
@@ -115636,6 +115639,7 @@
|
|||||||
"db1031585968cfc6ec2ecda5c9a5a52f61444a3b",
|
"db1031585968cfc6ec2ecda5c9a5a52f61444a3b",
|
||||||
"b4f14e58030ed40fff2dc312b58ea4440bdf8cc5",
|
"b4f14e58030ed40fff2dc312b58ea4440bdf8cc5",
|
||||||
"c65592330c9dd84011151daed52f9aec926b7e56",
|
"c65592330c9dd84011151daed52f9aec926b7e56",
|
||||||
|
"80e3ee82416c1a74827a5459fde32f04bf51a1f6",
|
||||||
"72c65f2a11ee7b72b77b9945187b7a332632e14a",
|
"72c65f2a11ee7b72b77b9945187b7a332632e14a",
|
||||||
"6d27d71aec4dfba98f66316ae74a1426d567698a",
|
"6d27d71aec4dfba98f66316ae74a1426d567698a",
|
||||||
"1293d68bf9643bc4f36954c1e80e38f39864528d",
|
"1293d68bf9643bc4f36954c1e80e38f39864528d",
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: PD777
|
emulator: PD777
|
||||||
type: libretro
|
type: libretro
|
||||||
source: "https://github.com/W88DodPECuThLOl/PD777"
|
core_classification: community_fork
|
||||||
profiled_date: "2026-03-18"
|
source: "https://github.com/mittonk/PD777"
|
||||||
|
upstream: "https://github.com/W88DodPECuThLOl/PD777"
|
||||||
|
profiled_date: "2026-03-24"
|
||||||
core_version: "v1.0.0"
|
core_version: "v1.0.0"
|
||||||
display_name: "Epoch - Cassette Vision (PD777)"
|
display_name: "Epoch - Cassette Vision (PD777)"
|
||||||
cores:
|
cores:
|
||||||
@@ -10,12 +12,12 @@ systems:
|
|||||||
- epochcv
|
- epochcv
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
PD777 is an Epoch Cassette Vision emulator (NEC uPD777C CPU) with a libretro
|
PD777 is an Epoch Cassette Vision emulator (NEC uPD777C CPU), by
|
||||||
interface, by W88DodPECuThLOl.
|
W88DodPECuThLOl. Libretro port by Ken Mitton (mittonk).
|
||||||
|
|
||||||
No BIOS or firmware files required. The .info file declares firmware_count = 0.
|
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
|
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.
|
attempts to load a pattern ROM file (.ptn777) by replacing the extension.
|
||||||
|
|
||||||
|
|||||||
@@ -1,63 +1,34 @@
|
|||||||
# Play! emulator BIOS profile
|
emulator: play
|
||||||
# Generated from source analysis of https://github.com/jpd002/Play-
|
|
||||||
# Commit analyzed: HEAD as of 2026-03-17
|
|
||||||
|
|
||||||
emulator: "Play!"
|
|
||||||
type: libretro
|
type: libretro
|
||||||
core_name: play_libretro
|
core_classification: official_port
|
||||||
source: "https://github.com/jpd002/Play-"
|
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"
|
core_version: "Git"
|
||||||
display_name: "Sony - PlayStation 2 (Play!)"
|
display_name: "Sony - PlayStation 2 (Play!)"
|
||||||
systems: [sony-playstation-2]
|
cores:
|
||||||
|
- play
|
||||||
|
systems:
|
||||||
|
- sony-playstation-2
|
||||||
|
|
||||||
bios_directory: null
|
# Full HLE PS2 emulator by Jean-Philip Desjardins.
|
||||||
bios_detection: "hle"
|
# All PS2 subsystems are reimplemented in C++: EE kernel (PS2OS.cpp),
|
||||||
bios_selection: "not_applicable"
|
# IOP BIOS modules (IopBios.cpp), GS, SPU2, VU units.
|
||||||
|
# The libretro core never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
|
||||||
validation:
|
#
|
||||||
method: "none"
|
# LoadBIOS() exists in Ee_SubSystem.cpp:832 but is commented out at line 232.
|
||||||
note: >
|
# IOP modules (SIO2MAN, PADMAN, MCMAN, MCSERV, CDVDMAN, CDVDFSV, etc.)
|
||||||
Play! is a full HLE (High-Level Emulation) PS2 emulator. It does not load or
|
# are all HLE-replaced via m_hleModules in IopBios.cpp:279-290.
|
||||||
require any real PS2 BIOS dump. The LoadBIOS() function in Ee_SubSystem.cpp
|
# _IOP_EMULATE_MODULES=1 is unconditionally defined in CMakeLists.txt:24.
|
||||||
(which would read ./vfs/rom0/scph10000.bin) is commented out in PS2VM.cpp:ResetVM().
|
#
|
||||||
|
# source_ref: Source/ee/Ee_SubSystem.cpp:232 (LoadBIOS commented out)
|
||||||
files: []
|
# source_ref: Source/iop/IopBios.cpp:279-290 (HLE module table)
|
||||||
# No BIOS files required.
|
# source_ref: Source/PS2VM.cpp:483-537 (ResetVM — no BIOS loading)
|
||||||
# IOP modules (rom0:SIO2MAN, rom0:PADMAN, rom0:MCMAN, rom0:MCSERV, etc.)
|
# source_ref: Source/ui_libretro/main_libretro.cpp:546-568 (retro_init — no file I/O)
|
||||||
# are all replaced by HLE implementations in Source/iop/IopBios.cpp.
|
# source_ref: README.md:4 ("Using an external BIOS file is not necessary or possible.")
|
||||||
# The EE kernel/OS is reimplemented in Source/ee/PS2OS.cpp.
|
# source_ref: play_libretro.info (firmware_count absent = 0)
|
||||||
|
|
||||||
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)"}
|
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Play! does not require any PS2 BIOS files. Unlike PCSX2, it uses High-Level
|
Full HLE emulator. No BIOS or firmware files required. firmware_count=0 confirmed by source.
|
||||||
Emulation to reimplement the PS2 kernel, IOP BIOS modules, and system services
|
|
||||||
entirely in C++.
|
|
||||||
|
|
||||||
Key HLE components:
|
files: []
|
||||||
- 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().
|
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
emulator: PocketCDG
|
emulator: PocketCDG
|
||||||
type: utility
|
type: utility
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-pocketcdg"
|
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"
|
core_version: "Git"
|
||||||
display_name: "PocketCDG"
|
display_name: "PocketCDG"
|
||||||
cores: [pocketcdg]
|
cores: [pocketcdg]
|
||||||
systems: []
|
systems: []
|
||||||
files: []
|
files: []
|
||||||
notes: >
|
notes: >
|
||||||
CD+G (CD+Graphics) karaoke player for libretro. Renders the subcode
|
CD+G (CD+Graphics) karaoke player. Renders subcode graphics from .cdg
|
||||||
graphics channel from .cdg files synchronized with audio.
|
files synchronized with MP3 audio. Font and MP3 decoder (libmad)
|
||||||
Loads .cdg content files directly.
|
embedded in the binary.
|
||||||
No BIOS, firmware, or system directory files required.
|
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
emulator: Potator
|
emulator: Potator
|
||||||
type: libretro
|
type: libretro
|
||||||
core_classification: community_fork
|
core_classification: community_fork
|
||||||
source: "https://github.com/libretro/potern"
|
source: "https://github.com/libretro/potator"
|
||||||
profiled_date: "2026-03-21"
|
upstream: "https://github.com/alekmaul/potator"
|
||||||
|
profiled_date: "2026-03-24"
|
||||||
core_version: "1.0.5"
|
core_version: "1.0.5"
|
||||||
display_name: "Watara - Supervision (Potator)"
|
display_name: "Watara - Supervision (Potator)"
|
||||||
cores:
|
cores:
|
||||||
@@ -12,5 +13,6 @@ systems:
|
|||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Watara Supervision emulator. No BIOS required.
|
Watara Supervision emulator. No BIOS required.
|
||||||
|
The Supervision has no BIOS ROM; games execute directly from cartridge.
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -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
|
emulator: PPSSPP
|
||||||
type: standalone
|
type: standalone + libretro
|
||||||
source: "https://github.com/hrydgard/ppsspp"
|
core_classification: official_port
|
||||||
logo: "https://raw.githubusercontent.com/hrydgard/ppsspp/master/icons/icon-512.svg"
|
source: "https://github.com/libretro/ppsspp"
|
||||||
profiled_date: "2026-03-18"
|
upstream: "https://github.com/hrydgard/ppsspp"
|
||||||
|
profiled_date: "2026-03-24"
|
||||||
core_version: "Git"
|
core_version: "Git"
|
||||||
display_name: "Sony - PlayStation Portable (PPSSPP)"
|
display_name: "Sony - PlayStation Portable (PPSSPP)"
|
||||||
|
cores:
|
||||||
|
- ppsspp
|
||||||
systems: [sony-psp]
|
systems: [sony-psp]
|
||||||
|
|
||||||
firmware_required: false
|
pack_structure:
|
||||||
firmware_detection: "none"
|
libretro: "PPSSPP"
|
||||||
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.
|
|
||||||
|
|
||||||
default_firmware_version: 660 # PSP_DEFAULT_FIRMWARE in ConfigValues.h
|
data_directories:
|
||||||
source_ref_firmware: "Core/ConfigValues.h:40"
|
- ref: ppsspp-assets
|
||||||
|
destination: ""
|
||||||
# Bundled assets (shipped with PPSSPP, not from Sony)
|
source_ref: "libretro/libretro.cpp:537,549"
|
||||||
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"
|
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
PPSSPP does NOT require any firmware files, BIOS, or system software from Sony.
|
Full HLE emulator. No Sony firmware or BIOS required.
|
||||||
It is a complete HLE (High Level Emulation) implementation of the PSP operating system.
|
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.
|
files:
|
||||||
When games attempt to load these modules via sceKernelLoadModule, PPSSPP intercepts
|
- name: "ppge_atlas.zim"
|
||||||
the call and activates its built-in HLE implementation.
|
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
|
- name: "ppge_atlas.meta"
|
||||||
Sony PSP fonts. They satisfy the sceFont API but are not identical to real PSP fonts.
|
path: "PPSSPP/ppge_atlas.meta"
|
||||||
For pixel-perfect font rendering, users can place original PGF files in the
|
description: "PPGe atlas metadata (glyph positions, UV coords)"
|
||||||
ms0:/PSP/flash0/font/ override directory.
|
required: false
|
||||||
|
source_ref: "Core/Util/PPGeDraw.cpp:235-237"
|
||||||
The ppge_atlas.zim/meta files provide PPSSPP's system dialog rendering (save/load
|
note: "Loaded after ppge_atlas.zim. Without it, dialog UI has no glyph layout."
|
||||||
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.
|
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
emulator: PrBoom
|
emulator: PrBoom
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: game_engine
|
||||||
source: "https://github.com/libretro/libretro-prboom"
|
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"
|
core_version: "v2.5.0"
|
||||||
display_name: "Doom (PrBoom)"
|
display_name: "Doom (PrBoom)"
|
||||||
|
cores: [prboom]
|
||||||
systems: [doom]
|
systems: [doom]
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
@@ -22,7 +25,7 @@ notes: |
|
|||||||
(d_main.c:1073-1074), so the file is technically optional but expected
|
(d_main.c:1073-1074), so the file is technically optional but expected
|
||||||
for correct rendering of menus, HUD digits, and extended features.
|
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)
|
1. WAD directory (same folder as the loaded game WAD)
|
||||||
2. system/prboom/ subdirectory
|
2. system/prboom/ subdirectory
|
||||||
3. system/ directory directly
|
3. system/ directory directly
|
||||||
@@ -47,5 +50,5 @@ files:
|
|||||||
md5: "72ae1b47820fcc93cc0df9c428d0face"
|
md5: "72ae1b47820fcc93cc0df9c428d0face"
|
||||||
sha1: "5f4aed208301449c2e9514edfd325fe9dead76fa"
|
sha1: "5f4aed208301449c2e9514edfd325fe9dead76fa"
|
||||||
crc32: "a5751b99"
|
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."
|
notes: "Searched in system/prboom/ then system/. Falls back to internal defaults if missing, but menus and HUD may render incorrectly without it."
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: ProSystem
|
emulator: ProSystem
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: community_fork
|
||||||
source: "https://github.com/libretro/prosystem-libretro"
|
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"
|
core_version: "1.3e"
|
||||||
display_name: "Atari - 7800 (ProSystem)"
|
display_name: "Atari - 7800 (ProSystem)"
|
||||||
cores:
|
cores:
|
||||||
@@ -10,51 +12,37 @@ systems:
|
|||||||
- atari-7800
|
- atari-7800
|
||||||
|
|
||||||
notes: |
|
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
|
Region is read from cartridge header byte 57 (core/Cartridge.c:214) or
|
||||||
cartridge header byte 57 (core/Cartridge.c:214) or overridden by the
|
overridden by the internal database (core/Database.c:1739-1757).
|
||||||
internal database (core/Database.c). PAL carts get the (E) BIOS,
|
|
||||||
everything else gets (U).
|
|
||||||
|
|
||||||
Both BIOS files are optional. The core runs games without them, but
|
Both BIOS files are optional. The core runs without them but some titles
|
||||||
some titles may have compatibility issues without the real BIOS
|
have compatibility issues (startup encryption check). bios_Store() maps
|
||||||
(startup encryption check, etc). bios_Store() maps the BIOS data
|
the BIOS into ROM at address (65536 - bios_size).
|
||||||
into the top of the 64K address space (65536 - bios_size).
|
|
||||||
|
|
||||||
No core option controls BIOS loading -- if the file exists in the
|
No core option controls BIOS loading. If the file exists in the system
|
||||||
system directory, it is loaded automatically.
|
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:
|
files:
|
||||||
- name: "7800 BIOS (U).rom"
|
- name: "7800 BIOS (U).rom"
|
||||||
system: atari-7800
|
system: atari-7800
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 4096 # 4 KB
|
size: 4096
|
||||||
note: "NTSC/US Atari 7800 BIOS. Loaded when cartridge_region != REGION_PAL."
|
description: "NTSC/US BIOS, loaded when cartridge_region != REGION_PAL"
|
||||||
source_ref: "core/libretro.c:585"
|
source_ref: "core/libretro.c:585"
|
||||||
|
|
||||||
- name: "7800 BIOS (E).rom"
|
- name: "7800 BIOS (E).rom"
|
||||||
system: atari-7800
|
system: atari-7800
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 16384 # 16 KB (PAL BIOS is larger than NTSC)
|
size: 16384
|
||||||
note: "PAL/EU Atari 7800 BIOS. Loaded when cartridge_region == REGION_PAL."
|
description: "PAL/EU BIOS, loaded when cartridge_region == REGION_PAL"
|
||||||
source_ref: "core/libretro.c:583"
|
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).
|
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
emulator: PUAE (P-UAE)
|
emulator: PUAE (P-UAE)
|
||||||
type: libretro
|
type: libretro
|
||||||
cores: [puae, puae2021]
|
core_classification: community_fork
|
||||||
|
cores: [puae]
|
||||||
source: "https://github.com/libretro/libretro-uae"
|
source: "https://github.com/libretro/libretro-uae"
|
||||||
profiled_date: "2026-03-18"
|
upstream: "https://github.com/GnoStiC/PUAE"
|
||||||
core_version: "5.3.0"
|
profiled_date: "2026-03-24"
|
||||||
|
core_version: "5.3.1"
|
||||||
display_name: "Commodore - Amiga (PUAE)"
|
display_name: "Commodore - Amiga (PUAE)"
|
||||||
systems:
|
systems:
|
||||||
- commodore-amiga
|
- commodore-amiga
|
||||||
@@ -41,7 +43,8 @@ notes: |
|
|||||||
|
|
||||||
WHDLoad support copies kick33180.A500, kick34005.A500, kick40063.A600,
|
WHDLoad support copies kick33180.A500, kick34005.A500, kick40063.A600,
|
||||||
kick40068.A1200 into saves/WHDLoad/Devs/Kickstarts/ for use by WHDLoad
|
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):
|
ROM search order (libretro-core.c retro_config_kickstart):
|
||||||
1. Exact filename in system directory
|
1. Exact filename in system directory
|
||||||
@@ -232,6 +235,27 @@ files:
|
|||||||
- "CD32 Extended-ROM rev 40.60 (1993)(Commodore)(CD32).rom"
|
- "CD32 Extended-ROM rev 40.60 (1993)(Commodore)(CD32).rom"
|
||||||
source_ref: "libretro/libretro-core.h:241-244"
|
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:
|
model_kickstart_map:
|
||||||
A500: {kickstart: "kick34005.A500", ext: null}
|
A500: {kickstart: "kick34005.A500", ext: null}
|
||||||
A500OG: {kickstart: "kick34005.A500", ext: null}
|
A500OG: {kickstart: "kick34005.A500", ext: null}
|
||||||
|
|||||||
295
emulators/puae2021.yml
Normal file
295
emulators/puae2021.yml
Normal 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"
|
||||||
@@ -1,20 +1,21 @@
|
|||||||
emulator: PuzzleScript
|
emulator: PuzzleScript
|
||||||
type: game
|
type: game
|
||||||
source: "https://github.com/libretro/puzzlescript-libretro"
|
core_classification: game_engine
|
||||||
profiled_date: "2026-03-18"
|
source: "https://github.com/nwhitehead/pzretro"
|
||||||
core_version: ""
|
upstream: "https://github.com/increpare/PuzzleScript"
|
||||||
display_name: "PuzzleScript (pzretro)"
|
profiled_date: "2026-03-25"
|
||||||
|
core_version: "0.2.1"
|
||||||
display_name: "PuzzleScript (pzretro)"
|
display_name: "PuzzleScript (pzretro)"
|
||||||
cores:
|
cores:
|
||||||
- puzzlescript
|
- puzzlescript
|
||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Libretro port of PuzzleScript, an open-source HTML5 puzzle game
|
Libretro port of PuzzleScript, an open-source HTML5 puzzle game engine
|
||||||
engine by Stephen Lavelle (increpare). Runs .puz puzzle definition
|
by Stephen Lavelle (increpare). Runs .pz and .pzp puzzle definition files.
|
||||||
files within RetroArch.
|
Also supports PuzzleScript Plus (Auroriax fork) for .pzp files.
|
||||||
|
|
||||||
No BIOS or system files required. The puzzle engine and renderer
|
The PuzzleScript and PuzzleScript Plus JavaScript engines are compiled into
|
||||||
are self-contained.
|
the binary via QuickJS. No external files required.
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: px68k
|
emulator: px68k
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: community_fork
|
||||||
source: "https://github.com/libretro/px68k-libretro"
|
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+"
|
core_version: "0.15+"
|
||||||
display_name: "Sharp - X68000 (PX68k)"
|
display_name: "Sharp - X68000 (PX68k)"
|
||||||
cores:
|
cores:
|
||||||
|
|||||||
@@ -1,19 +1,27 @@
|
|||||||
emulator: QEMU
|
emulator: QEMU
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: community_fork
|
||||||
source: "https://github.com/io12/qemu-libretro"
|
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"
|
core_version: "0.1.0"
|
||||||
display_name: "QEMU"
|
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.
|
# 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.
|
# Builds 17 targets: aarch64, alpha, arm, i386, m68k, mips(el), mips64(el),
|
||||||
# Opens .iso, .img, .qcow, .qcow2 files or custom .qemu_cmd_line for any architecture.
|
# 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.
|
# Default architecture is x86_64 when loading .iso/.img/.qcow directly.
|
||||||
#
|
#
|
||||||
# All BIOS/firmware files are loaded from {retroarch_system_dir}/qemu/
|
# 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.
|
# 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.
|
# 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:
|
files:
|
||||||
# ========================================================
|
# ========================================================
|
||||||
@@ -58,9 +66,7 @@ files:
|
|||||||
md5: "387c48aef9497c6c2b914b1e6b9bc7aa"
|
md5: "387c48aef9497c6c2b914b1e6b9bc7aa"
|
||||||
size: 16384
|
size: 16384
|
||||||
required: false
|
required: false
|
||||||
note: >
|
note: "Minimal x86 firmware for fast Linux kernel booting."
|
||||||
Minimal x86 firmware for fast Linux kernel booting.
|
|
||||||
Alternative to SeaBIOS for Linux-only workloads.
|
|
||||||
source_ref: "pc-bios/meson.build:32"
|
source_ref: "pc-bios/meson.build:32"
|
||||||
|
|
||||||
# ========================================================
|
# ========================================================
|
||||||
@@ -83,9 +89,7 @@ files:
|
|||||||
md5: "fcd3d3c0b07a9096693d69425cd940f6"
|
md5: "fcd3d3c0b07a9096693d69425cd940f6"
|
||||||
size: 38912
|
size: 38912
|
||||||
required: false
|
required: false
|
||||||
note: >
|
note: "Cirrus Logic GD5446 VGA BIOS."
|
||||||
Cirrus Logic GD5446 VGA BIOS. Used by the cirrus-vga PCI
|
|
||||||
device and cirrus-vga-isa ISA device.
|
|
||||||
source_ref: "hw/display/cirrus_vga.c:3001, hw/display/cirrus_vga_isa.c:67"
|
source_ref: "hw/display/cirrus_vga.c:3001, hw/display/cirrus_vga_isa.c:67"
|
||||||
|
|
||||||
- name: "VGA BIOS stdvga"
|
- name: "VGA BIOS stdvga"
|
||||||
@@ -94,9 +98,7 @@ files:
|
|||||||
md5: "8117c3fd986fbbe327badfe38e77db1d"
|
md5: "8117c3fd986fbbe327badfe38e77db1d"
|
||||||
size: 39424
|
size: 39424
|
||||||
required: false
|
required: false
|
||||||
note: >
|
note: "Standard VGA PCI BIOS (Bochs VBE extensions)."
|
||||||
Standard VGA PCI BIOS (Bochs VBE extensions). Used by the
|
|
||||||
VGA PCI device, the most common display adapter for x86.
|
|
||||||
source_ref: "hw/display/vga-pci.c:387"
|
source_ref: "hw/display/vga-pci.c:387"
|
||||||
|
|
||||||
- name: "VGA BIOS bochs-display"
|
- name: "VGA BIOS bochs-display"
|
||||||
@@ -105,7 +107,7 @@ files:
|
|||||||
md5: "83e39bd3e056291ee50d2b5d937bab3e"
|
md5: "83e39bd3e056291ee50d2b5d937bab3e"
|
||||||
size: 28672
|
size: 28672
|
||||||
required: false
|
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"
|
source_ref: "hw/display/bochs-display.c:365"
|
||||||
|
|
||||||
- name: "VGA BIOS ramfb"
|
- name: "VGA BIOS ramfb"
|
||||||
@@ -114,7 +116,7 @@ files:
|
|||||||
md5: "c55512e313c4cb08ec5a36198fdfef33"
|
md5: "c55512e313c4cb08ec5a36198fdfef33"
|
||||||
size: 28672
|
size: 28672
|
||||||
required: false
|
required: false
|
||||||
note: "RAM framebuffer VGA BIOS for simple display output."
|
note: "RAM framebuffer VGA BIOS."
|
||||||
source_ref: "hw/display/ramfb.c:150"
|
source_ref: "hw/display/ramfb.c:150"
|
||||||
|
|
||||||
- name: "VGA BIOS ATI"
|
- name: "VGA BIOS ATI"
|
||||||
@@ -154,7 +156,7 @@ files:
|
|||||||
source_ref: "hw/display/vmware_vga.c:1349"
|
source_ref: "hw/display/vmware_vga.c:1349"
|
||||||
|
|
||||||
# ========================================================
|
# ========================================================
|
||||||
# x86 OPTION ROMs (loaded on demand)
|
# x86 OPTION ROMs
|
||||||
# ========================================================
|
# ========================================================
|
||||||
- name: "KVM VAPIC"
|
- name: "KVM VAPIC"
|
||||||
path: "qemu/kvmvapic.bin"
|
path: "qemu/kvmvapic.bin"
|
||||||
@@ -162,9 +164,7 @@ files:
|
|||||||
md5: "b8cec9572e408a3259914f9aba8664cb"
|
md5: "b8cec9572e408a3259914f9aba8664cb"
|
||||||
size: 9216
|
size: 9216
|
||||||
required: false
|
required: false
|
||||||
note: >
|
note: "KVM virtual APIC option ROM for APIC acceleration on x86."
|
||||||
KVM virtual APIC option ROM. Loaded as option ROM for
|
|
||||||
APIC acceleration on x86.
|
|
||||||
source_ref: "hw/i386/vapic.c:733"
|
source_ref: "hw/i386/vapic.c:733"
|
||||||
|
|
||||||
- name: "Linux boot ROM"
|
- name: "Linux boot ROM"
|
||||||
@@ -200,7 +200,7 @@ files:
|
|||||||
md5: "e942cc4f612050c7331d33a34b0d5192"
|
md5: "e942cc4f612050c7331d33a34b0d5192"
|
||||||
size: 1024
|
size: 1024
|
||||||
required: false
|
required: false
|
||||||
note: "DMA-capable option ROM for Multiboot kernel loading."
|
note: "DMA-capable Multiboot option ROM."
|
||||||
source_ref: "hw/i386/multiboot.c:406"
|
source_ref: "hw/i386/multiboot.c:406"
|
||||||
|
|
||||||
- name: "PVH boot ROM"
|
- name: "PVH boot ROM"
|
||||||
@@ -213,7 +213,7 @@ files:
|
|||||||
source_ref: "hw/i386/x86-common.c:735"
|
source_ref: "hw/i386/x86-common.c:735"
|
||||||
|
|
||||||
# ========================================================
|
# ========================================================
|
||||||
# PXE NETWORK BOOT ROMs (iPXE)
|
# PXE NETWORK BOOT ROMs (iPXE legacy BIOS)
|
||||||
# ========================================================
|
# ========================================================
|
||||||
- name: "PXE e1000"
|
- name: "PXE e1000"
|
||||||
path: "qemu/pxe-e1000.rom"
|
path: "qemu/pxe-e1000.rom"
|
||||||
@@ -222,7 +222,7 @@ files:
|
|||||||
size: 67072
|
size: 67072
|
||||||
required: false
|
required: false
|
||||||
note: "iPXE PXE boot ROM for Intel e1000 NIC (8086:100e)."
|
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"
|
- name: "PXE eepro100"
|
||||||
path: "qemu/pxe-eepro100.rom"
|
path: "qemu/pxe-eepro100.rom"
|
||||||
@@ -230,8 +230,8 @@ files:
|
|||||||
md5: "2f8279177fdc2ce5abc47d9f1e303db1"
|
md5: "2f8279177fdc2ce5abc47d9f1e303db1"
|
||||||
size: 61440
|
size: 61440
|
||||||
required: false
|
required: false
|
||||||
note: "iPXE PXE boot ROM for Intel eepro100 NIC (8086:1209)."
|
note: "iPXE PXE boot ROM for Intel eepro100 NIC (8086:1209). Device default romfile."
|
||||||
source_ref: "pc-bios/README"
|
source_ref: "hw/net/eepro100.c:2077"
|
||||||
|
|
||||||
- name: "PXE ne2k_pci"
|
- name: "PXE ne2k_pci"
|
||||||
path: "qemu/pxe-ne2k_pci.rom"
|
path: "qemu/pxe-ne2k_pci.rom"
|
||||||
@@ -240,7 +240,7 @@ files:
|
|||||||
size: 61440
|
size: 61440
|
||||||
required: false
|
required: false
|
||||||
note: "iPXE PXE boot ROM for NE2000 PCI NIC (1050:0940)."
|
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"
|
- name: "PXE pcnet"
|
||||||
path: "qemu/pxe-pcnet.rom"
|
path: "qemu/pxe-pcnet.rom"
|
||||||
@@ -249,7 +249,7 @@ files:
|
|||||||
size: 61440
|
size: 61440
|
||||||
required: false
|
required: false
|
||||||
note: "iPXE PXE boot ROM for AMD PCnet NIC (1022:2000)."
|
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"
|
- name: "PXE rtl8139"
|
||||||
path: "qemu/pxe-rtl8139.rom"
|
path: "qemu/pxe-rtl8139.rom"
|
||||||
@@ -258,7 +258,7 @@ files:
|
|||||||
size: 61440
|
size: 61440
|
||||||
required: false
|
required: false
|
||||||
note: "iPXE PXE boot ROM for Realtek RTL8139 NIC (10ec:8139)."
|
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"
|
- name: "PXE virtio"
|
||||||
path: "qemu/pxe-virtio.rom"
|
path: "qemu/pxe-virtio.rom"
|
||||||
@@ -267,7 +267,7 @@ files:
|
|||||||
size: 60416
|
size: 60416
|
||||||
required: false
|
required: false
|
||||||
note: "iPXE PXE boot ROM for VirtIO NIC (1af4:1000)."
|
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)
|
# EFI NETWORK BOOT ROMs (iPXE UEFI)
|
||||||
@@ -278,7 +278,7 @@ files:
|
|||||||
md5: "d8330b99643e31b51e7710fa26c7e859"
|
md5: "d8330b99643e31b51e7710fa26c7e859"
|
||||||
size: 159232
|
size: 159232
|
||||||
required: false
|
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"
|
source_ref: "hw/net/e1000.c:1708"
|
||||||
|
|
||||||
- name: "EFI e1000e"
|
- name: "EFI e1000e"
|
||||||
@@ -287,7 +287,7 @@ files:
|
|||||||
md5: "a55bf3f4988d4a736c71a1300636cd69"
|
md5: "a55bf3f4988d4a736c71a1300636cd69"
|
||||||
size: 159232
|
size: 159232
|
||||||
required: false
|
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"
|
source_ref: "hw/net/e1000e.c:689"
|
||||||
|
|
||||||
- name: "EFI eepro100"
|
- name: "EFI eepro100"
|
||||||
@@ -297,7 +297,7 @@ files:
|
|||||||
size: 159232
|
size: 159232
|
||||||
required: false
|
required: false
|
||||||
note: "iPXE EFI boot ROM for Intel eepro100 NIC."
|
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"
|
- name: "EFI ne2k_pci"
|
||||||
path: "qemu/efi-ne2k_pci.rom"
|
path: "qemu/efi-ne2k_pci.rom"
|
||||||
@@ -305,7 +305,7 @@ files:
|
|||||||
md5: "10b66275b3644af301c64a3c545c3daf"
|
md5: "10b66275b3644af301c64a3c545c3daf"
|
||||||
size: 157696
|
size: 157696
|
||||||
required: false
|
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"
|
source_ref: "hw/net/ne2000-pci.c:111"
|
||||||
|
|
||||||
- name: "EFI pcnet"
|
- name: "EFI pcnet"
|
||||||
@@ -314,7 +314,7 @@ files:
|
|||||||
md5: "374696f4fffa83c9cf18272212c21d83"
|
md5: "374696f4fffa83c9cf18272212c21d83"
|
||||||
size: 157696
|
size: 157696
|
||||||
required: false
|
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"
|
source_ref: "hw/net/pcnet-pci.c:267"
|
||||||
|
|
||||||
- name: "EFI rtl8139"
|
- name: "EFI rtl8139"
|
||||||
@@ -323,7 +323,7 @@ files:
|
|||||||
md5: "f81dbbd7001a8db631f2a548b7d08c4e"
|
md5: "f81dbbd7001a8db631f2a548b7d08c4e"
|
||||||
size: 160768
|
size: 160768
|
||||||
required: false
|
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"
|
source_ref: "hw/net/rtl8139.c:3423"
|
||||||
|
|
||||||
- name: "EFI virtio"
|
- name: "EFI virtio"
|
||||||
@@ -332,8 +332,8 @@ files:
|
|||||||
md5: "d3887f04c23035cae3f0e1075deea459"
|
md5: "d3887f04c23035cae3f0e1075deea459"
|
||||||
size: 160768
|
size: 160768
|
||||||
required: false
|
required: false
|
||||||
note: "iPXE EFI boot ROM for VirtIO NIC."
|
note: "iPXE EFI boot ROM for VirtIO NIC. Device default romfile."
|
||||||
source_ref: "pc-bios/meson.build:58"
|
source_ref: "hw/virtio/virtio-net-pci.c:73"
|
||||||
|
|
||||||
- name: "EFI vmxnet3"
|
- name: "EFI vmxnet3"
|
||||||
path: "qemu/efi-vmxnet3.rom"
|
path: "qemu/efi-vmxnet3.rom"
|
||||||
@@ -341,57 +341,132 @@ files:
|
|||||||
md5: "ea1ba222dbd5aa356ea1f29393ae55e1"
|
md5: "ea1ba222dbd5aa356ea1f29393ae55e1"
|
||||||
size: 156672
|
size: 156672
|
||||||
required: false
|
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"
|
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
|
# POWERPC FIRMWARE
|
||||||
# ========================================================
|
# ========================================================
|
||||||
- name: "OpenBIOS PowerPC"
|
- name: "OpenBIOS PowerPC"
|
||||||
path: "qemu/openbios-ppc"
|
path: "qemu/openbios-ppc"
|
||||||
sha1: "0ef5051dcb318c0bc45d1908f8318d6eece8686a"
|
sha1: "0ef5051dcb318c0bc45d1908f8318d6eece8686a"
|
||||||
md5: ""
|
|
||||||
size: 677196
|
size: 677196
|
||||||
required: false
|
required: false
|
||||||
note: >
|
note: >
|
||||||
OpenBIOS (IEEE 1275 Open Firmware) for PowerPC emulation.
|
OpenBIOS (IEEE 1275 Open Firmware) for PowerPC emulation.
|
||||||
Required for -M mac99, -M g3beige and other PPC machines.
|
Default for -M mac99, -M g3beige and other PPC machines.
|
||||||
source_ref: "pc-bios/README"
|
source_ref: "hw/ppc/mac_oldworld.c:60, hw/ppc/mac_newworld.c:86"
|
||||||
|
|
||||||
- name: "SLOF (Slimline Open Firmware)"
|
- name: "SLOF (Slimline Open Firmware)"
|
||||||
path: "qemu/slof.bin"
|
path: "qemu/slof.bin"
|
||||||
sha1: "a03a94acfe555804d66cc6c74760ae1375a71a64"
|
sha1: "a03a94acfe555804d66cc6c74760ae1375a71a64"
|
||||||
md5: ""
|
|
||||||
size: 995000
|
size: 995000
|
||||||
required: false
|
required: false
|
||||||
note: >
|
note: "IBM SLOF firmware for pSeries (POWER) machine type. Built from qemu-slof-20230918."
|
||||||
IBM SLOF firmware for pSeries (POWER) machine type.
|
source_ref: "hw/ppc/spapr.c:106"
|
||||||
Built from qemu-slof-20230918 tag.
|
|
||||||
source_ref: "pc-bios/README"
|
|
||||||
|
|
||||||
- name: "skiboot"
|
- name: "skiboot"
|
||||||
path: "qemu/skiboot.lid"
|
path: "qemu/skiboot.lid"
|
||||||
sha1: "8052069aa9714c23be05b4e62fb245a3d572cb0f"
|
sha1: "8052069aa9714c23be05b4e62fb245a3d572cb0f"
|
||||||
md5: ""
|
|
||||||
size: 2527328
|
size: 2527328
|
||||||
required: false
|
required: false
|
||||||
note: >
|
note: "OPAL firmware for OpenPOWER PowerNV (non-virtualized) machine type."
|
||||||
OPAL firmware for OpenPOWER PowerNV (non-virtualized) machine type.
|
source_ref: "hw/ppc/pnv.c:63"
|
||||||
source_ref: "pc-bios/README"
|
|
||||||
|
|
||||||
- name: "VOF (Virtual Open Firmware)"
|
- name: "VOF (Virtual Open Firmware)"
|
||||||
path: "qemu/vof.bin"
|
path: "qemu/vof.bin"
|
||||||
sha1: "fc737b34a390f5752cb7e35b33d71f4f438ab607"
|
sha1: "fc737b34a390f5752cb7e35b33d71f4f438ab607"
|
||||||
md5: ""
|
|
||||||
size: 3456
|
size: 3456
|
||||||
required: false
|
required: false
|
||||||
note: "Minimal Open Firmware shim for -machine pseries,x-vof=on."
|
note: "Minimal Open Firmware shim for -machine pseries,x-vof=on. Also default for Pegasos II."
|
||||||
source_ref: "pc-bios/README"
|
source_ref: "hw/ppc/spapr.c:107, hw/ppc/pegasos2.c:43"
|
||||||
|
|
||||||
- name: "VOF NVRAM"
|
- name: "VOF NVRAM"
|
||||||
path: "qemu/vof-nvram.bin"
|
path: "qemu/vof-nvram.bin"
|
||||||
sha1: "5d1184609b87f78635f0575467a1c3f440900ff0"
|
sha1: "5d1184609b87f78635f0575467a1c3f440900ff0"
|
||||||
md5: ""
|
|
||||||
size: 16384
|
size: 16384
|
||||||
required: false
|
required: false
|
||||||
note: "NVRAM template for VOF (Virtual Open Firmware)."
|
note: "NVRAM template for VOF (Virtual Open Firmware)."
|
||||||
@@ -400,18 +475,14 @@ files:
|
|||||||
- name: "U-Boot e500"
|
- name: "U-Boot e500"
|
||||||
path: "qemu/u-boot.e500"
|
path: "qemu/u-boot.e500"
|
||||||
sha1: "9ea03f249f856cdcb4399cc1f5a5031729379911"
|
sha1: "9ea03f249f856cdcb4399cc1f5a5031729379911"
|
||||||
md5: ""
|
|
||||||
size: 421720
|
size: 421720
|
||||||
required: false
|
required: false
|
||||||
note: >
|
note: "U-Boot for PowerPC e500 (qemu-ppce500 target). Built from upstream denx u-boot, commit 2072e72."
|
||||||
U-Boot for PowerPC e500 (qemu-ppce500 target).
|
source_ref: "hw/ppc/e500.c:1184"
|
||||||
Built from upstream denx u-boot, commit 2072e72.
|
|
||||||
source_ref: "pc-bios/README"
|
|
||||||
|
|
||||||
- name: "U-Boot SAM460"
|
- name: "U-Boot SAM460"
|
||||||
path: "qemu/u-boot-sam460-20100605.bin"
|
path: "qemu/u-boot-sam460-20100605.bin"
|
||||||
sha1: "0399a79ac0cf77f0da70af9baec7548a3b368f0a"
|
sha1: "0399a79ac0cf77f0da70af9baec7548a3b368f0a"
|
||||||
md5: ""
|
|
||||||
size: 524288
|
size: 524288
|
||||||
required: false
|
required: false
|
||||||
note: "U-Boot for Sam460ex (AmigaOne) PowerPC board."
|
note: "U-Boot for Sam460ex (AmigaOne) PowerPC board."
|
||||||
@@ -420,11 +491,10 @@ files:
|
|||||||
- name: "QEMU VGA Mac driver"
|
- name: "QEMU VGA Mac driver"
|
||||||
path: "qemu/qemu_vga.ndrv"
|
path: "qemu/qemu_vga.ndrv"
|
||||||
sha1: "638c6262a6eb579ec3d1c9292566ac94c942dc15"
|
sha1: "638c6262a6eb579ec3d1c9292566ac94c942dc15"
|
||||||
md5: ""
|
|
||||||
size: 18752
|
size: 18752
|
||||||
required: false
|
required: false
|
||||||
note: "QemuMacDrivers VGA driver for PPC MacOS guests."
|
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
|
# SPARC FIRMWARE
|
||||||
@@ -432,38 +502,41 @@ files:
|
|||||||
- name: "OpenBIOS Sparc32"
|
- name: "OpenBIOS Sparc32"
|
||||||
path: "qemu/openbios-sparc32"
|
path: "qemu/openbios-sparc32"
|
||||||
sha1: "5a4f2124c8f093f8aee99fbcebcf5d17d789ff26"
|
sha1: "5a4f2124c8f093f8aee99fbcebcf5d17d789ff26"
|
||||||
md5: ""
|
|
||||||
size: 382080
|
size: 382080
|
||||||
required: false
|
required: false
|
||||||
note: >
|
note: "OpenBIOS for Sparc32 emulation (sun4m)."
|
||||||
OpenBIOS for Sparc32 emulation. Includes QEMU,tcx.bin
|
source_ref: "hw/sparc/sun4m.c:79"
|
||||||
and QEMU,cgthree.bin display drivers.
|
|
||||||
source_ref: "pc-bios/README"
|
|
||||||
|
|
||||||
- name: "OpenBIOS Sparc64"
|
- name: "OpenBIOS Sparc64"
|
||||||
path: "qemu/openbios-sparc64"
|
path: "qemu/openbios-sparc64"
|
||||||
sha1: "c6e215fe460629d35688ab8e51faf6f765827cd6"
|
sha1: "c6e215fe460629d35688ab8e51faf6f765827cd6"
|
||||||
md5: ""
|
|
||||||
size: 1593408
|
size: 1593408
|
||||||
required: false
|
required: false
|
||||||
note: "OpenBIOS for Sparc64 (UltraSPARC) emulation."
|
note: "OpenBIOS for Sparc64 (UltraSPARC) emulation (sun4u)."
|
||||||
source_ref: "pc-bios/README"
|
source_ref: "hw/sparc64/sun4u.c:67"
|
||||||
|
|
||||||
- name: "QEMU TCX display"
|
- name: "QEMU TCX display"
|
||||||
path: "qemu/QEMU,tcx.bin"
|
path: "qemu/QEMU,tcx.bin"
|
||||||
sha1: ""
|
sha1: "5f1792a73ee47d78b2160191ecb2c92f353f93ad"
|
||||||
md5: ""
|
size: 1402
|
||||||
required: false
|
required: false
|
||||||
note: "TCX framebuffer FCode driver for Sparc32 OpenBIOS."
|
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"
|
- name: "QEMU cgthree display"
|
||||||
path: "qemu/QEMU,cgthree.bin"
|
path: "qemu/QEMU,cgthree.bin"
|
||||||
sha1: ""
|
sha1: "619b86fb02faf8f682474be3f0653b58015008ba"
|
||||||
md5: ""
|
size: 850
|
||||||
required: false
|
required: false
|
||||||
note: "CG3 framebuffer FCode driver for Sparc32 OpenBIOS."
|
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
|
# ALPHA FIRMWARE
|
||||||
@@ -471,11 +544,10 @@ files:
|
|||||||
- name: "Alpha PALcode"
|
- name: "Alpha PALcode"
|
||||||
path: "qemu/palcode-clipper"
|
path: "qemu/palcode-clipper"
|
||||||
sha1: "47b0870aaa45a7aa0d48847fd905908fb06f3e9f"
|
sha1: "47b0870aaa45a7aa0d48847fd905908fb06f3e9f"
|
||||||
md5: ""
|
|
||||||
size: 153728
|
size: 153728
|
||||||
required: false
|
required: false
|
||||||
note: "PALcode firmware for Alpha (Clipper/DP264) machine emulation."
|
note: "PALcode firmware for Alpha (Clipper/DP264) machine emulation."
|
||||||
source_ref: "pc-bios/README"
|
source_ref: "hw/alpha/dp264.c:139"
|
||||||
|
|
||||||
# ========================================================
|
# ========================================================
|
||||||
# RISC-V FIRMWARE
|
# RISC-V FIRMWARE
|
||||||
@@ -483,24 +555,18 @@ files:
|
|||||||
- name: "OpenSBI RISC-V 32"
|
- name: "OpenSBI RISC-V 32"
|
||||||
path: "qemu/opensbi-riscv32-generic-fw_dynamic.bin"
|
path: "qemu/opensbi-riscv32-generic-fw_dynamic.bin"
|
||||||
sha1: "7a23dfdeef3d78ffc89d86e89fc06a36f1e4386f"
|
sha1: "7a23dfdeef3d78ffc89d86e89fc06a36f1e4386f"
|
||||||
md5: ""
|
|
||||||
size: 268312
|
size: 268312
|
||||||
required: false
|
required: false
|
||||||
note: >
|
note: "OpenSBI (Supervisor Binary Interface) firmware for RISC-V 32-bit."
|
||||||
OpenSBI (Supervisor Binary Interface) firmware for RISC-V 32-bit.
|
source_ref: "hw/riscv/boot.c:92"
|
||||||
Required for riscv32-softmmu machine types.
|
|
||||||
source_ref: "pc-bios/README"
|
|
||||||
|
|
||||||
- name: "OpenSBI RISC-V 64"
|
- name: "OpenSBI RISC-V 64"
|
||||||
path: "qemu/opensbi-riscv64-generic-fw_dynamic.bin"
|
path: "qemu/opensbi-riscv64-generic-fw_dynamic.bin"
|
||||||
sha1: "6883bfd1991c0ef0d67b0967e7dcbd60420dd480"
|
sha1: "6883bfd1991c0ef0d67b0967e7dcbd60420dd480"
|
||||||
md5: ""
|
|
||||||
size: 272504
|
size: 272504
|
||||||
required: false
|
required: false
|
||||||
note: >
|
note: "OpenSBI firmware for RISC-V 64-bit."
|
||||||
OpenSBI firmware for RISC-V 64-bit.
|
source_ref: "hw/riscv/boot.c:92"
|
||||||
Required for riscv64-softmmu machine types.
|
|
||||||
source_ref: "pc-bios/README"
|
|
||||||
|
|
||||||
# ========================================================
|
# ========================================================
|
||||||
# S390X FIRMWARE
|
# S390X FIRMWARE
|
||||||
@@ -508,20 +574,18 @@ files:
|
|||||||
- name: "S390 CCW firmware"
|
- name: "S390 CCW firmware"
|
||||||
path: "qemu/s390-ccw.img"
|
path: "qemu/s390-ccw.img"
|
||||||
sha1: "7b4fa888d32ca8ddbc752f7442e4d055cee1871a"
|
sha1: "7b4fa888d32ca8ddbc752f7442e4d055cee1871a"
|
||||||
md5: ""
|
|
||||||
size: 42608
|
size: 42608
|
||||||
required: false
|
required: false
|
||||||
note: "Channel Command Word boot firmware for s390x emulation."
|
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"
|
- name: "S390 network boot"
|
||||||
path: "qemu/s390-netboot.img"
|
path: "qemu/s390-netboot.img"
|
||||||
sha1: "f6cec671408117bd9a31e982682662f27ef4fb2c"
|
sha1: "f6cec671408117bd9a31e982682662f27ef4fb2c"
|
||||||
md5: ""
|
|
||||||
size: 67232
|
size: 67232
|
||||||
required: false
|
required: false
|
||||||
note: "Network boot firmware for s390x emulation."
|
note: "Network boot firmware for s390x emulation."
|
||||||
source_ref: "pc-bios/meson.build:69"
|
source_ref: "hw/s390x/ipl.c:497"
|
||||||
|
|
||||||
# ========================================================
|
# ========================================================
|
||||||
# HP-PA FIRMWARE
|
# HP-PA FIRMWARE
|
||||||
@@ -529,20 +593,77 @@ files:
|
|||||||
- name: "HP-PA firmware (32-bit)"
|
- name: "HP-PA firmware (32-bit)"
|
||||||
path: "qemu/hppa-firmware.img"
|
path: "qemu/hppa-firmware.img"
|
||||||
sha1: "605c36ede6c120c6cc7efe147a75a3dc4b7e4fb0"
|
sha1: "605c36ede6c120c6cc7efe147a75a3dc4b7e4fb0"
|
||||||
md5: ""
|
|
||||||
size: 167820
|
size: 167820
|
||||||
required: false
|
required: false
|
||||||
note: "SeaBIOS-hppa firmware for 32-bit HP-PARISC emulation."
|
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)"
|
- name: "HP-PA firmware (64-bit)"
|
||||||
path: "qemu/hppa-firmware64.img"
|
path: "qemu/hppa-firmware64.img"
|
||||||
sha1: "b42f6d4ca74073de6c038579b4a9323ad0a6b398"
|
sha1: "b42f6d4ca74073de6c038579b4a9323ad0a6b398"
|
||||||
md5: ""
|
|
||||||
size: 206024
|
size: 206024
|
||||||
required: false
|
required: false
|
||||||
note: "SeaBIOS-hppa firmware for 64-bit HP-PARISC emulation."
|
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
|
# DEVICE TREE BLOBS
|
||||||
@@ -550,50 +671,41 @@ files:
|
|||||||
- name: "Bamboo DTB (PPC)"
|
- name: "Bamboo DTB (PPC)"
|
||||||
path: "qemu/bamboo.dtb"
|
path: "qemu/bamboo.dtb"
|
||||||
sha1: "ebdf1745479f4ec88459bbd9ef16ee1114018508"
|
sha1: "ebdf1745479f4ec88459bbd9ef16ee1114018508"
|
||||||
md5: ""
|
|
||||||
size: 3211
|
size: 3211
|
||||||
required: false
|
required: false
|
||||||
note: "Device tree blob for PowerPC Bamboo (440EP) board."
|
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)"
|
- name: "Canyonlands DTB (PPC)"
|
||||||
path: "qemu/canyonlands.dtb"
|
path: "qemu/canyonlands.dtb"
|
||||||
sha1: "8a2fda0b4f23a92eb44776b5d7ffe951987062da"
|
sha1: "8a2fda0b4f23a92eb44776b5d7ffe951987062da"
|
||||||
md5: ""
|
|
||||||
size: 9779
|
size: 9779
|
||||||
required: false
|
required: false
|
||||||
note: "Device tree blob for PowerPC Canyonlands (460EX) board."
|
note: "Device tree blob for PowerPC Canyonlands (460EX) / Sam460ex board."
|
||||||
source_ref: "pc-bios/meson.build:89"
|
source_ref: "hw/ppc/sam460ex.c:45"
|
||||||
|
|
||||||
- name: "Petalogix ML605 DTB (MicroBlaze)"
|
- name: "Petalogix ML605 DTB (MicroBlaze)"
|
||||||
path: "qemu/petalogix-ml605.dtb"
|
path: "qemu/petalogix-ml605.dtb"
|
||||||
sha1: "892d265838866869b8a8ef104252ff5b2fda156f"
|
sha1: "892d265838866869b8a8ef104252ff5b2fda156f"
|
||||||
md5: ""
|
|
||||||
size: 9882
|
size: 9882
|
||||||
required: false
|
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"
|
source_ref: "pc-bios/meson.build:91"
|
||||||
|
|
||||||
- name: "Petalogix S3ADSP1800 DTB (MicroBlaze)"
|
- name: "Petalogix S3ADSP1800 DTB (MicroBlaze)"
|
||||||
path: "qemu/petalogix-s3adsp1800.dtb"
|
path: "qemu/petalogix-s3adsp1800.dtb"
|
||||||
sha1: "976600e3f89ecc1f3564b7077f53c58e0b565280"
|
sha1: "976600e3f89ecc1f3564b7077f53c58e0b565280"
|
||||||
md5: ""
|
|
||||||
size: 8161
|
size: 8161
|
||||||
required: false
|
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"
|
source_ref: "pc-bios/meson.build:90"
|
||||||
|
|
||||||
# ========================================================
|
- name: "Virtex ML507 DTB (PPC)"
|
||||||
# OTHER
|
path: "qemu/virtex-ml507.dtb"
|
||||||
# ========================================================
|
sha1: ""
|
||||||
- name: "NPCM7xx boot ROM"
|
|
||||||
path: "qemu/npcm7xx_bootrom.bin"
|
|
||||||
sha1: "22a75d26a0591d2c7763765b6381fa2f73de43e1"
|
|
||||||
md5: ""
|
|
||||||
size: 768
|
|
||||||
required: false
|
required: false
|
||||||
note: "Boot ROM for Nuvoton NPCM7xx BMC (ARM Cortex-A9)."
|
note: "Device tree blob for Xilinx Virtex ML507 PowerPC board. Not shipped with QEMU."
|
||||||
source_ref: "pc-bios/README"
|
source_ref: "hw/ppc/virtex_ml507.c:148"
|
||||||
|
|
||||||
notes:
|
notes:
|
||||||
bios_directory: >
|
bios_directory: >
|
||||||
@@ -605,10 +717,12 @@ notes:
|
|||||||
Other VGA BIOS variants are loaded depending on the emulated GPU.
|
Other VGA BIOS variants are loaded depending on the emulated GPU.
|
||||||
PXE/EFI ROMs are only needed for network booting.
|
PXE/EFI ROMs are only needed for network booting.
|
||||||
multi_arch: >
|
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
|
is only needed when using .qemu_cmd_line files that invoke a different
|
||||||
qemu-system-* binary (e.g. qemu-system-ppc for MacOS 9).
|
qemu-system-* binary (e.g. qemu-system-ppc for MacOS 9).
|
||||||
experimental: >
|
edk2: >
|
||||||
This core is marked is_experimental=true in its .info file.
|
EDK2 UEFI firmware is shipped as bz2-compressed blobs in pc-bios/. These
|
||||||
Savestates are not supported.
|
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)"
|
version: "Based on QEMU 9.0.50 (io12/qemu-libretro)"
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: QUASI88
|
emulator: QUASI88
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: community_fork
|
||||||
source: "https://github.com/libretro/quasi88-libretro"
|
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"
|
core_version: "0.6.4"
|
||||||
display_name: "NEC - PC-8000 / PC-8800 series (QUASI88)"
|
display_name: "NEC - PC-8000 / PC-8800 series (QUASI88)"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,69 +11,63 @@ cores:
|
|||||||
systems:
|
systems:
|
||||||
- pc-8801
|
- pc-8801
|
||||||
|
|
||||||
# QUASI88 is a NEC PC-8801 emulator. The libretro port includes a pseudo-BIOS
|
# QUASI88 by Showzoh Fukunaga, libretro port by Celerizer.
|
||||||
# (pbios_n88, pbios_disk) compiled into the core that provides basic compatibility
|
# Includes pseudo-BIOS (pbios_n88, pbios_disk) by cisc compiled into the core.
|
||||||
# when real BIOS files are missing. With the pseudo-BIOS, many disk-based games
|
# With pseudo-BIOS, some disk-based games boot but compatibility is limited.
|
||||||
# will boot, but compatibility is lower than with real ROMs.
|
|
||||||
#
|
#
|
||||||
# ROM file search order (libretro.c:444-491):
|
# ROM search order (libretro.c:444-491):
|
||||||
# 1. <download_dir>/<filename>
|
# 1. <download_dir>/<filename>
|
||||||
# 2. <system_dir>/quasi88/<filename>
|
# 2. <system_dir>/quasi88/<filename>
|
||||||
# 3. <system_dir>/<filename>
|
# 3. <system_dir>/<filename>
|
||||||
# Each ROM entry has up to 4 alternate filenames tried in order.
|
# Each ROM entry has up to 4 alternate filenames tried in order.
|
||||||
#
|
#
|
||||||
# ROM loading (libretro.c:550-594):
|
# ROM loading (libretro.c:550-594):
|
||||||
# N88.ROM and DISK.ROM (SUB_ROM) are the only two checked for failure.
|
# N88.ROM and DISK.ROM have pseudo-BIOS fallback if missing.
|
||||||
# If missing, the core falls back to the built-in pseudo-BIOS.
|
|
||||||
# All other ROMs are loaded silently if present, ignored if absent.
|
# All other ROMs are loaded silently if present, ignored if absent.
|
||||||
#
|
#
|
||||||
# The original QUASI88 (memory.c:80-95) uses uppercase-first filenames
|
# The original QUASI88 (memory.c:80-95) uses uppercase-first filenames
|
||||||
# (N88.ROM, N88EXT0.ROM, etc.) while the libretro .info file standardizes
|
# (N88.ROM, N88EXT0.ROM, etc.) while the libretro .info file uses
|
||||||
# on lowercase with underscore variants (n88.rom, n88_0.rom, etc.).
|
# lowercase with underscore variants (n88.rom, n88_0.rom, etc.).
|
||||||
# The core tries both naming conventions.
|
# The core tries both naming conventions.
|
||||||
#
|
#
|
||||||
# FONT.ROM/FONT2.ROM/FONT3.ROM are not listed in the .info file.
|
# FONT.ROM/FONT2.ROM/FONT3.ROM are not in the .info file.
|
||||||
# When missing, the core uses built-in fonts or falls back to kanji ROM glyphs.
|
# 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: |
|
notes: |
|
||||||
Files go in <system_dir>/quasi88/ or directly in <system_dir>/.
|
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
|
The pseudo-BIOS covers N88-BASIC V2 and the disk subsystem at a basic
|
||||||
subsystem at a basic level. For full compatibility (N-BASIC, V1H/V1S modes,
|
level. For full compatibility (N-BASIC, V1H/V1S modes, dictionary lookup,
|
||||||
dictionary lookup, kanji display), real ROM files are needed.
|
kanji display), real ROM files are needed.
|
||||||
|
|
||||||
N88_0.ROM (EXT0) is marked required in the .info file because it contains
|
Core option "quasi88_basic_mode" selects N88 V2, N88 V1H, N88 V1S,
|
||||||
the N88-BASIC V2 extension used by most software. EXT1-EXT3 are version-
|
or N mode. Each mode requires its corresponding ROM.
|
||||||
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.
|
|
||||||
|
|
||||||
files:
|
files:
|
||||||
# -- Required for full operation --
|
|
||||||
|
|
||||||
- name: n88.rom
|
- name: n88.rom
|
||||||
path: "quasi88/n88.rom"
|
path: "quasi88/n88.rom"
|
||||||
size: 32768
|
size: 32768
|
||||||
required: true
|
required: true
|
||||||
note: "N88-BASIC main ROM (32 KB). Core falls back to pseudo-BIOS if missing."
|
hle_fallback: true
|
||||||
source_ref: "src/LIBRETRO/libretro.c:550"
|
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"]
|
aliases: ["N88.ROM"]
|
||||||
|
|
||||||
- name: n88_0.rom
|
- name: n88_0.rom
|
||||||
path: "quasi88/n88_0.rom"
|
path: "quasi88/n88_0.rom"
|
||||||
size: 8192
|
size: 8192
|
||||||
required: true
|
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"
|
source_ref: "src/LIBRETRO/libretro.c:555"
|
||||||
aliases: ["N88_0.ROM", "N88EXT0.ROM", "n88ext0.rom"]
|
aliases: ["N88_0.ROM", "N88EXT0.ROM", "n88ext0.rom"]
|
||||||
|
|
||||||
# -- Optional extensions --
|
|
||||||
|
|
||||||
- name: n88_1.rom
|
- name: n88_1.rom
|
||||||
path: "quasi88/n88_1.rom"
|
path: "quasi88/n88_1.rom"
|
||||||
size: 8192
|
size: 8192
|
||||||
required: false
|
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"
|
source_ref: "src/LIBRETRO/libretro.c:556"
|
||||||
aliases: ["N88_1.ROM", "N88EXT1.ROM", "n88ext1.rom"]
|
aliases: ["N88_1.ROM", "N88EXT1.ROM", "n88ext1.rom"]
|
||||||
|
|
||||||
@@ -79,7 +75,7 @@ files:
|
|||||||
path: "quasi88/n88_2.rom"
|
path: "quasi88/n88_2.rom"
|
||||||
size: 8192
|
size: 8192
|
||||||
required: false
|
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"
|
source_ref: "src/LIBRETRO/libretro.c:557"
|
||||||
aliases: ["N88_2.ROM", "N88EXT2.ROM", "n88ext2.rom"]
|
aliases: ["N88_2.ROM", "N88EXT2.ROM", "n88ext2.rom"]
|
||||||
|
|
||||||
@@ -87,7 +83,7 @@ files:
|
|||||||
path: "quasi88/n88_3.rom"
|
path: "quasi88/n88_3.rom"
|
||||||
size: 8192
|
size: 8192
|
||||||
required: false
|
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"
|
source_ref: "src/LIBRETRO/libretro.c:558"
|
||||||
aliases: ["N88_3.ROM", "N88EXT3.ROM", "n88ext3.rom"]
|
aliases: ["N88_3.ROM", "N88EXT3.ROM", "n88ext3.rom"]
|
||||||
|
|
||||||
@@ -104,15 +100,15 @@ files:
|
|||||||
size: 2048
|
size: 2048
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
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."
|
note: "Disk subsystem ROM (2 KB, 2D type). Falls back to pseudo-BIOS if missing."
|
||||||
source_ref: "src/LIBRETRO/libretro.c:552"
|
source_ref: "src/LIBRETRO/libretro.c:552-553"
|
||||||
aliases: ["DISK.ROM", "N88SUB.ROM", "n88sub.rom"]
|
aliases: ["DISK.ROM", "N88SUB.ROM", "n88sub.rom"]
|
||||||
|
|
||||||
- name: n88knj1.rom
|
- name: n88knj1.rom
|
||||||
path: "quasi88/n88knj1.rom"
|
path: "quasi88/n88knj1.rom"
|
||||||
size: 131072
|
size: 131072
|
||||||
required: false
|
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"
|
source_ref: "src/LIBRETRO/libretro.c:560"
|
||||||
aliases: ["N88KNJ1.ROM", "KANJI1.ROM", "kanji1.rom"]
|
aliases: ["N88KNJ1.ROM", "KANJI1.ROM", "kanji1.rom"]
|
||||||
|
|
||||||
@@ -128,18 +124,18 @@ files:
|
|||||||
path: "quasi88/n88jisho.rom"
|
path: "quasi88/n88jisho.rom"
|
||||||
size: 524288
|
size: 524288
|
||||||
required: false
|
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"
|
source_ref: "src/LIBRETRO/libretro.c:562"
|
||||||
aliases: ["N88JISHO.ROM", "JISYO.ROM", "jisyo.rom"]
|
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
|
- name: font.rom
|
||||||
path: "quasi88/font.rom"
|
path: "quasi88/font.rom"
|
||||||
size: 4096
|
size: 2048
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
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"
|
source_ref: "src/LIBRETRO/libretro.c:566"
|
||||||
aliases: ["FONT.ROM"]
|
aliases: ["FONT.ROM"]
|
||||||
|
|
||||||
@@ -148,7 +144,7 @@ files:
|
|||||||
size: 4096
|
size: 4096
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
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"
|
source_ref: "src/LIBRETRO/libretro.c:576"
|
||||||
aliases: ["FONT2.ROM"]
|
aliases: ["FONT2.ROM"]
|
||||||
|
|
||||||
@@ -157,6 +153,6 @@ files:
|
|||||||
size: 4096
|
size: 4096
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
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"
|
source_ref: "src/LIBRETRO/libretro.c:588"
|
||||||
aliases: ["FONT3.ROM"]
|
aliases: ["FONT3.ROM"]
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ emulator: QuickNES
|
|||||||
type: libretro
|
type: libretro
|
||||||
core_classification: community_fork
|
core_classification: community_fork
|
||||||
source: "https://github.com/libretro/QuickNES_Core"
|
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"
|
core_version: "1.0-WIP"
|
||||||
display_name: "Nintendo - NES / Famicom (QuickNES)"
|
display_name: "Nintendo - NES / Famicom (QuickNES)"
|
||||||
cores:
|
cores:
|
||||||
@@ -11,7 +12,7 @@ systems:
|
|||||||
- nintendo-nes
|
- nintendo-nes
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
NES emulator by blargg (Shay Green). No BIOS required.
|
NES emulator by blargg (Shay Green), maintained by kode54.
|
||||||
NES cartridge games are self-contained.
|
NES has no BIOS. All palettes compiled in.
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,43 +1,28 @@
|
|||||||
emulator: RACE (Neo Geo Pocket)
|
emulator: RACE (Neo Geo Pocket)
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: community_fork
|
||||||
source: "https://github.com/libretro/RACE"
|
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"
|
core_version: "v2.16"
|
||||||
display_name: "SNK - Neo Geo Pocket / Color (RACE)"
|
display_name: "SNK - Neo Geo Pocket / Color (RACE)"
|
||||||
|
cores: [race]
|
||||||
systems: [snk-ngp, snk-ngpc]
|
systems: [snk-ngp, snk-ngpc]
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
RACE is a Neo Geo Pocket and Neo Geo Pocket Color emulator, originally
|
RACE is a Neo Geo Pocket and Neo Geo Pocket Color emulator originally by
|
||||||
developed for PSP (forked from Akop Karapetyan's port), adapted for
|
Judge_ (MHE), ported to GP2X by Flavor, to PSP by Akop Karapetyan, modified
|
||||||
libretro.
|
by theelf, then adapted for libretro.
|
||||||
|
|
||||||
No external BIOS files are required. The core contains dead code in
|
No external BIOS files are required. The upstream versions (GP2X, PSP) support
|
||||||
race-memory.c that would load "NPBIOS.BIN" (64KB, loaded into cpurom
|
optional loading of NPBIOS.BIN, but the libretro port disabled it entirely
|
||||||
via filestream_open), but it is compiled out with #if 0 and loadBIOS()
|
with #if 0 in race-memory.c:loadBIOS(). The comment explains: "Using a real
|
||||||
unconditionally returns 0. The comment explains: "Using a real bios
|
bios file causes nothing but issues."
|
||||||
file causes nothing but issues" and references Card Fighters' Clash
|
|
||||||
Test Mode as a known failure.
|
|
||||||
|
|
||||||
Instead, the core uses a software HLE approach:
|
The core uses a software HLE approach: a compiled-in koyote_bin RAM dump
|
||||||
- A built-in koyote_bin memory dump (RAM state from a real console
|
(post-boot console state) is copied into mainram at startup, a fake SWI jump
|
||||||
post-boot) is copied into mainram at startup
|
table is built at cpurom[0xE000], and doBios() in tlcs900h.c handles 33 BIOS
|
||||||
- A fake SWI jump table is constructed at cpurom[0xE000] using the
|
functions in software. The Z80 sound CPU is emulated via cz80 or DrZ80.
|
||||||
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
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|
||||||
@@ -48,8 +33,9 @@ analysis:
|
|||||||
loaded_by: "race-memory.c:loadBIOS()"
|
loaded_by: "race-memory.c:loadBIOS()"
|
||||||
status: disabled
|
status: disabled
|
||||||
source_ref: "race-memory.c:337-361"
|
source_ref: "race-memory.c:337-361"
|
||||||
|
upstream_status: optional
|
||||||
|
upstream_ref: "memory.cpp:346-365 (8bitpsp/race)"
|
||||||
notes: |
|
notes: |
|
||||||
loadBIOS() is wrapped in #if 0 and always returns 0.
|
loadBIOS() is wrapped in #if 0 and always returns 0 in the libretro port.
|
||||||
Even if re-enabled, the realBIOSloaded=1 path has known
|
In upstream (8bitpsp/race, alekmaul/race), the function is live and loads
|
||||||
compatibility issues (e.g. Puzzle Bobble fails to boot).
|
NPBIOS.BIN optionally, falling back to HLE if not found.
|
||||||
The HLE path is the only functional code path.
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
emulator: Redbook
|
emulator: Redbook
|
||||||
type: utility
|
type: utility
|
||||||
source: "https://github.com/libretro/RetroArch"
|
core_classification: pure_libretro
|
||||||
profiled_date: "2026-03-18"
|
source: "https://github.com/libretro/redbook"
|
||||||
|
profiled_date: "2026-03-25"
|
||||||
core_version: "1.0"
|
core_version: "1.0"
|
||||||
display_name: "Redbook Audio Player"
|
display_name: "Redbook Audio Player"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,10 +10,7 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Redbook is an audio CD player core for RetroArch. Plays standard
|
Audio CD player core. Plays Red Book audio CDs and CUE/BIN images.
|
||||||
Red Book audio CDs and CD image files (CUE/BIN) containing audio
|
Original libretro creation by Brad Parker, no upstream emulator.
|
||||||
tracks.
|
|
||||||
|
|
||||||
No BIOS or system files required.
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: REminiscence
|
emulator: REminiscence
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: community_fork
|
||||||
source: "https://github.com/libretro/REminiscence"
|
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"
|
core_version: "0.3.6"
|
||||||
display_name: "Flashback (REminiscence)"
|
display_name: "Flashback (REminiscence)"
|
||||||
cores:
|
cores:
|
||||||
@@ -10,23 +12,22 @@ systems:
|
|||||||
- flashback
|
- flashback
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
REminiscence is a re-implementation of the Flashback (Delphine Software, 1992) game engine,
|
Game engine re-implementation of Flashback (Delphine Software, 1992) by Gregory Montoir,
|
||||||
ported to libretro. Version 0.3.6. It is not a general-purpose emulator; it only runs the
|
ported to libretro by Stuart Carnie. Version 0.3.6 (upstream is at 0.5.5).
|
||||||
original Flashback game data files.
|
|
||||||
|
|
||||||
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
|
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).
|
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
|
DEMO_UK.ABA -> DOS Demo
|
||||||
INTRO.SEQ -> DOS CD
|
INTRO.SEQ -> DOS CD
|
||||||
LEVEL1.MAP -> DOS
|
LEVEL1.MAP -> DOS
|
||||||
LEVEL1.LEV -> Amiga
|
LEVEL1.LEV -> Amiga
|
||||||
DEMO.LEV -> Amiga Demo
|
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
|
ENGCINE.TXT -> English
|
||||||
FR_CINE.TXT -> French
|
FR_CINE.TXT -> French
|
||||||
GERCINE.TXT -> German
|
GERCINE.TXT -> German
|
||||||
@@ -35,27 +36,38 @@ notes: |
|
|||||||
FRCINE.TXT -> French (Amiga)
|
FRCINE.TXT -> French (Amiga)
|
||||||
Falls back to English if none found.
|
Falls back to English if none found.
|
||||||
|
|
||||||
All game data files are loaded from the content directory at runtime via FileSystem
|
All game data files are loaded from the content directory via FileSystem (fs.cpp),
|
||||||
(fs.cpp), which recursively scans the directory and matches filenames case-insensitively
|
which scans the directory and matches filenames case-insensitively (strcasecmp at
|
||||||
(strcasecmp at fs.cpp:52). The resource system (resource.cpp) loads files by constructing
|
fs.cpp:52). The resource system (resource.cpp) loads files by constructing names
|
||||||
names like "LEVEL1.MAP", "GLOBAL.ICN", "PERSO.SPR", "FB_TXT.FNT", etc.
|
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
|
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
|
alongside the loaded .MAP content file. No BIOS or firmware files; the required files
|
||||||
no BIOS or firmware files; the required files are the original Flashback game data.
|
are the original Flashback DOS game data.
|
||||||
|
|
||||||
Music is loaded from .mod files or Amiga-format module files (mod_player.cpp, staticres.cpp
|
Music loaded from .mod files (mod_player.cpp, staticres.cpp:3198-3225). Optional;
|
||||||
lines 3198-3225). These are optional; the core has a built-in SFX player for in-game
|
the core has a built-in SFX player for in-game action music (sfx_player.cpp with
|
||||||
action music (sfx_player.cpp with embedded music data in staticres.cpp).
|
embedded music data in staticres.cpp).
|
||||||
|
|
||||||
VOICE.VCE from the SegaCD version can optionally be placed in the data directory for
|
VOICE.VCE from the SegaCD version can be placed in the data directory for in-game
|
||||||
in-game voice playback (resource.cpp:910).
|
voice playback (resource.cpp:900-941). Optional.
|
||||||
|
|
||||||
INTRO.SEQ and other .SEQ files from the DOS CD version provide FMV cutscenes
|
SEQ cutscene playback is disabled in the libretro build: g_options is zero-initialized
|
||||||
(seq_player.cpp). Without them, the core falls back to polygon-based cutscenes.
|
(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: []
|
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:
|
analysis:
|
||||||
content_type: game_data
|
content_type: game_data
|
||||||
content_extensions: ["map"]
|
content_extensions: ["map"]
|
||||||
@@ -77,7 +89,7 @@ analysis:
|
|||||||
- "VOICE.VCE (SegaCD voice data)"
|
- "VOICE.VCE (SegaCD voice data)"
|
||||||
dos_cd:
|
dos_cd:
|
||||||
additional:
|
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:
|
demo:
|
||||||
archive: "DEMO_UK.ABA (contains all demo data in a single archive)"
|
archive: "DEMO_UK.ABA (contains all demo data in a single archive)"
|
||||||
detection_order:
|
detection_order:
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: RemoteJoy
|
emulator: RemoteJoy
|
||||||
type: utility
|
type: utility
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-remotejoy"
|
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"
|
core_version: "v1"
|
||||||
display_name: "PSP RemotePlay (RemoteJoy)"
|
display_name: "PSP RemotePlay (RemoteJoy)"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,11 +11,9 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
RemoteJoy is a PSP remote display utility for libretro. It receives
|
USB streaming receiver for PSP. Connects via libusb to a PSP running the
|
||||||
video output from a PSP running the RemoteJoy plugin over USB or
|
RemoteJoy plugin (Sony VID 0x054C, PIDs 0x01C9/0x02D2) and displays
|
||||||
network, displaying it within RetroArch.
|
video frames at 480x272. No file I/O. Protocol reimplemented from
|
||||||
|
RemoteJoyLite Win32 client constants, not a port.
|
||||||
No BIOS or system files required. Requires a PSP with the RemoteJoy
|
|
||||||
plugin installed on the device side.
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,18 +1,23 @@
|
|||||||
emulator: Retro8
|
emulator: Retro8
|
||||||
type: game
|
type: libretro
|
||||||
|
core_classification: game_engine
|
||||||
source: "https://github.com/libretro/retro8"
|
source: "https://github.com/libretro/retro8"
|
||||||
profiled_date: "2026-03-18"
|
upstream: "https://github.com/Jakz/retro8"
|
||||||
core_version: "Git"
|
profiled_date: "2026-03-25"
|
||||||
|
core_version: "0.1b"
|
||||||
display_name: "PICO-8 (Retro8)"
|
display_name: "PICO-8 (Retro8)"
|
||||||
cores:
|
cores:
|
||||||
- retro8
|
- retro8
|
||||||
systems: []
|
systems:
|
||||||
|
- pico8
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Retro8 is a PICO-8 compatible runtime for libretro. It can run .p8
|
Open-source PICO-8 fantasy console reimplementation by Jacopo Santoni.
|
||||||
and .p8.png cartridge files created for the PICO-8 fantasy console.
|
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
|
||||||
No BIOS, firmware, or system files required. The virtual machine and
|
shim is compiled as a string constant (gen/lua_api.h, loaded in
|
||||||
Lua interpreter are self-contained in the core binary.
|
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: []
|
files: []
|
||||||
|
|||||||
@@ -1,60 +1,54 @@
|
|||||||
emulator: RetroDream
|
emulator: RetroDream
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: community_fork
|
||||||
source: "https://github.com/libretro/redream-next"
|
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"
|
core_version: "Git"
|
||||||
display_name: "Sega - Dreamcast (RetroDream)"
|
display_name: "Sega - Dreamcast (RetroDream)"
|
||||||
|
cores:
|
||||||
|
- retrodream
|
||||||
systems:
|
systems:
|
||||||
- sega-dreamcast
|
- sega-dreamcast
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Fork of the final open-source redream release (pre-relicense). Experimental
|
Fork of the last GPLv3 release of redream (inolen) before it went closed-source.
|
||||||
core with no HLE BIOS -- real BIOS files are required to boot games.
|
The core has HLE bootstrap -- when boot.bin is missing, bios_invalid_instr()
|
||||||
Flycast is recommended over this core for actual gameplay.
|
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
|
The fork sets appdir to the RetroArch system directory root
|
||||||
(src/host/retro_host.c:216-217). boot.bin and flash.bin are loaded
|
(retro_host.c:216-217), unlike the upstream which appends /dc
|
||||||
directly from appdir (src/guest/rom/boot.c:17, src/guest/rom/flash.c:30).
|
(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
|
boot.bin is validated against four known MD5 hashes (boot.c:25-30).
|
||||||
RetroArch resolves them under {system_dir}/dc/.
|
Validation failure logs a warning but the core continues via HLE.
|
||||||
|
|
||||||
boot.bin is validated against four known MD5 hashes at load time
|
flash.bin is read/write. If missing, bios_validate_flash() resets all
|
||||||
(src/guest/rom/boot.c:25-30). If validation fails, the core logs a warning
|
partitions to defaults. Saved back to disk on shutdown (flash.c:197-199).
|
||||||
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).
|
|
||||||
|
|
||||||
files:
|
files:
|
||||||
- name: "boot.bin"
|
- name: "boot.bin"
|
||||||
system: sega-dreamcast
|
system: sega-dreamcast
|
||||||
path: "dc/boot.bin"
|
path: "boot.bin"
|
||||||
required: true
|
required: false
|
||||||
size: 2097152 # 2 MB (0x200000)
|
hle_fallback: true
|
||||||
|
size: 2097152
|
||||||
|
validation: [size, md5]
|
||||||
md5:
|
md5:
|
||||||
- e10c53c2f8b90bab96ead2d368858623 # original US/EU BIOS
|
- a5c6a00818f97c5e3e91569ee22416dc
|
||||||
- a5c6a00818f97c5e3e91569ee22416dc # Chinese BIOS
|
- 37c921eb47532cae8fb70e5d987ce91c
|
||||||
- 37c921eb47532cae8fb70e5d987ce91c # Japanese BIOS
|
- f2cd29d09f3e29984bcea22ab2e006fe
|
||||||
- f2cd29d09f3e29984bcea22ab2e006fe # revised BIOS without MIL-CD
|
- e10c53c2f8b90bab96ead2d368858623
|
||||||
note: "Dreamcast boot ROM. Validated against known MD5 hashes at load."
|
note: "Dreamcast boot ROM. Four known variants accepted."
|
||||||
source_ref: "src/guest/rom/boot.c:12-80"
|
source_ref: "src/guest/rom/boot.c:12-80"
|
||||||
|
|
||||||
- name: "flash.bin"
|
- name: "flash.bin"
|
||||||
system: sega-dreamcast
|
system: sega-dreamcast
|
||||||
path: "dc/flash.bin"
|
path: "flash.bin"
|
||||||
required: true
|
required: false
|
||||||
size: 131072 # 128 KB (0x20000)
|
size: 131072
|
||||||
md5:
|
validation: [size]
|
||||||
- 0a93f7940c455905bea6e392dfde92a4
|
note: "Dreamcast flash memory. Written back on shutdown."
|
||||||
note: "Dreamcast flash memory (date, time, language). Written back on shutdown."
|
source_ref: "src/guest/rom/flash.c:25-71"
|
||||||
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"
|
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: ROM Cleaner
|
emulator: ROM Cleaner
|
||||||
type: utility
|
type: utility
|
||||||
source: "https://github.com/libretro/libretro-database"
|
core_classification: pure_libretro
|
||||||
profiled_date: "2026-03-18"
|
source: "https://github.com/JesseTG/rom-cleaner"
|
||||||
|
upstream: "https://github.com/JesseTG/rom-cleaner"
|
||||||
|
profiled_date: "2026-03-25"
|
||||||
core_version: "1.0.0"
|
core_version: "1.0.0"
|
||||||
display_name: "ROM Cleaner"
|
display_name: "ROM Cleaner"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,10 +11,8 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
ROM Cleaner is a utility core for identifying and cleaning ROM
|
Utility core that simulates blowing dust off a cartridge via microphone
|
||||||
headers. Uses the libretro database for ROM identification via
|
input. All visual and audio assets are compiled into the binary.
|
||||||
CRC32/SHA1 matching.
|
No external files required.
|
||||||
|
|
||||||
No BIOS or system files required.
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,21 +1,24 @@
|
|||||||
emulator: Rustation
|
emulator: Rustation
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: official_port
|
||||||
source: "https://github.com/libretro/rustation-libretro"
|
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"
|
core_version: "v1"
|
||||||
display_name: "Sony - PlayStation (Rustation)"
|
display_name: "Sony - PlayStation (Rustation)"
|
||||||
cores: [rustation]
|
cores: [rustation]
|
||||||
systems: [sony-playstation]
|
systems: [sony-playstation]
|
||||||
bios_size: 524288 # 512 KB, enforced before SHA-256 check
|
|
||||||
verification: sha256
|
|
||||||
notes: >
|
notes: >
|
||||||
No filename requirement: the core scans every file in the system directory,
|
Scans every file in the system directory, filters by exact 512 KB size,
|
||||||
filters by exact 512 KB size, then validates the full binary against an internal
|
then validates the full binary against an internal SHA-256 database
|
||||||
SHA-256 database (lifted from Mednafen). Region must match the loaded disc
|
(lifted from Mednafen). Region must match the loaded disc. Known-bad
|
||||||
(Japan, NorthAmerica, Europe). Known-bad dumps are rejected even if hash matches.
|
dumps are rejected. No filename requirement. No HLE fallback.
|
||||||
"Boot to BIOS menu" option allows booting without a disc.
|
"Boot to BIOS menu" core 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 rejected)
|
||||||
Database contains 24 entries (22 good, 2 known_bad) covering BIOS versions 1.0 through 4.5.
|
covering BIOS versions 1.0 through 4.5.
|
||||||
|
.info declares firmware_count=0; incorrect.
|
||||||
|
Project abandoned, superseded by rustation-ng.
|
||||||
|
|
||||||
files:
|
files:
|
||||||
# -- Region: Japan --
|
# -- Region: Japan --
|
||||||
@@ -24,10 +27,11 @@ files:
|
|||||||
description: "SCPH-5500 (v3.0 J)"
|
description: "SCPH-5500 (v3.0 J)"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
required: true
|
required: true
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
md5: "8dd7d5296a650fac7319bce665a6a53c"
|
md5: "8dd7d5296a650fac7319bce665a6a53c"
|
||||||
sha256: "9c0421858e217805f4abe18698afea8d5aa36ff0727eb8484944e00eb5e7eadb"
|
sha256: "9c0421858e217805f4abe18698afea8d5aa36ff0727eb8484944e00eb5e7eadb"
|
||||||
source_ref: "rustation/src/bios/db.rs:226-232 (v3.0 Japan)"
|
source_ref: "rustation/src/bios/db.rs:158-167 (v3.0 Japan)"
|
||||||
notes: "Any filename works. Core matches by SHA-256, not name. v3.0 is the standard JP BIOS."
|
|
||||||
|
|
||||||
# -- Region: North America --
|
# -- Region: North America --
|
||||||
|
|
||||||
@@ -35,10 +39,11 @@ files:
|
|||||||
description: "SCPH-5501 (v3.0 A)"
|
description: "SCPH-5501 (v3.0 A)"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
required: true
|
required: true
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
md5: "490f666e1afb15b7362b406ed1cea246"
|
md5: "490f666e1afb15b7362b406ed1cea246"
|
||||||
sha256: "11052b6499e466bbf0a709b1f9cb6834a9418e66680387912451e971cf8a1fef"
|
sha256: "11052b6499e466bbf0a709b1f9cb6834a9418e66680387912451e971cf8a1fef"
|
||||||
source_ref: "rustation/src/bios/db.rs:234-244 (v3.0 NorthAmerica)"
|
source_ref: "rustation/src/bios/db.rs:168-177 (v3.0 NorthAmerica)"
|
||||||
notes: "Any filename works. Only NA BIOS with animation_jump_hook and debug UART patch support."
|
|
||||||
|
|
||||||
# -- Region: Europe --
|
# -- Region: Europe --
|
||||||
|
|
||||||
@@ -46,149 +51,185 @@ files:
|
|||||||
description: "SCPH-5502 (v3.0 E)"
|
description: "SCPH-5502 (v3.0 E)"
|
||||||
region: "PAL"
|
region: "PAL"
|
||||||
required: true
|
required: true
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
md5: "32736f17079d0b2b7024407c39bd3050"
|
md5: "32736f17079d0b2b7024407c39bd3050"
|
||||||
sha256: "1faaa18fa820a0225e488d9f086296b8e6c46df739666093987ff7d8fd352c09"
|
sha256: "1faaa18fa820a0225e488d9f086296b8e6c46df739666093987ff7d8fd352c09"
|
||||||
source_ref: "rustation/src/bios/db.rs:246-256 (v3.0 Europe)"
|
source_ref: "rustation/src/bios/db.rs:178-187 (v3.0 Europe)"
|
||||||
notes: "Any filename works. Core matches by SHA-256, not name."
|
|
||||||
|
|
||||||
# -- Additional accepted BIOS versions (all validated by SHA-256 scan) --
|
# -- Alternatives: any of the 22 good entries is accepted. One per region needed. --
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Japan alternatives
|
# Japan alternatives
|
||||||
- name: "scph1000.bin"
|
- name: "scph1000.bin"
|
||||||
description: "SCPH-1000 (v1.0 J)"
|
description: "SCPH-1000 (v1.0 J)"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "cfc1fc38eb442f6f80781452119e931bcae28100c1c97e7e6c5f2725bbb0f8bb"
|
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"
|
- name: "scph_v11j.bin"
|
||||||
description: "v1.1 J"
|
description: "v1.1 J"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "5eb3aee495937558312b83b54323d76a4a015190decd4051214f1b6df06ac34b"
|
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"
|
- name: "scph3000.bin"
|
||||||
description: "SCPH-3000 (v2.1 J)"
|
description: "SCPH-3000 (v2.1 J)"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "6f71ca1e716da761dc53187bd39e00c213f566e55090708fd3e2b4b425c8c989"
|
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"
|
- name: "scph3500.bin"
|
||||||
description: "SCPH-3500 (v2.2 J)"
|
description: "SCPH-3500 (v2.2 J)"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "0c8359870cbac0ea091f1c87f188cd332dcc709753b91cafd9fd44a4a6188197"
|
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."
|
notes: "A known-bad v2.2 J dump also exists in the DB but is rejected."
|
||||||
|
|
||||||
- name: "scph5000.bin"
|
- name: "scph5000.bin"
|
||||||
description: "v2.2 J (alt)"
|
description: "v2.2 J (alt)"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "4018749b3698b8694387beebcbabfb48470513066840f9441459ee4c9f0f39bc"
|
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"
|
- name: "scph7000.bin"
|
||||||
description: "SCPH-7000 (v4.0 J)"
|
description: "SCPH-7000 (v4.0 J)"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "e900504d1755f021f861b82c8258c5e6658c7b592f800cccd91f5d32ea380d28"
|
sha256: "e900504d1755f021f861b82c8258c5e6658c7b592f800cccd91f5d32ea380d28"
|
||||||
source_ref: "rustation/src/bios/db.rs:269-281 (v4.0 Japan)"
|
source_ref: "rustation/src/bios/db.rs:198-207 (v4.0 Japan)"
|
||||||
notes: "Shares animation_jump_hook patch with NA v3.0."
|
|
||||||
|
|
||||||
- name: "scph7500.bin"
|
- name: "scph7500.bin"
|
||||||
description: "SCPH-7500 (v4.1 J)"
|
description: "SCPH-7500 (v4.1 J)"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "b3aa63cf30c81e0a40641740f4a43e25fda0b21b792fa9aaef60ce1675761479"
|
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"
|
- name: "scph9000.bin"
|
||||||
description: "SCPH-9000 (v4.3 J)"
|
description: "SCPH-9000 (v4.3 J)"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "b29b4b5fcddef369bd6640acacda0865e0366fcf7ea54e40b2f1a8178004f89a"
|
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
|
# North America alternatives
|
||||||
- name: "scph1001.bin"
|
- name: "scph1001.bin"
|
||||||
description: "SCPH-1001 (v2.0 A)"
|
description: "SCPH-1001 (v2.0 A)"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "42e4124be7623e2e28b1db0d8d426539646faee49d74b71166d8ba5bd7c472ed"
|
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"
|
- name: "scph5001.bin"
|
||||||
description: "SCPH-5001 (v2.1 A)"
|
description: "SCPH-5001 (v2.1 A)"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "6ad5521d105a6b86741f1af8da2e6ea1c732d34459940618c70305a105e8ec10"
|
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"
|
- name: "scph_v22a.bin"
|
||||||
description: "v2.2 A"
|
description: "v2.2 A"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "71af94d1e47a68c11e8fdb9f8368040601514a42a5a399cda48c7d3bff1e99d3"
|
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"
|
- name: "scph7001.bin"
|
||||||
description: "SCPH-7001 (v4.1 A)"
|
description: "SCPH-7001 (v4.1 A)"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "39dcc1a0717036c9b6ac52fefd1ee7a57d3808e8cfbc755879fa685a0a738278"
|
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"
|
- name: "scph101.bin"
|
||||||
description: "SCPH-101 (v4.5 A)"
|
description: "SCPH-101 (v4.5 A)"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "aca9cbfa974b933646baad6556a867eca9b81ce65d8af343a7843f7775b9ffc8"
|
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
|
# Europe alternatives
|
||||||
- name: "scph1002.bin"
|
- name: "scph1002.bin"
|
||||||
description: "SCPH-1002 (v2.0 E)"
|
description: "SCPH-1002 (v2.0 E)"
|
||||||
region: "PAL"
|
region: "PAL"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "0af2be3468d30b6018b3c3b0d98b8b64347e255e16d874d55f0363648973dbf0"
|
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"
|
- name: "scph_v21e.bin"
|
||||||
description: "v2.1 E"
|
description: "v2.1 E"
|
||||||
region: "PAL"
|
region: "PAL"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "1efb0cfc5db8a8751a884c5312e9c6265ca1bc580dc0c2663eb2dea3bde9fcf7"
|
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"
|
- name: "scph_v22e.bin"
|
||||||
description: "v2.2 E"
|
description: "v2.2 E"
|
||||||
region: "PAL"
|
region: "PAL"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "3d06d2c469313c2a2128d24fe2e0c71ff99bc2032be89a829a62337187f500b7"
|
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"
|
- name: "scph7002.bin"
|
||||||
description: "SCPH-7002 (v4.1 E)"
|
description: "SCPH-7002 (v4.1 E)"
|
||||||
region: "PAL"
|
region: "PAL"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "5e84a94818cf5282f4217591fefd88be36b9b174b3cc7cb0bcd75199beb450f1"
|
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"
|
- name: "scph102.bin"
|
||||||
description: "SCPH-102 (v4.4 E)"
|
description: "SCPH-102 (v4.4 E)"
|
||||||
region: "PAL"
|
region: "PAL"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "5c0166da24e27deaa82246de8ff0108267fe4bb59f6df0fdec50e05e62448ca4"
|
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"
|
- name: "scph102_v45.bin"
|
||||||
description: "v4.5 E"
|
description: "v4.5 E"
|
||||||
region: "PAL"
|
region: "PAL"
|
||||||
required: false
|
required: false
|
||||||
|
size: 524288
|
||||||
|
validation: [size, sha256]
|
||||||
sha256: "42244b0c650821519751b7e77ad1d3222a0125e75586df2b4e84ba693b9809dc"
|
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)"
|
||||||
|
|||||||
@@ -1,21 +1,23 @@
|
|||||||
emulator: RVVM
|
emulator: RVVM
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: official_port
|
||||||
source: "https://github.com/LekKit/RVVM"
|
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"
|
core_version: "0.6-git"
|
||||||
display_name: "RVVM"
|
display_name: "RVVM"
|
||||||
|
cores: [rvvm]
|
||||||
systems: [riscv]
|
systems: [riscv]
|
||||||
|
|
||||||
# RVVM is a RISC-V virtual machine / emulator. The libretro core loads a
|
# RVVM emulates a RISC-V machine (rv64imafdcb or rv32ima). The libretro core
|
||||||
# ".rvvm" config file that specifies bootrom, kernel, nvme drives, memory,
|
# loads a .rvvm plain-text config file specifying bootrom, kernel, nvme drives,
|
||||||
# CPU mode (rv32/rv64), cmdline, and framebuffer resolution.
|
# memory, CPU mode, cmdline, and framebuffer resolution.
|
||||||
#
|
#
|
||||||
# The core itself does NOT bundle any firmware. Users must supply:
|
# The core does NOT use the RetroArch system directory. All firmware paths are
|
||||||
# 1. A bootrom (M-mode firmware): typically OpenSBI fw_payload.bin or fw_jump.bin
|
# specified in the .rvvm config file and resolved relative to its directory.
|
||||||
# 2. Optionally a kernel payload (S-mode): Linux Image, U-Boot, etc.
|
# The core chdir()s to the .rvvm file's parent before initializing the VM.
|
||||||
# 3. Optionally a custom DTB (the core auto-generates one if not provided)
|
|
||||||
#
|
#
|
||||||
# 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
|
# bootrom=/path/to/fw_payload.bin
|
||||||
# kernel=/path/to/Image
|
# kernel=/path/to/Image
|
||||||
# nvme=/path/to/rootfs.img
|
# nvme=/path/to/rootfs.img
|
||||||
@@ -24,80 +26,54 @@ systems: [riscv]
|
|||||||
# rv64
|
# rv64
|
||||||
# cmdline=root=/dev/nvme0n1 rootflags=discard rw console=tty0
|
# cmdline=root=/dev/nvme0n1 rootflags=discard rw console=tty0
|
||||||
#
|
#
|
||||||
# Paths in the .rvvm file are resolved relative to the .rvvm file's directory
|
# The libretro binding uses an older RVVM API (rvvm_load_bootrom, 4-param
|
||||||
# (the core chdir()s there before vm_init). The bootrom is mandatory - the core
|
# rvvm_create_machine) that has been renamed in the current upstream
|
||||||
# shows "RVVM: No bootrom" if missing.
|
# (rvvm_load_firmware, 3-param rvvm_create_machine). The binding may not
|
||||||
|
# compile against RVVM HEAD without updates.
|
||||||
|
|
||||||
# Source references:
|
# Source references:
|
||||||
# libretro binding: src/bindings/libretro/libretro.c
|
# libretro binding: src/bindings/libretro/libretro.c
|
||||||
# firmware loading: src/rvvm.c:rvvm_load_firmware()
|
# config parsing: libretro.c:332-421 (retro_load_game)
|
||||||
# kernel loading: src/rvvm.c:rvvm_load_kernel() (offset 0x200000 rv64, 0x400000 rv32)
|
# VM init + loading: libretro.c:288-330 (vm_init)
|
||||||
# FDT generation: src/rvvm.c:rvvm_init_fdt() (auto-generated if not provided)
|
# firmware loading: rvvm.c:621-628 (rvvm_load_firmware)
|
||||||
# CLI help: src/main.c:rvvm_print_help()
|
# 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:
|
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"
|
- name: "fw_payload.bin"
|
||||||
path: "rvvm/fw_payload.bin"
|
path: "rvvm/fw_payload.bin"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "libretro.c:309-315, rvvm.c:621-628"
|
source_ref: "libretro.c:309-314, rvvm.c:621-628"
|
||||||
note: >
|
note: >
|
||||||
OpenSBI firmware with U-Boot payload. This is the M-mode bootrom
|
M-mode firmware loaded at 0x80000000. Typically OpenSBI with U-Boot
|
||||||
loaded at physical address 0x80000000. Without this file, the VM
|
payload (fw_payload.bin) or standalone (fw_jump.bin). Referenced by
|
||||||
cannot start. Common builds: opensbi fw_payload (includes U-Boot),
|
the bootrom= key in the .rvvm config.
|
||||||
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.
|
|
||||||
|
|
||||||
- name: "Image"
|
- name: "Image"
|
||||||
path: "rvvm/Image"
|
path: "rvvm/Image"
|
||||||
required: false
|
required: false
|
||||||
source_ref: "libretro.c:316-318, rvvm.c:630-638"
|
source_ref: "libretro.c:316-318, rvvm.c:630-638"
|
||||||
note: >
|
note: >
|
||||||
Linux kernel image or other S-mode payload. Loaded at a fixed offset
|
S-mode kernel payload loaded at offset 0x200000 (rv64) or 0x400000
|
||||||
from RAM base (0x200000 for rv64, 0x400000 for rv32). Only needed
|
(rv32) from RAM base. Only needed with fw_jump.bin as bootrom.
|
||||||
when using fw_jump.bin as bootrom. Referenced by the kernel= key
|
Referenced by the kernel= key in the .rvvm config.
|
||||||
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.
|
|
||||||
|
|
||||||
- name: "machine.dtb"
|
- name: "machine.dtb"
|
||||||
path: "rvvm/machine.dtb"
|
path: "rvvm/machine.dtb"
|
||||||
required: false
|
required: false
|
||||||
source_ref: "rvvm.c:641-648, main.c:230"
|
mode: standalone
|
||||||
|
source_ref: "main.c:230, rvvm.c:641-648"
|
||||||
note: >
|
note: >
|
||||||
Custom Flattened Device Tree. The core generates a DTB automatically
|
Custom Flattened Device Tree. The core auto-generates a DTB based on
|
||||||
based on the machine configuration (cpus, memory, devices), so this
|
machine configuration. The libretro binding does not parse a dtb= key
|
||||||
is only needed for special setups. The FDT address is passed to the
|
in the .rvvm config, so this is only usable via the standalone CLI
|
||||||
firmware in register a1 at boot.
|
(-dtb flag).
|
||||||
|
|
||||||
notes:
|
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: >
|
firmware_sources: >
|
||||||
OpenSBI builds: https://github.com/riscv-software-src/opensbi/releases
|
OpenSBI: https://github.com/riscv-software-src/opensbi/releases.
|
||||||
Pre-built fw_payload.bin (OpenSBI + U-Boot) for RVVM:
|
Pre-built images for RVVM: https://github.com/LekKit/RVVM/wiki/Running
|
||||||
https://github.com/LekKit/RVVM/wiki/Running
|
info_firmware_count: >
|
||||||
config_format: >
|
.info declares 0 firmware. Correct: the core loads firmware via
|
||||||
The .rvvm file is a plain-text key=value config. Supported keys:
|
user-specified paths in the .rvvm config, not from system_dir.
|
||||||
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.
|
|
||||||
|
|||||||
@@ -1,226 +1,179 @@
|
|||||||
emulator: SAME CDi
|
emulator: SAME CDi
|
||||||
type: libretro
|
type: libretro
|
||||||
cores: [same_cdi]
|
core_classification: community_fork
|
||||||
source: "https://github.com/libretro/same_cdi"
|
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"
|
core_version: "Git"
|
||||||
display_name: "Philips - CDi (SAME CDi)"
|
display_name: "Philips - CDi (SAME CDi)"
|
||||||
|
cores: [same_cdi]
|
||||||
systems:
|
systems:
|
||||||
- cdi
|
- cdi
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
SAME CDi is a Single Arcade Machine Emulator fork of MAME libretro, stripped
|
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
|
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/
|
<system_dir>/same_cdi/bios/
|
||||||
|
|
||||||
The ROM path (-rp) is built at retro_init.cpp:534 as:
|
The ROM path (-rp) is built at retro_init.cpp:534 as:
|
||||||
<game_path>;<system_dir>/same_cdi/bios/
|
<game_path>;<system_dir>/same_cdi/bios/
|
||||||
|
|
||||||
MAME expects each romset as a ZIP containing the individual ROM files listed
|
MAME expects each romset as a ZIP containing the individual ROM files.
|
||||||
below. The ZIP filenames (cdimono1.zip, cdimono2.zip, cdibios.zip) match
|
The ZIP filenames match the MAME driver names. Only cdimono1.zip is required
|
||||||
the MAME driver names. Only cdimono1.zip is required for consumer CD-i games;
|
for consumer CD-i games; other ZIPs are for alternate hardware models or
|
||||||
cdimono2.zip and cdibios.zip are optional (Mono-II and Quizard arcade).
|
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.
|
ROM definitions: src/mame/drivers/cdi.cpp:574-640.
|
||||||
System forced: src/osd/libretro/libretro-internal/retro_init.cpp:86.
|
Quizard game ROMs: src/mame/drivers/cdi.cpp:662-820.
|
||||||
BIOS path: src/osd/libretro/libretro-internal/retro_init.cpp:534.
|
System forced: retro_init.cpp:86,454,525.
|
||||||
Firmware list: same_cdi_libretro.info firmware0-2.
|
BIOS path: retro_init.cpp:534.
|
||||||
|
|
||||||
files:
|
files:
|
||||||
# =====================================================
|
- name: cdimono1.zip
|
||||||
# cdimono1.zip - Philips CD-i Mono-I (PAL) - REQUIRED
|
category: bios_zip
|
||||||
# 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"
|
|
||||||
system: cdi
|
|
||||||
region: [north-america]
|
|
||||||
required: true
|
|
||||||
size: 524288 # 0x80000
|
|
||||||
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
|
|
||||||
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
|
|
||||||
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
|
system: cdi
|
||||||
required: true
|
required: true
|
||||||
size: 8192 # 0x2000
|
note: "Forced system. Main CPU BIOS (3 region variants via MAME BIOS switch) + servo/slave MCU dumps."
|
||||||
crc32: "7a3af407"
|
source_ref: "src/mame/drivers/cdi.cpp:574-589"
|
||||||
sha1: "fdf8d78d6a0df4a56b5b963d72eabd39fcec163f"
|
contents:
|
||||||
note: "Servo MCU 2.1, taken from cdi910 (BAD_DUMP, no Mono-I specific dump)."
|
- name: cdi200.rom
|
||||||
source_ref: "src/mame/drivers/cdi.cpp:584"
|
description: Magnavox CD-i 200 BIOS (default, US)
|
||||||
|
size: 524288
|
||||||
|
crc32: "40c4e6b9"
|
||||||
|
sha1: "d961de803c89b3d1902d656ceb9ce7c02dccb40a"
|
||||||
|
- name: cdi220b.rom
|
||||||
|
description: Philips CD-i 220 F2 BIOS (alternate, PAL)
|
||||||
|
size: 524288
|
||||||
|
crc32: "279683ca"
|
||||||
|
sha1: "53360a1f21ddac952e95306ced64186a3fc0b93e"
|
||||||
|
- name: cdi220.rom
|
||||||
|
description: Philips CD-i 220 BIOS (non-working, does not boot)
|
||||||
|
size: 524288
|
||||||
|
crc32: "584c0af8"
|
||||||
|
sha1: "5d757ab46b8c8fc36361555d978d7af768342d47"
|
||||||
|
- name: "zx405037p__cdi_servo_2.1__b43t__llek9215.mc68hc705c8a_withtestrom.7201"
|
||||||
|
description: Servo MCU 2.1 MC68HC705C8A (BAD_DUMP, from cdi910)
|
||||||
|
size: 8192
|
||||||
|
crc32: "7a3af407"
|
||||||
|
sha1: "fdf8d78d6a0df4a56b5b963d72eabd39fcec163f"
|
||||||
|
- name: "zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206"
|
||||||
|
description: Slave MCU 2.0 MC68HC705C8A (BAD_DUMP, from cdi910)
|
||||||
|
size: 8192
|
||||||
|
crc32: "688cda63"
|
||||||
|
sha1: "56d0acd7caad51c7de703247cd6d842b36173079"
|
||||||
|
|
||||||
# Slave MCU (MC68HC705C8A) - shared with cdi910 dump, BAD_DUMP
|
- name: cdimono2.zip
|
||||||
- name: "zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206"
|
category: bios_zip
|
||||||
zip: "cdimono1.zip"
|
|
||||||
system: cdi
|
|
||||||
required: true
|
|
||||||
size: 8192 # 0x2000
|
|
||||||
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"
|
|
||||||
system: cdi
|
system: cdi
|
||||||
required: false
|
required: false
|
||||||
size: 524288 # 0x80000
|
note: "CD-i Mono-II (NTSC). MACHINE_NOT_WORKING. Listed in .info as optional."
|
||||||
crc32: "17d723e7"
|
source_ref: "src/mame/drivers/cdi.cpp:609-618"
|
||||||
sha1: "6c317a82e35d60ca5e7a74fc99f665055693169d"
|
contents:
|
||||||
note: "Mono-II main CPU BIOS. Philips CDI-220 PH3 R1.2."
|
- name: "philips__cdi-220_ph3_r1.2__mb834200b-15__02f_aa__9402_z04.tc574200-le._1.7211"
|
||||||
source_ref: "src/mame/drivers/cdi.cpp:623"
|
description: Mono-II main CPU BIOS, Philips CDI-220 PH3 R1.2
|
||||||
|
size: 524288
|
||||||
|
crc32: "17d723e7"
|
||||||
|
sha1: "6c317a82e35d60ca5e7a74fc99f665055693169d"
|
||||||
|
- name: "zc405351p__servo_cdi_4.1__0d67p__lluk9404.mc68hc705c8a.7490"
|
||||||
|
description: Mono-II servo MCU 4.1
|
||||||
|
size: 8192
|
||||||
|
crc32: "2bc8e4e9"
|
||||||
|
sha1: "8cd052b532fc052d6b0077261c12f800e8655bb1"
|
||||||
|
- name: "zc405352p__slave_cdi_4.1__0d67p__lltr9403.mc68hc705c8a.7206"
|
||||||
|
description: Mono-II slave MCU 4.1
|
||||||
|
size: 8192
|
||||||
|
crc32: "5b19da07"
|
||||||
|
sha1: "cf02d84977050c71e87a38f1249e83c43a93949b"
|
||||||
|
|
||||||
- name: "zc405351p__servo_cdi_4.1__0d67p__lluk9404.mc68hc705c8a.7490"
|
- name: cdibios.zip
|
||||||
zip: "cdimono2.zip"
|
category: bios_zip
|
||||||
system: cdi
|
system: cdi
|
||||||
required: false
|
required: false
|
||||||
size: 8192 # 0x2000
|
note: "CD-i BIOS for Quizard arcade. MACHINE_IS_BIOS_ROOT. Subset of cdimono1 + slave MCU."
|
||||||
crc32: "2bc8e4e9"
|
source_ref: "src/mame/drivers/cdi.cpp:630-640"
|
||||||
sha1: "8cd052b532fc052d6b0077261c12f800e8655bb1"
|
contents:
|
||||||
note: "Mono-II servo MCU 4.1."
|
- name: cdi200.rom
|
||||||
source_ref: "src/mame/drivers/cdi.cpp:626"
|
description: Magnavox CD-i 200 BIOS (same as cdimono1)
|
||||||
|
size: 524288
|
||||||
|
crc32: "40c4e6b9"
|
||||||
|
sha1: "d961de803c89b3d1902d656ceb9ce7c02dccb40a"
|
||||||
|
- name: cdi220b.rom
|
||||||
|
description: Philips CD-i 220 F2 BIOS (same as cdimono1)
|
||||||
|
size: 524288
|
||||||
|
crc32: "279683ca"
|
||||||
|
sha1: "53360a1f21ddac952e95306ced64186a3fc0b93e"
|
||||||
|
- name: "zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206"
|
||||||
|
description: Slave MCU 2.0 (BAD_DUMP, same as cdimono1)
|
||||||
|
size: 8192
|
||||||
|
crc32: "688cda63"
|
||||||
|
sha1: "56d0acd7caad51c7de703247cd6d842b36173079"
|
||||||
|
|
||||||
- name: "zc405352p__slave_cdi_4.1__0d67p__lltr9403.mc68hc705c8a.7206"
|
- name: cdi910.zip
|
||||||
zip: "cdimono2.zip"
|
category: bios_zip
|
||||||
system: cdi
|
system: cdi
|
||||||
required: false
|
required: false
|
||||||
size: 8192 # 0x2000
|
note: "CD-i 910-17P Mini-MMC (PAL). MACHINE_NOT_WORKING. Not in .info firmware list."
|
||||||
crc32: "5b19da07"
|
source_ref: "src/mame/drivers/cdi.cpp:591-607"
|
||||||
sha1: "cf02d84977050c71e87a38f1249e83c43a93949b"
|
contents:
|
||||||
note: "Mono-II slave MCU 4.1."
|
- name: "philips__cd-i_2.1__mb834200b-15__26b_aa__9224_z01.tc574200.7211"
|
||||||
source_ref: "src/mame/drivers/cdi.cpp:629"
|
description: CD-i 910-17P Mini-MMC BIOS (default)
|
||||||
|
size: 524288
|
||||||
|
crc32: "4ae3bee3"
|
||||||
|
sha1: "9729b4ee3ce0c17172d062339c47b1ab822b222b"
|
||||||
|
- name: cdi910.rom
|
||||||
|
description: CD-i 910 alternate BIOS
|
||||||
|
size: 524288
|
||||||
|
crc32: "2f3048d2"
|
||||||
|
sha1: "11c4c3e602060518b52e77156345fa01f619e793"
|
||||||
|
- 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"
|
||||||
|
|
||||||
# =====================================================
|
- name: cdi490a.zip
|
||||||
# cdibios.zip - CD-i BIOS for Quizard arcade - OPTIONAL
|
category: bios_zip
|
||||||
# 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"
|
|
||||||
system: cdi
|
system: cdi
|
||||||
required: false
|
required: false
|
||||||
size: 524288 # 0x80000
|
note: "CD-i 490. MACHINE_NOT_WORKING. Not in .info firmware list."
|
||||||
crc32: "40c4e6b9"
|
source_ref: "src/mame/drivers/cdi.cpp:620-628"
|
||||||
sha1: "d961de803c89b3d1902d656ceb9ce7c02dccb40a"
|
contents:
|
||||||
note: "Magnavox CD-i 200 BIOS (same as cdimono1). For Quizard arcade."
|
- name: cdi490a.rom
|
||||||
source_ref: "src/mame/drivers/cdi.cpp:639"
|
description: CD-i 490 main CPU BIOS
|
||||||
|
size: 524288
|
||||||
- name: "cdi220b.rom"
|
crc32: "e2f200f6"
|
||||||
zip: "cdibios.zip"
|
sha1: "c9bf3c4c7e4fe5cbec3fe3fc993c77a4522ca547"
|
||||||
system: cdi
|
- name: impega.rom
|
||||||
required: false
|
description: MPEG audio decoder ROM
|
||||||
size: 524288 # 0x80000
|
size: 262144
|
||||||
crc32: "279683ca"
|
crc32: "84d6f6aa"
|
||||||
sha1: "53360a1f21ddac952e95306ced64186a3fc0b93e"
|
sha1: "02526482a0851ea2a7b582d8afaa8ef14a8bd914"
|
||||||
note: "Philips CD-i 220 F2 BIOS (same as cdimono1). For Quizard arcade."
|
- name: vmpega.rom
|
||||||
source_ref: "src/mame/drivers/cdi.cpp:641"
|
description: MPEG video decoder ROM
|
||||||
|
size: 262144
|
||||||
- name: "zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206"
|
crc32: "db264e8b"
|
||||||
zip: "cdibios.zip"
|
sha1: "be407fbc102f1731a0862554855e963e5a47c17b"
|
||||||
system: cdi
|
|
||||||
required: false
|
|
||||||
size: 8192 # 0x2000
|
|
||||||
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"
|
|
||||||
system: cdi
|
|
||||||
required: false
|
|
||||||
size: 524288 # 0x80000
|
|
||||||
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
|
|
||||||
crc32: "2f3048d2"
|
|
||||||
sha1: "11c4c3e602060518b52e77156345fa01f619e793"
|
|
||||||
note: "CD-i 910 alternate BIOS. Not listed in libretro firmware."
|
|
||||||
source_ref: "src/mame/drivers/cdi.cpp:596"
|
|
||||||
|
|
||||||
# cdi490a - CD-i 490 - MACHINE_NOT_WORKING
|
|
||||||
- name: "cdi490a.rom"
|
|
||||||
zip: "cdi490a.zip"
|
|
||||||
system: cdi
|
|
||||||
required: false
|
|
||||||
size: 524288 # 0x80000
|
|
||||||
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
|
|
||||||
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
|
|
||||||
crc32: "db264e8b"
|
|
||||||
sha1: "be407fbc102f1731a0862554855e963e5a47c17b"
|
|
||||||
note: "CD-i 490 MPEG video decoder ROM."
|
|
||||||
source_ref: "src/mame/drivers/cdi.cpp:637"
|
|
||||||
|
|
||||||
platform_details:
|
platform_details:
|
||||||
cdi:
|
cdi:
|
||||||
@@ -232,4 +185,4 @@ platform_details:
|
|||||||
rom_path_flag: "-rp"
|
rom_path_flag: "-rp"
|
||||||
rom_search_path: "<game_path>;<system_dir>/same_cdi/bios/"
|
rom_search_path: "<game_path>;<system_dir>/same_cdi/bios/"
|
||||||
supported_extensions: ["chd", "iso", "cue"]
|
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"
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
emulator: SameBoy
|
emulator: SameBoy
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: official_port
|
||||||
source: "https://github.com/libretro/SameBoy"
|
source: "https://github.com/libretro/SameBoy"
|
||||||
profiled_date: "2026-03-18"
|
upstream: "https://github.com/LIJI32/SameBoy"
|
||||||
core_version: "0.14.7"
|
profiled_date: "2026-03-25"
|
||||||
|
core_version: "0.15.4"
|
||||||
display_name: "Nintendo - Game Boy / Color (SameBoy)"
|
display_name: "Nintendo - Game Boy / Color (SameBoy)"
|
||||||
cores:
|
cores:
|
||||||
- sameboy
|
- sameboy
|
||||||
@@ -13,128 +15,90 @@ systems:
|
|||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
SameBoy is a high-accuracy Game Boy, Game Boy Color and Super Game Boy
|
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
|
All boot ROMs are optional. SameBoy compiles open-source boot ROM
|
||||||
replacements compiled from BootROMs/*.asm and embedded directly into
|
replacements from BootROMs/*.asm and embeds them into the libretro
|
||||||
the libretro core binary (extern arrays dmg_boot, cgb_boot, agb_boot,
|
binary (extern arrays dmg_boot, cgb_boot, agb_boot, sgb_boot,
|
||||||
sgb_boot, sgb2_boot in libretro.c:129-130). These built-in boot ROMs
|
sgb2_boot in libretro.c:129-130). These are SameBoy-authored
|
||||||
are SameBoy-authored replacements, not Nintendo originals.
|
replacements, not Nintendo originals.
|
||||||
|
|
||||||
The libretro port (libretro.c boot_rom_load(), line 513) tries to load
|
The libretro port (boot_rom_load, libretro.c:512-588) tries to load
|
||||||
an external boot ROM from the system directory first. The filename is
|
an external boot ROM from the system directory first. Filename is
|
||||||
constructed as "{model}_boot.bin" where model is one of: dmg0, dmg,
|
constructed as "{model}_boot.bin". If missing, the embedded boot ROM
|
||||||
mgb, sgb, sgb2, cgb0, cgb, agb. If the file is missing or unreadable,
|
is used as fallback.
|
||||||
the embedded boot ROM is used as fallback.
|
|
||||||
|
|
||||||
Boot ROM type selection depends on the emulated model configured via
|
Boot ROM selection depends on the sameboy_model core option
|
||||||
the sameboy_model core option (request_boot_rom in Core/gb.c:1588):
|
(request_boot_rom in Core/gb.c:1587-1625):
|
||||||
DMG_B -> GB_BOOT_ROM_DMG -> dmg_boot.bin
|
DMG_B -> GB_BOOT_ROM_DMG -> dmg_boot.bin
|
||||||
MGB -> GB_BOOT_ROM_MGB -> mgb_boot.bin
|
SGB_NTSC/PAL -> GB_BOOT_ROM_SGB -> sgb_boot.bin
|
||||||
SGB/SGB_NTSC -> GB_BOOT_ROM_SGB -> sgb_boot.bin
|
|
||||||
SGB2 -> GB_BOOT_ROM_SGB2 -> sgb2_boot.bin
|
SGB2 -> GB_BOOT_ROM_SGB2 -> sgb2_boot.bin
|
||||||
CGB_0 -> GB_BOOT_ROM_CGB_0 -> cgb0_boot.bin
|
CGB_A..E -> GB_BOOT_ROM_CGB -> cgb_boot.bin
|
||||||
CGB_A..CGB_E -> GB_BOOT_ROM_CGB -> cgb_boot.bin
|
AGB_A/GBP_A -> GB_BOOT_ROM_AGB -> agb_boot.bin
|
||||||
AGB_A (GBA) -> GB_BOOT_ROM_AGB -> agb_boot.bin
|
|
||||||
|
|
||||||
Built-in fallback mapping (some models share a boot ROM):
|
.info declares firmware_count=2 (dmg, cgb only). Actual reachable
|
||||||
DMG_0 and MGB reuse dmg_boot (not yet separately implemented)
|
files in the libretro port are 5 (adds sgb, sgb2, agb).
|
||||||
CGB_0 reuses cgb_boot (not yet separately implemented)
|
|
||||||
|
|
||||||
The boot ROM buffer is 0x900 (2304) bytes. DMG/MGB/SGB/SGB2 boot ROMs
|
Unreachable boot ROMs in the libretro port (array entries exist in
|
||||||
are 256 bytes (mapped at 0x0000-0x00FF). CGB/AGB boot ROMs are 2304
|
boot_rom_load but no model option triggers them):
|
||||||
bytes (mapped at 0x0000-0x00FF and 0x0200-0x08FF).
|
- 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
|
No validation performed on loaded boot ROMs. GB_load_boot_rom_from_buffer
|
||||||
core.
|
(Core/gb.c:266-273) does a plain memcpy capped at 0x900 bytes.
|
||||||
|
|
||||||
files:
|
files:
|
||||||
# --- DMG boot ROM (optional, built-in fallback) ---
|
|
||||||
- name: "dmg_boot.bin"
|
- name: "dmg_boot.bin"
|
||||||
system: nintendo-gb
|
system: nintendo-gb
|
||||||
description: "Original Game Boy (DMG) boot ROM"
|
description: "Game Boy (DMG) boot ROM"
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 256
|
size: 256
|
||||||
source_ref: "libretro.c:519,530,556 (boot_rom_load)"
|
source_ref: "libretro.c:519,530,556 (boot_rom_load); Core/gb.c:1594 (request_boot_rom)"
|
||||||
notes: "Also used as fallback for DMG_0 and MGB models when dedicated boot ROMs are absent."
|
|
||||||
|
|
||||||
# --- 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"
|
- name: "sgb_boot.bin"
|
||||||
system: nintendo-sgb
|
system: nintendo-sgb
|
||||||
description: "Super Game Boy (SGB) boot ROM"
|
description: "Super Game Boy (SGB) boot ROM"
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 256
|
size: 256
|
||||||
source_ref: "libretro.c:521,532,556"
|
source_ref: "libretro.c:521,532,556; Core/gb.c:1600-1604"
|
||||||
notes: "Used for SGB and SGB_NTSC models. Also loaded temporarily when borrowing SGB border for non-SGB games."
|
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"
|
- name: "sgb2_boot.bin"
|
||||||
system: nintendo-sgb
|
system: nintendo-sgb
|
||||||
description: "Super Game Boy 2 (SGB2) boot ROM"
|
description: "Super Game Boy 2 (SGB2) boot ROM"
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 256
|
size: 256
|
||||||
source_ref: "libretro.c:522,533,556"
|
source_ref: "libretro.c:522,533,556; Core/gb.c:1607"
|
||||||
notes: "Separate from sgb_boot.bin, unlike some other cores that merge SGB/SGB2."
|
|
||||||
|
|
||||||
# --- CGB boot ROM (optional, built-in fallback) ---
|
|
||||||
- name: "cgb_boot.bin"
|
- name: "cgb_boot.bin"
|
||||||
system: nintendo-gbc
|
system: nintendo-gbc
|
||||||
description: "Game Boy Color (CGB) boot ROM"
|
description: "Game Boy Color (CGB) boot ROM"
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 2304
|
size: 2304
|
||||||
source_ref: "libretro.c:524,535,556"
|
source_ref: "libretro.c:524,535,556; Core/gb.c:1613-1618"
|
||||||
notes: "Also used as fallback for CGB_0 model (not separately implemented yet)."
|
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"
|
- name: "agb_boot.bin"
|
||||||
system: nintendo-gbc
|
system: nintendo-gbc
|
||||||
description: "Game Boy Advance in GBC mode (AGB) boot ROM"
|
description: "Game Boy Advance in GBC mode (AGB) boot ROM"
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 2304
|
size: 2304
|
||||||
source_ref: "libretro.c:525,536,556"
|
source_ref: "libretro.c:525,536,556; Core/gb.c:1621"
|
||||||
notes: "Used when emulating a GBA running GB/GBC software. Enables GBA-enhanced palettes in compatible GBC games."
|
notes: "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."
|
|
||||||
|
|
||||||
builtin_boot_roms:
|
builtin_boot_roms:
|
||||||
description: |
|
description: |
|
||||||
SameBoy includes open-source boot ROM replacements compiled from
|
Open-source boot ROM replacements compiled from BootROMs/ assembly.
|
||||||
assembly source in BootROMs/ directory. These are NOT Nintendo
|
Not Nintendo originals.
|
||||||
originals. They reproduce the boot animation and hardware
|
|
||||||
initialization but are clean-room implementations.
|
|
||||||
sources:
|
sources:
|
||||||
- "BootROMs/dmg_boot.asm -> dmg_boot (256 bytes)"
|
- "BootROMs/dmg_boot.asm -> dmg_boot (256 bytes)"
|
||||||
- "BootROMs/sgb_boot.asm -> sgb_boot (256 bytes)"
|
- "BootROMs/sgb_boot.asm -> sgb_boot (256 bytes)"
|
||||||
@@ -157,4 +121,3 @@ builtin_boot_roms:
|
|||||||
agb_boot.bin:
|
agb_boot.bin:
|
||||||
md5: "7e095aa30941da3086fa0e9221335370"
|
md5: "7e095aa30941da3086fa0e9221335370"
|
||||||
sha1: "3b6231bdf840fb889f402d0ae89f21adb077323a"
|
sha1: "3b6231bdf840fb889f402d0ae89f21adb077323a"
|
||||||
notes: "These are SameBoy's own boot ROMs, not Nintendo originals. The hashes above identify the built-in versions."
|
|
||||||
|
|||||||
@@ -1,8 +1,25 @@
|
|||||||
emulator: "sameduck"
|
emulator: sameduck
|
||||||
type: alias
|
type: libretro
|
||||||
alias_of: "sameboy"
|
core_classification: official_port
|
||||||
profiled_date: "2026-03-18"
|
source: "https://github.com/LIJI32/SameBoy"
|
||||||
core_version: "git"
|
upstream: "https://github.com/LIJI32/SameBoy"
|
||||||
|
profiled_date: "2026-03-25"
|
||||||
|
core_version: "0.13.6"
|
||||||
display_name: "Mega Duck / Cougar Boy (SameDuck)"
|
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: []
|
files: []
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
emulator: ScummVM
|
emulator: ScummVM
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: game_engine
|
||||||
source: "https://github.com/libretro/scummvm"
|
source: "https://github.com/libretro/scummvm"
|
||||||
|
upstream: "https://github.com/scummvm/scummvm"
|
||||||
logo: "https://raw.githubusercontent.com/scummvm/scummvm/master/icons/scummvm.svg"
|
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"
|
core_version: "2.8.0git"
|
||||||
display_name: "ScummVM"
|
display_name: "ScummVM"
|
||||||
|
cores: [scummvm]
|
||||||
systems: [scummvm]
|
systems: [scummvm]
|
||||||
|
|
||||||
# ScummVM is a multi-engine point-and-click adventure game interpreter.
|
# ScummVM is a multi-engine point-and-click adventure game interpreter.
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: SDLPAL
|
emulator: SDLPAL
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: official_port
|
||||||
source: "https://github.com/sdlpal/sdlpal"
|
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"
|
core_version: "v2.0.1"
|
||||||
display_name: "SDLPAL"
|
display_name: "SDLPAL"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,175 +11,171 @@ cores:
|
|||||||
systems:
|
systems:
|
||||||
- sdlpal
|
- 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: |
|
notes: |
|
||||||
No BIOS or firmware required. SDLPAL is a game engine that needs the
|
Game engine reimplementing the classic Chinese RPG PAL (Sword and Fairy)
|
||||||
original PAL (Sword and Fairy) game data files to run.
|
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
|
Place game files in <system_dir>/sdlpal/ or point a .cfg at the game
|
||||||
game directory. The game is available on Steam (app 1546570).
|
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)
|
The libretro port disables MP3, OGG, OPUS, native MIDI, and CD audio
|
||||||
versions of the game data. It auto-detects which version is present.
|
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:
|
files:
|
||||||
# ================================================================
|
# ================================================================
|
||||||
# Required game data archives (proprietary, not distributable)
|
# Required game data archives
|
||||||
# util.c:733-737 - UTIL_CheckResourceFiles common_files[]
|
# util.c:733-737 UTIL_CheckResourceFiles common_files[]
|
||||||
|
# global.c:175-182 PAL_InitGlobals
|
||||||
# ================================================================
|
# ================================================================
|
||||||
|
|
||||||
- name: "abc.mkf"
|
- name: "abc.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/abc.mkf"
|
path: "sdlpal/abc.mkf"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:734, battle.c:879, global.c:55"
|
source_ref: "util.c:734, global.c:55, battle.c:879"
|
||||||
note: >
|
note: "Animation and battle character data archive."
|
||||||
Animation/battle character data archive. Required for battle scenes
|
|
||||||
and character animations.
|
|
||||||
|
|
||||||
- name: "ball.mkf"
|
- name: "ball.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/ball.mkf"
|
path: "sdlpal/ball.mkf"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:734, global.c:177"
|
source_ref: "util.c:734, global.c:177"
|
||||||
note: >
|
note: "Magic effect graphics archive."
|
||||||
Ball/magic effect graphics archive.
|
|
||||||
|
|
||||||
- name: "data.mkf"
|
- name: "data.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/data.mkf"
|
path: "sdlpal/data.mkf"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:734, global.c:178"
|
source_ref: "util.c:734, global.c:178"
|
||||||
note: >
|
note: "Core game data archive (scripts, events, game logic)."
|
||||||
Core game data archive containing scripts, events, and game logic.
|
|
||||||
|
|
||||||
- name: "f.mkf"
|
- name: "f.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/f.mkf"
|
path: "sdlpal/f.mkf"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:734, global.c:179"
|
source_ref: "util.c:734, global.c:179"
|
||||||
note: >
|
note: "Face/portrait graphics archive."
|
||||||
Face/portrait graphics archive for character dialog.
|
|
||||||
|
|
||||||
- name: "fbp.mkf"
|
- name: "fbp.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/fbp.mkf"
|
path: "sdlpal/fbp.mkf"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:735, global.c:175"
|
source_ref: "util.c:735, global.c:175"
|
||||||
note: >
|
note: "Full-screen background picture archive (cutscenes, title)."
|
||||||
Full-screen background picture archive (cutscenes, title screen).
|
|
||||||
|
|
||||||
- name: "fire.mkf"
|
- name: "fire.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/fire.mkf"
|
path: "sdlpal/fire.mkf"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:735, global.c:180"
|
source_ref: "util.c:735, global.c:180"
|
||||||
note: >
|
note: "Fire/spell effect graphics archive."
|
||||||
Fire/spell effect graphics archive.
|
|
||||||
|
|
||||||
- name: "gop.mkf"
|
- name: "gop.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/gop.mkf"
|
path: "sdlpal/gop.mkf"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:735, res.c:234"
|
source_ref: "util.c:735, res.c:234"
|
||||||
note: >
|
note: "Game object palette/graphics archive."
|
||||||
GOP (game object palette/graphics) archive.
|
|
||||||
|
|
||||||
- name: "map.mkf"
|
- name: "map.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/map.mkf"
|
path: "sdlpal/map.mkf"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:735, res.c:233, global.c:55"
|
source_ref: "util.c:735, global.c:55, res.c:233"
|
||||||
note: >
|
note: "Map tile and layout data archive."
|
||||||
Map tile and layout data archive for all game locations.
|
|
||||||
|
|
||||||
- name: "mgo.mkf"
|
- name: "mgo.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/mgo.mkf"
|
path: "sdlpal/mgo.mkf"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:736, global.c:176"
|
source_ref: "util.c:736, global.c:176"
|
||||||
note: >
|
note: "Map graphic object (sprite overlay) archive."
|
||||||
Map graphic object (sprite overlay) archive.
|
|
||||||
|
|
||||||
- name: "pat.mkf"
|
- name: "pat.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/pat.mkf"
|
path: "sdlpal/pat.mkf"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:736, palette.c:53"
|
source_ref: "util.c:736, palette.c:53"
|
||||||
note: >
|
note: "Palette data archive."
|
||||||
Palette data archive for color management.
|
|
||||||
|
|
||||||
- name: "rgm.mkf"
|
- name: "rgm.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/rgm.mkf"
|
path: "sdlpal/rgm.mkf"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:736, global.c:181"
|
source_ref: "util.c:736, global.c:181"
|
||||||
note: >
|
note: "RGM graphics archive."
|
||||||
RGM graphics archive.
|
|
||||||
|
|
||||||
- name: "rng.mkf"
|
- name: "rng.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/rng.mkf"
|
path: "sdlpal/rng.mkf"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:736, rngplay.c:402"
|
source_ref: "util.c:736, rngplay.c:402"
|
||||||
note: >
|
note: "RNG animation/cutscene sequence archive."
|
||||||
RNG animation/cutscene sequence archive.
|
|
||||||
|
|
||||||
- name: "sss.mkf"
|
- name: "sss.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/sss.mkf"
|
path: "sdlpal/sss.mkf"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:737, global.c:182"
|
source_ref: "util.c:737, global.c:182"
|
||||||
note: >
|
note: "SSS data archive (message offsets in chunk 3)."
|
||||||
SSS data archive.
|
|
||||||
|
|
||||||
# ================================================================
|
# ================================================================
|
||||||
# Message/text data (one of these is required)
|
# Message/text data (both required in default mode)
|
||||||
# util.c:739-741 - msg_files[]
|
# 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"
|
- name: "word.dat"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/word.dat"
|
path: "sdlpal/word.dat"
|
||||||
required: true
|
required: true
|
||||||
source_ref: "util.c:741, text.c:719, global.c:197"
|
source_ref: "util.c:741, text.c:719, global.c:197"
|
||||||
note: >
|
note: "Word data (menu items, status labels, item/spell names)."
|
||||||
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.
|
|
||||||
|
|
||||||
- name: "m.msg"
|
# ================================================================
|
||||||
|
# Object descriptions (DOS version only)
|
||||||
|
# global.c:204 PAL_LoadObjectDesc -> ui.c:864
|
||||||
|
# ================================================================
|
||||||
|
|
||||||
|
- name: "desc.dat"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/m.msg"
|
path: "sdlpal/desc.dat"
|
||||||
required: false
|
required: false
|
||||||
source_ref: "util.c:740"
|
source_ref: "global.c:204, ui.c:864"
|
||||||
note: >
|
note: "Object description strings. DOS version only (skipped for Win95). Returns NULL if absent."
|
||||||
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.
|
# 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)
|
# Sound effect files (optional, at least one recommended)
|
||||||
# util.c:743 - sound_files[]
|
# sound.c:962-975 SOUND_Init
|
||||||
# ================================================================
|
# ================================================================
|
||||||
|
|
||||||
- name: "voc.mkf"
|
- name: "voc.mkf"
|
||||||
@@ -185,37 +183,78 @@ files:
|
|||||||
path: "sdlpal/voc.mkf"
|
path: "sdlpal/voc.mkf"
|
||||||
required: false
|
required: false
|
||||||
source_ref: "util.c:743, sound.c:969"
|
source_ref: "util.c:743, sound.c:969"
|
||||||
note: >
|
note: "VOC format sound effects archive (DOS version). Preferred for DOS game data."
|
||||||
VOC format sound effects archive (DOS version). One of voc.mkf or
|
|
||||||
sounds.mkf is needed for sound effects.
|
|
||||||
|
|
||||||
- name: "sounds.mkf"
|
- name: "sounds.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/sounds.mkf"
|
path: "sdlpal/sounds.mkf"
|
||||||
required: false
|
required: false
|
||||||
source_ref: "util.c:743, sound.c:964"
|
source_ref: "util.c:743, sound.c:964"
|
||||||
note: >
|
note: "WAV format sound effects archive (Win95 version). Preferred for Win95 game data."
|
||||||
WAV format sound effects archive (Win95 version). Alternative to
|
|
||||||
voc.mkf with higher quality audio.
|
|
||||||
|
|
||||||
# ================================================================
|
# ================================================================
|
||||||
# Music files (optional, at least one recommended)
|
# 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"
|
- name: "mus.mkf"
|
||||||
category: game_data
|
category: game_data
|
||||||
path: "sdlpal/mus.mkf"
|
path: "sdlpal/mus.mkf"
|
||||||
required: false
|
required: false
|
||||||
source_ref: "util.c:744, audio.c:305"
|
source_ref: "util.c:744, audio.c:305"
|
||||||
note: >
|
note: "RIX/OPL music archive. Default music source, played through OPL emulation."
|
||||||
RIX/OPL music archive. Default music source for the game. Contains
|
|
||||||
FM synthesizer music data 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)."
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: SimCoupe
|
emulator: SimCoupe
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: community_fork
|
||||||
source: "https://github.com/libretro/libretro-simcoupe"
|
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"
|
core_version: "Git"
|
||||||
display_name: "SAM Coupe (SimCoupe)"
|
display_name: "SAM Coupe (SimCoupe)"
|
||||||
cores:
|
cores:
|
||||||
@@ -10,15 +12,15 @@ systems:
|
|||||||
- sam-coupe
|
- sam-coupe
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
SimCoupe is an emulator for the SAM Coupe, a British 8-bit home
|
SAM Coupe emulator by Simon Owen. Port based on old pre-1.0 SimCoupe
|
||||||
computer by Miles Gordon Technology (1989). The SAM Coupe was
|
codebase. Experimental, incomplete (no sound, partial input).
|
||||||
designed as a successor to the ZX Spectrum with a Z80B CPU at 6 MHz
|
|
||||||
and custom ASIC graphics.
|
|
||||||
|
|
||||||
No external BIOS or ROM files required. The SAM Coupe ROM is built
|
SAM Coupe ROM v3.0 and SAMDOS 2.0 embedded in the binary (SAMROM.h,
|
||||||
into the emulator. The libretro wrapper does not request any files
|
SAMDOS.h). HDBOOT patches for Atom Lite also embedded (HDBOOT.h).
|
||||||
from the system directory.
|
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: []
|
files: []
|
||||||
|
|||||||
@@ -1,8 +1,70 @@
|
|||||||
emulator: "skyemu"
|
emulator: skyemu
|
||||||
type: alias
|
type: standalone + libretro
|
||||||
alias_of: "mgba"
|
core_classification: official_port
|
||||||
profiled_date: "2026-03-18"
|
source: https://github.com/skylersaleh/SkyEmu/blob/v5/src/libretro.c
|
||||||
core_version: "Git"
|
upstream: https://github.com/skylersaleh/SkyEmu
|
||||||
|
profiled_date: "2026-03-25"
|
||||||
|
core_version: "v5"
|
||||||
display_name: "Nintendo - Game Boy/GBA/NDS (SkyEmu)"
|
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"
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: SMS Plus GX
|
emulator: SMS Plus GX
|
||||||
type: libretro
|
type: standalone + libretro
|
||||||
|
core_classification: enhanced_fork
|
||||||
source: "https://github.com/libretro/smsplus-gx"
|
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"
|
core_version: "1.8"
|
||||||
display_name: "Sega - MS/GG (SMS Plus GX)"
|
display_name: "Sega - MS/GG (SMS Plus GX)"
|
||||||
cores:
|
cores:
|
||||||
@@ -11,42 +13,35 @@ systems:
|
|||||||
- sega-game-gear
|
- sega-game-gear
|
||||||
- colecovision
|
- colecovision
|
||||||
- sega-sg1000
|
- sega-sg1000
|
||||||
|
- sord-m5
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
SMS Plus GX is a Sega Master System / Game Gear emulator with additional
|
Enhanced fork of Charles MacDonald's SMS Plus 1.3 by Eke-Eke (GX) and
|
||||||
support for ColecoVision, SG-1000 and Sord M5 via TMS9918 VDP emulation.
|
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).
|
BIOS loading in bios_init() (smsplus_libretro.c:203-252). bios.sms is
|
||||||
Two BIOS files are supported:
|
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
|
.info marks BIOS.col as optional (firmware1_opt=true) but the libretro
|
||||||
console types. A core option "smsplus_sms_bios" (default: disabled)
|
code returns false from retro_load_game() when BIOS.col is missing for
|
||||||
controls whether it is used. When set to "auto" and the file exists,
|
.col ROMs.
|
||||||
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.
|
|
||||||
|
|
||||||
files:
|
files:
|
||||||
- name: "bios.sms"
|
- name: "bios.sms"
|
||||||
system: sega-master-system
|
system: sega-master-system
|
||||||
description: "Sega Master System boot ROM"
|
description: "Sega Master System boot ROM"
|
||||||
required: false
|
required: false
|
||||||
|
aliases: ["BIOS.sms"]
|
||||||
source_ref: "smsplus_libretro.c:211-229"
|
source_ref: "smsplus_libretro.c:211-229"
|
||||||
notes: |
|
notes: |
|
||||||
Loaded into bios.rom (up to 1 MB allocated). Only active when the
|
Loaded into bios.rom (up to 1 MB allocated). Only active when core
|
||||||
core option smsplus_sms_bios is set to "auto". Displays the Sega
|
option smsplus_sms_bios is "auto". Displays SMS startup screen
|
||||||
Master System startup screen before game execution.
|
before game execution. Standalone ports use BIOS.sms (uppercase).
|
||||||
|
|
||||||
- name: "BIOS.col"
|
- name: "BIOS.col"
|
||||||
system: colecovision
|
system: colecovision
|
||||||
@@ -55,30 +50,18 @@ files:
|
|||||||
size: 8192
|
size: 8192
|
||||||
source_ref: "smsplus_libretro.c:232-248"
|
source_ref: "smsplus_libretro.c:232-248"
|
||||||
notes: |
|
notes: |
|
||||||
Required for ColecoVision games. Read as 0x2000 (8192) raw bytes
|
Required for ColecoVision games. Read as 0x2000 (8192) bytes into
|
||||||
into coleco.rom. Without this file, retro_load_game() returns false
|
coleco.rom. Without this file, retro_load_game() returns false for
|
||||||
when loading .col files. Filename is case-sensitive on Linux.
|
.col files.
|
||||||
|
|
||||||
platform_details:
|
- name: "BIOS_sordm5.bin"
|
||||||
bios_mapping:
|
system: sord-m5
|
||||||
sms:
|
description: "Sord M5 BIOS ROM"
|
||||||
target: "bios.rom buffer, mapped via slot system"
|
required: false
|
||||||
source_ref: "smsplus_libretro.c:208-229, source/memz80.c"
|
size: 8192
|
||||||
notes: |
|
mode: standalone
|
||||||
When bios.enabled has both bits set (file present + option enabled),
|
source_ref: "ports/sdl/smsplus.c:321-329"
|
||||||
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: |
|
notes: |
|
||||||
File extension .col forces CONSOLE_COLECO with MAPPER_NONE.
|
Read as 0x2000 (8192) bytes into coleco.rom (shared buffer). Only
|
||||||
Extension .sg forces CONSOLE_SG1000.
|
in standalone builds (SORDM5_EMU define). Not compiled in libretro.
|
||||||
The core option smsplus_hardware can override to: master system,
|
Code does not enforce presence but system needs BIOS to function.
|
||||||
master system II, game gear, game gear (sms compatibility), coleco.
|
|
||||||
|
|||||||
@@ -1,137 +1,49 @@
|
|||||||
emulator: snes9x
|
emulator: snes9x
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: official_port
|
||||||
source: "https://github.com/libretro/snes9x"
|
source: "https://github.com/libretro/snes9x"
|
||||||
|
upstream: "https://github.com/snes9xgit/snes9x"
|
||||||
logo: "https://raw.githubusercontent.com/snes9xgit/snes9x/master/gtk/data/snes9x.svg"
|
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"
|
core_version: "1.61"
|
||||||
display_name: "Nintendo - SNES / SFC (Snes9x)"
|
display_name: "Nintendo - SNES / SFC (Snes9x)"
|
||||||
systems: [nintendo-snes, nintendo-satellaview, nintendo-sufami-turbo]
|
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:
|
cores:
|
||||||
snes9x:
|
snes9x:
|
||||||
source: "https://github.com/libretro/snes9x"
|
source: "https://github.com/libretro/snes9x"
|
||||||
firmware_loading: true
|
firmware_loading: true
|
||||||
hle_only: true
|
hle_only: true
|
||||||
notes: |
|
notes: |
|
||||||
Current snes9x. Loads BS-X.bin (tries BS-X.bios as fallback)
|
Loads BS-X.bin and STBIOS.bin via LoadBIOS() in libretro.cpp.
|
||||||
and STBIOS.bin via LoadBIOS() in libretro.cpp.
|
BSX_LoadBIOS() in bsx.cpp tries BS-X.bios as fallback.
|
||||||
Auto-detects Sufami Turbo carts (is_SufamiTurbo_Cart) and
|
Auto-detects Satellaview and Sufami Turbo carts on load.
|
||||||
BS-X games (is_bsx) when loading via retro_load_game().
|
Subsystem support via retro_load_game_special() for
|
||||||
Also handles retro_load_game_special() for multi-cart and
|
RETRO_GAME_TYPE_BSX, RETRO_GAME_TYPE_SUFAMI_TURBO,
|
||||||
subsystem types (RETRO_GAME_TYPE_BSX, RETRO_GAME_TYPE_SUFAMI_TURBO,
|
RETRO_GAME_TYPE_MULTI_CART.
|
||||||
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.
|
|
||||||
|
|
||||||
files:
|
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"
|
- name: "BS-X.bin"
|
||||||
system: nintendo-satellaview
|
system: nintendo-satellaview
|
||||||
description: "Satellaview BS-X BIOS (Japanese)"
|
description: "Satellaview BS-X BIOS"
|
||||||
required: false
|
required: false
|
||||||
size: 1048576
|
size: 1048576
|
||||||
md5: "fed4d8242cfbed61343d53d48432aced"
|
validation: [size]
|
||||||
sha1: "604556b2e62860af18db5a77f2956ebc75450020"
|
source_ref: "libretro.cpp:1209, bsx.cpp:1209,1214"
|
||||||
source_ref: "libretro.cpp:1209 (LoadBIOS, 'BS-X.bin'), bsx.cpp:1209-1215 (BSX_LoadBIOS)"
|
|
||||||
aliases: ["BS-X.bios"]
|
aliases: ["BS-X.bios"]
|
||||||
notes: "Needed for Satellaview (.bs) game support. Without this file, BS-X games will fail to load."
|
notes: "Needed for Satellaview (.bs) games."
|
||||||
|
|
||||||
# -- 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().
|
|
||||||
|
|
||||||
- name: "STBIOS.bin"
|
- name: "STBIOS.bin"
|
||||||
system: nintendo-sufami-turbo
|
system: nintendo-sufami-turbo
|
||||||
description: "Bandai SuFami Turbo BIOS (Mini Cartridge add-on)"
|
description: "Sufami Turbo BIOS"
|
||||||
required: false
|
required: false
|
||||||
size: 262144
|
size: 262144
|
||||||
md5: "d3a44ba7d42a74d3ac58cb9c14c6a5ca"
|
validation: [size]
|
||||||
sha1: "ef86ea192eed03d5c413fdbbfd46043be1d7a127"
|
source_ref: "libretro.cpp:1203,1317, memmap.cpp:1672"
|
||||||
source_ref: "libretro.cpp:1203,1317,1348 (LoadBIOS, 'STBIOS.bin'), memmap.cpp:1672"
|
notes: "Needed for Sufami Turbo multi-cart games."
|
||||||
notes: "Needed for Sufami Turbo multi-cart games. Validated by is_SufamiTurbo_BIOS() which checks for 'BANDAI SFC-ADX' + 'SFC-ADX BACKUP' headers."
|
|
||||||
|
|
||||||
notes:
|
notes:
|
||||||
coprocessor_hle: |
|
coprocessor_hle: |
|
||||||
All SNES coprocessor chips are emulated in software (HLE) across
|
All coprocessors are HLE (DSP1-4, ST010, ST011, ST018, CX4).
|
||||||
every snes9x variant. No external firmware files are needed for:
|
No external firmware files needed. Lookup tables and math
|
||||||
- DSP1/DSP1B (dsp1.cpp, static DSP1ROM[1024] lookup table)
|
emulation hardcoded in dsp1-4.cpp, seta010-018.cpp, c4emu.cpp.
|
||||||
- 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().
|
|
||||||
|
|||||||
23
emulators/snes9x2002.yml
Normal file
23
emulators/snes9x2002.yml
Normal 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
25
emulators/snes9x2005.yml
Normal 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: []
|
||||||
26
emulators/snes9x2005_plus.yml
Normal file
26
emulators/snes9x2005_plus.yml
Normal 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
40
emulators/snes9x2010.yml
Normal 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.
|
||||||
@@ -1,94 +1,70 @@
|
|||||||
emulator: SquirrelJME
|
emulator: SquirrelJME
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: official_port
|
||||||
source: "https://github.com/SquirrelJME/SquirrelJME"
|
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"
|
core_version: "0.3.0"
|
||||||
display_name: "Java ME (SquirrelJME)"
|
display_name: "Java ME (SquirrelJME)"
|
||||||
cores: [squirreljme]
|
cores: [squirreljme]
|
||||||
systems: [j2me]
|
systems: [j2me]
|
||||||
verification: existence
|
verification: existence
|
||||||
notes: |
|
notes: |
|
||||||
Java ME 8 virtual machine for libretro. Runs J2ME MIDlets and older flip-phone games.
|
Java ME 8 virtual machine. Runs J2ME MIDlets and older flip-phone games.
|
||||||
The core needs a class library JAR placed in RetroArch's system directory.
|
Requires a class library JAR in the system directory. The core searches
|
||||||
It searches for the JAR using a priority list: versioned-fast first, then versioned,
|
sjme_nvm_romNames[] in priority order and uses the first match found.
|
||||||
then unversioned variants. The first match wins.
|
All entries are optional: without a class library, the core runs a built-in
|
||||||
|
modeless stars demo but cannot execute J2ME software.
|
||||||
Search order (from nanocoat/src/boot.c sjme_nvm_romNames[]):
|
The .info declares firmware_count=8 but the code defines 10 search names
|
||||||
1. squirreljme-{version}-fast.jar
|
(squirreljme-{version}-test.jar and squirreljme-test.jar are missing from .info).
|
||||||
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.
|
|
||||||
|
|
||||||
files:
|
files:
|
||||||
# -- Versioned JARs (v0.3.0, preferred) --
|
|
||||||
|
|
||||||
- name: "squirreljme-0.3.0-fast.jar"
|
- 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
|
required: false
|
||||||
bundled: false
|
source_ref: "nanocoat/src/boot.c:102"
|
||||||
source_ref: "nanocoat/src/boot.c:102, squirreljme_libretro.info:firmware5"
|
|
||||||
note: "Highest priority versioned JAR. Optimized runtime, recommended for normal use."
|
|
||||||
|
|
||||||
- name: "squirreljme-0.3.0.jar"
|
- 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
|
required: false
|
||||||
bundled: false
|
source_ref: "nanocoat/src/boot.c:103"
|
||||||
source_ref: "nanocoat/src/boot.c:103, squirreljme_libretro.info:firmware4"
|
|
||||||
note: "Standard versioned build. Second in search priority."
|
- 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"
|
- 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
|
required: false
|
||||||
bundled: false
|
source_ref: "nanocoat/src/boot.c:105"
|
||||||
source_ref: "nanocoat/src/boot.c:105, squirreljme_libretro.info:firmware6"
|
|
||||||
note: "Pure interpreter mode, no optimizations. Useful for debugging."
|
|
||||||
|
|
||||||
- name: "squirreljme-0.3.0-slow-test.jar"
|
- 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
|
required: false
|
||||||
bundled: false
|
source_ref: "nanocoat/src/boot.c:106"
|
||||||
source_ref: "nanocoat/src/boot.c:106, squirreljme_libretro.info:firmware7"
|
|
||||||
note: "Interpreter mode with built-in test suites."
|
|
||||||
|
|
||||||
# -- Unversioned JARs (fallback) --
|
|
||||||
|
|
||||||
- name: "squirreljme-fast.jar"
|
- name: "squirreljme-fast.jar"
|
||||||
description: "SquirrelJME class library (fast/optimized, unversioned)"
|
description: "Class library, fast/optimized build (unversioned)"
|
||||||
required: false
|
required: false
|
||||||
bundled: false
|
source_ref: "nanocoat/src/boot.c:107"
|
||||||
source_ref: "nanocoat/src/boot.c:107, squirreljme_libretro.info:firmware1"
|
|
||||||
note: "Highest priority unversioned JAR. Renamed from a versioned build."
|
|
||||||
|
|
||||||
- name: "squirreljme.jar"
|
- name: "squirreljme.jar"
|
||||||
description: "SquirrelJME class library (standard, unversioned)"
|
description: "Class library, standard build (unversioned)"
|
||||||
required: false
|
required: false
|
||||||
bundled: false
|
source_ref: "nanocoat/src/boot.c:108"
|
||||||
source_ref: "nanocoat/src/boot.c:108, squirreljme_libretro.info:firmware0"
|
|
||||||
note: "Most common filename. If only one JAR is provided, use this name."
|
- 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"
|
- name: "squirreljme-slow.jar"
|
||||||
description: "SquirrelJME class library (slow/interpreter, unversioned)"
|
description: "Class library, slow/interpreter build (unversioned)"
|
||||||
required: false
|
required: false
|
||||||
bundled: false
|
source_ref: "nanocoat/src/boot.c:110"
|
||||||
source_ref: "nanocoat/src/boot.c:110, squirreljme_libretro.info:firmware2"
|
|
||||||
note: "Pure interpreter, unversioned."
|
|
||||||
|
|
||||||
- name: "squirreljme-slow-test.jar"
|
- name: "squirreljme-slow-test.jar"
|
||||||
description: "SquirrelJME class library (slow with tests, unversioned)"
|
description: "Class library, slow build with test suites (unversioned)"
|
||||||
required: false
|
required: false
|
||||||
bundled: false
|
source_ref: "nanocoat/src/boot.c:111"
|
||||||
source_ref: "nanocoat/src/boot.c:111, squirreljme_libretro.info:firmware3"
|
|
||||||
note: "Interpreter with tests, unversioned."
|
|
||||||
|
|||||||
@@ -1,57 +1,18 @@
|
|||||||
emulator: Stella
|
emulator: Stella
|
||||||
type: libretro
|
type: alias
|
||||||
source: "https://github.com/libretro/stella2014-libretro"
|
alias_of: stella2014
|
||||||
profiled_date: "2026-03-18"
|
source: "https://github.com/libretro/stella-libretro"
|
||||||
core_version: "6.6"
|
profiled_date: "2026-03-25"
|
||||||
|
core_version: "3.9.3"
|
||||||
display_name: "Atari - 2600 (Stella)"
|
display_name: "Atari - 2600 (Stella)"
|
||||||
cores:
|
cores:
|
||||||
- stella
|
- stella
|
||||||
- stella2014
|
|
||||||
- stella2023
|
|
||||||
systems:
|
systems:
|
||||||
- atari-2600
|
- atari-2600
|
||||||
|
|
||||||
notes: |
|
note: |
|
||||||
Stella is an Atari 2600 (VCS) emulator. The libretro port available is
|
Identical codebase to stella2014-libretro. Both repos share the same HEAD
|
||||||
stella2014, which is a fork frozen at the 2014 codebase. The upstream
|
commit and produce a binary reporting library_name "Stella 2014". The
|
||||||
"stella-libretro" repo redirects to stella2014-libretro. There is no
|
stella_libretro.info incorrectly lists display_version "6.6"; the actual
|
||||||
separate stella2023 libretro core published at this time.
|
embedded version is 3.9.3. See stella2014.yml for firmware requirements
|
||||||
|
and KidVid audio files.
|
||||||
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.
|
|
||||||
|
|||||||
60
emulators/stella2014.yml
Normal file
60
emulators/stella2014.yml
Normal 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
73
emulators/stella2023.yml
Normal 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"
|
||||||
@@ -1,20 +1,41 @@
|
|||||||
emulator: Stone Soup
|
emulator: Stone Soup
|
||||||
type: game
|
type: game
|
||||||
|
core_classification: frozen_snapshot
|
||||||
source: "https://github.com/libretro/crawl-ref"
|
source: "https://github.com/libretro/crawl-ref"
|
||||||
profiled_date: "2026-03-18"
|
upstream: "https://github.com/crawl/crawl"
|
||||||
core_version: "Git"
|
profiled_date: "2026-03-25"
|
||||||
|
core_version: "0.16-a0"
|
||||||
display_name: "Dungeon Crawl Stone Soup"
|
display_name: "Dungeon Crawl Stone Soup"
|
||||||
cores: [stonesoup]
|
cores: [stonesoup]
|
||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: >
|
notes: |
|
||||||
Dungeon Crawl Stone Soup, a roguelike dungeon crawler. The libretro port is
|
Roguelike dungeon crawler. Fork frozen at DCSS 0.16-a0 (upstream now ~0.32).
|
||||||
built from the crawl-ref source tree (crawl-ref/source/) with TILES=y and
|
Last libretro commit: Oct 2019. Marked experimental.
|
||||||
the libretro backend. The core accepts no content extensions - it launches
|
|
||||||
directly into a new game or save selection. All game data (tiles, databases,
|
Accepts .crawlrc config files as content (supported_extensions: crawlrc).
|
||||||
descriptions, lua scripts, des files for level generation) is compiled into
|
The libretro wrapper sets -dir to the content directory.
|
||||||
the core binary or loaded from the bundled dat/ directory built alongside
|
ref: libretro/libretro.cc:178-198 — main_wrap() passes -dir content_dir
|
||||||
the core. No BIOS, firmware, or external system files are required. Save
|
|
||||||
files are stored in the RetroArch save directory.
|
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: []
|
files: []
|
||||||
|
# no BIOS/firmware — game data loaded via data_directories
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
emulator: Super Bros War
|
emulator: Super Bros War
|
||||||
type: game
|
type: game
|
||||||
|
core_classification: game_engine
|
||||||
source: "https://github.com/libretro/superbroswar-libretro"
|
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"
|
core_version: "v0.1"
|
||||||
display_name: "Super Bros War"
|
display_name: "Super Bros War"
|
||||||
cores: [superbroswar]
|
cores: [superbroswar]
|
||||||
systems: []
|
systems: []
|
||||||
files: []
|
files: []
|
||||||
notes: >
|
notes: >
|
||||||
Libretro port of Super Mario War, a fan-made multiplayer battle game
|
Libretro port of Super Mario War, a fan-made multiplayer battle game.
|
||||||
where players stomp each other in Mario-style arenas.
|
All game data (maps, sprites, sounds, tilesets, skins) loads from the
|
||||||
Game data (maps, sprites, sounds) ships with the core repository.
|
content directory via convertPath(). System directory not used for game
|
||||||
No BIOS, firmware, or system directory files required.
|
data, only as save directory fallback.
|
||||||
|
|||||||
@@ -1,8 +1,80 @@
|
|||||||
emulator: "swanstation"
|
emulator: swanstation
|
||||||
type: alias
|
type: libretro
|
||||||
alias_of: "beetle_psx"
|
core_classification: community_fork
|
||||||
profiled_date: "2026-03-18"
|
source: "https://github.com/libretro/swanstation"
|
||||||
|
upstream: "https://github.com/stenzek/duckstation"
|
||||||
|
profiled_date: "2026-03-25"
|
||||||
core_version: "v0.1"
|
core_version: "v0.1"
|
||||||
display_name: "Sony - PlayStation (SwanStation)"
|
display_name: "Sony - PlayStation (SwanStation)"
|
||||||
note: "This core uses the same BIOS/firmware as beetle_psx. See emulators/beetle_psx.yml for details."
|
cores: [swanstation]
|
||||||
files: []
|
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: []
|
||||||
|
|||||||
@@ -1,14 +1,250 @@
|
|||||||
emulator: Syobon Action
|
emulator: Syobon Action
|
||||||
type: game
|
type: game
|
||||||
source: "https://github.com/libretro/syobonaction-libretro"
|
core_classification: community_fork
|
||||||
profiled_date: "2026-03-18"
|
source: "https://github.com/iyzsong/syobonaction-libretro"
|
||||||
core_version: "0.1"
|
upstream: "https://github.com/akemin-dayo/OpenSyobonAction"
|
||||||
|
profiled_date: "2026-03-25"
|
||||||
|
core_version: "0.3"
|
||||||
display_name: "Syobon Action"
|
display_name: "Syobon Action"
|
||||||
cores: [syobonaction]
|
cores: [syobonaction]
|
||||||
systems: []
|
systems: []
|
||||||
files: []
|
|
||||||
notes: >
|
notes: >
|
||||||
Libretro port of Syobon Action (Cat Mario), a parody platformer known
|
Libretro port of Open Syobon Action (Cat Mario), the SDL port of the
|
||||||
for deceptive traps and unfair level design by z_gundam_tanosii.
|
Japanese platformer by z_gundam_tanosii. Game assets required in
|
||||||
Game data (maps, sprites, sounds) ships with the core repository.
|
system_dir/SyobonAction/ with BGM/, SE/, and res/ subdirectories.
|
||||||
No BIOS, firmware, or system directory files required.
|
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"
|
||||||
|
|||||||
@@ -1,14 +1,17 @@
|
|||||||
emulator: TamaLIBretro
|
emulator: TamaLIBretro
|
||||||
type: game
|
type: libretro
|
||||||
source: "https://github.com/libretro/tamern-libretro"
|
core_classification: community_fork
|
||||||
profiled_date: "2026-03-18"
|
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"
|
core_version: "1.0"
|
||||||
display_name: "Bandai - Tamagotchi P1 (TamaLIBretro)"
|
display_name: "Bandai - Tamagotchi P1 (TamaLIBretro)"
|
||||||
cores: [tamalibretro]
|
cores: [tamalibretro]
|
||||||
systems: []
|
systems: [tamagotchi-p1]
|
||||||
files: []
|
files: []
|
||||||
notes: >
|
notes: >
|
||||||
Tamagotchi P1 virtual pet simulator for libretro based on TamaLIB.
|
Emulates Bandai Tamagotchi P1 hardware (Epson E0C6S46 CPU) via TamaLIB.
|
||||||
Emulates the Bandai Tamagotchi P1 hardware (E0C6S46 CPU).
|
Loads the Tamagotchi ROM (tama.b from MAME set) as content.
|
||||||
The original Tamagotchi ROM is compiled into the binary.
|
No BIOS or system directory files required.
|
||||||
No content file, BIOS, or system directory files required.
|
.info firmware_count=0 matches the code.
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: TempGBA
|
emulator: TempGBA
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: community_fork
|
||||||
source: "https://github.com/libretro/TempGBA-libretro"
|
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"
|
core_version: "26731013"
|
||||||
display_name: "Nintendo - Game Boy Advance (TempGBA)"
|
display_name: "Nintendo - Game Boy Advance (TempGBA)"
|
||||||
cores:
|
cores:
|
||||||
@@ -10,22 +12,16 @@ systems:
|
|||||||
- nintendo-gba
|
- nintendo-gba
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
TempGBA is a Game Boy Advance emulator forked from gpSP. Originally
|
Fork chain: gpSP (Exophase) -> gpSP Kai (takka) -> TempGBA NDS
|
||||||
developed for the Nintendo DS homebrew scene, the libretro port wraps
|
(Nebuleon) -> TempGBA4PSP (unknown) -> TempGBA-libretro.
|
||||||
the dynarec-based GBA engine for use in RetroArch.
|
PSP-optimized GBA emulator. No HLE BIOS: SWI calls execute from
|
||||||
|
the real BIOS ROM. The NDS version (ReGBA) added an open-source
|
||||||
The GBA BIOS (gba_bios.bin) is optional. TempGBA includes HLE BIOS
|
BIOS replacement (Normmatt), but TempGBA4PSP did not carry it over.
|
||||||
stubs inherited from gpSP that handle most SWI calls. The real BIOS
|
Boot sequence skipped by default (PC starts at 0x08000000).
|
||||||
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).
|
|
||||||
|
|
||||||
files:
|
files:
|
||||||
- name: gba_bios.bin
|
- name: gba_bios.bin
|
||||||
system: nintendo-gba
|
system: nintendo-gba
|
||||||
required: false
|
required: true
|
||||||
hle_fallback: true
|
|
||||||
size: 16384
|
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)"
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: test
|
emulator: test
|
||||||
type: test
|
type: test
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
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"
|
core_version: "v1"
|
||||||
display_name: "Test"
|
display_name: "Test"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,10 +11,10 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Basic test core from libretro-samples. Minimal software-rendered core
|
Test core from libretro-samples. Software-rendered checkerboard pattern
|
||||||
used for sanity-checking the libretro frontend loop (frame timing, input
|
with sine wave audio and input device testing (joypad, mouse, analog,
|
||||||
polling, audio sample generation).
|
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: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
emulator: test_netplay
|
emulator: test_netplay
|
||||||
type: test
|
type: test
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
core_classification: pure_libretro
|
||||||
profiled_date: "2026-03-18"
|
profiled_date: "2026-03-25"
|
||||||
core_version: "1"
|
core_version: "1"
|
||||||
display_name: "Test for netplay"
|
display_name: "Test for netplay"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,11 +9,15 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Netplay test core from libretro-samples. Designed to validate the libretro
|
Phantom .info: declared in libretro-core-info since 2017 but no source code,
|
||||||
netplay subsystem: deterministic frame stepping, input synchronization,
|
build recipe, or compiled binary exists anywhere in the libretro organization.
|
||||||
savestate serialization for rollback. Renders a simple interactive scene
|
Not on the buildbot. The .info has empty authors, license, and extensions.
|
||||||
where two players can verify sync.
|
|
||||||
|
|
||||||
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: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: testaudio_callback
|
emulator: testaudio_callback
|
||||||
type: test
|
type: test
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
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"
|
core_version: "v1"
|
||||||
display_name: "TestAudio Callback"
|
display_name: "TestAudio Callback"
|
||||||
cores:
|
cores:
|
||||||
@@ -11,9 +13,7 @@ systems: []
|
|||||||
notes: |
|
notes: |
|
||||||
Audio callback test core from libretro-samples. Tests the
|
Audio callback test core from libretro-samples. Tests the
|
||||||
RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK path where audio runs on a
|
RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK path where audio runs on a
|
||||||
separate thread managed by the frontend. Generates a simple tone
|
separate thread managed by the frontend. Generates a 300 Hz sine
|
||||||
to validate callback-driven audio output.
|
tone to validate callback-driven audio output.
|
||||||
|
|
||||||
No system files, BIOS, or firmware required. Not an emulator.
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: testaudio_no_callback
|
emulator: testaudio_no_callback
|
||||||
type: test
|
type: test
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
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"
|
core_version: "v1"
|
||||||
display_name: "TestAudio NoCallback"
|
display_name: "TestAudio NoCallback"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,11 +11,8 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Audio no-callback test core from libretro-samples. Tests the standard
|
Audio test core from libretro-samples. Tests the synchronous audio path
|
||||||
synchronous audio path using retro_audio_sample/retro_audio_sample_batch
|
using retro_audio_sample (no threaded callback). Generates a 300 Hz sine
|
||||||
(no threaded callback). Generates a simple tone to validate the default
|
wave at 30 kHz sample rate.
|
||||||
audio output mode.
|
|
||||||
|
|
||||||
No system files, BIOS, or firmware required. Not an emulator.
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: testaudio_playback_wav
|
emulator: testaudio_playback_wav
|
||||||
type: test
|
type: test
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
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"
|
core_version: "v1"
|
||||||
display_name: "TestAudio Playback Wav"
|
display_name: "TestAudio Playback Wav"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,11 +11,10 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Audio WAV playback test core from libretro-samples. Loads a .wav file
|
WAV playback test core from libretro-samples. Loads a .wav file as content
|
||||||
as content and plays it back through the libretro audio interface. Tests
|
and plays it back through the libretro audio interface. Renders a progress
|
||||||
audio sample rate conversion, buffer management, and content loading for
|
bar on a 320x240 framebuffer. No emulation, no system files.
|
||||||
non-ROM file types.
|
|
||||||
|
|
||||||
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: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: testgl
|
emulator: testgl
|
||||||
type: test
|
type: test
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
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"
|
core_version: "v1"
|
||||||
display_name: "TestGL"
|
display_name: "TestGL"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,10 +11,8 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
OpenGL test core from libretro-samples. Validates the hardware-accelerated
|
OpenGL programmable pipeline test core from libretro-samples. Renders two
|
||||||
OpenGL rendering path in the frontend. Renders a spinning triangle or cube
|
spinning quads via GL 2.0+ / GLES 2.0+ shaders through the libretro
|
||||||
using GL calls through the libretro hw_render interface.
|
hw_render interface. Shaders are embedded as string constants in the source.
|
||||||
|
|
||||||
No system files, BIOS, or firmware required. Not an emulator.
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: testgl_compute_shaders
|
emulator: testgl_compute_shaders
|
||||||
type: test
|
type: test
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
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"
|
core_version: "v1"
|
||||||
display_name: "TestGL ComputeShaders"
|
display_name: "TestGL ComputeShaders"
|
||||||
cores:
|
cores:
|
||||||
@@ -12,8 +14,7 @@ notes: |
|
|||||||
OpenGL compute shader test core from libretro-samples. Validates compute
|
OpenGL compute shader test core from libretro-samples. Validates compute
|
||||||
shader support through the libretro hw_render interface. Runs a 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+
|
shader kernel and renders the output, testing GL 4.3+ / GLES 3.1+
|
||||||
capability in the frontend.
|
capability in the frontend. All visual assets (shaders, textures, mesh)
|
||||||
|
are bundled in the core's app/ directory alongside the binary.
|
||||||
No system files, BIOS, or firmware required. Not an emulator.
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
emulator: testgl_ff
|
emulator: testgl_ff
|
||||||
type: test
|
type: test
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
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"
|
core_version: "v1"
|
||||||
display_name: "TestGL (FF)"
|
display_name: "TestGL (FF)"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,11 +12,8 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
OpenGL fixed-function test core from libretro-samples. Similar to testgl
|
OpenGL fixed-function pipeline test core from libretro-samples.
|
||||||
but uses the legacy OpenGL fixed-function pipeline (glBegin/glEnd, matrix
|
Renders a colored quad using glBegin/glEnd and matrix stack (GL 1.4+ / GLES 1.x+).
|
||||||
stack) instead of shaders. Tests frontend compatibility with older GL code
|
No file loading of any kind. supports_no_game.
|
||||||
paths.
|
|
||||||
|
|
||||||
No system files, BIOS, or firmware required. Not an emulator.
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: testinput_buttontest
|
emulator: testinput_buttontest
|
||||||
type: test
|
type: test
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
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"
|
core_version: "v1"
|
||||||
display_name: "Button Test"
|
display_name: "Button Test"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,11 +11,10 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Input button test core from libretro-samples. Displays a visual
|
Input button test core from libretro-samples. Renders an RLE-encoded
|
||||||
representation of all libretro input bindings (joypad buttons, analog
|
controller image and highlights buttons in real time as pressed. Polls
|
||||||
sticks, triggers) and highlights them in real time as they are pressed.
|
joypad and analog inputs. No file I/O.
|
||||||
Used to debug controller mapping and input driver issues.
|
|
||||||
|
|
||||||
No system files, BIOS, or firmware required. Not an emulator.
|
Source: input/button_test/libretro.c. Single file, no external dependencies.
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: testretroluxury
|
emulator: testretroluxury
|
||||||
type: test
|
type: test
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
core_classification: pure_libretro
|
||||||
profiled_date: "2026-03-18"
|
source: "https://github.com/libretro/retroluxury"
|
||||||
|
upstream: "https://github.com/leiradel/retroluxury"
|
||||||
|
profiled_date: "2026-03-25"
|
||||||
core_version: "v1"
|
core_version: "v1"
|
||||||
display_name: "Test RetroLuxury"
|
display_name: "Test RetroLuxury"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,11 +11,8 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
RetroLuxury test core from libretro-samples. Demonstrates the rluxury
|
Tech demo for the retroluxury middleware layer. All resources (sprites, audio,
|
||||||
(RetroLuxury) middleware layer for libretro, which provides a simplified
|
fonts) are embedded in the binary via xxd -i at compile time. No external
|
||||||
game development framework on top of the core API. Used as a reference
|
files loaded at runtime.
|
||||||
implementation for the middleware.
|
|
||||||
|
|
||||||
No system files, BIOS, or firmware required. Not an emulator.
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
emulator: testsw
|
emulator: testsw
|
||||||
type: test
|
type: test
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
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"
|
core_version: "v1"
|
||||||
display_name: "TestSW"
|
display_name: "TestSW"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,10 +12,8 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Software rendering test core from libretro-samples. Validates the basic
|
Software rendering test core from libretro-samples. Allocates a 320x240
|
||||||
software framebuffer path (RETRO_HW_FRAME_BUFFER_VALID). Writes pixel
|
XRGB8888 framebuffer and renders a moving checkered pattern. Reference
|
||||||
data directly to the framebuffer without any hardware acceleration.
|
implementation for core authors testing the software rendering path.
|
||||||
|
|
||||||
No system files, BIOS, or firmware required. Not an emulator.
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
emulator: testsw_vram
|
emulator: testsw_vram
|
||||||
type: test
|
type: test
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
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"
|
core_version: "v1"
|
||||||
display_name: "TestSW VRAM"
|
display_name: "TestSW VRAM"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,10 +12,8 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Software VRAM test core from libretro-samples. Tests the software rendering
|
Software rendering test core. Renders a checkered pattern directly to VRAM
|
||||||
path with VRAM access patterns, validating how the frontend handles direct
|
via RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER, with fallback to
|
||||||
video memory writes and buffer management.
|
standard framebuffer copy. Single source file, no file I/O.
|
||||||
|
|
||||||
No system files, BIOS, or firmware required. Not an emulator.
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: testvulkan
|
emulator: testvulkan
|
||||||
type: test
|
type: test
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
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"
|
core_version: "v1"
|
||||||
display_name: "TestVulkan"
|
display_name: "TestVulkan"
|
||||||
cores:
|
cores:
|
||||||
@@ -11,8 +13,8 @@ systems: []
|
|||||||
notes: |
|
notes: |
|
||||||
Vulkan test core from libretro-samples. Validates the Vulkan hardware
|
Vulkan test core from libretro-samples. Validates the Vulkan hardware
|
||||||
rendering path in the frontend via the libretro hw_render_interface_vulkan
|
rendering path in the frontend via the libretro hw_render_interface_vulkan
|
||||||
API. Renders a basic scene using Vulkan command buffers and swapchain
|
API. Renders a rotating triangle using Vulkan command buffers and swapchain
|
||||||
integration.
|
integration. Shaders embedded at compile time (SPIR-V).
|
||||||
|
|
||||||
No system files, BIOS, or firmware required. Not an emulator.
|
No system files, BIOS, or firmware required. Not an emulator.
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: testvulkan_async_compute
|
emulator: testvulkan_async_compute
|
||||||
type: test
|
type: test
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/libretro-samples"
|
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"
|
core_version: "v1"
|
||||||
display_name: "TestVulkan AsyncCompute"
|
display_name: "TestVulkan AsyncCompute"
|
||||||
cores:
|
cores:
|
||||||
@@ -9,10 +11,10 @@ cores:
|
|||||||
systems: []
|
systems: []
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Vulkan async compute test core from libretro-samples. Extends testvulkan
|
Vulkan async compute test core from libretro-samples. Exercises async
|
||||||
to exercise async compute queue support in the Vulkan rendering path.
|
compute queue support via the libretro hw_render_interface_vulkan API.
|
||||||
Tests concurrent graphics and compute workloads through the libretro
|
Renders a raymarching demo using concurrent graphics and compute workloads.
|
||||||
hw_render_interface_vulkan API.
|
Compute shader embedded at compile time (SPIR-V).
|
||||||
|
|
||||||
No system files, BIOS, or firmware required. Not an emulator.
|
No system files, BIOS, or firmware required. Not an emulator.
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: TGB Dual
|
emulator: TGB Dual
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: community_fork
|
||||||
source: "https://github.com/libretro/tgbdual-libretro"
|
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"
|
core_version: "v0.8.3"
|
||||||
display_name: "Nintendo - Game Boy / Color (TGB Dual)"
|
display_name: "Nintendo - Game Boy / Color (TGB Dual)"
|
||||||
cores:
|
cores:
|
||||||
@@ -11,22 +13,11 @@ systems:
|
|||||||
- nintendo-gbc
|
- nintendo-gbc
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
TGB Dual is a Game Boy / Game Boy Color emulator by GIGO and Hii with
|
Game Boy / Game Boy Color emulator by GIGO and Hii with link cable support
|
||||||
link cable support for two Game Boy units side by side.
|
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
|
cpu::reset() initializes PC to 0x100 and sets post-boot register values
|
||||||
call RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY for firmware loading and does
|
(AF=0x01B0 DMG, 0x11B0 CGB), bypassing the boot ROM via HLE.
|
||||||
not attempt to open any files from the system directory.
|
No system directory access, no file I/O for firmware.
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
emulator: Theodore
|
emulator: Theodore
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/Zlika/theodore"
|
source: "https://github.com/Zlika/theodore"
|
||||||
profiled_date: "2026-03-18"
|
upstream: "http://dcmoto.free.fr/"
|
||||||
core_version: "v4.1"
|
profiled_date: "2026-03-25"
|
||||||
|
core_version: "Git (post-3.1)"
|
||||||
display_name: "Thomson - MO/TO (Theodore)"
|
display_name: "Thomson - MO/TO (Theodore)"
|
||||||
cores: [theodore]
|
cores: [theodore]
|
||||||
systems: [thomson-to7, thomson-to770, thomson-to8, thomson-to8d, thomson-to9, thomson-to9plus, thomson-mo5, thomson-mo6, olivetti-pc128]
|
systems: [thomson-to7, thomson-to770, thomson-to8, thomson-to8d, thomson-to9, thomson-to9plus, thomson-mo5, thomson-mo6, olivetti-pc128]
|
||||||
notes: >
|
notes: >
|
||||||
All system ROMs (monitor + BASIC) are compiled into the binary.
|
All system ROMs (monitor, BASIC, disk drive controller) are compiled into the binary
|
||||||
No external BIOS files needed.
|
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: []
|
files: []
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
emulator: The Powder Toy
|
emulator: The Powder Toy
|
||||||
type: game
|
type: game
|
||||||
|
core_classification: pure_libretro
|
||||||
source: "https://github.com/libretro/ThePowderToy"
|
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"
|
core_version: "v92.5.336"
|
||||||
display_name: "The Powder Toy"
|
display_name: "The Powder Toy"
|
||||||
cores: [thepowdertoy]
|
cores: [thepowdertoy]
|
||||||
systems: []
|
systems: []
|
||||||
files: []
|
files: []
|
||||||
notes: >
|
notes: >
|
||||||
Libretro port of The Powder Toy, a falling-sand physics simulation game.
|
Falling-sand physics simulation game. All resources (fonts, shaders,
|
||||||
Simulate various materials (powder, liquid, gas, explosive, electronic)
|
images) compiled into the binary. GetSystemDir() declared but never
|
||||||
interacting with each other. Can load .cps save files as content.
|
called. No external files loaded from system directory.
|
||||||
No BIOS, firmware, or system directory files required.
|
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
emulator: TIC-80
|
emulator: TIC-80
|
||||||
type: libretro
|
type: libretro
|
||||||
|
core_classification: game_engine
|
||||||
source: "https://github.com/libretro/TIC-80"
|
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"
|
core_version: "0.80.0"
|
||||||
display_name: "TIC-80"
|
display_name: "TIC-80"
|
||||||
cores:
|
cores:
|
||||||
@@ -10,22 +12,17 @@ systems:
|
|||||||
- tic80
|
- tic80
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
TIC-80 is a fantasy computer for making, playing and sharing tiny games.
|
Fantasy computer for making, playing and sharing tiny games.
|
||||||
The libretro port wraps the nesbox/TIC-80 engine as a submodule.
|
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)
|
Content loaded entirely via libretro data buffer (need_fullpath = false,
|
||||||
entirely through the libretro data buffer (need_fullpath = false,
|
tic80_libretro.c:340). No call to RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
|
||||||
tic80_libretro.c:340). Content bytes are passed directly to tic80_load()
|
No code path reads any file from the system directory. All VM resources
|
||||||
at retro_load_game() (tic80_libretro.c:1152).
|
(sprites, palette, font, sound engine) are compiled into the binary.
|
||||||
|
|
||||||
The core never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. There is no
|
TIC_MODULE_EXT (dynamic scripting plugins) is disabled in libretro
|
||||||
code path that reads any file from the system directory. No BIOS, firmware,
|
builds via #if !defined(__LIBRETRO__) in tic80_config.h:36.
|
||||||
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.
|
|
||||||
|
|
||||||
files: []
|
files: []
|
||||||
|
|
||||||
@@ -34,14 +31,12 @@ platform_details:
|
|||||||
extensions: "tic, png"
|
extensions: "tic, png"
|
||||||
source_ref: "tic80_libretro.c:339"
|
source_ref: "tic80_libretro.c:339"
|
||||||
notes: |
|
notes: |
|
||||||
.tic is the native cartridge format containing code, sprites, map,
|
.tic is the native cartridge format. .png loads cartridges
|
||||||
sound, and music data. .png support allows loading cartridges
|
|
||||||
encoded as cover images (code stored in PNG metadata).
|
encoded as cover images (code stored in PNG metadata).
|
||||||
|
|
||||||
runtime:
|
runtime:
|
||||||
source_ref: "nesbox/TIC-80 (submodule at core/)"
|
source_ref: "nesbox/TIC-80 (submodule at core/)"
|
||||||
notes: |
|
notes: |
|
||||||
The entire TIC-80 runtime (CPU, GPU, APU, scripting engines) is
|
Entire runtime compiled into the binary. No external dependencies.
|
||||||
compiled into the core binary. No external dependencies at runtime.
|
|
||||||
State serialization uses TIC_PERSISTENT_SIZE * 4 bytes of pmem()
|
State serialization uses TIC_PERSISTENT_SIZE * 4 bytes of pmem()
|
||||||
data (tic80_libretro.c:1203-1243).
|
data (tic80_libretro.c:1203-1243).
|
||||||
|
|||||||
@@ -159,6 +159,16 @@ data_directories:
|
|||||||
strip_components: 1
|
strip_components: 1
|
||||||
description: "FreeIntv per-game controller overlay PNGs"
|
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/
|
# ref: dirksimple — system/
|
||||||
dirksimple:
|
dirksimple:
|
||||||
source_url: "https://buildbot.libretro.com/assets/system/DirkSimple.zip"
|
source_url: "https://buildbot.libretro.com/assets/system/DirkSimple.zip"
|
||||||
|
|||||||
@@ -557,13 +557,21 @@ def _build_validation_index(profiles: dict) -> dict[str, dict]:
|
|||||||
# Hash checks — collect all accepted hashes as sets (multiple valid
|
# Hash checks — collect all accepted hashes as sets (multiple valid
|
||||||
# versions of the same file, e.g. MT-32 ROM versions)
|
# versions of the same file, e.g. MT-32 ROM versions)
|
||||||
if "crc32" in checks and f.get("crc32"):
|
if "crc32" in checks and f.get("crc32"):
|
||||||
norm = f["crc32"].lower()
|
crc_val = f["crc32"]
|
||||||
if norm.startswith("0x"):
|
crc_list = crc_val if isinstance(crc_val, list) else [crc_val]
|
||||||
norm = norm[2:]
|
for cv in crc_list:
|
||||||
index[fname]["crc32"].add(norm)
|
norm = str(cv).lower()
|
||||||
|
if norm.startswith("0x"):
|
||||||
|
norm = norm[2:]
|
||||||
|
index[fname]["crc32"].add(norm)
|
||||||
for hash_type in ("md5", "sha1", "sha256"):
|
for hash_type in ("md5", "sha1", "sha256"):
|
||||||
if hash_type in checks and f.get(hash_type):
|
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
|
# Adler32 — stored as known_hash_adler32 field (not in validation: list
|
||||||
# for Dolphin, but support it in both forms for future profiles)
|
# for Dolphin, but support it in both forms for future profiles)
|
||||||
adler_val = f.get("known_hash_adler32") or f.get("adler32")
|
adler_val = f.get("known_hash_adler32") or f.get("adler32")
|
||||||
|
|||||||
Reference in New Issue
Block a user