mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-06 01:53:56 -06:00
chore: merge audit batch, resolver and profiles
This commit is contained in:
commit
e50eeb52fd
73 files changed
+943
-281
No files matched your search
@@ -84,14 +84,14 @@ Each file is checked the way your platform checks it. Most compare a checksum, t
|
|||||||
- **1,087 files** the platforms' emulators load are still to be found, and 138 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/)
|
- **1,087 files** the platforms' emulators load are still to be found, and 138 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/)
|
||||||
- **18 platforms** supported with platform-specific verification
|
- **18 platforms** supported with platform-specific verification
|
||||||
- **623 emulators** profiled from source (RetroArch cores + standalone)
|
- **623 emulators** profiled from source (RetroArch cores + standalone)
|
||||||
- **533 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
|
- **532 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
|
||||||
- **19,943 files in the collection**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 5,740 system files, 2,975 arcade ROM sets, 11,228 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
|
- **19,943 files in the collection**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 5,740 system files, 2,975 arcade ROM sets, 11,228 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
|
||||||
- **566 of 5,740 system files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC). Arcade sets and engine data fall outside what those catalogs index
|
- **566 of 5,740 system files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC). Arcade sets and engine data fall outside what those catalogs index
|
||||||
- **15.7 GB** for the whole collection
|
- **15.7 GB** for the whole collection
|
||||||
|
|
||||||
## Supported systems
|
## 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 499+ 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 498+ more.
|
||||||
|
|
||||||
Full list with per-file details: **[https://abdess.github.io/retrobios/](https://abdess.github.io/retrobios/)**
|
Full list with per-file details: **[https://abdess.github.io/retrobios/](https://abdess.github.io/retrobios/)**
|
||||||
|
|
||||||
@@ -100,22 +100,22 @@ Full list with per-file details: **[https://abdess.github.io/retrobios/](https:/
|
|||||||
| Platform | On its BIOS list | Files its emulators load | Checked by |
|
| Platform | On its BIOS list | Files its emulators load | Checked by |
|
||||||
|----------|-----------------:|-------------------------:|------------|
|
|----------|-----------------:|-------------------------:|------------|
|
||||||
| AmberELEC | 414/434 | 4,751/4,935 | MD5 hash |
|
| AmberELEC | 414/434 | 4,751/4,935 | MD5 hash |
|
||||||
| Batocera | 353/353 | 14,171/15,291 | MD5 hash |
|
| Batocera | 353/353 | 14,172/15,292 | MD5 hash |
|
||||||
| BizHawk | 118/118 | - | SHA1 hash |
|
| BizHawk | 118/118 | - | SHA1 hash |
|
||||||
| EmuDeck | 168/168 | 8,422/8,525 | MD5 hash |
|
| EmuDeck | 168/168 | 8,426/8,529 | MD5 hash |
|
||||||
| EmuELEC | 544/572 | 4,786/10,215 | MD5 hash |
|
| EmuELEC | 544/572 | 4,786/10,215 | MD5 hash |
|
||||||
| KNULLI | 290/290 | 9,126/15,349 | MD5 hash |
|
| KNULLI | 290/290 | 9,127/15,350 | MD5 hash |
|
||||||
| Lakka | 532/532 | 7,910/7,996 | file presence |
|
| Lakka | 532/532 | 7,909/7,995 | file presence |
|
||||||
| MiSTer FPGA | 81/81 | - | MD5 hash |
|
| MiSTer FPGA | 81/81 | - | MD5 hash |
|
||||||
| MinUI | 0/0 | 78/79 | file presence |
|
| MinUI | 0/0 | 78/79 | file presence |
|
||||||
| MyMinUI | 0/0 | 356/367 | file presence |
|
| MyMinUI | 0/0 | 356/367 | file presence |
|
||||||
| NextUI | 0/0 | 343/350 | file presence |
|
| NextUI | 0/0 | 343/350 | file presence |
|
||||||
| ROCKNIX | 38/38 | 7,421/9,134 | MD5 hash |
|
| ROCKNIX | 38/38 | 7,425/9,138 | MD5 hash |
|
||||||
| Recalbox | 351/351 | 3,125/3,344 | MD5 hash |
|
| Recalbox | 351/351 | 3,125/3,344 | MD5 hash |
|
||||||
| RetroArch | 526/526 | 7,919/7,987 | file presence |
|
| RetroArch | 526/526 | 7,918/7,986 | file presence |
|
||||||
| RetroBat | 348/348 | 5,133/9,658 | MD5 hash |
|
| RetroBat | 348/348 | 5,134/9,659 | MD5 hash |
|
||||||
| RetroDECK | 2,007/2,008 | 6,703/6,991 | MD5 hash |
|
| RetroDECK | 2,007/2,008 | 6,705/6,993 | MD5 hash |
|
||||||
| RetroPie * | 532/532 | 8,120/12,775 | file presence |
|
| RetroPie * | 532/532 | 8,119/12,774 | file presence |
|
||||||
| RomM | 383/383 | 83/873 | MD5 hash |
|
| RomM | 383/383 | 83/873 | 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/).
|
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/).
|
||||||
@@ -203,4 +203,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 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 project's legal position](https://abdess.github.io/retrobios/wiki/legal/).
|
The reasoning, and where it is weakest, is in [the project's legal position](https://abdess.github.io/retrobios/wiki/legal/).
|
||||||
|
|
||||||
*Auto-generated on 2026-11-05T12:02:13Z*
|
*Auto-generated on 2026-11-05T12:13:24Z*
|
||||||
File renamed without changes.
File renamed without changes.
+53
-53
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"schema_version": 1,
|
"schema_version": 1,
|
||||||
"generated_at": "2026-11-05T11:59:40Z",
|
"generated_at": "2026-11-05T12:13:24Z",
|
||||||
"total_files": 19943,
|
"total_files": 19943,
|
||||||
"total_size": 16892630154,
|
"total_size": 16892630154,
|
||||||
"bios_dir": "bios",
|
"bios_dir": "bios",
|
||||||
@@ -131310,6 +131310,26 @@
|
|||||||
"crc32": "bb4b1c70",
|
"crc32": "bb4b1c70",
|
||||||
"adler32": "81802751"
|
"adler32": "81802751"
|
||||||
},
|
},
|
||||||
|
"f957c9aedd8ea478dafd98babe41faec7f339d8a": {
|
||||||
|
"path": "bios/Microsoft/Xbox/C/xbox.xtf",
|
||||||
|
"name": "xbox.xtf",
|
||||||
|
"size": 15613736,
|
||||||
|
"sha1": "f957c9aedd8ea478dafd98babe41faec7f339d8a",
|
||||||
|
"md5": "0466dd6c19ec9c1785e8aadfc8c5269e",
|
||||||
|
"sha256": "21c6207d02009a78767783679b6e74da3d4ca6e077c4808007f79dfe083d7489",
|
||||||
|
"crc32": "b12ee192",
|
||||||
|
"adler32": "ae7294e0"
|
||||||
|
},
|
||||||
|
"8b6e63f86dfd31821df210f5da73f8428b4fff15": {
|
||||||
|
"path": "bios/Microsoft/Xbox/C/xboxdash.xbe",
|
||||||
|
"name": "xboxdash.xbe",
|
||||||
|
"size": 1929216,
|
||||||
|
"sha1": "8b6e63f86dfd31821df210f5da73f8428b4fff15",
|
||||||
|
"md5": "8da4d816604e9b9d5aa69d1fd395a48e",
|
||||||
|
"sha256": "3ae2f3eae3917e0130d1e1a5c8e1c5df207ea31703646a174d98f7be9a769495",
|
||||||
|
"crc32": "4e78e0ae",
|
||||||
|
"adler32": "fed648f4"
|
||||||
|
},
|
||||||
"358a20e61ec1a2387127b1fa92113034fb279f9b": {
|
"358a20e61ec1a2387127b1fa92113034fb279f9b": {
|
||||||
"path": "bios/Microsoft/Xbox/Complex.bin",
|
"path": "bios/Microsoft/Xbox/Complex.bin",
|
||||||
"name": "Complex.bin",
|
"name": "Complex.bin",
|
||||||
@@ -141597,26 +141617,6 @@
|
|||||||
"crc32": "4d47ad9b",
|
"crc32": "4d47ad9b",
|
||||||
"adler32": "991208da"
|
"adler32": "991208da"
|
||||||
},
|
},
|
||||||
"f957c9aedd8ea478dafd98babe41faec7f339d8a": {
|
|
||||||
"path": "bios/Other/hakux/C/xbox.xtf",
|
|
||||||
"name": "xbox.xtf",
|
|
||||||
"size": 15613736,
|
|
||||||
"sha1": "f957c9aedd8ea478dafd98babe41faec7f339d8a",
|
|
||||||
"md5": "0466dd6c19ec9c1785e8aadfc8c5269e",
|
|
||||||
"sha256": "21c6207d02009a78767783679b6e74da3d4ca6e077c4808007f79dfe083d7489",
|
|
||||||
"crc32": "b12ee192",
|
|
||||||
"adler32": "ae7294e0"
|
|
||||||
},
|
|
||||||
"8b6e63f86dfd31821df210f5da73f8428b4fff15": {
|
|
||||||
"path": "bios/Other/hakux/C/xboxdash.xbe",
|
|
||||||
"name": "xboxdash.xbe",
|
|
||||||
"size": 1929216,
|
|
||||||
"sha1": "8b6e63f86dfd31821df210f5da73f8428b4fff15",
|
|
||||||
"md5": "8da4d816604e9b9d5aa69d1fd395a48e",
|
|
||||||
"sha256": "3ae2f3eae3917e0130d1e1a5c8e1c5df207ea31703646a174d98f7be9a769495",
|
|
||||||
"crc32": "4e78e0ae",
|
|
||||||
"adler32": "fed648f4"
|
|
||||||
},
|
|
||||||
"231b29ef9d6314930eb18e57240e27ae81a6e88f": {
|
"231b29ef9d6314930eb18e57240e27ae81a6e88f": {
|
||||||
"path": "bios/Other/hakux/controller_map.txt",
|
"path": "bios/Other/hakux/controller_map.txt",
|
||||||
"name": "controller_map.txt",
|
"name": "controller_map.txt",
|
||||||
@@ -217650,6 +217650,8 @@
|
|||||||
"65a8ebf870420316a939ac44fd4c731d": "b15c6a834b7029e2dfed22127cf905b06857e6f5",
|
"65a8ebf870420316a939ac44fd4c731d": "b15c6a834b7029e2dfed22127cf905b06857e6f5",
|
||||||
"ec00e31e746de2473acfe7903c5a4cb7": "6639b6693784574d204c42703a74fd8b088a3a5e",
|
"ec00e31e746de2473acfe7903c5a4cb7": "6639b6693784574d204c42703a74fd8b088a3a5e",
|
||||||
"8cd18e1748114b3b019aed171cac2ee0": "c54a8e4f2fe01be6e85c9d210f432e4c82e0418c",
|
"8cd18e1748114b3b019aed171cac2ee0": "c54a8e4f2fe01be6e85c9d210f432e4c82e0418c",
|
||||||
|
"0466dd6c19ec9c1785e8aadfc8c5269e": "f957c9aedd8ea478dafd98babe41faec7f339d8a",
|
||||||
|
"8da4d816604e9b9d5aa69d1fd395a48e": "8b6e63f86dfd31821df210f5da73f8428b4fff15",
|
||||||
"21445c6f28fca7285b0f167ea770d1e5": "358a20e61ec1a2387127b1fa92113034fb279f9b",
|
"21445c6f28fca7285b0f167ea770d1e5": "358a20e61ec1a2387127b1fa92113034fb279f9b",
|
||||||
"39cee882148a87f93cb440b99dde3ceb": "3944392c954cfb176d4210544e88353b3c5d36b1",
|
"39cee882148a87f93cb440b99dde3ceb": "3944392c954cfb176d4210544e88353b3c5d36b1",
|
||||||
"04e9565c5eb34c71c8f5f8b9f6524406": "4e1c2c2ee308ca4591542b3ca48653f65fae6e0f",
|
"04e9565c5eb34c71c8f5f8b9f6524406": "4e1c2c2ee308ca4591542b3ca48653f65fae6e0f",
|
||||||
@@ -218614,8 +218616,6 @@
|
|||||||
"a5518586f9c4c0bebc9fd6f322c6f501": "72ea5f869695d13dc8f3bf4806ee384aa766ab09",
|
"a5518586f9c4c0bebc9fd6f322c6f501": "72ea5f869695d13dc8f3bf4806ee384aa766ab09",
|
||||||
"2f355f03254e572dd32e6fe7232f5ccc": "8881159097cd92f67bfec5250bc061626d87cf04",
|
"2f355f03254e572dd32e6fe7232f5ccc": "8881159097cd92f67bfec5250bc061626d87cf04",
|
||||||
"d87d6498c9e36a69907038e9198b7efb": "328b2ec7402df86add5c9cd68692c126b7e79707",
|
"d87d6498c9e36a69907038e9198b7efb": "328b2ec7402df86add5c9cd68692c126b7e79707",
|
||||||
"0466dd6c19ec9c1785e8aadfc8c5269e": "f957c9aedd8ea478dafd98babe41faec7f339d8a",
|
|
||||||
"8da4d816604e9b9d5aa69d1fd395a48e": "8b6e63f86dfd31821df210f5da73f8428b4fff15",
|
|
||||||
"41eed0bf6aad777e6583ecb2ff0907b8": "231b29ef9d6314930eb18e57240e27ae81a6e88f",
|
"41eed0bf6aad777e6583ecb2ff0907b8": "231b29ef9d6314930eb18e57240e27ae81a6e88f",
|
||||||
"3155df291027d253e2596db3fca1ac4a": "2651f1eff1785999918c08600f079e1ad4a206e7",
|
"3155df291027d253e2596db3fca1ac4a": "2651f1eff1785999918c08600f079e1ad4a206e7",
|
||||||
"2f5c49dca4993da5911d632d3962c1f3": "0d4dee46085ced0fd117030a13533d903265301c",
|
"2f5c49dca4993da5911d632d3962c1f3": "0d4dee46085ced0fd117030a13533d903265301c",
|
||||||
@@ -258422,6 +258422,14 @@
|
|||||||
"c54a8e4f2fe01be6e85c9d210f432e4c82e0418c",
|
"c54a8e4f2fe01be6e85c9d210f432e4c82e0418c",
|
||||||
"9da5f9ecfb1c9c32efa616f0300d02e8f702244d"
|
"9da5f9ecfb1c9c32efa616f0300d02e8f702244d"
|
||||||
],
|
],
|
||||||
|
"xbox.xtf": [
|
||||||
|
"f957c9aedd8ea478dafd98babe41faec7f339d8a",
|
||||||
|
"df0cadf1a4a080992ef0459c413a841bc3906cc7"
|
||||||
|
],
|
||||||
|
"xboxdash.xbe": [
|
||||||
|
"8b6e63f86dfd31821df210f5da73f8428b4fff15",
|
||||||
|
"4d8d6b1d3f7ace05cbaf03565382b0e6e40c706c"
|
||||||
|
],
|
||||||
"Complex.bin": [
|
"Complex.bin": [
|
||||||
"358a20e61ec1a2387127b1fa92113034fb279f9b"
|
"358a20e61ec1a2387127b1fa92113034fb279f9b"
|
||||||
],
|
],
|
||||||
@@ -258464,10 +258472,6 @@
|
|||||||
"Xbox Book.xtf": [
|
"Xbox Book.xtf": [
|
||||||
"4cc817432b81b7bd3b9f782b678bd69e3d4d5715"
|
"4cc817432b81b7bd3b9f782b678bd69e3d4d5715"
|
||||||
],
|
],
|
||||||
"xbox.xtf": [
|
|
||||||
"df0cadf1a4a080992ef0459c413a841bc3906cc7",
|
|
||||||
"f957c9aedd8ea478dafd98babe41faec7f339d8a"
|
|
||||||
],
|
|
||||||
"xbox.xex": [
|
"xbox.xex": [
|
||||||
"1c577b7495d3d119f5a584b328e837901c537a28"
|
"1c577b7495d3d119f5a584b328e837901c537a28"
|
||||||
],
|
],
|
||||||
@@ -260597,10 +260601,6 @@
|
|||||||
"EEPROM.bin": [
|
"EEPROM.bin": [
|
||||||
"d70fd7c6dac8b4bba1640faa9e48acc45de59d15"
|
"d70fd7c6dac8b4bba1640faa9e48acc45de59d15"
|
||||||
],
|
],
|
||||||
"xboxdash.xbe": [
|
|
||||||
"4d8d6b1d3f7ace05cbaf03565382b0e6e40c706c",
|
|
||||||
"8b6e63f86dfd31821df210f5da73f8428b4fff15"
|
|
||||||
],
|
|
||||||
"chihiro_xbox_bios.bin": [
|
"chihiro_xbox_bios.bin": [
|
||||||
"b700b0041af8f84835e45d1d1250247bf7077188"
|
"b700b0041af8f84835e45d1d1250247bf7077188"
|
||||||
],
|
],
|
||||||
@@ -295594,6 +295594,8 @@
|
|||||||
"32edb1d4": "b15c6a834b7029e2dfed22127cf905b06857e6f5",
|
"32edb1d4": "b15c6a834b7029e2dfed22127cf905b06857e6f5",
|
||||||
"ccb97a84": "6639b6693784574d204c42703a74fd8b088a3a5e",
|
"ccb97a84": "6639b6693784574d204c42703a74fd8b088a3a5e",
|
||||||
"bb4b1c70": "c54a8e4f2fe01be6e85c9d210f432e4c82e0418c",
|
"bb4b1c70": "c54a8e4f2fe01be6e85c9d210f432e4c82e0418c",
|
||||||
|
"b12ee192": "f957c9aedd8ea478dafd98babe41faec7f339d8a",
|
||||||
|
"4e78e0ae": "8b6e63f86dfd31821df210f5da73f8428b4fff15",
|
||||||
"2c7a2191": "358a20e61ec1a2387127b1fa92113034fb279f9b",
|
"2c7a2191": "358a20e61ec1a2387127b1fa92113034fb279f9b",
|
||||||
"1dbb7b59": "3944392c954cfb176d4210544e88353b3c5d36b1",
|
"1dbb7b59": "3944392c954cfb176d4210544e88353b3c5d36b1",
|
||||||
"5ae5278a": "4e1c2c2ee308ca4591542b3ca48653f65fae6e0f",
|
"5ae5278a": "4e1c2c2ee308ca4591542b3ca48653f65fae6e0f",
|
||||||
@@ -296558,8 +296560,6 @@
|
|||||||
"54fa92ab": "72ea5f869695d13dc8f3bf4806ee384aa766ab09",
|
"54fa92ab": "72ea5f869695d13dc8f3bf4806ee384aa766ab09",
|
||||||
"b8f57432": "8881159097cd92f67bfec5250bc061626d87cf04",
|
"b8f57432": "8881159097cd92f67bfec5250bc061626d87cf04",
|
||||||
"4d47ad9b": "328b2ec7402df86add5c9cd68692c126b7e79707",
|
"4d47ad9b": "328b2ec7402df86add5c9cd68692c126b7e79707",
|
||||||
"b12ee192": "f957c9aedd8ea478dafd98babe41faec7f339d8a",
|
|
||||||
"4e78e0ae": "8b6e63f86dfd31821df210f5da73f8428b4fff15",
|
|
||||||
"bef6e55c": "231b29ef9d6314930eb18e57240e27ae81a6e88f",
|
"bef6e55c": "231b29ef9d6314930eb18e57240e27ae81a6e88f",
|
||||||
"5808049a": "2651f1eff1785999918c08600f079e1ad4a206e7",
|
"5808049a": "2651f1eff1785999918c08600f079e1ad4a206e7",
|
||||||
"89fa9730": "0d4dee46085ced0fd117030a13533d903265301c",
|
"89fa9730": "0d4dee46085ced0fd117030a13533d903265301c",
|
||||||
@@ -315538,6 +315538,8 @@
|
|||||||
"63c781b9e50bfd55f10700eb70b5c571a9bedfd8d35af29f6a22a77550df5e7b": "b15c6a834b7029e2dfed22127cf905b06857e6f5",
|
"63c781b9e50bfd55f10700eb70b5c571a9bedfd8d35af29f6a22a77550df5e7b": "b15c6a834b7029e2dfed22127cf905b06857e6f5",
|
||||||
"34f1c8ded59116436065783f8ad2ef0939df3cbfc76277ec9e5c41bf9ccb93cd": "6639b6693784574d204c42703a74fd8b088a3a5e",
|
"34f1c8ded59116436065783f8ad2ef0939df3cbfc76277ec9e5c41bf9ccb93cd": "6639b6693784574d204c42703a74fd8b088a3a5e",
|
||||||
"eb35d069715dfc0d37cfac086a0b73a89a02e8f12519cd8eda82ad479d1a4eed": "c54a8e4f2fe01be6e85c9d210f432e4c82e0418c",
|
"eb35d069715dfc0d37cfac086a0b73a89a02e8f12519cd8eda82ad479d1a4eed": "c54a8e4f2fe01be6e85c9d210f432e4c82e0418c",
|
||||||
|
"21c6207d02009a78767783679b6e74da3d4ca6e077c4808007f79dfe083d7489": "f957c9aedd8ea478dafd98babe41faec7f339d8a",
|
||||||
|
"3ae2f3eae3917e0130d1e1a5c8e1c5df207ea31703646a174d98f7be9a769495": "8b6e63f86dfd31821df210f5da73f8428b4fff15",
|
||||||
"1de4c87effe40d44f95581d204f9fa0600fbd5fe2171692316dcf97af0f4113f": "358a20e61ec1a2387127b1fa92113034fb279f9b",
|
"1de4c87effe40d44f95581d204f9fa0600fbd5fe2171692316dcf97af0f4113f": "358a20e61ec1a2387127b1fa92113034fb279f9b",
|
||||||
"3d5fae186cb31b5a6331155e532ef63e493afd85d7af8576fb52c95d0ce0362c": "3944392c954cfb176d4210544e88353b3c5d36b1",
|
"3d5fae186cb31b5a6331155e532ef63e493afd85d7af8576fb52c95d0ce0362c": "3944392c954cfb176d4210544e88353b3c5d36b1",
|
||||||
"b5c2cbdf297cd66ada8ef6fe4224c7c437cabc83d7c40c8e44af4941a72339c5": "4e1c2c2ee308ca4591542b3ca48653f65fae6e0f",
|
"b5c2cbdf297cd66ada8ef6fe4224c7c437cabc83d7c40c8e44af4941a72339c5": "4e1c2c2ee308ca4591542b3ca48653f65fae6e0f",
|
||||||
@@ -316502,8 +316504,6 @@
|
|||||||
"52fab6a73204dc9bbb09d5c8c85c283f4d6bf25220a3bae3573c268908751f2b": "72ea5f869695d13dc8f3bf4806ee384aa766ab09",
|
"52fab6a73204dc9bbb09d5c8c85c283f4d6bf25220a3bae3573c268908751f2b": "72ea5f869695d13dc8f3bf4806ee384aa766ab09",
|
||||||
"cd260d1c420dec2ad2d9511b522d88a72f820d2ca2ff63ded2cd95854d4748dd": "8881159097cd92f67bfec5250bc061626d87cf04",
|
"cd260d1c420dec2ad2d9511b522d88a72f820d2ca2ff63ded2cd95854d4748dd": "8881159097cd92f67bfec5250bc061626d87cf04",
|
||||||
"3b6b7288c186e4b8265cb1996af0e3620267ada9faf38f57d6f87b759ad804b7": "328b2ec7402df86add5c9cd68692c126b7e79707",
|
"3b6b7288c186e4b8265cb1996af0e3620267ada9faf38f57d6f87b759ad804b7": "328b2ec7402df86add5c9cd68692c126b7e79707",
|
||||||
"21c6207d02009a78767783679b6e74da3d4ca6e077c4808007f79dfe083d7489": "f957c9aedd8ea478dafd98babe41faec7f339d8a",
|
|
||||||
"3ae2f3eae3917e0130d1e1a5c8e1c5df207ea31703646a174d98f7be9a769495": "8b6e63f86dfd31821df210f5da73f8428b4fff15",
|
|
||||||
"c8dd1e361ab3219a956b9b7879a17658b10273cc3569bf23cb9ffb23f55e5152": "231b29ef9d6314930eb18e57240e27ae81a6e88f",
|
"c8dd1e361ab3219a956b9b7879a17658b10273cc3569bf23cb9ffb23f55e5152": "231b29ef9d6314930eb18e57240e27ae81a6e88f",
|
||||||
"7cf66357beab4fa3ed48a63195e2c8ec7a7c59c053e6e20cdaa5163a32782fe6": "2651f1eff1785999918c08600f079e1ad4a206e7",
|
"7cf66357beab4fa3ed48a63195e2c8ec7a7c59c053e6e20cdaa5163a32782fe6": "2651f1eff1785999918c08600f079e1ad4a206e7",
|
||||||
"994886a47a7e4f542bc0824758f122004887e19ddbdf83909bca635748f50c64": "0d4dee46085ced0fd117030a13533d903265301c",
|
"994886a47a7e4f542bc0824758f122004887e19ddbdf83909bca635748f50c64": "0d4dee46085ced0fd117030a13533d903265301c",
|
||||||
@@ -483940,6 +483940,24 @@
|
|||||||
".variants/xbox_hdd.qcow2.8cd18e17": [
|
".variants/xbox_hdd.qcow2.8cd18e17": [
|
||||||
"c54a8e4f2fe01be6e85c9d210f432e4c82e0418c"
|
"c54a8e4f2fe01be6e85c9d210f432e4c82e0418c"
|
||||||
],
|
],
|
||||||
|
"Microsoft/Xbox/C/xbox.xtf": [
|
||||||
|
"f957c9aedd8ea478dafd98babe41faec7f339d8a"
|
||||||
|
],
|
||||||
|
"Xbox/C/xbox.xtf": [
|
||||||
|
"f957c9aedd8ea478dafd98babe41faec7f339d8a"
|
||||||
|
],
|
||||||
|
"C/xbox.xtf": [
|
||||||
|
"f957c9aedd8ea478dafd98babe41faec7f339d8a"
|
||||||
|
],
|
||||||
|
"Microsoft/Xbox/C/xboxdash.xbe": [
|
||||||
|
"8b6e63f86dfd31821df210f5da73f8428b4fff15"
|
||||||
|
],
|
||||||
|
"Xbox/C/xboxdash.xbe": [
|
||||||
|
"8b6e63f86dfd31821df210f5da73f8428b4fff15"
|
||||||
|
],
|
||||||
|
"C/xboxdash.xbe": [
|
||||||
|
"8b6e63f86dfd31821df210f5da73f8428b4fff15"
|
||||||
|
],
|
||||||
"Microsoft/Xbox/Complex.bin": [
|
"Microsoft/Xbox/Complex.bin": [
|
||||||
"358a20e61ec1a2387127b1fa92113034fb279f9b"
|
"358a20e61ec1a2387127b1fa92113034fb279f9b"
|
||||||
],
|
],
|
||||||
@@ -493830,24 +493848,6 @@
|
|||||||
"gsplus-legacy/letgothl.ttf": [
|
"gsplus-legacy/letgothl.ttf": [
|
||||||
"328b2ec7402df86add5c9cd68692c126b7e79707"
|
"328b2ec7402df86add5c9cd68692c126b7e79707"
|
||||||
],
|
],
|
||||||
"Other/hakux/C/xbox.xtf": [
|
|
||||||
"f957c9aedd8ea478dafd98babe41faec7f339d8a"
|
|
||||||
],
|
|
||||||
"hakux/C/xbox.xtf": [
|
|
||||||
"f957c9aedd8ea478dafd98babe41faec7f339d8a"
|
|
||||||
],
|
|
||||||
"C/xbox.xtf": [
|
|
||||||
"f957c9aedd8ea478dafd98babe41faec7f339d8a"
|
|
||||||
],
|
|
||||||
"Other/hakux/C/xboxdash.xbe": [
|
|
||||||
"8b6e63f86dfd31821df210f5da73f8428b4fff15"
|
|
||||||
],
|
|
||||||
"hakux/C/xboxdash.xbe": [
|
|
||||||
"8b6e63f86dfd31821df210f5da73f8428b4fff15"
|
|
||||||
],
|
|
||||||
"C/xboxdash.xbe": [
|
|
||||||
"8b6e63f86dfd31821df210f5da73f8428b4fff15"
|
|
||||||
],
|
|
||||||
"Other/hakux/controller_map.txt": [
|
"Other/hakux/controller_map.txt": [
|
||||||
"231b29ef9d6314930eb18e57240e27ae81a6e88f"
|
"231b29ef9d6314930eb18e57240e27ae81a6e88f"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ notes: |
|
|||||||
|
|
||||||
files:
|
files:
|
||||||
- name: ps2-0230a-20080220.bin
|
- name: ps2-0230a-20080220.bin
|
||||||
|
found_by: content
|
||||||
path: bios/ps2-0230a-20080220.bin
|
path: bios/ps2-0230a-20080220.bin
|
||||||
required: true
|
required: true
|
||||||
min_size: 4194304
|
min_size: 4194304
|
||||||
@@ -148,6 +149,7 @@ files:
|
|||||||
source_ref: "source aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, aethersx2 v1.5-3606 usr/share/aethersx2 0x95e7fc"
|
source_ref: "source aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, aethersx2 v1.5-3606 usr/share/aethersx2 0x95e7fc"
|
||||||
|
|
||||||
- name: eeprom.dat
|
- name: eeprom.dat
|
||||||
|
load_from: working_directory
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 64
|
size: 64
|
||||||
@@ -156,6 +158,7 @@ files:
|
|||||||
source_ref: "source aethersx2/pcsx2/DEV9/DEV9.cpp:146-161, aethersx2 v1.5-3606 usr/share/aethersx2 0x97ac90"
|
source_ref: "source aethersx2/pcsx2/DEV9/DEV9.cpp:146-161, aethersx2 v1.5-3606 usr/share/aethersx2 0x97ac90"
|
||||||
|
|
||||||
- name: flash.dat
|
- name: flash.dat
|
||||||
|
load_from: working_directory
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
max_size: 8650752
|
max_size: 8650752
|
||||||
|
|||||||
@@ -163,6 +163,7 @@ notes: |
|
|||||||
|
|
||||||
files:
|
files:
|
||||||
- name: ps2-0230a-20080220.bin
|
- name: ps2-0230a-20080220.bin
|
||||||
|
found_by: content
|
||||||
path: pcsx2/bios/ps2-0230a-20080220.bin
|
path: pcsx2/bios/ps2-0230a-20080220.bin
|
||||||
aliases: [ps2-0250j-20100415.bin]
|
aliases: [ps2-0250j-20100415.bin]
|
||||||
standalone_path: bios/ps2-0230a-20080220.bin
|
standalone_path: bios/ps2-0230a-20080220.bin
|
||||||
@@ -286,6 +287,7 @@ files:
|
|||||||
source_ref: "source pcsx2/CDVD/CDVD.cpp:63-64, source pcsx2/CDVD/CDVD.cpp:207-220"
|
source_ref: "source pcsx2/CDVD/CDVD.cpp:63-64, source pcsx2/CDVD/CDVD.cpp:207-220"
|
||||||
|
|
||||||
- name: eeprom.dat
|
- name: eeprom.dat
|
||||||
|
load_from: working_directory
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 64
|
size: 64
|
||||||
@@ -297,6 +299,7 @@ files:
|
|||||||
source_ref: "source pcsx2/DEV9/DEV9.cpp:78, source pcsx2/DEV9/DEV9.cpp:225-276"
|
source_ref: "source pcsx2/DEV9/DEV9.cpp:78, source pcsx2/DEV9/DEV9.cpp:225-276"
|
||||||
|
|
||||||
- name: flash.dat
|
- name: flash.dat
|
||||||
|
load_from: working_directory
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
max_size: 8650752
|
max_size: 8650752
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ core_classification: game_engine
|
|||||||
source: "https://github.com/christianhaitian/bennugd-monolithic"
|
source: "https://github.com/christianhaitian/bennugd-monolithic"
|
||||||
profiled_date: "2026-10-22"
|
profiled_date: "2026-10-22"
|
||||||
source_commit: "60ee3389efcf9b402d66035e87f33d17d70cbd83"
|
source_commit: "60ee3389efcf9b402d66035e87f33d17d70cbd83"
|
||||||
|
pin_frozen: "EmuELEC, the only platform that ships it, builds this revision (EmuELEC packages/sx05re/emuelec-ports/bennugd-monolithic/package.mk:5 at v4.8). Later commits are not part of that build."
|
||||||
core_version: "1.0.0"
|
core_version: "1.0.0"
|
||||||
version_basis:
|
version_basis:
|
||||||
kind: file
|
kind: file
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ core_classification: game_engine
|
|||||||
source: "https://github.com/cyxx/bermuda"
|
source: "https://github.com/cyxx/bermuda"
|
||||||
profiled_date: "2026-10-22"
|
profiled_date: "2026-10-22"
|
||||||
source_commit: "cf6bdb68d53a1618967da565a44c931b15daf791"
|
source_commit: "cf6bdb68d53a1618967da565a44c931b15daf791"
|
||||||
|
pin_frozen: "EmuELEC, the only platform that ships it, builds this revision (EmuELEC packages/sx05re/emuelec-ports/bermuda/package.mk:5 at v4.8). Later commits are not part of that build."
|
||||||
core_version: "0.1.7"
|
core_version: "0.1.7"
|
||||||
version_basis:
|
version_basis:
|
||||||
kind: file
|
kind: file
|
||||||
|
|||||||
+18
-18
@@ -12,7 +12,7 @@ version_basis:
|
|||||||
distance: 0
|
distance: 0
|
||||||
display_name: "Bermuda Syndrome (bs)"
|
display_name: "Bermuda Syndrome (bs)"
|
||||||
cores: [bsyndrome]
|
cores: [bsyndrome]
|
||||||
systems: [bsyndrome]
|
systems: [bermuda-syndrome]
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
Rewrite of the engine of Bermuda Syndrome (Century Interactive, BMG, 1995)
|
Rewrite of the engine of Bermuda Syndrome (Century Interactive, BMG, 1995)
|
||||||
@@ -54,7 +54,7 @@ files:
|
|||||||
- name: "_01.SCN"
|
- name: "_01.SCN"
|
||||||
path: "DATA/SCN/_01.SCN"
|
path: "DATA/SCN/_01.SCN"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: true
|
required: true
|
||||||
description: "Startup scene of the English and French releases"
|
description: "Startup scene of the English and French releases"
|
||||||
source_ref: "game.cpp:33-51"
|
source_ref: "game.cpp:33-51"
|
||||||
@@ -64,7 +64,7 @@ files:
|
|||||||
- name: "bermuda.wgp"
|
- name: "bermuda.wgp"
|
||||||
path: "DATA/bermuda.wgp"
|
path: "DATA/bermuda.wgp"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: true
|
required: true
|
||||||
description: "Bag background image"
|
description: "Bag background image"
|
||||||
source_ref: "resource.cpp:51"
|
source_ref: "resource.cpp:51"
|
||||||
@@ -73,7 +73,7 @@ files:
|
|||||||
- name: "bermuda.spr"
|
- name: "bermuda.spr"
|
||||||
path: "DATA/bermuda.spr"
|
path: "DATA/bermuda.spr"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: true
|
required: true
|
||||||
description: "Common sprites"
|
description: "Common sprites"
|
||||||
source_ref: "resource.cpp:60"
|
source_ref: "resource.cpp:60"
|
||||||
@@ -82,7 +82,7 @@ files:
|
|||||||
- name: "bermuda.ovr"
|
- name: "bermuda.ovr"
|
||||||
path: "DATA/bermuda.ovr"
|
path: "DATA/bermuda.ovr"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: true
|
required: true
|
||||||
description: "Overlay data of the full game"
|
description: "Overlay data of the full game"
|
||||||
source_ref: "resource.cpp:45-49"
|
source_ref: "resource.cpp:45-49"
|
||||||
@@ -92,7 +92,7 @@ files:
|
|||||||
- name: "LOGO.AVI"
|
- name: "LOGO.AVI"
|
||||||
path: "DATA/DATA/LOGO.AVI"
|
path: "DATA/DATA/LOGO.AVI"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: false
|
required: false
|
||||||
description: "Logo video"
|
description: "Logo video"
|
||||||
source_ref: "game.cpp:138, 1043-1058"
|
source_ref: "game.cpp:138, 1043-1058"
|
||||||
@@ -102,7 +102,7 @@ files:
|
|||||||
- name: "track01.ogg"
|
- name: "track01.ogg"
|
||||||
path: "MUSIC/track01.ogg"
|
path: "MUSIC/track01.ogg"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: false
|
required: false
|
||||||
description: "CD audio track 01, played in place of title.mid"
|
description: "CD audio track 01, played in place of title.mid"
|
||||||
source_ref: "game.cpp:1078-1112"
|
source_ref: "game.cpp:1078-1112"
|
||||||
@@ -111,7 +111,7 @@ files:
|
|||||||
- name: "track02.ogg"
|
- name: "track02.ogg"
|
||||||
path: "MUSIC/track02.ogg"
|
path: "MUSIC/track02.ogg"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: false
|
required: false
|
||||||
description: "CD audio track 02, played in place of flyaway.mid"
|
description: "CD audio track 02, played in place of flyaway.mid"
|
||||||
source_ref: "game.cpp:1078-1112"
|
source_ref: "game.cpp:1078-1112"
|
||||||
@@ -120,7 +120,7 @@ files:
|
|||||||
- name: "track03.ogg"
|
- name: "track03.ogg"
|
||||||
path: "MUSIC/track03.ogg"
|
path: "MUSIC/track03.ogg"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: false
|
required: false
|
||||||
description: "CD audio track 03, played in place of jungle1.mid and of the demo musik.mid"
|
description: "CD audio track 03, played in place of jungle1.mid and of the demo musik.mid"
|
||||||
source_ref: "game.cpp:1078-1112"
|
source_ref: "game.cpp:1078-1112"
|
||||||
@@ -129,7 +129,7 @@ files:
|
|||||||
- name: "track04.ogg"
|
- name: "track04.ogg"
|
||||||
path: "MUSIC/track04.ogg"
|
path: "MUSIC/track04.ogg"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: false
|
required: false
|
||||||
description: "CD audio track 04, played in place of sadialog.mid"
|
description: "CD audio track 04, played in place of sadialog.mid"
|
||||||
source_ref: "game.cpp:1078-1112"
|
source_ref: "game.cpp:1078-1112"
|
||||||
@@ -138,7 +138,7 @@ files:
|
|||||||
- name: "track05.ogg"
|
- name: "track05.ogg"
|
||||||
path: "MUSIC/track05.ogg"
|
path: "MUSIC/track05.ogg"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: false
|
required: false
|
||||||
description: "CD audio track 05, played in place of caves.mid"
|
description: "CD audio track 05, played in place of caves.mid"
|
||||||
source_ref: "game.cpp:1078-1112"
|
source_ref: "game.cpp:1078-1112"
|
||||||
@@ -147,7 +147,7 @@ files:
|
|||||||
- name: "track06.ogg"
|
- name: "track06.ogg"
|
||||||
path: "MUSIC/track06.ogg"
|
path: "MUSIC/track06.ogg"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: false
|
required: false
|
||||||
description: "CD audio track 06, played in place of jungle2.mid"
|
description: "CD audio track 06, played in place of jungle2.mid"
|
||||||
source_ref: "game.cpp:1078-1112"
|
source_ref: "game.cpp:1078-1112"
|
||||||
@@ -156,7 +156,7 @@ files:
|
|||||||
- name: "track07.ogg"
|
- name: "track07.ogg"
|
||||||
path: "MUSIC/track07.ogg"
|
path: "MUSIC/track07.ogg"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: false
|
required: false
|
||||||
description: "CD audio track 07, played in place of darkcave.mid"
|
description: "CD audio track 07, played in place of darkcave.mid"
|
||||||
source_ref: "game.cpp:1078-1112"
|
source_ref: "game.cpp:1078-1112"
|
||||||
@@ -165,7 +165,7 @@ files:
|
|||||||
- name: "track08.ogg"
|
- name: "track08.ogg"
|
||||||
path: "MUSIC/track08.ogg"
|
path: "MUSIC/track08.ogg"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: false
|
required: false
|
||||||
description: "CD audio track 08, played in place of waterdiv.mid"
|
description: "CD audio track 08, played in place of waterdiv.mid"
|
||||||
source_ref: "game.cpp:1078-1112"
|
source_ref: "game.cpp:1078-1112"
|
||||||
@@ -174,7 +174,7 @@ files:
|
|||||||
- name: "track09.ogg"
|
- name: "track09.ogg"
|
||||||
path: "MUSIC/track09.ogg"
|
path: "MUSIC/track09.ogg"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: false
|
required: false
|
||||||
description: "CD audio track 09, played in place of merian1.mid"
|
description: "CD audio track 09, played in place of merian1.mid"
|
||||||
source_ref: "game.cpp:1078-1112"
|
source_ref: "game.cpp:1078-1112"
|
||||||
@@ -183,7 +183,7 @@ files:
|
|||||||
- name: "track10.ogg"
|
- name: "track10.ogg"
|
||||||
path: "MUSIC/track10.ogg"
|
path: "MUSIC/track10.ogg"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: false
|
required: false
|
||||||
description: "CD audio track 10, played in place of telquad.mid"
|
description: "CD audio track 10, played in place of telquad.mid"
|
||||||
source_ref: "game.cpp:1078-1112"
|
source_ref: "game.cpp:1078-1112"
|
||||||
@@ -192,7 +192,7 @@ files:
|
|||||||
- name: "track11.ogg"
|
- name: "track11.ogg"
|
||||||
path: "MUSIC/track11.ogg"
|
path: "MUSIC/track11.ogg"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: false
|
required: false
|
||||||
description: "CD audio track 11, played in place of gameover.mid"
|
description: "CD audio track 11, played in place of gameover.mid"
|
||||||
source_ref: "game.cpp:1078-1112"
|
source_ref: "game.cpp:1078-1112"
|
||||||
@@ -201,7 +201,7 @@ files:
|
|||||||
- name: "track12.ogg"
|
- name: "track12.ogg"
|
||||||
path: "MUSIC/track12.ogg"
|
path: "MUSIC/track12.ogg"
|
||||||
category: game_data
|
category: game_data
|
||||||
system: bsyndrome
|
system: bermuda-syndrome
|
||||||
required: false
|
required: false
|
||||||
description: "CD audio track 12, played in place of complete.mid"
|
description: "CD audio track 12, played in place of complete.mid"
|
||||||
source_ref: "game.cpp:1078-1112"
|
source_ref: "game.cpp:1078-1112"
|
||||||
|
|||||||
@@ -181,7 +181,6 @@ files:
|
|||||||
size: 8192
|
size: 8192
|
||||||
sha1: "4ff0f11e80f4b57430d8f0c3799ed0f0e0f4565d"
|
sha1: "4ff0f11e80f4b57430d8f0c3799ed0f0e0f4565d"
|
||||||
validation: [size, sha1]
|
validation: [size, sha1]
|
||||||
region: [japan]
|
|
||||||
description: "Japanese C64 kernal"
|
description: "Japanese C64 kernal"
|
||||||
source_ref: "source C64.emu/src/vice/c64/c64rom.h:49, 90, source C64.emu/src/vice/c64/c64model.c:148-151, source C64.emu/src/vice/c64/c64-resources.c:246"
|
source_ref: "source C64.emu/src/vice/c64/c64rom.h:49, 90, source C64.emu/src/vice/c64/c64model.c:148-151, source C64.emu/src/vice/c64/c64-resources.c:246"
|
||||||
|
|
||||||
@@ -230,7 +229,6 @@ files:
|
|||||||
required: false
|
required: false
|
||||||
size: 4096
|
size: 4096
|
||||||
validation: [size]
|
validation: [size]
|
||||||
region: [japan]
|
|
||||||
description: "Japanese C64 character generator"
|
description: "Japanese C64 character generator"
|
||||||
source_ref: "source C64.emu/src/vice/c64/c64rom.h:61, source C64.emu/src/vice/c64/c64model.c:148-151, 323"
|
source_ref: "source C64.emu/src/vice/c64/c64rom.h:61, source C64.emu/src/vice/c64/c64model.c:148-151, 323"
|
||||||
|
|
||||||
@@ -279,7 +277,6 @@ files:
|
|||||||
required: false
|
required: false
|
||||||
size: 4096
|
size: 4096
|
||||||
validation: [size]
|
validation: [size]
|
||||||
region: [japan]
|
|
||||||
description: "Japanese character generator, Japanese SuperCPU model"
|
description: "Japanese character generator, Japanese SuperCPU model"
|
||||||
source_ref: "source C64.emu/src/vice/scpu64/scpu64model.c:303, source C64.emu/src/vice/c64/c64rom.h:61"
|
source_ref: "source C64.emu/src/vice/scpu64/scpu64model.c:303, source C64.emu/src/vice/c64/c64rom.h:61"
|
||||||
|
|
||||||
@@ -580,7 +577,6 @@ files:
|
|||||||
required: false
|
required: false
|
||||||
size: 8192
|
size: 8192
|
||||||
validation: [size]
|
validation: [size]
|
||||||
region: [japan]
|
|
||||||
description: "VIC-1001 kernal"
|
description: "VIC-1001 kernal"
|
||||||
source_ref: "source C64.emu/src/vice/vic20/vic20rom.h:51, source C64.emu/src/vice/vic20/vic20model.c:60, 140"
|
source_ref: "source C64.emu/src/vice/vic20/vic20rom.h:51, source C64.emu/src/vice/vic20/vic20model.c:60, 140"
|
||||||
|
|
||||||
@@ -608,7 +604,6 @@ files:
|
|||||||
required: false
|
required: false
|
||||||
size: 4096
|
size: 4096
|
||||||
validation: [size]
|
validation: [size]
|
||||||
region: [japan]
|
|
||||||
description: "VIC-1001 character generator"
|
description: "VIC-1001 character generator"
|
||||||
source_ref: "source C64.emu/src/vice/vic20/vic20rom.h:57, source C64.emu/src/vice/vic20/vic20model.c:60, 139"
|
source_ref: "source C64.emu/src/vice/vic20/vic20rom.h:57, source C64.emu/src/vice/vic20/vic20model.c:60, 139"
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ core_classification: game_engine
|
|||||||
source: "https://github.com/lemon32767/ccleste"
|
source: "https://github.com/lemon32767/ccleste"
|
||||||
profiled_date: "2026-10-22"
|
profiled_date: "2026-10-22"
|
||||||
source_commit: "261d96f15af430b8111abc7a5250229246654f52"
|
source_commit: "261d96f15af430b8111abc7a5250229246654f52"
|
||||||
|
pin_frozen: "EmuELEC, the only platform that ships it, builds this revision (EmuELEC packages/sx05re/emuelec-ports/ccleste/package.mk:5 at v4.8). Later commits are not part of that build."
|
||||||
core_version: "v1.4.0"
|
core_version: "v1.4.0"
|
||||||
version_basis:
|
version_basis:
|
||||||
kind: tag
|
kind: tag
|
||||||
|
|||||||
+2
-2
@@ -712,12 +712,12 @@ files:
|
|||||||
path: MasterSystem/bios.sms
|
path: MasterSystem/bios.sms
|
||||||
system: sega-mastersystem
|
system: sega-mastersystem
|
||||||
description: "European/US Master System BIOS"
|
description: "European/US Master System BIOS"
|
||||||
region: [north-america, europe, oceania, brazil]
|
region: [north-america, latin-america, europe, oceania]
|
||||||
size: 8192
|
size: 8192
|
||||||
crc32: "0072ed54"
|
crc32: "0072ed54"
|
||||||
required: false
|
required: false
|
||||||
note: "Optional. Boots cartridge directly if absent. Loaded for every region but Japan."
|
note: "Optional. Boots cartridge directly if absent. Loaded for every region but Japan."
|
||||||
source_ref: "Machines/Utility/ROMCatalogue.cpp:764-771, Machines/MasterSystem/MasterSystem.cpp:137-140, Analyser/Static/Sega/Target.hpp:24-29"
|
source_ref: "Machines/Utility/ROMCatalogue.cpp:764-771, Machines/MasterSystem/MasterSystem.cpp:137-140, Analyser/Static/Sega/Target.hpp:24-29, Analyser/Static/Sega/StaticAnalyser.cpp:49-66"
|
||||||
|
|
||||||
- name: japanese-bios.sms
|
- name: japanese-bios.sms
|
||||||
path: MasterSystem/japanese-bios.sms
|
path: MasterSystem/japanese-bios.sms
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ notes: |
|
|||||||
paths (:1473-1491) looking for a folder that passes
|
paths (:1473-1491) looking for a folder that passes
|
||||||
App:isThemeHospitalPath, which demands three subdirectories
|
App:isThemeHospitalPath, which demands three subdirectories
|
||||||
named data, levels and qdata (:1435-1447).
|
named data, levels and qdata (:1435-1447).
|
||||||
2. Once a candidate is accepted, three sentinel files MUST exist
|
2. Once a candidate is accepted, three sentinel files must exist
|
||||||
(:1523-1525):
|
(:1523-1525):
|
||||||
DATA/VBlk-0.tab
|
DATA/VBlk-0.tab
|
||||||
LEVELS/Level.L1
|
LEVELS/Level.L1
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ systems:
|
|||||||
# (Doukutsu Monogatari) engine in Rust, ported to libretro by Dr. Glaucous.
|
# (Doukutsu Monogatari) engine in Rust, ported to libretro by Dr. Glaucous.
|
||||||
# It plays the original freeware Cave Story and Cave Story+ (Steam/Switch).
|
# It plays the original freeware Cave Story and Cave Story+ (Steam/Switch).
|
||||||
#
|
#
|
||||||
# The core does NOT use RetroArch's system directory for any BIOS or firmware.
|
# The core does not use RetroArch's system directory for any BIOS or firmware.
|
||||||
# get_system_directory() is defined in libretro.rs:1255 but never called by
|
# get_system_directory() is defined in libretro.rs:1255 but never called by
|
||||||
# the core (the import is commented out in core.rs:28).
|
# the core (the import is commented out in core.rs:28).
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -257,6 +257,7 @@ files:
|
|||||||
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:50-51, source app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:195-208"
|
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:50-51, source app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:195-208"
|
||||||
|
|
||||||
- name: eeprom.dat
|
- name: eeprom.dat
|
||||||
|
load_from: working_directory
|
||||||
system: sony-playstation-2
|
system: sony-playstation-2
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
@@ -269,6 +270,7 @@ files:
|
|||||||
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/DEV9/DEV9.cpp:104-167"
|
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/DEV9/DEV9.cpp:104-167"
|
||||||
|
|
||||||
- name: flash.dat
|
- name: flash.dat
|
||||||
|
load_from: working_directory
|
||||||
system: sony-playstation-2
|
system: sony-playstation-2
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
|
|||||||
+1
-1
@@ -35,7 +35,7 @@ notes: |
|
|||||||
3. "Char ROM" (4096 bytes, CHAR_ROM_SIZE 0x1000) -> TheC64->Char
|
3. "Char ROM" (4096 bytes, CHAR_ROM_SIZE 0x1000) -> TheC64->Char
|
||||||
4. "1541 ROM" (16384 bytes, DRIVE_ROM_SIZE 0x4000) -> TheC64->ROM1541
|
4. "1541 ROM" (16384 bytes, DRIVE_ROM_SIZE 0x4000) -> TheC64->ROM1541
|
||||||
|
|
||||||
The core does NOT construct paths relative to retro_system_directory for
|
The core does not construct paths relative to retro_system_directory for
|
||||||
ROM loading. The system directory variable is fetched in retro_init() but
|
ROM loading. The system directory variable is fetched in retro_init() but
|
||||||
only used for the save directory fallback, not for ROM path construction.
|
only used for the save directory fallback, not for ROM path construction.
|
||||||
DATADIR defaults to "" (empty string) when not defined by the build
|
DATADIR defaults to "" (empty string) when not defined by the build
|
||||||
|
|||||||
+3
-3
@@ -28,7 +28,7 @@ notes: |
|
|||||||
{system_dir}/fuse/{rom_filename} (src/compat/file.c:160-175).
|
{system_dir}/fuse/{rom_filename} (src/compat/file.c:160-175).
|
||||||
|
|
||||||
Embedded ROMs cover 48K-family, 128K, +2, +3, +3e, SE, TC2048, TC2068.
|
Embedded ROMs cover 48K-family, 128K, +2, +3, +3e, SE, TC2048, TC2068.
|
||||||
Pentagon, Scorpion, and peripheral ROMs are NOT embedded and must be
|
Pentagon, Scorpion, and peripheral ROMs are not embedded and must be
|
||||||
placed in {system_dir}/fuse/ by the user.
|
placed in {system_dir}/fuse/ by the user.
|
||||||
|
|
||||||
Default ROM filenames are set in fuse/settings.c:209-260. Each machine
|
Default ROM filenames are set in fuse/settings.c:209-260. Each machine
|
||||||
@@ -244,7 +244,7 @@ files:
|
|||||||
note: "Timex TC2068 ROM 1 (EXROM). Also used for TS2068. Embedded in core."
|
note: "Timex TC2068 ROM 1 (EXROM). Also used for TS2068. Embedded in core."
|
||||||
source_ref: "fuse/settings.c:262, fuse/settings.c:264, fuse/machines/tc2068.c:141"
|
source_ref: "fuse/settings.c:262, fuse/settings.c:264, fuse/machines/tc2068.c:141"
|
||||||
|
|
||||||
# -- External ROMs (NOT embedded, must be in {system_dir}/fuse/) --
|
# -- External ROMs (not embedded, must be in {system_dir}/fuse/) --
|
||||||
|
|
||||||
# Pentagon family
|
# Pentagon family
|
||||||
- name: "fuse/128p-0.rom"
|
- name: "fuse/128p-0.rom"
|
||||||
@@ -441,7 +441,7 @@ platform_details:
|
|||||||
plus3-0/1/2/3.rom, plus3e-0/1/2/3.rom, se-0.rom, se-1.rom,
|
plus3-0/1/2/3.rom, plus3e-0/1/2/3.rom, se-0.rom, se-1.rom,
|
||||||
tc2048.rom, tc2068-0.rom, tc2068-1.rom.
|
tc2048.rom, tc2068-0.rom, tc2068-1.rom.
|
||||||
disciple.rom, plusd.rom, speccyboot-1.4.rom are present in the repo
|
disciple.rom, plusd.rom, speccyboot-1.4.rom are present in the repo
|
||||||
fuse/roms/ directory but NOT in mem_entries[], so they are loaded
|
fuse/roms/ directory but not in mem_entries[], so they are loaded
|
||||||
from the filesystem only.
|
from the filesystem only.
|
||||||
|
|
||||||
machine_rom_map:
|
machine_rom_map:
|
||||||
|
|||||||
+56
-55
@@ -4,9 +4,9 @@ core_classification: official_port
|
|||||||
source: "https://github.com/libretro/hatari"
|
source: "https://github.com/libretro/hatari"
|
||||||
upstream: "https://github.com/hatari/hatari"
|
upstream: "https://github.com/hatari/hatari"
|
||||||
logo: "https://raw.githubusercontent.com/hatari/hatari/main/share/icons/hicolor/scalable/apps/hatari.svg"
|
logo: "https://raw.githubusercontent.com/hatari/hatari/main/share/icons/hicolor/scalable/apps/hatari.svg"
|
||||||
profiled_date: "2026-10-21"
|
profiled_date: "2026-11-05"
|
||||||
source_commit: "50929946d196f431906932420c55e1b3593dacc5"
|
source_commit: "25f488b1667ed064a25c30eb3f06b40bc877c495"
|
||||||
upstream_commit: "23bc3060ebf0da348cc842e358c102ba88002b56"
|
upstream_commit: "c453b85f811fc11bed10e19e5e48fe95377e5a23"
|
||||||
core_version: "2.6.1-devel"
|
core_version: "2.6.1-devel"
|
||||||
version_basis:
|
version_basis:
|
||||||
kind: file
|
kind: file
|
||||||
@@ -38,39 +38,36 @@ data_root:
|
|||||||
note: "~/.hatari is used instead when it exists and ~/.config/hatari does not. Holds hatari.cfg, hatari.nvram and auto.sav. The default tos.img is read from ../share/hatari beside the bin directory."
|
note: "~/.hatari is used instead when it exists and ~/.config/hatari does not. Holds hatari.cfg, hatari.nvram and auto.sav. The default tos.img is read from ../share/hatari beside the bin directory."
|
||||||
|
|
||||||
notes: |
|
notes: |
|
||||||
The main branch of libretro/hatari is the upstream Hatari tree with its
|
The main branch of libretro/hatari is the upstream Hatari tree at
|
||||||
experimental libretro target in src/retro, which upstream added in
|
c453b85f, whose libretro target in src/retro carries the VFS, disk
|
||||||
January 2026, plus the port commits that follow their merge base,
|
control, core options and hard disk loading, with 23 port commits on top:
|
||||||
51ed9991: VFS, disk control, core options, hard disk loading, the
|
the libretro CI, static builds, the virtual keyboard, drive LEDs, the
|
||||||
virtual keyboard, drive LEDs and the floppy drive sound. It builds as
|
floppy drive sound and the RetroArch reset. It builds as hatari_libretro
|
||||||
hatari_libretro (.gitlab-ci-libretro.yml:10-11, src/CMakeLists.txt:371-404),
|
(.gitlab-ci-libretro.yml:10-11, src/CMakeLists.txt:331-341,
|
||||||
reports library_name hatari and the HATARI_VERSION string 2.6.1-devel
|
src/CMakeLists.txt:455-475), reports library_name hatari and the
|
||||||
(src/retro/main_retro.c:223-224, src/includes/version.h:8). The .info
|
HATARI_VERSION string 2.6.1-devel (src/retro/main_retro.c:243-244,
|
||||||
|
src/includes/version.h:8). The .info
|
||||||
shipped in the tree declares no firmware
|
shipped in the tree declares no firmware
|
||||||
(share/libretro/info/libretro-hatari.info). The
|
(share/libretro/info/libretro-hatari.info). The
|
||||||
hatari_libretro.info in libretro-core-info took that file's metadata on
|
hatari_libretro.info in libretro-core-info took that file's metadata on
|
||||||
2026-09-16 and keeps a tos.img firmware entry with the TOS 1.02 US MD5,
|
2026-09-16 and keeps a tos.img firmware entry with the TOS 1.02 US MD5,
|
||||||
which this code never checks.
|
which this code never checks.
|
||||||
|
|
||||||
retro_init builds <system>/tos.img, records whether it exists and passes
|
retro_init builds <system>/tos.img and passes it as --tos when it exists
|
||||||
it as --tos (src/retro/main_retro.c:160-211). It first reads floppy.raw
|
(src/retro/main_retro.c:174-231). It first reads floppy.raw from the
|
||||||
from the system directory as the floppy drive sample
|
system directory as the floppy drive sample (src/retro/main_retro.c:202,
|
||||||
(src/retro/main_retro.c:185, src/retro/floppy_sound.c:146-186). When
|
src/retro/floppy_sound.c:146-186). When tos.img is absent a frontend
|
||||||
tos.img is absent a frontend message is shown and retro_run only
|
message is shown, bUseTos is cleared and Main_Init runs without --tos
|
||||||
refreshes the framebuffer (src/retro/main_retro.c:190-193,
|
(src/retro/main_retro.c:207-222), so TOS_InitImage installs the built-in
|
||||||
src/retro/main_retro.c:286-299). The
|
test stub of faketosData.c instead of reading a ROM (src/tos.c:43,
|
||||||
name is fixed by that check: the .rom and .tos fallbacks of File_Read
|
src/tos.c:1112-1131, src/tos.c:1151-1162). The name is fixed by that
|
||||||
(src/tos.c:60-66, src/file.c:312-353, src/file.c:544-583) are never
|
check: the .rom and .tos fallbacks of File_Read (src/tos.c:60-66,
|
||||||
reached under a frontend. A missing --tos file fails option parsing
|
src/retro/file_retro.c:64-88, src/filename.c:175-214) are never reached
|
||||||
(src/options.c:1026-1079, src/options.c:1937-1945), but Main_ErrorExit only
|
under a frontend. Without a system directory Main_Init runs with no
|
||||||
raises the quit flag in this build (src/retro/main_retro.c:529-541), so
|
--tos, and the TOS path falls back to tos.img in the Hatari data
|
||||||
Main_Init carries on with bUseTos cleared and TOS_InitImage installs the
|
directory derived from the executable location
|
||||||
built-in test stub of faketosData.c instead of reading a ROM
|
(src/configuration.c:810-812, src/paths.c:305-356,
|
||||||
(src/tos.c:43, src/tos.c:1112-1131, src/tos.c:1151-1162). Without a
|
CMakeLists.txt:413-425). TOS_LoadImage strips the 256-byte (34-byte
|
||||||
system directory Main_Init runs with no --tos, the TOS path falls back to
|
|
||||||
tos.img in the Hatari data directory derived from the executable location
|
|
||||||
(src/configuration.c:810-812, src/paths.c:305-356, CMakeLists.txt:422-434)
|
|
||||||
and have_bios is never set. TOS_LoadImage strips the 256-byte (34-byte
|
|
||||||
for 4.92) loader of a RAM TOS, detects EmuTOS by ETOS at offset 0x2c,
|
for 4.92) loader of a RAM TOS, detects EmuTOS by ETOS at offset 0x2c,
|
||||||
refuses images below 0x40 bytes, above 1 MB, with a version outside
|
refuses images below 0x40 bytes, above 1 MB, with a version outside
|
||||||
0x100-0x6FF or a load address other than 0xE00000 or 0xFC0000, and
|
0x100-0x6FF or a load address other than 0xE00000 or 0xFC0000, and
|
||||||
@@ -82,63 +79,67 @@ notes: |
|
|||||||
defaults to SYM_AUTOLOAD_DEBUGGER (src/configuration.c:621,
|
defaults to SYM_AUTOLOAD_DEBUGGER (src/configuration.c:621,
|
||||||
src/includes/configuration.h:29-31), every TOS load also reads a
|
src/includes/configuration.h:29-31), every TOS load also reads a
|
||||||
<tos>.sym symbol table when one exists (src/tos.c:1094,
|
<tos>.sym symbol table when one exists (src/tos.c:1094,
|
||||||
src/debug/symbols.c:1095-1113, src/debug/symbols.c:1002-1020,
|
src/debug/symbols.c:1099-1117, src/debug/symbols.c:1002-1024,
|
||||||
src/debug/symbols.c:372-407).
|
src/debug/symbols.c:372-407).
|
||||||
|
|
||||||
The Hatari home directory is the RetroArch save directory
|
The Hatari home directory is the RetroArch save directory
|
||||||
(src/paths.c:236-250). Configuration is read from <CONFDIR>/hatari.cfg,
|
(src/paths.c:236-250). Configuration is read from <CONFDIR>/hatari.cfg,
|
||||||
/etc on Unix and the current directory on Windows, then from hatari.cfg
|
/etc on Unix and the current directory on Windows, then from hatari.cfg
|
||||||
in that home directory, before the --tos argument is applied
|
in that home directory, before the --tos argument is applied
|
||||||
(src/main.c:260-282, src/main.c:319-322, src/configuration.c:862-867,
|
(src/main.c:256-278, src/main.c:315-318, src/configuration.c:862-867,
|
||||||
src/configuration.c:1061-1071, CMakeLists.txt:444-461). The boot core
|
src/configuration.c:1061-1071, CMakeLists.txt:435-452). The boot core
|
||||||
options are applied right after the command line, so the machine, DSP,
|
options are applied right after the command line, so the machine, DSP,
|
||||||
CPU, FPU, memory and hatari_patch_tos keys of hatari.cfg are overwritten
|
CPU, FPU, memory and hatari_patch_tos keys of hatari.cfg are overwritten
|
||||||
by them (src/main.c:328-330, src/retro/options.c:817-882). Every other
|
by them (src/main.c:324, src/retro/main_retro.c:519-522,
|
||||||
|
src/retro/options.c:817-882). Every other
|
||||||
section is honoured: the cartridge image (src/configuration.c:487-493),
|
section is honoured: the cartridge image (src/configuration.c:487-493),
|
||||||
floppy images, GEMDOS directories and ACSI, SCSI and IDE images
|
floppy images, GEMDOS directories and ACSI, SCSI and IDE images
|
||||||
(src/configuration.c:362-364, src/configuration.c:375-483), MIDI, printer,
|
(src/configuration.c:362-364, src/configuration.c:375-483), MIDI, printer,
|
||||||
RS232 and SCC host endpoints (src/configuration.c:509-543), all disabled
|
RS232 and SCC host endpoints (src/configuration.c:509-543), all disabled
|
||||||
by default (src/configuration.c:736-761) and opened by Midi_Host_Open,
|
by default (src/configuration.c:736-761) and opened by Midi_Host_Open,
|
||||||
Printer_TransferByteTo, RS232_OpenCOMPort and SCC_Init_Channel when
|
Printer_TransferByteTo, RS232_OpenCOMPort and SCC_Init_Channel when
|
||||||
enabled (src/midi.c:342-367, src/printer.c:42-65, src/printer.c:89-106,
|
enabled (src/midi.c:340-365, src/printer.c:42-65, src/printer.c:89-106,
|
||||||
src/rs232.c:175-246, src/scc.c:439-500). szMappingFileName is parsed
|
src/rs232.c:175-246, src/scc.c:439-500). szMappingFileName is parsed
|
||||||
(src/configuration.c:256) but the port's Keymap_LoadRemapFile is empty
|
(src/configuration.c:256) but the port's Keymap_LoadRemapFile is empty
|
||||||
(src/retro/keymap.c:222-224). Only the SDL build reads a keymap file
|
(src/retro/keymap.c:222-224). Only the SDL build reads a keymap file
|
||||||
(src/sdl/keymap.c:701). The autosave snapshot is restored by
|
(src/sdl/keymap.c:701). The autosave snapshot is restored by
|
||||||
M68000_Start (src/m68000.c:332-348), which the port never calls. TT and
|
M68000_Start (src/m68000.c:332-348), which the port never calls. TT and
|
||||||
Falcon NVRAM is hatari.nvram in the home directory, read at NvRam_Init
|
Falcon NVRAM is hatari.nvram in the home directory, read at NvRam_Init
|
||||||
and written at exit (src/falcon/nvram.c:282-294,
|
and written at exit (src/falcon/nvram.c:480-492,
|
||||||
src/falcon/nvram.c:334-337).
|
src/falcon/nvram.c:535-538).
|
||||||
|
|
||||||
Content is a floppy image, an .m3u list parsed relative to its own
|
Content is a floppy image, an .m3u list parsed relative to its own
|
||||||
directory (src/retro/disk_control.c:94-182), an .ide image put on the
|
directory (src/retro/disk_control.c:94-182), an .ide image put on the
|
||||||
IDE master, a .vhd image put on ACSI 0 or a .gem marker naming a GEMDOS
|
IDE master, a .vhd image put on ACSI 0 or a .gem marker naming a GEMDOS
|
||||||
directory (src/retro/main_retro.c:420-478, src/retro/harddisk.c:32-129).
|
directory (src/retro/main_retro.c:427-485, src/retro/harddisk.c:32-129).
|
||||||
With a .gem, <system>/hatari/BOOT.ST is inserted into drive A when it
|
With a .gem, <system>/hatari/BOOT.ST is inserted into drive A when it
|
||||||
exists (src/retro/harddisk.c:105-127). A disk whose name ends in A pulls
|
exists (src/retro/harddisk.c:105-127). A disk whose name ends in A pulls
|
||||||
the sibling ending in B into drive B (src/floppy.c:300-343,
|
the sibling ending in B into drive B (src/floppy.c:300-343,
|
||||||
src/floppy.c:385-388), and an STX image reads its .wd1772 overlay from
|
src/floppy.c:385-388), and an STX image reads its .wd1772 overlay from
|
||||||
the same directory (src/floppies/stx.c:807-827). Savestates pass through
|
the same directory (src/floppies/stx.c:807-827). Savestates pass through
|
||||||
hatari_savestate.tmp in the system directory
|
hatari_savestate.tmp in the system directory
|
||||||
(src/retro/main_retro.c:44, src/retro/main_retro.c:343-410). IPF support
|
(src/retro/main_retro.c:43, src/retro/main_retro.c:350-417). IPF support
|
||||||
is compiled in from rsn8887/capsimg when ENABLE_STATIC_CAPSIMAGE is on
|
is compiled in from rsn8887/capsimg when ENABLE_STATIC_CAPSIMAGE is on
|
||||||
(cmake/BuildDependencies.cmake:93-126). The Windows jobs build with it
|
(cmake/BuildDependencies.cmake:93-126). The Windows jobs build with it
|
||||||
since September 2026 (.gitlab-ci-libretro.yml:101,
|
since September 2026 (.gitlab-ci-libretro.yml:101,
|
||||||
.gitlab-ci-libretro.yml:109) and the static Vita, Wii, Wii U and Switch
|
.gitlab-ci-libretro.yml:109) and the static Vita, Wii, Wii U and Switch
|
||||||
jobs turn it off (.gitlab-ci-libretro.yml:193, .gitlab-ci-libretro.yml:202,
|
jobs turn it off (.gitlab-ci-libretro.yml:193, .gitlab-ci-libretro.yml:202,
|
||||||
.gitlab-ci-libretro.yml:210, .gitlab-ci-libretro.yml:218).
|
.gitlab-ci-libretro.yml:210, .gitlab-ci-libretro.yml:218).
|
||||||
File access goes through the libretro VFS when the frontend provides it
|
File access goes through src/retro/file_retro.c, which reads and writes
|
||||||
(src/retro/vfs.c:17-48, src/file.c:253-302, src/file.c:479-492), and a
|
through the libretro VFS when the frontend provides it and through the C
|
||||||
device-prefixed path such as ux0:/ counts as absolute (src/file.c:152-164).
|
library otherwise, with no .gz or archive unpacking
|
||||||
|
(src/retro/file_retro.c:29-88, src/retro/vfs.c:18-49), and a
|
||||||
|
device-prefixed path such as ux0:/ counts as absolute
|
||||||
|
(src/filename.c:122-134).
|
||||||
|
|
||||||
The standalone program is the SDL build of the upstream tree. Its default
|
The standalone program is the SDL build of the upstream tree. Its default
|
||||||
TOS image is tos.img in the data directory (src/configuration.c:810-812),
|
TOS image is tos.img in the data directory (src/configuration.c:810-812),
|
||||||
which is the directory of the executable on Windows, ../Resources in the
|
which is the directory of the executable on Windows, ../Resources in the
|
||||||
macOS bundle and ../share/hatari beside the bin directory elsewhere
|
macOS bundle and ../share/hatari beside the bin directory elsewhere
|
||||||
(src/paths.c:316-330, CMakeLists.txt:383-394). --tos and the
|
(src/paths.c:316-330, CMakeLists.txt:370-381). --tos and the
|
||||||
szTosImageFileName key replace it. When no image loads, Main_InitSubsystems
|
szTosImageFileName key replace it. When no image loads, Main_InitSubsystems
|
||||||
opens the settings dialog to pick one and exits with Failed to load TOS
|
opens the settings dialog to pick one and exits with Failed to load TOS
|
||||||
image if none is chosen (src/main.c:191-201). Nothing is compiled in as a
|
image if none is chosen (src/main.c:187-197). Nothing is compiled in as a
|
||||||
fallback. The install rule copies a src/tos.img into the data directory
|
fallback. The install rule copies a src/tos.img into the data directory
|
||||||
when one is present at build time, the source tree carries none, and the
|
when one is present at build time, the source tree carries none, and the
|
||||||
release checklist puts the latest EmuTOS 1024k image in the binary
|
release checklist puts the latest EmuTOS 1024k image in the binary
|
||||||
@@ -146,17 +147,17 @@ notes: |
|
|||||||
~/.config/hatari, Library/Application Support/Hatari or
|
~/.config/hatari, Library/Application Support/Hatari or
|
||||||
AppData\Local\Hatari under the user's home (src/paths.c:24-29,
|
AppData\Local\Hatari under the user's home (src/paths.c:24-29,
|
||||||
src/paths.c:201-274). hatari.cfg is read from <CONFDIR> and then from that
|
src/paths.c:201-274). hatari.cfg is read from <CONFDIR> and then from that
|
||||||
home directory, or from the file -c names (src/main.c:256-278,
|
home directory, or from the file -c names (src/main.c:252-274,
|
||||||
src/configuration.c:862-867, src/options.c:1283-1289). hatari.nvram and
|
src/configuration.c:862-867, src/options.c:1283-1289). hatari.nvram and
|
||||||
auto.sav, restored only when bAutoSave is on, are kept there
|
auto.sav, restored only when bAutoSave is on, are kept there
|
||||||
(src/configuration.c:727-733). The window icon is hatari-icon.bmp in the
|
(src/configuration.c:727-733). The window icon is hatari-icon.bmp in the
|
||||||
data directory (src/sdl/screen.c:711-720).
|
data directory (src/sdl/screen.c:715-724).
|
||||||
--lilo boots a Linux kernel instead of TOS, vmlinuz and initrd in the data
|
--lilo boots a Linux kernel instead of TOS, vmlinuz and initrd in the data
|
||||||
directory by default (src/configuration.c:816-824, src/options.c:2309-2323).
|
directory by default (src/configuration.c:816-824, src/options.c:2309-2323).
|
||||||
IPF images are decoded by the built-in reader unless the capsimage
|
IPF images are decoded by the built-in reader unless the capsimage
|
||||||
library is found at build time, which then reads them, and RAW and CTR
|
library is found at build time, which then reads them, and RAW and CTR
|
||||||
images need that library (src/CMakeLists.txt:70-74,
|
images need that library (src/CMakeLists.txt:70-74,
|
||||||
CMakeLists.txt:185-188).
|
CMakeLists.txt:166-169).
|
||||||
|
|
||||||
files:
|
files:
|
||||||
- name: "tos.img"
|
- name: "tos.img"
|
||||||
@@ -166,7 +167,7 @@ files:
|
|||||||
min_size: 64
|
min_size: 64
|
||||||
max_size: 1048576
|
max_size: 1048576
|
||||||
validation: [size]
|
validation: [size]
|
||||||
source_ref: "source src/retro/main_retro.c:160-211, source src/retro/main_retro.c:286-299, source src/options.c:1937-1945, source src/configuration.c:489, source src/tos.c:60-66, source src/tos.c:976-1097, source src/tos.c:838-969, source src/file.c:312-353, upstream src/configuration.c:810-812, upstream src/paths.c:316-330, upstream CMakeLists.txt:383-394, upstream src/main.c:191-201, upstream src/reset.c:66-68, upstream src/file.c:275-308, upstream src/file.c:481-520, upstream src/CMakeLists.txt:79, upstream src/CMakeLists.txt:391-398"
|
source_ref: "source src/retro/main_retro.c:174-231, source src/options.c:1937-1945, source src/configuration.c:489, source src/tos.c:60-66, source src/tos.c:976-1097, source src/tos.c:838-969, source src/tos.c:1151-1162, source src/retro/file_retro.c:64-88, upstream src/configuration.c:810-812, upstream src/paths.c:316-330, upstream CMakeLists.txt:370-381, upstream src/main.c:187-197, upstream src/reset.c:66-68, upstream src/file.c:131-164, upstream src/filename.c:161-200, upstream src/CMakeLists.txt:90, upstream src/CMakeLists.txt:433-440"
|
||||||
note: >
|
note: >
|
||||||
Any TOS 1.00 to 4.04, TOS 0.00, a RAM TOS or EmuTOS. The file must
|
Any TOS 1.00 to 4.04, TOS 0.00, a RAM TOS or EmuTOS. The file must
|
||||||
carry this exact name in the libretro build: retro_init only enables
|
carry this exact name in the libretro build: retro_init only enables
|
||||||
@@ -177,7 +178,7 @@ files:
|
|||||||
stand in for the default, and a .gz or archive is unpacked first. The
|
stand in for the default, and a .gz or archive is unpacked first. The
|
||||||
program exits when no image loads and none is picked in the settings
|
program exits when no image loads and none is picked in the settings
|
||||||
dialog (src/options.c:1937-1940, src/configuration.c:489,
|
dialog (src/options.c:1937-1940, src/configuration.c:489,
|
||||||
src/tos.c:983, src/main.c:191-201).
|
src/tos.c:983, src/main.c:187-197).
|
||||||
|
|
||||||
- name: "tos.sym"
|
- name: "tos.sym"
|
||||||
path: "tos.sym"
|
path: "tos.sym"
|
||||||
@@ -185,7 +186,7 @@ files:
|
|||||||
required: false
|
required: false
|
||||||
storage: user_provided
|
storage: user_provided
|
||||||
unsourceable: "one table per TOS build, valid only beside the image it was linked with: each EmuTOS release archive carries the table of its ROM, etos512k.sym beside etos512k.img, and Atari TOS has none"
|
unsourceable: "one table per TOS build, valid only beside the image it was linked with: each EmuTOS release archive carries the table of its ROM, etos512k.sym beside etos512k.img, and Atari TOS has none"
|
||||||
source_ref: "source src/tos.c:1094, source src/debug/symbols.c:1095-1113, source src/debug/symbols.c:1002-1020, source src/debug/symbols.c:372-407, source src/configuration.c:621, source src/includes/configuration.h:29-31, source src/retro/main_retro.c:186-198"
|
source_ref: "source src/tos.c:1094, source src/debug/symbols.c:1099-1117, source src/debug/symbols.c:1002-1024, source src/debug/symbols.c:372-407, source src/configuration.c:621, source src/includes/configuration.h:29-31, source src/retro/main_retro.c:203-213"
|
||||||
note: >
|
note: >
|
||||||
The name is the TOS image path with its last three characters
|
The name is the TOS image path with its last three characters
|
||||||
replaced by sym, and the image path is always tos.img here: retro_init
|
replaced by sym, and the image path is always tos.img here: retro_init
|
||||||
@@ -209,7 +210,7 @@ files:
|
|||||||
validation: [size]
|
validation: [size]
|
||||||
storage: user_provided
|
storage: user_provided
|
||||||
unsourceable: "any headerless s16le stereo 44100 Hz sample the user records, with no name or version the code expects beyond the filename"
|
unsourceable: "any headerless s16le stereo 44100 Hz sample the user records, with no name or version the code expects beyond the filename"
|
||||||
source_ref: "source src/retro/floppy_sound.c:146-186, source src/retro/floppy_sound.c:130-143, source src/retro/main_retro.c:185, source src/retro/statusbar.c:129-130, source src/retro/options.c:369-383, source src/retro/options.c:914-916"
|
source_ref: "source src/retro/floppy_sound.c:146-186, source src/retro/floppy_sound.c:130-143, source src/retro/main_retro.c:202, source src/retro/statusbar.c:129-130, source src/retro/options.c:369-383, source src/retro/options.c:914-916"
|
||||||
note: >
|
note: >
|
||||||
Read whole at retro_init when its size is between 4 bytes and 16 MB,
|
Read whole at retro_init when its size is between 4 bytes and 16 MB,
|
||||||
and resampled to the core's audio rate. Otherwise the built-in
|
and resampled to the core's audio rate. Otherwise the built-in
|
||||||
@@ -239,7 +240,7 @@ files:
|
|||||||
description: "Boot floppy inserted with GEMDOS hard disk folders"
|
description: "Boot floppy inserted with GEMDOS hard disk folders"
|
||||||
required: false
|
required: false
|
||||||
mode: libretro
|
mode: libretro
|
||||||
source_ref: "source src/retro/harddisk.c:78-129, source src/retro/main_retro.c:442-446"
|
source_ref: "source src/retro/harddisk.c:78-129, source src/retro/main_retro.c:449-453"
|
||||||
note: "Inserted into drive A when the content is a .gem file."
|
note: "Inserted into drive A when the content is a .gem file."
|
||||||
|
|
||||||
- name: "hatari.cfg"
|
- name: "hatari.cfg"
|
||||||
@@ -249,7 +250,7 @@ files:
|
|||||||
required: false
|
required: false
|
||||||
storage: user_provided
|
storage: user_provided
|
||||||
unsourceable: "user settings in Hatari's INI format, with no canonical contents"
|
unsourceable: "user settings in Hatari's INI format, with no canonical contents"
|
||||||
source_ref: "upstream src/main.c:260-282, source src/main.c:319-322, source src/main.c:328-330, source src/configuration.c:862-867, source src/configuration.c:1061-1071, upstream src/paths.c:236-250, source CMakeLists.txt:444-461, upstream src/options.c:1283-1289, upstream src/paths.c:24-29"
|
source_ref: "upstream src/main.c:256-278, source src/main.c:315-318, source src/main.c:324, source src/retro/main_retro.c:519-522, source src/configuration.c:862-867, source src/configuration.c:1061-1071, source src/paths.c:236-250, source CMakeLists.txt:435-452, upstream src/options.c:1283-1289, upstream src/paths.c:24-29"
|
||||||
note: >
|
note: >
|
||||||
Read from <CONFDIR>/hatari.cfg and then from hatari.cfg in the
|
Read from <CONFDIR>/hatari.cfg and then from hatari.cfg in the
|
||||||
RetroArch save directory, before the --tos argument and the boot
|
RetroArch save directory, before the --tos argument and the boot
|
||||||
@@ -267,7 +268,7 @@ files:
|
|||||||
validation: [size]
|
validation: [size]
|
||||||
storage: user_provided
|
storage: user_provided
|
||||||
unsourceable: "machine state the emulator writes itself at exit, with no canonical contents"
|
unsourceable: "machine state the emulator writes itself at exit, with no canonical contents"
|
||||||
source_ref: "source src/falcon/nvram.c:96-97, source src/falcon/nvram.c:116-141, source src/falcon/nvram.c:148-171, source src/falcon/nvram.c:282-294, source src/falcon/nvram.c:334-337, upstream src/paths.c:236-250, source src/main.c:208, upstream src/paths.c:24-29"
|
source_ref: "source src/falcon/nvram.c:163-164, source src/falcon/nvram.c:230-255, source src/falcon/nvram.c:263-286, source src/falcon/nvram.c:480-492, source src/falcon/nvram.c:535-538, source src/paths.c:236-250, source src/main.c:204, upstream src/paths.c:24-29"
|
||||||
note: >
|
note: >
|
||||||
Read from the RetroArch save directory at NvRam_Init, and from the
|
Read from the RetroArch save directory at NvRam_Init, and from the
|
||||||
Hatari home directory in the standalone program. A short read keeps
|
Hatari home directory in the standalone program. A short read keeps
|
||||||
@@ -298,7 +299,7 @@ files:
|
|||||||
sha1: 48be1de23a980bca15a8ed3cb92917340e43bbee
|
sha1: 48be1de23a980bca15a8ed3cb92917340e43bbee
|
||||||
sha256: 0e083a340ad2e522de94e5121565a4730f99d6ee3638c74f5a2c3be579529155
|
sha256: 0e083a340ad2e522de94e5121565a4730f99d6ee3638c74f5a2c3be579529155
|
||||||
crc32: 1639262c
|
crc32: 1639262c
|
||||||
source_ref: "upstream src/sdl/screen.c:711-720, upstream src/CMakeLists.txt:391-394"
|
source_ref: "upstream src/sdl/screen.c:715-724, upstream src/CMakeLists.txt:433-436"
|
||||||
note: >
|
note: >
|
||||||
Loaded with SDL_LoadBMP from the data directory when the window is
|
Loaded with SDL_LoadBMP from the data directory when the window is
|
||||||
created. Without it the window keeps the default icon. Installed
|
created. Without it the window keeps the default icon. Installed
|
||||||
|
|||||||
@@ -228,3 +228,18 @@ files:
|
|||||||
required: false
|
required: false
|
||||||
note: "Falls back to sgb2.boot.rom at the system directory root."
|
note: "Falls back to sgb2.boot.rom at the system directory root."
|
||||||
source_ref: "higan/gb/system/system.cpp:54-65, icarus/heuristics/super-famicom.cpp:243, icarus/heuristics/super-famicom.cpp:614"
|
source_ref: "higan/gb/system/system.cpp:54-65, icarus/heuristics/super-famicom.cpp:243, icarus/heuristics/super-famicom.cpp:614"
|
||||||
|
|
||||||
|
- name: "program.rom"
|
||||||
|
path: "Super GameBoy.sfc/program.rom"
|
||||||
|
system: nintendo-sgb
|
||||||
|
required: false
|
||||||
|
note: "Last folder tried, after the option's folder and SGB.sfc/."
|
||||||
|
source_ref: "higan/target-libretro/libretro-sfc.cpp:209-225, higan/sfc/cartridge/load.cpp:77-80"
|
||||||
|
|
||||||
|
- name: "sgb1.boot.rom"
|
||||||
|
path: "Super GameBoy.sfc/sgb1.boot.rom"
|
||||||
|
system: nintendo-sgb
|
||||||
|
size: 256
|
||||||
|
required: false
|
||||||
|
note: "Read from the folder program.rom was found in, then from the system directory root. The name follows the Super GAMEBOY header of an SGB1 program.rom."
|
||||||
|
source_ref: "higan/target-libretro/libretro-sfc.cpp:229, higan/gb/system/system.cpp:54-65, icarus/heuristics/super-famicom.cpp:232, icarus/heuristics/super-famicom.cpp:618"
|
||||||
@@ -227,3 +227,19 @@ files:
|
|||||||
required: false
|
required: false
|
||||||
note: "Falls back to lr35902.boot.rom at the system directory root."
|
note: "Falls back to lr35902.boot.rom at the system directory root."
|
||||||
source_ref: "source nSide/gb/system/system.cpp:54-65, source nSide/emulator/game.hpp:101-104, source icarus/heuristics/super-famicom.cpp:103, source icarus/heuristics/super-famicom.cpp:523-527"
|
source_ref: "source nSide/gb/system/system.cpp:54-65, source nSide/emulator/game.hpp:101-104, source icarus/heuristics/super-famicom.cpp:103, source icarus/heuristics/super-famicom.cpp:523-527"
|
||||||
|
|
||||||
|
- name: "program.rom"
|
||||||
|
path: "Super GameBoy.sfc/program.rom"
|
||||||
|
system: nintendo-sgb
|
||||||
|
required: false
|
||||||
|
note: "Last folder tried, after the option's folder and SGB.sfc/."
|
||||||
|
source_ref: "source nSide/target-libretro/libretro-sfc.cpp:184-199, source nSide/sfc-balanced/cartridge/load.cpp:159-162"
|
||||||
|
|
||||||
|
- name: "lr35902.boot.rom"
|
||||||
|
path: "Super GameBoy.sfc/lr35902.boot.rom"
|
||||||
|
system: nintendo-sgb
|
||||||
|
size: 256
|
||||||
|
sha1: "aa2f50a77dfb4823da96ba99309085a3c6278515"
|
||||||
|
required: false
|
||||||
|
note: "Read from the folder program.rom was found in, then from the system directory root."
|
||||||
|
source_ref: "source nSide/target-libretro/libretro-sfc.cpp:201, source nSide/gb/system/system.cpp:54-65, source nSide/target-libretro/program.cpp:59-72, source icarus/heuristics/super-famicom.cpp:103"
|
||||||
@@ -4,6 +4,7 @@ core_classification: game_engine
|
|||||||
source: "https://github.com/usineur/hode"
|
source: "https://github.com/usineur/hode"
|
||||||
profiled_date: "2026-10-22"
|
profiled_date: "2026-10-22"
|
||||||
source_commit: "59f3c466923c6b8d49e29176ff697a91165e7efc"
|
source_commit: "59f3c466923c6b8d49e29176ff697a91165e7efc"
|
||||||
|
pin_frozen: "EmuELEC, the only platform that ships it, builds this revision (EmuELEC packages/sx05re/emuelec-ports/hodesdl/package.mk:6 at v4.8). Later commits are not part of that build."
|
||||||
core_version: "0.2.9f"
|
core_version: "0.2.9f"
|
||||||
version_basis:
|
version_basis:
|
||||||
kind: file
|
kind: file
|
||||||
|
|||||||
@@ -289,8 +289,7 @@ files:
|
|||||||
directory (Q3E/src/main/jni/ecwolf/src/wl_main.cpp:1294-1307). Failing
|
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
|
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
|
data set is present, the palettes and the actor definitions. This build
|
||||||
reads it from disk after extraction, unlike the libretro core which
|
reads it from disk after extraction.
|
||||||
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/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:186-195"
|
||||||
|
|
||||||
- name: glprogs.pk4
|
- name: glprogs.pk4
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ notes: |
|
|||||||
|
|
||||||
Loaded paks are matched against hardcoded unsigned 32-bit checksums
|
Loaded paks are matched against hardcoded unsigned 32-bit checksums
|
||||||
(code/qcommon/files.c:178-198: pak_checksums[], missionpak_checksums[]).
|
(code/qcommon/files.c:178-198: pak_checksums[], missionpak_checksums[]).
|
||||||
These are NOT MD5 / SHA1 / CRC32 of the file. They are id's own custom
|
These are not MD5 / SHA1 / CRC32 of the file. They are id's own custom
|
||||||
pak checksum (sum of each lump CRC, see FS_LoadZipFile). A mismatch
|
pak checksum (sum of each lump CRC, see FS_LoadZipFile). A mismatch
|
||||||
prints "WARNING: baseq3/pak0.pk3 is present but its checksum (%u) is
|
prints "WARNING: baseq3/pak0.pk3 is present but its checksum (%u) is
|
||||||
not correct" (code/qcommon/files.c:3574) and keeps running: the loader
|
not correct" (code/qcommon/files.c:3574) and keeps running: the loader
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ data_directories:
|
|||||||
|
|
||||||
files:
|
files:
|
||||||
- name: "<bios>.bin"
|
- name: "<bios>.bin"
|
||||||
|
found_by: content
|
||||||
path: "pcsx2/bios/<bios>.bin"
|
path: "pcsx2/bios/<bios>.bin"
|
||||||
required: true
|
required: true
|
||||||
description: "PS2 BIOS binary"
|
description: "PS2 BIOS binary"
|
||||||
|
|||||||
@@ -52,8 +52,7 @@ notes: |
|
|||||||
Artwork in system_dir/mame2009/artwork/.
|
Artwork in system_dir/mame2009/artwork/.
|
||||||
INI config files in system_dir/mame2009/ini/.
|
INI config files in system_dir/mame2009/ini/.
|
||||||
|
|
||||||
No hiscore.dat, history.dat, or mameinfo.dat support (unlike
|
No hiscore.dat, history.dat, or mameinfo.dat support. The hiscore path is disabled in the libretro
|
||||||
mame2000/mame2003). The hiscore path is disabled in the libretro
|
|
||||||
wrapper.
|
wrapper.
|
||||||
|
|
||||||
48 BIOS root sets. ROM naming follows MAME 0.135 conventions.
|
48 BIOS root sets. ROM naming follows MAME 0.135 conventions.
|
||||||
|
|||||||
@@ -16,10 +16,10 @@ systems: [nec-pc-engine]
|
|||||||
verification: existence
|
verification: existence
|
||||||
notes: >
|
notes: >
|
||||||
Fork of Mednafen's pce_fast module (speed-optimized, no SuperGrafx support).
|
Fork of Mednafen's pce_fast module (speed-optimized, no SuperGrafx support).
|
||||||
Separate codebase from beetle_pce (mednafen/pce_fast/ vs mednafen/pce/).
|
Built from mednafen/pce_fast/.
|
||||||
BIOS loaded via HuCLoadCD() at CD-ROM load time. Core option "pce_fast_cdbios"
|
BIOS loaded via HuCLoadCD() at CD-ROM load time. Core option "pce_fast_cdbios"
|
||||||
selects which card image to use (default: System Card 3).
|
selects which card image to use (default: System Card 3).
|
||||||
No Games Express auto-detection (unlike beetle_pce), so the user must select manually.
|
Does not detect Games Express: the card is chosen by the pce_fast_cdbios option.
|
||||||
No hash or size validation on BIOS load.
|
No hash or size validation on BIOS load.
|
||||||
Upstream pce_fast module only has a single pce_fast.cdbios string setting:
|
Upstream pce_fast module only has a single pce_fast.cdbios string setting:
|
||||||
the 6-option dropdown is a libretro addition.
|
the 6-option dropdown is a libretro addition.
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ systems: [macintosh-ii]
|
|||||||
# 5. app parent directory
|
# 5. app parent directory
|
||||||
# 6. current directory
|
# 6. current directory
|
||||||
|
|
||||||
# The libretro port does NOT call ROM_IsValid() (unlike upstream backends),
|
# The libretro port does not call ROM_IsValid() (unlike upstream backends),
|
||||||
# so no checksum validation occurs. ROM_Init() patches the Mac's own boot
|
# so no checksum validation occurs. ROM_Init() patches the Mac's own boot
|
||||||
# ROM check (DisableRomCheck = 1, ROMEMDEV.c:279).
|
# ROM check (DisableRomCheck = 1, ROMEMDEV.c:279).
|
||||||
|
|
||||||
|
|||||||
@@ -168,6 +168,7 @@ notes: |
|
|||||||
|
|
||||||
files:
|
files:
|
||||||
- name: ps2-0230a-20080220.bin
|
- name: ps2-0230a-20080220.bin
|
||||||
|
found_by: content
|
||||||
path: bios/ps2-0230a-20080220.bin
|
path: bios/ps2-0230a-20080220.bin
|
||||||
required: true
|
required: true
|
||||||
min_size: 4194304
|
min_size: 4194304
|
||||||
@@ -230,6 +231,7 @@ files:
|
|||||||
source_ref: "upstream aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, nethersx2-turnip-classic v0.7 libemucore.so 0x791700-0x7918f4"
|
source_ref: "upstream aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, nethersx2-turnip-classic v0.7 libemucore.so 0x791700-0x7918f4"
|
||||||
|
|
||||||
- name: eeprom.dat
|
- name: eeprom.dat
|
||||||
|
load_from: working_directory
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 64
|
size: 64
|
||||||
@@ -241,6 +243,7 @@ files:
|
|||||||
source_ref: "upstream aethersx2/pcsx2/DEV9/DEV9.cpp:73, upstream aethersx2/pcsx2/DEV9/DEV9.cpp:145-160, nethersx2-turnip-classic v0.7 libemucore.so 0x7bb620-0x7bb680"
|
source_ref: "upstream aethersx2/pcsx2/DEV9/DEV9.cpp:73, upstream aethersx2/pcsx2/DEV9/DEV9.cpp:145-160, nethersx2-turnip-classic v0.7 libemucore.so 0x7bb620-0x7bb680"
|
||||||
|
|
||||||
- name: flash.dat
|
- name: flash.dat
|
||||||
|
load_from: working_directory
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
max_size: 8650752
|
max_size: 8650752
|
||||||
|
|||||||
@@ -149,6 +149,7 @@ notes: |
|
|||||||
|
|
||||||
files:
|
files:
|
||||||
- name: ps2-0230a-20080220.bin
|
- name: ps2-0230a-20080220.bin
|
||||||
|
found_by: content
|
||||||
path: bios/ps2-0230a-20080220.bin
|
path: bios/ps2-0230a-20080220.bin
|
||||||
required: true
|
required: true
|
||||||
min_size: 4194304
|
min_size: 4194304
|
||||||
@@ -211,6 +212,7 @@ files:
|
|||||||
source_ref: "upstream aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, nethersx2-turnip v0.7 libemucore.so 0x79cbd0-0x79cc20"
|
source_ref: "upstream aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, nethersx2-turnip v0.7 libemucore.so 0x79cbd0-0x79cc20"
|
||||||
|
|
||||||
- name: eeprom.dat
|
- name: eeprom.dat
|
||||||
|
load_from: working_directory
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 64
|
size: 64
|
||||||
@@ -222,6 +224,7 @@ files:
|
|||||||
source_ref: "upstream aethersx2/pcsx2/DEV9/DEV9.cpp:146-161, nethersx2-turnip v0.7 libemucore.so 0x7c5c44"
|
source_ref: "upstream aethersx2/pcsx2/DEV9/DEV9.cpp:146-161, nethersx2-turnip v0.7 libemucore.so 0x7c5c44"
|
||||||
|
|
||||||
- name: flash.dat
|
- name: flash.dat
|
||||||
|
load_from: working_directory
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
max_size: 8650752
|
max_size: 8650752
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ notes: |
|
|||||||
|
|
||||||
files:
|
files:
|
||||||
- name: ps2-0230a-20080220.bin
|
- name: ps2-0230a-20080220.bin
|
||||||
|
found_by: content
|
||||||
path: bios/ps2-0230a-20080220.bin
|
path: bios/ps2-0230a-20080220.bin
|
||||||
required: true
|
required: true
|
||||||
min_size: 4194304
|
min_size: 4194304
|
||||||
@@ -194,6 +195,7 @@ files:
|
|||||||
source_ref: "upstream aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, nethersx2 v2.2n-4248 libemucore.so 0x79cbc0-0x79cdc4"
|
source_ref: "upstream aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, nethersx2 v2.2n-4248 libemucore.so 0x79cbc0-0x79cdc4"
|
||||||
|
|
||||||
- name: eeprom.dat
|
- name: eeprom.dat
|
||||||
|
load_from: working_directory
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 64
|
size: 64
|
||||||
@@ -205,6 +207,7 @@ files:
|
|||||||
source_ref: "upstream aethersx2/pcsx2/DEV9/DEV9.cpp:146-161, nethersx2 v2.2n-4248 libemucore.so 0x7c5c40-0x7c5ca0"
|
source_ref: "upstream aethersx2/pcsx2/DEV9/DEV9.cpp:146-161, nethersx2 v2.2n-4248 libemucore.so 0x7c5c40-0x7c5ca0"
|
||||||
|
|
||||||
- name: flash.dat
|
- name: flash.dat
|
||||||
|
load_from: working_directory
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
max_size: 8650752
|
max_size: 8650752
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ version_basis:
|
|||||||
tag: "RELEASE_22_0_RC2"
|
tag: "RELEASE_22_0_RC2"
|
||||||
distance: 0
|
distance: 0
|
||||||
display_name: "MSX / ColecoVision / Spectravideo (openMSX)"
|
display_name: "MSX / ColecoVision / Spectravideo (openMSX)"
|
||||||
|
found_by: content
|
||||||
cores:
|
cores:
|
||||||
- openmsx
|
- openmsx
|
||||||
systems:
|
systems:
|
||||||
@@ -29,7 +30,9 @@ notes: |
|
|||||||
|
|
||||||
ROM resolution via FilePool (src/file/FilePool.cc, FilePoolCore.cc):
|
ROM resolution via FilePool (src/file/FilePool.cc, FilePoolCore.cc):
|
||||||
searches configured directories for files matching SHA1 checksums.
|
searches configured directories for files matching SHA1 checksums.
|
||||||
Filenames are secondary hints, while SHA1 is the primary lookup key.
|
A ROM in share/systemroms is reached by its SHA1 alone: a filename is only
|
||||||
|
looked up beside the machine's XML (src/memory/Rom.cc:121-170,
|
||||||
|
src/config/HardwareConfig.cc:279-280, src/file/FileContext.cc:152-156).
|
||||||
Files may be gzipped or individually zipped.
|
Files may be gzipped or individually zipped.
|
||||||
Each user data directory contributes share/systemroms, scanned
|
Each user data directory contributes share/systemroms, scanned
|
||||||
recursively (src/file/FilePool.cc:27, src/file/FilePoolCore.cc:369-385). RetroBat
|
recursively (src/file/FilePool.cc:27, src/file/FilePoolCore.cc:369-385). RetroBat
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ verification: existence
|
|||||||
notes: |
|
notes: |
|
||||||
OpenTyrian is a source port of the DOS vertical scrolling shooter Tyrian,
|
OpenTyrian is a source port of the DOS vertical scrolling shooter Tyrian,
|
||||||
ported to libretro. It loads the Tyrian 2.1 freeware game data directly.
|
ported to libretro. It loads the Tyrian 2.1 freeware game data directly.
|
||||||
Tyrian 1.x, 2.0, and Tyrian 2000 data files are NOT compatible.
|
Tyrian 1.x, 2.0, and Tyrian 2000 data files are not compatible.
|
||||||
|
|
||||||
The core's .info file sets supports_no_game = true. The core locates the
|
The core's .info file sets supports_no_game = true. The core locates the
|
||||||
data directory by probing for tyrian1.lvl in several paths (file.c:33-58):
|
data directory by probing for tyrian1.lvl in several paths (file.c:33-58):
|
||||||
@@ -245,9 +245,9 @@ files:
|
|||||||
# which maps to shapes{char}.dat at tyrian2.c:3079.
|
# which maps to shapes{char}.dat at tyrian2.c:3079.
|
||||||
# The shipped set is ), W, X, Y, Z. lvlmast.c:128-131 writes } for the
|
# The shipped set is ), W, X, Y, Z. lvlmast.c:128-131 writes } for the
|
||||||
# Episode 4 tileset, which no distributed file matches.
|
# Episode 4 tileset, which no distributed file matches.
|
||||||
# Note: shapeFile[34] in lvlmast.c is a DIFFERENT mechanism:
|
# Note: shapeFile[34] in lvlmast.c is a different mechanism:
|
||||||
# it maps indices to characters for newsh?.shp (enemy sprites),
|
# it maps indices to characters for newsh?.shp (enemy sprites),
|
||||||
# NOT for shapes?.dat (level tilesets).
|
# not for shapes?.dat (level tilesets).
|
||||||
# -----------------------------------------------------------
|
# -----------------------------------------------------------
|
||||||
- name: "shapes).dat"
|
- name: "shapes).dat"
|
||||||
category: game_data
|
category: game_data
|
||||||
|
|||||||
@@ -35,5 +35,4 @@ notes:
|
|||||||
divergence_note: >
|
divergence_note: >
|
||||||
Fork of mupen64plus-core with significant divergence. Includes legacy
|
Fork of mupen64plus-core with significant divergence. Includes legacy
|
||||||
GPU plugins (Glide64, glN64, Rice, angrylion) and ParaLLEl-RDP/RSP.
|
GPU plugins (Glide64, glN64, Rice, angrylion) and ParaLLEl-RDP/RSP.
|
||||||
Uses flat path 64DD_IPL.bin unlike mupen64plus-next which uses
|
Reads 64DD_IPL.bin at the root of the system folder.
|
||||||
Mupen64plus/IPL.n64 subdirectory.
|
|
||||||
@@ -91,6 +91,7 @@ notes: |
|
|||||||
|
|
||||||
files:
|
files:
|
||||||
- name: "<bios>.bin"
|
- name: "<bios>.bin"
|
||||||
|
found_by: content
|
||||||
path: "pcsx2/bios/<bios>.bin"
|
path: "pcsx2/bios/<bios>.bin"
|
||||||
description: "PS2 BIOS image"
|
description: "PS2 BIOS image"
|
||||||
min_size: 4194304
|
min_size: 4194304
|
||||||
@@ -159,6 +160,7 @@ files:
|
|||||||
failure to open is reported once on screen.
|
failure to open is reported once on screen.
|
||||||
|
|
||||||
- name: "eeprom.dat"
|
- name: "eeprom.dat"
|
||||||
|
load_from: working_directory
|
||||||
description: "DEV9 network adapter EEPROM"
|
description: "DEV9 network adapter EEPROM"
|
||||||
size: 64
|
size: 64
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ notes: |
|
|||||||
|
|
||||||
files:
|
files:
|
||||||
- name: ps2-0230a-20080220.bin
|
- name: ps2-0230a-20080220.bin
|
||||||
|
found_by: content
|
||||||
system: sony-playstation-2
|
system: sony-playstation-2
|
||||||
required: true
|
required: true
|
||||||
description: "PS2 console BIOS"
|
description: "PS2 console BIOS"
|
||||||
@@ -126,6 +127,7 @@ files:
|
|||||||
source_ref: "pcsx2/CDVD/CDVD.cpp:93-122"
|
source_ref: "pcsx2/CDVD/CDVD.cpp:93-122"
|
||||||
|
|
||||||
- name: eeprom.dat
|
- name: eeprom.dat
|
||||||
|
load_from: working_directory
|
||||||
system: sony-playstation-2
|
system: sony-playstation-2
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
@@ -135,6 +137,7 @@ files:
|
|||||||
source_ref: "plugins/dev9ghzdrk/DEV9.cpp:176-227, plugins/dev9ghzdrk/DEV9.cpp:71-81"
|
source_ref: "plugins/dev9ghzdrk/DEV9.cpp:176-227, plugins/dev9ghzdrk/DEV9.cpp:71-81"
|
||||||
|
|
||||||
- name: flash.dat
|
- name: flash.dat
|
||||||
|
load_from: working_directory
|
||||||
system: sony-playstation-2
|
system: sony-playstation-2
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ notes: |
|
|||||||
|
|
||||||
files:
|
files:
|
||||||
- name: ps2-0230a-20080220.bin
|
- name: ps2-0230a-20080220.bin
|
||||||
|
found_by: content
|
||||||
aliases: [ps2-0250j-20100415.bin, SCPH-70004_BIOS_V12_EUR_200.BIN]
|
aliases: [ps2-0250j-20100415.bin, SCPH-70004_BIOS_V12_EUR_200.BIN]
|
||||||
required: true
|
required: true
|
||||||
min_size: 4194304
|
min_size: 4194304
|
||||||
@@ -66,6 +67,7 @@ files:
|
|||||||
source_ref: "pcsx2/CDVD/CDVD.cpp:190-204"
|
source_ref: "pcsx2/CDVD/CDVD.cpp:190-204"
|
||||||
|
|
||||||
- name: eeprom.dat
|
- name: eeprom.dat
|
||||||
|
load_from: working_directory
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 64
|
size: 64
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ notes: |
|
|||||||
|
|
||||||
files:
|
files:
|
||||||
- name: COH-H31100.rom0
|
- name: COH-H31100.rom0
|
||||||
|
found_by: content
|
||||||
system: namco-system246
|
system: namco-system246
|
||||||
required: true
|
required: true
|
||||||
min_size: 4194304
|
min_size: 4194304
|
||||||
@@ -141,6 +142,7 @@ files:
|
|||||||
source_ref: "source pcsx2/CDVD/CDVD.cpp:51-52, source pcsx2/CDVD/CDVD.cpp:196-209"
|
source_ref: "source pcsx2/CDVD/CDVD.cpp:51-52, source pcsx2/CDVD/CDVD.cpp:196-209"
|
||||||
|
|
||||||
- name: eeprom.dat
|
- name: eeprom.dat
|
||||||
|
load_from: working_directory
|
||||||
system: namco-system246
|
system: namco-system246
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
@@ -150,6 +152,7 @@ files:
|
|||||||
source_ref: "source pcsx2/DEV9/DEV9.cpp:67-77, source pcsx2/DEV9/DEV9.cpp:116-167"
|
source_ref: "source pcsx2/DEV9/DEV9.cpp:67-77, source pcsx2/DEV9/DEV9.cpp:116-167"
|
||||||
|
|
||||||
- name: flash.dat
|
- name: flash.dat
|
||||||
|
load_from: working_directory
|
||||||
system: namco-system246
|
system: namco-system246
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ notes: |
|
|||||||
wrapper hardcodes it to 0 (always prefer real BIOS when available).
|
wrapper hardcodes it to 0 (always prefer real BIOS when available).
|
||||||
|
|
||||||
FreeBIOS (freebios/freebios.min) is 4096 bytes, a clean-room
|
FreeBIOS (freebios/freebios.min) is 4096 bytes, a clean-room
|
||||||
reimplementation. It is NOT the official Nintendo Pokemon Mini BIOS.
|
reimplementation.
|
||||||
|
|
||||||
files:
|
files:
|
||||||
- name: "bios.min"
|
- name: "bios.min"
|
||||||
|
|||||||
+36
-23
@@ -1,35 +1,48 @@
|
|||||||
# Redream: Sega Dreamcast (libretro)
|
|
||||||
# ref: libretro/redream, docs.libretro.com/library/redream
|
|
||||||
# Uses dc/boot.bin and dc/flash.bin (different names from Flycast)
|
|
||||||
# Same BIOS data as Flycast's dc_boot.bin / dc_flash.bin
|
|
||||||
#
|
|
||||||
# doc vs source: docs list boot.bin md5 e10c53c2f8b90bab96ead2d368858623
|
|
||||||
# which matches dc_bios.bin in the repo. Flycast uses dc_boot.bin (same
|
|
||||||
# data, 2 MB) while Redream calls it boot.bin. The flash.bin is identical
|
|
||||||
# across both cores.
|
|
||||||
emulator: Redream
|
emulator: Redream
|
||||||
type: libretro
|
type: libretro
|
||||||
source: "https://github.com/libretro/redream"
|
source: "https://github.com/inolen/redream"
|
||||||
core_version: null
|
profiled_date: "2026-11-05"
|
||||||
|
source_commit: "ffb7302245ff40515cb9f0f0b0e233a4b39342d3"
|
||||||
|
core_version: "v1.0.0-25-gffb7302"
|
||||||
version_basis:
|
version_basis:
|
||||||
kind: unverified
|
kind: tag
|
||||||
why: no_pin
|
tag: "v1.0.0"
|
||||||
|
distance: 25
|
||||||
cores:
|
cores:
|
||||||
- redream
|
- redream
|
||||||
systems:
|
systems:
|
||||||
- sega-dreamcast
|
- sega-dreamcast
|
||||||
|
|
||||||
|
notes: |
|
||||||
|
Last public tree of redream (2018-04-18). It builds the SDL program and
|
||||||
|
a libretro core that reports library_name redream
|
||||||
|
(src/host/retro_host.c:214-220). retro_init makes <system>/dc the
|
||||||
|
application directory (src/host/retro_host.c:192-199), where the boot ROM
|
||||||
|
and the flash ROM are read. Later releases, 1.5.0 included, are built from
|
||||||
|
a private tree and published as binaries only.
|
||||||
|
|
||||||
files:
|
files:
|
||||||
- name: dc_bios.bin
|
- name: boot.bin
|
||||||
|
path: dc/boot.bin
|
||||||
system: sega-dreamcast
|
system: sega-dreamcast
|
||||||
destination: dc/boot.bin
|
required: false
|
||||||
required: true
|
hle_fallback: true
|
||||||
sha1: 8951d1bb219ab2ff8583033d2119c899cc81f18c
|
|
||||||
md5: e10c53c2f8b90bab96ead2d368858623
|
|
||||||
size: 2097152
|
size: 2097152
|
||||||
- name: dc_flash.bin
|
md5:
|
||||||
|
- e10c53c2f8b90bab96ead2d368858623
|
||||||
|
- f2cd29d09f3e29984bcea22ab2e006fe
|
||||||
|
- 37c921eb47532cae8fb70e5d987ce91c
|
||||||
|
- a5c6a00818f97c5e3e91569ee22416dc
|
||||||
|
validation: [size, md5]
|
||||||
|
note: "Dreamcast boot ROM. An image of another size or with an md5 outside the list is refused, and the BIOS is then emulated at a high level."
|
||||||
|
source_ref: "src/guest/rom/boot.c:12-22, src/guest/rom/boot.c:24-46, src/guest/rom/boot.c:48-80, src/guest/rom/boot.c:82-89, src/guest/bios/bios.c:227-238, src/guest/bios/bios.c:326-336"
|
||||||
|
|
||||||
|
- name: flash.bin
|
||||||
|
path: dc/flash.bin
|
||||||
system: sega-dreamcast
|
system: sega-dreamcast
|
||||||
destination: dc/flash.bin
|
required: false
|
||||||
required: true
|
hle_fallback: true
|
||||||
sha1: 94d44d7f9529ec1642ba3771ed3c5f756d5bc872
|
|
||||||
md5: 0a93f7940c455905bea6e392dfde92a4
|
|
||||||
size: 131072
|
size: 131072
|
||||||
|
validation: [size]
|
||||||
|
note: "Dreamcast flash ROM. An image of another size is ignored and the partitions are reset to factory settings, and the flash is written back on exit."
|
||||||
|
source_ref: "src/guest/rom/flash.c:26-36, src/guest/rom/flash.c:47-72, src/guest/rom/flash.c:100-107, src/guest/rom/flash.c:197-200, src/guest/bios/bios.c:137-198"
|
||||||
@@ -4,7 +4,8 @@ core_classification: game_engine
|
|||||||
source: "https://github.com/lethal-guitar/RigelEngine"
|
source: "https://github.com/lethal-guitar/RigelEngine"
|
||||||
upstream: "https://github.com/lethal-guitar/RigelEngine"
|
upstream: "https://github.com/lethal-guitar/RigelEngine"
|
||||||
profiled_date: "2026-10-22"
|
profiled_date: "2026-10-22"
|
||||||
source_commit: "30afeff8f0b105eac77ee0a2fbd54b06e1a49b60"
|
source_commit: "f05996f9b3ad3b3ea5bb818e49e7977636746343"
|
||||||
|
pin_frozen: "EmuELEC, the only platform that ships it, builds this revision (EmuELEC packages/sx05re/emuelec-ports/rigelengine/package.mk:5 at v4.8). Later commits are not part of that build."
|
||||||
core_version: "0.9.1"
|
core_version: "0.9.1"
|
||||||
version_basis:
|
version_basis:
|
||||||
kind: file
|
kind: file
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ systems: [riscv]
|
|||||||
# loads a .rvvm plain-text config file specifying bootrom, kernel, nvme drives,
|
# loads a .rvvm plain-text config file specifying bootrom, kernel, nvme drives,
|
||||||
# memory, CPU mode, cmdline, and framebuffer resolution.
|
# memory, CPU mode, cmdline, and framebuffer resolution.
|
||||||
#
|
#
|
||||||
# The core does NOT use the RetroArch system directory. All firmware paths are
|
# The core does not use the RetroArch system directory. All firmware paths are
|
||||||
# specified in the .rvvm config file and resolved relative to its directory.
|
# specified in the .rvvm config file and resolved relative to its directory.
|
||||||
# The core chdir()s to the .rvvm file's parent before initializing the VM.
|
# The core chdir()s to the .rvvm file's parent before initializing the VM.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ systems: [scummvm]
|
|||||||
#
|
#
|
||||||
# MT-32/CM-32L ROM files go in scummvm/extra/ and are loaded by
|
# MT-32/CM-32L ROM files go in scummvm/extra/ and are loaded by
|
||||||
# audio/softsynth/mt32.cpp. The core tries CM-32L first, then MT-32.
|
# audio/softsynth/mt32.cpp. The core tries CM-32L first, then MT-32.
|
||||||
# These are NOT bundled (proprietary). Everything else is open-source
|
# These are not bundled (proprietary). Everything else is open-source
|
||||||
# data shipped with ScummVM releases.
|
# data shipped with ScummVM releases.
|
||||||
|
|
||||||
# ----- scummvm.ini (config, auto-created) -----
|
# ----- scummvm.ini (config, auto-created) -----
|
||||||
@@ -566,7 +566,7 @@ files:
|
|||||||
# Grim Fandango, Escape from Monkey Island, Myst III, The Longest
|
# Grim Fandango, Escape from Monkey Island, Myst III, The Longest
|
||||||
# Journey (Stark), Wintermute 3D, Freescape, HPL1 (Penumbra),
|
# Journey (Stark), Wintermute 3D, Freescape, HPL1 (Penumbra),
|
||||||
# Playground3D test engine. Listed in dists/scummvm.rc.
|
# Playground3D test engine. Listed in dists/scummvm.rc.
|
||||||
# Individual shader files are NOT listed here since they are
|
# Individual shader files are not listed here since they are
|
||||||
# bundled in shaders.dat for the theme path and as individual
|
# bundled in shaders.dat for the theme path and as individual
|
||||||
# files in the extra/shaders/ directory. The build bundles them
|
# files in the extra/shaders/ directory. The build bundles them
|
||||||
# automatically via backends/platform/libretro/scripts/bundle_datafiles.sh.
|
# automatically via backends/platform/libretro/scripts/bundle_datafiles.sh.
|
||||||
|
|||||||
@@ -18,9 +18,8 @@ verification: existence
|
|||||||
notes: |
|
notes: |
|
||||||
SDLPoP is NagyD's open-source port of the DOS Prince of Persia (1989),
|
SDLPoP is NagyD's open-source port of the DOS Prince of Persia (1989),
|
||||||
rebuilt from the leaked Jordan Mechner source and refined through
|
rebuilt from the leaked Jordan Mechner source and refined through
|
||||||
years of community reverse engineering. Unlike the other engines in
|
years of community reverse engineering. SDLPoP ships all game data in
|
||||||
this directory, SDLPoP ships with ALL game data in-tree, so no retail
|
its tree, so no retail data file is needed.
|
||||||
data file is required or useful.
|
|
||||||
|
|
||||||
open_dat() (src/seg009.c:438) reads an archive named FOO.DAT if
|
open_dat() (src/seg009.c:438) reads an archive named FOO.DAT if
|
||||||
present, otherwise falls back to a loose folder data/FOO/ containing
|
present, otherwise falls back to a loose folder data/FOO/ containing
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ notes: |
|
|||||||
the shareware build, wl6 then wl3 then wl1 for the full ones, sdm for
|
the shareware build, wl6 then wl3 then wl1 for the full ones, sdm for
|
||||||
the Spear demo, sod or sd1 after --mission 0 or 1 for Spear of Destiny,
|
the Spear demo, sod or sd1 after --mission 0 or 1 for Spear of Destiny,
|
||||||
sd2 or sd3 after --mission 2 or 3 for the mission pack build
|
sd2 or sd3 after --mission 2 or 3 for the mission pack build
|
||||||
(wl_main.cpp:2015-2040). Unlike Wolf4SDL, every Spear build reads its
|
(wl_main.cpp:2015-2040). Every Spear build reads its
|
||||||
graphics and audio files under the sod extension (wl_menu.cpp:5341-5342)
|
graphics and audio files under the sod extension (wl_menu.cpp:5341-5342)
|
||||||
and only vswap, maphead and gamemaps under the mission extension, so the
|
and only vswap, maphead and gamemaps under the mission extension, so the
|
||||||
mission packs need the original game beside them.
|
mission packs need the original game beside them.
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ notes: |
|
|||||||
Game data loaded at runtime from dat/ tree via datafile_path().
|
Game data loaded at runtime from dat/ tree via datafile_path().
|
||||||
ref: crawl-ref/source/files.cc:375-458 (_get_base_dirs() + datafile_path())
|
ref: crawl-ref/source/files.cc:375-458 (_get_base_dirs() + datafile_path())
|
||||||
No DATA_DIR_PATH defined in Makefile.libretro, so it falls back to SysEnv.crawl_dir.
|
No DATA_DIR_PATH defined in Makefile.libretro, so it falls back to SysEnv.crawl_dir.
|
||||||
Data is NOT compiled into the binary.
|
Data is not compiled into the binary.
|
||||||
|
|
||||||
dat/ tree contents (532 files, 16 MB):
|
dat/ tree contents (532 files, 16 MB):
|
||||||
- dat/tiles/*.png (floor, wall, feat, player, main, gui, icons) (crawl-ref/source/tiletex.cc:89-97)
|
- dat/tiles/*.png (floor, wall, feat, player, main, gui, icons) (crawl-ref/source/tiletex.cc:89-97)
|
||||||
|
|||||||
@@ -5,9 +5,11 @@ source: https://github.com/christianhaitian/ti99sim
|
|||||||
upstream: https://www.mrousseau.org/programs/ti99sim/
|
upstream: https://www.mrousseau.org/programs/ti99sim/
|
||||||
profiled_date: "2026-03-29"
|
profiled_date: "2026-03-29"
|
||||||
source_commit: "e3608541943b5258afe45b74e3f78e723df1fcbd"
|
source_commit: "e3608541943b5258afe45b74e3f78e723df1fcbd"
|
||||||
core_version: null
|
core_version: "0.16.0"
|
||||||
version_basis:
|
version_basis:
|
||||||
kind: none
|
kind: file
|
||||||
|
path: "doc/CHANGES.html"
|
||||||
|
pattern: '<p>Version ([0-9][0-9.]*) - '
|
||||||
cores:
|
cores:
|
||||||
- ti99sim
|
- ti99sim
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -36,7 +36,7 @@ notes: |
|
|||||||
separate libretro core.
|
separate libretro core.
|
||||||
|
|
||||||
All standard ROMs (kernal, basic, chargen, drive DOS, editor) are embedded
|
All standard ROMs (kernal, basic, chargen, drive DOS, editor) are embedded
|
||||||
in the core binary via USE_EMBEDDED. External ROM files are NOT required
|
in the core binary via USE_EMBEDDED. External ROM files are not required
|
||||||
for normal operation. The embedded ROMs are compiled from vice/data/<machine>/
|
for normal operation. The embedded ROMs are compiled from vice/data/<machine>/
|
||||||
and ship with every build.
|
and ship with every build.
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ notes: >
|
|||||||
plus all drive ROMs (1540, 1541, 1541-II, 1551, 1570, 1571, 1571CR, 1581, 1001,
|
plus all drive ROMs (1540, 1541, 1541-II, 1551, 1570, 1571, 1571CR, 1581, 1001,
|
||||||
2031, 2040, 3040, 4040, 9000) and VIC-II palettes. Embedded ROM check in
|
2031, 2040, 3040, 4040, 9000) and VIC-II palettes. Embedded ROM check in
|
||||||
sysfile_load takes priority over filesystem. Kernal Rev 1 (901227-01) and
|
sysfile_load takes priority over filesystem. Kernal Rev 1 (901227-01) and
|
||||||
Rev 2 (901227-02) are NOT embedded: selecting C64 OLD NTSC or C64 OLD PAL model
|
Rev 2 (901227-02) are not embedded: selecting C64 OLD NTSC or C64 OLD PAL model
|
||||||
requires them on the filesystem in system/vice/C64/. JiffyDOS requires True Drive
|
requires them on the filesystem in system/vice/C64/. JiffyDOS requires True Drive
|
||||||
Emulation enabled and a 1541/1571/1581 drive type. SX-64 models use a separate
|
Emulation enabled and a 1541/1571/1581 drive type. SX-64 models use a separate
|
||||||
JiffyDOS kernal (JiffyDOS_SX-64.bin) not declared in the .info.
|
JiffyDOS kernal (JiffyDOS_SX-64.bin) not declared in the .info.
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ notes: >
|
|||||||
plus all drive ROMs (1540, 1541, 1541-II, 1551, 1570, 1571, 1571CR, 1581, 1001,
|
plus all drive ROMs (1540, 1541, 1541-II, 1551, 1570, 1571, 1571CR, 1581, 1001,
|
||||||
2031, 2040, 3040, 4040, 9000) and VIC-II palettes. Embedded ROM check in
|
2031, 2040, 3040, 4040, 9000) and VIC-II palettes. Embedded ROM check in
|
||||||
sysfile_load takes priority over filesystem. Kernal Rev 1 (901227-01) and
|
sysfile_load takes priority over filesystem. Kernal Rev 1 (901227-01) and
|
||||||
Rev 2 (901227-02) are NOT embedded: selecting C64 OLD NTSC or C64 OLD PAL model
|
Rev 2 (901227-02) are not embedded: selecting C64 OLD NTSC or C64 OLD PAL model
|
||||||
requires them on the filesystem in system/vice/C64/. JiffyDOS requires True Drive
|
requires them on the filesystem in system/vice/C64/. JiffyDOS requires True Drive
|
||||||
Emulation enabled and a 1541/1571/1581 drive type. SX-64 models use a separate
|
Emulation enabled and a 1541/1571/1581 drive type. SX-64 models use a separate
|
||||||
JiffyDOS kernal (JiffyDOS_SX-64.bin) not declared in the .info.
|
JiffyDOS kernal (JiffyDOS_SX-64.bin) not declared in the .info.
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ notes: >
|
|||||||
files:
|
files:
|
||||||
- name: "kernal.901486-02.bin"
|
- name: "kernal.901486-02.bin"
|
||||||
description: "VIC-1001 Kernal Rev 2 (Japanese NTSC)"
|
description: "VIC-1001 Kernal Rev 2 (Japanese NTSC)"
|
||||||
region: [japan]
|
|
||||||
required: false
|
required: false
|
||||||
size: 8192
|
size: 8192
|
||||||
validation: [size]
|
validation: [size]
|
||||||
@@ -35,7 +34,6 @@ files:
|
|||||||
|
|
||||||
- name: "chargen-901460-02.bin"
|
- name: "chargen-901460-02.bin"
|
||||||
description: "VIC-1001 Character ROM (Japanese)"
|
description: "VIC-1001 Character ROM (Japanese)"
|
||||||
region: [japan]
|
|
||||||
required: false
|
required: false
|
||||||
size: 4096
|
size: 4096
|
||||||
validation: [size]
|
validation: [size]
|
||||||
|
|||||||
@@ -15,9 +15,8 @@ cores: [x64sdl]
|
|||||||
systems: [commodore-c64]
|
systems: [commodore-c64]
|
||||||
notes: >
|
notes: >
|
||||||
Old port of VICE 3.1 using an SDL-to-libretro shim (r-type/sdlvice-libretro).
|
Old port of VICE 3.1 using an SDL-to-libretro shim (r-type/sdlvice-libretro).
|
||||||
Separate codebase from the newer vice-libretro port. Marked experimental and
|
Marked experimental and superseded. This core embeds no system ROMs: all ROMs
|
||||||
superseded. Unlike the newer port, this core does NOT embed system ROMs: all ROMs
|
are read from <system_dir>/data/C64/ and <system_dir>/data/DRIVES/.
|
||||||
must be on disk in <system_dir>/data/C64/ and <system_dir>/data/DRIVES/.
|
|
||||||
The .info declares firmware_count=0, while the core reads the ROMs this profile lists. No JiffyDOS support.
|
The .info declares firmware_count=0, while the core reads the ROMs this profile lists. No JiffyDOS support.
|
||||||
No save states, no netplay, no cheats.
|
No save states, no netplay, no cheats.
|
||||||
|
|
||||||
@@ -55,7 +54,6 @@ files:
|
|||||||
|
|
||||||
- name: "jpkernal"
|
- name: "jpkernal"
|
||||||
description: "Japanese C64 Kernal ROM"
|
description: "Japanese C64 Kernal ROM"
|
||||||
region: [japan]
|
|
||||||
required: false
|
required: false
|
||||||
size: 8192
|
size: 8192
|
||||||
path: "data/C64/jpkernal"
|
path: "data/C64/jpkernal"
|
||||||
@@ -64,7 +62,6 @@ files:
|
|||||||
|
|
||||||
- name: "jpchrgen"
|
- name: "jpchrgen"
|
||||||
description: "Japanese C64 character generator ROM"
|
description: "Japanese C64 character generator ROM"
|
||||||
region: [japan]
|
|
||||||
required: false
|
required: false
|
||||||
size: 4096
|
size: 4096
|
||||||
path: "data/C64/jpchrgen"
|
path: "data/C64/jpchrgen"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ type: "standalone + libretro"
|
|||||||
core_classification: community_fork
|
core_classification: community_fork
|
||||||
source:
|
source:
|
||||||
standalone: "https://github.com/has207/xenia-edge"
|
standalone: "https://github.com/has207/xenia-edge"
|
||||||
libretro: "https://git.libretro.com/libretro/xenia-libretro"
|
libretro: "https://git.libretro.com/libretro/xenia-edge-libretro"
|
||||||
upstream: "https://github.com/has207/xenia-edge"
|
upstream: "https://github.com/has207/xenia-edge"
|
||||||
source_commit:
|
source_commit:
|
||||||
standalone: "71804222514022ce80b757ca79c4ddb2dcf4a06c"
|
standalone: "71804222514022ce80b757ca79c4ddb2dcf4a06c"
|
||||||
@@ -51,7 +51,7 @@ notes: |
|
|||||||
XENIA-EDGE rule and runs `xenia_edge <rom>`. RetroDECK unpacks the AppImage
|
XENIA-EDGE rule and runs `xenia_edge <rom>`. RetroDECK unpacks the AppImage
|
||||||
into a xenia-edge component and executes bin/xenia_edge.
|
into a xenia-edge component and executes bin/xenia_edge.
|
||||||
|
|
||||||
The libretro core xenia_edge_libretro is built from libretro/xenia-libretro
|
The libretro core xenia_edge_libretro is built from libretro/xenia-edge-libretro
|
||||||
on git.libretro.com (branch libretro, CORENAME xenia_edge in .gitlab-ci.yml),
|
on git.libretro.com (branch libretro, CORENAME xenia_edge in .gitlab-ci.yml),
|
||||||
mirrored as WizzardSK/xenia-libretro on GitHub. It carries the xenia-edge
|
mirrored as WizzardSK/xenia-libretro on GitHub. It carries the xenia-edge
|
||||||
tree merged from edge at 8dc77b09, the release named in upstream.version and
|
tree merged from edge at 8dc77b09, the release named in upstream.version and
|
||||||
|
|||||||
@@ -81,7 +81,6 @@ files:
|
|||||||
- name: "d200e_1.rom"
|
- name: "d200e_1.rom"
|
||||||
system: dragon64
|
system: dragon64
|
||||||
description: "Dragon 200-E BASIC IC18 (Spanish)"
|
description: "Dragon 200-E BASIC IC18 (Spanish)"
|
||||||
region: [spain]
|
|
||||||
required: true
|
required: true
|
||||||
size: 16384
|
size: 16384
|
||||||
crc32: "95af0a0a"
|
crc32: "95af0a0a"
|
||||||
@@ -93,7 +92,6 @@ files:
|
|||||||
- name: "d200e_2.rom"
|
- name: "d200e_2.rom"
|
||||||
system: dragon64
|
system: dragon64
|
||||||
description: "Dragon 200-E BASIC IC17 (Spanish)"
|
description: "Dragon 200-E BASIC IC17 (Spanish)"
|
||||||
region: [spain]
|
|
||||||
required: false
|
required: false
|
||||||
size: 16384
|
size: 16384
|
||||||
crc32: "48b985df"
|
crc32: "48b985df"
|
||||||
@@ -104,7 +102,6 @@ files:
|
|||||||
- name: "d200e_26.rom"
|
- name: "d200e_26.rom"
|
||||||
system: dragon64
|
system: dragon64
|
||||||
description: "Dragon 200-E external character generator ROM"
|
description: "Dragon 200-E external character generator ROM"
|
||||||
region: [spain]
|
|
||||||
required: false
|
required: false
|
||||||
size: 4096
|
size: 4096
|
||||||
crc32: "565724bc"
|
crc32: "565724bc"
|
||||||
@@ -258,7 +255,6 @@ files:
|
|||||||
- name: "alice.rom"
|
- name: "alice.rom"
|
||||||
system: mc10
|
system: mc10
|
||||||
description: "Matra & Hachette Alice Microcolour BASIC"
|
description: "Matra & Hachette Alice Microcolour BASIC"
|
||||||
region: [france]
|
|
||||||
required: true
|
required: true
|
||||||
size: 8192
|
size: 8192
|
||||||
crc32: "f876abe9"
|
crc32: "f876abe9"
|
||||||
|
|||||||
@@ -179,6 +179,7 @@ notes: |
|
|||||||
|
|
||||||
files:
|
files:
|
||||||
- name: ps2-0230a-20080220.bin
|
- name: ps2-0230a-20080220.bin
|
||||||
|
found_by: content
|
||||||
path: pcsx2/bios/ps2-0230a-20080220.bin
|
path: pcsx2/bios/ps2-0230a-20080220.bin
|
||||||
aliases: [ps2-0250j-20100415.bin]
|
aliases: [ps2-0250j-20100415.bin]
|
||||||
standalone_path: bios/ps2-0230a-20080220.bin
|
standalone_path: bios/ps2-0230a-20080220.bin
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"files":[["22vp931.zip",1405,"bios"],["246C.mec",4,"bios"],["246C.nvm",1024,"bios"],["256.BIN",4194304,"bios"],["256.NVM",1024,"bios"],["32X_G_BIOS.BIN",256,"bios"],["32X_M_BIOS.BIN",2048,"bios"],["32X_S_BIOS.BIN",1024,"bios"],["3c505.zip",10896,"bios"],["3do_arcade_saot.bin",524288,"bios"],["3ds/Azahar/nand/private/movable.sed",320,"bios"],["3ds/Azahar/nand/rw/sys/LocalFriendCodeSeed_B",272,"bios"],["3ds/Azahar/nand/rw/sys/SecureInfo_A",273,"bios"],["3ds/Azahar/sysdata/keys.txt",7424,"bios"],["3ds/Azahar/sysdata/otp.bin",256,"bios"],["3ds/Azahar/sysdata/seeddb.bin",53264,"bios"],["3ds/Azahar/sysdata/shared_font.bin",3145728,"bios"],["3xtwin.zip",1417,"bios"],["5200.rom",2048,"bios"],["64DD_IPL_DEV.n64",4194304,"bios"],["64DD_IPL_JP.n64",4194304,"bios"],["64DD_IPL_US.n64",4194304,"bios"],["7800 BIOS (E).rom",16384,"bios"],["7800 BIOS (U).rom",4096,"bios"],["A78_highscore.bin",4096,"bios"],["APPLE2GS.ROM",131072,"bios"],["ATARIBAS.ROM",8192,"bios"],["ATARIOSA.ROM",10240,"bios"],["ATARIOSB.ROM",10240,"bios"],["ATARIXL.ROM",16384,"bios"],["AUDIOHED.BS1",1280,"game_data"],["AUDIOHED.BS6",1280,"game_data"],["AUDIOT.BS1",267636,"game_data"],["AUDIOT.BS6",267636,"game_data"],["BB01R4_OS.ROM",16384,"bios"],["BIOSGBA.ROM",16384,"bios"],["BLOCKS.000",143876,"game_data"],["BLOOD.RFF",3536782,"game_data"],["BONUS.000",161022,"game_data"],["BONUS.0SC",51832,"game_data"],["BONUSMAP.000",6455,"game_data"],["BS-X.bin",1048576,"bios"],["CM32LN_CONTROL.ROM",65536,"bios"],["CM32L_CONTROL.ROM",65536,"bios"],["CM32L_PCM.ROM",1048576,"bios"],["COH-H31000.BIN",4194304,"bios"],["COH-H31000.NVM",1024,"bios"],["Complex_4627.bin",1048576,"bios"],["DOSBOX.SF2",32319396,"bios"],["DUKE.RTS",188954,"game_data"],["DUKE3D.GRP",11035779,"game_data"],["END.0SC",17055,"game_data"],["EROM.BIN",247968,"bios"],["EmuMediaBoard/Chihiro/ic10_g24lc64.bin",8192,"bios"],["EmuMediaBoard/Chihiro/ic11_24lc024.bin",128,"bios"],["EmuMediaBoard/Chihiro/pc20_g24lc64.bin",8192,"bios"],["EmuMediaBoard/fpr21042_m29w160et.bin",2097152,"bios"],["FONT2.0FN",3819,"game_data"],["FONTBIG.0FN",6463,"game_data"],["FONTINY.0FN",3339,"game_data"],["FONTMN1.0FN",8982,"game_data"],["FONTMN2.0FN",6789,"game_data"],["FONTS.000",14542,"game_data"],["GBA/gba_bios.bin",16384,"bios"],["GC/EUR/IPL.bin",2097152,"bios"],["GC/JAP/IPL.bin",2097152,"bios"],["GC/USA/IPL.bin",2097152,"bios"],["GC/dsp_coef.bin",4096,"bios"],["GC/dsp_rom.bin",8192,"bios"],["GC/font_japanese.bin",259626,"bios"],["GC/font_western.bin",6478,"bios"],["GUI.RFF",7145,"game_data"],["GameIndex.yaml",1737799,"bios"],["IANIM.BS1",18977,"game_data"],["IANIM.BS6",18977,"game_data"],["IANIM.VSI",18977,"game_data"],["INSTRUCT.0SC",145067,"game_data"],["JiffyDOS_1541-II.bin",16384,"bios"],["JiffyDOS_1571_repl310654.bin",32768,"bios"],["JiffyDOS_1581.bin",32768,"bios"],["JiffyDOS_C128.bin",16384,"bios"],["JiffyDOS_C64.bin",8192,"bios"],["JiffyDOS_SX-64.bin",8192,"bios"],["LEVEL0.000",20390,"game_data"],["LEVEL0.001",36234,"game_data"],["LEVEL0.002",20642,"game_data"],["Load/Firmware/rtl_bt/rtl8723a_fw.bin",24548,"bios"],["Load/Firmware/rtl_bt/rtl8723b_fw.bin",45048,"bios"],["Load/Firmware/rtl_bt/rtl8723d_fw.bin",52080,"bios"],["Load/Firmware/rtl_bt/rtl8761a_fw.bin",74488,"bios"],["Load/Firmware/rtl_bt/rtl8761bu_fw.bin",44484,"bios"],["Load/Firmware/rtl_bt/rtl8821a_fw.bin",37420,"bios"],["Load/Firmware/rtl_bt/rtl8821c_fw.bin",54636,"bios"],["Load/Firmware/rtl_bt/rtl8822b_fw.bin",51176,"bios"],["Load/Firmware/rtl_bt/rtl8822cu_fw.bin",38207,"bios"],["Load/Firmware/rtl_bt/rtl8851bu_fw.bin",49760,"bios"],["Load/Firmware/rtl_bt/rtl8852au_fw.bin",67188,"bios"],["Load/Firmware/rtl_bt/rtl8852btu_fw.bin",128140,"bios"],["Load/Firmware/rtl_bt/rtl8852bu_fw.bin",129733,"bios"],["Load/Firmware/rtl_bt/rtl8852cu_fw.bin",113336,"bios"],["Load/Firmware/rtl_bt/rtl8922au_fw.bin",71360,"bios"],["Load/WiiSD.raw",134217728,"bios"],["LucidaConsole_12.abc",2332,"bios"],["LucidaConsole_12.tga",131090,"bios"],["MACRO.1",1032,"game_data"],["MAINCHAR.000",156281,"game_data"],["MAPHEAD.BS1",834,"game_data"],["MAPTEMP.BS1",90786,"game_data"],["MENU.000",124306,"game_data"],["MENUSNG.PSM",79609,"game_data"],["MT32_CONTROL.ROM",65536,"bios"],["MT32_PCM.ROM",524288,"bios"],["Mupen64plus/IPL_DEV.n64",4194304,"bios"],["Mupen64plus/IPL_JAP.n64",4194304,"bios"],["Mupen64plus/IPL_USA.n64",4194304,"bios"],["NWINTER.GRP",10965909,"game_data"],["ORDER.0SC",221478,"game_data"],["PANEL.000",13391,"game_data"],["PLANET.000",4300,"game_data"],["PS3UPDAT.PUP",206126236,"bios"],["ProSystem.dat",16364,"bios"],["ROM",131072,"bios"],["ROM_OS_BB01R59",16384,"bios"],["ROM_OS_BB01R59A",16384,"bios"],["ROM_OS_BB02R3V4",16384,"bios"],["ROM_OS_CC01R4",16384,"bios"],["RedumpDatabase.yaml",1917242,"bios"],["SANIM.BS1",276784,"game_data"],["SANIM.BS6",276784,"game_data"],["SC-55-v1.00/sc55_rom1.bin",32768,"bios"],["SC-55-v1.00/sc55_rom2.bin",262144,"bios"],["SC-55-v1.00/sc55_waverom1.bin",1048576,"bios"],["SC-55-v1.00/sc55_waverom2.bin",1048576,"bios"],["SC-55-v1.00/sc55_waveroLine truncated
|
{"files":[["22vp931.zip",1405,"bios"],["246C.mec",4,"bios"],["246C.nvm",1024,"bios"],["256.BIN",4194304,"bios"],["256.NVM",1024,"bios"],["32X_G_BIOS.BIN",256,"bios"],["32X_M_BIOS.BIN",2048,"bios"],["32X_S_BIOS.BIN",1024,"bios"],["3c505.zip",10896,"bios"],["3do_arcade_saot.bin",524288,"bios"],["3ds/Azahar/nand/private/movable.sed",320,"bios"],["3ds/Azahar/nand/rw/sys/LocalFriendCodeSeed_B",272,"bios"],["3ds/Azahar/nand/rw/sys/SecureInfo_A",273,"bios"],["3ds/Azahar/sysdata/keys.txt",7424,"bios"],["3ds/Azahar/sysdata/otp.bin",256,"bios"],["3ds/Azahar/sysdata/seeddb.bin",53264,"bios"],["3ds/Azahar/sysdata/shared_font.bin",3145728,"bios"],["3xtwin.zip",1417,"bios"],["5200.rom",2048,"bios"],["64DD_IPL_DEV.n64",4194304,"bios"],["64DD_IPL_JP.n64",4194304,"bios"],["64DD_IPL_US.n64",4194304,"bios"],["7800 BIOS (E).rom",16384,"bios"],["7800 BIOS (U).rom",4096,"bios"],["A78_highscore.bin",4096,"bios"],["APPLE2GS.ROM",131072,"bios"],["ATARIBAS.ROM",8192,"bios"],["ATARIOSA.ROM",10240,"bios"],["ATARIOSB.ROM",10240,"bios"],["ATARIXL.ROM",16384,"bios"],["AUDIOHED.BS1",1280,"game_data"],["AUDIOHED.BS6",1280,"game_data"],["AUDIOT.BS1",267636,"game_data"],["AUDIOT.BS6",267636,"game_data"],["BB01R4_OS.ROM",16384,"bios"],["BIOSGBA.ROM",16384,"bios"],["BLOCKS.000",143876,"game_data"],["BLOOD.RFF",3536782,"game_data"],["BONUS.000",161022,"game_data"],["BONUS.0SC",51832,"game_data"],["BONUSMAP.000",6455,"game_data"],["BS-X.bin",1048576,"bios"],["CM32LN_CONTROL.ROM",65536,"bios"],["CM32L_CONTROL.ROM",65536,"bios"],["CM32L_PCM.ROM",1048576,"bios"],["COH-H31000.BIN",4194304,"bios"],["COH-H31000.NVM",1024,"bios"],["Complex_4627.bin",1048576,"bios"],["DOSBOX.SF2",32319396,"bios"],["DUKE.RTS",188954,"game_data"],["DUKE3D.GRP",11035779,"game_data"],["END.0SC",17055,"game_data"],["EROM.BIN",247968,"bios"],["EmuMediaBoard/Chihiro/ic10_g24lc64.bin",8192,"bios"],["EmuMediaBoard/Chihiro/ic11_24lc024.bin",128,"bios"],["EmuMediaBoard/Chihiro/pc20_g24lc64.bin",8192,"bios"],["EmuMediaBoard/fpr21042_m29w160et.bin",2097152,"bios"],["FONT2.0FN",3819,"game_data"],["FONTBIG.0FN",6463,"game_data"],["FONTINY.0FN",3339,"game_data"],["FONTMN1.0FN",8982,"game_data"],["FONTMN2.0FN",6789,"game_data"],["FONTS.000",14542,"game_data"],["GBA/gba_bios.bin",16384,"bios"],["GC/EUR/IPL.bin",2097152,"bios"],["GC/JAP/IPL.bin",2097152,"bios"],["GC/USA/IPL.bin",2097152,"bios"],["GC/dsp_coef.bin",4096,"bios"],["GC/dsp_rom.bin",8192,"bios"],["GC/font_japanese.bin",259626,"bios"],["GC/font_western.bin",6478,"bios"],["GUI.RFF",7145,"game_data"],["GameIndex.yaml",1737799,"bios"],["IANIM.BS1",18977,"game_data"],["IANIM.BS6",18977,"game_data"],["IANIM.VSI",18977,"game_data"],["INSTRUCT.0SC",145067,"game_data"],["JiffyDOS_1541-II.bin",16384,"bios"],["JiffyDOS_1571_repl310654.bin",32768,"bios"],["JiffyDOS_1581.bin",32768,"bios"],["JiffyDOS_C128.bin",16384,"bios"],["JiffyDOS_C64.bin",8192,"bios"],["JiffyDOS_SX-64.bin",8192,"bios"],["LEVEL0.000",20390,"game_data"],["LEVEL0.001",36234,"game_data"],["LEVEL0.002",20642,"game_data"],["Load/Firmware/rtl_bt/rtl8723a_fw.bin",24548,"bios"],["Load/Firmware/rtl_bt/rtl8723b_fw.bin",45048,"bios"],["Load/Firmware/rtl_bt/rtl8723d_fw.bin",52080,"bios"],["Load/Firmware/rtl_bt/rtl8761a_fw.bin",74488,"bios"],["Load/Firmware/rtl_bt/rtl8761bu_fw.bin",44484,"bios"],["Load/Firmware/rtl_bt/rtl8821a_fw.bin",37420,"bios"],["Load/Firmware/rtl_bt/rtl8821c_fw.bin",54636,"bios"],["Load/Firmware/rtl_bt/rtl8822b_fw.bin",51176,"bios"],["Load/Firmware/rtl_bt/rtl8822cu_fw.bin",38207,"bios"],["Load/Firmware/rtl_bt/rtl8851bu_fw.bin",49760,"bios"],["Load/Firmware/rtl_bt/rtl8852au_fw.bin",67188,"bios"],["Load/Firmware/rtl_bt/rtl8852btu_fw.bin",128140,"bios"],["Load/Firmware/rtl_bt/rtl8852bu_fw.bin",129733,"bios"],["Load/Firmware/rtl_bt/rtl8852cu_fw.bin",113336,"bios"],["Load/Firmware/rtl_bt/rtl8922au_fw.bin",71360,"bios"],["Load/WiiSD.raw",134217728,"bios"],["LucidaConsole_12.abc",2332,"bios"],["LucidaConsole_12.tga",131090,"bios"],["MACRO.1",1032,"game_data"],["MAINCHAR.000",156281,"game_data"],["MAPHEAD.BS1",834,"game_data"],["MAPTEMP.BS1",90786,"game_data"],["MENU.000",124306,"game_data"],["MENUSNG.PSM",79609,"game_data"],["MT32_CONTROL.ROM",65536,"bios"],["MT32_PCM.ROM",524288,"bios"],["Mupen64plus/IPL_DEV.n64",4194304,"bios"],["Mupen64plus/IPL_JAP.n64",4194304,"bios"],["Mupen64plus/IPL_USA.n64",4194304,"bios"],["NWINTER.GRP",10965909,"game_data"],["ORDER.0SC",221478,"game_data"],["PANEL.000",13391,"game_data"],["PLANET.000",4300,"game_data"],["PS3UPDAT.PUP",206126236,"bios"],["ProSystem.dat",16364,"bios"],["ROM",131072,"bios"],["ROM_OS_BB01R59",16384,"bios"],["ROM_OS_BB01R59A",16384,"bios"],["ROM_OS_BB02R3V4",16384,"bios"],["ROM_OS_CC01R4",16384,"bios"],["RedumpDatabase.yaml",1917242,"bios"],["SANIM.BS1",276784,"game_data"],["SANIM.BS6",276784,"game_data"],["SC-55-v1.00/sc55_rom1.bin",32768,"bios"],["SC-55-v1.00/sc55_rom2.bin",262144,"bios"],["SC-55-v1.00/sc55_waverom1.bin",1048576,"bios"],["SC-55-v1.00/sc55_waverom2.bin",1048576,"bios"],["SC-55-v1.00/sc55_waveroLine truncated
|
||||||
@@ -1 +1 @@
|
|||||||
{"arcade":{"fbneo":{"file":"arcade/fbneo.json","gzip_size":115955,"sha256":"88961c9a6be804772baa767f6ee3a9162478c30c60fe55c8363d8fe4fbc909da","size":423362},"flycast":{"file":"arcade/flycast.json","gzip_size":1841,"sha256":"957189a6e993fda08e21c90ffc6ad94aed9ca9e6dd9ed8c7724e29db036791cb","size":5441},"mame":{"file":"arcade/mame.json","gzip_size":154527,"sha256":"b12010301293a218ecfac45706d81a26c3ac0c27eebeca7409bc8f6ce0163e9e","size":604648},"mame0258":{"file":"arcade/mame0258.json","gzip_size":141151,"sha256":"7ecff1979ed2ac123ea3ba4825dde6e2c31906415165fabefc9af93fa48a6de4","size":556059},"mame0278":{"file":"arcade/mame0278.json","gzip_size":148595,"sha256":"7881e3516f451ec83e886aaf41ebac9d60f497e1f954f49749d52890d7955cbf","size":582797},"mame2000":{"file":"arcade/mame2000.json","gzip_size":8624,"sha256":"f0d69b0872ecfc2845eeb7304543e5b17c11db82060b5514c206b6962ed08263","size":23316},"mame2003":{"file":"arcade/mame2003.json","gzip_size":17456,"sha256":"3b44e2a92c80a8f104b7781fcc1c776d025ad2cf4986638efa3ea041baa9a56d","size":48929},"mame2003_plus":{"file":"arcade/mame2003_plus.json","gzip_size":21077,"sha256":"2857283556fa49c20d8160ed113465bf0c2e643ed0b8acd2d38266a78be8e25e","size":62373},"mame2010":{"file":"arcade/mame2010.json","gzip_size":30869,"sha256":"50b1b381b4b07463f69f1f4c512dd1c98a78d4d0e9c3aeaf49b7b1b007b42152","size":96528},"mame2015":{"file":"arcade/mame2015.json","gzip_size":86990,"sha256":"afeb8c32f651421f74c6de057b0c0b837acd14c533b5160bb31f4411e0afffec","size":360117},"mame2016":{"file":"arcade/mame2016.json","gzip_size":101249,"sha256":"1f75147977d9d082a38b8f8e47a02b301f3d6e6db97c9b9282f3e7f27f26ee47","size":406190}},"containers":{"7z":{"description":"Per-file CRCs and sizes sit in the header at the end of the archive, LZMA-compressed by default (kEncodedHeader). One LZMA decode of the header, independent of the archive size, gives them. Python's lzma is an optional module.","re_read":true,"signature":{"bytes_hex":"377abcaf271c","offset":0},"source_ref":"ip7z/7zip@b88c6bc0 DOC/7zFormat.txt:171-189, DOC/7zFormat.txt:318-334, CPP/7zip/Archive/7z/7zHandlerOut.cpp:859"},"cd-sector":{"description":"User data of a CD sector. In a 2048-byte image (.iso) sector N starts at N * 2048. In a raw 2352-byte image it starts at N * 2352 plus 16 for Mode 1 and plus 24 for Mode 2 Form 1 (12 sync bytes, a 4-byte header, and for Mode 2 an 8-byte subheader).","re_read":true,"sector_size":{"iso":2048,"raw":2352},"source_ref":"stenzek/duckstation@526b4a12 src/util/iso_reader.cpp:157-171, src/util/cd_image.h:28-34","user_data_offset":{"mode1":16,"mode2":24}},"chd-v5":{"description":"MAME compressed hunks, big-endian. The header holds sizes, codecs and hashes only, never the system or the region. The overall SHA-1 is what MAME software lists record. Neither SHA-1 equals a Redump track hash: chdman hashes 2448-byte frames (subcode included, zero-filled), pads each track to 4 frames and byte-swaps audio, all tracks in one stream.","fields":{"compressors":{"encoding":"fourcc4","length":16,"offset":16},"header_length":{"encoding":"u32be","length":4,"offset":8,"value":124},"hunk_bytes":{"encoding":"u32be","length":4,"offset":56},"logical_bytes":{"encoding":"u64be","length":8,"offset":32},"map_offset":{"encoding":"u64be","length":8,"offset":40},"metadata_offset":{"encoding":"u64be","length":8,"offset":48},"overall_sha1":{"encoding":"hex","length":20,"offset":84},"parent_sha1":{"encoding":"hex","length":20,"offset":104},"raw_sha1":{"encoding":"hex","length":20,"offset":64},"unit_bytes":{"encoding":"u32be","length":4,"offset":60},"version":{"encoding":"u32be","length":4,"offset":12,"value":5}},"magic":{"bytes":"MComprHD","offset":0},"media_tags":{"CHCD":"cd","CHGD":"gd-rom","CHGT":"gd-rom","CHT2":"cd","CHTR":"cd","DVD ":"dvd","GDDD":"hard-disk"},"metadata_entry":{"description":"16-byte entry header, payload follows. Linked list from metadata_offset.","flags":{"encoding":"u8","length":1,"offset":4},"length":{"encoding":"u24be","length":3,"offset":5},"next":{"encoding":"u64be","length":8,"offset":8},"tag":{"encoding":"ascii","length":4,"offset":0}},"re_read":true,"source_ref":"mamedev/mame@f34f0250 src/lib/util/chd.h:148-162, src/lib/util/chd.cpp:2021-2061, src/lib/util/chd.cpp:2822-2831, src/lib/util/chd.h:212-235, src/lib/util/chd.cpp:1709-1749, src/tools/chdman.cpp:443-445, src/tools/chdman.cpp:2195-2203, src/lib/util/cdrom.cpp:2669-2672, src/emu/romload.cpp:1211"},"gamecube-disc":{"description":"Where disc offset 0 sits inside each container Dolphin opens.","formats":{"ciso":{"disc_header_at":32768,"magic":"CISO"},"gcz":{"disc_header_at":null,"magic_u32le":2970337281,"note":"block 0 is zlib unless bit 63 of its pointer is set"},"iso":{"disc_header_at":0,"magic":null},"rvz":{"disc_header_at":88,"magic":"RVZ\u0001","note":"first 0x80 disc bytes copied into header 2"},"wbfs":{"disc_header_at":null,"magic":"WBFS","note":"disc offset 0 at wlba[0] << wbfs_sector_shift"},"wia":{"disc_header_at":88,"magic":"WIA\u0001","note":Line truncated
|
{"arcade":{"fbneo":{"file":"arcade/fbneo.json","gzip_size":115955,"sha256":"88961c9a6be804772baa767f6ee3a9162478c30c60fe55c8363d8fe4fbc909da","size":423362},"flycast":{"file":"arcade/flycast.json","gzip_size":1841,"sha256":"957189a6e993fda08e21c90ffc6ad94aed9ca9e6dd9ed8c7724e29db036791cb","size":5441},"mame":{"file":"arcade/mame.json","gzip_size":154527,"sha256":"b12010301293a218ecfac45706d81a26c3ac0c27eebeca7409bc8f6ce0163e9e","size":604648},"mame0258":{"file":"arcade/mame0258.json","gzip_size":141151,"sha256":"7ecff1979ed2ac123ea3ba4825dde6e2c31906415165fabefc9af93fa48a6de4","size":556059},"mame0278":{"file":"arcade/mame0278.json","gzip_size":148595,"sha256":"7881e3516f451ec83e886aaf41ebac9d60f497e1f954f49749d52890d7955cbf","size":582797},"mame2000":{"file":"arcade/mame2000.json","gzip_size":8624,"sha256":"f0d69b0872ecfc2845eeb7304543e5b17c11db82060b5514c206b6962ed08263","size":23316},"mame2003":{"file":"arcade/mame2003.json","gzip_size":17456,"sha256":"3b44e2a92c80a8f104b7781fcc1c776d025ad2cf4986638efa3ea041baa9a56d","size":48929},"mame2003_plus":{"file":"arcade/mame2003_plus.json","gzip_size":21077,"sha256":"2857283556fa49c20d8160ed113465bf0c2e643ed0b8acd2d38266a78be8e25e","size":62373},"mame2010":{"file":"arcade/mame2010.json","gzip_size":30869,"sha256":"50b1b381b4b07463f69f1f4c512dd1c98a78d4d0e9c3aeaf49b7b1b007b42152","size":96528},"mame2015":{"file":"arcade/mame2015.json","gzip_size":86990,"sha256":"afeb8c32f651421f74c6de057b0c0b837acd14c533b5160bb31f4411e0afffec","size":360117},"mame2016":{"file":"arcade/mame2016.json","gzip_size":101249,"sha256":"1f75147977d9d082a38b8f8e47a02b301f3d6e6db97c9b9282f3e7f27f26ee47","size":406190}},"containers":{"7z":{"description":"Per-file CRCs and sizes sit in the header at the end of the archive, LZMA-compressed by default (kEncodedHeader). One LZMA decode of the header, independent of the archive size, gives them. Python's lzma is an optional module.","re_read":true,"signature":{"bytes_hex":"377abcaf271c","offset":0},"source_ref":"ip7z/7zip@b88c6bc0 DOC/7zFormat.txt:171-189, DOC/7zFormat.txt:318-334, CPP/7zip/Archive/7z/7zHandlerOut.cpp:859"},"cd-sector":{"description":"User data of a CD sector. In a 2048-byte image (.iso) sector N starts at N * 2048. In a raw 2352-byte image it starts at N * 2352 plus 16 for Mode 1 and plus 24 for Mode 2 Form 1 (12 sync bytes, a 4-byte header, and for Mode 2 an 8-byte subheader).","re_read":true,"sector_size":{"iso":2048,"raw":2352},"source_ref":"stenzek/duckstation@526b4a12 src/util/iso_reader.cpp:157-171, src/util/cd_image.h:28-34","user_data_offset":{"mode1":16,"mode2":24}},"chd-v5":{"description":"MAME compressed hunks, big-endian. The header holds sizes, codecs and hashes only, never the system or the region. The overall SHA-1 is what MAME software lists record. Neither SHA-1 equals a Redump track hash: chdman hashes 2448-byte frames (subcode included, zero-filled), pads each track to 4 frames and byte-swaps audio, all tracks in one stream.","fields":{"compressors":{"encoding":"fourcc4","length":16,"offset":16},"header_length":{"encoding":"u32be","length":4,"offset":8,"value":124},"hunk_bytes":{"encoding":"u32be","length":4,"offset":56},"logical_bytes":{"encoding":"u64be","length":8,"offset":32},"map_offset":{"encoding":"u64be","length":8,"offset":40},"metadata_offset":{"encoding":"u64be","length":8,"offset":48},"overall_sha1":{"encoding":"hex","length":20,"offset":84},"parent_sha1":{"encoding":"hex","length":20,"offset":104},"raw_sha1":{"encoding":"hex","length":20,"offset":64},"unit_bytes":{"encoding":"u32be","length":4,"offset":60},"version":{"encoding":"u32be","length":4,"offset":12,"value":5}},"magic":{"bytes":"MComprHD","offset":0},"media_tags":{"CHCD":"cd","CHGD":"gd-rom","CHGT":"gd-rom","CHT2":"cd","CHTR":"cd","DVD ":"dvd","GDDD":"hard-disk"},"metadata_entry":{"description":"16-byte entry header, payload follows. Linked list from metadata_offset.","flags":{"encoding":"u8","length":1,"offset":4},"length":{"encoding":"u24be","length":3,"offset":5},"next":{"encoding":"u64be","length":8,"offset":8},"tag":{"encoding":"ascii","length":4,"offset":0}},"re_read":true,"source_ref":"mamedev/mame@f34f0250 src/lib/util/chd.h:148-162, src/lib/util/chd.cpp:2021-2061, src/lib/util/chd.cpp:2822-2831, src/lib/util/chd.h:212-235, src/lib/util/chd.cpp:1709-1749, src/tools/chdman.cpp:443-445, src/tools/chdman.cpp:2195-2203, src/lib/util/cdrom.cpp:2669-2672, src/emu/romload.cpp:1211"},"gamecube-disc":{"description":"Where disc offset 0 sits inside each container Dolphin opens.","formats":{"ciso":{"disc_header_at":32768,"magic":"CISO"},"gcz":{"disc_header_at":null,"magic_u32le":2970337281,"note":"block 0 is zlib unless bit 63 of its pointer is set"},"iso":{"disc_header_at":0,"magic":null},"rvz":{"disc_header_at":88,"magic":"RVZ\u0001","note":"first 0x80 disc bytes copied into header 2"},"wbfs":{"disc_header_at":null,"magic":"WBFS","note":"disc offset 0 at wlba[0] << wbfs_sector_shift"},"wia":{"disc_header_at":88,"magic":"WIA\u0001","note":Line truncated
|
||||||
@@ -1 +1 @@
|
|||||||
{"case_sensitive":false,"folders":[{"basis":"id","core":"2ship","emulator":"2ship","extensions":[".n64",".z64"],"fallback":["2ship|2ship"],"folder":"2ship","profile":"2ship","source_ref":"os system/templates/emulationstation/es_systems.cfg:5376","systems":["2ship"]},{"basis":"id","core":"opera","emulator":"libretro","extensions":[".chd",".cue",".iso"],"fallback":["panasonic-3do|opera"],"folder":"3do","profile":"opera","source_ref":"os system/templates/emulationstation/es_systems.cfg:1598","systems":["panasonic-3do"]},{"basis":"id","core":"azahar","emulator":"azahar","extensions":[".3ds",".3dsx",".7z",".app",".axf",".cci",".cia",".cxi",".elf",".m3u",".squashfs",".z3dsx",".zcci",".zcia",".zcxi",".zip"],"fallback":["nintendo-3ds|azahar"],"folder":"3ds","profile":"azahar","source_ref":"os system/templates/emulationstation/es_systems.cfg:3031","systems":["nintendo-3ds"]},{"basis":"only system of hypseus-singe","core":"hypseus","emulator":"hypseus","extensions":[".actionmax"],"fallback":["arcade-laserdisc|hypseus-singe"],"folder":"actionmax","profile":"hypseus-singe","source_ref":"os system/templates/emulationstation/es_systems.cfg:246","systems":["arcade-laserdisc"]},{"arcade":"mame","basis":"id","core":"mame","emulator":"libretro","extensions":[".1dd",".7z",".bin",".col",".cqi",".cqm",".d77",".d88",".ddp",".dfi",".dsk",".hfe",".imd",".m3u",".mfi",".mfm",".rom",".td0",".wav",".zip"],"fallback":["coleco-adam|mame"],"folder":"adam","profile":"mame","source_ref":"os system/templates/emulationstation/es_systems.cfg:4690","systems":["coleco-adam"]},{"arcade":"mame","basis":"native name of retrobat","core":"mame","emulator":"libretro","extensions":[".7z",".bin",".zip"],"fallback":["entex-advision|mame"],"folder":"advision","profile":"mame","source_ref":"os system/templates/emulationstation/es_systems.cfg:4194","systems":["entex-advision"]},{"basis":"unresolved","core":"windows","emulator":"windows","extensions":[".bat",".lnk",".url"],"folder":"amazon","source_ref":"os system/templates/emulationstation/es_systems.cfg:3854","systems":[]},{"basis":"native name of retrobat","core":"puae","emulator":"libretro","extensions":[".7z",".adf",".adz",".dms",".hdf",".ipf",".lha",".m3u",".rp9",".uae",".zip"],"fallback":["commodore-amiga|puae"],"folder":"amiga1200","profile":"puae","source_ref":"os system/templates/emulationstation/es_systems.cfg:1642","systems":["commodore-amiga"]},{"basis":"native name of retrobat","core":"puae","emulator":"libretro","extensions":[".7z",".adf",".adz",".dms",".hdf",".ipf",".lha",".m3u",".rp9",".uae",".zip"],"fallback":["commodore-amiga|puae"],"folder":"amiga4000","profile":"puae","source_ref":"os system/templates/emulationstation/es_systems.cfg:1667","systems":["commodore-amiga"]},{"basis":"native name of retrobat","core":"puae","emulator":"libretro","extensions":[".7z",".adf",".adz",".ags",".dms",".hdf",".ipf",".lha",".m3u",".rp9",".uae",".zip"],"fallback":["commodore-amiga|puae"],"folder":"amiga500","profile":"puae","source_ref":"os system/templates/emulationstation/es_systems.cfg:1618","systems":["commodore-amiga"]},{"basis":"native name of retrobat","core":"puae","emulator":"libretro","extensions":[".7z",".ccd",".chd",".cso",".cue",".iso",".lha",".mds",".nrg",".rp9",".zip"],"fallback":["commodore-amiga|puae"],"folder":"amigacd32","profile":"puae","source_ref":"os system/templates/emulationstation/es_systems.cfg:1690","systems":["commodore-amiga"]},{"basis":"native name of retrobat","core":"puae","emulator":"libretro","extensions":[".7z",".ccd",".chd",".cso",".cue",".iso",".m3u",".mds",".nrg",".rp9",".zip"],"fallback":["commodore-amiga|puae"],"folder":"amigacdtv","profile":"puae","source_ref":"os system/templates/emulationstation/es_systems.cfg:1715","systems":["commodore-amiga"]},{"basis":"normalized id","core":"cap32","emulator":"libretro","extensions":[".7z",".cdt",".dsk",".kcr",".m3u",".sna",".tap",".voc",".zip"],"fallback":["amstrad-cpc|cap32"],"folder":"amstradcpc","profile":"cap32","source_ref":"os system/templates/emulationstation/es_systems.cfg:1740","systems":["amstrad-cpc"]},{"arcade":"mame","basis":"id","core":"mame","emulator":"libretro","extensions":[".7z",".bin",".zip"],"fallback":["apf-m1000|mame"],"folder":"apfm1000","profile":"mame","source_ref":"os system/templates/emulationstation/es_systems.cfg:4614","systems":["apf-m1000"]},{"basis":"id","core":"applewin","emulator":"applewin","extensions":[".do",".dsk",".hdv",".m3u",".nib",".po",".woz",".zip"],"fallback":["apple2|applewin"],"folder":"apple2","profile":"applewin","source_ref":"os system/templates/emulationstation/es_systems.cfg:1781","systems":["apple2"]},{"basis":"id","core":"gsplus","emulator":"gsplus","extensions":[".2mg",".hdv",".m3u",".woz",".zip"],"fallback":["apple-iigs|gsplus"],"folder":"apple2gs","profile":"gsplus","source_ref":"os system/templates/emulationstation/es_systems.cfg:1818","systems":["apple-iigs"]},{"arcade":"mame","basis":"id","core":"mame","emulator":"libretro","extensions":[".zip"],"fallback":["matLine truncated
|
{"case_sensitive":false,"folders":[{"basis":"id","core":"2ship","emulator":"2ship","extensions":[".n64",".z64"],"fallback":["2ship|2ship"],"folder":"2ship","profile":"2ship","source_ref":"os system/templates/emulationstation/es_systems.cfg:5376","systems":["2ship"]},{"basis":"id","core":"opera","emulator":"libretro","extensions":[".chd",".cue",".iso"],"fallback":["panasonic-3do|opera"],"folder":"3do","profile":"opera","source_ref":"os system/templates/emulationstation/es_systems.cfg:1598","systems":["panasonic-3do"]},{"basis":"id","core":"azahar","emulator":"azahar","extensions":[".3ds",".3dsx",".7z",".app",".axf",".cci",".cia",".cxi",".elf",".m3u",".squashfs",".z3dsx",".zcci",".zcia",".zcxi",".zip"],"fallback":["nintendo-3ds|azahar"],"folder":"3ds","profile":"azahar","source_ref":"os system/templates/emulationstation/es_systems.cfg:3031","systems":["nintendo-3ds"]},{"basis":"only system of hypseus-singe","core":"hypseus","emulator":"hypseus","extensions":[".actionmax"],"fallback":["arcade-laserdisc|hypseus-singe"],"folder":"actionmax","profile":"hypseus-singe","source_ref":"os system/templates/emulationstation/es_systems.cfg:246","systems":["arcade-laserdisc"]},{"arcade":"mame","basis":"id","core":"mame","emulator":"libretro","extensions":[".1dd",".7z",".bin",".col",".cqi",".cqm",".d77",".d88",".ddp",".dfi",".dsk",".hfe",".imd",".m3u",".mfi",".mfm",".rom",".td0",".wav",".zip"],"fallback":["coleco-adam|mame"],"folder":"adam","profile":"mame","source_ref":"os system/templates/emulationstation/es_systems.cfg:4690","systems":["coleco-adam"]},{"arcade":"mame","basis":"native name of retrobat","core":"mame","emulator":"libretro","extensions":[".7z",".bin",".zip"],"fallback":["entex-advision|mame"],"folder":"advision","profile":"mame","source_ref":"os system/templates/emulationstation/es_systems.cfg:4194","systems":["entex-advision"]},{"basis":"unresolved","core":"windows","emulator":"windows","extensions":[".bat",".lnk",".url"],"folder":"amazon","source_ref":"os system/templates/emulationstation/es_systems.cfg:3854","systems":[]},{"basis":"native name of retrobat","core":"puae","emulator":"libretro","extensions":[".7z",".adf",".adz",".dms",".hdf",".ipf",".lha",".m3u",".rp9",".uae",".zip"],"fallback":["commodore-amiga|puae"],"folder":"amiga1200","profile":"puae","source_ref":"os system/templates/emulationstation/es_systems.cfg:1642","systems":["commodore-amiga"]},{"basis":"native name of retrobat","core":"puae","emulator":"libretro","extensions":[".7z",".adf",".adz",".dms",".hdf",".ipf",".lha",".m3u",".rp9",".uae",".zip"],"fallback":["commodore-amiga|puae"],"folder":"amiga4000","profile":"puae","source_ref":"os system/templates/emulationstation/es_systems.cfg:1667","systems":["commodore-amiga"]},{"basis":"native name of retrobat","core":"puae","emulator":"libretro","extensions":[".7z",".adf",".adz",".ags",".dms",".hdf",".ipf",".lha",".m3u",".rp9",".uae",".zip"],"fallback":["commodore-amiga|puae"],"folder":"amiga500","profile":"puae","source_ref":"os system/templates/emulationstation/es_systems.cfg:1618","systems":["commodore-amiga"]},{"basis":"native name of retrobat","core":"puae","emulator":"libretro","extensions":[".7z",".ccd",".chd",".cso",".cue",".iso",".lha",".mds",".nrg",".rp9",".zip"],"fallback":["commodore-amiga|puae"],"folder":"amigacd32","profile":"puae","source_ref":"os system/templates/emulationstation/es_systems.cfg:1690","systems":["commodore-amiga"]},{"basis":"native name of retrobat","core":"puae","emulator":"libretro","extensions":[".7z",".ccd",".chd",".cso",".cue",".iso",".m3u",".mds",".nrg",".rp9",".zip"],"fallback":["commodore-amiga|puae"],"folder":"amigacdtv","profile":"puae","source_ref":"os system/templates/emulationstation/es_systems.cfg:1715","systems":["commodore-amiga"]},{"basis":"normalized id","core":"cap32","emulator":"libretro","extensions":[".7z",".cdt",".dsk",".kcr",".m3u",".sna",".tap",".voc",".zip"],"fallback":["amstrad-cpc|cap32"],"folder":"amstradcpc","profile":"cap32","source_ref":"os system/templates/emulationstation/es_systems.cfg:1740","systems":["amstrad-cpc"]},{"arcade":"mame","basis":"id","core":"mame","emulator":"libretro","extensions":[".7z",".bin",".zip"],"fallback":["apf-m1000|mame"],"folder":"apfm1000","profile":"mame","source_ref":"os system/templates/emulationstation/es_systems.cfg:4614","systems":["apf-m1000"]},{"basis":"id","core":"applewin","emulator":"applewin","extensions":[".do",".dsk",".hdv",".m3u",".nib",".po",".woz",".zip"],"fallback":["apple2|applewin"],"folder":"apple2","profile":"applewin","source_ref":"os system/templates/emulationstation/es_systems.cfg:1781","systems":["apple2"]},{"basis":"id","core":"gsplus","emulator":"gsplus","extensions":[".2mg",".hdv",".m3u",".woz",".zip"],"fallback":["apple-iigs|gsplus"],"folder":"apple2gs","profile":"gsplus","source_ref":"os system/templates/emulationstation/es_systems.cfg:1818","systems":["apple-iigs"]},{"arcade":"mame","basis":"id","core":"mame","emulator":"libretro","extensions":[".zip"],"fallback":["matLine truncated
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"format_version":1,"region_files":{"vice_xvic":{"japan":["chargen-901460-02.bin","kernal.901486-02.bin"]}},"system":"commodore-vic20"}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"format_version":1,"region_files":{"xroar":{"any":["alpha-basic.rom","alpha-boot-v0.4.rom","alpha-boot-v1.0.rom","cdos20.rom","d64_1.rom","d64_2.rom","ddos10.rom","ddos12a.rom","ddos40.rom","delta2.rom","dplus48.rom","dplus49b.rom","dragonfly-1.3.rom","dragonfly-2.3.rom","sdbdos.rom","sdose6.rom"],"spain":["d200e_1.rom","d200e_2.rom","d200e_26.rom"]}},"system":"dragon64"}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"format_version":1,"region_files":{"xroar":{"any":["mc10.rom","mcx128.rom","mcx128a.rom"],"france":["alice.rom"]}},"system":"mc10"}
|
|
||||||
@@ -991,6 +991,10 @@
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Why source_commit is held on purpose rather than followed. The profile is then judged against its own revision, like one pinned to a superseded tag: comparing it to HEAD says nothing and recaling would repoint its refs at code the build it documents never had."
|
"description": "Why source_commit is held on purpose rather than followed. The profile is then judged against its own revision, like one pinned to a superseded tag: comparing it to HEAD says nothing and recaling would repoint its refs at code the build it documents never had."
|
||||||
},
|
},
|
||||||
|
"pin_follows": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Why source_commit follows the branch tip although a single platform ships the profile: that platform builds the tip, cited by its build file. Without it or pin_frozen, a bump refuses a profile one platform ships."
|
||||||
|
},
|
||||||
"data_root": {
|
"data_root": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"minProperties": 1,
|
"minProperties": 1,
|
||||||
|
|||||||
+12
-1
@@ -1571,11 +1571,16 @@ def resolve_local_file(
|
|||||||
# runs when no casing matches exactly, or when only another
|
# runs when no casing matches exactly, or when only another
|
||||||
# emulator's tree does: xm6typeg got XM6 Utility's synthesized
|
# emulator's tree does: xm6typeg got XM6 Utility's synthesized
|
||||||
# SCSIINROM.DAT while the X68000 dump sat as scsiinrom.dat.
|
# SCSIINROM.DAT while the X68000 dump sat as scsiinrom.dat.
|
||||||
|
# Another casing in another emulator's tree proves nothing:
|
||||||
|
# reminiscence's music module reunion took skyline's
|
||||||
|
# zoneinfo/Indian/Reunion.
|
||||||
folded = _casefold_name_index(by_name)
|
folded = _casefold_name_index(by_name)
|
||||||
for try_name in names_to_try:
|
for try_name in names_to_try:
|
||||||
for match_sha1 in folded.get(try_name.casefold(), []):
|
for match_sha1 in folded.get(try_name.casefold(), []):
|
||||||
if match_sha1 in files_db and _size_ok(match_sha1):
|
if match_sha1 in files_db and _size_ok(match_sha1):
|
||||||
path = files_db[match_sha1]["path"]
|
path = files_db[match_sha1]["path"]
|
||||||
|
if _foreign_tree(path, owners):
|
||||||
|
continue
|
||||||
if os.path.exists(path) and path not in candidates:
|
if os.path.exists(path) and path not in candidates:
|
||||||
candidates.append(path)
|
candidates.append(path)
|
||||||
if candidates:
|
if candidates:
|
||||||
@@ -1659,7 +1664,13 @@ def resolve_local_file(
|
|||||||
if ".zip" in os.path.basename(path):
|
if ".zip" in os.path.basename(path):
|
||||||
try:
|
try:
|
||||||
composite = md5_composite(path).lower()
|
composite = md5_composite(path).lower()
|
||||||
if composite in md5_set:
|
# A zipped_file md5 is the member's: one member of
|
||||||
|
# another name has the same composite, and Batocera
|
||||||
|
# looks the member up by name.
|
||||||
|
if composite in md5_set and (
|
||||||
|
not zipped_file
|
||||||
|
or check_inside_zip(path, zipped_file, composite) == "ok"
|
||||||
|
):
|
||||||
return path, "md5_composite_exact"
|
return path, "md5_composite_exact"
|
||||||
except (zipfile.BadZipFile, OSError) as exc:
|
except (zipfile.BadZipFile, OSError) as exc:
|
||||||
_warn_unreadable_archive(path, exc)
|
_warn_unreadable_archive(path, exc)
|
||||||
|
|||||||
+138
-17
@@ -11,6 +11,7 @@ from __future__ import annotations
|
|||||||
import argparse
|
import argparse
|
||||||
import bisect
|
import bisect
|
||||||
import difflib
|
import difflib
|
||||||
|
import functools
|
||||||
import itertools
|
import itertools
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
@@ -35,7 +36,10 @@ import version_basis
|
|||||||
from common import (
|
from common import (
|
||||||
_norm_system_id,
|
_norm_system_id,
|
||||||
github_token,
|
github_token,
|
||||||
|
list_registered_platforms,
|
||||||
load_emulator_profiles,
|
load_emulator_profiles,
|
||||||
|
load_platform_config,
|
||||||
|
resolve_platform_cores,
|
||||||
suggest_names,
|
suggest_names,
|
||||||
system_index,
|
system_index,
|
||||||
)
|
)
|
||||||
@@ -1065,6 +1069,29 @@ class ProfileReport:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def triage_state(report: ProfileReport) -> str:
|
||||||
|
"""One triage line: what to review, the pin to set again named first.
|
||||||
|
|
||||||
|
A pin outside its branch's history or a repository answering under
|
||||||
|
another name is fixed before any ref is read: pcem showed as "1 to
|
||||||
|
review" for an upstream_commit off the dev branch.
|
||||||
|
"""
|
||||||
|
if report.skipped:
|
||||||
|
return report.skipped
|
||||||
|
state = f"{report.needs_review()} to review"
|
||||||
|
if report.orphaned:
|
||||||
|
state += f", {len(report.orphaned)} orphaned pin"
|
||||||
|
if report.moved_repos:
|
||||||
|
state += f", {len(report.moved_repos)} repository moved"
|
||||||
|
stale = len(report.stale_prose or ())
|
||||||
|
if stale:
|
||||||
|
state += f", {stale} prose under an older pin"
|
||||||
|
unchecked = (report.counts or {}).get("UNCHECKED", 0)
|
||||||
|
if unchecked:
|
||||||
|
state += f", {unchecked} unchecked"
|
||||||
|
return state
|
||||||
|
|
||||||
|
|
||||||
def select_repo(profile: dict) -> upstream.Repo | None:
|
def select_repo(profile: dict) -> upstream.Repo | None:
|
||||||
"""Repository the profile was read from: source first, then upstream."""
|
"""Repository the profile was read from: source first, then upstream."""
|
||||||
for field in ("source", "upstream"):
|
for field in ("source", "upstream"):
|
||||||
@@ -1463,14 +1490,40 @@ def tag_pinned_views(
|
|||||||
return tagged
|
return tagged
|
||||||
|
|
||||||
|
|
||||||
|
def resolve_through_gitlinks(path: str, links: Iterable[Iterable[str]]) -> str | None:
|
||||||
|
"""Path of `project file` inside the one submodule named after the project.
|
||||||
|
|
||||||
|
idtech4a++ cites `xash3d-fwgs filesystem/filesystem.c` and starship
|
||||||
|
`Torch src/Companion.cpp`: the declared tree holds a gitlink there, not
|
||||||
|
the files, so no blob path answers and the part stayed external.
|
||||||
|
"""
|
||||||
|
word, _, rest = path.partition(" ")
|
||||||
|
rest = rest.strip().lstrip("/")
|
||||||
|
if not rest:
|
||||||
|
return None
|
||||||
|
word = word.lower()
|
||||||
|
for paths in links:
|
||||||
|
matches = [
|
||||||
|
link for link in paths or ()
|
||||||
|
if word in link.rsplit("/", 1)[-1].lower()
|
||||||
|
]
|
||||||
|
if len(matches) == 1:
|
||||||
|
return f"{matches[0]}/{rest}"
|
||||||
|
if matches:
|
||||||
|
return None
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def _resolve_project_words(
|
def _resolve_project_words(
|
||||||
refs: list, tree_order: Callable[[], Iterable[list[str] | None]]
|
refs: list, tree_order: Callable[[], Iterable[list[str] | None]],
|
||||||
|
link_order: Callable[[], Iterable[Iterable[str]]] = lambda: (),
|
||||||
) -> list:
|
) -> list:
|
||||||
"""Point `project file` parts at the declared tree that vendors them.
|
"""Point `project file` parts at the declared tree that vendors them.
|
||||||
|
|
||||||
tree_order() yields the trees to search, pin before HEAD. It is only
|
tree_order() yields the trees to search, pin before HEAD, and
|
||||||
called for a part that needs it, since reading a HEAD tree costs a
|
link_order() the submodule paths of the declared trees at their pins.
|
||||||
request. Parts no tree carries stay external.
|
Each is only called for a part that needs it, since reading a tree costs
|
||||||
|
a request. Parts no tree carries stay external.
|
||||||
"""
|
"""
|
||||||
resolved: dict[str, str | None] = {}
|
resolved: dict[str, str | None] = {}
|
||||||
out = []
|
out = []
|
||||||
@@ -1479,7 +1532,9 @@ def _resolve_project_words(
|
|||||||
for part in parts:
|
for part in parts:
|
||||||
if is_external_citation(part.path):
|
if is_external_citation(part.path):
|
||||||
if part.path not in resolved:
|
if part.path not in resolved:
|
||||||
resolved[part.path] = resolve_project_word(part.path, tree_order())
|
resolved[part.path] = resolve_project_word(
|
||||||
|
part.path, tree_order()
|
||||||
|
) or resolve_through_gitlinks(part.path, link_order())
|
||||||
if resolved[part.path]:
|
if resolved[part.path]:
|
||||||
part = replace(part, path=resolved[part.path])
|
part = replace(part, path=resolved[part.path])
|
||||||
rewritten.append(part)
|
rewritten.append(part)
|
||||||
@@ -1860,7 +1915,14 @@ def build_report(
|
|||||||
if key in mute:
|
if key in mute:
|
||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
return upstream.fetch_file(repo, sha, wanted, cache_dir, offline)
|
found = upstream.fetch_file(repo, sha, wanted, cache_dir, offline)
|
||||||
|
if found is None and "/" in wanted:
|
||||||
|
# A file of a submodule is read at the commit its gitlink
|
||||||
|
# pins in this revision, so a bump moves it with the port.
|
||||||
|
inner = upstream.through_gitlink(repo, sha, wanted, cache_dir, offline)
|
||||||
|
if inner is not None:
|
||||||
|
found = upstream.fetch_file(*inner, cache_dir, offline)
|
||||||
|
return found
|
||||||
except (upstream.RateLimitError, upstream.NotCachedError):
|
except (upstream.RateLimitError, upstream.NotCachedError):
|
||||||
raise
|
raise
|
||||||
except upstream.UpstreamError as exc:
|
except upstream.UpstreamError as exc:
|
||||||
@@ -1917,6 +1979,9 @@ def build_report(
|
|||||||
lambda: itertools.chain(
|
lambda: itertools.chain(
|
||||||
map(_pin_tree_for, views), map(lambda v: _context_for(v)[1], views)
|
map(_pin_tree_for, views), map(lambda v: _context_for(v)[1], views)
|
||||||
),
|
),
|
||||||
|
lambda: (
|
||||||
|
upstream.list_gitlinks(v.repo, v.pin, cache_dir, offline) for v in views
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
lines_cache: dict[tuple[str, str, int | None], list[str] | None] = {}
|
lines_cache: dict[tuple[str, str, int | None], list[str] | None] = {}
|
||||||
@@ -3436,9 +3501,37 @@ def _needs_review(report: ProfileReport, accept_changed: bool) -> bool:
|
|||||||
return any((report.counts or {}).get(s) for s in blocking)
|
return any((report.counts or {}).get(s) for s in blocking)
|
||||||
|
|
||||||
|
|
||||||
|
@functools.lru_cache(maxsize=4)
|
||||||
|
def _platform_cores(emulators_dir: str, platforms_dir: str) -> tuple[tuple[str, frozenset[str]], ...]:
|
||||||
|
profiles = load_emulator_profiles(emulators_dir)
|
||||||
|
return tuple(
|
||||||
|
(platform, frozenset(resolve_platform_cores(
|
||||||
|
load_platform_config(platform, platforms_dir), profiles
|
||||||
|
)))
|
||||||
|
for platform in list_registered_platforms(platforms_dir, include_archived=True)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def shipping_platforms(
|
||||||
|
name: str, emulators_dir: str, platforms_dir: str = "platforms",
|
||||||
|
) -> list[str]:
|
||||||
|
"""The registered platforms whose cores resolve to this profile.
|
||||||
|
|
||||||
|
Archived platforms count: RetroPie still builds the packages it lists.
|
||||||
|
"""
|
||||||
|
return [
|
||||||
|
platform
|
||||||
|
for platform, cores in _platform_cores(
|
||||||
|
os.path.realpath(emulators_dir), platforms_dir
|
||||||
|
)
|
||||||
|
if name in cores
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def bump_commit(
|
def bump_commit(
|
||||||
path: Path, report: ProfileReport, accept_changed: bool = False,
|
path: Path, report: ProfileReport, accept_changed: bool = False,
|
||||||
cache_dir: str = DEFAULT_CACHE, offline: bool = False,
|
cache_dir: str = DEFAULT_CACHE, offline: bool = False,
|
||||||
|
platforms_dir: str = "platforms",
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Advance source_commit to HEAD when nothing needs a read again.
|
"""Advance source_commit to HEAD when nothing needs a read again.
|
||||||
|
|
||||||
@@ -3462,6 +3555,20 @@ def bump_commit(
|
|||||||
file=sys.stderr,
|
file=sys.stderr,
|
||||||
)
|
)
|
||||||
return False
|
return False
|
||||||
|
if not (document.get("pin_frozen") or document.get("pin_follows")):
|
||||||
|
shipped = shipping_platforms(path.stem, str(path.parent), platforms_dir)
|
||||||
|
if len(shipped) == 1:
|
||||||
|
# One platform ships it, so the pin is the revision that platform
|
||||||
|
# builds: a bulk advance moved fheroes2, supertux and
|
||||||
|
# supermariowar past what EmuELEC compiles, and rigelengine is
|
||||||
|
# already one commit ahead of its package.mk.
|
||||||
|
print(
|
||||||
|
f"{path.stem}: only {shipped[0]} ships it. Read the revision its "
|
||||||
|
"build compiles and set pin_frozen, or pin_follows when it "
|
||||||
|
"builds the branch tip",
|
||||||
|
file=sys.stderr,
|
||||||
|
)
|
||||||
|
return False
|
||||||
if any(isinstance(document.get(f), dict) for f in ("source_commit", "upstream_commit")):
|
if any(isinstance(document.get(f), dict) for f in ("source_commit", "upstream_commit")):
|
||||||
# A pin per build mode names one revision per repository, and the
|
# A pin per build mode names one revision per repository, and the
|
||||||
# report heads only the primary one: rewriting str(dict) was a
|
# report heads only the primary one: rewriting str(dict) was a
|
||||||
@@ -4097,9 +4204,10 @@ def build_parser() -> argparse.ArgumentParser:
|
|||||||
help="the profiles the branch adds against --base, as CI checks them",
|
help="the profiles the branch adds against --base, as CI checks them",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--base", default="origin/main",
|
"--base",
|
||||||
help="revision --changed and --added compare with, through its merge "
|
help="revision --changed and --added compare with, through its merge "
|
||||||
"base with HEAD (default: %(default)s)",
|
"base with HEAD (default: the project's main line, upstream/main or "
|
||||||
|
"origin/main when that remote names the project, fetched otherwise)",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--emulators-dir", default="emulators",
|
"--emulators-dir", default="emulators",
|
||||||
@@ -4266,14 +4374,33 @@ def branch_profiles(emulators_dir: str, base: str, added_only: bool) -> list[str
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
def project_base() -> str:
|
||||||
|
"""The project's main line, the base --changed compares with by default.
|
||||||
|
|
||||||
|
In a fork's clone origin/main is the fork: once the branch is pushed it
|
||||||
|
is HEAD, and --changed --strict found nothing and passed while the PR's
|
||||||
|
CI then failed. validate_pr.py resolves the same line the same way.
|
||||||
|
"""
|
||||||
|
from validate_pr import _git_lines as git_lines, _project_main_line
|
||||||
|
|
||||||
|
line = _project_main_line()
|
||||||
|
if line:
|
||||||
|
return line
|
||||||
|
for remote in ("upstream", "origin"):
|
||||||
|
if git_lines("rev-parse", "--verify", "--quiet", f"{remote}/main"):
|
||||||
|
return f"{remote}/main"
|
||||||
|
return "HEAD"
|
||||||
|
|
||||||
|
|
||||||
def select_profiles(profiles: dict, args: argparse.Namespace) -> dict:
|
def select_profiles(profiles: dict, args: argparse.Namespace) -> dict:
|
||||||
"""Profiles matching the selection flags."""
|
"""Profiles matching the selection flags."""
|
||||||
if args.changed or args.added:
|
if args.changed or args.added:
|
||||||
names = branch_profiles(args.emulators_dir, args.base, args.added)
|
base = args.base or project_base()
|
||||||
|
names = branch_profiles(args.emulators_dir, base, args.added)
|
||||||
selected = {name: profiles[name] for name in names if name in profiles}
|
selected = {name: profiles[name] for name in names if name in profiles}
|
||||||
if not selected:
|
if not selected:
|
||||||
verb = "adds" if args.added else "adds or edits"
|
verb = "adds" if args.added else "adds or edits"
|
||||||
print(f"the branch {verb} no profile against {args.base}", file=sys.stderr)
|
print(f"the branch {verb} no profile against {base}", file=sys.stderr)
|
||||||
return selected
|
return selected
|
||||||
if args.emulator:
|
if args.emulator:
|
||||||
names = [args.emulator] if isinstance(args.emulator, str) else args.emulator
|
names = [args.emulator] if isinstance(args.emulator, str) else args.emulator
|
||||||
@@ -4871,13 +4998,7 @@ def _print_triage(
|
|||||||
print(f"{'score':>5s} {'profile':30s} state (worst first)")
|
print(f"{'score':>5s} {'profile':30s} state (worst first)")
|
||||||
pending = 0
|
pending = 0
|
||||||
for score, report, refused in sorted(ranked, key=lambda item: -item[0]):
|
for score, report, refused in sorted(ranked, key=lambda item: -item[0]):
|
||||||
state = report.skipped or f"{report.needs_review()} to review"
|
state = triage_state(report)
|
||||||
stale = len(report.stale_prose or ())
|
|
||||||
if stale and not report.skipped:
|
|
||||||
state += f", {stale} prose under an older pin"
|
|
||||||
unchecked = (report.counts or {}).get("UNCHECKED", 0)
|
|
||||||
if unchecked and not report.skipped:
|
|
||||||
state += f", {unchecked} unchecked"
|
|
||||||
if refused:
|
if refused:
|
||||||
state += f", {refused}"
|
state += f", {refused}"
|
||||||
pending += bool(report.needs_review())
|
pending += bool(report.needs_review())
|
||||||
|
|||||||
@@ -890,7 +890,6 @@ SYSTEM_NAMES: dict[str, str] = {
|
|||||||
"bermuda-syndrome": "Bermuda Syndrome game",
|
"bermuda-syndrome": "Bermuda Syndrome game",
|
||||||
"brezzasoft-crystal": "BrezzaSoft Crystal System",
|
"brezzasoft-crystal": "BrezzaSoft Crystal System",
|
||||||
"bshift": "Half-Life: Blue Shift",
|
"bshift": "Half-Life: Blue Shift",
|
||||||
"bsyndrome": "Bermuda Syndrome game",
|
|
||||||
"caesar3": "Caesar III",
|
"caesar3": "Caesar III",
|
||||||
"cambridge-z88": "Cambridge Computer Z88",
|
"cambridge-z88": "Cambridge Computer Z88",
|
||||||
"camplynx": "Camputers Lynx",
|
"camplynx": "Camputers Lynx",
|
||||||
|
|||||||
@@ -1115,6 +1115,58 @@ def list_gitlinks(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def submodule_urls(text: str, base: Repo) -> dict[str, Repo]:
|
||||||
|
"""Submodule path -> repository, read from a .gitmodules text.
|
||||||
|
|
||||||
|
A relative url (`../xash3d-fwgs.git`) names a sibling of the repository
|
||||||
|
that declares it, on the same forge.
|
||||||
|
"""
|
||||||
|
repos: dict[str, Repo] = {}
|
||||||
|
path = url = None
|
||||||
|
for line in [*text.splitlines(), "[end]"]:
|
||||||
|
stripped = line.strip()
|
||||||
|
if stripped.startswith("["):
|
||||||
|
if path and url:
|
||||||
|
if url.startswith(("../", "./")):
|
||||||
|
segments = [base.owner, base.name]
|
||||||
|
for part in url.split("/"):
|
||||||
|
if part == "..":
|
||||||
|
segments.pop()
|
||||||
|
elif part not in (".", ""):
|
||||||
|
segments.append(part)
|
||||||
|
url = f"https://{base.host}/{'/'.join(segments)}"
|
||||||
|
repo = parse_repo(url)
|
||||||
|
if repo is not None:
|
||||||
|
repos[path] = repo
|
||||||
|
path = url = None
|
||||||
|
continue
|
||||||
|
key, _, value = stripped.partition("=")
|
||||||
|
if key.strip() == "path":
|
||||||
|
path = value.strip()
|
||||||
|
elif key.strip() == "url":
|
||||||
|
url = value.strip()
|
||||||
|
return repos
|
||||||
|
|
||||||
|
|
||||||
|
def through_gitlink(
|
||||||
|
repo: Repo, sha: str, path: str, cache_dir: str, offline: bool = False
|
||||||
|
) -> tuple[Repo, str, str] | None:
|
||||||
|
"""The submodule repository, commit and inner path a path falls under.
|
||||||
|
|
||||||
|
starship cites `Torch src/Companion.cpp`, a file of the Torch submodule:
|
||||||
|
the declared tree holds only the gitlink, which pins the revision.
|
||||||
|
"""
|
||||||
|
links = list_gitlinks(repo, sha, cache_dir, offline)
|
||||||
|
link = next((p for p in links if path.startswith(p + "/")), None)
|
||||||
|
if link is None:
|
||||||
|
return None
|
||||||
|
modules = fetch_file(repo, sha, ".gitmodules", cache_dir, offline)
|
||||||
|
target = submodule_urls("\n".join(modules or ()), repo).get(link)
|
||||||
|
if target is None:
|
||||||
|
return None
|
||||||
|
return target, links[link], path[len(link) + 1:]
|
||||||
|
|
||||||
|
|
||||||
def commit_date(repo: Repo, sha: str, cache_dir: str, offline: bool = False) -> str | None:
|
def commit_date(repo: Repo, sha: str, cache_dir: str, offline: bool = False) -> str | None:
|
||||||
"""When a revision was committed, as the forge reports it (ISO 8601)."""
|
"""When a revision was committed, as the forge reports it (ISO 8601)."""
|
||||||
if repo.family == "gitlab":
|
if repo.family == "gitlab":
|
||||||
|
|||||||
@@ -5713,6 +5713,10 @@ class AHashScanLabelNamesNoOtherDump(unittest.TestCase):
|
|||||||
"beetle_psx reads its first 512 KB under the same name",
|
"beetle_psx reads its first 512 KB under the same name",
|
||||||
("duckstation-legacy", "ps1_rom.bin"):
|
("duckstation-legacy", "ps1_rom.bin"):
|
||||||
"the same whole PS3 image, whose first 512 KB src/core/bios.cpp:89 hashes",
|
"the same whole PS3 image, whose first 512 KB src/core/bios.cpp:89 hashes",
|
||||||
|
("openmsx", "COLECO.ROM"):
|
||||||
|
"share/machines/ColecoVision_SGM.xml:56 names it, tried beside the machine XML",
|
||||||
|
("openmsx", "fmpac.rom"):
|
||||||
|
"share/machines/Boosted_MSX2_EN.xml:83 names it, tried beside the machine XML",
|
||||||
}
|
}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@@ -6821,5 +6825,128 @@ class PipelineChildrenSkipNodeCompileCache(unittest.TestCase):
|
|||||||
self.assertIn('"NODE_DISABLE_COMPILE_CACHE": "1"', source)
|
self.assertIn('"NODE_DISABLE_COMPILE_CACHE": "1"', source)
|
||||||
|
|
||||||
|
|
||||||
|
class HiganSuperGameBoyFolderIsFree(unittest.TestCase):
|
||||||
|
"""higan reads program.rom in the option's folder, SGB.sfc/, then Super
|
||||||
|
GameBoy.sfc/. bsnes, Mesen-S and ares read SGB1.sfc and SGB2.sfc as files
|
||||||
|
in the same system directory, and SuperSnes9x sgb.sfc, so a pack that only
|
||||||
|
had the first two folders never gave the higan cores a Super Game Boy."""
|
||||||
|
|
||||||
|
def test_each_higan_core_has_a_folder_no_core_reads_as_a_file(self):
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
file_names: set[str] = set()
|
||||||
|
for path in (ROOT / "emulators").glob("*.yml"):
|
||||||
|
document = yaml.safe_load(path.read_text(encoding="utf-8")) or {}
|
||||||
|
for entry in document.get("files") or []:
|
||||||
|
for name in [entry.get("name"), *(entry.get("aliases") or [])]:
|
||||||
|
if name:
|
||||||
|
file_names.add(str(name).casefold())
|
||||||
|
if entry.get("path"):
|
||||||
|
file_names.add(str(entry["path"]).casefold())
|
||||||
|
for profile in ("higan_sfc", "higan_sfc_balanced"):
|
||||||
|
document = yaml.safe_load(
|
||||||
|
(ROOT / "emulators" / f"{profile}.yml").read_text(encoding="utf-8")
|
||||||
|
)
|
||||||
|
folders = {
|
||||||
|
str(entry["path"]).split("/", 1)[0]
|
||||||
|
for entry in document["files"]
|
||||||
|
if str(entry.get("path") or "").endswith("/program.rom")
|
||||||
|
and entry.get("system") == "nintendo-sgb"
|
||||||
|
}
|
||||||
|
with self.subTest(profile=profile):
|
||||||
|
self.assertTrue(
|
||||||
|
[f for f in folders if f.casefold() not in file_names], folders
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ProfileNotesDescribeTheCoreAlone(unittest.TestCase):
|
||||||
|
"""mednafen_pce_fast, sdlpop and x64sdl described the core by what
|
||||||
|
another profile of this directory does ("unlike beetle_pce", "unlike the
|
||||||
|
other engines in this directory"), which means nothing once the profile
|
||||||
|
is read on its own, and 21 lines shouted NOT, ALL or MUST."""
|
||||||
|
|
||||||
|
SHOUT = re.compile(r"\b(NOT|NEVER|ONLY|MUST|ALL|DIFFERENT)\b(?! FOUND)")
|
||||||
|
|
||||||
|
def test_no_profile_shouts_or_compares_with_another_profile(self):
|
||||||
|
names = {path.stem.casefold() for path in (ROOT / "emulators").glob("*.yml")}
|
||||||
|
names |= {name.replace("_", "-") for name in names}
|
||||||
|
found = []
|
||||||
|
for path in sorted((ROOT / "emulators").glob("*.yml")):
|
||||||
|
text = path.read_text(encoding="utf-8")
|
||||||
|
for number, line in enumerate(text.splitlines(), 1):
|
||||||
|
if self.SHOUT.search(line):
|
||||||
|
found.append(f"{path.stem}:{number}")
|
||||||
|
for match in re.finditer(r"\bunlike (?:the )?([\w+-]+)", line, re.I):
|
||||||
|
if match.group(1).casefold() in names:
|
||||||
|
found.append(f"{path.stem}:{number}")
|
||||||
|
self.assertEqual(found, [])
|
||||||
|
|
||||||
|
|
||||||
|
class Ps2BiosImagesAreFoundByContent(unittest.TestCase):
|
||||||
|
"""PCSX2 and its forks scan the BIOS folder and keep the first 4 to 8 MB
|
||||||
|
image with a romdir (pcsx2/ps2/BiosTools.cpp:258-282 at f0523f8a). With
|
||||||
|
no found_by the label ps2-0230a-20080220.bin read as a name the core
|
||||||
|
opens, and the RetroDECK export added it as a required file."""
|
||||||
|
|
||||||
|
def test_every_ps2_image_scan_is_marked(self):
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
from validation import opens_by_name
|
||||||
|
|
||||||
|
named = []
|
||||||
|
for path in sorted((ROOT / "emulators").glob("*.yml")):
|
||||||
|
profile = yaml.safe_load(path.read_text(encoding="utf-8")) or {}
|
||||||
|
if profile.get("bios_mode") != "agnostic":
|
||||||
|
continue
|
||||||
|
for entry in profile.get("files") or []:
|
||||||
|
if (
|
||||||
|
entry.get("min_size") == 4194304
|
||||||
|
and entry.get("max_size") == 8388608
|
||||||
|
and opens_by_name(entry, profile)
|
||||||
|
):
|
||||||
|
named.append(f"{path.stem}: {entry['name']}")
|
||||||
|
self.assertEqual(named, [])
|
||||||
|
|
||||||
|
|
||||||
|
class Dev9FilesAreReadFromTheWorkingDirectory(unittest.TestCase):
|
||||||
|
"""DEV9 opens eeprom.dat and flash.dat by bare name (PCSX2
|
||||||
|
pcsx2/DEV9/DEV9.cpp:144, AetherSX2 DEV9/flash.cpp:89): the working
|
||||||
|
directory, never the BIOS folder. Eight profiles left load_from unset,
|
||||||
|
so the file was packed into the BIOS folder, where nothing reads it."""
|
||||||
|
|
||||||
|
def test_every_dev9_file_names_the_working_directory(self):
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
unset = []
|
||||||
|
for path in sorted((ROOT / "emulators").glob("*.yml")):
|
||||||
|
profile = yaml.safe_load(path.read_text(encoding="utf-8")) or {}
|
||||||
|
for entry in profile.get("files") or []:
|
||||||
|
if entry.get("name") in ("eeprom.dat", "flash.dat") and "DEV9" in str(
|
||||||
|
entry.get("source_ref")
|
||||||
|
) and entry.get("load_from") != "working_directory":
|
||||||
|
unset.append(f"{path.stem}: {entry['name']}")
|
||||||
|
self.assertEqual(unset, [])
|
||||||
|
|
||||||
|
|
||||||
|
class OpenMsxSystemRomsAreFoundBySha1(unittest.TestCase):
|
||||||
|
"""openMSX reaches a ROM in share/systemroms through the file pool by
|
||||||
|
SHA1 alone, a filename being looked up only beside the machine's XML
|
||||||
|
(src/memory/Rom.cc:121-170). Read as names the core opens, the labels
|
||||||
|
were added to the KNULLI and Batocera exports."""
|
||||||
|
|
||||||
|
def test_no_systemrom_label_reads_as_a_name(self):
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
from validation import opens_by_name
|
||||||
|
|
||||||
|
profile = yaml.safe_load((ROOT / "emulators" / "openmsx.yml").read_text())
|
||||||
|
named = [
|
||||||
|
entry["name"] for entry in profile["files"]
|
||||||
|
if "share/systemroms/" in str(entry.get("path"))
|
||||||
|
and opens_by_name(entry, profile)
|
||||||
|
]
|
||||||
|
self.assertEqual(named, [])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
@@ -5541,6 +5541,40 @@ struct BurnDriver BurnDrvneogeo = {
|
|||||||
self.assertEqual(local, path)
|
self.assertEqual(local, path)
|
||||||
self.assertEqual(status, "name_exact")
|
self.assertEqual(status, "name_exact")
|
||||||
|
|
||||||
|
def test_217b_zipped_file_composite_needs_the_member(self):
|
||||||
|
"""One member of another name has the zipped_file md5 as composite.
|
||||||
|
|
||||||
|
Batocera looks the member up by name, so the archive is not proof of
|
||||||
|
the entry: a MAME rename leaves exactly that archive behind.
|
||||||
|
"""
|
||||||
|
import hashlib as hl
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
from common import resolve_local_file
|
||||||
|
|
||||||
|
rom = b"inner rom bytes"
|
||||||
|
rom_md5 = hl.md5(rom).hexdigest()
|
||||||
|
with tempfile.TemporaryDirectory() as tmpdir:
|
||||||
|
path = os.path.join(tmpdir, "foo.zip")
|
||||||
|
with zipfile.ZipFile(path, "w") as zf:
|
||||||
|
zf.writestr("renamed.bin", rom)
|
||||||
|
db = {
|
||||||
|
"files": {"sha1z": {"name": "foo.zip", "path": path, "md5": "f" * 32}},
|
||||||
|
"indexes": {
|
||||||
|
"by_md5": {}, "by_name": {"foo.zip": ["sha1z"]},
|
||||||
|
"by_crc32": {}, "by_path_suffix": {},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
entry = {"name": "foo.zip", "zipped_file": "expected.bin", "md5": rom_md5}
|
||||||
|
self.assertNotEqual(
|
||||||
|
resolve_local_file(entry, db)[1], "md5_composite_exact"
|
||||||
|
)
|
||||||
|
with zipfile.ZipFile(path, "w") as zf:
|
||||||
|
zf.writestr("expected.bin", rom)
|
||||||
|
self.assertEqual(
|
||||||
|
resolve_local_file(entry, db), (path, "md5_composite_exact")
|
||||||
|
)
|
||||||
|
|
||||||
def test_215_check_member_hash_inside_zip(self):
|
def test_215_check_member_hash_inside_zip(self):
|
||||||
"""zipped_file entries verify the ROM inside the ZIP, not the ZIP."""
|
"""zipped_file entries verify the ROM inside the ZIP, not the ZIP."""
|
||||||
import hashlib as hl
|
import hashlib as hl
|
||||||
|
|||||||
@@ -93,6 +93,49 @@ class ForeignTreeNames(unittest.TestCase):
|
|||||||
self.assertEqual(status, "data_dir")
|
self.assertEqual(status, "data_dir")
|
||||||
self.assertEqual(Path(path).read_bytes(), b"B" * 64)
|
self.assertEqual(Path(path).read_bytes(), b"B" * 64)
|
||||||
|
|
||||||
|
def test_another_casing_in_another_tree_is_not_the_file(self):
|
||||||
|
"""reminiscence's music module reunion took skyline's
|
||||||
|
zoneinfo/Indian/Reunion, a time-zone file, on the casefold step."""
|
||||||
|
self._hold("bios/Other/skyline/tzdata/zoneinfo/Indian/Reunion", b"T" * 64)
|
||||||
|
entry = {
|
||||||
|
"name": "reunion", "aliases": ["mod.flashback-reunion"],
|
||||||
|
"category": "game_data", "source_profile": "reminiscence",
|
||||||
|
}
|
||||||
|
self.assertEqual(resolve_local_file(entry, self.db), (None, "not_found"))
|
||||||
|
|
||||||
|
|
||||||
|
class RetailDashboardTree(unittest.TestCase):
|
||||||
|
"""x1-box asked for C/xbox.xtf: the only copy at that tail sat in hakuX's
|
||||||
|
tree and was set aside, and the name step served Xenia's Xbox 360 font.
|
||||||
|
The retail dashboard both emulators import lives with the console."""
|
||||||
|
|
||||||
|
def test_partition_c_resolves_by_path_for_both_importers(self):
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
from common import load_database
|
||||||
|
|
||||||
|
db_path = REPO_ROOT / "database.json"
|
||||||
|
if not db_path.exists():
|
||||||
|
self.skipTest("database.json absent")
|
||||||
|
db = load_database(str(db_path))
|
||||||
|
for profile in ("x1-box", "hakux"):
|
||||||
|
document = yaml.safe_load(
|
||||||
|
(REPO_ROOT / "emulators" / f"{profile}.yml").read_text()
|
||||||
|
)
|
||||||
|
for entry in document["files"]:
|
||||||
|
dest = str(entry.get("path") or "")
|
||||||
|
if not dest.startswith("C/"):
|
||||||
|
continue
|
||||||
|
with self.subTest(profile=profile, dest=dest):
|
||||||
|
asked = {**entry, "source_profile": profile}
|
||||||
|
cwd = os.getcwd()
|
||||||
|
os.chdir(REPO_ROOT)
|
||||||
|
try:
|
||||||
|
path, status = resolve_local_file(asked, db, dest_hint=dest)
|
||||||
|
finally:
|
||||||
|
os.chdir(cwd)
|
||||||
|
self.assertEqual(status, "path_exact", path)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
@@ -333,6 +333,19 @@ class TestGoneUpstreamIsNotAnError(unittest.TestCase):
|
|||||||
self.assertIn("upstream gone", out)
|
self.assertIn("upstream gone", out)
|
||||||
self.assertIn("upstream error", out)
|
self.assertIn("upstream error", out)
|
||||||
|
|
||||||
|
def test_triage_names_an_orphaned_pin_and_a_moved_repository(self):
|
||||||
|
"""pcem's only problem was an upstream_commit off its dev branch, and
|
||||||
|
the triage line read "1 to review" like any drift."""
|
||||||
|
report = ProfileReport(
|
||||||
|
name="pcem", entries=[], counts={"UNCHECKED": 2},
|
||||||
|
orphaned=["sarah-walker-pcem/pcem: pin 25b54e3f is no ancestor of 4606fb1e"],
|
||||||
|
moved_repos=["a/b answers as c/b (renamed or transferred)"],
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
profile_sync.triage_state(report),
|
||||||
|
"2 to review, 1 orphaned pin, 1 repository moved, 2 unchecked",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TestWorstStatus(unittest.TestCase):
|
class TestWorstStatus(unittest.TestCase):
|
||||||
def test_gone_beats_everything(self):
|
def test_gone_beats_everything(self):
|
||||||
@@ -501,6 +514,46 @@ class TestVerifyAtPin(unittest.TestCase):
|
|||||||
self.assertIsNone(profile_sync.cites_another_version(same, "0.16.0"))
|
self.assertIsNone(profile_sync.cites_another_version(same, "0.16.0"))
|
||||||
self.assertIsNone(profile_sync.cites_another_version(same, {"libretro": "v0.16.0"}))
|
self.assertIsNone(profile_sync.cites_another_version(same, {"libretro": "v0.16.0"}))
|
||||||
|
|
||||||
|
def test_a_profile_with_a_repository_names_a_revision(self):
|
||||||
|
"""redream declared libretro/redream, a repository that never
|
||||||
|
existed, with no pin and no date: profile_sync skipped it and no
|
||||||
|
revision answered for the files Batocera, RetroBat and KNULLI ship."""
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
root = Path(__file__).resolve().parents[1] / "emulators"
|
||||||
|
unpinned = [
|
||||||
|
path.stem
|
||||||
|
for path in sorted(root.glob("*.yml"))
|
||||||
|
if (profile := yaml.safe_load(path.read_text(encoding="utf-8")) or {})
|
||||||
|
and (profile.get("source") or profile.get("upstream"))
|
||||||
|
and not any(
|
||||||
|
profile.get(key)
|
||||||
|
for key in ("source_commit", "upstream_commit", "profiled_date")
|
||||||
|
)
|
||||||
|
]
|
||||||
|
self.assertEqual(unpinned, [])
|
||||||
|
|
||||||
|
def test_a_profile_citing_versions_documents_its_own(self):
|
||||||
|
"""ti99sim's core_version went null while doc/CHANGES.html at its pin
|
||||||
|
reads 0.16.0: every (v0.16.0) part then read as another version, and
|
||||||
|
the profile reported 0 to review with nothing checked."""
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
root = Path(__file__).resolve().parents[1] / "emulators"
|
||||||
|
silent = []
|
||||||
|
for path in sorted(root.glob("*.yml")):
|
||||||
|
profile = yaml.safe_load(path.read_text(encoding="utf-8")) or {}
|
||||||
|
refs = " ".join(
|
||||||
|
str(entry.get("source_ref") or "") for entry in profile.get("files") or []
|
||||||
|
)
|
||||||
|
if not profile_sync._VERSION_NOTE_RE.search(refs):
|
||||||
|
continue
|
||||||
|
declared = profile.get("core_version")
|
||||||
|
values = declared.values() if isinstance(declared, dict) else [declared]
|
||||||
|
if not any(values):
|
||||||
|
silent.append(path.stem)
|
||||||
|
self.assertEqual(silent, [])
|
||||||
|
|
||||||
def test_a_name_stem_elsewhere_does_not_move_a_ref(self):
|
def test_a_name_stem_elsewhere_does_not_move_a_ref(self):
|
||||||
"""linapple cites the PRAVETS82 option, and the stem also names an install line."""
|
"""linapple cites the PRAVETS82 option, and the stem also names an install line."""
|
||||||
lines = ['option(ENABLE_ROM_CLONE_PRAVETS "" OFF)', "", "", "", "", "",
|
lines = ['option(ENABLE_ROM_CLONE_PRAVETS "" OFF)', "", "", "", "", "",
|
||||||
@@ -3203,6 +3256,35 @@ class TestBumpCommit(unittest.TestCase):
|
|||||||
# Nothing was compared upstream, so its pin is not written.
|
# Nothing was compared upstream, so its pin is not written.
|
||||||
self.assertNotIn("uphead", text)
|
self.assertNotIn("uphead", text)
|
||||||
|
|
||||||
|
def test_a_profile_one_platform_ships_waits_for_its_build(self):
|
||||||
|
"""EmuELEC alone ships RigelEngine and builds its package.mk
|
||||||
|
PKG_VERSION. A bulk advance moved fheroes2 and supertux past that
|
||||||
|
build, and rigelengine is a commit ahead of it already."""
|
||||||
|
root = Path(__file__).resolve().parents[1]
|
||||||
|
path = Path(self.tmp.name) / "rigelengine.yml"
|
||||||
|
path.write_text(
|
||||||
|
SAMPLE.replace("\nnotes:", "\ntype: standalone\ncores: [rigelengine, RigelEngine]\n\nnotes:", 1),
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
report = ProfileReport(
|
||||||
|
name="rigelengine", repo="o/n", pin="pin", head="newhead", entries=[],
|
||||||
|
counts={}, skipped=profile_sync.NO_SOURCE_REF,
|
||||||
|
)
|
||||||
|
platforms = str(root / "platforms")
|
||||||
|
self.assertEqual(
|
||||||
|
profile_sync.shipping_platforms("rigelengine", self.tmp.name, platforms),
|
||||||
|
["emuelec"],
|
||||||
|
)
|
||||||
|
with contextlib.redirect_stderr(io.StringIO()) as err:
|
||||||
|
self.assertFalse(bump_commit(path, report, platforms_dir=platforms))
|
||||||
|
self.assertIn("only emuelec ships it", err.getvalue())
|
||||||
|
path.write_text(
|
||||||
|
path.read_text(encoding="utf-8")
|
||||||
|
+ 'pin_follows: "EmuELEC builds the branch tip"\n',
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
self.assertTrue(bump_commit(path, report, platforms_dir=platforms))
|
||||||
|
|
||||||
def test_any_other_skip_still_holds_the_pin(self):
|
def test_any_other_skip_still_holds_the_pin(self):
|
||||||
report = ProfileReport(
|
report = ProfileReport(
|
||||||
name="p", repo="o/n", pin="pin", head="newhead", entries=[], counts={},
|
name="p", repo="o/n", pin="pin", head="newhead", entries=[], counts={},
|
||||||
@@ -3929,6 +4011,50 @@ class TestCollectCitations(unittest.TestCase):
|
|||||||
self.assertIsNone(resolve("munt ROMInfo.cpp", [tree]))
|
self.assertIsNone(resolve("munt ROMInfo.cpp", [tree]))
|
||||||
self.assertIsNone(resolve("mupen64plus Config.cpp", [tree]))
|
self.assertIsNone(resolve("mupen64plus Config.cpp", [tree]))
|
||||||
|
|
||||||
|
def test_project_word_resolves_inside_a_submodule(self):
|
||||||
|
"""idtech4a++ and starship cite files of a submodule. The declared
|
||||||
|
tree holds only the gitlink, so the parts stayed external and moved
|
||||||
|
unchecked with every bump."""
|
||||||
|
links = ["Q3E/src/main/jni/xash3d/xash3d-fwgs", "tools/Torch", "libs/zlib"]
|
||||||
|
resolve = profile_sync.resolve_through_gitlinks
|
||||||
|
self.assertEqual(
|
||||||
|
resolve("xash3d-fwgs filesystem/filesystem.c", [links]),
|
||||||
|
"Q3E/src/main/jni/xash3d/xash3d-fwgs/filesystem/filesystem.c",
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
resolve("Torch src/Companion.cpp", [links]), "tools/Torch/src/Companion.cpp"
|
||||||
|
)
|
||||||
|
self.assertIsNone(resolve("munt ROMInfo.cpp", [links]))
|
||||||
|
self.assertIsNone(resolve("lib x.c", [["a/lib1", "b/lib2"]]))
|
||||||
|
|
||||||
|
def test_a_submodule_file_is_read_at_its_pinned_commit(self):
|
||||||
|
port = upstream.make_repo("github.com", "glKarin", "com.n0n3m4.diii4a")
|
||||||
|
files = {
|
||||||
|
(port.slug, "p1", ".gitmodules"): [
|
||||||
|
'[submodule "Q3E/src/main/jni/xash3d/xash3d-fwgs"]',
|
||||||
|
"\tpath = Q3E/src/main/jni/xash3d/xash3d-fwgs",
|
||||||
|
"\turl = ../xash3d-fwgs.git",
|
||||||
|
],
|
||||||
|
("glKarin/xash3d-fwgs", "s1", "filesystem/filesystem.c"): ["getenv(x)"],
|
||||||
|
}
|
||||||
|
|
||||||
|
def fetch(repo, sha, path, *_):
|
||||||
|
return files.get((repo.slug, sha, path))
|
||||||
|
|
||||||
|
with mock.patch.object(upstream, "fetch_file", side_effect=fetch), \
|
||||||
|
mock.patch.object(
|
||||||
|
upstream, "list_gitlinks",
|
||||||
|
return_value={"Q3E/src/main/jni/xash3d/xash3d-fwgs": "s1"},
|
||||||
|
):
|
||||||
|
target = upstream.through_gitlink(
|
||||||
|
port, "p1",
|
||||||
|
"Q3E/src/main/jni/xash3d/xash3d-fwgs/filesystem/filesystem.c", "c",
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
(target[0].slug, target[1], target[2]),
|
||||||
|
("glKarin/xash3d-fwgs", "s1", "filesystem/filesystem.c"),
|
||||||
|
)
|
||||||
|
|
||||||
def test_run_is_rendered_with_its_written_path(self):
|
def test_run_is_rendered_with_its_written_path(self):
|
||||||
parts = [RefPart("mupen64plus-video-rice/upstream/src/Config.cpp", 38, 38, "38")]
|
parts = [RefPart("mupen64plus-video-rice/upstream/src/Config.cpp", 38, 38, "38")]
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
@@ -5799,6 +5925,24 @@ class TestBranchProfiles(unittest.TestCase):
|
|||||||
["draft", "edited", "new"],
|
["draft", "edited", "new"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_a_fork_clone_compares_with_the_project(self):
|
||||||
|
"""origin is the fork, pushed: origin/main is HEAD, and the default
|
||||||
|
base found nothing to check while the PR's CI failed."""
|
||||||
|
base = subprocess.run(
|
||||||
|
["git", "rev-parse", "main"], cwd=self.root, capture_output=True,
|
||||||
|
text=True, check=True,
|
||||||
|
).stdout.strip()
|
||||||
|
self._git("remote", "add", "origin", "https://github.com/someone/retrobios")
|
||||||
|
self._git("remote", "add", "upstream", "https://github.com/Abdess/retrobios")
|
||||||
|
self._git("update-ref", "refs/remotes/origin/main", "HEAD")
|
||||||
|
self._git("update-ref", "refs/remotes/upstream/main", base)
|
||||||
|
args = profile_sync.build_parser().parse_args(["--changed"])
|
||||||
|
profiles = {"kept": {}, "edited": {}, "new": {}, "draft": {}}
|
||||||
|
self.assertEqual(
|
||||||
|
list(profile_sync.select_profiles(profiles, args)),
|
||||||
|
["draft", "edited", "new"],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TestBranchCheckIsWired(unittest.TestCase):
|
class TestBranchCheckIsWired(unittest.TestCase):
|
||||||
"""CONTRIBUTING and CI name the branch's profiles through the flag."""
|
"""CONTRIBUTING and CI name the branch's profiles through the flag."""
|
||||||
|
|||||||
@@ -509,6 +509,11 @@ class OneCodeOneRegionAnswer(unittest.TestCase):
|
|||||||
profiles = common.load_emulator_profiles(self.PROFILES)
|
profiles = common.load_emulator_profiles(self.PROFILES)
|
||||||
bios_sms = next(e for e in profiles["clk"]["files"] if e["name"] == "bios.sms")
|
bios_sms = next(e for e in profiles["clk"]["files"] if e["name"] == "bios.sms")
|
||||||
self.assertIn("oceania", bios_sms["region"])
|
self.assertIn("oceania", bios_sms["region"])
|
||||||
|
# A Mexican export cartridge is analysed as Europe or USA and boots the
|
||||||
|
# western BIOS: only Japan selects the other one.
|
||||||
|
self.assertEqual(
|
||||||
|
region.rank(region.normalize_declared(bios_sms["region"]), ["mexico"]), 0
|
||||||
|
)
|
||||||
tagged = {
|
tagged = {
|
||||||
e["name"]: e.get("region") for e in profiles["kronos"]["files"]
|
e["name"]: e.get("region") for e in profiles["kronos"]["files"]
|
||||||
if e.get("archive") == "stvbios.zip" and e["name"].startswith("epr-")
|
if e.get("archive") == "stvbios.zip" and e["name"].startswith("epr-")
|
||||||
@@ -1379,5 +1384,32 @@ class YmirLibretroRegions(unittest.TestCase):
|
|||||||
if e["name"] == "sega_101.bin"))
|
if e["name"] == "sega_101.bin"))
|
||||||
|
|
||||||
|
|
||||||
|
class MachineModelRomsCarryNoTerritory(unittest.TestCase):
|
||||||
|
"""XRoar reads d200e_1.rom for the dragon200e machine and alice.rom for
|
||||||
|
the alice machine (src/xroar.c:437-444, 552-558), and VICE the Japanese
|
||||||
|
kernal and chargen for the C64 JAP and VIC-1001 models, which a file name
|
||||||
|
tagged (Japan) never selects (libretro-core.c:2018-2034 sets NTSC). The
|
||||||
|
site told a Spanish Dragon 64 owner to start with d200e_1.rom."""
|
||||||
|
|
||||||
|
CASES = {
|
||||||
|
"xroar": ("d200e_1.rom", "d200e_2.rom", "d200e_26.rom", "alice.rom"),
|
||||||
|
"x64sdl": ("jpkernal", "jpchrgen"),
|
||||||
|
"vice_xvic": ("kernal.901486-02.bin", "chargen-901460-02.bin"),
|
||||||
|
}
|
||||||
|
|
||||||
|
def test_model_roms_are_unregioned(self):
|
||||||
|
profiles = common.load_emulator_profiles(
|
||||||
|
os.path.join(os.path.dirname(__file__), "..", "emulators")
|
||||||
|
)
|
||||||
|
for profile, names in self.CASES.items():
|
||||||
|
for entry in profiles[profile]["files"]:
|
||||||
|
if entry["name"] in names:
|
||||||
|
with self.subTest(profile=profile, name=entry["name"]):
|
||||||
|
self.assertNotIn("region", entry)
|
||||||
|
self.assertFalse(
|
||||||
|
[e["name"] for e in profiles["c64-emu"]["files"] if e.get("region")]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
"crates/wqxemu/src/keypad.rs",
|
"crates/wqxemu/src/keypad.rs",
|
||||||
"crates/wqxemu/src/main.rs"
|
"crates/wqxemu/src/main.rs"
|
||||||
],
|
],
|
||||||
"git.libretro.com/libretro/xenia-libretro@f23c14c717ef274516f29c9b5e97d6a9db28643d": [
|
"git.libretro.com/libretro/xenia-edge-libretro@f23c14c717ef274516f29c9b5e97d6a9db28643d": [
|
||||||
".ci/build-windows-cross.sh",
|
".ci/build-windows-cross.sh",
|
||||||
"libretro/CMakeLists.txt",
|
"libretro/CMakeLists.txt",
|
||||||
"libretro/libretro.cpp",
|
"libretro/libretro.cpp",
|
||||||
@@ -1798,6 +1798,7 @@
|
|||||||
"Analyser/Static/Commodore/Target.hpp",
|
"Analyser/Static/Commodore/Target.hpp",
|
||||||
"Analyser/Static/MSX/StaticAnalyser.cpp",
|
"Analyser/Static/MSX/StaticAnalyser.cpp",
|
||||||
"Analyser/Static/MSX/Target.hpp",
|
"Analyser/Static/MSX/Target.hpp",
|
||||||
|
"Analyser/Static/Sega/StaticAnalyser.cpp",
|
||||||
"Analyser/Static/Sega/Target.hpp",
|
"Analyser/Static/Sega/Target.hpp",
|
||||||
"Components/DiskII/DiskII.cpp",
|
"Components/DiskII/DiskII.cpp",
|
||||||
"Machines/Apple/Macintosh/Macintosh.cpp",
|
"Machines/Apple/Macintosh/Macintosh.cpp",
|
||||||
@@ -3182,6 +3183,11 @@
|
|||||||
"rott/rt_ted.c"
|
"rott/rt_ted.c"
|
||||||
],
|
],
|
||||||
"github.com/finalburnneo/FBNeo@697e385c8285bfc528343b96d948ee3a4f9e24c5": [
|
"github.com/finalburnneo/FBNeo@697e385c8285bfc528343b96d948ee3a4f9e24c5": [
|
||||||
|
"src/burn/burn.cpp",
|
||||||
|
"src/burn/drv/neogeo/d_neogeo.cpp",
|
||||||
|
"src/burn/hiscore.cpp"
|
||||||
|
],
|
||||||
|
"github.com/finalburnneo/FBNeo@c110542721d8674b6ff48e691ac032c040fecbba": [
|
||||||
"src/burn/burn.cpp",
|
"src/burn/burn.cpp",
|
||||||
"src/burn/drv/atari/d_atarisy1.cpp",
|
"src/burn/drv/atari/d_atarisy1.cpp",
|
||||||
"src/burn/drv/channelf/d_channelf.cpp",
|
"src/burn/drv/channelf/d_channelf.cpp",
|
||||||
@@ -3477,39 +3483,6 @@
|
|||||||
"src/xenia/ui/imgui_drawer.cc",
|
"src/xenia/ui/imgui_drawer.cc",
|
||||||
"src/xenia/ui/vulkan/vulkan_instance.cc"
|
"src/xenia/ui/vulkan/vulkan_instance.cc"
|
||||||
],
|
],
|
||||||
"github.com/hatari/hatari@23bc3060ebf0da348cc842e358c102ba88002b56": [
|
|
||||||
"CMakeLists.txt",
|
|
||||||
"doc/release-checklist.txt",
|
|
||||||
"src/CMakeLists.txt",
|
|
||||||
"src/cart.c",
|
|
||||||
"src/change.c",
|
|
||||||
"src/configuration.c",
|
|
||||||
"src/debug/symbols.c",
|
|
||||||
"src/falcon/nvram.c",
|
|
||||||
"src/file.c",
|
|
||||||
"src/floppies/stx.c",
|
|
||||||
"src/floppy.c",
|
|
||||||
"src/includes/configuration.h",
|
|
||||||
"src/includes/version.h",
|
|
||||||
"src/m68000.c",
|
|
||||||
"src/main.c",
|
|
||||||
"src/midi.c",
|
|
||||||
"src/options.c",
|
|
||||||
"src/paths.c",
|
|
||||||
"src/printer.c",
|
|
||||||
"src/reset.c",
|
|
||||||
"src/retro/disk_control.c",
|
|
||||||
"src/retro/harddisk.c",
|
|
||||||
"src/retro/keymap.c",
|
|
||||||
"src/retro/main_retro.c",
|
|
||||||
"src/retro/options.c",
|
|
||||||
"src/retro/statusbar.c",
|
|
||||||
"src/rs232.c",
|
|
||||||
"src/scc.c",
|
|
||||||
"src/sdl/keymap.c",
|
|
||||||
"src/sdl/screen.c",
|
|
||||||
"src/tos.c"
|
|
||||||
],
|
|
||||||
"github.com/hatari/hatari@c1a5c88bc06e56778b6b7f8483becfd58a7da2b4": [
|
"github.com/hatari/hatari@c1a5c88bc06e56778b6b7f8483becfd58a7da2b4": [
|
||||||
"src/cart.c",
|
"src/cart.c",
|
||||||
"src/change.c",
|
"src/change.c",
|
||||||
@@ -3523,6 +3496,42 @@
|
|||||||
"src/tos.c",
|
"src/tos.c",
|
||||||
"src/vdi.c"
|
"src/vdi.c"
|
||||||
],
|
],
|
||||||
|
"github.com/hatari/hatari@c453b85f811fc11bed10e19e5e48fe95377e5a23": [
|
||||||
|
"CMakeLists.txt",
|
||||||
|
"doc/release-checklist.txt",
|
||||||
|
"src/CMakeLists.txt",
|
||||||
|
"src/cart.c",
|
||||||
|
"src/change.c",
|
||||||
|
"src/configuration.c",
|
||||||
|
"src/debug/symbols.c",
|
||||||
|
"src/falcon/nvram.c",
|
||||||
|
"src/file.c",
|
||||||
|
"src/filename.c",
|
||||||
|
"src/floppies/stx.c",
|
||||||
|
"src/floppy.c",
|
||||||
|
"src/includes/configuration.h",
|
||||||
|
"src/includes/version.h",
|
||||||
|
"src/m68000.c",
|
||||||
|
"src/main.c",
|
||||||
|
"src/midi.c",
|
||||||
|
"src/options.c",
|
||||||
|
"src/paths.c",
|
||||||
|
"src/printer.c",
|
||||||
|
"src/reset.c",
|
||||||
|
"src/retro/disk_control.c",
|
||||||
|
"src/retro/file_retro.c",
|
||||||
|
"src/retro/harddisk.c",
|
||||||
|
"src/retro/keymap.c",
|
||||||
|
"src/retro/main_retro.c",
|
||||||
|
"src/retro/options.c",
|
||||||
|
"src/retro/statusbar.c",
|
||||||
|
"src/retro/vfs.c",
|
||||||
|
"src/rs232.c",
|
||||||
|
"src/scc.c",
|
||||||
|
"src/sdl/keymap.c",
|
||||||
|
"src/sdl/screen.c",
|
||||||
|
"src/tos.c"
|
||||||
|
],
|
||||||
"github.com/hex007/freej2me@8b9bc8a19baf26e3d92f88934a64a32f1cbc2795": [
|
"github.com/hex007/freej2me@8b9bc8a19baf26e3d92f88934a64a32f1cbc2795": [
|
||||||
"build.xml",
|
"build.xml",
|
||||||
"src/javax/microedition/media/Manager.java",
|
"src/javax/microedition/media/Manager.java",
|
||||||
@@ -3599,6 +3608,12 @@
|
|||||||
"src/system.go",
|
"src/system.go",
|
||||||
"src/util_desktop.go"
|
"src/util_desktop.go"
|
||||||
],
|
],
|
||||||
|
"github.com/inolen/redream@ffb7302245ff40515cb9f0f0b0e233a4b39342d3": [
|
||||||
|
"src/guest/bios/bios.c",
|
||||||
|
"src/guest/rom/boot.c",
|
||||||
|
"src/guest/rom/flash.c",
|
||||||
|
"src/host/retro_host.c"
|
||||||
|
],
|
||||||
"github.com/io12/qemu-libretro@aaba4471880587540314f82419d920431d55b769": [
|
"github.com/io12/qemu-libretro@aaba4471880587540314f82419d920431d55b769": [
|
||||||
"hw/alpha/dp264.c",
|
"hw/alpha/dp264.c",
|
||||||
"hw/arm/digic_boards.c",
|
"hw/arm/digic_boards.c",
|
||||||
@@ -3853,7 +3868,7 @@
|
|||||||
"README.md",
|
"README.md",
|
||||||
"sdl12main.c"
|
"sdl12main.c"
|
||||||
],
|
],
|
||||||
"github.com/lethal-guitar/RigelEngine@30afeff8f0b105eac77ee0a2fbd54b06e1a49b60": [
|
"github.com/lethal-guitar/RigelEngine@f05996f9b3ad3b3ea5bb818e49e7977636746343": [
|
||||||
"README.md",
|
"README.md",
|
||||||
"cmake/rigel_pack.cmake",
|
"cmake/rigel_pack.cmake",
|
||||||
"src/assets/cmp_file_package.cpp",
|
"src/assets/cmp_file_package.cpp",
|
||||||
@@ -3879,6 +3894,12 @@
|
|||||||
"libretro.c"
|
"libretro.c"
|
||||||
],
|
],
|
||||||
"github.com/libretro/FBNeo@32958a89abd645ed20387c8d31d21ede3bc48161": [
|
"github.com/libretro/FBNeo@32958a89abd645ed20387c8d31d21ede3bc48161": [
|
||||||
|
"src/burn/burn.cpp",
|
||||||
|
"src/burn/drv/neogeo/d_neogeo.cpp",
|
||||||
|
"src/burn/hiscore.cpp",
|
||||||
|
"src/burner/libretro/libretro.cpp"
|
||||||
|
],
|
||||||
|
"github.com/libretro/FBNeo@da14132bab6683980b1ad7e4d0d6fd47bf06dce7": [
|
||||||
"src/burn/burn.cpp",
|
"src/burn/burn.cpp",
|
||||||
"src/burn/drv/atari/d_atarisy1.cpp",
|
"src/burn/drv/atari/d_atarisy1.cpp",
|
||||||
"src/burn/drv/channelf/d_channelf.cpp",
|
"src/burn/drv/channelf/d_channelf.cpp",
|
||||||
@@ -4436,7 +4457,7 @@
|
|||||||
"gwrom/gwrom.h",
|
"gwrom/gwrom.h",
|
||||||
"src/libretro.c"
|
"src/libretro.c"
|
||||||
],
|
],
|
||||||
"github.com/libretro/hatari@50929946d196f431906932420c55e1b3593dacc5": [
|
"github.com/libretro/hatari@25f488b1667ed064a25c30eb3f06b40bc877c495": [
|
||||||
".gitlab-ci-libretro.yml",
|
".gitlab-ci-libretro.yml",
|
||||||
"CMakeLists.txt",
|
"CMakeLists.txt",
|
||||||
"cmake/BuildDependencies.cmake",
|
"cmake/BuildDependencies.cmake",
|
||||||
@@ -4448,6 +4469,7 @@
|
|||||||
"src/debug/symbols.c",
|
"src/debug/symbols.c",
|
||||||
"src/falcon/nvram.c",
|
"src/falcon/nvram.c",
|
||||||
"src/file.c",
|
"src/file.c",
|
||||||
|
"src/filename.c",
|
||||||
"src/floppies/stx.c",
|
"src/floppies/stx.c",
|
||||||
"src/floppy.c",
|
"src/floppy.c",
|
||||||
"src/includes/configuration.h",
|
"src/includes/configuration.h",
|
||||||
@@ -4460,6 +4482,7 @@
|
|||||||
"src/printer.c",
|
"src/printer.c",
|
||||||
"src/reset.c",
|
"src/reset.c",
|
||||||
"src/retro/disk_control.c",
|
"src/retro/disk_control.c",
|
||||||
|
"src/retro/file_retro.c",
|
||||||
"src/retro/floppy_sound.c",
|
"src/retro/floppy_sound.c",
|
||||||
"src/retro/harddisk.c",
|
"src/retro/harddisk.c",
|
||||||
"src/retro/keymap.c",
|
"src/retro/keymap.c",
|
||||||
@@ -4666,6 +4689,7 @@
|
|||||||
"src/drivers/cvs.c",
|
"src/drivers/cvs.c",
|
||||||
"src/drivers/decocass.c",
|
"src/drivers/decocass.c",
|
||||||
"src/drivers/konamigx.c",
|
"src/drivers/konamigx.c",
|
||||||
|
"src/drivers/namcos11.c",
|
||||||
"src/drivers/neogeo.c",
|
"src/drivers/neogeo.c",
|
||||||
"src/drivers/nss.c",
|
"src/drivers/nss.c",
|
||||||
"src/drivers/pgm.c",
|
"src/drivers/pgm.c",
|
||||||
@@ -8136,10 +8160,13 @@
|
|||||||
"share/machines/Philips_VG_8020.xml",
|
"share/machines/Philips_VG_8020.xml",
|
||||||
"share/machines/Pioneer_PX-7.xml",
|
"share/machines/Pioneer_PX-7.xml",
|
||||||
"share/machines/Spectravideo_SVI-328.xml",
|
"share/machines/Spectravideo_SVI-328.xml",
|
||||||
|
"src/config/HardwareConfig.cc",
|
||||||
"src/file/File.cc",
|
"src/file/File.cc",
|
||||||
|
"src/file/FileContext.cc",
|
||||||
"src/file/FilePool.cc",
|
"src/file/FilePool.cc",
|
||||||
"src/file/FilePoolCore.cc",
|
"src/file/FilePoolCore.cc",
|
||||||
"src/file/ZipFileAdapter.cc"
|
"src/file/ZipFileAdapter.cc",
|
||||||
|
"src/memory/Rom.cc"
|
||||||
],
|
],
|
||||||
"github.com/openmoh/openmohaa@a2f340195975f4f042e28a60b62561dd9a0b2700": [
|
"github.com/openmoh/openmohaa@a2f340195975f4f042e28a60b62561dd9a0b2700": [
|
||||||
"code/qcommon/common.c",
|
"code/qcommon/common.c",
|
||||||
|
|||||||
@@ -521,6 +521,7 @@ reports the profile as uncheckable, and the CI job that runs
|
|||||||
| `source_commit` | see above | commit SHA of `source` the code was read at. Anchors every `source_ref` line number |
|
| `source_commit` | see above | commit SHA of `source` the code was read at. Anchors every `source_ref` line number |
|
||||||
| `upstream_commit` | no | same, for `upstream` |
|
| `upstream_commit` | no | same, for `upstream` |
|
||||||
| `pin_frozen` | no | why `source_commit` is held on purpose rather than followed. The profile is then judged against its own revision, like one pinned to a superseded tag |
|
| `pin_frozen` | no | why `source_commit` is held on purpose rather than followed. The profile is then judged against its own revision, like one pinned to a superseded tag |
|
||||||
|
| `pin_follows` | no | why `source_commit` follows the branch tip when a single platform ships the profile: that platform builds the tip, cited by its build file. A bump refuses a profile one platform ships until it carries `pin_frozen` or `pin_follows` |
|
||||||
| `data_root` | no | per operating system (`android`, `ios`, `windows`, `macos`, `linux`), the folder the app reads its user data from, under which `standalone_path` destinations sit: `path` as the user finds it (`Android/data/<package>/files`, `%APPDATA%/...`), with the `source_ref` that builds it. Only the systems the app runs on are keyed |
|
| `data_root` | no | per operating system (`android`, `ios`, `windows`, `macos`, `linux`), the folder the app reads its user data from, under which `standalone_path` destinations sit: `path` as the user finds it (`Android/data/<package>/files`, `%APPDATA%/...`), with the `source_ref` that builds it. Only the systems the app runs on are keyed |
|
||||||
| `upstream_frozen` | no | why `upstream_commit` is held: the port vendors that upstream tree, synced to that release, or merged that commit. The upstream view is read at its own pin and a bump leaves it. Without it, a port that is a GitHub fork of its upstream follows the merge base of the two |
|
| `upstream_frozen` | no | why `upstream_commit` is held: the port vendors that upstream tree, synced to that release, or merged that commit. The upstream view is read at its own pin and a bump leaves it. Without it, a port that is a GitHub fork of its upstream follows the merge base of the two |
|
||||||
| `prose_written_at` | no | the pin a reader confirmed the prose citations against. When the profile's history shows a text living under several pins, profile_sync takes this one as the revision the text describes, so a bump is no longer refused for a citation already reread. It never overrides a history with a single candidate |
|
| `prose_written_at` | no | the pin a reader confirmed the prose citations against. When the profile's history shows a text living under several pins, profile_sync takes this one as the revision the text describes, so a bump is no longer refused for a citation already reread. It never overrides a history with a single candidate |
|
||||||
|
|||||||
+7
-3
@@ -448,8 +448,10 @@ to show one cited file and `--context N` lines around each hunk. `--strict`
|
|||||||
exits 1 when a profile has refs to review, and CI runs it on every profile a change
|
exits 1 when a profile has refs to review, and CI runs it on every profile a change
|
||||||
adds. `--offline` answers from `--cache-dir` alone. `--changed` selects the
|
adds. `--offline` answers from `--cache-dir` alone. `--changed` selects the
|
||||||
profiles the branch adds or edits, uncommitted ones included, and `--added`
|
profiles the branch adds or edits, uncommitted ones included, and `--added`
|
||||||
the ones it adds, both against the merge base of `--base` (`origin/main` by
|
the ones it adds, both against the merge base of `--base` and HEAD. By
|
||||||
default) and HEAD.
|
default `--base` is the project's main line: `upstream/main` or `origin/main`
|
||||||
|
when that remote is the project, fetched from the project in a fork's clone,
|
||||||
|
where `origin/main` is the fork.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python scripts/profile_sync.py --all --system sega-saturn --changed-only
|
python scripts/profile_sync.py --all --system sega-saturn --changed-only
|
||||||
@@ -612,7 +614,9 @@ Writes are explicit and mechanical only. `--backfill-commits` fills a
|
|||||||
missing `source_commit`, `--rebase-refs` recales `SHIFTED` and `RENAMED`
|
missing `source_commit`, `--rebase-refs` recales `SHIFTED` and `RENAMED`
|
||||||
line ranges and moves `source_commit` to HEAD with them, all or nothing,
|
line ranges and moves `source_commit` to HEAD with them, all or nothing,
|
||||||
`--bump-commit` advances `source_commit` to HEAD only when nothing needs a
|
`--bump-commit` advances `source_commit` to HEAD only when nothing needs a
|
||||||
re-read. All three refuse to run on a dirty `emulators/` without `--force`,
|
re-read. It leaves a profile a single registered platform ships until the
|
||||||
|
profile says what that platform builds: `pin_frozen` for a fixed revision,
|
||||||
|
`pin_follows` for the branch tip. All three refuse to run on a dirty `emulators/` without `--force`,
|
||||||
and every write is verified by reparsing the document.
|
and every write is verified by reparsing the document.
|
||||||
|
|
||||||
Uses `GITHUB_TOKEN` when set, which `--all` requires. Responses are cached
|
Uses `GITHUB_TOKEN` when set, which `--all` requires. Responses are cached
|
||||||
|
|||||||
Reference in new issue
Block a user