38 Commits
Author SHA1 Message Date
Abdessamad Derraz 27610c1d33 chore: regenerate database, manifests and readme 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 25034cd958 fix: count what each export format writes 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 480c02882d feat: collect the pc-88 font rom for quasi88 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 056953d833 fix: attach profile aliases to a unique name only 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 49d425aa8a fix: map pc-8801, dsi and cd-i system slugs 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 58cb61a08f fix: refresh data dirs under a lock, by rename 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 485e5bc2b3 feat: profile aps3e 2.43 on rpcs3 0.0.42 2026-10-06 00:26:36 +02:00
Abdessamad Derraz c5165ffb96 feat: profile cap32 at c238550 with the 664 rom 2026-10-06 00:26:36 +02:00
Abdessamad Derraz 183793481c fix: keep prose citations within reach and pinned 2026-10-06 00:26:36 +02:00
Abdessamad Derraz a762152c12 chore: recale gpsp refs onto their pin 2026-10-06 00:26:36 +02:00
Abdessamad Derraz b650f9eb8a chore: point desmume refs at the bios loads 2026-10-06 00:26:36 +02:00
Abdessamad Derraz 4ca4592f65 fix: group variant slots across their systems 2026-10-06 00:26:36 +02:00
Abdessamad Derraz 0fb09c6c94 fix: decide slots on the region pass grouping 2026-10-06 00:26:36 +02:00
Abdessamad Derraz 34e382eae8 fix: group regions by the target in pack integrity 2026-10-06 00:13:38 +02:00
Abdessamad Derraz 9e327a05ed fix: verify the pack the flags name, by exact name 2026-10-06 00:13:38 +02:00
Abdessamad Derraz f010e737c5 chore: regenerate database, manifests and readme 2026-10-05 22:55:32 +02:00
Abdessamad Derraz edce60bae1 feat: collect nethersx2-turnip assets from v0.7 2026-10-05 22:55:31 +02:00
Abdessamad Derraz 44663db144 fix: scan free bios names only in the bios folder 2026-10-05 22:55:31 +02:00
Abdessamad Derraz 757fad69bc feat: store pcsx2 achievement sound under its tail 2026-10-05 22:22:22 +02:00
Abdessamad Derraz ca6462c510 fix: order same-named files by their owner's copy 2026-10-05 22:22:22 +02:00
Abdessamad Derraz 3f5d825ac6 fix: no collision where one file passes every declaration 2026-10-05 22:12:23 +02:00
Abdessamad Derraz 151dd5ea04 fix: judge a slot on the declaration the pack ships 2026-10-05 22:10:48 +02:00
Abdessamad Derraz eaf315ea8f fix: check every zipped member a platform declares 2026-10-05 22:05:10 +02:00
Abdessamad Derraz 366598e662 fix: ship the archive every member declaration accepts 2026-10-05 22:05:10 +02:00
Abdessamad Derraz 5f3e9fbacd chore: regenerate install manifests 2026-10-05 22:00:13 +02:00
Abdessamad Derraz 045372992c fix: keep unsourceable entries out of the asset store 2026-10-05 22:00:13 +02:00
Abdessamad Derraz 38ffccc465 chore: regenerate install manifests 2026-10-05 21:53:59 +02:00
Abdessamad Derraz 68bcef544d fix: give the install manifest the arbitrated file 2026-10-05 21:53:59 +02:00
Abdessamad Derraz 81995a4c18 fix: emulator region report reads the pack drop set 2026-10-05 21:43:32 +02:00
Abdessamad Derraz 95d14819ce fix: one rule for the variant an emulator accepts 2026-10-05 21:36:14 +02:00
Abdessamad Derraz dc31a90dca fix: keep profile identity on second-pass extras 2026-10-05 21:27:35 +02:00
Abdessamad DerrazandClaude Opus 5.5 8e3a486107 fix: resolve held catacomb files, profile refs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:29 +02:00
Abdessamad DerrazandClaude Opus 5.5 a3d5e6c048 chore: regenerate database, manifests and readme
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:23 +02:00
Abdessamad DerrazandClaude Opus 5.5 8e0c7bad38 feat: collect ap6, shareddata, introset, a2 scsi
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:23 +02:00
Abdessamad DerrazandClaude Opus 5.5 67f1b29fec feat: reprofile beetle_saturn, collect mpeg cards
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:22 +02:00
Abdessamad DerrazandClaude Opus 5.5 b9644f720c feat: build engine data at pinned commits
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:22 +02:00
Abdessamad DerrazandClaude Opus 5.5 0a9d36cae3 fix: name homonymous release assets by path
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:13 +02:00
Abdessamad DerrazandClaude Opus 5.5 5816562bf6 fix: one size predicate, size_options retired
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:13 +02:00
313 changed files with 15505 additions and 445061 deletions

No files matched your search

+4 -40
View File
@@ -8,48 +8,11 @@ on:
- "emulators/**"
- "provenance/**"
- "wiki/**"
# Every script the build runs or imports (tests/test_workflow_paths.py).
- "scripts/artifacts.py"
- "scripts/auto_fetch.py"
- "scripts/common.py"
- "scripts/cross_reference.py"
- "scripts/crypto_verify.py"
- "scripts/deterministic_zip.py"
- "scripts/dumpcatalog.py"
- "scripts/generate_pack.py"
- "scripts/generate_readme.py"
- "scripts/generate_site.py"
- "scripts/hashing.py"
- "scripts/largefiles.py"
- "scripts/list_platforms.py"
- "scripts/manifestselect.py"
- "scripts/nativemode.py"
- "scripts/packextras.py"
- "scripts/packpaths.py"
- "scripts/packreadme.py"
- "scripts/packresolve.py"
- "scripts/packverify.py"
- "scripts/profile_sync.py"
- "scripts/provenance_report.py"
- "scripts/refresh_data_dirs.py"
- "scripts/region.py"
- "scripts/release_record.py"
- "scripts/restore_large_files.py"
- "scripts/safeparse.py"
- "scripts/sect233r1.py"
- "scripts/siterender.py"
- "scripts/sitesources.py"
- "scripts/sitewrite.py"
- "scripts/slot.py"
- "scripts/slots.py"
- "scripts/split_pack.py"
- "scripts/truth.py"
- "scripts/upstream.py"
- "scripts/validate_schemas.py"
- "scripts/generate_readme.py"
- "scripts/validate_site.py"
- "scripts/validation.py"
- "scripts/verify.py"
- "scripts/ziptools.py"
- "scripts/common.py"
- "schemas/**"
- "tests/**"
- "docs_assets/**"
@@ -57,6 +20,7 @@ on:
- "install.py"
- "database.json"
- "release.json"
- "scripts/release_record.py"
- "mkdocs.yml"
- ".github/workflows/deploy-site.yml"
workflow_dispatch:
@@ -85,7 +49,7 @@ jobs:
# mkdocs-material >= 9.7.5 caps mkdocs < 2; the upper bound keeps a major
# theme release from changing the site without a deliberate bump here.
- run: pip install pyyaml "jsonschema[format-nongpl]==4.26.0" "mkdocs-material>=9.7.5,<10" "pymdown-extensions>=10.14"
- run: pip install pyyaml jsonschema==4.26.0 "mkdocs-material>=9.7.5,<10" "pymdown-extensions>=10.14"
- name: Validate data contracts
run: python scripts/validate_schemas.py
+2 -2
View File
@@ -112,7 +112,7 @@ jobs:
python-version: "3.12"
- name: Install dependencies
run: pip install pyyaml "jsonschema[format-nongpl]==4.26.0"
run: pip install pyyaml jsonschema==4.26.0
- name: Validate platform configs and emulator profiles
run: python scripts/validate_schemas.py --source-only
@@ -127,7 +127,7 @@ jobs:
python-version: "3.12"
- name: Install dependencies
run: pip install pyyaml "jsonschema[format-nongpl]==4.26.0"
run: pip install pyyaml jsonschema==4.26.0
# The exporter fidelity cases compare what we hand back against the
# file each platform publishes, so they need those files. They skip
+32 -32
View File
@@ -32,7 +32,7 @@ The script auto-detects your platform, downloads only missing files, and verifie
## Download BIOS packs
One pack per platform, and it holds everything the platform runs: its own BIOS list plus every file its emulator cores load. Pick your platform, download the ZIP, extract to the BIOS path. The installer above does the same file by file. At a terminal it asks whether to install everything or to choose systems, cores and regions, and `--system`, `--core`, `--region` and `--target` make the same choice without questions; for a bare minimum, build your own pack below.
One pack per platform, and it holds everything the platform runs: its own BIOS list plus every file its emulator cores load. Pick your platform, download the ZIP, extract to the BIOS path. The installer above does the same file by file, and `--target` narrows it to one machine; for a region or a bare minimum, build your own pack below.
Files is how many the pack holds once extracted, the figure a file manager shows for the folder. It differs from one platform to the next because a pack carries only what that platform's emulators load. The size is what the files occupy once extracted; the ZIP itself downloads smaller.
A pack over 2 GB comes in several parts, and every part is needed. How to open them depends on their name:
@@ -44,20 +44,20 @@ Every release ships `SHA256SUMS.txt` and a detached signature of it, checkable a
| Platform | Files | Extracted size | Extract to | Download |
|----------|------:|---------------:|-----------|----------|
| Batocera | 12,810 | 7.5 GB | `/userdata/bios/` | [Download](../../releases/latest) |
| BizHawk | 950 | 2.4 GB | `Firmware/` | [Download](../../releases/latest) |
| EmuDeck | 620 | 3.2 GB | `~/Emulation/bios/` | [Download](../../releases/latest) |
| Lakka | 8,504 | 6.0 GB | `/storage/system/` | [Download](../../releases/latest) |
| MiSTer FPGA | 83 | 29 MB | `/media/fat/games/` | [Download](../../releases/latest) |
| ROCKNIX | 5,804 | 6.1 GB | `/storage/roms/bios/` | [Download](../../releases/latest) |
| Recalbox | 3,222 | 3.9 GB | `/recalbox/share/bios/` | [Download](../../releases/latest) |
| RetroArch | 8,504 | 6.0 GB | `system/` | [Download](../../releases/latest) |
| RetroBat | 12,399 | 7.9 GB | `bios/` | [Download](../../releases/latest) |
| RetroDECK | 7,793 | 8.0 GB | `~/retrodeck/` | [Download](../../releases/latest) |
| RetroPie * | 12,533 | 8.1 GB | `~/RetroPie/BIOS/` | [Download](../../releases/latest) |
| RomM | 1,087 | 1.5 GB | `library/bios/` | [Download](../../releases/latest) |
| Batocera | 1,839 | 4.0 GB | `/userdata/bios/` | [Download](../../releases/latest) |
| BizHawk | 542 | 2.2 GB | `Firmware/` | [Download](../../releases/latest) |
| EmuDeck | 624 | 3.2 GB | `~/Emulation/bios/` | [Download](../../releases/latest) |
| Lakka | 4,525 | 5.5 GB | `/storage/system/` | [Download](../../releases/latest) |
| MiSTer FPGA | 74 | 24 MB | `/media/fat/games/` | [Download](../../releases/latest) |
| ROCKNIX | 1,741 | 5.3 GB | `/storage/roms/bios/` | [Download](../../releases/latest) |
| Recalbox | 1,330 | 3.6 GB | `/recalbox/share/bios/` | [Download](../../releases/latest) |
| RetroArch | 4,525 | 5.5 GB | `system/` | [Download](../../releases/latest) |
| RetroBat | 1,466 | 4.4 GB | `bios/` | [Download](../../releases/latest) |
| RetroDECK | 3,519 | 6.2 GB | `~/retrodeck/` | [Download](../../releases/latest) |
| RetroPie * | 4,525 | 5.5 GB | `~/RetroPie/BIOS/` | [Download](../../releases/latest) |
| RomM | 617 | 1.3 GB | `bios/{platform_slug}/` | [Download](../../releases/latest) |
The RetroDECK pack already carries its own `bios/` folder, so it extracts into `~/retrodeck/` rather than into the BIOS folder.
The RetroDECK pack already contains its own `bios/` folder, so it extracts into `~/retrodeck/` rather than into the BIOS folder.
\* Archived: the configuration is kept and packs are still built, but upstream is no longer scraped on a schedule.
@@ -68,17 +68,17 @@ These are the files an emulator loads from disk instead of carrying inside itsel
Each file is checked the way your platform checks it. Most compare a checksum, the fingerprint of a file's contents, which catches a corrupt or unexpected copy. RetroArch, Lakka and RetroPie only look for the filename, because that is all their code does: the Coverage table says which applies to you. Independently of that, the collection records five fingerprints per file, and wherever an emulator's code states an expected size or hash, that value is read from its source and rechecked here.
- **393 files** the platforms' emulators load are still to be found, and 51 more cannot be sourced at all (per-user keys, user-filled slots, dumps nobody has made); both are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/)
- **392 files** the platforms' emulators load are still to be found, and 51 more cannot be sourced at all (per-user keys, user-filled slots, dumps nobody has made); both are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/)
- **12 platforms** supported with platform-specific verification
- **506 emulators** profiled from source (RetroArch cores + standalone)
- **544 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
- **19,005 files in the collection**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 5,269 system files, 2,808 arcade ROM sets, 10,928 game and engine data files. That is every platform and emulator together, so no pack holds them all: each carries what its own emulators load, counted in the download table
- **562 of 5,269 system files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC); arcade sets and engine data fall outside what those catalogs index
- **16687 MB** total collection size
- **546 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
- **18,988 files in the collection**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 5,258 system files, 2,810 arcade ROM sets, 10,920 game and engine data files. That is every platform and emulator together, so no pack holds them all: each carries what its own emulators load, counted in the download table
- **562 of 5,258 system files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC); arcade sets and engine data fall outside what those catalogs index
- **16670 MB** total collection size
## Supported systems
NES, SNES, Nintendo 64, GameCube, Wii, Game Boy, Game Boy Advance, Nintendo DS, Nintendo 3DS, Switch, PlayStation, PlayStation 2, PlayStation 3, PSP, PS Vita, Mega Drive, Saturn, Dreamcast, Game Gear, Master System, Neo Geo, Atari 2600, Atari 7800, Atari Lynx, Atari ST, MSX, PC Engine, TurboGrafx-16, ColecoVision, Intellivision, Commodore 64, Amiga, ZX Spectrum, Arcade (MAME), and 510+ more.
NES, SNES, Nintendo 64, GameCube, Wii, Game Boy, Game Boy Advance, Nintendo DS, Nintendo 3DS, Switch, PlayStation, PlayStation 2, PlayStation 3, PSP, PS Vita, Mega Drive, Saturn, Dreamcast, Game Gear, Master System, Neo Geo, Atari 2600, Atari 7800, Atari Lynx, Atari ST, MSX, PC Engine, TurboGrafx-16, ColecoVision, Intellivision, Commodore 64, Amiga, ZX Spectrum, Arcade (MAME), and 512+ more.
Full list with per-file details: **[https://abdess.github.io/retrobios/](https://abdess.github.io/retrobios/)**
@@ -86,18 +86,18 @@ Full list with per-file details: **[https://abdess.github.io/retrobios/](https:/
| Platform | On its BIOS list | Files its emulators load | Checked by |
|----------|-----------------:|-------------------------:|------------|
| Batocera | 353/353 | 12,295/12,726 | MD5 hash |
| BizHawk | 118/118 | 800/801 | SHA1 hash |
| EmuDeck | 168/168 | 430/432 | MD5 hash |
| Lakka | 526/526 | 5,260/5,290 | file presence |
| Batocera | 353/353 | 12,274/12,704 | MD5 hash |
| BizHawk | 118/118 | 649/650 | SHA1 hash |
| EmuDeck | 168/168 | 381/383 | MD5 hash |
| Lakka | 527/527 | 5,263/5,293 | file presence |
| MiSTer FPGA | 81/81 | - | MD5 hash |
| ROCKNIX | 38/38 | 5,697/5,727 | MD5 hash |
| Recalbox | 351/351 | 2,731/2,739 | MD5 hash |
| RetroArch | 526/526 | 5,260/5,290 | file presence |
| RetroBat | 348/348 | 11,885/12,316 | MD5 hash |
| RetroDECK | 2,008/2,008 | 5,400/5,450 | MD5 hash |
| RetroPie * | 526/526 | 9,181/9,323 | file presence |
| RomM | 381/381 | 753/760 | MD5 hash |
| ROCKNIX | 38/38 | 5,700/5,730 | MD5 hash |
| Recalbox | 351/351 | 2,727/2,735 | MD5 hash |
| RetroArch | 527/527 | 5,263/5,293 | file presence |
| RetroBat | 348/348 | 11,748/12,178 | MD5 hash |
| RetroDECK | 2,008/2,008 | 5,280/5,330 | MD5 hash |
| RetroPie * | 527/527 | 9,182/9,324 | file presence |
| RomM | 381/381 | 624/630 | MD5 hash |
Each fraction is what the pack has over what is needed, counting required and optional files alike since both ship. The first column is the BIOS list the platform publishes. The second counts files its emulators load that this list never mentions, found by reading their source code, and it is routinely several times larger. A short fraction means files are still missing, and they are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/).
That second number is a floor, not a ceiling: an emulator that accepts any file handed to it names none in its code, so nothing there can be counted.
@@ -180,4 +180,4 @@ The scripts and tooling are released under the [MIT License](LICENSE).
The BIOS and firmware files are not covered by that license: they are third-party system software, preserved and provided for personal backup, archival, and interoperability with emulation software. [NOTICE](NOTICE) sets out their status and how to ask for a file to be removed.
The reasoning, and where it is weakest, is in the [FAQ](https://abdess.github.io/retrobios/wiki/faq/#is-this-legal).
*Auto-generated on 2026-10-10T10:40:24Z*
*Auto-generated on 2026-10-05T23:10:58Z*
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Binary file not shown.
-150
View File
@@ -1,150 +0,0 @@
# Default keys file bundled with Azahar.
# DISCLAIMER: The keys present in this document are used exclusively for interoperability
# with the user's legally obtained software, as well as to perform cryptographic operations
# on other 3DS-related data of non creative nature (data structures, numbers, etc).
:AES
# Generator constant
generatorConstant=1ff9e9aac5fe0408024591dc5d52768a
# OTP
otpKey=06457901d485a367ac4f2ad01c53cf74
otpIV=ba4f599b0ae1122c80e13f6865c4fa49
# Movable
movableKeyY=a717802dea9776137ba16cd389141cf0
movableCmacY=6e1e6bcb9ee098dd67ae771ad73b2cc9
# KeyX
slot0x18KeyX=82e9c9bebfb8bdb875ecc0a07d474374
slot0x19KeyX=f5367fce73142e66ed13917914b7f2ef
slot0x1AKeyX=eaba984c9cb766d4a3a7e974e2e713a3
slot0x1BKeyX=45ad04953992c7c893724a9a7bce6182
slot0x1CKeyX=c3830f8156e3543b723f0bc046741e8f
slot0x1DKeyX=d6b38bc759417596d619d6029d13e0d8
slot0x1EKeyX=bb623a97ddd793d757c4104b8d9fb969
slot0x1FKeyX=4c28ec6effa3c23646078bba350c7995
slot0x25KeyX=cee7d8ab30c00dae850ef5e382ac5af3
slot0x2CKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x2DKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x2EKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x2FKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x30KeyX=c66e23128f289133f04cdb877a3749f2
slot0x31KeyX=c66e23128f289133f04cdb877a3749f2
slot0x32KeyX=c66e23128f289133f04cdb877a3749f2
slot0x33KeyX=c66e23128f289133f04cdb877a3749f2
slot0x34KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x35KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x36KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x37KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x38KeyX=b529221cddb5db5a1bf26eff2041e875
slot0x39KeyX=b529221cddb5db5a1bf26eff2041e875
slot0x3AKeyX=b529221cddb5db5a1bf26eff2041e875
slot0x3BKeyX=b529221cddb5db5a1bf26eff2041e875
slot0x3CKeyX=c35d6d15680b1ad4e912a341836121b3
slot0x3DKeyX=617085719b7cfb316df4df2e8362c6e2
slot0x3EKeyX=24baf628d06889bf282d0aa35dc55650
slot0x3FKeyX=a31233280bb4daa7761393f78c424952
# KeyY
slot0x04KeyY=ff3388ecd21705bb339e967986dc4907
slot0x05KeyY=54ef035f30260e0e9b5e004fc985dc22
slot0x06KeyY=24b05aaaac0b099252030c02d1040317
slot0x07KeyY=e9acc5abd4ad3f0660c83c8934882f3f
slot0x08KeyY=4803050106d482dcd75f85c5aadff9b3
slot0x09KeyY=af6346efdddfa9806e3c6b6855b78930
slot0x0AKeyY=0a870a2c4b2fc3172e5f0335d8c5085d
slot0x0BKeyY=fda0152fcd6ddb3133b887ba727c0ada
slot0x24KeyY=74ca074884f4228deb2a1ca72d287762
slot0x2EKeyY=7462553f9e5a7904b8647cca736da1f5
slot0x2FKeyY=c369baa21e188a88a9aa94e5506a9f16
slot0x31KeyY=7462553f9e5a7904b8647cca736da1f5
# DLP/NFC KeyY (slot 0x39)
dlpKeyY=7462553f9e5a7904b8647cca736da1f5
nfcKeyY=ed7858a8bba7eed7fc970c5979bc0af2
# Ticket Common KeyY (slot 0x3D)
common0=d07b337f9ca4385932a2e25723232eb9
common1=0c767230f0998f1c46828202faacbe4c
common2=c475cb3ab8c788bb575e12a10907b8a4
common3=e486eee3d0c09c902f6686d4c06f649f
common4=ed31ba9c04b067506c4497a35b7804fc
common5=5e66998ab4e8931606850fd7a16dd755
# KeyN
slot0x0CKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x0DKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x0EKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x0FKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x10KeyN=285713db53051c089bdfb3b6aa638fda
slot0x11KeyN=285713db53051c089bdfb3b6aa638fda
slot0x12KeyN=285713db53051c089bdfb3b6aa638fda
slot0x13KeyN=285713db53051c089bdfb3b6aa638fda
slot0x14KeyN=2af3bbd32cd59c06fd4abe58651987ad
slot0x15KeyN=be2836751c734ba8da18e1887f888bd6
slot0x16KeyN=e3a18eb1c1dc8a3d27c3967e6e362de3
slot0x17KeyN=d0294cfb7be0b4fb7324d986fd3993bb
slot0x20KeyN=7c92f6272551c4614db0b345edd2e869
slot0x21KeyN=7c92f6272551c4614db0b345edd2e869
slot0x22KeyN=7c92f6272551c4614db0b345edd2e869
slot0x23KeyN=7c92f6272551c4614db0b345edd2e869
slot0x26KeyN=bbe8b4e09d0937816b234d8eb3cd3ca2
slot0x27KeyN=bbe8b4e09d0937816b234d8eb3cd3ca2
slot0x28KeyN=bbe8b4e09d0937816b234d8eb3cd3ca2
slot0x29KeyN=5218127e133ce3b85bb8c018ce76b7e2
slot0x2AKeyN=4a4264cf32e84170666f29ac88ef3f7e
slot0x2BKeyN=51af6c4c8b13da3228bd29b371cf84e1
slot0x2DKeyN=3ed6f5cf2cc37c54655000b7c8b52e0d
slot0x32KeyN=b87e64018b190ffe048a8124c6454196
slot0x36KeyN=28c0d59b736657bcdf50ff174979958a
slot0x38KeyN=6e78a3be9bddda09bfd569483f24fce0
# NFC Secrets
nfcSecret0Phrase=756e666978656420696e666f7300
nfcSecret0Seed=db4b9e3f45278f397eff9b4fb993
nfcSecret0HmacKey=1d164b375b72a55728b91d64b6a3c205
nfcSecret1Phrase=6c6f636b65642073656372657400
nfcSecret1Seed=fdc8a07694b89e4c47d37de8ce5c74c1
nfcSecret1HmacKey=7f752d2873a20017fef85c0575904b6d
nfcIv=4fd39a6e79fceaad99904db8ee38e9db
:RSA
# Slots
slot0x00X=c034829a11c7116a08633e89a78ca0919779da8cc967077afc60e1786247e5068b9a76588a15f0304b3887b5147c259f7a2e6e480aceb0be35f0c5885ea2d8838fd6aafe45ac58fc08d4d0569d3cd3b09f9c6985fcd5c7152ebc54a885d6b11129b503611510bbfa0b07552d5800ecf636ef90d101cd475a3f4274e0c1e828b2bb516c8cd80f95f5db6a239083435509c0190e5d218b19c3bebc2a3aa73cebf53e7e4998d9be01a440f3f1c0f3157ba6f65a7be9e059d4d26f9de997141979df2ceaa175d91db2079051978f805d6f97741b6db4e96e3305611392b4b7ca76f0b45387c40d5879cde6b1509062216cb9ac21f3510ccd6df4da8f581ff86d2f31
slot0x00M=c12e4877ff0fedb98afa6dbe5d7ac86489a4e0901dba22d2e7ba945c830126ca71976f284a5e57e386b4778fbb78e3f1750ecd8b6ed3984f3cd363f801dd9ed5271ea859f49ff4da02d88445efba774b3a46279167cb905300d0903ecb71772b78cfe918921e2bef699f87d9cbef273fbc0e320d177e925021e869bb827f227f17da206ae9ce5de262566c4fab0be86866f7218fd48c248c0d8cbdeb3adbc423a6cd1b572f82c0172d23e32b1b4f0c30b04c20749126851dba39b31a2918c23f91034969e601c0a1099742e8fd31cfe4a02cd9e6bd7b646c52465567c7463b2a9e7e9fa53a0e260d4daee68091ee7adfa1c1491538276161e1c10293f4592a33
# Ticket wrap
ticketWrapExp=010001
ticketWrapMod=d24cb2e48feaf004d4bb08f8f3defcbb0c934a146b15366c9ddc1eb1649b9feb964b569c2283954d3d2b8a1ab21dc1159c2e6cb4cdd4c0bb96dbad4f02d31f45573892af855273aca20c459b9bd3126425c05d766bfd2fad87986c08416aea8d4266cd9d4ffc3f20f7b5672b686793141edde1b11689aca2f6469c9b0ea4577150235185ed4e7e4f2f9036c165a20c73e160c644a47303d2ed9bb0ba2fc90989bd87eb4563d8f7a61d889a7807b155e7f2107d048d828fcba23090839341385614fde4fabe84f2f0532da34750f32ab11fbe084c0083edbf0b50e96a49dd9d1e293e2249ee954db8afd139461ead4f11a2d06836446473140ed3867e4e5ead3b
# Secure info
secureInfoExp=010001
secureInfoMod=b1791a6d1eadd429ba89a1cd433630174bc68730c5e70560197b50d8c4546710a6e8a101bc2ceb0376f005c70ce0b6d6dffd26df33468bdbb2391e7ec01aa1a5a091e807da378676ba390a25429d5961e161d40485a74bb20186beb11a3572c1c2ea28ab7a1015325c9e712b7df965eae6c6fb8baed76c2a94a6c5ece40eaf987e06f20f884fd20635a476e9f70aba5c5b1461520054044593e468270435355aad5809d1193f5a0728d6db6b551f77945dc3be6fae5bcc0863e476dfa29b36ea853403e616eaa905e07f3a3e7e7077cf166a61d17e4d354c744485d4f67b0eee32f1c2d5790248e9621a33baa39b02b02294057ff6b43888e301e55a237c9c0b
# Local friend code seed
lfcsExp=010001
lfcsMod=a3759a3546cfa7fe30ec55a1b64e08e9449d0c72fcd191fd610a288975bce6a9b21556e9c7670255adfc3cee5edb78259a4b221b71e7e9515b2a6793b21868ce5e5e12ffd86806af318d56f9549902346a17e7837496a05aaf6efde6bed686aafd7a65a8ebe11c983a15c17ab540c23d9b7cfdd463c5e6deb77824c629473335b2e937e054ee9fa53dd793ca3eae4db60f5a11e70cdfba03b21e2b31b65906db5f940bf76e74cad4ab55d940058f10fe06050c81bb422190ba4f5c5382e1e10fbc949f60695d1303aae2e0c108424c200b9baa552d55276e24e5d60457588ff75f0cec819f6d2d28f31055f83b7662d4e4a69369b5da6b4023af07eb9cbfa9c9
:ECC
# Root public
rootPublicXY=004e3bb74d5d959e68ce900434fe9e4a3f094a33771fa7c0e4b023264d98014ca1fc799d3fa52171d5f9bd5b1777ec0fef7a38d1669bbf830325843a
# Padding......
-154
View File
@@ -1,154 +0,0 @@
# Default keys file bundled with Azahar.
# DISCLAIMER: The keys present in this document are used exclusively for interoperability
# with the user's legally obtained software, as well as to perform cryptographic operations
# on other 3DS-related data of non creative nature (data structures, numbers, etc).
:AES
# Generator constant
generatorConstant=1ff9e9aac5fe0408024591dc5d52768a
# OTP
otpKey=06457901d485a367ac4f2ad01c53cf74
otpIV=ba4f599b0ae1122c80e13f6865c4fa49
# Movable
movableKeyY=a717802dea9776137ba16cd389141cf0
movableCmacY=6e1e6bcb9ee098dd67ae771ad73b2cc9
# KeyX
slot0x18KeyX=82e9c9bebfb8bdb875ecc0a07d474374
slot0x19KeyX=f5367fce73142e66ed13917914b7f2ef
slot0x1AKeyX=eaba984c9cb766d4a3a7e974e2e713a3
slot0x1BKeyX=45ad04953992c7c893724a9a7bce6182
slot0x1CKeyX=c3830f8156e3543b723f0bc046741e8f
slot0x1DKeyX=d6b38bc759417596d619d6029d13e0d8
slot0x1EKeyX=bb623a97ddd793d757c4104b8d9fb969
slot0x1FKeyX=4c28ec6effa3c23646078bba350c7995
slot0x25KeyX=cee7d8ab30c00dae850ef5e382ac5af3
slot0x2CKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x2DKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x2EKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x2FKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x30KeyX=c66e23128f289133f04cdb877a3749f2
slot0x31KeyX=c66e23128f289133f04cdb877a3749f2
slot0x32KeyX=c66e23128f289133f04cdb877a3749f2
slot0x33KeyX=c66e23128f289133f04cdb877a3749f2
slot0x34KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x35KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x36KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x37KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x38KeyX=b529221cddb5db5a1bf26eff2041e875
slot0x39KeyX=b529221cddb5db5a1bf26eff2041e875
slot0x3AKeyX=b529221cddb5db5a1bf26eff2041e875
slot0x3BKeyX=b529221cddb5db5a1bf26eff2041e875
slot0x3CKeyX=c35d6d15680b1ad4e912a341836121b3
slot0x3DKeyX=617085719b7cfb316df4df2e8362c6e2
slot0x3EKeyX=24baf628d06889bf282d0aa35dc55650
slot0x3FKeyX=a31233280bb4daa7761393f78c424952
# KeyY
slot0x04KeyY=ff3388ecd21705bb339e967986dc4907
slot0x05KeyY=54ef035f30260e0e9b5e004fc985dc22
slot0x06KeyY=24b05aaaac0b099252030c02d1040317
slot0x07KeyY=e9acc5abd4ad3f0660c83c8934882f3f
slot0x08KeyY=4803050106d482dcd75f85c5aadff9b3
slot0x09KeyY=af6346efdddfa9806e3c6b6855b78930
slot0x0AKeyY=0a870a2c4b2fc3172e5f0335d8c5085d
slot0x0BKeyY=fda0152fcd6ddb3133b887ba727c0ada
slot0x24KeyY=74ca074884f4228deb2a1ca72d287762
slot0x2EKeyY=7462553f9e5a7904b8647cca736da1f5
slot0x2FKeyY=c369baa21e188a88a9aa94e5506a9f16
slot0x31KeyY=7462553f9e5a7904b8647cca736da1f5
# DLP/NFC KeyY (slot 0x39)
dlpKeyY=7462553f9e5a7904b8647cca736da1f5
nfcKeyY=ed7858a8bba7eed7fc970c5979bc0af2
# Ticket Common KeyY (slot 0x3D)
common0=d07b337f9ca4385932a2e25723232eb9
common1=0c767230f0998f1c46828202faacbe4c
common2=c475cb3ab8c788bb575e12a10907b8a4
common3=e486eee3d0c09c902f6686d4c06f649f
common4=ed31ba9c04b067506c4497a35b7804fc
common5=5e66998ab4e8931606850fd7a16dd755
# KeyN
slot0x0CKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x0DKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x0EKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x0FKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x10KeyN=285713db53051c089bdfb3b6aa638fda
slot0x11KeyN=285713db53051c089bdfb3b6aa638fda
slot0x12KeyN=285713db53051c089bdfb3b6aa638fda
slot0x13KeyN=285713db53051c089bdfb3b6aa638fda
slot0x14KeyN=2af3bbd32cd59c06fd4abe58651987ad
slot0x15KeyN=be2836751c734ba8da18e1887f888bd6
slot0x16KeyN=e3a18eb1c1dc8a3d27c3967e6e362de3
slot0x17KeyN=d0294cfb7be0b4fb7324d986fd3993bb
slot0x20KeyN=7c92f6272551c4614db0b345edd2e869
slot0x21KeyN=7c92f6272551c4614db0b345edd2e869
slot0x22KeyN=7c92f6272551c4614db0b345edd2e869
slot0x23KeyN=7c92f6272551c4614db0b345edd2e869
slot0x26KeyN=bbe8b4e09d0937816b234d8eb3cd3ca2
slot0x27KeyN=bbe8b4e09d0937816b234d8eb3cd3ca2
slot0x28KeyN=bbe8b4e09d0937816b234d8eb3cd3ca2
slot0x29KeyN=5218127e133ce3b85bb8c018ce76b7e2
slot0x2AKeyN=4a4264cf32e84170666f29ac88ef3f7e
slot0x2BKeyN=51af6c4c8b13da3228bd29b371cf84e1
slot0x2DKeyN=3ed6f5cf2cc37c54655000b7c8b52e0d
slot0x32KeyN=b87e64018b190ffe048a8124c6454196
slot0x36KeyN=28c0d59b736657bcdf50ff174979958a
slot0x38KeyN=6e78a3be9bddda09bfd569483f24fce0
# NFC Secrets
nfcSecret0Phrase=756e666978656420696e666f7300
nfcSecret0Seed=db4b9e3f45278f397eff9b4fb993
nfcSecret0HmacKey=1d164b375b72a55728b91d64b6a3c205
nfcSecret1Phrase=6c6f636b65642073656372657400
nfcSecret1Seed=fdc8a07694b89e4c47d37de8ce5c74c1
nfcSecret1HmacKey=7f752d2873a20017fef85c0575904b6d
nfcIv=4fd39a6e79fceaad99904db8ee38e9db
# DLP Checksum
dlpChecksumModIv=fe449ac13ae3b4095011d18944107833
:RSA
# Slots
slot0x00X=c034829a11c7116a08633e89a78ca0919779da8cc967077afc60e1786247e5068b9a76588a15f0304b3887b5147c259f7a2e6e480aceb0be35f0c5885ea2d8838fd6aafe45ac58fc08d4d0569d3cd3b09f9c6985fcd5c7152ebc54a885d6b11129b503611510bbfa0b07552d5800ecf636ef90d101cd475a3f4274e0c1e828b2bb516c8cd80f95f5db6a239083435509c0190e5d218b19c3bebc2a3aa73cebf53e7e4998d9be01a440f3f1c0f3157ba6f65a7be9e059d4d26f9de997141979df2ceaa175d91db2079051978f805d6f97741b6db4e96e3305611392b4b7ca76f0b45387c40d5879cde6b1509062216cb9ac21f3510ccd6df4da8f581ff86d2f31
slot0x00M=c12e4877ff0fedb98afa6dbe5d7ac86489a4e0901dba22d2e7ba945c830126ca71976f284a5e57e386b4778fbb78e3f1750ecd8b6ed3984f3cd363f801dd9ed5271ea859f49ff4da02d88445efba774b3a46279167cb905300d0903ecb71772b78cfe918921e2bef699f87d9cbef273fbc0e320d177e925021e869bb827f227f17da206ae9ce5de262566c4fab0be86866f7218fd48c248c0d8cbdeb3adbc423a6cd1b572f82c0172d23e32b1b4f0c30b04c20749126851dba39b31a2918c23f91034969e601c0a1099742e8fd31cfe4a02cd9e6bd7b646c52465567c7463b2a9e7e9fa53a0e260d4daee68091ee7adfa1c1491538276161e1c10293f4592a33
# Ticket wrap
ticketWrapExp=010001
ticketWrapMod=d24cb2e48feaf004d4bb08f8f3defcbb0c934a146b15366c9ddc1eb1649b9feb964b569c2283954d3d2b8a1ab21dc1159c2e6cb4cdd4c0bb96dbad4f02d31f45573892af855273aca20c459b9bd3126425c05d766bfd2fad87986c08416aea8d4266cd9d4ffc3f20f7b5672b686793141edde1b11689aca2f6469c9b0ea4577150235185ed4e7e4f2f9036c165a20c73e160c644a47303d2ed9bb0ba2fc90989bd87eb4563d8f7a61d889a7807b155e7f2107d048d828fcba23090839341385614fde4fabe84f2f0532da34750f32ab11fbe084c0083edbf0b50e96a49dd9d1e293e2249ee954db8afd139461ead4f11a2d06836446473140ed3867e4e5ead3b
# Secure info
secureInfoExp=010001
secureInfoMod=b1791a6d1eadd429ba89a1cd433630174bc68730c5e70560197b50d8c4546710a6e8a101bc2ceb0376f005c70ce0b6d6dffd26df33468bdbb2391e7ec01aa1a5a091e807da378676ba390a25429d5961e161d40485a74bb20186beb11a3572c1c2ea28ab7a1015325c9e712b7df965eae6c6fb8baed76c2a94a6c5ece40eaf987e06f20f884fd20635a476e9f70aba5c5b1461520054044593e468270435355aad5809d1193f5a0728d6db6b551f77945dc3be6fae5bcc0863e476dfa29b36ea853403e616eaa905e07f3a3e7e7077cf166a61d17e4d354c744485d4f67b0eee32f1c2d5790248e9621a33baa39b02b02294057ff6b43888e301e55a237c9c0b
# Local friend code seed
lfcsExp=010001
lfcsMod=a3759a3546cfa7fe30ec55a1b64e08e9449d0c72fcd191fd610a288975bce6a9b21556e9c7670255adfc3cee5edb78259a4b221b71e7e9515b2a6793b21868ce5e5e12ffd86806af318d56f9549902346a17e7837496a05aaf6efde6bed686aafd7a65a8ebe11c983a15c17ab540c23d9b7cfdd463c5e6deb77824c629473335b2e937e054ee9fa53dd793ca3eae4db60f5a11e70cdfba03b21e2b31b65906db5f940bf76e74cad4ab55d940058f10fe06050c81bb422190ba4f5c5382e1e10fbc949f60695d1303aae2e0c108424c200b9baa552d55276e24e5d60457588ff75f0cec819f6d2d28f31055f83b7662d4e4a69369b5da6b4023af07eb9cbfa9c9
:ECC
# Root public
rootPublicXY=004e3bb74d5d959e68ce900434fe9e4a3f094a33771fa7c0e4b023264d98014ca1fc799d3fa52171d5f9bd5b1777ec0fef7a38d1669bbf830325843a
# Padding...................
File diff suppressed because it is too large. Load diff
Binary file not shown.
@@ -1,498 +0,0 @@
// SPDX-FileCopyrightText: 2002-2025 PCSX2 Dev Team
// SPDX-License-Identifier: GPL-3.0+
#ifndef FXAA_HLSL
#define FXAA_HLSL 0
#endif
#ifndef FXAA_GLSL_130
#define FXAA_GLSL_130 0
#endif
#ifndef FXAA_GLSL_VK
#define FXAA_GLSL_VK 0
#endif
#define UHQ_FXAA 1 //High Quality Fast Approximate Anti Aliasing. Adapted for GS from Timothy Lottes FXAA 3.11.
#define FxaaSubpixMax 0.0 //[0.00 to 1.00] Amount of subpixel aliasing removal. 0.00: Edge only antialiasing (no blurring)
#define FxaaEarlyExit 1 //[0 or 1] Use Fxaa early exit pathing. When disabled, the entire scene is antialiased(FSAA). 0 is off, 1 is on.
/*------------------------------------------------------------------------------
[GLOBALS|FUNCTIONS]
------------------------------------------------------------------------------*/
#if (FXAA_GLSL_130 == 1)
in vec2 PSin_t;
layout(location = 0) out vec4 SV_Target0;
layout(binding = 0) uniform sampler2D TextureSampler;
#elif (FXAA_GLSL_VK == 1)
layout(location = 0) in vec2 PSin_t;
layout(location = 0) out vec4 SV_Target0;
layout(set = 0, binding = 0) uniform sampler2D TextureSampler;
#elif (FXAA_HLSL == 1)
Texture2D Texture : register(t0);
SamplerState TextureSampler : register(s0);
struct VS_INPUT
{
float4 p : POSITION;
float2 t : TEXCOORD0;
};
struct VS_OUTPUT
{
float4 p : SV_Position;
float2 t : TEXCOORD0;
};
struct PS_OUTPUT
{
float4 c : SV_Target0;
};
#elif defined(__METAL_VERSION__)
static constexpr sampler MAIN_SAMPLER(coord::normalized, address::clamp_to_edge, filter::linear);
#endif
/*------------------------------------------------------------------------------
[FXAA CODE SECTION]
------------------------------------------------------------------------------*/
#if (FXAA_HLSL == 1)
struct FxaaTex { SamplerState smpl; Texture2D tex; };
#define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)
#define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)
#define FxaaDiscard clip(-1)
#define FxaaSat(x) saturate(x)
#elif (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1)
#define int2 ivec2
#define float2 vec2
#define float3 vec3
#define float4 vec4
#define FxaaDiscard discard
#define FxaaSat(x) clamp(x, 0.0, 1.0)
#define FxaaTex sampler2D
#define FxaaTexTop(t, p) textureLod(t, p, 0.0)
#define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)
#elif defined(__METAL_VERSION__)
#define FxaaTex texture2d<float>
#define FxaaTexTop(t, p) t.sample(MAIN_SAMPLER, p)
#define FxaaTexOff(t, p, o, r) t.sample(MAIN_SAMPLER, p, o)
#define FxaaDiscard discard_fragment()
#define FxaaSat(x) saturate(x)
#endif
#define FxaaEdgeThreshold 0.063
#define FxaaEdgeThresholdMin 0.00
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 2.0
#define FXAA_QUALITY_P5 2.0
#define FXAA_QUALITY_P6 2.0
#define FXAA_QUALITY_P7 2.0
#define FXAA_QUALITY_P8 2.0
#define FXAA_QUALITY_P9 2.0
#define FXAA_QUALITY_P10 4.0
#define FXAA_QUALITY_P11 8.0
#define FXAA_QUALITY_P12 8.0
/*------------------------------------------------------------------------------
[GAMMA PREPASS CODE SECTION]
------------------------------------------------------------------------------*/
float RGBLuminance(float3 color)
{
const float3 lumCoeff = float3(0.2126729, 0.7151522, 0.0721750);
return dot(color.rgb, lumCoeff);
}
float3 RGBGammaToLinear(float3 color, float gamma)
{
color = FxaaSat(color);
color.r = (color.r <= 0.0404482362771082) ?
color.r / 12.92 : pow((color.r + 0.055) / 1.055, gamma);
color.g = (color.g <= 0.0404482362771082) ?
color.g / 12.92 : pow((color.g + 0.055) / 1.055, gamma);
color.b = (color.b <= 0.0404482362771082) ?
color.b / 12.92 : pow((color.b + 0.055) / 1.055, gamma);
return color;
}
float3 LinearToRGBGamma(float3 color, float gamma)
{
color = FxaaSat(color);
color.r = (color.r <= 0.00313066844250063) ?
color.r * 12.92 : 1.055 * pow(color.r, 1.0 / gamma) - 0.055;
color.g = (color.g <= 0.00313066844250063) ?
color.g * 12.92 : 1.055 * pow(color.g, 1.0 / gamma) - 0.055;
color.b = (color.b <= 0.00313066844250063) ?
color.b * 12.92 : 1.055 * pow(color.b, 1.0 / gamma) - 0.055;
return color;
}
float4 PreGammaPass(float4 color)
{
const float GammaConst = 2.233;
color.rgb = RGBGammaToLinear(color.rgb, GammaConst);
color.rgb = LinearToRGBGamma(color.rgb, GammaConst);
color.a = RGBLuminance(color.rgb);
return color;
}
/*------------------------------------------------------------------------------
[FXAA CODE SECTION]
------------------------------------------------------------------------------*/
float FxaaLuma(float4 rgba)
{
rgba.w = RGBLuminance(rgba.xyz);
return rgba.w;
}
float4 FxaaPixelShader(float2 pos, FxaaTex tex, float2 fxaaRcpFrame, float fxaaSubpix, float fxaaEdgeThreshold, float fxaaEdgeThresholdMin)
{
float2 posM = pos;
float4 rgbyM = FxaaTexTop(tex, posM);
rgbyM.w = RGBLuminance(rgbyM.xyz);
#define lumaM rgbyM.w
float lumaS = FxaaLuma(FxaaTexOff(tex, posM, int2( 0, 1), fxaaRcpFrame.xy));
float lumaE = FxaaLuma(FxaaTexOff(tex, posM, int2( 1, 0), fxaaRcpFrame.xy));
float lumaN = FxaaLuma(FxaaTexOff(tex, posM, int2( 0,-1), fxaaRcpFrame.xy));
float lumaW = FxaaLuma(FxaaTexOff(tex, posM, int2(-1, 0), fxaaRcpFrame.xy));
float maxSM = max(lumaS, lumaM);
float minSM = min(lumaS, lumaM);
float maxESM = max(lumaE, maxSM);
float minESM = min(lumaE, minSM);
float maxWN = max(lumaN, lumaW);
float minWN = min(lumaN, lumaW);
float rangeMax = max(maxWN, maxESM);
float rangeMin = min(minWN, minESM);
float range = rangeMax - rangeMin;
float rangeMaxScaled = rangeMax * fxaaEdgeThreshold;
float rangeMaxClamped = max(fxaaEdgeThresholdMin, rangeMaxScaled);
#if (FxaaEarlyExit == 1)
// Potential optimization, early exit.
if (range < rangeMaxClamped)
return rgbyM;
#endif
float lumaNW = FxaaLuma(FxaaTexOff(tex, posM, int2(-1,-1), fxaaRcpFrame.xy));
float lumaSE = FxaaLuma(FxaaTexOff(tex, posM, int2( 1, 1), fxaaRcpFrame.xy));
float lumaNE = FxaaLuma(FxaaTexOff(tex, posM, int2( 1,-1), fxaaRcpFrame.xy));
float lumaSW = FxaaLuma(FxaaTexOff(tex, posM, int2(-1, 1), fxaaRcpFrame.xy));
float lumaNS = lumaN + lumaS;
float lumaWE = lumaW + lumaE;
float subpixRcpRange = 1.0/range;
float subpixNSWE = lumaNS + lumaWE;
float edgeHorz1 = (-2.0 * lumaM) + lumaNS;
float edgeVert1 = (-2.0 * lumaM) + lumaWE;
float lumaNESE = lumaNE + lumaSE;
float lumaNWNE = lumaNW + lumaNE;
float edgeHorz2 = (-2.0 * lumaE) + lumaNESE;
float edgeVert2 = (-2.0 * lumaN) + lumaNWNE;
float lumaNWSW = lumaNW + lumaSW;
float lumaSWSE = lumaSW + lumaSE;
float edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);
float edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);
float edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;
float edgeVert3 = (-2.0 * lumaS) + lumaSWSE;
float edgeHorz = abs(edgeHorz3) + edgeHorz4;
float edgeVert = abs(edgeVert3) + edgeVert4;
float subpixNWSWNESE = lumaNWSW + lumaNESE;
float lengthSign = fxaaRcpFrame.x;
bool horzSpan = edgeHorz >= edgeVert;
float subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;
if(!horzSpan) lumaN = lumaW;
if(!horzSpan) lumaS = lumaE;
if(horzSpan) lengthSign = fxaaRcpFrame.y;
float subpixB = (subpixA * (1.0/12.0)) - lumaM;
float gradientN = lumaN - lumaM;
float gradientS = lumaS - lumaM;
float lumaNN = lumaN + lumaM;
float lumaSS = lumaS + lumaM;
bool pairN = abs(gradientN) >= abs(gradientS);
float gradient = max(abs(gradientN), abs(gradientS));
if(pairN) lengthSign = -lengthSign;
float subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);
float2 posB;
posB.x = posM.x;
posB.y = posM.y;
float2 offNP;
offNP.x = (!horzSpan) ? 0.0 : fxaaRcpFrame.x;
offNP.y = ( horzSpan) ? 0.0 : fxaaRcpFrame.y;
if(!horzSpan) posB.x += lengthSign * 0.5;
if( horzSpan) posB.y += lengthSign * 0.5;
float2 posN;
posN.x = posB.x - offNP.x * FXAA_QUALITY_P0;
posN.y = posB.y - offNP.y * FXAA_QUALITY_P0;
float2 posP;
posP.x = posB.x + offNP.x * FXAA_QUALITY_P0;
posP.y = posB.y + offNP.y * FXAA_QUALITY_P0;
float subpixD = ((-2.0)*subpixC) + 3.0;
float lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));
float subpixE = subpixC * subpixC;
float lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));
if(!pairN) lumaNN = lumaSS;
float gradientScaled = gradient * 1.0/4.0;
float lumaMM = lumaM - lumaNN * 0.5;
float subpixF = subpixD * subpixE;
bool lumaMLTZero = lumaMM < 0.0;
lumaEndN -= lumaNN * 0.5;
lumaEndP -= lumaNN * 0.5;
bool doneN = abs(lumaEndN) >= gradientScaled;
bool doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1;
bool doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12;
}}}}}}}}}}}
float dstN = posM.x - posN.x;
float dstP = posP.x - posM.x;
if(!horzSpan) dstN = posM.y - posN.y;
if(!horzSpan) dstP = posP.y - posM.y;
bool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;
float spanLength = (dstP + dstN);
bool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;
float spanLengthRcp = 1.0/spanLength;
bool directionN = dstN < dstP;
float dst = min(dstN, dstP);
bool goodSpan = directionN ? goodSpanN : goodSpanP;
float subpixG = subpixF * subpixF;
float pixelOffset = (dst * (-spanLengthRcp)) + 0.5;
float subpixH = subpixG * fxaaSubpix;
float pixelOffsetGood = goodSpan ? pixelOffset : 0.0;
float pixelOffsetSubpix = max(pixelOffsetGood, subpixH);
if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;
if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;
return float4(FxaaTexTop(tex, posM).xyz, lumaM);
}
#if (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1)
float4 FxaaPass(float4 FxaaColor, float2 uv0)
#elif (FXAA_HLSL == 1)
float4 FxaaPass(float4 FxaaColor : COLOR0, float2 uv0 : TEXCOORD0)
#elif defined(__METAL_VERSION__)
float4 FxaaPass(float4 FxaaColor, float2 uv0, texture2d<float> tex)
#endif
{
#if (FXAA_HLSL == 1)
FxaaTex tex;
tex.tex = Texture;
tex.smpl = TextureSampler;
float2 PixelSize;
Texture.GetDimensions(PixelSize.x, PixelSize.y);
FxaaColor = FxaaPixelShader(uv0, tex, 1.0/PixelSize.xy, FxaaSubpixMax, FxaaEdgeThreshold, FxaaEdgeThresholdMin);
#elif (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1)
vec2 PixelSize = vec2(textureSize(TextureSampler, 0));
FxaaColor = FxaaPixelShader(uv0, TextureSampler, 1.0/PixelSize.xy, FxaaSubpixMax, FxaaEdgeThreshold, FxaaEdgeThresholdMin);
#elif defined(__METAL_VERSION__)
float2 PixelSize = float2(tex.get_width(), tex.get_height());
FxaaColor = FxaaPixelShader(uv0, tex, 1.f/PixelSize, FxaaSubpixMax, FxaaEdgeThreshold, FxaaEdgeThresholdMin);
#endif
return FxaaColor;
}
/*------------------------------------------------------------------------------
[MAIN() & COMBINE PASS CODE SECTION]
------------------------------------------------------------------------------*/
#if (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1)
void main()
{
vec4 color = texture(TextureSampler, PSin_t);
color = PreGammaPass(color);
color = FxaaPass(color, PSin_t);
SV_Target0 = float4(color.rgb, 1.0);
}
#elif (FXAA_HLSL == 1)
PS_OUTPUT main(VS_OUTPUT input)
{
PS_OUTPUT output;
float4 color = Texture.Sample(TextureSampler, input.t);
color = PreGammaPass(color);
color = FxaaPass(color, input.t);
output.c = float4(color.rgb, 1.0);
return output;
}
// Metal main function in in fxaa.metal
#endif
File diff suppressed because it is too large. Load diff
@@ -1,470 +0,0 @@
// SPDX-FileCopyrightText: 2002-2026 PCSX2 Dev Team
// SPDX-License-Identifier: GPL-3.0+
//#version 420 // Keep it for text editor detection
layout(std140, binding = 1) uniform cb20
{
vec2 VertexScale;
vec2 VertexOffset;
vec2 TextureScale;
vec2 TextureOffset;
vec2 PointSize;
uint MaxDepth;
float LineAA1Width;
};
#ifdef VERTEX_SHADER
#ifndef VS_EXPAND_NONE
#define VS_EXPAND_NONE 0
#define VS_EXPAND_POINT 1
#define VS_EXPAND_LINE 2
#define VS_EXPAND_SPRITE 3
#define VS_EXPAND_LINE_AA1 4
#define VS_EXPAND_TRIANGLE_AA1 5
#endif
out SHADER
{
vec4 t_float;
vec4 t_int;
#if VS_IIP != 0
vec4 c;
#else
flat vec4 c;
#endif
float inv_cov; // We use the inverse to make it simpler to interpolate.
flat uint interior; // 1 for triangle interior; 0 for edge.
} VSout;
const float exp_min32 = exp2(-32.0f);
#if VS_EXPAND == VS_EXPAND_NONE
layout(location = 0) in vec2 i_st;
layout(location = 2) in vec4 i_c;
layout(location = 3) in float i_q;
layout(location = 4) in uvec2 i_p;
layout(location = 5) in uint i_z;
layout(location = 6) in uvec2 i_uv;
layout(location = 7) in vec4 i_f;
void texture_coord()
{
vec2 uv = vec2(i_uv) - TextureOffset;
vec2 st = i_st - TextureOffset;
// Float coordinate
VSout.t_float.xy = st;
VSout.t_float.w = i_q;
// Integer coordinate => normalized
VSout.t_int.xy = uv * TextureScale;
#if VS_FST
// Integer coordinate => integral
VSout.t_int.zw = uv;
#else
// Some games uses float coordinate for post-processing effect
VSout.t_int.zw = st / TextureScale;
#endif
}
void vs_main()
{
// Clamp to max depth, gs doesn't wrap
highp uint z = min(i_z, MaxDepth);
// pos -= 0.05 (1/320 pixel) helps avoiding rounding problems (integral part of pos is usually 5 digits, 0.05 is about as low as we can go)
// example: ceil(afterseveralvertextransformations(y = 133)) => 134 => line 133 stays empty
// input granularity is 1/16 pixel, anything smaller than that won't step drawing up/left by one pixel
// example: 133.0625 (133 + 1/16) should start from line 134, ceil(133.0625 - 0.05) still above 133
gl_Position.xy = vec2(i_p) - vec2(0.05f, 0.05f);
gl_Position.xy = gl_Position.xy * VertexScale - VertexOffset;
#if HAS_CLIP_CONTROL
gl_Position.z = float(z) * exp_min32;
#else
gl_Position.z = (float(z) * exp_min32) * 2.0f - 1.0f;
#endif
gl_Position.w = 1.0f;
texture_coord();
VSout.c = i_c;
VSout.t_float.z = i_f.x; // pack for with texture
#if VS_POINT_SIZE
gl_PointSize = PointSize.x;
#endif
}
#else // VS_EXPAND
struct RawVertex
{
vec2 ST;
uint RGBA;
float Q;
uint XY;
uint Z;
uint UV;
uint FOG;
};
layout(std140, binding = 4) uniform cb22
{
uint BaseVertex;
uint BaseIndex;
uint pad_cb22_0;
uint pad_cb22_1;
};
layout(std140, binding = 2) readonly buffer VertexBuffer {
RawVertex vertex_buffer[];
};
// Warning: use std430 instead of std140 so that the ints are tightly packed.
layout(std430, binding = 3) readonly buffer IndexBuffer {
uint index_buffer[];
};
struct ProcessedVertex
{
vec4 p;
vec4 t_float;
vec4 t_int;
vec4 c;
};
uint load_index(uint _i)
{
uint i = _i + BaseIndex;
// i is even => load lower 16 bits; i odd => load upper 16 bits.
uint shift = (i & 1u) << 4u;
return (index_buffer[i >> 1u] >> shift) & 0xFFFFu;
}
ProcessedVertex load_vertex(uint index)
{
RawVertex rvtx = vertex_buffer[BaseVertex + index];
vec2 i_st = rvtx.ST;
vec4 i_c = vec4(uvec4(bitfieldExtract(rvtx.RGBA, 0, 8), bitfieldExtract(rvtx.RGBA, 8, 8),
bitfieldExtract(rvtx.RGBA, 16, 8), bitfieldExtract(rvtx.RGBA, 24, 8)));
float i_q = rvtx.Q;
uvec2 i_p = uvec2(bitfieldExtract(rvtx.XY, 0, 16), bitfieldExtract(rvtx.XY, 16, 16));
uint i_z = rvtx.Z;
uvec2 i_uv = uvec2(bitfieldExtract(rvtx.UV, 0, 16), bitfieldExtract(rvtx.UV, 16, 16));
vec4 i_f = unpackUnorm4x8(rvtx.FOG);
ProcessedVertex vtx;
uint z = min(i_z, MaxDepth);
vtx.p.xy = vec2(i_p) - vec2(0.05f, 0.05f);
vtx.p.xy = vtx.p.xy * VertexScale - VertexOffset;
#if HAS_CLIP_CONTROL
vtx.p.z = float(z) * exp_min32;
#else
vtx.p.z = (float(z) * exp_min32) * 2.0f - 1.0f;
#endif
vtx.p.w = 1.0f;
vec2 uv = vec2(i_uv) - TextureOffset;
vec2 st = i_st - TextureOffset;
vtx.t_float.xy = st;
vtx.t_float.w = i_q;
vtx.t_int.xy = uv * TextureScale;
#if VS_FST
vtx.t_int.zw = uv;
#else
vtx.t_int.zw = st / TextureScale;
#endif
vtx.c = i_c;
vtx.t_float.z = i_f.x;
return vtx;
}
// Convert XY from NDC to GS pixel coordinates (i.e. 1.0 = 1 GS pixel).
vec2 get_xy_unscaled(vec2 xy)
{
return round(xy / VertexScale) / 16.0f;
}
// Get the XY deltas in GS pixel coordinates, using first vertex as the origin.
mat2 get_xy_deltas_unscaled(ProcessedVertex v0, ProcessedVertex v1, ProcessedVertex v2)
{
vec2 xy0 = get_xy_unscaled(v0.p.xy);
vec2 xy1 = get_xy_unscaled(v1.p.xy);
vec2 xy2 = get_xy_unscaled(v2.p.xy);
return mat2(xy1 - xy0, xy2 - xy0);
}
// Get the AA1 outward expand direction to the edge formed by the first two vertices.
// This is up or down for shallow (X dominant) edges, and right or left for steep (Y dominant) edges.
// Similar expansion to line AA1 except instead of expanding on both sides of the line,
// expand on on the side towards the outside of the triangle.
vec2 get_aa1_triangle_expand_dir(ProcessedVertex v0, ProcessedVertex v1, ProcessedVertex v2)
{
mat2 xy_deltas = get_xy_deltas_unscaled(v0, v1, v2);
vec2 line_delta = xy_deltas[0];
vec2 line_opposite = xy_deltas[1];
vec2 line_normal = vec2(line_delta.y, -line_delta.x);
vec2 line_expand = abs(line_delta.x) >= abs(line_delta.y) ? vec2(0.0f, 1.0f) : vec2(1.0f, 0.0f);
if ((dot(line_expand, line_normal) >= 0.0f) == (dot(line_opposite, line_normal) >= 0.0f))
{
// Expand direction point towards the interior so flip it.
line_expand = -line_expand;
}
return line_expand;
}
mat2 get_inverse(mat2 mat, float det)
{
return mat2(mat[1][1], -mat[0][1], -mat[1][0], mat[0][0]) * (1.0f / det);
}
// Extrapolate triangle attributes from the first vertex along the given direction.
// dp_mat is derived from the input vertices, it is passed in to avoid recomputing.
void extrapolate_aa1_triangle_edge(inout ProcessedVertex v0, ProcessedVertex v1, ProcessedVertex v2, mat2 dp_mat, vec2 dp)
{
// Get texture deltas
#if VS_TME
#if VS_FST
mat2 dt = mat2(v1.t_int.zw - v0.t_int.zw, v2.t_int.zw - v0.t_int.zw);
#else
mat2 dt = mat2(v1.t_float.xy - v0.t_float.xy, v2.t_float.xy - v0.t_float.xy);
#endif
#endif
// Get color delta if interpolating
#if VS_IIP
mat2x4 dc = mat2x4(v1.c - v0.c, v2.c - v0.c);
#endif
vec2 dz = vec2(v1.p.z - v0.p.z, v2.p.z - v0.p.z); // Z deltas
vec2 df = vec2(v1.t_float.z - v0.t_float.z, v2.t_float.z - v0.t_float.z); // Fog deltas
vec2 dq = vec2(v1.t_float.w - v0.t_float.w, v2.t_float.w - v0.t_float.w); // Q deltas
// To prevent unstable extrapolation, do not extrapolate if the
// minimum perpendicular length of the triangle is < 2 pixels.
float dp_det = determinant(dp_mat); // Twice signed triangle area.
float len0 = length(dp_mat[0]);
float len1 = length(dp_mat[1]);
float len2 = length(dp_mat[1] - dp_mat[0]);
float min_perp_length = abs(dp_det) / max(max(len0, len1), len2);
// Get the position -> barycentric weight matrix
mat2 inv_dp_mat = get_inverse(dp_mat, dp_det);
vec2 weights = min_perp_length < 2.0f ? vec2(0) : inv_dp_mat * dp;
v0.p.xy += dp * PointSize; // Extrapolate position
// Extrapolate texture coords
#if VS_TME
#if VS_FST
v0.t_int.zw += dt * weights;
v0.t_int.xy = v0.t_int.zw * TextureScale;
#else
v0.t_float.xy += dt * weights;
v0.t_int.zw = v0.t_float.xy / TextureScale;
v0.t_float.w += dot(dq, weights);
#endif
#endif
// Extrapolate and clamp color
#if VS_IIP
v0.c += dc * weights;
v0.c = clamp(v0.c, vec4(0), vec4(255));
#endif
v0.p.z += dot(dz, weights); // Extrapolate depth
v0.t_float.z += dot(df, weights); // Extrapolate fog
}
void main()
{
ProcessedVertex vtx;
uint vid = uint(gl_VertexID);
#if VS_EXPAND == VS_EXPAND_POINT
vtx = load_vertex(vid >> 2);
vtx.p.x += ((vid & 1u) != 0u) ? PointSize.x : 0.0f;
vtx.p.y += ((vid & 2u) != 0u) ? PointSize.y : 0.0f;
#elif (VS_EXPAND == VS_EXPAND_LINE) || (VS_EXPAND == VS_EXPAND_LINE_AA1)
uint vid_base = vid >> 2;
bool is_bottom = (vid & 2u) != 0u;
bool is_right = (vid & 1u) != 0u;
uint vid_other = is_bottom ? vid_base - 1u : vid_base + 1u;
vtx = load_vertex(vid_base);
ProcessedVertex other = load_vertex(vid_other);
// Use bottom minus top for delta regardless of which vertex we are expanding.
vec2 line_delta = is_bottom ? (vtx.p.xy - other.p.xy) : (other.p.xy - vtx.p.xy);
vec2 line_vector = normalize(line_delta / VertexScale);
vec2 line_expand = vec2(line_vector.y, -line_vector.x);
#if VS_EXPAND == VS_EXPAND_LINE_AA1
line_expand *= 2.0f * LineAA1Width;
#endif
vec2 line_width = (line_expand * PointSize) / 2.0f;
vec2 offset = is_right ? line_width : -line_width;
vtx.p.xy += offset;
#if VS_EXPAND == VS_EXPAND_LINE_AA1
VSout.inv_cov = is_right ? 1.0f : -1.0f;
#endif
// Lines will be run as (0 1 2) (1 2 3)
// This means that both triangles will have a point based off the top line point as their first point
// So we don't have to do anything for !IIP
#elif VS_EXPAND == VS_EXPAND_SPRITE
// Sprite points are always in pairs
uint vid_base = vid >> 1;
uint vid_lt = vid_base & ~1u;
uint vid_rb = vid_base | 1u;
ProcessedVertex lt = load_vertex(vid_lt);
ProcessedVertex rb = load_vertex(vid_rb);
vtx = rb;
bool is_right = ((vid & 1u) != 0u);
vtx.p.x = is_right ? lt.p.x : vtx.p.x;
vtx.t_float.x = is_right ? lt.t_float.x : vtx.t_float.x;
vtx.t_int.xz = is_right ? lt.t_int.xz : vtx.t_int.xz;
bool is_bottom = ((vid & 2u) != 0u);
vtx.p.y = is_bottom ? lt.p.y : vtx.p.y;
vtx.t_float.y = is_bottom ? lt.t_float.y : vtx.t_float.y;
vtx.t_int.yw = is_bottom ? lt.t_int.yw : vtx.t_int.yw;
#elif VS_EXPAND == VS_EXPAND_TRIANGLE_AA1
// Triangles with AA1 are expanded as follows:
// - Vertices 0-2: Interior of triangle (1 triangle).
// - Vertices 3-8: First edge expanded (2 triangles).
// - Vertices 9-14: Second edge expanded (2 triangles).
// - Vertices 15-20: Third edge expanded (2 triangles).
// - Vertices 21-26: First corner cap (2 triangles).
// - Vertices 27-32: Second corner cap (2 triangles).
// - Vertices 33-38: Third corner cap (2 triangles).
uint prim_id = vid / 39u;
uint prim_offset = vid - 39u * prim_id; // range: 0-38
bool interior = prim_offset < 3u;
bool edge = 3u <= prim_offset && prim_offset < 21u;
if (interior)
{
vtx = load_vertex(load_index(3u * prim_id + prim_offset));
VSout.inv_cov = 0.0f; // Full coverage
VSout.interior = 1u;
}
else if (edge)
{
// Vertex indices for this edge. We need all 3 for determining exterior/interior.
uint prim_offset_edges = prim_offset - 3u; // range: 0-17
uint i0 = prim_offset_edges / 6u;
uint i1 = (i0 >= 2u) ? i0 - 2u : i0 + 1u;
uint i2 = (i0 >= 1u) ? i0 - 1u : i0 + 2u;
uint edge_offset = prim_offset_edges - 6u * i0; // range: 0-5
// Note: order of top/bottom, inside/outside is arbitrary,
// as long as it assembles into two triangles forming a quad.
bool is_bottom = (2u <= edge_offset) && (edge_offset <= 4u);
bool is_outside = (edge_offset & 1u) != 0u;
vtx = load_vertex(load_index(3u * prim_id + (is_bottom ? i1 : i0)));
ProcessedVertex other = load_vertex(load_index(3u * prim_id + (is_bottom ? i0 : i1)));
ProcessedVertex opposite = load_vertex(load_index(3u * prim_id + i2));
mat2 pos_deltas = get_xy_deltas_unscaled(vtx, other, opposite);
vec2 expand_dir = is_outside ? get_aa1_triangle_expand_dir(vtx, other, opposite) : vec2(0);
// Do actual extrapolation, or no-op if expand_dir == 0.
extrapolate_aa1_triangle_edge(vtx, other, opposite, pos_deltas, expand_dir);
VSout.inv_cov = is_outside ? 1.0f : 0.0f; // No coverage on outside, otherwise full.
VSout.interior = 0u;
}
else // Corner cap
{
// Vertex indices for this cap. We need all 3 for determining exterior/interior.
uint prim_offset_cap = prim_offset - 21u; // range: 0-17
uint i0 = prim_offset_cap / 6u;
uint i1 = (i0 >= 2u) ? i0 - 2u : i0 + 1u;
uint i2 = (i0 >= 1u) ? i0 - 1u : i0 + 2u;
uint cap_offset = prim_offset_cap - 6u * i0; // range: 0-5
bool is_near_corner = cap_offset == 0u || cap_offset == 3u;
bool is_far_corner = cap_offset == 2u || cap_offset == 5u;
bool is_first_tri = cap_offset < 3u;
// First triangle is on the side of vertex i1 and second is on the side of vertex i2.
vtx = load_vertex(load_index(3u * prim_id + i0));
ProcessedVertex other = load_vertex(load_index(3u * prim_id + (is_first_tri ? i1 : i2)));
ProcessedVertex opposite = load_vertex(load_index(3u * prim_id + (is_first_tri ? i2 : i1)));
mat2 pos_deltas = get_xy_deltas_unscaled(vtx, other, opposite);
// Get the edge expansion directions of both incident edges.
vec2 edge_expand_dir_0 = get_aa1_triangle_expand_dir(vtx, other, opposite);
vec2 edge_expand_dir_1 = get_aa1_triangle_expand_dir(vtx, opposite, other);
// Check if the corner is already filled by the expanded edges.
// This happens if the expand directions are the same.
// If so we output a degenerate triangle at this corner.
bool corner_filled = all(equal(edge_expand_dir_0, edge_expand_dir_1));
// Nothing if corner is filled, otherwise opposite to the bisector of the corner angle.
vec2 far_corner_dir = corner_filled ? vec2(0) : -normalize((pos_deltas[0] + pos_deltas[1]) / 2.0f);
// Determine the expand direction.
vec2 expand_dir = is_near_corner ? vec2(0) : // No extrapolation
is_far_corner ? far_corner_dir : // Opposite to the angle bisector of corner
edge_expand_dir_0; // Standard AA1 edge expansion
// Do the actual extrapolation (no-op if expand_dir == 0).
extrapolate_aa1_triangle_edge(vtx, other, opposite, pos_deltas, expand_dir);
VSout.inv_cov = is_near_corner ? 0.0f : 1.0f; // Full coverage at near corner, otherwise none.
VSout.interior = 0u;
}
#endif
gl_Position = vtx.p;
VSout.t_float = vtx.t_float;
VSout.t_int = vtx.t_int;
VSout.c = vtx.c;
}
#endif // VS_EXPAND
#endif // VERTEX_SHADER
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Binary file not shown.
File renamed without changes.
Binary file not shown.
File renamed without changes.
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+189 -1403
View File
File diff suppressed because it is too large. Load diff
+10
View File
@@ -88,6 +88,7 @@ files:
- name: OS6128_UK.rom
path: "private/firmware/OS6128_UK.rom"
system: amstrad-cpc
region: [uk]
required: true
min_size: 32768
validation: [size]
@@ -137,6 +138,7 @@ files:
- name: OS464_UK.rom
path: "private/firmware/OS464_UK.rom"
system: amstrad-cpc
region: [uk]
required: false
min_size: 32768
validation: [size]
@@ -148,6 +150,7 @@ files:
- name: OS464_FR.rom
path: "private/firmware/OS464_FR.rom"
system: amstrad-cpc
region: [france]
required: false
min_size: 32768
validation: [size]
@@ -161,6 +164,7 @@ files:
- name: OS664_UK.rom
path: "private/firmware/OS664_UK.rom"
system: amstrad-cpc
region: [uk]
required: false
min_size: 32768
validation: [size]
@@ -172,6 +176,7 @@ files:
- name: XMEM_FW_3_15_UK.rom
path: "private/firmware/XMEM_FW_3_15_UK.rom"
system: amstrad-cpc
region: [uk]
required: false
min_size: 32768
validation: [size]
@@ -183,6 +188,7 @@ files:
- name: XMEM_FW_3_15_FR.rom
path: "private/firmware/XMEM_FW_3_15_FR.rom"
system: amstrad-cpc
region: [france]
required: false
min_size: 32768
validation: [size]
@@ -218,6 +224,7 @@ files:
- name: Amstrad_f4.cpr
path: "private/firmware/Amstrad_f4.cpr"
system: amstrad-cpc
region: [france]
required: false
size: 131156
md5: e7159fd674022ba05f9b347ae3cdafc6
@@ -228,6 +235,7 @@ files:
- name: Amstrad_s4.cpr
path: "private/firmware/Amstrad_s4.cpr"
system: amstrad-cpc
region: [spain]
required: false
size: 131156
md5: 6eeed3fdd4abc98a2a932da810410128
@@ -249,6 +257,7 @@ files:
- name: hackit400uk.rom
path: "private/hacker/hackit400uk.rom"
system: amstrad-cpc
region: [uk]
required: false
size: 16384
md5: 9a293eaaebca601f671070ad56cb81b6
@@ -260,6 +269,7 @@ files:
- name: hacker481fr.rom
path: "private/hacker/hacker481fr.rom"
system: amstrad-cpc
region: [france]
required: false
size: 16384
md5: dfdd9924295f491d54f30569874287f8
+1 -1
View File
@@ -4,7 +4,7 @@ core_classification: enhanced_fork
source: "https://github.com/amadvance/advancemame"
upstream: "https://www.mamedev.org"
profiled_date: "2026-08-08"
source_commit: "21f8f6f79d8a9abe9f23b1a070841963774cf65d"
source_commit: "0f6a7677ad42b4dfdfa36b046f74bef5238d5837"
core_version: "5.0"
mame_version: "0.106"
display_name: "Arcade (AdvanceMAME)"
-3
View File
@@ -148,9 +148,6 @@ files:
path: resources/GameIndex.yaml
required: false
bundled: true
sha1:
- 997fdfb1c1873c1a43972b2984ac0da61fd47b14
- 71fc274cbe27f382afb0324024ebdc6f59aa666d
description: "Game database"
note: "Read from the resources folder, keyed by serial, and carrying the per-game fixes, patches and settings overrides. Parsed into gamedb.cache in the cache folder and reparsed whenever the modification time moves."
source_ref: "aethersx2/pcsx2/GameDatabase.cpp:35-36, aethersx2/pcsx2/GameDatabase.cpp:348-352, aethersx2/pcsx2/GameDatabase.cpp:523-535"
+40 -1
View File
@@ -61,7 +61,7 @@ notes: |
Firmware path resolution: settings.paths.firmware (user override) or
{userData}/ares/Firmware/ (default). Per-system firmware assigned in
Settings > Firmware dialog or via scan-by-hash.
ref: desktop-ui/settings/settings.hpp:87-99, desktop-ui/desktop-ui.cpp:68-75
ref: desktop-ui/settings/settings.hpp:89-101, desktop-ui/desktop-ui.cpp:68-75
Systems with fully embedded firmware (no user files needed):
Game Boy (boot.rom), Game Boy Color (boot.rom), Mega Drive (TMSS),
@@ -93,6 +93,7 @@ files:
- name: colecovision.rom
system: colecovision
required: true
mode: standalone
sha256: "990bf1956f10207d8781b619eb74f89b00d921c8d45c95c334c16c8cceca09ad"
validation: [sha256]
description: "ColecoVision BIOS"
@@ -102,6 +103,7 @@ files:
- name: disksys.rom
system: famicom-disk-system
required: true
mode: standalone
sha256: "fdc1a76e654feea993fcb38366e05ee5f4eb641f86fe6bebaeefd412e112dd72"
validation: [sha256]
description: "Famicom Disk System BIOS"
@@ -111,6 +113,7 @@ files:
- name: gba_bios.bin
system: game-boy-advance
required: true
mode: standalone
sha256: "fd2547724b505f487e6dcb29ec2ecff3af35a841a77ab2e85fd87350abd36570"
validation: [sha256]
description: "GBA BIOS"
@@ -120,6 +123,7 @@ files:
- name: bios.gg
system: game-gear
required: false
mode: standalone
sha256: "8c8a21335038285cfa03dc076100c1f0bfadf3e4ff70796f11f3dfaaab60eee2"
validation: [sha256]
description: "Game Gear BIOS"
@@ -130,6 +134,7 @@ files:
system: master-system
region: [north-america]
required: false
mode: standalone
sha256: "477617917a12a30f9f43844909dc2de6e6a617430f5c9a36306c86414a670d50"
validation: [sha256]
description: "Master System BIOS (US)"
@@ -139,6 +144,7 @@ files:
system: master-system
region: [japan]
required: false
mode: standalone
sha256: "67846e26764bd862f19179294347f7353a4166b62ac4198a5ec32933b7da486e"
validation: [sha256]
description: "Master System BIOS (Japan)"
@@ -148,6 +154,7 @@ files:
system: master-system
region: [europe]
required: false
mode: standalone
sha256: "477617917a12a30f9f43844909dc2de6e6a617430f5c9a36306c86414a670d50"
validation: [sha256]
description: "Master System BIOS (Europe), same binary as US"
@@ -159,6 +166,7 @@ files:
system: mega-cd
region: [north-america]
required: true
mode: standalone
sha256: "fb477cdbf94c84424c2feca4fe40656d85393fe7b7b401911b45ad2eb991258c"
validation: [sha256]
description: "Mega CD / Sega CD BIOS (US)"
@@ -168,6 +176,7 @@ files:
system: mega-cd
region: [japan]
required: true
mode: standalone
sha256: "7133fc2dd2fe5b7d0acd53a5f10f3d00b5d31270239ad20d74ef32393e24af88"
validation: [sha256]
description: "Mega CD BIOS (Japan)"
@@ -177,6 +186,7 @@ files:
system: mega-cd
region: [europe]
required: true
mode: standalone
sha256: "fe608a2a07676a23ab5fd5eee2f53c9e2526d69a28aa16ccd85c0ec42e6933cb"
validation: [sha256]
description: "Mega CD BIOS (Europe)"
@@ -187,6 +197,7 @@ files:
system: mega-ld
region: [north-america]
required: true
mode: standalone
sha256: "e89b5a319f66406611ec82fe5c4aa6827c175a05135bd7bd177366cba0465021"
validation: [sha256]
description: "LaserActive SEGA PAC BIOS (US), v1.04"
@@ -196,6 +207,7 @@ files:
system: mega-ld
region: [japan]
required: true
mode: standalone
sha256: "dca942d977217f703d8d1c6eb1aeb6b32c78ecc421486bbb46c459d385161c94"
validation: [sha256]
description: "LaserActive SEGA PAC BIOS (Japan), v1.02"
@@ -205,6 +217,7 @@ files:
- name: MSX.ROM
system: msx
required: true
mode: standalone
sha256: "413a2b601a94b3792e054be2439cc77a1819cceadbfa9542f88d51c7480f2ef0"
validation: [sha256]
description: "MSX BIOS ROM (Japan)"
@@ -214,6 +227,7 @@ files:
- name: MSX2.ROM
system: msx2
required: true
mode: standalone
sha256: "0c672d86ead61a97f49a583b88b7c1905da120645cd44f0c9f2baf4f4631e0b1"
validation: [sha256]
description: "MSX2 main BIOS ROM (Japan)"
@@ -222,6 +236,7 @@ files:
- name: MSX2EXT.ROM
system: msx2
required: true
mode: standalone
sha256: "6c6f421a10c428d960b7ecc990f99af1c638147f747bddca7b0bf0e2ab738300"
validation: [sha256]
description: "MSX2 sub ROM (Japan)"
@@ -231,6 +246,7 @@ files:
- name: neo-epo.bin
system: neo-geo
required: true
mode: standalone
description: "Neo Geo AES BIOS. Accepts neogeo.zip (extracts neo-epo.bin) or direct file. Byte-swapped on load."
source_ref: "desktop-ui/emulator/neo-geo-aes.cpp:14, mia/system/neo-geo-aes.cpp:16"
@@ -238,6 +254,7 @@ files:
- name: sp-45.sp1
system: neo-geo
required: true
mode: standalone
description: "Neo Geo MVS BIOS. Accepts neogeo.zip (extracts sp-45.sp1) or direct file. Byte-swapped on load."
source_ref: "desktop-ui/emulator/neo-geo-mvs.cpp:15, mia/system/neo-geo-mvs.cpp:16"
@@ -245,6 +262,7 @@ files:
- name: ngp_bios.rom
system: neo-geo-pocket
required: true
mode: standalone
sha256: "0293555b21c4fac516d25199df7809b26beeae150e1d4504a050db32264a6ad7"
validation: [sha256]
description: "Neo Geo Pocket BIOS"
@@ -254,6 +272,7 @@ files:
- name: ngpc_bios.rom
system: neo-geo-pocket-color
required: true
mode: standalone
sha256: "8fb845a2f71514cec20728e2f0fecfade69444f8d50898b92c2259f1ba63e10d"
validation: [sha256]
description: "Neo Geo Pocket Color BIOS"
@@ -264,6 +283,7 @@ files:
system: nintendo-64dd
region: [japan]
required: true
mode: standalone
sha256: "806400ec0df94b0755de6c5b8249d6b6a9866124c5ddbdac198bde22499bfb8b"
validation: [sha256]
description: "Nintendo 64DD IPL ROM (Japan retail)"
@@ -273,6 +293,7 @@ files:
system: nintendo-64dd
region: [north-america]
required: true
mode: standalone
sha256: "e9fec87a45fba02399e88064b9e2f8cf0f2106e351c58279a87f05da5bc984ad"
validation: [sha256]
description: "Nintendo 64DD IPL ROM (US dev kit)"
@@ -281,6 +302,7 @@ files:
- name: 64dd_ipl_DEV.bin
system: nintendo-64dd
required: true
mode: standalone
sha256: "9c2962a8b994a29e4cd04b3a6e4ed730a751414655ab6a9799ebf5fc08b79d44"
validation: [sha256]
description: "Nintendo 64DD IPL ROM (development)"
@@ -290,6 +312,7 @@ files:
- name: syscard1.pce
system: pc-engine-cd
required: true
mode: standalone
sha256: "afe9f27f91ac918348555b86298b4f984643eafa2773196f2c5441ea84f0c3bb"
validation: [sha256]
description: "PC Engine CD-ROM2 System Card v1.0 (Japan). Also used by PC Engine LD."
@@ -298,6 +321,7 @@ files:
- name: syscard3.pce
system: pc-engine-cd
required: true
mode: standalone
sha256: "e11527b3b96ce112a037138988ca72fd117a6b0779c2480d9e03eaebece3d9ce"
validation: [sha256]
description: "Super CD-ROM2 System Card v3.0 (Japan). Also used by SuperGrafx CD as Arcade Card."
@@ -306,6 +330,7 @@ files:
- name: syscard3u.pce
system: pc-engine-cd
required: true
mode: standalone
sha256: "cadac2725711b3c442bcf237b02f5a5210c96f17625c35fa58f009e0ed39e4db"
validation: [sha256]
description: "TurboGrafx-CD Super System Card v3.0 (US)"
@@ -314,6 +339,7 @@ files:
- name: games_express.pce
system: pc-engine-cd
required: true
mode: standalone
sha256: "4b86bb96a48a4ca8375fc0109631d0b1d64f255a03b01de70594d40788ba6c3d"
validation: [sha256]
description: "Games Express CD Card (Japan). Also used by PC Engine LD."
@@ -323,6 +349,7 @@ files:
- name: pac-n10.pce
system: pc-engine-ld
required: true
mode: standalone
sha256: "0e87a3385a27b3a4cac51934819b7eefa5b3d690768d2495633838488cd0e2e4"
validation: [sha256]
description: "NEC PAC-N10 LaserActive module (US)"
@@ -331,6 +358,7 @@ files:
- name: pac-n1.pce
system: pc-engine-ld
required: true
mode: standalone
sha256: "459325690a458baebd77495c91e37c4dddfdd542ba13a821ce954e5bb245627f"
validation: [sha256]
description: "NEC PAC-N1 LaserActive module (Japan)"
@@ -339,6 +367,7 @@ files:
- name: pce-lp1.pce
system: pc-engine-ld
required: true
mode: standalone
sha256: "3f43b3b577117d84002e99cb0baeb97b0d65b1d70b4adadc68817185c6a687f0"
validation: [sha256]
description: "NEC PCE-LP1 LaserActive module (Japan)"
@@ -348,6 +377,7 @@ files:
- name: scph5501.bin
system: sony-playstation
required: true
mode: standalone
sha256: "11052b6499e466bbf0a709b1f9cb6834a9418e66680387912451e971cf8a1fef"
validation: [sha256]
description: "PlayStation BIOS (US)"
@@ -356,6 +386,7 @@ files:
- name: scph5500.bin
system: sony-playstation
required: true
mode: standalone
sha256: "9c0421858e217805f4abe18698afea8d5aa36ff0727eb8484944e00eb5e7eadb"
validation: [sha256]
description: "PlayStation BIOS (Japan)"
@@ -364,6 +395,7 @@ files:
- name: scph5502.bin
system: sony-playstation
required: true
mode: standalone
sha256: "1faaa18fa820a0225e488d9f086296b8e6c46df739666093987ff7d8fd352c09"
validation: [sha256]
description: "PlayStation BIOS (Europe)"
@@ -374,6 +406,7 @@ files:
system: saturn
region: [north-america]
required: true
mode: standalone
description: "Sega Saturn BIOS (US)"
source_ref: "desktop-ui/emulator/saturn.cpp:14"
@@ -381,6 +414,7 @@ files:
system: saturn
region: [japan]
required: true
mode: standalone
description: "Sega Saturn BIOS (Japan)"
source_ref: "desktop-ui/emulator/saturn.cpp:15"
@@ -388,6 +422,7 @@ files:
system: saturn
region: [europe]
required: true
mode: standalone
description: "Sega Saturn BIOS (Europe)"
source_ref: "desktop-ui/emulator/saturn.cpp:16"
@@ -395,6 +430,7 @@ files:
- name: SGB1.sfc
system: super-famicom
required: false
mode: standalone
category: game_data
description: "Super Game Boy cartridge ROM. Loaded via CLI as SFC cartridge alongside GB game."
source_ref: "EmuDeck emuDeckares.sh (launcher)"
@@ -402,6 +438,7 @@ files:
- name: SGB2.sfc
system: super-famicom
required: false
mode: standalone
category: game_data
description: "Super Game Boy 2 cartridge ROM. Loaded via CLI as SFC cartridge alongside GB game."
source_ref: "EmuDeck emuDeckares.sh (launcher)"
@@ -409,6 +446,7 @@ files:
- name: STBIOS.bin
system: super-famicom
required: false
mode: standalone
category: game_data
description: "SuFami Turbo adapter BIOS. Loaded via CLI as SFC cartridge alongside SuFami games."
source_ref: "EmuDeck emuDeckares.sh (launcher)"
@@ -416,6 +454,7 @@ files:
- name: BS-X.bin
system: super-famicom
required: false
mode: standalone
category: game_data
description: "Satellaview BS-X Town cartridge ROM. Loaded via CLI as SFC cartridge for BS games."
source_ref: "EmuDeck emuDeckares.sh (launcher)"
-9
View File
@@ -272,8 +272,6 @@ files:
standalone_path: resources/GameIndex.yaml
required: false
bundled: true
sha1: 72bfdf91fa11a86e2810a7c167cdcf11e20418a8
size: 2690355
description: "Game database"
note: >-
Read from the resources folder, keyed by serial, carrying the per-game
@@ -299,8 +297,6 @@ files:
standalone_path: resources/RedumpDatabase.yaml
required: false
bundled: true
sha1: bf2c73d668cd671df8adfe2ec3c7074e8ba9176a
size: 1917242
description: "Disc track hash database"
note: >-
Loaded on the first hash lookup and used to tell the user whether a dump
@@ -312,8 +308,6 @@ files:
standalone_path: resources/patches.zip
required: false
bundled: true
sha1: f7d0f1606c87019f00109ebdf0f260299f0a72da
size: 2007224
description: "Game patch archive"
note: >-
Per-game pnach entries matched on serial and disc CRC. The patches and
@@ -506,7 +500,6 @@ files:
- name: cas.glsl
path: pcsx2/resources/shaders/vulkan/cas.glsl
standalone_path: resources/shaders/vulkan/cas.glsl
sha1: "005cecf1a5e20b05407d55d0aad22cf81ad66c31"
required: false
bundled: true
description: "Vulkan contrast adaptive sharpening shader"
@@ -794,8 +787,6 @@ files:
standalone_path: resources/sounds/achievements/unlock.wav
required: false
bundled: true
sha1: da328a0a3074ec86fee2d6741bfc2e5a1f68d063
size: 202702
description: "Achievement unlock sound"
source_ref: "pcsx2/Achievements.cpp:69, pcsx2/Achievements.cpp:1278-1284, pcsx2/Achievements.cpp:1581"
+2 -4
View File
@@ -38,10 +38,8 @@ files:
system: nintendo-3ds
required: false
hle_fallback: true
sha1: "5fab786695311433602028cd89898689c5df0898"
md5: "cb52d323b13129a2f0bc3e3e911e567f"
note: "embedded encrypted fallback if missing: default_keys_enc, AES-CBC with a zero key and IV; the hashes are those of the decrypted text without its PKCS#7 block"
source_ref: "src/core/hw/aes/key.cpp:283-300, src/common/common_paths.h:83, src/core/hw/default_keys.h:4-5"
note: "embedded encrypted fallback if missing"
source_ref: "src/core/hw/aes/key.cpp:283, src/common/common_paths.h:83"
- name: shared_font.bin
path: sysdata/shared_font.bin
+2 -4
View File
@@ -56,10 +56,8 @@ files:
system: nintendo-3ds
required: false
hle_fallback: true
sha1: "5288772be438b86978a801e6dcb14228ad3a20af"
md5: "4812e96097b7fc1bdd7b40366208b7a7"
note: "AES key slots, common keys and NFC secrets; embedded encrypted blob used if missing: default_keys_enc, AES-CBC with a zero key and IV, the hashes are those of the decrypted text"
source_ref: "src/core/hw/aes/key.cpp:225-364, src/core/hw/aes/key.cpp:473-613, src/core/hw/default_keys.h:11"
note: "AES key slots, common keys and NFC secrets; embedded encrypted blob used if missing"
source_ref: "src/core/hw/aes/key.cpp:225-364, src/core/hw/aes/key.cpp:473-613"
- name: aes_keys.txt
path: sysdata/aes_keys.txt
+8 -10
View File
@@ -110,8 +110,7 @@ files:
md5: 5daed103918277e2065dd7e8d23e57a5
sha1: 7e3c536baeae84d6498a14e8405319e01ee78232
max_size: 131072
note: "Paged ROM slot, read by the BeebReadRoms bank loop (Src/BeebMem.cpp:1322-1356)."
source_ref: "Src/RomConfigFile.cpp:45"
source_ref: "Src/RomConfigFile.cpp:45, Src/BeebMem.cpp:1322-1356"
- name: OS12.map
path: BeebFile/BBC/OS12.map
@@ -294,8 +293,8 @@ files:
md5: 9087f772447038a00178488b3591347b
sha1: 04d5876999f93fc61a18f172b1fbb3b75db733ac
validation: [size]
note: "OS ROM slot for Model::Master128, read into 0xC000 by BeebReadRoms (Src/BeebMem.cpp:1291-1308)."
source_ref: "Src/RomConfigFile.cpp:103"
note: "OS ROM slot for Model::Master128."
source_ref: "Src/RomConfigFile.cpp:103, Src/BeebMem.cpp:1291-1308"
- name: Terminal.rom
path: BeebFile/M128/Terminal.rom
@@ -551,8 +550,8 @@ files:
validation: [size]
note: >
512 KB on-board flash carrying the system software and BASIC. Rejected as
InvalidROM unless the file is exactly 0x80000 bytes (Src/SprowCoPro.h:49).
source_ref: "Src/SprowCoPro.cpp:51-90, Src/BeebWin.cpp:1058-1088"
InvalidROM unless the file is exactly 0x80000 bytes.
source_ref: "Src/SprowCoPro.cpp:51-90, Src/SprowCoPro.h:49, Src/BeebWin.cpp:1058-1088"
# -- Program directory files --
@@ -686,8 +685,8 @@ files:
size: 6716
md5: 07b0e1d4cb329185a8a52c48db00bcf9
sha1: 5817277bcb110b747432b8716a0ffbe0c1e13de2
note: "Read at ApplyPreferences by ReadKeyMap (Src/KeyMap.cpp:65-123). The return value is ignored, leaving the built-in map."
source_ref: "Src/BeebWin.cpp:560-563"
note: "Read at ApplyPreferences. The return value is ignored, leaving the built-in map."
source_ref: "Src/BeebWin.cpp:560-563, Src/KeyMap.cpp:65-78"
- name: Default.kmap
description: "Default keyboard mapping"
@@ -697,8 +696,7 @@ files:
size: 6716
md5: 199de64bdb59a176d102f03cca4eadf9
sha1: 63c72e11f6ce8cd9dc5ebb96b4938010f4b2e4f0
note: "Parsed by ReadKeyMap (Src/KeyMap.cpp:65-123)."
source_ref: "Src/BeebWin.cpp:565-567"
source_ref: "Src/BeebWin.cpp:565-567, Src/KeyMap.cpp:65-78"
- name: DefaultUser.kmap
description: "Fallback user keyboard mapping"
+6
View File
@@ -23,6 +23,7 @@ notes: >
files:
- name: "syscard3.pce"
description: "CD-ROM System Card 3.0 (Japan)"
region: [japan]
required: true
sha1: "79f5ff55dd10187c7fd7b8daab0b3ffbd1f56a2c"
md5: "38179df8f4ac870017db21ebcbf53114"
@@ -31,6 +32,7 @@ files:
- name: "syscard3u.pce"
description: "CD-ROM System Card 3.0 (US / TurboGrafx-CD)"
region: [north-america]
required: false
sha1: "d02611d99921986147c753df14c7349b31d71950"
md5: "0754f903b52e3b3342202bdafb13efa5"
@@ -39,6 +41,7 @@ files:
- name: "syscard2.pce"
description: "CD-ROM System Card 2.0 (Japan)"
region: [japan]
required: false
sha1: "88da02e2503f7c32810f5d93a34849d470742b6d"
md5: "3cdd6614a918616bfc41c862e889dd79"
@@ -47,6 +50,7 @@ files:
- name: "syscard2u.pce"
description: "CD-ROM System Card 2.0 (US / TurboGrafx-CD)"
region: [north-america]
required: false
sha1: "2bea3dac98f84b2f2f469fa77ea720b8770d598d"
md5: "94279f315e8b52904f65ab3108542afe"
@@ -55,6 +59,7 @@ files:
- name: "syscard1.pce"
description: "CD-ROM System Card 1.0 (Japan)"
region: [japan]
required: false
sha1: "a39a66da7de6ba94ab84d04eef7afeec7d4ee66a"
md5: "2b7ccb3d86baa18f6402c176f3065082"
@@ -63,6 +68,7 @@ files:
- name: "gexpress.pce"
description: "Games Express CD Card"
region: [japan]
required: false
sha1: "014881a959e045e00f4db8f52955200865d40280"
md5: "6d2cb14fc3e1f65ceb135633d1694122"
+4 -1
View File
@@ -81,7 +81,7 @@ files:
- name: "scph5502.bin"
description: "SCPH-5502, 5552 (v3.0 01-06-97 E)"
region: [europe, oceania]
region: [europe]
required: true
hle_fallback: true
size: 524288
@@ -101,6 +101,7 @@ files:
- name: "psxonpsp660.bin"
description: "PSP embedded PS1 BIOS (region-free override)"
region: [world]
required: false
size: 524288
sha1: "96880d1ca92a016ff054be5159bb06fe03cb4e14"
@@ -113,6 +114,7 @@ files:
- name: "ps1_rom.bin"
description: "PS3 embedded PS1 BIOS, first 512KB extracted (region-free override)"
region: [world]
required: false
sha1: "c40146361eb8cf670b19fdc9759190257803cab7"
md5: "81bbe60ba7a3d1cea1d48c14cbcc647b"
@@ -124,6 +126,7 @@ files:
- name: "openbios.bin"
description: "OpenBIOS (open-source PS1 HLE BIOS, region-free override)"
region: [world]
required: false
size: 524288
mode: libretro
+1 -1
View File
@@ -14,7 +14,7 @@ notes: |
Libretro port of Mednafen's Virtual Boy emulation module.
No external BIOS or firmware files. The Virtual Boy has no boot
ROM; the V810 CPU executes directly from the game ROM mapped at
0x07000000. Load() in libretro.cpp:1810 takes only ROM data.
0x07000000. Load() in libretro.cpp:1833 takes only ROM data.
Upstream Mednafen supports an optional vb.pal palette file
(Documentation/vb.html); the libretro port handles palette via
core options instead.
+3
View File
@@ -406,6 +406,7 @@ files:
- name: KANJI.rom
path: "Machines/Shared Roms/KANJI.rom"
region: [japan]
size: 262144
required: false
note: "Kanji font ROM (256 KB). Used by MSX2+, turboR, and Japanese MSX2 machines."
@@ -413,6 +414,7 @@ files:
- name: MSXKANJI.rom
path: "Machines/Shared Roms/MSXKANJI.rom"
region: [japan]
size: 32768
required: false
note: "MSX-Kanji driver ROM. Used by MSX2+, turboR, and Japanese MSX2 for kanji display."
@@ -454,6 +456,7 @@ files:
- name: HANGUL.rom
path: "Machines/Shared Roms/HANGUL.rom"
region: [south-korea]
size: 131072
required: false
note: "Korean Hangul font ROM (128 KB)."
+5 -6
View File
@@ -14,14 +14,13 @@ notes: >
Doom 3 source port based on dhewm3 (GPL Doom 3 engine). The core accepts
.pk4 extensions (retro_get_system_info sets valid_extensions = "pk4").
Content is loaded directly from the .pk4 file path - the engine extracts
the grandparent directory as fs_basepath (libretro.cpp:2381,2449-2450
the grandparent directory as fs_basepath (libretro.cpp:1097,1135-1136
via extract_directory called twice on info->path) and expects the standard
Doom 3 directory layout with base/ containing pak000.pk4 through pak008.pk4.
BASE_GAMEDIR is hardcoded to "base" (Licensee.h:58). One binary serves both
games: content in a directory named d3xp, or the doom_game core option,
passes "+set fs_game d3xp" (libretro.cpp:1635-1643, 2384-2405) to load the
Resurrection of Evil expansion from a d3xp/ subdirectory alongside base/.
The filesystem code (FileSystem.cpp:2207)
BASE_GAMEDIR is hardcoded to "base" (Licensee.h:58). The boom3_xp variant
compiles with _D3XP defined, which passes "+set fs_game d3xp" at startup
(libretro.cpp:538-544) to load the Resurrection of Evil expansion from a
d3xp/ subdirectory alongside base/. The filesystem code (FileSystem.cpp:2125)
scans for .pk4 files in the game directory and loads them in order, with
higher-numbered paks overriding lower ones. The core requires OpenGL
(RETRO_ENVIRONMENT_SET_HW_RENDER) and XRGB8888 pixel format. All required
+5 -5
View File
@@ -36,7 +36,7 @@ files:
mode: standalone
size: 256
note: "Original Nintendo DMG boot ROM"
source_ref: "src/gb.rs:1416, src/data.rs:14"
source_ref: "src/gb.rs:1516, src/data.rs:14"
- name: sgb_boot.bin
system: nintendo-gb
@@ -45,7 +45,7 @@ files:
mode: standalone
size: 256
note: "Super Game Boy boot ROM"
source_ref: "src/gb.rs:1417, src/data.rs:29"
source_ref: "src/gb.rs:1517, src/data.rs:29"
- name: dmg_bootix.bin
system: nintendo-gb
@@ -54,7 +54,7 @@ files:
mode: standalone
size: 256
note: "Open-source DMG boot ROM from Bootix (default DMG)"
source_ref: "src/gb.rs:1418, src/data.rs:44"
source_ref: "src/gb.rs:1518, src/data.rs:44"
- name: mgb_bootix.bin
system: nintendo-gb
@@ -63,7 +63,7 @@ files:
mode: standalone
size: 256
note: "Open-source MGB (Pocket) boot ROM from Bootix"
source_ref: "src/gb.rs:1419, src/data.rs:59"
source_ref: "src/gb.rs:1519, src/data.rs:59"
- name: cgb_boot.bin
system: nintendo-gbc
@@ -81,4 +81,4 @@ files:
mode: standalone
size: 2304
note: "Custom open-source CGB boot ROM (default CGB)"
source_ref: "src/gb.rs:1421, src/data.rs:177"
source_ref: "src/gb.rs:1484, src/data.rs:177"
+1 -1
View File
@@ -90,7 +90,7 @@ files:
md5: 25629dfe870d097469c217b95fdc1c95
sha1: 39102c8e9cb55fcc0b9b62098780ed4a3cb6a4bb
note: "AMSDOS disc ROM, shipped cap32.cfg sets slot07=DEFAULT, skipped on the 464; missing file clears the slot"
source_ref: "src/cap32.cpp:1170-1178, src/cap32.cpp:1245-1249, cap32.cfg:205-206, 215, rom/amsdos.rom"
source_ref: "src/cap32.cpp:1170-1178, src/cap32.cpp:1245-1249, cap32.cfg:215, rom/amsdos.rom"
- name: system.cpr
system: amstrad-cpc
required: false
+8 -4
View File
@@ -24,26 +24,30 @@ mode: standalone
files:
- name: "prod.keys"
required: true
path: "switch/prod.keys"
path: "switch/"
mode: standalone
note: "Production keys for NCA decryption (master, key area, header, titlekek)"
source_ref: "src/core/crypto/key_manager.cpp:655-656"
- name: "title.keys"
required: false
path: "switch/title.keys"
path: "switch/"
mode: standalone
note: "Per-title encryption keys (rights_id to titlekey mappings)"
source_ref: "src/core/crypto/key_manager.cpp:659-660"
- name: "console.keys"
required: false
path: "switch/console.keys"
path: "switch/"
mode: standalone
note: "Console-specific keys (BIS, SD seed)"
source_ref: "src/core/crypto/key_manager.cpp:661-662"
- name: "key_retail.bin"
required: false
path: "switch/key_retail.bin"
path: "switch/"
size: 160
mode: standalone
note: "Amiibo decryption keys (two InternalKey structs, 0x50 bytes each)"
source_ref: "src/core/hle/service/nfc/common/amiibo_crypto.cpp:274-292"
+118 -100
View File
File diff suppressed because it is too large. Load diff
+5
View File
@@ -169,6 +169,7 @@ files:
- name: CPC6128.ROM.UK
path: "ROM/National/CPC6128.ROM.UK"
system: amstrad-cpc
region: [uk]
required: false
min_size: 32768
validation: [size, signature]
@@ -182,6 +183,7 @@ files:
- name: CPC6128.ROM.FR
path: "ROM/National/CPC6128.ROM.FR"
system: amstrad-cpc
region: [france]
required: false
min_size: 32768
validation: [size, signature]
@@ -193,6 +195,7 @@ files:
- name: CPC6128.ROM.ES
path: "ROM/National/CPC6128.ROM.ES"
system: amstrad-cpc
region: [spain]
required: false
min_size: 32768
validation: [size, signature]
@@ -204,6 +207,7 @@ files:
- name: CPC6128.ROM.DK
path: "ROM/National/CPC6128.ROM.DK"
system: amstrad-cpc
region: [denmark]
required: false
min_size: 32768
validation: [size, signature]
@@ -215,6 +219,7 @@ files:
- name: CPC6128.ROM.SE
path: "ROM/National/CPC6128.ROM.SE"
system: amstrad-cpc
region: [sweden]
required: false
min_size: 32768
validation: [size, signature]
+3 -3
View File
@@ -28,11 +28,11 @@ notes: |
- ROMEXT[0] (upper ROM slot 0, 16KB): second half of cpc6128_bin (BASIC)
- ROMEXT[7] (upper ROM slot 7, 16KB): romdisc_bin (AMSDOS)
Called from HardResetCPC() (crocods-core/platform.c:1024-1035) using
Called from HardResetCPC() (crocods-core/platform.c:1009-1020) using
the extern byte arrays directly. No filesystem ROM loading exists in
the libretro path.
A Multiface ROM loader exists (crocods-core/multiface.c:53-64) that
A Multiface ROM loader exists (crocods-core/multiface.c:51-61) that
reads LocRomMulti via fopen(), but InitMultiface() is never called
from the libretro build or platform.c. Dead code in libretro context.
@@ -45,7 +45,7 @@ files: []
platform_details:
bios_mapping:
source_ref: "crocods-core/vga.c:185-200, crocods-core/platform.c:1024-1035"
source_ref: "crocods-core/vga.c:185-200, crocods-core/platform.c:1009-1020"
note: |
All ROMs are embedded. InitMemCPC() copies cpc6128_bin and romdisc_bin
into ROMINF and ROMEXT arrays via memcpy. No filesystem lookup occurs.
+2 -3
View File
@@ -84,8 +84,7 @@ files:
sha1: "69b3544d992a23e8b736c61837914a4d1b4e7bb5"
description: "Gemei A330 firmware update archive, V1.1 build3 of 2011-02-13"
note: >-
Mounted when an A330 package loads
(crates/dingooemu-core/src/a330/runtime.rs:415-418): the content's directory is
Mounted when an A330 package loads: the content's directory is
scanned and the first entry whose extension is hxf, in any case, is
read whole. The file must start with WADF0100 and declare at offset
20 a size within its own length; each record is a u32 name length,
@@ -99,4 +98,4 @@ files:
goes on. The image itself is never hashed, and the hashes here name
the last firmware Gemei published; the V1.10 image of 2011-01-25
indexes the same way.
source_ref: "crates/dingooemu-core/src/a330/firmware_archive.rs:16-50, 54-58, 63-96, 117-124, crates/dingooemu-core/src/a330/runtime/sdk_hle/files.rs:108-133"
source_ref: "crates/dingooemu-core/src/a330/runtime.rs:415-418, crates/dingooemu-core/src/a330/firmware_archive.rs:16-50, 54-58, 63-96, 117-124, crates/dingooemu-core/src/a330/runtime/sdk_hle/files.rs:108-133"
+5 -5
View File
@@ -135,8 +135,8 @@ files:
required: false
hle_fallback: true
size: 8192
validation: [size, adler32]
known_hash_adler32: ["0x66f334fe", "0x128ea7a2"]
validation: [size]
known_hash_adler32: "0x66f334fe"
adler32_byteswap: true
description: "DSP instruction ROM"
note: "DSP LLE only, and LLE aborts when the file is absent or not 8192 bytes. The adler32 is taken over the byte-swapped image and the value here is the Nintendo pair; five replacement pairs are also accepted."
@@ -147,12 +147,12 @@ files:
required: false
hle_fallback: true
size: 4096
validation: [size, adler32]
known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
validation: [size]
known_hash_adler32: "0xf3b93527"
adler32_byteswap: true
description: "DSP coefficient ROM"
note: "Read by DSP LLE alongside the instruction ROM, and by the AX ucode under HLE for polyphase resampling, which drops any file that is not 0x1000 bytes and plays on without it."
source_ref: "Source/Core/Common/CommonPaths.h:109, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:120-152, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:45-70, Source/Core/Core/DSP/DSPCore.h:49, Source/Core/Core/DSP/DSPCore.cpp:38-105"
source_ref: "Source/Core/Common/CommonPaths.h:109, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:120-152, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:45-70, Source/Core/Core/DSP/DSPCore.h:49"
- name: codehandler.bin
path: null
+5 -5
View File
@@ -171,8 +171,8 @@ files:
required: false
hle_fallback: true
size: 8192
validation: [size, adler32]
known_hash_adler32: ["0x66f334fe", "0xe789b5a5"]
validation: [size]
known_hash_adler32: "0x66f334fe"
adler32_byteswap: true
description: "DSP instruction ROM"
note: "DSP LLE only, and a file that is absent or not 8192 bytes fails initialisation, which aborts the emulation thread. The adler32 is taken over the byte-swapped image and the value here is the Nintendo pair; six replacement pairs are also accepted."
@@ -183,12 +183,12 @@ files:
required: false
hle_fallback: true
size: 4096
validation: [size, adler32]
known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
validation: [size]
known_hash_adler32: "0xf3b93527"
adler32_byteswap: true
description: "DSP coefficient ROM"
note: "Read by DSP LLE alongside the instruction ROM, and by the AX ucode under HLE for polyphase resampling, which drops any file that is not 0x1000 bytes and plays on without it."
source_ref: "Source/Core/Common/CommonPaths.h:121, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-120, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:42-69, Source/Core/Core/DSP/DSPCore.h:58, Source/Core/Core/DSP/DSPCore.cpp:28-102"
source_ref: "Source/Core/Common/CommonPaths.h:121, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-105, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:107-120, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:42-69, Source/Core/Core/DSP/DSPCore.h:58"
- name: codehandler.bin
path: null
+11 -11
View File
@@ -67,22 +67,22 @@ files:
size: 8192
required: false
hle_fallback: true
validation: [size, adler32]
known_hash_adler32: ["0x66f334fe", "0xe789b5a5"]
validation: [size]
known_hash_adler32: "0x66f334fe"
adler32_byteswap: true
note: "DSP instruction ROM for LLE audio. Free replacement (v0.4) included"
source_ref: "Source/Core/Common/CommonPaths.h:136, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:84-117, Source/Core/Core/DSP/DSPCore.cpp:28-102"
source_ref: "Source/Core/Common/CommonPaths.h:136, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:84-117"
- name: "dsp_coef.bin"
path: "GC/dsp_coef.bin"
size: 4096
required: false
hle_fallback: true
validation: [size, adler32]
known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
validation: [size]
known_hash_adler32: "0xf3b93527"
adler32_byteswap: true
note: "DSP coefficient ROM for LLE audio and HLE polyphase resampling. Free replacement included"
source_ref: "Source/Core/Common/CommonPaths.h:137, Source/Core/Core/DSP/DSPCore.cpp:32-33, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:55-62, Source/Core/Core/DSP/DSPCore.cpp:28-102"
source_ref: "Source/Core/Common/CommonPaths.h:137, Source/Core/Core/DSP/DSPCore.cpp:32-33, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:55-62"
# -- GameCube Fonts --
# Bundled free alternatives exist but have padding differences causing misplaced text.
@@ -148,7 +148,7 @@ files:
required: false
hle_fallback: true
note: "BootMii NAND backup. Can be imported to populate Wii NAND with channels, saves, system menu"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:27-45,47-92"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:26-39,42-89"
- name: "keys.bin"
path: null
@@ -156,7 +156,7 @@ files:
required: false
hle_fallback: true
note: "OTP/SEEPROM dump (Wii encryption keys). Needed if not appended to nand.bin for NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:20, Source/Core/DiscIO/NANDImporter.cpp:77-91, Source/Core/DiscIO/NANDImporter.h:35-38"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:20, Source/Core/DiscIO/NANDImporter.cpp:82-94, Source/Core/DiscIO/NANDImporter.h:46"
# -- Wii SD Card Image --
- name: "WiiSD.raw"
@@ -189,21 +189,21 @@ files:
required: false
hle_fallback: true
note: "SSL client certificate. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:220-304"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:239-323"
- name: "clientcakey.pem"
path: "Wii/clientcakey.pem"
required: false
hle_fallback: true
note: "SSL client private key. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:256"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:275"
- name: "rootca.pem"
path: "Wii/rootca.pem"
required: false
hle_fallback: true
note: "SSL root CA certificate. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:257"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:276"
# -- Realtek Bluetooth firmware (Wiimote passthrough) --
# Required for real Wiimote connectivity via USB Bluetooth adapters with Realtek chipsets.
+2 -2
View File
@@ -1,8 +1,8 @@
emulator: DOSBox Pure Unleashed
type: standalone
core_classification: official_port
source: "https://codeberg.org/schelling/dosbox-pure-unleashed"
upstream: "https://codeberg.org/schelling/dosbox-pure"
source: "https://github.com/schellingb/dosbox-pure-unleashed"
upstream: "https://github.com/schellingb/dosbox-pure"
source_commit: "4a11412248ca4c862751a7d9e6818023795031e9"
upstream_commit: "7f6e8fb7385fa446d1444d671063268520bf9b54"
logo: "https://raw.githubusercontent.com/schellingb/dosbox-pure-unleashed/main/images/logo.png"
+1 -1
View File
@@ -16,7 +16,7 @@ notes: |
ref: src/gui/midi_mt32.cpp:35,51-66
MUNT identifies ROMs by SHA1+size (libretro/deps/munt/mt32emu/src/ROMInfo.cpp:171-180).
FluidSynth reads .sf2/.sf3/.dls/.gig from system/soundfonts/.
ref: libretro/src/libretro.cpp:1099-1110
ref: libretro/src/libretro.cpp:1112-1123
BASSMIDI reads .sf2/.sfz from system/soundfonts/, requires BASS +
BASSMIDI shared libs in system dir (dlopen'd at runtime).
ref: libretro/src/midi_bassmidi.cpp:232-254
+14 -87
View File
@@ -2,54 +2,41 @@ emulator: DOSBox Pure
type: standalone + libretro
core_classification: enhanced_fork
source: "https://github.com/libretro/dosbox-pure"
upstream: "https://codeberg.org/schelling/dosbox-pure"
upstream: "https://github.com/schellingb/dosbox-pure"
logo: "https://raw.githubusercontent.com/schellingb/dosbox-pure/main/images/logo.png"
profiled_date: "2026-03-23"
source_commit: "cdaea10ce8cac231bc341ca05d4c5e4e5fe0fbd5"
core_version: "1.0-preview7"
source_commit: "a4a0bab7f8931433588f2fcad9045c85b277373d"
core_version: "1.0-preview5"
display_name: "DOS (DOSBox-Pure)"
cores: [dosbox_pure]
systems: [dos]
verification: sha1
notes: |
No BIOS required. MT-32, Sound Canvas and SoundFont support is optional for
MIDI music.
No BIOS required. MT-32 and SoundFont support is optional for MIDI music.
ROM scanning (both modes):
Recursive scan of system directory for *_CONTROL.ROM and *.SF2/*.SF3.
ref: dosbox_pure_libretro.cpp:1399-1410
MT-32 requires matched pair: *_CONTROL.ROM + *_PCM.ROM (PCM name derived
from CONTROL name by replacing CONTROL with PCM, preserving case).
ref: src/gui/midi_mt32.h:189-199
ref: midi_mt32.h:189-199
ZIP archives also supported — scanned for files by size (65536/131072 =
control, 524288/1048576 = PCM), not by name.
ref: src/gui/midi_mt32.h:160-166
Files can also be on mounted C: drive (DOSBOX.SF2, MT32_CONTROL.ROM,
ROM1.BIN).
ref: dosbox_pure_libretro.cpp:2806-2813
ref: midi_mt32.h:160-166
Files can also be on mounted C: drive (DOSBOX.SF2, MT32_CONTROL.ROM).
ref: dosbox_pure_libretro.cpp:2803-2805
Cache file DOSBoxPureMidiCache.txt written when scan >2s.
ref: dosbox_pure_libretro.cpp:1449-1464
Sound Canvas: the scan also lists every file whose name ends in ROM1.BIN,
WAVEROM1.BIN excepted, as "Sound Canvas SC-55". Selected, the Nuked-SC55
driver opens it at exactly 32768 bytes, then ROM2, ROM2_ST, ROM_SM,
WAVEROM1, WAVEROM2 and WAVEROM3 beside it, spelled with the capitalization
and extension of ROM1.BIN. Each file fills the slot its size names. Byte 67
of ROM1 selects the model, SC-55mkII/SC-55st, SC-55/SC-155, CM-300/SCC-1,
JV-880 or SCB-55, and the sizes the other ROMs must have. The driver does
not open without ROM1 and ROM2.
ref: dosbox_pure_libretro.cpp:1405, src/gui/midi_sc55.h:38-47,
src/gui/midi_sc55.h:71-95, src/gui/midi_sc55.h:97-134
ref: dosbox_pure_libretro.cpp:1425-1445
Bundled MUNT (header-only mt32emu.h) for MT-32 emulation.
SHA1+size validation at load: unrecognized ROMs rejected (Synth::open fails).
ref: src/gui/mt32emu.h:2982-2988,3016-3019,5183-5187
ref: mt32emu.h:2982-2988,3016-3019,5183-5187
12 full control ROMs + 2 PCM ROMs supported (no split ROMs in this MUNT).
TinySoundFont (tsf.h) for SF2/SF3 playback.
No firmware entries in .info file — all MIDI files optional.
DBP_STANDALONE build mode exists (same MIDI logic, different I/O layer).
ref: dosbox_pure_libretro.cpp:81,1588,2302
ref: dosbox_pure_libretro.cpp:81,1590,2302
files:
# -- MT-32 Control ROMs (64 KB) --
@@ -181,7 +168,7 @@ files:
note: >
accepted by every MT-32 control ROM, v1.x and v2.x. Each control ROM
fixes the PCM size it accepts through its pcmCount: 128 requires this
524288 byte image. ref: src/gui/mt32emu.h:2586-2598,3167,3025
524288 byte image. ref: mt32emu.h:2586-2598,3167,3025
- name: "CM32L_PCM.ROM"
description: "CM-32L/CM-64/LAPC-I PCM ROM"
@@ -196,7 +183,7 @@ files:
accepted by the CM-32L and CM-32LN control ROMs, which carry pcmCount
256 and require this 1048576 byte image. The alias covers the name
derived from CM32LN_CONTROL.ROM.
ref: src/gui/mt32emu.h:2586-2598,3167,3025, src/gui/midi_mt32.h:194-195
ref: mt32emu.h:2586-2598,3167,3025, midi_mt32.h:194-195
# -- General MIDI SoundFont --
@@ -204,68 +191,8 @@ files:
description: "General MIDI SoundFont (any .sf2/.sf3 accepted)"
required: false
hle_fallback: true
source_ref: "dosbox_pure_libretro.cpp:1405 (scan classifies .SF* as a SoundFont), dosbox_pure_libretro.cpp:2495-2499 (path taken from the system directory), dosbox_pure_libretro.cpp:2806-2813 (auto-detected on the mounted C: drive)"
source_ref: "dosbox_pure_libretro.cpp:1410 (scan classifies .SF* as a SoundFont), dosbox_pure_libretro.cpp:2492-2495 (path taken from the system directory), dosbox_pure_libretro.cpp:2803-2805 (auto-detected on the mounted C: drive)"
note: >
Any .SF2 or .SF3 file in the system directory works. The core lists all
found SoundFonts in the MIDI config dropdown. DOSBOX.SF2 is the conventional
name and is also auto-detected when placed inside game content on C: drive.
# -- Roland SC-55 family ROMs (Nuked-SC55 driver) --
- name: "ROM1.BIN"
path: "SC-55/ROM1.BIN"
aliases: ["rom1.bin"]
description: "SC-55 family program ROM 1"
required: false
size: 32768
validation: [size]
source_ref: "dosbox_pure_libretro.cpp:1405, src/gui/midi_sc55.h:71-75, src/gui/midi_sc55.h:97-101"
note: >-
Any name ending in ROM1.BIN anywhere under the system directory is
listed; byte 67 selects the emulated model.
- name: "ROM2.BIN"
path: "SC-55/ROM2.BIN"
aliases: ["rom2.bin", "ROM2_ST.BIN", "rom2_st.bin"]
description: "SC-55 family program ROM 2"
required: false
size: [262144, 524288]
validation: [size]
source_ref: "src/gui/midi_sc55.h:41, src/gui/midi_sc55.h:78-93, src/gui/midi_sc55.h:95"
note: "The driver does not open without ROM1 and ROM2. ROM2_ST fills the same slot when ROM2 did not."
- name: "ROM_SM.BIN"
path: "SC-55/ROM_SM.BIN"
aliases: ["rom_sm.bin"]
description: "SC-55mkII/SC-55st sub-MCU ROM"
required: false
size: 4096
validation: [size]
source_ref: "src/gui/midi_sc55.h:42, src/gui/midi_sc55.h:78-93, src/gui/midi_sc55.h:113-116"
- name: "WAVEROM1.BIN"
path: "SC-55/WAVEROM1.BIN"
aliases: ["waverom1.bin"]
description: "SC-55 family wave ROM 1"
required: false
size: [1048576, 2097152]
validation: [size]
source_ref: "src/gui/midi_sc55.h:43-45, src/gui/midi_sc55.h:78-93, src/gui/midi_sc55.h:111-134"
- name: "WAVEROM2.BIN"
path: "SC-55/WAVEROM2.BIN"
aliases: ["waverom2.bin"]
description: "SC-55 family wave ROM 2"
required: false
size: [1048576, 2097152]
validation: [size]
source_ref: "src/gui/midi_sc55.h:43-45, src/gui/midi_sc55.h:78-93, src/gui/midi_sc55.h:111-134"
- name: "WAVEROM3.BIN"
path: "SC-55/WAVEROM3.BIN"
aliases: ["waverom3.bin"]
description: "SC-55/SC-155/CM-300 wave ROM 3"
required: false
size: 1048576
validation: [size]
source_ref: "src/gui/midi_sc55.h:43-45, src/gui/midi_sc55.h:78-93, src/gui/midi_sc55.h:117-125"
+31 -31
View File
@@ -30,7 +30,7 @@ notes: |
only by the two settings screens, which fall back to the real filename when it
is null.
ref: src/core/bios.h:41-43 (field declarations)
ref: src/duckstation-qt/biossettingswidget.cpp:149, src/core/fullscreenui_settings.cpp:3281
ref: src/duckstation-qt/biossettingswidget.cpp:149, src/core/fullscreenui_settings.cpp:3301
Lower priority = preferred. PS2 deprioritized (>= 100) for dynamic fast boot.
Late PAL deprioritized (>= 150) due to additional regional checks.
OpenBIOS detected by signature at offset 0x78, not by hash.
@@ -67,7 +67,7 @@ files:
- name: "scph1002a.bin"
description: "SCPH-1002, DTL-H1002 (v2.0 05-10-95 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "54847e693405ffeb0359c6287434cbef"
region_check: false
@@ -77,7 +77,7 @@ files:
- name: "scph1002b.bin"
description: "SCPH-1002, DTL-H1102 (v2.1 07-17-95 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "417b34706319da7cf001e76e40136c23"
region_check: false
@@ -87,7 +87,7 @@ files:
- name: "scph1002c.bin"
description: "SCPH-1002, DTL-H1202, H3002 (v2.2 12-04-95 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "e2110b8a2b97a8e0b857a45d32f7e187"
region_check: false
@@ -177,7 +177,7 @@ files:
- name: "scph5502.bin"
description: "SCPH-5502, 5552 (v3.0 01-06-97 E)"
region: [europe, oceania]
region: [europe]
required: true
md5: "32736f17079d0b2b7024407c39bd3050"
region_check: false
@@ -217,7 +217,7 @@ files:
- name: "scph7002.bin"
description: "SCPH-7002, 7502, 9002 (v4.1 12-16-97 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "b9d9a0286c33dc6b7237bb13cd46fdee"
region_check: false
@@ -257,7 +257,7 @@ files:
- name: "scph102_v44.bin"
description: "SCPH-102 (v4.4 03-24-00 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "b10f5e0e3d9eb60e5159690680b1e774"
region_check: true
@@ -267,7 +267,7 @@ files:
- name: "scph102_v45.bin"
description: "SCPH-102 (v4.5 05-25-00 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "de93caec13d1a141a40a79f5c86168d6"
region_check: true
@@ -301,7 +301,7 @@ files:
- name: "ps2_scph30003.bin"
description: "PS2, SCPH-30003 (v5.0 09-02-00 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "71f50ef4f4e17c163c78908e16244f7d"
region_check: true
@@ -391,7 +391,7 @@ files:
- name: "ps2_dtlh30002.bin"
description: "PS2, DTL-H30002 (v5.0 09/02/00 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "91c87cb2f2eb6ce529a2360f80ce2457"
region_check: true
@@ -401,7 +401,7 @@ files:
- name: "ps2_dtlh30102_0902.bin"
description: "PS2, DTL-H30102 (v5.0 09/02/00 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "3016b3dd42148a67e2c048595ca4d7ce"
region_check: true
@@ -411,7 +411,7 @@ files:
- name: "ps2_scph30002_0902.bin"
description: "PS2, SCPH-30002/SCPH-30003/SCPH-30004 (v5.0 09/02/00 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "b7fa11e87d51752a98b38e3e691cbf17"
region_check: true
@@ -461,7 +461,7 @@ files:
- name: "ps2_dtlh30102_1228.bin"
description: "PS2, DTL-H30102 (v5.0 12/28/00 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "6f9a6feb749f0533aaae2cc45090b0ed"
region_check: true
@@ -471,7 +471,7 @@ files:
- name: "ps2_scph30002_1228.bin"
description: "PS2, SCPH-30002/SCPH-30003/SCPH-30004/SCHP-35002/SCPH-35003/SCPH-35004 (v5.0 12/28/00 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "838544f12de9b0abc90811279ee223c8"
region_check: true
@@ -531,7 +531,7 @@ files:
- name: "ps2_scph30002r_0704.bin"
description: "PS2, SCPH-30002R/SCPH-30003R/SCPH-30004R (v5.0 07/04/01 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "491209dd815ceee9de02dbbc408c06d6"
region_check: true
@@ -551,7 +551,7 @@ files:
- name: "ps2_scph30002r_1004.bin"
description: "PS2, SCPH-30002R/SCPH-30003R/SCPH-30004R (v5.0 10/04/01 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "8359638e857c8bc18c3c18ac17d9cc3c"
region_check: true
@@ -581,7 +581,7 @@ files:
- name: "ps2_scph39002.bin"
description: "PS2, SCPH-39002/SCPH-39003/SCPH-39004 (v5.0 03/19/02 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "0d2228e6fd4fb639c9c39d077a9ec10c"
region_check: true
@@ -601,7 +601,7 @@ files:
- name: "ps2_scph39008.bin"
description: "PS2, SCPH-39008 (v5.0 04/26/02 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "5b1f47fbeb277c6be2fccdd6344ff2fd"
region_check: true
@@ -641,7 +641,7 @@ files:
- name: "ps2_dtlh50002.bin"
description: "PS2, DTL-H50002 (v5.0 02/27/03 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "666018ffec65c5c7e04796081295c6c7"
region_check: true
@@ -651,7 +651,7 @@ files:
- name: "ps2_scph50002_0227.bin"
description: "PS2, SCPH-50002/SCPH-50003/SCPH-50004 (v5.0 02/27/03 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "6e69920fa6eef8522a1d688a11e41bc6"
region_check: true
@@ -731,7 +731,7 @@ files:
- name: "ps2_scph50002_0623.bin"
description: "PS2, SCPH-50002/SCPH-50003/SCPH-50004 (v5.0 06/23/03 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "bd6415094e1ce9e05daabe85de807666"
region_check: true
@@ -761,7 +761,7 @@ files:
- name: "ps2_scph50008.bin"
description: "PS2, SCPH-50008 (v5.0 06/23/03 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "b53d51edc7fc086685e31b811dc32aad"
region_check: true
@@ -791,7 +791,7 @@ files:
- name: "ps2_scph50004_0822.bin"
description: "PS2, SCPH-50004 (v5.0 08/22/03 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "afde410bd026c16be605a1ae4bd651fd"
region_check: true
@@ -831,7 +831,7 @@ files:
- name: "ps2_scph70002.bin"
description: "PS2, SCPH-70002/SCPH-70003/SCPH-70004/SCPH-70008 (v5.0 06/14/04 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "dc752f160044f2ed5fc1f4964db2a095"
region_check: true
@@ -841,7 +841,7 @@ files:
- name: "ps2_scph70002_alt.bin"
description: "PS2, SCPH-70002 (v5.0 06/14/04 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "7ebb4fc5eab6f79a27d76ac9aad392b2"
region_check: true
@@ -851,7 +851,7 @@ files:
- name: "ps2_dtlh70002.bin"
description: "PS2, DTL-H70002 (v5.0 06/14/04 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "63ead1d74893bf7f36880af81f68a82d"
region_check: true
@@ -921,7 +921,7 @@ files:
- name: "ps2_scph75002.bin"
description: "PS2, SCPH-75002/SCPH-75003/SCPH-75004/SCPH-75008 (v5.0 06/20/05 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "573f7d4a430c32b3cc0fd0c41e104bbd"
region_check: true
@@ -961,7 +961,7 @@ files:
- name: "ps2_scph77002.bin"
description: "PS2, SCPH-77002/SCPH-77003/SCPH-77004/SCPH-77008 (v5.0 02/10/06 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "af60e6d1a939019d55e5b330d24b1c25"
region_check: true
@@ -1021,7 +1021,7 @@ files:
- name: "ps2_scph79002_90002.bin"
description: "PS2, SCPH-79002/SCPH-79003/SCPH-79004/SCPH-79008/SCPH-90002/SCPH-90003/SCPH-90004 (v5.0 09/05/06 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "80bbb237a6af9c611df43b16b930b683"
region_check: true
@@ -1061,7 +1061,7 @@ files:
- name: "ps2_scph90002_0220.bin"
description: "PS2, SCPH-90002/SCPH-90003/SCPH-90004/SCPH-90008 (v5.0 02/20/08 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "dc69f0643a3030aaa4797501b483d6c4"
region_check: true
@@ -1081,7 +1081,7 @@ files:
- name: "ps2_kdl22px300.bin"
description: "PS2, KDL-22PX300 (v5.0 04/15/10 E)"
region: [europe, oceania]
region: [europe]
required: false
md5: "93ea3bcee4252627919175ff1b16a1d9"
region_check: true
+1 -1
View File
@@ -24,7 +24,7 @@ notes: |
"embedded" when that fails. The system directory is still passed to SelectGame,
but for the game data search, not for the engine package.
ref: src/libretro/ecwolf_pk3_data.c, src/wl_iwad.cpp:664-672,
src/libretro/libretro.cpp:1009-1011
src/libretro/libretro.cpp:1028-1030
Standalone: ecwolf.pk3 searched in progdir (binary directory).
ref: src/libretro/wl_main.cpp:1247 (progdir passed to SelectGame)
+10 -5
View File
@@ -27,32 +27,37 @@ mode: standalone
files:
- name: "prod.keys"
required: true
path: "switch/prod.keys"
path: "switch/"
mode: standalone
note: "Production keys for NCA decryption (master, key area, header, titlekek)"
source_ref: "src/core/crypto/key_manager.cpp:574-575, 853"
- name: "dev.keys"
required: false
path: "switch/dev.keys"
path: "switch/"
mode: standalone
note: "Development-unit keys, read instead of prod.keys when use_dev_keys is set"
source_ref: "src/core/crypto/key_manager.cpp:570-571, 852"
- name: "title.keys"
required: false
path: "switch/title.keys"
path: "switch/"
mode: standalone
note: "Per-title encryption keys (rights_id to titlekey mappings)"
source_ref: "src/core/crypto/key_manager.cpp:577-578, 850"
- name: "console.keys"
required: false
path: "switch/console.keys"
path: "switch/"
mode: standalone
note: "Console-specific keys (BIS, SD seed)"
source_ref: "src/core/crypto/key_manager.cpp:579-580"
- name: "key_retail.bin"
required: false
path: "switch/key_retail.bin"
path: "switch/"
size: 160
mode: standalone
note: "Amiibo decryption keys (two InternalKey structs, 0x50 bytes each)"
source_ref: "src/core/hle/service/nfc/common/amiibo_crypto.cpp:281-302"
+23 -27
View File
@@ -8,9 +8,9 @@ upstream: "https://github.com/EKA2L1/EKA2L1"
profiled_date: "2026-09-17"
source_commit:
standalone: "1fcfadbff7f8b81d8c17bc82d04b0c94d16803bf"
libretro: "1c49c1bcde3853273cd520a5360bff756f872e06"
libretro: "97ac3df6767f819c95405e4c86e7007d2e8ae61d"
upstream_commit:
libretro: "11f5b6cd141c0884a130ee45743f1f5e17bb1783"
libretro: "47b4ad76a6dd7d3656f52be86dfd5b9ff9a50c70"
core_version: "0.0.9"
display_name: "Nokia - Symbian / N-Gage (EKA2L1)"
cores:
@@ -27,13 +27,13 @@ notes: |
N-Gage 2.0 libraries and the game libraries from S60v1 to Symbian Belle. One
tree builds the Qt desktop frontend, the Android and iOS applications, and a
libretro core; the core lives on the libretro branch of the WizzardSK fork,
rebased on the upstream revision named in its upstream.version, 11f5b6cd.
content.cpp passes isolate_drives false to install_firmware and
install_rom_with_optional_rpkg, so drives C, D and E are shared between
devices.
merged from upstream at 47b4ad76. The tip of that branch, 7a40bb0d, merges
upstream 0b7d9d67 and does not build the core: content.cpp still calls
install_firmware and install_rom_with_optional_rpkg without the
isolate_drives argument they take from that merge on. The libretro pin is the
last revision of the branch that builds.
ref: README.md:20, README.md:29-32, src/emu/CMakeLists.txt:61-62,
CMakeLists.txt:18, .gitlab-ci.yml:17-25, src/emu/libretro/CMakeLists.txt:40-46,
src/emu/libretro/src/content.cpp:178-184,
CMakeLists.txt:18, .gitlab-ci.yml:14-22, src/emu/libretro/src/content.cpp:96-100,
src/emu/system/src/installation/rpkg.cpp:208-210,
src/emu/system/src/installation/firmware.cpp:290-293
@@ -54,12 +54,12 @@ notes: |
sw.txt or langsw.txt under z:\resource\versions, sw.txt or langsw.txt under
z:\system\versions, or z:\system\install\sonyericssonp90xplatform.sis. That
is the N-Gage case: its files are unpacked to drives/z/, the firmware code is
read from them and the image is copied to SYM.ROM. Any other image needs
the RPKG made by the Dumber tool beside it, which supplies the ROFS. A .vpl
variant packing list names the .fpsx flash images of a factory firmware,
from which the core image, the ROFS and the drive contents are extracted.
The names of the dump files are free; SYM.ROM is the name the installers
give the resident copy.
read from them and the image is copied to SYM.ROM. The libretro pin tests
z:\system\versions\sw.txt alone. Any other image needs the RPKG made by the
Dumber tool beside it, which supplies the ROFS. A .vpl variant packing list
names the .fpsx flash images of a factory firmware, from which the core image,
the ROFS and the drive contents are extracted. The names of the dump files
are free; SYM.ROM is the name the installers give the resident copy.
ref: src/emu/system/src/installation/rpkg.cpp:44-68,
src/emu/system/src/software.cpp:396-408,
src/emu/system/src/installation/rpkg.cpp:132-199,
@@ -97,11 +97,11 @@ notes: |
<system>/eka2l1/libretro-content.txt against the UID it registered, or a
.eka2l1 text shortcut naming the UID of an application already installed.
supports_no_game is false. is_experimental is true in the .info.
ref: src/emu/libretro/src/main.cpp:55-57, src/emu/libretro/src/state.cpp:12-17,
src/emu/libretro/src/main.cpp:92-110, src/emu/libretro/src/content.cpp:129-195,
src/emu/libretro/src/main.cpp:173-181, src/emu/libretro/src/main.cpp:72-73,
src/emu/libretro/src/main.cpp:126-127, src/emu/libretro/src/content.cpp:203,
src/emu/libretro/src/content.cpp:350-355
ref: src/emu/libretro/src/main.cpp:51-53, src/emu/libretro/src/state.cpp:12-17,
src/emu/libretro/src/main.cpp:82-100, src/emu/libretro/src/content.cpp:44-111,
src/emu/libretro/src/main.cpp:161-169, src/emu/libretro/src/main.cpp:68-69,
src/emu/libretro/src/main.cpp:116-117, src/emu/libretro/src/content.cpp:119,
src/emu/libretro/src/content.cpp:244-249
At this revision the libretro build stages none of the shipped resource
folders and never calls set_runtime_resource_root, so the GL shaders, the
@@ -110,8 +110,8 @@ notes: |
and creates no audio or controller driver, so the patch libraries, the Lua
scripts, the MIDI banks and the controller database are not read there.
Those entries carry mode standalone.
ref: src/emu/libretro/CMakeLists.txt:8-72, src/emu/libretro/src/thread.cpp:20-61,
src/emu/libretro/src/thread.cpp:87-93,
ref: src/emu/libretro/CMakeLists.txt:8-45, src/emu/libretro/src/thread.cpp:19-38,
src/emu/libretro/src/thread.cpp:41-60, src/emu/libretro/src/thread.cpp:83-89,
src/emu/common/src/path.cpp:427-450, src/emu/system/src/epoc.cpp:1389-1410
Shipped runtime files are read at their own name below the working
@@ -156,7 +156,7 @@ notes: |
src/emu/config/src/panic_blacklist.cpp:27-35, src/emu/config/src/app_settings.cpp:82-114,
src/emu/utils/src/panic.cpp:32-38, src/emu/scripting/src/manager.cpp:196-202,
src/emu/scripting/src/manager.cpp:230-256, src/emu/services/src/fbs/fbs.cpp:443,
src/emu/services/src/fbs/impls/font.cpp:1185-1208, .gitlab-ci.yml:22,
src/emu/services/src/fbs/impls/font.cpp:1185-1208, .gitlab-ci.yml:19,
src/emu/qt/CMakeLists.txt:264-278, src/emu/qt/CMakeLists.txt:289-290,
src/emu/qt/CMakeLists.txt:376-377, cmake/Symbian.cmake:20-31
@@ -182,7 +182,7 @@ files:
dump, an EKA2 image with its RPKG, or a VPL with its .fpsx images.
source_ref:
standalone: "src/emu/system/src/epoc.cpp:1486-1494, src/emu/system/src/epoc.cpp:824-848, src/emu/system/include/system/consts.h:23-25, src/emu/system/src/installation/rpkg.cpp:44-68, src/emu/system/src/installation/rpkg.cpp:196-199, src/emu/qt/src/device_install_dialog.cpp:162-172"
libretro: "src/emu/libretro/src/main.cpp:92-110, src/emu/libretro/src/content.cpp:129-195, src/emu/libretro/src/main.cpp:173-181, src/emu/system/src/installation/rpkg.cpp:208-255"
libretro: "src/emu/libretro/src/main.cpp:82-100, src/emu/libretro/src/content.cpp:44-111, src/emu/libretro/src/main.cpp:161-169, src/emu/system/src/installation/rpkg.cpp:202-248"
- name: audiooutputrouting.dll.map
standalone_path: patch/audiooutputrouting.dll.map
@@ -701,10 +701,6 @@ files:
mode: standalone
required: false
bundled: true
size: 408885
sha1: "8c272ae624c56d48d788fafe0397fab2e33d838f"
md5: "b1586eb09b91f65c37a2f5e7c6ef7980"
note: "src/external/SDL_GameControllerDB is a submodule pinned at a113e7fa"
description: "SDL2 controller mapping database handed to SDL_GameControllerAddMappingsFromFile"
source_ref: "src/emu/drivers/src/input/backend/emu_controller_sdl2.cpp:143-145, src/emu/qt/CMakeLists.txt:277"
+2 -10
View File
@@ -5,9 +5,9 @@ source: "https://github.com/sashkinbro/EmuCoreX"
upstream: "https://github.com/PCSX2/pcsx2"
author: "Oleksandr (sashkinbro)"
profiled_date: "2026-10-04"
source_commit: "9884c9f9a0c5d5df2f0c0c064ec41029a4528d72"
source_commit: "ed8d7dd721dc8da958f3149acdc4c72d77d5a685"
upstream_commit: "c10a5c9ad951c517dc48b722b5b84eb9bf7fdb42"
core_version: "0.4.7"
core_version: "0.4.6"
display_name: "Sony - PlayStation 2 (EmuCoreX)"
cores:
- emucorex
@@ -289,8 +289,6 @@ files:
system: sony-playstation-2
required: false
bundled: true
sha1: 2d9878fdd70979ecf6dd0da7652efd3797c26039
size: 2697551
category: game_data
description: "per-title compatibility and fix database"
note: >-
@@ -305,8 +303,6 @@ files:
system: sony-playstation-2
required: false
bundled: true
sha1: dceb4536fba7fb89452864fc512a4d071a19eae0
size: 1906463
category: game_data
description: "disc hash database"
note: >-
@@ -319,8 +315,6 @@ files:
system: sony-playstation-2
required: false
bundled: true
sha1: a3d939af27fe0929e61b8e20d49ef58316c0a66c
size: 2091144
category: game_data
description: "built-in game patch archive"
note: >-
@@ -560,8 +554,6 @@ files:
- name: unlock.wav
path: resources/sounds/achievements/unlock.wav
sha1: da328a0a3074ec86fee2d6741bfc2e5a1f68d063
size: 202702
system: sony-playstation-2
required: false
description: "achievement unlock sound"
+2 -2
View File
@@ -143,7 +143,7 @@ files:
has_builtin: true
size: 32768
note: "EXDOS 1.4 + IS-DOS 1.0 (UK). Used for IS-DOS disk mode instead of exdos13.rom."
source_ref: "core/core.cpp:294-298, roms/roms.hpp:30104 (built-in data, MD5 verified)"
source_ref: "core/core.cpp:255, roms/roms.hpp:30104 (built-in data, MD5 verified)"
# ============================================================
# Enterprise 64/128 - file I/O and extensions
@@ -193,7 +193,7 @@ files:
has_builtin: true
size: 32768
note: "EP-DOS 1.6f. Provides HFONT and CLKOFF for Hungarian locale. 32K across segments 0x06-0x07."
source_ref: "core/core.cpp:252-256, roms/roms.hpp:43780 (built-in data, MD5 verified)"
source_ref: "core/core.cpp:238-239, roms/roms.hpp:43780 (built-in data, MD5 verified)"
- name: brd.rom
path: ep128emu/roms/brd.rom
+2 -2
View File
@@ -21,7 +21,7 @@ systems:
- coleco-colecovision
- sinclair-spectrum
- msx
- nintendo-fds
- nes-fds
- super-kaneko-nova
- deco-cassette
- namco-na1
@@ -1061,7 +1061,7 @@ files:
# -------------------------------------------------------
- name: "fdsbios.nes"
archive: fdsbios.zip
system: nintendo-fds
system: nes-fds
required: true
size: 8192 # 0x2000
crc32: "5e607dcf"
+2
View File
@@ -221,6 +221,7 @@ files:
source_ref: "fMSX/ROMs/CYRILLIC.FNT, libretro.c:1547"
- name: KOREAN.FNT
region: [south-korea]
required: false
bundled: true
md5: 73291e76638a2f5aa2eceb843df468f4
@@ -228,6 +229,7 @@ files:
source_ref: "fMSX/ROMs/KOREAN.FNT, libretro.c:1547"
- name: JAPANESE.FNT
region: [japan]
required: false
bundled: true
md5: aa28f0703b951a6be8df3e28e20d263d
+3 -3
View File
@@ -16,7 +16,7 @@ notes: |
contributed by Joe Zbiciak (jzIntv), mask ROM embedded in source
(src/ivoice.c:337-510, 4097-byte static array). No external ivoice ROM.
BIOS loading in retro_init() (src/libretro.c:1175-1183). Paths joined
BIOS loading in retro_init() (src/libretro.c:1184-1192). Paths joined
directly to system directory, no subdirectory.
loadExec() reads exec.bin as big-endian 16-bit words into 0x1000-0x1FFF.
@@ -35,11 +35,11 @@ files:
required: true
size: 8192
note: "Executive ROM. Big-endian 16-bit words loaded at 0x1000-0x1FFF."
source_ref: "src/intv.c:51-96, src/libretro.c:1178"
source_ref: "src/intv.c:55-142, src/libretro.c:1187"
- name: "grom.bin"
system: intellivision
required: true
size: 2048
note: "Graphics ROM. Raw bytes loaded at 0x3000-0x37FF."
source_ref: "src/intv.c:98-144, src/libretro.c:1182"
source_ref: "src/intv.c:144-190, src/libretro.c:1191"
+4 -4
View File
@@ -34,17 +34,17 @@ files:
- name: "bios.sms"
system: sega-mastersystem
required: false
source_ref: "platforms/libretro/libretro.cpp:736, platforms/libretro/libretro.cpp:731-743 (load_bootroms)"
source_ref: "platforms/libretro/libretro.cpp:777, platforms/libretro/libretro.cpp:780 (load_bootroms)"
- name: "bios.gg"
system: sega-gamegear
required: false
source_ref: "platforms/libretro/libretro.cpp:737, platforms/libretro/libretro.cpp:731-743 (load_bootroms)"
source_ref: "platforms/libretro/libretro.cpp:1067, platforms/libretro/libretro.cpp:780 (load_bootroms)"
platform_details:
mastersystem:
bios_filename: "bios.sms"
source_ref: "src/Memory.cpp:267-272"
source_ref: "src/Memory.cpp:227-232"
note: |
Boot ROM loaded via LoadBootromSMS() -> LoadBootroom(path, false).
Raw binary read, stored in m_pBootromSMS. Bank count computed as
@@ -52,7 +52,7 @@ platform_details:
gamegear:
bios_filename: "bios.gg"
source_ref: "src/Memory.cpp:274-279"
source_ref: "src/Memory.cpp:234-239"
note: |
Boot ROM loaded via LoadBootromGG() -> LoadBootroom(path, true).
Raw binary read, stored in m_pBootromGG. Same bank computation.
+7 -7
View File
@@ -5,7 +5,7 @@ source: "https://github.com/libretro/geolith-libretro"
upstream: "https://gitlab.com/jgemu/geolith"
profiled_date: "2026-08-07"
source_commit: "194024931935eff2092e36fc4f8e53e62ed11097"
upstream_commit: "1bb5a84fbd87dc1f1c510cb3ff81332573e22452"
upstream_commit: "7ed2ef95a446ffb9bf17b6536d24c108310c94da"
core_version: "0.4.1"
display_name: "SNK - Neo Geo AES/MVS (Geolith)"
cores:
@@ -52,7 +52,7 @@ notes: |
detection and the optional CD speed hack patches use byte patterns and
apply only when the 68K BIOS is at least 512 KiB (src/geo_cd.c:1888-1910,
1904-1924). Upstream declares the expected archive MD5s through the Jolly
Good API BIOS list (jg.c:220-231); the md5 fields on the archives below
Good API BIOS list (jg.c:228-239); the md5 fields on the archives below
are copied from it.
files:
@@ -64,35 +64,35 @@ files:
required: true
md5: "ad9585c72130c56f04ae26aae87c289d"
note: "Neo Geo AES System ROMs. Opened when System Type is AES (default)."
source_ref: "libretro/libretro.c:1222-1225, jg.c:221-222"
source_ref: "libretro/libretro.c:1222-1225, jg.c:229-230"
- name: "neogeo.zip"
system: snk-neogeo-mvs
required: true
md5: "00dad01abdbf8ea9e79ad2fe11bdb182"
note: "Neo Geo MVS System ROMs. Opened for MVS and Universe BIOS modes."
source_ref: "libretro/libretro.c:1222-1225, jg.c:223-224"
source_ref: "libretro/libretro.c:1222-1225, jg.c:231-232"
- name: "neocd.zip"
system: snk-neogeo-cd
required: false
md5: "006a881532f2caffc3fe9fb5593f2ed5"
note: "Neo Geo CD Front/Top Loader System ROMs. Opened only when CD System is front or top loader."
source_ref: "libretro/libretro.c:1213-1220, jg.c:225-226"
source_ref: "libretro/libretro.c:1213-1220, jg.c:233-234"
- name: "neocdz.zip"
system: snk-neogeo-cd
required: true
md5: "b31a246b69493c35194fe0bac120dc37"
note: "Neo Geo CDZ System ROMs. Opened for CDZ (default) and CD Universe BIOS; also supplies 000-lo.lo to Front/Top Loader mode."
source_ref: "libretro/libretro.c:1213-1239, jg.c:227-228"
source_ref: "libretro/libretro.c:1213-1239, jg.c:235-236"
- name: "irrmaze.zip"
system: snk-neogeo-mvs
required: false
md5: "0e369df30a70e45547cef9e4078dc511"
note: "The Irritating Maze auxiliary BIOS. Loaded in MVS mode for trackball support; on failure the game runs without trackball."
source_ref: "libretro/libretro.c:1281-1292, jg.c:229-230"
source_ref: "libretro/libretro.c:1281-1292, jg.c:237-238"
# -----------------------------------------------------------
# aes.zip members
+7 -9
View File
@@ -238,11 +238,9 @@ files:
description: "SoundFont for the MIDI devices"
note: >-
Collected by scanning a `soundfonts` directory added to the search paths of
the config file (Q3E/src/main/jni/zdoom/src/gameconfigfile.cpp:220, 258);
every .sf2 and zipped GUS patch set found there becomes a menu entry.
fluid_patchset defaults to GAMENAMELOWERCASE, "uzdoom", which
FindSoundFont matches against the file base name.
source_ref: "Q3E/src/main/jni/zdoom/src/version.h:110, Q3E/src/main/jni/zdoom/src/common/audio/music/music_config.cpp:119, Q3E/src/main/jni/zdoom/src/common/audio/music/i_soundfont.cpp:335-370, 458-468"
the config file; every .sf2 and zipped GUS patch set found there becomes a
menu entry.
source_ref: "Q3E/src/main/jni/zdoom/src/gameconfigfile.cpp:220, 258, Q3E/src/main/jni/zdoom/src/common/audio/music/i_soundfont.cpp:335-370"
- name: GENMIDI.GS.wopl
required: false
@@ -282,12 +280,12 @@ files:
description: "ECWolf engine resource archive"
note: >-
Named by MAIN_PK3 and passed to the game selector with the program
directory (Q3E/src/main/jni/ecwolf/src/wl_main.cpp:1294-1307); failing
to open it ends the process with "Could not open ecwolf.pk3!". It holds the IWADINFO rules that identify which Wolfenstein
directory; failing to open it ends the process with "Could not open
ecwolf.pk3!". It holds the IWADINFO rules that identify which Wolfenstein
data set is present, the palettes and the actor definitions. This build
reads it from disk after extraction, unlike the libretro core which
compiles it in.
source_ref: "Q3E/src/main/jni/ecwolf/src/version.h:12, Q3E/src/main/jni/ecwolf/src/wl_iwad.cpp:604, Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:186-195"
source_ref: "Q3E/src/main/jni/ecwolf/src/version.h:12, Q3E/src/main/jni/ecwolf/src/wl_iwad.cpp:604, Q3E/src/main/jni/ecwolf/src/wl_main.cpp:1294-1307, Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:186-195"
- name: glprogs.pk4
required: true
@@ -405,7 +403,7 @@ files:
Unpacked into `files/` under the Source standalone directory. It carries
the DejaVu, Droid Sans Fallback, Itim and Liberation faces the engine
substitutes for the Windows fonts, and extras_dir.vpk.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:164-173, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:938-961, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:383, 396"
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:164-173, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:938-961, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:396"
- name: d3_sabot_a7.pk4
required: false
+6 -6
View File
@@ -64,22 +64,22 @@ files:
size: 8192
required: false
hle_fallback: true
validation: [size, adler32]
known_hash_adler32: ["0x66f334fe", "0x128ea7a2"]
validation: [size]
known_hash_adler32: "0x66f334fe"
adler32_byteswap: true
note: "DSP instruction ROM for LLE audio. Free replacement included"
source_ref: "Source/Core/Common/CommonPaths.h:112, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:142-150, Source/Core/Core/DSP/DSPCore.cpp:48,67, Source/Core/Core/DSP/DSPCore.cpp:38-105"
source_ref: "Source/Core/Common/CommonPaths.h:112, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:142-150, Source/Core/Core/DSP/DSPCore.cpp:48,67"
- name: "dsp_coef.bin"
path: "GC/dsp_coef.bin"
size: 4096
required: false
hle_fallback: true
validation: [size, adler32]
known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
validation: [size]
known_hash_adler32: "0xf3b93527"
adler32_byteswap: true
note: "DSP coefficient ROM for LLE audio and HLE polyphase resampling. Free replacement included"
source_ref: "Source/Core/Common/CommonPaths.h:113, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:143-153, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:43-72, Source/Core/Core/DSP/DSPCore.cpp:48,68, Source/Core/Core/DSP/DSPCore.cpp:38-105"
source_ref: "Source/Core/Common/CommonPaths.h:113, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:143-153, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:43-72, Source/Core/Core/DSP/DSPCore.cpp:48,68"
# -- GameCube Fonts --
# Bundled free alternatives exist but have padding differences causing misplaced text.
+29 -29
View File
@@ -4,7 +4,7 @@ core_classification: game_engine
source: "https://github.com/deathkiller/jazz2-native"
upstream: "https://github.com/deathkiller/jazz2-native"
profiled_date: "2026-10-04"
source_commit: "1e20466795d5074570fb057b41f56baefd24c629"
source_commit: "cc06bdac1b957a069e1d05761c7437cd59886552"
core_version: "3.8.0"
display_name: "Jazz Jackrabbit 2 (Jazz² Resurrection)"
cores: [jazz2]
@@ -15,18 +15,18 @@ notes: |
ships its own Content/ tree (animations, metadata, translations) that
sits next to the executable in a portable copy, or under
<prefix>/share/<package>/ once installed.
ref: Sources/Jazz2/ContentResolver.cpp:191-243 (GetContentPath per
platform), Sources/Jazz2/ContentResolver.cpp:415-491 (Unix layouts)
ref: Sources/Jazz2/ContentResolver.cpp:187-238 (GetContentPath per
platform), Sources/Jazz2/ContentResolver.cpp:409-485 (Unix layouts)
Original Jazz Jackrabbit 2 data is read from Source/ and converted
on first launch into the engine's own formats under Cache/: Anims.j2a
and Data.j2d into a package, then every .j2e, .j2l and the tilesets
the levels name. Music and cinematics are read from Source/ as they
are.
ref: Sources/Jazz2/ContentResolver.cpp:285-314 (GetSourcePath),
Sources/Main.cpp:2226-2290 (RefreshCache),
ref: Sources/Jazz2/ContentResolver.cpp:279-309 (GetSourcePath),
Sources/Main.cpp:2224-2288 (RefreshCache),
Sources/Jazz2/Compatibility/AssetConverter.cpp:152-168,
Sources/Jazz2/Compatibility/AssetConverter.cpp:400-520
Sources/Jazz2/Compatibility/AssetConverter.cpp:400-516
Content/ is the engine runtime, shipped with the release package.
Source/ holds the user's own copy of the 1998 game data. Without
@@ -51,7 +51,7 @@ files:
standalone_path: "Content/Animations/"
bundled: true
required: true
source_ref: "Sources/Jazz2/ContentResolver.cpp:1164, 1294, 2837-2838"
source_ref: "Sources/Jazz2/ContentResolver.cpp:1093, 1223, 2734-2735"
note: "Native graphics, sounds and the UI fonts, opened through OpenContentFile."
- name: "Metadata/"
@@ -61,7 +61,7 @@ files:
standalone_path: "Content/Metadata/"
bundled: true
required: true
source_ref: "Sources/Jazz2/ContentResolver.cpp:910"
source_ref: "Sources/Jazz2/ContentResolver.cpp:839"
note: "Actor .res descriptors (Common, Enemy, Player, UI, Boss, ...)."
- name: "Translations/"
@@ -71,7 +71,7 @@ files:
standalone_path: "Content/Translations/"
bundled: true
required: false
source_ref: "Sources/Main.cpp:2021-2027, Sources/Jazz2/UI/Menu/LanguageSelectSection.cpp:82-88"
source_ref: "Sources/Main.cpp:2019-2025, Sources/Jazz2/UI/Menu/LanguageSelectSection.cpp:82-88"
note: "Language .mo bundles, searched in Cache/Translations/ first. Built-in English is used when none is loaded."
# ================================================================
@@ -85,7 +85,7 @@ files:
path: "jazz2/Source/Anims.j2a"
standalone_path: "Source/Anims.j2a"
required: true
source_ref: "Sources/Main.cpp:2226-2242, Sources/Jazz2/Compatibility/AssetConverter.cpp:156-159"
source_ref: "Sources/Main.cpp:2224-2240, Sources/Jazz2/Compatibility/AssetConverter.cpp:156-159"
note: "Main animation archive. The cache cannot be created without it and the game is not flagged playable."
- name: "AnimsSw.j2a"
@@ -94,7 +94,7 @@ files:
path: "jazz2/Source/AnimsSw.j2a"
standalone_path: "Source/AnimsSw.j2a"
required: false
source_ref: "Sources/Main.cpp:2229-2231"
source_ref: "Sources/Main.cpp:2227-2229"
note: "Animation archive of the shareware demo, read when Anims.j2a is absent."
- name: "Data.j2d"
@@ -108,7 +108,7 @@ files:
# Episode descriptors (.j2e) and level files (.j2l) are optional per
# episode. Every one present in Source/ is converted.
# ref: Sources/Jazz2/Compatibility/AssetConverter.cpp:400-520
# ref: Sources/Jazz2/Compatibility/AssetConverter.cpp:400-516
- name: "prince.j2e"
category: game_data
@@ -252,8 +252,8 @@ files:
# Tilesets. Only those a converted level names are converted. The name
# is read from the level, lowercased and looked up in Source/ without
# regard to case.
# ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:124, 772-775,
# Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 579-600
# ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:117, 724-727,
# Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 575-596
- name: "labrat1n.j2t"
category: game_data
@@ -261,7 +261,7 @@ files:
path: "jazz2/Source/labrat1n.j2t"
standalone_path: "Source/labrat1n.j2t"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:124, 772-775, Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 579-600"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:117, 724-727, Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 575-596"
note: "Tileset named by share1.j2l, sharect2.j2l and sharetrs.j2l."
- name: "psych2.j2t"
@@ -270,7 +270,7 @@ files:
path: "jazz2/Source/psych2.j2t"
standalone_path: "Source/psych2.j2t"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:124, 772-775, Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 579-600"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:117, 724-727, Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 575-596"
note: "Tileset named by share2.j2l."
- name: "diam2.j2t"
@@ -279,11 +279,11 @@ files:
path: "jazz2/Source/diam2.j2t"
standalone_path: "Source/diam2.j2t"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:124, 772-775, Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 579-600"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:117, 724-727, Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 575-596"
note: "Tileset named by share3.j2l and sharectf.j2l."
# Music, read from Content/Music/ then from Source/
# ref: Sources/Jazz2/ContentResolver.cpp:2784-2794
# ref: Sources/Jazz2/ContentResolver.cpp:2681-2691
- name: "menu.j2b"
category: game_data
@@ -291,7 +291,7 @@ files:
path: "jazz2/Source/menu.j2b"
standalone_path: "Source/menu.j2b"
required: false
source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:509-511, Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542"
source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:509-511, Sources/Jazz2/Compatibility/AssetConverter.cpp:535-538"
note: "Main menu music."
- name: "bonus2.j2b"
@@ -300,7 +300,7 @@ files:
path: "jazz2/Source/bonus2.j2b"
standalone_path: "Source/bonus2.j2b"
required: false
source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:503-504, Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542"
source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:503-504, Sources/Jazz2/Compatibility/AssetConverter.cpp:535-538"
note: "Menu music of the reforged main menu, picked at random with bonus3.j2b."
- name: "bonus3.j2b"
@@ -309,7 +309,7 @@ files:
path: "jazz2/Source/bonus3.j2b"
standalone_path: "Source/bonus3.j2b"
required: false
source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:503-504, Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542"
source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:503-504, Sources/Jazz2/Compatibility/AssetConverter.cpp:535-538"
note: "Menu music of the reforged main menu, picked at random with bonus2.j2b."
- name: "intro.j2b"
@@ -318,7 +318,7 @@ files:
path: "jazz2/Source/intro.j2b"
standalone_path: "Source/intro.j2b"
required: false
source_ref: "Sources/Jazz2/UI/Cinematics.cpp:255, Sources/Main.cpp:558, Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542"
source_ref: "Sources/Jazz2/UI/Cinematics.cpp:255, Sources/Main.cpp:558, Sources/Jazz2/Compatibility/AssetConverter.cpp:535-538"
note: "Music of the intro cinematic."
- name: "ending.j2b"
@@ -327,12 +327,12 @@ files:
path: "jazz2/Source/ending.j2b"
standalone_path: "Source/ending.j2b"
required: false
source_ref: "Sources/Jazz2/UI/Cinematics.cpp:255, Sources/Main.cpp:964, Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542"
source_ref: "Sources/Jazz2/UI/Cinematics.cpp:255, Sources/Main.cpp:964, Sources/Jazz2/Compatibility/AssetConverter.cpp:535-538"
note: "Music of the ending cinematic."
# Level music. The name is read from the level, lowercased and given
# the .j2b extension when it has none.
# ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:128, 784-789
# ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:121, 736-741
- name: "labrat.j2b"
category: game_data
@@ -340,7 +340,7 @@ files:
path: "jazz2/Source/labrat.j2b"
standalone_path: "Source/labrat.j2b"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:128, 784-789, Sources/Jazz2/LevelHandler.cpp:629-635, Sources/Jazz2/ContentResolver.cpp:2784-2788"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:121, 736-741, Sources/Jazz2/LevelHandler.cpp:629-635, Sources/Jazz2/ContentResolver.cpp:2681-2685"
note: "Music named by share1.j2l, sharect2.j2l and sharetrs.j2l."
- name: "funkyg.j2b"
@@ -349,7 +349,7 @@ files:
path: "jazz2/Source/funkyg.j2b"
standalone_path: "Source/funkyg.j2b"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:128, 784-789, Sources/Jazz2/LevelHandler.cpp:629-635, Sources/Jazz2/ContentResolver.cpp:2784-2788"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:121, 736-741, Sources/Jazz2/LevelHandler.cpp:629-635, Sources/Jazz2/ContentResolver.cpp:2681-2685"
note: "Music named by share2.j2l."
- name: "diamond.j2b"
@@ -358,7 +358,7 @@ files:
path: "jazz2/Source/diamond.j2b"
standalone_path: "Source/diamond.j2b"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:128, 784-789, Sources/Jazz2/LevelHandler.cpp:629-635, Sources/Jazz2/ContentResolver.cpp:2784-2788"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:121, 736-741, Sources/Jazz2/LevelHandler.cpp:629-635, Sources/Jazz2/ContentResolver.cpp:2681-2685"
note: "Music named by share3.j2l and sharectf.j2l."
- name: "boss2.j2b"
@@ -367,8 +367,8 @@ files:
path: "jazz2/Source/boss2.j2b"
standalone_path: "Source/boss2.j2b"
required: false
source_ref: "Sources/Jazz2/Compatibility/EventConverter.cpp:360-370, Sources/Jazz2/Compatibility/AssetConverter.cpp:505-508, Sources/Jazz2/LevelHandler.cpp:1397-1400, Sources/Jazz2/ContentResolver.cpp:2784-2788"
note: "Boss music. The boss activation event carries a music index that is converted to boss1.j2b or boss2.j2b and recorded as music the level uses; share3.j2l carries index 1."
source_ref: "Sources/Jazz2/Compatibility/EventConverter.cpp:356-362, Sources/Jazz2/LevelHandler.cpp:1397-1400, Sources/Jazz2/ContentResolver.cpp:2681-2685"
note: "Boss music. The boss activation event carries a music index that is converted to boss1.j2b or boss2.j2b; share3.j2l carries index 1."
# Cinematics, read from Content/Cinematics/ then from Source/
+16
View File
@@ -79,6 +79,7 @@ files:
description: "Sega CD BIOS (US)"
region: [north-america]
required: true
mode: standalone
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:39-49 (read), frontend/jgenesis-native-driver/src/mainloop/genesis.rs:238-244 (bios_path_for_region), backend/segacd-core/src/api.rs:77-79 (BIOS_LEN check)"
@@ -89,6 +90,7 @@ files:
description: "Mega CD BIOS (Europe)"
region: [europe]
required: true
mode: standalone
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:238-244 (eu_bios_path), backend/segacd-core/src/api.rs:77-79"
@@ -98,6 +100,7 @@ files:
description: "Mega CD BIOS (Japan)"
region: [japan]
required: true
mode: standalone
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:238-244 (jp_bios_path), backend/segacd-core/src/api.rs:77-79"
@@ -109,6 +112,7 @@ files:
system: nintendo-gba
description: "Game Boy Advance BIOS"
required: true
mode: standalone
size: 16384
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/gba.rs:29-33 (GbaNoBios), backend/gba-core/src/memory.rs:10,102-107 (BIOS_ROM_LEN check)"
@@ -122,6 +126,7 @@ files:
system: nintendo-snes
description: "NEC uPD77C25 firmware for DSP-1"
required: true
mode: standalone
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:336-353 (MissingDsp1Rom), backend/snes-coprocessors/src/upd77c25.rs:28-31,35-38,382-390"
note: "0x1800 program plus 0x800 data. Also used by DSP-1B titles, which have no separate slot. Layout is sliced at a fixed offset, size is not checked."
@@ -131,6 +136,7 @@ files:
system: nintendo-snes
description: "NEC uPD77C25 firmware for DSP-2"
required: true
mode: standalone
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:340-342 (MissingDsp2Rom), :929 (Dungeon Master CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
@@ -139,6 +145,7 @@ files:
system: nintendo-snes
description: "NEC uPD77C25 firmware for DSP-3"
required: true
mode: standalone
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:343-345 (MissingDsp3Rom), :931 (SD Gundam GX CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
@@ -147,6 +154,7 @@ files:
system: nintendo-snes
description: "NEC uPD77C25 firmware for DSP-4"
required: true
mode: standalone
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:346-348 (MissingDsp4Rom), :933 (Top Gear 3000 CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
@@ -155,6 +163,7 @@ files:
system: nintendo-snes
description: "NEC uPD96050 firmware for ST010"
required: true
mode: standalone
size: 53248
source_ref: "backend/snes-core/src/memory/cartridge.rs:294-305 (MissingSt010Rom), :938-943 (variant detection), backend/snes-coprocessors/src/upd77c25.rs:28-31,35-38"
note: "0xC000 program plus 0x1000 data. Used by F1 ROC II."
@@ -164,6 +173,7 @@ files:
system: nintendo-snes
description: "NEC uPD96050 firmware for ST011"
required: true
mode: standalone
size: 53248
source_ref: "backend/snes-core/src/memory/cartridge.rs:298-300 (MissingSt011Rom), :938-943 (Hayazashi Nidan Morita Shougi CRC32 match)"
@@ -172,6 +182,7 @@ files:
system: nintendo-snes
description: "ARM firmware for ST018"
required: true
mode: standalone
min_size: 163840
validation: [size]
source_ref: "backend/snes-core/src/memory/cartridge.rs:310-320 (MissingSt018Rom), backend/snes-coprocessors/src/st018.rs:18-22,346-352 (TOTAL_ROM_LEN check)"
@@ -184,6 +195,7 @@ files:
system: sega-mastersystem
description: "Master System BIOS"
required: false
mode: standalone
source_ref: "frontend/jgenesis-native-driver/src/mainloop/smsgg.rs:27-33,50-56,74-80,112-122, backend/smsgg-core/src/memory.rs:101-106,148-168"
note: "Read only when sms_boot_from_bios is enabled or the emulator runs without a cartridge, both off by default. One slot accepts any regional dump, no size or content check."
@@ -191,6 +203,7 @@ files:
system: sega-gamegear
description: "Game Gear BIOS"
required: false
mode: standalone
source_ref: "frontend/jgenesis-native-driver/src/mainloop/smsgg.rs:27-33,50-56,74-80,112-122"
note: "Read only when gg_boot_from_bios is enabled or the emulator runs without a cartridge, both off by default."
@@ -201,6 +214,7 @@ files:
system: nintendo-gb
description: "Game Boy boot ROM"
required: false
mode: standalone
size: 256
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/gb.rs:29-33,77-89, backend/gb-core/src/memory.rs:9,45-63 (DMG_BOOT_ROM_LEN check)"
@@ -210,6 +224,7 @@ files:
system: nintendo-gbc
description: "Game Boy Color boot ROM"
required: false
mode: standalone
min_size: 2048
max_size: 2304
validation: [size]
@@ -224,6 +239,7 @@ files:
system: nintendo-nes
description: "External NES color palette"
required: false
mode: standalone
min_size: 192
max_size: 1536
validation: [size]
+1 -1
View File
@@ -61,7 +61,7 @@ notes: |
the JVM default soundbank in place. VlcDir points at a VLC installation that
vlcj scans for libvlc.
ref: src/media/emulator/media/EmulatorMIDI.java:26-36,
src/main/emulator/ui/swt/Property.java:1863-1904
src/main/emulator/ui/swt/Property.java:1860-1901
files:
- name: M7_EmuSmw7.dll
+2 -2
View File
@@ -187,7 +187,7 @@ files:
- name: "<CaCertificateId>.der"
required: false
path: "system/ssl/<CaCertificateId>.der"
path: system/ssl/
unsourceable: "replacement certificate the user picks for one certificate authority, with no canonical artefact behind the name"
description: "Override for one built-in root certificate"
note: >-
@@ -199,7 +199,7 @@ files:
- name: "<driver>.zip"
required: false
path: "drivers/<driver>.zip"
path: drivers/
unsourceable: "third-party Vulkan driver built for one GPU family, not an emulator artefact"
description: "Replacement Vulkan driver for the Android build"
note: >-
+5 -4
View File
@@ -2,10 +2,9 @@ emulator: Kronos
type: libretro
core_classification: official_port
source: "https://github.com/libretro/yabause"
source_branch: kronos
upstream: "https://github.com/FCare/Kronos"
profiled_date: "2026-03-24"
source_commit: "3791ffb2221fda61d70aec5cca376418caf05669"
source_commit: "8926b0c6c347f8c5c755911ddb0ac695420ffbf8"
core_version: "v2.6.0"
display_name: "Sega - Saturn/ST-V (Kronos)"
cores:
@@ -61,6 +60,7 @@ files:
# -----------------------------------------------------------
- name: "sega_101.bin"
system: sega-saturn
region: [japan]
priority: 2
required: false
size: 524288
@@ -73,6 +73,7 @@ files:
# -----------------------------------------------------------
- name: "mpr-17933.bin"
system: sega-saturn
region: [north-america, europe]
priority: 3
required: false
size: 524288
@@ -245,7 +246,7 @@ files:
size: 2097152
validation: [size]
note: "ROM cartridge for The King of Fighters '95. Auto-detected via game DB."
source_ref: "yabause/src/utils/src/db.c:43-44, yabause/src/sys/memory/src/cs0.c:1526-1535"
source_ref: "yabause/src/utils/src/db.c:43-44, yabause/src/cs0.c:1207-1216"
- name: "mpr-19367-mx.ic1"
system: sega-saturn
@@ -253,4 +254,4 @@ files:
size: 2097152
validation: [size]
note: "ROM cartridge for Ultraman: Hikari no Kyojin Densetsu. Auto-detected via game DB."
source_ref: "yabause/src/utils/src/db.c:45, yabause/src/sys/memory/src/cs0.c:1526-1535"
source_ref: "yabause/src/utils/src/db.c:45, yabause/src/cs0.c:1207-1216"
+29 -35
View File
@@ -4,7 +4,7 @@ core_classification: community_fork
source: "https://github.com/linappleii/linapple"
upstream: "https://github.com/AppleWin/AppleWin"
profiled_date: "2026-10-04"
source_commit: "42e4321d60dc066470151f76c1cd3fe5e88a695c"
source_commit: "02f948d92b0c4df3272ff2ccb0dfcc4daac3e430"
core_version: "3.0.0"
display_name: "Apple - Apple II (LinApple)"
cores:
@@ -16,25 +16,24 @@ mode: standalone
notes: |
SDL port of AppleWin for Linux. The SourceForge project was abandoned and
its forks were gathered under the linappleii organization
(README.md:166-173). Five frontends build from one core: sdl1, sdl2, sdl3,
(README.md:163-170). Five frontends build from one core: sdl1, sdl2, sdl3,
tui and headless (src/frontends/).
The ROMs the emulator runs are compiled into the binary.
scripts/generate_roms.sh turns res/roms/*.rom into EmbeddedRoms.h and
EmbeddedRoms.cpp, once at configure time and again at build time
(CMakeLists.txt:301-338), each image behind an ENABLE_ROM_* macro
(scripts/generate_roms.sh:97-118). Eighteen images go through the generator:
ten system ROMs, four character generator ROMs and four card ROMs. The
printer card, the Super Serial Card and the clock card carry their firmware
as arrays in their own source files
(src/apple2/peripherals/printer/Printer.cpp:30,
src/apple2/peripherals/super_serial_card/SuperSerialRom.h:16,
(CMakeLists.txt:308-346), each image behind an ENABLE_ROM_* macro
(scripts/generate_roms.sh:97-119). Nineteen images go through the generator:
ten system ROMs, four character generator ROMs and five card ROMs. The
printer card and the clock card carry their firmware as arrays in their own
source files (src/apple2/peripherals/printer/Printer.cpp:30,
src/apple2/peripherals/clock/ClockCard.cpp:20), and the Mockingboard
registers no ROM.
What a macro is set to decides whether a machine model runs at all.
CMakeLists.txt:57-131 leaves the Apple ][, ][+, J-Plus, //e and Enhanced //e
system ROMs ON, along with the Disk II and mouse firmware. The three clone options are OFF: ENABLE_ROM_CLONE_BASE64A,
CMakeLists.txt:57-145 leaves the Apple ][, ][+, J-Plus, //e and Enhanced //e
system ROMs ON, along with the Disk II, Super Serial Card and mouse
firmware. The three clone options are OFF: ENABLE_ROM_CLONE_BASE64A,
ENABLE_ROM_CLONE_PRAVETS and ENABLE_ROM_CLONE_TK3000E
(CMakeLists.txt:95-97). Selecting one of those machine types on a default
build reaches mem_initialize with no rom_data, which prints the model name
@@ -46,14 +45,14 @@ notes: |
A custom ROM takes precedence over anything embedded. load_custom_rom opens
the path as given, then through Path::find_data_file, and refuses a file
below 12288 or above 65536 bytes, which stops the start
(src/frontends/common/AppController.cpp:127-171,251-253). mem_initialize
(src/frontends/common/AppController.cpp:104-148,228-230). mem_initialize
accepts the buffer at exactly 16384 or 12288 bytes, or larger, taking the
trailing 16384 for the //e-class types and the trailing 12288 otherwise
(src/apple2/Memory.cpp:1038-1059). No hash or name is checked; the file is
whatever the user points at.
Character generators are res/charset40*.png, converted to XPM by CMake
(CMakeLists.txt:270-299) and included at src/apple2/Video.cpp:39-43. One of
(CMakeLists.txt:277-306) and included at src/apple2/Video.cpp:39-43. One of
five is chosen from the machine type and the keyboard language
(src/apple2/Video.cpp:1228-1252). The status font and the splash screen are
XPM as well (src/core/Asset.cpp:15-16,57,63). The four *_Video.rom images
@@ -61,7 +60,7 @@ notes: |
Master.dsk is inserted into slot 6 drive 1 at startup unless the command
line names a disk or the configuration autoloads one
(src/frontends/common/AppController.cpp:194-215). asset_find_master_disk
(src/frontends/common/AppController.cpp:171-192). asset_find_master_disk
resolves it through Path::find_data_file (src/core/Asset.cpp:25-39), which
walks the user data and config directories, the executable directory and its
res/ neighbours, the share and etc prefixes beside it, the compiled-in
@@ -81,9 +80,8 @@ notes: |
debugger running without its symbols (src/Debugger/Debugger_Symbols.cpp:495).
Peripheral cards are linked into the executable by default. With
BUILD_SHARED_PERIPHERALS, OFF at CMakeLists.txt:43, each card that
add_peripheral does not force built-in builds as a shared object
(CMakeLists.txt:554-555,662-666), and peripheral_plugins_init opens every *.so found in the
BUILD_SHARED_PERIPHERALS, OFF at CMakeLists.txt:43, each card builds as a
shared object, and peripheral_plugins_init opens every *.so found in the
plugin search paths in either build
(src/apple2/peripherals/Peripheral_Internal.cpp:192-219,
src/core/Util_Path.h:102-114).
@@ -151,7 +149,7 @@ files:
size: 49152
md5: 352fdbcae14c6a8c0398822c7a273309
sha1: f1c779af480b5bda2bdd03950c1201a5c5143bea
source_ref: "CMakeLists.txt:95,99-103; scripts/generate_roms.sh:107; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:99-100,1038-1059,1124-1134"
source_ref: "CMakeLists.txt:95,99-103; scripts/generate_roms.sh:107; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:99-100,1038-1059,1124-1134"
note: >
Larger than a system ROM: mem_initialize takes the trailing 12288 bytes
for this machine type.
@@ -165,7 +163,7 @@ files:
size: 12288
md5: c619b7edfcf021f3b8fd20d9386676ba
sha1: 8bd7ced83e209a15e9b19a05a5ef4b8e996dc1a5
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:109; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:101-102,1038-1059,1124-1134"
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:109; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:101-102,1038-1059,1124-1134"
- name: PRAVETS8M.ROM
required: false
@@ -176,7 +174,7 @@ files:
size: 12288
md5: 76c79535f7cf77973e2c711aa977a124
sha1: f1b4ff018acf95f3355f0d575b66a188d728b687
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:111; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:103-104,1038-1059,1124-1134"
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:111; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:103-104,1038-1059,1124-1134"
- name: PRAVETS8C.ROM
required: false
@@ -187,7 +185,7 @@ files:
size: 16384
md5: 1896d7b98dd940c89f7c8ea899b71006
sha1: c976fe56e57706c161f513a82ba3e0d8cda83904
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:110; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:105-106,1038-1059,1124-1134"
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:110; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:105-106,1038-1059,1124-1134"
note: >
A //e-class type: mem_initialize takes the trailing 16384 bytes when the
file is larger.
@@ -201,7 +199,7 @@ files:
size: 16384
md5: 8d84b614b545d4eec8799d3f325332cb
sha1: f163e5753c18ff0e812a448e8da406f102600edf
source_ref: "CMakeLists.txt:97,111-115; scripts/generate_roms.sh:112; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:107-108,1038-1059,1124-1134"
source_ref: "CMakeLists.txt:97,111-115; scripts/generate_roms.sh:112; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:107-108,1038-1059,1124-1134"
note: >
A //e-class type: mem_initialize takes the trailing 16384 bytes when the
file is larger.
@@ -211,7 +209,7 @@ analysis:
mechanism: >
res/roms/*.rom compiled into EmbeddedRoms.cpp by scripts/generate_roms.sh
at configure and build time, each behind an ENABLE_ROM_* macro
source_ref: "CMakeLists.txt:57-131,301-338; scripts/generate_roms.sh:97-118"
source_ref: "CMakeLists.txt:57-145,308-346; scripts/generate_roms.sh:97-119"
extraction: "hashes computed from the res/roms images the generator reads"
system_roms:
@@ -358,7 +356,7 @@ analysis:
image: res/roms/DISK2.rom
cmake_option: ENABLE_ROM_DISK2
default: on
source_ref: "CMakeLists.txt:118,120-124; scripts/generate_roms.sh:115; src/apple2/peripherals/disk/Disk.cpp:1125-1127"
source_ref: "CMakeLists.txt:118,121-125; scripts/generate_roms.sh:115; src/apple2/peripherals/disk/Disk.cpp:1125-1127"
size: 256
md5: 2020aa1413ff77fe29353f3ee72dc295
sha1: d4181c9f046aafc3fb326b381baac809d9e38d16
@@ -369,7 +367,7 @@ analysis:
image: res/roms/DISK2-P6.rom
cmake_option: ENABLE_ROM_DISK2
default: on
source_ref: "scripts/generate_roms.sh:117; src/apple2/peripherals/disk/Disk.cpp:618-624; CMakeLists.txt:957-970"
source_ref: "scripts/generate_roms.sh:117; src/apple2/peripherals/disk/Disk.cpp:618-624; CMakeLists.txt:942-955"
size: 256
md5: 5f1be0c1cdff26f5956eef9643911886
sha1: bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4
@@ -391,18 +389,14 @@ analysis:
- device: "Super Serial Card"
slot: 2
symbol: super_serial_rom
symbol: g_rom_ssc
image: res/roms/SSC.rom
source_ref: "src/apple2/peripherals/super_serial_card/SuperSerialRom.h:8-16; src/apple2/peripherals/super_serial_card/SuperSerial.cpp:356-358; CMakeLists.txt:884-887"
cmake_option: ENABLE_ROM_SSC
default: on
source_ref: "CMakeLists.txt:119,127-131; scripts/generate_roms.sh:118; src/apple2/peripherals/super_serial_card/SuperSerial.cpp:250-254"
size: 2048
md5: 67c0d61ab0911183faf05270f881a97e
sha1: 6dab633470c6bc4cb3e81d09fda46597caf8ee57
note: >
Not generated and behind no cmake option: the card carries the 2048
bytes as an array in SuperSerialRom.h, the last page mapped at $Cn00
and the whole image at $C800. The generator does not read
res/roms/SSC.rom; a build test pins its SHA-1 as the reference of
that transcription.
- device: "Mouse interface card"
slot: 4
@@ -410,7 +404,7 @@ analysis:
image: res/roms/MouseInterface.rom
cmake_option: ENABLE_ROM_MOUSE
default: on
source_ref: "CMakeLists.txt:126,128-132; scripts/generate_roms.sh:118; src/apple2/peripherals/mouse/Mouse.cpp:537-541"
source_ref: "CMakeLists.txt:133,135-139; scripts/generate_roms.sh:119; src/apple2/peripherals/mouse/Mouse.cpp:537-541"
size: 2048
md5: 22563ab338024dac7b03510371d49c57
sha1: 3a9d881a8a8d30f55b9719aceebbcf717f829d6f
@@ -419,7 +413,7 @@ analysis:
slot: 1
symbol: printer_rom
image: res/roms/Parallel.rom
source_ref: "src/apple2/peripherals/printer/Printer.cpp:30-53,215; CMakeLists.txt:872-874"
source_ref: "src/apple2/peripherals/printer/Printer.cpp:30-53,215; CMakeLists.txt:881-883"
size: 256
md5: 5902996f16dc78fc013f6e1db14805b3
sha1: c75c751589cbcc1ad4ab4f63676af7abadd86f5b
+10 -10
View File
@@ -30,57 +30,57 @@ notes: |
files:
- name: "<bios>.bin"
path: "pcsx2/bios/<bios>.bin"
path: "pcsx2/bios/"
required: true
description: "PS2 BIOS binary"
min_size: 4194304
max_size: 8388608
validation: [size]
source_ref: "pcsx2/ps2/BiosTools.cpp:33-34,63-180,249-274,286-348"
source_ref: "pcsx2/ps2/BiosTools.cpp:231-254,267-322"
note: >
Scans pcsx2/bios/ for any file between 4 MB and 8 MB. Validates via romdir
structure parsing (RESET + ROMVER entries). User selects BIOS via core option
pcsx2_bios. Falls back to first valid BIOS found if configured BIOS is missing.
- name: "<bios>.rom1"
path: "pcsx2/bios/<bios>.rom1"
path: "pcsx2/bios/"
required: false
max_size: 4194304
description: "DVD player ROM"
source_ref: "pcsx2/ps2/BiosTools.cpp:189-229,339"
source_ref: "pcsx2/ps2/BiosTools.cpp:190-211,314"
note: >
DVD player ROM. Tries <biospath>.rom1 (appended) then <biosbase>.rom1
(extension replaced). Silently skipped if not found.
- name: "<bios>.rom2"
path: "pcsx2/bios/<bios>.rom2"
path: "pcsx2/bios/"
required: false
max_size: 524288
description: "Chinese ROM extension"
source_ref: "pcsx2/ps2/BiosTools.cpp:189-229,340"
source_ref: "pcsx2/ps2/BiosTools.cpp:190-211,315"
note: >
Chinese region ROM extension. Same naming convention as rom1.
Only present on Chinese region consoles.
- name: "<bios>.nvm"
path: "pcsx2/bios/<bios>.nvm"
path: "pcsx2/bios/"
required: false
hle_fallback: true
size: 1024
description: "NVRAM / EEPROM data"
source_ref: "pcsx2/CDVD/CDVD.cpp:196-227"
source_ref: "pcsx2/CDVD/CDVD.cpp:224-267"
note: >
Console EEPROM data (language, timezone, region, iLink ID, OSD settings).
Path derived from BIOS path with extension replaced to .nvm.
Auto-created with region-appropriate defaults if missing or invalid.
- name: "<bios>.mec"
path: "pcsx2/bios/<bios>.mec"
path: "pcsx2/bios/"
required: false
hle_fallback: true
size: 4
description: "Mechacon version"
source_ref: "pcsx2/CDVD/CDVD.cpp:229-245"
source_ref: "pcsx2/CDVD/CDVD.cpp:255-266"
note: >
Mechacon (disc drive controller) version as u32.
Auto-created with default 0x00020603 if missing.
+1 -1
View File
@@ -17,7 +17,7 @@ notes: |
standalone upstream.
retro_load_game() calls lutro_load(info->path) to load the game
directory or archive (libretro.c:241). The core exposes
directory or archive (libretro.c:267). The core exposes
love.filesystem.getAppdataDirectory to games as the system_dir
(filesystem.c:296) but does not load any files from it itself.
No BIOS, firmware, or system files required.
+1010 -1113
View File
File diff suppressed because it is too large. Load diff
+401 -410
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -680,7 +680,7 @@ files:
required: true
category: bios_zip
system: casio-loopy
source_ref: "src/mame/casio/casloopy.cpp:2097-2105"
source_ref: "src/mame/casio/casloopy.cpp:2105-2462"
contents:
- name: hd6437021.lsi302
description: SH-1 CPU internal mask ROM
+2 -2
View File
@@ -292,7 +292,7 @@ files:
- name: "scph5502.bin"
system: sony-playstation
description: "SCPH-5502 / v3.0E BIOS"
region: [europe, oceania]
region: [europe]
required: true
size: 524288
sha256: "1faaa18fa820a0225e488d9f086296b8e6c46df739666093987ff7d8fd352c09"
@@ -376,7 +376,7 @@ files:
- name: "epr-17952a.ic8"
system: sega-stv
description: "ST-V BIOS (North America)"
region: [north-america, south-korea, asia-pal, brazil, latin-america]
region: [north-america]
required: true
size: 524288
validation: [size]
+6
View File
@@ -25,24 +25,28 @@ notes: >
files:
- name: "syscard3.pce"
description: "CD-ROM System Card 3.0 (Japan)"
region: [japan]
required: true
source_ref: "libretro.cpp:1051-1052, mednafen/settings.cpp:40"
note: "Default value for pce_cdbios option."
- name: "syscard2.pce"
description: "CD-ROM System Card 2.0 (Japan)"
region: [japan]
required: false
source_ref: "libretro.cpp:1053-1054"
note: "pce_cdbios = 'System Card 2'."
- name: "syscard1.pce"
description: "CD-ROM System Card 1.0 (Japan)"
region: [japan]
required: false
source_ref: "libretro.cpp:1055-1056"
note: "pce_cdbios = 'System Card 1'."
- name: "gexpress.pce"
description: "Games Express CD Card"
region: [japan]
required: false
aliases: ["gecard.pce"]
source_ref: "libretro.cpp:1057-1058, mednafen/settings.cpp:41, mednafen/pce/pce.cpp:373-411"
@@ -50,12 +54,14 @@ files:
- name: "syscard3u.pce"
description: "CD-ROM System Card 3.0 (US / TurboGrafx-CD)"
region: [north-america]
required: false
source_ref: "libretro.cpp:1059-1060"
note: "pce_cdbios = 'System Card 3 US'. Not in .info."
- name: "syscard2u.pce"
description: "CD-ROM System Card 2.0 (US / TurboGrafx-CD)"
region: [north-america]
required: false
source_ref: "libretro.cpp:1061-1062"
note: "pce_cdbios = 'System Card 2 US'. Not in .info."
+6
View File
@@ -23,24 +23,28 @@ notes: >
files:
- name: "syscard3.pce"
description: "CD-ROM System Card 3.0 (Japan)"
region: [japan]
required: true
source_ref: "libretro.c:65, libretro.c:1896-1901"
note: "Default value for pce_fast_cdbios option."
- name: "syscard2.pce"
description: "CD-ROM System Card 2.0 (Japan)"
region: [japan]
required: false
source_ref: "libretro.c:1903"
note: "pce_fast_cdbios = 'System Card 2'."
- name: "syscard1.pce"
description: "CD-ROM System Card 1.0 (Japan)"
region: [japan]
required: false
source_ref: "libretro.c:1905"
note: "pce_fast_cdbios = 'System Card 1'."
- name: "gexpress.pce"
description: "Games Express CD Card"
region: [japan]
required: false
aliases: ["gecard.pce"]
source_ref: "libretro.c:1906-1907"
@@ -48,12 +52,14 @@ files:
- name: "syscard3u.pce"
description: "CD-ROM System Card 3.0 (US / TurboGrafx-CD)"
region: [north-america]
required: false
source_ref: "libretro.c:1908-1909"
note: "pce_fast_cdbios = 'System Card 3 US'. Not in .info."
- name: "syscard2u.pce"
description: "CD-ROM System Card 2.0 (US / TurboGrafx-CD)"
region: [north-america]
required: false
source_ref: "libretro.c:1910-1911"
note: "pce_fast_cdbios = 'System Card 2 US'. Not in .info."
+9 -9
View File
@@ -30,7 +30,7 @@ notes: |
mgba_skip_bios (default OFF) - skip the boot animation even if loaded
The libretro port resolves BIOS filenames in retro_load_game()
(src/platform/libretro/libretro.c:2060-2118). It picks the filename
(src/platform/libretro/libretro.c:2091-2148). It picks the filename
based on detected model:
GBA -> gba_bios.bin
GB (DMG/MGB) -> gb_bios.bin
@@ -38,7 +38,7 @@ notes: |
SGB -> sgb_bios.bin
SGB2 -> gb_bios.bin (falls to default, missing case)
The standalone core (src/gb/core.c:649-696) correctly maps SGB2 to
The standalone core (src/gb/core.c:637-684) correctly maps SGB2 to
sgb_bios.bin (marked TODO for a dedicated file). The libretro port
omits GB_MODEL_SGB2 from its switch, so SGB2 falls to default.
@@ -57,7 +57,7 @@ files:
size: 16384 # 16 KB (0x4000, GBA_SIZE_BIOS)
validation: [size]
note: "GBA BIOS. HLE replacement built in. Real BIOS adds boot logo and full SWI accuracy."
source_ref: "src/platform/libretro/libretro.c:2068"
source_ref: "src/platform/libretro/libretro.c:2099"
# -------------------------------------------------------
# Game Boy - boot ROM (optional, skip fallback)
@@ -68,7 +68,7 @@ files:
size: 256 # 256 B (0x100)
validation: [crc32]
note: "DMG/MGB boot ROM. Scrolling Nintendo logo. Skipped if absent."
source_ref: "src/platform/libretro/libretro.c:2104"
source_ref: "src/platform/libretro/libretro.c:971"
# -------------------------------------------------------
# Game Boy Color - boot ROM (optional, skip fallback)
@@ -79,7 +79,7 @@ files:
size: 2304 # 2304 B (0x900)
validation: [crc32]
note: "CGB boot ROM. Used for CGB, AGB (GBA in GB mode), and SCGB models."
source_ref: "src/platform/libretro/libretro.c:2097"
source_ref: "src/platform/libretro/libretro.c:2127"
# -------------------------------------------------------
# Super Game Boy - boot ROM (optional, skip fallback)
@@ -89,14 +89,14 @@ files:
required: false
size: 256 # 256 B (0x100)
validation: [crc32]
note: "SGB boot ROM. SGB2 maps here in standalone (src/gb/core.c:655) but falls to gb_bios.bin in libretro."
source_ref: "src/platform/libretro/libretro.c:2100"
note: "SGB boot ROM. SGB2 maps here in standalone (src/gb/core.c:643) but falls to gb_bios.bin in libretro."
source_ref: "src/platform/libretro/libretro.c:2130"
platform_details:
gba:
bios_size: 16384 # 16 KB
hle_bios: true
source_ref: "src/gba/hle-bios.c, src/gba/gba.c:513-552"
source_ref: "src/gba/hle-bios.c, src/gba/gba.c:520-551"
note: |
GBALoadBIOS() validates size (must be exactly 0x4000) then computes
an internal checksum. Two official checksums are recognized:
@@ -125,7 +125,7 @@ platform_details:
sgb:
bios_size: 256 # 256 B
hle_bios: false
source_ref: "src/gb/gb.c:570-605, src/gb/core.c:654-656"
source_ref: "src/gb/gb.c:570-605, src/gb/core.c:642-644"
note: |
Accepted SGB CRC32 checksums:
SGB = 0xEC8A83B9, SGB2 = 0x53D0DD63
+8 -10
View File
@@ -98,7 +98,7 @@ notes: |
MSX.emu/src/blueMSX/Memory/romMapperDRAM.c:88-99), and the Philips FDC, Panasonic
FDC and MoonSound mappers test nothing at all
(MSX.emu/src/blueMSX/Memory/romMapperPhilipsFdc.c:139-146,
MSX.emu/src/blueMSX/Memory/romMapperTC8566AF.c:228-255,
MSX.emu/src/blueMSX/Memory/romMapperTC8566AF.c:236-262,
MSX.emu/src/blueMSX/Memory/romMapperMoonsound.c:129-158).
The ROM database is compiled in. mediaDbGuessRom matches a cartridge's SHA-1 against
@@ -254,7 +254,7 @@ files:
size: 408
sha1: "483b2c34fcb3ddcf650314e45104f358ef74c98b"
description: "MSX1 machine definition"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/EmuMenuViews.cc:32-97"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/system.ccm:75-76, MSX.emu/src/main/EmuMenuViews.cc:32-97"
- name: "config.ini"
path: "Machines/MSX2/config.ini"
@@ -264,8 +264,7 @@ files:
size: 649
sha1: "460ded0dbfc0285490da87a446b0321b6496aa5b"
description: "MSX2 machine definition, the default MSX machine"
note: "Default of the machine name option (MSX.emu/src/main/system.ccm:75)."
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/EmuMenuViews.cc:32-97"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/system.ccm:75-76, MSX.emu/src/main/EmuMenuViews.cc:32-97"
- name: "config.ini"
path: "Machines/MSX2+/config.ini"
@@ -275,7 +274,7 @@ files:
size: 773
sha1: "cb7d14a17c4f4632f17ba5a64160cdd876dd6010"
description: "MSX2+ machine definition"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/EmuMenuViews.cc:32-97"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/system.ccm:75-76, MSX.emu/src/main/EmuMenuViews.cc:32-97"
- name: "config.ini"
path: "Machines/MSXturboR/config.ini"
@@ -285,7 +284,7 @@ files:
size: 941
sha1: "9836d109ec7879374dcd044da149f1b5aafd4664"
description: "MSX turbo R machine definition"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/EmuMenuViews.cc:32-97"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/system.ccm:75-76, MSX.emu/src/main/EmuMenuViews.cc:32-97"
- name: "config.ini"
path: "Machines/COL - ColecoVision/config.ini"
@@ -295,8 +294,7 @@ files:
size: 347
sha1: "0f0b7b73ba6f8677dfc5c824bb3edf6df2ff653e"
description: "ColecoVision machine definition, the default Coleco machine"
note: "Default of the machine name option (MSX.emu/src/main/system.ccm:76)."
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/EmuMenuViews.cc:32-97"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/system.ccm:75-76, MSX.emu/src/main/EmuMenuViews.cc:32-97"
- name: "MSX.rom"
path: "Machines/Shared Roms/MSX.rom"
@@ -396,7 +394,7 @@ files:
required: true
size: 16384
description: "Panasonic floppy disk ROM of the MSX2+ machine"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468,1168-1181, MSX.emu/src/main/RomLoader.cc:57-92,94-133, MSX.emu/src/blueMSX/Memory/romMapperTC8566AF.c:228-255"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468,1168-1181, MSX.emu/src/main/RomLoader.cc:57-92,94-133, MSX.emu/src/blueMSX/Memory/romMapperTC8566AF.c:236-262"
- name: "MSXTR.rom"
path: "Machines/Shared Roms/MSXTR.rom"
@@ -436,7 +434,7 @@ files:
required: true
size: 65536
description: "MSX-DOS 2.3 disk ROM of the turbo R machine"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468,1168-1181, MSX.emu/src/main/RomLoader.cc:57-92,94-133, MSX.emu/src/blueMSX/Memory/romMapperTC8566AF.c:228-255"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468,1168-1181, MSX.emu/src/main/RomLoader.cc:57-92,94-133, MSX.emu/src/blueMSX/Memory/romMapperTC8566AF.c:236-262"
- name: "coleco.rom"
path: "Machines/COL - ColecoVision/coleco.rom"
+2 -3
View File
@@ -261,9 +261,8 @@ files:
Named in the audio BIOS region by irrmaze, neogeo, svcboot, svcplus,
svcplusa and svcsplus, and reached in this archive by the parent lookup of
irrmaze. The region is exempt from the fatal path and the buffer it lands
in is never read by the emulation
(NEO.emu/src/gngeo/roms.c:1034-1039,1413-1418,1440-1461).
source_ref: "NEO.emu/res/romsets/irrmaze.drv, NEO.emu/src/gngeo/roms.h:9,62"
in is never read by the emulation.
source_ref: "NEO.emu/res/romsets/irrmaze.drv, NEO.emu/src/gngeo/roms.c:1034-1039,1413-1418,1440-1461, NEO.emu/src/gngeo/roms.h:63"
- name: "gngeo_data.zip"
system: snk-neogeo-mvs
+5 -7
View File
@@ -151,18 +151,16 @@ files:
source_ref: "cbus/ideio.c:1928-1930, cbus/ideio.c:1944-1981"
# -- SCSI BIOS ROM --
# Read into a 0x4000 buffer; any non-empty read is kept. Falls back to the
# scsibios[] stub.
# Loaded by scsiio.c:219. 16 KB (0x4000). Falls back to scsibios[] stub.
- name: "scsi.rom"
path: "np2kai/scsi.rom"
max_size: 16384
size: 16384
required: false
hle_fallback: true
note: >
SCSI controller BIOS ROM, up to 16 KB: the full-size test is commented
out and a shorter file is used as read. The core includes a built-in
SCSI controller BIOS ROM (16 KB). The core includes a built-in
SCSI BIOS stub as fallback.
source_ref: "cbus/scsiio.c:720-732"
source_ref: "cbus/scsiio.c:214-231"
# -- SASI BIOS ROM --
# Loaded by sasiio.c:455. 4 KB (0x1000). Falls back to sasibios[] stub.
@@ -215,4 +213,4 @@ files:
note: >
Keyboard remapping configuration (text file). User-created file
for custom keyboard layout. The core uses built-in defaults if absent.
source_ref: "keystat.c:46,116-151"
source_ref: "keystat.c:43,113-148"
+2 -3
View File
@@ -61,10 +61,9 @@ files:
md5: "23bf80c259f182f582beeb368aba98f5"
required: true
bundled: true
source_ref: "src/libretro.cpp:332-371, src/NuonEnvironment.cpp:595, src/NuonEnvironment.cpp:617-619, src/bios.cpp:566-582"
source_ref: "src/libretro.cpp:332-371, src/NuonEnvironment.cpp:595, src/NuonEnvironment.cpp:617-619, src/bios.cpp:566-582, src/coff.cpp:47-70"
note: >
Loaded into MPE3 by InitBios through LoadCoffFile, which rejects a file
whose magic is not 0x0120 (src/coff.cpp:47-71). The 2007 build shipped in the release
Loaded into MPE3 by InitBios. The 2007 build shipped in the release
archives (19410 bytes, sha1 4f42ed8f5e171cc79112d1c1e201381e83b1fc0d)
loads the same way.
+6 -6
View File
@@ -20,7 +20,7 @@ notes: |
Doukutsu.exe there (nxengine/libretro/libretro.cpp:289-294). When launched with a .exe
content file, it uses the parent directory of that file (nxengine/libretro/libretro.cpp:272).
At startup (nxengine/main.cpp:75-90), the core opens Doukutsu.exe and extracts:
At startup (main.cpp:75-90), the core opens Doukutsu.exe and extracts:
ORG music (extractorg.c), PXT sound effects (extractpxt.c), stage tile
attributes (extractstages.c), 18 credit BMPs + pixel.bmp (endpic/),
and the wavetable (nxengine/extract-auto/cachefiles.c:464-485). All kept in memory.
@@ -28,7 +28,7 @@ notes: |
The data/ directory (399 files from the freeware release) is loaded into
an in-memory cache at init (nxengine/extract-auto/cachefiles.c:38-439, 497-540). All subsequent
file access goes through this cache. The core verifies data/ by checking
for data/npc.tbl (nxengine/main.cpp:47-58).
for data/npc.tbl (main.cpp:47-58).
The font is compiled-in (bitmap_font.h). The upstream standalone version
uses font.ttf via SDL_ttf.
@@ -45,7 +45,7 @@ files:
size: 1478656
md5: "38695d3d69d7a0ada8178072dad4c58b"
sha1: "bb2d0441e073da9c584f23c2ad8c7ab8aac293bf"
source_ref: "nxengine/main.cpp:77-78 (opened for extraction), nxengine/libretro/libretro.cpp:278 (existence check)"
source_ref: "main.cpp:77-78 (opened for extraction), nxengine/libretro/libretro.cpp:290 (existence check)"
note: "Placed in system/nxengine/. The core extracts ORG music, PXT sounds, stage tile attributes, BMP graphics, and wavetable from this binary at each launch."
- name: "data/"
@@ -64,7 +64,7 @@ files:
system: cave-story
description: "NPC attribute table (entity behavior flags, HP, damage, display rect offsets)"
required: true
source_ref: "nxengine/main.cpp:47-53 (existence check for data/ directory), nxengine/ai/ai.cpp:56-59 (loaded for NPC properties)"
source_ref: "main.cpp:50 (existence check for data/ directory), ai/ai.cpp:56-59 (loaded for NPC properties)"
note: "Located in system/nxengine/data/. Used to validate data directory presence and to load NPC behavior attributes."
- name: "data/sprites.sif"
@@ -84,5 +84,5 @@ files:
description: "Tile attribute lookup table (maps tile codes to collision/behavior attributes)"
required: false
hle_fallback: true
source_ref: "nxengine/map.cpp:290-303 (loaded at init, hardcoded default if missing)"
note: "Not part of the freeware distribution. Generated by the standalone NXEngine extraction tool. The libretro core has hardcoded defaults in nxengine/map.cpp:30."
source_ref: "map.cpp:290-303 (loaded at init, hardcoded default if missing)"
note: "Not part of the freeware distribution. Generated by the standalone NXEngine extraction tool. The libretro core has hardcoded defaults in map.cpp:30."
+4
View File
@@ -34,6 +34,7 @@ notes: |
files:
- name: "o2rom.bin"
system: odyssey2
region: [north-america]
required: true
size: 1024
md5: "562d5ebf9e030a40d6fabfc2f33139fd"
@@ -45,6 +46,7 @@ files:
- name: "c52.bin"
system: videopac
region: [europe]
required: true
size: 1024
md5: "f1071cdb0b6b10dde94d3bc8a6146387"
@@ -56,6 +58,7 @@ files:
- name: "g7400.bin"
system: videopac
region: [europe]
required: true
size: 1024
md5: "c500ff71236068e0dc0d0603d265ae76"
@@ -67,6 +70,7 @@ files:
- name: "jopac.bin"
system: videopac
region: [france]
required: true
size: 1024
md5: "279008e4a0db2dc5f1c048853b033828"
+13
View File
@@ -41,6 +41,7 @@ files:
# -------------------------------------------------------
- name: "panafz1.bin"
system: 3do
region: [north-america]
required: true
size: 1048576 # 1 MB
md5: "f47264dd47fe30f73ab3c010015c155b"
@@ -53,6 +54,7 @@ files:
# -------------------------------------------------------
- name: "panafz1j.bin"
system: 3do
region: [japan]
required: true
size: 1048576 # 1 MB
md5: "a496cfdded3da562759be3561317b605"
@@ -65,6 +67,7 @@ files:
# -------------------------------------------------------
- name: "panafz1j-norsa.bin"
system: 3do
region: [japan]
required: false
size: 1048576 # 1 MB
md5: "f6c71de7470d16abe4f71b1444883dc8"
@@ -77,6 +80,7 @@ files:
# -------------------------------------------------------
- name: "panafz10.bin"
system: 3do
region: [north-america]
required: true
size: 1048576 # 1 MB
md5: "51f2f43ae2f3508a14d9f56597e2d3ce"
@@ -89,6 +93,7 @@ files:
# -------------------------------------------------------
- name: "panafz10-norsa.bin"
system: 3do
region: [north-america]
required: false
size: 1048576 # 1 MB
md5: "1477bda80dc33731a65468c1f5bcbee9"
@@ -101,6 +106,7 @@ files:
# -------------------------------------------------------
- name: "panafz10e-anvil.bin"
system: 3do
region: [europe]
required: true
size: 1048576 # 1 MB
md5: "a48e6746bd7edec0f40cff078f0bb19f"
@@ -113,6 +119,7 @@ files:
# -------------------------------------------------------
- name: "panafz10e-anvil-norsa.bin"
system: 3do
region: [europe]
required: false
size: 1048576 # 1 MB
md5: "cf11bbb5a16d7af9875cca9de9a15e09"
@@ -125,6 +132,7 @@ files:
# -------------------------------------------------------
- name: "goldstar.bin"
system: 3do
region: [north-america]
required: true
size: 1048576 # 1 MB
md5: "8639fd5e549bd6238cfee79e3e749114"
@@ -137,6 +145,7 @@ files:
# -------------------------------------------------------
- name: "sanyotry.bin"
system: 3do
region: [japan]
required: true
size: 1048576 # 1 MB
md5: "35fa1a1ebaaeea286dc5cd15487c13ea"
@@ -149,6 +158,7 @@ files:
# -------------------------------------------------------
- name: "3do_arcade_saot.bin"
system: 3do
region: [north-america]
required: false
size: 524288 # 512 KB
md5: "8970fc987ab89a7f64da9f8a8c4333ff"
@@ -161,6 +171,7 @@ files:
# -------------------------------------------------------
- name: "panafz1-kanji.bin"
system: 3do
region: [japan]
required: false
size: 933636
md5: "b8dc97f778a6245c58e064b0312e8281"
@@ -173,6 +184,7 @@ files:
# -------------------------------------------------------
- name: "panafz1j-kanji.bin"
system: 3do
region: [japan]
required: false
size: 1048576 # 1 MB
md5: "c23fb5d5e6bb1c240d02cf968972be37"
@@ -185,6 +197,7 @@ files:
# -------------------------------------------------------
- name: "panafz10ja-anvil-kanji.bin"
system: 3do
region: [japan]
required: false
size: 1048576 # 1 MB
md5: "428577250f43edc902ea239c50d2240d"
+1 -1
View File
@@ -16,7 +16,7 @@ files:
required: false
description: "64DD IPL ROM"
note: "Only loaded when a 64DD disk image (.ndd) is present via subsystem API. Core fails to load disk games without it."
source_ref: "libretro/libretro.c:848"
source_ref: "libretro/libretro.c:1021"
notes:
hle_available: true
+5 -5
View File
@@ -83,7 +83,7 @@ notes: |
files:
- name: "<bios>.bin"
path: "pcsx2/bios/<bios>.bin"
path: "pcsx2/bios/"
description: "PS2 BIOS image"
min_size: 4194304
max_size: 8388608
@@ -96,7 +96,7 @@ files:
auto selection accept any size that passes the romdir check.
- name: "<bios>.rom1"
path: "pcsx2/bios/<bios>.rom1"
path: "pcsx2/bios/"
description: "DVD player ROM"
max_size: 4194304
required: false
@@ -106,7 +106,7 @@ files:
skipped with a console line when absent.
- name: "<bios>.rom2"
path: "pcsx2/bios/<bios>.rom2"
path: "pcsx2/bios/"
description: "Chinese ROM extension"
max_size: 4194304
required: false
@@ -115,7 +115,7 @@ files:
Same lookup as rom1. Present on Chinese region consoles only.
- name: "<bios>.nvm"
path: "pcsx2/bios/<bios>.nvm"
path: "pcsx2/bios/"
description: "Console NVRAM (region parameters, language, iLink ID, OSD settings)"
size: 1024
required: false
@@ -127,7 +127,7 @@ files:
on save.
- name: "<bios>.mec"
path: "pcsx2/bios/<bios>.mec"
path: "pcsx2/bios/"
description: "Mechacon version, one u32"
size: 4
required: false
+3 -21
View File
@@ -78,7 +78,7 @@ files:
note: "Any file in the BIOS folder whose romdir holds RESET and ROMVER is accepted, whatever its name or size. Naming convention ps2-VVVVr-YYYYMMDD.bin carries version, region and date."
source_ref: "pcsx2/ps2/BiosTools.cpp:261-323, pcsx2/ps2/BiosTools.cpp:74-167"
- name: ps2-0230a-20080220.rom1
- name: rom1.bin
system: sony-playstation-2
required: false
max_size: 262144
@@ -86,7 +86,7 @@ files:
note: "Tried as {bios}.rom1 then {biosbase}.rom1. Read into the 256 KB ROM1 region and truncated to it. Logged and skipped when absent."
source_ref: "pcsx2/ps2/BiosTools.cpp:190-229, pcsx2/ps2/BiosTools.cpp:298, pcsx2/MemoryTypes.h:22"
- name: ps2-0230a-20080220.rom2
- name: ROM2.BIN
system: sony-playstation-2
required: false
max_size: 524288
@@ -94,7 +94,7 @@ files:
note: "Tried as {bios}.rom2 then {biosbase}.rom2. Read into the 512 KB ROM2 region and truncated to it. Present on Chinese region consoles."
source_ref: "pcsx2/ps2/BiosTools.cpp:190-229, pcsx2/ps2/BiosTools.cpp:299, pcsx2/MemoryTypes.h:23"
- name: ps2-0230a-20080220.erom
- name: EROM.BIN
system: sony-playstation-2
required: false
max_size: 1835008
@@ -102,24 +102,6 @@ files:
note: "Tried as {bios}.erom then {biosbase}.erom. Read into the 1.75 MB EROM region and truncated to it."
source_ref: "pcsx2/ps2/BiosTools.cpp:190-229, pcsx2/ps2/BiosTools.cpp:300, pcsx2/MemoryTypes.h:24"
- name: ps2-0230a-20080220.nvm
system: sony-playstation-2
required: false
hle_fallback: true
min_size: 1024
description: "Console NVRAM"
note: "Read at the BIOS path with the extension set to nvm. A substitute is written when the file is shorter than 1024 bytes."
source_ref: "pcsx2/CDVD/CDVD.cpp:138-149"
- name: ps2-0230a-20080220.mec
system: sony-playstation-2
required: false
hle_fallback: true
size: 4
description: "Mechacon version"
note: "Read at the BIOS path with the extension set to mec. A 4-byte substitute (03 06 02 00) is written when the file is shorter."
source_ref: "pcsx2/CDVD/CDVD.cpp:93-122"
- name: eeprom.dat
system: sony-playstation-2
required: false
+26 -48
View File
@@ -15,7 +15,7 @@ systems: [sony-playstation-2]
notes: |
Filename-agnostic BIOS detection. Scans bios/ for any file between 4-8 MB
with valid romdir structure (RESET + ROMVER entries). No hash validation.
Companion files (.rom1, .rom2, .nvm, .mec) derive their names from the selected BIOS.
Companion files (.rom1, .rom2, .nvm, .mec) derive paths from selected BIOS.
ROM1 (DVD player) and ROM2 (Chinese extension) silently skipped if missing.
NVM and MEC auto-created with defaults if missing.
@@ -25,38 +25,26 @@ files:
min_size: 4194304
max_size: 8388608
validation: [size]
source_ref: "pcsx2/ps2/BiosTools.cpp:16-17,80-197,258-283,317-370"
source_ref: "pcsx2/ps2/BiosTools.cpp:258-362"
note: "Accepts any file 4-8 MB with valid romdir (RESET + ROMVER). Naming convention ps2-VVVVr-YYYYMMDD.bin (version, region, date)."
- name: ps2-0230a-20080220.rom1
- name: rom1.bin
required: false
max_size: 4194304
description: "DVD player ROM"
note: "Tried as {bios}.rom1 then {biosbase}.rom1, opened case-insensitively. Copied to the ROM1 region. Logged and skipped when absent."
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241, pcsx2/ps2/BiosTools.cpp:366"
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241,366"
note: "DVD player ROM. Tries {biospath}.rom1 then {biosbase}.rom1. Silently skipped if missing."
- name: ps2-0230a-20080220.rom2
- name: ROM2.BIN
required: false
max_size: 4194304
description: "Chinese ROM extension"
note: "Same two-step naming as rom1. Only Chinese region consoles carry one."
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241, pcsx2/ps2/BiosTools.cpp:367"
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241,367"
note: "Chinese ROM extension. Same naming convention as rom1. Only present on Chinese region consoles."
- name: ps2-0230a-20080220.nvm
- name: EROM.BIN
required: false
hle_fallback: true
size: 1024
description: "Console NVRAM"
note: "Read at the BIOS path with the extension replaced by nvm, opened case-insensitively. Built in memory from region defaults when absent or blank."
source_ref: "pcsx2/CDVD/CDVD.cpp:165-189"
- name: ps2-0230a-20080220.mec
required: false
hle_fallback: true
size: 4
description: "Mechacon version"
note: "Read at the BIOS path with the extension replaced by mec. Defaults to 0x00020603 and is written back when it cannot be read."
source_ref: "pcsx2/CDVD/CDVD.cpp:190-204"
source_ref: "pcsx2/ps2/BiosTools.cpp"
note: "Extended ROM. Present in some BIOS dumps but not loaded by PCSX2 code via LoadExtraRom."
path: null
- name: eeprom.dat
required: false
@@ -66,32 +54,22 @@ files:
note: "DEV9 network adapter EEPROM. Falls back to built-in defaults if missing."
- name: GameIndex.yaml
path: resources/GameIndex.yaml
path: pcsx2/resources/GameIndex.yaml
required: false
bundled: true
sha1: 5e2d50a3376dc6a0750505bec68626d39a5bd4c1
size: 2683897
category: game_data
description: "per-title compatibility and fix database"
source_ref: "pcsx2/GameDatabase.cpp:39, pcsx2/GameDatabase.cpp:1026-1035"
note: "Read from the resources directory shipped with the application. Console error and no per-title fixes if missing."
mode: libretro
source_ref: "pcsx2/GameDatabase.cpp:46, pcsx2/GameDatabase.cpp:896"
note: "Game compatibility database. OSD warning if missing."
- name: RedumpDatabase.yaml
path: resources/RedumpDatabase.yaml
- name: cheats_ws.zip
path: pcsx2/resources/cheats_ws.zip
required: false
bundled: true
sha1: bf2c73d668cd671df8adfe2ec3c7074e8ba9176a
size: 1917242
category: game_data
description: "disc hash database"
source_ref: "pcsx2/GameDatabase.cpp:1133, pcsx2/GameDatabase.cpp:1188-1197"
note: "Read from the resources directory shipped with the application, used to name a disc from its dump."
mode: libretro
source_ref: "pcsx2/VMManager.cpp:348-361"
note: "Widescreen patches archive."
- name: patches.zip
path: resources/patches.zip
- name: cheats_ni.zip
path: pcsx2/resources/cheats_ni.zip
required: false
bundled: true
category: game_data
description: "built-in game patch archive"
source_ref: "pcsx2/Patch.cpp:117, pcsx2/Patch.cpp:289-318"
note: "Opened read only from the resources directory shipped with the application and searched for the pnach matching the running serial and CRC. Widescreen and no-interlacing patches live inside it."
mode: libretro
source_ref: "pcsx2/VMManager.cpp:383-396"
note: "No-interlacing patches archive."
+11 -11
View File
@@ -29,7 +29,7 @@ files:
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[0])"
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[0])"
note: "Preferred JP BIOS, searched first by exact filename."
# -- Region: North America (PSX_REGION_US = 0) --
@@ -41,32 +41,32 @@ files:
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[1])"
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[1])"
note: "Preferred US BIOS, searched first by exact filename."
# -- Region: Europe (PSX_REGION_EU = 2) --
- name: "scph5502.bin"
description: "SCPH-5502 (v3.0 01-06-97 E)"
region: [europe, oceania]
region: [europe]
size: 524288
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[2])"
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[2])"
note: "Preferred EU BIOS, searched first by exact filename."
# -- Fallback BIOS filenames (searched in order after scph550x) --
- name: "psxonpsp660.bin"
description: "PSP embedded PS1 BIOS, filed as the Japanese BIOS"
region: [japan]
description: "PSP embedded PS1 BIOS (region detected at runtime)"
region: [world]
size: 524288
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[3]), frontend/libretro.c:3654-3669 (try_use_bios region guess)"
note: "The core reads the region out of the image: bytes 0x7ff51 are ' J' in this dump, so it takes the JP slot (' E' takes EU, anything else US), one image per slot, first found kept. The disc licence picks the slot at boot (Config.Bios[Config.PsxRegion]); a US or EU disc only reaches this file when its own slot is empty. Must be 512 KB."
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[3])"
note: "Region detected from content at runtime. Must be 512 KB in libretro context."
- name: "scph101.bin"
description: "SCPH-101 (v4.4 03-24-00 A) - PSone US"
@@ -75,7 +75,7 @@ files:
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[4])"
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[4])"
note: "PSone slim model."
- name: "scph7001.bin"
@@ -85,7 +85,7 @@ files:
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[5])"
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[5])"
- name: "scph1001.bin"
description: "SCPH-1001 (v2.2 12-04-95 A)"
@@ -94,7 +94,7 @@ files:
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[6])"
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[6])"
note: "Original US model. Last in the explicit filename search list."
# -- Dynamic scan fallback --
+5 -5
View File
@@ -12,7 +12,7 @@ systems:
- sega-megadrive
- sega-genesis
- sega-megacd
- sega-megacd
- sega-segacd
- sega-32x
- sega-mastersystem
- sega-gamegear
@@ -63,7 +63,7 @@ files:
# Mega CD / Sega CD - US region
# -------------------------------------------------------
- name: "us_scd2_9306.bin"
system: sega-megacd
system: sega-segacd
variant_group: "mega-cd-bios"
region: [north-america]
priority: 1
@@ -73,7 +73,7 @@ files:
source_ref: "platform/libretro/libretro.c:1273"
- name: "SegaCDBIOS9303.bin"
system: sega-megacd
system: sega-segacd
variant_group: "mega-cd-bios"
region: [north-america]
priority: 2
@@ -83,7 +83,7 @@ files:
source_ref: "platform/libretro/libretro.c:1273"
- name: "us_scd1_9210.bin"
system: sega-megacd
system: sega-segacd
variant_group: "mega-cd-bios"
region: [north-america]
priority: 3
@@ -93,7 +93,7 @@ files:
source_ref: "platform/libretro/libretro.c:1273"
- name: "bios_CD_U.bin"
system: sega-megacd
system: sega-segacd
variant_group: "mega-cd-bios"
region: [north-america]
priority: 4
+1 -1
View File
@@ -84,7 +84,7 @@ platform_details:
size: 4096
load_priority:
source_ref: "source/PokeMini.c:500-509"
source_ref: "source/PokeMini.c:515-523"
note: |
During PokeMini_Reset(), the core first reloads FreeBIOS as a
safe baseline, then attempts to load bios.min from disk. If
+1 -1
View File
@@ -51,5 +51,5 @@ files:
md5: "72ae1b47820fcc93cc0df9c428d0face"
sha1: "5f4aed208301449c2e9514edfd325fe9dead76fa"
crc32: "a5751b99"
source_ref: "src/d_main.c:1449-1465 (PACKAGE .wad load), libretro/libretro.c:4171-4252 (I_FindFile search), src/config.h:39 (PACKAGE=prboom)"
source_ref: "src/d_main.c:1438-1476 (PACKAGE .wad load), libretro/libretro.c:4254-4330 (I_FindFile search), src/config.h:39 (PACKAGE=prboom)"
note: "Searched in system/prboom/ then system/. Falls back to internal defaults if missing, but menus and HUD may render incorrectly without it."
+39 -6
View File
@@ -37,6 +37,7 @@ files:
region: [north-america]
size: 2097152
required: false
mode: standalone
hle_fallback: true
note: "GameCube NTSC-U boot ROM. HLE available but real IPL needed for GC menu boot and accurate fonts"
source_ref: "Source/Core/Common/CommonPaths.h:138, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:109-110"
@@ -46,6 +47,7 @@ files:
region: [europe]
size: 2097152
required: false
mode: standalone
hle_fallback: true
note: "GameCube PAL boot ROM"
source_ref: "Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:184"
@@ -55,6 +57,7 @@ files:
region: [japan]
size: 2097152
required: false
mode: standalone
hle_fallback: true
note: "GameCube NTSC-J boot ROM. JAP is the legacy directory name"
source_ref: "Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:186"
@@ -67,23 +70,25 @@ files:
path: "GC/dsp_rom.bin"
size: 8192
required: false
mode: standalone
hle_fallback: true
validation: [size, adler32]
known_hash_adler32: ["0x66f334fe", "0xe789b5a5"]
validation: [size]
known_hash_adler32: "0x66f334fe"
adler32_byteswap: true
note: "DSP instruction ROM for LLE audio. Free replacement (v0.4) included"
source_ref: "Source/Core/Common/CommonPaths.h:135, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-117, Source/Core/Core/DSP/DSPCore.cpp:28-102"
source_ref: "Source/Core/Common/CommonPaths.h:135, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-117"
- name: "dsp_coef.bin"
path: "GC/dsp_coef.bin"
size: 4096
required: false
mode: standalone
hle_fallback: true
validation: [size, adler32]
known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
validation: [size]
known_hash_adler32: "0xf3b93527"
adler32_byteswap: true
note: "DSP coefficient ROM for LLE audio. Free replacement included"
source_ref: "Source/Core/Common/CommonPaths.h:138, Source/Core/Core/DSP/DSPCore.cpp:32-38, Source/Core/Core/DSP/DSPCore.cpp:28-102"
source_ref: "Source/Core/Common/CommonPaths.h:138, Source/Core/Core/DSP/DSPCore.cpp:32-38"
# -- GameCube Fonts --
# Bundled free alternatives exist but have padding differences causing misplaced text.
@@ -93,6 +98,7 @@ files:
path: "GC/font_western.bin"
size: 9589
required: false
mode: standalone
hle_fallback: true
note: "Windows-1252 font for GC/Wii text rendering. Free alternative bundled, real one from IPL dump preferred"
source_ref: "Source/Core/Common/CommonPaths.h:132, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:131,203-218"
@@ -101,6 +107,7 @@ files:
path: "GC/font_japanese.bin"
size: 303693
required: false
mode: standalone
hle_fallback: true
note: "Shift-JIS font for Japanese text. Free alternative bundled, real one from IPL dump preferred"
source_ref: "Source/Core/Common/CommonPaths.h:135, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:130"
@@ -111,6 +118,7 @@ files:
- name: "gba_bios.bin"
path: "GBA/gba_bios.bin"
required: false
mode: standalone
hle_fallback: true
note: "GBA BIOS for GC-GBA link feature (uses integrated mGBA). Path configurable in settings"
source_ref: "Source/Core/Common/CommonPaths.h:144, Source/Core/Core/HW/GBACore.cpp:344-361"
@@ -119,6 +127,7 @@ files:
- name: "SYSCONF"
path: "Wii/shared2/sys/SYSCONF"
required: false
mode: standalone
hle_fallback: true
note: "Wii system configuration. Auto-generated by PrimeHack, can be imported from NAND backup"
source_ref: "Source/Core/Common/CommonPaths.h:118, Source/Core/Core/WiiRoot.cpp:266"
@@ -127,6 +136,7 @@ files:
path: "Wii/title/00000001/00000002/data/setting.txt"
size: 256
required: false
mode: standalone
hle_fallback: true
note: "Wii region/language settings. Auto-generated during Wii boot emulation"
source_ref: "Source/Core/Common/CommonPaths.h:152, Source/Core/Core/Boot/Boot_BS2Emu.cpp:377-454"
@@ -135,6 +145,7 @@ files:
- name: "nand.bin"
path: null
required: false
mode: standalone
hle_fallback: true
note: "BootMii NAND backup. Can be imported to populate Wii NAND with channels, saves, system menu"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:26-89"
@@ -143,6 +154,7 @@ files:
path: null
size: 1024
required: false
mode: standalone
hle_fallback: true
note: "OTP/SEEPROM dump (Wii encryption keys). Needed if not appended to nand.bin for NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:19,76-88"
@@ -151,6 +163,7 @@ files:
- name: "WiiSD.raw"
path: "Load/WiiSD.raw"
required: false
mode: standalone
hle_fallback: true
note: "Virtual SD card image for Wii homebrew. Auto-created, supports SD/SDHC up to 4GB"
source_ref: "Source/Core/Common/CommonPaths.h:149"
@@ -159,6 +172,7 @@ files:
- name: "codehandler.bin"
path: null
required: false
mode: standalone
hle_fallback: true
note: "Gecko/Ocarina cheat code handler. Shipped with PrimeHack in Sys/"
source_ref: "Source/Core/Common/CommonPaths.h:154, Source/Core/Core/GeckoCode.cpp:121"
@@ -167,6 +181,7 @@ files:
- name: "Wii System Menu"
path: null
required: false
mode: standalone
hle_fallback: true
note: "Wii System Menu WAD. Installed to NAND via Tools > Install WAD, needed for Wii Menu boot"
source_ref: "Source/Core/DolphinQt/MenuBar.cpp:335, Source/Core/DolphinQt/MenuBar.cpp:1582-1590"
@@ -175,6 +190,7 @@ files:
- name: "clientca.pem"
path: "Wii/clientca.pem"
required: false
mode: standalone
hle_fallback: true
note: "SSL client certificate. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:201-285"
@@ -182,6 +198,7 @@ files:
- name: "clientcakey.pem"
path: "Wii/clientcakey.pem"
required: false
mode: standalone
hle_fallback: true
note: "SSL client private key. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:237"
@@ -189,6 +206,7 @@ files:
- name: "rootca.pem"
path: "Wii/rootca.pem"
required: false
mode: standalone
hle_fallback: true
note: "SSL root CA certificate. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:238"
@@ -202,90 +220,105 @@ files:
- name: "rtl8723a_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8723a_fw.bin"
required: false
mode: standalone
note: "Realtek 8723A BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:379"
- name: "rtl8723b_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8723b_fw.bin"
required: false
mode: standalone
note: "Realtek 8723B BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:516-519"
- name: "rtl8723d_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8723d_fw.bin"
required: false
mode: standalone
note: "Realtek 8723D BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:383"
- name: "rtl8761a_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8761a_fw.bin"
required: false
mode: standalone
note: "Realtek 8761A BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:385"
- name: "rtl8761bu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8761bu_fw.bin"
required: false
mode: standalone
note: "Realtek 8761BU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:387"
- name: "rtl8821a_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8821a_fw.bin"
required: false
mode: standalone
note: "Realtek 8821A BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:389"
- name: "rtl8821c_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8821c_fw.bin"
required: false
mode: standalone
note: "Realtek 8821C BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:391"
- name: "rtl8822b_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8822b_fw.bin"
required: false
mode: standalone
note: "Realtek 8822B BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:395"
- name: "rtl8822cu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8822cu_fw.bin"
required: false
mode: standalone
note: "Realtek 8822CU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:393"
- name: "rtl8851bu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8851bu_fw.bin"
required: false
mode: standalone
note: "Realtek 8851BU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:397"
- name: "rtl8852au_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852au_fw.bin"
required: false
mode: standalone
note: "Realtek 8852AU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:399"
- name: "rtl8852bu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852bu_fw.bin"
required: false
mode: standalone
note: "Realtek 8852BU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:401"
- name: "rtl8852cu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852cu_fw.bin"
required: false
mode: standalone
note: "Realtek 8852CU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:403"
- name: "rtl8852btu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852btu_fw.bin"
required: false
mode: standalone
note: "Realtek 8852BT/8852BE-VT BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:405"
- name: "rtl8922au_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8922au_fw.bin"
required: false
mode: standalone
note: "Realtek 8922AU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:407"
+2
View File
@@ -34,6 +34,7 @@ notes: |
files:
- name: "7800 BIOS (U).rom"
system: atari-7800
region: [north-america]
required: false
hle_fallback: true
size: 4096
@@ -42,6 +43,7 @@ files:
- name: "7800 BIOS (E).rom"
system: atari-7800
region: [europe]
required: false
hle_fallback: true
size: 16384
+5 -5
View File
@@ -56,7 +56,7 @@ notes: |
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:5609-5777,
Source: libretro/libretro-core.h:140-245, libretro/libretro-core.c:5612-5752,
libretro/libretro-core.c:6044-6093
files:
@@ -243,20 +243,20 @@ files:
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:5963-5978"
source_ref: "libretro/libretro-core.c:5969-5980"
- name: "WHDLoad.key"
system: commodore-amiga
required: false
unsourceable: "per-user signed registration key, never distributed generically, WHDLoad free since v18.2"
note: "WHDLoad license key. Copied to saves/WHDLoad/L/ for registered WHDLoad use."
source_ref: "libretro/libretro-core.c:5979-5994"
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:5995-6018"
source_ref: "libretro/libretro-core.c:6000-6023"
model_kickstart_map:
A500: {kickstart: "kick34005.A500", ext: null}
@@ -290,4 +290,4 @@ platform_details:
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:2650-2677"
source_ref: "libretro/libretro-core.c:2651-2678"
+6 -6
View File
@@ -60,8 +60,8 @@ notes: |
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:5533-5701,
libretro/libretro-core.c:5788-5879
Source: libretro/libretro-core.h:140-245, libretro/libretro-core.c:5384-5550,
libretro/libretro-core.c:5636-5795
files:
# -------------------------------------------------------
@@ -247,20 +247,20 @@ files:
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-5902"
source_ref: "libretro/libretro-core.c:5735-5746"
- name: "WHDLoad.key"
system: commodore-amiga
required: false
unsourceable: "per-user signed registration key, never distributed generically, WHDLoad free since v18.2"
note: "WHDLoad license key. Copied to saves/WHDLoad/L/ for registered WHDLoad use."
source_ref: "libretro/libretro-core.c:5903-5918"
source_ref: "libretro/libretro-core.c:5751-5764"
- name: "WHDLoad.prefs"
system: commodore-amiga
required: false
note: "WHDLoad preferences. Copied to saves/WHDLoad/S/ when present."
source_ref: "libretro/libretro-core.c:5919-5942"
source_ref: "libretro/libretro-core.c:5768-5791"
model_kickstart_map:
A500: {kickstart: "kick34005.A500", ext: null}
@@ -294,4 +294,4 @@ platform_details:
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:2629-2656"
source_ref: "libretro/libretro-core.c:2577-2616"
+7 -7
View File
@@ -50,7 +50,7 @@ files:
- name: "scph5502.bin"
description: "SCPH-5502 (v3.0 E)"
region: [europe, oceania]
region: [europe]
required: true
size: 524288
validation: [size, sha256]
@@ -183,7 +183,7 @@ files:
# Europe alternatives
- name: "scph1002.bin"
description: "SCPH-1002 (v2.0 E)"
region: [europe, oceania]
region: [europe]
required: false
size: 524288
validation: [size, sha256]
@@ -192,7 +192,7 @@ files:
- name: "scph1002b.bin"
description: "SCPH-1002 (v2.1 E)"
region: [europe, oceania]
region: [europe]
required: false
size: 524288
validation: [size, sha256]
@@ -201,7 +201,7 @@ files:
- name: "scph1002c.bin"
description: "SCPH-1002 (v2.2 E)"
region: [europe, oceania]
region: [europe]
required: false
size: 524288
validation: [size, sha256]
@@ -210,7 +210,7 @@ files:
- name: "scph7002.bin"
description: "SCPH-7002 (v4.1 E)"
region: [europe, oceania]
region: [europe]
required: false
size: 524288
validation: [size, sha256]
@@ -219,7 +219,7 @@ files:
- name: "scph102.bin"
description: "SCPH-102 (v4.4 E)"
region: [europe, oceania]
region: [europe]
required: false
size: 524288
validation: [size, sha256]
@@ -228,7 +228,7 @@ files:
- name: "scph102_v45.bin"
description: "v4.5 E"
region: [europe, oceania]
region: [europe]
required: false
size: 524288
validation: [size, sha256]
Loaded 100 of 313 files, more files were not shown because too many files have changed in this diff. Show more