Author SHA1 Message Date
Abdessamad Derraz c4599cd69e fix: cite pcsx2 bundled resources at the pin 2026-10-09 17:56:02 +02:00
Abdessamad Derraz 913ba09600 chore: hoist test imports to module level 2026-10-06 13:59:50 +02:00
Abdessamad Derraz 38655d1d23 refactor: split helpers out of grown functions 2026-10-06 13:59:50 +02:00
Abdessamad Derraz 9af89cb120 refactor: share the gap scope rule 2026-10-06 13:59:50 +02:00
Abdessamad Derraz fbc92c99cf chore: regenerate database, manifests and readme 2026-10-06 13:06:27 +02:00
Abdessamad Derraz 49b3cffa58 fix: cite lrps2 bios loaders at the pin 2026-10-06 13:01:09 +02:00
Abdessamad Derraz af4f980bab fix: cite pokemini's bios reload at the pin 2026-10-06 13:00:09 +02:00
Abdessamad Derraz 3582101af4 fix: cite the msx-emu fdc mapper at the pin 2026-10-06 13:00:00 +02:00
Abdessamad Derraz a4f3f016f8 fix: cite the casloopy rom block at the pin 2026-10-06 12:59:43 +02:00
Abdessamad Derraz a252e2d158 fix: a cited range past the file end is gone 2026-10-06 12:59:23 +02:00
Abdessamad Derraz 067d962210 fix: cite dolphin's NAND import where it is 2026-10-06 12:59:23 +02:00
Abdessamad Derraz 0d81f19831 fix: pin kronos on the branch the buildbot builds 2026-10-06 12:56:44 +02:00
Abdessamad Derraz 52d128bcf5 fix: name a file's readers by resolution 2026-10-06 12:55:41 +02:00
Abdessamad Derraz 0b46880604 fix: show unsourceable entries apart on the site 2026-10-06 12:53:10 +02:00
Abdessamad Derraz 0f293b6c14 fix: slot emulator entries where the pack puts them 2026-10-06 12:52:24 +02:00
Abdessamad Derraz 9ca14bb77e fix: keep save and content files out of the truth 2026-10-06 12:48:58 +02:00
Abdessamad Derraz 443639c33d fix: cross-reference the build a platform runs 2026-10-06 12:47:50 +02:00
Abdessamad Derraz 0ea8840f14 fix: default each platform to the folder it reads 2026-10-06 12:46:35 +02:00
Abdessamad Derraz 53c5504330 fix: read extract folders from the registry 2026-10-06 12:44:32 +02:00
Abdessamad Derraz 7164e8a125 fix: an untagged bios serves every region 2026-10-06 12:43:09 +02:00
Abdessamad Derraz cea6e516a4 fix: unmark files of standalone-only profiles 2026-10-06 12:39:34 +02:00
Abdessamad Derraz 8d2df0b651 fix: lock the pack directory while splitting 2026-10-06 12:34:31 +02:00
Abdessamad Derraz b20c38d1c1 fix: hold dist/ for the whole pipeline run 2026-10-06 12:33:59 +02:00
Abdessamad Derraz 45ede873b3 fix: refetch a large file the release replaced 2026-10-06 12:30:51 +02:00
Abdessamad Derraz 14e4dd919c fix: check targeted packs the way --all builds 2026-10-06 12:29:40 +02:00
Abdessamad Derraz dc5cdb8d70 docs: split parts are named, not renamed 2026-10-06 12:29:10 +02:00
Abdessamad Derraz 87ef905c44 fix: name split parts directly, version their dir 2026-10-06 12:29:03 +02:00
Abdessamad Derraz e3173b1fc5 fix: drop the --include-extras flag nothing read 2026-10-06 12:27:21 +02:00
Abdessamad Derraz 514becd784 fix: run every scraper contract class directly 2026-10-06 12:27:11 +02:00
Abdessamad Derraz 0cc6ab5990 fix: refuse --include-archived without --all 2026-10-06 12:26:47 +02:00
Abdessamad Derraz 4609102772 fix: fail the fileless check on real errors 2026-10-06 12:25:18 +02:00
Abdessamad Derraz 92594b1751 fix: read profile tree status from its own repo 2026-10-06 12:24:31 +02:00
Abdessamad Derraz 2499a0eabc fix: refuse a libretro scrape without core info 2026-10-06 12:23:48 +02:00
Abdessamad Derraz 91e113a7d3 fix: refuse an emudeck scrape with no cores 2026-10-06 12:23:48 +02:00
Abdessamad Derraz e723f346f9 fix: refuse batocera targets with unread boards 2026-10-06 12:22:51 +02:00
Abdessamad Derraz 139bb99088 fix: stop a scrape whose release tag is unread 2026-10-06 12:22:51 +02:00
Abdessamad Derraz e35aa9a323 fix: quote system.dat names as the original does 2026-10-06 12:16:23 +02:00
Abdessamad Derraz be2c325b53 fix: leave bizhawk's declared sha1 to bizhawk 2026-10-06 12:15:50 +02:00
Abdessamad Derraz b39b187243 fix: refuse a one-md5 addition of several accepted 2026-10-06 12:15:49 +02:00
Abdessamad Derraz 6380a92e6c fix: never pair files whose contents or dirs differ 2026-10-06 12:15:40 +02:00
Abdessamad Derraz 22f018995e feat: collect emucorex and dojo bundled resources 2026-10-06 12:13:27 +02:00
Abdessamad Derraz 5d5170dc12 fix: prefer the owner's copy among equal path tails 2026-10-06 12:13:27 +02:00
Abdessamad Derraz 64ed737ec6 fix: rank the owner's copy above shared tree names 2026-10-06 12:09:51 +02:00
Abdessamad Derraz 87addda6e1 fix: look inside every zipped_file archive 2026-10-06 12:07:34 +02:00
Abdessamad Derraz b8a7aa74ff fix: report contradicted hashes in existence verify 2026-10-06 12:05:56 +02:00
Abdessamad Derraz d4ae1a76e8 fix: state no size for several accepted sizes 2026-10-06 12:04:24 +02:00
Abdessamad Derraz eb8c7e5267 refactor: split this round's fixes into small helpers 2026-10-06 11:16:06 +02:00
Abdessamad Derraz 6748982d94 fix: count variant choices made through validated_choice 2026-10-06 10:23:20 +02:00
Abdessamad Derraz e335511b72 chore: regenerate database, manifests and readme 2026-10-06 09:59:51 +02:00
Abdessamad Derraz 3088db7088 fix: count core archives among the core files 2026-10-06 09:54:33 +02:00
Abdessamad Derraz 204637cfeb fix: pack undistributed core extras in a split part 2026-10-06 09:53:09 +02:00
Abdessamad Derraz 519c02646a fix: compute coverage from the profiles the site reads 2026-10-06 09:48:15 +02:00
Abdessamad Derraz 72e47becb4 refactor: write one contributing text for both pages 2026-10-06 09:47:09 +02:00
Abdessamad Derraz 4a1a9dd861 docs: name jsonschema where the build needs it 2026-10-06 09:46:10 +02:00
Abdessamad Derraz d610aad990 fix: require the jsonschema format checkers 2026-10-06 09:45:25 +02:00
Abdessamad Derraz a0af1b141e fix: diff every declaration of a repeated destination 2026-10-06 09:43:58 +02:00
Abdessamad Derraz 4d5340c5f4 fix: count site cores with the builder's resolution 2026-10-06 09:43:38 +02:00
Abdessamad Derraz 4923873a7f fix: refuse an unknown mame or fbneo version 2026-10-06 09:42:33 +02:00
Abdessamad Derraz ced7588d17 fix: count mister corrections only where it writes 2026-10-06 09:41:53 +02:00
Abdessamad Derraz 44cf638e06 fix: count bizhawk corrections only where it writes 2026-10-06 09:41:28 +02:00
Abdessamad Derraz a9b33484ed fix: write emudeck corrections, count only what lands 2026-10-06 09:41:04 +02:00
Abdessamad Derraz 39d02b3b18 fix: never let a romm addition replace their entry 2026-10-06 09:40:09 +02:00
Abdessamad Derraz e5420a9dba fix: keep platform hashes the truth does not contradict 2026-10-06 09:39:07 +02:00
Abdessamad Derraz 9604e933ed fix: recale prose onto the code the pins carry 2026-10-06 09:38:27 +02:00
Abdessamad Derraz dcc12e62b7 fix: tag regions only where the code picks by area 2026-10-06 09:37:44 +02:00
Abdessamad Derraz 25e8eeb37b fix: read gaps by normalized system, sha256, file names 2026-10-06 09:32:32 +02:00
Abdessamad Derraz 5d5befc002 fix: keep refs for another version out of the pin check 2026-10-06 09:28:51 +02:00
Abdessamad Derraz c4e16e583e fix: realign stale prose before a pin moves 2026-10-06 09:27:33 +02:00
Abdessamad Derraz b0f2c3bb88 fix: leave mode-keyed pins to a hand edit 2026-10-06 09:25:23 +02:00
Abdessamad Derraz d89b193780 fix: move a ref only on a hash found elsewhere 2026-10-06 09:24:49 +02:00
Abdessamad Derraz afdd38826c fix: refuse --refresh-data where nothing refreshes 2026-10-06 09:24:24 +02:00
Abdessamad Derraz 7ddb849c89 fix: hold the data dir lock in emulator packs 2026-10-06 09:20:42 +02:00
Abdessamad Derraz 8e3f3fe057 fix: build system packs beside, not over, emulator packs 2026-10-06 09:19:18 +02:00
Abdessamad Derraz af030fdd6d fix: reduce emulator packs by region after required-only 2026-10-06 09:13:15 +02:00
Abdessamad Derraz f159d35f18 fix: read the data registry from --platforms-dir 2026-10-06 09:10:57 +02:00
Abdessamad Derraz dce43a1281 fix: keep display names out of pack file paths 2026-10-06 09:09:02 +02:00
Abdessamad Derraz d7e7ec13ae fix: install the variant the pack ships 2026-10-06 09:08:33 +02:00
Abdessamad Derraz 098b2f0b70 fix: restore release assets through a scratch file 2026-10-06 08:58:40 +02:00
Abdessamad Derraz 6c9a41327b fix: refuse unread verify flags, read platforms dir 2026-10-06 08:58:21 +02:00
Abdessamad Derraz fb3c577521 fix: anchor the slot mode test on the override lookup 2026-10-06 08:53:58 +02:00
Abdessamad Derraz 821cbf4717 fix: count exclusions from the full pack only 2026-10-06 08:52:51 +02:00
Abdessamad Derraz 9c84b7990a fix: give np2kai scsi.rom a read ceiling, not a size 2026-10-06 08:52:26 +02:00
Abdessamad Derraz 4f8fbdfabb fix: read numbered master keys in the switch test 2026-10-06 08:51:16 +02:00
Abdessamad Derraz eccd0b0a28 fix: file the older switch keys as variants 2026-10-06 08:50:38 +02:00
Abdessamad Derraz 8fe961a1ea fix: read the hle index scope from its comprehension 2026-10-06 07:37:41 +02:00
Abdessamad Derraz ce239d32c1 refactor: name unused mock arguments, flatten withs 2026-10-06 07:06:53 +02:00
Abdessamad Derraz 13995047fc refactor: simplify pack label, hash merge, diff exit 2026-10-06 07:06:22 +02:00
Abdessamad Derraz 31e86b6db5 refactor: let the retropie core check take none 2026-10-06 07:05:05 +02:00
Abdessamad Derraz da5e95cd0f refactor: extract the alias scope helpers 2026-10-06 07:04:54 +02:00
Abdessamad Derraz 3dce7b5f09 refactor: extract companion extras and the kept filter 2026-10-06 07:03:59 +02:00
Abdessamad Derraz 97ccf9027b refactor: extract emulator archive placement 2026-10-06 07:00:22 +02:00
Abdessamad Derraz 1caf5c4b5e refactor: one mismatch rule for builder and verifier 2026-10-06 06:57:01 +02:00
Abdessamad Derraz acfd80c928 refactor: extract verify listing and resolution steps 2026-10-06 06:50:59 +02:00
Abdessamad Derraz 4d8ea05494 refactor: move the truth steps out of pipeline main 2026-10-06 06:47:56 +02:00
Abdessamad Derraz 3df423e84f refactor: pull mismatch and region steps from manifest 2026-10-06 06:45:45 +02:00
Abdessamad Derraz 8a9924f1d8 refactor: extract retrodeck key matching helpers 2026-10-06 06:40:41 +02:00
Abdessamad Derraz 52fbea5faa refactor: split truth merge into match, fold, create 2026-10-06 06:40:07 +02:00
Abdessamad Derraz 421a7afb3f refactor: split the pin gate from bump_commit 2026-10-06 06:39:02 +02:00
Abdessamad Derraz 0b7acf1e7f refactor: hoist test imports, rank pairs at module level 2026-10-06 06:38:35 +02:00
Abdessamad Derraz c4dab556e7 fix: name only pinned claims as left unserved 2026-10-06 06:33:36 +02:00
Abdessamad Derraz 0390f2d19b fix: accept verified_members in pack manifests 2026-10-06 06:31:10 +02:00
Abdessamad Derraz e6afd06191 chore: regenerate database, manifests and readme 2026-10-06 05:46:44 +02:00
Abdessamad Derraz 03929ddaf0 fix: name each retropie package once per target 2026-10-06 05:33:18 +02:00
Abdessamad Derraz 2b71e47510 fix: give solarus and eka2l1 their own pad mappings 2026-10-06 05:26:54 +02:00
Abdessamad Derraz cd90f46937 fix: redeploy the site on any script it imports 2026-10-06 05:23:27 +02:00
Abdessamad Derraz d02672c17b fix: read retropie targets the way retropie does 2026-10-06 05:22:34 +02:00
Abdessamad Derraz c6ba139493 fix: stop target scrapes on a failed request 2026-10-06 05:19:05 +02:00
Abdessamad Derraz f0bab9766c fix: tell same-name files apart by path in truth 2026-10-06 05:18:07 +02:00
Abdessamad Derraz c55e3af5ac fix: preserve release assets by registered path 2026-10-06 05:13:34 +02:00
Abdessamad Derraz 1c34503f4e fix: one game data list for notes and composition 2026-10-06 05:11:41 +02:00
Abdessamad Derraz 72834837a5 fix: give a targeted export the full truth model 2026-10-06 05:09:45 +02:00
Abdessamad Derraz ae0bbb9d3c fix: fail a truth diff that compared nothing 2026-10-06 05:09:11 +02:00
Abdessamad Derraz e4cc978614 fix: skip schema tests when jsonschema is absent 2026-10-06 05:08:40 +02:00
Abdessamad Derraz f51c3a3fc7 fix: point the retrobat guide at install.ps1 2026-10-06 05:06:15 +02:00
Abdessamad Derraz c62a34b1b2 fix: read hle fallbacks from the platform cores only 2026-10-06 05:06:04 +02:00
Abdessamad Derraz ed18e61580 fix: fail a pack member the collection cannot name 2026-10-06 05:05:14 +02:00
Abdessamad Derraz 2cdb98239e fix: propose retropie names per core, never into or-lists 2026-10-06 05:01:10 +02:00
Abdessamad Derraz 623b0a6d47 fix: keep recalbox notes its own 2026-10-06 05:00:36 +02:00
Abdessamad Derraz 82583fe17a fix: correct one retrodeck revision, not all of them 2026-10-06 05:00:24 +02:00
Abdessamad Derraz 85501c41e8 fix: export one file's identity, never two mixed 2026-10-06 05:00:02 +02:00
Abdessamad Derraz 7273f5c8b9 chore: point seven profiles' refs at their values 2026-10-06 04:59:20 +02:00
Abdessamad Derraz e723c8c1b9 chore: point five profiles' refs at their values 2026-10-06 04:59:20 +02:00
Abdessamad Derraz 4db5866bbe chore: recale wqxemu and emucorex onto head 2026-10-06 04:59:20 +02:00
Abdessamad Derraz dc3a35bdc8 feat: profile visual-pinball hrtf, collect the sofa 2026-10-06 04:59:20 +02:00
Abdessamad Derraz 0c881820c7 chore: recale jazz2-native and linapple onto head 2026-10-06 04:59:20 +02:00
Abdessamad Derraz d839ce0a1c fix: drop cpc firmware regions, a keyboard picks 2026-10-06 04:58:59 +02:00
Abdessamad Derraz 1b885632a6 fix: drop saturn bios regions, the list is fixed 2026-10-06 04:58:59 +02:00
Abdessamad Derraz ad9f834f55 fix: drop pce system card regions, an option picks 2026-10-06 04:58:59 +02:00
Abdessamad Derraz 49e0f83ce9 fix: hold the data dir lock while packing it 2026-10-06 04:56:16 +02:00
Abdessamad Derraz 2b6dbb5e92 fix: choose regions among the files required-only keeps 2026-10-06 04:54:05 +02:00
Abdessamad Derraz 3d31a887cc fix: compare only the full pack to verify 2026-10-06 04:49:21 +02:00
Abdessamad Derraz e3f773dd82 fix: finalize only the packs this run names 2026-10-06 04:48:32 +02:00
Abdessamad Derraz c1b3e1fc33 fix: keep large-file revisions and clean failed fetches 2026-10-06 04:47:10 +02:00
Abdessamad Derraz b3c7e76adf fix: apply required-only to emulator pack archives 2026-10-06 04:46:03 +02:00
Abdessamad Derraz b2208d889e fix: count undistributed split extras with the helper 2026-10-06 04:43:49 +02:00
Abdessamad Derraz af357a2931 fix: give system packs their core extras 2026-10-06 04:42:35 +02:00
Abdessamad Derraz 1b40211366 fix: refuse every flag a quick mode does not read 2026-10-06 04:39:08 +02:00
Abdessamad Derraz a484754c76 chore: recale geolith jg.c refs onto upstream head 2026-10-06 04:37:48 +02:00
Abdessamad Derraz 46268bea47 fix: judge each profile ref by its own repository 2026-10-06 04:37:48 +02:00
Abdessamad Derraz 0fbe99a14a fix: keep cross-named aliases inside their profile 2026-10-06 04:35:35 +02:00
Abdessamad Derraz 16f4c071fe fix: arbitrate slots on the strongest profile proof 2026-10-06 04:32:19 +02:00
Abdessamad Derraz a8415c33c3 fix: key the casefold index on its source dict 2026-10-06 04:30:11 +02:00
Abdessamad Derraz 7e054fbcaf fix: pack windows platforms case-insensitively 2026-10-06 04:29:49 +02:00
Abdessamad Derraz 5784d45531 fix: carry pcsx2 companions under the names it opens 2026-10-06 04:29:16 +02:00
Abdessamad Derraz c526180351 fix: withhold a file only on the frontend digest 2026-10-06 04:21:47 +02:00
Abdessamad Derraz 36f7ee0b2b fix: one agnostic substitute rule for pack and verify 2026-10-06 04:19:40 +02:00
Abdessamad Derraz cf7d9ecb89 fix: carry identity in extras, refile rom b 2026-10-06 04:12:08 +02:00
Abdessamad Derraz ccc51b861b refactor: split the all-variants flag refusals 2026-10-06 03:11:07 +02:00
Abdessamad Derraz 3ae9729143 refactor: move flag refusals out of the main functions 2026-10-06 03:08:35 +02:00
Abdessamad Derraz 26ce416163 chore: regenerate database, manifests and readme 2026-10-06 02:47:55 +02:00
Abdessamad Derraz bd3bcc36ea fix: read accepted revision lists in profile aliases 2026-10-06 02:06:01 +02:00
Abdessamad Derraz f631174c85 test: check every registered platform pack 2026-10-06 01:54:11 +02:00
Abdessamad Derraz 22648e8a5f test: keep validation index on platform cores 2026-10-06 01:49:24 +02:00
Abdessamad Derraz 0de03b5e4c test: pin exact sets in the shipped content ratchets 2026-10-06 01:49:09 +02:00
Abdessamad Derraz 3bd19b9e97 test: fail, not skip, when slot conflicts vanish 2026-10-06 01:48:17 +02:00
Abdessamad Derraz ccf1a1573a fix: read platform hashes as verify does in PR checks 2026-10-06 01:47:48 +02:00
Abdessamad Derraz ca86236c12 refactor: one upstream name index for core lookups 2026-10-06 01:47:16 +02:00
Abdessamad Derraz 994836938c fix: lay out truth with the pack mode rule 2026-10-06 01:43:30 +02:00
Abdessamad Derraz 71cbbd9b21 feat: list retrodeck standalone emulators 2026-10-06 01:43:30 +02:00
Abdessamad Derraz 65c0f5ddc1 fix: apply changed-only to every profile_sync output 2026-10-06 01:42:00 +02:00
Abdessamad Derraz ef16ed2af2 fix: decrypt otp.bin with the standard library 2026-10-06 01:41:27 +02:00
Abdessamad Derraz da0c843bdd fix: default profile report containers to empty 2026-10-06 01:39:55 +02:00
Abdessamad Derraz e32df743d5 fix: refuse targets when their list cannot be read 2026-10-06 01:39:31 +02:00
Abdessamad Derraz 72d3654245 fix: register yaps2 resources, check data dir refs 2026-10-06 01:38:39 +02:00
Abdessamad Derraz bdcf134877 fix: build the database without network calls 2026-10-06 01:37:40 +02:00
Abdessamad Derraz aec1755c61 fix: gate on slot crashes and empty consistency 2026-10-06 01:34:59 +02:00
Abdessamad Derraz 53ee1bfd0e fix: fail the run when a platform pack errors 2026-10-06 01:34:30 +02:00
Abdessamad Derraz d2d88cf6b8 fix: send retropie users to the retropie pack 2026-10-06 01:33:58 +02:00
Abdessamad Derraz fbdee43e6d fix: point pack guides at the path each platform reads 2026-10-06 01:33:33 +02:00
Abdessamad Derraz 284f1aa6b7 fix: dedup core extras on their real destination 2026-10-06 01:32:56 +02:00
Abdessamad Derraz 10f3379751 fix: skip archive members by their yaml key 2026-10-06 01:32:33 +02:00
Abdessamad Derraz 76387d1962 fix: count romset members as held dumps 2026-10-06 01:32:09 +02:00
Abdessamad Derraz 9465a250cc fix: recale pcsx_rearmed bios refs, pal to oceania 2026-10-06 01:31:31 +02:00
Abdessamad Derraz 3bc80b2e06 fix: serve pal psx bios to oceania too 2026-10-06 01:31:27 +02:00
Abdessamad Derraz dcdfe5936e fix: drop fmsx font regions, fonts are options 2026-10-06 01:31:27 +02:00
Abdessamad Derraz ed47f437fc fix: drop prosystem regions, pal is a signal 2026-10-06 01:31:27 +02:00
Abdessamad Derraz 15abbec663 fix: drop o2em regions, the bios is a model 2026-10-06 01:31:27 +02:00
Abdessamad Derraz 077dcda775 fix: drop opera regions, the bios is an option 2026-10-06 01:31:27 +02:00
223 changed files with 106344 additions and 5766 deletions

No files matched your search

+41 -6
View File
@@ -8,11 +8,47 @@ on:
- "emulators/**"
- "provenance/**"
- "wiki/**"
- "scripts/generate_site.py"
- "scripts/generate_readme.py"
- "scripts/validate_site.py"
- "scripts/verify.py"
# Every script the build runs or imports (tests/test_workflow_paths.py).
- "scripts/artifacts.py"
- "scripts/auto_fetch.py"
- "scripts/common.py"
- "scripts/cross_reference.py"
- "scripts/crypto_verify.py"
- "scripts/deterministic_zip.py"
- "scripts/dumpcatalog.py"
- "scripts/generate_pack.py"
- "scripts/generate_readme.py"
- "scripts/generate_site.py"
- "scripts/hashing.py"
- "scripts/largefiles.py"
- "scripts/list_platforms.py"
- "scripts/nativemode.py"
- "scripts/packextras.py"
- "scripts/packpaths.py"
- "scripts/packreadme.py"
- "scripts/packresolve.py"
- "scripts/packverify.py"
- "scripts/profile_sync.py"
- "scripts/provenance_report.py"
- "scripts/refresh_data_dirs.py"
- "scripts/region.py"
- "scripts/release_record.py"
- "scripts/restore_large_files.py"
- "scripts/safeparse.py"
- "scripts/sect233r1.py"
- "scripts/siterender.py"
- "scripts/sitesources.py"
- "scripts/sitewrite.py"
- "scripts/slot.py"
- "scripts/slots.py"
- "scripts/split_pack.py"
- "scripts/truth.py"
- "scripts/upstream.py"
- "scripts/validate_schemas.py"
- "scripts/validate_site.py"
- "scripts/validation.py"
- "scripts/verify.py"
- "scripts/ziptools.py"
- "schemas/**"
- "tests/**"
- "docs_assets/**"
@@ -20,7 +56,6 @@ on:
- "install.py"
- "database.json"
- "release.json"
- "scripts/release_record.py"
- "mkdocs.yml"
- ".github/workflows/deploy-site.yml"
workflow_dispatch:
@@ -49,7 +84,7 @@ jobs:
# mkdocs-material >= 9.7.5 caps mkdocs < 2; the upper bound keeps a major
# theme release from changing the site without a deliberate bump here.
- run: pip install pyyaml jsonschema==4.26.0 "mkdocs-material>=9.7.5,<10" "pymdown-extensions>=10.14"
- run: pip install pyyaml "jsonschema[format-nongpl]==4.26.0" "mkdocs-material>=9.7.5,<10" "pymdown-extensions>=10.14"
- name: Validate data contracts
run: python scripts/validate_schemas.py
+2 -2
View File
@@ -112,7 +112,7 @@ jobs:
python-version: "3.12"
- name: Install dependencies
run: pip install pyyaml jsonschema==4.26.0
run: pip install pyyaml "jsonschema[format-nongpl]==4.26.0"
- name: Validate platform configs and emulator profiles
run: python scripts/validate_schemas.py --source-only
@@ -127,7 +127,7 @@ jobs:
python-version: "3.12"
- name: Install dependencies
run: pip install pyyaml jsonschema==4.26.0
run: pip install pyyaml "jsonschema[format-nongpl]==4.26.0"
# The exporter fidelity cases compare what we hand back against the
# file each platform publishes, so they need those files. They skip
+17 -17
View File
@@ -55,9 +55,9 @@ Every release ships `SHA256SUMS.txt` and a detached signature of it, checkable a
| RetroBat | 1,466 | 4.4 GB | `bios/` | [Download](../../releases/latest) |
| RetroDECK | 3,519 | 6.2 GB | `~/retrodeck/` | [Download](../../releases/latest) |
| RetroPie * | 4,525 | 5.5 GB | `~/RetroPie/BIOS/` | [Download](../../releases/latest) |
| RomM | 617 | 1.3 GB | `bios/{platform_slug}/` | [Download](../../releases/latest) |
| RomM | 617 | 1.3 GB | `library/bios/` | [Download](../../releases/latest) |
The RetroDECK pack already contains its own `bios/` folder, so it extracts into `~/retrodeck/` rather than into the BIOS folder.
The RetroDECK pack already carries its own `bios/` folder, so it extracts into `~/retrodeck/` rather than into the BIOS folder.
\* Archived: the configuration is kept and packs are still built, but upstream is no longer scraped on a schedule.
@@ -72,9 +72,9 @@ Each file is checked the way your platform checks it. Most compare a checksum, t
- **12 platforms** supported with platform-specific verification
- **506 emulators** profiled from source (RetroArch cores + standalone)
- **546 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
- **18,988 files in the collection**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 5,258 system files, 2,810 arcade ROM sets, 10,920 game and engine data files. That is every platform and emulator together, so no pack holds them all: each carries what its own emulators load, counted in the download table
- **562 of 5,258 system files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC); arcade sets and engine data fall outside what those catalogs index
- **16670 MB** total collection size
- **18,997 files in the collection**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 5,261 system files, 2,808 arcade ROM sets, 10,928 game and engine data files. That is every platform and emulator together, so no pack holds them all: each carries what its own emulators load, counted in the download table
- **562 of 5,261 system files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC); arcade sets and engine data fall outside what those catalogs index
- **16677 MB** total collection size
## Supported systems
@@ -86,18 +86,18 @@ Full list with per-file details: **[https://abdess.github.io/retrobios/](https:/
| Platform | On its BIOS list | Files its emulators load | Checked by |
|----------|-----------------:|-------------------------:|------------|
| Batocera | 353/353 | 12,274/12,704 | MD5 hash |
| BizHawk | 118/118 | 649/650 | SHA1 hash |
| EmuDeck | 168/168 | 381/383 | MD5 hash |
| Lakka | 527/527 | 5,263/5,293 | file presence |
| Batocera | 353/353 | 12,306/12,737 | MD5 hash |
| BizHawk | 118/118 | 806/807 | SHA1 hash |
| EmuDeck | 168/168 | 431/433 | MD5 hash |
| Lakka | 527/527 | 5,264/5,294 | file presence |
| MiSTer FPGA | 81/81 | - | MD5 hash |
| ROCKNIX | 38/38 | 5,700/5,730 | MD5 hash |
| Recalbox | 351/351 | 2,727/2,735 | MD5 hash |
| RetroArch | 527/527 | 5,263/5,293 | file presence |
| RetroBat | 348/348 | 11,748/12,178 | MD5 hash |
| RetroDECK | 2,008/2,008 | 5,280/5,330 | MD5 hash |
| RetroPie * | 527/527 | 9,182/9,324 | file presence |
| RomM | 381/381 | 624/630 | MD5 hash |
| ROCKNIX | 38/38 | 5,698/5,728 | MD5 hash |
| Recalbox | 351/351 | 2,730/2,738 | MD5 hash |
| RetroArch | 527/527 | 5,264/5,294 | file presence |
| RetroBat | 348/348 | 11,889/12,319 | MD5 hash |
| RetroDECK | 2,008/2,008 | 5,407/5,457 | MD5 hash |
| RetroPie * | 527/527 | 9,183/9,325 | file presence |
| RomM | 381/381 | 751/757 | MD5 hash |
Each fraction is what the pack has over what is needed, counting required and optional files alike since both ship. The first column is the BIOS list the platform publishes. The second counts files its emulators load that this list never mentions, found by reading their source code, and it is routinely several times larger. A short fraction means files are still missing, and they are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/).
That second number is a floor, not a ceiling: an emulator that accepts any file handed to it names none in its code, so nothing there can be counted.
@@ -180,4 +180,4 @@ The scripts and tooling are released under the [MIT License](LICENSE).
The BIOS and firmware files are not covered by that license: they are third-party system software, preserved and provided for personal backup, archival, and interoperability with emulation software. [NOTICE](NOTICE) sets out their status and how to ask for a file to be removed.
The reasoning, and where it is weakest, is in the [FAQ](https://abdess.github.io/retrobios/wiki/faq/#is-this-legal).
*Auto-generated on 2026-10-05T23:10:58Z*
*Auto-generated on 2026-10-06T11:05:39Z*
File renamed without changes.
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Binary file not shown.
@@ -0,0 +1,498 @@
// SPDX-FileCopyrightText: 2002-2025 PCSX2 Dev Team
// SPDX-License-Identifier: GPL-3.0+
#ifndef FXAA_HLSL
#define FXAA_HLSL 0
#endif
#ifndef FXAA_GLSL_130
#define FXAA_GLSL_130 0
#endif
#ifndef FXAA_GLSL_VK
#define FXAA_GLSL_VK 0
#endif
#define UHQ_FXAA 1 //High Quality Fast Approximate Anti Aliasing. Adapted for GS from Timothy Lottes FXAA 3.11.
#define FxaaSubpixMax 0.0 //[0.00 to 1.00] Amount of subpixel aliasing removal. 0.00: Edge only antialiasing (no blurring)
#define FxaaEarlyExit 1 //[0 or 1] Use Fxaa early exit pathing. When disabled, the entire scene is antialiased(FSAA). 0 is off, 1 is on.
/*------------------------------------------------------------------------------
[GLOBALS|FUNCTIONS]
------------------------------------------------------------------------------*/
#if (FXAA_GLSL_130 == 1)
in vec2 PSin_t;
layout(location = 0) out vec4 SV_Target0;
layout(binding = 0) uniform sampler2D TextureSampler;
#elif (FXAA_GLSL_VK == 1)
layout(location = 0) in vec2 PSin_t;
layout(location = 0) out vec4 SV_Target0;
layout(set = 0, binding = 0) uniform sampler2D TextureSampler;
#elif (FXAA_HLSL == 1)
Texture2D Texture : register(t0);
SamplerState TextureSampler : register(s0);
struct VS_INPUT
{
float4 p : POSITION;
float2 t : TEXCOORD0;
};
struct VS_OUTPUT
{
float4 p : SV_Position;
float2 t : TEXCOORD0;
};
struct PS_OUTPUT
{
float4 c : SV_Target0;
};
#elif defined(__METAL_VERSION__)
static constexpr sampler MAIN_SAMPLER(coord::normalized, address::clamp_to_edge, filter::linear);
#endif
/*------------------------------------------------------------------------------
[FXAA CODE SECTION]
------------------------------------------------------------------------------*/
#if (FXAA_HLSL == 1)
struct FxaaTex { SamplerState smpl; Texture2D tex; };
#define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)
#define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)
#define FxaaDiscard clip(-1)
#define FxaaSat(x) saturate(x)
#elif (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1)
#define int2 ivec2
#define float2 vec2
#define float3 vec3
#define float4 vec4
#define FxaaDiscard discard
#define FxaaSat(x) clamp(x, 0.0, 1.0)
#define FxaaTex sampler2D
#define FxaaTexTop(t, p) textureLod(t, p, 0.0)
#define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)
#elif defined(__METAL_VERSION__)
#define FxaaTex texture2d<float>
#define FxaaTexTop(t, p) t.sample(MAIN_SAMPLER, p)
#define FxaaTexOff(t, p, o, r) t.sample(MAIN_SAMPLER, p, o)
#define FxaaDiscard discard_fragment()
#define FxaaSat(x) saturate(x)
#endif
#define FxaaEdgeThreshold 0.063
#define FxaaEdgeThresholdMin 0.00
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 2.0
#define FXAA_QUALITY_P5 2.0
#define FXAA_QUALITY_P6 2.0
#define FXAA_QUALITY_P7 2.0
#define FXAA_QUALITY_P8 2.0
#define FXAA_QUALITY_P9 2.0
#define FXAA_QUALITY_P10 4.0
#define FXAA_QUALITY_P11 8.0
#define FXAA_QUALITY_P12 8.0
/*------------------------------------------------------------------------------
[GAMMA PREPASS CODE SECTION]
------------------------------------------------------------------------------*/
float RGBLuminance(float3 color)
{
const float3 lumCoeff = float3(0.2126729, 0.7151522, 0.0721750);
return dot(color.rgb, lumCoeff);
}
float3 RGBGammaToLinear(float3 color, float gamma)
{
color = FxaaSat(color);
color.r = (color.r <= 0.0404482362771082) ?
color.r / 12.92 : pow((color.r + 0.055) / 1.055, gamma);
color.g = (color.g <= 0.0404482362771082) ?
color.g / 12.92 : pow((color.g + 0.055) / 1.055, gamma);
color.b = (color.b <= 0.0404482362771082) ?
color.b / 12.92 : pow((color.b + 0.055) / 1.055, gamma);
return color;
}
float3 LinearToRGBGamma(float3 color, float gamma)
{
color = FxaaSat(color);
color.r = (color.r <= 0.00313066844250063) ?
color.r * 12.92 : 1.055 * pow(color.r, 1.0 / gamma) - 0.055;
color.g = (color.g <= 0.00313066844250063) ?
color.g * 12.92 : 1.055 * pow(color.g, 1.0 / gamma) - 0.055;
color.b = (color.b <= 0.00313066844250063) ?
color.b * 12.92 : 1.055 * pow(color.b, 1.0 / gamma) - 0.055;
return color;
}
float4 PreGammaPass(float4 color)
{
const float GammaConst = 2.233;
color.rgb = RGBGammaToLinear(color.rgb, GammaConst);
color.rgb = LinearToRGBGamma(color.rgb, GammaConst);
color.a = RGBLuminance(color.rgb);
return color;
}
/*------------------------------------------------------------------------------
[FXAA CODE SECTION]
------------------------------------------------------------------------------*/
float FxaaLuma(float4 rgba)
{
rgba.w = RGBLuminance(rgba.xyz);
return rgba.w;
}
float4 FxaaPixelShader(float2 pos, FxaaTex tex, float2 fxaaRcpFrame, float fxaaSubpix, float fxaaEdgeThreshold, float fxaaEdgeThresholdMin)
{
float2 posM = pos;
float4 rgbyM = FxaaTexTop(tex, posM);
rgbyM.w = RGBLuminance(rgbyM.xyz);
#define lumaM rgbyM.w
float lumaS = FxaaLuma(FxaaTexOff(tex, posM, int2( 0, 1), fxaaRcpFrame.xy));
float lumaE = FxaaLuma(FxaaTexOff(tex, posM, int2( 1, 0), fxaaRcpFrame.xy));
float lumaN = FxaaLuma(FxaaTexOff(tex, posM, int2( 0,-1), fxaaRcpFrame.xy));
float lumaW = FxaaLuma(FxaaTexOff(tex, posM, int2(-1, 0), fxaaRcpFrame.xy));
float maxSM = max(lumaS, lumaM);
float minSM = min(lumaS, lumaM);
float maxESM = max(lumaE, maxSM);
float minESM = min(lumaE, minSM);
float maxWN = max(lumaN, lumaW);
float minWN = min(lumaN, lumaW);
float rangeMax = max(maxWN, maxESM);
float rangeMin = min(minWN, minESM);
float range = rangeMax - rangeMin;
float rangeMaxScaled = rangeMax * fxaaEdgeThreshold;
float rangeMaxClamped = max(fxaaEdgeThresholdMin, rangeMaxScaled);
#if (FxaaEarlyExit == 1)
// Potential optimization, early exit.
if (range < rangeMaxClamped)
return rgbyM;
#endif
float lumaNW = FxaaLuma(FxaaTexOff(tex, posM, int2(-1,-1), fxaaRcpFrame.xy));
float lumaSE = FxaaLuma(FxaaTexOff(tex, posM, int2( 1, 1), fxaaRcpFrame.xy));
float lumaNE = FxaaLuma(FxaaTexOff(tex, posM, int2( 1,-1), fxaaRcpFrame.xy));
float lumaSW = FxaaLuma(FxaaTexOff(tex, posM, int2(-1, 1), fxaaRcpFrame.xy));
float lumaNS = lumaN + lumaS;
float lumaWE = lumaW + lumaE;
float subpixRcpRange = 1.0/range;
float subpixNSWE = lumaNS + lumaWE;
float edgeHorz1 = (-2.0 * lumaM) + lumaNS;
float edgeVert1 = (-2.0 * lumaM) + lumaWE;
float lumaNESE = lumaNE + lumaSE;
float lumaNWNE = lumaNW + lumaNE;
float edgeHorz2 = (-2.0 * lumaE) + lumaNESE;
float edgeVert2 = (-2.0 * lumaN) + lumaNWNE;
float lumaNWSW = lumaNW + lumaSW;
float lumaSWSE = lumaSW + lumaSE;
float edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);
float edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);
float edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;
float edgeVert3 = (-2.0 * lumaS) + lumaSWSE;
float edgeHorz = abs(edgeHorz3) + edgeHorz4;
float edgeVert = abs(edgeVert3) + edgeVert4;
float subpixNWSWNESE = lumaNWSW + lumaNESE;
float lengthSign = fxaaRcpFrame.x;
bool horzSpan = edgeHorz >= edgeVert;
float subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;
if(!horzSpan) lumaN = lumaW;
if(!horzSpan) lumaS = lumaE;
if(horzSpan) lengthSign = fxaaRcpFrame.y;
float subpixB = (subpixA * (1.0/12.0)) - lumaM;
float gradientN = lumaN - lumaM;
float gradientS = lumaS - lumaM;
float lumaNN = lumaN + lumaM;
float lumaSS = lumaS + lumaM;
bool pairN = abs(gradientN) >= abs(gradientS);
float gradient = max(abs(gradientN), abs(gradientS));
if(pairN) lengthSign = -lengthSign;
float subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);
float2 posB;
posB.x = posM.x;
posB.y = posM.y;
float2 offNP;
offNP.x = (!horzSpan) ? 0.0 : fxaaRcpFrame.x;
offNP.y = ( horzSpan) ? 0.0 : fxaaRcpFrame.y;
if(!horzSpan) posB.x += lengthSign * 0.5;
if( horzSpan) posB.y += lengthSign * 0.5;
float2 posN;
posN.x = posB.x - offNP.x * FXAA_QUALITY_P0;
posN.y = posB.y - offNP.y * FXAA_QUALITY_P0;
float2 posP;
posP.x = posB.x + offNP.x * FXAA_QUALITY_P0;
posP.y = posB.y + offNP.y * FXAA_QUALITY_P0;
float subpixD = ((-2.0)*subpixC) + 3.0;
float lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));
float subpixE = subpixC * subpixC;
float lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));
if(!pairN) lumaNN = lumaSS;
float gradientScaled = gradient * 1.0/4.0;
float lumaMM = lumaM - lumaNN * 0.5;
float subpixF = subpixD * subpixE;
bool lumaMLTZero = lumaMM < 0.0;
lumaEndN -= lumaNN * 0.5;
lumaEndP -= lumaNN * 0.5;
bool doneN = abs(lumaEndN) >= gradientScaled;
bool doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1;
bool doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12;
}}}}}}}}}}}
float dstN = posM.x - posN.x;
float dstP = posP.x - posM.x;
if(!horzSpan) dstN = posM.y - posN.y;
if(!horzSpan) dstP = posP.y - posM.y;
bool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;
float spanLength = (dstP + dstN);
bool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;
float spanLengthRcp = 1.0/spanLength;
bool directionN = dstN < dstP;
float dst = min(dstN, dstP);
bool goodSpan = directionN ? goodSpanN : goodSpanP;
float subpixG = subpixF * subpixF;
float pixelOffset = (dst * (-spanLengthRcp)) + 0.5;
float subpixH = subpixG * fxaaSubpix;
float pixelOffsetGood = goodSpan ? pixelOffset : 0.0;
float pixelOffsetSubpix = max(pixelOffsetGood, subpixH);
if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;
if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;
return float4(FxaaTexTop(tex, posM).xyz, lumaM);
}
#if (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1)
float4 FxaaPass(float4 FxaaColor, float2 uv0)
#elif (FXAA_HLSL == 1)
float4 FxaaPass(float4 FxaaColor : COLOR0, float2 uv0 : TEXCOORD0)
#elif defined(__METAL_VERSION__)
float4 FxaaPass(float4 FxaaColor, float2 uv0, texture2d<float> tex)
#endif
{
#if (FXAA_HLSL == 1)
FxaaTex tex;
tex.tex = Texture;
tex.smpl = TextureSampler;
float2 PixelSize;
Texture.GetDimensions(PixelSize.x, PixelSize.y);
FxaaColor = FxaaPixelShader(uv0, tex, 1.0/PixelSize.xy, FxaaSubpixMax, FxaaEdgeThreshold, FxaaEdgeThresholdMin);
#elif (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1)
vec2 PixelSize = vec2(textureSize(TextureSampler, 0));
FxaaColor = FxaaPixelShader(uv0, TextureSampler, 1.0/PixelSize.xy, FxaaSubpixMax, FxaaEdgeThreshold, FxaaEdgeThresholdMin);
#elif defined(__METAL_VERSION__)
float2 PixelSize = float2(tex.get_width(), tex.get_height());
FxaaColor = FxaaPixelShader(uv0, tex, 1.f/PixelSize, FxaaSubpixMax, FxaaEdgeThreshold, FxaaEdgeThresholdMin);
#endif
return FxaaColor;
}
/*------------------------------------------------------------------------------
[MAIN() & COMBINE PASS CODE SECTION]
------------------------------------------------------------------------------*/
#if (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1)
void main()
{
vec4 color = texture(TextureSampler, PSin_t);
color = PreGammaPass(color);
color = FxaaPass(color, PSin_t);
SV_Target0 = float4(color.rgb, 1.0);
}
#elif (FXAA_HLSL == 1)
PS_OUTPUT main(VS_OUTPUT input)
{
PS_OUTPUT output;
float4 color = Texture.Sample(TextureSampler, input.t);
color = PreGammaPass(color);
color = FxaaPass(color, input.t);
output.c = float4(color.rgb, 1.0);
return output;
}
// Metal main function in in fxaa.metal
#endif
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,470 @@
// SPDX-FileCopyrightText: 2002-2026 PCSX2 Dev Team
// SPDX-License-Identifier: GPL-3.0+
//#version 420 // Keep it for text editor detection
layout(std140, binding = 1) uniform cb20
{
vec2 VertexScale;
vec2 VertexOffset;
vec2 TextureScale;
vec2 TextureOffset;
vec2 PointSize;
uint MaxDepth;
float LineAA1Width;
};
#ifdef VERTEX_SHADER
#ifndef VS_EXPAND_NONE
#define VS_EXPAND_NONE 0
#define VS_EXPAND_POINT 1
#define VS_EXPAND_LINE 2
#define VS_EXPAND_SPRITE 3
#define VS_EXPAND_LINE_AA1 4
#define VS_EXPAND_TRIANGLE_AA1 5
#endif
out SHADER
{
vec4 t_float;
vec4 t_int;
#if VS_IIP != 0
vec4 c;
#else
flat vec4 c;
#endif
float inv_cov; // We use the inverse to make it simpler to interpolate.
flat uint interior; // 1 for triangle interior; 0 for edge.
} VSout;
const float exp_min32 = exp2(-32.0f);
#if VS_EXPAND == VS_EXPAND_NONE
layout(location = 0) in vec2 i_st;
layout(location = 2) in vec4 i_c;
layout(location = 3) in float i_q;
layout(location = 4) in uvec2 i_p;
layout(location = 5) in uint i_z;
layout(location = 6) in uvec2 i_uv;
layout(location = 7) in vec4 i_f;
void texture_coord()
{
vec2 uv = vec2(i_uv) - TextureOffset;
vec2 st = i_st - TextureOffset;
// Float coordinate
VSout.t_float.xy = st;
VSout.t_float.w = i_q;
// Integer coordinate => normalized
VSout.t_int.xy = uv * TextureScale;
#if VS_FST
// Integer coordinate => integral
VSout.t_int.zw = uv;
#else
// Some games uses float coordinate for post-processing effect
VSout.t_int.zw = st / TextureScale;
#endif
}
void vs_main()
{
// Clamp to max depth, gs doesn't wrap
highp uint z = min(i_z, MaxDepth);
// pos -= 0.05 (1/320 pixel) helps avoiding rounding problems (integral part of pos is usually 5 digits, 0.05 is about as low as we can go)
// example: ceil(afterseveralvertextransformations(y = 133)) => 134 => line 133 stays empty
// input granularity is 1/16 pixel, anything smaller than that won't step drawing up/left by one pixel
// example: 133.0625 (133 + 1/16) should start from line 134, ceil(133.0625 - 0.05) still above 133
gl_Position.xy = vec2(i_p) - vec2(0.05f, 0.05f);
gl_Position.xy = gl_Position.xy * VertexScale - VertexOffset;
#if HAS_CLIP_CONTROL
gl_Position.z = float(z) * exp_min32;
#else
gl_Position.z = (float(z) * exp_min32) * 2.0f - 1.0f;
#endif
gl_Position.w = 1.0f;
texture_coord();
VSout.c = i_c;
VSout.t_float.z = i_f.x; // pack for with texture
#if VS_POINT_SIZE
gl_PointSize = PointSize.x;
#endif
}
#else // VS_EXPAND
struct RawVertex
{
vec2 ST;
uint RGBA;
float Q;
uint XY;
uint Z;
uint UV;
uint FOG;
};
layout(std140, binding = 4) uniform cb22
{
uint BaseVertex;
uint BaseIndex;
uint pad_cb22_0;
uint pad_cb22_1;
};
layout(std140, binding = 2) readonly buffer VertexBuffer {
RawVertex vertex_buffer[];
};
// Warning: use std430 instead of std140 so that the ints are tightly packed.
layout(std430, binding = 3) readonly buffer IndexBuffer {
uint index_buffer[];
};
struct ProcessedVertex
{
vec4 p;
vec4 t_float;
vec4 t_int;
vec4 c;
};
uint load_index(uint _i)
{
uint i = _i + BaseIndex;
// i is even => load lower 16 bits; i odd => load upper 16 bits.
uint shift = (i & 1u) << 4u;
return (index_buffer[i >> 1u] >> shift) & 0xFFFFu;
}
ProcessedVertex load_vertex(uint index)
{
RawVertex rvtx = vertex_buffer[BaseVertex + index];
vec2 i_st = rvtx.ST;
vec4 i_c = vec4(uvec4(bitfieldExtract(rvtx.RGBA, 0, 8), bitfieldExtract(rvtx.RGBA, 8, 8),
bitfieldExtract(rvtx.RGBA, 16, 8), bitfieldExtract(rvtx.RGBA, 24, 8)));
float i_q = rvtx.Q;
uvec2 i_p = uvec2(bitfieldExtract(rvtx.XY, 0, 16), bitfieldExtract(rvtx.XY, 16, 16));
uint i_z = rvtx.Z;
uvec2 i_uv = uvec2(bitfieldExtract(rvtx.UV, 0, 16), bitfieldExtract(rvtx.UV, 16, 16));
vec4 i_f = unpackUnorm4x8(rvtx.FOG);
ProcessedVertex vtx;
uint z = min(i_z, MaxDepth);
vtx.p.xy = vec2(i_p) - vec2(0.05f, 0.05f);
vtx.p.xy = vtx.p.xy * VertexScale - VertexOffset;
#if HAS_CLIP_CONTROL
vtx.p.z = float(z) * exp_min32;
#else
vtx.p.z = (float(z) * exp_min32) * 2.0f - 1.0f;
#endif
vtx.p.w = 1.0f;
vec2 uv = vec2(i_uv) - TextureOffset;
vec2 st = i_st - TextureOffset;
vtx.t_float.xy = st;
vtx.t_float.w = i_q;
vtx.t_int.xy = uv * TextureScale;
#if VS_FST
vtx.t_int.zw = uv;
#else
vtx.t_int.zw = st / TextureScale;
#endif
vtx.c = i_c;
vtx.t_float.z = i_f.x;
return vtx;
}
// Convert XY from NDC to GS pixel coordinates (i.e. 1.0 = 1 GS pixel).
vec2 get_xy_unscaled(vec2 xy)
{
return round(xy / VertexScale) / 16.0f;
}
// Get the XY deltas in GS pixel coordinates, using first vertex as the origin.
mat2 get_xy_deltas_unscaled(ProcessedVertex v0, ProcessedVertex v1, ProcessedVertex v2)
{
vec2 xy0 = get_xy_unscaled(v0.p.xy);
vec2 xy1 = get_xy_unscaled(v1.p.xy);
vec2 xy2 = get_xy_unscaled(v2.p.xy);
return mat2(xy1 - xy0, xy2 - xy0);
}
// Get the AA1 outward expand direction to the edge formed by the first two vertices.
// This is up or down for shallow (X dominant) edges, and right or left for steep (Y dominant) edges.
// Similar expansion to line AA1 except instead of expanding on both sides of the line,
// expand on on the side towards the outside of the triangle.
vec2 get_aa1_triangle_expand_dir(ProcessedVertex v0, ProcessedVertex v1, ProcessedVertex v2)
{
mat2 xy_deltas = get_xy_deltas_unscaled(v0, v1, v2);
vec2 line_delta = xy_deltas[0];
vec2 line_opposite = xy_deltas[1];
vec2 line_normal = vec2(line_delta.y, -line_delta.x);
vec2 line_expand = abs(line_delta.x) >= abs(line_delta.y) ? vec2(0.0f, 1.0f) : vec2(1.0f, 0.0f);
if ((dot(line_expand, line_normal) >= 0.0f) == (dot(line_opposite, line_normal) >= 0.0f))
{
// Expand direction point towards the interior so flip it.
line_expand = -line_expand;
}
return line_expand;
}
mat2 get_inverse(mat2 mat, float det)
{
return mat2(mat[1][1], -mat[0][1], -mat[1][0], mat[0][0]) * (1.0f / det);
}
// Extrapolate triangle attributes from the first vertex along the given direction.
// dp_mat is derived from the input vertices, it is passed in to avoid recomputing.
void extrapolate_aa1_triangle_edge(inout ProcessedVertex v0, ProcessedVertex v1, ProcessedVertex v2, mat2 dp_mat, vec2 dp)
{
// Get texture deltas
#if VS_TME
#if VS_FST
mat2 dt = mat2(v1.t_int.zw - v0.t_int.zw, v2.t_int.zw - v0.t_int.zw);
#else
mat2 dt = mat2(v1.t_float.xy - v0.t_float.xy, v2.t_float.xy - v0.t_float.xy);
#endif
#endif
// Get color delta if interpolating
#if VS_IIP
mat2x4 dc = mat2x4(v1.c - v0.c, v2.c - v0.c);
#endif
vec2 dz = vec2(v1.p.z - v0.p.z, v2.p.z - v0.p.z); // Z deltas
vec2 df = vec2(v1.t_float.z - v0.t_float.z, v2.t_float.z - v0.t_float.z); // Fog deltas
vec2 dq = vec2(v1.t_float.w - v0.t_float.w, v2.t_float.w - v0.t_float.w); // Q deltas
// To prevent unstable extrapolation, do not extrapolate if the
// minimum perpendicular length of the triangle is < 2 pixels.
float dp_det = determinant(dp_mat); // Twice signed triangle area.
float len0 = length(dp_mat[0]);
float len1 = length(dp_mat[1]);
float len2 = length(dp_mat[1] - dp_mat[0]);
float min_perp_length = abs(dp_det) / max(max(len0, len1), len2);
// Get the position -> barycentric weight matrix
mat2 inv_dp_mat = get_inverse(dp_mat, dp_det);
vec2 weights = min_perp_length < 2.0f ? vec2(0) : inv_dp_mat * dp;
v0.p.xy += dp * PointSize; // Extrapolate position
// Extrapolate texture coords
#if VS_TME
#if VS_FST
v0.t_int.zw += dt * weights;
v0.t_int.xy = v0.t_int.zw * TextureScale;
#else
v0.t_float.xy += dt * weights;
v0.t_int.zw = v0.t_float.xy / TextureScale;
v0.t_float.w += dot(dq, weights);
#endif
#endif
// Extrapolate and clamp color
#if VS_IIP
v0.c += dc * weights;
v0.c = clamp(v0.c, vec4(0), vec4(255));
#endif
v0.p.z += dot(dz, weights); // Extrapolate depth
v0.t_float.z += dot(df, weights); // Extrapolate fog
}
void main()
{
ProcessedVertex vtx;
uint vid = uint(gl_VertexID);
#if VS_EXPAND == VS_EXPAND_POINT
vtx = load_vertex(vid >> 2);
vtx.p.x += ((vid & 1u) != 0u) ? PointSize.x : 0.0f;
vtx.p.y += ((vid & 2u) != 0u) ? PointSize.y : 0.0f;
#elif (VS_EXPAND == VS_EXPAND_LINE) || (VS_EXPAND == VS_EXPAND_LINE_AA1)
uint vid_base = vid >> 2;
bool is_bottom = (vid & 2u) != 0u;
bool is_right = (vid & 1u) != 0u;
uint vid_other = is_bottom ? vid_base - 1u : vid_base + 1u;
vtx = load_vertex(vid_base);
ProcessedVertex other = load_vertex(vid_other);
// Use bottom minus top for delta regardless of which vertex we are expanding.
vec2 line_delta = is_bottom ? (vtx.p.xy - other.p.xy) : (other.p.xy - vtx.p.xy);
vec2 line_vector = normalize(line_delta / VertexScale);
vec2 line_expand = vec2(line_vector.y, -line_vector.x);
#if VS_EXPAND == VS_EXPAND_LINE_AA1
line_expand *= 2.0f * LineAA1Width;
#endif
vec2 line_width = (line_expand * PointSize) / 2.0f;
vec2 offset = is_right ? line_width : -line_width;
vtx.p.xy += offset;
#if VS_EXPAND == VS_EXPAND_LINE_AA1
VSout.inv_cov = is_right ? 1.0f : -1.0f;
#endif
// Lines will be run as (0 1 2) (1 2 3)
// This means that both triangles will have a point based off the top line point as their first point
// So we don't have to do anything for !IIP
#elif VS_EXPAND == VS_EXPAND_SPRITE
// Sprite points are always in pairs
uint vid_base = vid >> 1;
uint vid_lt = vid_base & ~1u;
uint vid_rb = vid_base | 1u;
ProcessedVertex lt = load_vertex(vid_lt);
ProcessedVertex rb = load_vertex(vid_rb);
vtx = rb;
bool is_right = ((vid & 1u) != 0u);
vtx.p.x = is_right ? lt.p.x : vtx.p.x;
vtx.t_float.x = is_right ? lt.t_float.x : vtx.t_float.x;
vtx.t_int.xz = is_right ? lt.t_int.xz : vtx.t_int.xz;
bool is_bottom = ((vid & 2u) != 0u);
vtx.p.y = is_bottom ? lt.p.y : vtx.p.y;
vtx.t_float.y = is_bottom ? lt.t_float.y : vtx.t_float.y;
vtx.t_int.yw = is_bottom ? lt.t_int.yw : vtx.t_int.yw;
#elif VS_EXPAND == VS_EXPAND_TRIANGLE_AA1
// Triangles with AA1 are expanded as follows:
// - Vertices 0-2: Interior of triangle (1 triangle).
// - Vertices 3-8: First edge expanded (2 triangles).
// - Vertices 9-14: Second edge expanded (2 triangles).
// - Vertices 15-20: Third edge expanded (2 triangles).
// - Vertices 21-26: First corner cap (2 triangles).
// - Vertices 27-32: Second corner cap (2 triangles).
// - Vertices 33-38: Third corner cap (2 triangles).
uint prim_id = vid / 39u;
uint prim_offset = vid - 39u * prim_id; // range: 0-38
bool interior = prim_offset < 3u;
bool edge = 3u <= prim_offset && prim_offset < 21u;
if (interior)
{
vtx = load_vertex(load_index(3u * prim_id + prim_offset));
VSout.inv_cov = 0.0f; // Full coverage
VSout.interior = 1u;
}
else if (edge)
{
// Vertex indices for this edge. We need all 3 for determining exterior/interior.
uint prim_offset_edges = prim_offset - 3u; // range: 0-17
uint i0 = prim_offset_edges / 6u;
uint i1 = (i0 >= 2u) ? i0 - 2u : i0 + 1u;
uint i2 = (i0 >= 1u) ? i0 - 1u : i0 + 2u;
uint edge_offset = prim_offset_edges - 6u * i0; // range: 0-5
// Note: order of top/bottom, inside/outside is arbitrary,
// as long as it assembles into two triangles forming a quad.
bool is_bottom = (2u <= edge_offset) && (edge_offset <= 4u);
bool is_outside = (edge_offset & 1u) != 0u;
vtx = load_vertex(load_index(3u * prim_id + (is_bottom ? i1 : i0)));
ProcessedVertex other = load_vertex(load_index(3u * prim_id + (is_bottom ? i0 : i1)));
ProcessedVertex opposite = load_vertex(load_index(3u * prim_id + i2));
mat2 pos_deltas = get_xy_deltas_unscaled(vtx, other, opposite);
vec2 expand_dir = is_outside ? get_aa1_triangle_expand_dir(vtx, other, opposite) : vec2(0);
// Do actual extrapolation, or no-op if expand_dir == 0.
extrapolate_aa1_triangle_edge(vtx, other, opposite, pos_deltas, expand_dir);
VSout.inv_cov = is_outside ? 1.0f : 0.0f; // No coverage on outside, otherwise full.
VSout.interior = 0u;
}
else // Corner cap
{
// Vertex indices for this cap. We need all 3 for determining exterior/interior.
uint prim_offset_cap = prim_offset - 21u; // range: 0-17
uint i0 = prim_offset_cap / 6u;
uint i1 = (i0 >= 2u) ? i0 - 2u : i0 + 1u;
uint i2 = (i0 >= 1u) ? i0 - 1u : i0 + 2u;
uint cap_offset = prim_offset_cap - 6u * i0; // range: 0-5
bool is_near_corner = cap_offset == 0u || cap_offset == 3u;
bool is_far_corner = cap_offset == 2u || cap_offset == 5u;
bool is_first_tri = cap_offset < 3u;
// First triangle is on the side of vertex i1 and second is on the side of vertex i2.
vtx = load_vertex(load_index(3u * prim_id + i0));
ProcessedVertex other = load_vertex(load_index(3u * prim_id + (is_first_tri ? i1 : i2)));
ProcessedVertex opposite = load_vertex(load_index(3u * prim_id + (is_first_tri ? i2 : i1)));
mat2 pos_deltas = get_xy_deltas_unscaled(vtx, other, opposite);
// Get the edge expansion directions of both incident edges.
vec2 edge_expand_dir_0 = get_aa1_triangle_expand_dir(vtx, other, opposite);
vec2 edge_expand_dir_1 = get_aa1_triangle_expand_dir(vtx, opposite, other);
// Check if the corner is already filled by the expanded edges.
// This happens if the expand directions are the same.
// If so we output a degenerate triangle at this corner.
bool corner_filled = all(equal(edge_expand_dir_0, edge_expand_dir_1));
// Nothing if corner is filled, otherwise opposite to the bisector of the corner angle.
vec2 far_corner_dir = corner_filled ? vec2(0) : -normalize((pos_deltas[0] + pos_deltas[1]) / 2.0f);
// Determine the expand direction.
vec2 expand_dir = is_near_corner ? vec2(0) : // No extrapolation
is_far_corner ? far_corner_dir : // Opposite to the angle bisector of corner
edge_expand_dir_0; // Standard AA1 edge expansion
// Do the actual extrapolation (no-op if expand_dir == 0).
extrapolate_aa1_triangle_edge(vtx, other, opposite, pos_deltas, expand_dir);
VSout.inv_cov = is_near_corner ? 0.0f : 1.0f; // Full coverage at near corner, otherwise none.
VSout.interior = 0u;
}
#endif
gl_Position = vtx.p;
VSout.t_float = vtx.t_float;
VSout.t_int = vtx.t_int;
VSout.c = vtx.c;
}
#endif // VS_EXPAND
#endif // VERTEX_SHADER
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Binary file not shown.
+1183 -157
View File
File diff suppressed because it is too large. Load diff
-39
View File
@@ -93,7 +93,6 @@ files:
- name: colecovision.rom
system: colecovision
required: true
mode: standalone
sha256: "990bf1956f10207d8781b619eb74f89b00d921c8d45c95c334c16c8cceca09ad"
validation: [sha256]
description: "ColecoVision BIOS"
@@ -103,7 +102,6 @@ files:
- name: disksys.rom
system: famicom-disk-system
required: true
mode: standalone
sha256: "fdc1a76e654feea993fcb38366e05ee5f4eb641f86fe6bebaeefd412e112dd72"
validation: [sha256]
description: "Famicom Disk System BIOS"
@@ -113,7 +111,6 @@ files:
- name: gba_bios.bin
system: game-boy-advance
required: true
mode: standalone
sha256: "fd2547724b505f487e6dcb29ec2ecff3af35a841a77ab2e85fd87350abd36570"
validation: [sha256]
description: "GBA BIOS"
@@ -123,7 +120,6 @@ files:
- name: bios.gg
system: game-gear
required: false
mode: standalone
sha256: "8c8a21335038285cfa03dc076100c1f0bfadf3e4ff70796f11f3dfaaab60eee2"
validation: [sha256]
description: "Game Gear BIOS"
@@ -134,7 +130,6 @@ files:
system: master-system
region: [north-america]
required: false
mode: standalone
sha256: "477617917a12a30f9f43844909dc2de6e6a617430f5c9a36306c86414a670d50"
validation: [sha256]
description: "Master System BIOS (US)"
@@ -144,7 +139,6 @@ files:
system: master-system
region: [japan]
required: false
mode: standalone
sha256: "67846e26764bd862f19179294347f7353a4166b62ac4198a5ec32933b7da486e"
validation: [sha256]
description: "Master System BIOS (Japan)"
@@ -154,7 +148,6 @@ files:
system: master-system
region: [europe]
required: false
mode: standalone
sha256: "477617917a12a30f9f43844909dc2de6e6a617430f5c9a36306c86414a670d50"
validation: [sha256]
description: "Master System BIOS (Europe), same binary as US"
@@ -166,7 +159,6 @@ files:
system: mega-cd
region: [north-america]
required: true
mode: standalone
sha256: "fb477cdbf94c84424c2feca4fe40656d85393fe7b7b401911b45ad2eb991258c"
validation: [sha256]
description: "Mega CD / Sega CD BIOS (US)"
@@ -176,7 +168,6 @@ files:
system: mega-cd
region: [japan]
required: true
mode: standalone
sha256: "7133fc2dd2fe5b7d0acd53a5f10f3d00b5d31270239ad20d74ef32393e24af88"
validation: [sha256]
description: "Mega CD BIOS (Japan)"
@@ -186,7 +177,6 @@ files:
system: mega-cd
region: [europe]
required: true
mode: standalone
sha256: "fe608a2a07676a23ab5fd5eee2f53c9e2526d69a28aa16ccd85c0ec42e6933cb"
validation: [sha256]
description: "Mega CD BIOS (Europe)"
@@ -197,7 +187,6 @@ files:
system: mega-ld
region: [north-america]
required: true
mode: standalone
sha256: "e89b5a319f66406611ec82fe5c4aa6827c175a05135bd7bd177366cba0465021"
validation: [sha256]
description: "LaserActive SEGA PAC BIOS (US), v1.04"
@@ -207,7 +196,6 @@ files:
system: mega-ld
region: [japan]
required: true
mode: standalone
sha256: "dca942d977217f703d8d1c6eb1aeb6b32c78ecc421486bbb46c459d385161c94"
validation: [sha256]
description: "LaserActive SEGA PAC BIOS (Japan), v1.02"
@@ -217,7 +205,6 @@ files:
- name: MSX.ROM
system: msx
required: true
mode: standalone
sha256: "413a2b601a94b3792e054be2439cc77a1819cceadbfa9542f88d51c7480f2ef0"
validation: [sha256]
description: "MSX BIOS ROM (Japan)"
@@ -227,7 +214,6 @@ files:
- name: MSX2.ROM
system: msx2
required: true
mode: standalone
sha256: "0c672d86ead61a97f49a583b88b7c1905da120645cd44f0c9f2baf4f4631e0b1"
validation: [sha256]
description: "MSX2 main BIOS ROM (Japan)"
@@ -236,7 +222,6 @@ files:
- name: MSX2EXT.ROM
system: msx2
required: true
mode: standalone
sha256: "6c6f421a10c428d960b7ecc990f99af1c638147f747bddca7b0bf0e2ab738300"
validation: [sha256]
description: "MSX2 sub ROM (Japan)"
@@ -246,7 +231,6 @@ files:
- name: neo-epo.bin
system: neo-geo
required: true
mode: standalone
description: "Neo Geo AES BIOS. Accepts neogeo.zip (extracts neo-epo.bin) or direct file. Byte-swapped on load."
source_ref: "desktop-ui/emulator/neo-geo-aes.cpp:14, mia/system/neo-geo-aes.cpp:16"
@@ -254,7 +238,6 @@ files:
- name: sp-45.sp1
system: neo-geo
required: true
mode: standalone
description: "Neo Geo MVS BIOS. Accepts neogeo.zip (extracts sp-45.sp1) or direct file. Byte-swapped on load."
source_ref: "desktop-ui/emulator/neo-geo-mvs.cpp:15, mia/system/neo-geo-mvs.cpp:16"
@@ -262,7 +245,6 @@ files:
- name: ngp_bios.rom
system: neo-geo-pocket
required: true
mode: standalone
sha256: "0293555b21c4fac516d25199df7809b26beeae150e1d4504a050db32264a6ad7"
validation: [sha256]
description: "Neo Geo Pocket BIOS"
@@ -272,7 +254,6 @@ files:
- name: ngpc_bios.rom
system: neo-geo-pocket-color
required: true
mode: standalone
sha256: "8fb845a2f71514cec20728e2f0fecfade69444f8d50898b92c2259f1ba63e10d"
validation: [sha256]
description: "Neo Geo Pocket Color BIOS"
@@ -283,7 +264,6 @@ files:
system: nintendo-64dd
region: [japan]
required: true
mode: standalone
sha256: "806400ec0df94b0755de6c5b8249d6b6a9866124c5ddbdac198bde22499bfb8b"
validation: [sha256]
description: "Nintendo 64DD IPL ROM (Japan retail)"
@@ -293,7 +273,6 @@ files:
system: nintendo-64dd
region: [north-america]
required: true
mode: standalone
sha256: "e9fec87a45fba02399e88064b9e2f8cf0f2106e351c58279a87f05da5bc984ad"
validation: [sha256]
description: "Nintendo 64DD IPL ROM (US dev kit)"
@@ -302,7 +281,6 @@ files:
- name: 64dd_ipl_DEV.bin
system: nintendo-64dd
required: true
mode: standalone
sha256: "9c2962a8b994a29e4cd04b3a6e4ed730a751414655ab6a9799ebf5fc08b79d44"
validation: [sha256]
description: "Nintendo 64DD IPL ROM (development)"
@@ -312,7 +290,6 @@ files:
- name: syscard1.pce
system: pc-engine-cd
required: true
mode: standalone
sha256: "afe9f27f91ac918348555b86298b4f984643eafa2773196f2c5441ea84f0c3bb"
validation: [sha256]
description: "PC Engine CD-ROM2 System Card v1.0 (Japan). Also used by PC Engine LD."
@@ -321,7 +298,6 @@ files:
- name: syscard3.pce
system: pc-engine-cd
required: true
mode: standalone
sha256: "e11527b3b96ce112a037138988ca72fd117a6b0779c2480d9e03eaebece3d9ce"
validation: [sha256]
description: "Super CD-ROM2 System Card v3.0 (Japan). Also used by SuperGrafx CD as Arcade Card."
@@ -330,7 +306,6 @@ files:
- name: syscard3u.pce
system: pc-engine-cd
required: true
mode: standalone
sha256: "cadac2725711b3c442bcf237b02f5a5210c96f17625c35fa58f009e0ed39e4db"
validation: [sha256]
description: "TurboGrafx-CD Super System Card v3.0 (US)"
@@ -339,7 +314,6 @@ files:
- name: games_express.pce
system: pc-engine-cd
required: true
mode: standalone
sha256: "4b86bb96a48a4ca8375fc0109631d0b1d64f255a03b01de70594d40788ba6c3d"
validation: [sha256]
description: "Games Express CD Card (Japan). Also used by PC Engine LD."
@@ -349,7 +323,6 @@ files:
- name: pac-n10.pce
system: pc-engine-ld
required: true
mode: standalone
sha256: "0e87a3385a27b3a4cac51934819b7eefa5b3d690768d2495633838488cd0e2e4"
validation: [sha256]
description: "NEC PAC-N10 LaserActive module (US)"
@@ -358,7 +331,6 @@ files:
- name: pac-n1.pce
system: pc-engine-ld
required: true
mode: standalone
sha256: "459325690a458baebd77495c91e37c4dddfdd542ba13a821ce954e5bb245627f"
validation: [sha256]
description: "NEC PAC-N1 LaserActive module (Japan)"
@@ -367,7 +339,6 @@ files:
- name: pce-lp1.pce
system: pc-engine-ld
required: true
mode: standalone
sha256: "3f43b3b577117d84002e99cb0baeb97b0d65b1d70b4adadc68817185c6a687f0"
validation: [sha256]
description: "NEC PCE-LP1 LaserActive module (Japan)"
@@ -377,7 +348,6 @@ files:
- name: scph5501.bin
system: sony-playstation
required: true
mode: standalone
sha256: "11052b6499e466bbf0a709b1f9cb6834a9418e66680387912451e971cf8a1fef"
validation: [sha256]
description: "PlayStation BIOS (US)"
@@ -386,7 +356,6 @@ files:
- name: scph5500.bin
system: sony-playstation
required: true
mode: standalone
sha256: "9c0421858e217805f4abe18698afea8d5aa36ff0727eb8484944e00eb5e7eadb"
validation: [sha256]
description: "PlayStation BIOS (Japan)"
@@ -395,7 +364,6 @@ files:
- name: scph5502.bin
system: sony-playstation
required: true
mode: standalone
sha256: "1faaa18fa820a0225e488d9f086296b8e6c46df739666093987ff7d8fd352c09"
validation: [sha256]
description: "PlayStation BIOS (Europe)"
@@ -406,7 +374,6 @@ files:
system: saturn
region: [north-america]
required: true
mode: standalone
description: "Sega Saturn BIOS (US)"
source_ref: "desktop-ui/emulator/saturn.cpp:14"
@@ -414,7 +381,6 @@ files:
system: saturn
region: [japan]
required: true
mode: standalone
description: "Sega Saturn BIOS (Japan)"
source_ref: "desktop-ui/emulator/saturn.cpp:15"
@@ -422,7 +388,6 @@ files:
system: saturn
region: [europe]
required: true
mode: standalone
description: "Sega Saturn BIOS (Europe)"
source_ref: "desktop-ui/emulator/saturn.cpp:16"
@@ -430,7 +395,6 @@ files:
- name: SGB1.sfc
system: super-famicom
required: false
mode: standalone
category: game_data
description: "Super Game Boy cartridge ROM. Loaded via CLI as SFC cartridge alongside GB game."
source_ref: "EmuDeck emuDeckares.sh (launcher)"
@@ -438,7 +402,6 @@ files:
- name: SGB2.sfc
system: super-famicom
required: false
mode: standalone
category: game_data
description: "Super Game Boy 2 cartridge ROM. Loaded via CLI as SFC cartridge alongside GB game."
source_ref: "EmuDeck emuDeckares.sh (launcher)"
@@ -446,7 +409,6 @@ files:
- name: STBIOS.bin
system: super-famicom
required: false
mode: standalone
category: game_data
description: "SuFami Turbo adapter BIOS. Loaded via CLI as SFC cartridge alongside SuFami games."
source_ref: "EmuDeck emuDeckares.sh (launcher)"
@@ -454,7 +416,6 @@ files:
- name: BS-X.bin
system: super-famicom
required: false
mode: standalone
category: game_data
description: "Satellaview BS-X Town cartridge ROM. Loaded via CLI as SFC cartridge for BS games."
source_ref: "EmuDeck emuDeckares.sh (launcher)"
+10 -8
View File
@@ -110,7 +110,8 @@ files:
md5: 5daed103918277e2065dd7e8d23e57a5
sha1: 7e3c536baeae84d6498a14e8405319e01ee78232
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:45, Src/BeebMem.cpp:1322-1356"
note: "Paged ROM slot, read by the BeebReadRoms bank loop (Src/BeebMem.cpp:1322-1356)."
source_ref: "Src/RomConfigFile.cpp:45"
- name: OS12.map
path: BeebFile/BBC/OS12.map
@@ -293,8 +294,8 @@ files:
md5: 9087f772447038a00178488b3591347b
sha1: 04d5876999f93fc61a18f172b1fbb3b75db733ac
validation: [size]
note: "OS ROM slot for Model::Master128."
source_ref: "Src/RomConfigFile.cpp:103, Src/BeebMem.cpp:1291-1308"
note: "OS ROM slot for Model::Master128, read into 0xC000 by BeebReadRoms (Src/BeebMem.cpp:1291-1308)."
source_ref: "Src/RomConfigFile.cpp:103"
- name: Terminal.rom
path: BeebFile/M128/Terminal.rom
@@ -550,8 +551,8 @@ files:
validation: [size]
note: >
512 KB on-board flash carrying the system software and BASIC. Rejected as
InvalidROM unless the file is exactly 0x80000 bytes.
source_ref: "Src/SprowCoPro.cpp:51-90, Src/SprowCoPro.h:49, Src/BeebWin.cpp:1058-1088"
InvalidROM unless the file is exactly 0x80000 bytes (Src/SprowCoPro.h:49).
source_ref: "Src/SprowCoPro.cpp:51-90, Src/BeebWin.cpp:1058-1088"
# -- Program directory files --
@@ -685,8 +686,8 @@ files:
size: 6716
md5: 07b0e1d4cb329185a8a52c48db00bcf9
sha1: 5817277bcb110b747432b8716a0ffbe0c1e13de2
note: "Read at ApplyPreferences. The return value is ignored, leaving the built-in map."
source_ref: "Src/BeebWin.cpp:560-563, Src/KeyMap.cpp:65-78"
note: "Read at ApplyPreferences by ReadKeyMap (Src/KeyMap.cpp:65-123). The return value is ignored, leaving the built-in map."
source_ref: "Src/BeebWin.cpp:560-563"
- name: Default.kmap
description: "Default keyboard mapping"
@@ -696,7 +697,8 @@ files:
size: 6716
md5: 199de64bdb59a176d102f03cca4eadf9
sha1: 63c72e11f6ce8cd9dc5ebb96b4938010f4b2e4f0
source_ref: "Src/BeebWin.cpp:565-567, Src/KeyMap.cpp:65-78"
note: "Parsed by ReadKeyMap (Src/KeyMap.cpp:65-123)."
source_ref: "Src/BeebWin.cpp:565-567"
- name: DefaultUser.kmap
description: "Fallback user keyboard mapping"
-6
View File
@@ -23,7 +23,6 @@ notes: >
files:
- name: "syscard3.pce"
description: "CD-ROM System Card 3.0 (Japan)"
region: [japan]
required: true
sha1: "79f5ff55dd10187c7fd7b8daab0b3ffbd1f56a2c"
md5: "38179df8f4ac870017db21ebcbf53114"
@@ -32,7 +31,6 @@ files:
- name: "syscard3u.pce"
description: "CD-ROM System Card 3.0 (US / TurboGrafx-CD)"
region: [north-america]
required: false
sha1: "d02611d99921986147c753df14c7349b31d71950"
md5: "0754f903b52e3b3342202bdafb13efa5"
@@ -41,7 +39,6 @@ files:
- name: "syscard2.pce"
description: "CD-ROM System Card 2.0 (Japan)"
region: [japan]
required: false
sha1: "88da02e2503f7c32810f5d93a34849d470742b6d"
md5: "3cdd6614a918616bfc41c862e889dd79"
@@ -50,7 +47,6 @@ files:
- name: "syscard2u.pce"
description: "CD-ROM System Card 2.0 (US / TurboGrafx-CD)"
region: [north-america]
required: false
sha1: "2bea3dac98f84b2f2f469fa77ea720b8770d598d"
md5: "94279f315e8b52904f65ab3108542afe"
@@ -59,7 +55,6 @@ files:
- name: "syscard1.pce"
description: "CD-ROM System Card 1.0 (Japan)"
region: [japan]
required: false
sha1: "a39a66da7de6ba94ab84d04eef7afeec7d4ee66a"
md5: "2b7ccb3d86baa18f6402c176f3065082"
@@ -68,7 +63,6 @@ files:
- name: "gexpress.pce"
description: "Games Express CD Card"
region: [japan]
required: false
sha1: "014881a959e045e00f4db8f52955200865d40280"
md5: "6d2cb14fc3e1f65ceb135633d1694122"
+1 -4
View File
@@ -81,7 +81,7 @@ files:
- name: "scph5502.bin"
description: "SCPH-5502, 5552 (v3.0 01-06-97 E)"
region: [europe]
region: [europe, oceania]
required: true
hle_fallback: true
size: 524288
@@ -101,7 +101,6 @@ files:
- name: "psxonpsp660.bin"
description: "PSP embedded PS1 BIOS (region-free override)"
region: [world]
required: false
size: 524288
sha1: "96880d1ca92a016ff054be5159bb06fe03cb4e14"
@@ -114,7 +113,6 @@ files:
- name: "ps1_rom.bin"
description: "PS3 embedded PS1 BIOS, first 512KB extracted (region-free override)"
region: [world]
required: false
sha1: "c40146361eb8cf670b19fdc9759190257803cab7"
md5: "81bbe60ba7a3d1cea1d48c14cbcc647b"
@@ -126,7 +124,6 @@ files:
- name: "openbios.bin"
description: "OpenBIOS (open-source PS1 HLE BIOS, region-free override)"
region: [world]
required: false
size: 524288
mode: libretro
+6 -5
View File
@@ -14,13 +14,14 @@ notes: >
Doom 3 source port based on dhewm3 (GPL Doom 3 engine). The core accepts
.pk4 extensions (retro_get_system_info sets valid_extensions = "pk4").
Content is loaded directly from the .pk4 file path - the engine extracts
the grandparent directory as fs_basepath (libretro.cpp:1097,1135-1136
the grandparent directory as fs_basepath (libretro.cpp:2381,2449-2450
via extract_directory called twice on info->path) and expects the standard
Doom 3 directory layout with base/ containing pak000.pk4 through pak008.pk4.
BASE_GAMEDIR is hardcoded to "base" (Licensee.h:58). The boom3_xp variant
compiles with _D3XP defined, which passes "+set fs_game d3xp" at startup
(libretro.cpp:538-544) to load the Resurrection of Evil expansion from a
d3xp/ subdirectory alongside base/. The filesystem code (FileSystem.cpp:2125)
BASE_GAMEDIR is hardcoded to "base" (Licensee.h:58). One binary serves both
games: content in a directory named d3xp, or the doom_game core option,
passes "+set fs_game d3xp" (libretro.cpp:1635-1643, 2384-2405) to load the
Resurrection of Evil expansion from a d3xp/ subdirectory alongside base/.
The filesystem code (FileSystem.cpp:2207)
scans for .pk4 files in the game directory and loads them in order, with
higher-numbered paks overriding lower ones. The core requires OpenGL
(RETRO_ENVIRONMENT_SET_HW_RENDER) and XRGB8888 pixel format. All required
+1 -1
View File
@@ -90,7 +90,7 @@ files:
md5: 25629dfe870d097469c217b95fdc1c95
sha1: 39102c8e9cb55fcc0b9b62098780ed4a3cb6a4bb
note: "AMSDOS disc ROM, shipped cap32.cfg sets slot07=DEFAULT, skipped on the 464; missing file clears the slot"
source_ref: "src/cap32.cpp:1170-1178, src/cap32.cpp:1245-1249, cap32.cfg:215, rom/amsdos.rom"
source_ref: "src/cap32.cpp:1170-1178, src/cap32.cpp:1245-1249, cap32.cfg:205-206, 215, rom/amsdos.rom"
- name: system.cpr
system: amstrad-cpc
required: false
-4
View File
@@ -25,21 +25,18 @@ files:
- name: "prod.keys"
required: true
path: "switch/"
mode: standalone
note: "Production keys for NCA decryption (master, key area, header, titlekek)"
source_ref: "src/core/crypto/key_manager.cpp:655-656"
- name: "title.keys"
required: false
path: "switch/"
mode: standalone
note: "Per-title encryption keys (rights_id to titlekey mappings)"
source_ref: "src/core/crypto/key_manager.cpp:659-660"
- name: "console.keys"
required: false
path: "switch/"
mode: standalone
note: "Console-specific keys (BIS, SD seed)"
source_ref: "src/core/crypto/key_manager.cpp:661-662"
@@ -47,7 +44,6 @@ files:
required: false
path: "switch/"
size: 160
mode: standalone
note: "Amiibo decryption keys (two InternalKey structs, 0x50 bytes each)"
source_ref: "src/core/hle/service/nfc/common/amiibo_crypto.cpp:274-292"
-118
View File
@@ -62,7 +62,6 @@ files:
size: 2097152
crc32: "54c0c963"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:58-65"
# -------------------------------------------------------
@@ -75,7 +74,6 @@ files:
crc32: "79434781"
required: true
aliases: [basic2.rom]
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:78-85"
- name: os12.rom
@@ -84,7 +82,6 @@ files:
size: 16384
crc32: "3c14fc70"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:436-443"
- name: dfs09.rom
@@ -94,7 +91,6 @@ files:
crc32: "3ce609cf"
required: false
note: "Conditional: only when using 8271 disk interface"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:444-451"
- name: dfs-2.26.rom
@@ -104,7 +100,6 @@ files:
crc32: "5ae33e94"
required: false
note: "Conditional: needed for 1770 DFS or tube processor"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:452-459"
- name: adfs-1.30.rom
@@ -114,7 +109,6 @@ files:
crc32: "d3855588"
required: false
note: "Conditional: needed for ADFS support"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:460-467"
- name: ADT-1.40.rom
@@ -124,7 +118,6 @@ files:
crc32: "8314fed0"
required: false
note: "Optional: fetched separately, silently skipped if absent"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:468-475"
- name: TUBE110.rom
@@ -134,7 +127,6 @@ files:
crc32: "9ec2dbd0"
required: false
note: "Conditional: needed for 6502 tube processor"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:476-483"
- name: Z80_122.rom
@@ -144,7 +136,6 @@ files:
crc32: "b5851efc"
required: false
note: "Conditional: needed for Z80 tube processor"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:484-491"
# -------------------------------------------------------
@@ -156,7 +147,6 @@ files:
size: 16384
crc32: "79434781"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:90-97"
- name: os.rom
@@ -165,7 +155,6 @@ files:
size: 16384
crc32: "bf63fb1f"
required: true
mode: standalone
note: >
The catalogue accepts five images: 406a42ce, 0886741b, bf63fb1f, 6fea0978
and d61135d7. They differ only in the credits text, which lives on the IO
@@ -179,7 +168,6 @@ files:
crc32: "51523993"
required: false
note: "Conditional: needed for PRES ADFS"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:98-105"
- name: ADFS-E00_2.rom
@@ -189,7 +177,6 @@ files:
crc32: "8d17de0e"
required: false
note: "Conditional: needed for PRES ADFS"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:106-113"
- name: adfs.rom
@@ -199,7 +186,6 @@ files:
crc32: "3289bdc6"
required: false
note: "Conditional: needed for Acorn ADFS"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:114-121"
- name: DFS-1770-2.20.rom
@@ -209,7 +195,6 @@ files:
crc32: "f3dc9bc5"
required: false
note: "Conditional: needed for DFS disk images"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:122-129"
- name: ELK130E.rom
@@ -219,7 +204,6 @@ files:
crc32: "a923368d"
required: false
note: "Conditional: needed for IDE interface"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:130-137"
- name: AP6v133.rom
@@ -229,7 +213,6 @@ files:
crc32: "e0013cfc"
required: false
note: "Conditional: needed for AP6 commands. The catalogue records crc32 e0013cfc, which is the 7772-byte RetroHardware Plus 1 Support 1.33c build of 16 Jun 2020, and declares 8 KiB: Request::Node::validate() resizes the loaded image to 8192 bytes and the fetcher reads any length."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:138-145, Machines/Utility/ROMCatalogue.cpp:1484-1499, OSBindings/SDL/main.cpp:756-783"
# -------------------------------------------------------
@@ -241,7 +224,6 @@ files:
size: 262144
crc32: "c4f0f55f"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:193-200"
# -------------------------------------------------------
@@ -255,7 +237,6 @@ files:
crc32: "815752df"
required: false
note: "Built into binary. Required for CPC 464 model."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:261-268, Machines/Utility/ROMLibrary.cpp:14535"
- name: basic464.rom
@@ -265,7 +246,6 @@ files:
crc32: "7d9a3bac"
required: false
note: "Built into binary. Required for CPC 464 model."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:269-276, Machines/Utility/ROMLibrary.cpp:14532"
- name: os664.rom
@@ -275,7 +255,6 @@ files:
crc32: "3f5a6dc4"
required: false
note: "Built into binary. Required for CPC 664 model."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:277-283, Machines/Utility/ROMLibrary.cpp:14537"
- name: basic664.rom
@@ -285,7 +264,6 @@ files:
crc32: "32fee492"
required: false
note: "Built into binary. Required for CPC 664 model."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:284-291, Machines/Utility/ROMLibrary.cpp:14534"
- name: os6128.rom
@@ -295,7 +273,6 @@ files:
crc32: "0219bb74"
required: false
note: "Built into binary. Required for CPC 6128 model."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:292-299, Machines/Utility/ROMLibrary.cpp:14536"
- name: basic6128.rom
@@ -305,7 +282,6 @@ files:
crc32: "ca6af63d"
required: false
note: "Built into binary. Required for CPC 6128 model."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:300-307, Machines/Utility/ROMLibrary.cpp:14533"
- name: amsdos.rom
@@ -315,7 +291,6 @@ files:
crc32: "1fe22ecd"
required: false
note: "Built into binary. Needed for CPC 664/6128 disk support."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:253-260, Machines/Utility/ROMLibrary.cpp:14531"
# -------------------------------------------------------
@@ -328,7 +303,6 @@ files:
crc32: "ba210588"
required: true
note: "Required for original Apple II model"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:336-343"
- name: apple2.rom
@@ -338,7 +312,6 @@ files:
crc32: "f66f9c26"
required: true
note: "Required for Apple II+ model"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:328-335"
- name: apple2eu.rom
@@ -348,7 +321,6 @@ files:
crc32: "e12be18d"
required: true
note: "Required for Apple IIe model"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:320-327"
- name: apple2e.rom
@@ -358,7 +330,6 @@ files:
crc32: "65989942"
required: true
note: "Required for Enhanced IIe model"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:312-319"
- name: apple2-character.rom
@@ -368,7 +339,6 @@ files:
crc32: "64f415c6"
required: true
note: "Required for Apple II and II+ models"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:344-351"
- name: apple2eu-character.rom
@@ -378,7 +348,6 @@ files:
crc32: "816a86f1"
required: true
note: "Required for Apple IIe model"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:352-359"
- name: apple2e-character.rom
@@ -388,7 +357,6 @@ files:
crc32: "2651014d"
required: true
note: "Required for Enhanced IIe model. Also used by Apple IIgs."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:360-367"
- name: scsi.rom
@@ -398,7 +366,6 @@ files:
crc32: "5aff85d3"
required: false
note: "Conditional: needed for SCSI controller"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:368-375"
# -------------------------------------------------------
@@ -411,7 +378,6 @@ files:
crc32: "42f124b0"
required: true
note: "Required for ROM01 model"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:380-387"
- name: apple2gs.rom2
@@ -421,7 +387,6 @@ files:
crc32: "de7ddf29"
required: true
note: "Required for ROM03 model (default)"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:388-395"
- name: apple2gs.chr
@@ -430,7 +395,6 @@ files:
size: 4096
crc32: "91e53cd8"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:396-403"
- name: "341s0632-2"
@@ -439,7 +403,6 @@ files:
size: 4096
crc32: "e1c11fb0"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:404-411"
# -------------------------------------------------------
@@ -451,7 +414,6 @@ files:
size: 196608
crc32: "1a586c64"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:416-423"
# -------------------------------------------------------
@@ -463,7 +425,6 @@ files:
size: 8192
crc32: "3aa93ef3"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:496-503"
# -------------------------------------------------------
@@ -477,7 +438,6 @@ files:
crc32: "718d42b1"
required: false
note: "Conditional: needed when VIC-20 has 1540 drive"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:508-515"
- name: 1541.bin
@@ -487,7 +447,6 @@ files:
crc32: "fb760019"
required: false
note: "Conditional: needed when Plus/4 has 1541 drive"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:516-523"
# -------------------------------------------------------
@@ -501,7 +460,6 @@ files:
crc32: "ce7144f6"
required: false
note: "Conditional: needed for 16-sector disk controller"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:528-535"
- name: state-machine-16.rom
@@ -518,7 +476,6 @@ files:
other image is read as the unadulterated P6 PROM (9796a238), its address
lines and the top nibble of each value remapped into that order. Both give
the same internal table.
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:536-543, Components/DiskII/DiskII.cpp:187-239"
- name: boot-13.rom
@@ -528,7 +485,6 @@ files:
crc32: "d34eb2ff"
required: false
note: "Conditional: needed for 13-sector disk controller"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:544-551"
- name: state-machine-13.rom
@@ -538,7 +494,6 @@ files:
crc32: "62e22620"
required: false
note: "Conditional: needed for 13-sector disk controller"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:552-559"
# -------------------------------------------------------
@@ -552,7 +507,6 @@ files:
required: true
aliases: ["Exos (198x)(Enterprise).bin"]
note: "One EXOS version required. Selected by target or any available."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:600-607"
- name: exos20.bin
@@ -563,7 +517,6 @@ files:
required: true
aliases: ["Expandible OS v2.0 (1984)(Intelligent Software).bin"]
note: "Alternative EXOS version"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:611-618"
- name: exos21.bin
@@ -574,7 +527,6 @@ files:
required: true
aliases: ["Expandible OS v2.1 (1985)(Intelligent Software).bin"]
note: "Alternative EXOS version"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:622-629"
- name: exos23.bin
@@ -585,7 +537,6 @@ files:
required: true
aliases: ["Expandible OS v2.3 (1987)(Intelligent Software).bin"]
note: "Alternative EXOS version"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:633-640"
- name: basic10.bin
@@ -595,7 +546,6 @@ files:
crc32: "d62e4fb7"
required: true
note: "One BASIC version required. v1.0 single-file version."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:645-652"
- name: "BASIC 1.0 - EPROM 1-2 (198x)(Enterprise).bin"
@@ -605,7 +555,6 @@ files:
crc32: "37bf48e1"
required: false
note: "Alternative: both parts needed together as substitute for basic10.bin"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:653-660"
- name: "BASIC 1.0 - EPROM 2-2 (198x)(Enterprise).bin"
@@ -615,7 +564,6 @@ files:
crc32: "c5298c79"
required: false
note: "Alternative: both parts needed together as substitute for basic10.bin"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:661-668"
- name: basic11.bin
@@ -625,7 +573,6 @@ files:
crc32: "683cf455"
required: true
note: "Alternative BASIC version"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:669-676"
- name: "BASIC 1.1 - EPROM 1.1 (198x)(Enterprise).bin"
@@ -635,7 +582,6 @@ files:
crc32: "c96b7602"
required: false
note: "Alternative format of BASIC v1.1 with trailing byte"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:677-684"
- name: basic21.bin
@@ -648,7 +594,6 @@ files:
- "BASIC Interpreter v2.1 (1985)(Intelligent Software).bin"
- "BASIC Interpreter v2.1 (1985)(Intelligent Software)[a].bin"
note: "Alternative BASIC version"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:685-693"
- name: epdos.bin
@@ -659,7 +604,6 @@ files:
required: false
aliases: ["EPDOS v1.7 (19xx)(Haluska, Laszlo).bin"]
note: "Conditional: needed for EPDOS disk interface"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:698-705"
- name: exdos.bin
@@ -670,7 +614,6 @@ files:
required: false
aliases: ["EX-DOS EPROM (198x)(Enterprise).bin"]
note: "Conditional: needed when DOS is set to EXDOS"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:709-716"
# -------------------------------------------------------
@@ -683,7 +626,6 @@ files:
crc32: "6d0c8a28"
required: true
note: "Required for Macintosh 128k model"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:724-731"
- name: mac512k.rom
@@ -693,7 +635,6 @@ files:
crc32: "cf759e0d"
required: true
note: "Required for Macintosh 512k model"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:732-739"
- name: macplus.rom
@@ -708,7 +649,6 @@ files:
checksum 4D1F8172 of the third Mac Plus revision. The
machine copies whichever is supplied into its 128 KiB ROM without
reading the revision.
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:740-751, Machines/Apple/Macintosh/Macintosh.cpp:127-144"
# -------------------------------------------------------
@@ -722,7 +662,6 @@ files:
crc32: "0072ed54"
required: false
note: "Optional. Boots cartridge directly if absent."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:764-771"
- name: japanese-bios.sms
@@ -733,7 +672,6 @@ files:
crc32: "48d44a13"
required: false
note: "Optional. Used for Japan region. Boots without if absent."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:756-763"
# -------------------------------------------------------
@@ -747,7 +685,6 @@ files:
crc32: "94ee12f3"
required: true
note: "Required for MSX1. Region bytes patched in memory if regional BIOS absent."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:777-784"
- name: msx-japanese.rom
@@ -758,7 +695,6 @@ files:
crc32: "ee229390"
required: false
note: "Alternative to msx.rom for Japanese region"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:785-792"
- name: msx-american.rom
@@ -768,7 +704,6 @@ files:
size: 32768
required: false
note: "Alternative to msx.rom for American region"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:793-800"
- name: msx-european.rom
@@ -778,7 +713,6 @@ files:
size: 32768
required: false
note: "Alternative to msx.rom for European region"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:801-808"
- name: disk.rom
@@ -788,7 +722,6 @@ files:
crc32: "721f61df"
required: false
note: "Conditional: needed for disk drive support"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:809-816"
- name: msx2.rom
@@ -799,7 +732,6 @@ files:
crc32: "6cdaf3a5"
required: true
note: "Required for MSX2"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:818-825"
- name: msx2ext.rom
@@ -810,7 +742,6 @@ files:
crc32: "66237ecf"
required: true
note: "Required for MSX2"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:826-833"
- name: fmpac.rom
@@ -820,7 +751,6 @@ files:
crc32: "0e84505d"
required: false
note: "Conditional: needed for MSX-Music support"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:834-841"
# -------------------------------------------------------
@@ -833,7 +763,6 @@ files:
crc32: "f18710b4"
required: true
note: "Required for Oric-1 model"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:870-877"
- name: basic11.rom
@@ -843,7 +772,6 @@ files:
crc32: "c3a92bef"
required: true
note: "Required for Oric Atmos model"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:878-885"
- name: pravetz.rom
@@ -853,7 +781,6 @@ files:
crc32: "58079502"
required: true
note: "Required for Pravetz 8D model"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:886-893"
- name: colour.rom
@@ -863,7 +790,6 @@ files:
crc32: "d50fca65"
required: false
note: "Optional. Enables colour video output."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:846-853"
- name: ORIC.PAL-PROM-TBP24S10-1ab9b572.bin
@@ -873,7 +799,6 @@ files:
crc32: "1ab9b572"
required: false
note: "Optional. Alternative colour ROM."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:854-861"
- name: PRAVETZ-8D.PAL-PROM-82S129-1576a69b.bin
@@ -883,7 +808,6 @@ files:
crc32: "1576a69b"
required: false
note: "Optional. Colour ROM for Pravetz model."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:862-869"
- name: bd500.rom
@@ -893,7 +817,6 @@ files:
crc32: "61952e34"
required: false
note: "Conditional: needed for Byte Drive 500 disk interface"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:894-901"
- name: jasmin.rom
@@ -903,7 +826,6 @@ files:
crc32: "37220e89"
required: false
note: "Conditional: needed for Jasmin disk interface"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:902-909"
- name: microdisc.rom
@@ -913,7 +835,6 @@ files:
crc32: "a9664a9c"
required: false
note: "Conditional: needed for Microdisc disk interface"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:910-917"
- name: 8dos.rom
@@ -923,7 +844,6 @@ files:
crc32: "49a74c06"
required: false
note: "Conditional: needed for Pravetz 8-DOS disk interface"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:918-925"
# -------------------------------------------------------
@@ -936,7 +856,6 @@ files:
crc32: "9576944c"
required: true
note: "Required for XT-class emulation"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:930-937"
- name: GLaTICK_0.8.5_AT.ROM
@@ -946,7 +865,6 @@ files:
crc32: "371ea3f1"
required: false
note: "XT-class RTC option ROM"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:938-945"
- name: "Phoenix 80286 ROM BIOS Version 3.05.bin"
@@ -956,7 +874,6 @@ files:
crc32: "8d0d318a"
required: true
note: "Required for AT-class emulation (alternative to IBM AT BIOS)"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:946-953"
- name: at-bios.bin
@@ -966,7 +883,6 @@ files:
crc32: "674426be"
required: true
note: "AT-class: single-file IBM AT BIOS (alternative to split U27/U47)"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:954-961"
- name: BIOS_5170_15NOV85_U27_61X9266_27256.BIN
@@ -976,7 +892,6 @@ files:
crc32: "4995be7a"
required: false
note: "AT-class: split BIOS, used with U47 chip"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:962-969"
- name: BIOS_5170_15NOV85_U47_61X9265_27256.BIN
@@ -986,7 +901,6 @@ files:
crc32: "c32713e4"
required: false
note: "AT-class: split BIOS, used with U27 chip"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:970-977"
- name: CGA.F08
@@ -996,7 +910,6 @@ files:
crc32: "a362ffe6"
required: true
note: "Required for CGA video adapter"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:978-985"
- name: EUMDA9.F14
@@ -1006,7 +919,6 @@ files:
crc32: "7754882a"
required: true
note: "Required for MDA video adapter"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:986-993"
- name: ibm_6277356_ega_card_u44_27128.bin
@@ -1016,7 +928,6 @@ files:
crc32: "2f2fbc40"
required: false
note: "Needed for EGA video adapter"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:994-1001"
- name: ibm_vga.bin
@@ -1026,7 +937,6 @@ files:
crc32: "03b3f90d"
required: false
note: "Needed for VGA video adapter"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1002-1009"
- name: ibm-basic-1.10.rom
@@ -1036,7 +946,6 @@ files:
crc32: "ebacb791"
required: false
note: "Required for AT-class with IBM BIOS (not needed with Phoenix)"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1010-1017"
# -------------------------------------------------------
@@ -1048,7 +957,6 @@ files:
size: 16384
crc32: "74eaae87"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1046-1053"
- name: kernal.318004-05.bin
@@ -1058,7 +966,6 @@ files:
crc32: "71c07bd4"
required: true
note: "Default kernel version requested by machine code"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1038-1045"
- name: kernal.318004-03.bin
@@ -1068,7 +975,6 @@ files:
crc32: "77bab934"
required: false
note: "Alternative kernel version (in catalogue but not default)"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1022-1029"
- name: kernal.318004-04.bin
@@ -1078,7 +984,6 @@ files:
crc32: "be54ed79"
required: false
note: "Alternative kernel version (in catalogue but not default)"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1030-1037"
# -------------------------------------------------------
@@ -1090,7 +995,6 @@ files:
size: 16384
crc32: "f62d2f3a"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1157-1164"
- name: mo5-v1.1.rom
@@ -1099,7 +1003,6 @@ files:
size: 16384
crc32: "237c60bf"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1165-1172"
- name: mo6-v1.rom
@@ -1108,7 +1011,6 @@ files:
size: 65536
crc32: "45e859c6"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1173-1180"
- name: mo6-v2.rom
@@ -1117,7 +1019,6 @@ files:
size: 65536
crc32: "b4430a3b"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1181-1188"
- name: mo6-v3.rom
@@ -1126,7 +1027,6 @@ files:
size: 65536
crc32: "7a012322"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1189-1196"
- name: pc128.rom
@@ -1135,7 +1035,6 @@ files:
size: 65536
crc32: "fc173504"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1197-1204"
- name: cd90-640.rom
@@ -1145,7 +1044,6 @@ files:
crc32: "5114c0a5"
required: false
note: "Requested on top of the machine ROM when a disk is attached."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1206-1213"
# -------------------------------------------------------
@@ -1157,7 +1055,6 @@ files:
size: 8192
crc32: "db4c43c1"
required: true
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1218-1225"
- name: characters-english.bin
@@ -1168,7 +1065,6 @@ files:
crc32: "83e032a6"
required: true
note: "Required for English region"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1226-1233"
- name: kernel-pal.bin
@@ -1179,7 +1075,6 @@ files:
crc32: "4be07cb4"
required: true
note: "Required for English PAL region"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1234-1241"
- name: kernel-ntsc.bin
@@ -1190,7 +1085,6 @@ files:
crc32: "e5e7c174"
required: true
note: "Required for English NTSC region"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1242-1249"
- name: characters-danish.bin
@@ -1201,7 +1095,6 @@ files:
crc32: "7fc11454"
required: false
note: "Required for Danish region"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1250-1257"
- name: kernel-danish.bin
@@ -1212,7 +1105,6 @@ files:
crc32: "02adaf16"
required: false
note: "Required for Danish region"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1258-1265"
- name: characters-japanese.bin
@@ -1223,7 +1115,6 @@ files:
crc32: "fcfd8a4b"
required: false
note: "Required for Japanese region"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1266-1273"
- name: kernel-japanese.bin
@@ -1234,7 +1125,6 @@ files:
crc32: "336900d7"
required: false
note: "Required for Japanese region"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1274-1281"
- name: characters-swedish.bin
@@ -1245,7 +1135,6 @@ files:
crc32: "d808551d"
required: false
note: "Required for Swedish region"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1282-1289"
- name: kernel-swedish.bin
@@ -1256,7 +1145,6 @@ files:
crc32: "b2a60662"
required: false
note: "Required for Swedish region"
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1290-1297"
# -------------------------------------------------------
@@ -1270,7 +1158,6 @@ files:
crc32: "ddee531f"
required: false
note: "Built into binary. Required for 16K/48K model."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1302-1309, Machines/Utility/ROMLibrary.cpp:14539"
- name: 128.rom
@@ -1280,7 +1167,6 @@ files:
crc32: "2cbe8995"
required: false
note: "Built into binary. Required for 128K model."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1310-1317, Machines/Utility/ROMLibrary.cpp:14540"
- name: plus2.rom
@@ -1290,7 +1176,6 @@ files:
crc32: "e7a517dc"
required: false
note: "Built into binary. Required for +2 model."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1318-1325, Machines/Utility/ROMLibrary.cpp:14541"
- name: plus3.rom
@@ -1300,7 +1185,6 @@ files:
crc32: "96e3c17a"
required: false
note: "Built into binary. Required for +2a/+3 model."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1326-1336, Machines/Utility/ROMLibrary.cpp:14542"
# -------------------------------------------------------
@@ -1314,7 +1198,6 @@ files:
crc32: "4c7fc597"
required: false
note: "Built into binary. Required for ZX80 model."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1341-1348, Machines/Utility/ROMLibrary.cpp:14544"
- name: zx81.rom
@@ -1324,5 +1207,4 @@ files:
crc32: "4b1dd6eb"
required: false
note: "Built into binary. Required for ZX81 model."
mode: standalone
source_ref: "Machines/Utility/ROMCatalogue.cpp:1349-1356, Machines/Utility/ROMLibrary.cpp:14545"
-5
View File
@@ -169,7 +169,6 @@ files:
- name: CPC6128.ROM.UK
path: "ROM/National/CPC6128.ROM.UK"
system: amstrad-cpc
region: [uk]
required: false
min_size: 32768
validation: [size, signature]
@@ -183,7 +182,6 @@ files:
- name: CPC6128.ROM.FR
path: "ROM/National/CPC6128.ROM.FR"
system: amstrad-cpc
region: [france]
required: false
min_size: 32768
validation: [size, signature]
@@ -195,7 +193,6 @@ files:
- name: CPC6128.ROM.ES
path: "ROM/National/CPC6128.ROM.ES"
system: amstrad-cpc
region: [spain]
required: false
min_size: 32768
validation: [size, signature]
@@ -207,7 +204,6 @@ files:
- name: CPC6128.ROM.DK
path: "ROM/National/CPC6128.ROM.DK"
system: amstrad-cpc
region: [denmark]
required: false
min_size: 32768
validation: [size, signature]
@@ -219,7 +215,6 @@ files:
- name: CPC6128.ROM.SE
path: "ROM/National/CPC6128.ROM.SE"
system: amstrad-cpc
region: [sweden]
required: false
min_size: 32768
validation: [size, signature]
+3 -3
View File
@@ -28,11 +28,11 @@ notes: |
- ROMEXT[0] (upper ROM slot 0, 16KB): second half of cpc6128_bin (BASIC)
- ROMEXT[7] (upper ROM slot 7, 16KB): romdisc_bin (AMSDOS)
Called from HardResetCPC() (crocods-core/platform.c:1009-1020) using
Called from HardResetCPC() (crocods-core/platform.c:1024-1035) using
the extern byte arrays directly. No filesystem ROM loading exists in
the libretro path.
A Multiface ROM loader exists (crocods-core/multiface.c:51-61) that
A Multiface ROM loader exists (crocods-core/multiface.c:53-64) that
reads LocRomMulti via fopen(), but InitMultiface() is never called
from the libretro build or platform.c. Dead code in libretro context.
@@ -45,7 +45,7 @@ files: []
platform_details:
bios_mapping:
source_ref: "crocods-core/vga.c:185-200, crocods-core/platform.c:1009-1020"
source_ref: "crocods-core/vga.c:185-200, crocods-core/platform.c:1024-1035"
note: |
All ROMs are embedded. InitMemCPC() copies cpc6128_bin and romdisc_bin
into ROMINF and ROMEXT arrays via memcpy. No filesystem lookup occurs.
+3 -2
View File
@@ -84,7 +84,8 @@ files:
sha1: "69b3544d992a23e8b736c61837914a4d1b4e7bb5"
description: "Gemei A330 firmware update archive, V1.1 build3 of 2011-02-13"
note: >-
Mounted when an A330 package loads: the content's directory is
Mounted when an A330 package loads
(crates/dingooemu-core/src/a330/runtime.rs:415-418): the content's directory is
scanned and the first entry whose extension is hxf, in any case, is
read whole. The file must start with WADF0100 and declare at offset
20 a size within its own length; each record is a u32 name length,
@@ -98,4 +99,4 @@ files:
goes on. The image itself is never hashed, and the hashes here name
the last firmware Gemei published; the V1.10 image of 2011-01-25
indexes the same way.
source_ref: "crates/dingooemu-core/src/a330/runtime.rs:415-418, crates/dingooemu-core/src/a330/firmware_archive.rs:16-50, 54-58, 63-96, 117-124, crates/dingooemu-core/src/a330/runtime/sdk_hle/files.rs:108-133"
source_ref: "crates/dingooemu-core/src/a330/firmware_archive.rs:16-50, 54-58, 63-96, 117-124, crates/dingooemu-core/src/a330/runtime/sdk_hle/files.rs:108-133"
+1 -1
View File
@@ -188,7 +188,7 @@ files:
adler32_byteswap: true
description: "DSP coefficient ROM"
note: "Read by DSP LLE alongside the instruction ROM, and by the AX ucode under HLE for polyphase resampling, which drops any file that is not 0x1000 bytes and plays on without it."
source_ref: "Source/Core/Common/CommonPaths.h:121, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-105, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:107-120, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:42-69, Source/Core/Core/DSP/DSPCore.h:58"
source_ref: "Source/Core/Common/CommonPaths.h:121, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-120, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:42-69, Source/Core/Core/DSP/DSPCore.h:58"
- name: codehandler.bin
path: null
+5 -5
View File
@@ -148,7 +148,7 @@ files:
required: false
hle_fallback: true
note: "BootMii NAND backup. Can be imported to populate Wii NAND with channels, saves, system menu"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:26-39,42-89"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:27-45,47-92"
- name: "keys.bin"
path: null
@@ -156,7 +156,7 @@ files:
required: false
hle_fallback: true
note: "OTP/SEEPROM dump (Wii encryption keys). Needed if not appended to nand.bin for NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:20, Source/Core/DiscIO/NANDImporter.cpp:82-94, Source/Core/DiscIO/NANDImporter.h:46"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:20, Source/Core/DiscIO/NANDImporter.cpp:77-91, Source/Core/DiscIO/NANDImporter.h:35-38"
# -- Wii SD Card Image --
- name: "WiiSD.raw"
@@ -189,21 +189,21 @@ files:
required: false
hle_fallback: true
note: "SSL client certificate. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:239-323"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:220-304"
- name: "clientcakey.pem"
path: "Wii/clientcakey.pem"
required: false
hle_fallback: true
note: "SSL client private key. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:275"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:256"
- name: "rootca.pem"
path: "Wii/rootca.pem"
required: false
hle_fallback: true
note: "SSL root CA certificate. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:276"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:257"
# -- Realtek Bluetooth firmware (Wiimote passthrough) --
# Required for real Wiimote connectivity via USB Bluetooth adapters with Realtek chipsets.
+30 -30
View File
@@ -67,7 +67,7 @@ files:
- name: "scph1002a.bin"
description: "SCPH-1002, DTL-H1002 (v2.0 05-10-95 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "54847e693405ffeb0359c6287434cbef"
region_check: false
@@ -77,7 +77,7 @@ files:
- name: "scph1002b.bin"
description: "SCPH-1002, DTL-H1102 (v2.1 07-17-95 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "417b34706319da7cf001e76e40136c23"
region_check: false
@@ -87,7 +87,7 @@ files:
- name: "scph1002c.bin"
description: "SCPH-1002, DTL-H1202, H3002 (v2.2 12-04-95 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "e2110b8a2b97a8e0b857a45d32f7e187"
region_check: false
@@ -177,7 +177,7 @@ files:
- name: "scph5502.bin"
description: "SCPH-5502, 5552 (v3.0 01-06-97 E)"
region: [europe]
region: [europe, oceania]
required: true
md5: "32736f17079d0b2b7024407c39bd3050"
region_check: false
@@ -217,7 +217,7 @@ files:
- name: "scph7002.bin"
description: "SCPH-7002, 7502, 9002 (v4.1 12-16-97 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "b9d9a0286c33dc6b7237bb13cd46fdee"
region_check: false
@@ -257,7 +257,7 @@ files:
- name: "scph102_v44.bin"
description: "SCPH-102 (v4.4 03-24-00 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "b10f5e0e3d9eb60e5159690680b1e774"
region_check: true
@@ -267,7 +267,7 @@ files:
- name: "scph102_v45.bin"
description: "SCPH-102 (v4.5 05-25-00 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "de93caec13d1a141a40a79f5c86168d6"
region_check: true
@@ -301,7 +301,7 @@ files:
- name: "ps2_scph30003.bin"
description: "PS2, SCPH-30003 (v5.0 09-02-00 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "71f50ef4f4e17c163c78908e16244f7d"
region_check: true
@@ -391,7 +391,7 @@ files:
- name: "ps2_dtlh30002.bin"
description: "PS2, DTL-H30002 (v5.0 09/02/00 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "91c87cb2f2eb6ce529a2360f80ce2457"
region_check: true
@@ -401,7 +401,7 @@ files:
- name: "ps2_dtlh30102_0902.bin"
description: "PS2, DTL-H30102 (v5.0 09/02/00 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "3016b3dd42148a67e2c048595ca4d7ce"
region_check: true
@@ -411,7 +411,7 @@ files:
- name: "ps2_scph30002_0902.bin"
description: "PS2, SCPH-30002/SCPH-30003/SCPH-30004 (v5.0 09/02/00 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "b7fa11e87d51752a98b38e3e691cbf17"
region_check: true
@@ -461,7 +461,7 @@ files:
- name: "ps2_dtlh30102_1228.bin"
description: "PS2, DTL-H30102 (v5.0 12/28/00 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "6f9a6feb749f0533aaae2cc45090b0ed"
region_check: true
@@ -471,7 +471,7 @@ files:
- name: "ps2_scph30002_1228.bin"
description: "PS2, SCPH-30002/SCPH-30003/SCPH-30004/SCHP-35002/SCPH-35003/SCPH-35004 (v5.0 12/28/00 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "838544f12de9b0abc90811279ee223c8"
region_check: true
@@ -531,7 +531,7 @@ files:
- name: "ps2_scph30002r_0704.bin"
description: "PS2, SCPH-30002R/SCPH-30003R/SCPH-30004R (v5.0 07/04/01 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "491209dd815ceee9de02dbbc408c06d6"
region_check: true
@@ -551,7 +551,7 @@ files:
- name: "ps2_scph30002r_1004.bin"
description: "PS2, SCPH-30002R/SCPH-30003R/SCPH-30004R (v5.0 10/04/01 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "8359638e857c8bc18c3c18ac17d9cc3c"
region_check: true
@@ -581,7 +581,7 @@ files:
- name: "ps2_scph39002.bin"
description: "PS2, SCPH-39002/SCPH-39003/SCPH-39004 (v5.0 03/19/02 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "0d2228e6fd4fb639c9c39d077a9ec10c"
region_check: true
@@ -601,7 +601,7 @@ files:
- name: "ps2_scph39008.bin"
description: "PS2, SCPH-39008 (v5.0 04/26/02 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "5b1f47fbeb277c6be2fccdd6344ff2fd"
region_check: true
@@ -641,7 +641,7 @@ files:
- name: "ps2_dtlh50002.bin"
description: "PS2, DTL-H50002 (v5.0 02/27/03 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "666018ffec65c5c7e04796081295c6c7"
region_check: true
@@ -651,7 +651,7 @@ files:
- name: "ps2_scph50002_0227.bin"
description: "PS2, SCPH-50002/SCPH-50003/SCPH-50004 (v5.0 02/27/03 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "6e69920fa6eef8522a1d688a11e41bc6"
region_check: true
@@ -731,7 +731,7 @@ files:
- name: "ps2_scph50002_0623.bin"
description: "PS2, SCPH-50002/SCPH-50003/SCPH-50004 (v5.0 06/23/03 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "bd6415094e1ce9e05daabe85de807666"
region_check: true
@@ -761,7 +761,7 @@ files:
- name: "ps2_scph50008.bin"
description: "PS2, SCPH-50008 (v5.0 06/23/03 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "b53d51edc7fc086685e31b811dc32aad"
region_check: true
@@ -791,7 +791,7 @@ files:
- name: "ps2_scph50004_0822.bin"
description: "PS2, SCPH-50004 (v5.0 08/22/03 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "afde410bd026c16be605a1ae4bd651fd"
region_check: true
@@ -831,7 +831,7 @@ files:
- name: "ps2_scph70002.bin"
description: "PS2, SCPH-70002/SCPH-70003/SCPH-70004/SCPH-70008 (v5.0 06/14/04 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "dc752f160044f2ed5fc1f4964db2a095"
region_check: true
@@ -841,7 +841,7 @@ files:
- name: "ps2_scph70002_alt.bin"
description: "PS2, SCPH-70002 (v5.0 06/14/04 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "7ebb4fc5eab6f79a27d76ac9aad392b2"
region_check: true
@@ -851,7 +851,7 @@ files:
- name: "ps2_dtlh70002.bin"
description: "PS2, DTL-H70002 (v5.0 06/14/04 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "63ead1d74893bf7f36880af81f68a82d"
region_check: true
@@ -921,7 +921,7 @@ files:
- name: "ps2_scph75002.bin"
description: "PS2, SCPH-75002/SCPH-75003/SCPH-75004/SCPH-75008 (v5.0 06/20/05 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "573f7d4a430c32b3cc0fd0c41e104bbd"
region_check: true
@@ -961,7 +961,7 @@ files:
- name: "ps2_scph77002.bin"
description: "PS2, SCPH-77002/SCPH-77003/SCPH-77004/SCPH-77008 (v5.0 02/10/06 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "af60e6d1a939019d55e5b330d24b1c25"
region_check: true
@@ -1021,7 +1021,7 @@ files:
- name: "ps2_scph79002_90002.bin"
description: "PS2, SCPH-79002/SCPH-79003/SCPH-79004/SCPH-79008/SCPH-90002/SCPH-90003/SCPH-90004 (v5.0 09/05/06 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "80bbb237a6af9c611df43b16b930b683"
region_check: true
@@ -1061,7 +1061,7 @@ files:
- name: "ps2_scph90002_0220.bin"
description: "PS2, SCPH-90002/SCPH-90003/SCPH-90004/SCPH-90008 (v5.0 02/20/08 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "dc69f0643a3030aaa4797501b483d6c4"
region_check: true
@@ -1081,7 +1081,7 @@ files:
- name: "ps2_kdl22px300.bin"
description: "PS2, KDL-22PX300 (v5.0 04/15/10 E)"
region: [europe]
region: [europe, oceania]
required: false
md5: "93ea3bcee4252627919175ff1b16a1d9"
region_check: true
-5
View File
@@ -28,28 +28,24 @@ files:
- name: "prod.keys"
required: true
path: "switch/"
mode: standalone
note: "Production keys for NCA decryption (master, key area, header, titlekek)"
source_ref: "src/core/crypto/key_manager.cpp:574-575, 853"
- name: "dev.keys"
required: false
path: "switch/"
mode: standalone
note: "Development-unit keys, read instead of prod.keys when use_dev_keys is set"
source_ref: "src/core/crypto/key_manager.cpp:570-571, 852"
- name: "title.keys"
required: false
path: "switch/"
mode: standalone
note: "Per-title encryption keys (rights_id to titlekey mappings)"
source_ref: "src/core/crypto/key_manager.cpp:577-578, 850"
- name: "console.keys"
required: false
path: "switch/"
mode: standalone
note: "Console-specific keys (BIS, SD seed)"
source_ref: "src/core/crypto/key_manager.cpp:579-580"
@@ -57,7 +53,6 @@ files:
required: false
path: "switch/"
size: 160
mode: standalone
note: "Amiibo decryption keys (two InternalKey structs, 0x50 bytes each)"
source_ref: "src/core/hle/service/nfc/common/amiibo_crypto.cpp:281-302"
+4
View File
@@ -701,6 +701,10 @@ files:
mode: standalone
required: false
bundled: true
size: 408885
sha1: "8c272ae624c56d48d788fafe0397fab2e33d838f"
md5: "b1586eb09b91f65c37a2f5e7c6ef7980"
note: "src/external/SDL_GameControllerDB is a submodule pinned at a113e7fa"
description: "SDL2 controller mapping database handed to SDL_GameControllerAddMappingsFromFile"
source_ref: "src/emu/drivers/src/input/backend/emu_controller_sdl2.cpp:143-145, src/emu/qt/CMakeLists.txt:277"
+2 -2
View File
@@ -5,9 +5,9 @@ source: "https://github.com/sashkinbro/EmuCoreX"
upstream: "https://github.com/PCSX2/pcsx2"
author: "Oleksandr (sashkinbro)"
profiled_date: "2026-10-04"
source_commit: "ed8d7dd721dc8da958f3149acdc4c72d77d5a685"
source_commit: "9884c9f9a0c5d5df2f0c0c064ec41029a4528d72"
upstream_commit: "c10a5c9ad951c517dc48b722b5b84eb9bf7fdb42"
core_version: "0.4.6"
core_version: "0.4.7"
display_name: "Sony - PlayStation 2 (EmuCoreX)"
cores:
- emucorex
+2 -2
View File
@@ -143,7 +143,7 @@ files:
has_builtin: true
size: 32768
note: "EXDOS 1.4 + IS-DOS 1.0 (UK). Used for IS-DOS disk mode instead of exdos13.rom."
source_ref: "core/core.cpp:255, roms/roms.hpp:30104 (built-in data, MD5 verified)"
source_ref: "core/core.cpp:294-298, roms/roms.hpp:30104 (built-in data, MD5 verified)"
# ============================================================
# Enterprise 64/128 - file I/O and extensions
@@ -193,7 +193,7 @@ files:
has_builtin: true
size: 32768
note: "EP-DOS 1.6f. Provides HFONT and CLKOFF for Hungarian locale. 32K across segments 0x06-0x07."
source_ref: "core/core.cpp:238-239, roms/roms.hpp:43780 (built-in data, MD5 verified)"
source_ref: "core/core.cpp:252-256, roms/roms.hpp:43780 (built-in data, MD5 verified)"
- name: brd.rom
path: ep128emu/roms/brd.rom
-2
View File
@@ -221,7 +221,6 @@ files:
source_ref: "fMSX/ROMs/CYRILLIC.FNT, libretro.c:1547"
- name: KOREAN.FNT
region: [south-korea]
required: false
bundled: true
md5: 73291e76638a2f5aa2eceb843df468f4
@@ -229,7 +228,6 @@ files:
source_ref: "fMSX/ROMs/KOREAN.FNT, libretro.c:1547"
- name: JAPANESE.FNT
region: [japan]
required: false
bundled: true
md5: aa28f0703b951a6be8df3e28e20d263d
+7 -7
View File
@@ -5,7 +5,7 @@ source: "https://github.com/libretro/geolith-libretro"
upstream: "https://gitlab.com/jgemu/geolith"
profiled_date: "2026-08-07"
source_commit: "194024931935eff2092e36fc4f8e53e62ed11097"
upstream_commit: "7ed2ef95a446ffb9bf17b6536d24c108310c94da"
upstream_commit: "1bb5a84fbd87dc1f1c510cb3ff81332573e22452"
core_version: "0.4.1"
display_name: "SNK - Neo Geo AES/MVS (Geolith)"
cores:
@@ -52,7 +52,7 @@ notes: |
detection and the optional CD speed hack patches use byte patterns and
apply only when the 68K BIOS is at least 512 KiB (src/geo_cd.c:1888-1910,
1904-1924). Upstream declares the expected archive MD5s through the Jolly
Good API BIOS list (jg.c:228-239); the md5 fields on the archives below
Good API BIOS list (jg.c:220-231); the md5 fields on the archives below
are copied from it.
files:
@@ -64,35 +64,35 @@ files:
required: true
md5: "ad9585c72130c56f04ae26aae87c289d"
note: "Neo Geo AES System ROMs. Opened when System Type is AES (default)."
source_ref: "libretro/libretro.c:1222-1225, jg.c:229-230"
source_ref: "libretro/libretro.c:1222-1225, jg.c:221-222"
- name: "neogeo.zip"
system: snk-neogeo-mvs
required: true
md5: "00dad01abdbf8ea9e79ad2fe11bdb182"
note: "Neo Geo MVS System ROMs. Opened for MVS and Universe BIOS modes."
source_ref: "libretro/libretro.c:1222-1225, jg.c:231-232"
source_ref: "libretro/libretro.c:1222-1225, jg.c:223-224"
- name: "neocd.zip"
system: snk-neogeo-cd
required: false
md5: "006a881532f2caffc3fe9fb5593f2ed5"
note: "Neo Geo CD Front/Top Loader System ROMs. Opened only when CD System is front or top loader."
source_ref: "libretro/libretro.c:1213-1220, jg.c:233-234"
source_ref: "libretro/libretro.c:1213-1220, jg.c:225-226"
- name: "neocdz.zip"
system: snk-neogeo-cd
required: true
md5: "b31a246b69493c35194fe0bac120dc37"
note: "Neo Geo CDZ System ROMs. Opened for CDZ (default) and CD Universe BIOS; also supplies 000-lo.lo to Front/Top Loader mode."
source_ref: "libretro/libretro.c:1213-1239, jg.c:235-236"
source_ref: "libretro/libretro.c:1213-1239, jg.c:227-228"
- name: "irrmaze.zip"
system: snk-neogeo-mvs
required: false
md5: "0e369df30a70e45547cef9e4078dc511"
note: "The Irritating Maze auxiliary BIOS. Loaded in MVS mode for trackball support; on failure the game runs without trackball."
source_ref: "libretro/libretro.c:1281-1292, jg.c:237-238"
source_ref: "libretro/libretro.c:1281-1292, jg.c:229-230"
# -----------------------------------------------------------
# aes.zip members
+9 -7
View File
@@ -238,9 +238,11 @@ files:
description: "SoundFont for the MIDI devices"
note: >-
Collected by scanning a `soundfonts` directory added to the search paths of
the config file; every .sf2 and zipped GUS patch set found there becomes a
menu entry.
source_ref: "Q3E/src/main/jni/zdoom/src/gameconfigfile.cpp:220, 258, Q3E/src/main/jni/zdoom/src/common/audio/music/i_soundfont.cpp:335-370"
the config file (Q3E/src/main/jni/zdoom/src/gameconfigfile.cpp:220, 258);
every .sf2 and zipped GUS patch set found there becomes a menu entry.
fluid_patchset defaults to GAMENAMELOWERCASE, "uzdoom", which
FindSoundFont matches against the file base name.
source_ref: "Q3E/src/main/jni/zdoom/src/version.h:110, Q3E/src/main/jni/zdoom/src/common/audio/music/music_config.cpp:119, Q3E/src/main/jni/zdoom/src/common/audio/music/i_soundfont.cpp:335-370, 458-468"
- name: GENMIDI.GS.wopl
required: false
@@ -280,12 +282,12 @@ files:
description: "ECWolf engine resource archive"
note: >-
Named by MAIN_PK3 and passed to the game selector with the program
directory; failing to open it ends the process with "Could not open
ecwolf.pk3!". It holds the IWADINFO rules that identify which Wolfenstein
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
data set is present, the palettes and the actor definitions. This build
reads it from disk after extraction, unlike the libretro core which
compiles it in.
source_ref: "Q3E/src/main/jni/ecwolf/src/version.h:12, Q3E/src/main/jni/ecwolf/src/wl_iwad.cpp:604, Q3E/src/main/jni/ecwolf/src/wl_main.cpp:1294-1307, 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
required: true
@@ -403,7 +405,7 @@ files:
Unpacked into `files/` under the Source standalone directory. It carries
the DejaVu, Droid Sans Fallback, Itim and Liberation faces the engine
substitutes for the Windows fonts, and extras_dir.vpk.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:164-173, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:938-961, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:396"
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:164-173, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:938-961, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:383, 396"
- name: d3_sabot_a7.pk4
required: false
+29 -29
View File
@@ -4,7 +4,7 @@ core_classification: game_engine
source: "https://github.com/deathkiller/jazz2-native"
upstream: "https://github.com/deathkiller/jazz2-native"
profiled_date: "2026-10-04"
source_commit: "cc06bdac1b957a069e1d05761c7437cd59886552"
source_commit: "1e20466795d5074570fb057b41f56baefd24c629"
core_version: "3.8.0"
display_name: "Jazz Jackrabbit 2 (Jazz² Resurrection)"
cores: [jazz2]
@@ -15,18 +15,18 @@ notes: |
ships its own Content/ tree (animations, metadata, translations) that
sits next to the executable in a portable copy, or under
<prefix>/share/<package>/ once installed.
ref: Sources/Jazz2/ContentResolver.cpp:187-238 (GetContentPath per
platform), Sources/Jazz2/ContentResolver.cpp:409-485 (Unix layouts)
ref: Sources/Jazz2/ContentResolver.cpp:191-243 (GetContentPath per
platform), Sources/Jazz2/ContentResolver.cpp:415-491 (Unix layouts)
Original Jazz Jackrabbit 2 data is read from Source/ and converted
on first launch into the engine's own formats under Cache/: Anims.j2a
and Data.j2d into a package, then every .j2e, .j2l and the tilesets
the levels name. Music and cinematics are read from Source/ as they
are.
ref: Sources/Jazz2/ContentResolver.cpp:279-309 (GetSourcePath),
Sources/Main.cpp:2224-2288 (RefreshCache),
ref: Sources/Jazz2/ContentResolver.cpp:285-314 (GetSourcePath),
Sources/Main.cpp:2226-2290 (RefreshCache),
Sources/Jazz2/Compatibility/AssetConverter.cpp:152-168,
Sources/Jazz2/Compatibility/AssetConverter.cpp:400-516
Sources/Jazz2/Compatibility/AssetConverter.cpp:400-520
Content/ is the engine runtime, shipped with the release package.
Source/ holds the user's own copy of the 1998 game data. Without
@@ -51,7 +51,7 @@ files:
standalone_path: "Content/Animations/"
bundled: true
required: true
source_ref: "Sources/Jazz2/ContentResolver.cpp:1093, 1223, 2734-2735"
source_ref: "Sources/Jazz2/ContentResolver.cpp:1164, 1294, 2837-2838"
note: "Native graphics, sounds and the UI fonts, opened through OpenContentFile."
- name: "Metadata/"
@@ -61,7 +61,7 @@ files:
standalone_path: "Content/Metadata/"
bundled: true
required: true
source_ref: "Sources/Jazz2/ContentResolver.cpp:839"
source_ref: "Sources/Jazz2/ContentResolver.cpp:910"
note: "Actor .res descriptors (Common, Enemy, Player, UI, Boss, ...)."
- name: "Translations/"
@@ -71,7 +71,7 @@ files:
standalone_path: "Content/Translations/"
bundled: true
required: false
source_ref: "Sources/Main.cpp:2019-2025, Sources/Jazz2/UI/Menu/LanguageSelectSection.cpp:82-88"
source_ref: "Sources/Main.cpp:2021-2027, Sources/Jazz2/UI/Menu/LanguageSelectSection.cpp:82-88"
note: "Language .mo bundles, searched in Cache/Translations/ first. Built-in English is used when none is loaded."
# ================================================================
@@ -85,7 +85,7 @@ files:
path: "jazz2/Source/Anims.j2a"
standalone_path: "Source/Anims.j2a"
required: true
source_ref: "Sources/Main.cpp:2224-2240, Sources/Jazz2/Compatibility/AssetConverter.cpp:156-159"
source_ref: "Sources/Main.cpp:2226-2242, Sources/Jazz2/Compatibility/AssetConverter.cpp:156-159"
note: "Main animation archive. The cache cannot be created without it and the game is not flagged playable."
- name: "AnimsSw.j2a"
@@ -94,7 +94,7 @@ files:
path: "jazz2/Source/AnimsSw.j2a"
standalone_path: "Source/AnimsSw.j2a"
required: false
source_ref: "Sources/Main.cpp:2227-2229"
source_ref: "Sources/Main.cpp:2229-2231"
note: "Animation archive of the shareware demo, read when Anims.j2a is absent."
- name: "Data.j2d"
@@ -108,7 +108,7 @@ files:
# Episode descriptors (.j2e) and level files (.j2l) are optional per
# episode. Every one present in Source/ is converted.
# ref: Sources/Jazz2/Compatibility/AssetConverter.cpp:400-516
# ref: Sources/Jazz2/Compatibility/AssetConverter.cpp:400-520
- name: "prince.j2e"
category: game_data
@@ -252,8 +252,8 @@ files:
# Tilesets. Only those a converted level names are converted. The name
# is read from the level, lowercased and looked up in Source/ without
# regard to case.
# ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:117, 724-727,
# Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 575-596
# ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:124, 772-775,
# Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 579-600
- name: "labrat1n.j2t"
category: game_data
@@ -261,7 +261,7 @@ files:
path: "jazz2/Source/labrat1n.j2t"
standalone_path: "Source/labrat1n.j2t"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:117, 724-727, Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 575-596"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:124, 772-775, Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 579-600"
note: "Tileset named by share1.j2l, sharect2.j2l and sharetrs.j2l."
- name: "psych2.j2t"
@@ -270,7 +270,7 @@ files:
path: "jazz2/Source/psych2.j2t"
standalone_path: "Source/psych2.j2t"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:117, 724-727, Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 575-596"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:124, 772-775, Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 579-600"
note: "Tileset named by share2.j2l."
- name: "diam2.j2t"
@@ -279,11 +279,11 @@ files:
path: "jazz2/Source/diam2.j2t"
standalone_path: "Source/diam2.j2t"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:117, 724-727, Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 575-596"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:124, 772-775, Sources/Jazz2/Compatibility/AssetConverter.cpp:492, 579-600"
note: "Tileset named by share3.j2l and sharectf.j2l."
# Music, read from Content/Music/ then from Source/
# ref: Sources/Jazz2/ContentResolver.cpp:2681-2691
# ref: Sources/Jazz2/ContentResolver.cpp:2784-2794
- name: "menu.j2b"
category: game_data
@@ -291,7 +291,7 @@ files:
path: "jazz2/Source/menu.j2b"
standalone_path: "Source/menu.j2b"
required: false
source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:509-511, Sources/Jazz2/Compatibility/AssetConverter.cpp:535-538"
source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:509-511, Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542"
note: "Main menu music."
- name: "bonus2.j2b"
@@ -300,7 +300,7 @@ files:
path: "jazz2/Source/bonus2.j2b"
standalone_path: "Source/bonus2.j2b"
required: false
source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:503-504, Sources/Jazz2/Compatibility/AssetConverter.cpp:535-538"
source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:503-504, Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542"
note: "Menu music of the reforged main menu, picked at random with bonus3.j2b."
- name: "bonus3.j2b"
@@ -309,7 +309,7 @@ files:
path: "jazz2/Source/bonus3.j2b"
standalone_path: "Source/bonus3.j2b"
required: false
source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:503-504, Sources/Jazz2/Compatibility/AssetConverter.cpp:535-538"
source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:503-504, Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542"
note: "Menu music of the reforged main menu, picked at random with bonus2.j2b."
- name: "intro.j2b"
@@ -318,7 +318,7 @@ files:
path: "jazz2/Source/intro.j2b"
standalone_path: "Source/intro.j2b"
required: false
source_ref: "Sources/Jazz2/UI/Cinematics.cpp:255, Sources/Main.cpp:558, Sources/Jazz2/Compatibility/AssetConverter.cpp:535-538"
source_ref: "Sources/Jazz2/UI/Cinematics.cpp:255, Sources/Main.cpp:558, Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542"
note: "Music of the intro cinematic."
- name: "ending.j2b"
@@ -327,12 +327,12 @@ files:
path: "jazz2/Source/ending.j2b"
standalone_path: "Source/ending.j2b"
required: false
source_ref: "Sources/Jazz2/UI/Cinematics.cpp:255, Sources/Main.cpp:964, Sources/Jazz2/Compatibility/AssetConverter.cpp:535-538"
source_ref: "Sources/Jazz2/UI/Cinematics.cpp:255, Sources/Main.cpp:964, Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542"
note: "Music of the ending cinematic."
# Level music. The name is read from the level, lowercased and given
# the .j2b extension when it has none.
# ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:121, 736-741
# ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:128, 784-789
- name: "labrat.j2b"
category: game_data
@@ -340,7 +340,7 @@ files:
path: "jazz2/Source/labrat.j2b"
standalone_path: "Source/labrat.j2b"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:121, 736-741, Sources/Jazz2/LevelHandler.cpp:629-635, Sources/Jazz2/ContentResolver.cpp:2681-2685"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:128, 784-789, Sources/Jazz2/LevelHandler.cpp:629-635, Sources/Jazz2/ContentResolver.cpp:2784-2788"
note: "Music named by share1.j2l, sharect2.j2l and sharetrs.j2l."
- name: "funkyg.j2b"
@@ -349,7 +349,7 @@ files:
path: "jazz2/Source/funkyg.j2b"
standalone_path: "Source/funkyg.j2b"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:121, 736-741, Sources/Jazz2/LevelHandler.cpp:629-635, Sources/Jazz2/ContentResolver.cpp:2681-2685"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:128, 784-789, Sources/Jazz2/LevelHandler.cpp:629-635, Sources/Jazz2/ContentResolver.cpp:2784-2788"
note: "Music named by share2.j2l."
- name: "diamond.j2b"
@@ -358,7 +358,7 @@ files:
path: "jazz2/Source/diamond.j2b"
standalone_path: "Source/diamond.j2b"
required: false
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:121, 736-741, Sources/Jazz2/LevelHandler.cpp:629-635, Sources/Jazz2/ContentResolver.cpp:2681-2685"
source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:128, 784-789, Sources/Jazz2/LevelHandler.cpp:629-635, Sources/Jazz2/ContentResolver.cpp:2784-2788"
note: "Music named by share3.j2l and sharectf.j2l."
- name: "boss2.j2b"
@@ -367,8 +367,8 @@ files:
path: "jazz2/Source/boss2.j2b"
standalone_path: "Source/boss2.j2b"
required: false
source_ref: "Sources/Jazz2/Compatibility/EventConverter.cpp:356-362, Sources/Jazz2/LevelHandler.cpp:1397-1400, Sources/Jazz2/ContentResolver.cpp:2681-2685"
note: "Boss music. The boss activation event carries a music index that is converted to boss1.j2b or boss2.j2b; share3.j2l carries index 1."
source_ref: "Sources/Jazz2/Compatibility/EventConverter.cpp:360-370, Sources/Jazz2/Compatibility/AssetConverter.cpp:505-508, Sources/Jazz2/LevelHandler.cpp:1397-1400, Sources/Jazz2/ContentResolver.cpp:2784-2788"
note: "Boss music. The boss activation event carries a music index that is converted to boss1.j2b or boss2.j2b and recorded as music the level uses; share3.j2l carries index 1."
# Cinematics, read from Content/Cinematics/ then from Source/
-16
View File
@@ -79,7 +79,6 @@ files:
description: "Sega CD BIOS (US)"
region: [north-america]
required: true
mode: standalone
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:39-49 (read), frontend/jgenesis-native-driver/src/mainloop/genesis.rs:238-244 (bios_path_for_region), backend/segacd-core/src/api.rs:77-79 (BIOS_LEN check)"
@@ -90,7 +89,6 @@ files:
description: "Mega CD BIOS (Europe)"
region: [europe]
required: true
mode: standalone
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:238-244 (eu_bios_path), backend/segacd-core/src/api.rs:77-79"
@@ -100,7 +98,6 @@ files:
description: "Mega CD BIOS (Japan)"
region: [japan]
required: true
mode: standalone
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:238-244 (jp_bios_path), backend/segacd-core/src/api.rs:77-79"
@@ -112,7 +109,6 @@ files:
system: nintendo-gba
description: "Game Boy Advance BIOS"
required: true
mode: standalone
size: 16384
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/gba.rs:29-33 (GbaNoBios), backend/gba-core/src/memory.rs:10,102-107 (BIOS_ROM_LEN check)"
@@ -126,7 +122,6 @@ files:
system: nintendo-snes
description: "NEC uPD77C25 firmware for DSP-1"
required: true
mode: standalone
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:336-353 (MissingDsp1Rom), backend/snes-coprocessors/src/upd77c25.rs:28-31,35-38,382-390"
note: "0x1800 program plus 0x800 data. Also used by DSP-1B titles, which have no separate slot. Layout is sliced at a fixed offset, size is not checked."
@@ -136,7 +131,6 @@ files:
system: nintendo-snes
description: "NEC uPD77C25 firmware for DSP-2"
required: true
mode: standalone
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:340-342 (MissingDsp2Rom), :929 (Dungeon Master CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
@@ -145,7 +139,6 @@ files:
system: nintendo-snes
description: "NEC uPD77C25 firmware for DSP-3"
required: true
mode: standalone
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:343-345 (MissingDsp3Rom), :931 (SD Gundam GX CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
@@ -154,7 +147,6 @@ files:
system: nintendo-snes
description: "NEC uPD77C25 firmware for DSP-4"
required: true
mode: standalone
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:346-348 (MissingDsp4Rom), :933 (Top Gear 3000 CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
@@ -163,7 +155,6 @@ files:
system: nintendo-snes
description: "NEC uPD96050 firmware for ST010"
required: true
mode: standalone
size: 53248
source_ref: "backend/snes-core/src/memory/cartridge.rs:294-305 (MissingSt010Rom), :938-943 (variant detection), backend/snes-coprocessors/src/upd77c25.rs:28-31,35-38"
note: "0xC000 program plus 0x1000 data. Used by F1 ROC II."
@@ -173,7 +164,6 @@ files:
system: nintendo-snes
description: "NEC uPD96050 firmware for ST011"
required: true
mode: standalone
size: 53248
source_ref: "backend/snes-core/src/memory/cartridge.rs:298-300 (MissingSt011Rom), :938-943 (Hayazashi Nidan Morita Shougi CRC32 match)"
@@ -182,7 +172,6 @@ files:
system: nintendo-snes
description: "ARM firmware for ST018"
required: true
mode: standalone
min_size: 163840
validation: [size]
source_ref: "backend/snes-core/src/memory/cartridge.rs:310-320 (MissingSt018Rom), backend/snes-coprocessors/src/st018.rs:18-22,346-352 (TOTAL_ROM_LEN check)"
@@ -195,7 +184,6 @@ files:
system: sega-mastersystem
description: "Master System BIOS"
required: false
mode: standalone
source_ref: "frontend/jgenesis-native-driver/src/mainloop/smsgg.rs:27-33,50-56,74-80,112-122, backend/smsgg-core/src/memory.rs:101-106,148-168"
note: "Read only when sms_boot_from_bios is enabled or the emulator runs without a cartridge, both off by default. One slot accepts any regional dump, no size or content check."
@@ -203,7 +191,6 @@ files:
system: sega-gamegear
description: "Game Gear BIOS"
required: false
mode: standalone
source_ref: "frontend/jgenesis-native-driver/src/mainloop/smsgg.rs:27-33,50-56,74-80,112-122"
note: "Read only when gg_boot_from_bios is enabled or the emulator runs without a cartridge, both off by default."
@@ -214,7 +201,6 @@ files:
system: nintendo-gb
description: "Game Boy boot ROM"
required: false
mode: standalone
size: 256
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/gb.rs:29-33,77-89, backend/gb-core/src/memory.rs:9,45-63 (DMG_BOOT_ROM_LEN check)"
@@ -224,7 +210,6 @@ files:
system: nintendo-gbc
description: "Game Boy Color boot ROM"
required: false
mode: standalone
min_size: 2048
max_size: 2304
validation: [size]
@@ -239,7 +224,6 @@ files:
system: nintendo-nes
description: "External NES color palette"
required: false
mode: standalone
min_size: 192
max_size: 1536
validation: [size]
+1 -1
View File
@@ -61,7 +61,7 @@ notes: |
the JVM default soundbank in place. VlcDir points at a VLC installation that
vlcj scans for libvlc.
ref: src/media/emulator/media/EmulatorMIDI.java:26-36,
src/main/emulator/ui/swt/Property.java:1860-1901
src/main/emulator/ui/swt/Property.java:1863-1904
files:
- name: M7_EmuSmw7.dll
+4 -5
View File
@@ -2,9 +2,10 @@ emulator: Kronos
type: libretro
core_classification: official_port
source: "https://github.com/libretro/yabause"
source_branch: kronos
upstream: "https://github.com/FCare/Kronos"
profiled_date: "2026-03-24"
source_commit: "8926b0c6c347f8c5c755911ddb0ac695420ffbf8"
source_commit: "3791ffb2221fda61d70aec5cca376418caf05669"
core_version: "v2.6.0"
display_name: "Sega - Saturn/ST-V (Kronos)"
cores:
@@ -60,7 +61,6 @@ files:
# -----------------------------------------------------------
- name: "sega_101.bin"
system: sega-saturn
region: [japan]
priority: 2
required: false
size: 524288
@@ -73,7 +73,6 @@ files:
# -----------------------------------------------------------
- name: "mpr-17933.bin"
system: sega-saturn
region: [north-america, europe]
priority: 3
required: false
size: 524288
@@ -246,7 +245,7 @@ files:
size: 2097152
validation: [size]
note: "ROM cartridge for The King of Fighters '95. Auto-detected via game DB."
source_ref: "yabause/src/utils/src/db.c:43-44, yabause/src/cs0.c:1207-1216"
source_ref: "yabause/src/utils/src/db.c:43-44, yabause/src/sys/memory/src/cs0.c:1526-1535"
- name: "mpr-19367-mx.ic1"
system: sega-saturn
@@ -254,4 +253,4 @@ files:
size: 2097152
validation: [size]
note: "ROM cartridge for Ultraman: Hikari no Kyojin Densetsu. Auto-detected via game DB."
source_ref: "yabause/src/utils/src/db.c:45, yabause/src/cs0.c:1207-1216"
source_ref: "yabause/src/utils/src/db.c:45, yabause/src/sys/memory/src/cs0.c:1526-1535"
+35 -29
View File
@@ -4,7 +4,7 @@ core_classification: community_fork
source: "https://github.com/linappleii/linapple"
upstream: "https://github.com/AppleWin/AppleWin"
profiled_date: "2026-10-04"
source_commit: "02f948d92b0c4df3272ff2ccb0dfcc4daac3e430"
source_commit: "42e4321d60dc066470151f76c1cd3fe5e88a695c"
core_version: "3.0.0"
display_name: "Apple - Apple II (LinApple)"
cores:
@@ -16,24 +16,25 @@ mode: standalone
notes: |
SDL port of AppleWin for Linux. The SourceForge project was abandoned and
its forks were gathered under the linappleii organization
(README.md:163-170). Five frontends build from one core: sdl1, sdl2, sdl3,
(README.md:166-173). Five frontends build from one core: sdl1, sdl2, sdl3,
tui and headless (src/frontends/).
The ROMs the emulator runs are compiled into the binary.
scripts/generate_roms.sh turns res/roms/*.rom into EmbeddedRoms.h and
EmbeddedRoms.cpp, once at configure time and again at build time
(CMakeLists.txt:308-346), each image behind an ENABLE_ROM_* macro
(scripts/generate_roms.sh:97-119). Nineteen images go through the generator:
ten system ROMs, four character generator ROMs and five card ROMs. The
printer card and the clock card carry their firmware as arrays in their own
source files (src/apple2/peripherals/printer/Printer.cpp:30,
(CMakeLists.txt:301-338), each image behind an ENABLE_ROM_* macro
(scripts/generate_roms.sh:97-118). Eighteen images go through the generator:
ten system ROMs, four character generator ROMs and four card ROMs. The
printer card, the Super Serial Card and the clock card carry their firmware
as arrays in their own source files
(src/apple2/peripherals/printer/Printer.cpp:30,
src/apple2/peripherals/super_serial_card/SuperSerialRom.h:16,
src/apple2/peripherals/clock/ClockCard.cpp:20), and the Mockingboard
registers no ROM.
What a macro is set to decides whether a machine model runs at all.
CMakeLists.txt:57-145 leaves the Apple ][, ][+, J-Plus, //e and Enhanced //e
system ROMs ON, along with the Disk II, Super Serial Card and mouse
firmware. The three clone options are OFF: ENABLE_ROM_CLONE_BASE64A,
CMakeLists.txt:57-131 leaves the Apple ][, ][+, J-Plus, //e and Enhanced //e
system ROMs ON, along with the Disk II and mouse firmware. The three clone options are OFF: ENABLE_ROM_CLONE_BASE64A,
ENABLE_ROM_CLONE_PRAVETS and ENABLE_ROM_CLONE_TK3000E
(CMakeLists.txt:95-97). Selecting one of those machine types on a default
build reaches mem_initialize with no rom_data, which prints the model name
@@ -45,14 +46,14 @@ notes: |
A custom ROM takes precedence over anything embedded. load_custom_rom opens
the path as given, then through Path::find_data_file, and refuses a file
below 12288 or above 65536 bytes, which stops the start
(src/frontends/common/AppController.cpp:104-148,228-230). mem_initialize
(src/frontends/common/AppController.cpp:127-171,251-253). mem_initialize
accepts the buffer at exactly 16384 or 12288 bytes, or larger, taking the
trailing 16384 for the //e-class types and the trailing 12288 otherwise
(src/apple2/Memory.cpp:1038-1059). No hash or name is checked; the file is
whatever the user points at.
Character generators are res/charset40*.png, converted to XPM by CMake
(CMakeLists.txt:277-306) and included at src/apple2/Video.cpp:39-43. One of
(CMakeLists.txt:270-299) and included at src/apple2/Video.cpp:39-43. One of
five is chosen from the machine type and the keyboard language
(src/apple2/Video.cpp:1228-1252). The status font and the splash screen are
XPM as well (src/core/Asset.cpp:15-16,57,63). The four *_Video.rom images
@@ -60,7 +61,7 @@ notes: |
Master.dsk is inserted into slot 6 drive 1 at startup unless the command
line names a disk or the configuration autoloads one
(src/frontends/common/AppController.cpp:171-192). asset_find_master_disk
(src/frontends/common/AppController.cpp:194-215). asset_find_master_disk
resolves it through Path::find_data_file (src/core/Asset.cpp:25-39), which
walks the user data and config directories, the executable directory and its
res/ neighbours, the share and etc prefixes beside it, the compiled-in
@@ -80,8 +81,9 @@ notes: |
debugger running without its symbols (src/Debugger/Debugger_Symbols.cpp:495).
Peripheral cards are linked into the executable by default. With
BUILD_SHARED_PERIPHERALS, OFF at CMakeLists.txt:43, each card builds as a
shared object, and peripheral_plugins_init opens every *.so found in the
BUILD_SHARED_PERIPHERALS, OFF at CMakeLists.txt:43, each card that
add_peripheral does not force built-in builds as a shared object
(CMakeLists.txt:554-555,662-666), and peripheral_plugins_init opens every *.so found in the
plugin search paths in either build
(src/apple2/peripherals/Peripheral_Internal.cpp:192-219,
src/core/Util_Path.h:102-114).
@@ -149,7 +151,7 @@ files:
size: 49152
md5: 352fdbcae14c6a8c0398822c7a273309
sha1: f1c779af480b5bda2bdd03950c1201a5c5143bea
source_ref: "CMakeLists.txt:95,99-103; scripts/generate_roms.sh:107; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:99-100,1038-1059,1124-1134"
source_ref: "CMakeLists.txt:95,99-103; scripts/generate_roms.sh:107; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:99-100,1038-1059,1124-1134"
note: >
Larger than a system ROM: mem_initialize takes the trailing 12288 bytes
for this machine type.
@@ -163,7 +165,7 @@ files:
size: 12288
md5: c619b7edfcf021f3b8fd20d9386676ba
sha1: 8bd7ced83e209a15e9b19a05a5ef4b8e996dc1a5
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:109; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:101-102,1038-1059,1124-1134"
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:109; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:101-102,1038-1059,1124-1134"
- name: PRAVETS8M.ROM
required: false
@@ -174,7 +176,7 @@ files:
size: 12288
md5: 76c79535f7cf77973e2c711aa977a124
sha1: f1b4ff018acf95f3355f0d575b66a188d728b687
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:111; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:103-104,1038-1059,1124-1134"
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:111; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:103-104,1038-1059,1124-1134"
- name: PRAVETS8C.ROM
required: false
@@ -185,7 +187,7 @@ files:
size: 16384
md5: 1896d7b98dd940c89f7c8ea899b71006
sha1: c976fe56e57706c161f513a82ba3e0d8cda83904
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:110; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:105-106,1038-1059,1124-1134"
source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:110; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:105-106,1038-1059,1124-1134"
note: >
A //e-class type: mem_initialize takes the trailing 16384 bytes when the
file is larger.
@@ -199,7 +201,7 @@ files:
size: 16384
md5: 8d84b614b545d4eec8799d3f325332cb
sha1: f163e5753c18ff0e812a448e8da406f102600edf
source_ref: "CMakeLists.txt:97,111-115; scripts/generate_roms.sh:112; src/frontends/common/AppController.cpp:125-136; src/apple2/Memory.cpp:107-108,1038-1059,1124-1134"
source_ref: "CMakeLists.txt:97,111-115; scripts/generate_roms.sh:112; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:107-108,1038-1059,1124-1134"
note: >
A //e-class type: mem_initialize takes the trailing 16384 bytes when the
file is larger.
@@ -209,7 +211,7 @@ analysis:
mechanism: >
res/roms/*.rom compiled into EmbeddedRoms.cpp by scripts/generate_roms.sh
at configure and build time, each behind an ENABLE_ROM_* macro
source_ref: "CMakeLists.txt:57-145,308-346; scripts/generate_roms.sh:97-119"
source_ref: "CMakeLists.txt:57-131,301-338; scripts/generate_roms.sh:97-118"
extraction: "hashes computed from the res/roms images the generator reads"
system_roms:
@@ -356,7 +358,7 @@ analysis:
image: res/roms/DISK2.rom
cmake_option: ENABLE_ROM_DISK2
default: on
source_ref: "CMakeLists.txt:118,121-125; scripts/generate_roms.sh:115; src/apple2/peripherals/disk/Disk.cpp:1125-1127"
source_ref: "CMakeLists.txt:118,120-124; scripts/generate_roms.sh:115; src/apple2/peripherals/disk/Disk.cpp:1125-1127"
size: 256
md5: 2020aa1413ff77fe29353f3ee72dc295
sha1: d4181c9f046aafc3fb326b381baac809d9e38d16
@@ -367,7 +369,7 @@ analysis:
image: res/roms/DISK2-P6.rom
cmake_option: ENABLE_ROM_DISK2
default: on
source_ref: "scripts/generate_roms.sh:117; src/apple2/peripherals/disk/Disk.cpp:618-624; CMakeLists.txt:942-955"
source_ref: "scripts/generate_roms.sh:117; src/apple2/peripherals/disk/Disk.cpp:618-624; CMakeLists.txt:957-970"
size: 256
md5: 5f1be0c1cdff26f5956eef9643911886
sha1: bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4
@@ -389,14 +391,18 @@ analysis:
- device: "Super Serial Card"
slot: 2
symbol: g_rom_ssc
symbol: super_serial_rom
image: res/roms/SSC.rom
cmake_option: ENABLE_ROM_SSC
default: on
source_ref: "CMakeLists.txt:119,127-131; scripts/generate_roms.sh:118; src/apple2/peripherals/super_serial_card/SuperSerial.cpp:250-254"
source_ref: "src/apple2/peripherals/super_serial_card/SuperSerialRom.h:8-16; src/apple2/peripherals/super_serial_card/SuperSerial.cpp:356-358; CMakeLists.txt:884-887"
size: 2048
md5: 67c0d61ab0911183faf05270f881a97e
sha1: 6dab633470c6bc4cb3e81d09fda46597caf8ee57
note: >
Not generated and behind no cmake option: the card carries the 2048
bytes as an array in SuperSerialRom.h, the last page mapped at $Cn00
and the whole image at $C800. The generator does not read
res/roms/SSC.rom; a build test pins its SHA-1 as the reference of
that transcription.
- device: "Mouse interface card"
slot: 4
@@ -404,7 +410,7 @@ analysis:
image: res/roms/MouseInterface.rom
cmake_option: ENABLE_ROM_MOUSE
default: on
source_ref: "CMakeLists.txt:133,135-139; scripts/generate_roms.sh:119; src/apple2/peripherals/mouse/Mouse.cpp:537-541"
source_ref: "CMakeLists.txt:126,128-132; scripts/generate_roms.sh:118; src/apple2/peripherals/mouse/Mouse.cpp:537-541"
size: 2048
md5: 22563ab338024dac7b03510371d49c57
sha1: 3a9d881a8a8d30f55b9719aceebbcf717f829d6f
@@ -413,7 +419,7 @@ analysis:
slot: 1
symbol: printer_rom
image: res/roms/Parallel.rom
source_ref: "src/apple2/peripherals/printer/Printer.cpp:30-53,215; CMakeLists.txt:881-883"
source_ref: "src/apple2/peripherals/printer/Printer.cpp:30-53,215; CMakeLists.txt:872-874"
size: 256
md5: 5902996f16dc78fc013f6e1db14805b3
sha1: c75c751589cbcc1ad4ab4f63676af7abadd86f5b
+5 -5
View File
@@ -36,7 +36,7 @@ files:
min_size: 4194304
max_size: 8388608
validation: [size]
source_ref: "pcsx2/ps2/BiosTools.cpp:231-254,267-322"
source_ref: "pcsx2/ps2/BiosTools.cpp:33-34,63-180,249-274,286-348"
note: >
Scans pcsx2/bios/ for any file between 4 MB and 8 MB. Validates via romdir
structure parsing (RESET + ROMVER entries). User selects BIOS via core option
@@ -47,7 +47,7 @@ files:
required: false
max_size: 4194304
description: "DVD player ROM"
source_ref: "pcsx2/ps2/BiosTools.cpp:190-211,314"
source_ref: "pcsx2/ps2/BiosTools.cpp:189-229,339"
note: >
DVD player ROM. Tries <biospath>.rom1 (appended) then <biosbase>.rom1
(extension replaced). Silently skipped if not found.
@@ -57,7 +57,7 @@ files:
required: false
max_size: 524288
description: "Chinese ROM extension"
source_ref: "pcsx2/ps2/BiosTools.cpp:190-211,315"
source_ref: "pcsx2/ps2/BiosTools.cpp:189-229,340"
note: >
Chinese region ROM extension. Same naming convention as rom1.
Only present on Chinese region consoles.
@@ -68,7 +68,7 @@ files:
hle_fallback: true
size: 1024
description: "NVRAM / EEPROM data"
source_ref: "pcsx2/CDVD/CDVD.cpp:224-267"
source_ref: "pcsx2/CDVD/CDVD.cpp:196-227"
note: >
Console EEPROM data (language, timezone, region, iLink ID, OSD settings).
Path derived from BIOS path with extension replaced to .nvm.
@@ -80,7 +80,7 @@ files:
hle_fallback: true
size: 4
description: "Mechacon version"
source_ref: "pcsx2/CDVD/CDVD.cpp:255-266"
source_ref: "pcsx2/CDVD/CDVD.cpp:229-245"
note: >
Mechacon (disc drive controller) version as u32.
Auto-created with default 0x00020603 if missing.
+1 -1
View File
@@ -3183,7 +3183,7 @@ files:
required: true
category: bios_zip
system: casio-loopy
source_ref: "src/mame/casio/casloopy.cpp:2105-2462"
source_ref: "src/mame/casio/casloopy.cpp:2097-2105"
contents:
- name: hd6437021.lsi302
description: SH-1 CPU internal mask ROM
+1 -1
View File
@@ -680,7 +680,7 @@ files:
required: true
category: bios_zip
system: casio-loopy
source_ref: "src/mame/casio/casloopy.cpp:2105-2462"
source_ref: "src/mame/casio/casloopy.cpp:2097-2105"
contents:
- name: hd6437021.lsi302
description: SH-1 CPU internal mask ROM
+2 -2
View File
@@ -292,7 +292,7 @@ files:
- name: "scph5502.bin"
system: sony-playstation
description: "SCPH-5502 / v3.0E BIOS"
region: [europe]
region: [europe, oceania]
required: true
size: 524288
sha256: "1faaa18fa820a0225e488d9f086296b8e6c46df739666093987ff7d8fd352c09"
@@ -376,7 +376,7 @@ files:
- name: "epr-17952a.ic8"
system: sega-stv
description: "ST-V BIOS (North America)"
region: [north-america]
region: [north-america, south-korea, asia-pal, brazil, latin-america]
required: true
size: 524288
validation: [size]
-6
View File
@@ -25,28 +25,24 @@ notes: >
files:
- name: "syscard3.pce"
description: "CD-ROM System Card 3.0 (Japan)"
region: [japan]
required: true
source_ref: "libretro.cpp:1051-1052, mednafen/settings.cpp:40"
note: "Default value for pce_cdbios option."
- name: "syscard2.pce"
description: "CD-ROM System Card 2.0 (Japan)"
region: [japan]
required: false
source_ref: "libretro.cpp:1053-1054"
note: "pce_cdbios = 'System Card 2'."
- name: "syscard1.pce"
description: "CD-ROM System Card 1.0 (Japan)"
region: [japan]
required: false
source_ref: "libretro.cpp:1055-1056"
note: "pce_cdbios = 'System Card 1'."
- name: "gexpress.pce"
description: "Games Express CD Card"
region: [japan]
required: false
aliases: ["gecard.pce"]
source_ref: "libretro.cpp:1057-1058, mednafen/settings.cpp:41, mednafen/pce/pce.cpp:373-411"
@@ -54,14 +50,12 @@ files:
- name: "syscard3u.pce"
description: "CD-ROM System Card 3.0 (US / TurboGrafx-CD)"
region: [north-america]
required: false
source_ref: "libretro.cpp:1059-1060"
note: "pce_cdbios = 'System Card 3 US'. Not in .info."
- name: "syscard2u.pce"
description: "CD-ROM System Card 2.0 (US / TurboGrafx-CD)"
region: [north-america]
required: false
source_ref: "libretro.cpp:1061-1062"
note: "pce_cdbios = 'System Card 2 US'. Not in .info."
-6
View File
@@ -23,28 +23,24 @@ notes: >
files:
- name: "syscard3.pce"
description: "CD-ROM System Card 3.0 (Japan)"
region: [japan]
required: true
source_ref: "libretro.c:65, libretro.c:1896-1901"
note: "Default value for pce_fast_cdbios option."
- name: "syscard2.pce"
description: "CD-ROM System Card 2.0 (Japan)"
region: [japan]
required: false
source_ref: "libretro.c:1903"
note: "pce_fast_cdbios = 'System Card 2'."
- name: "syscard1.pce"
description: "CD-ROM System Card 1.0 (Japan)"
region: [japan]
required: false
source_ref: "libretro.c:1905"
note: "pce_fast_cdbios = 'System Card 1'."
- name: "gexpress.pce"
description: "Games Express CD Card"
region: [japan]
required: false
aliases: ["gecard.pce"]
source_ref: "libretro.c:1906-1907"
@@ -52,14 +48,12 @@ files:
- name: "syscard3u.pce"
description: "CD-ROM System Card 3.0 (US / TurboGrafx-CD)"
region: [north-america]
required: false
source_ref: "libretro.c:1908-1909"
note: "pce_fast_cdbios = 'System Card 3 US'. Not in .info."
- name: "syscard2u.pce"
description: "CD-ROM System Card 2.0 (US / TurboGrafx-CD)"
region: [north-america]
required: false
source_ref: "libretro.c:1910-1911"
note: "pce_fast_cdbios = 'System Card 2 US'. Not in .info."
+9 -9
View File
@@ -30,7 +30,7 @@ notes: |
mgba_skip_bios (default OFF) - skip the boot animation even if loaded
The libretro port resolves BIOS filenames in retro_load_game()
(src/platform/libretro/libretro.c:2091-2148). It picks the filename
(src/platform/libretro/libretro.c:2060-2118). It picks the filename
based on detected model:
GBA -> gba_bios.bin
GB (DMG/MGB) -> gb_bios.bin
@@ -38,7 +38,7 @@ notes: |
SGB -> sgb_bios.bin
SGB2 -> gb_bios.bin (falls to default, missing case)
The standalone core (src/gb/core.c:637-684) correctly maps SGB2 to
The standalone core (src/gb/core.c:649-696) correctly maps SGB2 to
sgb_bios.bin (marked TODO for a dedicated file). The libretro port
omits GB_MODEL_SGB2 from its switch, so SGB2 falls to default.
@@ -57,7 +57,7 @@ files:
size: 16384 # 16 KB (0x4000, GBA_SIZE_BIOS)
validation: [size]
note: "GBA BIOS. HLE replacement built in. Real BIOS adds boot logo and full SWI accuracy."
source_ref: "src/platform/libretro/libretro.c:2099"
source_ref: "src/platform/libretro/libretro.c:2068"
# -------------------------------------------------------
# Game Boy - boot ROM (optional, skip fallback)
@@ -68,7 +68,7 @@ files:
size: 256 # 256 B (0x100)
validation: [crc32]
note: "DMG/MGB boot ROM. Scrolling Nintendo logo. Skipped if absent."
source_ref: "src/platform/libretro/libretro.c:971"
source_ref: "src/platform/libretro/libretro.c:2104"
# -------------------------------------------------------
# Game Boy Color - boot ROM (optional, skip fallback)
@@ -79,7 +79,7 @@ files:
size: 2304 # 2304 B (0x900)
validation: [crc32]
note: "CGB boot ROM. Used for CGB, AGB (GBA in GB mode), and SCGB models."
source_ref: "src/platform/libretro/libretro.c:2127"
source_ref: "src/platform/libretro/libretro.c:2097"
# -------------------------------------------------------
# Super Game Boy - boot ROM (optional, skip fallback)
@@ -89,14 +89,14 @@ files:
required: false
size: 256 # 256 B (0x100)
validation: [crc32]
note: "SGB boot ROM. SGB2 maps here in standalone (src/gb/core.c:643) but falls to gb_bios.bin in libretro."
source_ref: "src/platform/libretro/libretro.c:2130"
note: "SGB boot ROM. SGB2 maps here in standalone (src/gb/core.c:655) but falls to gb_bios.bin in libretro."
source_ref: "src/platform/libretro/libretro.c:2100"
platform_details:
gba:
bios_size: 16384 # 16 KB
hle_bios: true
source_ref: "src/gba/hle-bios.c, src/gba/gba.c:520-551"
source_ref: "src/gba/hle-bios.c, src/gba/gba.c:513-552"
note: |
GBALoadBIOS() validates size (must be exactly 0x4000) then computes
an internal checksum. Two official checksums are recognized:
@@ -125,7 +125,7 @@ platform_details:
sgb:
bios_size: 256 # 256 B
hle_bios: false
source_ref: "src/gb/gb.c:570-605, src/gb/core.c:642-644"
source_ref: "src/gb/gb.c:570-605, src/gb/core.c:654-656"
note: |
Accepted SGB CRC32 checksums:
SGB = 0xEC8A83B9, SGB2 = 0x53D0DD63
+10 -8
View File
@@ -98,7 +98,7 @@ notes: |
MSX.emu/src/blueMSX/Memory/romMapperDRAM.c:88-99), and the Philips FDC, Panasonic
FDC and MoonSound mappers test nothing at all
(MSX.emu/src/blueMSX/Memory/romMapperPhilipsFdc.c:139-146,
MSX.emu/src/blueMSX/Memory/romMapperTC8566AF.c:236-262,
MSX.emu/src/blueMSX/Memory/romMapperTC8566AF.c:228-255,
MSX.emu/src/blueMSX/Memory/romMapperMoonsound.c:129-158).
The ROM database is compiled in. mediaDbGuessRom matches a cartridge's SHA-1 against
@@ -254,7 +254,7 @@ files:
size: 408
sha1: "483b2c34fcb3ddcf650314e45104f358ef74c98b"
description: "MSX1 machine definition"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/system.ccm:75-76, MSX.emu/src/main/EmuMenuViews.cc:32-97"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/EmuMenuViews.cc:32-97"
- name: "config.ini"
path: "Machines/MSX2/config.ini"
@@ -264,7 +264,8 @@ files:
size: 649
sha1: "460ded0dbfc0285490da87a446b0321b6496aa5b"
description: "MSX2 machine definition, the default MSX machine"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/system.ccm:75-76, MSX.emu/src/main/EmuMenuViews.cc:32-97"
note: "Default of the machine name option (MSX.emu/src/main/system.ccm:75)."
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/EmuMenuViews.cc:32-97"
- name: "config.ini"
path: "Machines/MSX2+/config.ini"
@@ -274,7 +275,7 @@ files:
size: 773
sha1: "cb7d14a17c4f4632f17ba5a64160cdd876dd6010"
description: "MSX2+ machine definition"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/system.ccm:75-76, MSX.emu/src/main/EmuMenuViews.cc:32-97"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/EmuMenuViews.cc:32-97"
- name: "config.ini"
path: "Machines/MSXturboR/config.ini"
@@ -284,7 +285,7 @@ files:
size: 941
sha1: "9836d109ec7879374dcd044da149f1b5aafd4664"
description: "MSX turbo R machine definition"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/system.ccm:75-76, MSX.emu/src/main/EmuMenuViews.cc:32-97"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/EmuMenuViews.cc:32-97"
- name: "config.ini"
path: "Machines/COL - ColecoVision/config.ini"
@@ -294,7 +295,8 @@ files:
size: 347
sha1: "0f0b7b73ba6f8677dfc5c824bb3edf6df2ff653e"
description: "ColecoVision machine definition, the default Coleco machine"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/system.ccm:75-76, MSX.emu/src/main/EmuMenuViews.cc:32-97"
note: "Default of the machine name option (MSX.emu/src/main/system.ccm:76)."
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468, MSX.emu/src/main/RomLoader.cc:135-144, MSX.emu/src/main/EmuMenuViews.cc:32-97"
- name: "MSX.rom"
path: "Machines/Shared Roms/MSX.rom"
@@ -394,7 +396,7 @@ files:
required: true
size: 16384
description: "Panasonic floppy disk ROM of the MSX2+ machine"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468,1168-1181, MSX.emu/src/main/RomLoader.cc:57-92,94-133, MSX.emu/src/blueMSX/Memory/romMapperTC8566AF.c:236-262"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468,1168-1181, MSX.emu/src/main/RomLoader.cc:57-92,94-133, MSX.emu/src/blueMSX/Memory/romMapperTC8566AF.c:228-255"
- name: "MSXTR.rom"
path: "Machines/Shared Roms/MSXTR.rom"
@@ -434,7 +436,7 @@ files:
required: true
size: 65536
description: "MSX-DOS 2.3 disk ROM of the turbo R machine"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468,1168-1181, MSX.emu/src/main/RomLoader.cc:57-92,94-133, MSX.emu/src/blueMSX/Memory/romMapperTC8566AF.c:236-262"
source_ref: "MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468,1168-1181, MSX.emu/src/main/RomLoader.cc:57-92,94-133, MSX.emu/src/blueMSX/Memory/romMapperTC8566AF.c:228-255"
- name: "coleco.rom"
path: "Machines/COL - ColecoVision/coleco.rom"
+3 -2
View File
@@ -261,8 +261,9 @@ files:
Named in the audio BIOS region by irrmaze, neogeo, svcboot, svcplus,
svcplusa and svcsplus, and reached in this archive by the parent lookup of
irrmaze. The region is exempt from the fatal path and the buffer it lands
in is never read by the emulation.
source_ref: "NEO.emu/res/romsets/irrmaze.drv, NEO.emu/src/gngeo/roms.c:1034-1039,1413-1418,1440-1461, NEO.emu/src/gngeo/roms.h:63"
in is never read by the emulation
(NEO.emu/src/gngeo/roms.c:1034-1039,1413-1418,1440-1461).
source_ref: "NEO.emu/res/romsets/irrmaze.drv, NEO.emu/src/gngeo/roms.h:9,62"
- name: "gngeo_data.zip"
system: snk-neogeo-mvs
+6 -4
View File
@@ -151,16 +151,18 @@ files:
source_ref: "cbus/ideio.c:1928-1930, cbus/ideio.c:1944-1981"
# -- SCSI BIOS ROM --
# Loaded by scsiio.c:219. 16 KB (0x4000). Falls back to scsibios[] stub.
# Read into a 0x4000 buffer; any non-empty read is kept. Falls back to the
# scsibios[] stub.
- name: "scsi.rom"
path: "np2kai/scsi.rom"
size: 16384
max_size: 16384
required: false
hle_fallback: true
note: >
SCSI controller BIOS ROM (16 KB). The core includes a built-in
SCSI controller BIOS ROM, up to 16 KB: the full-size test is commented
out and a shorter file is used as read. The core includes a built-in
SCSI BIOS stub as fallback.
source_ref: "cbus/scsiio.c:214-231"
source_ref: "cbus/scsiio.c:720-732"
# -- SASI BIOS ROM --
# Loaded by sasiio.c:455. 4 KB (0x1000). Falls back to sasibios[] stub.
+3 -2
View File
@@ -61,9 +61,10 @@ files:
md5: "23bf80c259f182f582beeb368aba98f5"
required: true
bundled: true
source_ref: "src/libretro.cpp:332-371, src/NuonEnvironment.cpp:595, src/NuonEnvironment.cpp:617-619, src/bios.cpp:566-582, src/coff.cpp:47-70"
source_ref: "src/libretro.cpp:332-371, src/NuonEnvironment.cpp:595, src/NuonEnvironment.cpp:617-619, src/bios.cpp:566-582"
note: >
Loaded into MPE3 by InitBios. The 2007 build shipped in the release
Loaded into MPE3 by InitBios through LoadCoffFile, which rejects a file
whose magic is not 0x0120 (src/coff.cpp:47-71). The 2007 build shipped in the release
archives (19410 bytes, sha1 4f42ed8f5e171cc79112d1c1e201381e83b1fc0d)
loads the same way.
-4
View File
@@ -34,7 +34,6 @@ notes: |
files:
- name: "o2rom.bin"
system: odyssey2
region: [north-america]
required: true
size: 1024
md5: "562d5ebf9e030a40d6fabfc2f33139fd"
@@ -46,7 +45,6 @@ files:
- name: "c52.bin"
system: videopac
region: [europe]
required: true
size: 1024
md5: "f1071cdb0b6b10dde94d3bc8a6146387"
@@ -58,7 +56,6 @@ files:
- name: "g7400.bin"
system: videopac
region: [europe]
required: true
size: 1024
md5: "c500ff71236068e0dc0d0603d265ae76"
@@ -70,7 +67,6 @@ files:
- name: "jopac.bin"
system: videopac
region: [france]
required: true
size: 1024
md5: "279008e4a0db2dc5f1c048853b033828"
-13
View File
@@ -41,7 +41,6 @@ files:
# -------------------------------------------------------
- name: "panafz1.bin"
system: 3do
region: [north-america]
required: true
size: 1048576 # 1 MB
md5: "f47264dd47fe30f73ab3c010015c155b"
@@ -54,7 +53,6 @@ files:
# -------------------------------------------------------
- name: "panafz1j.bin"
system: 3do
region: [japan]
required: true
size: 1048576 # 1 MB
md5: "a496cfdded3da562759be3561317b605"
@@ -67,7 +65,6 @@ files:
# -------------------------------------------------------
- name: "panafz1j-norsa.bin"
system: 3do
region: [japan]
required: false
size: 1048576 # 1 MB
md5: "f6c71de7470d16abe4f71b1444883dc8"
@@ -80,7 +77,6 @@ files:
# -------------------------------------------------------
- name: "panafz10.bin"
system: 3do
region: [north-america]
required: true
size: 1048576 # 1 MB
md5: "51f2f43ae2f3508a14d9f56597e2d3ce"
@@ -93,7 +89,6 @@ files:
# -------------------------------------------------------
- name: "panafz10-norsa.bin"
system: 3do
region: [north-america]
required: false
size: 1048576 # 1 MB
md5: "1477bda80dc33731a65468c1f5bcbee9"
@@ -106,7 +101,6 @@ files:
# -------------------------------------------------------
- name: "panafz10e-anvil.bin"
system: 3do
region: [europe]
required: true
size: 1048576 # 1 MB
md5: "a48e6746bd7edec0f40cff078f0bb19f"
@@ -119,7 +113,6 @@ files:
# -------------------------------------------------------
- name: "panafz10e-anvil-norsa.bin"
system: 3do
region: [europe]
required: false
size: 1048576 # 1 MB
md5: "cf11bbb5a16d7af9875cca9de9a15e09"
@@ -132,7 +125,6 @@ files:
# -------------------------------------------------------
- name: "goldstar.bin"
system: 3do
region: [north-america]
required: true
size: 1048576 # 1 MB
md5: "8639fd5e549bd6238cfee79e3e749114"
@@ -145,7 +137,6 @@ files:
# -------------------------------------------------------
- name: "sanyotry.bin"
system: 3do
region: [japan]
required: true
size: 1048576 # 1 MB
md5: "35fa1a1ebaaeea286dc5cd15487c13ea"
@@ -158,7 +149,6 @@ files:
# -------------------------------------------------------
- name: "3do_arcade_saot.bin"
system: 3do
region: [north-america]
required: false
size: 524288 # 512 KB
md5: "8970fc987ab89a7f64da9f8a8c4333ff"
@@ -171,7 +161,6 @@ files:
# -------------------------------------------------------
- name: "panafz1-kanji.bin"
system: 3do
region: [japan]
required: false
size: 933636
md5: "b8dc97f778a6245c58e064b0312e8281"
@@ -184,7 +173,6 @@ files:
# -------------------------------------------------------
- name: "panafz1j-kanji.bin"
system: 3do
region: [japan]
required: false
size: 1048576 # 1 MB
md5: "c23fb5d5e6bb1c240d02cf968972be37"
@@ -197,7 +185,6 @@ files:
# -------------------------------------------------------
- name: "panafz10ja-anvil-kanji.bin"
system: 3do
region: [japan]
required: false
size: 1048576 # 1 MB
md5: "428577250f43edc902ea239c50d2240d"
+21 -3
View File
@@ -78,7 +78,7 @@ files:
note: "Any file in the BIOS folder whose romdir holds RESET and ROMVER is accepted, whatever its name or size. Naming convention ps2-VVVVr-YYYYMMDD.bin carries version, region and date."
source_ref: "pcsx2/ps2/BiosTools.cpp:261-323, pcsx2/ps2/BiosTools.cpp:74-167"
- name: rom1.bin
- name: ps2-0230a-20080220.rom1
system: sony-playstation-2
required: false
max_size: 262144
@@ -86,7 +86,7 @@ files:
note: "Tried as {bios}.rom1 then {biosbase}.rom1. Read into the 256 KB ROM1 region and truncated to it. Logged and skipped when absent."
source_ref: "pcsx2/ps2/BiosTools.cpp:190-229, pcsx2/ps2/BiosTools.cpp:298, pcsx2/MemoryTypes.h:22"
- name: ROM2.BIN
- name: ps2-0230a-20080220.rom2
system: sony-playstation-2
required: false
max_size: 524288
@@ -94,7 +94,7 @@ files:
note: "Tried as {bios}.rom2 then {biosbase}.rom2. Read into the 512 KB ROM2 region and truncated to it. Present on Chinese region consoles."
source_ref: "pcsx2/ps2/BiosTools.cpp:190-229, pcsx2/ps2/BiosTools.cpp:299, pcsx2/MemoryTypes.h:23"
- name: EROM.BIN
- name: ps2-0230a-20080220.erom
system: sony-playstation-2
required: false
max_size: 1835008
@@ -102,6 +102,24 @@ files:
note: "Tried as {bios}.erom then {biosbase}.erom. Read into the 1.75 MB EROM region and truncated to it."
source_ref: "pcsx2/ps2/BiosTools.cpp:190-229, pcsx2/ps2/BiosTools.cpp:300, pcsx2/MemoryTypes.h:24"
- name: ps2-0230a-20080220.nvm
system: sony-playstation-2
required: false
hle_fallback: true
min_size: 1024
description: "Console NVRAM"
note: "Read at the BIOS path with the extension set to nvm. A substitute is written when the file is shorter than 1024 bytes."
source_ref: "pcsx2/CDVD/CDVD.cpp:138-149"
- name: ps2-0230a-20080220.mec
system: sony-playstation-2
required: false
hle_fallback: true
size: 4
description: "Mechacon version"
note: "Read at the BIOS path with the extension set to mec. A 4-byte substitute (03 06 02 00) is written when the file is shorter."
source_ref: "pcsx2/CDVD/CDVD.cpp:93-122"
- name: eeprom.dat
system: sony-playstation-2
required: false
+44 -26
View File
@@ -15,7 +15,7 @@ systems: [sony-playstation-2]
notes: |
Filename-agnostic BIOS detection. Scans bios/ for any file between 4-8 MB
with valid romdir structure (RESET + ROMVER entries). No hash validation.
Companion files (.rom1, .rom2, .nvm, .mec) derive paths from selected BIOS.
Companion files (.rom1, .rom2, .nvm, .mec) derive their names from the selected BIOS.
ROM1 (DVD player) and ROM2 (Chinese extension) silently skipped if missing.
NVM and MEC auto-created with defaults if missing.
@@ -25,26 +25,38 @@ files:
min_size: 4194304
max_size: 8388608
validation: [size]
source_ref: "pcsx2/ps2/BiosTools.cpp:258-362"
source_ref: "pcsx2/ps2/BiosTools.cpp:16-17,80-197,258-283,317-370"
note: "Accepts any file 4-8 MB with valid romdir (RESET + ROMVER). Naming convention ps2-VVVVr-YYYYMMDD.bin (version, region, date)."
- name: rom1.bin
- name: ps2-0230a-20080220.rom1
required: false
max_size: 4194304
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241,366"
note: "DVD player ROM. Tries {biospath}.rom1 then {biosbase}.rom1. Silently skipped if missing."
description: "DVD player ROM"
note: "Tried as {bios}.rom1 then {biosbase}.rom1, opened case-insensitively. Copied to the ROM1 region. Logged and skipped when absent."
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241, pcsx2/ps2/BiosTools.cpp:366"
- name: ROM2.BIN
- name: ps2-0230a-20080220.rom2
required: false
max_size: 4194304
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241,367"
note: "Chinese ROM extension. Same naming convention as rom1. Only present on Chinese region consoles."
description: "Chinese ROM extension"
note: "Same two-step naming as rom1. Only Chinese region consoles carry one."
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241, pcsx2/ps2/BiosTools.cpp:367"
- name: EROM.BIN
- name: ps2-0230a-20080220.nvm
required: false
source_ref: "pcsx2/ps2/BiosTools.cpp"
note: "Extended ROM. Present in some BIOS dumps but not loaded by PCSX2 code via LoadExtraRom."
path: null
hle_fallback: true
size: 1024
description: "Console NVRAM"
note: "Read at the BIOS path with the extension replaced by nvm, opened case-insensitively. Built in memory from region defaults when absent or blank."
source_ref: "pcsx2/CDVD/CDVD.cpp:165-189"
- name: ps2-0230a-20080220.mec
required: false
hle_fallback: true
size: 4
description: "Mechacon version"
note: "Read at the BIOS path with the extension replaced by mec. Defaults to 0x00020603 and is written back when it cannot be read."
source_ref: "pcsx2/CDVD/CDVD.cpp:190-204"
- name: eeprom.dat
required: false
@@ -54,22 +66,28 @@ files:
note: "DEV9 network adapter EEPROM. Falls back to built-in defaults if missing."
- name: GameIndex.yaml
path: pcsx2/resources/GameIndex.yaml
path: resources/GameIndex.yaml
required: false
mode: libretro
source_ref: "pcsx2/GameDatabase.cpp:46, pcsx2/GameDatabase.cpp:896"
note: "Game compatibility database. OSD warning if missing."
bundled: true
category: game_data
description: "per-title compatibility and fix database"
source_ref: "pcsx2/GameDatabase.cpp:39, pcsx2/GameDatabase.cpp:1026-1035"
note: "Read from the resources directory shipped with the application. Console error and no per-title fixes if missing."
- name: cheats_ws.zip
path: pcsx2/resources/cheats_ws.zip
- name: RedumpDatabase.yaml
path: resources/RedumpDatabase.yaml
required: false
mode: libretro
source_ref: "pcsx2/VMManager.cpp:348-361"
note: "Widescreen patches archive."
bundled: true
category: game_data
description: "disc hash database"
source_ref: "pcsx2/GameDatabase.cpp:1133, pcsx2/GameDatabase.cpp:1188-1197"
note: "Read from the resources directory shipped with the application, used to name a disc from its dump."
- name: cheats_ni.zip
path: pcsx2/resources/cheats_ni.zip
- name: patches.zip
path: resources/patches.zip
required: false
mode: libretro
source_ref: "pcsx2/VMManager.cpp:383-396"
note: "No-interlacing patches archive."
bundled: true
category: game_data
description: "built-in game patch archive"
source_ref: "pcsx2/Patch.cpp:117, pcsx2/Patch.cpp:289-318"
note: "Opened read only from the resources directory shipped with the application and searched for the pnach matching the running serial and CRC. Widescreen and no-interlacing patches live inside it."
+8 -8
View File
@@ -29,7 +29,7 @@ files:
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[0])"
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[0])"
note: "Preferred JP BIOS, searched first by exact filename."
# -- Region: North America (PSX_REGION_US = 0) --
@@ -41,19 +41,19 @@ files:
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[1])"
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[1])"
note: "Preferred US BIOS, searched first by exact filename."
# -- Region: Europe (PSX_REGION_EU = 2) --
- name: "scph5502.bin"
description: "SCPH-5502 (v3.0 01-06-97 E)"
region: [europe]
region: [europe, oceania]
size: 524288
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[2])"
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[2])"
note: "Preferred EU BIOS, searched first by exact filename."
# -- Fallback BIOS filenames (searched in order after scph550x) --
@@ -65,7 +65,7 @@ files:
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[3])"
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[3])"
note: "Region detected from content at runtime. Must be 512 KB in libretro context."
- name: "scph101.bin"
@@ -75,7 +75,7 @@ files:
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[4])"
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[4])"
note: "PSone slim model."
- name: "scph7001.bin"
@@ -85,7 +85,7 @@ files:
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[5])"
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[5])"
- name: "scph1001.bin"
description: "SCPH-1001 (v2.2 12-04-95 A)"
@@ -94,7 +94,7 @@ files:
required: false
hle_fallback: true
validation: [size]
source_ref: "frontend/libretro.c:3737-3740 (listed_bios[6])"
source_ref: "frontend/libretro.c:3864-3867 (listed_bios[6])"
note: "Original US model. Last in the explicit filename search list."
# -- Dynamic scan fallback --
+1 -1
View File
@@ -84,7 +84,7 @@ platform_details:
size: 4096
load_priority:
source_ref: "source/PokeMini.c:515-523"
source_ref: "source/PokeMini.c:500-509"
note: |
During PokeMini_Reset(), the core first reloads FreeBIOS as a
safe baseline, then attempts to load bios.min from disk. If
-33
View File
@@ -37,7 +37,6 @@ files:
region: [north-america]
size: 2097152
required: false
mode: standalone
hle_fallback: true
note: "GameCube NTSC-U boot ROM. HLE available but real IPL needed for GC menu boot and accurate fonts"
source_ref: "Source/Core/Common/CommonPaths.h:138, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:109-110"
@@ -47,7 +46,6 @@ files:
region: [europe]
size: 2097152
required: false
mode: standalone
hle_fallback: true
note: "GameCube PAL boot ROM"
source_ref: "Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:184"
@@ -57,7 +55,6 @@ files:
region: [japan]
size: 2097152
required: false
mode: standalone
hle_fallback: true
note: "GameCube NTSC-J boot ROM. JAP is the legacy directory name"
source_ref: "Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:186"
@@ -70,7 +67,6 @@ files:
path: "GC/dsp_rom.bin"
size: 8192
required: false
mode: standalone
hle_fallback: true
validation: [size]
known_hash_adler32: "0x66f334fe"
@@ -82,7 +78,6 @@ files:
path: "GC/dsp_coef.bin"
size: 4096
required: false
mode: standalone
hle_fallback: true
validation: [size]
known_hash_adler32: "0xf3b93527"
@@ -98,7 +93,6 @@ files:
path: "GC/font_western.bin"
size: 9589
required: false
mode: standalone
hle_fallback: true
note: "Windows-1252 font for GC/Wii text rendering. Free alternative bundled, real one from IPL dump preferred"
source_ref: "Source/Core/Common/CommonPaths.h:132, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:131,203-218"
@@ -107,7 +101,6 @@ files:
path: "GC/font_japanese.bin"
size: 303693
required: false
mode: standalone
hle_fallback: true
note: "Shift-JIS font for Japanese text. Free alternative bundled, real one from IPL dump preferred"
source_ref: "Source/Core/Common/CommonPaths.h:135, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:130"
@@ -118,7 +111,6 @@ files:
- name: "gba_bios.bin"
path: "GBA/gba_bios.bin"
required: false
mode: standalone
hle_fallback: true
note: "GBA BIOS for GC-GBA link feature (uses integrated mGBA). Path configurable in settings"
source_ref: "Source/Core/Common/CommonPaths.h:144, Source/Core/Core/HW/GBACore.cpp:344-361"
@@ -127,7 +119,6 @@ files:
- name: "SYSCONF"
path: "Wii/shared2/sys/SYSCONF"
required: false
mode: standalone
hle_fallback: true
note: "Wii system configuration. Auto-generated by PrimeHack, can be imported from NAND backup"
source_ref: "Source/Core/Common/CommonPaths.h:118, Source/Core/Core/WiiRoot.cpp:266"
@@ -136,7 +127,6 @@ files:
path: "Wii/title/00000001/00000002/data/setting.txt"
size: 256
required: false
mode: standalone
hle_fallback: true
note: "Wii region/language settings. Auto-generated during Wii boot emulation"
source_ref: "Source/Core/Common/CommonPaths.h:152, Source/Core/Core/Boot/Boot_BS2Emu.cpp:377-454"
@@ -145,7 +135,6 @@ files:
- name: "nand.bin"
path: null
required: false
mode: standalone
hle_fallback: true
note: "BootMii NAND backup. Can be imported to populate Wii NAND with channels, saves, system menu"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:26-89"
@@ -154,7 +143,6 @@ files:
path: null
size: 1024
required: false
mode: standalone
hle_fallback: true
note: "OTP/SEEPROM dump (Wii encryption keys). Needed if not appended to nand.bin for NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:19,76-88"
@@ -163,7 +151,6 @@ files:
- name: "WiiSD.raw"
path: "Load/WiiSD.raw"
required: false
mode: standalone
hle_fallback: true
note: "Virtual SD card image for Wii homebrew. Auto-created, supports SD/SDHC up to 4GB"
source_ref: "Source/Core/Common/CommonPaths.h:149"
@@ -172,7 +159,6 @@ files:
- name: "codehandler.bin"
path: null
required: false
mode: standalone
hle_fallback: true
note: "Gecko/Ocarina cheat code handler. Shipped with PrimeHack in Sys/"
source_ref: "Source/Core/Common/CommonPaths.h:154, Source/Core/Core/GeckoCode.cpp:121"
@@ -181,7 +167,6 @@ files:
- name: "Wii System Menu"
path: null
required: false
mode: standalone
hle_fallback: true
note: "Wii System Menu WAD. Installed to NAND via Tools > Install WAD, needed for Wii Menu boot"
source_ref: "Source/Core/DolphinQt/MenuBar.cpp:335, Source/Core/DolphinQt/MenuBar.cpp:1582-1590"
@@ -190,7 +175,6 @@ files:
- name: "clientca.pem"
path: "Wii/clientca.pem"
required: false
mode: standalone
hle_fallback: true
note: "SSL client certificate. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:201-285"
@@ -198,7 +182,6 @@ files:
- name: "clientcakey.pem"
path: "Wii/clientcakey.pem"
required: false
mode: standalone
hle_fallback: true
note: "SSL client private key. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:237"
@@ -206,7 +189,6 @@ files:
- name: "rootca.pem"
path: "Wii/rootca.pem"
required: false
mode: standalone
hle_fallback: true
note: "SSL root CA certificate. Auto-extracted from IOS13 content during NAND import"
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:238"
@@ -220,105 +202,90 @@ files:
- name: "rtl8723a_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8723a_fw.bin"
required: false
mode: standalone
note: "Realtek 8723A BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:379"
- name: "rtl8723b_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8723b_fw.bin"
required: false
mode: standalone
note: "Realtek 8723B BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:516-519"
- name: "rtl8723d_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8723d_fw.bin"
required: false
mode: standalone
note: "Realtek 8723D BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:383"
- name: "rtl8761a_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8761a_fw.bin"
required: false
mode: standalone
note: "Realtek 8761A BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:385"
- name: "rtl8761bu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8761bu_fw.bin"
required: false
mode: standalone
note: "Realtek 8761BU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:387"
- name: "rtl8821a_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8821a_fw.bin"
required: false
mode: standalone
note: "Realtek 8821A BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:389"
- name: "rtl8821c_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8821c_fw.bin"
required: false
mode: standalone
note: "Realtek 8821C BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:391"
- name: "rtl8822b_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8822b_fw.bin"
required: false
mode: standalone
note: "Realtek 8822B BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:395"
- name: "rtl8822cu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8822cu_fw.bin"
required: false
mode: standalone
note: "Realtek 8822CU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:393"
- name: "rtl8851bu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8851bu_fw.bin"
required: false
mode: standalone
note: "Realtek 8851BU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:397"
- name: "rtl8852au_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852au_fw.bin"
required: false
mode: standalone
note: "Realtek 8852AU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:399"
- name: "rtl8852bu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852bu_fw.bin"
required: false
mode: standalone
note: "Realtek 8852BU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:401"
- name: "rtl8852cu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852cu_fw.bin"
required: false
mode: standalone
note: "Realtek 8852CU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:403"
- name: "rtl8852btu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852btu_fw.bin"
required: false
mode: standalone
note: "Realtek 8852BT/8852BE-VT BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:405"
- name: "rtl8922au_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8922au_fw.bin"
required: false
mode: standalone
note: "Realtek 8922AU BT firmware for Wiimote passthrough"
source_ref: "Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:407"
-2
View File
@@ -34,7 +34,6 @@ notes: |
files:
- name: "7800 BIOS (U).rom"
system: atari-7800
region: [north-america]
required: false
hle_fallback: true
size: 4096
@@ -43,7 +42,6 @@ files:
- name: "7800 BIOS (E).rom"
system: atari-7800
region: [europe]
required: false
hle_fallback: true
size: 16384
+7 -7
View File
@@ -50,7 +50,7 @@ files:
- name: "scph5502.bin"
description: "SCPH-5502 (v3.0 E)"
region: [europe]
region: [europe, oceania]
required: true
size: 524288
validation: [size, sha256]
@@ -183,7 +183,7 @@ files:
# Europe alternatives
- name: "scph1002.bin"
description: "SCPH-1002 (v2.0 E)"
region: [europe]
region: [europe, oceania]
required: false
size: 524288
validation: [size, sha256]
@@ -192,7 +192,7 @@ files:
- name: "scph1002b.bin"
description: "SCPH-1002 (v2.1 E)"
region: [europe]
region: [europe, oceania]
required: false
size: 524288
validation: [size, sha256]
@@ -201,7 +201,7 @@ files:
- name: "scph1002c.bin"
description: "SCPH-1002 (v2.2 E)"
region: [europe]
region: [europe, oceania]
required: false
size: 524288
validation: [size, sha256]
@@ -210,7 +210,7 @@ files:
- name: "scph7002.bin"
description: "SCPH-7002 (v4.1 E)"
region: [europe]
region: [europe, oceania]
required: false
size: 524288
validation: [size, sha256]
@@ -219,7 +219,7 @@ files:
- name: "scph102.bin"
description: "SCPH-102 (v4.4 E)"
region: [europe]
region: [europe, oceania]
required: false
size: 524288
validation: [size, sha256]
@@ -228,7 +228,7 @@ files:
- name: "scph102_v45.bin"
description: "v4.5 E"
region: [europe]
region: [europe, oceania]
required: false
size: 524288
validation: [size, sha256]
-3
View File
@@ -21,21 +21,18 @@ files:
- name: "prod.keys"
required: true
path: "switch/"
mode: standalone
note: "Switch production keys for NCA decryption"
source_ref: "src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs:239"
- name: "title.keys"
required: false
path: "switch/"
mode: standalone
note: "Per-title decryption keys, needed for specific game content"
source_ref: "src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs:240"
- name: "console.keys"
required: false
path: "switch/"
mode: standalone
note: "Console-specific keys for encrypted content"
source_ref: "src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs:241"
+4
View File
@@ -57,6 +57,10 @@ files:
system: solarus
category: game_data
required: false
bundled: true
size: 600521
sha1: "ab035b7804089690018318e4a05f9a8fc59421ff"
md5: "1e70da4de91be79b9ccf47209a1fc73f"
description: "SDL gamepad mappings applied on top of the built-in table"
source_ref: "src/core/System.cpp:71-99, cmake/AddDefines.cmake:44-49, cmake/AddInstallTargets.cmake:23-28"
note: >-
+3 -3
View File
@@ -132,11 +132,11 @@ files:
name and crc32 of every file that fills them, the stepping, the PCI bridge, the
encryption key, the drive board, net board and MPEG board the machine carries, the
patches to apply and the parent set to fall back on. Handed to the GameLoader
constructor, parsed as XML, and a game load is refused outright when the file is
not there. The Kotlin launcher parses the same copy out of the assets for its game
constructor, parsed as XML (Src/GameLoader.cpp:492-502, 930-933), and a game
load is refused outright when the file is not there. The Kotlin launcher parses the same copy out of the assets for its game
list and its per-game input hints. Byte identical to the copy in the repository
root Config directory.
source_ref: "android/app/src/main/cpp/native-lib.cpp:568-580, 1096-1114, Src/GameLoader.cpp:492-502, 930-933, Src/Util/ConfigBuilders.cpp:60-73, android/app/src/main/java/com/izzy2lost/super3/GameXml.kt:23-24, android/app/src/main/java/com/izzy2lost/super3/MainActivity.kt:1211"
source_ref: "android/app/src/main/cpp/native-lib.cpp:568-580, 1096-1114, Src/Util/ConfigBuilders.cpp:60-73, android/app/src/main/java/com/izzy2lost/super3/GameXml.kt:23-24, android/app/src/main/java/com/izzy2lost/super3/MainActivity.kt:1211"
- name: Supermodel.ini
path: "Config/Supermodel.ini"
+4 -4
View File
@@ -93,8 +93,8 @@ files:
sha1: "6871a47de90ca67f9ff8e4e280416851a8164563"
md5: "0c7cfc0cba2f2cd674d94e093936f9f8"
description: "ROM set definitions"
note: "Parsed at startup into the game database. Every ROM region, file name and CRC32 the loader matches against comes from here, so an unreadable file leaves no set to resolve and the launch returns before the emulator is built. The path is a config key, so -game-xml-file moves it. Nothing about the file is verified beyond parsing; the hash is that of the copy the pinned revision ships."
source_ref: "Src/OSD/SDL/Main.cpp:117, Src/OSD/SDL/Main.cpp:1500, Src/OSD/SDL/Main.cpp:1957, Src/OSD/SDL/Main.cpp:2319-2329, Src/GameLoader.cpp:549-559, Src/GameLoader.cpp:1014-1017"
note: "Parsed at startup into the game database (Src/GameLoader.cpp:549-559, 1014-1017). Every ROM region, file name and CRC32 the loader matches against comes from here, so an unreadable file leaves no set to resolve and the launch returns before the emulator is built. The path is a config key, so -game-xml-file moves it. Nothing about the file is verified beyond parsing; the hash is that of the copy the pinned revision ships."
source_ref: "Src/OSD/SDL/Main.cpp:117, Src/OSD/SDL/Main.cpp:1500, Src/OSD/SDL/Main.cpp:1957, Src/OSD/SDL/Main.cpp:2319-2329"
- name: Games.xml
path: "supermodel/Games.xml"
@@ -110,8 +110,8 @@ files:
- "2d16307ceb658636a05d34c7ba935b48"
- "29fd5bc40cea222e040c1a1cfd60ea2e"
description: "ROM set definitions, libretro copy"
note: "Read through the VFS from {system}/supermodel/Games.xml, or Config/Games.xml under it, and parsed from memory. When the read yields nothing the bytes compiled in from Config/Games.xml are parsed instead, so the core identifies every set without a file on disk; a file that is present takes precedence. The second hash is the embedded array, which predates the indentation cleanup of the repository copy by one tab."
source_ref: "Src/OSD/libretro/LibretroWrapper.cpp:187-206, Src/OSD/libretro/LibretroWrapper.cpp:221-222, Src/OSD/libretro/LibretroWrapper.cpp:822, Src/OSD/libretro/LibretroWrapper.cpp:834-859, Src/GameLoader.cpp:1019-1030, Makefile:651-653"
note: "Read through the VFS from {system}/supermodel/Games.xml, or Config/Games.xml under it, and parsed from memory (Src/GameLoader.cpp:1019-1030). When the read yields nothing the bytes compiled in from Config/Games.xml are parsed instead, so the core identifies every set without a file on disk; a file that is present takes precedence. The second hash is the embedded array, which predates the indentation cleanup of the repository copy by one tab."
source_ref: "Src/OSD/libretro/LibretroWrapper.cpp:187-206, Src/OSD/libretro/LibretroWrapper.cpp:221-222, Src/OSD/libretro/LibretroWrapper.cpp:822, Src/OSD/libretro/LibretroWrapper.cpp:834-859, Makefile:651-653"
- name: Supermodel.ini
path: "supermodel/Supermodel.ini"
-4
View File
@@ -26,21 +26,18 @@ files:
- name: "prod.keys"
required: true
path: "switch/"
mode: standalone
note: "Production keys for NCA decryption (master, key area, header, titlekek)"
source_ref: "src/core/crypto/key_manager.cpp:654"
- name: "title.keys"
required: false
path: "switch/"
mode: standalone
note: "Per-title encryption keys (rights_id to titlekey mappings)"
source_ref: "src/core/crypto/key_manager.cpp:657"
- name: "console.keys"
required: false
path: "switch/"
mode: standalone
note: "Console-specific keys (BIS, SD seed)"
source_ref: "src/core/crypto/key_manager.cpp:658"
@@ -48,7 +45,6 @@ files:
required: false
path: "switch/"
size: 160
mode: standalone
note: "Amiibo decryption keys (two InternalKey structs, 0x50 bytes each)"
source_ref: "src/core/hle/service/nfc/common/amiibo_crypto.cpp:273-294"
+1 -1
View File
@@ -55,7 +55,7 @@ files:
- name: "scph5502.bin"
description: "SCPH-5502, 5552 (v3.0 01-06-97 E)"
region: [europe]
region: [europe, oceania]
required: false
hle_fallback: true
md5: "32736f17079d0b2b7024407c39bd3050"
+41 -23
View File
@@ -4,7 +4,7 @@ core_classification: game_engine
source: "https://github.com/vpinball/vpinball"
upstream: "https://github.com/vpinball/vpinball"
profiled_date: "2026-10-04"
source_commit: "a31565f1589c17afd0502a8c6a690f408ede14b2"
source_commit: "8a9f36d227a0e71be33c36418e4e3ffc8c5c2723"
core_version: "10.8.1"
display_name: "Visual Pinball X"
cores:
@@ -17,13 +17,14 @@ mode: standalone
notes: |
Pinball table simulator. The table is the content: .vpx and .vpt files are
OLE Compound Documents holding the geometry, textures, sounds and a VBScript
program, read through POLE (src/parts/pintable.cpp:1424-1427). Every build
program, read through POLE (src/parts/pintable.cpp:1427-1430). Every build
other than the Windows editor compiles the shared source set with
__STANDALONE__ and links libwinevbs, Wine's VBScript engine with its COM and
ATL headers, beside SDL3, SDL3_ttf, FreeImage and hidapi; PinMAME, AltSound,
ATL headers, beside SDL3, SDL3_ttf, FreeImage, hidapi, libspatialaudio and
libmysofa with zlib; PinMAME, AltSound,
DMDUtil, DOF, FlexDMD, B2S, PUP, Serum, VNI and ScoreView are plugins staged
in plugins/ next to the binary (make/CMakeLists_app.txt:525-546,597-603,
make/CMakeLists_sources.txt:809-815, make/CMakeLists_plugins.txt:21-25,39-56).
in plugins/ next to the binary (make/CMakeLists_app.txt:533-554,605-615,
make/CMakeLists_sources.txt:811-817, make/CMakeLists_plugins.txt:21-25,39-56).
ES-DE finds VPinballX_BGFX or VPinballX_GL and
runs `<binary> -play <rom>`, Batocera builds the standalone tree at
3ec37c7f9a into /usr/bin/vpinball and runs `VPinballX_GL -PrefPath <dir> -Ini
@@ -48,11 +49,11 @@ notes: |
user/ and scripts/ beside it, then the installation folder with user/,
scripts/ and tables/ under it, then the preferences folder with user/ and
scripts/ under it (src/core/FileLocator.cpp:379-412,
src/core/ScriptGlobalTable.cpp:346-375). The
src/core/ScriptGlobalTable.cpp:352-381). The
scripts/ directory the build ships carries the 71 .vbs files tables include
by name, core.vbs and controller.vbs beside the per-manufacturer machine
scripts (WPC.vbs, sam.vbs, s11.vbs, zac.vbs and the rest), copied from
src/scripts (make/CMakeLists_app.txt:619-623). The Windows editor's
src/scripts (make/CMakeLists_app.txt:631-635). The Windows editor's
completion parser asks for core.vbs through the same search without a table,
so in the seven installation and preferences locations, and shows a warning
box when none holds it (src/ui/win/codeview.cpp:2068-2076,
@@ -62,7 +63,7 @@ notes: |
folder or the installation folder when SDL reports none, MusicDirectory the
table's music folder with an optional subfolder, ScriptsDirectory scripts/
under the installation folder; each fails when its directory does not exist
(src/core/ScriptGlobalTable.cpp:377-418, src/core/FileLocator.cpp:251-259).
(src/core/ScriptGlobalTable.cpp:383-424, src/core/FileLocator.cpp:251-259).
In AppPrefData mode user/, music/, cache/ and autosave/ sit beside the table;
a folder missing there on a read is looked up the AppOnly way, where user/
hangs off the installation folder and music/ is tried under the installation
@@ -83,10 +84,10 @@ notes: |
blankTable.vpx, exampleTable.vpx, lightSeqTable.vpx and strippedTable.vpx:
the live editor loads blankTable.vpx when started without a table or when
the requested one fails to load, and its New Table menu loads any of the
four (src/core/AppCommands.cpp:277-283, src/ui/live/EditorUI.cpp:334-353).
four (src/core/AppCommands.cpp:277-283, src/ui/live/EditorUI.cpp:338-357).
OpenGL builds also get shaders-10.8.1/, the .glfx and .fxh sources parsed at
runtime (src/core/FileLocator.cpp:223, src/renderer/Shader.cpp:1827-1828,2234-2237,
make/CMakeLists_app.txt:625-635); the directory is not copied for the BGFX
runtime (src/core/FileLocator.cpp:223, src/renderer/Shader.cpp:1827-1828,2231-2234,
make/CMakeLists_app.txt:637-647); the directory is not copied for the BGFX
renderer. Three plugins carry resources of their own: plugins/flexdmd/assets/
holds the bitmap fonts UltraDMD asks for by resource name, the
FlexDMD.Resources. prefix being stripped before the lookup
@@ -100,11 +101,11 @@ notes: |
Two parts of that tree ship without a reader on the desktop targets.
docs/Changelog.txt is read by the About dialog
(src/ui/win/dialogs/AboutDialog.cpp:34), which sits in the Windows source
list only (make/CMakeLists_sources.txt:491,540-541,
list only (make/CMakeLists_sources.txt:493,542-543,
make/CMakeLists_app.txt:78-80), and assets/web/, vpx.html with its scripts
and style sheet, is served by the web server that only the iOS and Android
library build compiles (lib/src/WebServer.cpp:92-99,
make/CMakeLists_sources.txt:817-823, make/CMakeLists_app.txt:669).
make/CMakeLists_sources.txt:819-825, make/CMakeLists_app.txt:679).
PinMAME is where the emulation happens. Tables that recreate a real solid
state machine hand a ROM name to the controller, which resolves its root as
@@ -340,7 +341,7 @@ files:
category: game_data
required: false
description: "MAME high score memory map database, read once per machine start"
source_ref: "pinmame src/hiscore.c:18,223-230, pinmame src/cpuexec.c:332-334,393,1755, src/core/player.cpp:457-459"
source_ref: "pinmame src/hiscore.c:18, 223-230, pinmame src/cpuexec.c:332-334, 393, 1755, src/core/player.cpp:463-465"
note: >-
hs_open is called unconditionally at the top of cpu_run for every PinMAME
machine, and the whole body sits behind `if (f)`, so an absent file is a
@@ -364,23 +365,40 @@ files:
absent file leaves the menu showing "cheat database not found"
(pinmame src/cheat.c:2463). Same bare-filename resolution as hiscore.dat.
- name: fabian-hrir.sofa
path: "assets/fabian-hrir.sofa"
system: vpinball
required: false
size: 1766147
sha1: "5bf46cfb6472b81f4aa7fb2c87bc79afc23109d7"
md5: "b98b60a050e3c2edfa7a59863c625c61"
description: "FABIAN full-sphere HRIR set, the HRTF of the binaural spatial audio renderer"
source_ref: "src/audio/SpatialAudio.cpp:49-56,344-360, make/CMakeLists_app.txt:631-635"
note: >-
Read from assets/ under the installation folder when libspatialaudio is
built with libmysofa, which every build script does; the headphone and VR
binauralizer then runs second order ambisonics on it. A missing or
unreadable file logs "Failed to load the binaural HRTF" and audio falls
back to loudspeaker decoding. The file sits in the repository's top-level
assets/ while the build copies src/assets, so no build output carries it.
analysis:
shipped_with_the_binary:
note: >-
Copied into the build output next to the executable and installed as one
unit by every distribution, so they arrive with the emulator rather than
being sourced separately.
source_ref: "make/CMakeLists_app.txt:619-623"
source_ref: "make/CMakeLists_app.txt:631-635"
entries:
- what: "scripts/, the .vbs library tables include"
source_ref: "src/core/FileLocator.cpp:379-412, src/core/ScriptGlobalTable.cpp:346-375, src/ui/win/codeview.cpp:2068-2076"
source_ref: "src/core/FileLocator.cpp:379-412, src/core/ScriptGlobalTable.cpp:352-381, src/ui/win/codeview.cpp:2068-2076"
- what: "assets/, textures, segment display maps, TableSizes.csv, the window icon, the fallback font, the editor icons"
source_ref: "src/renderer/Renderer.cpp:176-188,1493-1510, src/parts/bumper.cpp:148,160,172,186, src/parts/kicker.cpp:198-239, src/core/TableDB.cpp:16, src/renderer/Window.cpp:280, src/parts/textbox.cpp:719-720, src/ui/live/editor/EditorChrome.cpp:200"
- what: "assets/blankTable.vpx, exampleTable.vpx, lightSeqTable.vpx, strippedTable.vpx"
source_ref: "src/core/AppCommands.cpp:277-283, src/ui/live/EditorUI.cpp:334-353"
source_ref: "src/core/AppCommands.cpp:277-283, src/ui/live/EditorUI.cpp:338-357"
note: "The live editor's default table and its four New Table templates."
- what: "shaders-10.8.1/, .glfx and .fxh parsed at runtime by the OpenGL renderer"
source_ref: "src/core/FileLocator.cpp:223, src/renderer/Shader.cpp:1827-1828,2234-2237, make/CMakeLists_app.txt:625-635"
source_ref: "src/core/FileLocator.cpp:223, src/renderer/Shader.cpp:1827-1828, src/renderer/Shader.cpp:2231-2234, make/CMakeLists_app.txt:637-647"
- what: "plugins/flexdmd/assets/, the bitmap fonts UltraDMD names as FlexDMD.Resources.*"
source_ref: "plugins/flexdmd/UltraDMD.cpp:20-24,32-34, plugins/flexdmd/resources/AssetManager.cpp:103-109,252-272, make/CMakeLists_plugin_FlexDMD.txt:179-182"
- what: "plugins/scoreview/layouts/, the default score view layouts"
@@ -392,10 +410,10 @@ analysis:
note: "Copied into the build output but unreachable in the desktop standalone binary"
entries:
- what: "docs/Changelog.txt"
source_ref: "src/ui/win/dialogs/AboutDialog.cpp:34, make/CMakeLists_sources.txt:540-541, make/CMakeLists_app.txt:622"
source_ref: "src/ui/win/dialogs/AboutDialog.cpp:34, make/CMakeLists_sources.txt:542-543, make/CMakeLists_app.txt:634"
note: "The About dialog is in the Windows editor source list only."
- what: "assets/web/, vpx.html and the files it pulls"
source_ref: "lib/src/WebServer.cpp:92-99, make/CMakeLists_sources.txt:817-823"
source_ref: "lib/src/WebServer.cpp:92-99, make/CMakeLists_sources.txt:819-825"
note: "The web server is compiled into the iOS and Android library build only."
user_supplied_paths:
@@ -432,12 +450,12 @@ analysis:
- what: "score view layout, <table basename>.scv, else <table folder name>.scv, else the LayoutFolder setting"
source_ref: "plugins/scoreview/ScoreViewPlugin.cpp:23,46-62"
- what: "table music, music/ beside the table"
source_ref: "src/core/ScriptGlobalTable.cpp:116-130, src/core/FileLocator.cpp:267-377"
source_ref: "src/core/ScriptGlobalTable.cpp:122-136, src/core/FileLocator.cpp:267-377"
note: "In the legacy layout, music/ under the installation folder, then the table folder, then the preferences folder."
- what: "textbox fonts, <table folder>/<FontName>-<Style>.ttf"
source_ref: "src/parts/textbox.cpp:701-722"
- what: "table sidecars, the .vbs script override, the per-table .ini and the legacy .pov"
source_ref: "src/parts/pintable.cpp:1322-1328,1380-1396, src/parts/pintable.h:562-589"
source_ref: "src/parts/pintable.cpp:1325-1331, src/parts/pintable.cpp:1383-1399, src/parts/pintable.h:560-587"
generated_files:
- what: "VPinballX.ini, the settings file"
@@ -448,7 +466,7 @@ analysis:
Batocera seeds it from the assets/Default_VPinballX.ini its pinned tree
carries and rewrites it before every launch.
- what: "VPReg.ini, values saved by table scripts in the table's user folder; vpinball.log in the preferences folder"
source_ref: "src/core/ScriptGlobalTable.cpp:521-551, src/utils/Logger.cpp:164-165"
source_ref: "src/core/ScriptGlobalTable.cpp:527-557, src/utils/Logger.cpp:164-165"
- what: "PinMAME state: nvram/, cfg/, hi/, inp/, memcard/ and sta/"
source_ref: "pinmame src/libpinmame/libpinmame.cpp:1081,1083-1087"
note: "Written by PinMAME as the machine runs."
+9 -7
View File
@@ -4,8 +4,8 @@ core_classification: official_port
source: "https://git.libretro.com/libretro/wqxemu"
upstream: "https://github.com/AloysHF/WQXEmu"
profiled_date: "2026-09-17"
source_commit: "868b644df757379b15a04c7354f8f756d11076c3"
upstream_commit: "7191df429042116e707ba68f5b2d2a8ae567b2ad"
source_commit: "c41a6f26f6e1a5ff2b15f0b63e6103bd8889df22"
upstream_commit: "c41a6f26f6e1a5ff2b15f0b63e6103bd8889df22"
core_version: "0.1.0"
display_name: "Wenquxing - Electronic Dictionary (WQXEmu)"
cores:
@@ -63,10 +63,12 @@ notes: |
The standalone binary takes the same files as explicit --rom, --nor,
--nand and --nand0 paths and has no default directory; --model selects
the machine, otherwise detect_model guesses it from the file sizes
(crates/wqxemu/src/main.rs:27-42, crates/wqxemu/src/main.rs:239-274,
crates/wqxemu/src/main.rs:276-288,
(crates/wqxemu/src/main.rs:27-42, crates/wqxemu/src/main.rs:243-278,
crates/wqxemu/src/main.rs:280-292,
crates/wqxemu-core/src/machines/mod.rs:38-87). Its device skins are
include_bytes! PNGs (crates/wqxemu/src/keypad.rs:59-66).
include_bytes! PNGs, or drawn by code_skin when --skin code is given
(crates/wqxemu/src/main.rs:65-67, crates/wqxemu/src/keypad.rs:86-91,
crates/wqxemu/src/keypad.rs:220-227).
The libretro-core-info file names the PC1000 NOR image pc1000.fls. The
code opens pc1000.nor since commit 0a8f7a5 of 2026-08-23; the v0.1.0
@@ -201,7 +203,7 @@ files:
64 pages of the NAND array. No size check. The libretro core always
puts it in the NC2000 set and the standalone binary requires
--nand0 for this model, so a missing file stops the start.
source_ref: "crates/wqxemu-libretro/src/lib.rs:232-237, crates/wqxemu-core/src/machines/nc2000.rs:24, crates/wqxemu-core/src/machines/nc2000.rs:283-288, crates/wqxemu-core/src/machines/nc2000.rs:298-301, crates/wqxemu/src/main.rs:260-265"
source_ref: "crates/wqxemu-libretro/src/lib.rs:232-237, crates/wqxemu-core/src/machines/nc2000.rs:24, crates/wqxemu-core/src/machines/nc2000.rs:283-288, crates/wqxemu-core/src/machines/nc2000.rs:298-301, crates/wqxemu/src/main.rs:264-269"
- name: nc3000.nor
path: WQXEmu/nc3000/nc3000.nor
@@ -244,4 +246,4 @@ files:
optional for this model. Without it the core writes the marker
"ggv nc3000" at offset 528 of an erased first plane and the machine
boots the same way.
source_ref: "crates/wqxemu-libretro/src/lib.rs:238-246, crates/wqxemu-core/src/machines/nc3000.rs:27-31, crates/wqxemu-core/src/machines/nc3000.rs:290-297, crates/wqxemu-core/src/machines/nc3000.rs:342-350, crates/wqxemu/src/main.rs:266-270"
source_ref: "crates/wqxemu-libretro/src/lib.rs:238-246, crates/wqxemu-core/src/machines/nc3000.rs:27-31, crates/wqxemu-core/src/machines/nc3000.rs:290-297, crates/wqxemu-core/src/machines/nc3000.rs:342-350, crates/wqxemu/src/main.rs:270-274"
-2
View File
@@ -43,7 +43,6 @@ files:
- name: "sega_101.bin"
system: sega-saturn
region: [japan]
priority: 2
required: false
hle_fallback: true
@@ -52,7 +51,6 @@ files:
- name: "mpr-17933.bin"
system: sega-saturn
region: [north-america, europe]
priority: 3
required: false
hle_fallback: true
-2
View File
@@ -44,7 +44,6 @@ files:
- name: "sega_101.bin"
system: sega-saturn
region: [japan]
priority: 2
required: false
hle_fallback: true
@@ -55,7 +54,6 @@ files:
- name: "mpr-17933.bin"
system: sega-saturn
region: [north-america, europe]
priority: 3
required: false
hle_fallback: true
+8 -6
View File
@@ -458,10 +458,11 @@ files:
sha1: 0a16f66d7816d73af3b28dea2bb292415695f6f7
description: "Vulkan texture function shader"
note: >-
Read into the device at creation and specialised per draw. A source
that cannot be read fails GSDeviceVK::Create, and Vulkan is the backend
the libretro core presents through.
source_ref: "pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2308-2317, pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5349-5364, pcsx2/GS/Renderers/Common/GSDevice.cpp:372-375"
Read from the resources directory into the device at creation
(pcsx2/GS/Renderers/Common/GSDevice.cpp:372-375) and specialised per
draw. A source that cannot be read fails GSDeviceVK::Create, and Vulkan
is the backend the libretro core presents through.
source_ref: "pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2308-2317, pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5349-5364"
- name: convert.glsl
path: pcsx2/resources/shaders/vulkan/convert.glsl
@@ -828,7 +829,7 @@ files:
Named as the placeholder texture when the fullscreen interface
initialises; that initialisation fails without it and the interface
stays closed.
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:335-341, pcsx2/ImGui/ImGuiFullscreen.cpp:292-300"
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:335-341, pcsx2/ImGui/ImGuiFullscreen.cpp:216-226, 292-300"
- name: no-save.png
path: pcsx2/resources/fullscreenui/no-save.png
@@ -1381,7 +1382,8 @@ files:
size: 656
sha1: d168d39632798f8be799d21bd0a0c9ca13533272
description: "Flag icon, game list region unclassified"
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:2846, pcsx2/GameList.cpp:155-190, pcsx2-qt/GameList/GameListModel.cpp:486"
note: "Opened as icons/flags/Other.svg by the fullscreen game list (pcsx2/ImGui/FullscreenUI.cpp:2846)."
source_ref: "pcsx2/GameList.cpp:155-190, pcsx2-qt/GameList/GameListModel.cpp:486"
- name: pl.svg
path: pcsx2/resources/icons/flags/pl.svg
-4
View File
@@ -27,21 +27,18 @@ files:
- name: "prod.keys"
required: true
path: "switch/"
mode: standalone
note: "Production keys for NCA decryption (master, key area, header, titlekek)"
source_ref: "src/core/crypto/key_manager.cpp:655-656"
- name: "title.keys"
required: false
path: "switch/"
mode: standalone
note: "Per-title encryption keys (rights_id to titlekey mappings)"
source_ref: "src/core/crypto/key_manager.cpp:659-660"
- name: "console.keys"
required: false
path: "switch/"
mode: standalone
note: "Console-specific keys (BIS, SD seed)"
source_ref: "src/core/crypto/key_manager.cpp:661-662"
@@ -49,7 +46,6 @@ files:
required: false
path: "switch/"
size: 160
mode: standalone
note: "Amiibo decryption keys (two InternalKey structs, 0x50 bytes each)"
source_ref: "src/core/hle/service/nfc/common/amiibo_crypto.cpp:273-294"
+1 -1
View File
@@ -8,7 +8,7 @@ param(
$ErrorActionPreference = "Stop"
$defaultInstallUrl = "https://raw.githubusercontent.com/Abdess/retrobios/main/install.py"
$defaultInstallSha256 = "3ea3a3e21012cc2dbf24c08a0ad314233ade04e62c0d2164b76146f1b361d714"
$defaultInstallSha256 = "60e18da18b5a9a43b18d37020b676ad47babd6d12c5314e8fcc1370e4864c4e5"
$maximumInstallerBytes = 2MB
$installer = if ($PSScriptRoot) { Join-Path $PSScriptRoot "install.py" } else { $null }
$temporary = $null
+47 -8
View File
@@ -103,8 +103,35 @@ DEFAULT_DESTS = {
"rocknix": Path("/storage/roms/bios"),
"misterfpga": Path("/media/fat/games"),
"retropie": Path.home() / "RetroPie" / "BIOS",
"romm": Path("/romm/library/bios"),
}
def _os_default_dests(os_type: str) -> dict[str, Path]:
"""Where a platform keeps its BIOS on this OS, when it is not detected.
The same folders the platform's detection looks for: a platform named on
the command line but not found must not land in ~/bios, which none of
them reads.
"""
home = Path.home()
if os_type == "windows":
profile = Path(os.environ.get("USERPROFILE", str(home)))
appdata = Path(os.environ.get("APPDATA", str(home / "AppData" / "Roaming")))
return {
"retroarch": appdata / "RetroArch" / "system",
"retrobat": profile / "RetroBat" / "bios",
"bizhawk": profile / "BizHawk" / "Firmware",
}
if os_type == "darwin":
return {
"retroarch": home / "Library" / "Application Support" / "RetroArch" / "system",
}
return {
"retroarch": home / ".config" / "retroarch" / "system",
"bizhawk": home / ".config" / "BizHawk" / "Firmware",
}
# Set when the run is interrupted, so queued downloads end instead of draining
# the pool: every future is submitted before the first one completes.
_stop = threading.Event()
@@ -954,8 +981,13 @@ def fetch_manifest(plat: str) -> dict:
sys.exit(1)
def fetch_targets(plat: str) -> dict:
"""Download target core list. Returns empty dict on 404."""
def fetch_targets(plat: str) -> "dict | None":
"""Download the target core list.
Empty on 404, where the platform publishes no targets. None when the list
could not be read: a timeout says nothing about the platform, and
answering "no targets" for it sent users to the full pack.
"""
url = TARGETS_URL.format(platform=plat)
try:
with urllib.request.urlopen(url, timeout=30) as resp:
@@ -965,10 +997,11 @@ def fetch_targets(plat: str) -> dict:
except urllib.error.HTTPError as exc:
if exc.code == 404:
return {}
print(f" Warning: failed to fetch targets for {plat}: {exc}", file=sys.stderr)
return {}
except (urllib.error.URLError, OSError, ValueError):
return {}
print(f" Error: failed to fetch targets for {plat}: {exc}", file=sys.stderr)
return None
except (urllib.error.URLError, OSError, ValueError) as exc:
print(f" Error: failed to fetch targets for {plat}: {exc}", file=sys.stderr)
return None
def _filter_by_target(
@@ -1379,7 +1412,7 @@ def _prompt_manual_platform(os_type: str) -> list[tuple[str, Path]]:
plat = AVAILABLE_PLATFORMS[int(choice) - 1]
elif choice in AVAILABLE_PLATFORMS:
plat = choice
default_dest = DEFAULT_DESTS.get(plat, Path.home() / "bios")
default_dest = _default_dest(os_type, plat)
try:
raw = input(f"BIOS directory [{default_dest}]: ").strip()
except (EOFError, KeyboardInterrupt):
@@ -1399,7 +1432,9 @@ def _default_dest(os_type: str, platform_name: str) -> Path:
"""
if os_type == "android" and platform_name == "retroarch":
return _android_storage_root() / "RetroArch" / "system"
return DEFAULT_DESTS.get(platform_name, Path.home() / "bios")
return _os_default_dests(os_type).get(
platform_name, DEFAULT_DESTS.get(platform_name, Path.home() / "bios")
)
def _manual_usage_hint(os_type: str) -> list[str]:
@@ -1580,6 +1615,8 @@ def main() -> None:
if args.list_targets:
targets = fetch_targets(plat_name)
if targets is None:
sys.exit(1)
if not targets:
print(f" No targets available for {plat_name}")
else:
@@ -1592,6 +1629,8 @@ def main() -> None:
# Target filtering
if args.target:
targets = fetch_targets(plat_name)
if targets is None:
sys.exit(1)
target_info = targets.get(args.target)
if target_info is None:
# Carrying on would install every file, which is the opposite
+1 -1
View File
@@ -18,7 +18,7 @@ esac
TEMP_INSTALLER=""
TEMP_DIRECTORY=""
DEFAULT_INSTALL_URL="https://raw.githubusercontent.com/Abdess/retrobios/main/install.py"
DEFAULT_INSTALL_SHA256="3ea3a3e21012cc2dbf24c08a0ad314233ade04e62c0d2164b76146f1b361d714"
DEFAULT_INSTALL_SHA256="60e18da18b5a9a43b18d37020b676ad47babd6d12c5314e8fcc1370e4864c4e5"
MAX_INSTALLER_BYTES=2097152
cleanup() {
+420 -350
View File
File diff suppressed because it is too large. Load diff
+1583 -224
View File
File diff suppressed because it is too large. Load diff
+622 -232
View File
File diff suppressed because it is too large. Load diff
+251 -212
View File
@@ -5,7 +5,7 @@
"platform": "lakka",
"display_name": "Lakka",
"version": "1.0",
"generated": "2026-10-05T22:37:20Z",
"generated": "2026-10-06T06:50:25Z",
"base_destination": "system",
"detect": [
{
@@ -16,153 +16,12 @@
}
],
"standalone_copies": [],
"total_files": 5849,
"total_size": 6395485306,
"pack_files": 8492,
"pack_size": 6436018470,
"total_omitted": 14,
"omitted_files": [
{
"dest": "SC-55/WAVEROM3.BIN",
"name": "WAVEROM3.BIN",
"system": "dos",
"required": false,
"reason": "not_found",
"cores": [
"dosbox"
]
},
{
"dest": "SufamiTurbo.sfc",
"name": "SufamiTurbo.sfc",
"system": "nintendo-sufami-turbo",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "[BIOS] Games Express CD Card (Japan).pce",
"name": "[BIOS] Games Express CD Card (Japan).pce",
"system": "nec-pc-engine-cd",
"required": false,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "[BIOS] Super CD-ROM System (Japan) (v3.0).pce",
"name": "[BIOS] Super CD-ROM System (Japan) (v3.0).pce",
"system": "nec-pc-engine-cd",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp1.rom",
"name": "dsp1.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp1b.rom",
"name": "dsp1b.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp2.rom",
"name": "dsp2.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp3.rom",
"name": "dsp3.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp4.rom",
"name": "dsp4.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "jagboot.rom",
"name": "jagboot.rom",
"system": "atari-jaguar",
"required": false,
"reason": "not_found",
"cores": [
"virtualjaguar"
]
},
{
"dest": "jagboot_m.rom",
"name": "jagboot_m.rom",
"system": "atari-jaguar",
"required": false,
"reason": "not_found",
"cores": [
"virtualjaguar"
]
},
{
"dest": "st010.rom",
"name": "st010.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "st011.rom",
"name": "st011.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "st018.rom",
"name": "st018.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
}
],
"total_files": 5867,
"total_size": 6399839286,
"pack_files": 8510,
"pack_size": 6440372450,
"total_omitted": 0,
"omitted_files": [],
"files": [
{
"dest": "3do_arcade_saot.bin",
@@ -1102,10 +961,10 @@
},
{
"dest": "galaksija/ROM2.BIN",
"sha1": "1bae895fbdd658cfb56c53cc2139282cc1e778de",
"sha256": "9fc01e6beab84e61e0267fa39e23c649cdf2ccd25ad1cbfc2de0facfd160e723",
"size": 8192,
"repo_path": "bios/Sony/PlayStation 2/ROM2.BIN",
"sha1": "5d5ab4313a2d0effe7572bb129193b64cab002c1",
"sha256": "7d93fe474fcc98c06a6d96e533f8935e4e707edf0792d3e9d679ea68404375de",
"size": 4096,
"repo_path": "bios/Galaksija/ROM2.BIN",
"cores": null
},
{
@@ -1912,10 +1771,10 @@
},
{
"dest": "dolphin-emu/Sys/GC/dsp_rom.bin",
"sha1": "f4f683a49d7eb4155566f793f2c1c27e90159992",
"sha256": "7f33e6600722791ccee5fd15d4330af8d8f74165f7d1ded6738684c0294aaffe",
"sha1": "3c6cc6e04fdd0b2a392d7a6ed769455444846be7",
"sha256": "49d987ee1eab29a157425b82d54516957a81e1bac247c8834e494642605c3e8c",
"size": 8192,
"repo_path": "bios/Nintendo/GameCube/Sys/GC/dsp_rom.bin",
"repo_path": "bios/Nintendo/GameCube/.variants/dsp_rom.bin.3c6cc6e0",
"cores": null
},
{
@@ -4256,10 +4115,10 @@
},
{
"dest": "pcsx2/resources/GameIndex.yaml",
"sha1": "40ecf6138c99a0aba775ef93240b295025a45500",
"sha256": "483face8f50f5e96d89528059522be3766b44f5e07e854bae1fa92ff0111d0a7",
"size": 2665743,
"repo_path": "bios/Sony/PlayStation 2/resources/GameIndex.yaml",
"sha1": "7efb2ed721cf0c0f0677324e09be311a8337e793",
"sha256": "3bf3c54d6f16d88d3669be698179bb8c2fb981ee5ce71bcb952719429a838cc1",
"size": 2693579,
"repo_path": "bios/Other/yaps2/GameIndex.yaml",
"cores": null
},
{
@@ -5892,10 +5751,10 @@
},
{
"dest": "Cemu/otp.bin",
"sha1": "f0332b7252e9c01b30bf5d5a63ceb22dc47968aa",
"sha256": "93c2e20cc377f2cb0fa9a2ee58c39be22e00baa94b890545e585e53b3eb4039f",
"size": 256,
"repo_path": "bios/Nintendo/3DS/Citra/sysdata/otp.bin",
"sha1": "aa4ebc7f94c22b04945b6c9232547ada10b71f6f",
"sha256": "a12993f7fe069098ab6fe1cdb43099a1dfb568223bef08ed5cb43ec93d9ff2de",
"size": 1024,
"repo_path": "bios/Nintendo/Wii U/otp.bin",
"cores": [
"cemu"
]
@@ -6162,6 +6021,16 @@
"dosbox"
]
},
{
"dest": "SC-55/WAVEROM3.BIN",
"sha1": "7454b817778179806f3f9d1985b3a2ef67ace76f",
"sha256": "334b2d16be3c2362210fdbec1c866ad58badeb0f84fd9bf5d0ac599baf077cc2",
"size": 1048576,
"repo_path": "bios/Roland/sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_waverom3.bin",
"cores": [
"dosbox"
]
},
{
"dest": "CM32LN_CONTROL.ROM",
"sha1": "dc1c5b1b90a4646d00f7daf3679733c7badc7077",
@@ -25590,6 +25459,96 @@
"mesen"
]
},
{
"dest": "dsp1.rom",
"sha1": "188d471fefea71eb53f0ee7064697ff0971b1014",
"sha256": "91e87d11e1c30d172556bed2211cce2efa94ba595f58c5d264809ef4d363a97b",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp1.rom",
"cores": [
"mesence"
]
},
{
"dest": "dsp1b.rom",
"sha1": "78b724811f5f18d8c67669d9390397eb1a47a5e2",
"sha256": "d789cb3c36b05c0b23b6c6f23be7aa37c6e78b6ee9ceac8d2d2aa9d8c4d35fa9",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp1b.rom",
"cores": [
"mesence"
]
},
{
"dest": "dsp2.rom",
"sha1": "198c4b1c3bfc6d69e734c5957af3dbfa26238dfb",
"sha256": "03ef4ef26c9f701346708cb5d07847b5203cf1b0818bf2930acd34510ffdd717",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp2.rom",
"cores": [
"mesence"
]
},
{
"dest": "dsp3.rom",
"sha1": "558da7cb3bd3876a6ca693661ffc6c110e948cf9",
"sha256": "0971b08f396c32e61989d1067dddf8e4b14649d548b2188f7c541b03d7c69e4e",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp3.rom",
"cores": [
"mesence"
]
},
{
"dest": "dsp4.rom",
"sha1": "af6478aecb6f1b67177e79c82ca04c56250a8c72",
"sha256": "752d03b2d74441e430b7f713001fa241f8bbcfc1a0d890ed4143f174dbe031da",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp4.rom",
"cores": [
"mesence"
]
},
{
"dest": "st010.rom",
"sha1": "6472828403de3589433a906e2c3f3d274c0ff008",
"sha256": "fa9bced838fedea11c6f6ace33d1878024bdd0d02cc9485899d0bdd4015ec24c",
"size": 53248,
"repo_path": "bios/Nintendo/SNES/SNES_st010.rom",
"cores": [
"mesence"
]
},
{
"dest": "st011.rom",
"sha1": "fecbae2cec76c710422486baa186ffa7ca1cf925",
"sha256": "8b2b3f3f3e6e29f4d21d8bc736b400bc988b7d2214ebee15643f01c1fee2f364",
"size": 53248,
"repo_path": "bios/Nintendo/SNES/SNES_st011.rom",
"cores": [
"mesence"
]
},
{
"dest": "st018.rom",
"sha1": "91383b92745cc7cc4f15409ac5bc2c2f699a43f1",
"sha256": "6df209ab5d2524d1839c038be400ae5eb20dafc14a3771a3239cd9e8acd53806",
"size": 163840,
"repo_path": "bios/Nintendo/SNES/SNES_st018.rom",
"cores": [
"mesence"
]
},
{
"dest": "SufamiTurbo.sfc",
"sha1": "ef86ea192eed03d5c413fdbbfd46043be1d7a127",
"sha256": "edacb453da14f825f05d1134d6035f4bf034e55f7cfb97c70c4ee107eabc7342",
"size": 262144,
"repo_path": "bios/Nintendo/SuFami Turbo/STBIOS.bin",
"cores": [
"mesence"
]
},
{
"dest": "ymf288_adpcm_rom.bin",
"sha1": "50b6c3e288eaa12ad275d4f323267bb72b0445df",
@@ -25620,6 +25579,26 @@
"mesence"
]
},
{
"dest": "[BIOS] Super CD-ROM System (Japan) (v3.0).pce",
"sha1": "79f5ff55dd10187c7fd7b8daab0b3ffbd1f56a2c",
"sha256": "e11527b3b96ce112a037138988ca72fd117a6b0779c2480d9e03eaebece3d9ce",
"size": 262144,
"repo_path": "bios/NEC/PC Engine/syscard3.pce",
"cores": [
"mesence"
]
},
{
"dest": "[BIOS] Games Express CD Card (Japan).pce",
"sha1": "014881a959e045e00f4db8f52955200865d40280",
"sha256": "4b86bb96a48a4ca8375fc0109631d0b1d64f255a03b01de70594d40788ba6c3d",
"size": 32768,
"repo_path": "bios/NEC/PC Engine/gecard.pce",
"cores": [
"mesence"
]
},
{
"dest": "Satellaview/BSX0120-0.bin",
"sha1": "f51c52bb26f2546fb167ab1084a56457475ff0a0",
@@ -55406,6 +55385,26 @@
"virtualjaguar"
]
},
{
"dest": "jagboot.rom",
"sha1": "af643900fea84234e08b616a6d27f03f0a61db96",
"sha256": "f0bd29599b3dfca7f5620c011256c1dc45c9d82c428a318f965c2ba3ded2e9f9",
"size": 131072,
"repo_path": "bios/Atari/Jaguar/boot.rom",
"cores": [
"virtualjaguar"
]
},
{
"dest": "jagboot_m.rom",
"sha1": "af643900fea84234e08b616a6d27f03f0a61db96",
"sha256": "f0bd29599b3dfca7f5620c011256c1dc45c9d82c428a318f965c2ba3ded2e9f9",
"size": 131072,
"repo_path": "bios/Atari/Jaguar/boot.rom",
"cores": [
"virtualjaguar"
]
},
{
"dest": "WQXEmu/nc1020/obj_lu.bin",
"sha1": "64b8a315ecbc420ae594ccced43498392988669e",
@@ -56490,20 +56489,20 @@
},
{
"dest": "SC-55/ROM1.BIN",
"sha1": "aea7a4c0c7ffe1f212f7b9faecfd728862ac6904",
"sha256": "d7f03bf65c1f98c9c1226f4e1d1ecd4ac778a2dc4a332568ab0d5fee7ede9042",
"size": 4096,
"repo_path": "bios/Galaksija/ROM1.BIN",
"sha1": "b91bb1d9dccffe831b7cfde7800a3fe32b2fbda6",
"sha256": "8a1eb33c7599b746c0c50283e4349a1bb1773b5c0ec0e9661219bf6c067d2042",
"size": 32768,
"repo_path": "bios/Roland/soundcanvas-roms/SC-55mk2-v1.01/rom1.bin",
"cores": [
"dosbox"
]
},
{
"dest": "SC-55/ROM2.BIN",
"sha1": "1bae895fbdd658cfb56c53cc2139282cc1e778de",
"sha256": "9fc01e6beab84e61e0267fa39e23c649cdf2ccd25ad1cbfc2de0facfd160e723",
"size": 8192,
"repo_path": "bios/Sony/PlayStation 2/ROM2.BIN",
"sha1": "078cb5feea05e80bb9a1bb857a2163ee434fd053",
"sha256": "a4c9fd821059054c7e7681d61f49ce6f42ed2fe407a7ec1ba0dfdc9722582ce0",
"size": 524288,
"repo_path": "bios/Roland/sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/rom2.bin",
"cores": [
"dosbox"
]
@@ -56570,10 +56569,10 @@
},
{
"dest": "np2/bios.rom",
"sha1": "1f5f7013f18c08ff50d7942e76c4fbd782412414",
"sha256": "863df0975a305110a7da4591b704e8f5dc7302f03c63603aa2dcd03e84c36ff9",
"size": 65536,
"repo_path": "bios/IBM/PC/ibmpcjr/bios.rom",
"sha1": "76a7360502fa0296ea93b4c537174610a834d367",
"sha256": "d0f5b6d96a01295ab5436d7852d2c9eea1faa87fcf016b7e6599cdd689266cd2",
"size": 98304,
"repo_path": "bios/NEC/PC-98/bios.rom",
"cores": [
"nekop2"
]
@@ -56600,20 +56599,20 @@
},
{
"dest": "scummvm/extra/MT32_CONTROL.ROM",
"sha1": "a439fbb390da38cada95a7cbb1d6ca199cd66ef8",
"sha256": "08d68695e5bff6bbcbb751d6e4453db9f5ead0b5f41e86480798a04376dfe090",
"sha1": "b083518fffb7f66b03c23b7eb4f868e62dc5a987",
"sha256": "a73a06c23ed38370e58a11fb1b86f7ea4c547061a60d7aa62bae446235fd2dff",
"size": 65536,
"repo_path": "bios/Commodore/Amiga/mt32-roms/cm32l_control.rom",
"repo_path": "bios/Commodore/Amiga/mt32-roms/mt32_control.rom",
"cores": [
"scummvm"
]
},
{
"dest": "scummvm/extra/MT32_PCM.ROM",
"sha1": "289cc298ad532b702461bfc738009d9ebe8025ea",
"sha256": "0dc50190bb7ea3fb212c970346b771a511772b528801e7eda6d27efda8c40698",
"size": 1048576,
"repo_path": "bios/Commodore/Amiga/mt32-roms/pcm_cm32l.rom",
"sha1": "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252",
"sha256": "d9164063f293410cf33f2f64cdcea6893b44723fe41938e07ec9aef58b406238",
"size": 524288,
"repo_path": "bios/Commodore/Amiga/mt32-roms/pcm_mt32.rom",
"cores": [
"scummvm"
]
@@ -57250,6 +57249,16 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-10000.MEC",
"sha1": "3f8affbe07024ccd2f5b8374072d0928c583a862",
"sha256": "fbbfc6c156266ac7e9afb37f0cc53fb78fadf2f09f580e56b2da57e6539e463b",
"size": 4,
"repo_path": "bios/Sony/PlayStation 2/SCPH-10000.MEC",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-30004R.bin",
"sha1": "8fa040852d4b8688f0c84bcfffc65eb208f2b432",
@@ -57280,6 +57289,36 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-50009_BIOS_V10_CHN_190.NVM",
"sha1": "3ffa2e74c8c8ce0e10e2069956f12d2407b91c65",
"sha256": "5b255bce650e66efeeb3b0bebc0dff705600d05aa2e076a315d02c6a7ed6ac9a",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.NVM",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-50009_BIOS_V10_CHN_190.ROM2",
"sha1": "7aef1dd6de4b4f64f31daad615bbccdb3e62e79c",
"sha256": "8dc012640186c46a39fcdd64a8ab9430080a220bd0630da58c977f35725de5cf",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.ROM2",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-50009_BIOS_V10_CHN_190.ROM1",
"sha1": "b284280341f16b1581c28ff81934bfdf403da1f0",
"sha256": "ad812eb36b8e7daa6106411e43840f70175f012a7a7dd289965872fe43933cc4",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.ROM1",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70004.BIN",
"sha1": "434bc0b4eb4827da0773ec0795aadc5162569a07",
@@ -57290,6 +57329,16 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70004.ROM1",
"sha1": "cc44355ded232a2ba5309bb24d4cd55af08696b2",
"sha256": "b86fbccaa111ca7497630337dafea7da7320fc4f924ada22b92145ef806e7b42",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70004.ROM1",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70008_BIOS_V12_RUS_200.BIN",
"sha1": "cce6fac0f7e682ad167e1e828b2d53192c3d5051",
@@ -57300,6 +57349,16 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70008_BIOS_V12_RUS_200.NVM",
"sha1": "6611151e8f599230cdf19a17318e7e5ddc781961",
"sha256": "b1704c7da37f03db017ad7576508c61b250d9ed4f3ceda8732ea91a3034f6cbf",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70008_BIOS_V12_RUS_200.NVM",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/ps2-0160h-20030602.bin",
"sha1": "f03bc2b7e7722d1788c9e7a341e43ac3ffe33a47",
@@ -57550,16 +57609,6 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-50009_BIOS_V10_CHN_190.NVM",
"sha1": "3ffa2e74c8c8ce0e10e2069956f12d2407b91c65",
"sha256": "5b255bce650e66efeeb3b0bebc0dff705600d05aa2e076a315d02c6a7ed6ac9a",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.NVM",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70006_BIOS_V12_HK_200.NVM",
"sha1": "06ccc54cdbe8b017a629155ccb66310cba9c4720",
@@ -57570,16 +57619,6 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70008_BIOS_V12_RUS_200.NVM",
"sha1": "6611151e8f599230cdf19a17318e7e5ddc781961",
"sha256": "b1704c7da37f03db017ad7576508c61b250d9ed4f3ceda8732ea91a3034f6cbf",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70008_BIOS_V12_RUS_200.NVM",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-75008_BIOS_V14_RUS_220.NVM",
"sha1": "fff13c6e30c55df9d6241ee08e5d0026c6a5d618",
@@ -57610,6 +57649,16 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-90006_BIOS_VX_HK _230.ROM1",
"sha1": "b96cf94772f01b8434038285896467884a84b0c2",
"sha256": "1b7c68be427e6f571596ef6b444e8b86d1b4e2a226d62f6bfc86717a798f2317",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-90006_BIOS_VX_HK _230.ROM1",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/ps2-0230a-20080220.nvm",
"sha1": "258ad0f26b0b269462bbd9acbb5506d5dfbcc3d5",
@@ -57639,16 +57688,6 @@
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-10000.MEC",
"sha1": "3f8affbe07024ccd2f5b8374072d0928c583a862",
"sha256": "fbbfc6c156266ac7e9afb37f0cc53fb78fadf2f09f580e56b2da57e6539e463b",
"size": 4,
"repo_path": "bios/Sony/PlayStation 2/SCPH-10000.MEC",
"cores": [
"yaps2"
]
}
]
}
+159 -259
View File
@@ -5,7 +5,7 @@
"platform": "recalbox",
"display_name": "Recalbox",
"version": "1.0",
"generated": "2026-10-05T22:37:20Z",
"generated": "2026-10-06T06:50:25Z",
"base_destination": "bios",
"detect": [
{
@@ -237,22 +237,12 @@
}
}
],
"total_files": 3236,
"total_size": 4205115053,
"pack_files": 3238,
"pack_size": 4205115053,
"total_omitted": 4,
"total_files": 3229,
"total_size": 4193661699,
"pack_files": 3231,
"pack_size": 4193661699,
"total_omitted": 1,
"omitted_files": [
{
"dest": "SC-55/WAVEROM3.BIN",
"name": "WAVEROM3.BIN",
"system": "dos",
"required": false,
"reason": "not_found",
"cores": [
"dosbox"
]
},
{
"dest": "geolith/neocd.zip",
"name": "neocd.zip",
@@ -260,26 +250,6 @@
"required": true,
"reason": "hash_mismatch",
"cores": null
},
{
"dest": "jagboot.rom",
"name": "jagboot.rom",
"system": "atari-jaguar",
"required": false,
"reason": "not_found",
"cores": [
"virtualjaguar"
]
},
{
"dest": "jagboot_m.rom",
"name": "jagboot_m.rom",
"system": "atari-jaguar",
"required": false,
"reason": "not_found",
"cores": [
"virtualjaguar"
]
}
],
"files": [
@@ -1845,10 +1815,10 @@
},
{
"dest": "pcenginecd/syscard3.pce",
"sha1": "1b4c260326d905bc718812dad0f68089977f427b",
"sha256": "df4f75feebb95e53dfef72dea0787df743e3474ba046ff5a4cb88e34dda93ff1",
"size": 262656,
"repo_path": "bios/NEC/PC Engine/.variants/syscard3.pce.1b4c2603",
"sha1": "79f5ff55dd10187c7fd7b8daab0b3ffbd1f56a2c",
"sha256": "e11527b3b96ce112a037138988ca72fd117a6b0779c2480d9e03eaebece3d9ce",
"size": 262144,
"repo_path": "bios/NEC/PC Engine/syscard3.pce",
"cores": null
},
{
@@ -8867,20 +8837,20 @@
},
{
"dest": "SC-55/ROM1.BIN",
"sha1": "aea7a4c0c7ffe1f212f7b9faecfd728862ac6904",
"sha256": "d7f03bf65c1f98c9c1226f4e1d1ecd4ac778a2dc4a332568ab0d5fee7ede9042",
"size": 4096,
"repo_path": "bios/Galaksija/ROM1.BIN",
"sha1": "b91bb1d9dccffe831b7cfde7800a3fe32b2fbda6",
"sha256": "8a1eb33c7599b746c0c50283e4349a1bb1773b5c0ec0e9661219bf6c067d2042",
"size": 32768,
"repo_path": "bios/Roland/soundcanvas-roms/SC-55mk2-v1.01/rom1.bin",
"cores": [
"dosbox"
]
},
{
"dest": "SC-55/ROM2.BIN",
"sha1": "1bae895fbdd658cfb56c53cc2139282cc1e778de",
"sha256": "9fc01e6beab84e61e0267fa39e23c649cdf2ccd25ad1cbfc2de0facfd160e723",
"size": 8192,
"repo_path": "bios/Sony/PlayStation 2/ROM2.BIN",
"sha1": "078cb5feea05e80bb9a1bb857a2163ee434fd053",
"sha256": "a4c9fd821059054c7e7681d61f49ce6f42ed2fe407a7ec1ba0dfdc9722582ce0",
"size": 524288,
"repo_path": "bios/Roland/sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/rom2.bin",
"cores": [
"dosbox"
]
@@ -8915,6 +8885,16 @@
"dosbox"
]
},
{
"dest": "SC-55/WAVEROM3.BIN",
"sha1": "7454b817778179806f3f9d1985b3a2ef67ace76f",
"sha256": "334b2d16be3c2362210fdbec1c866ad58badeb0f84fd9bf5d0ac599baf077cc2",
"size": 1048576,
"repo_path": "bios/Roland/sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_waverom3.bin",
"cores": [
"dosbox"
]
},
{
"dest": "libbass.so",
"sha1": "415365e930b4c7d33e9af3225bea230e15bdebe7",
@@ -24205,20 +24185,20 @@
},
{
"dest": "dsi_bios9.bin",
"sha1": "db61fa39ddbc5f5ed71fb19cda47609ef0201723",
"sha256": "664c608bd6ccfe583e87b3b924afa00f8697dc7ca92eeb6d206d68abb03d2e10",
"sha1": "719b9eef33692406d7170ff526069615759c4dfc",
"sha256": "6e9f70b51dc4f26289b597f14e2513620c2af964374a95f4c5a62b5cad199afc",
"size": 65536,
"repo_path": "bios/Nintendo/DS/dsi_bios9.bin",
"repo_path": "bios/Nintendo/DS/NDS_Bios9i.bin",
"cores": [
"melonds"
]
},
{
"dest": "dsi_bios7.bin",
"sha1": "d2b17224e156ee5e55b5d8d9f323b1c9b86dd951",
"sha256": "28a13952901b4065ef3f08c3252b49a00b6525e301b7ddaa3a390b4c7cbef901",
"sha1": "c7c7570bfe51c3c7c5da3b01331b94e7e7cb4f53",
"sha256": "12a03016ba07cfd874fc002df49a2c6eb2414eb7cfa395c2043035ec5e9193e8",
"size": 65536,
"repo_path": "bios/Nintendo/DS/dsi_bios7.bin",
"repo_path": "bios/Nintendo/DS/NDS_Bios7i.bin",
"cores": [
"melonds"
]
@@ -28675,10 +28655,10 @@
},
{
"dest": "gamecontrollerdb.txt",
"sha1": "446e3d7138becc17d3bc31401a241247318f42a9",
"sha256": "d65433feb3602d056900016cda40cf581f00289f179da336613b55ae3136afe2",
"size": 26890,
"repo_path": "bios/Game Engines/C-Dogs SDL/cdogs/data/gamecontrollerdb.txt",
"sha1": "ab035b7804089690018318e4a05f9a8fc59421ff",
"sha256": "eb002773dc8a16aa96f9ee2609798e231a9deb60c45e21fbdd4e221c9e8b7d77",
"size": 600521,
"repo_path": "bios/Game Engines/Solarus/gamecontrollerdb.txt",
"cores": [
"solarus"
]
@@ -28953,6 +28933,26 @@
"virtualjaguar"
]
},
{
"dest": "jagboot.rom",
"sha1": "af643900fea84234e08b616a6d27f03f0a61db96",
"sha256": "f0bd29599b3dfca7f5620c011256c1dc45c9d82c428a318f965c2ba3ded2e9f9",
"size": 131072,
"repo_path": "bios/Atari/Jaguar/boot.rom",
"cores": [
"virtualjaguar"
]
},
{
"dest": "jagboot_m.rom",
"sha1": "af643900fea84234e08b616a6d27f03f0a61db96",
"sha256": "f0bd29599b3dfca7f5620c011256c1dc45c9d82c428a318f965c2ba3ded2e9f9",
"size": 131072,
"repo_path": "bios/Atari/Jaguar/boot.rom",
"cores": [
"virtualjaguar"
]
},
{
"dest": "pinmame/roms/gts1.zip",
"sha1": "d4b0c8277c187a92279e2d2b71fc91b72d581257",
@@ -29043,6 +29043,16 @@
"visual-pinball"
]
},
{
"dest": "assets/fabian-hrir.sofa",
"sha1": "5bf46cfb6472b81f4aa7fb2c87bc79afc23109d7",
"sha256": "f22e921a6bc49a78c6d2eb3db963e9e12b4c4c5a77adeba2b786c38be37e6636",
"size": 1766147,
"repo_path": "bios/Other/visual-pinball/assets/fabian-hrir.sofa",
"cores": [
"visual-pinball"
]
},
{
"dest": "xmil/FNT0808.X1",
"sha1": "1c1a0d8c9f4c446ccd7470516b215ddca5052fb2",
@@ -29945,20 +29955,20 @@
},
{
"dest": "scummvm/extra/MT32_CONTROL.ROM",
"sha1": "a439fbb390da38cada95a7cbb1d6ca199cd66ef8",
"sha256": "08d68695e5bff6bbcbb751d6e4453db9f5ead0b5f41e86480798a04376dfe090",
"sha1": "b083518fffb7f66b03c23b7eb4f868e62dc5a987",
"sha256": "a73a06c23ed38370e58a11fb1b86f7ea4c547061a60d7aa62bae446235fd2dff",
"size": 65536,
"repo_path": "bios/Commodore/Amiga/mt32-roms/cm32l_control.rom",
"repo_path": "bios/Commodore/Amiga/mt32-roms/mt32_control.rom",
"cores": [
"scummvm"
]
},
{
"dest": "scummvm/extra/MT32_PCM.ROM",
"sha1": "289cc298ad532b702461bfc738009d9ebe8025ea",
"sha256": "0dc50190bb7ea3fb212c970346b771a511772b528801e7eda6d27efda8c40698",
"size": 1048576,
"repo_path": "bios/Commodore/Amiga/mt32-roms/pcm_cm32l.rom",
"sha1": "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252",
"sha256": "d9164063f293410cf33f2f64cdcea6893b44723fe41938e07ec9aef58b406238",
"size": 524288,
"repo_path": "bios/Commodore/Amiga/mt32-roms/pcm_mt32.rom",
"cores": [
"scummvm"
]
@@ -30727,6 +30737,16 @@
"pcsx2"
]
},
{
"dest": "SCPH-10000.MEC",
"sha1": "3f8affbe07024ccd2f5b8374072d0928c583a862",
"sha256": "fbbfc6c156266ac7e9afb37f0cc53fb78fadf2f09f580e56b2da57e6539e463b",
"size": 4,
"repo_path": "bios/Sony/PlayStation 2/SCPH-10000.MEC",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-30004R.bin",
"sha1": "8fa040852d4b8688f0c84bcfffc65eb208f2b432",
@@ -30757,6 +30777,36 @@
"pcsx2"
]
},
{
"dest": "SCPH-50009_BIOS_V10_CHN_190.NVM",
"sha1": "3ffa2e74c8c8ce0e10e2069956f12d2407b91c65",
"sha256": "5b255bce650e66efeeb3b0bebc0dff705600d05aa2e076a315d02c6a7ed6ac9a",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.NVM",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-50009_BIOS_V10_CHN_190.ROM2",
"sha1": "7aef1dd6de4b4f64f31daad615bbccdb3e62e79c",
"sha256": "8dc012640186c46a39fcdd64a8ab9430080a220bd0630da58c977f35725de5cf",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.ROM2",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-50009_BIOS_V10_CHN_190.ROM1",
"sha1": "b284280341f16b1581c28ff81934bfdf403da1f0",
"sha256": "ad812eb36b8e7daa6106411e43840f70175f012a7a7dd289965872fe43933cc4",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.ROM1",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-70004.BIN",
"sha1": "434bc0b4eb4827da0773ec0795aadc5162569a07",
@@ -30767,6 +30817,16 @@
"pcsx2"
]
},
{
"dest": "SCPH-70004.ROM1",
"sha1": "cc44355ded232a2ba5309bb24d4cd55af08696b2",
"sha256": "b86fbccaa111ca7497630337dafea7da7320fc4f924ada22b92145ef806e7b42",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70004.ROM1",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-70008_BIOS_V12_RUS_200.BIN",
"sha1": "cce6fac0f7e682ad167e1e828b2d53192c3d5051",
@@ -30777,6 +30837,16 @@
"pcsx2"
]
},
{
"dest": "SCPH-70008_BIOS_V12_RUS_200.NVM",
"sha1": "6611151e8f599230cdf19a17318e7e5ddc781961",
"sha256": "b1704c7da37f03db017ad7576508c61b250d9ed4f3ceda8732ea91a3034f6cbf",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70008_BIOS_V12_RUS_200.NVM",
"cores": [
"pcsx2"
]
},
{
"dest": "ps2-0100jd-20000117.bin",
"sha1": "5b33170323ed6344e2363fed8115dc3918bb96a4",
@@ -31517,6 +31587,16 @@
"pcsx2"
]
},
{
"dest": "ps2-0230a-20080220.nvm",
"sha1": "258ad0f26b0b269462bbd9acbb5506d5dfbcc3d5",
"sha256": "e017efa804f1f7d4d3da82b67d7370c5be062b4860f1cff4f898f93437d691a0",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/ps2-0230a-20080220.nvm",
"cores": [
"pcsx2"
]
},
{
"dest": "ps2-0230e-20080220.bin",
"sha1": "9915b5ba56798f4027ac1bd8d10abe0c1c9c326a",
@@ -31567,46 +31647,6 @@
"pcsx2"
]
},
{
"dest": "GameIndex.yaml",
"sha1": "57369df9ca82a460e596cea7835c5a0797dee668",
"sha256": "efa94cb7b9208dc6812bb9407dc986560e523cce57f511eff30942f76b7288bf",
"size": 1737799,
"repo_path": "bios/Sony/PlayStation 2/.variants/GameIndex.yaml.57369df9",
"cores": [
"pcsx2"
]
},
{
"dest": "ROM2.BIN",
"sha1": "5d5ab4313a2d0effe7572bb129193b64cab002c1",
"sha256": "7d93fe474fcc98c06a6d96e533f8935e4e707edf0792d3e9d679ea68404375de",
"size": 4096,
"repo_path": "bios/Sony/PlayStation 2/.variants/ROM2.BIN.5d5ab431",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH30004R.nvm",
"sha1": "1d3caaed7411425c16aee8c35db47b928e31f60b",
"sha256": "c598dea13e5bba2fcae69de5b051c15fcd5b25842978be1bb20a86cfff243eaf",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/.variants/SCPH30004R.nvm.5e0200d0",
"cores": [
"pcsx2"
]
},
{
"dest": "patches.zip",
"sha1": "2562e542d66db945ccf158d7a221c2a28e3b6be4",
"sha256": "df2b384ec29221155e8151fa2ff2dc8f0eef2409a8dce5ee7f7514352ae4058a",
"size": 2165576,
"repo_path": "bios/Sony/PlayStation 2/.variants/patches.zip.5a4d0a00",
"cores": [
"pcsx2"
]
},
{
"dest": "ps2-dvd-110u.bin",
"sha1": "0bc9143cb6839471d62b8fdd0b2fc05e941527d3",
@@ -31738,81 +31778,11 @@
]
},
{
"dest": "EROM.BIN",
"sha1": "adb4dbb7feb8247811506a38896ddcb789c4b477",
"sha256": "f7c4944e3001e3849cdead743e200e009d4d07bd5afb20fb937a7b201895f713",
"size": 247968,
"repo_path": "bios/Sony/PlayStation 2/EROM.BIN",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-10000.MEC",
"sha1": "3f8affbe07024ccd2f5b8374072d0928c583a862",
"sha256": "fbbfc6c156266ac7e9afb37f0cc53fb78fadf2f09f580e56b2da57e6539e463b",
"size": 4,
"repo_path": "bios/Sony/PlayStation 2/SCPH-10000.MEC",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-50009_BIOS_V10_CHN_190.EROM",
"sha1": "2ed11fd9333e62e36659565a744330a5902ed5e3",
"sha256": "67a6b2779e9320abe24f75ce811acf29e54d6dc06ce65b11341b6d84103de7f8",
"size": 3145728,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.EROM",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-50009_BIOS_V10_CHN_190.NVM",
"sha1": "3ffa2e74c8c8ce0e10e2069956f12d2407b91c65",
"sha256": "5b255bce650e66efeeb3b0bebc0dff705600d05aa2e076a315d02c6a7ed6ac9a",
"dest": "SCPH30004R.nvm",
"sha1": "1d3caaed7411425c16aee8c35db47b928e31f60b",
"sha256": "c598dea13e5bba2fcae69de5b051c15fcd5b25842978be1bb20a86cfff243eaf",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.NVM",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-50009_BIOS_V10_CHN_190.ROM1",
"sha1": "b284280341f16b1581c28ff81934bfdf403da1f0",
"sha256": "ad812eb36b8e7daa6106411e43840f70175f012a7a7dd289965872fe43933cc4",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.ROM1",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-50009_BIOS_V10_CHN_190.ROM2",
"sha1": "7aef1dd6de4b4f64f31daad615bbccdb3e62e79c",
"sha256": "8dc012640186c46a39fcdd64a8ab9430080a220bd0630da58c977f35725de5cf",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.ROM2",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-70004.EROM",
"sha1": "ec0121bb8e2a209044309780d2efc2559c9a0ef1",
"sha256": "e5bcd5925c1f22de48d49c3895dd421d167faddc033aac628f5facfba90ceef3",
"size": 3145728,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70004.EROM",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-70004.ROM1",
"sha1": "cc44355ded232a2ba5309bb24d4cd55af08696b2",
"sha256": "b86fbccaa111ca7497630337dafea7da7320fc4f924ada22b92145ef806e7b42",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70004.ROM1",
"repo_path": "bios/Sony/PlayStation 2/.variants/SCPH30004R.nvm.5e0200d0",
"cores": [
"pcsx2"
]
@@ -31827,16 +31797,6 @@
"pcsx2"
]
},
{
"dest": "SCPH-70008_BIOS_V12_RUS_200.NVM",
"sha1": "6611151e8f599230cdf19a17318e7e5ddc781961",
"sha256": "b1704c7da37f03db017ad7576508c61b250d9ed4f3ceda8732ea91a3034f6cbf",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70008_BIOS_V12_RUS_200.NVM",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-75008_BIOS_V14_RUS_220.NVM",
"sha1": "fff13c6e30c55df9d6241ee08e5d0026c6a5d618",
@@ -31857,16 +31817,6 @@
"pcsx2"
]
},
{
"dest": "SCPH-90006_BIOS_VX_HK _230.EROM",
"sha1": "6b357e8624095770952fc408cdc6647fa62e0d28",
"sha256": "8801922f614b365d9d37557d7a375d06d385e936804943cb2c52abff55a3d254",
"size": 3145728,
"repo_path": "bios/Sony/PlayStation 2/SCPH-90006_BIOS_VX_HK _230.EROM",
"cores": [
"pcsx2"
]
},
{
"dest": "SCPH-90006_BIOS_VX_HK _230.NVM",
"sha1": "465c2738c280eb1864f679c80b55e468bf670057",
@@ -31887,66 +31837,6 @@
"pcsx2"
]
},
{
"dest": "cheats_ni.zip",
"sha1": "dec5e4f137890c338babe13cfb9d41ff869fa721",
"sha256": "91d5ae704ff8b6d90165a65f69e9e2be8a9ab9c588c525dc1c9c4ecbbdef1ffd",
"size": 42525,
"repo_path": "bios/Sony/PlayStation 2/cheats_ni.zip",
"cores": [
"pcsx2"
]
},
{
"dest": "cheats_ws.zip",
"sha1": "773b4279d8c8e182dc57e444dbf448a1d115e7e0",
"sha256": "d07e3adde4da6a3220363b12d7b066168918225546122643ef7d19fece53b8b1",
"size": 1273296,
"repo_path": "bios/Sony/PlayStation 2/cheats_ws.zip",
"cores": [
"pcsx2"
]
},
{
"dest": "eeprom.dat",
"sha1": "ffc6261e487efa8c7442069f71acfc4aa826993d",
"sha256": "8667e718294e9e0df1d30600ba3eeb201f764aad2dad72748643e4a285e1d1f7",
"size": 64,
"repo_path": "bios/Sony/PlayStation 2/eeprom.dat",
"cores": [
"pcsx2"
]
},
{
"dest": "ps2-0230a-20080220.nvm",
"sha1": "258ad0f26b0b269462bbd9acbb5506d5dfbcc3d5",
"sha256": "e017efa804f1f7d4d3da82b67d7370c5be062b4860f1cff4f898f93437d691a0",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/ps2-0230a-20080220.nvm",
"cores": [
"pcsx2"
]
},
{
"dest": "message.wav",
"sha1": "c54f04b63ac6f04e0a0944ef260b5497e4494dbd",
"sha256": "dfd8035387a463722ad07af3c91934e0a685f2afa57e31d305f0602656d1edb1",
"size": 15696,
"repo_path": "bios/Sony/PlayStation 2/resources/sounds/achievements/message.wav",
"cores": [
"pcsx2"
]
},
{
"dest": "rom1.bin",
"sha1": "47d2ec4b342649e4c391043ab915d4435f9d180d",
"sha256": "41de2047af8382988bfd568035ff26eec5f1cabc3efe773680546aa00a82857d",
"size": 199680,
"repo_path": "bios/Sony/PlayStation 2/rom1.bin",
"cores": [
"pcsx2"
]
},
{
"dest": "scph30004fr.nvm",
"sha1": "92ce9e739dcbfa0d6afb442620b71919d26bf283",
@@ -31966,6 +31856,16 @@
"cores": [
"pcsx2"
]
},
{
"dest": "eeprom.dat",
"sha1": "ffc6261e487efa8c7442069f71acfc4aa826993d",
"sha256": "8667e718294e9e0df1d30600ba3eeb201f764aad2dad72748643e4a285e1d1f7",
"size": 64,
"repo_path": "bios/Sony/PlayStation 2/eeprom.dat",
"cores": [
"pcsx2"
]
}
]
}
+251 -212
View File
@@ -5,7 +5,7 @@
"platform": "retroarch",
"display_name": "RetroArch",
"version": "1.0",
"generated": "2026-10-05T22:37:20Z",
"generated": "2026-10-06T06:50:25Z",
"base_destination": "system",
"detect": [
{
@@ -255,153 +255,12 @@
}
}
],
"total_files": 5849,
"total_size": 6395485306,
"pack_files": 8492,
"pack_size": 6436018470,
"total_omitted": 14,
"omitted_files": [
{
"dest": "SC-55/WAVEROM3.BIN",
"name": "WAVEROM3.BIN",
"system": "dos",
"required": false,
"reason": "not_found",
"cores": [
"dosbox"
]
},
{
"dest": "SufamiTurbo.sfc",
"name": "SufamiTurbo.sfc",
"system": "nintendo-sufami-turbo",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "[BIOS] Games Express CD Card (Japan).pce",
"name": "[BIOS] Games Express CD Card (Japan).pce",
"system": "nec-pc-engine-cd",
"required": false,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "[BIOS] Super CD-ROM System (Japan) (v3.0).pce",
"name": "[BIOS] Super CD-ROM System (Japan) (v3.0).pce",
"system": "nec-pc-engine-cd",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp1.rom",
"name": "dsp1.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp1b.rom",
"name": "dsp1b.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp2.rom",
"name": "dsp2.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp3.rom",
"name": "dsp3.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp4.rom",
"name": "dsp4.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "jagboot.rom",
"name": "jagboot.rom",
"system": "atari-jaguar",
"required": false,
"reason": "not_found",
"cores": [
"virtualjaguar"
]
},
{
"dest": "jagboot_m.rom",
"name": "jagboot_m.rom",
"system": "atari-jaguar",
"required": false,
"reason": "not_found",
"cores": [
"virtualjaguar"
]
},
{
"dest": "st010.rom",
"name": "st010.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "st011.rom",
"name": "st011.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "st018.rom",
"name": "st018.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
}
],
"total_files": 5867,
"total_size": 6399839286,
"pack_files": 8510,
"pack_size": 6440372450,
"total_omitted": 0,
"omitted_files": [],
"files": [
{
"dest": "3do_arcade_saot.bin",
@@ -1341,10 +1200,10 @@
},
{
"dest": "galaksija/ROM2.BIN",
"sha1": "1bae895fbdd658cfb56c53cc2139282cc1e778de",
"sha256": "9fc01e6beab84e61e0267fa39e23c649cdf2ccd25ad1cbfc2de0facfd160e723",
"size": 8192,
"repo_path": "bios/Sony/PlayStation 2/ROM2.BIN",
"sha1": "5d5ab4313a2d0effe7572bb129193b64cab002c1",
"sha256": "7d93fe474fcc98c06a6d96e533f8935e4e707edf0792d3e9d679ea68404375de",
"size": 4096,
"repo_path": "bios/Galaksija/ROM2.BIN",
"cores": null
},
{
@@ -2151,10 +2010,10 @@
},
{
"dest": "dolphin-emu/Sys/GC/dsp_rom.bin",
"sha1": "f4f683a49d7eb4155566f793f2c1c27e90159992",
"sha256": "7f33e6600722791ccee5fd15d4330af8d8f74165f7d1ded6738684c0294aaffe",
"sha1": "3c6cc6e04fdd0b2a392d7a6ed769455444846be7",
"sha256": "49d987ee1eab29a157425b82d54516957a81e1bac247c8834e494642605c3e8c",
"size": 8192,
"repo_path": "bios/Nintendo/GameCube/Sys/GC/dsp_rom.bin",
"repo_path": "bios/Nintendo/GameCube/.variants/dsp_rom.bin.3c6cc6e0",
"cores": null
},
{
@@ -4495,10 +4354,10 @@
},
{
"dest": "pcsx2/resources/GameIndex.yaml",
"sha1": "40ecf6138c99a0aba775ef93240b295025a45500",
"sha256": "483face8f50f5e96d89528059522be3766b44f5e07e854bae1fa92ff0111d0a7",
"size": 2665743,
"repo_path": "bios/Sony/PlayStation 2/resources/GameIndex.yaml",
"sha1": "7efb2ed721cf0c0f0677324e09be311a8337e793",
"sha256": "3bf3c54d6f16d88d3669be698179bb8c2fb981ee5ce71bcb952719429a838cc1",
"size": 2693579,
"repo_path": "bios/Other/yaps2/GameIndex.yaml",
"cores": null
},
{
@@ -6131,10 +5990,10 @@
},
{
"dest": "Cemu/otp.bin",
"sha1": "f0332b7252e9c01b30bf5d5a63ceb22dc47968aa",
"sha256": "93c2e20cc377f2cb0fa9a2ee58c39be22e00baa94b890545e585e53b3eb4039f",
"size": 256,
"repo_path": "bios/Nintendo/3DS/Citra/sysdata/otp.bin",
"sha1": "aa4ebc7f94c22b04945b6c9232547ada10b71f6f",
"sha256": "a12993f7fe069098ab6fe1cdb43099a1dfb568223bef08ed5cb43ec93d9ff2de",
"size": 1024,
"repo_path": "bios/Nintendo/Wii U/otp.bin",
"cores": [
"cemu"
]
@@ -6401,6 +6260,16 @@
"dosbox"
]
},
{
"dest": "SC-55/WAVEROM3.BIN",
"sha1": "7454b817778179806f3f9d1985b3a2ef67ace76f",
"sha256": "334b2d16be3c2362210fdbec1c866ad58badeb0f84fd9bf5d0ac599baf077cc2",
"size": 1048576,
"repo_path": "bios/Roland/sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_waverom3.bin",
"cores": [
"dosbox"
]
},
{
"dest": "CM32LN_CONTROL.ROM",
"sha1": "dc1c5b1b90a4646d00f7daf3679733c7badc7077",
@@ -25829,6 +25698,96 @@
"mesen"
]
},
{
"dest": "dsp1.rom",
"sha1": "188d471fefea71eb53f0ee7064697ff0971b1014",
"sha256": "91e87d11e1c30d172556bed2211cce2efa94ba595f58c5d264809ef4d363a97b",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp1.rom",
"cores": [
"mesence"
]
},
{
"dest": "dsp1b.rom",
"sha1": "78b724811f5f18d8c67669d9390397eb1a47a5e2",
"sha256": "d789cb3c36b05c0b23b6c6f23be7aa37c6e78b6ee9ceac8d2d2aa9d8c4d35fa9",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp1b.rom",
"cores": [
"mesence"
]
},
{
"dest": "dsp2.rom",
"sha1": "198c4b1c3bfc6d69e734c5957af3dbfa26238dfb",
"sha256": "03ef4ef26c9f701346708cb5d07847b5203cf1b0818bf2930acd34510ffdd717",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp2.rom",
"cores": [
"mesence"
]
},
{
"dest": "dsp3.rom",
"sha1": "558da7cb3bd3876a6ca693661ffc6c110e948cf9",
"sha256": "0971b08f396c32e61989d1067dddf8e4b14649d548b2188f7c541b03d7c69e4e",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp3.rom",
"cores": [
"mesence"
]
},
{
"dest": "dsp4.rom",
"sha1": "af6478aecb6f1b67177e79c82ca04c56250a8c72",
"sha256": "752d03b2d74441e430b7f713001fa241f8bbcfc1a0d890ed4143f174dbe031da",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp4.rom",
"cores": [
"mesence"
]
},
{
"dest": "st010.rom",
"sha1": "6472828403de3589433a906e2c3f3d274c0ff008",
"sha256": "fa9bced838fedea11c6f6ace33d1878024bdd0d02cc9485899d0bdd4015ec24c",
"size": 53248,
"repo_path": "bios/Nintendo/SNES/SNES_st010.rom",
"cores": [
"mesence"
]
},
{
"dest": "st011.rom",
"sha1": "fecbae2cec76c710422486baa186ffa7ca1cf925",
"sha256": "8b2b3f3f3e6e29f4d21d8bc736b400bc988b7d2214ebee15643f01c1fee2f364",
"size": 53248,
"repo_path": "bios/Nintendo/SNES/SNES_st011.rom",
"cores": [
"mesence"
]
},
{
"dest": "st018.rom",
"sha1": "91383b92745cc7cc4f15409ac5bc2c2f699a43f1",
"sha256": "6df209ab5d2524d1839c038be400ae5eb20dafc14a3771a3239cd9e8acd53806",
"size": 163840,
"repo_path": "bios/Nintendo/SNES/SNES_st018.rom",
"cores": [
"mesence"
]
},
{
"dest": "SufamiTurbo.sfc",
"sha1": "ef86ea192eed03d5c413fdbbfd46043be1d7a127",
"sha256": "edacb453da14f825f05d1134d6035f4bf034e55f7cfb97c70c4ee107eabc7342",
"size": 262144,
"repo_path": "bios/Nintendo/SuFami Turbo/STBIOS.bin",
"cores": [
"mesence"
]
},
{
"dest": "ymf288_adpcm_rom.bin",
"sha1": "50b6c3e288eaa12ad275d4f323267bb72b0445df",
@@ -25859,6 +25818,26 @@
"mesence"
]
},
{
"dest": "[BIOS] Super CD-ROM System (Japan) (v3.0).pce",
"sha1": "79f5ff55dd10187c7fd7b8daab0b3ffbd1f56a2c",
"sha256": "e11527b3b96ce112a037138988ca72fd117a6b0779c2480d9e03eaebece3d9ce",
"size": 262144,
"repo_path": "bios/NEC/PC Engine/syscard3.pce",
"cores": [
"mesence"
]
},
{
"dest": "[BIOS] Games Express CD Card (Japan).pce",
"sha1": "014881a959e045e00f4db8f52955200865d40280",
"sha256": "4b86bb96a48a4ca8375fc0109631d0b1d64f255a03b01de70594d40788ba6c3d",
"size": 32768,
"repo_path": "bios/NEC/PC Engine/gecard.pce",
"cores": [
"mesence"
]
},
{
"dest": "Satellaview/BSX0120-0.bin",
"sha1": "f51c52bb26f2546fb167ab1084a56457475ff0a0",
@@ -55645,6 +55624,26 @@
"virtualjaguar"
]
},
{
"dest": "jagboot.rom",
"sha1": "af643900fea84234e08b616a6d27f03f0a61db96",
"sha256": "f0bd29599b3dfca7f5620c011256c1dc45c9d82c428a318f965c2ba3ded2e9f9",
"size": 131072,
"repo_path": "bios/Atari/Jaguar/boot.rom",
"cores": [
"virtualjaguar"
]
},
{
"dest": "jagboot_m.rom",
"sha1": "af643900fea84234e08b616a6d27f03f0a61db96",
"sha256": "f0bd29599b3dfca7f5620c011256c1dc45c9d82c428a318f965c2ba3ded2e9f9",
"size": 131072,
"repo_path": "bios/Atari/Jaguar/boot.rom",
"cores": [
"virtualjaguar"
]
},
{
"dest": "WQXEmu/nc1020/obj_lu.bin",
"sha1": "64b8a315ecbc420ae594ccced43498392988669e",
@@ -56729,20 +56728,20 @@
},
{
"dest": "SC-55/ROM1.BIN",
"sha1": "aea7a4c0c7ffe1f212f7b9faecfd728862ac6904",
"sha256": "d7f03bf65c1f98c9c1226f4e1d1ecd4ac778a2dc4a332568ab0d5fee7ede9042",
"size": 4096,
"repo_path": "bios/Galaksija/ROM1.BIN",
"sha1": "b91bb1d9dccffe831b7cfde7800a3fe32b2fbda6",
"sha256": "8a1eb33c7599b746c0c50283e4349a1bb1773b5c0ec0e9661219bf6c067d2042",
"size": 32768,
"repo_path": "bios/Roland/soundcanvas-roms/SC-55mk2-v1.01/rom1.bin",
"cores": [
"dosbox"
]
},
{
"dest": "SC-55/ROM2.BIN",
"sha1": "1bae895fbdd658cfb56c53cc2139282cc1e778de",
"sha256": "9fc01e6beab84e61e0267fa39e23c649cdf2ccd25ad1cbfc2de0facfd160e723",
"size": 8192,
"repo_path": "bios/Sony/PlayStation 2/ROM2.BIN",
"sha1": "078cb5feea05e80bb9a1bb857a2163ee434fd053",
"sha256": "a4c9fd821059054c7e7681d61f49ce6f42ed2fe407a7ec1ba0dfdc9722582ce0",
"size": 524288,
"repo_path": "bios/Roland/sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/rom2.bin",
"cores": [
"dosbox"
]
@@ -56809,10 +56808,10 @@
},
{
"dest": "np2/bios.rom",
"sha1": "1f5f7013f18c08ff50d7942e76c4fbd782412414",
"sha256": "863df0975a305110a7da4591b704e8f5dc7302f03c63603aa2dcd03e84c36ff9",
"size": 65536,
"repo_path": "bios/IBM/PC/ibmpcjr/bios.rom",
"sha1": "76a7360502fa0296ea93b4c537174610a834d367",
"sha256": "d0f5b6d96a01295ab5436d7852d2c9eea1faa87fcf016b7e6599cdd689266cd2",
"size": 98304,
"repo_path": "bios/NEC/PC-98/bios.rom",
"cores": [
"nekop2"
]
@@ -56839,20 +56838,20 @@
},
{
"dest": "scummvm/extra/MT32_CONTROL.ROM",
"sha1": "a439fbb390da38cada95a7cbb1d6ca199cd66ef8",
"sha256": "08d68695e5bff6bbcbb751d6e4453db9f5ead0b5f41e86480798a04376dfe090",
"sha1": "b083518fffb7f66b03c23b7eb4f868e62dc5a987",
"sha256": "a73a06c23ed38370e58a11fb1b86f7ea4c547061a60d7aa62bae446235fd2dff",
"size": 65536,
"repo_path": "bios/Commodore/Amiga/mt32-roms/cm32l_control.rom",
"repo_path": "bios/Commodore/Amiga/mt32-roms/mt32_control.rom",
"cores": [
"scummvm"
]
},
{
"dest": "scummvm/extra/MT32_PCM.ROM",
"sha1": "289cc298ad532b702461bfc738009d9ebe8025ea",
"sha256": "0dc50190bb7ea3fb212c970346b771a511772b528801e7eda6d27efda8c40698",
"size": 1048576,
"repo_path": "bios/Commodore/Amiga/mt32-roms/pcm_cm32l.rom",
"sha1": "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252",
"sha256": "d9164063f293410cf33f2f64cdcea6893b44723fe41938e07ec9aef58b406238",
"size": 524288,
"repo_path": "bios/Commodore/Amiga/mt32-roms/pcm_mt32.rom",
"cores": [
"scummvm"
]
@@ -57489,6 +57488,16 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-10000.MEC",
"sha1": "3f8affbe07024ccd2f5b8374072d0928c583a862",
"sha256": "fbbfc6c156266ac7e9afb37f0cc53fb78fadf2f09f580e56b2da57e6539e463b",
"size": 4,
"repo_path": "bios/Sony/PlayStation 2/SCPH-10000.MEC",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-30004R.bin",
"sha1": "8fa040852d4b8688f0c84bcfffc65eb208f2b432",
@@ -57519,6 +57528,36 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-50009_BIOS_V10_CHN_190.NVM",
"sha1": "3ffa2e74c8c8ce0e10e2069956f12d2407b91c65",
"sha256": "5b255bce650e66efeeb3b0bebc0dff705600d05aa2e076a315d02c6a7ed6ac9a",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.NVM",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-50009_BIOS_V10_CHN_190.ROM2",
"sha1": "7aef1dd6de4b4f64f31daad615bbccdb3e62e79c",
"sha256": "8dc012640186c46a39fcdd64a8ab9430080a220bd0630da58c977f35725de5cf",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.ROM2",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-50009_BIOS_V10_CHN_190.ROM1",
"sha1": "b284280341f16b1581c28ff81934bfdf403da1f0",
"sha256": "ad812eb36b8e7daa6106411e43840f70175f012a7a7dd289965872fe43933cc4",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.ROM1",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70004.BIN",
"sha1": "434bc0b4eb4827da0773ec0795aadc5162569a07",
@@ -57529,6 +57568,16 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70004.ROM1",
"sha1": "cc44355ded232a2ba5309bb24d4cd55af08696b2",
"sha256": "b86fbccaa111ca7497630337dafea7da7320fc4f924ada22b92145ef806e7b42",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70004.ROM1",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70008_BIOS_V12_RUS_200.BIN",
"sha1": "cce6fac0f7e682ad167e1e828b2d53192c3d5051",
@@ -57539,6 +57588,16 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70008_BIOS_V12_RUS_200.NVM",
"sha1": "6611151e8f599230cdf19a17318e7e5ddc781961",
"sha256": "b1704c7da37f03db017ad7576508c61b250d9ed4f3ceda8732ea91a3034f6cbf",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70008_BIOS_V12_RUS_200.NVM",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/ps2-0160h-20030602.bin",
"sha1": "f03bc2b7e7722d1788c9e7a341e43ac3ffe33a47",
@@ -57789,16 +57848,6 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-50009_BIOS_V10_CHN_190.NVM",
"sha1": "3ffa2e74c8c8ce0e10e2069956f12d2407b91c65",
"sha256": "5b255bce650e66efeeb3b0bebc0dff705600d05aa2e076a315d02c6a7ed6ac9a",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.NVM",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70006_BIOS_V12_HK_200.NVM",
"sha1": "06ccc54cdbe8b017a629155ccb66310cba9c4720",
@@ -57809,16 +57858,6 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70008_BIOS_V12_RUS_200.NVM",
"sha1": "6611151e8f599230cdf19a17318e7e5ddc781961",
"sha256": "b1704c7da37f03db017ad7576508c61b250d9ed4f3ceda8732ea91a3034f6cbf",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70008_BIOS_V12_RUS_200.NVM",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-75008_BIOS_V14_RUS_220.NVM",
"sha1": "fff13c6e30c55df9d6241ee08e5d0026c6a5d618",
@@ -57849,6 +57888,16 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-90006_BIOS_VX_HK _230.ROM1",
"sha1": "b96cf94772f01b8434038285896467884a84b0c2",
"sha256": "1b7c68be427e6f571596ef6b444e8b86d1b4e2a226d62f6bfc86717a798f2317",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-90006_BIOS_VX_HK _230.ROM1",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/ps2-0230a-20080220.nvm",
"sha1": "258ad0f26b0b269462bbd9acbb5506d5dfbcc3d5",
@@ -57878,16 +57927,6 @@
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-10000.MEC",
"sha1": "3f8affbe07024ccd2f5b8374072d0928c583a862",
"sha256": "fbbfc6c156266ac7e9afb37f0cc53fb78fadf2f09f580e56b2da57e6539e463b",
"size": 4,
"repo_path": "bios/Sony/PlayStation 2/SCPH-10000.MEC",
"cores": [
"yaps2"
]
}
]
}
+1614 -404
View File
File diff suppressed because it is too large. Load diff
+1677 -417
View File
File diff suppressed because it is too large. Load diff
+364 -434
View File
File diff suppressed because it is too large. Load diff
+248 -209
View File
@@ -5,7 +5,7 @@
"platform": "rocknix",
"display_name": "ROCKNIX",
"version": "1.0",
"generated": "2026-10-05T22:37:20Z",
"generated": "2026-10-06T06:50:25Z",
"base_destination": "bios",
"detect": [
{
@@ -17,153 +17,12 @@
}
],
"standalone_copies": [],
"total_files": 5786,
"total_size": 6566365388,
"pack_files": 5788,
"pack_size": 6566365388,
"total_omitted": 14,
"omitted_files": [
{
"dest": "SC-55/WAVEROM3.BIN",
"name": "WAVEROM3.BIN",
"system": "dos",
"required": false,
"reason": "not_found",
"cores": [
"dosbox"
]
},
{
"dest": "SufamiTurbo.sfc",
"name": "SufamiTurbo.sfc",
"system": "nintendo-sufami-turbo",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "[BIOS] Games Express CD Card (Japan).pce",
"name": "[BIOS] Games Express CD Card (Japan).pce",
"system": "nec-pc-engine-cd",
"required": false,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "[BIOS] Super CD-ROM System (Japan) (v3.0).pce",
"name": "[BIOS] Super CD-ROM System (Japan) (v3.0).pce",
"system": "nec-pc-engine-cd",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp1.rom",
"name": "dsp1.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp1b.rom",
"name": "dsp1b.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp2.rom",
"name": "dsp2.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp3.rom",
"name": "dsp3.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "dsp4.rom",
"name": "dsp4.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "jagboot.rom",
"name": "jagboot.rom",
"system": "atari-jaguar",
"required": false,
"reason": "not_found",
"cores": [
"virtualjaguar"
]
},
{
"dest": "jagboot_m.rom",
"name": "jagboot_m.rom",
"system": "atari-jaguar",
"required": false,
"reason": "not_found",
"cores": [
"virtualjaguar"
]
},
{
"dest": "st010.rom",
"name": "st010.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "st011.rom",
"name": "st011.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
},
{
"dest": "st018.rom",
"name": "st018.rom",
"system": "nintendo-snes",
"required": true,
"reason": "not_found",
"cores": [
"mesence"
]
}
],
"total_files": 5804,
"total_size": 6570724300,
"pack_files": 5806,
"pack_size": 6570724300,
"total_omitted": 0,
"omitted_files": [],
"files": [
{
"dest": "xemu/bios/mcpx_1.0.bin",
@@ -2555,10 +2414,10 @@
},
{
"dest": "Cemu/otp.bin",
"sha1": "f0332b7252e9c01b30bf5d5a63ceb22dc47968aa",
"sha256": "93c2e20cc377f2cb0fa9a2ee58c39be22e00baa94b890545e585e53b3eb4039f",
"size": 256,
"repo_path": "bios/Nintendo/3DS/Citra/sysdata/otp.bin",
"sha1": "aa4ebc7f94c22b04945b6c9232547ada10b71f6f",
"sha256": "a12993f7fe069098ab6fe1cdb43099a1dfb568223bef08ed5cb43ec93d9ff2de",
"size": 1024,
"repo_path": "bios/Nintendo/Wii U/otp.bin",
"cores": [
"cemu"
]
@@ -2877,20 +2736,20 @@
},
{
"dest": "SC-55/ROM1.BIN",
"sha1": "aea7a4c0c7ffe1f212f7b9faecfd728862ac6904",
"sha256": "d7f03bf65c1f98c9c1226f4e1d1ecd4ac778a2dc4a332568ab0d5fee7ede9042",
"size": 4096,
"repo_path": "bios/Galaksija/ROM1.BIN",
"sha1": "b91bb1d9dccffe831b7cfde7800a3fe32b2fbda6",
"sha256": "8a1eb33c7599b746c0c50283e4349a1bb1773b5c0ec0e9661219bf6c067d2042",
"size": 32768,
"repo_path": "bios/Roland/soundcanvas-roms/SC-55mk2-v1.01/rom1.bin",
"cores": [
"dosbox"
]
},
{
"dest": "SC-55/ROM2.BIN",
"sha1": "1bae895fbdd658cfb56c53cc2139282cc1e778de",
"sha256": "9fc01e6beab84e61e0267fa39e23c649cdf2ccd25ad1cbfc2de0facfd160e723",
"size": 8192,
"repo_path": "bios/Sony/PlayStation 2/ROM2.BIN",
"sha1": "078cb5feea05e80bb9a1bb857a2163ee434fd053",
"sha256": "a4c9fd821059054c7e7681d61f49ce6f42ed2fe407a7ec1ba0dfdc9722582ce0",
"size": 524288,
"repo_path": "bios/Roland/sounddata/Nuked-SC55-Resources/ROMs/SC-55mk2-v1.01/rom2.bin",
"cores": [
"dosbox"
]
@@ -2925,6 +2784,16 @@
"dosbox"
]
},
{
"dest": "SC-55/WAVEROM3.BIN",
"sha1": "7454b817778179806f3f9d1985b3a2ef67ace76f",
"sha256": "334b2d16be3c2362210fdbec1c866ad58badeb0f84fd9bf5d0ac599baf077cc2",
"size": 1048576,
"repo_path": "bios/Roland/sounddata/Nuked-SC55-Resources/ROMs/SC-55-v1.00/sc55_waverom3.bin",
"cores": [
"dosbox"
]
},
{
"dest": "libbass.so",
"sha1": "415365e930b4c7d33e9af3225bea230e15bdebe7",
@@ -16743,10 +16612,10 @@
},
{
"dest": "galaksija/ROM2.BIN",
"sha1": "1bae895fbdd658cfb56c53cc2139282cc1e778de",
"sha256": "9fc01e6beab84e61e0267fa39e23c649cdf2ccd25ad1cbfc2de0facfd160e723",
"size": 8192,
"repo_path": "bios/Sony/PlayStation 2/ROM2.BIN",
"sha1": "5d5ab4313a2d0effe7572bb129193b64cab002c1",
"sha256": "7d93fe474fcc98c06a6d96e533f8935e4e707edf0792d3e9d679ea68404375de",
"size": 4096,
"repo_path": "bios/Galaksija/ROM2.BIN",
"cores": [
"galaksija"
]
@@ -23473,6 +23342,96 @@
"mesen-s"
]
},
{
"dest": "dsp1.rom",
"sha1": "188d471fefea71eb53f0ee7064697ff0971b1014",
"sha256": "91e87d11e1c30d172556bed2211cce2efa94ba595f58c5d264809ef4d363a97b",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp1.rom",
"cores": [
"mesence"
]
},
{
"dest": "dsp1b.rom",
"sha1": "78b724811f5f18d8c67669d9390397eb1a47a5e2",
"sha256": "d789cb3c36b05c0b23b6c6f23be7aa37c6e78b6ee9ceac8d2d2aa9d8c4d35fa9",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp1b.rom",
"cores": [
"mesence"
]
},
{
"dest": "dsp2.rom",
"sha1": "198c4b1c3bfc6d69e734c5957af3dbfa26238dfb",
"sha256": "03ef4ef26c9f701346708cb5d07847b5203cf1b0818bf2930acd34510ffdd717",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp2.rom",
"cores": [
"mesence"
]
},
{
"dest": "dsp3.rom",
"sha1": "558da7cb3bd3876a6ca693661ffc6c110e948cf9",
"sha256": "0971b08f396c32e61989d1067dddf8e4b14649d548b2188f7c541b03d7c69e4e",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp3.rom",
"cores": [
"mesence"
]
},
{
"dest": "dsp4.rom",
"sha1": "af6478aecb6f1b67177e79c82ca04c56250a8c72",
"sha256": "752d03b2d74441e430b7f713001fa241f8bbcfc1a0d890ed4143f174dbe031da",
"size": 8192,
"repo_path": "bios/Nintendo/SNES/SNES_dsp4.rom",
"cores": [
"mesence"
]
},
{
"dest": "st010.rom",
"sha1": "6472828403de3589433a906e2c3f3d274c0ff008",
"sha256": "fa9bced838fedea11c6f6ace33d1878024bdd0d02cc9485899d0bdd4015ec24c",
"size": 53248,
"repo_path": "bios/Nintendo/SNES/SNES_st010.rom",
"cores": [
"mesence"
]
},
{
"dest": "st011.rom",
"sha1": "fecbae2cec76c710422486baa186ffa7ca1cf925",
"sha256": "8b2b3f3f3e6e29f4d21d8bc736b400bc988b7d2214ebee15643f01c1fee2f364",
"size": 53248,
"repo_path": "bios/Nintendo/SNES/SNES_st011.rom",
"cores": [
"mesence"
]
},
{
"dest": "st018.rom",
"sha1": "91383b92745cc7cc4f15409ac5bc2c2f699a43f1",
"sha256": "6df209ab5d2524d1839c038be400ae5eb20dafc14a3771a3239cd9e8acd53806",
"size": 163840,
"repo_path": "bios/Nintendo/SNES/SNES_st018.rom",
"cores": [
"mesence"
]
},
{
"dest": "SufamiTurbo.sfc",
"sha1": "ef86ea192eed03d5c413fdbbfd46043be1d7a127",
"sha256": "edacb453da14f825f05d1134d6035f4bf034e55f7cfb97c70c4ee107eabc7342",
"size": 262144,
"repo_path": "bios/Nintendo/SuFami Turbo/STBIOS.bin",
"cores": [
"mesence"
]
},
{
"dest": "ymf288_adpcm_rom.bin",
"sha1": "50b6c3e288eaa12ad275d4f323267bb72b0445df",
@@ -23503,6 +23462,26 @@
"mesence"
]
},
{
"dest": "[BIOS] Super CD-ROM System (Japan) (v3.0).pce",
"sha1": "79f5ff55dd10187c7fd7b8daab0b3ffbd1f56a2c",
"sha256": "e11527b3b96ce112a037138988ca72fd117a6b0779c2480d9e03eaebece3d9ce",
"size": 262144,
"repo_path": "bios/NEC/PC Engine/syscard3.pce",
"cores": [
"mesence"
]
},
{
"dest": "[BIOS] Games Express CD Card (Japan).pce",
"sha1": "014881a959e045e00f4db8f52955200865d40280",
"sha256": "4b86bb96a48a4ca8375fc0109631d0b1d64f255a03b01de70594d40788ba6c3d",
"size": 32768,
"repo_path": "bios/NEC/PC Engine/gecard.pce",
"cores": [
"mesence"
]
},
{
"dest": "bios.col",
"sha1": "45bedc4cbdeac66c7df59e9e599195c778d86a92",
@@ -44675,10 +44654,10 @@
},
{
"dest": "np2/bios.rom",
"sha1": "1f5f7013f18c08ff50d7942e76c4fbd782412414",
"sha256": "863df0975a305110a7da4591b704e8f5dc7302f03c63603aa2dcd03e84c36ff9",
"size": 65536,
"repo_path": "bios/IBM/PC/ibmpcjr/bios.rom",
"sha1": "76a7360502fa0296ea93b4c537174610a834d367",
"sha256": "d0f5b6d96a01295ab5436d7852d2c9eea1faa87fcf016b7e6599cdd689266cd2",
"size": 98304,
"repo_path": "bios/NEC/PC-98/bios.rom",
"cores": [
"nekop2"
]
@@ -45625,10 +45604,10 @@
},
{
"dest": "np2kai/bios.rom",
"sha1": "1f5f7013f18c08ff50d7942e76c4fbd782412414",
"sha256": "863df0975a305110a7da4591b704e8f5dc7302f03c63603aa2dcd03e84c36ff9",
"size": 65536,
"repo_path": "bios/IBM/PC/ibmpcjr/bios.rom",
"sha1": "76a7360502fa0296ea93b4c537174610a834d367",
"sha256": "d0f5b6d96a01295ab5436d7852d2c9eea1faa87fcf016b7e6599cdd689266cd2",
"size": 98304,
"repo_path": "bios/NEC/PC-98/bios.rom",
"cores": [
"np2kai"
]
@@ -52261,20 +52240,20 @@
},
{
"dest": "scummvm/extra/MT32_CONTROL.ROM",
"sha1": "a439fbb390da38cada95a7cbb1d6ca199cd66ef8",
"sha256": "08d68695e5bff6bbcbb751d6e4453db9f5ead0b5f41e86480798a04376dfe090",
"sha1": "b083518fffb7f66b03c23b7eb4f868e62dc5a987",
"sha256": "a73a06c23ed38370e58a11fb1b86f7ea4c547061a60d7aa62bae446235fd2dff",
"size": 65536,
"repo_path": "bios/Commodore/Amiga/mt32-roms/cm32l_control.rom",
"repo_path": "bios/Commodore/Amiga/mt32-roms/mt32_control.rom",
"cores": [
"scummvm"
]
},
{
"dest": "scummvm/extra/MT32_PCM.ROM",
"sha1": "289cc298ad532b702461bfc738009d9ebe8025ea",
"sha256": "0dc50190bb7ea3fb212c970346b771a511772b528801e7eda6d27efda8c40698",
"size": 1048576,
"repo_path": "bios/Commodore/Amiga/mt32-roms/pcm_cm32l.rom",
"sha1": "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252",
"sha256": "d9164063f293410cf33f2f64cdcea6893b44723fe41938e07ec9aef58b406238",
"size": 524288,
"repo_path": "bios/Commodore/Amiga/mt32-roms/pcm_mt32.rom",
"cores": [
"scummvm"
]
@@ -54939,6 +54918,26 @@
"virtualjaguar"
]
},
{
"dest": "jagboot.rom",
"sha1": "af643900fea84234e08b616a6d27f03f0a61db96",
"sha256": "f0bd29599b3dfca7f5620c011256c1dc45c9d82c428a318f965c2ba3ded2e9f9",
"size": 131072,
"repo_path": "bios/Atari/Jaguar/boot.rom",
"cores": [
"virtualjaguar"
]
},
{
"dest": "jagboot_m.rom",
"sha1": "af643900fea84234e08b616a6d27f03f0a61db96",
"sha256": "f0bd29599b3dfca7f5620c011256c1dc45c9d82c428a318f965c2ba3ded2e9f9",
"size": 131072,
"repo_path": "bios/Atari/Jaguar/boot.rom",
"cores": [
"virtualjaguar"
]
},
{
"dest": "WQXEmu/nc1020/obj_lu.bin",
"sha1": "64b8a315ecbc420ae594ccced43498392988669e",
@@ -56903,6 +56902,16 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-10000.MEC",
"sha1": "3f8affbe07024ccd2f5b8374072d0928c583a862",
"sha256": "fbbfc6c156266ac7e9afb37f0cc53fb78fadf2f09f580e56b2da57e6539e463b",
"size": 4,
"repo_path": "bios/Sony/PlayStation 2/SCPH-10000.MEC",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-30004R.bin",
"sha1": "8fa040852d4b8688f0c84bcfffc65eb208f2b432",
@@ -56933,6 +56942,36 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-50009_BIOS_V10_CHN_190.NVM",
"sha1": "3ffa2e74c8c8ce0e10e2069956f12d2407b91c65",
"sha256": "5b255bce650e66efeeb3b0bebc0dff705600d05aa2e076a315d02c6a7ed6ac9a",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.NVM",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-50009_BIOS_V10_CHN_190.ROM2",
"sha1": "7aef1dd6de4b4f64f31daad615bbccdb3e62e79c",
"sha256": "8dc012640186c46a39fcdd64a8ab9430080a220bd0630da58c977f35725de5cf",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.ROM2",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-50009_BIOS_V10_CHN_190.ROM1",
"sha1": "b284280341f16b1581c28ff81934bfdf403da1f0",
"sha256": "ad812eb36b8e7daa6106411e43840f70175f012a7a7dd289965872fe43933cc4",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.ROM1",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70004.BIN",
"sha1": "434bc0b4eb4827da0773ec0795aadc5162569a07",
@@ -56943,6 +56982,16 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70004.ROM1",
"sha1": "cc44355ded232a2ba5309bb24d4cd55af08696b2",
"sha256": "b86fbccaa111ca7497630337dafea7da7320fc4f924ada22b92145ef806e7b42",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70004.ROM1",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70008_BIOS_V12_RUS_200.BIN",
"sha1": "cce6fac0f7e682ad167e1e828b2d53192c3d5051",
@@ -56953,6 +57002,16 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70008_BIOS_V12_RUS_200.NVM",
"sha1": "6611151e8f599230cdf19a17318e7e5ddc781961",
"sha256": "b1704c7da37f03db017ad7576508c61b250d9ed4f3ceda8732ea91a3034f6cbf",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70008_BIOS_V12_RUS_200.NVM",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/ps2-0100jd-20000117.bin",
"sha1": "5b33170323ed6344e2363fed8115dc3918bb96a4",
@@ -57893,16 +57952,6 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-50009_BIOS_V10_CHN_190.NVM",
"sha1": "3ffa2e74c8c8ce0e10e2069956f12d2407b91c65",
"sha256": "5b255bce650e66efeeb3b0bebc0dff705600d05aa2e076a315d02c6a7ed6ac9a",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-50009_BIOS_V10_CHN_190.NVM",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70006_BIOS_V12_HK_200.NVM",
"sha1": "06ccc54cdbe8b017a629155ccb66310cba9c4720",
@@ -57913,16 +57962,6 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-70008_BIOS_V12_RUS_200.NVM",
"sha1": "6611151e8f599230cdf19a17318e7e5ddc781961",
"sha256": "b1704c7da37f03db017ad7576508c61b250d9ed4f3ceda8732ea91a3034f6cbf",
"size": 1024,
"repo_path": "bios/Sony/PlayStation 2/SCPH-70008_BIOS_V12_RUS_200.NVM",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-75008_BIOS_V14_RUS_220.NVM",
"sha1": "fff13c6e30c55df9d6241ee08e5d0026c6a5d618",
@@ -57953,6 +57992,16 @@
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-90006_BIOS_VX_HK _230.ROM1",
"sha1": "b96cf94772f01b8434038285896467884a84b0c2",
"sha256": "1b7c68be427e6f571596ef6b444e8b86d1b4e2a226d62f6bfc86717a798f2317",
"size": 524288,
"repo_path": "bios/Sony/PlayStation 2/SCPH-90006_BIOS_VX_HK _230.ROM1",
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/ps2-0230a-20080220.nvm",
"sha1": "258ad0f26b0b269462bbd9acbb5506d5dfbcc3d5",
@@ -57982,16 +58031,6 @@
"cores": [
"yaps2"
]
},
{
"dest": "pcsx2/bios/SCPH-10000.MEC",
"sha1": "3f8affbe07024ccd2f5b8374072d0928c583a862",
"sha256": "fbbfc6c156266ac7e9afb37f0cc53fb78fadf2f09f580e56b2da57e6539e463b",
"size": 4,
"repo_path": "bios/Sony/PlayStation 2/SCPH-10000.MEC",
"cores": [
"yaps2"
]
}
]
}
+1328 -18
View File
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+10
View File
@@ -65,6 +65,16 @@ data_directories:
local_cache: data/pcsx2-resources
description: "PCSX2 resources (GameIndex.yaml, RedumpDatabase.yaml, fonts, shaders, icons, sounds)"
# ref: pcsx2-libretro/Main.cpp:157-158 (yaps2) - system/pcsx2/resources/
# yaps2's own bin/resources at the revision its profile is pinned to.
yaps2-resources:
source_url: "https://github.com/yaps2/yaps2/archive/{version}.tar.gz"
source_type: tarball
source_path: "yaps2-{version}/bin/resources"
version: 57ea93c0ce8306063b31fe6658dab6b492bbedfe
local_cache: data/yaps2-resources
description: "yaps2 resources (GameIndex.yaml, RedumpDatabase.yaml, fonts, shaders, icons, sounds)"
# ref: src/Cafe/GameProfile/GameProfile.cpp:181-195 — Cemu/gameProfiles/default/
cemu-gameprofiles:
source_url: "https://github.com/cemu-project/Cemu/archive/{version}.tar.gz"
+18
View File
@@ -148,6 +148,7 @@ platforms:
retroarch:
config: retroarch.yml
status: active
extract_to: system/
logo: https://raw.githubusercontent.com/libretro/RetroArch/master/media/retroarch-vector_invader-only.svg
scraper: libretro
source_url: https://raw.githubusercontent.com/libretro/libretro-database/master/dat/System.dat
@@ -182,6 +183,7 @@ platforms:
batocera:
config: batocera.yml
status: active
extract_to: /userdata/bios/
logo: https://raw.githubusercontent.com/batocera-linux/batocera-emulationstation/master/resources/splash_batocera.svg
scraper: batocera
source_url: https://raw.githubusercontent.com/batocera-linux/batocera.linux/master/package/batocera/core/batocera-scripts/scripts/batocera-systems
@@ -407,6 +409,7 @@ platforms:
recalbox:
config: recalbox.yml
status: active
extract_to: /recalbox/share/bios/
logo: https://raw.githubusercontent.com/homarr-labs/dashboard-icons/main/svg/recalbox.svg
scraper: recalbox
source_url: https://gitlab.com/recalbox/recalbox/-/raw/master/board/recalbox/fsoverlay/recalbox/share_init/system/.emulationstation/es_bios.xml
@@ -620,11 +623,14 @@ platforms:
retrobat:
config: retrobat.yml
status: active
extract_to: bios/
logo: https://raw.githubusercontent.com/RetroBat-Official/retrobat/main/system/resources/retrobat_logo_notext.png
scraper: retrobat
source_url: https://raw.githubusercontent.com/RetroBat-Official/emulatorlauncher/master/batocera-systems/Resources/batocera-systems.json
source_format: json
hash_type: md5
# Windows: names differing only by case land on one file.
case_insensitive_fs: true
schedule: weekly
cores:
- '81'
@@ -806,12 +812,15 @@ platforms:
emudeck:
config: emudeck.yml
status: active
extract_to: ~/Emulation/bios/
logo: https://raw.githubusercontent.com/dragoonDorise/EmuDeck/main/icons/EmuDeck.png
scraper: emudeck
source_url: https://raw.githubusercontent.com/dragoonDorise/EmuDeck/main/functions/checkBIOS.sh
source_wiki: https://raw.githubusercontent.com/EmuDeck/emudeck.github.io/main/docs/tables/
source_format: bash_script+csv
hash_type: md5
# Windows: names differing only by case land on one file.
case_insensitive_fs: true
schedule: weekly
target_scraper: emudeck_targets
target_source: https://github.com/dragoonDorise/EmuDeck
@@ -834,6 +843,7 @@ platforms:
lakka:
config: lakka.yml
status: active
extract_to: /storage/system/
logo: https://raw.githubusercontent.com/libretro/retroarch-assets/master/src/xmb/flatui/lakka.svg
scraper: libretro
inherits_from: retroarch
@@ -850,6 +860,7 @@ platforms:
retrodeck:
config: retrodeck.yml
status: active
extract_to: ~/retrodeck/
logo: https://raw.githubusercontent.com/RetroDECK/RetroDECK/main/res/icon.svg
scraper: retrodeck
source_url: https://github.com/RetroDECK/components
@@ -894,6 +905,7 @@ platforms:
romm:
config: romm.yml
status: active
extract_to: library/bios/
logo: https://avatars.githubusercontent.com/u/168586850
scraper: romm
source_url: https://raw.githubusercontent.com/rommapp/romm/master/backend/models/fixtures/known_bios_files.json
@@ -941,6 +953,7 @@ platforms:
rocknix:
config: rocknix.yml
status: active
extract_to: /storage/roms/bios/
logo: https://avatars.githubusercontent.com/u/152618023
scraper: rocknix
cores: all_libretro
@@ -955,6 +968,7 @@ platforms:
retropie:
config: retropie.yml
status: archived
extract_to: ~/RetroPie/BIOS/
logo: https://avatars.githubusercontent.com/u/11378204
scraper: retropie
source: https://github.com/RetroPie/RetroPie-Setup
@@ -971,11 +985,14 @@ platforms:
bizhawk:
config: bizhawk.yml
status: active
extract_to: Firmware/
logo: https://avatars.githubusercontent.com/u/11743303
scraper: bizhawk
source_url: https://raw.githubusercontent.com/TASEmulators/BizHawk/master/src/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs
source_format: csharp_firmware_database
hash_type: sha1
# Windows: names differing only by case land on one file.
case_insensitive_fs: true
schedule: monthly
cores:
- applewin
@@ -1033,6 +1050,7 @@ platforms:
misterfpga:
config: misterfpga.yml
status: active
extract_to: /media/fat/games/
logo: https://avatars.githubusercontent.com/u/47264183
scraper: misterfpga
source_url: https://raw.githubusercontent.com/ajgowans/BiosDB_MiSTer/db/bios_db.json.zip
+19
View File
@@ -25,6 +25,25 @@ cores:
- vita3k
- xemu
- xroar
standalone_cores:
- azahar
- cemu
- dolphin
- duckstation
- gzdoom
- mame
- melonds
- openbor
- pcsx2
- pico-8
- ppsspp
- primehack
- rpcs3
- ruffle
- solarus
- vita3k
- xemu
- xroar
systems:
triforce:
files:
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -16,7 +16,7 @@ dependencies = [
# and the CI contract check are the only callers, and no user path imports it.
[project.optional-dependencies]
dev = [
"jsonschema>=4.23",
"jsonschema[format-nongpl]>=4.23",
]
# The site build the repo generates and documents. Both were hard
# requirements of deploy-site.yml and of wiki/release-process.md while being
+31
View File
@@ -31,6 +31,37 @@
"files"
]
}
},
{
"comment": "Per-file mode separates the two builds of a dual profile. A profile with only a standalone build has no libretro side to separate it from, and a file marked standalone there drops out of the gap analysis and of the packs of every platform that lists the emulator without standalone_cores.",
"if": {
"properties": {
"type": {
"const": "standalone"
}
},
"required": [
"type"
]
},
"then": {
"properties": {
"files": {
"items": {
"not": {
"properties": {
"mode": {
"const": "standalone"
}
},
"required": [
"mode"
]
}
}
}
}
}
}
],
"properties": {
+1 -1
View File
@@ -21,7 +21,7 @@
"sha1": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
"md5": { "type": "string", "pattern": "^[a-f0-9]{32}$" },
"size": { "type": "integer", "minimum": 0 },
"status": { "enum": ["verified", "verified_md5", "verified_rebuild", "verified_data", "untracked"] },
"status": { "enum": ["verified", "verified_md5", "verified_rebuild", "verified_data", "verified_members", "untracked"] },
"name": { "type": "string" }
}
}
+28
View File
@@ -72,6 +72,11 @@ def _strip_timestamps(text: str) -> str:
class ArtifactLockBusy(RuntimeError):
"""Raised when another process already holds the artifact directory."""
# A run that holds an artifact directory for its whole duration names it
# here for the steps it spawns: they would otherwise be refused by it.
HELD_LOCK_ENV = "RETROBIOS_HELD_ARTIFACT_DIR"
@contextlib.contextmanager
def artifact_lock(directory: str, exclusive: bool = True):
"""Serialize access to a shared artifact directory across processes.
@@ -88,6 +93,9 @@ def artifact_lock(directory: str, exclusive: bool = True):
return
os.makedirs(directory, exist_ok=True)
if os.environ.get(HELD_LOCK_ENV) == os.path.realpath(directory):
yield
return
lock_path = os.path.join(directory, ".lock")
mode = fcntl.LOCK_EX if exclusive else fcntl.LOCK_SH
with open(lock_path, "w") as handle:
@@ -103,6 +111,26 @@ def artifact_lock(directory: str, exclusive: bool = True):
finally:
fcntl.flock(handle, fcntl.LOCK_UN)
@contextlib.contextmanager
def hold_artifact_lock(directory: str):
"""Hold a directory exclusively across several child steps.
A lock taken step by step frees the directory between them: another
run can purge the packs one step built before the next step checks
them. The children this process spawns inherit the hold.
"""
with artifact_lock(directory):
previous = os.environ.get(HELD_LOCK_ENV)
os.environ[HELD_LOCK_ENV] = os.path.realpath(directory)
try:
yield
finally:
if previous is None:
os.environ.pop(HELD_LOCK_ENV, None)
else:
os.environ[HELD_LOCK_ENV] = previous
def _build_timestamp(db: dict | None = None) -> str:
"""Timestamp for generated artifacts.
+35 -18
View File
@@ -54,6 +54,7 @@ import upstream # noqa: E402
from common import ( # noqa: E402
list_registered_platforms,
load_emulator_profiles,
upstream_profile_index,
yaml_load,
)
from exporter import discover_exporters # noqa: E402
@@ -156,6 +157,22 @@ def _core_names(config: dict) -> set[str]:
return names
def _keyed_files(files: list[dict]) -> dict[str, dict]:
"""Each declaration under its own key.
A platform declares one destination several times (an archive once per
inner ROM, MD5 alternatives): keyed by destination alone, the dict kept
the last and a change to the others read as identical.
"""
keyed: dict[str, dict] = {}
seen: dict[str, int] = {}
for f in files:
key = _file_key(f)
seen[key] = seen.get(key, 0) + 1
keyed[key if seen[key] == 1 else f"{key}#{seen[key]}"] = f
return keyed
def diff_platform(old: dict, new: dict) -> PlatformDiff:
"""Compare two platform files the way a reviewer reads the diff.
@@ -171,12 +188,8 @@ def diff_platform(old: dict, new: dict) -> PlatformDiff:
diff.systems_added = sorted(set(new_systems) - set(old_systems))
diff.systems_removed = sorted(set(old_systems) - set(new_systems))
for system in sorted(set(old_systems) & set(new_systems)):
old_files = {
_file_key(f): f for f in (old_systems[system] or {}).get("files") or []
}
new_files = {
_file_key(f): f for f in (new_systems[system] or {}).get("files") or []
}
old_files = _keyed_files((old_systems[system] or {}).get("files") or [])
new_files = _keyed_files((new_systems[system] or {}).get("files") or [])
diff.files_added.extend(
f"{system}/{k}" for k in sorted(set(new_files) - set(old_files))
)
@@ -364,14 +377,9 @@ def check_native(platforms_dir: Path, cache_dir: Path, truth_dir: Path) -> list[
# --- targets ----------------------------------------------------------------
def profile_name_index(profiles: dict[str, dict]) -> dict[str, str]:
"""Upstream core name -> profile key, the index target filtering uses."""
index: dict[str, str] = {}
for key, profile in profiles.items():
index.setdefault(key, key)
for alias in profile.get("cores") or []:
index.setdefault(str(alias), key)
return index
def profile_name_index(profiles: dict[str, dict]) -> dict[str, set[str]]:
"""Upstream core name -> the profiles that claim it, as target filtering reads it."""
return upstream_profile_index(profiles, include_aliases=True)
def _removed_cores(overrides: dict, platform: str) -> dict[str, set[str]]:
@@ -539,13 +547,20 @@ def coreinfo_gaps(
Matching folds case: the buildbot serves lower-case names while a few
.info files keep the project's own casing.
"""
index = {k.casefold(): v for k, v in profile_name_index(profiles).items()}
index: dict[str, set[str]] = {}
for key, claimants in profile_name_index(profiles).items():
index.setdefault(key.casefold(), set()).update(claimants)
unprofiled = [n for n in names if n.casefold() not in index]
# A name only standalone profiles claim: libretro now builds a core
# nothing in the collection describes as one.
standalone = [
(n, index[n.casefold()])
(n, sorted(index[n.casefold()])[0])
for n in names
if n.casefold() in index
and str(profiles[index[n.casefold()]].get("type", "")).strip() == "standalone"
and all(
str(profiles[c].get("type", "")).strip() == "standalone"
for c in index[n.casefold()]
)
]
return unprofiled, standalone
@@ -789,7 +804,9 @@ def _check_fbneo(cache_dir: str, offline: bool) -> Finding:
# --- CI toolchain -----------------------------------------------------------
_PIN_RE = re.compile(r'"?([A-Za-z0-9_.\-]+)((?:[<>=!~]=?[^,"\s]+)(?:,[<>=!~]=?[^,"\s]+)*)?"?')
_PIN_RE = re.compile(
r'"?([A-Za-z0-9_.\-]+)(?:\[[^\]]*\])?((?:[<>=!~]=?[^,"\s]+)(?:,[<>=!~]=?[^,"\s]+)*)?"?'
)
_USES_RE = re.compile(r"uses:\s*([\w.\-]+/[\w.\-]+)@([0-9a-f]{40})\s*(?:#\s*(\S+))?")
+2 -2
View File
@@ -24,7 +24,7 @@ import sys
from collections.abc import Iterable
sys.path.insert(0, os.path.dirname(__file__))
from common import load_database
from common import composition_tier, load_database
from largefiles import (
LARGE_FILES_RELEASE,
LARGE_FILES_REPO,
@@ -129,7 +129,7 @@ def _section_for(path: str) -> str:
return "Arcade"
if top == "QEMU":
return "Virtual machine firmware"
if top in ("RPG Maker", "ScummVM"):
if composition_tier(path) == "game_data":
return "Game engine data"
if top in ("Apple", "Commodore", "Atari", "Sinclair", "Amstrad"):
return "Computer"
+109 -48
View File
@@ -35,19 +35,23 @@ def load_database(db_path: str) -> dict:
_casefold_index_cache: dict[int, dict[str, list[str]]] = {}
# One slot: the dict it was built from, its size then, and the folded view.
# Keyed by id() alone, a database freed and replaced by another at the same
# address got the old index back, and the case-insensitive step answered from
# a collection that no longer existed.
_casefold_index_cache: list[tuple[dict, int, dict[str, list[str]]]] = []
def _casefold_name_index(by_name: dict) -> dict[str, list[str]]:
"""Build (and cache) a casefolded view of the by_name index."""
key = id(by_name)
cached = _casefold_index_cache.get(key)
if cached is not None:
return cached
if _casefold_index_cache:
source, size, folded = _casefold_index_cache[0]
if source is by_name and size == len(by_name):
return folded
folded: dict[str, list[str]] = {}
for name, sha1s in by_name.items():
folded.setdefault(name.casefold(), []).extend(sha1s)
_casefold_index_cache[key] = folded
_casefold_index_cache[:] = [(by_name, len(by_name), folded)]
return folded
@@ -476,24 +480,41 @@ def _affinity_tokens(text: str) -> set[str]:
}
def _by_affinity(paths: list[str], file_entry: dict, dest_hint: str) -> list[str]:
"""Same-named candidates, the ones stored with the file's owner first.
A name step without a tie-break took whichever path sorted first: the
TheXTech coin.ogg for Syobon Action, a Hurrican sound for ARMSX2. The
destination's directories and the profile that asks name where its own
copy lives; the order is otherwise kept.
"""
hint = dest_hint or file_entry.get("path") or file_entry.get("destination") or ""
wanted = _affinity_tokens(hint.rsplit("/", 1)[0] if "/" in hint else "")
def _owner_tokens(file_entry: dict) -> set[str]:
"""Tokens naming the profile that asks for the file."""
tokens: set[str] = set()
for owner in (file_entry.get("source_profile"), file_entry.get("source_emulator")):
if owner:
wanted |= _affinity_tokens(str(owner).replace(" ", ""))
if not wanted or len(paths) < 2:
return paths
tokens |= _affinity_tokens(str(owner).replace(" ", ""))
return tokens
def score(path: str) -> int:
return len(wanted & _affinity_tokens(path.rsplit("/", 1)[0]))
def _by_affinity(paths: list[str], file_entry: dict, dest_hint: str) -> list[str]:
"""Same-named candidates, the likeliest first.
A name step without a tie-break took whichever path sorted first: the
TheXTech coin.ogg for Syobon Action, a Hurrican sound for ARMSX2, the
1 MB CM-32L PCM ROM for ScummVM's 512 KB MT32_PCM.ROM. A size the entry
declares orders the candidates first (ordering rejects nothing, so an
unvalidated size keeps its informative status); then the destination's
directories and the profile that asks name where its own copy lives. The
order is otherwise kept.
"""
if len(paths) < 2:
return paths
hint = dest_hint or file_entry.get("path") or file_entry.get("destination") or ""
wanted = _affinity_tokens(hint.rsplit("/", 1)[0] if "/" in hint else "")
owners = _owner_tokens(file_entry)
sized = any(file_entry.get(k) for k in ("size", "min_size", "max_size"))
def score(path: str) -> tuple[int, bool, int]:
fits = 0
if sized and os.path.exists(path):
fits = int(size_fits(file_entry, os.path.getsize(path)))
tokens = _affinity_tokens(path.rsplit("/", 1)[0])
# The owner's own copy ranks above any shared tree segment: NetherSX2's
# shaders/common/ beat armsx2's own fxaa.fx on two directory tokens.
return fits, bool(owners & tokens), len(wanted & tokens)
return sorted(paths, key=score, reverse=True)
@@ -710,12 +731,17 @@ def resolve_local_file(
own_file_absent = True
if len(candidates) > 1:
depth = len(tail.split("/"))
# At equal depth the owner's own copy: super3's Games.xml was
# served to Supermodel-Dojo by index order alone.
owners = _owner_tokens(file_entry)
candidates = sorted(
candidates,
key=lambda h: len(
files_db.get(h, {}).get("path", "").split("/")
)
- depth,
key=lambda h: (
len(files_db.get(h, {}).get("path", "").split("/")) - depth,
not owners & _affinity_tokens(
files_db.get(h, {}).get("path", "").rsplit("/", 1)[0]
),
),
)
for match_sha1 in candidates:
if match_sha1 not in files_db:
@@ -1065,6 +1091,7 @@ GAME_DATA_TOPS = (
"Interplay",
"Monolith",
"Softdisk",
"Toys for Bob",
"Valve",
)
@@ -1298,6 +1325,46 @@ def runs_standalone(
)
# What identifies a profile entry's content, carried unchanged wherever the
# entry travels (cross-reference report, core extras, second-pass copies).
# Each copy once kept its own subset: np2kai's bios.rom lost min_size and
# validation on the way and resolved to an IBM PCjr ROM of the same name.
PROFILE_IDENTITY_FIELDS = (
"sha1", "md5", "sha256", "crc32", "size", "min_size", "max_size",
"validation", "aliases", "unsourceable",
)
def upstream_profile_index(
profiles: dict[str, dict], include_aliases: bool = False
) -> dict[str, set[str]]:
"""Every name a core is known by upstream -> the profiles that claim it.
A name can be claimed twice: the buildbot's `pcsx2` is the LRPS2 core,
which lrps2.yml lists in `cores:`, and also the key of the standalone
pcsx2 profile. A last-wins dict kept one of the two depending on file
order, and a RetroArch target filter dropped LRPS2's files. Callers
choose: a platform list prefers the exact key, a target filter keeps
every claimant.
"""
index: dict[str, set[str]] = {}
for name, profile in profiles.items():
if not include_aliases and profile.get("type") == "alias":
continue
index.setdefault(name, set()).add(name)
for core in profile.get("cores") or []:
index.setdefault(str(core), set()).add(name)
return index
def preferred_profile(index: dict[str, set[str]], name: str) -> str | None:
"""The profile a name designates: its own key first, else the first claimant."""
claimants = index.get(name)
if not claimants:
return None
return name if name in claimants else sorted(claimants)[0]
def resolve_platform_cores(
config: dict,
profiles: dict[str, dict],
@@ -1323,14 +1390,12 @@ def resolve_platform_cores(
}
elif isinstance(cores_config, list):
core_set = {str(c) for c in cores_config}
core_to_profile: dict[str, str] = {}
for name, p in profiles.items():
if p.get("type") == "alias":
continue
core_to_profile[name] = name
for core_name in p.get("cores", []):
core_to_profile[str(core_name)] = name
result = {core_to_profile[c] for c in core_set if c in core_to_profile}
index = upstream_profile_index(profiles)
result = {
profile
for c in core_set
if (profile := preferred_profile(index, c)) is not None
}
# Support "all_libretro" as a list element: combines all libretro
# profiles with explicitly listed standalone cores (e.g. RetroDECK
# ships RetroArch + standalone emulators)
@@ -1355,13 +1420,10 @@ def resolve_platform_cores(
# Upstream sources (buildbot, es_systems) may use different names
# than our profile keys (e.g., mednafen_psx vs beetle_psx).
# The profiles' cores: field lists these alternate names.
upstream_to_profile: dict[str, str] = {}
for name, p in profiles.items():
upstream_to_profile[name] = name
for alias in p.get("cores", []):
upstream_to_profile[str(alias)] = name
# Expand target_cores to profile keys
expanded = {upstream_to_profile.get(c, c) for c in target_cores}
index = upstream_profile_index(profiles, include_aliases=True)
expanded = {
profile for c in target_cores for profile in index.get(c, {c})
}
result = result & expanded
return result
@@ -1467,12 +1529,10 @@ def filter_systems_by_target(
return systems
# Build reverse index for target core name resolution
upstream_to_profile: dict[str, str] = {}
for name, p in profiles.items():
upstream_to_profile[name] = name
for alias in p.get("cores", []):
upstream_to_profile[str(alias)] = name
expanded_target = {upstream_to_profile.get(c, c) for c in target_cores}
index = upstream_profile_index(profiles, include_aliases=True)
expanded_target = {
profile for c in target_cores for profile in index.get(c, {c})
}
_norm_sid = _norm_system_id
@@ -1532,8 +1592,8 @@ def expand_platform_declared_names(config: dict, db: dict) -> set[str]:
md5 = fe.get("md5", "")
if not md5:
continue
# Skip multi-hash and zippedFile entries (inner ROM MD5, not file MD5)
if "," in md5 or fe.get("zippedFile"):
# Skip multi-hash and zipped_file entries (inner ROM MD5, not file MD5)
if "," in md5 or fe.get("zipped_file"):
continue
sha1 = by_md5.get(md5.lower())
if not sha1:
@@ -1673,6 +1733,7 @@ from artifacts import ( # noqa: E402,F401
write_if_changed,
ArtifactLockBusy,
artifact_lock,
hold_artifact_lock,
_TIMESTAMP_PATTERNS,
_strip_timestamps,
)
Loaded 100 of 223 files, more files were not shown because too many files have changed in this diff. Show more