mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-18 06:42:33 -05:00
Compare commits
44 Commits
0401d058a1
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e90095abd9 | ||
|
|
c8b27cac5e | ||
|
|
1d191ff190 | ||
|
|
5a6b54c195 | ||
|
|
e5ef253892 | ||
|
|
4ba8648ec2 | ||
|
|
617f5cc364 | ||
|
|
d4ce6df911 | ||
|
|
d0846ed78f | ||
|
|
07b4e55053 | ||
|
|
690e897ca7 | ||
|
|
7471c176c3 | ||
|
|
e72773e46d | ||
|
|
3c0c1cec02 | ||
|
|
faf4236463 | ||
|
|
1c0c502258 | ||
|
|
06c48e071a | ||
|
|
8f93ee2239 | ||
|
|
9ba8b02ff1 | ||
|
|
6fc2753f3e | ||
|
|
486b359c22 | ||
|
|
76a3543672 | ||
|
|
48d185dd7d | ||
|
|
6dbc3f510b | ||
|
|
97e26103f5 | ||
|
|
59d777a33d | ||
|
|
9ce4724fc4 | ||
|
|
7e46c23f3a | ||
|
|
6f22dd7738 | ||
|
|
c0e42ee4eb | ||
|
|
92b270c054 | ||
|
|
2f11542ed3 | ||
|
|
f9a612db4a | ||
|
|
812775f6b4 | ||
|
|
73ccb216f5 | ||
|
|
5ee81b30c6 | ||
|
|
b5eae226cd | ||
|
|
fd4606885e | ||
|
|
ded903ed7a | ||
|
|
077392bcd9 | ||
|
|
f4626ce3bd | ||
|
|
9e184f76fc | ||
|
|
fa0ed63718 | ||
|
|
c3fa55bd46 |
BIN
.github/assets/banner-light.png
vendored
Normal file
BIN
.github/assets/banner-light.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 246 KiB |
BIN
.github/assets/banner.png
vendored
Normal file
BIN
.github/assets/banner.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 135 KiB |
BIN
.github/assets/favicon.png
vendored
Normal file
BIN
.github/assets/favicon.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
BIN
.github/assets/logo.png
vendored
Normal file
BIN
.github/assets/logo.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 72 KiB |
BIN
.github/assets/social-preview.png
vendored
Normal file
BIN
.github/assets/social-preview.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 75 KiB |
36
.github/workflows/build.yml
vendored
36
.github/workflows/build.yml
vendored
@@ -58,16 +58,32 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
mkdir -p .cache/large
|
mkdir -p .cache/large
|
||||||
gh release download large-files -D .cache/large/ 2>/dev/null || true
|
gh release download large-files -D .cache/large/ 2>/dev/null || true
|
||||||
for f in .cache/large/*; do
|
python3 -c "
|
||||||
[ -f "$f" ] || continue
|
import hashlib, json, os, shutil
|
||||||
name=$(basename "$f")
|
db = json.load(open('database.json'))
|
||||||
target=$(grep "$name" .gitignore | head -1)
|
with open('.gitignore') as f:
|
||||||
if [ -n "$target" ] && [ ! -f "$target" ]; then
|
ignored = {l.strip() for l in f if l.strip().startswith('bios/')}
|
||||||
mkdir -p "$(dirname "$target")"
|
cache = '.cache/large'
|
||||||
cp "$f" "$target"
|
if not os.path.isdir(cache):
|
||||||
echo "Restored: $target"
|
exit(0)
|
||||||
fi
|
idx = {}
|
||||||
done
|
for fn in os.listdir(cache):
|
||||||
|
fp = os.path.join(cache, fn)
|
||||||
|
if os.path.isfile(fp):
|
||||||
|
h = hashlib.sha1(open(fp, 'rb').read()).hexdigest()
|
||||||
|
idx[h] = fp
|
||||||
|
restored = 0
|
||||||
|
for sha1, entry in db['files'].items():
|
||||||
|
path = entry['path']
|
||||||
|
if path in ignored and not os.path.exists(path):
|
||||||
|
src = idx.get(sha1)
|
||||||
|
if src:
|
||||||
|
os.makedirs(os.path.dirname(path), exist_ok=True)
|
||||||
|
shutil.copy2(src, path)
|
||||||
|
print(f'Restored: {path}')
|
||||||
|
restored += 1
|
||||||
|
print(f'Total: {restored} files restored')
|
||||||
|
"
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
|||||||
37
.github/workflows/deploy-site.yml
vendored
37
.github/workflows/deploy-site.yml
vendored
@@ -36,6 +36,43 @@ jobs:
|
|||||||
|
|
||||||
- run: pip install pyyaml mkdocs-material pymdown-extensions
|
- run: pip install pyyaml mkdocs-material pymdown-extensions
|
||||||
|
|
||||||
|
- name: Restore large files from release
|
||||||
|
run: |
|
||||||
|
mkdir -p .cache/large
|
||||||
|
gh release download large-files -D .cache/large/ 2>/dev/null || true
|
||||||
|
python3 -c "
|
||||||
|
import hashlib, json, os, shutil
|
||||||
|
db = json.load(open('database.json'))
|
||||||
|
with open('.gitignore') as f:
|
||||||
|
ignored = {l.strip() for l in f if l.strip().startswith('bios/')}
|
||||||
|
cache = '.cache/large'
|
||||||
|
if not os.path.isdir(cache):
|
||||||
|
exit(0)
|
||||||
|
idx = {}
|
||||||
|
for fn in os.listdir(cache):
|
||||||
|
fp = os.path.join(cache, fn)
|
||||||
|
if os.path.isfile(fp):
|
||||||
|
h = hashlib.sha1(open(fp, 'rb').read()).hexdigest()
|
||||||
|
idx[h] = fp
|
||||||
|
restored = 0
|
||||||
|
for sha1, entry in db['files'].items():
|
||||||
|
path = entry['path']
|
||||||
|
if path in ignored and not os.path.exists(path):
|
||||||
|
src = idx.get(sha1)
|
||||||
|
if src:
|
||||||
|
os.makedirs(os.path.dirname(path), exist_ok=True)
|
||||||
|
shutil.copy2(src, path)
|
||||||
|
print(f'Restored: {path}')
|
||||||
|
restored += 1
|
||||||
|
print(f'Total: {restored} files restored')
|
||||||
|
"
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Refresh data directories
|
||||||
|
run: python scripts/refresh_data_dirs.py
|
||||||
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Generate site
|
- name: Generate site
|
||||||
run: |
|
run: |
|
||||||
python scripts/generate_site.py
|
python scripts/generate_site.py
|
||||||
|
|||||||
@@ -7,6 +7,16 @@
|
|||||||
3. Variants (alternate hashes): `bios/Manufacturer/Console/.variants/`
|
3. Variants (alternate hashes): `bios/Manufacturer/Console/.variants/`
|
||||||
4. Create a Pull Request - checksums are verified automatically
|
4. Create a Pull Request - checksums are verified automatically
|
||||||
|
|
||||||
|
## Add a new platform
|
||||||
|
|
||||||
|
1. Write a scraper in `scripts/scraper/`
|
||||||
|
2. Create the platform YAML in `platforms/`
|
||||||
|
3. Register in `platforms/_registry.yml`
|
||||||
|
4. Submit a Pull Request
|
||||||
|
|
||||||
|
Contributors who add platform support are credited in the README,
|
||||||
|
on the documentation site, and in the BIOS packs.
|
||||||
|
|
||||||
## File conventions
|
## File conventions
|
||||||
|
|
||||||
- Files >50 MB go in GitHub release assets (`large-files` release)
|
- Files >50 MB go in GitHub release assets (`large-files` release)
|
||||||
|
|||||||
14
README.md
14
README.md
@@ -1,8 +1,10 @@
|
|||||||
# RetroBIOS
|
<p align="center">
|
||||||
|
<img src=".github/assets/banner.png" alt="RetroBIOS" width="400">
|
||||||
|
</p>
|
||||||
|
|
||||||
Complete BIOS and firmware packs for Batocera, BizHawk, EmuDeck, Lakka, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie, and RomM.
|
Complete BIOS and firmware packs for Batocera, BizHawk, EmuDeck, Lakka, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie, and RomM.
|
||||||
|
|
||||||
**7,295** verified files across **396** systems, ready to extract into your emulator's BIOS directory.
|
**7,302** verified files across **396** systems, ready to extract into your emulator's BIOS directory.
|
||||||
|
|
||||||
## Quick Install
|
## Quick Install
|
||||||
|
|
||||||
@@ -46,7 +48,7 @@ Each file is checked against the emulator's source code to match what the code a
|
|||||||
- **10 platforms** supported with platform-specific verification
|
- **10 platforms** supported with platform-specific verification
|
||||||
- **329 emulators** profiled from source (RetroArch cores + standalone)
|
- **329 emulators** profiled from source (RetroArch cores + standalone)
|
||||||
- **396 systems** covered (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
|
- **396 systems** covered (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
|
||||||
- **7,295 files** verified with MD5, SHA1, CRC32 checksums
|
- **7,302 files** verified with MD5, SHA1, CRC32 checksums
|
||||||
- **8765 MB** total collection size
|
- **8765 MB** total collection size
|
||||||
|
|
||||||
## Supported systems
|
## Supported systems
|
||||||
@@ -122,6 +124,10 @@ To keep packs accurate, each file is checked against the emulator's source code.
|
|||||||
<a href="https://github.com/monster-penguin"><img src="https://avatars.githubusercontent.com/u/266009589?v=4" width="50" title="monster-penguin"></a>
|
<a href="https://github.com/monster-penguin"><img src="https://avatars.githubusercontent.com/u/266009589?v=4" width="50" title="monster-penguin"></a>
|
||||||
|
|
||||||
|
|
||||||
|
## Community tools
|
||||||
|
|
||||||
|
- [BIOS Preservation Tool](https://github.com/monster-penguin/BIOS-Preservation-Tool) by [monster-penguin](https://github.com/monster-penguin) - scan, verify, and stage your own BIOS collection using RetroBIOS hash metadata
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
||||||
@@ -130,4 +136,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|||||||
|
|
||||||
This repository provides BIOS files for personal backup and archival purposes.
|
This repository provides BIOS files for personal backup and archival purposes.
|
||||||
|
|
||||||
*Auto-generated on 2026-03-31T20:38:37Z*
|
*Auto-generated on 2026-04-03T12:59:52Z*
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
bios/Dragon/Dragon/delta2.rom
Normal file
BIN
bios/Dragon/Dragon/delta2.rom
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
bios/Other/NXEngine/nxengine/data/sprites.sif
Normal file
BIN
bios/Other/NXEngine/nxengine/data/sprites.sif
Normal file
Binary file not shown.
BIN
bios/Other/NXEngine/nxengine/tilekey.dat
Normal file
BIN
bios/Other/NXEngine/nxengine/tilekey.dat
Normal file
Binary file not shown.
BIN
bios/Sony/PlayStation/.variants/scph3000.bin.e38466a4
Normal file
BIN
bios/Sony/PlayStation/.variants/scph3000.bin.e38466a4
Normal file
Binary file not shown.
BIN
bios/Sony/PlayStation/.variants/scph3500.bin.ffa7f9a7
Normal file
BIN
bios/Sony/PlayStation/.variants/scph3500.bin.ffa7f9a7
Normal file
Binary file not shown.
BIN
bios/Texas Instruments/TI-99/Gram Kracker.ctg
Normal file
BIN
bios/Texas Instruments/TI-99/Gram Kracker.ctg
Normal file
Binary file not shown.
BIN
bios/Texas Instruments/TI-99/cf7+.ctg
Normal file
BIN
bios/Texas Instruments/TI-99/cf7+.ctg
Normal file
Binary file not shown.
BIN
bios/Texas Instruments/TI-99/ti-pcard.ctg
Normal file
BIN
bios/Texas Instruments/TI-99/ti-pcard.ctg
Normal file
Binary file not shown.
Binary file not shown.
301
bios/sdlpal/desc.dat
Normal file
301
bios/sdlpal/desc.dat
Normal file
@@ -0,0 +1,301 @@
|
|||||||
|
本說明檔由 Eric-Chen 整理
|
||||||
|
http://hi.baidu.com/eric_chensoft
|
||||||
|
|
||||||
|
適用於 SDLPAL (http://sdlpal.codeplex.com)
|
||||||
|
|
||||||
|
3d(觀音符)=以觀音聖水書寫的靈符。*HP+150
|
||||||
|
3e(聖靈符)=具有女媧神強大靈力的符咒。*全體HP+300
|
||||||
|
3f(金剛符)=使用後如有金鐘鐵罩護身。*增加防禦七回合。
|
||||||
|
40(淨衣符)=具有祛病、驅邪的法力,*可解赤毒、屍毒、瘴毒。
|
||||||
|
41(靈心符)=具有寧神、驅邪的靈效,*可解瘋魔、妖縛、昏睡、封咒。
|
||||||
|
42(天師符)=茅山道士用來對付妖怪的符咒。
|
||||||
|
43(風靈符)=產生風系法術的符咒。
|
||||||
|
44(雷靈符)=產生雷系法術的符咒。
|
||||||
|
45(水靈符)=產生冰系法術的符咒。
|
||||||
|
46(火靈符)=產生火系法術的符咒。
|
||||||
|
47(土靈符)=產生土系法術的符咒。
|
||||||
|
48(舍利子)=得道高僧佛身火化後,*結成如珠狀的東西。*最大真氣值+3
|
||||||
|
49(玉菩提)=墨玉菩提樹的種籽。*最大真氣值+5
|
||||||
|
4a(銀杏子)=銀杏樹所結的白色核果。*最大體力值+3
|
||||||
|
4b(糯米)=糯稻的米,富於黏性,*可解屍毒。
|
||||||
|
4c(糯米糕)=糯米加麥芽、甜豆所煮的米糕,*可解屍毒。HP+25
|
||||||
|
4d(鹽巴)=取海水煎熬或曝曬而成,用來調*味,有時可解毒。
|
||||||
|
4e(茶葉蛋)=雞蛋水煮後,以茶葉入味。*便宜而好吃的食物。*HPMP+15
|
||||||
|
4f(雞蛋)=便宜而常見的食物。*HPMP+10
|
||||||
|
50(糖葫蘆)=以竹簽串李子,裹上麥芽糖,*形如葫蘆,故稱「糖葫蘆」。*HPMP+22
|
||||||
|
51(蠟燭)=用蠟製的點火照明的東西。
|
||||||
|
52(符紙)=泛黃的空白符紙。
|
||||||
|
53(檀香)=含有檀香料的一種香,點燃用以*薰衣、薰室內,驅逐惡氣。
|
||||||
|
54(大蒜)=具有除穢、祛病、護身等功能,*可以入藥。*戰鬥中服食避毒率+30%
|
||||||
|
56(酒)=以米加酒麴釀製而成,*可解赤毒。HPMP+15
|
||||||
|
57(雄黃)=天然產的礦物,塊狀、色黃,*可解赤毒。
|
||||||
|
58(雄黃酒)=一點點的雄黃,撒在酒中,*習俗在端午節喝這種酒;*可解赤毒、瘴毒。
|
||||||
|
59(九節菖蒲)=一種水草,葉子狹長如劍,*可解赤毒、屍毒、瘴毒、毒絲。
|
||||||
|
5a(驅魔香)=以大蒜、雄黃、艾草、檀香等混合*煉製而成,點燃後發出魔物厭惡*的氣味,使魔物不敢接近。
|
||||||
|
5b(十里香)=以生血、內藏、肉桂等煉製,*點燃後散發出吸引魔物的香味。
|
||||||
|
5c(水果)=養顏美容、幫助消化。*HPMP+20
|
||||||
|
5d(燒肉)=以炭火熏烤的醬汁豬肉。*HPMP+30
|
||||||
|
5e(醃肉)=用鹽巴醃漬的豬肉。*HP+85
|
||||||
|
5f(還魂香)=點燃後會散發奇異的香氣,*能牽引離體魂魄回歸軀體。*HP恢復10%
|
||||||
|
60(贖魂燈)=以蓮燈作法與鬼差交涉,*贖回死者魂魄。*HP恢復30%
|
||||||
|
61(孟婆湯)=消除死者罪孽業障,*使死者復活。*HP恢復50%
|
||||||
|
62(天香續命露)=以大量珍貴秘藥精煉而成,*具有肉白骨、藥死人之奇效。*HP恢復100%
|
||||||
|
63(止血草)=嚼碎後敷在傷口上,可迅速止血。*HP+50
|
||||||
|
64(行軍丹)=活血順氣的藥丸。*HP+100
|
||||||
|
65(金創藥)=上等刀傷藥,去腐生肌。*HP+200
|
||||||
|
66(蟠果)=西王母蟠桃園遺種,*籽小肉厚汁液香甜。*HP+450
|
||||||
|
67(紫菁玉蓉膏)=依宮廷秘方,采珍貴藥材煉製,*是療傷藥的極品。*HP+1000
|
||||||
|
68(鼠兒果)=產於山間野地,多為鼠類所食,*經人發現移種平地。*MP+36
|
||||||
|
69(還神丹)=寧神醒腦的藥丸。*MP+50
|
||||||
|
6a(龍涎草)=經蛟龍唾涎灌溉而生,*具有補中益氣之療效。*MP+110
|
||||||
|
6b(靈山仙芝)=寄生於枯木上的菌類,俗稱瑞草,*具有養氣培元之神效。*MP+260
|
||||||
|
6c(雪蓮子)=白玉雪蓮之蓮子,其形珠圓玉潤,*服食者真氣充盈,經脈通暢。*MP+400
|
||||||
|
6d(天仙玉露)=觀音菩薩淨瓶甘露水,*人間難求的仙界聖藥。*MP+700
|
||||||
|
6e(神仙茶)=神仙廣成子養生延壽之秘方。*HPMP+440
|
||||||
|
6f(靈葫仙丹)=修道隱士所煉丹藥。*HPMP+250
|
||||||
|
70(試煉果)=藥王神農氏嘗百草時,*最早發現的珍藥。*靈力最大值+3
|
||||||
|
71(女媧石)=女神媧皇煉石補天後,*所遺之五色石。*防禦最大值+3
|
||||||
|
72(八仙石)=八仙石洞中所采集之丹礦。*防禦最大值+2
|
||||||
|
73(蜂巢)=蜜蜂的窩,可以拿來丟敵人。
|
||||||
|
74(屍腐肉)=沾染屍毒的腐敗肉塊。*毒性: 屍毒
|
||||||
|
75(毒蛇卵)=煉蠱的材料。*毒性: 赤毒
|
||||||
|
76(毒蠍卵)=煉蠱的材料。*毒性: 赤毒
|
||||||
|
77(毒蟾卵)=煉蠱的材料。*毒性: 赤毒
|
||||||
|
78(蜘蛛卵)=煉蠱的材料。*毒性: 赤毒
|
||||||
|
79(蜈蚣卵)=煉蠱的材料。*毒性: 赤毒
|
||||||
|
7a(鶴頂紅)=七大毒蠱,中毒後每回合損血,*至死方休。*解藥: 血海棠 致命藥引: 孔雀膽
|
||||||
|
7b(孔雀膽)=七大毒蠱,中毒後每回合損血,*至死方休。*解藥: 金蠶蠱 致命藥引: 鶴頂紅
|
||||||
|
7c(血海棠)=七大毒蠱,中毒後每回合損血,*至死方休。*解藥: 斷腸草 致命藥引: 三屍蠱
|
||||||
|
7d(斷腸草)=七大毒蠱,中毒後每回合損血,*至死方休。*解藥: 三屍蠱 致命藥引: 金蠶蠱
|
||||||
|
7e(醍醐香)=紫葉小白花,散發濃鬱香氣,*聞到香氣,便如酒醉一般。*妖縛四回合。
|
||||||
|
7f(忘魂花)=青藍色小花,散發淡淡香氣,*聞到香氣,便會渾然忘我、*昏睡三回合。
|
||||||
|
80(紫罌粟)=服食者會產生幻覺,敵我不分。*瘋魔四回合。
|
||||||
|
81(鬼枯藤)=具毒性的黑褐色野生藤蔓,*可解赤毒、屍毒、瘴毒、毒絲。*HP-30
|
||||||
|
82(腹蛇涎)=腹蛇的毒涎。*毒性: 瘴毒
|
||||||
|
83(蜂王蜜)=蜜蜂所釀最好的蜜。*HPMP+150
|
||||||
|
84(雪蛤蟆)=生長於天山極寒之地,僅銅錢般大*小。武術最大值+2 防禦最大值+2*靈力最大值+2
|
||||||
|
85(赤蠍粉)=以整只赤尾蠍研磨成的粉末,*可使敵方全體中赤毒。
|
||||||
|
86(化屍水)=碰到傷口血水,便腐蝕潰爛,*受傷者沾染立斃。
|
||||||
|
87(迷魂香)=點燃蒙汗藥散發迷香,*可使敵人昏睡五回合。
|
||||||
|
88(九陰散)=服食前若已中毒,可補滿體力,*但無法解毒;*服食前若沒中毒,即刻斃命。
|
||||||
|
89(無影毒)=七大毒蠱,中毒後立即發作,*耗損一半體力。
|
||||||
|
8a(三屍蠱)=七大毒蠱;中毒後,潛伏片刻即*會發作,毒性非常猛烈。*解藥: 孔雀膽 致命藥引: 血海棠
|
||||||
|
8b(金蠶蠱)=七大毒蠱,中毒後每回合損血,*至死方休。*解藥: 鶴頂紅 致命藥引: 斷腸草
|
||||||
|
8c(幻蠱)=分泌的毒液會影響人的腦部,*使人敵我不分,*瘋魔五回合。
|
||||||
|
8d(隱蠱)=如帶刺甲蟲,將其身體捏破,*散發之煙霧可助我方隱匿形跡。*全體隱形三回合。
|
||||||
|
8e(冰蠶蠱)=以雪山冰洞內所產所冰蠶培養的*蠱蟲,可做為攻擊道具。
|
||||||
|
8f(火蠶蠱)=以麒麟炎洞內所產火蠶所培養的*蠱蟲,可做為攻擊道具。
|
||||||
|
90(食妖蟲)=寄生宿主吸取靈氣,九回合後,*可煉成靈蠱。
|
||||||
|
91(靈蠱)=以稀有藥物豢養的雌蠱。*全體MP+250
|
||||||
|
92(爆烈蠱)=預先將法力灌輸在蠱蟲體內,*投擲敵人產生強烈爆炸。
|
||||||
|
93(碧血蠶)=寄生宿主吸取血液,九回合後,*可煉成赤血蠶。
|
||||||
|
94(蠱)=巫師施法所需的材料。
|
||||||
|
95(赤血蠶)=吸血維生的毒蠱,*服食後體力完全恢復。
|
||||||
|
96(金蠶王)=蠱中之王,月夜散發金色磷光,*服食後可提升修行。
|
||||||
|
97(引路蜂)=跟隨引路蜂而行,*可回到迷宮起點。
|
||||||
|
98(傀儡蟲)=湘西雲貴巫師用以控制屍體,*可使死者繼續攻擊九回合。
|
||||||
|
99(梅花鏢)=形如梅花的暗器。*敵人HP-90
|
||||||
|
9a(袖裏劍)=暗藏在衣袖中的飛劍。*敵人HP-170
|
||||||
|
9b(透骨釘)=精鐵打造、三寸長的鐵針是*很鋒利的暗器。*敵人HP-250
|
||||||
|
9c(雷火珠)=填充火藥的鐵珠,投擲撞擊*後會爆裂傷人。*敵人HP-135
|
||||||
|
9d(毒龍砂)=以腹蛇毒煉製成的細砂,*可使敵方全體中瘴毒。*HP-55
|
||||||
|
9e(吸星鎖)=鐵製鋼抓,尾端系以靈蠱蠶絲,*可吸取敵人HP180
|
||||||
|
9f(纏魂絲)=千年蜘蛛的毒絲。*毒性: 毒絲
|
||||||
|
a0(捆仙繩)=施有咒術的粗麻繩,*可令妖怪動彈不得,*妖縛五回合。
|
||||||
|
a1(無影神針)=細如牛毛,傷人於無形。*敵人HP-400
|
||||||
|
a2(血玲瓏)=紅色鐵球,四周裝有鋒利刀片。*敵方全體HP-300
|
||||||
|
a3(長鞭)=生牛皮製的七尺軟鞭。*武術+20 身法+20
|
||||||
|
a4(九截鞭)=以鐵節鐵環組成的九節軟鞭。*武術+66 身法+33
|
||||||
|
a5(金蛇鞭)=以蛇皮絞以金絲編織成九尺軟鞭。*武術+99 身法+60
|
||||||
|
a6(木劍)=用木材雕刻的劍,小孩玩具。*武術+2 身法+3
|
||||||
|
a7(短刀)=一尺半長的鈍刀,可用來劈*砍木材。*武術+6 身法-5
|
||||||
|
a8(鐵劍)=一般鐵匠大量生產的劍,打造*得頗為粗劣。*武術+10 防禦+3
|
||||||
|
a9(大刀)=刀身寬而長,刃部鋒利,*背部厚重。*武術+16 防禦+1
|
||||||
|
aa(仙女劍)=一尺長的雙手劍,適合女子*使用,可發出兩次攻擊。*武術+8 防禦+5
|
||||||
|
ab(長劍)=一般鐵匠接受訂造的劍,*比鐵劍精致鋒利。*武術+25
|
||||||
|
ac(紅纓刀)=精鋼打造,背厚刃薄,*刀柄飾以紅色長穗。*武術+38
|
||||||
|
ad(越女劍)=劍身寬僅兩指,*專為女子打造。*武術+22 身法+8
|
||||||
|
ae(戒刀)=佛門中人練武所用之刀,*嚴禁傷生染血。*武術+55 防禦+5 靈力+10
|
||||||
|
af(玄鐵劍)=以珍貴的黑色鐵礦打造而成,*堅韌鋒利但極笨重。*武術+70 身法-20 靈力-15 防禦+9
|
||||||
|
b0(芙蓉刀)=百花派獨門兵器雙手彎刀,*可發出兩次攻擊。*武術+16 身法+8
|
||||||
|
b1(柳月刀)=細長鐵製雙刀,形如柳葉新月,*可發出兩次攻擊。*武術+28 身法+12 防禦+3
|
||||||
|
b2(青鋒劍)=名家精心打造的劍,輕薄鋒利。*武術+75 身法+15
|
||||||
|
b3(苗刀)=苗族戰士所慣用的佩刀。*武術+70 身法+32
|
||||||
|
b4(鳳鳴刀)=出鞘之聲有如鳳鳴,*故稱「鳳鳴刀」。武術+124*防禦+9 身法+32 靈力+16
|
||||||
|
b5(雙龍劍)=與一般劍長度相同的雙手劍,*可發出兩次攻擊。*武術+62 防禦+9 身法+9
|
||||||
|
b6(玉女劍)=鴛鴦雙劍中的雌劍,與金童劍為*一對。武術+100 靈力+15*身法+20 吉運+30
|
||||||
|
b7(金童劍)=鴛鴦雙劍中的雄劍,與玉女劍為*一對。武術+100 吉運+30*身法+20 靈力+15 防禦+3
|
||||||
|
b8(龍泉劍)=龍泉的水質非常適合造劍,*當地生產的劍叫龍泉劍。*武術+88 身法+20 吉運+22
|
||||||
|
b9(鬼牙刀)=苗刀的一種,刀尖倒鉤,*又稱「勾魂刀」。*武術+90 身法+26 吉運-9
|
||||||
|
ba(七星劍)=劍身鑲嵌七顆金黃寶石,可吸取北*斗七星之精氣。武術+120 靈力+50*身法+32 吉運+33 防禦+7
|
||||||
|
bb(玄冥寶刀)=可連續攻擊敵方全體兩次,*傳說是魔族的邪異兵器。*武術+98 身法+98 吉運+98
|
||||||
|
bc(巫月神刀)=苗族拜月教鎮教之寶。*武術+132 靈力+55 防禦+29*身法+45 吉運+36
|
||||||
|
bd(盤龍劍)=鑄劍宗師歐冶子所煉寶劍,劍身鑄*有青龍盤柱。武術+134 靈力+37*防禦+8 身法+40 吉運+32
|
||||||
|
be(太極劍)=道祖張陵之隨身配劍,天師仗以降*妖伏魔。武術+158 靈力+90*防禦+35 身法+50 吉運+33
|
||||||
|
bf(無塵劍)=上古神劍,指天天崩、劃地地裂。*武術+200 防禦+20 身法+77*吉運+33
|
||||||
|
c0(青蛇杖)=雕刻雙蛇纏繞的綠玉杖。*武術+50 靈力+62 防禦+6
|
||||||
|
c1(鬼頭杖)=苗族巫師役鬼煉蠱之法器,*頭顱中囚禁四十九條生魂。*武術+70 靈力+88 防禦+11
|
||||||
|
c2(冥蛇杖)=來自冥界之魔杖,號令群邪,*杖頭鑲嵌千年蛇王內丹。*武術+88 靈力+120 防禦+22
|
||||||
|
c3(天蛇杖)=女神媧皇煉化五色石所用法杖。*武術+100 靈力+150 防禦+33*吉運+36
|
||||||
|
c4(頭巾)=以剩餘布料縫製的頭巾。*防禦+1
|
||||||
|
c5(青絲巾)=青色的絲織髮帶。*防禦+2
|
||||||
|
c6(髮飾)=錫製的女子頭飾。*防禦+3
|
||||||
|
c7(銀釵)=純銀的髮釵。*防禦+5
|
||||||
|
c8(翠玉金釵)=鑲有綠翡翠的黃金髮釵。*防禦+9
|
||||||
|
c9(皮帽)=羊皮縫製的帽子,非常保暖。*防禦+4
|
||||||
|
ca(珍珠冠)=以珍珠縫綴的紅色錦冠。*防禦+13
|
||||||
|
cb(天師帽)=道士做法時所戴的帽子。*防禦+11 靈力+3
|
||||||
|
cc(紫金冠)=紫金冠以薄銅片鑄成,*外殼以紫飾金而成。*防禦+18
|
||||||
|
cd(天蠶絲帶)=以極珍貴的天蠶絲織成,*輕薄柔韌。*防禦+25 身法+8
|
||||||
|
ce(鳳凰羽毛)=金翅鳳凰腹部的銀色羽毛。*防禦+7 身法+24 吉運+9
|
||||||
|
cf(沖天冠)=天兵神將遺留的護頭金盔,*頂插雙雉尾羽。*防禦+28法+5 靈力+3 吉運+3
|
||||||
|
d0(布袍)=粗布縫製的交領長袖白袍。*防禦+3
|
||||||
|
d1(藤甲)=以荊藤編製的護甲。*防禦+7
|
||||||
|
d2(絲衣)=以蠶絲紡織而成,輕柔透氣。*防禦+3 身法+4
|
||||||
|
d3(鐵鎖衣)=以鐵環扣鎖製成的護甲。*防禦+13 身法-10
|
||||||
|
d4(夜行衣)=暗黑色的緊身衣靠,*便於隱匿夜色之中。*防禦+18 身法+12 吉運+12
|
||||||
|
d5(青銅甲)=青銅製的獸面紋胸護甲。*防禦+22 身法-13
|
||||||
|
d6(羅漢袍)=修行得道的和尚所穿的衣袍。*防禦+10 吉運+10 靈力+10
|
||||||
|
d7(鐵鱗甲)=以魚鱗形甲片編綴而成的鎧甲。*防禦+28 身法-4
|
||||||
|
d8(天師道袍)=天師道祖修行時所穿的法衣。*防禦+33 靈力+28
|
||||||
|
d9(精鐵戰甲)=以橢圓形的精鐵片編綴而成,*光亮照人,*又稱「光明鎧」。防禦+40 身法-7
|
||||||
|
da(金縷衣)=以金線穿玉片編製而成*又稱「金縷玉衣」。*防禦+7 身法-10
|
||||||
|
db(鬼針冑)=長滿倒刺的銅製盔甲。*防禦+55 武術+9
|
||||||
|
dc(天蠶寶衣)=以極珍貴的天蠶絲織成,*輕薄柔韌。*防禦+66
|
||||||
|
dd(青龍寶甲)=龍鱗編綴而成,世間絕頂*戰甲。*防禦+90
|
||||||
|
de(白虎之鎧)=以罕見的白虎皮製成的皮甲。*防禦+80
|
||||||
|
df(玄武戰袍)=以玄武的殼甲鍛造而成,*材質堅韌色黑而無光澤。*防禦+80
|
||||||
|
e0(朱雀戰衣)= 以南方火鳥的羽毛編織而成。*防禦+80
|
||||||
|
e1(披風)=無領對襟、無袖的披衣,*俗稱「斗篷」。*防禦+2
|
||||||
|
e2(護肩)=披於肩臂上的鎧甲,*又稱「掩膊」。*防禦+6
|
||||||
|
e3(武士披風)=將帥所穿有護肩軟甲的戰帔。*防禦+12
|
||||||
|
e4(護心鏡)=防護前胸要害的披甲,形如*銅鏡。防禦+20
|
||||||
|
e5(霓虹羽衣)=東海霓虹鳥的羽毛織成的*披肩。*防禦+18 身法+18 吉運+18
|
||||||
|
e6(菩提袈裟)=高等僧衣,又名「無垢衣」,*多為高僧與長老所穿。*防禦+31 靈力+16
|
||||||
|
e7(虎紋披風)=以整張千年白額虎虎皮製成,*毛皮呈黃色,帶黑色橫紋。*防禦+40
|
||||||
|
e8(鳳紋披風)=相傳為織女縫製的披風,*繡鳳織錦,光彩奪目。*防禦+52
|
||||||
|
e9(龍紋披風)=布面繡雙龍搶珠之彩紋,*有神龍護體之功效。*防禦+60
|
||||||
|
ea(聖靈披風)=巫后的遺物,潛藏神聖的力*量。防禦+66 靈力+30
|
||||||
|
eb(草鞋)=以藺草編織而成,十分便宜,*穿起來很輕便,適宜行走。*防禦+1
|
||||||
|
ec(木鞋)=以木材削製而成,鞋面刻有吉祥*圖案。*防禦+2
|
||||||
|
ed(布靴)=粗布縫製的長統靴。*防禦+3 身法+2
|
||||||
|
ee(繡花鞋)=以絲緞縫製,鞋面繡有龍頭鳳尾*花。*防禦+4
|
||||||
|
ef(鐵履)=鞋底夾縫鐵片,較普通布靴重。*防禦+6
|
||||||
|
f0(武僧靴)=羅漢僧練武所穿的布靴。*防禦+8 身法+6
|
||||||
|
f1(鹿皮靴)=鞋面以鹿皮毛縫製,質地輕柔,*行動可如鹿般迅捷。*防禦+11 身法+9
|
||||||
|
f2(疾風靴)=以薄如雲霧的蟬紗織成,*助穿者疾行如風。*防禦+14 身法+17
|
||||||
|
f3(蓮花靴)=飾以金蓮的長統繡花鞋。*防禦+18 身法+5
|
||||||
|
f4(虎皮靴)=取自東北虎的皮毛縫製。*防禦+21 身法+16
|
||||||
|
f5(龍鱗靴)=以龍鱗編綴而成。*防禦+25 身法+12
|
||||||
|
f6(步雲靴)=雲中子羽化登仙後,*所遺留之神靴。*防禦+28 身法+20
|
||||||
|
f7(魅影神靴)=妖魔附體,身如鬼魅。*防禦+32 身法+26
|
||||||
|
f8(香袋)=填充木屑、香粉的小布包,*常用來裝飾兼避邪的物品。*靈力+8 吉運+9 避毒率+20%
|
||||||
|
f9(護腕)=粗布縫製之腕部護套。*防禦+2
|
||||||
|
fa(鐵護腕)=精鋼打造之腕部護環。*防禦+5
|
||||||
|
fb(竹笛)=青竹削製之七孔橫笛。*吉運+18
|
||||||
|
fc(珍珠)=蚌類所生的球狀物,*是珍貴的裝飾品。*吉運+20
|
||||||
|
fd(玉鐲)=戴在手臂上的玉製環形首飾。*防禦+5 吉運+9
|
||||||
|
fe(唸珠)=佛教徒記數唸經咒或佛號次數的*計算珠。*靈力+5 防禦+5
|
||||||
|
ff(銀針)=用銀針刺肉,以痛楚喚醒神智,*可解妖縛、昏睡、瘋魔。HP-9
|
||||||
|
100(銅鏡)=青銅鑄造的照容用具。*防禦+6
|
||||||
|
101(八卦鏡)=用朱砂在鏡面畫八卦,*可借用自然界的靈氣。*靈力+8 防禦+8
|
||||||
|
102(幹坤鏡)=銅鏡背面鑄有太極乾坤圖,*可吸取天地陰陽靈氣。*靈力+14 防禦+14
|
||||||
|
103(豹牙手環)=收集花豹的利牙串成的手環。*防禦+9
|
||||||
|
104(聖靈珠)=女媧末族祖傳寶物,曆代聖魂歸依*之所。合體法術: 武神*靈力+128 防禦+15 避毒率+35%
|
||||||
|
105(金罡珠)=大羅金仙修煉千年的內丹。*防禦+90
|
||||||
|
106(五毒珠)=成精蟾怪的內丹,*佩戴後百毒不侵。
|
||||||
|
107(風靈珠)=女媧降伏風神後,禁制風神於內的*寶珠。合體法術: 風卷殘雲*避風率+50%
|
||||||
|
108(雷靈珠)=女媧降伏雷神後,禁制雷神於內的*寶珠。合體法術: 狂雷*避雷率+50%
|
||||||
|
109(水靈珠)=女媧降伏雪妖後,禁制雪妖於內的*寶珠。合體法術: 風雪冰天*避水率+50%
|
||||||
|
10a(火靈珠)=女媧降伏火神後,禁制火神於內的*寶珠。合體法術: 煉獄真火*避火率+50%
|
||||||
|
10b(土靈珠)=女媧降伏山神後,禁制山神於內的*寶珠。合體法術: 泰山壓頂*避土率+50% 可用於脫離洞窟
|
||||||
|
10c(煉蠱皿)=可將毒蛇卵、毒蠍卵、毒蟾卵、*蜘蛛卵、蜈蚣卵煉成蠱。
|
||||||
|
10d(壽葫蘆)=戰鬥中發出真氣補充持有者,*有提神振氣之奇效。*HPMP每回合+20
|
||||||
|
10e(紫金葫蘆)=收妖煉丹,需與靈葫咒配合。
|
||||||
|
10f(布包)=長安富商的行李。
|
||||||
|
110(桂花酒)=摻了水的酒。
|
||||||
|
111(紫金丹)=水月宮最珍貴的仙丹靈藥。
|
||||||
|
112(玉佛珠)=西方如來檀前的唸珠,經佛法薰陶*變化通靈。合體法術: 佛法無邊*靈力+88 防禦+18 避毒率+30%
|
||||||
|
113(金鳳凰蛋殼)=藥材。
|
||||||
|
114(火眼麒麟角)=藥材。
|
||||||
|
116(毒龍膽)=千年毒蛟的膽,以毒攻毒可解天下*所有的毒。*若沒中毒吃毒龍膽會斃命。
|
||||||
|
117(破天錘)=用來敲碎仙靈島石像的法寶。
|
||||||
|
118(包袱)=嬸嬸替逍遙收拾的行李。
|
||||||
|
119(銀杏果)=藥材。
|
||||||
|
11a(鯉魚)=藥材。
|
||||||
|
11b(鹿茸)=藥材。
|
||||||
|
11c(釣竿)=借來的,記得還!
|
||||||
|
11d(捕獸夾)=獵戶放置的捕鹿的道具。
|
||||||
|
11e(六神丹)=韓家藥鋪的祖傳婦女良藥。
|
||||||
|
11f(情書)=士兵委托的情書。
|
||||||
|
120(玉佩)=婢女委托的玉佩。
|
||||||
|
121(石鑰匙)=開啟隱龍窟後洞石門的鑰匙。
|
||||||
|
122(天書)=書中仙附身於書中。
|
||||||
|
123(香蕉)=誰喜歡吃香蕉?
|
||||||
|
124(鳳紋手絹)=某人交付的信物。
|
||||||
|
125(手卷)=李逍遙的父母親所留下的武功*秘笈。
|
||||||
|
126(蘆葦漂)=可載人漂浮水面的草席。
|
||||||
|
127(夢蛇)=女媧族的變身魔法,*能力大幅提升。
|
||||||
|
128(氣療術)=我方單人HP+75
|
||||||
|
129(觀音咒)=我方單人HP+150
|
||||||
|
12a(凝神歸元)=我方單人HP+220
|
||||||
|
12b(元靈歸心術)=我方單人HP+500
|
||||||
|
12c(五氣朝元)=我方全體HP+300
|
||||||
|
12d(還魂咒)=我方單人復活*HP恢復10%
|
||||||
|
12e(贖魂)=我方單人復活*HP恢復30%
|
||||||
|
12f(回夢)=敵方單人昏睡四回合。
|
||||||
|
130(奪魂)=吸取敵人魂魄,中者立斃。
|
||||||
|
131(鬼降)=敵方單人瘋魔四回合。
|
||||||
|
132(淨衣咒)=解赤毒、屍毒、瘴毒。
|
||||||
|
133(冰心訣)=解妖縛、昏睡、瘋魔、咒封。
|
||||||
|
134(靈血咒)=解赤毒、屍毒、瘴毒、毒絲、*麻痹、催眠、瘋魔、咒封。
|
||||||
|
135(金剛咒)=使用後如有金鐘鐵罩護身,*增加防禦七回合。
|
||||||
|
136(真元護體)=使用後如有鐵鎧金甲護體,*增加防禦九回合。
|
||||||
|
137(天罡戰氣)=七回合內,使用武器攻擊,*威力提升。
|
||||||
|
138(風咒)=風系初級法術,*攻擊敵方單人。
|
||||||
|
139(旋風咒)=風系中級法術,*攻擊敵方全體。
|
||||||
|
13a(風卷殘雲)=風系高級法術,*攻擊敵方全體。
|
||||||
|
13b(風神)=召喚風神,*最強的風系法術。
|
||||||
|
13c(雷咒)=雷系初級法術,*攻擊敵方單人。
|
||||||
|
13d(五雷咒)=雷系中級法術,*攻擊敵方全體。
|
||||||
|
13e(天雷破)=雷系高級法術,*攻擊敵方單人。
|
||||||
|
13f(狂雷)=雷系高級法術,*攻擊敵方全體。
|
||||||
|
140(雷神)=召喚雷神,*最強的雷系法術。
|
||||||
|
141(冰咒)=冰系初級法術,*攻擊敵方單人。
|
||||||
|
142(玄冰咒)=冰系中級法術,*攻擊敵方全體。
|
||||||
|
143(風雪冰天)=冰系高級法術,*攻擊敵方全體。
|
||||||
|
144(風雪冰天)=冰系高級法術,*攻擊敵方全體。
|
||||||
|
145(雪妖)=召喚雪妖,*最強的冰系法術。
|
||||||
|
147(炎咒)=火系初級法術,*攻擊敵方單人。
|
||||||
|
148(三昧真火)=火系中級法術,*攻擊敵方全體。
|
||||||
|
149(炎殺咒)=火系高級法術,*攻擊敵方單人。
|
||||||
|
14a(煉獄真火)=火系高級法術,*攻擊敵方全體。
|
||||||
|
14c(土咒)=土系初級法術,*攻擊敵方單人。
|
||||||
|
14d(飛岩術)=土系中級法術,*攻擊敵方全體。
|
||||||
|
14e(地裂天崩)=土系中級法術,*攻擊敵方全體。
|
||||||
|
14f(泰山壓頂)=土系高級法術,*攻擊敵方全體。
|
||||||
|
150(山神)=召喚山神,*最強的土系法術。
|
||||||
|
151(氣劍指)=蘇州林家的家傳武藝,*攻擊敵方全體。
|
||||||
|
154(一陽指)=聚勁食指,發出剛猛的氣芒,*攻擊敵方單人。
|
||||||
|
155(七訣劍氣)=以指代劍,發出裂地劍氣*攻擊敵方全體。
|
||||||
|
156(斬龍訣)=以雄渾氣勁橫掃群魔,*攻擊敵方全體。
|
||||||
|
158(銅錢鏢)=將金錢當做暗器,攻擊敵方*單人,一次使用五百文錢。
|
||||||
|
159(禦劍術)=蜀山派入門劍法,*攻擊敵方單人。
|
||||||
|
15a(萬劍訣)=劍芒如雨直落,*攻擊敵方全體。
|
||||||
|
15c(天劍)=人劍合一,身化利劍,*攻擊敵方全體。
|
||||||
|
15d(天師符法)=茅山道士用來對付妖怪*的符法,攻擊敵方單人。
|
||||||
|
15f(武神)=召喚武神,神刀斬魔。
|
||||||
|
160(三屍咒)=下蠱攻擊敵方單人,*有蠱時才能使用。
|
||||||
|
161(禦蜂術)=以笛音指揮毒蜂,*攻擊敵方全體。
|
||||||
|
162(萬蟻蝕象)=操縱食人毒蟻,*攻擊敵方單人。
|
||||||
|
16b(劍神)=召喚劍神,萬劍齊飛。
|
||||||
|
172(酒神)=召喚酒神,*用全身真氣爆發攻擊敵人。
|
||||||
|
174(萬蠱蝕天)=放蠱攻擊敵方全體,*有蠱時才能使用。
|
||||||
|
176(爆炸蠱)=預先將法力灌輸在蠱蟲體*內,投擲敵人產生強烈爆炸。
|
||||||
|
179(飛龍探雲手)=偷取敵人的物品或金錢。
|
||||||
|
180(靈葫咒)=當妖物體力低於四分之一時,*可將其收入紫金葫蘆中煉藥。
|
||||||
|
185(火神)=召喚火神,*最強的火系法術。
|
||||||
|
186(醉仙望月步)=五回合內,使用武器攻擊,*可連續出手兩次。
|
||||||
|
188(金蟬脫殼)=戰鬥中逃跑。
|
||||||
|
189(仙風雲體術)=身法暫時提升九回合。
|
||||||
|
18a(乾坤一擲)=使用金錢鏢攻擊敵方全體,*會耗損大量金錢。
|
||||||
303
database.json
303
database.json
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"generated_at": "2026-04-01T22:48:55Z",
|
"generated_at": "2026-04-18T07:32:14Z",
|
||||||
"total_files": 7295,
|
"total_files": 7302,
|
||||||
"total_size": 9190294264,
|
"total_size": 9190488848,
|
||||||
"files": {
|
"files": {
|
||||||
"520d3d1b5897800af47f92efd2444a26b7a7dead": {
|
"520d3d1b5897800af47f92efd2444a26b7a7dead": {
|
||||||
"path": "bios/3DO Company/3DO/3do_arcade_saot.bin",
|
"path": "bios/3DO Company/3DO/3do_arcade_saot.bin",
|
||||||
@@ -30004,8 +30004,8 @@
|
|||||||
"adler32": "0cb8a7e3"
|
"adler32": "0cb8a7e3"
|
||||||
},
|
},
|
||||||
"686ebb5f39dd4fc907a0b748867d0a022d2f1a60": {
|
"686ebb5f39dd4fc907a0b748867d0a022d2f1a60": {
|
||||||
"path": "bios/Dragon/Dragon/deltados.rom",
|
"path": "bios/Dragon/Dragon/delta2.rom",
|
||||||
"name": "deltados.rom",
|
"name": "delta2.rom",
|
||||||
"size": 8192,
|
"size": 8192,
|
||||||
"sha1": "686ebb5f39dd4fc907a0b748867d0a022d2f1a60",
|
"sha1": "686ebb5f39dd4fc907a0b748867d0a022d2f1a60",
|
||||||
"md5": "024eac3db20f1b5cf98c30a0e4743201",
|
"md5": "024eac3db20f1b5cf98c30a0e4743201",
|
||||||
@@ -30814,8 +30814,8 @@
|
|||||||
"adler32": "87461161"
|
"adler32": "87461161"
|
||||||
},
|
},
|
||||||
"65d07426b520ddd3115d40f255511e0fd2e20ae7": {
|
"65d07426b520ddd3115d40f255511e0fd2e20ae7": {
|
||||||
"path": "bios/GCE/Vectrex/VEC_MineStorm.vec",
|
"path": "bios/GCE/Vectrex/VEC_Minestorm.vec",
|
||||||
"name": "VEC_MineStorm.vec",
|
"name": "VEC_Minestorm.vec",
|
||||||
"size": 8192,
|
"size": 8192,
|
||||||
"sha1": "65d07426b520ddd3115d40f255511e0fd2e20ae7",
|
"sha1": "65d07426b520ddd3115d40f255511e0fd2e20ae7",
|
||||||
"md5": "ab082fa8c8e632dd68589a8c7741388f",
|
"md5": "ab082fa8c8e632dd68589a8c7741388f",
|
||||||
@@ -35053,6 +35053,16 @@
|
|||||||
"crc32": "a317e6b4",
|
"crc32": "a317e6b4",
|
||||||
"adler32": "0e7344db"
|
"adler32": "0e7344db"
|
||||||
},
|
},
|
||||||
|
"0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd": {
|
||||||
|
"path": "bios/Microsoft/MSX/.variants/MSX2.ROM.0081ea0d",
|
||||||
|
"name": "MSX2.ROM",
|
||||||
|
"size": 32768,
|
||||||
|
"sha1": "0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd",
|
||||||
|
"md5": "53bec1c22b30c0a15263e04b91a7814f",
|
||||||
|
"sha256": "0c672d86ead61a97f49a583b88b7c1905da120645cd44f0c9f2baf4f4631e0b1",
|
||||||
|
"crc32": "9b3e7b97",
|
||||||
|
"adler32": "1ce46674"
|
||||||
|
},
|
||||||
"e90f80a61d94c617850c415e12ad70ac41e66bb7": {
|
"e90f80a61d94c617850c415e12ad70ac41e66bb7": {
|
||||||
"path": "bios/Microsoft/MSX/.variants/MSX2P.ROM.e90f80a6",
|
"path": "bios/Microsoft/MSX/.variants/MSX2P.ROM.e90f80a6",
|
||||||
"name": "MSX2P.ROM",
|
"name": "MSX2P.ROM",
|
||||||
@@ -40443,6 +40453,26 @@
|
|||||||
"crc32": "0c0644ba",
|
"crc32": "0c0644ba",
|
||||||
"adler32": "c7b3f901"
|
"adler32": "c7b3f901"
|
||||||
},
|
},
|
||||||
|
"73acccee601b56a2b7f624b0227fa7e1d662ef4b": {
|
||||||
|
"path": "bios/Other/NXEngine/nxengine/data/sprites.sif",
|
||||||
|
"name": "sprites.sif",
|
||||||
|
"size": 59482,
|
||||||
|
"sha1": "73acccee601b56a2b7f624b0227fa7e1d662ef4b",
|
||||||
|
"md5": "ebc011b876b9a4755fe44fa45d366996",
|
||||||
|
"sha256": "e80d72041dc20ddffb3fa7e22e4c51acb06d95e81058d5eeb888b5bf308424ea",
|
||||||
|
"crc32": "4e42c240",
|
||||||
|
"adler32": "f7421b99"
|
||||||
|
},
|
||||||
|
"74c14b15dbc2f36c81d2ad9cb65e2893298415da": {
|
||||||
|
"path": "bios/Other/NXEngine/nxengine/tilekey.dat",
|
||||||
|
"name": "tilekey.dat",
|
||||||
|
"size": 1028,
|
||||||
|
"sha1": "74c14b15dbc2f36c81d2ad9cb65e2893298415da",
|
||||||
|
"md5": "d74d5681ad8d825f5c229db1ee931bbb",
|
||||||
|
"sha256": "e84df7374f8eff014458c6d8611c44f03b39b8d1a7abf30a2347dbb085b55232",
|
||||||
|
"crc32": "57841d84",
|
||||||
|
"adler32": "2a2a106e"
|
||||||
|
},
|
||||||
"2d539603665b8194c671ef5189c5a2b6db3ac645": {
|
"2d539603665b8194c671ef5189c5a2b6db3ac645": {
|
||||||
"path": "bios/Other/QEMU/bios-256k.bin",
|
"path": "bios/Other/QEMU/bios-256k.bin",
|
||||||
"name": "bios-256k.bin",
|
"name": "bios-256k.bin",
|
||||||
@@ -69813,6 +69843,26 @@
|
|||||||
"crc32": "6a0e22a0",
|
"crc32": "6a0e22a0",
|
||||||
"adler32": "46021520"
|
"adler32": "46021520"
|
||||||
},
|
},
|
||||||
|
"e38466a4ba8005fba7e9e3c7b9efeba7205bee3f": {
|
||||||
|
"path": "bios/Sony/PlayStation/scph3500.bin",
|
||||||
|
"name": "scph3500.bin",
|
||||||
|
"size": 524288,
|
||||||
|
"sha1": "e38466a4ba8005fba7e9e3c7b9efeba7205bee3f",
|
||||||
|
"md5": "cba733ceeff5aef5c32254f1d617fa62",
|
||||||
|
"sha256": "6f71ca1e716da761dc53187bd39e00c213f566e55090708fd3e2b4b425c8c989",
|
||||||
|
"crc32": "bc190209",
|
||||||
|
"adler32": "a8e56981"
|
||||||
|
},
|
||||||
|
"ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d": {
|
||||||
|
"path": "bios/Sony/PlayStation/scph5000.bin",
|
||||||
|
"name": "scph5000.bin",
|
||||||
|
"size": 524288,
|
||||||
|
"sha1": "ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d",
|
||||||
|
"md5": "57a06303dfa9cf9351222dfcbb4a29d9",
|
||||||
|
"sha256": "0c8359870cbac0ea091f1c87f188cd332dcc709753b91cafd9fd44a4a6188197",
|
||||||
|
"crc32": "24fc7e17",
|
||||||
|
"adler32": "1ac46cf1"
|
||||||
|
},
|
||||||
"e340db2696274dda5fdc25e434a914db71e8b02b": {
|
"e340db2696274dda5fdc25e434a914db71e8b02b": {
|
||||||
"path": "bios/Sony/PlayStation/.variants/scph5000.bin.eb201d2d",
|
"path": "bios/Sony/PlayStation/.variants/scph5000.bin.eb201d2d",
|
||||||
"name": "scph5000.bin",
|
"name": "scph5000.bin",
|
||||||
@@ -70013,26 +70063,6 @@
|
|||||||
"crc32": "3539def6",
|
"crc32": "3539def6",
|
||||||
"adler32": "9e7d4faa"
|
"adler32": "9e7d4faa"
|
||||||
},
|
},
|
||||||
"e38466a4ba8005fba7e9e3c7b9efeba7205bee3f": {
|
|
||||||
"path": "bios/Sony/PlayStation/scph3500.bin",
|
|
||||||
"name": "scph3500.bin",
|
|
||||||
"size": 524288,
|
|
||||||
"sha1": "e38466a4ba8005fba7e9e3c7b9efeba7205bee3f",
|
|
||||||
"md5": "cba733ceeff5aef5c32254f1d617fa62",
|
|
||||||
"sha256": "6f71ca1e716da761dc53187bd39e00c213f566e55090708fd3e2b4b425c8c989",
|
|
||||||
"crc32": "bc190209",
|
|
||||||
"adler32": "a8e56981"
|
|
||||||
},
|
|
||||||
"ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d": {
|
|
||||||
"path": "bios/Sony/PlayStation/scph5000.bin",
|
|
||||||
"name": "scph5000.bin",
|
|
||||||
"size": 524288,
|
|
||||||
"sha1": "ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d",
|
|
||||||
"md5": "57a06303dfa9cf9351222dfcbb4a29d9",
|
|
||||||
"sha256": "0c8359870cbac0ea091f1c87f188cd332dcc709753b91cafd9fd44a4a6188197",
|
|
||||||
"crc32": "24fc7e17",
|
|
||||||
"adler32": "1ac46cf1"
|
|
||||||
},
|
|
||||||
"b05def971d8ec59f346f2d9ac21fb742e3eb6917": {
|
"b05def971d8ec59f346f2d9ac21fb742e3eb6917": {
|
||||||
"path": "bios/Sony/PlayStation/scph5500.bin",
|
"path": "bios/Sony/PlayStation/scph5500.bin",
|
||||||
"name": "scph5500.bin",
|
"name": "scph5500.bin",
|
||||||
@@ -72543,6 +72573,16 @@
|
|||||||
"crc32": "b3ef7ac7",
|
"crc32": "b3ef7ac7",
|
||||||
"adler32": "479a8ee1"
|
"adler32": "479a8ee1"
|
||||||
},
|
},
|
||||||
|
"56dd520570cdcdd60dda2eedc8af1e02a781dcc5": {
|
||||||
|
"path": "bios/Texas Instruments/TI-99/Gram Kracker.ctg",
|
||||||
|
"name": "Gram Kracker.ctg",
|
||||||
|
"size": 7587,
|
||||||
|
"sha1": "56dd520570cdcdd60dda2eedc8af1e02a781dcc5",
|
||||||
|
"md5": "7551f1d578a32cccd97efd1adff15252",
|
||||||
|
"sha256": "3e63f6a54a8001ddd75ecde70572c7030776d79817f46ee0dfcf5274dd03047f",
|
||||||
|
"crc32": "f1c12fb2",
|
||||||
|
"adler32": "16c3134e"
|
||||||
|
},
|
||||||
"4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8": {
|
"4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8": {
|
||||||
"path": "bios/Texas Instruments/TI-99/TI-994A.ctg",
|
"path": "bios/Texas Instruments/TI-99/TI-994A.ctg",
|
||||||
"name": "TI-994A.ctg",
|
"name": "TI-994A.ctg",
|
||||||
@@ -72553,6 +72593,16 @@
|
|||||||
"crc32": "a092207d",
|
"crc32": "a092207d",
|
||||||
"adler32": "ba312438"
|
"adler32": "ba312438"
|
||||||
},
|
},
|
||||||
|
"698c638e1773244a6bf8a353c87d210047cce402": {
|
||||||
|
"path": "bios/Texas Instruments/TI-99/cf7+.ctg",
|
||||||
|
"name": "cf7+.ctg",
|
||||||
|
"size": 5768,
|
||||||
|
"sha1": "698c638e1773244a6bf8a353c87d210047cce402",
|
||||||
|
"md5": "d3fd9bc1fcaf48e5ed681c5ac31bc194",
|
||||||
|
"sha256": "8998c8525a9014a7983a8ed3b03fa8210a08c205dacccd654f139f78f20623da",
|
||||||
|
"crc32": "81f3aec2",
|
||||||
|
"adler32": "23a55284"
|
||||||
|
},
|
||||||
"382292295c00dff348d7e17c5ce4da12a1d87763": {
|
"382292295c00dff348d7e17c5ce4da12a1d87763": {
|
||||||
"path": "bios/Texas Instruments/TI-99/spchrom.bin",
|
"path": "bios/Texas Instruments/TI-99/spchrom.bin",
|
||||||
"name": "spchrom.bin",
|
"name": "spchrom.bin",
|
||||||
@@ -72573,6 +72623,16 @@
|
|||||||
"crc32": "1a52b40c",
|
"crc32": "1a52b40c",
|
||||||
"adler32": "152e6876"
|
"adler32": "152e6876"
|
||||||
},
|
},
|
||||||
|
"c7bf5fcfea0502011dca76d12efcc242e23421b9": {
|
||||||
|
"path": "bios/Texas Instruments/TI-99/ti-pcard.ctg",
|
||||||
|
"name": "ti-pcard.ctg",
|
||||||
|
"size": 71924,
|
||||||
|
"sha1": "c7bf5fcfea0502011dca76d12efcc242e23421b9",
|
||||||
|
"md5": "63f161f0d634e6092a1729b97efb00d1",
|
||||||
|
"sha256": "06eae0519b66734b546d4a6508f8f20ab3f57d21819c469ff748e68816e27bce",
|
||||||
|
"crc32": "62b3c3d0",
|
||||||
|
"adler32": "4224aa4e"
|
||||||
|
},
|
||||||
"e05575b630bea7ff98b9ca1f083d745abb3110b6": {
|
"e05575b630bea7ff98b9ca1f083d745abb3110b6": {
|
||||||
"path": "bios/Texas Instruments/TI-99/ti99_4a.zip",
|
"path": "bios/Texas Instruments/TI-99/ti99_4a.zip",
|
||||||
"name": "ti99_4a.zip",
|
"name": "ti99_4a.zip",
|
||||||
@@ -72952,6 +73012,16 @@
|
|||||||
"sha256": "7dc407fbccbf684dc677bed81120f45f0d3406ff7945eaf207a5c38b036c30e0",
|
"sha256": "7dc407fbccbf684dc677bed81120f45f0d3406ff7945eaf207a5c38b036c30e0",
|
||||||
"crc32": "a42ef0fd",
|
"crc32": "a42ef0fd",
|
||||||
"adler32": "0d15827f"
|
"adler32": "0d15827f"
|
||||||
|
},
|
||||||
|
"8c20ff26ebfefbf9b050b67af8083704003595ba": {
|
||||||
|
"path": "bios/sdlpal/desc.dat",
|
||||||
|
"name": "desc.dat",
|
||||||
|
"size": 16027,
|
||||||
|
"sha1": "8c20ff26ebfefbf9b050b67af8083704003595ba",
|
||||||
|
"md5": "084b6bc9804710a89a542335a3e4b1e0",
|
||||||
|
"sha256": "0d6487d6832488130bc94b1ec5ee71766717b929c249693327089e461460ae40",
|
||||||
|
"crc32": "5ea6b7fc",
|
||||||
|
"adler32": "27df2df0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"indexes": {
|
"indexes": {
|
||||||
@@ -76461,6 +76531,7 @@
|
|||||||
"74b0f217fa0e2b8bb5a2f8e2ecc69da3": "bf5fb954db868e523febccc68549ed9187961076",
|
"74b0f217fa0e2b8bb5a2f8e2ecc69da3": "bf5fb954db868e523febccc68549ed9187961076",
|
||||||
"acf53887c2d2783dc059a9b442c86b90": "5aff2d9b6efc723bc395b0f96f0adfa83cc54a49",
|
"acf53887c2d2783dc059a9b442c86b90": "5aff2d9b6efc723bc395b0f96f0adfa83cc54a49",
|
||||||
"364a1a579fe5cb8dba54519bcfcdac0d": "e998f0c441f4f1800ef44e42cd1659150206cf79",
|
"364a1a579fe5cb8dba54519bcfcdac0d": "e998f0c441f4f1800ef44e42cd1659150206cf79",
|
||||||
|
"53bec1c22b30c0a15263e04b91a7814f": "0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd",
|
||||||
"847cc025ffae665487940ff2639540e5": "e90f80a61d94c617850c415e12ad70ac41e66bb7",
|
"847cc025ffae665487940ff2639540e5": "e90f80a61d94c617850c415e12ad70ac41e66bb7",
|
||||||
"55cca200bbbdd0a1ec5c9d70966c05c0": "4e9384c9d137f0ab65ffc5a78f04cd8c9df6c8b7",
|
"55cca200bbbdd0a1ec5c9d70966c05c0": "4e9384c9d137f0ab65ffc5a78f04cd8c9df6c8b7",
|
||||||
"d6dedca1112ddfda94cc9b2e426b818b": "69dd7344e4dfa7e250973a71bbb3e8aa6fb08d81",
|
"d6dedca1112ddfda94cc9b2e426b818b": "69dd7344e4dfa7e250973a71bbb3e8aa6fb08d81",
|
||||||
@@ -77000,6 +77071,8 @@
|
|||||||
"82a22231d402cd3284c698ba16a51d1d": "d8ce5b1405b6428969493efeb6f3aa2027c41bdc",
|
"82a22231d402cd3284c698ba16a51d1d": "d8ce5b1405b6428969493efeb6f3aa2027c41bdc",
|
||||||
"9a432244d9ee4a49e8ddcde64af94e05": "86fc8dc0932f983efa199e31ae05a4424772f959",
|
"9a432244d9ee4a49e8ddcde64af94e05": "86fc8dc0932f983efa199e31ae05a4424772f959",
|
||||||
"f20bb7bc1b97453161e63964f24a2785": "91d75a87872cbb88964bead92e0cbf8b72e836b6",
|
"f20bb7bc1b97453161e63964f24a2785": "91d75a87872cbb88964bead92e0cbf8b72e836b6",
|
||||||
|
"ebc011b876b9a4755fe44fa45d366996": "73acccee601b56a2b7f624b0227fa7e1d662ef4b",
|
||||||
|
"d74d5681ad8d825f5c229db1ee931bbb": "74c14b15dbc2f36c81d2ad9cb65e2893298415da",
|
||||||
"e8dcffae189b20fbe2722b857faa487c": "2d539603665b8194c671ef5189c5a2b6db3ac645",
|
"e8dcffae189b20fbe2722b857faa487c": "2d539603665b8194c671ef5189c5a2b6db3ac645",
|
||||||
"8bef06d1aa74c9ff45b268a18efcc954": "cb1bd2cf5f89741900061955ac1a3b7cbd7a1ce9",
|
"8bef06d1aa74c9ff45b268a18efcc954": "cb1bd2cf5f89741900061955ac1a3b7cbd7a1ce9",
|
||||||
"07ec9c82c2ac93d091f46236e93c8bbb": "359becb4c1dcd61c139ab3786983da9640677701",
|
"07ec9c82c2ac93d091f46236e93c8bbb": "359becb4c1dcd61c139ab3786983da9640677701",
|
||||||
@@ -79937,6 +80010,8 @@
|
|||||||
"dc2b9bf8da62ec93e868cfd29f0d067d": "649895efd79d14790eabb362e94eb0622093dfb9",
|
"dc2b9bf8da62ec93e868cfd29f0d067d": "649895efd79d14790eabb362e94eb0622093dfb9",
|
||||||
"e2110b8a2b97a8e0b857a45d32f7e187": "b6a11579caef3875504fcf3831b8e3922746df2c",
|
"e2110b8a2b97a8e0b857a45d32f7e187": "b6a11579caef3875504fcf3831b8e3922746df2c",
|
||||||
"9a09ab7e49b422c007e6d54d7c49b965": "7771d6e90980408f753891648685def6dd42ef6d",
|
"9a09ab7e49b422c007e6d54d7c49b965": "7771d6e90980408f753891648685def6dd42ef6d",
|
||||||
|
"cba733ceeff5aef5c32254f1d617fa62": "e38466a4ba8005fba7e9e3c7b9efeba7205bee3f",
|
||||||
|
"57a06303dfa9cf9351222dfcbb4a29d9": "ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d",
|
||||||
"eb201d2d98251a598af467d4347bb62f": "e340db2696274dda5fdc25e434a914db71e8b02b",
|
"eb201d2d98251a598af467d4347bb62f": "e340db2696274dda5fdc25e434a914db71e8b02b",
|
||||||
"2118230527a9f51bd9216e32fa912842": "1a8d6f9453111b1d317bb7dae300495fbf54600c",
|
"2118230527a9f51bd9216e32fa912842": "1a8d6f9453111b1d317bb7dae300495fbf54600c",
|
||||||
"ca5cfc321f916756e3f0effbfaeba13b": "73107d468fc7cb1d2c5b18b269715dd889ecef06",
|
"ca5cfc321f916756e3f0effbfaeba13b": "73107d468fc7cb1d2c5b18b269715dd889ecef06",
|
||||||
@@ -79957,8 +80032,6 @@
|
|||||||
"b10f5e0e3d9eb60e5159690680b1e774": "beb0ac693c0dc26daf5665b3314db81480fa5c7c",
|
"b10f5e0e3d9eb60e5159690680b1e774": "beb0ac693c0dc26daf5665b3314db81480fa5c7c",
|
||||||
"de93caec13d1a141a40a79f5c86168d6": "dbc7339e5d85827c095764fc077b41f78fd2ecae",
|
"de93caec13d1a141a40a79f5c86168d6": "dbc7339e5d85827c095764fc077b41f78fd2ecae",
|
||||||
"849515939161e62f6b866f6853006780": "b06f4a861f74270be819aa2a07db8d0563a7cc4e",
|
"849515939161e62f6b866f6853006780": "b06f4a861f74270be819aa2a07db8d0563a7cc4e",
|
||||||
"cba733ceeff5aef5c32254f1d617fa62": "e38466a4ba8005fba7e9e3c7b9efeba7205bee3f",
|
|
||||||
"57a06303dfa9cf9351222dfcbb4a29d9": "ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d",
|
|
||||||
"8dd7d5296a650fac7319bce665a6a53c": "b05def971d8ec59f346f2d9ac21fb742e3eb6917",
|
"8dd7d5296a650fac7319bce665a6a53c": "b05def971d8ec59f346f2d9ac21fb742e3eb6917",
|
||||||
"490f666e1afb15b7362b406ed1cea246": "0555c6fae8906f3f09baf5988f00e55f88e9f30b",
|
"490f666e1afb15b7362b406ed1cea246": "0555c6fae8906f3f09baf5988f00e55f88e9f30b",
|
||||||
"32736f17079d0b2b7024407c39bd3050": "f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0",
|
"32736f17079d0b2b7024407c39bd3050": "f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0",
|
||||||
@@ -80210,9 +80283,12 @@
|
|||||||
"c6ff8204c5c81b7be34614dbbd690c8b": "8177bc6d5489d575cbfa9a004d097fc08c6f8c86",
|
"c6ff8204c5c81b7be34614dbbd690c8b": "8177bc6d5489d575cbfa9a004d097fc08c6f8c86",
|
||||||
"6e30e823ddba73234480984ee50730c1": "630b9f529b954851fbdcfeb1d91a950d4bda0547",
|
"6e30e823ddba73234480984ee50730c1": "630b9f529b954851fbdcfeb1d91a950d4bda0547",
|
||||||
"42f768a66fa8b27dadb8361dd2e2e012": "8212fbd8899a2808c7ace4559245861e5bee2c9a",
|
"42f768a66fa8b27dadb8361dd2e2e012": "8212fbd8899a2808c7ace4559245861e5bee2c9a",
|
||||||
|
"7551f1d578a32cccd97efd1adff15252": "56dd520570cdcdd60dda2eedc8af1e02a781dcc5",
|
||||||
"412ecbf991edcb68edd0e76c2caa4a59": "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8",
|
"412ecbf991edcb68edd0e76c2caa4a59": "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8",
|
||||||
|
"d3fd9bc1fcaf48e5ed681c5ac31bc194": "698c638e1773244a6bf8a353c87d210047cce402",
|
||||||
"7adcaf64272248f7a7161cfc02fd5b3f": "382292295c00dff348d7e17c5ce4da12a1d87763",
|
"7adcaf64272248f7a7161cfc02fd5b3f": "382292295c00dff348d7e17c5ce4da12a1d87763",
|
||||||
"04714f43347cefb2a051a77116344b3f": "693f5b4fe1e5eb6429fd6614fb7bb14350939814",
|
"04714f43347cefb2a051a77116344b3f": "693f5b4fe1e5eb6429fd6614fb7bb14350939814",
|
||||||
|
"63f161f0d634e6092a1729b97efb00d1": "c7bf5fcfea0502011dca76d12efcc242e23421b9",
|
||||||
"3df4d280ad76edc0662c2e89ad4f2f74": "e05575b630bea7ff98b9ca1f083d745abb3110b6",
|
"3df4d280ad76edc0662c2e89ad4f2f74": "e05575b630bea7ff98b9ca1f083d745abb3110b6",
|
||||||
"01770fde15c34ff88bb49526d38cb1f6": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6",
|
"01770fde15c34ff88bb49526d38cb1f6": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6",
|
||||||
"12ae505e36b850030f5188e960864775": "8d2865996a1a8d8a13fc9965c1bcf490f9621399",
|
"12ae505e36b850030f5188e960864775": "8d2865996a1a8d8a13fc9965c1bcf490f9621399",
|
||||||
@@ -80250,7 +80326,8 @@
|
|||||||
"a9082f02d4f93c1f6c4e428e06b834e8": "d07114a9f3490338a265fb30d16b052c8da3bb7d",
|
"a9082f02d4f93c1f6c4e428e06b834e8": "d07114a9f3490338a265fb30d16b052c8da3bb7d",
|
||||||
"8d4abc7dd31a64f2ddd811c19ae8c09e": "b3730071e789877bea3373ffa59ca673a4b1f4c9",
|
"8d4abc7dd31a64f2ddd811c19ae8c09e": "b3730071e789877bea3373ffa59ca673a4b1f4c9",
|
||||||
"6e7e391c629332cc9d29902b98e52f94": "48024e2f5943ed86cb1b8e9443603991cdb05808",
|
"6e7e391c629332cc9d29902b98e52f94": "48024e2f5943ed86cb1b8e9443603991cdb05808",
|
||||||
"bbd27768c16e6077b1a90dc0eb8558a3": "24a487f22f3da292e179b3edd6c30222a8ff933d"
|
"bbd27768c16e6077b1a90dc0eb8558a3": "24a487f22f3da292e179b3edd6c30222a8ff933d",
|
||||||
|
"084b6bc9804710a89a542335a3e4b1e0": "8c20ff26ebfefbf9b050b67af8083704003595ba"
|
||||||
},
|
},
|
||||||
"by_name": {
|
"by_name": {
|
||||||
"3do_arcade_saot.bin": [
|
"3do_arcade_saot.bin": [
|
||||||
@@ -88771,7 +88848,7 @@
|
|||||||
"ddos42.rom": [
|
"ddos42.rom": [
|
||||||
"7747fe3d431b745b570629fe7f3f5d51b6d6f393"
|
"7747fe3d431b745b570629fe7f3f5d51b6d6f393"
|
||||||
],
|
],
|
||||||
"deltados.rom": [
|
"delta2.rom": [
|
||||||
"686ebb5f39dd4fc907a0b748867d0a022d2f1a60"
|
"686ebb5f39dd4fc907a0b748867d0a022d2f1a60"
|
||||||
],
|
],
|
||||||
"dplus48.rom": [
|
"dplus48.rom": [
|
||||||
@@ -89000,7 +89077,7 @@
|
|||||||
"VEC_Bios.bin": [
|
"VEC_Bios.bin": [
|
||||||
"b9bbf5bb0eac52d039a4a993a2d8064b862c9e28"
|
"b9bbf5bb0eac52d039a4a993a2d8064b862c9e28"
|
||||||
],
|
],
|
||||||
"VEC_MineStorm.vec": [
|
"VEC_Minestorm.vec": [
|
||||||
"65d07426b520ddd3115d40f255511e0fd2e20ae7"
|
"65d07426b520ddd3115d40f255511e0fd2e20ae7"
|
||||||
],
|
],
|
||||||
"CHRGEN.BIN": [
|
"CHRGEN.BIN": [
|
||||||
@@ -89010,8 +89087,7 @@
|
|||||||
"aea7a4c0c7ffe1f212f7b9faecfd728862ac6904"
|
"aea7a4c0c7ffe1f212f7b9faecfd728862ac6904"
|
||||||
],
|
],
|
||||||
"doom2.wad": [
|
"doom2.wad": [
|
||||||
"6d559b7ceece4f5ad457415049711992370d520a",
|
"6d559b7ceece4f5ad457415049711992370d520a"
|
||||||
"7ec7652fcfce8ddc6e801839291f0e28ef1d5ae7"
|
|
||||||
],
|
],
|
||||||
"freedoom1.wad": [
|
"freedoom1.wad": [
|
||||||
"97bb88094a51457a8dcad98c58be22a2d0fa9a37"
|
"97bb88094a51457a8dcad98c58be22a2d0fa9a37"
|
||||||
@@ -90267,6 +90343,10 @@
|
|||||||
"MSX_8020-20bios.rom": [
|
"MSX_8020-20bios.rom": [
|
||||||
"e998f0c441f4f1800ef44e42cd1659150206cf79"
|
"e998f0c441f4f1800ef44e42cd1659150206cf79"
|
||||||
],
|
],
|
||||||
|
"MSX2.ROM": [
|
||||||
|
"0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd",
|
||||||
|
"6103b39f1e38d1aa2d84b1c3219c44f1abb5436e"
|
||||||
|
],
|
||||||
"MSX2P.ROM": [
|
"MSX2P.ROM": [
|
||||||
"e90f80a61d94c617850c415e12ad70ac41e66bb7",
|
"e90f80a61d94c617850c415e12ad70ac41e66bb7",
|
||||||
"e2fbd56e42da637609d23ae9df9efd1b4241b18a"
|
"e2fbd56e42da637609d23ae9df9efd1b4241b18a"
|
||||||
@@ -90344,9 +90424,6 @@
|
|||||||
"409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498",
|
"409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498",
|
||||||
"e998f0c441f4f1800ef44e42cd1659150206cf79"
|
"e998f0c441f4f1800ef44e42cd1659150206cf79"
|
||||||
],
|
],
|
||||||
"MSX2.ROM": [
|
|
||||||
"6103b39f1e38d1aa2d84b1c3219c44f1abb5436e"
|
|
||||||
],
|
|
||||||
"MSX2EXT.ROM": [
|
"MSX2EXT.ROM": [
|
||||||
"5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02"
|
"5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02"
|
||||||
],
|
],
|
||||||
@@ -91694,6 +91771,12 @@
|
|||||||
"Doukutsu.exe": [
|
"Doukutsu.exe": [
|
||||||
"91d75a87872cbb88964bead92e0cbf8b72e836b6"
|
"91d75a87872cbb88964bead92e0cbf8b72e836b6"
|
||||||
],
|
],
|
||||||
|
"sprites.sif": [
|
||||||
|
"73acccee601b56a2b7f624b0227fa7e1d662ef4b"
|
||||||
|
],
|
||||||
|
"tilekey.dat": [
|
||||||
|
"74c14b15dbc2f36c81d2ad9cb65e2893298415da"
|
||||||
|
],
|
||||||
"bios-256k.bin": [
|
"bios-256k.bin": [
|
||||||
"2d539603665b8194c671ef5189c5a2b6db3ac645"
|
"2d539603665b8194c671ef5189c5a2b6db3ac645"
|
||||||
],
|
],
|
||||||
@@ -99662,10 +99745,14 @@
|
|||||||
"scph101_v44.bin": [
|
"scph101_v44.bin": [
|
||||||
"7771d6e90980408f753891648685def6dd42ef6d"
|
"7771d6e90980408f753891648685def6dd42ef6d"
|
||||||
],
|
],
|
||||||
"scph5000.bin": [
|
"scph3500.bin": [
|
||||||
"e340db2696274dda5fdc25e434a914db71e8b02b",
|
"e38466a4ba8005fba7e9e3c7b9efeba7205bee3f",
|
||||||
"ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d"
|
"ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d"
|
||||||
],
|
],
|
||||||
|
"scph5000.bin": [
|
||||||
|
"ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d",
|
||||||
|
"e340db2696274dda5fdc25e434a914db71e8b02b"
|
||||||
|
],
|
||||||
"PSX_DTLH2000.bin": [
|
"PSX_DTLH2000.bin": [
|
||||||
"1a8d6f9453111b1d317bb7dae300495fbf54600c"
|
"1a8d6f9453111b1d317bb7dae300495fbf54600c"
|
||||||
],
|
],
|
||||||
@@ -99721,9 +99808,7 @@
|
|||||||
"dbc7339e5d85827c095764fc077b41f78fd2ecae"
|
"dbc7339e5d85827c095764fc077b41f78fd2ecae"
|
||||||
],
|
],
|
||||||
"scph3000.bin": [
|
"scph3000.bin": [
|
||||||
"b06f4a861f74270be819aa2a07db8d0563a7cc4e"
|
"b06f4a861f74270be819aa2a07db8d0563a7cc4e",
|
||||||
],
|
|
||||||
"scph3500.bin": [
|
|
||||||
"e38466a4ba8005fba7e9e3c7b9efeba7205bee3f"
|
"e38466a4ba8005fba7e9e3c7b9efeba7205bee3f"
|
||||||
],
|
],
|
||||||
"scph5500.bin": [
|
"scph5500.bin": [
|
||||||
@@ -100454,15 +100539,24 @@
|
|||||||
"630b9f529b954851fbdcfeb1d91a950d4bda0547",
|
"630b9f529b954851fbdcfeb1d91a950d4bda0547",
|
||||||
"e05575b630bea7ff98b9ca1f083d745abb3110b6"
|
"e05575b630bea7ff98b9ca1f083d745abb3110b6"
|
||||||
],
|
],
|
||||||
|
"Gram Kracker.ctg": [
|
||||||
|
"56dd520570cdcdd60dda2eedc8af1e02a781dcc5"
|
||||||
|
],
|
||||||
"TI-994A.ctg": [
|
"TI-994A.ctg": [
|
||||||
"4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8"
|
"4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8"
|
||||||
],
|
],
|
||||||
|
"cf7+.ctg": [
|
||||||
|
"698c638e1773244a6bf8a353c87d210047cce402"
|
||||||
|
],
|
||||||
"spchrom.bin": [
|
"spchrom.bin": [
|
||||||
"382292295c00dff348d7e17c5ce4da12a1d87763"
|
"382292295c00dff348d7e17c5ce4da12a1d87763"
|
||||||
],
|
],
|
||||||
"ti-disk.ctg": [
|
"ti-disk.ctg": [
|
||||||
"693f5b4fe1e5eb6429fd6614fb7bb14350939814"
|
"693f5b4fe1e5eb6429fd6614fb7bb14350939814"
|
||||||
],
|
],
|
||||||
|
"ti-pcard.ctg": [
|
||||||
|
"c7bf5fcfea0502011dca76d12efcc242e23421b9"
|
||||||
|
],
|
||||||
"mo5-v1.1.rom": [
|
"mo5-v1.1.rom": [
|
||||||
"8d2865996a1a8d8a13fc9965c1bcf490f9621399"
|
"8d2865996a1a8d8a13fc9965c1bcf490f9621399"
|
||||||
],
|
],
|
||||||
@@ -100567,6 +100661,9 @@
|
|||||||
"Tortuga.dat": [
|
"Tortuga.dat": [
|
||||||
"24a487f22f3da292e179b3edd6c30222a8ff933d"
|
"24a487f22f3da292e179b3edd6c30222a8ff933d"
|
||||||
],
|
],
|
||||||
|
"desc.dat": [
|
||||||
|
"8c20ff26ebfefbf9b050b67af8083704003595ba"
|
||||||
|
],
|
||||||
"goldstar_fc1_enc.bin": [
|
"goldstar_fc1_enc.bin": [
|
||||||
"8ef7503c948314d242da47b7fdc272f68dac2aee"
|
"8ef7503c948314d242da47b7fdc272f68dac2aee"
|
||||||
],
|
],
|
||||||
@@ -101425,27 +101522,6 @@
|
|||||||
"samesame.zip": [
|
"samesame.zip": [
|
||||||
"cdb09d3ffaa867ff9e7387cf1934e9011565d546"
|
"cdb09d3ffaa867ff9e7387cf1934e9011565d546"
|
||||||
],
|
],
|
||||||
"kvb1.wav": [
|
|
||||||
"6a582aebcefd6e2a97bdd8968202aab9851a889c"
|
|
||||||
],
|
|
||||||
"kvb2.wav": [
|
|
||||||
"60a425c6bde3226ab731995562716321be20fc49"
|
|
||||||
],
|
|
||||||
"kvb3.wav": [
|
|
||||||
"5e34125c4d6c209b21d1c892f3df0ec1644fd0d8"
|
|
||||||
],
|
|
||||||
"kvs1.wav": [
|
|
||||||
"b094c2c1fca81a0e531e0541f302346150ec4604"
|
|
||||||
],
|
|
||||||
"kvs2.wav": [
|
|
||||||
"8b83b2eea01b3e08ceb885aeb153d4084bddb63c"
|
|
||||||
],
|
|
||||||
"kvs3.wav": [
|
|
||||||
"86896a1e272d8715489de9b407f0b8a42f82d4a0"
|
|
||||||
],
|
|
||||||
"kvshared.wav": [
|
|
||||||
"9adf10cdf1de833b194c7d8797ad1f041ad98dd3"
|
|
||||||
],
|
|
||||||
"atari_osb.rom": [
|
"atari_osb.rom": [
|
||||||
"db1031585968cfc6ec2ecda5c9a5a52f61444a3b"
|
"db1031585968cfc6ec2ecda5c9a5a52f61444a3b"
|
||||||
],
|
],
|
||||||
@@ -101656,18 +101732,18 @@
|
|||||||
"kernal.318004-05.bin": [
|
"kernal.318004-05.bin": [
|
||||||
"7c7e07f016391174a557e790c4ef1cbe33512cdb"
|
"7c7e07f016391174a557e790c4ef1cbe33512cdb"
|
||||||
],
|
],
|
||||||
"characters-japanese.bin": [
|
|
||||||
"dae61ac03065aa2904af5c123ce821855898c555"
|
|
||||||
],
|
|
||||||
"kernel-japanese.bin": [
|
|
||||||
"c9ead45e6674d1042ca6199160e8583c23aeac22"
|
|
||||||
],
|
|
||||||
"basic.bin": [
|
"basic.bin": [
|
||||||
"587d1e90950675ab6b12d91248a3f0d640d02e8d"
|
"587d1e90950675ab6b12d91248a3f0d640d02e8d"
|
||||||
],
|
],
|
||||||
"characters-english.bin": [
|
"characters-english.bin": [
|
||||||
"4fd85ab6647ee2ac7ba40f729323f2472d35b9b4"
|
"4fd85ab6647ee2ac7ba40f729323f2472d35b9b4"
|
||||||
],
|
],
|
||||||
|
"characters-japanese.bin": [
|
||||||
|
"dae61ac03065aa2904af5c123ce821855898c555"
|
||||||
|
],
|
||||||
|
"kernel-japanese.bin": [
|
||||||
|
"c9ead45e6674d1042ca6199160e8583c23aeac22"
|
||||||
|
],
|
||||||
"kernel-ntsc.bin": [
|
"kernel-ntsc.bin": [
|
||||||
"06de7ec017a5e78bd6746d89c2ecebb646efeb19"
|
"06de7ec017a5e78bd6746d89c2ecebb646efeb19"
|
||||||
],
|
],
|
||||||
@@ -101699,6 +101775,12 @@
|
|||||||
"d64tano2.rom": [
|
"d64tano2.rom": [
|
||||||
"e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e"
|
"e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e"
|
||||||
],
|
],
|
||||||
|
"deltados.rom": [
|
||||||
|
"686ebb5f39dd4fc907a0b748867d0a022d2f1a60"
|
||||||
|
],
|
||||||
|
"Premier Micros - DeltaDOS": [
|
||||||
|
"686ebb5f39dd4fc907a0b748867d0a022d2f1a60"
|
||||||
|
],
|
||||||
"exos20.rom": [
|
"exos20.rom": [
|
||||||
"6033a0535136c40c47137e4d1cd9273c06d5fdff"
|
"6033a0535136c40c47137e4d1cd9273c06d5fdff"
|
||||||
],
|
],
|
||||||
@@ -101714,9 +101796,6 @@
|
|||||||
"sl90025.bin": [
|
"sl90025.bin": [
|
||||||
"759e2ed31fbde4a2d8daf8b9f3e0dffebc90dae2"
|
"759e2ed31fbde4a2d8daf8b9f3e0dffebc90dae2"
|
||||||
],
|
],
|
||||||
"VEC_Minestorm.vec": [
|
|
||||||
"65d07426b520ddd3115d40f255511e0fd2e20ae7"
|
|
||||||
],
|
|
||||||
"Vectrex_Bios.bin": [
|
"Vectrex_Bios.bin": [
|
||||||
"b9bbf5bb0eac52d039a4a993a2d8064b862c9e28"
|
"b9bbf5bb0eac52d039a4a993a2d8064b862c9e28"
|
||||||
],
|
],
|
||||||
@@ -101745,15 +101824,6 @@
|
|||||||
"px-7_basic-bios1.rom": [
|
"px-7_basic-bios1.rom": [
|
||||||
"302afb5d8be26c758309ca3df611ae69cced2821"
|
"302afb5d8be26c758309ca3df611ae69cced2821"
|
||||||
],
|
],
|
||||||
"msx.rom": [
|
|
||||||
"409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498"
|
|
||||||
],
|
|
||||||
"Machines/Shared Roms/MSX.rom": [
|
|
||||||
"409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498"
|
|
||||||
],
|
|
||||||
"msx2.rom": [
|
|
||||||
"6103b39f1e38d1aa2d84b1c3219c44f1abb5436e"
|
|
||||||
],
|
|
||||||
"nms8250_basic-bios2.rom": [
|
"nms8250_basic-bios2.rom": [
|
||||||
"6103b39f1e38d1aa2d84b1c3219c44f1abb5436e"
|
"6103b39f1e38d1aa2d84b1c3219c44f1abb5436e"
|
||||||
],
|
],
|
||||||
@@ -101763,9 +101833,6 @@
|
|||||||
"nms8245_basic-bios2.rom": [
|
"nms8245_basic-bios2.rom": [
|
||||||
"6103b39f1e38d1aa2d84b1c3219c44f1abb5436e"
|
"6103b39f1e38d1aa2d84b1c3219c44f1abb5436e"
|
||||||
],
|
],
|
||||||
"msx2ext.rom": [
|
|
||||||
"5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02"
|
|
||||||
],
|
|
||||||
"nms8250_msx2sub.rom": [
|
"nms8250_msx2sub.rom": [
|
||||||
"5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02"
|
"5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02"
|
||||||
],
|
],
|
||||||
@@ -102655,6 +102722,12 @@
|
|||||||
"scph102C.bin": [
|
"scph102C.bin": [
|
||||||
"dbc7339e5d85827c095764fc077b41f78fd2ecae"
|
"dbc7339e5d85827c095764fc077b41f78fd2ecae"
|
||||||
],
|
],
|
||||||
|
"sony-playstation:cba733ceeff5aef5c32254f1d617fa62": [
|
||||||
|
"e38466a4ba8005fba7e9e3c7b9efeba7205bee3f"
|
||||||
|
],
|
||||||
|
"sony-playstation:57a06303dfa9cf9351222dfcbb4a29d9": [
|
||||||
|
"ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d"
|
||||||
|
],
|
||||||
"scph5001.bin": [
|
"scph5001.bin": [
|
||||||
"ca7af30b50d9756cbd764640126c454cff658479"
|
"ca7af30b50d9756cbd764640126c454cff658479"
|
||||||
],
|
],
|
||||||
@@ -103222,15 +103295,12 @@
|
|||||||
"EXOS21.ROM": [
|
"EXOS21.ROM": [
|
||||||
"55315b20fecb4441a07ee4bc5dc7153f396e0a2e"
|
"55315b20fecb4441a07ee4bc5dc7153f396e0a2e"
|
||||||
],
|
],
|
||||||
|
"Machines/Shared Roms/MSX.rom": [
|
||||||
|
"409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498"
|
||||||
|
],
|
||||||
"sony-playstation:239665b1a3dade1b5a52c06338011044": [
|
"sony-playstation:239665b1a3dade1b5a52c06338011044": [
|
||||||
"343883a7b555646da8cee54aadd2795b6e7dd070"
|
"343883a7b555646da8cee54aadd2795b6e7dd070"
|
||||||
],
|
],
|
||||||
"sony-playstation:cba733ceeff5aef5c32254f1d617fa62": [
|
|
||||||
"e38466a4ba8005fba7e9e3c7b9efeba7205bee3f"
|
|
||||||
],
|
|
||||||
"sony-playstation:57a06303dfa9cf9351222dfcbb4a29d9": [
|
|
||||||
"ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d"
|
|
||||||
],
|
|
||||||
"sony-playstation:81328b966e6dcf7ea1e32e55e1c104bb": [
|
"sony-playstation:81328b966e6dcf7ea1e32e55e1c104bb": [
|
||||||
"15c94da3cc5a38a582429575af4198c487fe893c"
|
"15c94da3cc5a38a582429575af4198c487fe893c"
|
||||||
],
|
],
|
||||||
@@ -103384,6 +103454,9 @@
|
|||||||
"MOONSOUND.rom": [
|
"MOONSOUND.rom": [
|
||||||
"32760893ce06dbe3930627755ba065cc3d8ec6ca"
|
"32760893ce06dbe3930627755ba065cc3d8ec6ca"
|
||||||
],
|
],
|
||||||
|
"MSX2J.rom": [
|
||||||
|
"0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd"
|
||||||
|
],
|
||||||
"MSX2P.rom": [
|
"MSX2P.rom": [
|
||||||
"e90f80a61d94c617850c415e12ad70ac41e66bb7"
|
"e90f80a61d94c617850c415e12ad70ac41e66bb7"
|
||||||
],
|
],
|
||||||
@@ -107708,6 +107781,7 @@
|
|||||||
"d42f4444": "bf5fb954db868e523febccc68549ed9187961076",
|
"d42f4444": "bf5fb954db868e523febccc68549ed9187961076",
|
||||||
"1f6406fb": "5aff2d9b6efc723bc395b0f96f0adfa83cc54a49",
|
"1f6406fb": "5aff2d9b6efc723bc395b0f96f0adfa83cc54a49",
|
||||||
"a317e6b4": "e998f0c441f4f1800ef44e42cd1659150206cf79",
|
"a317e6b4": "e998f0c441f4f1800ef44e42cd1659150206cf79",
|
||||||
|
"9b3e7b97": "0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd",
|
||||||
"19771608": "e90f80a61d94c617850c415e12ad70ac41e66bb7",
|
"19771608": "e90f80a61d94c617850c415e12ad70ac41e66bb7",
|
||||||
"3353dcc6": "4e9384c9d137f0ab65ffc5a78f04cd8c9df6c8b7",
|
"3353dcc6": "4e9384c9d137f0ab65ffc5a78f04cd8c9df6c8b7",
|
||||||
"82312751": "69dd7344e4dfa7e250973a71bbb3e8aa6fb08d81",
|
"82312751": "69dd7344e4dfa7e250973a71bbb3e8aa6fb08d81",
|
||||||
@@ -108247,6 +108321,8 @@
|
|||||||
"29e86dbc": "d8ce5b1405b6428969493efeb6f3aa2027c41bdc",
|
"29e86dbc": "d8ce5b1405b6428969493efeb6f3aa2027c41bdc",
|
||||||
"aa727c5d": "86fc8dc0932f983efa199e31ae05a4424772f959",
|
"aa727c5d": "86fc8dc0932f983efa199e31ae05a4424772f959",
|
||||||
"0c0644ba": "91d75a87872cbb88964bead92e0cbf8b72e836b6",
|
"0c0644ba": "91d75a87872cbb88964bead92e0cbf8b72e836b6",
|
||||||
|
"4e42c240": "73acccee601b56a2b7f624b0227fa7e1d662ef4b",
|
||||||
|
"57841d84": "74c14b15dbc2f36c81d2ad9cb65e2893298415da",
|
||||||
"7db5c908": "2d539603665b8194c671ef5189c5a2b6db3ac645",
|
"7db5c908": "2d539603665b8194c671ef5189c5a2b6db3ac645",
|
||||||
"e7e3ac4c": "cb1bd2cf5f89741900061955ac1a3b7cbd7a1ce9",
|
"e7e3ac4c": "cb1bd2cf5f89741900061955ac1a3b7cbd7a1ce9",
|
||||||
"e3f1ee0a": "359becb4c1dcd61c139ab3786983da9640677701",
|
"e3f1ee0a": "359becb4c1dcd61c139ab3786983da9640677701",
|
||||||
@@ -111184,6 +111260,8 @@
|
|||||||
"55847d8c": "649895efd79d14790eabb362e94eb0622093dfb9",
|
"55847d8c": "649895efd79d14790eabb362e94eb0622093dfb9",
|
||||||
"1e26792f": "b6a11579caef3875504fcf3831b8e3922746df2c",
|
"1e26792f": "b6a11579caef3875504fcf3831b8e3922746df2c",
|
||||||
"6a0e22a0": "7771d6e90980408f753891648685def6dd42ef6d",
|
"6a0e22a0": "7771d6e90980408f753891648685def6dd42ef6d",
|
||||||
|
"bc190209": "e38466a4ba8005fba7e9e3c7b9efeba7205bee3f",
|
||||||
|
"24fc7e17": "ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d",
|
||||||
"8c93a399": "e340db2696274dda5fdc25e434a914db71e8b02b",
|
"8c93a399": "e340db2696274dda5fdc25e434a914db71e8b02b",
|
||||||
"18d0f7d8": "1a8d6f9453111b1d317bb7dae300495fbf54600c",
|
"18d0f7d8": "1a8d6f9453111b1d317bb7dae300495fbf54600c",
|
||||||
"decb22f5": "73107d468fc7cb1d2c5b18b269715dd889ecef06",
|
"decb22f5": "73107d468fc7cb1d2c5b18b269715dd889ecef06",
|
||||||
@@ -111204,8 +111282,6 @@
|
|||||||
"0bad7ea9": "beb0ac693c0dc26daf5665b3314db81480fa5c7c",
|
"0bad7ea9": "beb0ac693c0dc26daf5665b3314db81480fa5c7c",
|
||||||
"76b880e5": "dbc7339e5d85827c095764fc077b41f78fd2ecae",
|
"76b880e5": "dbc7339e5d85827c095764fc077b41f78fd2ecae",
|
||||||
"3539def6": "b06f4a861f74270be819aa2a07db8d0563a7cc4e",
|
"3539def6": "b06f4a861f74270be819aa2a07db8d0563a7cc4e",
|
||||||
"bc190209": "e38466a4ba8005fba7e9e3c7b9efeba7205bee3f",
|
|
||||||
"24fc7e17": "ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d",
|
|
||||||
"ff3eeb8c": "b05def971d8ec59f346f2d9ac21fb742e3eb6917",
|
"ff3eeb8c": "b05def971d8ec59f346f2d9ac21fb742e3eb6917",
|
||||||
"8d8cb7e4": "0555c6fae8906f3f09baf5988f00e55f88e9f30b",
|
"8d8cb7e4": "0555c6fae8906f3f09baf5988f00e55f88e9f30b",
|
||||||
"d786f0b9": "f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0",
|
"d786f0b9": "f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0",
|
||||||
@@ -111457,9 +111533,12 @@
|
|||||||
"200dd7d0": "8177bc6d5489d575cbfa9a004d097fc08c6f8c86",
|
"200dd7d0": "8177bc6d5489d575cbfa9a004d097fc08c6f8c86",
|
||||||
"ea0cc014": "630b9f529b954851fbdcfeb1d91a950d4bda0547",
|
"ea0cc014": "630b9f529b954851fbdcfeb1d91a950d4bda0547",
|
||||||
"b3ef7ac7": "8212fbd8899a2808c7ace4559245861e5bee2c9a",
|
"b3ef7ac7": "8212fbd8899a2808c7ace4559245861e5bee2c9a",
|
||||||
|
"f1c12fb2": "56dd520570cdcdd60dda2eedc8af1e02a781dcc5",
|
||||||
"a092207d": "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8",
|
"a092207d": "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8",
|
||||||
|
"81f3aec2": "698c638e1773244a6bf8a353c87d210047cce402",
|
||||||
"58b155f7": "382292295c00dff348d7e17c5ce4da12a1d87763",
|
"58b155f7": "382292295c00dff348d7e17c5ce4da12a1d87763",
|
||||||
"1a52b40c": "693f5b4fe1e5eb6429fd6614fb7bb14350939814",
|
"1a52b40c": "693f5b4fe1e5eb6429fd6614fb7bb14350939814",
|
||||||
|
"62b3c3d0": "c7bf5fcfea0502011dca76d12efcc242e23421b9",
|
||||||
"f93bd9f7": "e05575b630bea7ff98b9ca1f083d745abb3110b6",
|
"f93bd9f7": "e05575b630bea7ff98b9ca1f083d745abb3110b6",
|
||||||
"71879a28": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6",
|
"71879a28": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6",
|
||||||
"237c60bf": "8d2865996a1a8d8a13fc9965c1bcf490f9621399",
|
"237c60bf": "8d2865996a1a8d8a13fc9965c1bcf490f9621399",
|
||||||
@@ -111497,7 +111576,8 @@
|
|||||||
"4a39a474": "d07114a9f3490338a265fb30d16b052c8da3bb7d",
|
"4a39a474": "d07114a9f3490338a265fb30d16b052c8da3bb7d",
|
||||||
"bf1e4b9b": "b3730071e789877bea3373ffa59ca673a4b1f4c9",
|
"bf1e4b9b": "b3730071e789877bea3373ffa59ca673a4b1f4c9",
|
||||||
"e6b9ebfb": "48024e2f5943ed86cb1b8e9443603991cdb05808",
|
"e6b9ebfb": "48024e2f5943ed86cb1b8e9443603991cdb05808",
|
||||||
"a42ef0fd": "24a487f22f3da292e179b3edd6c30222a8ff933d"
|
"a42ef0fd": "24a487f22f3da292e179b3edd6c30222a8ff933d",
|
||||||
|
"5ea6b7fc": "8c20ff26ebfefbf9b050b67af8083704003595ba"
|
||||||
},
|
},
|
||||||
"by_sha256": {
|
"by_sha256": {
|
||||||
"72a88b5b47b76bd5604b30c102c948fa7e0ee90ccbc83aba496c45cf90b5a0e7": "520d3d1b5897800af47f92efd2444a26b7a7dead",
|
"72a88b5b47b76bd5604b30c102c948fa7e0ee90ccbc83aba496c45cf90b5a0e7": "520d3d1b5897800af47f92efd2444a26b7a7dead",
|
||||||
@@ -115005,6 +115085,7 @@
|
|||||||
"0a09940701f40647a2715271b43c9ab0d82bd488871427ad627b7e0f462f5dda": "bf5fb954db868e523febccc68549ed9187961076",
|
"0a09940701f40647a2715271b43c9ab0d82bd488871427ad627b7e0f462f5dda": "bf5fb954db868e523febccc68549ed9187961076",
|
||||||
"d87ce758a7171870a2a3e7893e09cbba2bd68ee70b4d0f0e49dd2ecd60aafdd1": "5aff2d9b6efc723bc395b0f96f0adfa83cc54a49",
|
"d87ce758a7171870a2a3e7893e09cbba2bd68ee70b4d0f0e49dd2ecd60aafdd1": "5aff2d9b6efc723bc395b0f96f0adfa83cc54a49",
|
||||||
"1c85dac5536fa3ba6f2cb70deba02ff680b34ac6cc787d2977258bd663a99555": "e998f0c441f4f1800ef44e42cd1659150206cf79",
|
"1c85dac5536fa3ba6f2cb70deba02ff680b34ac6cc787d2977258bd663a99555": "e998f0c441f4f1800ef44e42cd1659150206cf79",
|
||||||
|
"0c672d86ead61a97f49a583b88b7c1905da120645cd44f0c9f2baf4f4631e0b1": "0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd",
|
||||||
"ca45b50d49a8199a2b8f74300556367a776df1bb28bf8af24d33e65f0fe37a99": "e90f80a61d94c617850c415e12ad70ac41e66bb7",
|
"ca45b50d49a8199a2b8f74300556367a776df1bb28bf8af24d33e65f0fe37a99": "e90f80a61d94c617850c415e12ad70ac41e66bb7",
|
||||||
"696da03345b9fd27799b8fd92024050a201c020ef730e9006cb8f10bbbf68004": "4e9384c9d137f0ab65ffc5a78f04cd8c9df6c8b7",
|
"696da03345b9fd27799b8fd92024050a201c020ef730e9006cb8f10bbbf68004": "4e9384c9d137f0ab65ffc5a78f04cd8c9df6c8b7",
|
||||||
"2715b192a9a647c31da88b4e1d778279ff3b40b80f606891732a6023e3039c2d": "69dd7344e4dfa7e250973a71bbb3e8aa6fb08d81",
|
"2715b192a9a647c31da88b4e1d778279ff3b40b80f606891732a6023e3039c2d": "69dd7344e4dfa7e250973a71bbb3e8aa6fb08d81",
|
||||||
@@ -115544,6 +115625,8 @@
|
|||||||
"3ca567f014a71ea24734559ee63df8184886f17debeef41c4bf4cd6313d70bd1": "d8ce5b1405b6428969493efeb6f3aa2027c41bdc",
|
"3ca567f014a71ea24734559ee63df8184886f17debeef41c4bf4cd6313d70bd1": "d8ce5b1405b6428969493efeb6f3aa2027c41bdc",
|
||||||
"0ed991887342fba9e4b71668ff4c14ed93c2b3a19b4874dd0282404a1c442094": "86fc8dc0932f983efa199e31ae05a4424772f959",
|
"0ed991887342fba9e4b71668ff4c14ed93c2b3a19b4874dd0282404a1c442094": "86fc8dc0932f983efa199e31ae05a4424772f959",
|
||||||
"8a7a63b24bb21557fb597697bdf09248c1ab7e3298cacfa1166d764dd81e7fc3": "91d75a87872cbb88964bead92e0cbf8b72e836b6",
|
"8a7a63b24bb21557fb597697bdf09248c1ab7e3298cacfa1166d764dd81e7fc3": "91d75a87872cbb88964bead92e0cbf8b72e836b6",
|
||||||
|
"e80d72041dc20ddffb3fa7e22e4c51acb06d95e81058d5eeb888b5bf308424ea": "73acccee601b56a2b7f624b0227fa7e1d662ef4b",
|
||||||
|
"e84df7374f8eff014458c6d8611c44f03b39b8d1a7abf30a2347dbb085b55232": "74c14b15dbc2f36c81d2ad9cb65e2893298415da",
|
||||||
"ae6f6aa973aaccc143f57aa960fb035fd9de4daee4ad0cd713322f8c259e7650": "2d539603665b8194c671ef5189c5a2b6db3ac645",
|
"ae6f6aa973aaccc143f57aa960fb035fd9de4daee4ad0cd713322f8c259e7650": "2d539603665b8194c671ef5189c5a2b6db3ac645",
|
||||||
"3dfd946d0c03ab0e022f84f10c3eb5f1dd507761f73e7d8067511ba35a10f776": "cb1bd2cf5f89741900061955ac1a3b7cbd7a1ce9",
|
"3dfd946d0c03ab0e022f84f10c3eb5f1dd507761f73e7d8067511ba35a10f776": "cb1bd2cf5f89741900061955ac1a3b7cbd7a1ce9",
|
||||||
"e8fc9e55790dbe3cb31f019a3deb57206ba6c54f5e581adb2ab2677a9d391472": "359becb4c1dcd61c139ab3786983da9640677701",
|
"e8fc9e55790dbe3cb31f019a3deb57206ba6c54f5e581adb2ab2677a9d391472": "359becb4c1dcd61c139ab3786983da9640677701",
|
||||||
@@ -118481,6 +118564,8 @@
|
|||||||
"42e4124be7623e2e28b1db0d8d426539646faee49d74b71166d8ba5bd7c472ed": "649895efd79d14790eabb362e94eb0622093dfb9",
|
"42e4124be7623e2e28b1db0d8d426539646faee49d74b71166d8ba5bd7c472ed": "649895efd79d14790eabb362e94eb0622093dfb9",
|
||||||
"3d06d2c469313c2a2128d24fe2e0c71ff99bc2032be89a829a62337187f500b7": "b6a11579caef3875504fcf3831b8e3922746df2c",
|
"3d06d2c469313c2a2128d24fe2e0c71ff99bc2032be89a829a62337187f500b7": "b6a11579caef3875504fcf3831b8e3922746df2c",
|
||||||
"8434528690df0d444dfe4e931eb5501be53df70497e63f4c9a21184631cdbb87": "7771d6e90980408f753891648685def6dd42ef6d",
|
"8434528690df0d444dfe4e931eb5501be53df70497e63f4c9a21184631cdbb87": "7771d6e90980408f753891648685def6dd42ef6d",
|
||||||
|
"6f71ca1e716da761dc53187bd39e00c213f566e55090708fd3e2b4b425c8c989": "e38466a4ba8005fba7e9e3c7b9efeba7205bee3f",
|
||||||
|
"0c8359870cbac0ea091f1c87f188cd332dcc709753b91cafd9fd44a4a6188197": "ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d",
|
||||||
"8e0383171e67b33e60d5df6394c58843f3b11c7a0b97f3bfcc4319ac2d1f9d18": "e340db2696274dda5fdc25e434a914db71e8b02b",
|
"8e0383171e67b33e60d5df6394c58843f3b11c7a0b97f3bfcc4319ac2d1f9d18": "e340db2696274dda5fdc25e434a914db71e8b02b",
|
||||||
"7f38da2e456540d267060175a7a1e3b4c39292d964051abd8b322c05367af04f": "1a8d6f9453111b1d317bb7dae300495fbf54600c",
|
"7f38da2e456540d267060175a7a1e3b4c39292d964051abd8b322c05367af04f": "1a8d6f9453111b1d317bb7dae300495fbf54600c",
|
||||||
"4018749b3698b8694387beebcbabfb48470513066840f9441459ee4c9f0f39bc": "73107d468fc7cb1d2c5b18b269715dd889ecef06",
|
"4018749b3698b8694387beebcbabfb48470513066840f9441459ee4c9f0f39bc": "73107d468fc7cb1d2c5b18b269715dd889ecef06",
|
||||||
@@ -118501,8 +118586,6 @@
|
|||||||
"5c0166da24e27deaa82246de8ff0108267fe4bb59f6df0fdec50e05e62448ca4": "beb0ac693c0dc26daf5665b3314db81480fa5c7c",
|
"5c0166da24e27deaa82246de8ff0108267fe4bb59f6df0fdec50e05e62448ca4": "beb0ac693c0dc26daf5665b3314db81480fa5c7c",
|
||||||
"42244b0c650821519751b7e77ad1d3222a0125e75586df2b4e84ba693b9809dc": "dbc7339e5d85827c095764fc077b41f78fd2ecae",
|
"42244b0c650821519751b7e77ad1d3222a0125e75586df2b4e84ba693b9809dc": "dbc7339e5d85827c095764fc077b41f78fd2ecae",
|
||||||
"5eb3aee495937558312b83b54323d76a4a015190decd4051214f1b6df06ac34b": "b06f4a861f74270be819aa2a07db8d0563a7cc4e",
|
"5eb3aee495937558312b83b54323d76a4a015190decd4051214f1b6df06ac34b": "b06f4a861f74270be819aa2a07db8d0563a7cc4e",
|
||||||
"6f71ca1e716da761dc53187bd39e00c213f566e55090708fd3e2b4b425c8c989": "e38466a4ba8005fba7e9e3c7b9efeba7205bee3f",
|
|
||||||
"0c8359870cbac0ea091f1c87f188cd332dcc709753b91cafd9fd44a4a6188197": "ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d",
|
|
||||||
"9c0421858e217805f4abe18698afea8d5aa36ff0727eb8484944e00eb5e7eadb": "b05def971d8ec59f346f2d9ac21fb742e3eb6917",
|
"9c0421858e217805f4abe18698afea8d5aa36ff0727eb8484944e00eb5e7eadb": "b05def971d8ec59f346f2d9ac21fb742e3eb6917",
|
||||||
"11052b6499e466bbf0a709b1f9cb6834a9418e66680387912451e971cf8a1fef": "0555c6fae8906f3f09baf5988f00e55f88e9f30b",
|
"11052b6499e466bbf0a709b1f9cb6834a9418e66680387912451e971cf8a1fef": "0555c6fae8906f3f09baf5988f00e55f88e9f30b",
|
||||||
"1faaa18fa820a0225e488d9f086296b8e6c46df739666093987ff7d8fd352c09": "f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0",
|
"1faaa18fa820a0225e488d9f086296b8e6c46df739666093987ff7d8fd352c09": "f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0",
|
||||||
@@ -118754,9 +118837,12 @@
|
|||||||
"55c318616fad4fc32335c59f97fbca21f0a02424bece13b088cc11e0af73d993": "8177bc6d5489d575cbfa9a004d097fc08c6f8c86",
|
"55c318616fad4fc32335c59f97fbca21f0a02424bece13b088cc11e0af73d993": "8177bc6d5489d575cbfa9a004d097fc08c6f8c86",
|
||||||
"5b4dc460e53715e422e9dd86e4f7e7f323cc5320d35213dcd56b960fb8876003": "630b9f529b954851fbdcfeb1d91a950d4bda0547",
|
"5b4dc460e53715e422e9dd86e4f7e7f323cc5320d35213dcd56b960fb8876003": "630b9f529b954851fbdcfeb1d91a950d4bda0547",
|
||||||
"172db86fc7f03808084fcf846ae1e53143d2d26ec6a72f437b9726c6b4295359": "8212fbd8899a2808c7ace4559245861e5bee2c9a",
|
"172db86fc7f03808084fcf846ae1e53143d2d26ec6a72f437b9726c6b4295359": "8212fbd8899a2808c7ace4559245861e5bee2c9a",
|
||||||
|
"3e63f6a54a8001ddd75ecde70572c7030776d79817f46ee0dfcf5274dd03047f": "56dd520570cdcdd60dda2eedc8af1e02a781dcc5",
|
||||||
"5a1787ece8a37db887d60953471084e2ea44a6dbe529d20882f4824d97536fa4": "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8",
|
"5a1787ece8a37db887d60953471084e2ea44a6dbe529d20882f4824d97536fa4": "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8",
|
||||||
|
"8998c8525a9014a7983a8ed3b03fa8210a08c205dacccd654f139f78f20623da": "698c638e1773244a6bf8a353c87d210047cce402",
|
||||||
"1a7481f3e7e2d464772b540f9b9e4d529dc61df372f181adf7432f0df9876c16": "382292295c00dff348d7e17c5ce4da12a1d87763",
|
"1a7481f3e7e2d464772b540f9b9e4d529dc61df372f181adf7432f0df9876c16": "382292295c00dff348d7e17c5ce4da12a1d87763",
|
||||||
"c0a5c744fffa9265fd3ee49020d0697717eaf5aa2fefacd0387ad997b1165b5a": "693f5b4fe1e5eb6429fd6614fb7bb14350939814",
|
"c0a5c744fffa9265fd3ee49020d0697717eaf5aa2fefacd0387ad997b1165b5a": "693f5b4fe1e5eb6429fd6614fb7bb14350939814",
|
||||||
|
"06eae0519b66734b546d4a6508f8f20ab3f57d21819c469ff748e68816e27bce": "c7bf5fcfea0502011dca76d12efcc242e23421b9",
|
||||||
"d7bb2d9b65a766dcc03376c6afd9a605df5fe302cf61584f801653b7be87279a": "e05575b630bea7ff98b9ca1f083d745abb3110b6",
|
"d7bb2d9b65a766dcc03376c6afd9a605df5fe302cf61584f801653b7be87279a": "e05575b630bea7ff98b9ca1f083d745abb3110b6",
|
||||||
"a8bf18e99904f9c14969a3be1da84da2438ee3d206928ead28eaff758e4449dd": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6",
|
"a8bf18e99904f9c14969a3be1da84da2438ee3d206928ead28eaff758e4449dd": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6",
|
||||||
"c15d3d6732399a879bb6de5ae2fcb9aadfd64da86d95652ced9ad96a2ae8e692": "8d2865996a1a8d8a13fc9965c1bcf490f9621399",
|
"c15d3d6732399a879bb6de5ae2fcb9aadfd64da86d95652ced9ad96a2ae8e692": "8d2865996a1a8d8a13fc9965c1bcf490f9621399",
|
||||||
@@ -118794,7 +118880,8 @@
|
|||||||
"c5e08982bc797752118eff67950f42d9c6ef6b9668d03f152c88b8ef8ed6a63b": "d07114a9f3490338a265fb30d16b052c8da3bb7d",
|
"c5e08982bc797752118eff67950f42d9c6ef6b9668d03f152c88b8ef8ed6a63b": "d07114a9f3490338a265fb30d16b052c8da3bb7d",
|
||||||
"c06a6ae0804b20ded47b9ab9101ffe3a6438382b9ec664a2ec0fcd010f8566f4": "b3730071e789877bea3373ffa59ca673a4b1f4c9",
|
"c06a6ae0804b20ded47b9ab9101ffe3a6438382b9ec664a2ec0fcd010f8566f4": "b3730071e789877bea3373ffa59ca673a4b1f4c9",
|
||||||
"37ed55d89afe24a013de30feecf21fb0d75c58f3f0ff9a8449098eaaabe75aac": "48024e2f5943ed86cb1b8e9443603991cdb05808",
|
"37ed55d89afe24a013de30feecf21fb0d75c58f3f0ff9a8449098eaaabe75aac": "48024e2f5943ed86cb1b8e9443603991cdb05808",
|
||||||
"7dc407fbccbf684dc677bed81120f45f0d3406ff7945eaf207a5c38b036c30e0": "24a487f22f3da292e179b3edd6c30222a8ff933d"
|
"7dc407fbccbf684dc677bed81120f45f0d3406ff7945eaf207a5c38b036c30e0": "24a487f22f3da292e179b3edd6c30222a8ff933d",
|
||||||
|
"0d6487d6832488130bc94b1ec5ee71766717b929c249693327089e461460ae40": "8c20ff26ebfefbf9b050b67af8083704003595ba"
|
||||||
},
|
},
|
||||||
"by_path_suffix": {
|
"by_path_suffix": {
|
||||||
".variants/aa310.zip": [
|
".variants/aa310.zip": [
|
||||||
@@ -123327,6 +123414,9 @@
|
|||||||
"openmsx/fs-a1wsx_kanjifont.rom": [
|
"openmsx/fs-a1wsx_kanjifont.rom": [
|
||||||
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49"
|
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49"
|
||||||
],
|
],
|
||||||
|
".variants/MSX2.ROM.0081ea0d": [
|
||||||
|
"0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd"
|
||||||
|
],
|
||||||
".variants/MSX2P.ROM.e90f80a6": [
|
".variants/MSX2P.ROM.e90f80a6": [
|
||||||
"e90f80a61d94c617850c415e12ad70ac41e66bb7"
|
"e90f80a61d94c617850c415e12ad70ac41e66bb7"
|
||||||
],
|
],
|
||||||
@@ -124275,6 +124365,12 @@
|
|||||||
"Oric/colour.rom": [
|
"Oric/colour.rom": [
|
||||||
"bda81f64be319d8793d284bf9d40f01d19b33515"
|
"bda81f64be319d8793d284bf9d40f01d19b33515"
|
||||||
],
|
],
|
||||||
|
"nxengine/data/sprites.sif": [
|
||||||
|
"73acccee601b56a2b7f624b0227fa7e1d662ef4b"
|
||||||
|
],
|
||||||
|
"nxengine/tilekey.dat": [
|
||||||
|
"74c14b15dbc2f36c81d2ad9cb65e2893298415da"
|
||||||
|
],
|
||||||
"nvr/adgold.bin": [
|
"nvr/adgold.bin": [
|
||||||
"e3b28842515140c82e2e897a53ad39333ed9512c"
|
"e3b28842515140c82e2e897a53ad39333ed9512c"
|
||||||
],
|
],
|
||||||
@@ -132560,18 +132656,17 @@
|
|||||||
"d3b78c3dbac55f5199f33f3fe0036439811f7fb3",
|
"d3b78c3dbac55f5199f33f3fe0036439811f7fb3",
|
||||||
"1983b4fb398e3dd9668d424c666c5a0b3f1e2b69",
|
"1983b4fb398e3dd9668d424c666c5a0b3f1e2b69",
|
||||||
"e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e",
|
"e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e",
|
||||||
|
"686ebb5f39dd4fc907a0b748867d0a022d2f1a60",
|
||||||
"6033a0535136c40c47137e4d1cd9273c06d5fdff",
|
"6033a0535136c40c47137e4d1cd9273c06d5fdff",
|
||||||
"81193965a374d77b99b4743d317824b53c3e3c78",
|
"81193965a374d77b99b4743d317824b53c3e3c78",
|
||||||
"8f70d1b74483ba3a37e86cf16c849d601a8c3d2c",
|
"8f70d1b74483ba3a37e86cf16c849d601a8c3d2c",
|
||||||
"759e2ed31fbde4a2d8daf8b9f3e0dffebc90dae2",
|
"759e2ed31fbde4a2d8daf8b9f3e0dffebc90dae2",
|
||||||
"65d07426b520ddd3115d40f255511e0fd2e20ae7",
|
|
||||||
"5a65b922b562cb1f57dab51b73151283f0e20c7a",
|
"5a65b922b562cb1f57dab51b73151283f0e20c7a",
|
||||||
"f9608bb4ad1cfe3640d02844c7ad8e0bcd974917",
|
"f9608bb4ad1cfe3640d02844c7ad8e0bcd974917",
|
||||||
"000ac11b702a4c42e40f135df12fa5f2f13e20a1",
|
"000ac11b702a4c42e40f135df12fa5f2f13e20a1",
|
||||||
"3656bb3bbc17d280d2016fe4f6ff3cded3082a41",
|
"3656bb3bbc17d280d2016fe4f6ff3cded3082a41",
|
||||||
"e998f0c441f4f1800ef44e42cd1659150206cf79",
|
"e998f0c441f4f1800ef44e42cd1659150206cf79",
|
||||||
"302afb5d8be26c758309ca3df611ae69cced2821",
|
"302afb5d8be26c758309ca3df611ae69cced2821",
|
||||||
"409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498",
|
|
||||||
"6103b39f1e38d1aa2d84b1c3219c44f1abb5436e",
|
"6103b39f1e38d1aa2d84b1c3219c44f1abb5436e",
|
||||||
"5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02",
|
"5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02",
|
||||||
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49",
|
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49",
|
||||||
@@ -132639,6 +132734,8 @@
|
|||||||
"dcffe16bd90a723499ad46c641424981338d8378",
|
"dcffe16bd90a723499ad46c641424981338d8378",
|
||||||
"beb0ac693c0dc26daf5665b3314db81480fa5c7c",
|
"beb0ac693c0dc26daf5665b3314db81480fa5c7c",
|
||||||
"dbc7339e5d85827c095764fc077b41f78fd2ecae",
|
"dbc7339e5d85827c095764fc077b41f78fd2ecae",
|
||||||
|
"e38466a4ba8005fba7e9e3c7b9efeba7205bee3f",
|
||||||
|
"ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d",
|
||||||
"ca7af30b50d9756cbd764640126c454cff658479",
|
"ca7af30b50d9756cbd764640126c454cff658479",
|
||||||
"1b0dbdb23da9dc0776aac58d0755dc80fea20975",
|
"1b0dbdb23da9dc0776aac58d0755dc80fea20975",
|
||||||
"339a48f4fcf63e10b5b867b8c93cfd40945faf6c",
|
"339a48f4fcf63e10b5b867b8c93cfd40945faf6c",
|
||||||
@@ -132732,9 +132829,8 @@
|
|||||||
"9451a1a09d8f75944dbd6f91193fc360f1de80ac",
|
"9451a1a09d8f75944dbd6f91193fc360f1de80ac",
|
||||||
"03bbb386cf530e804363acdfc1d13e64cf28af2e",
|
"03bbb386cf530e804363acdfc1d13e64cf28af2e",
|
||||||
"55315b20fecb4441a07ee4bc5dc7153f396e0a2e",
|
"55315b20fecb4441a07ee4bc5dc7153f396e0a2e",
|
||||||
|
"409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498",
|
||||||
"343883a7b555646da8cee54aadd2795b6e7dd070",
|
"343883a7b555646da8cee54aadd2795b6e7dd070",
|
||||||
"e38466a4ba8005fba7e9e3c7b9efeba7205bee3f",
|
|
||||||
"ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d",
|
|
||||||
"15c94da3cc5a38a582429575af4198c487fe893c",
|
"15c94da3cc5a38a582429575af4198c487fe893c",
|
||||||
"73107d468fc7cb1d2c5b18b269715dd889ecef06",
|
"73107d468fc7cb1d2c5b18b269715dd889ecef06",
|
||||||
"b05def971d8ec59f346f2d9ac21fb742e3eb6917",
|
"b05def971d8ec59f346f2d9ac21fb742e3eb6917",
|
||||||
@@ -132766,6 +132862,7 @@
|
|||||||
"7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6",
|
"7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6",
|
||||||
"9d789166e3caf28e4742fe933d962e99618c633d",
|
"9d789166e3caf28e4742fe933d962e99618c633d",
|
||||||
"32760893ce06dbe3930627755ba065cc3d8ec6ca",
|
"32760893ce06dbe3930627755ba065cc3d8ec6ca",
|
||||||
|
"0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd",
|
||||||
"e90f80a61d94c617850c415e12ad70ac41e66bb7",
|
"e90f80a61d94c617850c415e12ad70ac41e66bb7",
|
||||||
"df48902f5f12af8867ae1a87f255145f0e5e0774",
|
"df48902f5f12af8867ae1a87f255145f0e5e0774",
|
||||||
"04990aa1c3a3fc7294ec884b81deaa89832df614",
|
"04990aa1c3a3fc7294ec884b81deaa89832df614",
|
||||||
@@ -135341,6 +135438,12 @@
|
|||||||
".variants/scph101.bin.9a09ab7e": [
|
".variants/scph101.bin.9a09ab7e": [
|
||||||
"7771d6e90980408f753891648685def6dd42ef6d"
|
"7771d6e90980408f753891648685def6dd42ef6d"
|
||||||
],
|
],
|
||||||
|
".variants/scph3000.bin.e38466a4": [
|
||||||
|
"e38466a4ba8005fba7e9e3c7b9efeba7205bee3f"
|
||||||
|
],
|
||||||
|
".variants/scph3500.bin.ffa7f9a7": [
|
||||||
|
"ffa7f9a7fb19d773a0c3985a541c8e5623d2c30d"
|
||||||
|
],
|
||||||
"Oric/microdisc.rom": [
|
"Oric/microdisc.rom": [
|
||||||
"0d2ef6e67322f48f4b7e08d8bbe68827e2074561"
|
"0d2ef6e67322f48f4b7e08d8bbe68827e2074561"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ files:
|
|||||||
path: sysdata/otp.bin
|
path: sysdata/otp.bin
|
||||||
system: nintendo-3ds
|
system: nintendo-3ds
|
||||||
required: false
|
required: false
|
||||||
|
size: 256
|
||||||
validation: [size, crypto]
|
validation: [size, crypto]
|
||||||
note: "OTP data for console key derivation"
|
note: "OTP data for console key derivation"
|
||||||
source_ref: "src/core/hw/unique_data.cpp:126-167, src/core/hw/unique_data.cpp:213"
|
source_ref: "src/core/hw/unique_data.cpp:126-167, src/core/hw/unique_data.cpp:213"
|
||||||
@@ -67,6 +68,7 @@ files:
|
|||||||
path: nand/private/movable.sed
|
path: nand/private/movable.sed
|
||||||
system: nintendo-3ds
|
system: nintendo-3ds
|
||||||
required: false
|
required: false
|
||||||
|
size: 320
|
||||||
validation: [size, signature]
|
validation: [size, signature]
|
||||||
note: "console-unique key seed"
|
note: "console-unique key seed"
|
||||||
source_ref: "src/core/hw/unique_data.cpp:170-200, src/core/hw/unique_data.cpp:217"
|
source_ref: "src/core/hw/unique_data.cpp:170-200, src/core/hw/unique_data.cpp:217"
|
||||||
@@ -75,6 +77,7 @@ files:
|
|||||||
path: nand/rw/sys/SecureInfo_A
|
path: nand/rw/sys/SecureInfo_A
|
||||||
system: nintendo-3ds
|
system: nintendo-3ds
|
||||||
required: false
|
required: false
|
||||||
|
size: 273
|
||||||
validation: [size, signature]
|
validation: [size, signature]
|
||||||
note: "console serial and region data"
|
note: "console serial and region data"
|
||||||
source_ref: "src/core/hw/unique_data.cpp:43-92, src/core/hw/unique_data.cpp:205"
|
source_ref: "src/core/hw/unique_data.cpp:43-92, src/core/hw/unique_data.cpp:205"
|
||||||
@@ -83,6 +86,7 @@ files:
|
|||||||
path: nand/rw/sys/LocalFriendCodeSeed_B
|
path: nand/rw/sys/LocalFriendCodeSeed_B
|
||||||
system: nintendo-3ds
|
system: nintendo-3ds
|
||||||
required: false
|
required: false
|
||||||
|
size: 284
|
||||||
validation: [size, signature]
|
validation: [size, signature]
|
||||||
note: "friend code generation seed"
|
note: "friend code generation seed"
|
||||||
source_ref: "src/core/hw/unique_data.cpp:94-123, src/core/hw/unique_data.cpp:209"
|
source_ref: "src/core/hw/unique_data.cpp:94-123, src/core/hw/unique_data.cpp:209"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ core_classification: official_port
|
|||||||
source: "https://github.com/libretro/bsnes-libretro"
|
source: "https://github.com/libretro/bsnes-libretro"
|
||||||
upstream: "https://github.com/bsnes-emu/bsnes"
|
upstream: "https://github.com/bsnes-emu/bsnes"
|
||||||
logo: "https://raw.githubusercontent.com/bsnes-emu/bsnes/master/bsnes/target-bsnes/resource/bsnes.svg"
|
logo: "https://raw.githubusercontent.com/bsnes-emu/bsnes/master/bsnes/target-bsnes/resource/bsnes.svg"
|
||||||
profiled_date: "2026-03-23"
|
profiled_date: "2026-04-05"
|
||||||
core_version: "115"
|
core_version: "115"
|
||||||
display_name: "Nintendo - SNES / SFC (bsnes)"
|
display_name: "Nintendo - SNES / SFC (bsnes)"
|
||||||
cores: [bsnes]
|
cores: [bsnes]
|
||||||
@@ -29,71 +29,91 @@ files:
|
|||||||
# program ROM: 2048 x 24-bit words, data ROM: 1024 x 16-bit words
|
# program ROM: 2048 x 24-bit words, data ROM: 1024 x 16-bit words
|
||||||
|
|
||||||
- name: "dsp1.program.rom"
|
- name: "dsp1.program.rom"
|
||||||
size: 6144 # 0x1800
|
system: nintendo-snes
|
||||||
|
size: 6144
|
||||||
|
validation: [size]
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
note: "NEC uPD7725 program ROM for DSP1. HLE fallback available"
|
note: "NEC uPD7725 program ROM for DSP1"
|
||||||
source_ref: "sfc/cartridge/load.cpp:490-494, heuristics/super-famicom.cpp:601"
|
source_ref: "sfc/cartridge/load.cpp:490-494, heuristics/super-famicom.cpp:601"
|
||||||
|
|
||||||
- name: "dsp1.data.rom"
|
- name: "dsp1.data.rom"
|
||||||
size: 2048 # 0x800
|
system: nintendo-snes
|
||||||
|
size: 2048
|
||||||
|
validation: [size]
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
note: "NEC uPD7725 data ROM for DSP1. HLE fallback available"
|
note: "NEC uPD7725 data ROM for DSP1"
|
||||||
source_ref: "sfc/cartridge/load.cpp:498-503"
|
source_ref: "sfc/cartridge/load.cpp:498-503"
|
||||||
|
|
||||||
- name: "dsp1b.program.rom"
|
- name: "dsp1b.program.rom"
|
||||||
size: 6144 # 0x1800
|
system: nintendo-snes
|
||||||
|
size: 6144
|
||||||
|
validation: [size]
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
note: "NEC uPD7725 program ROM for DSP1B (default NEC identifier). HLE fallback available"
|
note: "NEC uPD7725 program ROM for DSP1B (default NEC identifier)"
|
||||||
source_ref: "heuristics/super-famicom.cpp:606"
|
source_ref: "heuristics/super-famicom.cpp:606"
|
||||||
|
|
||||||
- name: "dsp1b.data.rom"
|
- name: "dsp1b.data.rom"
|
||||||
size: 2048 # 0x800
|
system: nintendo-snes
|
||||||
|
size: 2048
|
||||||
|
validation: [size]
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
note: "NEC uPD7725 data ROM for DSP1B. HLE fallback available"
|
note: "NEC uPD7725 data ROM for DSP1B"
|
||||||
source_ref: "heuristics/super-famicom.cpp:606"
|
source_ref: "heuristics/super-famicom.cpp:606"
|
||||||
|
|
||||||
- name: "dsp2.program.rom"
|
- name: "dsp2.program.rom"
|
||||||
size: 6144 # 0x1800
|
system: nintendo-snes
|
||||||
|
size: 6144
|
||||||
|
validation: [size]
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
note: "NEC uPD7725 program ROM for DSP2 (Dungeon Master). HLE fallback available"
|
note: "NEC uPD7725 program ROM for DSP2 (Dungeon Master)"
|
||||||
source_ref: "sfc/cartridge/load.cpp:515-520, heuristics/super-famicom.cpp:602"
|
source_ref: "sfc/cartridge/load.cpp:515-520, heuristics/super-famicom.cpp:602"
|
||||||
|
|
||||||
- name: "dsp2.data.rom"
|
- name: "dsp2.data.rom"
|
||||||
size: 2048 # 0x800
|
system: nintendo-snes
|
||||||
|
size: 2048
|
||||||
|
validation: [size]
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
note: "NEC uPD7725 data ROM for DSP2. HLE fallback available"
|
note: "NEC uPD7725 data ROM for DSP2"
|
||||||
source_ref: "sfc/cartridge/load.cpp:498-503"
|
source_ref: "sfc/cartridge/load.cpp:498-503"
|
||||||
|
|
||||||
- name: "dsp3.program.rom"
|
- name: "dsp3.program.rom"
|
||||||
size: 6144 # 0x1800
|
system: nintendo-snes
|
||||||
|
size: 6144
|
||||||
|
validation: [size]
|
||||||
required: true
|
required: true
|
||||||
note: "NEC uPD7725 program ROM for DSP3 (SD Gundam GX). No HLE fallback"
|
note: "NEC uPD7725 program ROM for DSP3 (SD Gundam GX). No HLE fallback"
|
||||||
source_ref: "sfc/cartridge/load.cpp:531-534"
|
source_ref: "sfc/cartridge/load.cpp:531-534"
|
||||||
|
|
||||||
- name: "dsp3.data.rom"
|
- name: "dsp3.data.rom"
|
||||||
size: 2048 # 0x800
|
system: nintendo-snes
|
||||||
|
size: 2048
|
||||||
|
validation: [size]
|
||||||
required: true
|
required: true
|
||||||
note: "NEC uPD7725 data ROM for DSP3. No HLE fallback"
|
note: "NEC uPD7725 data ROM for DSP3. No HLE fallback"
|
||||||
source_ref: "sfc/cartridge/load.cpp:531-534"
|
source_ref: "sfc/cartridge/load.cpp:531-534"
|
||||||
|
|
||||||
- name: "dsp4.program.rom"
|
- name: "dsp4.program.rom"
|
||||||
size: 6144 # 0x1800
|
system: nintendo-snes
|
||||||
|
size: 6144
|
||||||
|
validation: [size]
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
note: "NEC uPD7725 program ROM for DSP4 (Top Gear 3000). HLE fallback available"
|
note: "NEC uPD7725 program ROM for DSP4 (Top Gear 3000)"
|
||||||
source_ref: "sfc/cartridge/load.cpp:522-528, heuristics/super-famicom.cpp:604-605"
|
source_ref: "sfc/cartridge/load.cpp:522-528, heuristics/super-famicom.cpp:604-605"
|
||||||
|
|
||||||
- name: "dsp4.data.rom"
|
- name: "dsp4.data.rom"
|
||||||
size: 2048 # 0x800
|
system: nintendo-snes
|
||||||
|
size: 2048
|
||||||
|
validation: [size]
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
note: "NEC uPD7725 data ROM for DSP4. HLE fallback available"
|
note: "NEC uPD7725 data ROM for DSP4"
|
||||||
source_ref: "sfc/cartridge/load.cpp:498-503"
|
source_ref: "sfc/cartridge/load.cpp:498-503"
|
||||||
|
|
||||||
# -- NEC uPD96050 coprocessor (ST010, ST011) --
|
# -- NEC uPD96050 coprocessor (ST010, ST011) --
|
||||||
@@ -101,27 +121,35 @@ files:
|
|||||||
# program ROM: 16384 x 24-bit words, data ROM: 2048 x 16-bit words
|
# program ROM: 16384 x 24-bit words, data ROM: 2048 x 16-bit words
|
||||||
|
|
||||||
- name: "st010.program.rom"
|
- name: "st010.program.rom"
|
||||||
size: 49152 # 0xC000
|
system: nintendo-snes
|
||||||
|
size: 49152
|
||||||
|
validation: [size]
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
note: "NEC uPD96050 program ROM for ST010. HLE fallback available"
|
note: "NEC uPD96050 program ROM for ST010"
|
||||||
source_ref: "sfc/cartridge/load.cpp:570-574, heuristics/super-famicom.cpp:583-587"
|
source_ref: "sfc/cartridge/load.cpp:570-574, heuristics/super-famicom.cpp:583-587"
|
||||||
|
|
||||||
- name: "st010.data.rom"
|
- name: "st010.data.rom"
|
||||||
size: 4096 # 0x1000
|
system: nintendo-snes
|
||||||
|
size: 4096
|
||||||
|
validation: [size]
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
note: "NEC uPD96050 data ROM for ST010. HLE fallback available"
|
note: "NEC uPD96050 data ROM for ST010"
|
||||||
source_ref: "sfc/cartridge/load.cpp:578-583"
|
source_ref: "sfc/cartridge/load.cpp:578-583"
|
||||||
|
|
||||||
- name: "st011.program.rom"
|
- name: "st011.program.rom"
|
||||||
size: 49152 # 0xC000
|
system: nintendo-snes
|
||||||
|
size: 49152
|
||||||
|
validation: [size]
|
||||||
required: true
|
required: true
|
||||||
note: "NEC uPD96050 program ROM for ST011 (2dan Morita Shougi). No HLE fallback"
|
note: "NEC uPD96050 program ROM for ST011 (2dan Morita Shougi). No HLE fallback"
|
||||||
source_ref: "sfc/cartridge/load.cpp:599-601, heuristics/super-famicom.cpp:586"
|
source_ref: "sfc/cartridge/load.cpp:599-601, heuristics/super-famicom.cpp:586"
|
||||||
|
|
||||||
- name: "st011.data.rom"
|
- name: "st011.data.rom"
|
||||||
size: 4096 # 0x1000
|
system: nintendo-snes
|
||||||
|
size: 4096
|
||||||
|
validation: [size]
|
||||||
required: true
|
required: true
|
||||||
note: "NEC uPD96050 data ROM for ST011. No HLE fallback"
|
note: "NEC uPD96050 data ROM for ST011. No HLE fallback"
|
||||||
source_ref: "sfc/cartridge/load.cpp:599-601"
|
source_ref: "sfc/cartridge/load.cpp:599-601"
|
||||||
@@ -131,13 +159,17 @@ files:
|
|||||||
# No HLE fallback exists
|
# No HLE fallback exists
|
||||||
|
|
||||||
- name: "st018.program.rom"
|
- name: "st018.program.rom"
|
||||||
size: 131072 # 0x20000 (128 KB)
|
system: nintendo-snes
|
||||||
|
size: 131072
|
||||||
|
validation: [size]
|
||||||
required: true
|
required: true
|
||||||
note: "ARM6 program ROM for ST018 (Hayazashi Nidan Morita Shougi). No HLE fallback"
|
note: "ARM6 program ROM for ST018 (Hayazashi Nidan Morita Shougi). No HLE fallback"
|
||||||
source_ref: "sfc/cartridge/load.cpp:379-385, armdsp/armdsp.hpp:31, heuristics/super-famicom.cpp:580"
|
source_ref: "sfc/cartridge/load.cpp:379-385, armdsp/armdsp.hpp:31, heuristics/super-famicom.cpp:580"
|
||||||
|
|
||||||
- name: "st018.data.rom"
|
- name: "st018.data.rom"
|
||||||
size: 32768 # 0x8000 (32 KB)
|
system: nintendo-snes
|
||||||
|
size: 32768
|
||||||
|
validation: [size]
|
||||||
required: true
|
required: true
|
||||||
note: "ARM6 data ROM for ST018. No HLE fallback"
|
note: "ARM6 data ROM for ST018. No HLE fallback"
|
||||||
source_ref: "sfc/cartridge/load.cpp:387-393, armdsp/armdsp.hpp:32"
|
source_ref: "sfc/cartridge/load.cpp:387-393, armdsp/armdsp.hpp:32"
|
||||||
@@ -148,11 +180,16 @@ files:
|
|||||||
# Built-in staticDataROM fallback also present for LLE when file missing
|
# Built-in staticDataROM fallback also present for LLE when file missing
|
||||||
|
|
||||||
- name: "cx4.data.rom"
|
- name: "cx4.data.rom"
|
||||||
size: 3072 # 0xC00
|
system: nintendo-snes
|
||||||
|
size: 3072
|
||||||
|
sha1: a002f4efba42775a31185d443f3ed1790b0e949a
|
||||||
|
md5: 037ac4296b6b6a5c47c440188d3c72e3
|
||||||
|
crc32: b6e76a6a
|
||||||
|
validation: [size]
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
note: "Hitachi HG51BS169 data ROM for Cx4 (Mega Man X2/X3). HLE fallback and built-in static ROM available"
|
note: "Hitachi HG51BS169 data ROM for Cx4 (Mega Man X2/X3). HLE fallback and built-in static ROM available"
|
||||||
source_ref: "sfc/cartridge/load.cpp:444-456, hitachidsp/hitachidsp.hpp:49, heuristics/super-famicom.cpp:597"
|
source_ref: "sfc/cartridge/load.cpp:444-456, hitachidsp/hitachidsp.hpp:49, heuristics/super-famicom.cpp:597, hitachidsp/data-rom.cpp:3 (staticDataROM[3072])"
|
||||||
|
|
||||||
# -- Super Game Boy cartridge ROM --
|
# -- Super Game Boy cartridge ROM --
|
||||||
# The SGB boot ROMs (256 bytes each) are embedded in icd/boot-roms.cpp.
|
# The SGB boot ROMs (256 bytes each) are embedded in icd/boot-roms.cpp.
|
||||||
@@ -160,23 +197,26 @@ files:
|
|||||||
# Core option bsnes_sgb_bios selects between SGB1.sfc and SGB2.sfc.
|
# Core option bsnes_sgb_bios selects between SGB1.sfc and SGB2.sfc.
|
||||||
|
|
||||||
- name: "SGB1.sfc"
|
- name: "SGB1.sfc"
|
||||||
|
system: nintendo-super-game-boy
|
||||||
required: false
|
required: false
|
||||||
note: "Super Game Boy 1 cartridge ROM. Needed to play Game Boy games via SGB mode"
|
note: "Super Game Boy 1 cartridge ROM, loaded when playing .gb/.gbc via SGB mode"
|
||||||
source_ref: "target-libretro/libretro.cpp:689,933, target-libretro/libretro_core_options.h:689"
|
source_ref: "target-libretro/libretro.cpp:926-935 (system_dir + sgb_bios), libretro.cpp:509 (core option bsnes_sgb_bios)"
|
||||||
|
|
||||||
- name: "SGB2.sfc"
|
- name: "SGB2.sfc"
|
||||||
|
system: nintendo-super-game-boy
|
||||||
required: false
|
required: false
|
||||||
note: "Super Game Boy 2 cartridge ROM. Uses dedicated oscillator for accurate GB speed"
|
note: "Super Game Boy 2 cartridge ROM, uses dedicated oscillator for accurate GB speed"
|
||||||
source_ref: "target-libretro/libretro.cpp:690,933, target-libretro/libretro_core_options.h:690"
|
source_ref: "target-libretro/libretro.cpp:926-935 (system_dir + sgb_bios), libretro.cpp:509 (core option bsnes_sgb_bios)"
|
||||||
|
|
||||||
# -- BS-X Satellaview BIOS --
|
# -- BS-X Satellaview BIOS --
|
||||||
# Required for loading .bs (BS Memory) format games.
|
# Required for loading .bs (BS Memory) format games.
|
||||||
# Hardcoded filename in libretro.cpp.
|
# Hardcoded filename in libretro.cpp.
|
||||||
|
|
||||||
- name: "BS-X.bin"
|
- name: "BS-X.bin"
|
||||||
|
system: nintendo-satellaview
|
||||||
required: true
|
required: true
|
||||||
note: "BS-X Satellaview BIOS ROM. Required for .bs games"
|
note: "BS-X Satellaview BIOS ROM, loaded from system_dir when running .bs games"
|
||||||
source_ref: "target-libretro/libretro.cpp:948"
|
source_ref: "target-libretro/libretro.cpp:944-951 (system_dir + BS-X.bin hardcoded, .bs extension branch)"
|
||||||
|
|
||||||
notes:
|
notes:
|
||||||
hle_available: true
|
hle_available: true
|
||||||
|
|||||||
@@ -35,9 +35,10 @@ files:
|
|||||||
system: nintendo-3ds
|
system: nintendo-3ds
|
||||||
description: "ARM9 bootrom"
|
description: "ARM9 bootrom"
|
||||||
required: false
|
required: false
|
||||||
|
size: 65536
|
||||||
validation: [size]
|
validation: [size]
|
||||||
source_ref: "src/core/hw/aes/key.cpp:162-172 LoadBootromKeys(), src/core/hw/rsa/rsa.cpp:55-65 InitSlots()"
|
source_ref: "src/core/hw/aes/key.cpp:162-172 LoadBootromKeys(), src/core/hw/rsa/rsa.cpp:55-65 InitSlots()"
|
||||||
note: "expected size 65536 bytes, provides AES and RSA keys"
|
note: "provides AES and RSA keys"
|
||||||
|
|
||||||
- name: shared_font.bin
|
- name: shared_font.bin
|
||||||
path: "Citra/sysdata/shared_font.bin"
|
path: "Citra/sysdata/shared_font.bin"
|
||||||
|
|||||||
@@ -720,7 +720,8 @@ files:
|
|||||||
# MSX (machine_name: "MSX")
|
# MSX (machine_name: "MSX")
|
||||||
# -------------------------------------------------------
|
# -------------------------------------------------------
|
||||||
- name: msx.rom
|
- name: msx.rom
|
||||||
path: MSX/msx.rom
|
aliases: [MSX.ROM]
|
||||||
|
path: MSX/MSX.ROM
|
||||||
description: "Generic MSX BIOS"
|
description: "Generic MSX BIOS"
|
||||||
size: 32768
|
size: 32768
|
||||||
crc32: "94ee12f3"
|
crc32: "94ee12f3"
|
||||||
@@ -768,7 +769,8 @@ files:
|
|||||||
source_ref: "Machines/Utility/ROMCatalogue.cpp:763-769"
|
source_ref: "Machines/Utility/ROMCatalogue.cpp:763-769"
|
||||||
|
|
||||||
- name: msx2.rom
|
- name: msx2.rom
|
||||||
path: MSX/msx2.rom
|
aliases: [MSX2.ROM]
|
||||||
|
path: MSX/MSX2.ROM
|
||||||
description: "Generic MSX2 BIOS"
|
description: "Generic MSX2 BIOS"
|
||||||
size: 32768
|
size: 32768
|
||||||
crc32: "6cdaf3a5"
|
crc32: "6cdaf3a5"
|
||||||
@@ -778,7 +780,8 @@ files:
|
|||||||
source_ref: "Machines/Utility/ROMCatalogue.cpp:771-778"
|
source_ref: "Machines/Utility/ROMCatalogue.cpp:771-778"
|
||||||
|
|
||||||
- name: msx2ext.rom
|
- name: msx2ext.rom
|
||||||
path: MSX/msx2ext.rom
|
aliases: [MSX2EXT.ROM]
|
||||||
|
path: MSX/MSX2EXT.ROM
|
||||||
description: "MSX2 extension ROM"
|
description: "MSX2 extension ROM"
|
||||||
size: 16384
|
size: 16384
|
||||||
crc32: "66237ecf"
|
crc32: "66237ecf"
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ files:
|
|||||||
|
|
||||||
- name: "cromwell_1024.bin"
|
- name: "cromwell_1024.bin"
|
||||||
path: "cromwell_1024.bin"
|
path: "cromwell_1024.bin"
|
||||||
|
size: 1048576
|
||||||
validation: [size]
|
validation: [size]
|
||||||
required: true
|
required: true
|
||||||
note: >
|
note: >
|
||||||
|
|||||||
@@ -238,6 +238,7 @@ files:
|
|||||||
- name: CARTS.CRC
|
- name: CARTS.CRC
|
||||||
required: false
|
required: false
|
||||||
bundled: false
|
bundled: false
|
||||||
|
unsourceable: "dead legacy code path, never created or distributed, replaced by CARTS.SHA"
|
||||||
note: "CRC database for cartridge identification and mapper detection. Tried first, before CARTS.SHA (fMSX/MSX.c:2697)."
|
note: "CRC database for cartridge identification and mapper detection. Tried first, before CARTS.SHA (fMSX/MSX.c:2697)."
|
||||||
|
|
||||||
- name: CARTS.SHA
|
- name: CARTS.SHA
|
||||||
|
|||||||
@@ -244,7 +244,7 @@ files:
|
|||||||
- name: "fuse/128p-0.rom"
|
- name: "fuse/128p-0.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: true
|
required: true
|
||||||
md5: ""
|
|
||||||
size: 16384
|
size: 16384
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Pentagon 128K/512K/1024 ROM 0. Required for Pentagon machines."
|
note: "Pentagon 128K/512K/1024 ROM 0. Required for Pentagon machines."
|
||||||
@@ -253,7 +253,7 @@ files:
|
|||||||
- name: "fuse/128p-1.rom"
|
- name: "fuse/128p-1.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: true
|
required: true
|
||||||
md5: ""
|
|
||||||
size: 16384
|
size: 16384
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Pentagon 128K/512K/1024 ROM 1. Required for Pentagon machines."
|
note: "Pentagon 128K/512K/1024 ROM 1. Required for Pentagon machines."
|
||||||
@@ -262,7 +262,7 @@ files:
|
|||||||
- name: "fuse/trdos.rom"
|
- name: "fuse/trdos.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: true
|
required: true
|
||||||
md5: ""
|
|
||||||
size: 16384
|
size: 16384
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "TR-DOS ROM (Beta 128 disk interface). Used by Pentagon and Scorpion."
|
note: "TR-DOS ROM (Beta 128 disk interface). Used by Pentagon and Scorpion."
|
||||||
@@ -271,7 +271,7 @@ files:
|
|||||||
- name: "fuse/gluck.rom"
|
- name: "fuse/gluck.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: true
|
required: true
|
||||||
md5: ""
|
|
||||||
size: 16384
|
size: 16384
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Gluck ROM. Required for Pentagon 512K and 1024."
|
note: "Gluck ROM. Required for Pentagon 512K and 1024."
|
||||||
@@ -281,7 +281,7 @@ files:
|
|||||||
- name: "fuse/256s-0.rom"
|
- name: "fuse/256s-0.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: true
|
required: true
|
||||||
md5: ""
|
|
||||||
size: 16384
|
size: 16384
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Scorpion 256K ROM 0. Required for Scorpion machine."
|
note: "Scorpion 256K ROM 0. Required for Scorpion machine."
|
||||||
@@ -290,7 +290,7 @@ files:
|
|||||||
- name: "fuse/256s-1.rom"
|
- name: "fuse/256s-1.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: true
|
required: true
|
||||||
md5: ""
|
|
||||||
size: 16384
|
size: 16384
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Scorpion 256K ROM 1. Required for Scorpion machine."
|
note: "Scorpion 256K ROM 1. Required for Scorpion machine."
|
||||||
@@ -299,7 +299,7 @@ files:
|
|||||||
- name: "fuse/256s-2.rom"
|
- name: "fuse/256s-2.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: true
|
required: true
|
||||||
md5: ""
|
|
||||||
size: 16384
|
size: 16384
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Scorpion 256K ROM 2. Required for Scorpion machine."
|
note: "Scorpion 256K ROM 2. Required for Scorpion machine."
|
||||||
@@ -308,7 +308,7 @@ files:
|
|||||||
- name: "fuse/256s-3.rom"
|
- name: "fuse/256s-3.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: true
|
required: true
|
||||||
md5: ""
|
|
||||||
size: 16384
|
size: 16384
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Scorpion 256K ROM 3 (TR-DOS). Required for Scorpion machine."
|
note: "Scorpion 256K ROM 3 (TR-DOS). Required for Scorpion machine."
|
||||||
@@ -318,7 +318,7 @@ files:
|
|||||||
- name: "fuse/if1-2.rom"
|
- name: "fuse/if1-2.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: false
|
required: false
|
||||||
md5: ""
|
|
||||||
size: 8192
|
size: 8192
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Interface 1 ROM (edition 2). Loaded by peripherals/if1.c:403."
|
note: "Interface 1 ROM (edition 2). Loaded by peripherals/if1.c:403."
|
||||||
@@ -347,7 +347,7 @@ files:
|
|||||||
- name: "fuse/didaktik80.rom"
|
- name: "fuse/didaktik80.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: false
|
required: false
|
||||||
md5: ""
|
|
||||||
size: 14336
|
size: 14336
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Didaktik 80 disk interface ROM. Not embedded."
|
note: "Didaktik 80 disk interface ROM. Not embedded."
|
||||||
@@ -356,7 +356,7 @@ files:
|
|||||||
- name: "fuse/opus.rom"
|
- name: "fuse/opus.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: false
|
required: false
|
||||||
md5: ""
|
|
||||||
size: 8192
|
size: 8192
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Opus Discovery disk interface ROM. Not embedded."
|
note: "Opus Discovery disk interface ROM. Not embedded."
|
||||||
@@ -365,7 +365,7 @@ files:
|
|||||||
- name: "fuse/mf1.rom"
|
- name: "fuse/mf1.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: false
|
required: false
|
||||||
md5: ""
|
|
||||||
size: 8192
|
size: 8192
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Multiface 1 ROM. Not embedded."
|
note: "Multiface 1 ROM. Not embedded."
|
||||||
@@ -374,7 +374,7 @@ files:
|
|||||||
- name: "fuse/mf128.rom"
|
- name: "fuse/mf128.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: false
|
required: false
|
||||||
md5: ""
|
|
||||||
size: 8192
|
size: 8192
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Multiface 128 ROM. Not embedded."
|
note: "Multiface 128 ROM. Not embedded."
|
||||||
@@ -383,7 +383,7 @@ files:
|
|||||||
- name: "fuse/mf3.rom"
|
- name: "fuse/mf3.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: false
|
required: false
|
||||||
md5: ""
|
|
||||||
size: 8192
|
size: 8192
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Multiface 3 ROM. Not embedded."
|
note: "Multiface 3 ROM. Not embedded."
|
||||||
@@ -402,7 +402,7 @@ files:
|
|||||||
- name: "fuse/ttx2000s.rom"
|
- name: "fuse/ttx2000s.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: false
|
required: false
|
||||||
md5: ""
|
|
||||||
size: 8192
|
size: 8192
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "TTX2000S teletext adapter ROM. Not embedded."
|
note: "TTX2000S teletext adapter ROM. Not embedded."
|
||||||
@@ -411,7 +411,7 @@ files:
|
|||||||
- name: "fuse/usource.rom"
|
- name: "fuse/usource.rom"
|
||||||
system: sinclair-zxspectrum
|
system: sinclair-zxspectrum
|
||||||
required: false
|
required: false
|
||||||
md5: ""
|
|
||||||
size: 8192
|
size: 8192
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Currah uSource ROM. Not embedded."
|
note: "Currah uSource ROM. Not embedded."
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 4096
|
size: 4096
|
||||||
validation: {core: [size], upstream: [size, crc32]}
|
validation: {core: [size], upstream: [size, crc32]}
|
||||||
crc32: "0x2ab23573"
|
crc32: 2ab23573
|
||||||
source_ref: "src/NDS.h:196, src/NDS.cpp:467-477, src/frontend/Util_ROM.cpp:99-111"
|
source_ref: "src/NDS.h:196, src/NDS.cpp:467-477, src/frontend/Util_ROM.cpp:99-111"
|
||||||
note: "FreeBIOS fallback (src/FreeBIOS.h); native needed for Key1 cartridge crypto"
|
note: "FreeBIOS fallback (src/FreeBIOS.h); native needed for Key1 cartridge crypto"
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 16384
|
size: 16384
|
||||||
validation: {core: [size], upstream: [size, crc32]}
|
validation: {core: [size], upstream: [size, crc32]}
|
||||||
crc32: "0x1280f0d5"
|
crc32: 1280f0d5
|
||||||
source_ref: "src/NDS.h:197, src/NDS.cpp:482-492, src/frontend/Util_ROM.cpp:117-131"
|
source_ref: "src/NDS.h:197, src/NDS.cpp:482-492, src/frontend/Util_ROM.cpp:117-131"
|
||||||
note: "FreeBIOS fallback (src/FreeBIOS.h); native needed for Key1 init at offset 0x0030"
|
note: "FreeBIOS fallback (src/FreeBIOS.h); native needed for Key1 init at offset 0x0030"
|
||||||
|
|
||||||
@@ -44,6 +44,8 @@ files:
|
|||||||
description: "NDS firmware image"
|
description: "NDS firmware image"
|
||||||
required: false
|
required: false
|
||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
|
min_size: 262144
|
||||||
|
max_size: 524288
|
||||||
validation: [size]
|
validation: [size]
|
||||||
source_ref: "src/SPI.cpp:192-211, src/frontend/Util_ROM.cpp:174-195"
|
source_ref: "src/SPI.cpp:192-211, src/frontend/Util_ROM.cpp:174-195"
|
||||||
note: "Generated 128KB firmware as fallback; native must be 256KB or 512KB for boot"
|
note: "Generated 128KB firmware as fallback; native must be 256KB or 512KB for boot"
|
||||||
@@ -55,7 +57,7 @@ files:
|
|||||||
required: true
|
required: true
|
||||||
size: 65536
|
size: 65536
|
||||||
validation: {core: [size], upstream: [size, crc32]}
|
validation: {core: [size], upstream: [size, crc32]}
|
||||||
crc32: "0xBAE84F6C"
|
crc32: bae84f6c
|
||||||
source_ref: "src/DSi.h:33, src/DSi.cpp:587-599, src/frontend/Util_ROM.cpp:145-156"
|
source_ref: "src/DSi.h:33, src/DSi.cpp:587-599, src/frontend/Util_ROM.cpp:145-156"
|
||||||
|
|
||||||
- name: dsi_bios7.bin
|
- name: dsi_bios7.bin
|
||||||
@@ -64,7 +66,7 @@ files:
|
|||||||
required: true
|
required: true
|
||||||
size: 65536
|
size: 65536
|
||||||
validation: {core: [size], upstream: [size, crc32]}
|
validation: {core: [size], upstream: [size, crc32]}
|
||||||
crc32: "0x4316CC42"
|
crc32: 4316cc42
|
||||||
source_ref: "src/DSi.h:34, src/DSi.cpp:604-620, src/frontend/Util_ROM.cpp:158-170"
|
source_ref: "src/DSi.h:34, src/DSi.cpp:604-620, src/frontend/Util_ROM.cpp:158-170"
|
||||||
note: "Contains eMMC key-Y at offset 0x8308 for NAND init"
|
note: "Contains eMMC key-Y at offset 0x8308 for NAND init"
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 16384
|
size: 16384
|
||||||
validation: [size]
|
validation: [size]
|
||||||
crc32: "0x1280f0d5"
|
crc32: 1280f0d5
|
||||||
source_ref: "src/libretro/config/console.cpp:219, melonDS:src/MemConstants.h:31,36"
|
source_ref: "src/libretro/config/console.cpp:219, melonDS:src/MemConstants.h:31,36"
|
||||||
|
|
||||||
- name: bios9.bin
|
- name: bios9.bin
|
||||||
@@ -37,7 +37,7 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
size: 4096
|
size: 4096
|
||||||
validation: [size]
|
validation: [size]
|
||||||
crc32: "0x2ab23573"
|
crc32: 2ab23573
|
||||||
source_ref: "src/libretro/config/console.cpp:220, melonDS:src/MemConstants.h:30,37"
|
source_ref: "src/libretro/config/console.cpp:220, melonDS:src/MemConstants.h:30,37"
|
||||||
|
|
||||||
- name: firmware.bin
|
- name: firmware.bin
|
||||||
@@ -55,7 +55,7 @@ files:
|
|||||||
required: true
|
required: true
|
||||||
size: 65536
|
size: 65536
|
||||||
validation: [size]
|
validation: [size]
|
||||||
crc32: "0x4316CC42"
|
crc32: 4316cc42
|
||||||
source_ref: "src/libretro/config/console.cpp:333, melonDS:src/MemConstants.h:32,44"
|
source_ref: "src/libretro/config/console.cpp:333, melonDS:src/MemConstants.h:32,44"
|
||||||
note: "Contains eMMC key-Y at offset 0x8308 for NAND init"
|
note: "Contains eMMC key-Y at offset 0x8308 for NAND init"
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ files:
|
|||||||
required: true
|
required: true
|
||||||
size: 65536
|
size: 65536
|
||||||
validation: [size]
|
validation: [size]
|
||||||
crc32: "0xBAE84F6C"
|
crc32: bae84f6c
|
||||||
source_ref: "src/libretro/config/console.cpp:338, melonDS:src/MemConstants.h:32,45"
|
source_ref: "src/libretro/config/console.cpp:338, melonDS:src/MemConstants.h:32,45"
|
||||||
|
|
||||||
- name: dsi_firmware.bin
|
- name: dsi_firmware.bin
|
||||||
|
|||||||
@@ -65,5 +65,7 @@ files:
|
|||||||
description: "External NES color palette"
|
description: "External NES color palette"
|
||||||
required: false
|
required: false
|
||||||
source_ref: "Libretro/libretro.cpp:301-323 (load_custom_palette), Libretro/libretro.cpp:405-406 (called when mesen_palette == Custom)"
|
source_ref: "Libretro/libretro.cpp:301-323 (load_custom_palette), Libretro/libretro.cpp:405-406 (called when mesen_palette == Custom)"
|
||||||
|
min_size: 192
|
||||||
|
max_size: 1536
|
||||||
validation: [size]
|
validation: [size]
|
||||||
note: "Loaded when mesen_palette core option is Custom. Accepts exactly 192 bytes (64 RGB triplets) or 1536 bytes (512 entries for emphasis combos). Falls back to built-in default palette if size doesn't match."
|
note: "Accepts 192 bytes (64 RGB triplets) or 1536 bytes (512 emphasis combos). Falls back to built-in default if size doesn't match."
|
||||||
|
|||||||
@@ -186,6 +186,7 @@ files:
|
|||||||
path: "np2kai/gpib.rom"
|
path: "np2kai/gpib.rom"
|
||||||
size: 8192
|
size: 8192
|
||||||
required: false
|
required: false
|
||||||
|
unsourceable: "never publicly dumped, GP-IB emulation is stub code (source comment: not implemented)"
|
||||||
note: >
|
note: >
|
||||||
GP-IB interface BIOS ROM (8 KB). If missing, GP-IB emulation
|
GP-IB interface BIOS ROM (8 KB). If missing, GP-IB emulation
|
||||||
is disabled entirely.
|
is disabled entirely.
|
||||||
@@ -198,6 +199,8 @@ files:
|
|||||||
- name: "key.txt"
|
- name: "key.txt"
|
||||||
path: "np2kai/key.txt"
|
path: "np2kai/key.txt"
|
||||||
required: false
|
required: false
|
||||||
|
hle_fallback: true
|
||||||
|
unsourceable: "user-created keyboard config, no default distributed in any NP2kai release"
|
||||||
note: >
|
note: >
|
||||||
Keyboard remapping configuration (text file). User-created file
|
Keyboard remapping configuration (text file). User-created file
|
||||||
for custom keyboard layout. The core uses built-in defaults if absent.
|
for custom keyboard layout. The core uses built-in defaults if absent.
|
||||||
|
|||||||
@@ -81,5 +81,6 @@ files:
|
|||||||
system: cave-story
|
system: cave-story
|
||||||
description: "Tile attribute lookup table (maps tile codes to collision/behavior attributes)"
|
description: "Tile attribute lookup table (maps tile codes to collision/behavior attributes)"
|
||||||
required: false
|
required: false
|
||||||
|
hle_fallback: true
|
||||||
source_ref: "map.cpp:290-303 (loaded at init, hardcoded default if missing)"
|
source_ref: "map.cpp:290-303 (loaded at init, hardcoded default if missing)"
|
||||||
note: "Not part of the freeware distribution. Generated by the standalone NXEngine extraction tool. The libretro core has hardcoded defaults in map.cpp:30."
|
note: "Not part of the freeware distribution. Generated by the standalone NXEngine extraction tool. The libretro core has hardcoded defaults in map.cpp:30."
|
||||||
|
|||||||
@@ -247,6 +247,7 @@ files:
|
|||||||
- name: "WHDLoad.key"
|
- name: "WHDLoad.key"
|
||||||
system: commodore-amiga
|
system: commodore-amiga
|
||||||
required: false
|
required: false
|
||||||
|
unsourceable: "per-user signed registration key, never distributed generically, WHDLoad free since v18.2"
|
||||||
note: "WHDLoad license key. Copied to saves/WHDLoad/L/ for registered WHDLoad use."
|
note: "WHDLoad license key. Copied to saves/WHDLoad/L/ for registered WHDLoad use."
|
||||||
source_ref: "libretro/libretro-core.c:5985-5998"
|
source_ref: "libretro/libretro-core.c:5985-5998"
|
||||||
|
|
||||||
|
|||||||
@@ -251,6 +251,7 @@ files:
|
|||||||
- name: "WHDLoad.key"
|
- name: "WHDLoad.key"
|
||||||
system: commodore-amiga
|
system: commodore-amiga
|
||||||
required: false
|
required: false
|
||||||
|
unsourceable: "per-user signed registration key, never distributed generically, WHDLoad free since v18.2"
|
||||||
note: "WHDLoad license key. Copied to saves/WHDLoad/L/ for registered WHDLoad use."
|
note: "WHDLoad license key. Copied to saves/WHDLoad/L/ for registered WHDLoad use."
|
||||||
source_ref: "libretro/libretro-core.c:5903-5916"
|
source_ref: "libretro/libretro-core.c:5903-5916"
|
||||||
|
|
||||||
|
|||||||
@@ -533,7 +533,7 @@ files:
|
|||||||
|
|
||||||
- name: "U-Boot LEON3"
|
- name: "U-Boot LEON3"
|
||||||
path: "qemu/u-boot.bin"
|
path: "qemu/u-boot.bin"
|
||||||
sha1: ""
|
|
||||||
required: false
|
required: false
|
||||||
note: "U-Boot for LEON3 SPARC board. Not shipped with QEMU, user-supplied."
|
note: "U-Boot for LEON3 SPARC board. Not shipped with QEMU, user-supplied."
|
||||||
source_ref: "hw/sparc/leon3.c:53"
|
source_ref: "hw/sparc/leon3.c:53"
|
||||||
@@ -611,28 +611,28 @@ files:
|
|||||||
# ========================================================
|
# ========================================================
|
||||||
- name: "MIPS BIOS (big-endian)"
|
- name: "MIPS BIOS (big-endian)"
|
||||||
path: "qemu/mips_bios.bin"
|
path: "qemu/mips_bios.bin"
|
||||||
sha1: ""
|
|
||||||
required: false
|
required: false
|
||||||
note: "Default BIOS for big-endian MIPS machines (Malta, MIPSsim, Jazz). Not shipped with QEMU."
|
note: "Default BIOS for big-endian MIPS machines (Malta, MIPSsim, Jazz). Not shipped with QEMU."
|
||||||
source_ref: "hw/mips/malta.c:97"
|
source_ref: "hw/mips/malta.c:97"
|
||||||
|
|
||||||
- name: "MIPS BIOS (little-endian)"
|
- name: "MIPS BIOS (little-endian)"
|
||||||
path: "qemu/mipsel_bios.bin"
|
path: "qemu/mipsel_bios.bin"
|
||||||
sha1: ""
|
|
||||||
required: false
|
required: false
|
||||||
note: "Default BIOS for little-endian MIPS machines (Malta, MIPSsim, Jazz). Not shipped with QEMU."
|
note: "Default BIOS for little-endian MIPS machines (Malta, MIPSsim, Jazz). Not shipped with QEMU."
|
||||||
source_ref: "hw/mips/malta.c:99"
|
source_ref: "hw/mips/malta.c:99"
|
||||||
|
|
||||||
- name: "Loongson3 BIOS"
|
- name: "Loongson3 BIOS"
|
||||||
path: "qemu/bios_loongson3.bin"
|
path: "qemu/bios_loongson3.bin"
|
||||||
sha1: ""
|
|
||||||
required: false
|
required: false
|
||||||
note: "Default BIOS for Loongson3 virtual MIPS machine. Not shipped with QEMU."
|
note: "Default BIOS for Loongson3 virtual MIPS machine. Not shipped with QEMU."
|
||||||
source_ref: "hw/mips/loongson3_virt.c:63"
|
source_ref: "hw/mips/loongson3_virt.c:63"
|
||||||
|
|
||||||
- name: "PMON Fuloong2e"
|
- name: "PMON Fuloong2e"
|
||||||
path: "qemu/pmon_2e.bin"
|
path: "qemu/pmon_2e.bin"
|
||||||
sha1: ""
|
|
||||||
required: false
|
required: false
|
||||||
note: "PMON monitor for Fuloong2e MIPS board. Not shipped with QEMU."
|
note: "PMON monitor for Fuloong2e MIPS board. Not shipped with QEMU."
|
||||||
source_ref: "hw/mips/fuloong2e.c:58"
|
source_ref: "hw/mips/fuloong2e.c:58"
|
||||||
@@ -642,7 +642,7 @@ files:
|
|||||||
# ========================================================
|
# ========================================================
|
||||||
- name: "Macintosh ROM"
|
- name: "Macintosh ROM"
|
||||||
path: "qemu/MacROM.bin"
|
path: "qemu/MacROM.bin"
|
||||||
sha1: ""
|
|
||||||
required: false
|
required: false
|
||||||
note: "Apple Macintosh ROM for Quadra 800 emulation. Not shipped with QEMU."
|
note: "Apple Macintosh ROM for Quadra 800 emulation. Not shipped with QEMU."
|
||||||
source_ref: "hw/m68k/q800.c:62"
|
source_ref: "hw/m68k/q800.c:62"
|
||||||
@@ -652,7 +652,7 @@ files:
|
|||||||
# ========================================================
|
# ========================================================
|
||||||
- name: "Canon A1100 ROM"
|
- name: "Canon A1100 ROM"
|
||||||
path: "qemu/canon-a1100-rom1.bin"
|
path: "qemu/canon-a1100-rom1.bin"
|
||||||
sha1: ""
|
|
||||||
required: false
|
required: false
|
||||||
note: "Canon PowerShot A1100 IS DIGIC camera ROM. Not shipped with QEMU."
|
note: "Canon PowerShot A1100 IS DIGIC camera ROM. Not shipped with QEMU."
|
||||||
source_ref: "hw/arm/digic_boards.c:131"
|
source_ref: "hw/arm/digic_boards.c:131"
|
||||||
@@ -702,7 +702,7 @@ files:
|
|||||||
|
|
||||||
- name: "Virtex ML507 DTB (PPC)"
|
- name: "Virtex ML507 DTB (PPC)"
|
||||||
path: "qemu/virtex-ml507.dtb"
|
path: "qemu/virtex-ml507.dtb"
|
||||||
sha1: ""
|
|
||||||
required: false
|
required: false
|
||||||
note: "Device tree blob for Xilinx Virtex ML507 PowerPC board. Not shipped with QEMU."
|
note: "Device tree blob for Xilinx Virtex ML507 PowerPC board. Not shipped with QEMU."
|
||||||
source_ref: "hw/ppc/virtex_ml507.c:148"
|
source_ref: "hw/ppc/virtex_ml507.c:148"
|
||||||
|
|||||||
@@ -24,36 +24,43 @@ notes: |
|
|||||||
|
|
||||||
files:
|
files:
|
||||||
- name: kvs1.wav
|
- name: kvs1.wav
|
||||||
|
aliases: [KVS1.WAV]
|
||||||
description: "KidVid Voice Module audio tape 1 (Smurfs Save the Day)"
|
description: "KidVid Voice Module audio tape 1 (Smurfs Save the Day)"
|
||||||
required: false
|
required: false
|
||||||
category: game_data
|
category: game_data
|
||||||
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
|
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
|
||||||
- name: kvs2.wav
|
- name: kvs2.wav
|
||||||
|
aliases: [KVS2.WAV]
|
||||||
description: "KidVid Voice Module audio tape 2 (Smurfs Save the Day)"
|
description: "KidVid Voice Module audio tape 2 (Smurfs Save the Day)"
|
||||||
required: false
|
required: false
|
||||||
category: game_data
|
category: game_data
|
||||||
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
|
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
|
||||||
- name: kvs3.wav
|
- name: kvs3.wav
|
||||||
|
aliases: [KVS3.WAV]
|
||||||
description: "KidVid Voice Module audio tape 3 (Smurfs Save the Day)"
|
description: "KidVid Voice Module audio tape 3 (Smurfs Save the Day)"
|
||||||
required: false
|
required: false
|
||||||
category: game_data
|
category: game_data
|
||||||
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
|
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
|
||||||
- name: kvb1.wav
|
- name: kvb1.wav
|
||||||
|
aliases: [KVB1.WAV]
|
||||||
description: "KidVid Voice Module audio tape 1 (Berenstain Bears)"
|
description: "KidVid Voice Module audio tape 1 (Berenstain Bears)"
|
||||||
required: false
|
required: false
|
||||||
category: game_data
|
category: game_data
|
||||||
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
|
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
|
||||||
- name: kvb2.wav
|
- name: kvb2.wav
|
||||||
|
aliases: [KVB2.WAV]
|
||||||
description: "KidVid Voice Module audio tape 2 (Berenstain Bears)"
|
description: "KidVid Voice Module audio tape 2 (Berenstain Bears)"
|
||||||
required: false
|
required: false
|
||||||
category: game_data
|
category: game_data
|
||||||
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
|
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
|
||||||
- name: kvb3.wav
|
- name: kvb3.wav
|
||||||
|
aliases: [KVB3.WAV]
|
||||||
description: "KidVid Voice Module audio tape 3 (Berenstain Bears)"
|
description: "KidVid Voice Module audio tape 3 (Berenstain Bears)"
|
||||||
required: false
|
required: false
|
||||||
category: game_data
|
category: game_data
|
||||||
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
|
source_ref: "stella/src/emucore/KidVid.cxx:167,182"
|
||||||
- name: kvshared.wav
|
- name: kvshared.wav
|
||||||
|
aliases: [KVSHARED.WAV]
|
||||||
description: "KidVid Voice Module shared audio samples"
|
description: "KidVid Voice Module shared audio samples"
|
||||||
required: false
|
required: false
|
||||||
category: game_data
|
category: game_data
|
||||||
|
|||||||
@@ -70,11 +70,12 @@ files:
|
|||||||
aliases: []
|
aliases: []
|
||||||
|
|
||||||
- name: "ps1_rom.bin"
|
- name: "ps1_rom.bin"
|
||||||
description: "PS3 (v5.0 06-23-03 A)"
|
description: "PS3 embedded PS1 BIOS (v5.0 06-23-03 A)"
|
||||||
region: "Auto"
|
region: "Auto"
|
||||||
required: false
|
required: false
|
||||||
md5: "81bbe60ba7a3d1cea1d48c14cbcc647b"
|
md5: "81bbe60ba7a3d1cea1d48c14cbcc647b"
|
||||||
size: 4089584
|
size: [524288, 4194304, 4089584]
|
||||||
validation: [size, md5]
|
validation: [size, md5]
|
||||||
source_ref: "src/core/bios.cpp:70"
|
note: "Accepts PS1 (512KB), PS2 (4MB), and PS3 (0x3E66F0) sizes. Only first 512KB used."
|
||||||
|
source_ref: "src/core/bios.h:9, src/core/bios.cpp:70,83"
|
||||||
aliases: []
|
aliases: []
|
||||||
|
|||||||
@@ -86,6 +86,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 79015323128650c742a3694c9429aa91f355905e
|
||||||
|
md5: 57af4ae21d4b705c2991d98ed5c1f7b8
|
||||||
|
crc32: f833d117
|
||||||
note: "C64 BASIC V2 ROM. Embedded in core."
|
note: "C64 BASIC V2 ROM. Embedded in core."
|
||||||
source_ref: "vice/src/c64/c64rom.h:31"
|
source_ref: "vice/src/c64/c64rom.h:31"
|
||||||
|
|
||||||
@@ -95,6 +98,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 1d503e56df85a62fee696e7618dc5b4e781df1bb
|
||||||
|
md5: 39065497630802346bce17963f13c092
|
||||||
|
crc32: dbe3e7c7
|
||||||
note: "C64 Kernal Rev 3 (default). Embedded in core."
|
note: "C64 Kernal Rev 3 (default). Embedded in core."
|
||||||
source_ref: "vice/src/c64/c64rom.h:52"
|
source_ref: "vice/src/c64/c64rom.h:52"
|
||||||
|
|
||||||
@@ -104,6 +110,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 87cc04d61fc748b82df09856847bb5c2754a2033
|
||||||
|
md5: 1ae0ea224f2b291dafa2c20b990bb7d4
|
||||||
|
crc32: dce782fa
|
||||||
note: "C64 Kernal Rev 1. Embedded in core."
|
note: "C64 Kernal Rev 1. Embedded in core."
|
||||||
source_ref: "vice/src/c64/c64rom.h:50"
|
source_ref: "vice/src/c64/c64rom.h:50"
|
||||||
|
|
||||||
@@ -113,6 +122,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 0e2e4ee3f2d41f00bed72f9ab588b83e306fdb13
|
||||||
|
md5: 7360b296d64e18b88f6cf52289fd99a1
|
||||||
|
crc32: a5c687b3
|
||||||
note: "C64 Kernal Rev 2. Embedded in core."
|
note: "C64 Kernal Rev 2. Embedded in core."
|
||||||
source_ref: "vice/src/c64/c64rom.h:51"
|
source_ref: "vice/src/c64/c64rom.h:51"
|
||||||
|
|
||||||
@@ -122,6 +134,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 3ad6cc1837c679a11f551ad1cf1a32dd84ace719
|
||||||
|
md5: ddee89b0fed19572da5245ea68ff11b5
|
||||||
|
crc32: 505365d4
|
||||||
note: "C64 GS (Games System) Kernal. Embedded in core."
|
note: "C64 GS (Games System) Kernal. Embedded in core."
|
||||||
source_ref: "vice/src/c64/c64rom.h:53"
|
source_ref: "vice/src/c64/c64rom.h:53"
|
||||||
|
|
||||||
@@ -131,6 +146,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: aa136e91ecf3c5ac64f696b3dbcbfc5ba0871c98
|
||||||
|
md5: 187b8c713b51931e070872bd390b472a
|
||||||
|
crc32: 2c5965d4
|
||||||
note: "SX-64 Kernal. Embedded in core."
|
note: "SX-64 Kernal. Embedded in core."
|
||||||
source_ref: "vice/src/c64/c64rom.h:54"
|
source_ref: "vice/src/c64/c64rom.h:54"
|
||||||
|
|
||||||
@@ -140,6 +158,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 6c4fa9465f6091b174df27dfe679499df447503c
|
||||||
|
md5: da92801e3a03b005b746a4dd0b639c7c
|
||||||
|
crc32: 789c8cc5
|
||||||
note: "PET64/Educator64 (4064) Kernal. Embedded in core."
|
note: "PET64/Educator64 (4064) Kernal. Embedded in core."
|
||||||
source_ref: "vice/src/c64/c64rom.h:55"
|
source_ref: "vice/src/c64/c64rom.h:55"
|
||||||
|
|
||||||
@@ -149,6 +170,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 4ff0f11e80f4b57430d8f0c3799ed0f0e0f4565d
|
||||||
|
md5: 479553fd53346ec84054f0b1c6237397
|
||||||
|
crc32: 3a9ef6f1
|
||||||
note: "C64 Japanese Kernal. Embedded in core."
|
note: "C64 Japanese Kernal. Embedded in core."
|
||||||
source_ref: "vice/src/c64/c64rom.h:49"
|
source_ref: "vice/src/c64/c64rom.h:49"
|
||||||
|
|
||||||
@@ -158,6 +182,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: adc7c31e18c7c7413d54802ef2f4193da14711aa
|
||||||
|
md5: 12a4202f5331d45af846af6c58fba946
|
||||||
|
crc32: ec4272ee
|
||||||
note: "C64 Character Generator ROM (default). Embedded in core."
|
note: "C64 Character Generator ROM (default). Embedded in core."
|
||||||
source_ref: "vice/src/c64/c64rom.h:60"
|
source_ref: "vice/src/c64/c64rom.h:60"
|
||||||
|
|
||||||
@@ -167,6 +194,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: 0fad19dbcdb12461c99657b2979dbb5c2e47b527
|
||||||
|
md5: cf32a93c0a693ed359a4f483ef6db53d
|
||||||
|
crc32: 1604f6c1
|
||||||
note: "C64 Japanese Character Generator ROM. Embedded in core."
|
note: "C64 Japanese Character Generator ROM. Embedded in core."
|
||||||
source_ref: "vice/src/c64/c64rom.h:61"
|
source_ref: "vice/src/c64/c64rom.h:61"
|
||||||
|
|
||||||
@@ -180,6 +210,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: ceb6e1a1bf7e08eb9cbc651afa29e26adccf38ab
|
||||||
|
md5: 01f6903033b90cd506cde7802ec743c3
|
||||||
|
crc32: ba456b8e
|
||||||
note: "C128 Kernal (default international). Embedded in core."
|
note: "C128 Kernal (default international). Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:103"
|
source_ref: "vice/src/c128/c128rom.h:103"
|
||||||
|
|
||||||
@@ -189,6 +222,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 3629b3fa28b6a30bcc027b647f26654929ed1b0f
|
||||||
|
md5: 9837409b6bdb7ce055409fa3eb3e9cf0
|
||||||
|
crc32: bff7550b
|
||||||
note: "C128 Kernal German. Embedded in core."
|
note: "C128 Kernal German. Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:105"
|
source_ref: "vice/src/c128/c128rom.h:105"
|
||||||
|
|
||||||
@@ -198,6 +234,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 98c34e0dec9f52d7862b56bb287d2573eb3f6364
|
||||||
|
md5: 90907477d39db1b8fe1732692278a0e9
|
||||||
|
crc32: d311dab1
|
||||||
note: "C128 Kernal Swiss. Embedded in core."
|
note: "C128 Kernal Swiss. Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:104"
|
source_ref: "vice/src/c128/c128rom.h:104"
|
||||||
|
|
||||||
@@ -207,6 +246,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 925177c99ee7e02870c32ad62a054db1327cf0c2
|
||||||
|
md5: 7852922295c103f067ba3c0f56378a95
|
||||||
|
crc32: 1cf7f729
|
||||||
note: "C128 Kernal Swedish. Embedded in core."
|
note: "C128 Kernal Swedish. Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:110"
|
source_ref: "vice/src/c128/c128rom.h:110"
|
||||||
|
|
||||||
@@ -216,6 +258,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: d08e7991a6df14a843e92daafaf6756337959ba4
|
||||||
|
md5: 0a0eb549ec08624de11cf1f249f6f3dc
|
||||||
|
crc32: d3ecea84
|
||||||
note: "C128 Kernal Finnish (unidentified part number). Embedded in core."
|
note: "C128 Kernal Finnish (unidentified part number). Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:106"
|
source_ref: "vice/src/c128/c128rom.h:106"
|
||||||
|
|
||||||
@@ -225,6 +270,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: a0680d04db3232fa9f58598e5c9f09c4fe94f601
|
||||||
|
md5: 7a7747aa70fd63402c6a95fba0bd6806
|
||||||
|
crc32: 2df282b8
|
||||||
note: "C128 Kernal French (unidentified part number). Embedded in core."
|
note: "C128 Kernal French (unidentified part number). Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:107"
|
source_ref: "vice/src/c128/c128rom.h:107"
|
||||||
|
|
||||||
@@ -234,6 +282,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 592a626eb2b5372596ac374d3505c3ce78dd040f
|
||||||
|
md5: 142c8bd5934e9d97addb6776a2f2e8b8
|
||||||
|
crc32: 74d6b084
|
||||||
note: "C128 Kernal Italian (unidentified part number). Embedded in core."
|
note: "C128 Kernal Italian (unidentified part number). Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:108"
|
source_ref: "vice/src/c128/c128rom.h:108"
|
||||||
|
|
||||||
@@ -243,6 +294,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 00fe2fd610a812121befab1e7238fa882c0f8257
|
||||||
|
md5: 498fdedaeab458931b6103d52d5a3ea1
|
||||||
|
crc32: a5406848
|
||||||
note: "C128 Kernal Norwegian (unidentified part number). Embedded in core."
|
note: "C128 Kernal Norwegian (unidentified part number). Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:109"
|
source_ref: "vice/src/c128/c128rom.h:109"
|
||||||
|
|
||||||
@@ -252,6 +306,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: d53a7884404f7d18ebd60dd3080c8f8d71067441
|
||||||
|
md5: b86ce827c9108fbc7b9e02c690e81a23
|
||||||
|
crc32: 9f9c355b
|
||||||
note: "C128 BASIC low (BASIC part). Embedded in core."
|
note: "C128 BASIC low (BASIC part). Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:115"
|
source_ref: "vice/src/c128/c128rom.h:115"
|
||||||
|
|
||||||
@@ -261,6 +318,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: c4fb4a714e48a7bf6c28659de0302183a0e0d6c0
|
||||||
|
md5: 87bb251707d0a2c915d6e0c69fdb0fed
|
||||||
|
crc32: 6e2c91a7
|
||||||
note: "C128 BASIC high (Editor part). Embedded in core."
|
note: "C128 BASIC high (Editor part). Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:116"
|
source_ref: "vice/src/c128/c128rom.h:116"
|
||||||
|
|
||||||
@@ -288,6 +348,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: b4862cac7b9319d8e912887c97fc270d4c239349
|
||||||
|
md5: 8fa940c39225d40f37ddf7082fba8b21
|
||||||
|
crc32: dd2976d2
|
||||||
note: "C128 C64-mode Kernal Norwegian. Embedded in core."
|
note: "C128 C64-mode Kernal Norwegian. Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:136"
|
source_ref: "vice/src/c128/c128rom.h:136"
|
||||||
|
|
||||||
@@ -297,6 +360,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: e4f52d9b36c030eb94524eb49f6f0774c1d02e5e
|
||||||
|
md5: 27e26dbb267c8ebf1cd47105a6ca71e7
|
||||||
|
crc32: f10c2c25
|
||||||
note: "C128 C64-mode Kernal Swedish. Embedded in core."
|
note: "C128 C64-mode Kernal Swedish. Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:137"
|
source_ref: "vice/src/c128/c128rom.h:137"
|
||||||
|
|
||||||
@@ -306,6 +372,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 29ed066d513f2d5c09ff26d9166ba23c2afb2b3f
|
||||||
|
md5: 46b3cb2140f244c0ed1150c819e7bdc4
|
||||||
|
crc32: 6aaaafe6
|
||||||
note: "C128 Character Generator (default international). Embedded in core."
|
note: "C128 Character Generator (default international). Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:92"
|
source_ref: "vice/src/c128/c128rom.h:92"
|
||||||
|
|
||||||
@@ -315,6 +384,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 638f8aff51c2ac4f99a55b12c4f8c985ef4bebd3
|
||||||
|
md5: ec9e71614010c4efb851b83bcd685e9c
|
||||||
|
crc32: fe5a2db1
|
||||||
note: "C128 Character Generator German. Embedded in core."
|
note: "C128 Character Generator German. Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:95"
|
source_ref: "vice/src/c128/c128rom.h:95"
|
||||||
|
|
||||||
@@ -324,6 +396,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 9119b27a1bf885fa4c76fff5d858c74c194dd2b8
|
||||||
|
md5: de3e110a48de76457dbc9ad320e2caa5
|
||||||
|
crc32: bad36b88
|
||||||
note: "C128 Character Generator Italian/French/Belgian. Embedded in core."
|
note: "C128 Character Generator Italian/French/Belgian. Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:93"
|
source_ref: "vice/src/c128/c128rom.h:93"
|
||||||
|
|
||||||
@@ -333,6 +408,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 70eccd8b944146f6b60f1519b830a4ee8928d4fa
|
||||||
|
md5: 5cc3635e434fdc7023d0035e965ce76f
|
||||||
|
crc32: c8def186
|
||||||
note: "C128 Character Generator Swiss. Embedded in core."
|
note: "C128 Character Generator Swiss. Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:94"
|
source_ref: "vice/src/c128/c128rom.h:94"
|
||||||
|
|
||||||
@@ -342,6 +420,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 5a87faa457979e7b6f434251a9e32f4483b337b3
|
||||||
|
md5: 7eead22a114154c809b33320c9250e26
|
||||||
|
crc32: ba95c625
|
||||||
note: "C128 Character Generator Norwegian. Embedded in core."
|
note: "C128 Character Generator Norwegian. Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:99"
|
source_ref: "vice/src/c128/c128rom.h:99"
|
||||||
|
|
||||||
@@ -351,6 +432,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: aca3f7321ee7e6152f1f0afad646ae41964de4fb
|
||||||
|
md5: 06e46af13d13aa869218275e64d48b00
|
||||||
|
crc32: 7a70d9b8
|
||||||
note: "C128 Character Generator Finnish/Swedish. Embedded in core."
|
note: "C128 Character Generator Finnish/Swedish. Embedded in core."
|
||||||
source_ref: "vice/src/c128/c128rom.h:96"
|
source_ref: "vice/src/c128/c128rom.h:96"
|
||||||
|
|
||||||
@@ -364,6 +448,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 2097152
|
size: 2097152
|
||||||
|
sha1: 72b4c8da075646cc9940e4377004c81192c7b0b1
|
||||||
|
md5: d6efbc538195f53cfc209543640cde71
|
||||||
|
crc32: 242daa5a
|
||||||
note: "C64 DTV flash ROM (2 MB). Contains kernal, basic, chargen. Embedded in core."
|
note: "C64 DTV flash ROM (2 MB). Contains kernal, basic, chargen. Embedded in core."
|
||||||
source_ref: "vice/src/c64dtv/c64dtvflash.c:59-64"
|
source_ref: "vice/src/c64dtv/c64dtvflash.c:59-64"
|
||||||
|
|
||||||
@@ -373,6 +460,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 79015323128650c742a3694c9429aa91f355905e
|
||||||
|
md5: 57af4ae21d4b705c2991d98ed5c1f7b8
|
||||||
|
crc32: f833d117
|
||||||
note: "C64 BASIC V2 ROM (DTV copy). Embedded in core."
|
note: "C64 BASIC V2 ROM (DTV copy). Embedded in core."
|
||||||
source_ref: "vice/data/C64DTV/"
|
source_ref: "vice/data/C64DTV/"
|
||||||
|
|
||||||
@@ -382,6 +472,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: adc7c31e18c7c7413d54802ef2f4193da14711aa
|
||||||
|
md5: 12a4202f5331d45af846af6c58fba946
|
||||||
|
crc32: ec4272ee
|
||||||
note: "C64 Character Generator (DTV copy). Embedded in core."
|
note: "C64 Character Generator (DTV copy). Embedded in core."
|
||||||
source_ref: "vice/data/C64DTV/"
|
source_ref: "vice/data/C64DTV/"
|
||||||
|
|
||||||
@@ -391,6 +484,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 1d503e56df85a62fee696e7618dc5b4e781df1bb
|
||||||
|
md5: 39065497630802346bce17963f13c092
|
||||||
|
crc32: dbe3e7c7
|
||||||
note: "C64 Kernal Rev 3 (DTV copy). Embedded in core."
|
note: "C64 Kernal Rev 3 (DTV copy). Embedded in core."
|
||||||
source_ref: "vice/data/C64DTV/"
|
source_ref: "vice/data/C64DTV/"
|
||||||
|
|
||||||
@@ -404,6 +500,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 587d1e90950675ab6b12d91248a3f0d640d02e8d
|
||||||
|
md5: 8b9237706f47a9b3498d8f881ef0244d
|
||||||
|
crc32: db4c43c1
|
||||||
note: "VIC-20 BASIC ROM. Embedded in core."
|
note: "VIC-20 BASIC ROM. Embedded in core."
|
||||||
source_ref: "vice/src/vic20/vic20rom.h:43"
|
source_ref: "vice/src/vic20/vic20rom.h:43"
|
||||||
|
|
||||||
@@ -413,6 +512,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: ce0137ed69f003a299f43538fa9eee27898e621e
|
||||||
|
md5: f0587624dcd7685710a8fdb35939617f
|
||||||
|
crc32: 4be07cb4
|
||||||
note: "VIC-20 Kernal PAL (default). Embedded in core."
|
note: "VIC-20 Kernal PAL (default). Embedded in core."
|
||||||
source_ref: "vice/src/vic20/vic20rom.h:53"
|
source_ref: "vice/src/vic20/vic20rom.h:53"
|
||||||
|
|
||||||
@@ -422,6 +524,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 06de7ec017a5e78bd6746d89c2ecebb646efeb19
|
||||||
|
md5: 0313e31e5f31e1f739c2377792460d67
|
||||||
|
crc32: e5e7c174
|
||||||
note: "VIC-20 Kernal NTSC. Embedded in core."
|
note: "VIC-20 Kernal NTSC. Embedded in core."
|
||||||
source_ref: "vice/src/vic20/vic20rom.h:52"
|
source_ref: "vice/src/vic20/vic20rom.h:52"
|
||||||
|
|
||||||
@@ -431,6 +536,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: c9ead45e6674d1042ca6199160e8583c23aeac22
|
||||||
|
md5: 317f93bcbc5ee15da085a51a306f2c61
|
||||||
|
crc32: 336900d7
|
||||||
note: "VIC-20 Kernal Japanese NTSC Rev 2. Embedded in core."
|
note: "VIC-20 Kernal Japanese NTSC Rev 2. Embedded in core."
|
||||||
source_ref: "vice/src/vic20/vic20rom.h:51"
|
source_ref: "vice/src/vic20/vic20rom.h:51"
|
||||||
|
|
||||||
@@ -440,6 +548,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: 4fd85ab6647ee2ac7ba40f729323f2472d35b9b4
|
||||||
|
md5: d390e340e94e1bef0f2fdfe9fa850993
|
||||||
|
crc32: 83e032a6
|
||||||
note: "VIC-20 Character Generator (default). Embedded in core."
|
note: "VIC-20 Character Generator (default). Embedded in core."
|
||||||
source_ref: "vice/src/vic20/vic20rom.h:56"
|
source_ref: "vice/src/vic20/vic20rom.h:56"
|
||||||
|
|
||||||
@@ -449,6 +560,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: dae61ac03065aa2904af5c123ce821855898c555
|
||||||
|
md5: 7e6e41b5b60fec798743afd7063b42ed
|
||||||
|
crc32: fcfd8a4b
|
||||||
note: "VIC-20 Japanese Character Generator. Embedded in core."
|
note: "VIC-20 Japanese Character Generator. Embedded in core."
|
||||||
source_ref: "vice/src/vic20/vic20rom.h:57"
|
source_ref: "vice/src/vic20/vic20rom.h:57"
|
||||||
|
|
||||||
@@ -462,6 +576,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 161c96b4ad20f3a4f2321808e37a5ded26a135dd
|
||||||
|
md5: 44a4ae400e3b4f7533a47ae0df1be78c
|
||||||
|
crc32: 74eaae87
|
||||||
note: "Plus/4 BASIC ROM. Embedded in core."
|
note: "Plus/4 BASIC ROM. Embedded in core."
|
||||||
source_ref: "vice/src/plus4/plus4rom.h:33"
|
source_ref: "vice/src/plus4/plus4rom.h:33"
|
||||||
|
|
||||||
@@ -471,6 +588,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 7c7e07f016391174a557e790c4ef1cbe33512cdb
|
||||||
|
md5: 89f5263665a8dc10c8f8abc38f5f7eb9
|
||||||
|
crc32: 71c07bd4
|
||||||
note: "Plus/4 Kernal PAL Rev 5 (default PAL). Embedded in core."
|
note: "Plus/4 Kernal PAL Rev 5 (default PAL). Embedded in core."
|
||||||
source_ref: "vice/src/plus4/plus4rom.h:36"
|
source_ref: "vice/src/plus4/plus4rom.h:36"
|
||||||
|
|
||||||
@@ -480,6 +600,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: a3d9e5be091b98de39a046ab167fb7632d053682
|
||||||
|
md5: b3c450c36a88b491281d18fdf3e94ab0
|
||||||
|
crc32: 70295038
|
||||||
note: "Plus/4 Kernal NTSC Rev 5 (default NTSC). Embedded in core."
|
note: "Plus/4 Kernal NTSC Rev 5 (default NTSC). Embedded in core."
|
||||||
source_ref: "vice/src/plus4/plus4rom.h:37"
|
source_ref: "vice/src/plus4/plus4rom.h:37"
|
||||||
|
|
||||||
@@ -489,6 +612,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 3c77caf72914c1c0a0875b3a7f6935cd30c54201
|
||||||
|
md5: a213823557421b66f9813ff19af48c01
|
||||||
|
crc32: dbdc3319
|
||||||
note: "Plus/4 Kernal NTSC Rev 1 (V232 prototype). Embedded in core."
|
note: "Plus/4 Kernal NTSC Rev 1 (V232 prototype). Embedded in core."
|
||||||
source_ref: "vice/src/plus4/plus4rom.h:35"
|
source_ref: "vice/src/plus4/plus4rom.h:35"
|
||||||
|
|
||||||
@@ -498,6 +624,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: b9a5b5dacd57ca117ef0b3af29e91998bf4d7e5f
|
||||||
|
md5: 7abb51257595b233a1a63ae58c330a65
|
||||||
|
crc32: 84fd4f7a
|
||||||
note: "Commodore 364 prototype Kernal. Embedded in core."
|
note: "Commodore 364 prototype Kernal. Embedded in core."
|
||||||
source_ref: "vice/src/plus4/plus4rom.h:38"
|
source_ref: "vice/src/plus4/plus4rom.h:38"
|
||||||
|
|
||||||
@@ -507,6 +636,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 3b69f6e7cb4c18bb08e203fb18b7dabfa853390f
|
||||||
|
md5: 2994d5463ef8524deb4231a9c764767c
|
||||||
|
crc32: 4fd1d8cb
|
||||||
note: "3-Plus-1 software ROM low. Embedded in core."
|
note: "3-Plus-1 software ROM low. Embedded in core."
|
||||||
source_ref: "vice/src/plus4/plus4rom.h:40"
|
source_ref: "vice/src/plus4/plus4rom.h:40"
|
||||||
|
|
||||||
@@ -516,6 +648,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 0ad7ac2db7da692d972e586ca0dfd747d82c7693
|
||||||
|
md5: ac34591c820fe607d527e04e95bce465
|
||||||
|
crc32: 109de2fc
|
||||||
note: "3-Plus-1 software ROM high. Embedded in core."
|
note: "3-Plus-1 software ROM high. Embedded in core."
|
||||||
source_ref: "vice/src/plus4/plus4rom.h:41"
|
source_ref: "vice/src/plus4/plus4rom.h:41"
|
||||||
|
|
||||||
@@ -525,6 +660,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 59af401cbb2194f689898271c6e8aafa28a7af11
|
||||||
|
md5: 0073ace3874a2c5ca5de9cf64cdfbbd4
|
||||||
|
crc32: 5227c2ee
|
||||||
note: "Commodore 364 prototype function ROM low. Embedded in core."
|
note: "Commodore 364 prototype function ROM low. Embedded in core."
|
||||||
source_ref: "vice/src/plus4/plus4rom.h:43"
|
source_ref: "vice/src/plus4/plus4rom.h:43"
|
||||||
|
|
||||||
@@ -538,6 +676,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 3be9cd41b646fefa00d80f1c3433a06146e97c59
|
||||||
|
md5: f328e785835907006604423222db7bbf
|
||||||
|
crc32: aff78300
|
||||||
note: "PET BASIC 1.0 ROM (PET 2001). Embedded in core."
|
note: "PET BASIC 1.0 ROM (PET 2001). Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:55"
|
source_ref: "vice/src/pet/petrom.h:55"
|
||||||
|
|
||||||
@@ -547,6 +688,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 9322a9f0354b9049847d98d3a045fbec860a6264
|
||||||
|
md5: b69739387bebe999227ae0cf25aa1e91
|
||||||
|
crc32: cf35e68b
|
||||||
note: "PET BASIC 2.0 ROM. Embedded in core."
|
note: "PET BASIC 2.0 ROM. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:56"
|
source_ref: "vice/src/pet/petrom.h:56"
|
||||||
|
|
||||||
@@ -556,6 +700,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 12288
|
size: 12288
|
||||||
|
sha1: d70bec479e1e3a0d0908a4897066e9959bbc11c8
|
||||||
|
md5: d22d2a1912a0cdbd9e7c8b103541b2c6
|
||||||
|
crc32: 2a940f0a
|
||||||
note: "PET BASIC 4.0 ROM. Embedded in core."
|
note: "PET BASIC 4.0 ROM. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:57"
|
source_ref: "vice/src/pet/petrom.h:57"
|
||||||
|
|
||||||
@@ -565,6 +712,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: 32dc08828e88c74d6433156e64d402b564556308
|
||||||
|
md5: 61b7e2fd04d63b0702951ba40899cd72
|
||||||
|
crc32: f0186492
|
||||||
note: "PET Kernal 1.0 (PET 2001). Embedded in core."
|
note: "PET Kernal 1.0 (PET 2001). Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:51"
|
source_ref: "vice/src/pet/petrom.h:51"
|
||||||
|
|
||||||
@@ -574,6 +724,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: 38742bdf449f629bcba6276ef24d3daeb7da6e84
|
||||||
|
md5: 51a38bfef8f9e72cb64bf7d874b4c8c6
|
||||||
|
crc32: f02238e2
|
||||||
note: "PET Kernal 2.0. Embedded in core."
|
note: "PET Kernal 2.0. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:52"
|
source_ref: "vice/src/pet/petrom.h:52"
|
||||||
|
|
||||||
@@ -583,6 +736,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: 96a0fa56e0c937da92971d9c99d504e44e898806
|
||||||
|
md5: 16ec21443ea5431ab63d511061054e6f
|
||||||
|
crc32: cc5298a1
|
||||||
note: "PET Kernal 4.0. Embedded in core."
|
note: "PET Kernal 4.0. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:53"
|
source_ref: "vice/src/pet/petrom.h:53"
|
||||||
|
|
||||||
@@ -592,6 +748,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 2048
|
size: 2048
|
||||||
|
sha1: f02f5fb492ba93dbbd390f24c10f7a832dec432a
|
||||||
|
md5: ef9bd0e62dfc47eb463fef20d0344826
|
||||||
|
crc32: 9e1c5cea
|
||||||
note: "PET Editor 1.0 Normal (graphics keyboard). Embedded in core."
|
note: "PET Editor 1.0 Normal (graphics keyboard). Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:59"
|
source_ref: "vice/src/pet/petrom.h:59"
|
||||||
|
|
||||||
@@ -601,6 +760,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 2048
|
size: 2048
|
||||||
|
sha1: 5e5502ce32f5a7e387d65efe058916282041e54b
|
||||||
|
md5: cb8e8404c0b28eda10469792dfd1dbc2
|
||||||
|
crc32: e459ab32
|
||||||
note: "PET Editor 2.0 Normal (graphics keyboard). Embedded in core."
|
note: "PET Editor 2.0 Normal (graphics keyboard). Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:60"
|
source_ref: "vice/src/pet/petrom.h:60"
|
||||||
|
|
||||||
@@ -610,6 +772,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 2048
|
size: 2048
|
||||||
|
sha1: 174ace3a8c0348cd21d39cc864e2adc58b0101a9
|
||||||
|
md5: 7f87889ca7ee2537f0c1993d35d0fb18
|
||||||
|
crc32: 05db957e
|
||||||
note: "PET Editor 2.0 Business keyboard. Embedded in core."
|
note: "PET Editor 2.0 Business keyboard. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:61"
|
source_ref: "vice/src/pet/petrom.h:61"
|
||||||
|
|
||||||
@@ -619,6 +784,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 2048
|
size: 2048
|
||||||
|
sha1: 05af284c914d53a52987b5f602466de75765f650
|
||||||
|
md5: b76d756e7ac8752ae0035f3ce5f1383c
|
||||||
|
crc32: 3370e359
|
||||||
note: "PET Editor 4.0, 40 col, Normal keyboard, 50Hz. Embedded in core."
|
note: "PET Editor 4.0, 40 col, Normal keyboard, 50Hz. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:62"
|
source_ref: "vice/src/pet/petrom.h:62"
|
||||||
|
|
||||||
@@ -628,6 +796,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 2048
|
size: 2048
|
||||||
|
sha1: 9f91fbabfdd532d003d2508f399574ba8ec6ee5f
|
||||||
|
md5: 8e69e040489098522846b1b1c63682c2
|
||||||
|
crc32: 16fb070c
|
||||||
note: "PET Editor 4.0, 40 col, Business keyboard, 50Hz. Embedded in core."
|
note: "PET Editor 4.0, 40 col, Business keyboard, 50Hz. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:65"
|
source_ref: "vice/src/pet/petrom.h:65"
|
||||||
|
|
||||||
@@ -637,6 +808,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 2048
|
size: 2048
|
||||||
|
sha1: 81975eab31a8f4f51ae2a20d099a567c7b3f2dd1
|
||||||
|
md5: 3a0e2ef328040aa30b30a8134426879a
|
||||||
|
crc32: 845a44e6
|
||||||
note: "PET Editor 4.0, 80 col, Business keyboard, 50Hz. Embedded in core."
|
note: "PET Editor 4.0, 80 col, Business keyboard, 50Hz. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:63"
|
source_ref: "vice/src/pet/petrom.h:63"
|
||||||
|
|
||||||
@@ -646,6 +820,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 2048
|
size: 2048
|
||||||
|
sha1: 3e067cc621e4beafca2b90cb8f6dba975df2855b
|
||||||
|
md5: 29a82eb54e73ebc5673c718c489b174b
|
||||||
|
crc32: 54f32f45
|
||||||
note: "PET Character Generator 1 (original PET 2001). Embedded in core."
|
note: "PET Character Generator 1 (original PET 2001). Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:46"
|
source_ref: "vice/src/pet/petrom.h:46"
|
||||||
|
|
||||||
@@ -655,6 +832,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 2048
|
size: 2048
|
||||||
|
sha1: 0157a2d55b7ac4eaeb38475889ebeea52e2593db
|
||||||
|
md5: 9880432e633b15998d58884ff34c4e70
|
||||||
|
crc32: d8408674
|
||||||
note: "PET Character Generator 2. Embedded in core."
|
note: "PET Character Generator 2. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:47"
|
source_ref: "vice/src/pet/petrom.h:47"
|
||||||
|
|
||||||
@@ -664,6 +844,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: bf346f11595a3e65e55d6aeeaa2c0cec807b66c7
|
||||||
|
md5: dd30641d9e6a221edd725d1e529dcbdb
|
||||||
|
crc32: ee8229c4
|
||||||
note: "SuperPET Character Generator. Embedded in core."
|
note: "SuperPET Character Generator. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:48"
|
source_ref: "vice/src/pet/petrom.h:48"
|
||||||
|
|
||||||
@@ -673,6 +856,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: 0414b3ab847c8977eb05c2fcc72efcf2f9d92871
|
||||||
|
md5: 6eb1c1bfa6ce1444737794432966dfcc
|
||||||
|
crc32: 728a998b
|
||||||
note: "SuperPET Waterloo microEngine 6809 ROM at $A000. Embedded in core."
|
note: "SuperPET Waterloo microEngine 6809 ROM at $A000. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:75"
|
source_ref: "vice/src/pet/petrom.h:75"
|
||||||
|
|
||||||
@@ -682,6 +868,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: df154939b934d0aeeb376813ec1ba0d43c2a3378
|
||||||
|
md5: 537498d75ecf761d4991f9ebd85129ca
|
||||||
|
crc32: 6beb7c62
|
||||||
note: "SuperPET Waterloo microEngine 6809 ROM at $B000. Embedded in core."
|
note: "SuperPET Waterloo microEngine 6809 ROM at $B000. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:76"
|
source_ref: "vice/src/pet/petrom.h:76"
|
||||||
|
|
||||||
@@ -691,6 +880,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: 6c5b0cce97068f8841112ba6d5cd8e568b562fa3
|
||||||
|
md5: 3e8dd04902dc9fee172084698f84695f
|
||||||
|
crc32: 5db4983d
|
||||||
note: "SuperPET Waterloo microEngine 6809 ROM at $C000. Embedded in core."
|
note: "SuperPET Waterloo microEngine 6809 ROM at $C000. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:77"
|
source_ref: "vice/src/pet/petrom.h:77"
|
||||||
|
|
||||||
@@ -700,6 +892,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: b42a2050a319a1ffca7868a8d8d635fadd37ec37
|
||||||
|
md5: 80f4d2351ee19673820989919c7c1e9b
|
||||||
|
crc32: f55fc559
|
||||||
note: "SuperPET Waterloo microEngine 6809 ROM at $D000. Embedded in core."
|
note: "SuperPET Waterloo microEngine 6809 ROM at $D000. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:78"
|
source_ref: "vice/src/pet/petrom.h:78"
|
||||||
|
|
||||||
@@ -709,6 +904,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 2048
|
size: 2048
|
||||||
|
sha1: e8ce8347451a001214a5e71a13081b38b4be23bc
|
||||||
|
md5: a740ff5d0d1132ab18cfc1974fca908d
|
||||||
|
crc32: b2cee903
|
||||||
note: "SuperPET Waterloo microEngine 6809 ROM at $E000. Embedded in core."
|
note: "SuperPET Waterloo microEngine 6809 ROM at $E000. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:79"
|
source_ref: "vice/src/pet/petrom.h:79"
|
||||||
|
|
||||||
@@ -718,6 +916,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: 9b4a5134d20345171e7303445f87c4e0b9addc96
|
||||||
|
md5: 049e2d26fde71a741f6075ecbf0a432d
|
||||||
|
crc32: f42df0cb
|
||||||
note: "SuperPET Waterloo microEngine 6809 ROM at $F000. Embedded in core."
|
note: "SuperPET Waterloo microEngine 6809 ROM at $F000. Embedded in core."
|
||||||
source_ref: "vice/src/pet/petrom.h:80"
|
source_ref: "vice/src/pet/petrom.h:80"
|
||||||
|
|
||||||
@@ -731,6 +932,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 9409f92e167984096fe4d5913714bff6214c3b2d
|
||||||
|
md5: 3ad5c7182006bcad1597583dbc8505c9
|
||||||
|
crc32: a8ff9372
|
||||||
note: "CBM-II BASIC 128 (CBM 610/620/710/720). Embedded in core."
|
note: "CBM-II BASIC 128 (CBM 610/620/710/720). Embedded in core."
|
||||||
source_ref: "vice/src/cbm2/cbm2rom.h:41"
|
source_ref: "vice/src/cbm2/cbm2rom.h:41"
|
||||||
|
|
||||||
@@ -740,6 +944,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 53314b4d565cc405a67a0936b935e6e08955580d
|
||||||
|
md5: 6a505014e543c62e99668080a3b80b40
|
||||||
|
crc32: 5db15870
|
||||||
note: "CBM-II BASIC 256 (CBM 710/720 with 256K). Embedded in core."
|
note: "CBM-II BASIC 256 (CBM 710/720 with 256K). Embedded in core."
|
||||||
source_ref: "vice/src/cbm2/cbm2rom.h:42"
|
source_ref: "vice/src/cbm2/cbm2rom.h:42"
|
||||||
|
|
||||||
@@ -749,6 +956,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: e69531d45f5993f8e53c6bd9ab2a7bc10fe2d02f
|
||||||
|
md5: 5a9559ceaf1a0bef0e721242c67a030d
|
||||||
|
crc32: 9a468e5d
|
||||||
note: "CBM-II BASIC 500 (CBM 510/P500). Embedded in core."
|
note: "CBM-II BASIC 500 (CBM 510/P500). Embedded in core."
|
||||||
source_ref: "vice/src/cbm2/cbm2rom.h:43"
|
source_ref: "vice/src/cbm2/cbm2rom.h:43"
|
||||||
|
|
||||||
@@ -758,6 +968,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: abb26418b9e1614a8f52bdeee0822d4a96071439
|
||||||
|
md5: e0346953e77bd1353ebf53aaa5b6f0b0
|
||||||
|
crc32: 09a5667e
|
||||||
note: "CBM-II Kernal (CBM 610/620/710/720). Embedded in core."
|
note: "CBM-II Kernal (CBM 610/620/710/720). Embedded in core."
|
||||||
source_ref: "vice/src/cbm2/cbm2rom.h:45"
|
source_ref: "vice/src/cbm2/cbm2rom.h:45"
|
||||||
|
|
||||||
@@ -767,6 +980,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: 097197d4d08e0b82e0466a5f1fbd49a24f3d2523
|
||||||
|
md5: 1a19593625acdc5af96a5e78b1a23f37
|
||||||
|
crc32: f46bbd2b
|
||||||
note: "CBM-II Kernal 500 (CBM 510/P500). Embedded in core."
|
note: "CBM-II Kernal 500 (CBM 510/P500). Embedded in core."
|
||||||
source_ref: "vice/src/cbm2/cbm2rom.h:46"
|
source_ref: "vice/src/cbm2/cbm2rom.h:46"
|
||||||
|
|
||||||
@@ -776,6 +992,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: adc7c31e18c7c7413d54802ef2f4193da14711aa
|
||||||
|
md5: 12a4202f5331d45af846af6c58fba946
|
||||||
|
crc32: ec4272ee
|
||||||
note: "CBM-II Character Generator 500 (VIC-II based, CBM 510/P500). Embedded in core."
|
note: "CBM-II Character Generator 500 (VIC-II based, CBM 510/P500). Embedded in core."
|
||||||
source_ref: "vice/src/cbm2/cbm2rom.h:37"
|
source_ref: "vice/src/cbm2/cbm2rom.h:37"
|
||||||
|
|
||||||
@@ -785,6 +1004,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: e63bf18da48e5a53c99ef127c1ae721333d1d102
|
||||||
|
md5: 2818722af27ceae6952c08cf83a076f9
|
||||||
|
crc32: 1acf5098
|
||||||
note: "CBM-II Character Generator 600 (CBM 610/620). Embedded in core."
|
note: "CBM-II Character Generator 600 (CBM 610/620). Embedded in core."
|
||||||
source_ref: "vice/src/cbm2/cbm2rom.h:38"
|
source_ref: "vice/src/cbm2/cbm2rom.h:38"
|
||||||
|
|
||||||
@@ -794,6 +1016,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: e7f3cbc8e282f79a00c3e95d75c8d725ee3c6287
|
||||||
|
md5: 03f32477905d77e2135857076ec31efa
|
||||||
|
crc32: 3a350bc3
|
||||||
note: "CBM-II Character Generator 700 (CBM 710/720). Embedded in core."
|
note: "CBM-II Character Generator 700 (CBM 710/720). Embedded in core."
|
||||||
source_ref: "vice/src/cbm2/cbm2rom.h:39"
|
source_ref: "vice/src/cbm2/cbm2rom.h:39"
|
||||||
|
|
||||||
@@ -807,6 +1032,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 65536
|
size: 65536
|
||||||
|
sha1: f5b6da17ee8206ff0d2258e1d6e8b798147c2650
|
||||||
|
md5: 006862e9a52d987970435988e3803c71
|
||||||
|
crc32: 89c1a062
|
||||||
note: "SuperCPU64 internal ROM (default). Embedded in core."
|
note: "SuperCPU64 internal ROM (default). Embedded in core."
|
||||||
source_ref: "retrodep/ui.c:269"
|
source_ref: "retrodep/ui.c:269"
|
||||||
|
|
||||||
@@ -816,6 +1044,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: adc7c31e18c7c7413d54802ef2f4193da14711aa
|
||||||
|
md5: 12a4202f5331d45af846af6c58fba946
|
||||||
|
crc32: ec4272ee
|
||||||
note: "C64 Character Generator (used by SCPU64). Embedded in core."
|
note: "C64 Character Generator (used by SCPU64). Embedded in core."
|
||||||
source_ref: "vice/src/scpu64/scpu64rom.h:36"
|
source_ref: "vice/src/scpu64/scpu64rom.h:36"
|
||||||
|
|
||||||
@@ -825,6 +1056,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 4096
|
size: 4096
|
||||||
|
sha1: 0fad19dbcdb12461c99657b2979dbb5c2e47b527
|
||||||
|
md5: cf32a93c0a693ed359a4f483ef6db53d
|
||||||
|
crc32: 1604f6c1
|
||||||
note: "C64 Japanese Character Generator (used by SCPU64). Embedded in core."
|
note: "C64 Japanese Character Generator (used by SCPU64). Embedded in core."
|
||||||
source_ref: "vice/src/scpu64/scpu64rom.h:37"
|
source_ref: "vice/src/scpu64/scpu64rom.h:37"
|
||||||
|
|
||||||
@@ -854,6 +1088,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: 3477c14e0c79faa445224dad16534f04ed143e44
|
||||||
|
md5: 87e849da3c87549848550fe4dd4d1aae
|
||||||
|
crc32: 718d42b1
|
||||||
note: "1540 drive DOS ROM. Embedded in core."
|
note: "1540 drive DOS ROM. Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:88"
|
source_ref: "vice/src/drive/driverom.h:88"
|
||||||
|
|
||||||
@@ -863,6 +1100,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: ab16f56989b27d89babe5f89c5a8cb3da71a82f0
|
||||||
|
md5: a0ce8439d1b8dcf2e1430461f7233a72
|
||||||
|
crc32: 57224cde
|
||||||
note: "1541 drive DOS ROM. Embedded in core."
|
note: "1541 drive DOS ROM. Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:89"
|
source_ref: "vice/src/drive/driverom.h:89"
|
||||||
|
|
||||||
@@ -872,6 +1112,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: d3b78c3dbac55f5199f33f3fe0036439811f7fb3
|
||||||
|
md5: ada295382a1f2df772a7e5c5c6f34215
|
||||||
|
crc32: 899fa3c5
|
||||||
note: "1541-II drive DOS ROM. Embedded in core."
|
note: "1541-II drive DOS ROM. Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:90"
|
source_ref: "vice/src/drive/driverom.h:90"
|
||||||
|
|
||||||
@@ -881,6 +1124,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: fae3c788ad9a6cc2dbdfbcf6c0264b2ca921d55e
|
||||||
|
md5: 0c767bf0a84d7751af056e53a074c9e2
|
||||||
|
crc32: 6d16d024
|
||||||
note: "1551 drive DOS ROM (Plus/4 specific). Embedded in core."
|
note: "1551 drive DOS ROM (Plus/4 specific). Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:92"
|
source_ref: "vice/src/drive/driverom.h:92"
|
||||||
|
|
||||||
@@ -890,6 +1136,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 32768
|
size: 32768
|
||||||
|
sha1: 5fc06dc82ff6840f183bd43a4d9b8a16956b2f56
|
||||||
|
md5: f0799353f0e22cf7d783e447adcafde2
|
||||||
|
crc32: 5a0c7937
|
||||||
note: "1570 drive DOS ROM. Embedded in core."
|
note: "1570 drive DOS ROM. Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:93"
|
source_ref: "vice/src/drive/driverom.h:93"
|
||||||
|
|
||||||
@@ -899,6 +1148,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 32768
|
size: 32768
|
||||||
|
sha1: f1be619c106641a685f6609e4d43d6fc9eac1e70
|
||||||
|
md5: dae964d64b7843ff86c008d396dda208
|
||||||
|
crc32: 5755bae3
|
||||||
note: "1571 drive DOS ROM. Embedded in core."
|
note: "1571 drive DOS ROM. Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:94"
|
source_ref: "vice/src/drive/driverom.h:94"
|
||||||
|
|
||||||
@@ -908,6 +1160,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 32768
|
size: 32768
|
||||||
|
sha1: 14ee7a0fb7e1c59c51fbf781f944387037daa3ee
|
||||||
|
md5: f9158328494b3e269f86ef419792c2e5
|
||||||
|
crc32: f24efcc4
|
||||||
note: "1571CR drive DOS ROM (cost-reduced, C128D internal). Embedded in core."
|
note: "1571CR drive DOS ROM (cost-reduced, C128D internal). Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:95"
|
source_ref: "vice/src/drive/driverom.h:95"
|
||||||
|
|
||||||
@@ -917,6 +1172,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 32768
|
size: 32768
|
||||||
|
sha1: 01228eae6f066bd9b7b2b6a7fa3f667e41dad393
|
||||||
|
md5: 6a82f92aea2a3afa190fe32d565f39e7
|
||||||
|
crc32: a9011b84
|
||||||
note: "1581 drive DOS ROM. Embedded in core."
|
note: "1581 drive DOS ROM. Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:96"
|
source_ref: "vice/src/drive/driverom.h:96"
|
||||||
|
|
||||||
@@ -926,6 +1184,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: d50b093828888146596f17ae0df9ef3dfde71b05
|
||||||
|
md5: 2d967790361aa77de87a24fb93e342f9
|
||||||
|
crc32: 87e6a94e
|
||||||
note: "CBM 1001 (SFD-1001) drive DOS ROM. Embedded in core."
|
note: "CBM 1001 (SFD-1001) drive DOS ROM. Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:70"
|
source_ref: "vice/src/drive/driverom.h:70"
|
||||||
|
|
||||||
@@ -935,6 +1196,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: c53e180a96649ceb3f421739e8dc66faba7cba44
|
||||||
|
md5: 3454c06fd2275f5bcbfe936dcdf8059b
|
||||||
|
crc32: 21b80fdf
|
||||||
note: "CBM 2031 drive DOS ROM. Embedded in core."
|
note: "CBM 2031 drive DOS ROM. Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:73"
|
source_ref: "vice/src/drive/driverom.h:73"
|
||||||
|
|
||||||
@@ -944,6 +1208,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 8192
|
size: 8192
|
||||||
|
sha1: e37b3bfd801eb19dea50cf8b4a6af8613c3520d3
|
||||||
|
md5: 3efff682000fd841b4dd6560bf53e37c
|
||||||
|
crc32: d04c1fbb
|
||||||
note: "CBM 2040 dual drive DOS ROM. Embedded in core."
|
note: "CBM 2040 dual drive DOS ROM. Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:76"
|
source_ref: "vice/src/drive/driverom.h:76"
|
||||||
|
|
||||||
@@ -953,6 +1220,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 12288
|
size: 12288
|
||||||
|
sha1: 02bd4b0c8508b3874b95799a9a63caf369c837de
|
||||||
|
md5: 139e72a58b7ddb2f92ceb18c8735c53c
|
||||||
|
crc32: f4967a7f
|
||||||
note: "CBM 3040 dual drive DOS ROM. Embedded in core."
|
note: "CBM 3040 dual drive DOS ROM. Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:79"
|
source_ref: "vice/src/drive/driverom.h:79"
|
||||||
|
|
||||||
@@ -962,6 +1232,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 12288
|
size: 12288
|
||||||
|
sha1: 245abbe76581558d270cdbb6fe55f56748403d8e
|
||||||
|
md5: 2fce6a76c738d1a10c189bf0660d868e
|
||||||
|
crc32: 40e0ebaa
|
||||||
note: "CBM 4040 dual drive DOS ROM. Embedded in core."
|
note: "CBM 4040 dual drive DOS ROM. Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:82"
|
source_ref: "vice/src/drive/driverom.h:82"
|
||||||
|
|
||||||
@@ -971,6 +1244,9 @@ files:
|
|||||||
hle_fallback: true
|
hle_fallback: true
|
||||||
embedded: true
|
embedded: true
|
||||||
size: 16384
|
size: 16384
|
||||||
|
sha1: c48df2cbb0eea656c3243df7ea8bfefcd171b8e8
|
||||||
|
md5: d6d4df6f2811767de6f5bf46ad7fba69
|
||||||
|
crc32: 632a328e
|
||||||
note: "CBM D9090/D9060 hard drive DOS ROM. Embedded in core."
|
note: "CBM D9090/D9060 hard drive DOS ROM. Embedded in core."
|
||||||
source_ref: "vice/src/drive/driverom.h:85"
|
source_ref: "vice/src/drive/driverom.h:85"
|
||||||
|
|
||||||
|
|||||||
@@ -397,5 +397,6 @@ files:
|
|||||||
system: dragon64
|
system: dragon64
|
||||||
description: "Ikon Ultra Drive Dragonfly ROM 2.3"
|
description: "Ikon Ultra Drive Dragonfly ROM 2.3"
|
||||||
required: false
|
required: false
|
||||||
|
unsourceable: "not yet dumped, only v1.3 publicly available, XRoar support is experimental (#ifdef WANT_EXPERIMENTAL)"
|
||||||
source_ref: "xroar.c:715 (romlist ikon), ikon.c:151 (default @ikon)"
|
source_ref: "xroar.c:715 (romlist ikon), ikon.c:151 (default @ikon)"
|
||||||
note: "Experimental. Ikon Ultra Drive storage interface. Older version: dragonfly-1.3."
|
note: "Experimental. Ikon Ultra Drive storage interface. Older version: dragonfly-1.3."
|
||||||
|
|||||||
@@ -138,6 +138,8 @@ files:
|
|||||||
|
|
||||||
- name: Custom.dat
|
- name: Custom.dat
|
||||||
path: zc210/sfx/Custom.dat
|
path: zc210/sfx/Custom.dat
|
||||||
|
category: game_data
|
||||||
description: user-provided custom SFX replacement
|
description: user-provided custom SFX replacement
|
||||||
required: false
|
required: false
|
||||||
|
unsourceable: "user placeholder slot, README says 'rename your own SFX dat file to this name'"
|
||||||
source_ref: "zelda.cpp:1193-1218, libretro.cpp:148"
|
source_ref: "zelda.cpp:1193-1218, libretro.cpp:148"
|
||||||
|
|||||||
46
install.ps1
46
install.ps1
@@ -101,4 +101,50 @@ foreach ($f in $toDownload) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Standalone emulator copies
|
||||||
|
if ($manifest.standalone_copies) {
|
||||||
|
Write-Host "`nStandalone emulators:"
|
||||||
|
foreach ($entry in $manifest.standalone_copies) {
|
||||||
|
if ($entry.note) {
|
||||||
|
$detectPaths = @()
|
||||||
|
if ($entry.detect -and $entry.detect.windows) {
|
||||||
|
$detectPaths = $entry.detect.windows
|
||||||
|
}
|
||||||
|
foreach ($dp in $detectPaths) {
|
||||||
|
$expanded = [Environment]::ExpandEnvironmentVariables($dp)
|
||||||
|
if (Test-Path $expanded) {
|
||||||
|
Write-Host " $($entry.note)"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
$sources = @()
|
||||||
|
if ($entry.pattern) {
|
||||||
|
$sources = Get-ChildItem -Path $biosPath -Filter $entry.pattern -File -ErrorAction SilentlyContinue
|
||||||
|
} elseif ($entry.file) {
|
||||||
|
$src = Join-Path $biosPath $entry.file
|
||||||
|
if (Test-Path $src) { $sources = @(Get-Item $src) }
|
||||||
|
}
|
||||||
|
if ($sources.Count -eq 0) { continue }
|
||||||
|
$targetDirs = @()
|
||||||
|
if ($entry.targets -and $entry.targets.windows) {
|
||||||
|
$targetDirs = $entry.targets.windows
|
||||||
|
}
|
||||||
|
foreach ($td in $targetDirs) {
|
||||||
|
$expanded = [Environment]::ExpandEnvironmentVariables($td)
|
||||||
|
if (-not (Test-Path $expanded)) { continue }
|
||||||
|
foreach ($s in $sources) {
|
||||||
|
$dest = Join-Path $expanded $s.Name
|
||||||
|
try {
|
||||||
|
Copy-Item $s.FullName $dest -Force
|
||||||
|
Write-Host " $($s.Name) -> $expanded"
|
||||||
|
} catch {
|
||||||
|
Write-Host " $($s.Name) -> $expanded FAILED" -ForegroundColor Red
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Write-Host "`nDone. $downloaded downloaded, $upToDate already up to date."
|
Write-Host "`nDone. $downloaded downloaded, $upToDate already up to date."
|
||||||
|
|||||||
49
install.py
49
install.py
@@ -192,9 +192,9 @@ def detect_platforms(os_type: str) -> list[tuple[str, Path]]:
|
|||||||
if retrodeck_cfg.exists():
|
if retrodeck_cfg.exists():
|
||||||
bios_path = _parse_bash_var(retrodeck_cfg, "rdhome")
|
bios_path = _parse_bash_var(retrodeck_cfg, "rdhome")
|
||||||
if bios_path:
|
if bios_path:
|
||||||
found.append(("retrodeck", Path(bios_path) / "bios"))
|
found.append(("retrodeck", Path(bios_path)))
|
||||||
else:
|
else:
|
||||||
found.append(("retrodeck", home / "retrodeck" / "bios"))
|
found.append(("retrodeck", home / "retrodeck"))
|
||||||
|
|
||||||
# RetroArch Flatpak
|
# RetroArch Flatpak
|
||||||
flatpak_cfg = home / ".var" / "app" / "org.libretro.RetroArch" / "config" / "retroarch" / "retroarch.cfg"
|
flatpak_cfg = home / ".var" / "app" / "org.libretro.RetroArch" / "config" / "retroarch" / "retroarch.cfg"
|
||||||
@@ -390,8 +390,16 @@ def do_standalone_copies(
|
|||||||
) -> tuple[int, int]:
|
) -> tuple[int, int]:
|
||||||
"""Copy BIOS files to standalone emulator directories.
|
"""Copy BIOS files to standalone emulator directories.
|
||||||
|
|
||||||
|
Supports:
|
||||||
|
- file: single file copy
|
||||||
|
- pattern: glob match (e.g. "scph*.bin")
|
||||||
|
- note: informational message when detect path exists
|
||||||
|
- WSL fallback to linux targets
|
||||||
|
|
||||||
Returns (copied_count, skipped_count).
|
Returns (copied_count, skipped_count).
|
||||||
"""
|
"""
|
||||||
|
from fnmatch import fnmatch
|
||||||
|
|
||||||
copies = manifest.get("standalone_copies", [])
|
copies = manifest.get("standalone_copies", [])
|
||||||
if not copies:
|
if not copies:
|
||||||
return 0, 0
|
return 0, 0
|
||||||
@@ -400,21 +408,48 @@ def do_standalone_copies(
|
|||||||
skipped = 0
|
skipped = 0
|
||||||
|
|
||||||
for entry in copies:
|
for entry in copies:
|
||||||
src = bios_path / entry["file"]
|
# Note entries: print message if emulator detected
|
||||||
if not src.exists():
|
if "note" in entry:
|
||||||
|
detect_paths = entry.get("detect", {}).get(os_type, [])
|
||||||
|
if not detect_paths and os_type == "wsl":
|
||||||
|
detect_paths = entry.get("detect", {}).get("linux", [])
|
||||||
|
for dp in detect_paths:
|
||||||
|
expanded = Path(os.path.expandvars(os.path.expanduser(dp)))
|
||||||
|
if expanded.is_dir():
|
||||||
|
print(f" {entry['note']}")
|
||||||
|
break
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# Resolve source files
|
||||||
|
if "pattern" in entry:
|
||||||
|
sources = [
|
||||||
|
f for f in bios_path.rglob("*")
|
||||||
|
if fnmatch(f.name, entry["pattern"]) and f.is_file()
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
src = bios_path / entry["file"]
|
||||||
|
sources = [src] if src.exists() else []
|
||||||
|
|
||||||
|
if not sources:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Resolve target directories with WSL fallback
|
||||||
targets = entry.get("targets", {}).get(os_type, [])
|
targets = entry.get("targets", {}).get(os_type, [])
|
||||||
|
if not targets and os_type == "wsl":
|
||||||
|
targets = entry.get("targets", {}).get("linux", [])
|
||||||
|
|
||||||
for target_dir_str in targets:
|
for target_dir_str in targets:
|
||||||
target_dir = Path(os.path.expandvars(os.path.expanduser(target_dir_str)))
|
target_dir = Path(os.path.expandvars(os.path.expanduser(target_dir_str)))
|
||||||
if target_dir.is_dir():
|
if not target_dir.is_dir():
|
||||||
|
skipped += len(sources)
|
||||||
|
continue
|
||||||
|
for src in sources:
|
||||||
dest = target_dir / src.name
|
dest = target_dir / src.name
|
||||||
try:
|
try:
|
||||||
shutil.copy2(src, dest)
|
shutil.copy2(src, dest)
|
||||||
copied += 1
|
copied += 1
|
||||||
except OSError:
|
except OSError:
|
||||||
skipped += 1
|
skipped += 1
|
||||||
else:
|
|
||||||
skipped += 1
|
|
||||||
|
|
||||||
return copied, skipped
|
return copied, skipped
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"platform": "batocera",
|
"platform": "batocera",
|
||||||
"display_name": "Batocera",
|
"display_name": "Batocera",
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"generated": "2026-04-01T14:41:41Z",
|
"generated": "2026-04-18T07:55:01Z",
|
||||||
"base_destination": "bios",
|
"base_destination": "bios",
|
||||||
"detect": [
|
"detect": [
|
||||||
{
|
{
|
||||||
@@ -14,9 +14,224 @@
|
|||||||
"bios_path": "/userdata/bios"
|
"bios_path": "/userdata/bios"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"standalone_copies": [],
|
"standalone_copies": [
|
||||||
|
{
|
||||||
|
"file": "prod.keys",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/yuzu/keys",
|
||||||
|
"$HOME/.local/share/eden/keys",
|
||||||
|
"$HOME/.local/share/citron/keys",
|
||||||
|
"$HOME/.local/share/suyu/keys",
|
||||||
|
"$HOME/.config/Ryujinx/system"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\yuzu\\keys",
|
||||||
|
"%APPDATA%\\eden\\keys",
|
||||||
|
"%APPDATA%\\citron\\keys",
|
||||||
|
"%APPDATA%\\suyu\\keys",
|
||||||
|
"%APPDATA%\\Ryujinx\\system"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/yuzu/keys",
|
||||||
|
"$HOME/Library/Application Support/Ryujinx/system"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "title.keys",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/yuzu/keys",
|
||||||
|
"$HOME/.local/share/eden/keys",
|
||||||
|
"$HOME/.local/share/citron/keys",
|
||||||
|
"$HOME/.local/share/suyu/keys"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\yuzu\\keys",
|
||||||
|
"%APPDATA%\\eden\\keys",
|
||||||
|
"%APPDATA%\\citron\\keys",
|
||||||
|
"%APPDATA%\\suyu\\keys"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/yuzu/keys"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Citra/sysdata/aes_keys.txt",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/azahar/sysdata"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Azahar\\sysdata"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Citra/sysdata/boot9.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/azahar/sysdata"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Azahar\\sysdata"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "scph*.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/duckstation/bios"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%LOCALAPPDATA%\\DuckStation\\bios",
|
||||||
|
"%USERPROFILE%\\Documents\\DuckStation\\bios"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/DuckStation/bios"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "ps2-*.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/PCSX2/bios",
|
||||||
|
"$HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%USERPROFILE%\\Documents\\PCSX2\\bios"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/PCSX2/bios"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"note": "PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.",
|
||||||
|
"detect": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/rpcs3"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\rpcs3"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/USA/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/USA"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\USA"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/USA"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/EUR/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/EUR"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\EUR"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/EUR"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/JAP/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/JAP"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\JAP"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/JAP"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dsp_rom.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dsp_coef.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "PPSSPP/ppge_atlas.zim",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/ppsspp/PSP/SYSTEM"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%USERPROFILE%\\Documents\\PPSSPP\\PSP\\SYSTEM"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/PPSSPP/PSP/SYSTEM"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dc/dc_boot.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/flycast/data",
|
||||||
|
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\flycast\\data"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dc/dc_nvmem.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/flycast/data",
|
||||||
|
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\flycast\\data"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
"total_files": 1540,
|
"total_files": 1540,
|
||||||
"total_size": 3891615271,
|
"total_size": 4337691265,
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"dest": "panafz1.bin",
|
"dest": "panafz1.bin",
|
||||||
@@ -2904,6 +3119,15 @@
|
|||||||
"blueMSX"
|
"blueMSX"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "Machines/Shared Roms/MSX2J.rom",
|
||||||
|
"sha1": "0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd",
|
||||||
|
"size": 32768,
|
||||||
|
"repo_path": "bios/Microsoft/MSX/.variants/MSX2.ROM.0081ea0d",
|
||||||
|
"cores": [
|
||||||
|
"blueMSX"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "Machines/Shared Roms/MSX2R2.ROM",
|
"dest": "Machines/Shared Roms/MSX2R2.ROM",
|
||||||
"sha1": "ebb7eb540a390509edfd36c84288ba85e63f2d1f",
|
"sha1": "ebb7eb540a390509edfd36c84288ba85e63f2d1f",
|
||||||
@@ -4498,7 +4722,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "MSX/msx.rom",
|
"dest": "MSX/MSX.ROM",
|
||||||
"sha1": "409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498",
|
"sha1": "409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498",
|
||||||
"size": 32768,
|
"size": 32768,
|
||||||
"repo_path": "bios/Microsoft/MSX/MSX.ROM",
|
"repo_path": "bios/Microsoft/MSX/MSX.ROM",
|
||||||
@@ -4543,7 +4767,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "MSX/msx2.rom",
|
"dest": "MSX/MSX2.ROM",
|
||||||
"sha1": "6103b39f1e38d1aa2d84b1c3219c44f1abb5436e",
|
"sha1": "6103b39f1e38d1aa2d84b1c3219c44f1abb5436e",
|
||||||
"size": 32768,
|
"size": 32768,
|
||||||
"repo_path": "bios/Microsoft/MSX/MSX2.ROM",
|
"repo_path": "bios/Microsoft/MSX/MSX2.ROM",
|
||||||
@@ -4552,7 +4776,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "MSX/msx2ext.rom",
|
"dest": "MSX/MSX2EXT.ROM",
|
||||||
"sha1": "5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02",
|
"sha1": "5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02",
|
||||||
"size": 16384,
|
"size": 16384,
|
||||||
"repo_path": "bios/Microsoft/MSX/MSX2EXT.ROM",
|
"repo_path": "bios/Microsoft/MSX/MSX2EXT.ROM",
|
||||||
@@ -6148,6 +6372,39 @@
|
|||||||
"FinalBurn Neo"
|
"FinalBurn Neo"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/donpachi.zip",
|
||||||
|
"sha1": "d380fb29287eb7fc9ff901a7653ad40785f7deb1",
|
||||||
|
"size": 208549253,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "donpachi.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/sfz3mix.zip",
|
||||||
|
"sha1": "937cdc6ccf9de418b94d8b762aad36822f857ec9",
|
||||||
|
"size": 116329446,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "sfz3mix.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/twotiger.zip",
|
||||||
|
"sha1": "74399cc36d97e9f74b387b87900505ebbf260ca9",
|
||||||
|
"size": 154888877,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "twotiger.zip"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "gamegenie.nes",
|
"dest": "gamegenie.nes",
|
||||||
"sha1": "f430a0d752a9fa0c7032db8131f9090d18f71779",
|
"sha1": "f430a0d752a9fa0c7032db8131f9090d18f71779",
|
||||||
@@ -8389,6 +8646,24 @@
|
|||||||
"NXEngine"
|
"NXEngine"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "nxengine/data/sprites.sif",
|
||||||
|
"sha1": "73acccee601b56a2b7f624b0227fa7e1d662ef4b",
|
||||||
|
"size": 59482,
|
||||||
|
"repo_path": "bios/Other/NXEngine/nxengine/data/sprites.sif",
|
||||||
|
"cores": [
|
||||||
|
"NXEngine"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "nxengine/tilekey.dat",
|
||||||
|
"sha1": "74c14b15dbc2f36c81d2ad9cb65e2893298415da",
|
||||||
|
"size": 1028,
|
||||||
|
"repo_path": "bios/Other/NXEngine/nxengine/tilekey.dat",
|
||||||
|
"cores": [
|
||||||
|
"NXEngine"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "NMS8245SystemROM1.08.bin",
|
"dest": "NMS8245SystemROM1.08.bin",
|
||||||
"sha1": "cc57c1dcd7249ea9f8e2547244592e7d97308ed0",
|
"sha1": "cc57c1dcd7249ea9f8e2547244592e7d97308ed0",
|
||||||
@@ -9100,69 +9375,6 @@
|
|||||||
"SquirrelJME"
|
"SquirrelJME"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"dest": "kvs1.wav",
|
|
||||||
"sha1": "b094c2c1fca81a0e531e0541f302346150ec4604",
|
|
||||||
"size": 3436329,
|
|
||||||
"repo_path": "bios/Atari/2600/KVS1.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvs2.wav",
|
|
||||||
"sha1": "8b83b2eea01b3e08ceb885aeb153d4084bddb63c",
|
|
||||||
"size": 2086275,
|
|
||||||
"repo_path": "bios/Atari/2600/KVS2.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvs3.wav",
|
|
||||||
"sha1": "86896a1e272d8715489de9b407f0b8a42f82d4a0",
|
|
||||||
"size": 3720920,
|
|
||||||
"repo_path": "bios/Atari/2600/KVS3.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvb1.wav",
|
|
||||||
"sha1": "6a582aebcefd6e2a97bdd8968202aab9851a889c",
|
|
||||||
"size": 4219542,
|
|
||||||
"repo_path": "bios/Atari/2600/KVB1.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvb2.wav",
|
|
||||||
"sha1": "60a425c6bde3226ab731995562716321be20fc49",
|
|
||||||
"size": 9593878,
|
|
||||||
"repo_path": "bios/Atari/2600/KVB2.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvb3.wav",
|
|
||||||
"sha1": "5e34125c4d6c209b21d1c892f3df0ec1644fd0d8",
|
|
||||||
"size": 7676992,
|
|
||||||
"repo_path": "bios/Atari/2600/KVB3.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvshared.wav",
|
|
||||||
"sha1": "9adf10cdf1de833b194c7d8797ad1f041ad98dd3",
|
|
||||||
"size": 3059116,
|
|
||||||
"repo_path": "bios/Atari/2600/KVSHARED.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"dest": "KVS1.WAV",
|
"dest": "KVS1.WAV",
|
||||||
"sha1": "b094c2c1fca81a0e531e0541f302346150ec4604",
|
"sha1": "b094c2c1fca81a0e531e0541f302346150ec4604",
|
||||||
@@ -10657,6 +10869,15 @@
|
|||||||
"XRoar"
|
"XRoar"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "delta2.rom",
|
||||||
|
"sha1": "686ebb5f39dd4fc907a0b748867d0a022d2f1a60",
|
||||||
|
"size": 8192,
|
||||||
|
"repo_path": "bios/Dragon/Dragon/delta2.rom",
|
||||||
|
"cores": [
|
||||||
|
"XRoar"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "cp450dsk.rom",
|
"dest": "cp450dsk.rom",
|
||||||
"sha1": "827697fa5b755f5dc1efb054cdbbeb04e405405b",
|
"sha1": "827697fa5b755f5dc1efb054cdbbeb04e405405b",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"platform": "bizhawk",
|
"platform": "bizhawk",
|
||||||
"display_name": "BizHawk",
|
"display_name": "BizHawk",
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"generated": "2026-04-01T14:00:10Z",
|
"generated": "2026-04-18T07:55:07Z",
|
||||||
"base_destination": "Firmware",
|
"base_destination": "Firmware",
|
||||||
"detect": [
|
"detect": [
|
||||||
{
|
{
|
||||||
@@ -19,8 +19,8 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"standalone_copies": [],
|
"standalone_copies": [],
|
||||||
"total_files": 527,
|
"total_files": 530,
|
||||||
"total_size": 2068127713,
|
"total_size": 2547895289,
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"dest": "panafz1.bin",
|
"dest": "panafz1.bin",
|
||||||
@@ -285,7 +285,7 @@
|
|||||||
"dest": "VEC_Minestorm.vec",
|
"dest": "VEC_Minestorm.vec",
|
||||||
"sha1": "65d07426b520ddd3115d40f255511e0fd2e20ae7",
|
"sha1": "65d07426b520ddd3115d40f255511e0fd2e20ae7",
|
||||||
"size": 8192,
|
"size": 8192,
|
||||||
"repo_path": "bios/GCE/Vectrex/VEC_MineStorm.vec",
|
"repo_path": "bios/GCE/Vectrex/VEC_Minestorm.vec",
|
||||||
"cores": null
|
"cores": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1274,6 +1274,39 @@
|
|||||||
"FinalBurn Neo"
|
"FinalBurn Neo"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/donpachi.zip",
|
||||||
|
"sha1": "d380fb29287eb7fc9ff901a7653ad40785f7deb1",
|
||||||
|
"size": 208549253,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "donpachi.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/sfz3mix.zip",
|
||||||
|
"sha1": "937cdc6ccf9de418b94d8b762aad36822f857ec9",
|
||||||
|
"size": 116329446,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "sfz3mix.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/twotiger.zip",
|
||||||
|
"sha1": "74399cc36d97e9f74b387b87900505ebbf260ca9",
|
||||||
|
"size": 154888877,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "twotiger.zip"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "sl31253.bin",
|
"dest": "sl31253.bin",
|
||||||
"sha1": "81193965a374d77b99b4743d317824b53c3e3c78",
|
"sha1": "81193965a374d77b99b4743d317824b53c3e3c78",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"platform": "emudeck",
|
"platform": "emudeck",
|
||||||
"display_name": "EmuDeck",
|
"display_name": "EmuDeck",
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"generated": "2026-04-01T14:41:53Z",
|
"generated": "2026-04-03T09:43:22Z",
|
||||||
"base_destination": "bios",
|
"base_destination": "bios",
|
||||||
"detect": [
|
"detect": [
|
||||||
{
|
{
|
||||||
@@ -34,19 +34,211 @@
|
|||||||
"linux": [
|
"linux": [
|
||||||
"$HOME/.local/share/yuzu/keys",
|
"$HOME/.local/share/yuzu/keys",
|
||||||
"$HOME/.local/share/eden/keys",
|
"$HOME/.local/share/eden/keys",
|
||||||
|
"$HOME/.local/share/citron/keys",
|
||||||
|
"$HOME/.local/share/suyu/keys",
|
||||||
"$HOME/.config/Ryujinx/system"
|
"$HOME/.config/Ryujinx/system"
|
||||||
],
|
],
|
||||||
"windows": [
|
"windows": [
|
||||||
"%APPDATA%\\yuzu\\keys",
|
"%APPDATA%\\yuzu\\keys",
|
||||||
"%APPDATA%\\eden\\keys"
|
"%APPDATA%\\eden\\keys",
|
||||||
|
"%APPDATA%\\citron\\keys",
|
||||||
|
"%APPDATA%\\suyu\\keys",
|
||||||
|
"%APPDATA%\\Ryujinx\\system"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/yuzu/keys",
|
||||||
|
"$HOME/Library/Application Support/Ryujinx/system"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "aes_keys.txt",
|
"file": "title.keys",
|
||||||
"targets": {
|
"targets": {
|
||||||
"linux": [
|
"linux": [
|
||||||
"$HOME/Emulation/bios/citra/keys"
|
"$HOME/.local/share/yuzu/keys",
|
||||||
|
"$HOME/.local/share/eden/keys",
|
||||||
|
"$HOME/.local/share/citron/keys",
|
||||||
|
"$HOME/.local/share/suyu/keys"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\yuzu\\keys",
|
||||||
|
"%APPDATA%\\eden\\keys",
|
||||||
|
"%APPDATA%\\citron\\keys",
|
||||||
|
"%APPDATA%\\suyu\\keys"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/yuzu/keys"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Citra/sysdata/aes_keys.txt",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/azahar/sysdata"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Azahar\\sysdata"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Citra/sysdata/boot9.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/azahar/sysdata"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Azahar\\sysdata"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "scph*.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/duckstation/bios"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%LOCALAPPDATA%\\DuckStation\\bios",
|
||||||
|
"%USERPROFILE%\\Documents\\DuckStation\\bios"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/DuckStation/bios"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "ps2-*.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/PCSX2/bios",
|
||||||
|
"$HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%USERPROFILE%\\Documents\\PCSX2\\bios"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/PCSX2/bios"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"note": "PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.",
|
||||||
|
"detect": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/rpcs3"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\rpcs3"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/USA/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/USA"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\USA"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/USA"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/EUR/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/EUR"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\EUR"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/EUR"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/JAP/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/JAP"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\JAP"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/JAP"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dsp_rom.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dsp_coef.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "PPSSPP/ppge_atlas.zim",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/ppsspp/PSP/SYSTEM"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%USERPROFILE%\\Documents\\PPSSPP\\PSP\\SYSTEM"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/PPSSPP/PSP/SYSTEM"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dc/dc_boot.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/flycast/data",
|
||||||
|
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\flycast\\data"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dc/dc_nvmem.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/flycast/data",
|
||||||
|
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\flycast\\data"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"platform": "lakka",
|
"platform": "lakka",
|
||||||
"display_name": "Lakka",
|
"display_name": "Lakka",
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"generated": "2026-04-01T14:42:08Z",
|
"generated": "2026-04-18T07:55:35Z",
|
||||||
"base_destination": "system",
|
"base_destination": "system",
|
||||||
"detect": [
|
"detect": [
|
||||||
{
|
{
|
||||||
@@ -15,8 +15,8 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"standalone_copies": [],
|
"standalone_copies": [],
|
||||||
"total_files": 1620,
|
"total_files": 1627,
|
||||||
"total_size": 5255358024,
|
"total_size": 5735234905,
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"dest": "3do_arcade_saot.bin",
|
"dest": "3do_arcade_saot.bin",
|
||||||
@@ -3438,6 +3438,15 @@
|
|||||||
"blueMSX"
|
"blueMSX"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "Machines/Shared Roms/MSX2J.rom",
|
||||||
|
"sha1": "0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd",
|
||||||
|
"size": 32768,
|
||||||
|
"repo_path": "bios/Microsoft/MSX/.variants/MSX2.ROM.0081ea0d",
|
||||||
|
"cores": [
|
||||||
|
"blueMSX"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "Machines/Shared Roms/MSX2R2.ROM",
|
"dest": "Machines/Shared Roms/MSX2R2.ROM",
|
||||||
"sha1": "ebb7eb540a390509edfd36c84288ba85e63f2d1f",
|
"sha1": "ebb7eb540a390509edfd36c84288ba85e63f2d1f",
|
||||||
@@ -5070,6 +5079,39 @@
|
|||||||
"storage": "release",
|
"storage": "release",
|
||||||
"release_asset": "vimana.zip"
|
"release_asset": "vimana.zip"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/donpachi.zip",
|
||||||
|
"sha1": "d380fb29287eb7fc9ff901a7653ad40785f7deb1",
|
||||||
|
"size": 208549253,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "donpachi.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/sfz3mix.zip",
|
||||||
|
"sha1": "937cdc6ccf9de418b94d8b762aad36822f857ec9",
|
||||||
|
"size": 116329446,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "sfz3mix.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/twotiger.zip",
|
||||||
|
"sha1": "74399cc36d97e9f74b387b87900505ebbf260ca9",
|
||||||
|
"size": 154888877,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "twotiger.zip"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "nes.pal",
|
"dest": "nes.pal",
|
||||||
"sha1": "37027d92e1015b82a7dc5c43e9f1649a961577ab",
|
"sha1": "37027d92e1015b82a7dc5c43e9f1649a961577ab",
|
||||||
@@ -7862,6 +7904,24 @@
|
|||||||
"NXEngine"
|
"NXEngine"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "nxengine/data/sprites.sif",
|
||||||
|
"sha1": "73acccee601b56a2b7f624b0227fa7e1d662ef4b",
|
||||||
|
"size": 59482,
|
||||||
|
"repo_path": "bios/Other/NXEngine/nxengine/data/sprites.sif",
|
||||||
|
"cores": [
|
||||||
|
"NXEngine"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "nxengine/tilekey.dat",
|
||||||
|
"sha1": "74c14b15dbc2f36c81d2ad9cb65e2893298415da",
|
||||||
|
"size": 1028,
|
||||||
|
"repo_path": "bios/Other/NXEngine/nxengine/tilekey.dat",
|
||||||
|
"cores": [
|
||||||
|
"NXEngine"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "mda.rom",
|
"dest": "mda.rom",
|
||||||
"sha1": "c2a8b10808bf51a3c123ba3eb1e9dd608231916f",
|
"sha1": "c2a8b10808bf51a3c123ba3eb1e9dd608231916f",
|
||||||
@@ -9650,6 +9710,15 @@
|
|||||||
"SameBoy"
|
"SameBoy"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "sdlpal/desc.dat",
|
||||||
|
"sha1": "8c20ff26ebfefbf9b050b67af8083704003595ba",
|
||||||
|
"size": 16027,
|
||||||
|
"repo_path": "bios/sdlpal/desc.dat",
|
||||||
|
"cores": [
|
||||||
|
"SDLPAL"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "SkyEmu/dmg_rom.bin",
|
"dest": "SkyEmu/dmg_rom.bin",
|
||||||
"sha1": "4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
"sha1": "4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
||||||
@@ -9768,66 +9837,66 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvs1.wav",
|
"dest": "KVS1.WAV",
|
||||||
"sha1": "b094c2c1fca81a0e531e0541f302346150ec4604",
|
"sha1": "b094c2c1fca81a0e531e0541f302346150ec4604",
|
||||||
"size": 3436329,
|
"size": 3436329,
|
||||||
"repo_path": "bios/Atari/2600/KVS1.WAV",
|
"repo_path": "bios/Atari/2600/KVS1.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvs2.wav",
|
"dest": "KVS2.WAV",
|
||||||
"sha1": "8b83b2eea01b3e08ceb885aeb153d4084bddb63c",
|
"sha1": "8b83b2eea01b3e08ceb885aeb153d4084bddb63c",
|
||||||
"size": 2086275,
|
"size": 2086275,
|
||||||
"repo_path": "bios/Atari/2600/KVS2.WAV",
|
"repo_path": "bios/Atari/2600/KVS2.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvs3.wav",
|
"dest": "KVS3.WAV",
|
||||||
"sha1": "86896a1e272d8715489de9b407f0b8a42f82d4a0",
|
"sha1": "86896a1e272d8715489de9b407f0b8a42f82d4a0",
|
||||||
"size": 3720920,
|
"size": 3720920,
|
||||||
"repo_path": "bios/Atari/2600/KVS3.WAV",
|
"repo_path": "bios/Atari/2600/KVS3.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvb1.wav",
|
"dest": "KVB1.WAV",
|
||||||
"sha1": "6a582aebcefd6e2a97bdd8968202aab9851a889c",
|
"sha1": "6a582aebcefd6e2a97bdd8968202aab9851a889c",
|
||||||
"size": 4219542,
|
"size": 4219542,
|
||||||
"repo_path": "bios/Atari/2600/KVB1.WAV",
|
"repo_path": "bios/Atari/2600/KVB1.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvb2.wav",
|
"dest": "KVB2.WAV",
|
||||||
"sha1": "60a425c6bde3226ab731995562716321be20fc49",
|
"sha1": "60a425c6bde3226ab731995562716321be20fc49",
|
||||||
"size": 9593878,
|
"size": 9593878,
|
||||||
"repo_path": "bios/Atari/2600/KVB2.WAV",
|
"repo_path": "bios/Atari/2600/KVB2.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvb3.wav",
|
"dest": "KVB3.WAV",
|
||||||
"sha1": "5e34125c4d6c209b21d1c892f3df0ec1644fd0d8",
|
"sha1": "5e34125c4d6c209b21d1c892f3df0ec1644fd0d8",
|
||||||
"size": 7676992,
|
"size": 7676992,
|
||||||
"repo_path": "bios/Atari/2600/KVB3.WAV",
|
"repo_path": "bios/Atari/2600/KVB3.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvshared.wav",
|
"dest": "KVSHARED.WAV",
|
||||||
"sha1": "9adf10cdf1de833b194c7d8797ad1f041ad98dd3",
|
"sha1": "9adf10cdf1de833b194c7d8797ad1f041ad98dd3",
|
||||||
"size": 3059116,
|
"size": 3059116,
|
||||||
"repo_path": "bios/Atari/2600/KVSHARED.WAV",
|
"repo_path": "bios/Atari/2600/KVSHARED.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"platform": "recalbox",
|
"platform": "recalbox",
|
||||||
"display_name": "Recalbox",
|
"display_name": "Recalbox",
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"generated": "2026-04-01T14:42:39Z",
|
"generated": "2026-04-18T07:56:06Z",
|
||||||
"base_destination": "bios",
|
"base_destination": "bios",
|
||||||
"detect": [
|
"detect": [
|
||||||
{
|
{
|
||||||
@@ -14,9 +14,224 @@
|
|||||||
"bios_path": "/recalbox/share/bios"
|
"bios_path": "/recalbox/share/bios"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"standalone_copies": [],
|
"standalone_copies": [
|
||||||
"total_files": 1097,
|
{
|
||||||
"total_size": 3500142330,
|
"file": "prod.keys",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/yuzu/keys",
|
||||||
|
"$HOME/.local/share/eden/keys",
|
||||||
|
"$HOME/.local/share/citron/keys",
|
||||||
|
"$HOME/.local/share/suyu/keys",
|
||||||
|
"$HOME/.config/Ryujinx/system"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\yuzu\\keys",
|
||||||
|
"%APPDATA%\\eden\\keys",
|
||||||
|
"%APPDATA%\\citron\\keys",
|
||||||
|
"%APPDATA%\\suyu\\keys",
|
||||||
|
"%APPDATA%\\Ryujinx\\system"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/yuzu/keys",
|
||||||
|
"$HOME/Library/Application Support/Ryujinx/system"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "title.keys",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/yuzu/keys",
|
||||||
|
"$HOME/.local/share/eden/keys",
|
||||||
|
"$HOME/.local/share/citron/keys",
|
||||||
|
"$HOME/.local/share/suyu/keys"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\yuzu\\keys",
|
||||||
|
"%APPDATA%\\eden\\keys",
|
||||||
|
"%APPDATA%\\citron\\keys",
|
||||||
|
"%APPDATA%\\suyu\\keys"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/yuzu/keys"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Citra/sysdata/aes_keys.txt",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/azahar/sysdata"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Azahar\\sysdata"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Citra/sysdata/boot9.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/azahar/sysdata"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Azahar\\sysdata"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "scph*.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/duckstation/bios"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%LOCALAPPDATA%\\DuckStation\\bios",
|
||||||
|
"%USERPROFILE%\\Documents\\DuckStation\\bios"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/DuckStation/bios"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "ps2-*.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/PCSX2/bios",
|
||||||
|
"$HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%USERPROFILE%\\Documents\\PCSX2\\bios"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/PCSX2/bios"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"note": "PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.",
|
||||||
|
"detect": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/rpcs3"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\rpcs3"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/USA/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/USA"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\USA"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/USA"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/EUR/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/EUR"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\EUR"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/EUR"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/JAP/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/JAP"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\JAP"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/JAP"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dsp_rom.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dsp_coef.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "PPSSPP/ppge_atlas.zim",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/ppsspp/PSP/SYSTEM"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%USERPROFILE%\\Documents\\PPSSPP\\PSP\\SYSTEM"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/PPSSPP/PSP/SYSTEM"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dc/dc_boot.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/flycast/data",
|
||||||
|
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\flycast\\data"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dc/dc_nvmem.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/flycast/data",
|
||||||
|
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\flycast\\data"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"total_files": 1100,
|
||||||
|
"total_size": 3946303603,
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"dest": "3do/panafz1.bin",
|
"dest": "3do/panafz1.bin",
|
||||||
@@ -540,7 +755,7 @@
|
|||||||
"dest": "dragon/deltados.rom",
|
"dest": "dragon/deltados.rom",
|
||||||
"sha1": "686ebb5f39dd4fc907a0b748867d0a022d2f1a60",
|
"sha1": "686ebb5f39dd4fc907a0b748867d0a022d2f1a60",
|
||||||
"size": 8192,
|
"size": 8192,
|
||||||
"repo_path": "bios/Dragon/Dragon/deltados.rom",
|
"repo_path": "bios/Dragon/Dragon/delta2.rom",
|
||||||
"cores": null
|
"cores": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -851,6 +1066,13 @@
|
|||||||
"repo_path": "bios/Microsoft/MSX/MSX2EXT.ROM",
|
"repo_path": "bios/Microsoft/MSX/MSX2EXT.ROM",
|
||||||
"cores": null
|
"cores": null
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "Machines/Shared Roms/MSX2J.rom",
|
||||||
|
"sha1": "0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd",
|
||||||
|
"size": 32768,
|
||||||
|
"repo_path": "bios/Microsoft/MSX/.variants/MSX2.ROM.0081ea0d",
|
||||||
|
"cores": null
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "Machines/Shared Roms/MSX2P.rom",
|
"dest": "Machines/Shared Roms/MSX2P.rom",
|
||||||
"sha1": "e90f80a61d94c617850c415e12ad70ac41e66bb7",
|
"sha1": "e90f80a61d94c617850c415e12ad70ac41e66bb7",
|
||||||
@@ -3797,6 +4019,39 @@
|
|||||||
"FinalBurn Neo"
|
"FinalBurn Neo"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/donpachi.zip",
|
||||||
|
"sha1": "d380fb29287eb7fc9ff901a7653ad40785f7deb1",
|
||||||
|
"size": 208549253,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "donpachi.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/sfz3mix.zip",
|
||||||
|
"sha1": "937cdc6ccf9de418b94d8b762aad36822f857ec9",
|
||||||
|
"size": 116329446,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "sfz3mix.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/twotiger.zip",
|
||||||
|
"sha1": "74399cc36d97e9f74b387b87900505ebbf260ca9",
|
||||||
|
"size": 154888877,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "twotiger.zip"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "gamegenie.nes",
|
"dest": "gamegenie.nes",
|
||||||
"sha1": "f430a0d752a9fa0c7032db8131f9090d18f71779",
|
"sha1": "f430a0d752a9fa0c7032db8131f9090d18f71779",
|
||||||
@@ -6452,6 +6707,24 @@
|
|||||||
"NXEngine"
|
"NXEngine"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "nxengine/data/sprites.sif",
|
||||||
|
"sha1": "73acccee601b56a2b7f624b0227fa7e1d662ef4b",
|
||||||
|
"size": 59482,
|
||||||
|
"repo_path": "bios/Other/NXEngine/nxengine/data/sprites.sif",
|
||||||
|
"cores": [
|
||||||
|
"NXEngine"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "nxengine/tilekey.dat",
|
||||||
|
"sha1": "74c14b15dbc2f36c81d2ad9cb65e2893298415da",
|
||||||
|
"size": 1028,
|
||||||
|
"repo_path": "bios/Other/NXEngine/nxengine/tilekey.dat",
|
||||||
|
"cores": [
|
||||||
|
"NXEngine"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "64DD_IPL.bin",
|
"dest": "64DD_IPL.bin",
|
||||||
"sha1": "bf861922dcb78c316360e3e742f4f70ff63c9bc3",
|
"sha1": "bf861922dcb78c316360e3e742f4f70ff63c9bc3",
|
||||||
@@ -6695,69 +6968,6 @@
|
|||||||
"SAME CDi"
|
"SAME CDi"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"dest": "kvs1.wav",
|
|
||||||
"sha1": "b094c2c1fca81a0e531e0541f302346150ec4604",
|
|
||||||
"size": 3436329,
|
|
||||||
"repo_path": "bios/Atari/2600/KVS1.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvs2.wav",
|
|
||||||
"sha1": "8b83b2eea01b3e08ceb885aeb153d4084bddb63c",
|
|
||||||
"size": 2086275,
|
|
||||||
"repo_path": "bios/Atari/2600/KVS2.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvs3.wav",
|
|
||||||
"sha1": "86896a1e272d8715489de9b407f0b8a42f82d4a0",
|
|
||||||
"size": 3720920,
|
|
||||||
"repo_path": "bios/Atari/2600/KVS3.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvb1.wav",
|
|
||||||
"sha1": "6a582aebcefd6e2a97bdd8968202aab9851a889c",
|
|
||||||
"size": 4219542,
|
|
||||||
"repo_path": "bios/Atari/2600/KVB1.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvb2.wav",
|
|
||||||
"sha1": "60a425c6bde3226ab731995562716321be20fc49",
|
|
||||||
"size": 9593878,
|
|
||||||
"repo_path": "bios/Atari/2600/KVB2.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvb3.wav",
|
|
||||||
"sha1": "5e34125c4d6c209b21d1c892f3df0ec1644fd0d8",
|
|
||||||
"size": 7676992,
|
|
||||||
"repo_path": "bios/Atari/2600/KVB3.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvshared.wav",
|
|
||||||
"sha1": "9adf10cdf1de833b194c7d8797ad1f041ad98dd3",
|
|
||||||
"size": 3059116,
|
|
||||||
"repo_path": "bios/Atari/2600/KVSHARED.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"dest": "KVS1.WAV",
|
"dest": "KVS1.WAV",
|
||||||
"sha1": "b094c2c1fca81a0e531e0541f302346150ec4604",
|
"sha1": "b094c2c1fca81a0e531e0541f302346150ec4604",
|
||||||
@@ -6821,6 +7031,33 @@
|
|||||||
"Stella 2023"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "Gram Kracker.ctg",
|
||||||
|
"sha1": "56dd520570cdcdd60dda2eedc8af1e02a781dcc5",
|
||||||
|
"size": 7587,
|
||||||
|
"repo_path": "bios/Texas Instruments/TI-99/Gram Kracker.ctg",
|
||||||
|
"cores": [
|
||||||
|
"ti99sim"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "ti-pcard.ctg",
|
||||||
|
"sha1": "c7bf5fcfea0502011dca76d12efcc242e23421b9",
|
||||||
|
"size": 71924,
|
||||||
|
"repo_path": "bios/Texas Instruments/TI-99/ti-pcard.ctg",
|
||||||
|
"cores": [
|
||||||
|
"ti99sim"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "cf7+.ctg",
|
||||||
|
"sha1": "698c638e1773244a6bf8a353c87d210047cce402",
|
||||||
|
"size": 5768,
|
||||||
|
"repo_path": "bios/Texas Instruments/TI-99/cf7+.ctg",
|
||||||
|
"cores": [
|
||||||
|
"ti99sim"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "JiffyDOS_SX-64.bin",
|
"dest": "JiffyDOS_SX-64.bin",
|
||||||
"sha1": "942c2150123dc30f40b3df6086132ef0a3c43948",
|
"sha1": "942c2150123dc30f40b3df6086132ef0a3c43948",
|
||||||
@@ -7046,6 +7283,15 @@
|
|||||||
"XRoar"
|
"XRoar"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "delta2.rom",
|
||||||
|
"sha1": "686ebb5f39dd4fc907a0b748867d0a022d2f1a60",
|
||||||
|
"size": 8192,
|
||||||
|
"repo_path": "bios/Dragon/Dragon/delta2.rom",
|
||||||
|
"cores": [
|
||||||
|
"XRoar"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "cp450dsk.rom",
|
"dest": "cp450dsk.rom",
|
||||||
"sha1": "827697fa5b755f5dc1efb054cdbbeb04e405405b",
|
"sha1": "827697fa5b755f5dc1efb054cdbbeb04e405405b",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"platform": "retroarch",
|
"platform": "retroarch",
|
||||||
"display_name": "RetroArch",
|
"display_name": "RetroArch",
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"generated": "2026-04-01T14:42:08Z",
|
"generated": "2026-04-18T07:55:35Z",
|
||||||
"base_destination": "system",
|
"base_destination": "system",
|
||||||
"detect": [
|
"detect": [
|
||||||
{
|
{
|
||||||
@@ -32,9 +32,224 @@
|
|||||||
"parse_key": "system_directory"
|
"parse_key": "system_directory"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"standalone_copies": [],
|
"standalone_copies": [
|
||||||
"total_files": 1620,
|
{
|
||||||
"total_size": 5255358024,
|
"file": "prod.keys",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/yuzu/keys",
|
||||||
|
"$HOME/.local/share/eden/keys",
|
||||||
|
"$HOME/.local/share/citron/keys",
|
||||||
|
"$HOME/.local/share/suyu/keys",
|
||||||
|
"$HOME/.config/Ryujinx/system"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\yuzu\\keys",
|
||||||
|
"%APPDATA%\\eden\\keys",
|
||||||
|
"%APPDATA%\\citron\\keys",
|
||||||
|
"%APPDATA%\\suyu\\keys",
|
||||||
|
"%APPDATA%\\Ryujinx\\system"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/yuzu/keys",
|
||||||
|
"$HOME/Library/Application Support/Ryujinx/system"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "title.keys",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/yuzu/keys",
|
||||||
|
"$HOME/.local/share/eden/keys",
|
||||||
|
"$HOME/.local/share/citron/keys",
|
||||||
|
"$HOME/.local/share/suyu/keys"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\yuzu\\keys",
|
||||||
|
"%APPDATA%\\eden\\keys",
|
||||||
|
"%APPDATA%\\citron\\keys",
|
||||||
|
"%APPDATA%\\suyu\\keys"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/yuzu/keys"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Citra/sysdata/aes_keys.txt",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/azahar/sysdata"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Azahar\\sysdata"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Citra/sysdata/boot9.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/azahar/sysdata"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Azahar\\sysdata"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "scph*.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/duckstation/bios"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%LOCALAPPDATA%\\DuckStation\\bios",
|
||||||
|
"%USERPROFILE%\\Documents\\DuckStation\\bios"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/DuckStation/bios"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "ps2-*.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/PCSX2/bios",
|
||||||
|
"$HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%USERPROFILE%\\Documents\\PCSX2\\bios"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/PCSX2/bios"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"note": "PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.",
|
||||||
|
"detect": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/rpcs3"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\rpcs3"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/USA/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/USA"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\USA"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/USA"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/EUR/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/EUR"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\EUR"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/EUR"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/JAP/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/JAP"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\JAP"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/JAP"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dsp_rom.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dsp_coef.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "PPSSPP/ppge_atlas.zim",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/ppsspp/PSP/SYSTEM"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%USERPROFILE%\\Documents\\PPSSPP\\PSP\\SYSTEM"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/PPSSPP/PSP/SYSTEM"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dc/dc_boot.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/flycast/data",
|
||||||
|
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\flycast\\data"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dc/dc_nvmem.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/flycast/data",
|
||||||
|
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\flycast\\data"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"total_files": 1627,
|
||||||
|
"total_size": 5735234905,
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"dest": "3do_arcade_saot.bin",
|
"dest": "3do_arcade_saot.bin",
|
||||||
@@ -3456,6 +3671,15 @@
|
|||||||
"blueMSX"
|
"blueMSX"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "Machines/Shared Roms/MSX2J.rom",
|
||||||
|
"sha1": "0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd",
|
||||||
|
"size": 32768,
|
||||||
|
"repo_path": "bios/Microsoft/MSX/.variants/MSX2.ROM.0081ea0d",
|
||||||
|
"cores": [
|
||||||
|
"blueMSX"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "Machines/Shared Roms/MSX2R2.ROM",
|
"dest": "Machines/Shared Roms/MSX2R2.ROM",
|
||||||
"sha1": "ebb7eb540a390509edfd36c84288ba85e63f2d1f",
|
"sha1": "ebb7eb540a390509edfd36c84288ba85e63f2d1f",
|
||||||
@@ -5088,6 +5312,39 @@
|
|||||||
"storage": "release",
|
"storage": "release",
|
||||||
"release_asset": "vimana.zip"
|
"release_asset": "vimana.zip"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/donpachi.zip",
|
||||||
|
"sha1": "d380fb29287eb7fc9ff901a7653ad40785f7deb1",
|
||||||
|
"size": 208549253,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "donpachi.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/sfz3mix.zip",
|
||||||
|
"sha1": "937cdc6ccf9de418b94d8b762aad36822f857ec9",
|
||||||
|
"size": 116329446,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "sfz3mix.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/twotiger.zip",
|
||||||
|
"sha1": "74399cc36d97e9f74b387b87900505ebbf260ca9",
|
||||||
|
"size": 154888877,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "twotiger.zip"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "nes.pal",
|
"dest": "nes.pal",
|
||||||
"sha1": "37027d92e1015b82a7dc5c43e9f1649a961577ab",
|
"sha1": "37027d92e1015b82a7dc5c43e9f1649a961577ab",
|
||||||
@@ -7880,6 +8137,24 @@
|
|||||||
"NXEngine"
|
"NXEngine"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "nxengine/data/sprites.sif",
|
||||||
|
"sha1": "73acccee601b56a2b7f624b0227fa7e1d662ef4b",
|
||||||
|
"size": 59482,
|
||||||
|
"repo_path": "bios/Other/NXEngine/nxengine/data/sprites.sif",
|
||||||
|
"cores": [
|
||||||
|
"NXEngine"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "nxengine/tilekey.dat",
|
||||||
|
"sha1": "74c14b15dbc2f36c81d2ad9cb65e2893298415da",
|
||||||
|
"size": 1028,
|
||||||
|
"repo_path": "bios/Other/NXEngine/nxengine/tilekey.dat",
|
||||||
|
"cores": [
|
||||||
|
"NXEngine"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "mda.rom",
|
"dest": "mda.rom",
|
||||||
"sha1": "c2a8b10808bf51a3c123ba3eb1e9dd608231916f",
|
"sha1": "c2a8b10808bf51a3c123ba3eb1e9dd608231916f",
|
||||||
@@ -9668,6 +9943,15 @@
|
|||||||
"SameBoy"
|
"SameBoy"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "sdlpal/desc.dat",
|
||||||
|
"sha1": "8c20ff26ebfefbf9b050b67af8083704003595ba",
|
||||||
|
"size": 16027,
|
||||||
|
"repo_path": "bios/sdlpal/desc.dat",
|
||||||
|
"cores": [
|
||||||
|
"SDLPAL"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "SkyEmu/dmg_rom.bin",
|
"dest": "SkyEmu/dmg_rom.bin",
|
||||||
"sha1": "4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
"sha1": "4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
||||||
@@ -9786,66 +10070,66 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvs1.wav",
|
"dest": "KVS1.WAV",
|
||||||
"sha1": "b094c2c1fca81a0e531e0541f302346150ec4604",
|
"sha1": "b094c2c1fca81a0e531e0541f302346150ec4604",
|
||||||
"size": 3436329,
|
"size": 3436329,
|
||||||
"repo_path": "bios/Atari/2600/KVS1.WAV",
|
"repo_path": "bios/Atari/2600/KVS1.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvs2.wav",
|
"dest": "KVS2.WAV",
|
||||||
"sha1": "8b83b2eea01b3e08ceb885aeb153d4084bddb63c",
|
"sha1": "8b83b2eea01b3e08ceb885aeb153d4084bddb63c",
|
||||||
"size": 2086275,
|
"size": 2086275,
|
||||||
"repo_path": "bios/Atari/2600/KVS2.WAV",
|
"repo_path": "bios/Atari/2600/KVS2.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvs3.wav",
|
"dest": "KVS3.WAV",
|
||||||
"sha1": "86896a1e272d8715489de9b407f0b8a42f82d4a0",
|
"sha1": "86896a1e272d8715489de9b407f0b8a42f82d4a0",
|
||||||
"size": 3720920,
|
"size": 3720920,
|
||||||
"repo_path": "bios/Atari/2600/KVS3.WAV",
|
"repo_path": "bios/Atari/2600/KVS3.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvb1.wav",
|
"dest": "KVB1.WAV",
|
||||||
"sha1": "6a582aebcefd6e2a97bdd8968202aab9851a889c",
|
"sha1": "6a582aebcefd6e2a97bdd8968202aab9851a889c",
|
||||||
"size": 4219542,
|
"size": 4219542,
|
||||||
"repo_path": "bios/Atari/2600/KVB1.WAV",
|
"repo_path": "bios/Atari/2600/KVB1.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvb2.wav",
|
"dest": "KVB2.WAV",
|
||||||
"sha1": "60a425c6bde3226ab731995562716321be20fc49",
|
"sha1": "60a425c6bde3226ab731995562716321be20fc49",
|
||||||
"size": 9593878,
|
"size": 9593878,
|
||||||
"repo_path": "bios/Atari/2600/KVB2.WAV",
|
"repo_path": "bios/Atari/2600/KVB2.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvb3.wav",
|
"dest": "KVB3.WAV",
|
||||||
"sha1": "5e34125c4d6c209b21d1c892f3df0ec1644fd0d8",
|
"sha1": "5e34125c4d6c209b21d1c892f3df0ec1644fd0d8",
|
||||||
"size": 7676992,
|
"size": 7676992,
|
||||||
"repo_path": "bios/Atari/2600/KVB3.WAV",
|
"repo_path": "bios/Atari/2600/KVB3.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "kvshared.wav",
|
"dest": "KVSHARED.WAV",
|
||||||
"sha1": "9adf10cdf1de833b194c7d8797ad1f041ad98dd3",
|
"sha1": "9adf10cdf1de833b194c7d8797ad1f041ad98dd3",
|
||||||
"size": 3059116,
|
"size": 3059116,
|
||||||
"repo_path": "bios/Atari/2600/KVSHARED.WAV",
|
"repo_path": "bios/Atari/2600/KVSHARED.WAV",
|
||||||
"cores": [
|
"cores": [
|
||||||
"Stella 2014"
|
"Stella 2023"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"platform": "retrobat",
|
"platform": "retrobat",
|
||||||
"display_name": "RetroBat",
|
"display_name": "RetroBat",
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"generated": "2026-04-01T14:42:50Z",
|
"generated": "2026-04-03T09:44:16Z",
|
||||||
"base_destination": "bios",
|
"base_destination": "bios",
|
||||||
"detect": [
|
"detect": [
|
||||||
{
|
{
|
||||||
@@ -13,9 +13,224 @@
|
|||||||
"path": "%USERPROFILE%\\RetroBat\\bios"
|
"path": "%USERPROFILE%\\RetroBat\\bios"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"standalone_copies": [],
|
"standalone_copies": [
|
||||||
"total_files": 1162,
|
{
|
||||||
"total_size": 4297772175,
|
"file": "prod.keys",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/yuzu/keys",
|
||||||
|
"$HOME/.local/share/eden/keys",
|
||||||
|
"$HOME/.local/share/citron/keys",
|
||||||
|
"$HOME/.local/share/suyu/keys",
|
||||||
|
"$HOME/.config/Ryujinx/system"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\yuzu\\keys",
|
||||||
|
"%APPDATA%\\eden\\keys",
|
||||||
|
"%APPDATA%\\citron\\keys",
|
||||||
|
"%APPDATA%\\suyu\\keys",
|
||||||
|
"%APPDATA%\\Ryujinx\\system"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/yuzu/keys",
|
||||||
|
"$HOME/Library/Application Support/Ryujinx/system"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "title.keys",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/yuzu/keys",
|
||||||
|
"$HOME/.local/share/eden/keys",
|
||||||
|
"$HOME/.local/share/citron/keys",
|
||||||
|
"$HOME/.local/share/suyu/keys"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\yuzu\\keys",
|
||||||
|
"%APPDATA%\\eden\\keys",
|
||||||
|
"%APPDATA%\\citron\\keys",
|
||||||
|
"%APPDATA%\\suyu\\keys"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/yuzu/keys"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Citra/sysdata/aes_keys.txt",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/azahar/sysdata"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Azahar\\sysdata"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Citra/sysdata/boot9.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/azahar/sysdata"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Azahar\\sysdata"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "scph*.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/duckstation/bios"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%LOCALAPPDATA%\\DuckStation\\bios",
|
||||||
|
"%USERPROFILE%\\Documents\\DuckStation\\bios"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/DuckStation/bios"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "ps2-*.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/PCSX2/bios",
|
||||||
|
"$HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%USERPROFILE%\\Documents\\PCSX2\\bios"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/PCSX2/bios"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"note": "PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.",
|
||||||
|
"detect": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/rpcs3"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\rpcs3"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/USA/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/USA"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\USA"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/USA"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/EUR/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/EUR"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\EUR"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/EUR"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/JAP/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/JAP"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\JAP"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/JAP"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dsp_rom.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dsp_coef.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "PPSSPP/ppge_atlas.zim",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/ppsspp/PSP/SYSTEM"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%USERPROFILE%\\Documents\\PPSSPP\\PSP\\SYSTEM"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/PPSSPP/PSP/SYSTEM"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dc/dc_boot.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/flycast/data",
|
||||||
|
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\flycast\\data"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dc/dc_nvmem.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/flycast/data",
|
||||||
|
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\flycast\\data"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"total_files": 1169,
|
||||||
|
"total_size": 4777641221,
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"dest": "panafz1.bin",
|
"dest": "panafz1.bin",
|
||||||
@@ -2525,6 +2740,15 @@
|
|||||||
"blueMSX"
|
"blueMSX"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "Machines/Shared Roms/MSX2J.rom",
|
||||||
|
"sha1": "0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd",
|
||||||
|
"size": 32768,
|
||||||
|
"repo_path": "bios/Microsoft/MSX/.variants/MSX2.ROM.0081ea0d",
|
||||||
|
"cores": [
|
||||||
|
"blueMSX"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "Machines/Shared Roms/MSX2R2.ROM",
|
"dest": "Machines/Shared Roms/MSX2R2.ROM",
|
||||||
"sha1": "ebb7eb540a390509edfd36c84288ba85e63f2d1f",
|
"sha1": "ebb7eb540a390509edfd36c84288ba85e63f2d1f",
|
||||||
@@ -3968,6 +4192,39 @@
|
|||||||
"storage": "release",
|
"storage": "release",
|
||||||
"release_asset": "vimana.zip"
|
"release_asset": "vimana.zip"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/donpachi.zip",
|
||||||
|
"sha1": "d380fb29287eb7fc9ff901a7653ad40785f7deb1",
|
||||||
|
"size": 208549253,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "donpachi.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/sfz3mix.zip",
|
||||||
|
"sha1": "937cdc6ccf9de418b94d8b762aad36822f857ec9",
|
||||||
|
"size": 116329446,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "sfz3mix.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/twotiger.zip",
|
||||||
|
"sha1": "74399cc36d97e9f74b387b87900505ebbf260ca9",
|
||||||
|
"size": 154888877,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "twotiger.zip"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "gamegenie.nes",
|
"dest": "gamegenie.nes",
|
||||||
"sha1": "f430a0d752a9fa0c7032db8131f9090d18f71779",
|
"sha1": "f430a0d752a9fa0c7032db8131f9090d18f71779",
|
||||||
@@ -6191,6 +6448,24 @@
|
|||||||
"NXEngine"
|
"NXEngine"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "nxengine/data/sprites.sif",
|
||||||
|
"sha1": "73acccee601b56a2b7f624b0227fa7e1d662ef4b",
|
||||||
|
"size": 59482,
|
||||||
|
"repo_path": "bios/Other/NXEngine/nxengine/data/sprites.sif",
|
||||||
|
"cores": [
|
||||||
|
"NXEngine"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "nxengine/tilekey.dat",
|
||||||
|
"sha1": "74c14b15dbc2f36c81d2ad9cb65e2893298415da",
|
||||||
|
"size": 1028,
|
||||||
|
"repo_path": "bios/Other/NXEngine/nxengine/tilekey.dat",
|
||||||
|
"cores": [
|
||||||
|
"NXEngine"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "panafz1j.bin",
|
"dest": "panafz1j.bin",
|
||||||
"sha1": "ec7ec62d60ec0459a14ed56ebc66761ef3c80efc",
|
"sha1": "ec7ec62d60ec0459a14ed56ebc66761ef3c80efc",
|
||||||
@@ -7439,6 +7714,15 @@
|
|||||||
"XRoar"
|
"XRoar"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "delta2.rom",
|
||||||
|
"sha1": "686ebb5f39dd4fc907a0b748867d0a022d2f1a60",
|
||||||
|
"size": 8192,
|
||||||
|
"repo_path": "bios/Dragon/Dragon/delta2.rom",
|
||||||
|
"cores": [
|
||||||
|
"XRoar"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "cp450dsk.rom",
|
"dest": "cp450dsk.rom",
|
||||||
"sha1": "827697fa5b755f5dc1efb054cdbbeb04e405405b",
|
"sha1": "827697fa5b755f5dc1efb054cdbbeb04e405405b",
|
||||||
|
|||||||
@@ -4,19 +4,234 @@
|
|||||||
"platform": "retrodeck",
|
"platform": "retrodeck",
|
||||||
"display_name": "RetroDECK",
|
"display_name": "RetroDECK",
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"generated": "2026-04-01T14:43:08Z",
|
"generated": "2026-04-18T07:56:37Z",
|
||||||
"base_destination": "",
|
"base_destination": "",
|
||||||
"detect": [
|
"detect": [
|
||||||
{
|
{
|
||||||
"os": "linux",
|
"os": "linux",
|
||||||
"method": "path_exists",
|
"method": "path_exists",
|
||||||
"path": "$HOME/.var/app/net.retrodeck.retrodeck",
|
"path": "$HOME/.var/app/net.retrodeck.retrodeck",
|
||||||
"bios_path": "$HOME/retrodeck/bios"
|
"bios_path": "$HOME/retrodeck"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"standalone_copies": [],
|
"standalone_copies": [
|
||||||
"total_files": 3144,
|
{
|
||||||
"total_size": 5871582893,
|
"file": "prod.keys",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/yuzu/keys",
|
||||||
|
"$HOME/.local/share/eden/keys",
|
||||||
|
"$HOME/.local/share/citron/keys",
|
||||||
|
"$HOME/.local/share/suyu/keys",
|
||||||
|
"$HOME/.config/Ryujinx/system"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\yuzu\\keys",
|
||||||
|
"%APPDATA%\\eden\\keys",
|
||||||
|
"%APPDATA%\\citron\\keys",
|
||||||
|
"%APPDATA%\\suyu\\keys",
|
||||||
|
"%APPDATA%\\Ryujinx\\system"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/yuzu/keys",
|
||||||
|
"$HOME/Library/Application Support/Ryujinx/system"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "title.keys",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/yuzu/keys",
|
||||||
|
"$HOME/.local/share/eden/keys",
|
||||||
|
"$HOME/.local/share/citron/keys",
|
||||||
|
"$HOME/.local/share/suyu/keys"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\yuzu\\keys",
|
||||||
|
"%APPDATA%\\eden\\keys",
|
||||||
|
"%APPDATA%\\citron\\keys",
|
||||||
|
"%APPDATA%\\suyu\\keys"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/yuzu/keys"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Citra/sysdata/aes_keys.txt",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/azahar/sysdata"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Azahar\\sysdata"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Citra/sysdata/boot9.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/azahar/sysdata"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Azahar\\sysdata"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "scph*.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/duckstation/bios"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%LOCALAPPDATA%\\DuckStation\\bios",
|
||||||
|
"%USERPROFILE%\\Documents\\DuckStation\\bios"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/DuckStation/bios"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "ps2-*.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/PCSX2/bios",
|
||||||
|
"$HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%USERPROFILE%\\Documents\\PCSX2\\bios"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/PCSX2/bios"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"note": "PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.",
|
||||||
|
"detect": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/rpcs3"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\rpcs3"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/USA/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/USA"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\USA"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/USA"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/EUR/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/EUR"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\EUR"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/EUR"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "GC/JAP/IPL.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu/GC/JAP"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator\\GC\\JAP"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin/GC/JAP"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dsp_rom.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dsp_coef.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/dolphin-emu"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\Dolphin Emulator"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/Dolphin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "PPSSPP/ppge_atlas.zim",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.config/ppsspp/PSP/SYSTEM"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%USERPROFILE%\\Documents\\PPSSPP\\PSP\\SYSTEM"
|
||||||
|
],
|
||||||
|
"darwin": [
|
||||||
|
"$HOME/Library/Application Support/PPSSPP/PSP/SYSTEM"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dc/dc_boot.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/flycast/data",
|
||||||
|
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\flycast\\data"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "dc/dc_nvmem.bin",
|
||||||
|
"targets": {
|
||||||
|
"linux": [
|
||||||
|
"$HOME/.local/share/flycast/data",
|
||||||
|
"$HOME/.var/app/org.flycast.Flycast/data/flycast"
|
||||||
|
],
|
||||||
|
"windows": [
|
||||||
|
"%APPDATA%\\flycast\\data"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"total_files": 3146,
|
||||||
|
"total_size": 6317707682,
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"dest": "bios/panafz1.bin",
|
"dest": "bios/panafz1.bin",
|
||||||
@@ -11082,7 +11297,7 @@
|
|||||||
"dest": "bios/deltados.rom",
|
"dest": "bios/deltados.rom",
|
||||||
"sha1": "686ebb5f39dd4fc907a0b748867d0a022d2f1a60",
|
"sha1": "686ebb5f39dd4fc907a0b748867d0a022d2f1a60",
|
||||||
"size": 8192,
|
"size": 8192,
|
||||||
"repo_path": "bios/Dragon/Dragon/deltados.rom",
|
"repo_path": "bios/Dragon/Dragon/delta2.rom",
|
||||||
"cores": null
|
"cores": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -11477,6 +11692,13 @@
|
|||||||
"repo_path": "bios/Microsoft/MSX/openmsx/yrw801.rom",
|
"repo_path": "bios/Microsoft/MSX/openmsx/yrw801.rom",
|
||||||
"cores": null
|
"cores": null
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "bios/MSX2J.rom",
|
||||||
|
"sha1": "0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd",
|
||||||
|
"size": 32768,
|
||||||
|
"repo_path": "bios/Microsoft/MSX/.variants/MSX2.ROM.0081ea0d",
|
||||||
|
"cores": null
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "bios/MSX2R2.ROM",
|
"dest": "bios/MSX2R2.ROM",
|
||||||
"sha1": "04990aa1c3a3fc7294ec884b81deaa89832df614",
|
"sha1": "04990aa1c3a3fc7294ec884b81deaa89832df614",
|
||||||
@@ -13657,10 +13879,10 @@
|
|||||||
"cores": null
|
"cores": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"dest": "bios/VEC_MineStorm.vec",
|
"dest": "bios/VEC_Minestorm.vec",
|
||||||
"sha1": "65d07426b520ddd3115d40f255511e0fd2e20ae7",
|
"sha1": "65d07426b520ddd3115d40f255511e0fd2e20ae7",
|
||||||
"size": 8192,
|
"size": 8192,
|
||||||
"repo_path": "bios/GCE/Vectrex/VEC_MineStorm.vec",
|
"repo_path": "bios/GCE/Vectrex/VEC_Minestorm.vec",
|
||||||
"cores": null
|
"cores": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -16290,6 +16512,39 @@
|
|||||||
"storage": "release",
|
"storage": "release",
|
||||||
"release_asset": "vimana.zip"
|
"release_asset": "vimana.zip"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/donpachi.zip",
|
||||||
|
"sha1": "d380fb29287eb7fc9ff901a7653ad40785f7deb1",
|
||||||
|
"size": 208549253,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "donpachi.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/sfz3mix.zip",
|
||||||
|
"sha1": "937cdc6ccf9de418b94d8b762aad36822f857ec9",
|
||||||
|
"size": 116329446,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "sfz3mix.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "fbneo/samples/twotiger.zip",
|
||||||
|
"sha1": "74399cc36d97e9f74b387b87900505ebbf260ca9",
|
||||||
|
"size": 154888877,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "twotiger.zip"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "gamegenie.nes",
|
"dest": "gamegenie.nes",
|
||||||
"sha1": "f430a0d752a9fa0c7032db8131f9090d18f71779",
|
"sha1": "f430a0d752a9fa0c7032db8131f9090d18f71779",
|
||||||
@@ -18256,6 +18511,24 @@
|
|||||||
"NXEngine"
|
"NXEngine"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "nxengine/data/sprites.sif",
|
||||||
|
"sha1": "73acccee601b56a2b7f624b0227fa7e1d662ef4b",
|
||||||
|
"size": 59482,
|
||||||
|
"repo_path": "bios/Other/NXEngine/nxengine/data/sprites.sif",
|
||||||
|
"cores": [
|
||||||
|
"NXEngine"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "nxengine/tilekey.dat",
|
||||||
|
"sha1": "74c14b15dbc2f36c81d2ad9cb65e2893298415da",
|
||||||
|
"size": 1028,
|
||||||
|
"repo_path": "bios/Other/NXEngine/nxengine/tilekey.dat",
|
||||||
|
"cores": [
|
||||||
|
"NXEngine"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "mda.rom",
|
"dest": "mda.rom",
|
||||||
"sha1": "c2a8b10808bf51a3c123ba3eb1e9dd608231916f",
|
"sha1": "c2a8b10808bf51a3c123ba3eb1e9dd608231916f",
|
||||||
@@ -20037,6 +20310,15 @@
|
|||||||
"SameBoy"
|
"SameBoy"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "sdlpal/desc.dat",
|
||||||
|
"sha1": "8c20ff26ebfefbf9b050b67af8083704003595ba",
|
||||||
|
"size": 16027,
|
||||||
|
"repo_path": "bios/sdlpal/desc.dat",
|
||||||
|
"cores": [
|
||||||
|
"SDLPAL"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "SkyEmu/dmg_rom.bin",
|
"dest": "SkyEmu/dmg_rom.bin",
|
||||||
"sha1": "4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
"sha1": "4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
||||||
@@ -20154,69 +20436,6 @@
|
|||||||
"SquirrelJME"
|
"SquirrelJME"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"dest": "kvs1.wav",
|
|
||||||
"sha1": "b094c2c1fca81a0e531e0541f302346150ec4604",
|
|
||||||
"size": 3436329,
|
|
||||||
"repo_path": "bios/Atari/2600/KVS1.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvs2.wav",
|
|
||||||
"sha1": "8b83b2eea01b3e08ceb885aeb153d4084bddb63c",
|
|
||||||
"size": 2086275,
|
|
||||||
"repo_path": "bios/Atari/2600/KVS2.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvs3.wav",
|
|
||||||
"sha1": "86896a1e272d8715489de9b407f0b8a42f82d4a0",
|
|
||||||
"size": 3720920,
|
|
||||||
"repo_path": "bios/Atari/2600/KVS3.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvb1.wav",
|
|
||||||
"sha1": "6a582aebcefd6e2a97bdd8968202aab9851a889c",
|
|
||||||
"size": 4219542,
|
|
||||||
"repo_path": "bios/Atari/2600/KVB1.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvb2.wav",
|
|
||||||
"sha1": "60a425c6bde3226ab731995562716321be20fc49",
|
|
||||||
"size": 9593878,
|
|
||||||
"repo_path": "bios/Atari/2600/KVB2.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvb3.wav",
|
|
||||||
"sha1": "5e34125c4d6c209b21d1c892f3df0ec1644fd0d8",
|
|
||||||
"size": 7676992,
|
|
||||||
"repo_path": "bios/Atari/2600/KVB3.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dest": "kvshared.wav",
|
|
||||||
"sha1": "9adf10cdf1de833b194c7d8797ad1f041ad98dd3",
|
|
||||||
"size": 3059116,
|
|
||||||
"repo_path": "bios/Atari/2600/KVSHARED.WAV",
|
|
||||||
"cores": [
|
|
||||||
"Stella 2014"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"dest": "KVS1.WAV",
|
"dest": "KVS1.WAV",
|
||||||
"sha1": "b094c2c1fca81a0e531e0541f302346150ec4604",
|
"sha1": "b094c2c1fca81a0e531e0541f302346150ec4604",
|
||||||
@@ -21733,6 +21952,15 @@
|
|||||||
"XRoar"
|
"XRoar"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "delta2.rom",
|
||||||
|
"sha1": "686ebb5f39dd4fc907a0b748867d0a022d2f1a60",
|
||||||
|
"size": 8192,
|
||||||
|
"repo_path": "bios/Dragon/Dragon/delta2.rom",
|
||||||
|
"cores": [
|
||||||
|
"XRoar"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "cp450dsk.rom",
|
"dest": "cp450dsk.rom",
|
||||||
"sha1": "827697fa5b755f5dc1efb054cdbbeb04e405405b",
|
"sha1": "827697fa5b755f5dc1efb054cdbbeb04e405405b",
|
||||||
@@ -22300,6 +22528,15 @@
|
|||||||
"blueMSX"
|
"blueMSX"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "Machines/Shared Roms/MSX2J.rom",
|
||||||
|
"sha1": "0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd",
|
||||||
|
"size": 32768,
|
||||||
|
"repo_path": "bios/Microsoft/MSX/.variants/MSX2.ROM.0081ea0d",
|
||||||
|
"cores": [
|
||||||
|
"blueMSX"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "Machines/Shared Roms/MSX2R2.ROM",
|
"dest": "Machines/Shared Roms/MSX2R2.ROM",
|
||||||
"sha1": "ebb7eb540a390509edfd36c84288ba85e63f2d1f",
|
"sha1": "ebb7eb540a390509edfd36c84288ba85e63f2d1f",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"platform": "romm",
|
"platform": "romm",
|
||||||
"display_name": "RomM",
|
"display_name": "RomM",
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"generated": "2026-04-01T14:43:09Z",
|
"generated": "2026-04-02T13:53:45Z",
|
||||||
"base_destination": "bios",
|
"base_destination": "bios",
|
||||||
"detect": [
|
"detect": [
|
||||||
{
|
{
|
||||||
@@ -14,8 +14,8 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"standalone_copies": [],
|
"standalone_copies": [],
|
||||||
"total_files": 535,
|
"total_files": 538,
|
||||||
"total_size": 1076531155,
|
"total_size": 1556298731,
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"dest": "3do/3do_arcade_saot.bin",
|
"dest": "3do/3do_arcade_saot.bin",
|
||||||
@@ -2796,6 +2796,39 @@
|
|||||||
"ep128emu-core"
|
"ep128emu-core"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dest": "colecovision/fbneo/samples/donpachi.zip",
|
||||||
|
"sha1": "d380fb29287eb7fc9ff901a7653ad40785f7deb1",
|
||||||
|
"size": 208549253,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "donpachi.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "colecovision/fbneo/samples/sfz3mix.zip",
|
||||||
|
"sha1": "937cdc6ccf9de418b94d8b762aad36822f857ec9",
|
||||||
|
"size": 116329446,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "sfz3mix.zip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dest": "colecovision/fbneo/samples/twotiger.zip",
|
||||||
|
"sha1": "74399cc36d97e9f74b387b87900505ebbf260ca9",
|
||||||
|
"size": 154888877,
|
||||||
|
"repo_path": "",
|
||||||
|
"cores": [
|
||||||
|
"FinalBurn Neo"
|
||||||
|
],
|
||||||
|
"storage": "release",
|
||||||
|
"release_asset": "twotiger.zip"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dest": "fds/gamegenie.nes",
|
"dest": "fds/gamegenie.nes",
|
||||||
"sha1": "f430a0d752a9fa0c7032db8131f9090d18f71779",
|
"sha1": "f430a0d752a9fa0c7032db8131f9090d18f71779",
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ theme:
|
|||||||
icon: material/brightness-4
|
icon: material/brightness-4
|
||||||
name: Switch to auto
|
name: Switch to auto
|
||||||
font: false
|
font: false
|
||||||
|
logo: assets/images/logo.png
|
||||||
|
favicon: assets/images/favicon.png
|
||||||
icon:
|
icon:
|
||||||
logo: material/chip
|
logo: material/chip
|
||||||
features:
|
features:
|
||||||
@@ -52,6 +54,7 @@ plugins:
|
|||||||
- search
|
- search
|
||||||
nav:
|
nav:
|
||||||
- Home: index.md
|
- Home: index.md
|
||||||
|
- Download: which-pack.md
|
||||||
- Platforms:
|
- Platforms:
|
||||||
- Overview: platforms/index.md
|
- Overview: platforms/index.md
|
||||||
- Batocera: platforms/batocera.md
|
- Batocera: platforms/batocera.md
|
||||||
@@ -138,6 +141,7 @@ nav:
|
|||||||
- VTech: systems/vtech.md
|
- VTech: systems/vtech.md
|
||||||
- Vircon: systems/vircon.md
|
- Vircon: systems/vircon.md
|
||||||
- ZC: systems/zc.md
|
- ZC: systems/zc.md
|
||||||
|
- sdlpal: systems/sdlpal.md
|
||||||
- Emulators:
|
- Emulators:
|
||||||
- Overview: emulators/index.md
|
- Overview: emulators/index.md
|
||||||
- Official ports (63):
|
- Official ports (63):
|
||||||
@@ -479,4 +483,5 @@ nav:
|
|||||||
- Adding a scraper: wiki/adding-a-scraper.md
|
- Adding a scraper: wiki/adding-a-scraper.md
|
||||||
- Testing guide: wiki/testing-guide.md
|
- Testing guide: wiki/testing-guide.md
|
||||||
- Release process: wiki/release-process.md
|
- Release process: wiki/release-process.md
|
||||||
|
- Community tools: wiki/community-tools.md
|
||||||
- Contributing: contributing.md
|
- Contributing: contributing.md
|
||||||
|
|||||||
@@ -150,22 +150,23 @@ data_directories:
|
|||||||
description: "SDLPAL Chinese Paladin game data (.mkf archives)"
|
description: "SDLPAL Chinese Paladin game data (.mkf archives)"
|
||||||
|
|
||||||
# ref: OpenTyrian2000 — system/opentyrian/tyrian/
|
# ref: OpenTyrian2000 — system/opentyrian/tyrian/
|
||||||
# Tyrian 2.1 freeware data (also on buildbot as OpenTyrian.zip)
|
# Tyrian 2.1 freeware data (buildbot URLs removed, sourced from release asset)
|
||||||
opentyrian:
|
opentyrian:
|
||||||
source_url: "https://buildbot.libretro.com/assets/system/OpenTyrian%20%28Game%20Data%29.zip"
|
source_url: "https://github.com/Abdess/retrobios/releases/download/large-files/opentyrian-data.zip"
|
||||||
source_type: zip
|
source_type: zip
|
||||||
for_platforms: [retroarch, lakka, retropie]
|
for_platforms: [retroarch, lakka, retropie]
|
||||||
local_cache: data/opentyrian
|
local_cache: data/opentyrian
|
||||||
description: "OpenTyrian Tyrian 2.1 freeware game data"
|
description: "OpenTyrian Tyrian 2.1 freeware game data"
|
||||||
|
|
||||||
# ref: syobonaction — system/syobonaction/
|
# ref: syobonaction — system/syobonaction/
|
||||||
# Freeware game data from OpenSyobonAction
|
# Freeware game data from OpenSyobonAction (BGM, res, SE directories)
|
||||||
syobonaction:
|
syobonaction:
|
||||||
source_url: "https://github.com/akemin-dayo/OpenSyobonAction"
|
source_url: "https://github.com/akemin-dayo/OpenSyobonAction/archive/refs/heads/{version}.tar.gz"
|
||||||
source_type: git_subtree
|
source_type: tarball
|
||||||
source_path: "res"
|
source_path: "OpenSyobonAction-master"
|
||||||
version: master
|
version: master
|
||||||
local_cache: data/syobonaction
|
local_cache: data/syobonaction
|
||||||
|
exclude: [DxLib.cpp, DxLib.h, icon.ico, joyconfig.h, loadg.cpp, main.cpp, main.h, Makefile, README_ja.md, README.md]
|
||||||
description: "Syobon Action (Cat Mario) game data (sprites, BGM, SE)"
|
description: "Syobon Action (Cat Mario) game data (sprites, BGM, SE)"
|
||||||
|
|
||||||
# =========================================================================
|
# =========================================================================
|
||||||
@@ -190,9 +191,10 @@ data_directories:
|
|||||||
# Not on buildbot — sourced from libretro repo
|
# Not on buildbot — sourced from libretro repo
|
||||||
# 532 files (tiles, fonts, databases, lua scripts, level descriptions)
|
# 532 files (tiles, fonts, databases, lua scripts, level descriptions)
|
||||||
stonesoup:
|
stonesoup:
|
||||||
source_url: "https://github.com/libretro/crawl-ref"
|
source_url: "https://github.com/libretro/crawl-ref/archive/refs/heads/{version}.tar.gz"
|
||||||
source_type: git_subtree
|
source_type: tarball
|
||||||
source_path: "crawl-ref/source/dat"
|
source_path: "crawl-ref-master/crawl-ref/source/dat"
|
||||||
|
version: master
|
||||||
local_cache: data/stonesoup
|
local_cache: data/stonesoup
|
||||||
description: "DCSS game data (tiles, fonts, databases, lua, level descriptions)"
|
description: "DCSS game data (tiles, fonts, databases, lua, level descriptions)"
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,144 @@ platforms:
|
|||||||
method: config_file
|
method: config_file
|
||||||
config: '%APPDATA%\RetroArch\retroarch.cfg'
|
config: '%APPDATA%\RetroArch\retroarch.cfg'
|
||||||
parse_key: system_directory
|
parse_key: system_directory
|
||||||
|
standalone_copies:
|
||||||
|
# Switch emulators (keys)
|
||||||
|
- file: prod.keys
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/yuzu/keys
|
||||||
|
- $HOME/.local/share/eden/keys
|
||||||
|
- $HOME/.local/share/citron/keys
|
||||||
|
- $HOME/.local/share/suyu/keys
|
||||||
|
- $HOME/.config/Ryujinx/system
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\yuzu\keys'
|
||||||
|
- '%APPDATA%\eden\keys'
|
||||||
|
- '%APPDATA%\citron\keys'
|
||||||
|
- '%APPDATA%\suyu\keys'
|
||||||
|
- '%APPDATA%\Ryujinx\system'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/yuzu/keys
|
||||||
|
- $HOME/Library/Application Support/Ryujinx/system
|
||||||
|
- file: title.keys
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/yuzu/keys
|
||||||
|
- $HOME/.local/share/eden/keys
|
||||||
|
- $HOME/.local/share/citron/keys
|
||||||
|
- $HOME/.local/share/suyu/keys
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\yuzu\keys'
|
||||||
|
- '%APPDATA%\eden\keys'
|
||||||
|
- '%APPDATA%\citron\keys'
|
||||||
|
- '%APPDATA%\suyu\keys'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/yuzu/keys
|
||||||
|
# 3DS emulators
|
||||||
|
- file: Citra/sysdata/aes_keys.txt
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/azahar/sysdata
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Azahar\sysdata'
|
||||||
|
- file: Citra/sysdata/boot9.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/azahar/sysdata
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Azahar\sysdata'
|
||||||
|
# DuckStation (PS1)
|
||||||
|
- pattern: 'scph*.bin'
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/duckstation/bios
|
||||||
|
windows:
|
||||||
|
- '%LOCALAPPDATA%\DuckStation\bios'
|
||||||
|
- '%USERPROFILE%\Documents\DuckStation\bios'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/DuckStation/bios
|
||||||
|
# PCSX2 (PS2)
|
||||||
|
- pattern: 'ps2-*.bin'
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/PCSX2/bios
|
||||||
|
- $HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios
|
||||||
|
windows:
|
||||||
|
- '%USERPROFILE%\Documents\PCSX2\bios'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/PCSX2/bios
|
||||||
|
# RPCS3 (PS3) - needs menu install
|
||||||
|
- note: 'PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.'
|
||||||
|
detect:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/rpcs3
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\rpcs3'
|
||||||
|
# Dolphin (GameCube)
|
||||||
|
- file: GC/USA/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/USA
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\USA'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/USA
|
||||||
|
- file: GC/EUR/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/EUR
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\EUR'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/EUR
|
||||||
|
- file: GC/JAP/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/JAP
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\JAP'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/JAP
|
||||||
|
- file: dsp_rom.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin
|
||||||
|
- file: dsp_coef.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin
|
||||||
|
# PPSSPP
|
||||||
|
- file: PPSSPP/ppge_atlas.zim
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/ppsspp/PSP/SYSTEM
|
||||||
|
windows:
|
||||||
|
- '%USERPROFILE%\Documents\PPSSPP\PSP\SYSTEM'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/PPSSPP/PSP/SYSTEM
|
||||||
|
# Flycast (Dreamcast)
|
||||||
|
- file: dc/dc_boot.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/flycast/data
|
||||||
|
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\flycast\data'
|
||||||
|
- file: dc/dc_nvmem.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/flycast/data
|
||||||
|
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\flycast\data'
|
||||||
batocera:
|
batocera:
|
||||||
config: batocera.yml
|
config: batocera.yml
|
||||||
status: active
|
status: active
|
||||||
@@ -256,6 +394,144 @@ platforms:
|
|||||||
method: file_exists
|
method: file_exists
|
||||||
file: /etc/batocera-version
|
file: /etc/batocera-version
|
||||||
bios_path: /userdata/bios
|
bios_path: /userdata/bios
|
||||||
|
standalone_copies:
|
||||||
|
# Switch emulators (keys)
|
||||||
|
- file: prod.keys
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/yuzu/keys
|
||||||
|
- $HOME/.local/share/eden/keys
|
||||||
|
- $HOME/.local/share/citron/keys
|
||||||
|
- $HOME/.local/share/suyu/keys
|
||||||
|
- $HOME/.config/Ryujinx/system
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\yuzu\keys'
|
||||||
|
- '%APPDATA%\eden\keys'
|
||||||
|
- '%APPDATA%\citron\keys'
|
||||||
|
- '%APPDATA%\suyu\keys'
|
||||||
|
- '%APPDATA%\Ryujinx\system'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/yuzu/keys
|
||||||
|
- $HOME/Library/Application Support/Ryujinx/system
|
||||||
|
- file: title.keys
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/yuzu/keys
|
||||||
|
- $HOME/.local/share/eden/keys
|
||||||
|
- $HOME/.local/share/citron/keys
|
||||||
|
- $HOME/.local/share/suyu/keys
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\yuzu\keys'
|
||||||
|
- '%APPDATA%\eden\keys'
|
||||||
|
- '%APPDATA%\citron\keys'
|
||||||
|
- '%APPDATA%\suyu\keys'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/yuzu/keys
|
||||||
|
# 3DS emulators
|
||||||
|
- file: Citra/sysdata/aes_keys.txt
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/azahar/sysdata
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Azahar\sysdata'
|
||||||
|
- file: Citra/sysdata/boot9.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/azahar/sysdata
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Azahar\sysdata'
|
||||||
|
# DuckStation (PS1)
|
||||||
|
- pattern: 'scph*.bin'
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/duckstation/bios
|
||||||
|
windows:
|
||||||
|
- '%LOCALAPPDATA%\DuckStation\bios'
|
||||||
|
- '%USERPROFILE%\Documents\DuckStation\bios'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/DuckStation/bios
|
||||||
|
# PCSX2 (PS2)
|
||||||
|
- pattern: 'ps2-*.bin'
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/PCSX2/bios
|
||||||
|
- $HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios
|
||||||
|
windows:
|
||||||
|
- '%USERPROFILE%\Documents\PCSX2\bios'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/PCSX2/bios
|
||||||
|
# RPCS3 (PS3) - needs menu install
|
||||||
|
- note: 'PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.'
|
||||||
|
detect:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/rpcs3
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\rpcs3'
|
||||||
|
# Dolphin (GameCube)
|
||||||
|
- file: GC/USA/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/USA
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\USA'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/USA
|
||||||
|
- file: GC/EUR/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/EUR
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\EUR'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/EUR
|
||||||
|
- file: GC/JAP/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/JAP
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\JAP'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/JAP
|
||||||
|
- file: dsp_rom.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin
|
||||||
|
- file: dsp_coef.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin
|
||||||
|
# PPSSPP
|
||||||
|
- file: PPSSPP/ppge_atlas.zim
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/ppsspp/PSP/SYSTEM
|
||||||
|
windows:
|
||||||
|
- '%USERPROFILE%\Documents\PPSSPP\PSP\SYSTEM'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/PPSSPP/PSP/SYSTEM
|
||||||
|
# Flycast (Dreamcast)
|
||||||
|
- file: dc/dc_boot.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/flycast/data
|
||||||
|
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\flycast\data'
|
||||||
|
- file: dc/dc_nvmem.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/flycast/data
|
||||||
|
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\flycast\data'
|
||||||
recalbox:
|
recalbox:
|
||||||
config: recalbox.yml
|
config: recalbox.yml
|
||||||
status: active
|
status: active
|
||||||
@@ -468,6 +744,144 @@ platforms:
|
|||||||
method: file_exists
|
method: file_exists
|
||||||
file: /usr/bin/recalbox-settings
|
file: /usr/bin/recalbox-settings
|
||||||
bios_path: /recalbox/share/bios
|
bios_path: /recalbox/share/bios
|
||||||
|
standalone_copies:
|
||||||
|
# Switch emulators (keys)
|
||||||
|
- file: prod.keys
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/yuzu/keys
|
||||||
|
- $HOME/.local/share/eden/keys
|
||||||
|
- $HOME/.local/share/citron/keys
|
||||||
|
- $HOME/.local/share/suyu/keys
|
||||||
|
- $HOME/.config/Ryujinx/system
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\yuzu\keys'
|
||||||
|
- '%APPDATA%\eden\keys'
|
||||||
|
- '%APPDATA%\citron\keys'
|
||||||
|
- '%APPDATA%\suyu\keys'
|
||||||
|
- '%APPDATA%\Ryujinx\system'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/yuzu/keys
|
||||||
|
- $HOME/Library/Application Support/Ryujinx/system
|
||||||
|
- file: title.keys
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/yuzu/keys
|
||||||
|
- $HOME/.local/share/eden/keys
|
||||||
|
- $HOME/.local/share/citron/keys
|
||||||
|
- $HOME/.local/share/suyu/keys
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\yuzu\keys'
|
||||||
|
- '%APPDATA%\eden\keys'
|
||||||
|
- '%APPDATA%\citron\keys'
|
||||||
|
- '%APPDATA%\suyu\keys'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/yuzu/keys
|
||||||
|
# 3DS emulators
|
||||||
|
- file: Citra/sysdata/aes_keys.txt
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/azahar/sysdata
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Azahar\sysdata'
|
||||||
|
- file: Citra/sysdata/boot9.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/azahar/sysdata
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Azahar\sysdata'
|
||||||
|
# DuckStation (PS1)
|
||||||
|
- pattern: 'scph*.bin'
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/duckstation/bios
|
||||||
|
windows:
|
||||||
|
- '%LOCALAPPDATA%\DuckStation\bios'
|
||||||
|
- '%USERPROFILE%\Documents\DuckStation\bios'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/DuckStation/bios
|
||||||
|
# PCSX2 (PS2)
|
||||||
|
- pattern: 'ps2-*.bin'
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/PCSX2/bios
|
||||||
|
- $HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios
|
||||||
|
windows:
|
||||||
|
- '%USERPROFILE%\Documents\PCSX2\bios'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/PCSX2/bios
|
||||||
|
# RPCS3 (PS3) - needs menu install
|
||||||
|
- note: 'PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.'
|
||||||
|
detect:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/rpcs3
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\rpcs3'
|
||||||
|
# Dolphin (GameCube)
|
||||||
|
- file: GC/USA/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/USA
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\USA'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/USA
|
||||||
|
- file: GC/EUR/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/EUR
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\EUR'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/EUR
|
||||||
|
- file: GC/JAP/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/JAP
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\JAP'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/JAP
|
||||||
|
- file: dsp_rom.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin
|
||||||
|
- file: dsp_coef.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin
|
||||||
|
# PPSSPP
|
||||||
|
- file: PPSSPP/ppge_atlas.zim
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/ppsspp/PSP/SYSTEM
|
||||||
|
windows:
|
||||||
|
- '%USERPROFILE%\Documents\PPSSPP\PSP\SYSTEM'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/PPSSPP/PSP/SYSTEM
|
||||||
|
# Flycast (Dreamcast)
|
||||||
|
- file: dc/dc_boot.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/flycast/data
|
||||||
|
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\flycast\data'
|
||||||
|
- file: dc/dc_nvmem.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/flycast/data
|
||||||
|
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\flycast\data'
|
||||||
retrobat:
|
retrobat:
|
||||||
config: retrobat.yml
|
config: retrobat.yml
|
||||||
status: active
|
status: active
|
||||||
@@ -653,6 +1067,144 @@ platforms:
|
|||||||
- os: windows
|
- os: windows
|
||||||
method: path_exists
|
method: path_exists
|
||||||
path: '%USERPROFILE%\RetroBat\bios'
|
path: '%USERPROFILE%\RetroBat\bios'
|
||||||
|
standalone_copies:
|
||||||
|
# Switch emulators (keys)
|
||||||
|
- file: prod.keys
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/yuzu/keys
|
||||||
|
- $HOME/.local/share/eden/keys
|
||||||
|
- $HOME/.local/share/citron/keys
|
||||||
|
- $HOME/.local/share/suyu/keys
|
||||||
|
- $HOME/.config/Ryujinx/system
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\yuzu\keys'
|
||||||
|
- '%APPDATA%\eden\keys'
|
||||||
|
- '%APPDATA%\citron\keys'
|
||||||
|
- '%APPDATA%\suyu\keys'
|
||||||
|
- '%APPDATA%\Ryujinx\system'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/yuzu/keys
|
||||||
|
- $HOME/Library/Application Support/Ryujinx/system
|
||||||
|
- file: title.keys
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/yuzu/keys
|
||||||
|
- $HOME/.local/share/eden/keys
|
||||||
|
- $HOME/.local/share/citron/keys
|
||||||
|
- $HOME/.local/share/suyu/keys
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\yuzu\keys'
|
||||||
|
- '%APPDATA%\eden\keys'
|
||||||
|
- '%APPDATA%\citron\keys'
|
||||||
|
- '%APPDATA%\suyu\keys'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/yuzu/keys
|
||||||
|
# 3DS emulators
|
||||||
|
- file: Citra/sysdata/aes_keys.txt
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/azahar/sysdata
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Azahar\sysdata'
|
||||||
|
- file: Citra/sysdata/boot9.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/azahar/sysdata
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Azahar\sysdata'
|
||||||
|
# DuckStation (PS1)
|
||||||
|
- pattern: 'scph*.bin'
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/duckstation/bios
|
||||||
|
windows:
|
||||||
|
- '%LOCALAPPDATA%\DuckStation\bios'
|
||||||
|
- '%USERPROFILE%\Documents\DuckStation\bios'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/DuckStation/bios
|
||||||
|
# PCSX2 (PS2)
|
||||||
|
- pattern: 'ps2-*.bin'
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/PCSX2/bios
|
||||||
|
- $HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios
|
||||||
|
windows:
|
||||||
|
- '%USERPROFILE%\Documents\PCSX2\bios'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/PCSX2/bios
|
||||||
|
# RPCS3 (PS3) - needs menu install
|
||||||
|
- note: 'PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.'
|
||||||
|
detect:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/rpcs3
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\rpcs3'
|
||||||
|
# Dolphin (GameCube)
|
||||||
|
- file: GC/USA/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/USA
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\USA'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/USA
|
||||||
|
- file: GC/EUR/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/EUR
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\EUR'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/EUR
|
||||||
|
- file: GC/JAP/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/JAP
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\JAP'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/JAP
|
||||||
|
- file: dsp_rom.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin
|
||||||
|
- file: dsp_coef.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin
|
||||||
|
# PPSSPP
|
||||||
|
- file: PPSSPP/ppge_atlas.zim
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/ppsspp/PSP/SYSTEM
|
||||||
|
windows:
|
||||||
|
- '%USERPROFILE%\Documents\PPSSPP\PSP\SYSTEM'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/PPSSPP/PSP/SYSTEM
|
||||||
|
# Flycast (Dreamcast)
|
||||||
|
- file: dc/dc_boot.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/flycast/data
|
||||||
|
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\flycast\data'
|
||||||
|
- file: dc/dc_nvmem.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/flycast/data
|
||||||
|
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\flycast\data'
|
||||||
emudeck:
|
emudeck:
|
||||||
config: emudeck.yml
|
config: emudeck.yml
|
||||||
status: active
|
status: active
|
||||||
@@ -681,19 +1233,143 @@ platforms:
|
|||||||
parse_key: $emulationPath
|
parse_key: $emulationPath
|
||||||
bios_subdir: bios
|
bios_subdir: bios
|
||||||
standalone_copies:
|
standalone_copies:
|
||||||
|
# Switch emulators (keys)
|
||||||
- file: prod.keys
|
- file: prod.keys
|
||||||
targets:
|
targets:
|
||||||
linux:
|
linux:
|
||||||
- $HOME/.local/share/yuzu/keys
|
- $HOME/.local/share/yuzu/keys
|
||||||
- $HOME/.local/share/eden/keys
|
- $HOME/.local/share/eden/keys
|
||||||
|
- $HOME/.local/share/citron/keys
|
||||||
|
- $HOME/.local/share/suyu/keys
|
||||||
- $HOME/.config/Ryujinx/system
|
- $HOME/.config/Ryujinx/system
|
||||||
windows:
|
windows:
|
||||||
- '%APPDATA%\yuzu\keys'
|
- '%APPDATA%\yuzu\keys'
|
||||||
- '%APPDATA%\eden\keys'
|
- '%APPDATA%\eden\keys'
|
||||||
- file: aes_keys.txt
|
- '%APPDATA%\citron\keys'
|
||||||
|
- '%APPDATA%\suyu\keys'
|
||||||
|
- '%APPDATA%\Ryujinx\system'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/yuzu/keys
|
||||||
|
- $HOME/Library/Application Support/Ryujinx/system
|
||||||
|
- file: title.keys
|
||||||
targets:
|
targets:
|
||||||
linux:
|
linux:
|
||||||
- $HOME/Emulation/bios/citra/keys
|
- $HOME/.local/share/yuzu/keys
|
||||||
|
- $HOME/.local/share/eden/keys
|
||||||
|
- $HOME/.local/share/citron/keys
|
||||||
|
- $HOME/.local/share/suyu/keys
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\yuzu\keys'
|
||||||
|
- '%APPDATA%\eden\keys'
|
||||||
|
- '%APPDATA%\citron\keys'
|
||||||
|
- '%APPDATA%\suyu\keys'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/yuzu/keys
|
||||||
|
# 3DS emulators
|
||||||
|
- file: Citra/sysdata/aes_keys.txt
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/azahar/sysdata
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Azahar\sysdata'
|
||||||
|
- file: Citra/sysdata/boot9.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/azahar/sysdata
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Azahar\sysdata'
|
||||||
|
# DuckStation (PS1)
|
||||||
|
- pattern: 'scph*.bin'
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/duckstation/bios
|
||||||
|
windows:
|
||||||
|
- '%LOCALAPPDATA%\DuckStation\bios'
|
||||||
|
- '%USERPROFILE%\Documents\DuckStation\bios'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/DuckStation/bios
|
||||||
|
# PCSX2 (PS2)
|
||||||
|
- pattern: 'ps2-*.bin'
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/PCSX2/bios
|
||||||
|
- $HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios
|
||||||
|
windows:
|
||||||
|
- '%USERPROFILE%\Documents\PCSX2\bios'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/PCSX2/bios
|
||||||
|
# RPCS3 (PS3) - needs menu install
|
||||||
|
- note: 'PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.'
|
||||||
|
detect:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/rpcs3
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\rpcs3'
|
||||||
|
# Dolphin (GameCube)
|
||||||
|
- file: GC/USA/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/USA
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\USA'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/USA
|
||||||
|
- file: GC/EUR/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/EUR
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\EUR'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/EUR
|
||||||
|
- file: GC/JAP/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/JAP
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\JAP'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/JAP
|
||||||
|
- file: dsp_rom.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin
|
||||||
|
- file: dsp_coef.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin
|
||||||
|
# PPSSPP
|
||||||
|
- file: PPSSPP/ppge_atlas.zim
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/ppsspp/PSP/SYSTEM
|
||||||
|
windows:
|
||||||
|
- '%USERPROFILE%\Documents\PPSSPP\PSP\SYSTEM'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/PPSSPP/PSP/SYSTEM
|
||||||
|
# Flycast (Dreamcast)
|
||||||
|
- file: dc/dc_boot.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/flycast/data
|
||||||
|
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\flycast\data'
|
||||||
|
- file: dc/dc_nvmem.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/flycast/data
|
||||||
|
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\flycast\data'
|
||||||
lakka:
|
lakka:
|
||||||
config: lakka.yml
|
config: lakka.yml
|
||||||
status: active
|
status: active
|
||||||
@@ -719,6 +1395,10 @@ platforms:
|
|||||||
source_format: github_component_manifests
|
source_format: github_component_manifests
|
||||||
hash_type: md5
|
hash_type: md5
|
||||||
schedule: monthly
|
schedule: monthly
|
||||||
|
contributed_by:
|
||||||
|
- username: monster-penguin
|
||||||
|
contribution: platform support
|
||||||
|
pr: 36
|
||||||
cores:
|
cores:
|
||||||
- azahar
|
- azahar
|
||||||
- cemu
|
- cemu
|
||||||
@@ -748,7 +1428,145 @@ platforms:
|
|||||||
- os: linux
|
- os: linux
|
||||||
method: path_exists
|
method: path_exists
|
||||||
path: $HOME/.var/app/net.retrodeck.retrodeck
|
path: $HOME/.var/app/net.retrodeck.retrodeck
|
||||||
bios_path: $HOME/retrodeck/bios
|
bios_path: $HOME/retrodeck
|
||||||
|
standalone_copies:
|
||||||
|
# Switch emulators (keys)
|
||||||
|
- file: prod.keys
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/yuzu/keys
|
||||||
|
- $HOME/.local/share/eden/keys
|
||||||
|
- $HOME/.local/share/citron/keys
|
||||||
|
- $HOME/.local/share/suyu/keys
|
||||||
|
- $HOME/.config/Ryujinx/system
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\yuzu\keys'
|
||||||
|
- '%APPDATA%\eden\keys'
|
||||||
|
- '%APPDATA%\citron\keys'
|
||||||
|
- '%APPDATA%\suyu\keys'
|
||||||
|
- '%APPDATA%\Ryujinx\system'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/yuzu/keys
|
||||||
|
- $HOME/Library/Application Support/Ryujinx/system
|
||||||
|
- file: title.keys
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/yuzu/keys
|
||||||
|
- $HOME/.local/share/eden/keys
|
||||||
|
- $HOME/.local/share/citron/keys
|
||||||
|
- $HOME/.local/share/suyu/keys
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\yuzu\keys'
|
||||||
|
- '%APPDATA%\eden\keys'
|
||||||
|
- '%APPDATA%\citron\keys'
|
||||||
|
- '%APPDATA%\suyu\keys'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/yuzu/keys
|
||||||
|
# 3DS emulators
|
||||||
|
- file: Citra/sysdata/aes_keys.txt
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/azahar/sysdata
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Azahar\sysdata'
|
||||||
|
- file: Citra/sysdata/boot9.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/azahar/sysdata
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Azahar\sysdata'
|
||||||
|
# DuckStation (PS1)
|
||||||
|
- pattern: 'scph*.bin'
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/duckstation/bios
|
||||||
|
windows:
|
||||||
|
- '%LOCALAPPDATA%\DuckStation\bios'
|
||||||
|
- '%USERPROFILE%\Documents\DuckStation\bios'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/DuckStation/bios
|
||||||
|
# PCSX2 (PS2)
|
||||||
|
- pattern: 'ps2-*.bin'
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/PCSX2/bios
|
||||||
|
- $HOME/.var/app/net.pcsx2.PCSX2/config/PCSX2/bios
|
||||||
|
windows:
|
||||||
|
- '%USERPROFILE%\Documents\PCSX2\bios'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/PCSX2/bios
|
||||||
|
# RPCS3 (PS3) - needs menu install
|
||||||
|
- note: 'PS3 firmware (PS3UPDAT.PUP) found. Install via RPCS3 > File > Install Firmware.'
|
||||||
|
detect:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/rpcs3
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\rpcs3'
|
||||||
|
# Dolphin (GameCube)
|
||||||
|
- file: GC/USA/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/USA
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\USA'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/USA
|
||||||
|
- file: GC/EUR/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/EUR
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\EUR'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/EUR
|
||||||
|
- file: GC/JAP/IPL.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu/GC/JAP
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator\GC\JAP'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin/GC/JAP
|
||||||
|
- file: dsp_rom.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin
|
||||||
|
- file: dsp_coef.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/dolphin-emu
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\Dolphin Emulator'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/Dolphin
|
||||||
|
# PPSSPP
|
||||||
|
- file: PPSSPP/ppge_atlas.zim
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.config/ppsspp/PSP/SYSTEM
|
||||||
|
windows:
|
||||||
|
- '%USERPROFILE%\Documents\PPSSPP\PSP\SYSTEM'
|
||||||
|
darwin:
|
||||||
|
- $HOME/Library/Application Support/PPSSPP/PSP/SYSTEM
|
||||||
|
# Flycast (Dreamcast)
|
||||||
|
- file: dc/dc_boot.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/flycast/data
|
||||||
|
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\flycast\data'
|
||||||
|
- file: dc/dc_nvmem.bin
|
||||||
|
targets:
|
||||||
|
linux:
|
||||||
|
- $HOME/.local/share/flycast/data
|
||||||
|
- $HOME/.var/app/org.flycast.Flycast/data/flycast
|
||||||
|
windows:
|
||||||
|
- '%APPDATA%\flycast\data'
|
||||||
romm:
|
romm:
|
||||||
config: romm.yml
|
config: romm.yml
|
||||||
status: active
|
status: active
|
||||||
@@ -758,6 +1576,10 @@ platforms:
|
|||||||
source_format: json
|
source_format: json
|
||||||
hash_type: sha1
|
hash_type: sha1
|
||||||
schedule: monthly
|
schedule: monthly
|
||||||
|
contributed_by:
|
||||||
|
- username: PixNyb
|
||||||
|
contribution: platform support
|
||||||
|
pr: 37
|
||||||
inherits_from: emulatorjs
|
inherits_from: emulatorjs
|
||||||
target_scraper: null
|
target_scraper: null
|
||||||
target_source: null
|
target_source: null
|
||||||
|
|||||||
@@ -7978,8 +7978,8 @@ systems:
|
|||||||
- name: Vectrex_Bios.bin
|
- name: Vectrex_Bios.bin
|
||||||
destination: bios/Vectrex_Bios.bin
|
destination: bios/Vectrex_Bios.bin
|
||||||
required: false
|
required: false
|
||||||
- name: VEC_MineStorm.vec
|
- name: VEC_Minestorm.vec
|
||||||
destination: bios/VEC_MineStorm.vec
|
destination: bios/VEC_Minestorm.vec
|
||||||
required: false
|
required: false
|
||||||
vsmile:
|
vsmile:
|
||||||
files:
|
files:
|
||||||
|
|||||||
@@ -743,15 +743,13 @@ def group_identical_platforms(
|
|||||||
inherits[platform] = False
|
inherits[platform] = False
|
||||||
continue
|
continue
|
||||||
|
|
||||||
base_dest = config.get("base_destination", "")
|
|
||||||
entries = []
|
entries = []
|
||||||
for sys_id, system in sorted(config.get("systems", {}).items()):
|
for sys_id, system in sorted(config.get("systems", {}).items()):
|
||||||
for fe in system.get("files", []):
|
for fe in system.get("files", []):
|
||||||
dest = fe.get("destination", fe.get("name", ""))
|
dest = fe.get("destination", fe.get("name", ""))
|
||||||
full_dest = f"{base_dest}/{dest}" if base_dest else dest
|
|
||||||
sha1 = fe.get("sha1", "")
|
sha1 = fe.get("sha1", "")
|
||||||
md5 = fe.get("md5", "")
|
md5 = fe.get("md5", "")
|
||||||
entries.append(f"{full_dest}|{sha1}|{md5}")
|
entries.append(f"{dest}|{sha1}|{md5}")
|
||||||
|
|
||||||
fp = hashlib.sha1("|".join(sorted(entries)).encode()).hexdigest()
|
fp = hashlib.sha1("|".join(sorted(entries)).encode()).hexdigest()
|
||||||
if target_cores_cache:
|
if target_cores_cache:
|
||||||
|
|||||||
@@ -140,6 +140,20 @@ def _resolve_source(
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def _resolve_archive_source(
|
||||||
|
archive_name: str,
|
||||||
|
by_name: dict[str, list],
|
||||||
|
by_name_lower: dict[str, str],
|
||||||
|
data_names: set[str] | None = None,
|
||||||
|
by_path_suffix: dict | None = None,
|
||||||
|
) -> str:
|
||||||
|
"""Resolve source for an archive (ZIP) name, returning a source category string."""
|
||||||
|
result = _resolve_source(
|
||||||
|
archive_name, by_name, by_name_lower, data_names, by_path_suffix,
|
||||||
|
)
|
||||||
|
return result if result is not None else "missing"
|
||||||
|
|
||||||
|
|
||||||
def cross_reference(
|
def cross_reference(
|
||||||
profiles: dict[str, dict],
|
profiles: dict[str, dict],
|
||||||
declared: dict[str, set[str]],
|
declared: dict[str, set[str]],
|
||||||
@@ -175,6 +189,10 @@ def cross_reference(
|
|||||||
emu_files = profile.get("files", [])
|
emu_files = profile.get("files", [])
|
||||||
systems = profile.get("systems", [])
|
systems = profile.get("systems", [])
|
||||||
|
|
||||||
|
# Skip filename-agnostic profiles (BIOS detected without fixed names)
|
||||||
|
if profile.get("bios_mode") == "agnostic":
|
||||||
|
continue
|
||||||
|
|
||||||
if all_declared is not None:
|
if all_declared is not None:
|
||||||
platform_names = all_declared
|
platform_names = all_declared
|
||||||
else:
|
else:
|
||||||
@@ -184,13 +202,28 @@ def cross_reference(
|
|||||||
|
|
||||||
gaps = []
|
gaps = []
|
||||||
covered = []
|
covered = []
|
||||||
|
unsourceable_list: list[dict] = []
|
||||||
|
archive_gaps: dict[str, dict] = {}
|
||||||
|
seen_files: set[str] = set()
|
||||||
for f in emu_files:
|
for f in emu_files:
|
||||||
fname = f.get("name", "")
|
fname = f.get("name", "")
|
||||||
if not fname:
|
if not fname or fname in seen_files:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Collect unsourceable files separately (documented, not a gap)
|
||||||
|
unsourceable_reason = f.get("unsourceable", "")
|
||||||
|
if unsourceable_reason:
|
||||||
|
seen_files.add(fname)
|
||||||
|
unsourceable_list.append({
|
||||||
|
"name": fname,
|
||||||
|
"required": f.get("required", False),
|
||||||
|
"reason": unsourceable_reason,
|
||||||
|
"source_ref": f.get("source_ref", ""),
|
||||||
|
})
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Skip pattern placeholders (e.g., <bios>.bin, <user-selected>.bin)
|
# Skip pattern placeholders (e.g., <bios>.bin, <user-selected>.bin)
|
||||||
if "<" in fname or ">" in fname:
|
if "<" in fname or ">" in fname or "*" in fname:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Skip UI-imported files with explicit path: null (not resolvable by pack)
|
# Skip UI-imported files with explicit path: null (not resolvable by pack)
|
||||||
@@ -202,6 +235,61 @@ def cross_reference(
|
|||||||
if file_mode == "standalone":
|
if file_mode == "standalone":
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# Skip files loaded from non-system directories (save_dir, content_dir)
|
||||||
|
load_from = f.get("load_from", "")
|
||||||
|
if load_from and load_from != "system_dir":
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Skip filename-agnostic files (handled by agnostic scan)
|
||||||
|
if f.get("agnostic"):
|
||||||
|
continue
|
||||||
|
|
||||||
|
archive = f.get("archive")
|
||||||
|
|
||||||
|
# Check platform declaration (by name or archive)
|
||||||
|
in_platform = fname in platform_names
|
||||||
|
if not in_platform and archive:
|
||||||
|
in_platform = archive in platform_names
|
||||||
|
|
||||||
|
if in_platform:
|
||||||
|
seen_files.add(fname)
|
||||||
|
covered.append({
|
||||||
|
"name": fname,
|
||||||
|
"required": f.get("required", False),
|
||||||
|
"in_platform": True,
|
||||||
|
})
|
||||||
|
continue
|
||||||
|
|
||||||
|
seen_files.add(fname)
|
||||||
|
|
||||||
|
# Group archived files by archive name
|
||||||
|
if archive:
|
||||||
|
if archive not in archive_gaps:
|
||||||
|
source = _resolve_archive_source(
|
||||||
|
archive, by_name, by_name_lower, data_names,
|
||||||
|
by_path_suffix,
|
||||||
|
)
|
||||||
|
archive_gaps[archive] = {
|
||||||
|
"name": archive,
|
||||||
|
"required": False,
|
||||||
|
"note": "",
|
||||||
|
"source_ref": "",
|
||||||
|
"in_platform": False,
|
||||||
|
"in_repo": source != "missing",
|
||||||
|
"source": source,
|
||||||
|
"archive": archive,
|
||||||
|
"archive_file_count": 0,
|
||||||
|
"archive_required_count": 0,
|
||||||
|
}
|
||||||
|
entry = archive_gaps[archive]
|
||||||
|
entry["archive_file_count"] += 1
|
||||||
|
if f.get("required", False):
|
||||||
|
entry["archive_required_count"] += 1
|
||||||
|
entry["required"] = True
|
||||||
|
if not entry["source_ref"] and f.get("source_ref"):
|
||||||
|
entry["source_ref"] = f["source_ref"]
|
||||||
|
continue
|
||||||
|
|
||||||
# --- resolve source provenance ---
|
# --- resolve source provenance ---
|
||||||
storage = f.get("storage", "")
|
storage = f.get("storage", "")
|
||||||
if storage in ("release", "large_file"):
|
if storage in ("release", "large_file"):
|
||||||
@@ -235,22 +323,21 @@ def cross_reference(
|
|||||||
source = "missing"
|
source = "missing"
|
||||||
|
|
||||||
in_repo = source != "missing"
|
in_repo = source != "missing"
|
||||||
in_platform = fname in platform_names
|
|
||||||
|
|
||||||
entry = {
|
entry = {
|
||||||
"name": fname,
|
"name": fname,
|
||||||
"required": f.get("required", False),
|
"required": f.get("required", False),
|
||||||
"note": f.get("note", ""),
|
"note": f.get("note", ""),
|
||||||
"source_ref": f.get("source_ref", ""),
|
"source_ref": f.get("source_ref", ""),
|
||||||
"in_platform": in_platform,
|
"in_platform": False,
|
||||||
"in_repo": in_repo,
|
"in_repo": in_repo,
|
||||||
"source": source,
|
"source": source,
|
||||||
}
|
}
|
||||||
|
|
||||||
if not in_platform:
|
|
||||||
gaps.append(entry)
|
gaps.append(entry)
|
||||||
else:
|
|
||||||
covered.append(entry)
|
# Append grouped archive gaps
|
||||||
|
for ag in sorted(archive_gaps.values(), key=lambda e: e["name"]):
|
||||||
|
gaps.append(ag)
|
||||||
|
|
||||||
report[emu_name] = {
|
report[emu_name] = {
|
||||||
"emulator": profile.get("emulator", emu_name),
|
"emulator": profile.get("emulator", emu_name),
|
||||||
@@ -264,6 +351,7 @@ def cross_reference(
|
|||||||
"gap_data": sum(1 for g in gaps if g["source"] == "data"),
|
"gap_data": sum(1 for g in gaps if g["source"] == "data"),
|
||||||
"gap_large_file": sum(1 for g in gaps if g["source"] == "large_file"),
|
"gap_large_file": sum(1 for g in gaps if g["source"] == "large_file"),
|
||||||
"gap_details": gaps,
|
"gap_details": gaps,
|
||||||
|
"unsourceable": unsourceable_list,
|
||||||
}
|
}
|
||||||
|
|
||||||
return report
|
return report
|
||||||
@@ -301,7 +389,12 @@ def print_report(report: dict) -> None:
|
|||||||
req = "*" if g["required"] else " "
|
req = "*" if g["required"] else " "
|
||||||
src = g.get("source", "missing").upper()
|
src = g.get("source", "missing").upper()
|
||||||
note = f" -- {g['note']}" if g["note"] else ""
|
note = f" -- {g['note']}" if g["note"] else ""
|
||||||
print(f" {req} {g['name']} [{src}]{note}")
|
archive_info = ""
|
||||||
|
if g.get("archive"):
|
||||||
|
fc = g.get("archive_file_count", 0)
|
||||||
|
rc = g.get("archive_required_count", 0)
|
||||||
|
archive_info = f" ({fc} files, {rc} required)"
|
||||||
|
print(f" {req} {g['name']} [{src}]{archive_info}{note}")
|
||||||
|
|
||||||
total_gaps += gaps
|
total_gaps += gaps
|
||||||
for key in totals:
|
for key in totals:
|
||||||
|
|||||||
@@ -246,6 +246,13 @@ def _register_path(dest: str, seen_files: set[str], seen_parents: set[str]) -> N
|
|||||||
seen_parents.add(parent)
|
seen_parents.add(parent)
|
||||||
|
|
||||||
|
|
||||||
|
def _flat(arcname: str, prefix: str, flatten: bool) -> str:
|
||||||
|
"""Strip base_destination prefix from ZIP arcname when flattening."""
|
||||||
|
if flatten and prefix and arcname.startswith(prefix + "/"):
|
||||||
|
return arcname[len(prefix) + 1:]
|
||||||
|
return arcname
|
||||||
|
|
||||||
|
|
||||||
def resolve_file(
|
def resolve_file(
|
||||||
file_entry: dict,
|
file_entry: dict,
|
||||||
db: dict,
|
db: dict,
|
||||||
@@ -758,6 +765,7 @@ def _build_readme(
|
|||||||
total_files: int,
|
total_files: int,
|
||||||
num_systems: int,
|
num_systems: int,
|
||||||
source: str = "full",
|
source: str = "full",
|
||||||
|
contributors: list[dict] | None = None,
|
||||||
) -> str:
|
) -> str:
|
||||||
"""Build a personalized step-by-step README for each platform pack."""
|
"""Build a personalized step-by-step README for each platform pack."""
|
||||||
sep = "=" * 50
|
sep = "=" * 50
|
||||||
@@ -782,15 +790,14 @@ def _build_readme(
|
|||||||
" 1. Find your RetroArch system directory:\n"
|
" 1. Find your RetroArch system directory:\n"
|
||||||
" - RetroArch > Settings > Directory > System/BIOS\n"
|
" - RetroArch > Settings > Directory > System/BIOS\n"
|
||||||
" - Default: retroarch/system/\n"
|
" - Default: retroarch/system/\n"
|
||||||
' 2. Open the "system" folder from this archive\n'
|
" 2. Extract all files from this archive directly into your system directory\n"
|
||||||
" 3. Copy ALL contents into your system directory\n"
|
" 3. Overwrite if asked\n\n"
|
||||||
" 4. Overwrite if asked\n\n"
|
|
||||||
" Option C: Manual (handheld / SD card)\n"
|
" Option C: Manual (handheld / SD card)\n"
|
||||||
" -------------------------------------\n"
|
" -------------------------------------\n"
|
||||||
" Anbernic, Retroid, Miyoo, Trimui, etc.:\n"
|
" Anbernic, Retroid, Miyoo, Trimui, etc.:\n"
|
||||||
" 1. Connect your SD card to your PC\n"
|
" 1. Connect your SD card to your PC\n"
|
||||||
" 2. Find the BIOS folder (usually BIOS/ or system/)\n"
|
" 2. Find the BIOS folder (usually BIOS/ or system/)\n"
|
||||||
' 3. Copy ALL contents of "system" from this archive\n'
|
" 3. Extract all files from this archive directly into that folder\n"
|
||||||
" 4. Eject SD card and reboot your device\n\n"
|
" 4. Eject SD card and reboot your device\n\n"
|
||||||
" Common paths by device:\n"
|
" Common paths by device:\n"
|
||||||
" Anbernic (ArkOS/JELOS): BIOS/\n"
|
" Anbernic (ArkOS/JELOS): BIOS/\n"
|
||||||
@@ -809,14 +816,13 @@ def _build_readme(
|
|||||||
" 1. On your PC, open the Batocera network share:\n"
|
" 1. On your PC, open the Batocera network share:\n"
|
||||||
" - Windows: \\\\BATOCERA\\share\\bios\\\n"
|
" - Windows: \\\\BATOCERA\\share\\bios\\\n"
|
||||||
" - Mac/Linux: smb://batocera/share/bios/\n"
|
" - Mac/Linux: smb://batocera/share/bios/\n"
|
||||||
' 2. Open the "bios" folder from this archive\n'
|
" 2. Extract all files from this archive directly into the share\n"
|
||||||
" 3. Copy ALL contents into the share\n"
|
" 3. Overwrite if asked\n\n"
|
||||||
" 4. Overwrite if asked\n\n"
|
|
||||||
" Option C: Manual (SD card)\n"
|
" Option C: Manual (SD card)\n"
|
||||||
" --------------------------\n"
|
" --------------------------\n"
|
||||||
" 1. Put the SD card in your PC\n"
|
" 1. Put the SD card in your PC\n"
|
||||||
" 2. Navigate to /userdata/bios/ on the SHARE partition\n"
|
" 2. Navigate to /userdata/bios/ on the SHARE partition\n"
|
||||||
' 3. Copy ALL contents of "bios" from this archive\n\n'
|
" 3. Extract all files from this archive directly into that folder\n\n"
|
||||||
" NOTE: Dreamcast flash memory is named dc_nvmem.bin\n"
|
" NOTE: Dreamcast flash memory is named dc_nvmem.bin\n"
|
||||||
" (if your setup asks for dc_flash.bin, same file).\n\n"
|
" (if your setup asks for dc_flash.bin, same file).\n\n"
|
||||||
),
|
),
|
||||||
@@ -830,13 +836,12 @@ def _build_readme(
|
|||||||
" 1. On your PC, open the Recalbox network share:\n"
|
" 1. On your PC, open the Recalbox network share:\n"
|
||||||
" - Windows: \\\\RECALBOX\\share\\bios\\\n"
|
" - Windows: \\\\RECALBOX\\share\\bios\\\n"
|
||||||
" - Mac/Linux: smb://recalbox/share/bios/\n"
|
" - Mac/Linux: smb://recalbox/share/bios/\n"
|
||||||
' 2. Open the "bios" folder from this archive\n'
|
" 2. Extract all files from this archive directly into the share\n\n"
|
||||||
" 3. Copy ALL contents into the share\n\n"
|
|
||||||
" Option C: Manual (SD card)\n"
|
" Option C: Manual (SD card)\n"
|
||||||
" --------------------------\n"
|
" --------------------------\n"
|
||||||
" 1. Put the SD card in your PC\n"
|
" 1. Put the SD card in your PC\n"
|
||||||
" 2. Navigate to /recalbox/share/bios/\n"
|
" 2. Navigate to /recalbox/share/bios/\n"
|
||||||
' 3. Copy ALL contents of "bios" from this archive\n\n'
|
" 3. Extract all files from this archive directly into that folder\n\n"
|
||||||
),
|
),
|
||||||
"emudeck": (
|
"emudeck": (
|
||||||
"INSTALLATION GUIDE (Steam Deck / Linux)\n\n"
|
"INSTALLATION GUIDE (Steam Deck / Linux)\n\n"
|
||||||
@@ -850,8 +855,7 @@ def _build_readme(
|
|||||||
" ----------------\n"
|
" ----------------\n"
|
||||||
" 1. Open Dolphin file manager\n"
|
" 1. Open Dolphin file manager\n"
|
||||||
" 2. Navigate to ~/Emulation/bios/\n"
|
" 2. Navigate to ~/Emulation/bios/\n"
|
||||||
' 3. Open the "bios" folder from this archive\n'
|
" 3. Extract all files from this archive directly into ~/Emulation/bios/\n\n"
|
||||||
" 4. Copy ALL contents into ~/Emulation/bios/\n\n"
|
|
||||||
" STANDALONE EMULATORS (extra step)\n"
|
" STANDALONE EMULATORS (extra step)\n"
|
||||||
" Switch and 3DS emulators need keys in specific folders:\n"
|
" Switch and 3DS emulators need keys in specific folders:\n"
|
||||||
" prod.keys -> ~/.local/share/yuzu/keys/\n"
|
" prod.keys -> ~/.local/share/yuzu/keys/\n"
|
||||||
@@ -870,11 +874,8 @@ def _build_readme(
|
|||||||
" ----------------\n"
|
" ----------------\n"
|
||||||
" 1. Open Dolphin file manager\n"
|
" 1. Open Dolphin file manager\n"
|
||||||
" 2. Show hidden files (Ctrl+H)\n"
|
" 2. Show hidden files (Ctrl+H)\n"
|
||||||
" 3. Navigate to ~/retrodeck/\n"
|
" 3. Navigate to ~/retrodeck/bios/\n"
|
||||||
' 4. Open the "bios" folder from this archive\n'
|
" 4. Extract all files from this archive directly into ~/retrodeck/bios/\n\n"
|
||||||
" 5. Copy ALL contents into ~/retrodeck/bios/\n"
|
|
||||||
' 6. If the archive contains a "roms" folder, copy\n'
|
|
||||||
" its contents into ~/retrodeck/roms/\n\n"
|
|
||||||
" NOTE: RetroDECK uses its own BIOS checker. After\n"
|
" NOTE: RetroDECK uses its own BIOS checker. After\n"
|
||||||
" copying, open RetroDECK > Tools > BIOS Checker to\n"
|
" copying, open RetroDECK > Tools > BIOS Checker to\n"
|
||||||
" verify everything is detected.\n\n"
|
" verify everything is detected.\n\n"
|
||||||
@@ -890,9 +891,8 @@ def _build_readme(
|
|||||||
" 1. Open your RetroBat installation folder\n"
|
" 1. Open your RetroBat installation folder\n"
|
||||||
" 2. Navigate to the bios\\ subfolder\n"
|
" 2. Navigate to the bios\\ subfolder\n"
|
||||||
" (default: C:\\RetroBat\\bios\\)\n"
|
" (default: C:\\RetroBat\\bios\\)\n"
|
||||||
' 3. Open the "bios" folder from this archive\n'
|
" 3. Extract all files from this archive directly into your bios\\ folder\n"
|
||||||
" 4. Copy ALL contents into your bios\\ folder\n"
|
" 4. Overwrite if asked\n\n"
|
||||||
" 5. Overwrite if asked\n\n"
|
|
||||||
),
|
),
|
||||||
"bizhawk": (
|
"bizhawk": (
|
||||||
"INSTALLATION GUIDE\n\n"
|
"INSTALLATION GUIDE\n\n"
|
||||||
@@ -900,16 +900,15 @@ def _build_readme(
|
|||||||
" 2. Navigate to the Firmware subfolder:\n"
|
" 2. Navigate to the Firmware subfolder:\n"
|
||||||
" - Windows: BizHawk\\Firmware\\\n"
|
" - Windows: BizHawk\\Firmware\\\n"
|
||||||
" - Linux: ~/.config/BizHawk/Firmware/\n"
|
" - Linux: ~/.config/BizHawk/Firmware/\n"
|
||||||
' 3. Open the "Firmware" folder from this archive\n'
|
" 3. Extract all files from this archive directly into your Firmware folder\n"
|
||||||
" 4. Copy ALL contents into your Firmware folder\n"
|
" 4. In BizHawk: Config > Paths > Firmware should\n"
|
||||||
" 5. In BizHawk: Config > Paths > Firmware should\n"
|
|
||||||
" point to this folder\n\n"
|
" point to this folder\n\n"
|
||||||
),
|
),
|
||||||
"romm": (
|
"romm": (
|
||||||
"INSTALLATION GUIDE (RomM server)\n\n"
|
"INSTALLATION GUIDE (RomM server)\n\n"
|
||||||
" 1. Locate your RomM library folder\n"
|
" 1. Locate your RomM library folder\n"
|
||||||
" 2. Navigate to the bios/ subdirectory\n"
|
" 2. Navigate to the bios/ subdirectory\n"
|
||||||
' 3. Copy ALL contents of "bios" from this archive\n'
|
" 3. Extract all files from this archive directly into that folder\n"
|
||||||
" 4. Restart the RomM service to detect new files\n\n"
|
" 4. Restart the RomM service to detect new files\n\n"
|
||||||
),
|
),
|
||||||
"retropie": (
|
"retropie": (
|
||||||
@@ -917,7 +916,7 @@ def _build_readme(
|
|||||||
" Option A: Via network share\n"
|
" Option A: Via network share\n"
|
||||||
" --------------------------\n"
|
" --------------------------\n"
|
||||||
" 1. On your PC, open: \\\\RETROPIE\\bios\\\n"
|
" 1. On your PC, open: \\\\RETROPIE\\bios\\\n"
|
||||||
' 2. Copy ALL contents of "BIOS" from this archive\n\n'
|
" 2. Extract all files from this archive directly into that folder\n\n"
|
||||||
" Option B: Via SSH\n"
|
" Option B: Via SSH\n"
|
||||||
" -----------------\n"
|
" -----------------\n"
|
||||||
" 1. SSH into your Pi: ssh pi@retropie\n"
|
" 1. SSH into your Pi: ssh pi@retropie\n"
|
||||||
@@ -926,7 +925,7 @@ def _build_readme(
|
|||||||
" ---------------------\n"
|
" ---------------------\n"
|
||||||
" 1. Put the SD card in your PC\n"
|
" 1. Put the SD card in your PC\n"
|
||||||
" 2. Navigate to /home/pi/RetroPie/BIOS/\n"
|
" 2. Navigate to /home/pi/RetroPie/BIOS/\n"
|
||||||
' 3. Copy ALL contents of "BIOS" from this archive\n\n'
|
" 3. Extract all files from this archive directly into that folder\n\n"
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -937,9 +936,8 @@ def _build_readme(
|
|||||||
platform_name,
|
platform_name,
|
||||||
(
|
(
|
||||||
f"INSTALLATION\n\n"
|
f"INSTALLATION\n\n"
|
||||||
f' 1. Open the "{base_dest or "files"}" folder in this archive\n'
|
f" 1. Extract all files from this archive directly into your BIOS directory\n"
|
||||||
f" 2. Copy ALL contents to your BIOS directory\n"
|
f" 2. Overwrite if asked\n\n"
|
||||||
f" 3. Overwrite if asked\n\n"
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -971,7 +969,15 @@ def _build_readme(
|
|||||||
" Independent of platform scraper accuracy.\n\n"
|
" Independent of platform scraper accuracy.\n\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
return header + source_info + guide + footer
|
credits = ""
|
||||||
|
if contributors:
|
||||||
|
credits = "\nCONTRIBUTORS\n\n"
|
||||||
|
for cb in contributors:
|
||||||
|
username = cb.get("username", "")
|
||||||
|
credits += f" @{username}\n"
|
||||||
|
credits += "\n"
|
||||||
|
|
||||||
|
return header + source_info + guide + credits + footer
|
||||||
|
|
||||||
|
|
||||||
def _build_agnostic_rename_readme(
|
def _build_agnostic_rename_readme(
|
||||||
@@ -1010,6 +1016,7 @@ def generate_pack(
|
|||||||
system_filter: list[str] | None = None,
|
system_filter: list[str] | None = None,
|
||||||
precomputed_extras: list[dict] | None = None,
|
precomputed_extras: list[dict] | None = None,
|
||||||
source: str = "full",
|
source: str = "full",
|
||||||
|
flatten: bool = True,
|
||||||
) -> str | None:
|
) -> str | None:
|
||||||
"""Generate a ZIP pack for a platform.
|
"""Generate a ZIP pack for a platform.
|
||||||
|
|
||||||
@@ -1145,7 +1152,7 @@ def generate_pack(
|
|||||||
f"{base_dest}/{instr_name}" if base_dest else instr_name
|
f"{base_dest}/{instr_name}" if base_dest else instr_name
|
||||||
)
|
)
|
||||||
zf.writestr(
|
zf.writestr(
|
||||||
instr_path,
|
_flat(instr_path, base_dest, flatten),
|
||||||
f"File needed: {file_entry['name']}\n\n{instructions}\n",
|
f"File needed: {file_entry['name']}\n\n{instructions}\n",
|
||||||
)
|
)
|
||||||
user_provided.append(file_entry["name"])
|
user_provided.append(file_entry["name"])
|
||||||
@@ -1171,9 +1178,9 @@ def generate_pack(
|
|||||||
if download_external(file_entry, tmp_path):
|
if download_external(file_entry, tmp_path):
|
||||||
extract = file_entry.get("extract", False)
|
extract = file_entry.get("extract", False)
|
||||||
if extract and tmp_path.endswith(".zip"):
|
if extract and tmp_path.endswith(".zip"):
|
||||||
_extract_zip_to_archive(tmp_path, full_dest, zf)
|
_extract_zip_to_archive(tmp_path, _flat(full_dest, base_dest, flatten), zf)
|
||||||
else:
|
else:
|
||||||
zf.write(tmp_path, full_dest)
|
zf.write(tmp_path, _flat(full_dest, base_dest, flatten))
|
||||||
seen_destinations.add(dedup_key)
|
seen_destinations.add(dedup_key)
|
||||||
_register_path(dedup_key, seen_destinations, seen_parents)
|
_register_path(dedup_key, seen_destinations, seen_parents)
|
||||||
if case_insensitive:
|
if case_insensitive:
|
||||||
@@ -1251,7 +1258,7 @@ def generate_pack(
|
|||||||
else readme_name
|
else readme_name
|
||||||
)
|
)
|
||||||
if readme_full not in seen_destinations:
|
if readme_full not in seen_destinations:
|
||||||
zf.writestr(readme_full, readme_text)
|
zf.writestr(_flat(readme_full, base_dest, flatten), readme_text)
|
||||||
seen_destinations.add(readme_full)
|
seen_destinations.add(readme_full)
|
||||||
status = "agnostic_fallback"
|
status = "agnostic_fallback"
|
||||||
# Fall through to normal packing below
|
# Fall through to normal packing below
|
||||||
@@ -1337,12 +1344,13 @@ def generate_pack(
|
|||||||
seen_lower.add(dedup_key.lower())
|
seen_lower.add(dedup_key.lower())
|
||||||
|
|
||||||
extract = file_entry.get("extract", False)
|
extract = file_entry.get("extract", False)
|
||||||
|
flat_dest = _flat(full_dest, base_dest, flatten)
|
||||||
if extract and local_path.endswith(".zip"):
|
if extract and local_path.endswith(".zip"):
|
||||||
_extract_zip_to_archive(local_path, full_dest, zf)
|
_extract_zip_to_archive(local_path, flat_dest, zf)
|
||||||
elif local_path.endswith(".zip"):
|
elif local_path.endswith(".zip"):
|
||||||
_normalize_zip_for_pack(local_path, full_dest, zf)
|
_normalize_zip_for_pack(local_path, flat_dest, zf)
|
||||||
else:
|
else:
|
||||||
zf.write(local_path, full_dest)
|
zf.write(local_path, flat_dest)
|
||||||
total_files += 1
|
total_files += 1
|
||||||
|
|
||||||
# Core requirements: files platform's cores need but YAML doesn't declare
|
# Core requirements: files platform's cores need but YAML doesn't declare
|
||||||
@@ -1428,10 +1436,11 @@ def generate_pack(
|
|||||||
if status in ("not_found", "external", "user_provided"):
|
if status in ("not_found", "external", "user_provided"):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
flat_dest = _flat(full_dest, base_dest, flatten)
|
||||||
if local_path.endswith(".zip"):
|
if local_path.endswith(".zip"):
|
||||||
_normalize_zip_for_pack(local_path, full_dest, zf)
|
_normalize_zip_for_pack(local_path, flat_dest, zf)
|
||||||
else:
|
else:
|
||||||
zf.write(local_path, full_dest)
|
zf.write(local_path, flat_dest)
|
||||||
seen_destinations.add(full_dest)
|
seen_destinations.add(full_dest)
|
||||||
_register_path(full_dest, seen_destinations, seen_parents)
|
_register_path(full_dest, seen_destinations, seen_parents)
|
||||||
if case_insensitive:
|
if case_insensitive:
|
||||||
@@ -1477,14 +1486,20 @@ def generate_pack(
|
|||||||
_register_path(full, seen_destinations, seen_parents)
|
_register_path(full, seen_destinations, seen_parents)
|
||||||
if case_insensitive:
|
if case_insensitive:
|
||||||
seen_lower.add(full.lower())
|
seen_lower.add(full.lower())
|
||||||
zf.write(src, full)
|
zf.write(src, _flat(full, base_dest, flatten))
|
||||||
total_files += 1
|
total_files += 1
|
||||||
|
|
||||||
# README.txt for users -personalized step-by-step per platform
|
# README.txt for users -personalized step-by-step per platform
|
||||||
num_systems = len(pack_systems)
|
num_systems = len(pack_systems)
|
||||||
|
_registry_path = Path(platforms_dir) / "_registry.yml"
|
||||||
|
_pack_registry: dict = {}
|
||||||
|
if _registry_path.exists():
|
||||||
|
with open(_registry_path) as _rf:
|
||||||
|
_pack_registry = (yaml.safe_load(_rf) or {}).get("platforms", {})
|
||||||
readme_text = _build_readme(
|
readme_text = _build_readme(
|
||||||
platform_name, platform_display, base_dest, total_files, num_systems,
|
platform_name, platform_display, base_dest, total_files, num_systems,
|
||||||
source=source,
|
source=source,
|
||||||
|
contributors=_pack_registry.get(platform_name, {}).get("contributed_by", []),
|
||||||
)
|
)
|
||||||
zf.writestr("README.txt", readme_text)
|
zf.writestr("README.txt", readme_text)
|
||||||
|
|
||||||
@@ -2414,6 +2429,11 @@ def _run_verify_packs(args):
|
|||||||
with zipfile.ZipFile(zip_path) as zf:
|
with zipfile.ZipFile(zip_path) as zf:
|
||||||
zf.extractall(extract_dir)
|
zf.extractall(extract_dir)
|
||||||
|
|
||||||
|
# Auto-detect flat vs nested extraction
|
||||||
|
is_flat = bool(base_dest) and not os.path.isdir(
|
||||||
|
os.path.join(extract_dir, base_dest)
|
||||||
|
)
|
||||||
|
|
||||||
missing = []
|
missing = []
|
||||||
hash_fail = []
|
hash_fail = []
|
||||||
ok = 0
|
ok = 0
|
||||||
@@ -2424,7 +2444,7 @@ def _run_verify_packs(args):
|
|||||||
continue
|
continue
|
||||||
fp = (
|
fp = (
|
||||||
os.path.join(extract_dir, base_dest, dest)
|
os.path.join(extract_dir, base_dest, dest)
|
||||||
if base_dest
|
if base_dest and not is_flat
|
||||||
else os.path.join(extract_dir, dest)
|
else os.path.join(extract_dir, dest)
|
||||||
)
|
)
|
||||||
# Case-insensitive fallback
|
# Case-insensitive fallback
|
||||||
@@ -2595,9 +2615,11 @@ def _run_platform_packs(
|
|||||||
load_platform_config(p, args.platforms_dir).get("platform", p)
|
load_platform_config(p, args.platforms_dir).get("platform", p)
|
||||||
for p in group_platforms
|
for p in group_platforms
|
||||||
]
|
]
|
||||||
|
source_tag = {"platform": "_Platform", "truth": "_Truth"}.get(source, "")
|
||||||
|
req_tag = "_Required" if required_only else ""
|
||||||
combined = (
|
combined = (
|
||||||
"_".join(n.replace(" ", "") for n in all_names)
|
"_".join(n.replace(" ", "") for n in all_names)
|
||||||
+ f"{ver_tag}_BIOS_Pack.zip"
|
+ f"{ver_tag}{source_tag}{req_tag}_BIOS_Pack.zip"
|
||||||
)
|
)
|
||||||
new_path = os.path.join(os.path.dirname(zip_path), combined)
|
new_path = os.path.join(os.path.dirname(zip_path), combined)
|
||||||
if new_path != zip_path:
|
if new_path != zip_path:
|
||||||
@@ -3257,7 +3279,11 @@ def verify_pack(
|
|||||||
# Data directory: check against cached files
|
# Data directory: check against cached files
|
||||||
if status == "untracked" and _data_index:
|
if status == "untracked" and _data_index:
|
||||||
_bn = os.path.basename(name)
|
_bn = os.path.basename(name)
|
||||||
_pr = name[len("system/") :] if name.startswith("system/") else name
|
_pr = name
|
||||||
|
for _known_prefix in ("system/", "bios/", "BIOS/", "Firmware/"):
|
||||||
|
if name.startswith(_known_prefix):
|
||||||
|
_pr = name[len(_known_prefix):]
|
||||||
|
break
|
||||||
_cands = []
|
_cands = []
|
||||||
if _pr in _data_path_index:
|
if _pr in _data_path_index:
|
||||||
_cands.append(_data_path_index[_pr])
|
_cands.append(_data_path_index[_pr])
|
||||||
@@ -3424,6 +3450,13 @@ def verify_pack_against_platform(
|
|||||||
zip_set = set(zf.namelist())
|
zip_set = set(zf.namelist())
|
||||||
zip_lower = {n.lower(): n for n in zip_set}
|
zip_lower = {n.lower(): n for n in zip_set}
|
||||||
|
|
||||||
|
# Auto-detect flat vs nested ZIP
|
||||||
|
is_flat = bool(base_dest) and not any(
|
||||||
|
n.startswith(base_dest + "/")
|
||||||
|
for n in zip_set
|
||||||
|
if n not in ("README.txt", "manifest.json") and not n.endswith("/")
|
||||||
|
)
|
||||||
|
|
||||||
# Structural checks
|
# Structural checks
|
||||||
dupes = sum(1 for c in Counter(zf.namelist()).values() if c > 1)
|
dupes = sum(1 for c in Counter(zf.namelist()).values() if c > 1)
|
||||||
if dupes:
|
if dupes:
|
||||||
@@ -3453,7 +3486,7 @@ def verify_pack_against_platform(
|
|||||||
dest = fe.get("destination", fe.get("name", ""))
|
dest = fe.get("destination", fe.get("name", ""))
|
||||||
if not dest:
|
if not dest:
|
||||||
continue
|
continue
|
||||||
expected = f"{base_dest}/{dest}" if base_dest else dest
|
expected = f"{base_dest}/{dest}" if base_dest and not is_flat else dest
|
||||||
baseline_checked += 1
|
baseline_checked += 1
|
||||||
|
|
||||||
if expected in zip_set or expected.lower() in zip_lower:
|
if expected in zip_set or expected.lower() in zip_lower:
|
||||||
@@ -3480,7 +3513,7 @@ def verify_pack_against_platform(
|
|||||||
continue
|
continue
|
||||||
raw_dest = u.get("path") or u["name"]
|
raw_dest = u.get("path") or u["name"]
|
||||||
dest = f"{raw_dest}{u['name']}" if raw_dest.endswith("/") else raw_dest
|
dest = f"{raw_dest}{u['name']}" if raw_dest.endswith("/") else raw_dest
|
||||||
if extras_pfx:
|
if extras_pfx and not (is_flat and extras_pfx == base_dest):
|
||||||
if not dest.startswith(f"{extras_pfx}/"):
|
if not dest.startswith(f"{extras_pfx}/"):
|
||||||
full = f"{extras_pfx}/{dest}"
|
full = f"{extras_pfx}/{dest}"
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -143,7 +143,9 @@ def generate_readme(db: dict, platforms_dir: str) -> str:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
lines = [
|
lines = [
|
||||||
"# RetroBIOS",
|
'<p align="center">',
|
||||||
|
' <img src=".github/assets/banner.png" alt="RetroBIOS" width="400">',
|
||||||
|
"</p>",
|
||||||
"",
|
"",
|
||||||
f"Complete BIOS and firmware packs for "
|
f"Complete BIOS and firmware packs for "
|
||||||
f"{', '.join(c['platform'] for c in sorted(coverages.values(), key=lambda x: x[
|
f"{', '.join(c['platform'] for c in sorted(coverages.values(), key=lambda x: x[
|
||||||
@@ -349,6 +351,13 @@ def generate_readme(db: dict, platforms_dir: str) -> str:
|
|||||||
|
|
||||||
lines.extend(
|
lines.extend(
|
||||||
[
|
[
|
||||||
|
"",
|
||||||
|
"## Community tools",
|
||||||
|
"",
|
||||||
|
"- [BIOS Preservation Tool](https://github.com/monster-penguin/BIOS-Preservation-Tool)"
|
||||||
|
" by [monster-penguin](https://github.com/monster-penguin)"
|
||||||
|
" - scan, verify, and stage your own BIOS collection"
|
||||||
|
" using RetroBIOS hash metadata",
|
||||||
"",
|
"",
|
||||||
"## Contributing",
|
"## Contributing",
|
||||||
"",
|
"",
|
||||||
@@ -375,6 +384,16 @@ def generate_contributing() -> str:
|
|||||||
3. Variants (alternate hashes): `bios/Manufacturer/Console/.variants/`
|
3. Variants (alternate hashes): `bios/Manufacturer/Console/.variants/`
|
||||||
4. Create a Pull Request - checksums are verified automatically
|
4. Create a Pull Request - checksums are verified automatically
|
||||||
|
|
||||||
|
## Add a new platform
|
||||||
|
|
||||||
|
1. Write a scraper in `scripts/scraper/`
|
||||||
|
2. Create the platform YAML in `platforms/`
|
||||||
|
3. Register in `platforms/_registry.yml`
|
||||||
|
4. Submit a Pull Request
|
||||||
|
|
||||||
|
Contributors who add platform support are credited in the README,
|
||||||
|
on the documentation site, and in the BIOS packs.
|
||||||
|
|
||||||
## File conventions
|
## File conventions
|
||||||
|
|
||||||
- Files >50 MB go in GitHub release assets (`large-files` release)
|
- Files >50 MB go in GitHub release assets (`large-files` release)
|
||||||
|
|||||||
@@ -127,11 +127,22 @@ def _build_system_page_map_from_data(
|
|||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
|
def _slugify_anchor(text: str) -> str:
|
||||||
|
"""Slugify text for MkDocs anchor compatibility."""
|
||||||
|
import re
|
||||||
|
|
||||||
|
slug = text.lower()
|
||||||
|
slug = re.sub(r"[^\w\s-]", "", slug)
|
||||||
|
slug = re.sub(r"[\s]+", "-", slug)
|
||||||
|
slug = slug.strip("-")
|
||||||
|
return slug
|
||||||
|
|
||||||
|
|
||||||
def _system_link(sys_id: str, prefix: str = "") -> str:
|
def _system_link(sys_id: str, prefix: str = "") -> str:
|
||||||
"""Generate a markdown link to a system page with anchor."""
|
"""Generate a markdown link to a system page with anchor."""
|
||||||
if sys_id in _system_page_map:
|
if sys_id in _system_page_map:
|
||||||
slug, console = _system_page_map[sys_id]
|
slug, console = _system_page_map[sys_id]
|
||||||
anchor = console.lower().replace(" ", "-").replace("/", "-")
|
anchor = _slugify_anchor(console)
|
||||||
return f"[{sys_id}]({prefix}systems/{slug}.md#{anchor})"
|
return f"[{sys_id}]({prefix}systems/{slug}.md#{anchor})"
|
||||||
return sys_id
|
return sys_id
|
||||||
|
|
||||||
@@ -239,7 +250,9 @@ def generate_home(
|
|||||||
# Classification stats
|
# Classification stats
|
||||||
classifications: dict[str, int] = {}
|
classifications: dict[str, int] = {}
|
||||||
for p in unique.values():
|
for p in unique.values():
|
||||||
cls = p.get("core_classification", "unclassified")
|
cls = p.get("core_classification", "other")
|
||||||
|
if cls not in CLS_LABELS or cls == "unclassified":
|
||||||
|
cls = "other"
|
||||||
classifications[cls] = classifications.get(cls, 0) + 1
|
classifications[cls] = classifications.get(cls, 0) + 1
|
||||||
|
|
||||||
# Count total systems across all profiles
|
# Count total systems across all profiles
|
||||||
@@ -318,10 +331,13 @@ def generate_home(
|
|||||||
" |----------|-----------|",
|
" |----------|-----------|",
|
||||||
" | RetroArch / Lakka | `system/` |",
|
" | RetroArch / Lakka | `system/` |",
|
||||||
" | Batocera | `/userdata/bios/` |",
|
" | Batocera | `/userdata/bios/` |",
|
||||||
|
" | BizHawk | `Firmware/` |",
|
||||||
|
" | EmuDeck | `Emulation/bios/` |",
|
||||||
" | Recalbox | `/recalbox/share/bios/` |",
|
" | Recalbox | `/recalbox/share/bios/` |",
|
||||||
" | RetroBat | `bios/` |",
|
" | RetroBat | `bios/` |",
|
||||||
" | RetroDECK | `~/retrodeck/bios/` |",
|
" | RetroDECK | `~/retrodeck/bios/` |",
|
||||||
" | EmuDeck | `Emulation/bios/` |",
|
" | RetroPie | `~/RetroPie/BIOS/` |",
|
||||||
|
" | RomM | `bios/{platform_slug}/` |",
|
||||||
"",
|
"",
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@@ -497,6 +513,17 @@ def generate_platform_page(
|
|||||||
lines.append(f"| BIOS path | `{base_dest}/` |")
|
lines.append(f"| BIOS path | `{base_dest}/` |")
|
||||||
if homepage:
|
if homepage:
|
||||||
lines.append(f"| Homepage | [{homepage}]({homepage}) |")
|
lines.append(f"| Homepage | [{homepage}]({homepage}) |")
|
||||||
|
contrib_list = (registry or {}).get(name, {}).get("contributed_by", [])
|
||||||
|
if contrib_list:
|
||||||
|
for cb in contrib_list:
|
||||||
|
username = cb.get("username", "")
|
||||||
|
contribution = cb.get("contribution", "")
|
||||||
|
pr = cb.get("pr")
|
||||||
|
pr_link = f" ([#{pr}]({REPO_URL}/pull/{pr}))" if pr else ""
|
||||||
|
lines.append(
|
||||||
|
f"| Contributed by | [@{username}](https://github.com/{username})"
|
||||||
|
f" - {contribution}{pr_link} |"
|
||||||
|
)
|
||||||
lines.extend(
|
lines.extend(
|
||||||
[
|
[
|
||||||
"",
|
"",
|
||||||
@@ -865,7 +892,11 @@ def generate_emulators_index(profiles: dict) -> str:
|
|||||||
|
|
||||||
|
|
||||||
def generate_emulator_page(
|
def generate_emulator_page(
|
||||||
name: str, profile: dict, db: dict, platform_files: dict | None = None
|
name: str,
|
||||||
|
profile: dict,
|
||||||
|
db: dict,
|
||||||
|
platform_files: dict | None = None,
|
||||||
|
data_names: set[str] | None = None,
|
||||||
) -> str:
|
) -> str:
|
||||||
if profile.get("type") == "alias":
|
if profile.get("type") == "alias":
|
||||||
parent = profile.get("alias_of", profile.get("bios_identical_to", "unknown"))
|
parent = profile.get("alias_of", profile.get("bios_identical_to", "unknown"))
|
||||||
@@ -878,8 +909,10 @@ def generate_emulator_page(
|
|||||||
emu_name = profile.get("emulator", name)
|
emu_name = profile.get("emulator", name)
|
||||||
emu_type = profile.get("type", "unknown")
|
emu_type = profile.get("type", "unknown")
|
||||||
classification = profile.get("core_classification", "")
|
classification = profile.get("core_classification", "")
|
||||||
source = profile.get("source", "")
|
source_raw = profile.get("source", "")
|
||||||
upstream = profile.get("upstream", "")
|
source = str(source_raw) if not isinstance(source_raw, dict) else ""
|
||||||
|
upstream_raw = profile.get("upstream", "")
|
||||||
|
upstream = str(upstream_raw) if not isinstance(upstream_raw, dict) else ""
|
||||||
version = profile.get("core_version", "unknown")
|
version = profile.get("core_version", "unknown")
|
||||||
profile.get("display_name", emu_name)
|
profile.get("display_name", emu_name)
|
||||||
profiled = profile.get("profiled_date", "unknown")
|
profiled = profile.get("profiled_date", "unknown")
|
||||||
@@ -905,10 +938,32 @@ def generate_emulator_page(
|
|||||||
if classification:
|
if classification:
|
||||||
cls_display = CLS_LABELS.get(classification, classification)
|
cls_display = CLS_LABELS.get(classification, classification)
|
||||||
lines.append(f"| Classification | {cls_display} |")
|
lines.append(f"| Classification | {cls_display} |")
|
||||||
if source:
|
if isinstance(source_raw, dict):
|
||||||
|
parts = []
|
||||||
|
for k, v in source_raw.items():
|
||||||
|
if isinstance(v, str) and v.startswith("http"):
|
||||||
|
parts.append(f"[{k}]({v})")
|
||||||
|
else:
|
||||||
|
parts.append(f"{k}: {v}")
|
||||||
|
lines.append(f"| Source | {', '.join(parts)} |")
|
||||||
|
elif source:
|
||||||
|
if source.startswith("http"):
|
||||||
lines.append(f"| Source | [{source}]({source}) |")
|
lines.append(f"| Source | [{source}]({source}) |")
|
||||||
if upstream and upstream != source:
|
else:
|
||||||
|
lines.append(f"| Source | {source} |")
|
||||||
|
if isinstance(upstream_raw, dict):
|
||||||
|
parts = []
|
||||||
|
for k, v in upstream_raw.items():
|
||||||
|
if isinstance(v, str) and v.startswith("http"):
|
||||||
|
parts.append(f"[{k}]({v})")
|
||||||
|
else:
|
||||||
|
parts.append(f"{k}: {v}")
|
||||||
|
lines.append(f"| Upstream | {', '.join(parts)} |")
|
||||||
|
elif upstream and upstream != source:
|
||||||
|
if upstream.startswith("http"):
|
||||||
lines.append(f"| Upstream | [{upstream}]({upstream}) |")
|
lines.append(f"| Upstream | [{upstream}]({upstream}) |")
|
||||||
|
else:
|
||||||
|
lines.append(f"| Upstream | {upstream} |")
|
||||||
lines.append(f"| Version | {version} |")
|
lines.append(f"| Version | {version} |")
|
||||||
lines.append(f"| Profiled | {profiled} |")
|
lines.append(f"| Profiled | {profiled} |")
|
||||||
if cores:
|
if cores:
|
||||||
@@ -1022,15 +1077,52 @@ def generate_emulator_page(
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
from cross_reference import _resolve_source
|
||||||
|
|
||||||
by_name = db.get("indexes", {}).get("by_name", {})
|
by_name = db.get("indexes", {}).get("by_name", {})
|
||||||
db.get("files", {})
|
by_name_lower = {k.lower(): k for k in by_name}
|
||||||
|
by_path_suffix = db.get("indexes", {}).get("by_path_suffix", {})
|
||||||
|
by_md5 = db.get("indexes", {}).get("by_md5", {})
|
||||||
|
db_files = db.get("files", {})
|
||||||
|
|
||||||
|
def _file_available(f: dict) -> bool:
|
||||||
|
"""Check if a file is available using the same resolution as cross_reference."""
|
||||||
|
fname = f.get("name", "")
|
||||||
|
if not fname:
|
||||||
|
return False
|
||||||
|
storage = f.get("storage", "")
|
||||||
|
if storage in ("release", "large_file"):
|
||||||
|
return True
|
||||||
|
src = _resolve_source(
|
||||||
|
fname, by_name, by_name_lower, data_names, by_path_suffix,
|
||||||
|
)
|
||||||
|
if src is not None:
|
||||||
|
return True
|
||||||
|
path_field = f.get("path", "")
|
||||||
|
if path_field and path_field != fname:
|
||||||
|
src = _resolve_source(
|
||||||
|
path_field, by_name, by_name_lower, data_names,
|
||||||
|
by_path_suffix,
|
||||||
|
)
|
||||||
|
if src is not None:
|
||||||
|
return True
|
||||||
|
md5_raw = f.get("md5", "")
|
||||||
|
if md5_raw:
|
||||||
|
for md5_val in md5_raw.split(","):
|
||||||
|
md5_val = md5_val.strip().lower()
|
||||||
|
if md5_val and by_md5.get(md5_val):
|
||||||
|
return True
|
||||||
|
sha1 = f.get("sha1", "")
|
||||||
|
if sha1 and sha1 in db_files:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
# Stats by category
|
# Stats by category
|
||||||
bios_files = [f for f in files if f.get("category", "bios") == "bios"]
|
bios_files = [f for f in files if f.get("category", "bios") == "bios"]
|
||||||
game_data = [f for f in files if f.get("category") == "game_data"]
|
game_data = [f for f in files if f.get("category") == "game_data"]
|
||||||
bios_zips = [f for f in files if f.get("category") == "bios_zip"]
|
bios_zips = [f for f in files if f.get("category") == "bios_zip"]
|
||||||
|
|
||||||
in_repo_count = sum(1 for f in files if f.get("name", "") in by_name)
|
in_repo_count = sum(1 for f in files if _file_available(f))
|
||||||
missing_count = len(files) - in_repo_count
|
missing_count = len(files) - in_repo_count
|
||||||
req_count = sum(1 for f in files if f.get("required"))
|
req_count = sum(1 for f in files if f.get("required"))
|
||||||
opt_count = len(files) - req_count
|
opt_count = len(files) - req_count
|
||||||
@@ -1058,7 +1150,7 @@ def generate_emulator_page(
|
|||||||
for f in files:
|
for f in files:
|
||||||
fname = f.get("name", "")
|
fname = f.get("name", "")
|
||||||
required = f.get("required", False)
|
required = f.get("required", False)
|
||||||
in_repo = fname in by_name
|
in_repo = _file_available(f)
|
||||||
source_ref = f.get("source_ref", "")
|
source_ref = f.get("source_ref", "")
|
||||||
mode = f.get("mode", "")
|
mode = f.get("mode", "")
|
||||||
hle = f.get("hle_fallback", False)
|
hle = f.get("hle_fallback", False)
|
||||||
@@ -1176,6 +1268,9 @@ def generate_emulator_page(
|
|||||||
if fsystem:
|
if fsystem:
|
||||||
details.append(f"System: {_system_link(fsystem, '../')}")
|
details.append(f"System: {_system_link(fsystem, '../')}")
|
||||||
if size:
|
if size:
|
||||||
|
if isinstance(size, list):
|
||||||
|
size_str = " / ".join(_fmt_size(s) for s in size)
|
||||||
|
else:
|
||||||
size_str = _fmt_size(size)
|
size_str = _fmt_size(size)
|
||||||
if fmin or fmax:
|
if fmin or fmax:
|
||||||
bounds = []
|
bounds = []
|
||||||
@@ -1501,19 +1596,32 @@ def generate_gap_analysis(
|
|||||||
|
|
||||||
# ---- Section 3: Core complement (cross-reference provenance) ----
|
# ---- Section 3: Core complement (cross-reference provenance) ----
|
||||||
|
|
||||||
|
from common import expand_platform_declared_names
|
||||||
|
|
||||||
all_declared: set[str] = set()
|
all_declared: set[str] = set()
|
||||||
declared: dict[str, set[str]] = {}
|
declared: dict[str, set[str]] = {}
|
||||||
for _name, cov in coverages.items():
|
for _name, cov in coverages.items():
|
||||||
config = cov["config"]
|
config = cov["config"]
|
||||||
|
# Enrich with alias resolution (MD5 -> SHA1 -> canonical name + aliases)
|
||||||
|
all_declared.update(expand_platform_declared_names(config, db))
|
||||||
for sys_id, system in config.get("systems", {}).items():
|
for sys_id, system in config.get("systems", {}).items():
|
||||||
for fe in system.get("files", []):
|
for fe in system.get("files", []):
|
||||||
fname = fe.get("name", "")
|
fname = fe.get("name", "")
|
||||||
if fname:
|
if fname:
|
||||||
declared.setdefault(sys_id, set()).add(fname)
|
declared.setdefault(sys_id, set()).add(fname)
|
||||||
all_declared.add(fname)
|
|
||||||
|
|
||||||
|
# Only include profiles relevant to at least one platform
|
||||||
|
unique_profiles = {
|
||||||
|
k: v
|
||||||
|
for k, v in profiles.items()
|
||||||
|
if v.get("type") not in ("alias", "test")
|
||||||
|
}
|
||||||
|
relevant_set: set[str] = set()
|
||||||
|
for _name, cov in coverages.items():
|
||||||
|
matched = resolve_platform_cores(cov["config"], unique_profiles)
|
||||||
|
relevant_set.update(matched)
|
||||||
active_profiles = {
|
active_profiles = {
|
||||||
k: v for k, v in profiles.items() if v.get("type") != "alias"
|
k: v for k, v in unique_profiles.items() if k in relevant_set
|
||||||
}
|
}
|
||||||
|
|
||||||
report = run_cross_reference(
|
report = run_cross_reference(
|
||||||
@@ -1641,6 +1749,35 @@ def generate_gap_analysis(
|
|||||||
)
|
)
|
||||||
lines.append("")
|
lines.append("")
|
||||||
|
|
||||||
|
# ---- Section 4: Acknowledged gaps (unsourceable files) ----
|
||||||
|
|
||||||
|
all_unsourceable: list[dict] = []
|
||||||
|
for emu_name, data in sorted(report.items()):
|
||||||
|
for u in data.get("unsourceable", []):
|
||||||
|
all_unsourceable.append({
|
||||||
|
"name": u["name"],
|
||||||
|
"emulator": data["emulator"],
|
||||||
|
"reason": u["reason"],
|
||||||
|
"source_ref": u.get("source_ref", ""),
|
||||||
|
})
|
||||||
|
|
||||||
|
if all_unsourceable:
|
||||||
|
lines.extend([
|
||||||
|
"## Acknowledged Gaps",
|
||||||
|
"",
|
||||||
|
f"{len(all_unsourceable)} files documented as unsourceable "
|
||||||
|
"(verified from source code).",
|
||||||
|
"",
|
||||||
|
"| File | Emulator | Reason | Source ref |",
|
||||||
|
"|------|----------|--------|-----------|",
|
||||||
|
])
|
||||||
|
for u in sorted(all_unsourceable, key=lambda x: x["name"]):
|
||||||
|
lines.append(
|
||||||
|
f"| `{u['name']}` | {u['emulator']} | {u['reason']} "
|
||||||
|
f"| {u['source_ref']} |"
|
||||||
|
)
|
||||||
|
lines.append("")
|
||||||
|
|
||||||
lines.extend(["", f'<div class="rb-timestamp">Generated on {_timestamp()}.</div>'])
|
lines.extend(["", f'<div class="rb-timestamp">Generated on {_timestamp()}.</div>'])
|
||||||
return "\n".join(lines) + "\n"
|
return "\n".join(lines) + "\n"
|
||||||
|
|
||||||
@@ -1727,8 +1864,10 @@ def generate_cross_reference(
|
|||||||
cls_raw = p.get("core_classification", "-")
|
cls_raw = p.get("core_classification", "-")
|
||||||
cls = CLS_LABELS.get(cls_raw, cls_raw)
|
cls = CLS_LABELS.get(cls_raw, cls_raw)
|
||||||
p.get("type", "")
|
p.get("type", "")
|
||||||
upstream = p.get("upstream", "")
|
upstream_raw2 = p.get("upstream", "")
|
||||||
source = p.get("source", "")
|
upstream = str(upstream_raw2) if not isinstance(upstream_raw2, dict) else ""
|
||||||
|
source_raw2 = p.get("source", "")
|
||||||
|
source = str(source_raw2) if not isinstance(source_raw2, dict) else ""
|
||||||
systems = p.get("systems", [])
|
systems = p.get("systems", [])
|
||||||
files = p.get("files", [])
|
files = p.get("files", [])
|
||||||
|
|
||||||
@@ -1750,12 +1889,16 @@ def generate_cross_reference(
|
|||||||
file_str += f" ({', '.join(parts)})"
|
file_str += f" ({', '.join(parts)})"
|
||||||
|
|
||||||
upstream_display = "-"
|
upstream_display = "-"
|
||||||
if upstream:
|
if upstream and upstream.startswith("http"):
|
||||||
upstream_short = upstream.replace("https://github.com/", "")
|
upstream_short = upstream.replace("https://github.com/", "")
|
||||||
upstream_display = f"[{upstream_short}]({upstream})"
|
upstream_display = f"[{upstream_short}]({upstream})"
|
||||||
elif source:
|
elif upstream:
|
||||||
|
upstream_display = upstream
|
||||||
|
elif source and source.startswith("http"):
|
||||||
source_short = source.replace("https://github.com/", "")
|
source_short = source.replace("https://github.com/", "")
|
||||||
upstream_display = f"[{source_short}]({source})"
|
upstream_display = f"[{source_short}]({source})"
|
||||||
|
elif source:
|
||||||
|
upstream_display = source
|
||||||
|
|
||||||
lines.append(
|
lines.append(
|
||||||
f" | [{emu_display}](emulators/{emu_name}.md) | {cls} | "
|
f" | [{emu_display}](emulators/{emu_name}.md) | {cls} | "
|
||||||
@@ -1777,9 +1920,10 @@ def generate_cross_reference(
|
|||||||
# Group profiles by upstream
|
# Group profiles by upstream
|
||||||
by_upstream: dict[str, list[str]] = {}
|
by_upstream: dict[str, list[str]] = {}
|
||||||
for emu_name, p in sorted(unique.items()):
|
for emu_name, p in sorted(unique.items()):
|
||||||
upstream = p.get("upstream", p.get("source", ""))
|
raw_up = p.get("upstream", p.get("source", ""))
|
||||||
if upstream:
|
up_str = str(raw_up) if not isinstance(raw_up, dict) else ""
|
||||||
by_upstream.setdefault(upstream, []).append(emu_name)
|
if up_str:
|
||||||
|
by_upstream.setdefault(up_str, []).append(emu_name)
|
||||||
|
|
||||||
# Build platform membership per core
|
# Build platform membership per core
|
||||||
platform_membership: dict[str, set[str]] = {}
|
platform_membership: dict[str, set[str]] = {}
|
||||||
@@ -1813,8 +1957,12 @@ def generate_cross_reference(
|
|||||||
plat_str = ", ".join(sorted(all_plats)) if all_plats else "-"
|
plat_str = ", ".join(sorted(all_plats)) if all_plats else "-"
|
||||||
core_links = ", ".join(f"[{c}](emulators/{c}.md)" for c in sorted(cores))
|
core_links = ", ".join(f"[{c}](emulators/{c}.md)" for c in sorted(cores))
|
||||||
|
|
||||||
|
if upstream_url.startswith("http"):
|
||||||
|
upstream_cell = f"[{upstream_short}]({upstream_url})"
|
||||||
|
else:
|
||||||
|
upstream_cell = upstream_short
|
||||||
lines.append(
|
lines.append(
|
||||||
f"| [{upstream_short}]({upstream_url}) | {core_links} | "
|
f"| {upstream_cell} | {core_links} | "
|
||||||
f"{cls_str} | {plat_str} |"
|
f"{cls_str} | {plat_str} |"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1876,6 +2024,7 @@ def generate_wiki_data_model(db: dict, profiles: dict) -> str:
|
|||||||
by_name = len(db.get("indexes", {}).get("by_name", {}))
|
by_name = len(db.get("indexes", {}).get("by_name", {}))
|
||||||
by_crc32 = len(db.get("indexes", {}).get("by_crc32", {}))
|
by_crc32 = len(db.get("indexes", {}).get("by_crc32", {}))
|
||||||
by_path = len(db.get("indexes", {}).get("by_path_suffix", {}))
|
by_path = len(db.get("indexes", {}).get("by_path_suffix", {}))
|
||||||
|
by_sha256 = len(db.get("indexes", {}).get("by_sha256", {}))
|
||||||
|
|
||||||
lines = [
|
lines = [
|
||||||
f"# Data model - {SITE_NAME}",
|
f"# Data model - {SITE_NAME}",
|
||||||
@@ -1907,6 +2056,7 @@ def generate_wiki_data_model(db: dict, profiles: dict) -> str:
|
|||||||
f"| `by_name` | {by_name} | filename to SHA1 list (name-based resolution) |",
|
f"| `by_name` | {by_name} | filename to SHA1 list (name-based resolution) |",
|
||||||
f"| `by_crc32` | {by_crc32} | CRC32 to SHA1 lookup |",
|
f"| `by_crc32` | {by_crc32} | CRC32 to SHA1 lookup |",
|
||||||
f"| `by_path_suffix` | {by_path} | relative path to SHA1 (regional variant disambiguation) |",
|
f"| `by_path_suffix` | {by_path} | relative path to SHA1 (regional variant disambiguation) |",
|
||||||
|
f"| `by_sha256` | {by_sha256} | SHA256 to SHA1 lookup (emulator profile validation) |",
|
||||||
"",
|
"",
|
||||||
"### File resolution order",
|
"### File resolution order",
|
||||||
"",
|
"",
|
||||||
@@ -1919,6 +2069,8 @@ def generate_wiki_data_model(db: dict, profiles: dict) -> str:
|
|||||||
"5. Name + alias with md5_composite / direct MD5 per candidate",
|
"5. Name + alias with md5_composite / direct MD5 per candidate",
|
||||||
"6. zippedFile content match via inner ROM MD5 index",
|
"6. zippedFile content match via inner ROM MD5 index",
|
||||||
"7. MAME clone fallback (deduped ZIP mapped to canonical name)",
|
"7. MAME clone fallback (deduped ZIP mapped to canonical name)",
|
||||||
|
"8. Data directory scan (exact path then case-insensitive basename walk)",
|
||||||
|
"9. Agnostic fallback (size-constrained match under system path prefix)",
|
||||||
"",
|
"",
|
||||||
"## Platform YAML",
|
"## Platform YAML",
|
||||||
"",
|
"",
|
||||||
@@ -1984,6 +2136,131 @@ def _build_emulator_file_index(profiles: dict) -> dict[str, dict]:
|
|||||||
# mkdocs.yml nav generator
|
# mkdocs.yml nav generator
|
||||||
|
|
||||||
|
|
||||||
|
def generate_which_pack() -> str:
|
||||||
|
"""Generate the 'Which pack?' decision page."""
|
||||||
|
rel = "https://github.com/Abdess/retrobios/releases"
|
||||||
|
return f"""\
|
||||||
|
# Getting started
|
||||||
|
|
||||||
|
Some retro consoles need firmware files (commonly called BIOS) to run games.
|
||||||
|
Without them, the emulator either refuses to start the game or runs it with
|
||||||
|
reduced accuracy. This project collects and verifies those files so they are
|
||||||
|
ready to use.
|
||||||
|
|
||||||
|
## Quick install
|
||||||
|
|
||||||
|
The installer detects the platform, finds the BIOS folder, downloads what
|
||||||
|
is missing, and copies keys to standalone emulators (Yuzu, Eden, Ryujinx,
|
||||||
|
DuckStation, PCSX2, Dolphin, etc.) when they are present on the system.
|
||||||
|
|
||||||
|
**Linux / Mac / Steam Deck:**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**Windows (PowerShell):**
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
iwr -useb https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex
|
||||||
|
```
|
||||||
|
|
||||||
|
Nothing else needed. The installer handles everything.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Manual download
|
||||||
|
|
||||||
|
Pick the pack that matches the setup from the [releases page]({rel}),
|
||||||
|
download it, and extract the files into the BIOS folder listed below.
|
||||||
|
After extraction, launch a game. If it needed BIOS, it will find it.
|
||||||
|
|
||||||
|
### Steam Deck
|
||||||
|
|
||||||
|
| Setup | What it is | Pack | Extract to |
|
||||||
|
|-------|-----------|------|-----------|
|
||||||
|
| [EmuDeck](https://www.emudeck.com/) | Installs and configures multiple emulators, adds each game to the Steam library | [EmuDeck]({rel}) | `~/Emulation/bios/` |
|
||||||
|
| [RetroDECK](https://retrodeck.net/) | Single Flatpak app, all emulators bundled, one-click install from Discover | [RetroDECK]({rel}) | `~/retrodeck/` |
|
||||||
|
| RetroArch standalone | Installed from Discover, Steam, or Flatpak | [RetroArch]({rel}) | Open RetroArch > Settings > Directory > System, that is the folder |
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
|
||||||
|
| Setup | What it is | Pack | Extract to |
|
||||||
|
|-------|-----------|------|-----------|
|
||||||
|
| [RetroArch](https://www.retroarch.com/) | Multi-system emulator, loads different cores for each console | [RetroArch]({rel}) | The `system` folder next to `retroarch.exe` |
|
||||||
|
| [RetroBat](https://www.retrobat.org/) | Windows frontend with EmulationStation, includes RetroArch and standalone emulators | [RetroBat]({rel}) | The `bios` folder inside the RetroBat installation |
|
||||||
|
| [BizHawk](https://tasvideos.org/BizHawk) | Accuracy-focused multi-system emulator, popular for speedruns and TAS | [BizHawk]({rel}) | The `Firmware` folder inside the BizHawk installation |
|
||||||
|
| [LaunchBox](https://www.launchbox-app.com/) | Game library manager and launcher, uses RetroArch or standalone emulators behind the scenes | [RetroArch]({rel}) | Open RetroArch (via LaunchBox) > Settings > Directory > System |
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
| Setup | What it is | Pack | Extract to |
|
||||||
|
|-------|-----------|------|-----------|
|
||||||
|
| RetroArch (native) | Installed via package manager or AppImage | [RetroArch]({rel}) | `~/.config/retroarch/system/` |
|
||||||
|
| RetroArch (Flatpak) | Installed from Flathub | [RetroArch]({rel}) | `~/.var/app/org.libretro.RetroArch/config/retroarch/system/` |
|
||||||
|
| [Batocera](https://batocera.org/) | Bootable OS dedicated to gaming, runs from USB or full install, supports PC and SBC | [Batocera]({rel}) | `/userdata/bios/` |
|
||||||
|
| [Recalbox](https://www.recalbox.com/) | Bootable OS for retro gaming, streamlined interface, auto-configured | [Recalbox]({rel}) | `/recalbox/share/bios/` |
|
||||||
|
|
||||||
|
### macOS
|
||||||
|
|
||||||
|
| Setup | What it is | Pack | Extract to |
|
||||||
|
|-------|-----------|------|-----------|
|
||||||
|
| [RetroArch](https://www.retroarch.com/) | Multi-system emulator | [RetroArch]({rel}) | `~/Library/Application Support/RetroArch/system/` |
|
||||||
|
|
||||||
|
### Raspberry Pi and single-board computers
|
||||||
|
|
||||||
|
| Setup | What it is | Pack | Extract to |
|
||||||
|
|-------|-----------|------|-----------|
|
||||||
|
| [RetroPie](https://retropie.org.uk/) | The classic Pi emulation setup, largest community, most online guides | [RetroArch]({rel}) | `~/RetroPie/BIOS/` |
|
||||||
|
| [Lakka](https://www.lakka.tv/) | Lightweight RetroArch OS, minimal config, boots straight into the UI | [RetroArch]({rel}) | `/storage/system/` |
|
||||||
|
| [Batocera](https://batocera.org/) | Easy setup, works on Pi 3/4/5 and many other boards (Odroid, etc.) | [Batocera]({rel}) | `/userdata/bios/` |
|
||||||
|
| [Recalbox](https://www.recalbox.com/) | Plug-and-play experience, good for a first build | [Recalbox]({rel}) | `/recalbox/share/bios/` |
|
||||||
|
|
||||||
|
### Android handheld (Retroid Pocket, R36S, Miyoo, etc.)
|
||||||
|
|
||||||
|
Most Android handhelds run RetroArch. Download the [RetroArch pack]({rel})
|
||||||
|
and extract into `RetroArch/system/` on internal storage or SD card.
|
||||||
|
|
||||||
|
### Self-hosted ROM manager
|
||||||
|
|
||||||
|
| Setup | What it is | Pack | Extract to |
|
||||||
|
|-------|-----------|------|-----------|
|
||||||
|
| [RomM](https://github.com/rommapp/romm) | Web-based ROM manager, plays games in the browser via EmulatorJS | [RomM]({rel}) | The `bios` folder in the RomM library, one subfolder per system |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Full pack or Platform pack?
|
||||||
|
|
||||||
|
Each platform has two pack types on the [releases page]({rel}).
|
||||||
|
|
||||||
|
**Full pack** (recommended)
|
||||||
|
|
||||||
|
Contains the platform's own BIOS list plus all files needed by each
|
||||||
|
emulator core available on that platform. This covers alternate cores,
|
||||||
|
optional firmware that improves accuracy, and edge cases. Larger download,
|
||||||
|
but everything works out of the box with any core.
|
||||||
|
|
||||||
|
**Platform pack**
|
||||||
|
|
||||||
|
Contains only the files the platform officially checks for. Much smaller
|
||||||
|
download. Good for limited storage (SD cards, handhelds) or setups that
|
||||||
|
only use default cores.
|
||||||
|
|
||||||
|
When in doubt, take the full pack.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## After extraction
|
||||||
|
|
||||||
|
Launch a game. If it needed a BIOS file, the emulator will find it
|
||||||
|
automatically. No configuration needed.
|
||||||
|
|
||||||
|
If a game still asks for a missing file, check the
|
||||||
|
[platforms section](platforms/index.md) for the full file list, or the
|
||||||
|
[emulators section](emulators/index.md) for what each core expects.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
def generate_mkdocs_nav(
|
def generate_mkdocs_nav(
|
||||||
coverages: dict,
|
coverages: dict,
|
||||||
manufacturers: dict,
|
manufacturers: dict,
|
||||||
@@ -2059,10 +2336,12 @@ def generate_mkdocs_nav(
|
|||||||
{"Adding a scraper": "wiki/adding-a-scraper.md"},
|
{"Adding a scraper": "wiki/adding-a-scraper.md"},
|
||||||
{"Testing guide": "wiki/testing-guide.md"},
|
{"Testing guide": "wiki/testing-guide.md"},
|
||||||
{"Release process": "wiki/release-process.md"},
|
{"Release process": "wiki/release-process.md"},
|
||||||
|
{"Community tools": "wiki/community-tools.md"},
|
||||||
]
|
]
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{"Home": "index.md"},
|
{"Home": "index.md"},
|
||||||
|
{"Download": "which-pack.md"},
|
||||||
{"Platforms": platform_nav},
|
{"Platforms": platform_nav},
|
||||||
{"Systems": system_nav},
|
{"Systems": system_nav},
|
||||||
{"Emulators": emu_nav},
|
{"Emulators": emu_nav},
|
||||||
@@ -2106,6 +2385,15 @@ def main():
|
|||||||
css_dest.parent.mkdir(parents=True, exist_ok=True)
|
css_dest.parent.mkdir(parents=True, exist_ok=True)
|
||||||
shutil.copy2(css_src, css_dest)
|
shutil.copy2(css_src, css_dest)
|
||||||
|
|
||||||
|
# Copy branding assets
|
||||||
|
images_dest = docs / "assets" / "images"
|
||||||
|
images_dest.mkdir(parents=True, exist_ok=True)
|
||||||
|
assets_src = Path(".github") / "assets"
|
||||||
|
for name, dest_name in [("logo.png", "logo.png"), ("favicon.png", "favicon.png")]:
|
||||||
|
src = assets_src / name
|
||||||
|
if src.exists():
|
||||||
|
shutil.copy2(src, images_dest / dest_name)
|
||||||
|
|
||||||
registry_path = Path(args.platforms_dir) / "_registry.yml"
|
registry_path = Path(args.platforms_dir) / "_registry.yml"
|
||||||
registry = {}
|
registry = {}
|
||||||
if registry_path.exists():
|
if registry_path.exists():
|
||||||
@@ -2187,7 +2475,7 @@ def main():
|
|||||||
str(docs / "emulators" / "index.md"), generate_emulators_index(profiles)
|
str(docs / "emulators" / "index.md"), generate_emulators_index(profiles)
|
||||||
)
|
)
|
||||||
for name, profile in profiles.items():
|
for name, profile in profiles.items():
|
||||||
page = generate_emulator_page(name, profile, db, platform_files)
|
page = generate_emulator_page(name, profile, db, platform_files, suppl_names)
|
||||||
write_if_changed(str(docs / "emulators" / f"{name}.md"), page)
|
write_if_changed(str(docs / "emulators" / f"{name}.md"), page)
|
||||||
|
|
||||||
# Generate cross-reference page
|
# Generate cross-reference page
|
||||||
@@ -2216,6 +2504,10 @@ def main():
|
|||||||
str(wiki_dest / "data-model.md"), generate_wiki_data_model(db, profiles)
|
str(wiki_dest / "data-model.md"), generate_wiki_data_model(db, profiles)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Generate which-pack page
|
||||||
|
print("Generating which-pack page...")
|
||||||
|
write_if_changed(str(docs / "which-pack.md"), generate_which_pack())
|
||||||
|
|
||||||
# Generate contributing
|
# Generate contributing
|
||||||
print("Generating contributing page...")
|
print("Generating contributing page...")
|
||||||
write_if_changed(str(docs / "contributing.md"), generate_contributing())
|
write_if_changed(str(docs / "contributing.md"), generate_contributing())
|
||||||
@@ -2251,6 +2543,8 @@ theme:
|
|||||||
icon: material/brightness-4
|
icon: material/brightness-4
|
||||||
name: Switch to auto
|
name: Switch to auto
|
||||||
font: false
|
font: false
|
||||||
|
logo: assets/images/logo.png
|
||||||
|
favicon: assets/images/favicon.png
|
||||||
icon:
|
icon:
|
||||||
logo: material/chip
|
logo: material/chip
|
||||||
features:
|
features:
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""Scraper for RetroDECK BIOS requirements.
|
"""Scraper for RetroDECK BIOS requirements.
|
||||||
|
|
||||||
|
Platform contributed by @monster-penguin (#36).
|
||||||
|
|
||||||
Source: https://github.com/RetroDECK/components
|
Source: https://github.com/RetroDECK/components
|
||||||
Format: component_manifest.json per component directory
|
Format: component_manifest.json per component directory
|
||||||
Hash: MD5 (primary), SHA256 for some entries (melonDS DSi)
|
Hash: MD5 (primary), SHA256 for some entries (melonDS DSi)
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""Scraper for RomM BIOS requirements.
|
"""Scraper for RomM BIOS requirements.
|
||||||
|
|
||||||
|
Platform contributed by @PixNyb (#37).
|
||||||
|
|
||||||
Source: https://github.com/rommapp/romm
|
Source: https://github.com/rommapp/romm
|
||||||
Format: JSON fixture mapping "slug:filename" to {size, crc, md5, sha1}
|
Format: JSON fixture mapping "slug:filename" to {size, crc, md5, sha1}
|
||||||
Hash: SHA1 primary (all four hashes available per entry)
|
Hash: SHA1 primary (all four hashes available per entry)
|
||||||
|
|||||||
163
scripts/truth.py
163
scripts/truth.py
@@ -12,6 +12,16 @@ from common import _norm_system_id, resolve_platform_cores
|
|||||||
from validation import filter_files_by_mode
|
from validation import filter_files_by_mode
|
||||||
|
|
||||||
|
|
||||||
|
def _serialize_source_ref(sr: object) -> str:
|
||||||
|
"""Convert a source_ref value to a clean string for serialization."""
|
||||||
|
if isinstance(sr, str):
|
||||||
|
return sr
|
||||||
|
if isinstance(sr, dict):
|
||||||
|
parts = [f"{k}: {v}" for k, v in sr.items()]
|
||||||
|
return "; ".join(parts)
|
||||||
|
return str(sr)
|
||||||
|
|
||||||
|
|
||||||
def _determine_core_mode(
|
def _determine_core_mode(
|
||||||
emu_name: str,
|
emu_name: str,
|
||||||
profile: dict,
|
profile: dict,
|
||||||
@@ -35,31 +45,78 @@ def _determine_core_mode(
|
|||||||
|
|
||||||
|
|
||||||
def _enrich_hashes(entry: dict, db: dict) -> None:
|
def _enrich_hashes(entry: dict, db: dict) -> None:
|
||||||
"""Fill missing hash fields from the database."""
|
"""Fill missing sibling hashes from the database, ground-truth preserving.
|
||||||
sha1 = entry.get("sha1", "")
|
|
||||||
md5 = entry.get("md5", "")
|
|
||||||
|
|
||||||
# Hashes can be lists (multi-hash) — use first string value
|
The profile's hashes come from the emulator source code (ground truth).
|
||||||
if isinstance(sha1, list):
|
Any hash of a given file set of bytes is a projection of that same
|
||||||
sha1 = sha1[0] if sha1 else ""
|
ground truth — sha1, md5, crc32 all identify the same bytes. If the
|
||||||
if isinstance(md5, list):
|
profile has ONE ground-truth hash, the DB can supply its siblings.
|
||||||
md5 = md5[0] if md5 else ""
|
|
||||||
|
Lookup order (all are hash-anchored, never name-based):
|
||||||
|
1. SHA1 direct
|
||||||
|
2. MD5 -> SHA1 via indexes.by_md5
|
||||||
|
3. CRC32 -> SHA1 via indexes.by_crc32 (weaker 32-bit anchor,
|
||||||
|
requires size match when profile has size)
|
||||||
|
|
||||||
|
Name-based enrichment is NEVER used: a name alone has no ground-truth
|
||||||
|
anchor, the file in bios/ may not match what the source code expects.
|
||||||
|
|
||||||
|
Multi-hash entries (lists of accepted variants) are left untouched to
|
||||||
|
preserve variant information.
|
||||||
|
"""
|
||||||
|
# Skip multi-hash entries — they express ground truth as "any of these N
|
||||||
|
# variants", enriching with a single sibling would lose that information.
|
||||||
|
for h in ("sha1", "md5", "crc32"):
|
||||||
|
if isinstance(entry.get(h), list):
|
||||||
|
return
|
||||||
|
|
||||||
|
files_db = db.get("files", {})
|
||||||
|
indexes = db.get("indexes", {})
|
||||||
|
|
||||||
record = None
|
record = None
|
||||||
if sha1 and isinstance(sha1, str) and db.get("files"):
|
|
||||||
record = db["files"].get(sha1)
|
# Anchor 1: SHA1 (strongest)
|
||||||
if record is None and md5:
|
sha1 = entry.get("sha1")
|
||||||
by_md5 = db.get("by_md5", {})
|
if sha1 and isinstance(sha1, str):
|
||||||
md5_str = md5 if isinstance(md5, str) else md5[0] if md5 else ""
|
record = files_db.get(sha1)
|
||||||
ref_sha1 = by_md5.get(md5_str.lower()) if md5_str else None
|
|
||||||
if ref_sha1 and db.get("files"):
|
# Anchor 2: MD5 (strong)
|
||||||
record = db["files"].get(ref_sha1)
|
if record is None:
|
||||||
|
md5 = entry.get("md5")
|
||||||
|
if md5 and isinstance(md5, str):
|
||||||
|
by_md5 = indexes.get("by_md5", {})
|
||||||
|
ref = by_md5.get(md5.lower())
|
||||||
|
if ref:
|
||||||
|
ref_sha1 = ref if isinstance(ref, str) else (ref[0] if ref else None)
|
||||||
|
if ref_sha1:
|
||||||
|
record = files_db.get(ref_sha1)
|
||||||
|
|
||||||
|
# Anchor 3: CRC32 (32-bit, collisions theoretically possible).
|
||||||
|
# Require size match when profile has a size to guard against collisions.
|
||||||
|
if record is None:
|
||||||
|
crc = entry.get("crc32")
|
||||||
|
if crc and isinstance(crc, str):
|
||||||
|
by_crc32 = indexes.get("by_crc32", {})
|
||||||
|
ref = by_crc32.get(crc.lower())
|
||||||
|
if ref:
|
||||||
|
ref_sha1 = ref if isinstance(ref, str) else (ref[0] if ref else None)
|
||||||
|
if ref_sha1:
|
||||||
|
candidate = files_db.get(ref_sha1)
|
||||||
|
if candidate is not None:
|
||||||
|
profile_size = entry.get("size")
|
||||||
|
if not profile_size or candidate.get("size") == profile_size:
|
||||||
|
record = candidate
|
||||||
|
|
||||||
if record is None:
|
if record is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Copy sibling hashes and size from the anchored record.
|
||||||
|
# These are projections of the same ground-truth bytes.
|
||||||
for field in ("sha1", "md5", "sha256", "crc32"):
|
for field in ("sha1", "md5", "sha256", "crc32"):
|
||||||
if not entry.get(field) and record.get(field):
|
if not entry.get(field) and record.get(field):
|
||||||
entry[field] = record[field]
|
entry[field] = record[field]
|
||||||
|
if not entry.get("size") and record.get("size"):
|
||||||
|
entry["size"] = record["size"]
|
||||||
|
|
||||||
|
|
||||||
def _merge_file_into_system(
|
def _merge_file_into_system(
|
||||||
@@ -82,7 +139,7 @@ def _merge_file_into_system(
|
|||||||
existing["_cores"] = existing.get("_cores", set()) | {emu_name}
|
existing["_cores"] = existing.get("_cores", set()) | {emu_name}
|
||||||
sr = file_entry.get("source_ref")
|
sr = file_entry.get("source_ref")
|
||||||
if sr is not None:
|
if sr is not None:
|
||||||
sr_key = str(sr) if not isinstance(sr, str) else sr
|
sr_key = _serialize_source_ref(sr)
|
||||||
existing["_source_refs"] = existing.get("_source_refs", set()) | {sr_key}
|
existing["_source_refs"] = existing.get("_source_refs", set()) | {sr_key}
|
||||||
else:
|
else:
|
||||||
existing.setdefault("_source_refs", set())
|
existing.setdefault("_source_refs", set())
|
||||||
@@ -91,14 +148,41 @@ def _merge_file_into_system(
|
|||||||
for h in ("sha1", "md5", "sha256", "crc32"):
|
for h in ("sha1", "md5", "sha256", "crc32"):
|
||||||
theirs = file_entry.get(h, "")
|
theirs = file_entry.get(h, "")
|
||||||
ours = existing.get(h, "")
|
ours = existing.get(h, "")
|
||||||
if theirs and ours and theirs.lower() != ours.lower():
|
# Skip empty strings
|
||||||
|
if not theirs or theirs == "":
|
||||||
|
continue
|
||||||
|
if not ours or ours == "":
|
||||||
|
existing[h] = theirs
|
||||||
|
continue
|
||||||
|
# Normalize to sets for multi-hash comparison
|
||||||
|
t_list = theirs if isinstance(theirs, list) else [theirs]
|
||||||
|
o_list = ours if isinstance(ours, list) else [ours]
|
||||||
|
t_set = {str(v).lower() for v in t_list}
|
||||||
|
o_set = {str(v).lower() for v in o_list}
|
||||||
|
if not t_set & o_set:
|
||||||
print(
|
print(
|
||||||
f"WARNING: hash conflict for {file_entry['name']} "
|
f"WARNING: hash conflict for {file_entry['name']} "
|
||||||
f"({h}: {ours} vs {theirs}, core {emu_name})",
|
f"({h}: {ours} vs {theirs}, core {emu_name})",
|
||||||
file=sys.stderr,
|
file=sys.stderr,
|
||||||
)
|
)
|
||||||
elif theirs and not ours:
|
# Merge non-hash data fields if existing lacks them.
|
||||||
existing[h] = theirs
|
# A core that creates an entry without size/path/validation may be
|
||||||
|
# enriched by a sibling core that has those fields.
|
||||||
|
for field in (
|
||||||
|
"size",
|
||||||
|
"min_size",
|
||||||
|
"max_size",
|
||||||
|
"path",
|
||||||
|
"validation",
|
||||||
|
"description",
|
||||||
|
"category",
|
||||||
|
"hle_fallback",
|
||||||
|
"note",
|
||||||
|
"aliases",
|
||||||
|
"contents",
|
||||||
|
):
|
||||||
|
if file_entry.get(field) is not None and existing.get(field) is None:
|
||||||
|
existing[field] = file_entry[field]
|
||||||
return
|
return
|
||||||
|
|
||||||
entry: dict = {"name": file_entry["name"]}
|
entry: dict = {"name": file_entry["name"]}
|
||||||
@@ -119,14 +203,25 @@ def _merge_file_into_system(
|
|||||||
"min_size",
|
"min_size",
|
||||||
"max_size",
|
"max_size",
|
||||||
"aliases",
|
"aliases",
|
||||||
|
"contents",
|
||||||
):
|
):
|
||||||
val = file_entry.get(field)
|
val = file_entry.get(field)
|
||||||
if val is not None:
|
if val is not None:
|
||||||
entry[field] = val
|
entry[field] = val
|
||||||
|
# Strip empty string hashes (profile says "" when hash is unknown)
|
||||||
|
for h in ("sha1", "md5", "sha256", "crc32"):
|
||||||
|
if entry.get(h) == "":
|
||||||
|
del entry[h]
|
||||||
|
# Normalize CRC32: strip 0x prefix, lowercase
|
||||||
|
crc = entry.get("crc32")
|
||||||
|
if isinstance(crc, str) and crc.startswith("0x"):
|
||||||
|
entry["crc32"] = crc[2:].lower()
|
||||||
|
elif isinstance(crc, str) and crc != crc.lower():
|
||||||
|
entry["crc32"] = crc.lower()
|
||||||
entry["_cores"] = {emu_name}
|
entry["_cores"] = {emu_name}
|
||||||
sr = file_entry.get("source_ref")
|
sr = file_entry.get("source_ref")
|
||||||
if sr is not None:
|
if sr is not None:
|
||||||
sr_key = str(sr) if not isinstance(sr, str) else sr
|
sr_key = _serialize_source_ref(sr)
|
||||||
entry["_source_refs"] = {sr_key}
|
entry["_source_refs"] = {sr_key}
|
||||||
else:
|
else:
|
||||||
entry["_source_refs"] = set()
|
entry["_source_refs"] = set()
|
||||||
@@ -137,6 +232,23 @@ def _merge_file_into_system(
|
|||||||
files.append(entry)
|
files.append(entry)
|
||||||
|
|
||||||
|
|
||||||
|
def _has_exploitable_data(entry: dict) -> bool:
|
||||||
|
"""Check if an entry has any data beyond its name that can drive verification.
|
||||||
|
|
||||||
|
Applied AFTER merging all cores so entries benefit from enrichment by
|
||||||
|
sibling cores before being judged empty.
|
||||||
|
"""
|
||||||
|
return bool(
|
||||||
|
any(entry.get(h) for h in ("sha1", "md5", "sha256", "crc32"))
|
||||||
|
or entry.get("path")
|
||||||
|
or entry.get("size")
|
||||||
|
or entry.get("min_size")
|
||||||
|
or entry.get("max_size")
|
||||||
|
or entry.get("validation")
|
||||||
|
or entry.get("contents")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def generate_platform_truth(
|
def generate_platform_truth(
|
||||||
platform_name: str,
|
platform_name: str,
|
||||||
config: dict,
|
config: dict,
|
||||||
@@ -274,6 +386,15 @@ def generate_platform_truth(
|
|||||||
)
|
)
|
||||||
sys_cov["unprofiled"].add(emu_name)
|
sys_cov["unprofiled"].add(emu_name)
|
||||||
|
|
||||||
|
# Drop files with no exploitable data AFTER all cores have contributed.
|
||||||
|
# A file declared by one core without hash/size/path may be enriched by
|
||||||
|
# another core that has the same entry with data — the filter must run
|
||||||
|
# once at the end, not per-core at creation time.
|
||||||
|
for sys_data in systems.values():
|
||||||
|
files_list = sys_data.get("files", [])
|
||||||
|
if files_list:
|
||||||
|
sys_data["files"] = [fe for fe in files_list if _has_exploitable_data(fe)]
|
||||||
|
|
||||||
# Convert sets to sorted lists for serialization
|
# Convert sets to sorted lists for serialization
|
||||||
for sys_id, sys_data in systems.items():
|
for sys_id, sys_data in systems.items():
|
||||||
for fe in sys_data.get("files", []):
|
for fe in sys_data.get("files", []):
|
||||||
|
|||||||
@@ -102,8 +102,12 @@ def _build_validation_index(profiles: dict) -> dict[str, dict]:
|
|||||||
index[fname]["crypto_only"].update(c for c in checks if c in _CRYPTO_CHECKS)
|
index[fname]["crypto_only"].update(c for c in checks if c in _CRYPTO_CHECKS)
|
||||||
# Size checks
|
# Size checks
|
||||||
if "size" in checks:
|
if "size" in checks:
|
||||||
if f.get("size") is not None:
|
raw_size = f.get("size")
|
||||||
index[fname]["sizes"].add(f["size"])
|
if raw_size is not None:
|
||||||
|
if isinstance(raw_size, list):
|
||||||
|
index[fname]["sizes"].update(raw_size)
|
||||||
|
else:
|
||||||
|
index[fname]["sizes"].add(raw_size)
|
||||||
if f.get("min_size") is not None:
|
if f.get("min_size") is not None:
|
||||||
cur = index[fname]["min_size"]
|
cur = index[fname]["min_size"]
|
||||||
index[fname]["min_size"] = (
|
index[fname]["min_size"] = (
|
||||||
|
|||||||
@@ -298,13 +298,23 @@ def _name_in_index(
|
|||||||
by_name: dict,
|
by_name: dict,
|
||||||
by_path_suffix: dict | None = None,
|
by_path_suffix: dict | None = None,
|
||||||
data_names: set[str] | None = None,
|
data_names: set[str] | None = None,
|
||||||
|
by_name_lower: dict[str, str] | None = None,
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Check if a name is resolvable in the database indexes or data directories."""
|
"""Check if a name is resolvable in the database indexes or data directories."""
|
||||||
|
# Strip trailing slash for directory-type entries (e.g. nestopia/samples/foo/)
|
||||||
|
name = name.rstrip("/")
|
||||||
if name in by_name:
|
if name in by_name:
|
||||||
return True
|
return True
|
||||||
basename = name.rsplit("/", 1)[-1]
|
basename = name.rsplit("/", 1)[-1] if "/" in name else name
|
||||||
if basename != name and basename in by_name:
|
if basename != name and basename in by_name:
|
||||||
return True
|
return True
|
||||||
|
# Case-insensitive by_name lookup
|
||||||
|
if by_name_lower:
|
||||||
|
key = name.lower()
|
||||||
|
if key in by_name_lower:
|
||||||
|
return True
|
||||||
|
if basename != name and basename.lower() in by_name_lower:
|
||||||
|
return True
|
||||||
if by_path_suffix and name in by_path_suffix:
|
if by_path_suffix and name in by_path_suffix:
|
||||||
return True
|
return True
|
||||||
if data_names:
|
if data_names:
|
||||||
@@ -345,6 +355,7 @@ def find_undeclared_files(
|
|||||||
declared_dd.add(ref)
|
declared_dd.add(ref)
|
||||||
|
|
||||||
by_name = db.get("indexes", {}).get("by_name", {})
|
by_name = db.get("indexes", {}).get("by_name", {})
|
||||||
|
by_name_lower = {k.lower(): k for k in by_name}
|
||||||
by_path_suffix = db.get("indexes", {}).get("by_path_suffix", {})
|
by_path_suffix = db.get("indexes", {}).get("by_path_suffix", {})
|
||||||
profiles = (
|
profiles = (
|
||||||
emu_profiles
|
emu_profiles
|
||||||
@@ -378,6 +389,10 @@ def find_undeclared_files(
|
|||||||
fname = f.get("name", "")
|
fname = f.get("name", "")
|
||||||
if not fname or fname in seen_files:
|
if not fname or fname in seen_files:
|
||||||
continue
|
continue
|
||||||
|
# Skip unsourceable files (documented reason, not a gap)
|
||||||
|
if f.get("unsourceable"):
|
||||||
|
seen_files.add(fname)
|
||||||
|
continue
|
||||||
# Skip pattern placeholders (e.g., <user-selected>.bin)
|
# Skip pattern placeholders (e.g., <user-selected>.bin)
|
||||||
if "<" in fname or ">" in fname or "*" in fname:
|
if "<" in fname or ">" in fname or "*" in fname:
|
||||||
continue
|
continue
|
||||||
@@ -416,7 +431,8 @@ def find_undeclared_files(
|
|||||||
if archive:
|
if archive:
|
||||||
if archive not in archive_entries:
|
if archive not in archive_entries:
|
||||||
in_repo = _name_in_index(
|
in_repo = _name_in_index(
|
||||||
archive, by_name, by_path_suffix, data_names
|
archive, by_name, by_path_suffix, data_names,
|
||||||
|
by_name_lower,
|
||||||
)
|
)
|
||||||
archive_entries[archive] = {
|
archive_entries[archive] = {
|
||||||
"emulator": profile.get("emulator", emu_name),
|
"emulator": profile.get("emulator", emu_name),
|
||||||
@@ -447,11 +463,20 @@ def find_undeclared_files(
|
|||||||
else:
|
else:
|
||||||
dest = f.get("path") or fname
|
dest = f.get("path") or fname
|
||||||
|
|
||||||
# Resolution: try name, then path basename, then path_suffix
|
# Resolution: storage flag, then name, then path basename
|
||||||
in_repo = _name_in_index(fname, by_name, by_path_suffix, data_names)
|
storage = f.get("storage", "")
|
||||||
|
if storage in ("release", "large_file"):
|
||||||
|
in_repo = True
|
||||||
|
else:
|
||||||
|
in_repo = _name_in_index(
|
||||||
|
fname, by_name, by_path_suffix, data_names, by_name_lower,
|
||||||
|
)
|
||||||
if not in_repo and dest != fname:
|
if not in_repo and dest != fname:
|
||||||
path_base = dest.rsplit("/", 1)[-1]
|
path_base = dest.rsplit("/", 1)[-1]
|
||||||
in_repo = _name_in_index(path_base, by_name, by_path_suffix, data_names)
|
in_repo = _name_in_index(
|
||||||
|
path_base, by_name, by_path_suffix, data_names,
|
||||||
|
by_name_lower,
|
||||||
|
)
|
||||||
|
|
||||||
checks = _parse_validation(f.get("validation"))
|
checks = _parse_validation(f.get("validation"))
|
||||||
undeclared.append(
|
undeclared.append(
|
||||||
@@ -1230,6 +1255,17 @@ def verify_emulator(
|
|||||||
check = check_file_validation(local_path, name, validation_index)
|
check = check_file_validation(local_path, name, validation_index)
|
||||||
if check:
|
if check:
|
||||||
reason, _emus = check
|
reason, _emus = check
|
||||||
|
better = _find_best_variant(
|
||||||
|
file_entry, db, local_path, validation_index,
|
||||||
|
)
|
||||||
|
if better:
|
||||||
|
result = {
|
||||||
|
"name": name,
|
||||||
|
"status": Status.OK,
|
||||||
|
"required": required,
|
||||||
|
"path": better,
|
||||||
|
}
|
||||||
|
else:
|
||||||
result = {
|
result = {
|
||||||
"name": name,
|
"name": name,
|
||||||
"status": Status.UNTESTED,
|
"status": Status.UNTESTED,
|
||||||
|
|||||||
@@ -994,8 +994,10 @@ class TestE2E(unittest.TestCase):
|
|||||||
groups = group_identical_platforms(
|
groups = group_identical_platforms(
|
||||||
["test_existence", "test_inherited"], self.platforms_dir
|
["test_existence", "test_inherited"], self.platforms_dir
|
||||||
)
|
)
|
||||||
# Different base_destination ->separate groups
|
# With flat ZIPs, base_destination no longer separates groups
|
||||||
self.assertEqual(len(groups), 2)
|
# Platforms with same files (regardless of base_dest) are grouped
|
||||||
|
self.assertEqual(len(groups), 1)
|
||||||
|
self.assertEqual(len(groups[0][0]), 2)
|
||||||
|
|
||||||
def test_51_platform_grouping_same(self):
|
def test_51_platform_grouping_same(self):
|
||||||
# Create two identical platforms
|
# Create two identical platforms
|
||||||
@@ -3093,20 +3095,23 @@ class TestE2E(unittest.TestCase):
|
|||||||
"system": "test-system",
|
"system": "test-system",
|
||||||
"required": True,
|
"required": True,
|
||||||
"mode": "both",
|
"mode": "both",
|
||||||
|
"sha1": "aaaa",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "lr_only.bin",
|
"name": "lr_only.bin",
|
||||||
"system": "test-system",
|
"system": "test-system",
|
||||||
"required": True,
|
"required": True,
|
||||||
"mode": "libretro",
|
"mode": "libretro",
|
||||||
|
"sha1": "bbbb",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sa_only.bin",
|
"name": "sa_only.bin",
|
||||||
"system": "test-system",
|
"system": "test-system",
|
||||||
"required": True,
|
"required": True,
|
||||||
"mode": "standalone",
|
"mode": "standalone",
|
||||||
|
"sha1": "cccc",
|
||||||
},
|
},
|
||||||
{"name": "nomode.bin", "system": "test-system", "required": True},
|
{"name": "nomode.bin", "system": "test-system", "required": True, "sha1": "dddd"},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
with open(os.path.join(self.emulators_dir, "dualmode.yml"), "w") as f:
|
with open(os.path.join(self.emulators_dir, "dualmode.yml"), "w") as f:
|
||||||
@@ -3140,12 +3145,14 @@ class TestE2E(unittest.TestCase):
|
|||||||
"system": "test-system",
|
"system": "test-system",
|
||||||
"required": True,
|
"required": True,
|
||||||
"mode": "libretro",
|
"mode": "libretro",
|
||||||
|
"sha1": "aaaa",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sa_file.bin",
|
"name": "sa_file.bin",
|
||||||
"system": "test-system",
|
"system": "test-system",
|
||||||
"required": True,
|
"required": True,
|
||||||
"mode": "standalone",
|
"mode": "standalone",
|
||||||
|
"sha1": "bbbb",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
@@ -3181,6 +3188,7 @@ class TestE2E(unittest.TestCase):
|
|||||||
"system": "test-system",
|
"system": "test-system",
|
||||||
"required": False,
|
"required": False,
|
||||||
"source_ref": "a.cpp:10",
|
"source_ref": "a.cpp:10",
|
||||||
|
"sha1": "aaaa",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
@@ -3195,6 +3203,7 @@ class TestE2E(unittest.TestCase):
|
|||||||
"system": "test-system",
|
"system": "test-system",
|
||||||
"required": True,
|
"required": True,
|
||||||
"source_ref": "b.cpp:20",
|
"source_ref": "b.cpp:20",
|
||||||
|
"sha1": "aaaa",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
@@ -3383,10 +3392,17 @@ class TestE2E(unittest.TestCase):
|
|||||||
registry_path,
|
registry_path,
|
||||||
emulators_dir=self.emulators_dir,
|
emulators_dir=self.emulators_dir,
|
||||||
)
|
)
|
||||||
|
# Detect flat vs nested ZIP to build expected paths
|
||||||
base = manifest.get("base_destination", "")
|
base = manifest.get("base_destination", "")
|
||||||
|
is_flat = bool(base) and not any(
|
||||||
|
n.startswith(base + "/") for n in zip_names
|
||||||
|
)
|
||||||
manifest_dests = set()
|
manifest_dests = set()
|
||||||
for f in manifest["files"]:
|
for f in manifest["files"]:
|
||||||
d = f"{base}/{f['dest']}" if base else f["dest"]
|
if base and not is_flat:
|
||||||
|
d = f"{base}/{f['dest']}"
|
||||||
|
else:
|
||||||
|
d = f["dest"]
|
||||||
manifest_dests.add(d)
|
manifest_dests.add(d)
|
||||||
|
|
||||||
self.assertEqual(manifest_dests, zip_names)
|
self.assertEqual(manifest_dests, zip_names)
|
||||||
|
|||||||
58
tests/test_no_case_collisions.py
Normal file
58
tests/test_no_case_collisions.py
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import os
|
||||||
|
import unittest
|
||||||
|
from collections import defaultdict
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
REPO_ROOT = Path(__file__).resolve().parent.parent
|
||||||
|
BIOS_ROOT = REPO_ROOT / "bios"
|
||||||
|
|
||||||
|
|
||||||
|
class TestNoCaseCollisions(unittest.TestCase):
|
||||||
|
"""Guard against case-colliding paths in bios/.
|
||||||
|
|
||||||
|
On case-insensitive filesystems (Windows, macOS default), git can only
|
||||||
|
check out one path per casefold-equivalence class, silently corrupting
|
||||||
|
clones. Issue #33 and #49 both stemmed from this.
|
||||||
|
|
||||||
|
.variants/ subdirs are exempt: they intentionally hold genuine content
|
||||||
|
variants disambiguated by hash suffix (e.g., BIOS.ROM.910fae67).
|
||||||
|
"""
|
||||||
|
|
||||||
|
def test_bios_has_no_case_colliding_paths(self) -> None:
|
||||||
|
if not BIOS_ROOT.is_dir():
|
||||||
|
self.skipTest("bios/ directory not present")
|
||||||
|
|
||||||
|
collisions: list[str] = []
|
||||||
|
for root, dirs, files in os.walk(BIOS_ROOT):
|
||||||
|
if ".variants" in Path(root).parts:
|
||||||
|
continue
|
||||||
|
|
||||||
|
dir_groups: dict[str, list[str]] = defaultdict(list)
|
||||||
|
for d in dirs:
|
||||||
|
dir_groups[d.casefold()].append(d)
|
||||||
|
for variants in dir_groups.values():
|
||||||
|
if len(variants) > 1:
|
||||||
|
rel = Path(root).relative_to(REPO_ROOT)
|
||||||
|
collisions.append(f"DIR {rel}: {sorted(variants)}")
|
||||||
|
|
||||||
|
file_groups: dict[str, list[str]] = defaultdict(list)
|
||||||
|
for f in files:
|
||||||
|
file_groups[f.casefold()].append(f)
|
||||||
|
for variants in file_groups.values():
|
||||||
|
if len(variants) > 1:
|
||||||
|
rel = Path(root).relative_to(REPO_ROOT)
|
||||||
|
collisions.append(f"FILE {rel}: {sorted(variants)}")
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
collisions,
|
||||||
|
[],
|
||||||
|
"Case-colliding paths in bios/ would break Windows/macOS clones:\n"
|
||||||
|
+ "\n".join(collisions),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
unittest.main()
|
||||||
@@ -324,10 +324,13 @@ python scripts/pipeline.py --offline
|
|||||||
This executes in sequence:
|
This executes in sequence:
|
||||||
|
|
||||||
1. `generate_db.py` - rebuild `database.json` from `bios/`
|
1. `generate_db.py` - rebuild `database.json` from `bios/`
|
||||||
2. `refresh_data_dirs.py` - update data directories
|
2. `refresh_data_dirs.py` - update data directories (skipped with `--offline`)
|
||||||
3. `verify.py --all` - verify all platforms including the new one
|
3. `verify.py --all` - verify all platforms including the new one
|
||||||
4. `generate_pack.py --all` - build ZIP packs
|
4. `generate_pack.py --all` - build ZIP packs + install manifests
|
||||||
5. Consistency check - verify counts match between verify and pack
|
5. Consistency check - verify counts match between verify and pack
|
||||||
|
6. Pack integrity - extract ZIPs and verify hashes per platform mode
|
||||||
|
7. `generate_readme.py` - regenerate README
|
||||||
|
8. `generate_site.py` - regenerate documentation site
|
||||||
|
|
||||||
Check the output for:
|
Check the output for:
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ Upstream sources Scrapers parse generate_db.py scans
|
|||||||
batocera-systems builds database.json
|
batocera-systems builds database.json
|
||||||
es_bios.xml (recalbox) (SHA1 primary key,
|
es_bios.xml (recalbox) (SHA1 primary key,
|
||||||
core-info .info files indexes: by_md5, by_name,
|
core-info .info files indexes: by_md5, by_name,
|
||||||
FirmwareDatabase.cs by_crc32, by_path_suffix)
|
FirmwareDatabase.cs by_crc32, by_sha256, by_path_suffix)
|
||||||
MAME/FBNeo source
|
MAME/FBNeo source
|
||||||
|
|
||||||
emulators/*.yml verify.py checks generate_pack.py resolves
|
emulators/*.yml verify.py checks generate_pack.py resolves
|
||||||
@@ -236,11 +236,11 @@ user's platform, filter files by hardware target, and download with SHA1 verific
|
|||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|
||||||
5 test files, 249 tests total:
|
5 test files, 259 tests total:
|
||||||
|
|
||||||
| File | Tests | Coverage |
|
| File | Tests | Coverage |
|
||||||
|------|-------|----------|
|
|------|-------|----------|
|
||||||
| `test_e2e.py` | 186 | file resolution, verification, severity, cross-reference, aliases, inheritance, shared groups, data dirs, storage tiers, HLE, launchers, platform grouping, core resolution, target filtering, truth/diff, exporters |
|
| `test_e2e.py` | 196 | file resolution, verification, severity, cross-reference, aliases, inheritance, shared groups, data dirs, storage tiers, HLE, launchers, platform grouping, core resolution, target filtering, truth/diff, exporters |
|
||||||
| `test_pack_integrity.py` | 8 | extract ZIP packs to disk, verify paths + hashes per platform's native mode |
|
| `test_pack_integrity.py` | 8 | extract ZIP packs to disk, verify paths + hashes per platform's native mode |
|
||||||
| `test_mame_parser.py` | 22 | BIOS root set detection, ROM block parsing, macro expansion |
|
| `test_mame_parser.py` | 22 | BIOS root set detection, ROM block parsing, macro expansion |
|
||||||
| `test_fbneo_parser.py` | 16 | BIOS set detection, ROM info parsing |
|
| `test_fbneo_parser.py` | 16 | BIOS set detection, ROM info parsing |
|
||||||
@@ -254,7 +254,7 @@ python -m unittest tests.test_e2e -v
|
|||||||
|
|
||||||
| Workflow | File | Trigger | Role |
|
| Workflow | File | Trigger | Role |
|
||||||
|----------|------|---------|------|
|
|----------|------|---------|------|
|
||||||
| Build & Release | `build.yml` | `workflow_dispatch` (manual) | restore large files, build packs, create GitHub release |
|
| Build & Release | `build.yml` | push to main (bios/, platforms/) + manual | restore large files, build packs, create GitHub release |
|
||||||
| Deploy Site | `deploy-site.yml` | push to main (platforms, emulators, wiki, scripts) + manual | generate site, build with MkDocs, deploy to GitHub Pages |
|
| Deploy Site | `deploy-site.yml` | push to main (platforms, emulators, wiki, scripts) + manual | generate site, build with MkDocs, deploy to GitHub Pages |
|
||||||
| PR Validation | `validate.yml` | pull request on `bios/`/`platforms/` | validate BIOS hashes, schema check, run tests, auto-label PR |
|
| PR Validation | `validate.yml` | pull request on `bios/`/`platforms/` | validate BIOS hashes, schema check, run tests, auto-label PR |
|
||||||
| Weekly Sync | `watch.yml` | cron (Monday 6 AM UTC) + manual | scrape upstream sources, detect changes, create update PR |
|
| Weekly Sync | `watch.yml` | cron (Monday 6 AM UTC) + manual | scrape upstream sources, detect changes, create update PR |
|
||||||
|
|||||||
21
wiki/community-tools.md
Normal file
21
wiki/community-tools.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# Community tools
|
||||||
|
|
||||||
|
Projects built on RetroBIOS data.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## BIOS Preservation Tool
|
||||||
|
|
||||||
|
**Author:** [monster-penguin](https://github.com/monster-penguin)
|
||||||
|
**Repository:** [github.com/monster-penguin/BIOS-Preservation-Tool](https://github.com/monster-penguin/BIOS-Preservation-Tool)
|
||||||
|
**License:** MIT
|
||||||
|
|
||||||
|
A local tool for managing your own BIOS collection. Point it at your files, it verifies them against RetroBIOS platform YAMLs, stores them in a deduplicated database, and produces ready-to-use directories for each platform. Supports scanning directories, archives, and URLs.
|
||||||
|
|
||||||
|
See the project's [README](https://github.com/monster-penguin/BIOS-Preservation-Tool#readme) for setup and usage.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
!!! note "Add your project"
|
||||||
|
|
||||||
|
Open an issue with a link to your repository.
|
||||||
@@ -89,13 +89,15 @@ A hash is a fixed-length fingerprint computed from a file's contents. If even on
|
|||||||
| SHA1 | 40 hex chars | `10155d8d6e6e832d8ea1571511e40dfb15fede05` |
|
| SHA1 | 40 hex chars | `10155d8d6e6e832d8ea1571511e40dfb15fede05` |
|
||||||
| CRC32 | 8 hex chars | `2F468B96` |
|
| CRC32 | 8 hex chars | `2F468B96` |
|
||||||
|
|
||||||
Different platforms use different hash types for verification. Batocera uses MD5, RetroArch checks existence only, and RomM accepts any of the three.
|
Different platforms use different hash types for verification. Batocera uses MD5, RetroArch checks existence only, BizHawk uses SHA1, and RomM uses MD5.
|
||||||
|
|
||||||
## Why does my verification report say UNTESTED?
|
## Why does my verification report say UNTESTED?
|
||||||
|
|
||||||
UNTESTED means the file exists on disk but its hash was not confirmed against a known value. This happens on existence-mode platforms (RetroArch, Lakka, RetroPie) where the platform only checks that the file is present, without verifying its contents.
|
UNTESTED means the file exists on disk but its hash does not match the expected value. This happens on MD5/SHA1-mode platforms (Batocera, Recalbox, BizHawk, etc.) when the file is present but contains different data than what the platform declares.
|
||||||
|
|
||||||
The file may still be correct. Running `verify.py --emulator <core> --verbose` shows the emulator-level ground truth, which can confirm whether the file's hash matches what the source code expects.
|
On existence-mode platforms (RetroArch, Lakka, RetroPie), files are never UNTESTED because the platform only checks presence, not content. Those files show as OK if present.
|
||||||
|
|
||||||
|
Running `verify.py --emulator <core> --verbose` shows the emulator-level ground truth, which can confirm whether the file's hash matches what the source code expects.
|
||||||
|
|
||||||
## Can I use BIOS from one platform on another?
|
## Can I use BIOS from one platform on another?
|
||||||
|
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ Relative to the RetroBat installation directory (e.g., `C:\RetroBat\bios\`).
|
|||||||
### RetroDECK
|
### RetroDECK
|
||||||
|
|
||||||
```
|
```
|
||||||
~/.var/app/net.retrodeck.retrodeck/retrodeck/bios/
|
~/retrodeck/bios/
|
||||||
```
|
```
|
||||||
|
|
||||||
### EmuDeck
|
### EmuDeck
|
||||||
|
|||||||
@@ -28,12 +28,16 @@ If you just want to download BIOS packs, see the [home page](../index.md).
|
|||||||
|
|
||||||
See [contributing](../contributing.md) for submission guidelines.
|
See [contributing](../contributing.md) for submission guidelines.
|
||||||
|
|
||||||
|
## Community
|
||||||
|
|
||||||
|
- **[Community tools](community-tools.md)** - projects built on RetroBIOS data
|
||||||
|
|
||||||
## Glossary
|
## Glossary
|
||||||
|
|
||||||
- **BIOS** - firmware burned into console hardware, needed by emulators that rely on original boot code
|
- **BIOS** - firmware burned into console hardware, needed by emulators that rely on original boot code
|
||||||
- **firmware** - system software loaded by a console at boot; used interchangeably with BIOS in this project
|
- **firmware** - system software loaded by a console at boot; used interchangeably with BIOS in this project
|
||||||
- **HLE** - High-Level Emulation; software reimplementation of BIOS functions, avoids needing the original file
|
- **HLE** - High-Level Emulation; software reimplementation of BIOS functions, avoids needing the original file
|
||||||
- **hash** - fixed-length fingerprint of a file's contents; this project uses MD5, SHA1, SHA256, and CRC32
|
- **hash** - fixed-length fingerprint of a file's contents; this project uses MD5, SHA1, SHA256, CRC32, and Adler-32
|
||||||
- **platform** - a distribution that packages emulators (RetroArch, Batocera, Recalbox, EmuDeck, etc.)
|
- **platform** - a distribution that packages emulators (RetroArch, Batocera, Recalbox, EmuDeck, etc.)
|
||||||
- **core** - an emulator packaged as a libretro plugin, loaded by RetroArch or compatible frontends
|
- **core** - an emulator packaged as a libretro plugin, loaded by RetroArch or compatible frontends
|
||||||
- **profile** - a YAML file in `emulators/` documenting one core's BIOS requirements, verified against source code
|
- **profile** - a YAML file in `emulators/` documenting one core's BIOS requirements, verified against source code
|
||||||
|
|||||||
@@ -250,7 +250,7 @@ even if documentation mentions it.
|
|||||||
|-------|----------|-------------|
|
|-------|----------|-------------|
|
||||||
| `emulator` | yes | display name |
|
| `emulator` | yes | display name |
|
||||||
| `type` | yes | `libretro`, `standalone`, `standalone + libretro`, `alias`, `launcher`, `game`, `utility`, `test` |
|
| `type` | yes | `libretro`, `standalone`, `standalone + libretro`, `alias`, `launcher`, `game`, `utility`, `test` |
|
||||||
| `core_classification` | no | `pure_libretro`, `official_port`, `community_fork`, `frozen_snapshot`, `enhanced_fork`, `game_engine`, `embedded_hle`, `alias`, `launcher` |
|
| `core_classification` | no | `pure_libretro`, `official_port`, `community_fork`, `frozen_snapshot`, `enhanced_fork`, `game_engine`, `embedded_hle`, `launcher`, `other` |
|
||||||
| `source` | yes | libretro core repository URL |
|
| `source` | yes | libretro core repository URL |
|
||||||
| `upstream` | no | original emulator repository URL |
|
| `upstream` | no | original emulator repository URL |
|
||||||
| `profiled_date` | yes | date of source analysis |
|
| `profiled_date` | yes | date of source analysis |
|
||||||
@@ -276,6 +276,7 @@ even if documentation mentions it.
|
|||||||
| `size` | expected size in bytes |
|
| `size` | expected size in bytes |
|
||||||
| `min_size`, `max_size` | size range when the code accepts a range |
|
| `min_size`, `max_size` | size range when the code accepts a range |
|
||||||
| `md5`, `sha1`, `crc32`, `sha256` | expected hashes from source code |
|
| `md5`, `sha1`, `crc32`, `sha256` | expected hashes from source code |
|
||||||
|
| `known_hash_adler32` | expected Adler-32 hash (used by Dolphin IPL files) |
|
||||||
| `validation` | checks the code performs: `size`, `crc32`, `md5`, `sha1`, `adler32`, `signature`, `crypto`. Can be a list or dict `{core: [...], upstream: [...]}` for divergent checks |
|
| `validation` | checks the code performs: `size`, `crc32`, `md5`, `sha1`, `adler32`, `signature`, `crypto`. Can be a list or dict `{core: [...], upstream: [...]}` for divergent checks |
|
||||||
| `aliases` | alternate filenames for the same file |
|
| `aliases` | alternate filenames for the same file |
|
||||||
| `mode` | `libretro`, `standalone`, or `both` |
|
| `mode` | `libretro`, `standalone`, or `both` |
|
||||||
@@ -288,4 +289,7 @@ even if documentation mentions it.
|
|||||||
| `note` | additional context |
|
| `note` | additional context |
|
||||||
| `contents` | structure of files inside a BIOS ZIP (`name`, `description`, `size`, `crc32`) |
|
| `contents` | structure of files inside a BIOS ZIP (`name`, `description`, `size`, `crc32`) |
|
||||||
| `storage` | `large_file` for files > 50 MB stored as release assets |
|
| `storage` | `large_file` for files > 50 MB stored as release assets |
|
||||||
|
| `agnostic` | true if any file under the system path within size constraints satisfies the requirement |
|
||||||
|
| `unsourceable` | reason why the file cannot be sourced (acknowledged gap) |
|
||||||
|
| `destination` | target path within the BIOS directory |
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Run everything in sequence:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
python scripts/pipeline.py --offline # DB + verify + packs + manifests + integrity + readme + site
|
python scripts/pipeline.py --offline # DB + verify + packs + manifests + integrity + readme + site
|
||||||
python scripts/pipeline.py --offline --skip-packs # DB + verify only
|
python scripts/pipeline.py --offline --skip-packs # DB + verify + readme + site
|
||||||
python scripts/pipeline.py --offline --skip-docs # skip readme + site generation
|
python scripts/pipeline.py --offline --skip-docs # skip readme + site generation
|
||||||
python scripts/pipeline.py --offline --target switch # filter by hardware target
|
python scripts/pipeline.py --offline --target switch # filter by hardware target
|
||||||
python scripts/pipeline.py --offline --with-truth # include truth generation + diff
|
python scripts/pipeline.py --offline --with-truth # include truth generation + diff
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ cannot start games for that system at all.
|
|||||||
|
|
||||||
**Check if the hash matches:**
|
**Check if the hash matches:**
|
||||||
|
|
||||||
Look for `HASH_MISMATCH` in the verify output. This means the file exists but
|
Look for `untested` entries in the verify output. This means the file exists but
|
||||||
contains different data than expected. Common causes:
|
its hash does not match the expected value. Common causes:
|
||||||
|
|
||||||
- Wrong region (a PAL BIOS instead of NTSC, or vice versa)
|
- Wrong region (a PAL BIOS instead of NTSC, or vice versa)
|
||||||
- Wrong hardware revision (e.g. SCPH-5501 vs SCPH-1001 for PlayStation)
|
- Wrong hardware revision (e.g. SCPH-5501 vs SCPH-1001 for PlayStation)
|
||||||
@@ -72,13 +72,11 @@ filename from the emulator profile.
|
|||||||
|
|
||||||
## Hash mismatch / UNTESTED
|
## Hash mismatch / UNTESTED
|
||||||
|
|
||||||
`verify.py` reports `HASH_MISMATCH` or `UNTESTED` for a file.
|
`verify.py` reports `UNTESTED` for a file.
|
||||||
|
|
||||||
**HASH_MISMATCH:**
|
|
||||||
|
|
||||||
The file exists and was hashed, but the computed hash doesn't match any expected
|
The file exists and was hashed, but the computed hash doesn't match any expected
|
||||||
value. This means you have a different version of the file than what the platform
|
value. This means you have a different version of the file than what the platform
|
||||||
or emulator expects.
|
or emulator expects. The reason field shows the expected vs actual hash prefix.
|
||||||
|
|
||||||
To find the correct version, check the system page on the site. It lists every
|
To find the correct version, check the system page on the site. It lists every
|
||||||
known BIOS file with its expected MD5 and SHA1.
|
known BIOS file with its expected MD5 and SHA1.
|
||||||
@@ -147,10 +145,11 @@ How to read and interpret `verify.py` output.
|
|||||||
| Status | Meaning |
|
| Status | Meaning |
|
||||||
|--------|---------|
|
|--------|---------|
|
||||||
| `ok` | File present, hash matches (or existence check passed) |
|
| `ok` | File present, hash matches (or existence check passed) |
|
||||||
| `untested` | File present, hash not confirmed (existence-only platforms) |
|
| `untested` | File present, hash not confirmed against expected value |
|
||||||
| `missing` | File not found in the repository |
|
| `missing` | File not found in the repository |
|
||||||
| `hash_mismatch` | File found but hash doesn't match expected value |
|
|
||||||
| `size_mismatch` | File found but size doesn't match what the emulator expects |
|
Hash and size mismatches are reported as `untested` with a reason field
|
||||||
|
showing expected vs actual values (e.g., `expected abc123… got def456…`).
|
||||||
|
|
||||||
**Reading the output:**
|
**Reading the output:**
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ Recalbox uses three severity levels derived from two YAML fields (`mandatory` an
|
|||||||
|-----------|--------------------|--------|-------------------|
|
|-----------|--------------------|--------|-------------------|
|
||||||
| true | true | RED | CRITICAL |
|
| true | true | RED | CRITICAL |
|
||||||
| true | false | YELLOW | WARNING |
|
| true | false | YELLOW | WARNING |
|
||||||
| false | (any) | GREEN | INFO |
|
| false | (any) | GREEN | WARNING |
|
||||||
|
|
||||||
### checkInsideZip (Batocera zippedFile)
|
### checkInsideZip (Batocera zippedFile)
|
||||||
|
|
||||||
@@ -93,9 +93,10 @@ If the inner file is not found inside the ZIP, the status is UNTESTED with a rea
|
|||||||
|
|
||||||
### RomM verification
|
### RomM verification
|
||||||
|
|
||||||
RomM checks both file size and hash. It accepts any hash type (MD5, SHA1, or CRC32).
|
RomM uses MD5 verification (`verification_mode: md5`). The platform YAML stores
|
||||||
ZIP files are not opened; only the container is checked. `verify.py` replicates this
|
SHA1, MD5, and CRC32 for reference, but `verify.py` checks only the MD5 field,
|
||||||
by checking size first, then trying each available hash.
|
matching the platform's runtime behavior. ZIP files are not opened; only the
|
||||||
|
container is checked.
|
||||||
|
|
||||||
|
|
||||||
## SHA1 Mode
|
## SHA1 Mode
|
||||||
|
|||||||
Reference in New Issue
Block a user