diff --git a/emulators/81.yml b/emulators/81.yml index 1c169552..02d480eb 100644 --- a/emulators/81.yml +++ b/emulators/81.yml @@ -42,7 +42,6 @@ files: mode: standalone size: 8192 md5: db398d4e4e93a6d4dee3bfe146918219 - validation: [crc32] note: "ZX81 8K BASIC ROM (edition 3, default). Embedded in libretro core as zx81.rom." source_ref: "Source/zx81config.cpp:260, 81/zx81/snap.c:489" - name: zx81.edition1.rom @@ -67,7 +66,6 @@ files: mode: standalone size: 4096 md5: e03bd725f98be45aac39c85f7fd41ce4 - validation: [crc32] source_ref: "Source/zx81config.cpp:259, Source/HW_.cpp:2741" # ZX97LE @@ -86,7 +84,6 @@ files: mode: standalone size: 8192 md5: db6efdfd82cebdfbb493d85b1a5efc3c - validation: [crc32] source_ref: "Source/zx81config.cpp:279, Source/HW_.cpp:2787" # Timex TS1500 diff --git a/tests/test_profile_checks.py b/tests/test_profile_checks.py index f451390b..438f4e61 100644 --- a/tests/test_profile_checks.py +++ b/tests/test_profile_checks.py @@ -175,5 +175,20 @@ class BeetlePceSystemCards(_Probe): self.assertFalse({"md5", "sha1", "crc32", "sha256"} & set(entry)) +class EightyOneRoms(_Probe): + """memory_load reads the ROM and CRC32Block's value only picks the tape + patches in rompatch.c; a ROM the table does not know loads without them + (81/zx81/zx81.c:102-103, 81/Ace/ace.c:77-78, 81/zx81/rompatch.c at + fa70949). The profile declared a crc32 check with no value.""" + + def test_an_unknown_rom_is_not_refused(self): + for name, size in (("zx81.edition3.rom", 8192), ("zx80.rom", 4096), + ("jupiterace.rom", 8192)): + with self.subTest(name=name): + self.assertTrue(self.accepts("81", name, b"\1" * size)) + entry = next(f for f in _profile("81")["files"] if f["name"] == name) + self.assertNotIn("crc32", entry.get("validation") or []) + + if __name__ == "__main__": unittest.main()