feat: add the nmk004.zip fbneo reads

This commit is contained in:
Abdessamad Derraz committed 2026-10-16 19:33:48 +02:00
1 parent 1699caaca2
commit 9faa3a3f79
12 files changed
+110 -58

No files matched your search

Binary file not shown.
+30 -7
View File
@@ -1,8 +1,8 @@
{
"schema_version": 1,
"generated_at": "2026-10-16T16:55:49Z",
"total_files": 19005,
"total_size": 17497729510,
"generated_at": "2026-10-16T17:23:53Z",
"total_files": 19006,
"total_size": 17497733066,
"bios_dir": "bios",
"files": {
"738c7f5fd0c8b57ee2e87ae7a97bf8e21a821d07": {
@@ -2311,6 +2311,16 @@
"crc32": "047aad03",
"adler32": "e48aaf79"
},
"9f84f563df14ea1a1bcaaf05b720c3f5545e5a83": {
"path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"name": "nmk004.zip",
"size": 3556,
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"md5": "f70b65623a99abd278f88707c3700b32",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"crc32": "5bacc201",
"adler32": "25c7b216"
},
"0783012b4eabca599e460988257ec37500501df6": {
"path": "bios/Arcade/Arcade/.variants/pgm.zip.0783012b",
"name": "pgm.zip",
@@ -195448,6 +195458,7 @@
"62d56b126e78f3d82faa4ee8a92c3e82": "4f28af31ca0defdd73d80edec2fa296908e624dc",
"ba20a7be3cd2933d1982dc5d51a60fbd": "985d935c06fe278ce39d7690aa6c53df88954cd6",
"9d7bbba34fa2e2e1a400b45f4c4d1410": "420194cc1171adb1920d2ff05e3b7b9ae2b73942",
"f70b65623a99abd278f88707c3700b32": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"68ef99a1f2847d08ff9242a90561d31b": "0783012b4eabca599e460988257ec37500501df6",
"653e991a39e867354d090c3394157d1c": "6bbbce094422062bd178d6007bed06dcdd0d8b78",
"931a4971dc4f34554838e7761afbbff7": "74c1d76155ca9cdd660d0e82f6a1b4df330420e7",
@@ -214904,6 +214915,11 @@
"fc398ab4e13ca6bfef3366ed3391b1050e0eb5e8",
"df89ef91bbaf84f2a109377fd4b17b0050a163e8"
],
"nmk004.zip": [
"9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"489256f5e2001070d2ad94c90d255282c71ed274",
"5ec203ff242f404f334a554282faaa262aaf076e"
],
"pgm.zip": [
"0783012b4eabca599e460988257ec37500501df6",
"6bbbce094422062bd178d6007bed06dcdd0d8b78",
@@ -216504,10 +216520,6 @@
"nichidvd.zip": [
"b3ac40491e08639f3cb7a926ec0de36f67b1c6ac"
],
"nmk004.zip": [
"489256f5e2001070d2ad94c90d255282c71ed274",
"5ec203ff242f404f334a554282faaa262aaf076e"
],
"nss.zip": [
"68b780f40623e51a421faf374ae5a84a53a81279",
"f81a4fbfacf41dd485c691c73f83c9b52a9964f0",
@@ -271272,6 +271284,7 @@
"6fc3e0de": "4f28af31ca0defdd73d80edec2fa296908e624dc",
"d2dccaa6": "985d935c06fe278ce39d7690aa6c53df88954cd6",
"047aad03": "420194cc1171adb1920d2ff05e3b7b9ae2b73942",
"5bacc201": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"713d6657": "0783012b4eabca599e460988257ec37500501df6",
"fefb84f1": "6bbbce094422062bd178d6007bed06dcdd0d8b78",
"deade381": "74c1d76155ca9cdd660d0e82f6a1b4df330420e7",
@@ -290279,6 +290292,7 @@
"6aa507a5dc33c45d2592bf2bc77eb3e497762221ddd9225f18583a5c55d38667": "4f28af31ca0defdd73d80edec2fa296908e624dc",
"4919ba2a7650b24d1bf2c9107c89a80d93b50703a0a371fa5113c791bd03e114": "985d935c06fe278ce39d7690aa6c53df88954cd6",
"7eb6e948f095d669f4bcdd22dbb58f6e3da4f3cca5ffe92ea42ebca8396cadac": "420194cc1171adb1920d2ff05e3b7b9ae2b73942",
"13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"8196ecd9f7bdecf3dc4b79ec19a898fba65475a5db3ee39888719155a40346bc": "0783012b4eabca599e460988257ec37500501df6",
"b26918d5b844b60490a748e3afe21313db2de285c188e58bdfc72add865b9049": "6bbbce094422062bd178d6007bed06dcdd0d8b78",
"118eff18337f439ed5f8fb90098c8ea92c9bf7fbb09b0d6f776842af4b58e4f9": "74c1d76155ca9cdd660d0e82f6a1b4df330420e7",
@@ -310558,6 +310572,15 @@
".variants/neogeo.zip.9d7bbba3": [
"420194cc1171adb1920d2ff05e3b7b9ae2b73942"
],
"Arcade/Arcade/.variants/nmk004.zip.f70b6562": [
"9f84f563df14ea1a1bcaaf05b720c3f5545e5a83"
],
"Arcade/.variants/nmk004.zip.f70b6562": [
"9f84f563df14ea1a1bcaaf05b720c3f5545e5a83"
],
".variants/nmk004.zip.f70b6562": [
"9f84f563df14ea1a1bcaaf05b720c3f5545e5a83"
],
"Arcade/Arcade/.variants/pgm.zip.0783012b": [
"0783012b4eabca599e460988257ec37500501df6"
],
+7 -7
View File
@@ -5,7 +5,7 @@
"platform": "batocera",
"display_name": "Batocera",
"version": "1.0",
"generated": "2026-10-16T16:55:49Z",
"generated": "2026-10-16T17:23:53Z",
"base_destination": "bios",
"detect": [
{
@@ -135896,10 +135896,10 @@
},
{
"dest": "nmk004.zip",
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
@@ -137183,10 +137183,10 @@
},
{
"dest": "fbneo/nmk004.zip",
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
+7 -7
View File
@@ -5,7 +5,7 @@
"platform": "bizhawk",
"display_name": "BizHawk",
"version": "1.0",
"generated": "2026-10-16T16:55:49Z",
"generated": "2026-10-16T17:23:53Z",
"base_destination": "Firmware",
"detect": [
{
@@ -11606,10 +11606,10 @@
},
{
"dest": "nmk004.zip",
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
@@ -12271,10 +12271,10 @@
},
{
"dest": "fbneo/nmk004.zip",
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
+4 -4
View File
@@ -5,7 +5,7 @@
"platform": "lakka",
"display_name": "Lakka",
"version": "1.0",
"generated": "2026-10-16T16:55:49Z",
"generated": "2026-10-16T17:23:53Z",
"base_destination": "system",
"detect": [
{
@@ -1538,10 +1538,10 @@
],
"alternatives": [
{
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
+7 -7
View File
@@ -5,7 +5,7 @@
"platform": "recalbox",
"display_name": "Recalbox",
"version": "1.0",
"generated": "2026-10-16T16:55:49Z",
"generated": "2026-10-16T17:23:53Z",
"base_destination": "bios",
"detect": [
{
@@ -37566,10 +37566,10 @@
},
{
"dest": "nmk004.zip",
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
@@ -40336,10 +40336,10 @@
},
{
"dest": "fbneo/nmk004.zip",
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
+4 -4
View File
@@ -5,7 +5,7 @@
"platform": "retroarch",
"display_name": "RetroArch",
"version": "1.0",
"generated": "2026-10-16T16:55:49Z",
"generated": "2026-10-16T17:23:53Z",
"base_destination": "system",
"detect": [
{
@@ -1777,10 +1777,10 @@
],
"alternatives": [
{
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
+7 -7
View File
@@ -5,7 +5,7 @@
"platform": "retrobat",
"display_name": "RetroBat",
"version": "1.0",
"generated": "2026-10-16T16:55:49Z",
"generated": "2026-10-16T17:23:53Z",
"base_destination": "bios",
"detect": [
{
@@ -129941,10 +129941,10 @@
},
{
"dest": "nmk004.zip",
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
@@ -130862,10 +130862,10 @@
},
{
"dest": "fbneo/nmk004.zip",
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
+4 -4
View File
@@ -5,7 +5,7 @@
"platform": "retrodeck",
"display_name": "RetroDECK",
"version": "1.0",
"generated": "2026-10-16T16:55:49Z",
"generated": "2026-10-16T17:23:53Z",
"base_destination": "",
"detect": [
{
@@ -88851,10 +88851,10 @@
},
{
"dest": "bios/fbneo/nmk004.zip",
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
+4 -4
View File
@@ -5,7 +5,7 @@
"platform": "retropie",
"display_name": "RetroPie",
"version": "1.0",
"generated": "2026-10-16T16:55:49Z",
"generated": "2026-10-16T17:23:53Z",
"base_destination": "BIOS",
"detect": [
{
@@ -1555,10 +1555,10 @@
],
"alternatives": [
{
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
+7 -7
View File
@@ -5,7 +5,7 @@
"platform": "rocknix",
"display_name": "ROCKNIX",
"version": "1.0",
"generated": "2026-10-16T16:55:49Z",
"generated": "2026-10-16T17:23:53Z",
"base_destination": "bios",
"detect": [
{
@@ -59804,10 +59804,10 @@
},
{
"dest": "nmk004.zip",
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
@@ -60498,10 +60498,10 @@
},
{
"dest": "fbneo/nmk004.zip",
"sha1": "489256f5e2001070d2ad94c90d255282c71ed274",
"sha256": "6ca3142ebe127f5d2cb755c53740a92d9bf1574bde8daa32642de2991af89aaa",
"sha1": "9f84f563df14ea1a1bcaaf05b720c3f5545e5a83",
"sha256": "13d503ea6c7e7b9a2249837cf915bff6df862b7035f5c99b18240088ec10854a",
"size": 3556,
"repo_path": "bios/Arcade/Arcade/nmk004.zip",
"repo_path": "bios/Arcade/Arcade/.variants/nmk004.zip.f70b6562",
"cores": [
"fbneo"
]
+29
View File
@@ -181,6 +181,35 @@ class TheArchiveHoldingTheCoreMembers(unittest.TestCase):
)
self.assertEqual(extra["members"], members)
def test_the_collection_holds_each_archive_a_core_requires(self):
"""FBNeo's nmk004.zip wants nmk004.bin crc 8ae61a09; both copies held
MAME's 83b6f611 dump while the FBNeo dump sat loose in bios/."""
import json
from common import archive_members, load_emulator_profiles, zip_member_crcs
database = REPO_ROOT / "database.json"
if not database.exists():
self.skipTest("database.json is not generated")
db = json.loads(database.read_text())
by_name = db["indexes"]["by_name"]
short = []
for emu, profile in load_emulator_profiles(str(REPO_ROOT / "emulators")).items():
entries = [f for f in profile.get("files") or [] if not f.get("unsourceable")]
for archive in sorted({f["archive"] for f in entries if f.get("archive")}):
required = {
m["crc32"] for m in archive_members(archive, entries) if m["required"]
}
copies = [
REPO_ROOT / db["files"][sha1]["path"]
for sha1 in by_name.get(archive, []) if sha1 in db["files"]
]
if required and copies and not any(
required <= zip_member_crcs(str(path)) for path in copies
):
short.append(f"{emu}: {archive}")
self.assertEqual(short, [])
def test_verify_and_the_pack_read_one_entry(self):
for module in ("verify.py", "generate_pack.py"):
source = (REPO_ROOT / "scripts" / module).read_text()