mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-01 00:27:20 -05:00
chore: merge region and coverage checks
This commit is contained in:
commit
a1d094c8b3
38 files changed
+5734
-526
No files matched your search
@@ -40,6 +40,7 @@ on:
|
||||
- "scripts/provenance_report.py"
|
||||
- "scripts/refresh_data_dirs.py"
|
||||
- "scripts/region.py"
|
||||
- "scripts/region_check.py"
|
||||
- "scripts/release_record.py"
|
||||
- "scripts/restore_large_files.py"
|
||||
- "scripts/safeparse.py"
|
||||
@@ -73,6 +74,8 @@ on:
|
||||
- "release.json"
|
||||
- "derivable.json"
|
||||
- "measurements/**"
|
||||
# The coverage table and the region results read the test game list.
|
||||
- "tests/campaign/content.yml"
|
||||
# The Starlight project: config, components, styles, lockfile. Its
|
||||
# generated folders are gitignored and never trigger anything.
|
||||
- "website/**"
|
||||
|
||||
@@ -37,15 +37,17 @@ files:
|
||||
- name: "scph5500.bin"
|
||||
description: "SCPH-5500 (v3.0 09-09-96 J)"
|
||||
region: [japan]
|
||||
required: true
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 524288
|
||||
sha1: "b05def971d8ec59f346f2d9ac21fb742e3eb6917"
|
||||
md5: "8dd7d5296a650fac7319bce665a6a53c"
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
source_ref: "libretro.c:768-776"
|
||||
source_ref: "libretro.c:768-776, 3425-3511"
|
||||
aliases: ["SCPH5500.bin", "SCPH-5500.bin"]
|
||||
evidence:
|
||||
required: ["2026-10-27-55dd1e4943c4"]
|
||||
|
||||
- name: "scph5903.bin"
|
||||
description: "SCPH-5903 (System ROM Version 2.2 12/04/95 J), Video CD daughterboard"
|
||||
@@ -63,7 +65,7 @@ files:
|
||||
- name: "scph5501.bin"
|
||||
description: "SCPH-5501, 5503, 7003 (v3.0 11-18-96 A)"
|
||||
region: [north-america, latin-america]
|
||||
required: true
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 524288
|
||||
sha1: "0555c6fae8906f3f09baf5988f00e55f88e9f30b"
|
||||
@@ -71,7 +73,7 @@ files:
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
note: "Picked for REGION_NA: a SYSTEM.CNF serial whose third letter is U (SCUS, SLUS), a licence string naming America, and content whose region cannot be read while the region option stays on auto (libretro.c:2436-2438, 2279, 2330-2335, 3252-3266, 4517)."
|
||||
source_ref: "libretro.c:787-805"
|
||||
source_ref: "libretro.c:787-805, 3425-3511"
|
||||
aliases:
|
||||
- "SCPH5501.bin"
|
||||
- "SCPH-5501.bin"
|
||||
@@ -89,27 +91,30 @@ files:
|
||||
- "SCPH-7003.BIN"
|
||||
evidence:
|
||||
aliases: ["2026-10-27-48269ae11777", "2026-10-27-ba941702c6c2", "2026-10-27-fc95254312c0", "2026-10-27-5a191f2b540b", "2026-10-27-12ba45024f8c", "2026-10-27-a7c1a301bdb0"]
|
||||
hle_fallback: ["2026-10-27-f2ecd7ed71b5", "2026-10-27-ca1f49599ca1"]
|
||||
hle_fallback: ["2026-10-27-6e97b657aca7", "2026-10-27-699ca140a270", "2026-10-27-ec1ab64f96d3", "2026-10-27-47c3dcceed98", "2026-10-27-607274136f7b", "2026-10-27-ae6d4db96e73"]
|
||||
required: ["2026-10-27-13be0e68b799"]
|
||||
|
||||
# -- Region: Europe (REGION_EU) --
|
||||
|
||||
- name: "scph5502.bin"
|
||||
description: "SCPH-5502, 5552 (v3.0 01-06-97 E)"
|
||||
region: [europe, oceania]
|
||||
required: true
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 524288
|
||||
sha1: "f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"
|
||||
md5: "32736f17079d0b2b7024407c39bd3050"
|
||||
validation: [sha1]
|
||||
mode: both
|
||||
source_ref: "libretro.c:807-821"
|
||||
source_ref: "libretro.c:807-821, 3425-3511"
|
||||
aliases:
|
||||
- "SCPH5502.bin"
|
||||
- "SCPH-5502.bin"
|
||||
- "scph5552.bin"
|
||||
- "SCPH5552.bin"
|
||||
- "SCPH-5552.bin"
|
||||
evidence:
|
||||
required: ["2026-10-27-33780d47efdf"]
|
||||
|
||||
# -- Override BIOS (region-free alternatives) --
|
||||
|
||||
|
||||
+8
-1
@@ -31,6 +31,9 @@ files:
|
||||
size: 524288
|
||||
validation: [size]
|
||||
source_ref: "source frontend/libretro.c:1229 (bios[0]), :1181 (size check)"
|
||||
evidence:
|
||||
hle_fallback: ["2026-10-27-c535a6e54730"]
|
||||
validation: ["2026-10-27-c535a6e54730", "2026-10-27-dd7185b51e4e"]
|
||||
|
||||
- name: "scph5501.bin"
|
||||
description: "SCPH-5501 (v3.0 11-18-96 A)"
|
||||
@@ -41,7 +44,8 @@ files:
|
||||
validation: [size]
|
||||
source_ref: "source frontend/libretro.c:1229 (bios[1]), :1181 (size check)"
|
||||
evidence:
|
||||
hle_fallback: ["2026-10-27-cfc47bbfcd02", "2026-10-27-b6d0ce4dfd7e"]
|
||||
hle_fallback: ["2026-10-27-c535a6e54730"]
|
||||
validation: ["2026-10-27-c535a6e54730", "2026-10-27-fb7efd4c1af6"]
|
||||
|
||||
- name: "scph7001.bin"
|
||||
description: "SCPH-7001 (v4.1 12-16-97 A)"
|
||||
@@ -51,6 +55,9 @@ files:
|
||||
size: 524288
|
||||
validation: [size]
|
||||
source_ref: "source frontend/libretro.c:1229 (bios[2]), :1181 (size check)"
|
||||
evidence:
|
||||
hle_fallback: ["2026-10-27-c535a6e54730"]
|
||||
validation: ["2026-10-27-c535a6e54730", "2026-10-27-5fccbc0c830b"]
|
||||
|
||||
# Dynamic scan fallback: after the 3 named files, find_any_bios() scans the
|
||||
# system directory for any file starting with "scph" (case-insensitive) that
|
||||
|
||||
@@ -49,7 +49,7 @@ files:
|
||||
source_ref: "source frontend/libretro.c:3864-3867 (listed_bios[1])"
|
||||
note: "Preferred US BIOS, searched first by exact filename. The US slot is the detector's default: a disc takes it for both America licence strings and for any licence that is neither \"Inc.\" (JP) nor \"Euro pe\" (EU), and content without a disc boots it too (libpcsxcore/misc.c:422-453, frontend/libretro.c:2167-2171)."
|
||||
evidence:
|
||||
hle_fallback: ["2026-10-27-e9eeba54945e"]
|
||||
hle_fallback: ["2026-10-27-82bf6de00b8a", "2026-10-27-1d4eb1daebe5"]
|
||||
|
||||
# -- Region: Europe (PSX_REGION_EU = 2) --
|
||||
|
||||
@@ -84,6 +84,8 @@ files:
|
||||
validation: [size]
|
||||
source_ref: "source frontend/libretro.c:3864-3867 (listed_bios[4])"
|
||||
note: "PSone slim model."
|
||||
evidence:
|
||||
hle_fallback: ["2026-10-27-82bf6de00b8a", "2026-10-27-1d4eb1daebe5"]
|
||||
|
||||
- name: "scph7001.bin"
|
||||
description: "SCPH-7001 (v4.1 12-16-97 A)"
|
||||
@@ -93,6 +95,8 @@ files:
|
||||
hle_fallback: true
|
||||
validation: [size]
|
||||
source_ref: "source frontend/libretro.c:3864-3867 (listed_bios[5])"
|
||||
evidence:
|
||||
hle_fallback: ["2026-10-27-82bf6de00b8a", "2026-10-27-1d4eb1daebe5"]
|
||||
|
||||
- name: "scph1001.bin"
|
||||
description: "SCPH-1001 (v2.2 12-04-95 A)"
|
||||
@@ -103,6 +107,8 @@ files:
|
||||
validation: [size]
|
||||
source_ref: "source frontend/libretro.c:3864-3867 (listed_bios[6])"
|
||||
note: "Original US model. Last in the explicit filename search list."
|
||||
evidence:
|
||||
hle_fallback: ["2026-10-27-82bf6de00b8a", "2026-10-27-1d4eb1daebe5"]
|
||||
|
||||
# -- Dynamic scan fallback --
|
||||
# After exhausting listed_bios[], the core calls find_any_bios() which scans
|
||||
|
||||
@@ -67,7 +67,7 @@ files:
|
||||
source_ref: "source src/core/bios.cpp:50-51"
|
||||
aliases: []
|
||||
evidence:
|
||||
hle_fallback: ["2026-10-27-dc8ff3969ec2"]
|
||||
hle_fallback: ["2026-10-27-ba53cd101c61", "2026-10-27-f9363c9e87f6"]
|
||||
|
||||
- name: "scph5502.bin"
|
||||
description: "SCPH-5502, 5552 (v3.0 01-06-97 E)"
|
||||
@@ -90,6 +90,8 @@ files:
|
||||
validation: [size, md5]
|
||||
source_ref: "source src/core/bios.cpp:66-67"
|
||||
aliases: []
|
||||
evidence:
|
||||
hle_fallback: ["2026-10-27-ba53cd101c61"]
|
||||
|
||||
- name: "ps1_rom.bin"
|
||||
description: "PS3 embedded PS1 BIOS (v5.0 06-23-03 A)"
|
||||
@@ -102,6 +104,8 @@ files:
|
||||
note: "Accepts PS1 (512KB), PS2 (4MB), and PS3 (0x3E66F0) sizes. Only first 512KB used."
|
||||
source_ref: "source src/core/bios.h:9, source src/core/bios.cpp:71, source src/core/bios.cpp:81-90"
|
||||
aliases: []
|
||||
evidence:
|
||||
hle_fallback: ["2026-10-27-ba53cd101c61"]
|
||||
|
||||
- name: "ps1_rom.bin"
|
||||
description: "PS3 embedded PS1 BIOS (v5.0 06-23-03 A), whole 0x3E66F0 image"
|
||||
|
||||
@@ -24,3 +24,81 @@
|
||||
{"check":{"claim":"mednafen_psx_hw opens psxonpsp660.bin as psxonpsp660.bin","method":"psxonpsp660.bin staged as psxonpsp660.bin, against nothing there, 3600 frames of Bust-A-Move 2 - Arcade Edition (USA). The files the core opened are read from strace.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[920,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[930,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[940,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[950,"d51ab7783f8eeafc63a28f14ce39f8e2babeLine truncated
|
||||
{"check":{"claim":"mednafen_psx_hw opens scph5903.bin as scph5903.bin","method":"scph5903.bin staged as scph5903.bin, against nothing there, 3600 frames of Bust-A-Move 2 - Arcade Edition (USA). The files the core opened are read from strace.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[920,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[930,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[940,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[950,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[960,Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_hw_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_hw_libretro.so","library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"34963a732f169b0c8ec7d387c742ec367169025e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"a3182429ef3e86a03d23ae76326cd4d7b33a12fd18d28ce60c7231fe8ba5fe6e"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[1.63,2.67,3.42],"load_before":[1.78,2.77,3.47],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-18a314355341","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":0,"frames":1800,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1"],"options":{},"presses":[],"repetitions":5,"warmup":600},"kind":"bench","record_version":3,"recorded_at":"2026-10-27T11:04:53+00:00","subject":"bench-mednafen-psx-hw-bust-a-move-2-arcade-edition-usa","supersedes":null,"timing":{"fps":{"max":665.8914452174591,"mean":661.8036805880163,"median":664.3413109199394,"min":649.7759485719646,"raw":[665.7064866444065,665.8914452174591,664.3413109199394,663.3032115863116,649.7759485719646],"stdev":6.806177582641735},"ms_per_frame":{"max":1.538992020553754,"mean":1.5111516665525009,"median":1.5052503638758532,"min":1.5017462788899947,"raw":[1.5021635211046993,1.5017462788899947,1.5052503638758532,1.507606148338204,1.538992020553754],"stdev":0.015745868182457167}},"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"14":3,"23":1,"28":1,"32":1174,"35":2,"36":1,"37":8,"40":1173,"44":1,"45":4,"46":1,"47":1,"51":1,"55":25,"56":2,"57":1,"59":1,"6":1,"69":1,"8":1},"files_opened":null,"files_probed_absent":null,"fps":665.7064866444065,"fps_nominal":59.94,"frames":1800,"input_pressed":0,"input_queries":76800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Bust-A-Move 2 - Arcade Edition (USA).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Firmware fLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"1c613dc4b4545f9c352edf834cc039e0939dc1bf","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.81,3.19,3.73],"load_before":[2.71,3.18,3.73],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-c6f6ea437aef","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T20:31:48+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-usa-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":563.1687249315061,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_verLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"1c613dc4b4545f9c352edf834cc039e0939dc1bf","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.67,2.85,3.32],"load_before":[2.55,2.83,3.32],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-c69162e4f54c","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T20:42:14+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-usa-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":563.3533868997672,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_versLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"1c613dc4b4545f9c352edf834cc039e0939dc1bf","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.71,2.8,3.26],"load_before":[2.69,2.8,3.26],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-07643bdf8d21","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T20:43:45+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-usa-others","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2534,"35":2,"36":1,"37":4,"40":2533,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":["scph5501.bin","SCPH5501.bin","SCPH5501.BIN","SCPH-5Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"1c613dc4b4545f9c352edf834cc039e0939dc1bf","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.75,2.76,3.18],"load_before":[2.73,2.76,3.18],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-15e2e9c5a9c0","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T20:45:46+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-usa-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":565.652845463327,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_versLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"1c613dc4b4545f9c352edf834cc039e0939dc1bf","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.64,2.71,3.09],"load_before":[2.49,2.68,3.08],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-c6d906be01c0","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T20:48:32+00:00","subject":"region-mednafen_psx-puzzle-bobble-2-japan-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2382,"35":2,"36":1,"37":8,"40":2381,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"}],"files_probed_absent":[],"fps":547.8670908063518,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Puzzle Bobble 2 (Japan).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Firmware found: <system>/scph5500.bin"},{"frame":0,"level":"info","text":"Firmware SHA1: B05DEF971D8EC59F346F2D9AC21FB742E3EB6917"},{"frame":0,"level":"info","text":"Controller 1: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 2: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 3: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 4: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 5: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 6: PlayStation Controller"},{"frLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"1c613dc4b4545f9c352edf834cc039e0939dc1bf","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.6,2.7,3.05],"load_before":[2.62,2.7,3.06],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-b6bbe09ee2ff","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T20:49:59+00:00","subject":"region-mednafen_psx-puzzle-bobble-2-japan-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2382,"35":2,"36":1,"37":8,"40":2381,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"}],"files_probed_absent":[],"fps":544.0043298897393,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Puzzle Bobble 2 (Japan).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Firmware found: <system>/scph5500.bin"},{"frame":0,"level":"info","text":"Firmware SHA1: B05DEF971D8EC59F346F2D9AC21FB742E3EB6917"},{"frame":0,"level":"info","text":"Controller 1: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 2: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 3: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 4: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 5: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 6: PlayStation Controller"},{"frame"Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"1c613dc4b4545f9c352edf834cc039e0939dc1bf","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.83,2.91,3.05],"load_before":[2.62,2.88,3.03],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-c159d1f82d08","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T20:55:25+00:00","subject":"region-mednafen_psx-puzzle-bobble-2-japan-others","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2546,"35":2,"36":1,"37":4,"40":2545,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":["scph5500.bin","SCPH5500.bin","SCPH5500.BIN","SCPH-5500.bin","SCPH-5500.BIN"],"fps":559.5136015707518,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Puzzle Bobble 2 (Japan).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Searching for firmware checksum: B05DEF971D8EC59F346F2D9AC21FB742E3EB6917"},{"frame":0,"level":"info","text":"Firmware is missing: scph5500.bin"},{"frame":0,"level":"info","text":"Controller 1: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 2: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 3: PlayStation ControlLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"1c613dc4b4545f9c352edf834cc039e0939dc1bf","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.83,3.07,3.21],"load_before":[2.8,3.07,3.21],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-4ea2aca50119","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:12:52+00:00","subject":"region-mednafen_psx-puzzle-bobble-2-japan-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2382,"35":2,"36":1,"37":8,"40":2381,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"}],"files_probed_absent":[],"fps":549.9125055809557,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Puzzle Bobble 2 (Japan).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Firmware found: <system>/scph5500.bin"},{"frame":0,"level":"info","text":"Firmware SHA1: B05DEF971D8EC59F346F2D9AC21FB742E3EB6917"},{"frame":0,"level":"info","text":"Controller 1: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 2: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 3: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 4: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 5: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 6: PlayStation Controller"},{"fraLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"1c613dc4b4545f9c352edf834cc039e0939dc1bf","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.75,2.87,3.1],"load_before":[2.73,2.87,3.1],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-3b215d4930a8","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:16:06+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-europe-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2481,"35":2,"36":1,"37":8,"40":2480,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":497.84422525418665,"fps_nominal":50.0,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Bust-A-Move 2 - Arcade Edition (Europe).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Firmware found: <system>/scph5502.bin"},{"frame":0,"level":"info","text":"Firmware SHA1: F6BC2D1F5EB6593DE7D089C425AC681D6FFFD3F0"},{"frame":0,"level":"info","text":"ControllLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":["load average reached 3.08 (threshold 3.0)"],"frontend":{"commit":"1c613dc4b4545f9c352edf834cc039e0939dc1bf","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.08,2.88,3.07],"load_before":[2.65,2.8,3.04],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-2dae6b0df109","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:18:06+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-europe-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2481,"35":2,"36":1,"37":8,"40":2480,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":430.7653096280971,"fps_nominal":50.0,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Bust-A-Move 2 - Arcade Edition (Europe).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Firmware found: <system>/scph5502.bin"},{"frame":0,"level":"info","text":"Firmware SHA1: F6BC2D1F5EB6593DE7D089C425AC681D6FFFD3F0"},Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"1c613dc4b4545f9c352edf834cc039e0939dc1bf","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.6,2.87,3.0],"load_before":[2.57,2.87,3.0],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-ca91eca1e943","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:24:01+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-europe-others","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2472,"35":2,"36":1,"37":4,"40":2471,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":["scph5502.bin","SCPH5502.bin","SCPH5502.BIN","SCPH-5502.bin","SCPH-5502.BIN","scph5552.bin","SCPH5552.bin","SCPH5552.BIN","SCPH-5552.bin","SCPH-5552.BIN"],"fps":561.0980594128926,"fps_nominal":50.0,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Bust-A-Move 2 - Arcade Edition (Europe).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"1c613dc4b4545f9c352edf834cc039e0939dc1bf","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.49,3.08,3.09],"load_before":[2.49,3.1,3.1],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-ebdc87c8f166","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:27:49+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-europe-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2481,"35":2,"36":1,"37":8,"40":2480,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":500.3940226243306,"fps_nominal":50.0,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Bust-A-Move 2 - Arcade Edition (Europe).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Firmware found: <system>/scph5502.bin"},{"frame":0,"level":"info","text":"Firmware SHA1: F6BC2D1F5EB6593DE7D089C425AC681D6FFFD3F0"},{"frame":0,"level":"info","text":"ControlleLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"38dd7401fdfbaa4ae98bda3ea901c80f24d78da7","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6f18a8ff979e4a5b182d164aae3448818be0ec5ec596df3db636afe9bae44266"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.2,3.3,4.14],"load_before":[2.08,3.34,4.16],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-b0150a15670d","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"84a3435916d67c64d1d7a12305d7bea63dcf7f1467ba5cd775cd35c5887f9532"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T14:47:13+00:00","subject":"references-mednafen-psx-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":502.55931499932353,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Bust-A-Move 2 - Arcade Edition (USA).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Firmware found: <system>/scph5501.bin"},{"frame":0,"level":"info","text":"Firmware SHA1: 0555C6FAE8906F3F09BAF5988F00E55F88E9F30B"},{"frame":0,"level":"info","text":"Controller 1: PlayStation ControllerLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_hw_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_hw_libretro.so","library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"38dd7401fdfbaa4ae98bda3ea901c80f24d78da7","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6f18a8ff979e4a5b182d164aae3448818be0ec5ec596df3db636afe9bae44266"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.31,3.27,4.11],"load_before":[2.2,3.3,4.14],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-ee69ad83c9f8","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"84a3435916d67c64d1d7a12305d7bea63dcf7f1467ba5cd775cd35c5887f9532"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T14:47:27+00:00","subject":"references-mednafen-psx-hw-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"14":3,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":25,"56":2,"57":1,"59":1,"6":1,"69":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":496.74944439340885,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Bust-A-Move 2 - Arcade Edition (USA).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Firmware found: <system>/scph5501.bin"},{"frame":0,"level":"info","text":"Firmware SHA1: 0555C6FAE8906F3F09BAF5988F00E55F88E9F30B"},{"frame":0,"level":"info","tLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"a17406edaeb01d334d15f3a4e6fa4950c6d0b727","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6aaa716a44ccf5e245f478c560f5718f6af3f0c8ded2e02b05f364adf81df9c8"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.42,2.78,3.48],"load_before":[2.37,2.79,3.5],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-605e4f82cb2f","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"f89e40011815ab1c50dac718cd53c5fcd675ccb67d2e611acff717e3cbaf2bbc"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T14:59:44+00:00","subject":"files-mednafen-psx-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":564.4396967494708,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"BeetlLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"a17406edaeb01d334d15f3a4e6fa4950c6d0b727","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6aaa716a44ccf5e245f478c560f5718f6af3f0c8ded2e02b05f364adf81df9c8"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.44,2.77,3.47],"load_before":[2.42,2.78,3.48],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-6e97b657aca7","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"f89e40011815ab1c50dac718cd53c5fcd675ccb67d2e611acff717e3cbaf2bbc"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T14:59:57+00:00","subject":"none-mednafen-psx-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2534,"35":2,"36":1,"37":4,"40":2533,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[],"files_probed_absent":["scph5501.bin","SCPH5501.bin","SCPH5501.BIN","SCPH-5501.bin","SCPH-5501.BIN","scph5503.bin","SCPH5503.bin","SCPH5503.BIN","SCPH-5503.bin","SCPH-5503.BIN","scph7003.bin","SCPH7003.bin","SCPH7003.BIN","SCPH-7003.bin","SCPH-7003.BIN"],"fps":590.7162220404773,"fps_nominal":59.94,"frames":3600,"input_pressed":Line truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with openbios.bin alone and refuses a wrong file under its name","method":"openbios.bin alone as openbios.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63aLine truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with ps1_rom.bin alone and refuses a wrong file under its name","method":"ps1_rom.bin alone as ps1_rom.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63a28fLine truncated
|
||||
{"check":{"claim":"every copy of ps1_rom.bin boots Bust-A-Move 2 - Arcade Edition (USA) on mednafen_psx","method":"Each copy the collection holds staged alone as ps1_rom.bin, each run 2 times for 3600 frames. The boot oracle judges each copy.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[920,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[930,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[940,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[950,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[960Line truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with psxonpsp660.bin alone and refuses a wrong file under its name","method":"psxonpsp660.bin alone as psxonpsp660.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783fLine truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with scph5501.bin alone and refuses a wrong file under its name","method":"scph5501.bin alone as scph5501.bin, then 524288 zero bytes and its first 262144 bytes, then scph5500.bin, scph5502.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[20,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[30,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[40,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[50,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[60,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[70,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[80,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[90,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[100,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[110,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[120,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[130,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[140,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[150,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[160,"0d1ef963932a2aa7e5c79f7e634c9fc63b51ba95"],[170,"9cf22a982c36d29527b7b8594b8bb0677689750f"],[180,"c21e6940f9383070634d99c95e46643dce114806"],[190,"1dc65ead4f57e22b032b202c928a0e1ff47b33cc"],[200,"496c857184814fee7850658513f1618290293643"],[210,"fd759fc97d025b4c7c23f0614625b9751c4e0b96"],[220,"f0aa4c60e2ded472aae7cd79c381bcb02a181580"],[230,"b0201d6721d9159397dbfe069d00040de686e049"],[240,"4da2219693f6d34d6c18b7cd4b18df752d136dc0"],[250,"7e458c656e3966b16a11c18f193e95e95ad2aea4"],[260,"b23d7be1676a2a9ec8cf68f180382e0cb008d39e"],[270,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[280,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[290,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[300,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[310,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[320,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[330,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[340,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[350,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[360,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[370,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[380,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[390,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[400,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[410,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[420,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[430,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[440,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[450,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[460,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[470,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[480,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[490,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[500,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[510,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[520,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[530,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[540,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[550,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[560,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[570,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[580,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[590,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[600,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[610,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[620,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[630,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[640,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[650,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[660,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[670,"6e3c2a9b7bfe358ad2dcdb0aee3ccb2b219543c7"],[680,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[690,"a86c59c3dc0ba4fb0ef697d492b00f2da8b17452"],[700,"464ee3693588a929c5147057dee7565a6d50e983"],[710,"15a6363657c1a822723b38fa2321e98eaff1dbf5"],[720,"5e8190221ecf4481b527f620dbcc276049da93c2"],[730,"bca1e8afa686d8476ea7a12082fc52f47deeab32"],[740,"55c554d108420997fb0c19b82e1b91c7318659e6"],[750,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[760,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[770,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[780,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[790,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[800,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[810,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[820,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[830,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[840,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[850,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[860,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[870,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[880,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[890,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[900,"0905c920a1de9Line truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with scph5903.bin alone and refuses a wrong file under its name","method":"scph5903.bin alone as scph5903.bin, then 1048576 zero bytes and its first 524288 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_hw_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_hw_libretro.so","library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"a17406edaeb01d334d15f3a4e6fa4950c6d0b727","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6aaa716a44ccf5e245f478c560f5718f6af3f0c8ded2e02b05f364adf81df9c8"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.31,2.56,3.18],"load_before":[2.2,2.55,3.19],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-32e83283615a","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"f89e40011815ab1c50dac718cd53c5fcd675ccb67d2e611acff717e3cbaf2bbc"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T15:05:07+00:00","subject":"files-mednafen-psx-hw-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"14":3,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":25,"56":2,"57":1,"59":1,"6":1,"69":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":562.1811297236717,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_framLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_hw_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_hw_libretro.so","library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"a17406edaeb01d334d15f3a4e6fa4950c6d0b727","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6aaa716a44ccf5e245f478c560f5718f6af3f0c8ded2e02b05f364adf81df9c8"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.45,2.58,3.18],"load_before":[2.31,2.56,3.18],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-699ca140a270","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"f89e40011815ab1c50dac718cd53c5fcd675ccb67d2e611acff717e3cbaf2bbc"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T15:05:20+00:00","subject":"none-mednafen-psx-hw-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"14":3,"23":1,"28":1,"32":2534,"35":2,"36":1,"37":4,"40":2533,"44":1,"45":4,"46":1,"47":1,"51":1,"55":25,"56":2,"57":1,"59":1,"6":1,"69":1,"8":1},"files_opened":[],"files_probed_absent":["scph5501.bin","SCPH5501.bin","SCPH5501.BIN","SCPH-5501.bin","SCPH-5501.BIN","scph5503.bin","SCPH5503.bin","SCPH5503.BIN","SCPH-5503.bin","SCPH-5503.BIN","scph7003.bin","SCPH7003.bin","SCPH7003.BIN","SCPH-7003.bin","SCPH-7003.BIN"],"fps":591.088190351902,"fps_nominalLine truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with openbios.bin alone and refuses a wrong file under its name","method":"openbios.bin alone as openbios.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafcLine truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with ps1_rom.bin alone and refuses a wrong file under its name","method":"ps1_rom.bin alone as ps1_rom.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63aLine truncated
|
||||
{"check":{"claim":"every copy of ps1_rom.bin boots Bust-A-Move 2 - Arcade Edition (USA) on mednafen_psx_hw","method":"Each copy the collection holds staged alone as ps1_rom.bin, each run 2 times for 3600 frames. The boot oracle judges each copy.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[920,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[930,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[940,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[950,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[Line truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with psxonpsp660.bin alone and refuses a wrong file under its name","method":"psxonpsp660.bin alone as psxonpsp660.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab77Line truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with scph5501.bin alone and refuses a wrong file under its name","method":"scph5501.bin alone as scph5501.bin, then 524288 zero bytes and its first 262144 bytes, then scph5500.bin, scph5502.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[20,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[30,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[40,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[50,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[60,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[70,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[80,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[90,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[100,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[110,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[120,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[130,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[140,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[150,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[160,"0d1ef963932a2aa7e5c79f7e634c9fc63b51ba95"],[170,"9cf22a982c36d29527b7b8594b8bb0677689750f"],[180,"c21e6940f9383070634d99c95e46643dce114806"],[190,"1dc65ead4f57e22b032b202c928a0e1ff47b33cc"],[200,"496c857184814fee7850658513f1618290293643"],[210,"fd759fc97d025b4c7c23f0614625b9751c4e0b96"],[220,"f0aa4c60e2ded472aae7cd79c381bcb02a181580"],[230,"b0201d6721d9159397dbfe069d00040de686e049"],[240,"4da2219693f6d34d6c18b7cd4b18df752d136dc0"],[250,"7e458c656e3966b16a11c18f193e95e95ad2aea4"],[260,"b23d7be1676a2a9ec8cf68f180382e0cb008d39e"],[270,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[280,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[290,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[300,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[310,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[320,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[330,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[340,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[350,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[360,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[370,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[380,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[390,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[400,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[410,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[420,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[430,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[440,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[450,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[460,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[470,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[480,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[490,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[500,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[510,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[520,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[530,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[540,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[550,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[560,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[570,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[580,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[590,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[600,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[610,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[620,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[630,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[640,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[650,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[660,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[670,"6e3c2a9b7bfe358ad2dcdb0aee3ccb2b219543c7"],[680,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[690,"a86c59c3dc0ba4fb0ef697d492b00f2da8b17452"],[700,"464ee3693588a929c5147057dee7565a6d50e983"],[710,"15a6363657c1a822723b38fa2321e98eaff1dbf5"],[720,"5e8190221ecf4481b527f620dbcc276049da93c2"],[730,"bca1e8afa686d8476ea7a12082fc52f47deeab32"],[740,"55c554d108420997fb0c19b82e1b91c7318659e6"],[750,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[760,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[770,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[780,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[790,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[800,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[810,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[820,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[830,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[840,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[850,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[860,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[870,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[880,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[890,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[900,"0905c920a1Line truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with scph5903.bin alone and refuses a wrong file under its name","method":"scph5903.bin alone as scph5903.bin, then 1048576 zero bytes and its first 524288 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"70c3bbd8536cd30851c007d964561c8661df786d","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"86bf2ed561358442b28b6846679ab157a02e03e3b2b97528e1fa41df7a4df078"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.81,4.31,5.22],"load_before":[2.65,4.36,5.25],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-770ea8c50976","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T17:33:05+00:00","subject":"files-mednafen-psx-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":566.8125959385137,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"70c3bbd8536cd30851c007d964561c8661df786d","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"86bf2ed561358442b28b6846679ab157a02e03e3b2b97528e1fa41df7a4df078"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.78,4.23,5.18],"load_before":[2.81,4.31,5.22],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-ec1ab64f96d3","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T17:33:19+00:00","subject":"none-mednafen-psx-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2534,"35":2,"36":1,"37":4,"40":2533,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[],"files_probed_absent":["scph5501.bin","SCPH5501.bin","SCPH5501.BIN","SCPH-5501.bin","SCPH-5501.BIN","scph5503.bin","SCPH5503.bin","SCPH5503.BIN","SCPH-5503.bin","SCPH-5503.BIN","scph7003.bin","SCPH7003.bin","SCPH7003.BIN","SCPH-7003.bin","SCPH-7003.BIN"],"fps":590.3661781052125,"fps_nominal":59.94,"frames":36Line truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with openbios.bin alone and refuses a wrong file under its name","method":"openbios.bin alone as openbios.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63aLine truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with ps1_rom.bin alone and refuses a wrong file under its name","method":"ps1_rom.bin alone as ps1_rom.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63a28fLine truncated
|
||||
{"check":{"claim":"every copy of ps1_rom.bin boots Bust-A-Move 2 - Arcade Edition (USA) on mednafen_psx","method":"Each copy the collection holds staged alone as ps1_rom.bin, each run 2 times for 3600 frames. The boot oracle judges each copy.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[920,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[930,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[940,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[950,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[960Line truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with psxonpsp660.bin alone and refuses a wrong file under its name","method":"psxonpsp660.bin alone as psxonpsp660.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783fLine truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with scph5501.bin alone and refuses a wrong file under its name","method":"scph5501.bin alone as scph5501.bin, then 524288 zero bytes and its first 262144 bytes, then scph5500.bin, scph5502.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[20,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[30,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[40,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[50,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[60,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[70,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[80,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[90,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[100,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[110,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[120,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[130,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[140,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[150,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[160,"0d1ef963932a2aa7e5c79f7e634c9fc63b51ba95"],[170,"9cf22a982c36d29527b7b8594b8bb0677689750f"],[180,"c21e6940f9383070634d99c95e46643dce114806"],[190,"1dc65ead4f57e22b032b202c928a0e1ff47b33cc"],[200,"496c857184814fee7850658513f1618290293643"],[210,"fd759fc97d025b4c7c23f0614625b9751c4e0b96"],[220,"f0aa4c60e2ded472aae7cd79c381bcb02a181580"],[230,"b0201d6721d9159397dbfe069d00040de686e049"],[240,"4da2219693f6d34d6c18b7cd4b18df752d136dc0"],[250,"7e458c656e3966b16a11c18f193e95e95ad2aea4"],[260,"b23d7be1676a2a9ec8cf68f180382e0cb008d39e"],[270,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[280,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[290,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[300,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[310,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[320,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[330,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[340,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[350,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[360,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[370,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[380,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[390,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[400,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[410,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[420,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[430,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[440,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[450,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[460,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[470,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[480,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[490,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[500,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[510,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[520,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[530,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[540,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[550,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[560,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[570,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[580,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[590,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[600,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[610,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[620,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[630,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[640,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[650,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[660,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[670,"6e3c2a9b7bfe358ad2dcdb0aee3ccb2b219543c7"],[680,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[690,"a86c59c3dc0ba4fb0ef697d492b00f2da8b17452"],[700,"464ee3693588a929c5147057dee7565a6d50e983"],[710,"15a6363657c1a822723b38fa2321e98eaff1dbf5"],[720,"5e8190221ecf4481b527f620dbcc276049da93c2"],[730,"bca1e8afa686d8476ea7a12082fc52f47deeab32"],[740,"55c554d108420997fb0c19b82e1b91c7318659e6"],[750,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[760,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[770,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[780,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[790,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[800,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[810,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[820,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[830,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[840,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[850,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[860,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[870,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[880,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[890,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[900,"0905c920a1de9Line truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with scph5903.bin alone and refuses a wrong file under its name","method":"scph5903.bin alone as scph5903.bin, then 1048576 zero bytes and its first 524288 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_hw_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_hw_libretro.so","library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","flags":["load average reached 3.01 (threshold 3.0)"],"frontend":{"commit":"70c3bbd8536cd30851c007d964561c8661df786d","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"86bf2ed561358442b28b6846679ab157a02e03e3b2b97528e1fa41df7a4df078"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.01,3.3,3.66],"load_before":[2.81,3.28,3.66],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-aa2b85a5e248","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T18:11:36+00:00","subject":"files-mednafen-psx-hw-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"14":3,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":25,"56":2,"57":1,"59":1,"6":1,"69":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":545.9195449199342,"fps_nominal":59.94,"frames":3600,"input_prLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_hw_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_hw_libretro.so","library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"70c3bbd8536cd30851c007d964561c8661df786d","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"86bf2ed561358442b28b6846679ab157a02e03e3b2b97528e1fa41df7a4df078"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.58,3.09,3.56],"load_before":[2.5,3.09,3.56],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-47c3dcceed98","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T18:12:49+00:00","subject":"none-mednafen-psx-hw-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"14":3,"23":1,"28":1,"32":2534,"35":2,"36":1,"37":4,"40":2533,"44":1,"45":4,"46":1,"47":1,"51":1,"55":25,"56":2,"57":1,"59":1,"6":1,"69":1,"8":1},"files_opened":[],"files_probed_absent":["scph5501.bin","SCPH5501.bin","SCPH5501.BIN","SCPH-5501.bin","SCPH-5501.BIN","scph5503.bin","SCPH5503.bin","SCPH5503.BIN","SCPH-5503.bin","SCPH-5503.BIN","scph7003.bin","SCPH7003.bin","SCPH7003.BIN","SCPH-7003.bin","SCPH-7003.BIN"],"fps":580.4548038Line truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with openbios.bin alone and refuses a wrong file under its name","method":"openbios.bin alone as openbios.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafcLine truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with ps1_rom.bin alone and refuses a wrong file under its name","method":"ps1_rom.bin alone as ps1_rom.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63aLine truncated
|
||||
{"check":{"claim":"every copy of ps1_rom.bin boots Bust-A-Move 2 - Arcade Edition (USA) on mednafen_psx_hw","method":"Each copy the collection holds staged alone as ps1_rom.bin, each run 2 times for 3600 frames. The boot oracle judges each copy.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[920,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[930,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[940,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[950,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[Line truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with psxonpsp660.bin alone and refuses a wrong file under its name","method":"psxonpsp660.bin alone as psxonpsp660.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab77Line truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with scph5501.bin alone and refuses a wrong file under its name","method":"scph5501.bin alone as scph5501.bin, then 524288 zero bytes and its first 262144 bytes, then scph5500.bin, scph5502.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[20,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[30,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[40,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[50,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[60,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[70,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[80,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[90,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[100,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[110,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[120,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[130,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[140,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[150,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[160,"0d1ef963932a2aa7e5c79f7e634c9fc63b51ba95"],[170,"9cf22a982c36d29527b7b8594b8bb0677689750f"],[180,"c21e6940f9383070634d99c95e46643dce114806"],[190,"1dc65ead4f57e22b032b202c928a0e1ff47b33cc"],[200,"496c857184814fee7850658513f1618290293643"],[210,"fd759fc97d025b4c7c23f0614625b9751c4e0b96"],[220,"f0aa4c60e2ded472aae7cd79c381bcb02a181580"],[230,"b0201d6721d9159397dbfe069d00040de686e049"],[240,"4da2219693f6d34d6c18b7cd4b18df752d136dc0"],[250,"7e458c656e3966b16a11c18f193e95e95ad2aea4"],[260,"b23d7be1676a2a9ec8cf68f180382e0cb008d39e"],[270,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[280,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[290,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[300,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[310,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[320,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[330,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[340,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[350,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[360,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[370,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[380,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[390,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[400,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[410,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[420,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[430,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[440,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[450,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[460,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[470,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[480,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[490,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[500,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[510,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[520,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[530,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[540,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[550,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[560,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[570,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[580,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[590,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[600,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[610,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[620,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[630,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[640,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[650,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[660,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[670,"6e3c2a9b7bfe358ad2dcdb0aee3ccb2b219543c7"],[680,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[690,"a86c59c3dc0ba4fb0ef697d492b00f2da8b17452"],[700,"464ee3693588a929c5147057dee7565a6d50e983"],[710,"15a6363657c1a822723b38fa2321e98eaff1dbf5"],[720,"5e8190221ecf4481b527f620dbcc276049da93c2"],[730,"bca1e8afa686d8476ea7a12082fc52f47deeab32"],[740,"55c554d108420997fb0c19b82e1b91c7318659e6"],[750,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[760,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[770,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[780,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[790,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[800,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[810,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[820,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[830,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[840,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[850,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[860,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[870,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[880,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[890,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[900,"0905c920a1Line truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with scph5903.bin alone and refuses a wrong file under its name","method":"scph5903.bin alone as scph5903.bin, then 1048576 zero bytes and its first 524288 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":["load average reached 3.42 (threshold 3.0)"],"frontend":{"commit":"30fc471d2389285e83bd62f84607e33dd34ab689","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.42,3.31,3.76],"load_before":[2.81,3.19,3.73],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-a2bd916f1765","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T20:32:03+00:00","subject":"references-mednafen-psx-puzzle-bobble-2-japan","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2382,"35":2,"36":1,"37":8,"40":2381,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"}],"files_probed_absent":[],"fps":481.79081988324543,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Puzzle Bobble 2 (Japan).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Firmware found: <system>/scph5500.bin"},{"frame":0,"level":"info","text":"Firmware SHA1: B05DEF971D8EC59F346F2D9AC21FB742E3EB6917"},{"frame":0,"level":"info","text":"Controller 1: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 2: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 3: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 4: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 5: PlayStation CoLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"30fc471d2389285e83bd62f84607e33dd34ab689","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.81,2.87,3.32],"load_before":[2.67,2.85,3.32],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-4b9e700d03a9","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T20:42:30+00:00","subject":"references-mednafen-psx-bust-a-move-2-arcade-edition-europe","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2481,"35":2,"36":1,"37":8,"40":2480,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":440.42630337137933,"fps_nominal":50.0,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Bust-A-Move 2 - Arcade Edition (Europe).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Firmware found: <system>/scph5502.bin"},{"frame":0,"level":"info","text":"Firmware SHA1: F6BC2D1F5EB6593DE7D089C425AC681D6FFFD3FLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_hw_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_hw_libretro.so","library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"30fc471d2389285e83bd62f84607e33dd34ab689","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.92,2.85,3.26],"load_before":[2.71,2.8,3.26],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-6e0e946eeba5","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T20:44:00+00:00","subject":"references-mednafen-psx-hw-puzzle-bobble-2-japan","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"14":3,"23":1,"28":1,"32":2382,"35":2,"36":1,"37":8,"40":2381,"44":1,"45":4,"46":1,"47":1,"51":1,"55":25,"56":2,"57":1,"59":1,"6":1,"69":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"}],"files_probed_absent":[],"fps":479.97835278165746,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Puzzle Bobble 2 (Japan).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Firmware found: <system>/scph5500.bin"},{"frame":0,"level":"info","text":"Firmware SHA1: B05DEF971D8EC59F346F2D9AC21FB742E3EB6917"},{"frame":0,"level":"info","text":"Controller 1: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 2: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 3: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 4: PlayStation Controller"},{"frame":0,"level":"info","text":"Controller 5: PlayStation ContLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_hw_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_hw_libretro.so","library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"30fc471d2389285e83bd62f84607e33dd34ab689","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.89,2.79,3.18],"load_before":[2.75,2.76,3.18],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-f3b61598f415","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T20:46:02+00:00","subject":"references-mednafen-psx-hw-bust-a-move-2-arcade-edition-europe","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"14":3,"23":1,"28":1,"32":2481,"35":2,"36":1,"37":8,"40":2480,"44":1,"45":4,"46":1,"47":1,"51":1,"55":25,"56":2,"57":1,"59":1,"6":1,"69":1,"8":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":447.95898491532915,"fps_nominal":50.0,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Bust-A-Move 2 - Arcade Edition (Europe).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10400000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10600000 succeeded"},{"frame":0,"level":"info","text":"Checking if required firmware is present..."},{"frame":0,"level":"info","text":"Firmware found: <system>/scph5502.bin"},{"frame":0,"level":"info","text":"Firmware SHALine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"e6f7ea8f07ea6cf5ae3d8e6affad0ab877f27b4e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.28,2.35,2.32],"load_before":[2.33,2.37,2.32],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-1c9ad16a4129","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"eb8c851948806afcf075ea90ddd16727b662e1b59c4821ae56c00706e45576c9"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:17:22+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-usa-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":573.5176543617409,"fps_nominal":59.94,"fLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"d893823fe16b894a36e2ae464ffbf4cf624f1135","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.38,2.37,2.33],"load_before":[2.42,2.37,2.33],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-ee4cf7add8ef","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"286171f07c671277b4a3a942751cd25c5f20f0addefef78423a3d8eaf46a0c52"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:18:49+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-usa-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":572.8827179054578,"fps_nominal":59.94,"frLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.36,2.37,2.33],"load_before":[2.39,2.37,2.33],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-13be0e68b799","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:19:56+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-usa-others","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2534,"35":2,"36":1,"37":4,"40":2533,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.56,2.41,2.35],"load_before":[2.52,2.4,2.34],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-e44cc1e78a1f","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:21:19+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-usa-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":542.3966210439478,"fps_nominal":59.94,"frLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.09,2.32,2.33],"load_before":[2.1,2.33,2.33],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-febadfe6495a","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"1d5305661b110a78aff8e41d60c19168c4af77ac","shows":"the PlayStation logo licensed by Sony Computer Entertainment Inc.","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"80d023ecbf776a97b6bb2bdeb13e43460f60fd53","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"1bda114b66fd098623abca772cf23813293a3849","shows":"a black screen with CREDIT 6","stage":"game"},{"sha1":"3bb53b8a3036554a4bf9ec4785df7a4b4e06a87d","shows":"the attract-mode game on the beach, PASSAGE TIME IS","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:23:25+00:00","subject":"region-mednafen_psx-puzzle-bobble-2-japan-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2382,"35":2,"36":1,"37":8,"40":2381,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"}],"files_probed_absent":[],"fps":551.0954505194409,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Puzzle Bobble 2 (Japan).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.18,2.31,2.32],"load_before":[2.2,2.31,2.32],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-8119f63187f6","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"1d5305661b110a78aff8e41d60c19168c4af77ac","shows":"the PlayStation logo licensed by Sony Computer Entertainment Inc.","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"80d023ecbf776a97b6bb2bdeb13e43460f60fd53","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"1bda114b66fd098623abca772cf23813293a3849","shows":"a black screen with CREDIT 6","stage":"game"},{"sha1":"3bb53b8a3036554a4bf9ec4785df7a4b4e06a87d","shows":"the attract-mode game on the beach, PASSAGE TIME IS","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:24:50+00:00","subject":"region-mednafen_psx-puzzle-bobble-2-japan-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2382,"35":2,"36":1,"37":8,"40":2381,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"}],"files_probed_absent":[],"fps":550.5066217960766,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Puzzle Bobble 2 (Japan).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"}Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.42,2.35,2.34],"load_before":[2.37,2.34,2.33],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-55dd1e4943c4","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"1d5305661b110a78aff8e41d60c19168c4af77ac","shows":"the PlayStation logo licensed by Sony Computer Entertainment Inc.","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"80d023ecbf776a97b6bb2bdeb13e43460f60fd53","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"1bda114b66fd098623abca772cf23813293a3849","shows":"a black screen with CREDIT 6","stage":"game"},{"sha1":"3bb53b8a3036554a4bf9ec4785df7a4b4e06a87d","shows":"the attract-mode game on the beach, PASSAGE TIME IS","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:25:42+00:00","subject":"region-mednafen_psx-puzzle-bobble-2-japan-others","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2546,"35":2,"36":1,"37":4,"40":2545,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":["scph5500.bin","SCPH5500.bin","SCPH5500.BIN","SCPH-5500.bin","SCPH-5500.BIN"],"fps":567.00489062109,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.41,2.43,2.37],"load_before":[2.4,2.43,2.37],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-11ed4fb91816","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"1d5305661b110a78aff8e41d60c19168c4af77ac","shows":"the PlayStation logo licensed by Sony Computer Entertainment Inc.","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"80d023ecbf776a97b6bb2bdeb13e43460f60fd53","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"1bda114b66fd098623abca772cf23813293a3849","shows":"a black screen with CREDIT 6","stage":"game"},{"sha1":"3bb53b8a3036554a4bf9ec4785df7a4b4e06a87d","shows":"the attract-mode game on the beach, PASSAGE TIME IS","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:27:18+00:00","subject":"region-mednafen_psx-puzzle-bobble-2-japan-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2382,"35":2,"36":1,"37":8,"40":2381,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"}],"files_probed_absent":[],"fps":556.6224415201582,"fps_nominal":59.94,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Puzzle Bobble 2 (Japan).cue\""},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10000000 succeeded"},{"frame":0,"level":"debug","text":"Regular mmap to address 0x10200000 succeeded"Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.35,2.4,2.36],"load_before":[2.41,2.42,2.37],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-856ad7d7efe0","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"408effe5ed13b50c97a21d2efe9930ab0d2b6f43","shows":"the PlayStation logo licensed by Sony Computer Entertainment Europe","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"f5649c8df958220324753968e8785ea80a021837","shows":"the anti-piracy notice","stage":"game"},{"sha1":"2cccff1e0706fcc8bdd4fdcd35e0310c9aaf9ac5","shows":"the Acclaim and Taito credits text","stage":"game"},{"sha1":"dd70e8e057c3de89f0c39c2b91b72fce902a8588","shows":"the Acclaim logo","stage":"game"},{"sha1":"368ac3ce2a4ef7dcc1720e0e48f18e3e6404e191","shows":"the Taito logo on white","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:28:29+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-europe-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2481,"35":2,"36":1,"37":8,"40":2480,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":502.7538565261183,"fps_nomiLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.76,2.5,2.4],"load_before":[2.82,2.51,2.4],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-5f344e618662","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"408effe5ed13b50c97a21d2efe9930ab0d2b6f43","shows":"the PlayStation logo licensed by Sony Computer Entertainment Europe","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"f5649c8df958220324753968e8785ea80a021837","shows":"the anti-piracy notice","stage":"game"},{"sha1":"2cccff1e0706fcc8bdd4fdcd35e0310c9aaf9ac5","shows":"the Acclaim and Taito credits text","stage":"game"},{"sha1":"dd70e8e057c3de89f0c39c2b91b72fce902a8588","shows":"the Acclaim logo","stage":"game"},{"sha1":"368ac3ce2a4ef7dcc1720e0e48f18e3e6404e191","shows":"the Taito logo on white","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:29:26+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-europe-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2481,"35":2,"36":1,"37":8,"40":2480,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":506.97445554095236,"fps_nominaLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"f2f890602dcd1407a5c7a3a5f9c145caa383d843","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.95,2.56,2.42],"load_before":[2.94,2.56,2.42],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-33780d47efdf","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"408effe5ed13b50c97a21d2efe9930ab0d2b6f43","shows":"the PlayStation logo licensed by Sony Computer Entertainment Europe","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"f5649c8df958220324753968e8785ea80a021837","shows":"the anti-piracy notice","stage":"game"},{"sha1":"2cccff1e0706fcc8bdd4fdcd35e0310c9aaf9ac5","shows":"the Acclaim and Taito credits text","stage":"game"},{"sha1":"dd70e8e057c3de89f0c39c2b91b72fce902a8588","shows":"the Acclaim logo","stage":"game"},{"sha1":"368ac3ce2a4ef7dcc1720e0e48f18e3e6404e191","shows":"the Taito logo on white","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:30:48+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-europe-others","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2472,"35":2,"36":1,"37":4,"40":2471,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09bLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":null,"sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"f2f890602dcd1407a5c7a3a5f9c145caa383d843","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.34,2.07,2.19],"load_before":[2.4,2.07,2.19],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-8996d19c29fd","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"408effe5ed13b50c97a21d2efe9930ab0d2b6f43","shows":"the PlayStation logo licensed by Sony Computer Entertainment Europe","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"f5649c8df958220324753968e8785ea80a021837","shows":"the anti-piracy notice","stage":"game"},{"sha1":"2cccff1e0706fcc8bdd4fdcd35e0310c9aaf9ac5","shows":"the Acclaim and Taito credits text","stage":"game"},{"sha1":"dd70e8e057c3de89f0c39c2b91b72fce902a8588","shows":"the Acclaim logo","stage":"game"},{"sha1":"368ac3ce2a4ef7dcc1720e0e48f18e3e6404e191","shows":"the Taito logo on white","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:37:50+00:00","subject":"region-mednafen_psx-bust-a-move-2-arcade-edition-europe-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2481,"35":2,"36":1,"37":8,"40":2480,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":506.41130084498207,"fps_nomLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"e7de3e50840b1592c3f3cc635773780a6f31b6fa","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.89,3.35,3.32],"load_before":[2.77,3.35,3.32],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-a77a03177d4c","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"eb8c851948806afcf075ea90ddd16727b662e1b59c4821ae56c00706e45576c9"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:41:22+00:00","subject":"files-mednafen-psx-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":5Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_libretro.so","library_name":"Beetle PSX","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"e7de3e50840b1592c3f3cc635773780a6f31b6fa","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.85,3.0,3.18],"load_before":[2.81,3.0,3.18],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-607274136f7b","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"eb8c851948806afcf075ea90ddd16727b662e1b59c4821ae56c00706e45576c9"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:44:58+00:00","subject":"none-mednafen-psx-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"23":1,"28":1,"32":2534,"35":2,"36":1,"37":4,"40":2533,"44":1,"45":4,"46":1,"47":1,"51":1,"55":18,"57":1,"59":1,"8":1},"files_opened":[],"files_probed_absent":["scph5501.bin","SCPH5501.bin","SCPH5501.BIN","SCPH-5501.bin","SCPH-5501.BIN","scph5503.bin","SCPH5503.bin","SCPH5503.BIN","SCPH-5503.bin","SCPH-5503Line truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with openbios.bin alone and refuses a wrong file under its name","method":"openbios.bin alone as openbios.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63aLine truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with ps1_rom.bin alone and refuses a wrong file under its name","method":"ps1_rom.bin alone as ps1_rom.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63a28fLine truncated
|
||||
{"check":{"claim":"every copy of ps1_rom.bin boots Bust-A-Move 2 - Arcade Edition (USA) on mednafen_psx","method":"Each copy the collection holds staged alone as ps1_rom.bin, each run 2 times for 3600 frames. The boot oracle judges each copy.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[920,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[930,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[940,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[950,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[960Line truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with psxonpsp660.bin alone and refuses a wrong file under its name","method":"psxonpsp660.bin alone as psxonpsp660.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783fLine truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with scph5501.bin alone and refuses a wrong file under its name","method":"scph5501.bin alone as scph5501.bin, then 524288 zero bytes and its first 262144 bytes, then scph5500.bin, scph5502.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[20,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[30,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[40,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[50,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[60,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[70,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[80,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[90,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[100,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[110,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[120,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[130,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[140,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[150,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[160,"0d1ef963932a2aa7e5c79f7e634c9fc63b51ba95"],[170,"9cf22a982c36d29527b7b8594b8bb0677689750f"],[180,"c21e6940f9383070634d99c95e46643dce114806"],[190,"1dc65ead4f57e22b032b202c928a0e1ff47b33cc"],[200,"496c857184814fee7850658513f1618290293643"],[210,"fd759fc97d025b4c7c23f0614625b9751c4e0b96"],[220,"f0aa4c60e2ded472aae7cd79c381bcb02a181580"],[230,"b0201d6721d9159397dbfe069d00040de686e049"],[240,"4da2219693f6d34d6c18b7cd4b18df752d136dc0"],[250,"7e458c656e3966b16a11c18f193e95e95ad2aea4"],[260,"b23d7be1676a2a9ec8cf68f180382e0cb008d39e"],[270,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[280,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[290,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[300,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[310,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[320,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[330,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[340,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[350,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[360,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[370,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[380,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[390,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[400,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[410,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[420,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[430,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[440,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[450,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[460,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[470,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[480,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[490,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[500,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[510,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[520,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[530,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[540,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[550,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[560,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[570,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[580,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[590,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[600,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[610,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[620,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[630,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[640,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[650,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[660,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[670,"6e3c2a9b7bfe358ad2dcdb0aee3ccb2b219543c7"],[680,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[690,"a86c59c3dc0ba4fb0ef697d492b00f2da8b17452"],[700,"464ee3693588a929c5147057dee7565a6d50e983"],[710,"15a6363657c1a822723b38fa2321e98eaff1dbf5"],[720,"5e8190221ecf4481b527f620dbcc276049da93c2"],[730,"bca1e8afa686d8476ea7a12082fc52f47deeab32"],[740,"55c554d108420997fb0c19b82e1b91c7318659e6"],[750,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[760,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[770,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[780,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[790,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[800,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[810,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[820,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[830,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[840,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[850,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[860,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[870,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[880,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[890,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[900,"0905c920a1de9Line truncated
|
||||
{"check":{"claim":"mednafen_psx boots Bust-A-Move 2 - Arcade Edition (USA) with scph5903.bin alone and refuses a wrong file under its name","method":"scph5903.bin alone as scph5903.bin, then 1048576 zero bytes and its first 524288 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_hw_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_hw_libretro.so","library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"dc53f50f676084c9dbbc4546cdfcd6fc2e85c90d","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.43,2.53,2.75],"load_before":[2.35,2.52,2.75],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-8c3d5fd2c86c","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"eb8c851948806afcf075ea90ddd16727b662e1b59c4821ae56c00706e45576c9"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:00:21+00:00","subject":"files-mednafen-psx-hw-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"14":3,"23":1,"28":1,"32":2374,"35":2,"36":1,"37":8,"40":2373,"44":1,"45":4,"46":1,"47":1,"51":1,"55":25,"56":2,"57":1,"59":1,"6":1,"69":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9fLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_psx_hw_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_psx_hw_libretro.so","library_name":"Beetle PSX HW","library_version":"0.9.44.1 7fea57a","repo":"https://github.com/libretro/beetle-psx-libretro","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","flags":[],"frontend":{"commit":"c639a1b3e56afbe42b0b7e061293f9cd9a7d42df","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.92,2.04,2.37],"load_before":[1.76,1.79,2.3],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-ae6d4db96e73","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"dfbfc299250c0983f86bbf951efd187441306d92","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7b72ebae83893b63f9fffd1685f03b1d048d9fa9","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"0905c920a1de996664eddca94f93f75d0dcd4c52","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"63a96bd6d1d487da1824e10d37f6658506edc451","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"6628416f377d2e25df45e5fa2126f8f9313551f0","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"d68892362e0f33c41cc59dac1b5a2077fe5428ee","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"56330c6c7646c2c261acb3f48450825cb289845a","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"eb8c851948806afcf075ea90ddd16727b662e1b59c4821ae56c00706e45576c9"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:07:11+00:00","subject":"none-mednafen-psx-hw-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":2,"13":1,"14":3,"23":1,"28":1,"32":2534,"35":2,"36":1,"37":4,"40":2533,"44":1,"45":4,"46":1,"47":1,"51":1,"55":25,"56":2,"57":1,"59":1,"6":1,"69":1,"8":1},"files_opened":[],"files_probed_absent":["scph5501.bin","SCPH5501.bin","SCPH5501.BIN","SCPH-5501.bin","SCPH-5501.BIN","scph5503.bin","SCPH5503.bin","Line truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with openbios.bin alone and refuses a wrong file under its name","method":"openbios.bin alone as openbios.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafcLine truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with ps1_rom.bin alone and refuses a wrong file under its name","method":"ps1_rom.bin alone as ps1_rom.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63aLine truncated
|
||||
{"check":{"claim":"every copy of ps1_rom.bin boots Bust-A-Move 2 - Arcade Edition (USA) on mednafen_psx_hw","method":"Each copy the collection holds staged alone as ps1_rom.bin, each run 2 times for 3600 frames. The boot oracle judges each copy.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[920,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[930,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[940,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[950,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[Line truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with psxonpsp660.bin alone and refuses a wrong file under its name","method":"psxonpsp660.bin alone as psxonpsp660.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab77Line truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with scph5501.bin alone and refuses a wrong file under its name","method":"scph5501.bin alone as scph5501.bin, then 524288 zero bytes and its first 262144 bytes, then scph5500.bin, scph5502.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[20,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[30,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[40,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[50,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[60,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[70,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[80,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[90,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[100,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[110,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[120,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[130,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[140,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[150,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[160,"0d1ef963932a2aa7e5c79f7e634c9fc63b51ba95"],[170,"9cf22a982c36d29527b7b8594b8bb0677689750f"],[180,"c21e6940f9383070634d99c95e46643dce114806"],[190,"1dc65ead4f57e22b032b202c928a0e1ff47b33cc"],[200,"496c857184814fee7850658513f1618290293643"],[210,"fd759fc97d025b4c7c23f0614625b9751c4e0b96"],[220,"f0aa4c60e2ded472aae7cd79c381bcb02a181580"],[230,"b0201d6721d9159397dbfe069d00040de686e049"],[240,"4da2219693f6d34d6c18b7cd4b18df752d136dc0"],[250,"7e458c656e3966b16a11c18f193e95e95ad2aea4"],[260,"b23d7be1676a2a9ec8cf68f180382e0cb008d39e"],[270,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[280,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[290,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[300,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[310,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[320,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[330,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[340,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[350,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[360,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[370,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[380,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[390,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[400,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[410,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[420,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[430,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[440,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[450,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[460,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[470,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[480,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[490,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[500,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[510,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[520,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[530,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[540,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[550,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[560,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[570,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[580,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[590,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[600,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[610,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[620,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[630,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[640,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[650,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[660,"7b72ebae83893b63f9fffd1685f03b1d048d9fa9"],[670,"6e3c2a9b7bfe358ad2dcdb0aee3ccb2b219543c7"],[680,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[690,"a86c59c3dc0ba4fb0ef697d492b00f2da8b17452"],[700,"464ee3693588a929c5147057dee7565a6d50e983"],[710,"15a6363657c1a822723b38fa2321e98eaff1dbf5"],[720,"5e8190221ecf4481b527f620dbcc276049da93c2"],[730,"bca1e8afa686d8476ea7a12082fc52f47deeab32"],[740,"55c554d108420997fb0c19b82e1b91c7318659e6"],[750,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[760,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[770,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[780,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[790,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[800,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[810,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[820,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[830,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[840,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[850,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[860,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[870,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[880,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[890,"0905c920a1de996664eddca94f93f75d0dcd4c52"],[900,"0905c920a1Line truncated
|
||||
{"check":{"claim":"mednafen_psx_hw boots Bust-A-Move 2 - Arcade Edition (USA) with scph5903.bin alone and refuses a wrong file under its name","method":"scph5903.bin alone as scph5903.bin, then 1048576 zero bytes and its first 524288 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[10,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[20,"337865a6875563894146c2bf10e400ac4759a23e"],[30,"0304b0afe55ebe3add1ebf5bf41752f97e44204c"],[40,"7c35e737b2ccd7800ea1f0c36f687a9c6dda764c"],[50,"299a3fff10da0b0a116a1ea88d7433af6738de84"],[60,"c12e166c88321b96354829282fc51d5bc21a9b82"],[70,"74eb9bb5d909952545945402db4f6e7556d16e81"],[80,"fa30cf7b1d078ee6b88fee18a4951a7e0451440b"],[90,"539e02cabeebdd160561c5ae9f8c1133de337689"],[100,"fb3ff45d9dcbed0a60c552cb8c88b42115ab4cfd"],[110,"3981635420384123d33c47b909dd3612d6a7bd41"],[120,"fb517372811fb54ecc6820f7f33fee410fd3f94c"],[130,"274796a4421f971ad31f8cfed6143ea1a1f716f8"],[140,"f11ba7396b957127985dff0746fe96c552d01faa"],[150,"352b4bb3233f9e5227c17b9acc64a8f8c12d1a5e"],[160,"fcc27a87c9ed8f96caf75bcf618316ab029935e1"],[170,"ce6cac47ffedc6581fd7cd5234b8eaa491201b29"],[180,"53964f429e207a9e12058d29c03d848fb0ee4bc8"],[190,"556bfc1bd6076747fb1a1cc61195c59935139808"],[200,"d60afa84aa75ac26255e4abcc7787e2c6926a822"],[210,"bf686aec65cb75afa4c2c6a76ed41dc2e7f56473"],[220,"1c30d1c3691149440de2e39c76c9d4c15a3ef887"],[230,"f3f0ab0259b022858fe1f9df5b8b881d20ed9622"],[240,"ccdb9fe1afab16bff7b8abe49d93388a4759b672"],[250,"ef0d5460065e9bea5bf56143dccec95e0f97e9e2"],[260,"37a277f1c7fdd3dbb2957437e97149633bbc46bb"],[270,"c3f66164fa79d8d5387cee765c6c921ef0a5592a"],[280,"949c14bd898ec443eac36d983b1a9b835c1e30bb"],[290,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[300,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[310,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[320,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[330,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[340,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[350,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[360,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[370,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[380,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[390,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[400,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[410,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[420,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[430,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[440,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[450,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[460,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[470,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[480,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[490,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[500,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[510,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[520,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[530,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[540,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[550,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[560,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[570,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[580,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[590,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[600,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[610,"6b056a423c67f7a4675ffdb2f3a62d92f532b358"],[620,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[630,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[640,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[650,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[660,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[670,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[680,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[690,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[700,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[710,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[720,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[730,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[740,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[750,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[760,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[770,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[780,"64646545171a7f81dfcd027089d1f38a7f81b82b"],[790,"ad649e2955576e0af98200564cd4c5e2da081453"],[800,"ad649e2955576e0af98200564cd4c5e2da081453"],[810,"ad649e2955576e0af98200564cd4c5e2da081453"],[820,"ad649e2955576e0af98200564cd4c5e2da081453"],[830,"ad649e2955576e0af98200564cd4c5e2da081453"],[840,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[850,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[860,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[870,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[880,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[890,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[900,"d51ab7783f8eeafc63a28f14ce39f8e2babeffb3"],[910,"d51ab7783f8eeafLine truncated
|
||||
@@ -102,3 +102,30 @@
|
||||
{"core":{"build_command":"make -j8","commit":"41d7596","compiler":["GCC: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0"],"file":"head_41d7596.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":"https://github.com/Abdess/beetle-saturn-libretro","sha256":"4851f3e5ad3509de78bc53b858f101c3e345555fb7f5d5c5220db1364bc41f42"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"17cc35bef9aebfc4dd4f6b306129bdc176516f2e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"2bba7b8a771e0c9585e2a0ff9721077107664bd65811a20bc8021640ca27f074"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.67,2.9,3.08],"load_before":[2.49,2.88,3.07],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-c4542e724438","inputs":{"content":{"label":"Redump: Tomb Raider (Europe)","sha1":"e163871b390380f809579a5a9d82659eaa874000","size":6537,"tracks":[{"file":"Tomb Raider (Europe) (Track 01).bin","sha1":"147585e31fa6a2a819711ee936fd149a86ef653c","size":207714528},{"file":"Tomb Raider (Europe) (Track 02).bin","sha1":"4fdda4efe3341d92938a45d49dc4a73f9842392a","size":34675536},{"file":"Tomb Raider (Europe) (Track 03).bin","sha1":"9c267444a801277785c357cf1e2e49d6646e3530","size":11284896},{"file":"Tomb Raider (Europe) (Track 04).bin","sha1":"7e094cf598d8e281f10b18353b1e0927571d157d","size":21788928},{"file":"Tomb Raider (Europe) (Track 05).bin","sha1":"a53d1d0b7c3f899683d59e6cd88dc1c0500797f0","size":21193872},{"file":"Tomb Raider (Europe) (Track 06).bin","sha1":"e86955b321fedaa97d58a2eddbfa24f1f0015adc","size":13580448},{"file":"Tomb Raider (Europe) (Track 07).bin","sha1":"d9a78b3a02aec82e701687301b897baebba82652","size":9857232},{"file":"Tomb Raider (Europe) (Track 08).bin","sha1":"71e6c29446f05ccb21a130efa12aa6355f94757b","size":12039888},{"file":"Tomb Raider (Europe) (Track 09).bin","sha1":"307d279ac8fe771076f0a53d5b1228a1d28ff08e","size":7070112},{"file":"Tomb Raider (Europe) (Track 10).bin","sha1":"81542d6601ab30cfd00bb9edcb0416d52bc30b3f","size":13984992},{"file":"Tomb Raider (Europe) (Track 11).bin","sha1":"b5112c95e8010b3a8ef4c4e957f52331a46a3fb7","size":1498224},{"file":"Tomb Raider (Europe) (Track 12).bin","sha1":"d9c0e710b6d0595ac29bc59f24d3dbe13ffc554c","size":2643648},{"file":"Tomb Raider (Europe) (Track 13).bin","sha1":"1ab17bbcb52ce47ab606bb70cda315bce34557b0","size":1241856},{"file":"Tomb Raider (Europe) (Track 14).bin","sha1":"b822e5f78f2cabdaf3284b8dc6ae54f98bd57f16","size":2128560},{"file":"Tomb Raider (Europe) (Track 15).bin","sha1":"fd69f277f3d944726c9b3e9f9102936ac4107d4c","size":1947456},{"file":"Tomb Raider (Europe) (Track 16).bin","sha1":"d702c417a938742cc41f5813a3daef9f44c20782","size":6851376},{"file":"Tomb Raider (Europe) (Track 17).bin","sha1":"21bf84308f8944d15202d7499fb3589ea27e0075","size":7559328},{"file":"Tomb Raider (Europe) (Track 18).bin","sha1":"72a718d52ca7345a31ab986c57f8944893530565","size":4466448},{"file":"Tomb Raider (Europe) (Track 19).bin","sha1":"69e73640f92bba3698bab25bc8d494ddaae0f2cc","size":15629040},{"file":"Tomb Raider (Europe) (Track 20).bin","sha1":"895ac2ef2b3046f5fb9137d6c555bebb67733107","size":9565584},{"file":"Tomb Raider (Europe) (Track 21).bin","sha1":"c1f4e83dbfb60afdeba76667210b146c59c9c0f1","size":7272384},{"file":"Tomb Raider (Europe) (Track 22).bin","sha1":"f9bd8850a45f4e983e14bcf338e7fb1ceec811f6","size":11202576},{"file":"Tomb Raider (Europe) (Track 23).bin","sha1":"1ffc775ac71b4440b27cbb59c7083bac4f791a75","size":10158288},{"file":"Tomb Raider (Europe) (Track 24).bin","sha1":"9e73751fcd2350e076f35cf99bf0d0c60440c649","size":2711856},{"file":"Tomb Raider (Europe) (Track 25).bin","sha1":"01b12dd55fc1b0c0f34b533eafbefc1b548c46f4","size":6498576},{"file":"Tomb Raider (Europe) (Track 26).bin","sha1":"1164e0ff54fd16cb85d369267db565e4b16e63f6","size":1237152},{"file":"Tomb Raider (Europe) (Track 27).bin","sha1":"4c3b397861c99b99c5bc632c2d516c9db25db400","size":1237152},{"file":"Tomb Raider (Europe) (Track 28).bin","sha1":"06ab055fa5583f6cab91026743a414d0d25764a4","size":1234800},{"file":"Tomb Raider (Europe) (Track 29).bin","sha1":"3f02f2425e58dacb95e5d37fe066d96cfd7345cb","size":1237152},{"file":"Tomb Raider (Europe) (Track 30).bin","sha1":"b084178ffc2a3c1c1ecf5e3d54a09e4d5a3c4709","size":1406496},{"file":"Tomb Raider (Europe) (Track 31).bin","sha1":"063f00fc06ee3d55bad02787e57f4d52c56e8ee9","size":1237152},{"file":"Tomb Raider (Europe) (Track 32).bin","sha1":"32be222c2e86fd209284bc937f8dd5903279bb02","size":1676976},{"file":"Tomb Raider (Europe) (Track 33).bin","sha1":"59f8c95116327c30e38119c203c9d6d339bf4f68","size":1686384},{"file":"Tomb Raider (Europe) (Track 34).bin","sha1":"07eddaa58a0d1dc774fda8e2d8b79b60c19929af","size":1345344},{"file":"Tomb Raider (Europe) (Track 35).bin","sha1":"b74e67a81db3835a989e8f07a5a91b83c5c35ef2","size":1267728},{"file":"Tomb Raider (EuroLine truncated
|
||||
{"core":{"build_command":"make -j8","commit":"41d7596","compiler":["GCC: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0"],"file":"head_41d7596.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":"https://github.com/Abdess/beetle-saturn-libretro","sha256":"4851f3e5ad3509de78bc53b858f101c3e345555fb7f5d5c5220db1364bc41f42"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"17cc35bef9aebfc4dd4f6b306129bdc176516f2e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"2bba7b8a771e0c9585e2a0ff9721077107664bd65811a20bc8021640ca27f074"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.68,2.85,3.04],"load_before":[2.47,2.82,3.04],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-97ba37977acb","inputs":{"content":{"label":"Redump: Virtua Cop (Europe)","sha1":"ba86058fb2feb383e791b990ef3bff680e6a147d","size":2148,"tracks":[{"file":"Virtua Cop (Europe) (Track 01).bin","sha1":"95ff15a9483cb154318074daf64a81cab28cd510","size":50652672},{"file":"Virtua Cop (Europe) (Track 02).bin","sha1":"21a967e3235b35005e9d82f66ddb2f5dc94220ba","size":1618176},{"file":"Virtua Cop (Europe) (Track 03).bin","sha1":"32ac2104ad63b5cbbfd11ef7b6c4545920b4180b","size":24531360},{"file":"Virtua Cop (Europe) (Track 04).bin","sha1":"d98280f80b364e19c09bbf262ae2ea99767ae48a","size":9422112},{"file":"Virtua Cop (Europe) (Track 05).bin","sha1":"1f745eda7a0104f107c617f737ea1c5413c3a224","size":11990496},{"file":"Virtua Cop (Europe) (Track 06).bin","sha1":"9cf23a8a7df5e5318a5833c872b8dcc1559c80c9","size":44323440},{"file":"Virtua Cop (Europe) (Track 07).bin","sha1":"746aa002022340d941267dc2093a9fb518d95b88","size":38537520},{"file":"Virtua Cop (Europe) (Track 08).bin","sha1":"cd374f11c4ba2d404b92f58a5174d972dd76e0ec","size":37274496},{"file":"Virtua Cop (Europe) (Track 09).bin","sha1":"197e09c77934de93763aab147a9a9cbd9a0737e1","size":17569440},{"file":"Virtua Cop (Europe) (Track 10).bin","sha1":"4fef61b53f2e6317a2b95a8c8247fd27bcb9b188","size":28092288},{"file":"Virtua Cop (Europe) (Track 11).bin","sha1":"251c5927b6b1e18a67870190e2c41e0b7302b13a","size":24804192},{"file":"Virtua Cop (Europe) (Track 12).bin","sha1":"ac9e700a996cab481021057b51e13465a41f3c54","size":24256176},{"file":"Virtua Cop (Europe) (Track 13).bin","sha1":"e322a7d828d1cd58ad73741532d9c8b44b526916","size":28983696},{"file":"Virtua Cop (Europe) (Track 14).bin","sha1":"52c3cf4a255b4ee6fa543dd4df17c5220068f200","size":1305360},{"file":"Virtua Cop (Europe) (Track 15).bin","sha1":"e08e6f11cc9add5ec3dd183ce7a84aae2d009dac","size":1653456},{"file":"Virtua Cop (Europe) (Track 16).bin","sha1":"a9d1be682757c2dddb992623fcccd5aa99eb2741","size":13695696},{"file":"Virtua Cop (Europe) (Track 17).bin","sha1":"5e4822b775a9601d515752c4bb85250589991dd5","size":41000064},{"file":"Virtua Cop (Europe) (Track 18).bin","sha1":"22a296399ee04ddce06ec7a723e75d5e85b9b18e","size":43660176},{"file":"Virtua Cop (Europe) (Track 19).bin","sha1":"b1e8b0b4dc2720ccf070509296b50b51a99b917f","size":48963936}]},"env":{"FAKETIME":"2000-01-01 00:00:00","FAKETIME_DONT_FAKE_MONOTONIC":"1","LD_PRELOAD":"libfaketime.so.1"},"frame_hash_every":60,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{"beetle_saturn_mpeg_card":"enabled"},"presses":[{"button":3,"frame":1200,"length":10},{"button":3,"frame":1800,"length":10},{"button":3,"frame":2400,"length":10},{"button":3,"frame":3000,"length":10}],"repetitions":1,"warmup":0},"kind":"run","record_version":3,"recorded_at":"2026-10-27T23:51:34+00:00","subject":"issue85-regression-card-on","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"28":1,"35":3,"37":2,"40":3599,"45":4,"46":1,"47":3600,"51":1,"55":2,"57":1,"8":1,"87":1},"files_opened":[{"path":"mpr-17933.bin","sha1_after":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3","sha1_staged":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3"},{"path":"mpeg_card.bin","sha1_after":"f7171b2a8f1c464696771941225c32d636b59349","sha1_staged":"f7171b2a8f1c464696771941225c32d636b59349"}],"files_probed_absent":[],"fps":182.07126291535343,"fps_nominal":49.92012779552716,"frames":3600,"input_pressed":80,"input_queries":187200,"isolation":"bwrap","last_frame_size":[352,256],"library_name":"Beetle Saturn","library_version":"v1.32.1","loaded":true,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Virtua Cop (Europe).cue\""},{"frame":0,"level":"debug","text":"Disc 1"},{"frame":0,"level":"debug","text":"- Track 1, LBA: 0 DATA"},{"frame":0,"level":"debug","text":"- Track 2, LBA: 21686 AUDIO"},{"frame":0,"level":"debug","text":"- Track 3, LBA: 22374 AUDIO"},{"frame":0,"level":"debug","text":"- Track 4, LBA: 32804 AUDIO"},{"frame":0,"level":"debug","text":"- Track 5, LBA: 36810 AUDIO"},{"frame":Line truncated
|
||||
{"core":{"build_command":"make -j8","commit":"41d7596","compiler":["GCC: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0"],"file":"head_41d7596.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":"https://github.com/Abdess/beetle-saturn-libretro","sha256":"4851f3e5ad3509de78bc53b858f101c3e345555fb7f5d5c5220db1364bc41f42"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"17cc35bef9aebfc4dd4f6b306129bdc176516f2e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"2bba7b8a771e0c9585e2a0ff9721077107664bd65811a20bc8021640ca27f074"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.79,2.84,3.02],"load_before":[2.46,2.78,3.01],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-ded9fcc5eb22","inputs":{"content":{"label":"Redump: Virtua Fighter 2 (USA)","sha1":"3d8ca7b99a62235e3157c5a2e55774cef6ed4338","size":3983,"tracks":[{"file":"Virtua Fighter 2 (USA) (Track 01).bin","sha1":"28e0b690ffb61ee737c7f2ccc9280185265a1096","size":60267648},{"file":"Virtua Fighter 2 (USA) (Track 02).bin","sha1":"046f86cd20aa73df39163bd3df843ca88f7de9bf","size":14403648},{"file":"Virtua Fighter 2 (USA) (Track 03).bin","sha1":"6417abbf1cd811418c7efe5df29c55e6e3af7875","size":16870896},{"file":"Virtua Fighter 2 (USA) (Track 04).bin","sha1":"e81669de960631cfc2beaa019a9cf9682b507f6a","size":14575344},{"file":"Virtua Fighter 2 (USA) (Track 05).bin","sha1":"01b7fd6c71b3f339a228165a2e7c0bb1d8dbfdf1","size":14643552},{"file":"Virtua Fighter 2 (USA) (Track 06).bin","sha1":"a7e4c6bb0b8aa6fbe5581c9742cf77813d109990","size":13528704},{"file":"Virtua Fighter 2 (USA) (Track 07).bin","sha1":"dcbccf9638a3103409b25b466352de4ece93b425","size":17745840},{"file":"Virtua Fighter 2 (USA) (Track 08).bin","sha1":"8c2d6519f382310522915ee4f47551e4898b0715","size":16659216},{"file":"Virtua Fighter 2 (USA) (Track 09).bin","sha1":"68ebf03ea348ef2993fcd031bf7247f9ade1a3ce","size":16506336},{"file":"Virtua Fighter 2 (USA) (Track 10).bin","sha1":"be74f7dbd63886fe626d00c8d54f8912063c1f0c","size":17063760},{"file":"Virtua Fighter 2 (USA) (Track 11).bin","sha1":"2bc243633fad43e9d2ad64cbb063e0ce9725bda2","size":13622784},{"file":"Virtua Fighter 2 (USA) (Track 12).bin","sha1":"b203aee3066f80db8fa01d107c0d00e603d716c2","size":16826208},{"file":"Virtua Fighter 2 (USA) (Track 13).bin","sha1":"f649f424efad035b276f6f3b8abf402480ac35db","size":13643952},{"file":"Virtua Fighter 2 (USA) (Track 14).bin","sha1":"52fd6d881bf1b6daea1fe214cc4c216204cdeef9","size":6343344},{"file":"Virtua Fighter 2 (USA) (Track 15).bin","sha1":"60088229de4a4b18d2d4834e6aacb02e463c32c6","size":1411200},{"file":"Virtua Fighter 2 (USA) (Track 16).bin","sha1":"c0c57fab302c8279b1119415deb4fd54efb68a71","size":3339840},{"file":"Virtua Fighter 2 (USA) (Track 17).bin","sha1":"b76e5b126b31ba355e12d1f88a46c96dd5eab3f3","size":8951712},{"file":"Virtua Fighter 2 (USA) (Track 18).bin","sha1":"e20ed56b26c17a5cf1dbfdcbdfb89ce626799d97","size":1766352},{"file":"Virtua Fighter 2 (USA) (Track 19).bin","sha1":"82aee2703eaa8c734b5304aaacd7921f54694e04","size":1970976},{"file":"Virtua Fighter 2 (USA) (Track 20).bin","sha1":"17bfc0722fa59b210b43901aec8b2f847aaa2277","size":2787120},{"file":"Virtua Fighter 2 (USA) (Track 21).bin","sha1":"52333eb9b7f7a2761e9f0eb85c157a26553b8ec6","size":32415264},{"file":"Virtua Fighter 2 (USA) (Track 22).bin","sha1":"8ab3736fa9522d9fd69e0e9253e9d817e135e172","size":27492528},{"file":"Virtua Fighter 2 (USA) (Track 23).bin","sha1":"ea50a1fcc4a35acd3ca7e02ee7a81f20a3e1de48","size":32180064},{"file":"Virtua Fighter 2 (USA) (Track 24).bin","sha1":"4b348bb0e320207148ebbffdf4ad4ddc236a74ad","size":31062864},{"file":"Virtua Fighter 2 (USA) (Track 25).bin","sha1":"ab576b182e3fed5af144cd8d2cc697c7ba37f5d5","size":27530160},{"file":"Virtua Fighter 2 (USA) (Track 26).bin","sha1":"2bc409ef8089c7e6f621e668cc8c07065fa21f73","size":30463104},{"file":"Virtua Fighter 2 (USA) (Track 27).bin","sha1":"ac60884ffcd2419eb2e1ffc9a1beec591c8f5b9a","size":38720976},{"file":"Virtua Fighter 2 (USA) (Track 28).bin","sha1":"f932fdb445adf71e7c528255f3616c7b1484c7e3","size":30681840},{"file":"Virtua Fighter 2 (USA) (Track 29).bin","sha1":"d7523dba40350541bff531cee1bec4145af508af","size":24851232},{"file":"Virtua Fighter 2 (USA) (Track 30).bin","sha1":"cee29a760ff54953a4e083ac6cbfdc2eabce7973","size":25763808},{"file":"Virtua Fighter 2 (USA) (Track 31).bin","sha1":"b3e728a593be2b8b98da613ebeef4ab13859e833","size":26789280},{"file":"Virtua Fighter 2 (USA) (Track 32).bin","sha1":"b3ecc02eb35318022500efb7cb5282457b92ad10","size":28278096},{"file":"Virtua Fighter 2 (USA) (Track 33).bin","sha1":"5e31f0db502bbcfdc368eb50ed612ed746580bdf","size":14918736},{"file":"Virtua Fighter 2 (USA) (Track 34).bin","sha1":"34067257e09ce347d3510908e01e29ce7477ffac","size":13634544}]},"env":{"FAKETIME":"2000-01-01 00:00:00","FAKETIME_Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6d3045cbb3e527b32f023c7f0d6b38bbeaa58cc6","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.34,2.88,3.02],"load_before":[2.31,2.89,3.02],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-c95a4a8184a5","inputs":{"content":{"label":"Puzzle Bobble 2X (Japan) (2M1, 2MB1)","sha1":"b962ec9148a189239810a10677dcba073983733f","size":2756,"tracks":[{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 01).bin","sha1":"c58ceebc042ebd552c585b05a4bc88d69c6c995e","size":14309568},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 02).bin","sha1":"fe6d188a60087c54934040006727ec610357f5f9","size":28993104},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 03).bin","sha1":"0742c4d1eed7cee765108e78cd49a007a538b635","size":31911936},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 04).bin","sha1":"c9dd1e71937eeffe4e47742828fc07e849a0922b","size":29588160},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 05).bin","sha1":"68c4a10b6794f024e2c02a9e659b5c1c43e88791","size":30484272},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 06).bin","sha1":"edf058feaad0d4651d5d40e7bd4e70d57ba793a8","size":30865296},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 07).bin","sha1":"643806f6761fbafe8eebff5f58bae24b5f8276fc","size":29134224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 08).bin","sha1":"aeb0f26452da450a10b3089626704a74d6f76474","size":30931152},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 09).bin","sha1":"d51239d527f1b1f0e31d849def27aaea07e99185","size":13345248},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 10).bin","sha1":"79ea313379268e07001114a1435bd5e8bf1c4d92","size":12726672},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 11).bin","sha1":"2876deda3588bf6472fec102d9d33faf2b6adcc8","size":1869840},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 12).bin","sha1":"f5bbaec49002f44f48fd2f47d8f810966464beeb","size":1691088},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 13).bin","sha1":"692a5510b8b39dc2e5949b86e6585958f51519e0","size":13055952},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 14).bin","sha1":"e71a26e1045734f1da56066003ef673f88453433","size":10031280},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 15).bin","sha1":"cb1b521cd45a10584fb7fdfb8a2659b7a7e89dfd","size":25460400},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 16).bin","sha1":"3b87e3fc301d6a6ad1d468d28853fde5fb99bb9f","size":4233600},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 17).bin","sha1":"6a98a9ce4f961e379aca84ec6d62b6f9a36fb89a","size":5026224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 18).bin","sha1":"cd8ca74abba4fbe3f46359fc3cf2481f9f989fec","size":4518192},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 19).bin","sha1":"9b2d0cfde9b01ecd32989bf6cd2742dcd2ef6539","size":3833760},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 20).bin","sha1":"9c8b54c5a5f353d1db510c051a1a61359dd7d133","size":3993696},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 21).bin","sha1":"ae84d729b571cf07bfc767b131602e6cfc926f1e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:29:57+00:00","subject":"region-mednafen_saturn-puzzle-bobble-2x-japan-2m1-2mb1-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"28":1,"35":3,"37":1,"40":3599,"45":4,"46":1,"47":3600,"51":1,"55":2,"57":1,"8":1,"87":1},"files_opened":[{"path":"sega_101.bin","sha1_after":"df94c5b4d47eb3cc404d88b33a8fda237eaf4720","sha1_staged":"df94c5b4d47eb3cc404d88b33a8fda237eaf4720"}],"files_probed_absent":[],"fps":291.00726509641095,"fps_nominal":59.82650314089141,"frames":3600,"input_pressed":0,"input_queries":187200,"isolation":"bwrap","last_frame_size":[330,224],"library_name":"Beetle Saturn","library_version":"v1.32.1","loaded":true,"logs":[{"frame":0,"leveLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6d3045cbb3e527b32f023c7f0d6b38bbeaa58cc6","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.76,3.35,3.22],"load_before":[2.71,3.36,3.23],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-b40eb171d095","inputs":{"content":{"label":"Puzzle Bobble 2X (Japan) (2M1, 2MB1)","sha1":"b962ec9148a189239810a10677dcba073983733f","size":2756,"tracks":[{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 01).bin","sha1":"c58ceebc042ebd552c585b05a4bc88d69c6c995e","size":14309568},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 02).bin","sha1":"fe6d188a60087c54934040006727ec610357f5f9","size":28993104},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 03).bin","sha1":"0742c4d1eed7cee765108e78cd49a007a538b635","size":31911936},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 04).bin","sha1":"c9dd1e71937eeffe4e47742828fc07e849a0922b","size":29588160},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 05).bin","sha1":"68c4a10b6794f024e2c02a9e659b5c1c43e88791","size":30484272},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 06).bin","sha1":"edf058feaad0d4651d5d40e7bd4e70d57ba793a8","size":30865296},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 07).bin","sha1":"643806f6761fbafe8eebff5f58bae24b5f8276fc","size":29134224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 08).bin","sha1":"aeb0f26452da450a10b3089626704a74d6f76474","size":30931152},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 09).bin","sha1":"d51239d527f1b1f0e31d849def27aaea07e99185","size":13345248},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 10).bin","sha1":"79ea313379268e07001114a1435bd5e8bf1c4d92","size":12726672},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 11).bin","sha1":"2876deda3588bf6472fec102d9d33faf2b6adcc8","size":1869840},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 12).bin","sha1":"f5bbaec49002f44f48fd2f47d8f810966464beeb","size":1691088},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 13).bin","sha1":"692a5510b8b39dc2e5949b86e6585958f51519e0","size":13055952},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 14).bin","sha1":"e71a26e1045734f1da56066003ef673f88453433","size":10031280},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 15).bin","sha1":"cb1b521cd45a10584fb7fdfb8a2659b7a7e89dfd","size":25460400},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 16).bin","sha1":"3b87e3fc301d6a6ad1d468d28853fde5fb99bb9f","size":4233600},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 17).bin","sha1":"6a98a9ce4f961e379aca84ec6d62b6f9a36fb89a","size":5026224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 18).bin","sha1":"cd8ca74abba4fbe3f46359fc3cf2481f9f989fec","size":4518192},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 19).bin","sha1":"9b2d0cfde9b01ecd32989bf6cd2742dcd2ef6539","size":3833760},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 20).bin","sha1":"9c8b54c5a5f353d1db510c051a1a61359dd7d133","size":3993696},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 21).bin","sha1":"ae84d729b571cf07bfc767b131602e6cfc926f1e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:32:54+00:00","subject":"region-mednafen_saturn-puzzle-bobble-2x-japan-2m1-2mb1-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"28":1,"35":3,"37":1,"40":3599,"45":4,"46":1,"47":3600,"51":1,"55":2,"57":1,"8":1,"87":1},"files_opened":[{"path":"sega_101.bin","sha1_after":"df94c5b4d47eb3cc404d88b33a8fda237eaf4720","sha1_staged":"df94c5b4d47eb3cc404d88b33a8fda237eaf4720"}],"files_probed_absent":[],"fps":292.2166983892468,"fps_nominal":59.82650314089141,"frames":3600,"input_pressed":0,"input_queries":187200,"isolation":"bwrap","last_frame_size":[330,224],"library_name":"Beetle Saturn","library_version":"v1.32.1","loaded":true,"logs":[{"frame":0,"level"Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":null,"repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":["default: repetition 0: retro_load_game returned false"],"frontend":{"commit":"6d3045cbb3e527b32f023c7f0d6b38bbeaa58cc6","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.64,3.04,3.12],"load_before":[2.64,3.04,3.12],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-8a0710524e62","inputs":{"content":{"label":"Puzzle Bobble 2X (Japan) (2M1, 2MB1)","sha1":"b962ec9148a189239810a10677dcba073983733f","size":2756,"tracks":[{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 01).bin","sha1":"c58ceebc042ebd552c585b05a4bc88d69c6c995e","size":14309568},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 02).bin","sha1":"fe6d188a60087c54934040006727ec610357f5f9","size":28993104},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 03).bin","sha1":"0742c4d1eed7cee765108e78cd49a007a538b635","size":31911936},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 04).bin","sha1":"c9dd1e71937eeffe4e47742828fc07e849a0922b","size":29588160},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 05).bin","sha1":"68c4a10b6794f024e2c02a9e659b5c1c43e88791","size":30484272},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 06).bin","sha1":"edf058feaad0d4651d5d40e7bd4e70d57ba793a8","size":30865296},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 07).bin","sha1":"643806f6761fbafe8eebff5f58bae24b5f8276fc","size":29134224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 08).bin","sha1":"aeb0f26452da450a10b3089626704a74d6f76474","size":30931152},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 09).bin","sha1":"d51239d527f1b1f0e31d849def27aaea07e99185","size":13345248},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 10).bin","sha1":"79ea313379268e07001114a1435bd5e8bf1c4d92","size":12726672},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 11).bin","sha1":"2876deda3588bf6472fec102d9d33faf2b6adcc8","size":1869840},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 12).bin","sha1":"f5bbaec49002f44f48fd2f47d8f810966464beeb","size":1691088},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 13).bin","sha1":"692a5510b8b39dc2e5949b86e6585958f51519e0","size":13055952},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 14).bin","sha1":"e71a26e1045734f1da56066003ef673f88453433","size":10031280},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 15).bin","sha1":"cb1b521cd45a10584fb7fdfb8a2659b7a7e89dfd","size":25460400},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 16).bin","sha1":"3b87e3fc301d6a6ad1d468d28853fde5fb99bb9f","size":4233600},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 17).bin","sha1":"6a98a9ce4f961e379aca84ec6d62b6f9a36fb89a","size":5026224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 18).bin","sha1":"cd8ca74abba4fbe3f46359fc3cf2481f9f989fec","size":4518192},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 19).bin","sha1":"9b2d0cfde9b01ecd32989bf6cd2742dcd2ef6539","size":3833760},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 20).bin","sha1":"9c8b54c5a5f353d1db510c051a1a61359dd7d133","size":3993696},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 21).bin","sha1":"ae84d729b571cf07bfc767b131602e6cfc926f1e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:35:24+00:00","subject":"region-mednafen_saturn-puzzle-bobble-2x-japan-2m1-2mb1-others","supersedes":null,"variants":[{"flags":["repetition 0: retro_load_game returned false"],"label":"default","repetitions":[{"files_opened":[],"files_probed_absent":["sega_101.bin"],"isolation":"bwrap","library_name":"Beetle Saturn","loaded":false,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Puzzle Bobble 2X (Japan) (2M1, 2MB1).cue\""},{"frame":0,"level":"debug","text":"Disc 1"},{"frame":0,"level":"debug","text":"- Track 1, LBA: 0 DATA"},{"frame":0,"level":"debug","text":"- Track 2, LBA: 6234 AUDIO"},{"frame":0,"level":"debug","text":"- Track 3, LBA: 18561 AULine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6d3045cbb3e527b32f023c7f0d6b38bbeaa58cc6","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.87,3.54,3.38],"load_before":[2.75,3.55,3.38],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-8f2f065732f1","inputs":{"content":{"label":"Puzzle Bobble 2X (Japan) (2M1, 2MB1)","sha1":"b962ec9148a189239810a10677dcba073983733f","size":2756,"tracks":[{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 01).bin","sha1":"c58ceebc042ebd552c585b05a4bc88d69c6c995e","size":14309568},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 02).bin","sha1":"fe6d188a60087c54934040006727ec610357f5f9","size":28993104},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 03).bin","sha1":"0742c4d1eed7cee765108e78cd49a007a538b635","size":31911936},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 04).bin","sha1":"c9dd1e71937eeffe4e47742828fc07e849a0922b","size":29588160},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 05).bin","sha1":"68c4a10b6794f024e2c02a9e659b5c1c43e88791","size":30484272},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 06).bin","sha1":"edf058feaad0d4651d5d40e7bd4e70d57ba793a8","size":30865296},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 07).bin","sha1":"643806f6761fbafe8eebff5f58bae24b5f8276fc","size":29134224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 08).bin","sha1":"aeb0f26452da450a10b3089626704a74d6f76474","size":30931152},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 09).bin","sha1":"d51239d527f1b1f0e31d849def27aaea07e99185","size":13345248},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 10).bin","sha1":"79ea313379268e07001114a1435bd5e8bf1c4d92","size":12726672},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 11).bin","sha1":"2876deda3588bf6472fec102d9d33faf2b6adcc8","size":1869840},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 12).bin","sha1":"f5bbaec49002f44f48fd2f47d8f810966464beeb","size":1691088},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 13).bin","sha1":"692a5510b8b39dc2e5949b86e6585958f51519e0","size":13055952},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 14).bin","sha1":"e71a26e1045734f1da56066003ef673f88453433","size":10031280},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 15).bin","sha1":"cb1b521cd45a10584fb7fdfb8a2659b7a7e89dfd","size":25460400},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 16).bin","sha1":"3b87e3fc301d6a6ad1d468d28853fde5fb99bb9f","size":4233600},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 17).bin","sha1":"6a98a9ce4f961e379aca84ec6d62b6f9a36fb89a","size":5026224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 18).bin","sha1":"cd8ca74abba4fbe3f46359fc3cf2481f9f989fec","size":4518192},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 19).bin","sha1":"9b2d0cfde9b01ecd32989bf6cd2742dcd2ef6539","size":3833760},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 20).bin","sha1":"9c8b54c5a5f353d1db510c051a1a61359dd7d133","size":3993696},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 21).bin","sha1":"ae84d729b571cf07bfc767b131602e6cfc926f1e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:40:03+00:00","subject":"region-mednafen_saturn-puzzle-bobble-2x-japan-2m1-2mb1-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"28":1,"35":3,"37":1,"40":3599,"45":4,"46":1,"47":3600,"51":1,"55":2,"57":1,"8":1,"87":1},"files_opened":[{"path":"sega_101.bin","sha1_after":"df94c5b4d47eb3cc404d88b33a8fda237eaf4720","sha1_staged":"df94c5b4d47eb3cc404d88b33a8fda237eaf4720"}],"files_probed_absent":[],"fps":291.9555039534164,"fps_nominal":59.82650314089141,"frames":3600,"input_pressed":0,"input_queries":187200,"isolation":"bwrap","last_frame_size":[330,224],"library_name":"Beetle Saturn","library_version":"v1.32.1","loaded":true,"logs":[{"frame":0,"levelLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6d3045cbb3e527b32f023c7f0d6b38bbeaa58cc6","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.97,3.12,3.23],"load_before":[2.79,3.09,3.23],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-3e2c99e6eb24","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"782b93d04ecb9da4cc534489e67feeac7ea9dc78","size":2733,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"8980b4ff48f62af7c759326084c31886ebe3c6c9","size":14323680},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"5dff4c40aea9544ea439e46598f9f28f3ccd3fe4","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"85e6f4f8d99798ef705f40b1eef64154b56a3719","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 16).bin","sha1":"4e267443c95197df9f169047b89e6763997676da","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 21).bin","sha1":"e17390359629cbb835909c086ca6e5c048af1f43","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:43:34+00:00","subject":"region-mednafen_saturn-bust-a-move-2-arcade-edition-usa-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"28":1,"35":3,"37":1,"40":3599,"45":4,"46":1,"47":3600,"51":1,"55":2,"57":1,"8":1,"87":1},"files_opened":[{"path":"mpr-17933.bin","sha1_after":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3","sha1_staged":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3"}],"files_probed_absent":[],"fps":293.88774786969157,"fps_nominal":59.82650314089141,"frames":3600,"input_pressed":0,"input_queries":187200,"isolation":"bwrap","last_frame_size":[330,224],"library_name":"Beetle Saturn","library_version":"v1.32.1","loaded":true,"logs":[{"frame":0,"leLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":["load average reached 3.1 (threshold 3.0)"],"frontend":{"commit":"6d3045cbb3e527b32f023c7f0d6b38bbeaa58cc6","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.1,2.96,3.13],"load_before":[2.94,2.92,3.12],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-ed1804b021e6","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"782b93d04ecb9da4cc534489e67feeac7ea9dc78","size":2733,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"8980b4ff48f62af7c759326084c31886ebe3c6c9","size":14323680},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"5dff4c40aea9544ea439e46598f9f28f3ccd3fe4","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"85e6f4f8d99798ef705f40b1eef64154b56a3719","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 16).bin","sha1":"4e267443c95197df9f169047b89e6763997676da","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 21).bin","sha1":"e17390359629cbb835909c086ca6e5c048af1f43","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:46:54+00:00","subject":"region-mednafen_saturn-bust-a-move-2-arcade-edition-usa-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"28":1,"35":3,"37":1,"40":3599,"45":4,"46":1,"47":3600,"51":1,"55":2,"57":1,"8":1,"87":1},"files_opened":[{"path":"mpr-17933.bin","sha1_after":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3","sha1_staged":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3"}],"files_probed_absent":[],"fps":292.0518295855756,"fps_nominal":59.82650314089141,"frames":3600,"input_pressed":0,"input_queries":187200,"isolation":"bwrap","last_frame_size":[330,224],"library_name":"Beetle Saturn","library_version":"v1.32.Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":null,"repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":["default: repetition 0: retro_load_game returned false"],"frontend":{"commit":"6d3045cbb3e527b32f023c7f0d6b38bbeaa58cc6","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.53,2.72,3.01],"load_before":[2.49,2.72,3.01],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-f37d39eb7518","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"782b93d04ecb9da4cc534489e67feeac7ea9dc78","size":2733,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"8980b4ff48f62af7c759326084c31886ebe3c6c9","size":14323680},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"5dff4c40aea9544ea439e46598f9f28f3ccd3fe4","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"85e6f4f8d99798ef705f40b1eef64154b56a3719","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 16).bin","sha1":"4e267443c95197df9f169047b89e6763997676da","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 21).bin","sha1":"e17390359629cbb835909c086ca6e5c048af1f43","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:48:52+00:00","subject":"region-mednafen_saturn-bust-a-move-2-arcade-edition-usa-others","supersedes":null,"variants":[{"flags":["repetition 0: retro_load_game returned false"],"label":"default","repetitions":[{"files_opened":[],"files_probed_absent":["mpr-17933.bin"],"isolation":"bwrap","library_name":"Beetle Saturn","loaded":false,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Bust-A-Move 2 - Arcade Edition (USA).cue\""},{"frame":0,"level":"debug","text":"Disc 1"},{"frame":0,"level":"debug","text":"- Track 1, LBA: 0 DATA"},{"frame":0,"level":"debug","text":"- Track 2, LBA: 6240 AUDIO"},{"frame":0,"level":"debug","text":"- Track 3, LBA: 18567 Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6d3045cbb3e527b32f023c7f0d6b38bbeaa58cc6","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.55,2.61,2.93],"load_before":[2.23,2.56,2.92],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-a1ae9ea84ad8","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"782b93d04ecb9da4cc534489e67feeac7ea9dc78","size":2733,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"8980b4ff48f62af7c759326084c31886ebe3c6c9","size":14323680},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"5dff4c40aea9544ea439e46598f9f28f3ccd3fe4","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"85e6f4f8d99798ef705f40b1eef64154b56a3719","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 16).bin","sha1":"4e267443c95197df9f169047b89e6763997676da","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 21).bin","sha1":"e17390359629cbb835909c086ca6e5c048af1f43","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:51:03+00:00","subject":"region-mednafen_saturn-bust-a-move-2-arcade-edition-usa-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"28":1,"35":3,"37":1,"40":3599,"45":4,"46":1,"47":3600,"51":1,"55":2,"57":1,"8":1,"87":1},"files_opened":[{"path":"mpr-17933.bin","sha1_after":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3","sha1_staged":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3"}],"files_probed_absent":[],"fps":294.4207355255119,"fps_nominal":59.82650314089141,"frames":3600,"input_pressed":0,"input_queries":187200,"isolation":"bwrap","last_frame_size":[330,224],"library_name":"Beetle Saturn","library_version":"v1.32.1","loaded":true,"logs":[{"frame":0,"levLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6d3045cbb3e527b32f023c7f0d6b38bbeaa58cc6","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.46,2.56,2.87],"load_before":[2.4,2.55,2.87],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-3e41c5369fdc","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"9298fabcdd797272c8c993abc81fcdd51a4e7830","size":2796,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"37fb0db994cf91f3ef34059fed47974c862d77ba","size":14321328},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"b7fd2069e9fe2c468f5b2d323f6383e72d4d5427","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"1c359b0a80d57f500c76960c539fc6e2ada9e912","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 16).bin","sha1":"531e3397ae1d10ea66f775585ac284a3daf31e3d","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 21).bin","sha1":"ff8de13a8a75eb20a0393ad17053395cb7f3934e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:53:09+00:00","subject":"region-mednafen_saturn-bust-a-move-2-arcade-edition-europe-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"28":1,"35":3,"37":1,"40":3599,"45":4,"46":1,"47":3600,"51":1,"55":2,"57":1,"8":1,"87":1},"files_opened":[{"path":"mpr-17933.bin","sha1_after":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3","sha1_staged":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3"}],"files_probed_absent":[],"fps":255.11050375251483,"fps_nominal":49.92012779552716,"frames":3600,"input_pressed":0,"input_queries":187200,"isolation":"bwrap","last_frame_size":[330,256],"library_name":"Beetle SatuLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":["load average reached 3.47 (threshold 3.0)"],"frontend":{"commit":"6d3045cbb3e527b32f023c7f0d6b38bbeaa58cc6","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.47,2.76,2.91],"load_before":[2.57,2.56,2.84],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-a0ac24f9f213","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"9298fabcdd797272c8c993abc81fcdd51a4e7830","size":2796,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"37fb0db994cf91f3ef34059fed47974c862d77ba","size":14321328},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"b7fd2069e9fe2c468f5b2d323f6383e72d4d5427","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"1c359b0a80d57f500c76960c539fc6e2ada9e912","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 16).bin","sha1":"531e3397ae1d10ea66f775585ac284a3daf31e3d","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 21).bin","sha1":"ff8de13a8a75eb20a0393ad17053395cb7f3934e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:54:41+00:00","subject":"region-mednafen_saturn-bust-a-move-2-arcade-edition-europe-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"28":1,"35":3,"37":1,"40":3599,"45":4,"46":1,"47":3600,"51":1,"55":2,"57":1,"8":1,"87":1},"files_opened":[{"path":"mpr-17933.bin","sha1_after":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3","sha1_staged":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3"}],"files_probed_absent":[],"fps":252.51881287031114,"fps_nominal":49.92012779552716,"frames":3600,"input_pressed":0,"input_queries":187200,"isolation":"bwrap","last_frame_Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":null,"repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":["default: repetition 0: retro_load_game returned false"],"frontend":{"commit":"6d3045cbb3e527b32f023c7f0d6b38bbeaa58cc6","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.88,2.62,2.82],"load_before":[2.88,2.62,2.82],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-9ac120e3d0a7","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"9298fabcdd797272c8c993abc81fcdd51a4e7830","size":2796,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"37fb0db994cf91f3ef34059fed47974c862d77ba","size":14321328},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"b7fd2069e9fe2c468f5b2d323f6383e72d4d5427","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"1c359b0a80d57f500c76960c539fc6e2ada9e912","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 16).bin","sha1":"531e3397ae1d10ea66f775585ac284a3daf31e3d","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 21).bin","sha1":"ff8de13a8a75eb20a0393ad17053395cb7f3934e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:57:04+00:00","subject":"region-mednafen_saturn-bust-a-move-2-arcade-edition-europe-others","supersedes":null,"variants":[{"flags":["repetition 0: retro_load_game returned false"],"label":"default","repetitions":[{"files_opened":[],"files_probed_absent":["mpr-17933.bin"],"isolation":"bwrap","library_name":"Beetle Saturn","loaded":false,"logs":[{"frame":0,"level":"info","text":"Loading \"<content>/Bust-A-Move 2 - Arcade Edition (Europe).cue\""},{"frame":0,"level":"debug","text":"Disc 1"},{"frame":0,"level":"debug","text":"- Track 1, LBA: 0 DATA"},{"frame":0,"level":"debug","text":"- Track 2, LBA: Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6d3045cbb3e527b32f023c7f0d6b38bbeaa58cc6","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.77,2.61,2.78],"load_before":[2.57,2.57,2.78],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-dc5c7961e879","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"9298fabcdd797272c8c993abc81fcdd51a4e7830","size":2796,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"37fb0db994cf91f3ef34059fed47974c862d77ba","size":14321328},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"b7fd2069e9fe2c468f5b2d323f6383e72d4d5427","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"1c359b0a80d57f500c76960c539fc6e2ada9e912","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 16).bin","sha1":"531e3397ae1d10ea66f775585ac284a3daf31e3d","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 21).bin","sha1":"ff8de13a8a75eb20a0393ad17053395cb7f3934e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:59:36+00:00","subject":"region-mednafen_saturn-bust-a-move-2-arcade-edition-europe-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"28":1,"35":3,"37":1,"40":3599,"45":4,"46":1,"47":3600,"51":1,"55":2,"57":1,"8":1,"87":1},"files_opened":[{"path":"mpr-17933.bin","sha1_after":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3","sha1_staged":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3"}],"files_probed_absent":[],"fps":256.2688755185345,"fps_nominal":49.92012779552716,"frames":3600,"input_pressed":0,"input_queries":187200,"isolation":"bwrap","last_frame_size":[330,256],"library_name":"Beetle SatuLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":"https://github.com/libretro/beetle-saturn-libretro","sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":["default: repetition 1 disagrees with repetition 0 on state_sha1","load average reached 3.17 (threshold 3.0)"],"frontend":{"commit":"30fc471d2389285e83bd62f84607e33dd34ab689","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.17,2.83,3.12],"load_before":[2.64,2.71,3.09],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-ea155398ce4b","inputs":{"content":{"label":"Puzzle Bobble 2X (Japan) (2M1, 2MB1)","sha1":"b962ec9148a189239810a10677dcba073983733f","size":2756,"tracks":[{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 01).bin","sha1":"c58ceebc042ebd552c585b05a4bc88d69c6c995e","size":14309568},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 02).bin","sha1":"fe6d188a60087c54934040006727ec610357f5f9","size":28993104},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 03).bin","sha1":"0742c4d1eed7cee765108e78cd49a007a538b635","size":31911936},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 04).bin","sha1":"c9dd1e71937eeffe4e47742828fc07e849a0922b","size":29588160},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 05).bin","sha1":"68c4a10b6794f024e2c02a9e659b5c1c43e88791","size":30484272},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 06).bin","sha1":"edf058feaad0d4651d5d40e7bd4e70d57ba793a8","size":30865296},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 07).bin","sha1":"643806f6761fbafe8eebff5f58bae24b5f8276fc","size":29134224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 08).bin","sha1":"aeb0f26452da450a10b3089626704a74d6f76474","size":30931152},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 09).bin","sha1":"d51239d527f1b1f0e31d849def27aaea07e99185","size":13345248},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 10).bin","sha1":"79ea313379268e07001114a1435bd5e8bf1c4d92","size":12726672},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 11).bin","sha1":"2876deda3588bf6472fec102d9d33faf2b6adcc8","size":1869840},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 12).bin","sha1":"f5bbaec49002f44f48fd2f47d8f810966464beeb","size":1691088},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 13).bin","sha1":"692a5510b8b39dc2e5949b86e6585958f51519e0","size":13055952},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 14).bin","sha1":"e71a26e1045734f1da56066003ef673f88453433","size":10031280},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 15).bin","sha1":"cb1b521cd45a10584fb7fdfb8a2659b7a7e89dfd","size":25460400},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 16).bin","sha1":"3b87e3fc301d6a6ad1d468d28853fde5fb99bb9f","size":4233600},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 17).bin","sha1":"6a98a9ce4f961e379aca84ec6d62b6f9a36fb89a","size":5026224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 18).bin","sha1":"cd8ca74abba4fbe3f46359fc3cf2481f9f989fec","size":4518192},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 19).bin","sha1":"9b2d0cfde9b01ecd32989bf6cd2742dcd2ef6539","size":3833760},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 20).bin","sha1":"9c8b54c5a5f353d1db510c051a1a61359dd7d133","size":3993696},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 21).bin","sha1":"ae84d729b571cf07bfc767b131602e6cfc926f1e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T20:48:59+00:00","subject":"references-mednafen-saturn-puzzle-bobble-2x-japan-2m1-2mb1","supersedes":null,"variants":[{"flags":["repetition 1 disagrees with repetition 0 on state_sha1"],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"28":1,"35":3,"37":1,"40":3599,"45":4,"46":1,"47":3600,"51":1,"55":2,"57":1,"8":1,"87":1},"files_opened":[{"path":"sega_101.bin","sha1_after":"df94c5b4d47eb3cc404d88b33a8fda237eaf4720","sha1_staged":"df94c5b4d47eb3cc404d88b33a8fda237eaf4720"}],"files_probed_absent":[],"fps":265.73264653076853,"fps_nominal":59.826Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":"https://github.com/libretro/beetle-saturn-libretro","sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":["default: repetition 1 disagrees with repetition 0 on state_sha1","load average reached 3.15 (threshold 3.0)"],"frontend":{"commit":"30fc471d2389285e83bd62f84607e33dd34ab689","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"427dc7fe27d6e24f81d100da8a7b9a6d9fe9ef425134ae7bf4be55247d407a93"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.15,2.99,3.07],"load_before":[2.83,2.91,3.05],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-35dd5587262d","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"782b93d04ecb9da4cc534489e67feeac7ea9dc78","size":2733,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"8980b4ff48f62af7c759326084c31886ebe3c6c9","size":14323680},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"5dff4c40aea9544ea439e46598f9f28f3ccd3fe4","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"85e6f4f8d99798ef705f40b1eef64154b56a3719","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 16).bin","sha1":"4e267443c95197df9f169047b89e6763997676da","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 21).bin","sha1":"e17390359629cbb835909c086ca6e5c048af1f43","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T20:55:51+00:00","subject":"references-mednafen-saturn-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":["repetition 1 disagrees with repetition 0 on state_sha1"],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"28":1,"35":3,"37":1,"40":3599,"45":4,"46":1,"47":3600,"51":1,"55":2,"57":1,"8":1,"87":1},"files_opened":[{"path":"mpr-17933.bin","sha1_after":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3","sha1_staged":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3"}],"files_probed_absent":[],"fps":271.7238755845247,"fps_nominal":59.82Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":"https://github.com/libretro/beetle-saturn-libretro","sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":["default: repetition 1 disagrees with repetition 0 on state_sha1"],"frontend":{"commit":"dd64434122a3f0dd88ca5908a7cafc2bceedbb98","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.95,3.0,3.17],"load_before":[2.59,2.95,3.16],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-1880da25f150","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"9298fabcdd797272c8c993abc81fcdd51a4e7830","size":2796,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"37fb0db994cf91f3ef34059fed47974c862d77ba","size":14321328},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"b7fd2069e9fe2c468f5b2d323f6383e72d4d5427","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"1c359b0a80d57f500c76960c539fc6e2ada9e912","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 16).bin","sha1":"531e3397ae1d10ea66f775585ac284a3daf31e3d","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 21).bin","sha1":"ff8de13a8a75eb20a0393ad17053395cb7f3934e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:14:11+00:00","subject":"references-mednafen-saturn-bust-a-move-2-arcade-edition-europe","supersedes":null,"variants":[{"flags":["repetition 1 disagrees with repetition 0 on state_sha1"],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"28":1,"35":3,"37":1,"40":3599,"45":4,"46":1,"47":3600,"51":1,"55":2,"57":1,"8":1,"87":1},"files_opened":[{"path":"mpr-17933.bin","sha1_after":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3","sha1_staged":"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3"}],"files_probed_absent":[],"fps":239.173099333Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":["load average reached 3.02 (threshold 3.0)"],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.02,3.03,2.81],"load_before":[2.46,2.93,2.78],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-77b776b830bc","inputs":{"content":{"label":"Puzzle Bobble 2X (Japan) (2M1, 2MB1)","sha1":"b962ec9148a189239810a10677dcba073983733f","size":2756,"tracks":[{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 01).bin","sha1":"c58ceebc042ebd552c585b05a4bc88d69c6c995e","size":14309568},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 02).bin","sha1":"fe6d188a60087c54934040006727ec610357f5f9","size":28993104},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 03).bin","sha1":"0742c4d1eed7cee765108e78cd49a007a538b635","size":31911936},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 04).bin","sha1":"c9dd1e71937eeffe4e47742828fc07e849a0922b","size":29588160},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 05).bin","sha1":"68c4a10b6794f024e2c02a9e659b5c1c43e88791","size":30484272},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 06).bin","sha1":"edf058feaad0d4651d5d40e7bd4e70d57ba793a8","size":30865296},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 07).bin","sha1":"643806f6761fbafe8eebff5f58bae24b5f8276fc","size":29134224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 08).bin","sha1":"aeb0f26452da450a10b3089626704a74d6f76474","size":30931152},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 09).bin","sha1":"d51239d527f1b1f0e31d849def27aaea07e99185","size":13345248},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 10).bin","sha1":"79ea313379268e07001114a1435bd5e8bf1c4d92","size":12726672},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 11).bin","sha1":"2876deda3588bf6472fec102d9d33faf2b6adcc8","size":1869840},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 12).bin","sha1":"f5bbaec49002f44f48fd2f47d8f810966464beeb","size":1691088},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 13).bin","sha1":"692a5510b8b39dc2e5949b86e6585958f51519e0","size":13055952},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 14).bin","sha1":"e71a26e1045734f1da56066003ef673f88453433","size":10031280},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 15).bin","sha1":"cb1b521cd45a10584fb7fdfb8a2659b7a7e89dfd","size":25460400},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 16).bin","sha1":"3b87e3fc301d6a6ad1d468d28853fde5fb99bb9f","size":4233600},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 17).bin","sha1":"6a98a9ce4f961e379aca84ec6d62b6f9a36fb89a","size":5026224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 18).bin","sha1":"cd8ca74abba4fbe3f46359fc3cf2481f9f989fec","size":4518192},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 19).bin","sha1":"9b2d0cfde9b01ecd32989bf6cd2742dcd2ef6539","size":3833760},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 20).bin","sha1":"9c8b54c5a5f353d1db510c051a1a61359dd7d133","size":3993696},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 21).bin","sha1":"ae84d729b571cf07bfc767b131602e6cfc926f1e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":["^Cannot open BIOS file ","^BIOS file \".*\" is of an incorrect size\\.","^BIOS file \".*\" could not be fully read"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"5edec5180d1c04dc0ead1e5fbbc7d6d53cc23fdb","shows":"the SEGA SATURN logo of the Japanese BIOS","stage":"bios"},{"sha1":"dcd45679fcd31a423d0e54690e89b52f417d8728","shows":"SEGA, produced by or under license from Sega Enterprises","stage":"bios"},{"sha1":"7efe0a96245086d186a702a253525614d03f01f4","shows":"NOW LOADING","stage":"game"},{"sha1":"79894146225fefecb7db22b6aa296cb035a8d8ae","shows":"the Taito logo on white, CREDIT 9","stage":"game"},{"sha1":"475fce75c7c581b7367ac1a4adaa0aadc18afab1","shows":"GAME OVER, press 1P or 2P start button","stage":"game"},{"sha1":"f610c613f723fa640250121d6086b5e2c53b695c","shows":"the Puzzle Bobble 2X title, press start button","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f776638Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.84,2.87,2.83],"load_before":[2.72,2.85,2.83],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-89ddb49d60ae","inputs":{"content":{"label":"Puzzle Bobble 2X (Japan) (2M1, 2MB1)","sha1":"b962ec9148a189239810a10677dcba073983733f","size":2756,"tracks":[{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 01).bin","sha1":"c58ceebc042ebd552c585b05a4bc88d69c6c995e","size":14309568},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 02).bin","sha1":"fe6d188a60087c54934040006727ec610357f5f9","size":28993104},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 03).bin","sha1":"0742c4d1eed7cee765108e78cd49a007a538b635","size":31911936},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 04).bin","sha1":"c9dd1e71937eeffe4e47742828fc07e849a0922b","size":29588160},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 05).bin","sha1":"68c4a10b6794f024e2c02a9e659b5c1c43e88791","size":30484272},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 06).bin","sha1":"edf058feaad0d4651d5d40e7bd4e70d57ba793a8","size":30865296},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 07).bin","sha1":"643806f6761fbafe8eebff5f58bae24b5f8276fc","size":29134224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 08).bin","sha1":"aeb0f26452da450a10b3089626704a74d6f76474","size":30931152},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 09).bin","sha1":"d51239d527f1b1f0e31d849def27aaea07e99185","size":13345248},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 10).bin","sha1":"79ea313379268e07001114a1435bd5e8bf1c4d92","size":12726672},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 11).bin","sha1":"2876deda3588bf6472fec102d9d33faf2b6adcc8","size":1869840},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 12).bin","sha1":"f5bbaec49002f44f48fd2f47d8f810966464beeb","size":1691088},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 13).bin","sha1":"692a5510b8b39dc2e5949b86e6585958f51519e0","size":13055952},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 14).bin","sha1":"e71a26e1045734f1da56066003ef673f88453433","size":10031280},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 15).bin","sha1":"cb1b521cd45a10584fb7fdfb8a2659b7a7e89dfd","size":25460400},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 16).bin","sha1":"3b87e3fc301d6a6ad1d468d28853fde5fb99bb9f","size":4233600},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 17).bin","sha1":"6a98a9ce4f961e379aca84ec6d62b6f9a36fb89a","size":5026224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 18).bin","sha1":"cd8ca74abba4fbe3f46359fc3cf2481f9f989fec","size":4518192},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 19).bin","sha1":"9b2d0cfde9b01ecd32989bf6cd2742dcd2ef6539","size":3833760},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 20).bin","sha1":"9c8b54c5a5f353d1db510c051a1a61359dd7d133","size":3993696},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 21).bin","sha1":"ae84d729b571cf07bfc767b131602e6cfc926f1e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":["^Cannot open BIOS file ","^BIOS file \".*\" is of an incorrect size\\.","^BIOS file \".*\" could not be fully read"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"5edec5180d1c04dc0ead1e5fbbc7d6d53cc23fdb","shows":"the SEGA SATURN logo of the Japanese BIOS","stage":"bios"},{"sha1":"dcd45679fcd31a423d0e54690e89b52f417d8728","shows":"SEGA, produced by or under license from Sega Enterprises","stage":"bios"},{"sha1":"7efe0a96245086d186a702a253525614d03f01f4","shows":"NOW LOADING","stage":"game"},{"sha1":"79894146225fefecb7db22b6aa296cb035a8d8ae","shows":"the Taito logo on white, CREDIT 9","stage":"game"},{"sha1":"475fce75c7c581b7367ac1a4adaa0aadc18afab1","shows":"GAME OVER, press 1P or 2P start button","stage":"game"},{"sha1":"f610c613f723fa640250121d6086b5e2c53b695c","shows":"the Puzzle Bobble 2X title, press start button","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":null,"repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":["default: repetition 0: retro_load_game returned false"],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.68,2.8,2.81],"load_before":[2.68,2.8,2.81],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-675b7b6ec8f4","inputs":{"content":{"label":"Puzzle Bobble 2X (Japan) (2M1, 2MB1)","sha1":"b962ec9148a189239810a10677dcba073983733f","size":2756,"tracks":[{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 01).bin","sha1":"c58ceebc042ebd552c585b05a4bc88d69c6c995e","size":14309568},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 02).bin","sha1":"fe6d188a60087c54934040006727ec610357f5f9","size":28993104},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 03).bin","sha1":"0742c4d1eed7cee765108e78cd49a007a538b635","size":31911936},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 04).bin","sha1":"c9dd1e71937eeffe4e47742828fc07e849a0922b","size":29588160},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 05).bin","sha1":"68c4a10b6794f024e2c02a9e659b5c1c43e88791","size":30484272},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 06).bin","sha1":"edf058feaad0d4651d5d40e7bd4e70d57ba793a8","size":30865296},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 07).bin","sha1":"643806f6761fbafe8eebff5f58bae24b5f8276fc","size":29134224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 08).bin","sha1":"aeb0f26452da450a10b3089626704a74d6f76474","size":30931152},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 09).bin","sha1":"d51239d527f1b1f0e31d849def27aaea07e99185","size":13345248},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 10).bin","sha1":"79ea313379268e07001114a1435bd5e8bf1c4d92","size":12726672},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 11).bin","sha1":"2876deda3588bf6472fec102d9d33faf2b6adcc8","size":1869840},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 12).bin","sha1":"f5bbaec49002f44f48fd2f47d8f810966464beeb","size":1691088},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 13).bin","sha1":"692a5510b8b39dc2e5949b86e6585958f51519e0","size":13055952},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 14).bin","sha1":"e71a26e1045734f1da56066003ef673f88453433","size":10031280},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 15).bin","sha1":"cb1b521cd45a10584fb7fdfb8a2659b7a7e89dfd","size":25460400},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 16).bin","sha1":"3b87e3fc301d6a6ad1d468d28853fde5fb99bb9f","size":4233600},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 17).bin","sha1":"6a98a9ce4f961e379aca84ec6d62b6f9a36fb89a","size":5026224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 18).bin","sha1":"cd8ca74abba4fbe3f46359fc3cf2481f9f989fec","size":4518192},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 19).bin","sha1":"9b2d0cfde9b01ecd32989bf6cd2742dcd2ef6539","size":3833760},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 20).bin","sha1":"9c8b54c5a5f353d1db510c051a1a61359dd7d133","size":3993696},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 21).bin","sha1":"ae84d729b571cf07bfc767b131602e6cfc926f1e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":["^Cannot open BIOS file ","^BIOS file \".*\" is of an incorrect size\\.","^BIOS file \".*\" could not be fully read"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"5edec5180d1c04dc0ead1e5fbbc7d6d53cc23fdb","shows":"the SEGA SATURN logo of the Japanese BIOS","stage":"bios"},{"sha1":"dcd45679fcd31a423d0e54690e89b52f417d8728","shows":"SEGA, produced by or under license from Sega Enterprises","stage":"bios"},{"sha1":"7efe0a96245086d186a702a253525614d03f01f4","shows":"NOW LOADING","stage":"game"},{"sha1":"79894146225fefecb7db22b6aa296cb035a8d8ae","shows":"the Taito logo on white, CREDIT 9","stage":"game"},{"sha1":"475fce75c7c581b7367ac1a4adaa0aadc18afab1","shows":"GAME OVER, press 1P or 2P start button","stage":"game"},{"sha1":"f610c613f723fa640250121d6086b5e2c53b695c","shows":"the Puzzle Bobble 2X title, press start button","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.98,2.91,2.85],"load_before":[2.97,2.9,2.85],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-b6efc273ad68","inputs":{"content":{"label":"Puzzle Bobble 2X (Japan) (2M1, 2MB1)","sha1":"b962ec9148a189239810a10677dcba073983733f","size":2756,"tracks":[{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 01).bin","sha1":"c58ceebc042ebd552c585b05a4bc88d69c6c995e","size":14309568},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 02).bin","sha1":"fe6d188a60087c54934040006727ec610357f5f9","size":28993104},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 03).bin","sha1":"0742c4d1eed7cee765108e78cd49a007a538b635","size":31911936},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 04).bin","sha1":"c9dd1e71937eeffe4e47742828fc07e849a0922b","size":29588160},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 05).bin","sha1":"68c4a10b6794f024e2c02a9e659b5c1c43e88791","size":30484272},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 06).bin","sha1":"edf058feaad0d4651d5d40e7bd4e70d57ba793a8","size":30865296},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 07).bin","sha1":"643806f6761fbafe8eebff5f58bae24b5f8276fc","size":29134224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 08).bin","sha1":"aeb0f26452da450a10b3089626704a74d6f76474","size":30931152},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 09).bin","sha1":"d51239d527f1b1f0e31d849def27aaea07e99185","size":13345248},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 10).bin","sha1":"79ea313379268e07001114a1435bd5e8bf1c4d92","size":12726672},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 11).bin","sha1":"2876deda3588bf6472fec102d9d33faf2b6adcc8","size":1869840},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 12).bin","sha1":"f5bbaec49002f44f48fd2f47d8f810966464beeb","size":1691088},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 13).bin","sha1":"692a5510b8b39dc2e5949b86e6585958f51519e0","size":13055952},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 14).bin","sha1":"e71a26e1045734f1da56066003ef673f88453433","size":10031280},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 15).bin","sha1":"cb1b521cd45a10584fb7fdfb8a2659b7a7e89dfd","size":25460400},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 16).bin","sha1":"3b87e3fc301d6a6ad1d468d28853fde5fb99bb9f","size":4233600},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 17).bin","sha1":"6a98a9ce4f961e379aca84ec6d62b6f9a36fb89a","size":5026224},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 18).bin","sha1":"cd8ca74abba4fbe3f46359fc3cf2481f9f989fec","size":4518192},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 19).bin","sha1":"9b2d0cfde9b01ecd32989bf6cd2742dcd2ef6539","size":3833760},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 20).bin","sha1":"9c8b54c5a5f353d1db510c051a1a61359dd7d133","size":3993696},{"file":"Puzzle Bobble 2X (Japan) (2M1, 2MB1) (Track 21).bin","sha1":"ae84d729b571cf07bfc767b131602e6cfc926f1e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":["^Cannot open BIOS file ","^BIOS file \".*\" is of an incorrect size\\.","^BIOS file \".*\" could not be fully read"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"5edec5180d1c04dc0ead1e5fbbc7d6d53cc23fdb","shows":"the SEGA SATURN logo of the Japanese BIOS","stage":"bios"},{"sha1":"dcd45679fcd31a423d0e54690e89b52f417d8728","shows":"SEGA, produced by or under license from Sega Enterprises","stage":"bios"},{"sha1":"7efe0a96245086d186a702a253525614d03f01f4","shows":"NOW LOADING","stage":"game"},{"sha1":"79894146225fefecb7db22b6aa296cb035a8d8ae","shows":"the Taito logo on white, CREDIT 9","stage":"game"},{"sha1":"475fce75c7c581b7367ac1a4adaa0aadc18afab1","shows":"GAME OVER, press 1P or 2P start button","stage":"game"},{"sha1":"f610c613f723fa640250121d6086b5e2c53b695c","shows":"the Puzzle Bobble 2X title, press start button","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.97,2.89,2.85],"load_before":[2.7,2.83,2.83],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-d6092b9582ce","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"782b93d04ecb9da4cc534489e67feeac7ea9dc78","size":2733,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"8980b4ff48f62af7c759326084c31886ebe3c6c9","size":14323680},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"5dff4c40aea9544ea439e46598f9f28f3ccd3fe4","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"85e6f4f8d99798ef705f40b1eef64154b56a3719","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 16).bin","sha1":"4e267443c95197df9f169047b89e6763997676da","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 21).bin","sha1":"e17390359629cbb835909c086ca6e5c048af1f43","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":["^Cannot open BIOS file ","^BIOS file \".*\" is of an incorrect size\\.","^BIOS file \".*\" could not be fully read"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"f6f6ad7714da4b7c32a7736276c8cba7ef9d45d0","shows":"the SEGA SATURN globe logo","stage":"bios"},{"sha1":"dcd45679fcd31a423d0e54690e89b52f417d8728","shows":"SEGA, produced by or under license from Sega Enterprises","stage":"bios"},{"sha1":"e0b0fd36c4da2579b509934b8fe010f4741edfa5","shows":"NOW LOADING","stage":"game"},{"sha1":"97f62d0835bc7f27b660f330d794c149c50c5716","shows":"the Acclaim and Taito credits text, CREDIT 9","stage":"game"},{"sha1":"0cd323a8a93adec3a2173549300acbf9a3fe5596","shows":"the Acclaim logo, CREDIT 9","stage":"game"},{"sha1":"76ed20462b9f45e247611fa77feff69e47052875","shows":"the Taito logo on white, CREDIT 9","stage":"game"},{"sha1":"e90793d79a1c815cd74e7a56f0e9d8f124bfc547","shows":"the Bust-A-Move 2 title, press start button","stage":"game"}]Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.74,2.8,2.82],"load_before":[2.65,2.79,2.82],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-eefba3481d94","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"782b93d04ecb9da4cc534489e67feeac7ea9dc78","size":2733,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"8980b4ff48f62af7c759326084c31886ebe3c6c9","size":14323680},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"5dff4c40aea9544ea439e46598f9f28f3ccd3fe4","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"85e6f4f8d99798ef705f40b1eef64154b56a3719","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 16).bin","sha1":"4e267443c95197df9f169047b89e6763997676da","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 21).bin","sha1":"e17390359629cbb835909c086ca6e5c048af1f43","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":["^Cannot open BIOS file ","^BIOS file \".*\" is of an incorrect size\\.","^BIOS file \".*\" could not be fully read"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"f6f6ad7714da4b7c32a7736276c8cba7ef9d45d0","shows":"the SEGA SATURN globe logo","stage":"bios"},{"sha1":"dcd45679fcd31a423d0e54690e89b52f417d8728","shows":"SEGA, produced by or under license from Sega Enterprises","stage":"bios"},{"sha1":"e0b0fd36c4da2579b509934b8fe010f4741edfa5","shows":"NOW LOADING","stage":"game"},{"sha1":"97f62d0835bc7f27b660f330d794c149c50c5716","shows":"the Acclaim and Taito credits text, CREDIT 9","stage":"game"},{"sha1":"0cd323a8a93adec3a2173549300acbf9a3fe5596","shows":"the Acclaim logo, CREDIT 9","stage":"game"},{"sha1":"76ed20462b9f45e247611fa77feff69e47052875","shows":"the Taito logo on white, CREDIT 9","stage":"game"},{"sha1":"e90793d79a1c815cd74e7a56f0e9d8f124bfc547","shows":"the Bust-A-Move 2 title, press start button","stage":"game"}]Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":null,"repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":["default: repetition 0: retro_load_game returned false"],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.34,2.69,2.78],"load_before":[2.34,2.69,2.78],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-32e38ac34c5e","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"782b93d04ecb9da4cc534489e67feeac7ea9dc78","size":2733,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"8980b4ff48f62af7c759326084c31886ebe3c6c9","size":14323680},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"5dff4c40aea9544ea439e46598f9f28f3ccd3fe4","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"85e6f4f8d99798ef705f40b1eef64154b56a3719","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 16).bin","sha1":"4e267443c95197df9f169047b89e6763997676da","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 21).bin","sha1":"e17390359629cbb835909c086ca6e5c048af1f43","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":["^Cannot open BIOS file ","^BIOS file \".*\" is of an incorrect size\\.","^BIOS file \".*\" could not be fully read"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"f6f6ad7714da4b7c32a7736276c8cba7ef9d45d0","shows":"the SEGA SATURN globe logo","stage":"bios"},{"sha1":"dcd45679fcd31a423d0e54690e89b52f417d8728","shows":"SEGA, produced by or under license from Sega Enterprises","stage":"bios"},{"sha1":"e0b0fd36c4da2579b509934b8fe010f4741edfa5","shows":"NOW LOADING","stage":"game"},{"sha1":"97f62d0835bc7f27b660f330d794c149c50c5716","shows":"the Acclaim and Taito credits text, CREDIT 9","stage":"game"},{"sha1":"0cd323a8a93adec3a2173549300acbf9a3fe5596","shows":"the Acclaim logo, CREDIT 9","stage":"game"},{"sha1":"76ed20462b9f45e247611fa77feff69e47052875","shows":"the Taito logo on white, CREDIT 9","stage":"game"},{"sha1":"e90793d79a1c815cd74e7a56f0e9d8f124bfc547","shows":"the Bust-ALine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.71,2.73,2.79],"load_before":[2.65,2.72,2.79],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-67d0345a9ef0","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"782b93d04ecb9da4cc534489e67feeac7ea9dc78","size":2733,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"8980b4ff48f62af7c759326084c31886ebe3c6c9","size":14323680},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"5dff4c40aea9544ea439e46598f9f28f3ccd3fe4","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"85e6f4f8d99798ef705f40b1eef64154b56a3719","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 16).bin","sha1":"4e267443c95197df9f169047b89e6763997676da","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 21).bin","sha1":"e17390359629cbb835909c086ca6e5c048af1f43","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":["^Cannot open BIOS file ","^BIOS file \".*\" is of an incorrect size\\.","^BIOS file \".*\" could not be fully read"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"f6f6ad7714da4b7c32a7736276c8cba7ef9d45d0","shows":"the SEGA SATURN globe logo","stage":"bios"},{"sha1":"dcd45679fcd31a423d0e54690e89b52f417d8728","shows":"SEGA, produced by or under license from Sega Enterprises","stage":"bios"},{"sha1":"e0b0fd36c4da2579b509934b8fe010f4741edfa5","shows":"NOW LOADING","stage":"game"},{"sha1":"97f62d0835bc7f27b660f330d794c149c50c5716","shows":"the Acclaim and Taito credits text, CREDIT 9","stage":"game"},{"sha1":"0cd323a8a93adec3a2173549300acbf9a3fe5596","shows":"the Acclaim logo, CREDIT 9","stage":"game"},{"sha1":"76ed20462b9f45e247611fa77feff69e47052875","shows":"the Taito logo on white, CREDIT 9","stage":"game"},{"sha1":"e90793d79a1c815cd74e7a56f0e9d8f124bfc547","shows":"the Bust-A-Move 2 title, press start button","stage":"game"}Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.59,2.94,2.93],"load_before":[2.35,2.92,2.93],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-ba104ca40f86","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"9298fabcdd797272c8c993abc81fcdd51a4e7830","size":2796,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"37fb0db994cf91f3ef34059fed47974c862d77ba","size":14321328},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"b7fd2069e9fe2c468f5b2d323f6383e72d4d5427","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"1c359b0a80d57f500c76960c539fc6e2ada9e912","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 16).bin","sha1":"531e3397ae1d10ea66f775585ac284a3daf31e3d","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 21).bin","sha1":"ff8de13a8a75eb20a0393ad17053395cb7f3934e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":["^Cannot open BIOS file ","^BIOS file \".*\" is of an incorrect size\\.","^BIOS file \".*\" could not be fully read"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"2d870b2352923df4b2563f75c8a01a3d6dcb4237","shows":"the SEGA SATURN globe logo","stage":"bios"},{"sha1":"95410b3a4a9f69ae981e2774c55574886efa67ea","shows":"SEGA, produced by or under license from Sega Enterprises","stage":"bios"},{"sha1":"4d426aec90be9bff76e2d32da0437d91f9880950","shows":"NOW LOADING","stage":"game"},{"sha1":"5bfbc97567caa32bad7489acc6c9a4f3f65ed863","shows":"the Acclaim and Taito credits text, CREDIT 9","stage":"game"},{"sha1":"8af02ae2f2f0864657a3c7a68293a4da163000d6","shows":"the Acclaim logo, CREDIT 9","stage":"game"},{"sha1":"e3245a31197fa028c2da63f387f58a38e010c98d","shows":"the Taito logo on white, CREDIT 9","stage":"game"},{"sha1":"9ae4dbf2ded891887635634d224dedccf176c1a0","shLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.66,2.88,2.91],"load_before":[2.57,2.88,2.91],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-925d625ff52c","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"9298fabcdd797272c8c993abc81fcdd51a4e7830","size":2796,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"37fb0db994cf91f3ef34059fed47974c862d77ba","size":14321328},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"b7fd2069e9fe2c468f5b2d323f6383e72d4d5427","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"1c359b0a80d57f500c76960c539fc6e2ada9e912","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 16).bin","sha1":"531e3397ae1d10ea66f775585ac284a3daf31e3d","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 21).bin","sha1":"ff8de13a8a75eb20a0393ad17053395cb7f3934e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":["^Cannot open BIOS file ","^BIOS file \".*\" is of an incorrect size\\.","^BIOS file \".*\" could not be fully read"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"2d870b2352923df4b2563f75c8a01a3d6dcb4237","shows":"the SEGA SATURN globe logo","stage":"bios"},{"sha1":"95410b3a4a9f69ae981e2774c55574886efa67ea","shows":"SEGA, produced by or under license from Sega Enterprises","stage":"bios"},{"sha1":"4d426aec90be9bff76e2d32da0437d91f9880950","shows":"NOW LOADING","stage":"game"},{"sha1":"5bfbc97567caa32bad7489acc6c9a4f3f65ed863","shows":"the Acclaim and Taito credits text, CREDIT 9","stage":"game"},{"sha1":"8af02ae2f2f0864657a3c7a68293a4da163000d6","shows":"the Acclaim logo, CREDIT 9","stage":"game"},{"sha1":"e3245a31197fa028c2da63f387f58a38e010c98d","shows":"the Taito logo on white, CREDIT 9","stage":"game"},{"sha1":"9ae4dbf2ded891887635634d224dedccf176c1a0","shLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":null,"repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":["default: repetition 0: retro_load_game returned false"],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.49,2.86,2.91],"load_before":[2.49,2.86,2.91],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-3d384f96701a","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"9298fabcdd797272c8c993abc81fcdd51a4e7830","size":2796,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"37fb0db994cf91f3ef34059fed47974c862d77ba","size":14321328},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"b7fd2069e9fe2c468f5b2d323f6383e72d4d5427","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"1c359b0a80d57f500c76960c539fc6e2ada9e912","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 16).bin","sha1":"531e3397ae1d10ea66f775585ac284a3daf31e3d","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 21).bin","sha1":"ff8de13a8a75eb20a0393ad17053395cb7f3934e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":["^Cannot open BIOS file ","^BIOS file \".*\" is of an incorrect size\\.","^BIOS file \".*\" could not be fully read"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"2d870b2352923df4b2563f75c8a01a3d6dcb4237","shows":"the SEGA SATURN globe logo","stage":"bios"},{"sha1":"95410b3a4a9f69ae981e2774c55574886efa67ea","shows":"SEGA, produced by or under license from Sega Enterprises","stage":"bios"},{"sha1":"4d426aec90be9bff76e2d32da0437d91f9880950","shows":"NOW LOADING","stage":"game"},{"sha1":"5bfbc97567caa32bad7489acc6c9a4f3f65ed863","shows":"the Acclaim and Taito credits text, CREDIT 9","stage":"game"},{"sha1":"8af02ae2f2f0864657a3c7a68293a4da163000d6","shows":"the Acclaim logo, CREDIT 9","stage":"game"},{"sha1":"e3245a31197fa028c2da63f387f58a38e010c98d","shows":"the Taito logo on white, CREDIT 9","stage":"game"},{"shLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/mednafen_saturn_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"mednafen_saturn_libretro.so","library_name":"Beetle Saturn","library_version":"v1.32.1","repo":null,"sha256":"2cef16a3444d45032ad0ae0d523cbff0e5655f4bc15eb33406c81212f54dc9c1"},"emulator":"beetle_saturn","flags":["load average reached 3.8 (threshold 3.0)"],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.8,3.12,3.0],"load_before":[2.98,2.94,2.94],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-1405c2a3a391","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"9298fabcdd797272c8c993abc81fcdd51a4e7830","size":2796,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"37fb0db994cf91f3ef34059fed47974c862d77ba","size":14321328},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"b7fd2069e9fe2c468f5b2d323f6383e72d4d5427","size":28993104},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"38352ad9463cab6971482bd31e30de8c0dc6658d","size":31909584},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"f9ed0cb0b4bca6be2485947353ceb7d523b0e30e","size":29590512},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"1c359b0a80d57f500c76960c539fc6e2ada9e912","size":30481920},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"8c34e28de8b79c4374482bf7225ab735fd52e858","size":30867648},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"fa3c67b731c806d37b7dc08fbfc0771e1d0eccd8","size":29131872},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"2f895d4b71ce08a0dbd9ad2a19d0e879412ddbed","size":30933504},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 16).bin","sha1":"531e3397ae1d10ea66f775585ac284a3daf31e3d","size":4235952},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 17).bin","sha1":"88ca0bcc8170ff09392375ad7c2516cb9a45337e","size":5026224},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 18).bin","sha1":"64225ae5c97569a6f664a67c6ebeefbe20e3185d","size":4518192},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 19).bin","sha1":"388351d43474f9c97a9e32b63e197cc961263249","size":3833760},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 20).bin","sha1":"84e45bd83ad00137946cd7ab49b244fc5924ff41","size":3993696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 21).bin","sha1":"ff8de13a8a75eb20a0393ad17053395cb7f3934e","size":1138368}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":["^Cannot open BIOS file ","^BIOS file \".*\" is of an incorrect size\\.","^BIOS file \".*\" could not be fully read"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"2d870b2352923df4b2563f75c8a01a3d6dcb4237","shows":"the SEGA SATURN globe logo","stage":"bios"},{"sha1":"95410b3a4a9f69ae981e2774c55574886efa67ea","shows":"SEGA, produced by or under license from Sega Enterprises","stage":"bios"},{"sha1":"4d426aec90be9bff76e2d32da0437d91f9880950","shows":"NOW LOADING","stage":"game"},{"sha1":"5bfbc97567caa32bad7489acc6c9a4f3f65ed863","shows":"the Acclaim and Taito credits text, CREDIT 9","stage":"game"},{"sha1":"8af02ae2f2f0864657a3c7a68293a4da163000d6","shows":"the Acclaim logo, CREDIT 9","stage":"game"},{"sha1":"e3245a31197fa028c2da63f387f58a38e010c98d","shows":"the Taito logo on white, CREDIT 9","stage":"game"},{"sha1":"9ae4dLine truncated
|
||||
@@ -1,2 +1,6 @@
|
||||
{"counts":{"done":43,"failed":0,"pending":5},"detail":"","ended_at":"2026-10-27T11:08:32+00:00","failed":[],"findings":{"applied":6,"open":1},"id":"2026-10-27-e3d95336e522","pending_reasons":{"standalone":5},"records":["2026-10-27-21f4865f4bc7","2026-10-27-f2ecd7ed71b5","2026-10-27-48269ae11777","2026-10-27-ba941702c6c2","2026-10-27-fc95254312c0","2026-10-27-5a191f2b540b","2026-10-27-12ba45024f8c","2026-10-27-a7c1a301bdb0","2026-10-27-aacf8d392722","2026-10-27-e15f6d1ba1bd","2026-10-27-c340167e5395","2026-10-27-be71241ad606","2026-10-27-5d2017878651","2026-10-27-50543bf5743c","2026-10-27-ca1f49599ca1","2026-10-27-ed4bfe08b830","2026-10-27-9e96d0551310","2026-10-27-357486f7bd25","2026-10-27-cb014f1f3141","2026-10-27-28e1dc0dd01d","2026-10-27-e7b6b7322029","2026-10-27-9e224aa0ae6e","2026-10-27-44708a334f8a","2026-10-27-c72381d97b6e","2026-10-27-ab2001161aab","2026-10-27-18a314355341","2026-10-27-69bcb2298491","2026-10-27-cfc47bbfcd02","2026-10-27-5dd865291b4a","2026-10-27-9c1fd688e9bb","2026-10-27-a1d61db66051","2026-10-27-cb5ace8c42f9","2026-10-27-e9eeba54945e","2026-10-27-ece16d90b929","2026-10-27-79c00b29bce6","2026-10-27-f15992a9448d","2026-10-27-fbb3ba6b6823","2026-10-27-2138f64f1283","2026-10-27-15fc06931bec","2026-10-27-dc8ff3969ec2","2026-10-27-f9bb455a6001","2026-10-27-6b3344815ce2","2026-10-27-fab739d8fbb6"],"result":"complete","schema_version":1,"started_at":"2026-10-27T10:53:39+00:00"}
|
||||
{"counts":{"done":43,"failed":0,"pending":5},"detail":"","ended_at":"2026-10-27T11:23:25+00:00","failed":[],"findings":{},"id":"2026-10-27-291e138f7951","pending_reasons":{"standalone":5},"records":["2026-10-27-78b237564589","2026-10-27-b6d0ce4dfd7e","2026-10-27-f509b10a729f","2026-10-27-0b5d6202b40b","2026-10-27-451fadc750e0"],"result":"complete","schema_version":1,"started_at":"2026-10-27T11:20:08+00:00"}
|
||||
{"counts":{"done":71,"failed":0,"pending":5},"detail":"interrupted","ended_at":"2026-10-27T20:00:12+00:00","failed":[],"findings":{"open":4},"id":"2026-10-27-bc891c6975a4","pending_reasons":{"standalone":5},"records":["2026-10-27-770ea8c50976","2026-10-27-ec1ab64f96d3","2026-10-27-cef6834e841e","2026-10-27-ea4ec7c5a150","2026-10-27-93b9283d7f83","2026-10-27-a6b0fc234e73","2026-10-27-3413cc9ccce1","2026-10-27-a704e3c242da","2026-10-27-aa2b85a5e248","2026-10-27-47c3dcceed98","2026-10-27-dc0b47c03169","2026-10-27-0f7f51c413c8","2026-10-27-fcce3b40a20a","2026-10-27-acd8a71b32f8","2026-10-27-173e7612bd3a","2026-10-27-2b5b8cbe359a","2026-10-27-a67e729b8f42","2026-10-27-1d4eb1daebe5","2026-10-27-ba3e1259ac73","2026-10-27-f681ea946c3d","2026-10-27-b43c5feca378","2026-10-27-1a14651aeda0"],"result":"stopped","schema_version":1,"started_at":"2026-10-27T17:16:45+00:00"}
|
||||
{"counts":{"done":71,"failed":0,"pending":5},"detail":"","ended_at":"2026-10-27T20:14:33+00:00","failed":[],"findings":{},"id":"2026-10-27-fe3a2c08e71f","pending_reasons":{"standalone":5},"records":[],"result":"complete","schema_version":1,"started_at":"2026-10-27T20:02:25+00:00"}
|
||||
{"counts":{"done":71,"failed":0,"pending":5},"detail":"","ended_at":"2026-10-27T20:26:02+00:00","failed":[],"findings":{"open":9},"id":"2026-10-27-239037676359","pending_reasons":{"standalone":5},"records":[],"result":"complete","schema_version":1,"started_at":"2026-10-27T20:16:56+00:00"}
|
||||
{"counts":{"done":71,"failed":0,"pending":5},"detail":"","ended_at":"2026-10-27T22:37:43+00:00","failed":[],"findings":{"open":5},"id":"2026-10-27-057005092426","pending_reasons":{"standalone":5},"records":["2026-10-27-a77a03177d4c","2026-10-27-607274136f7b","2026-10-27-3e3c65f720ea","2026-10-27-78e71c1d040e","2026-10-27-a04a27a077e5","2026-10-27-3199ec3ad9cb","2026-10-27-a794114cbc1e","2026-10-27-22b68cbb327c","2026-10-27-8c3d5fd2c86c","2026-10-27-ae6d4db96e73","2026-10-27-15e9760bb95e","2026-10-27-7542216aa3bd","2026-10-27-4678393fda88","2026-10-27-270352ad019b","2026-10-27-c1f4aa5d47cd","2026-10-27-6df289a23c5c","2026-10-27-a18c4388b3e3","2026-10-27-f9363c9e87f6","2026-10-27-f32a7015f425","2026-10-27-4a43ef19f385","2026-10-27-cf325cc7f394","2026-10-27-97e674b2e56e"],"result":"complete","schema_version":1,"started_at":"2026-10-27T21:35:47+00:00"}
|
||||
@@ -0,0 +1,2 @@
|
||||
{"check":{"claim":"DuckStation boots Bust-A-Move 2 - Arcade Edition (USA) only with scph5501.bin in its BIOS folder","method":"The DuckStation AppImage EmuDeck installs, with its BIOS folder holding nothing, then scph5501.bin as the collection holds it. Each variant runs twice from a fresh data folder for 90 seconds under Xvfb with the software renderer and no input, the screen sampled every 1.5 seconds. The verdict comes from the oracle and DuckStation's own BIOS error strings.","observable":"verdict","result":{"groups":[{"value":"hang","variants":["scph5501.bin-absent"]},{"value":"unknown","variants":["scph5501.bin"]}],"statement":"verdict takes 2 distinct values across 2 variants","status":"differs","verdicts":{"scph5501.bin":"unknown","scph5501.bin-absent":"hang"}},"variable":"scph5501.bin"},"core":{"artifact":"https://github.com/stenzek/duckstation/releases/download/preview/DuckStation-x64.AppImage","build_command":null,"commit":null,"compiler":null,"file":"DuckStation-x64.AppImage","library_name":"duckstation","library_version":"preview","repo":"https://github.com/stenzek/duckstation","sha256":"2d66d14d8f49a41eb144d6d6fff951e577530737b9e0d73e1e76bc93f807984f"},"emulator":"duckstation","flags":[],"frontend":{"commit":"6d3045cbb3e527b32f023c7f0d6b38bbeaa58cc6","script":"scripts/standalone_probe.py","script_modified":false,"script_sha256":"08f5eae9327217f4b59ea262b644587f7180186cb84152db36c39248af2cdf8f"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[1.58,1.75,2.3],"load_before":[2.49,2.54,2.74],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-9bc8fbcebc85","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":1,"frames":60,"joypad_ports":0,"observables":["verdict","screens","frame_hashes","uniform_frames"],"options":{"Audio.Backend":"Null","AutoUpdater.CheckAtStartup":"false","BIOS.SearchDirectory":"<bios>","Console.Region":"Auto","GPU.Renderer":"Software","Logging.LogLevel":"Info","Logging.LogToConsole":"true","Logging.LogToFile":"false","Main.ConfirmPowerOff":"false","Main.SetupWizardIncomplete":"false","Main.StartFullscreen":"true"},"oracle":{"bios_patterns":[],"error_patterns":["No\\ BIOS\\ image\\ found\\ for","No\\ BIOS\\ images\\ found","No\\ BIOS\\ images\\ were\\ found","Failed\\ to\\ open\\ BIOS"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"check","record_version":4,"recorded_at":"2026-10-27T22:06:37+00:00","subject":"duckstation-boots-bust-a-move-2-arcade-7d9a66ce","supersedes":null,"variants":[{"flags":[],"label":"scph5501.bin-absent","repetitions":[{"files_opened":[],"files_probed_absent":[],"frames":60,"isolation":"bwrap","library_name":"duckstation","loadeLine truncated
|
||||
{"check":{"claim":"DuckStation boots Bust-A-Move 2 - Arcade Edition (USA) only with scph5501.bin in its BIOS folder","method":"The DuckStation AppImage EmuDeck installs, with its BIOS folder holding nothing, then scph5501.bin as the collection holds it. Each variant runs twice from a fresh data folder for 90 seconds under Xvfb with the software renderer and no input, the screen sampled every 1.5 seconds. The verdict comes from the oracle and DuckStation's own BIOS error strings.","observable":"verdict","result":{"groups":[{"value":"hang","variants":["scph5501.bin-absent"]},{"value":"boots","variants":["scph5501.bin"]}],"statement":"verdict takes 2 distinct values across 2 variants","status":"differs","verdicts":{"scph5501.bin":"boots","scph5501.bin-absent":"hang"}},"variable":"scph5501.bin"},"core":{"artifact":"https://github.com/stenzek/duckstation/releases/download/preview/DuckStation-x64.AppImage","build_command":null,"commit":null,"compiler":null,"file":"DuckStation-x64.AppImage","library_name":"duckstation","library_version":"preview","repo":"https://github.com/stenzek/duckstation","sha256":"2d66d14d8f49a41eb144d6d6fff951e577530737b9e0d73e1e76bc93f807984f"},"emulator":"duckstation","flags":[],"frontend":{"commit":"f2f890602dcd1407a5c7a3a5f9c145caa383d843","script":"scripts/standalone_probe.py","script_modified":false,"script_sha256":"9b7886750216125d0d450997b2a51bd26774275ba66b2ab749597406a93a8ac7"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[1.8,1.93,2.15],"load_before":[2.95,2.56,2.42],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-3b139e9ffacf","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":1,"frames":60,"joypad_ports":0,"observables":["verdict","screens","frame_hashes","uniform_frames"],"options":{"Audio.Backend":"Null","AutoUpdater.CheckAtStartup":"false","BIOS.SearchDirectory":"<bios>","Console.Region":"Auto","GPU.Renderer":"Software","Logging.LogLevel":"Info","Logging.LogToConsole":"true","Logging.LogToFile":"false","Main.ConfirmPowerOff":"false","Main.SetupWizardIncomplete":"false","Main.StartFullscreen":"true"},"oracle":{"bios_patterns":[],"error_patterns":["No\\ BIOS\\ image\\ found\\ for","No\\ BIOS\\ images\\ found","No\\ BIOS\\ images\\ were\\ found","Failed\\ to\\ open\\ BIOS"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"7218f6facf5c27248b8dc9cff31d8b4aeb3b1829","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"d70b0e9e9e4e05eb54fb56d6adbab3afb753631a","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"f336e067bb644abaf2ab30462564a1baa037d58e","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"534459d74bac4644fe7d3f23689390026bbb6d1b","shows":"the Acclaim and Taito credLine truncated
|
||||
@@ -5,3 +5,23 @@
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"mednafen_psx_libretro.so","library_version":"0.9.44.1 7fea57a","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","evidence":["2026-10-27-5a191f2b540b"],"field":"aliases","file":"scph5501.bin","found_at":"2026-10-27T11:00:11+00:00","id":"2026-10-27-7057a71f3ca2","key":"beetle_psx/sony-playstation/scph5501.bin/aliases","profile_says":["SCPH5501.bin","SCPH-5501.bin","scph5503.bin","SCPH5503.bin","SCPH-5503.bin","scph7003.bin","SCPH7003.bin","SCPH-7003.bin","SCPH5501.BIN","SCPH-5501.BIN","SCPH5503.BIN"],"rule":"opened_other_name","run_shows":["SCPH5501.bin","SCPH-5501.bin","scph5503.bin","SCPH5503.bin","SCPH-5503.bin","scph7003.bin","SCPH7003.bin","SCPH-7003.bin","SCPH5501.BIN","SCPH-5501.BIN","SCPH5503.BIN","SCPH-5503.BIN"],"schema_version":1,"statement":"the core opened scph5501.bin under the name SCPH-5503.BIN","status":"applied","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"mednafen_psx_libretro.so","library_version":"0.9.44.1 7fea57a","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","evidence":["2026-10-27-12ba45024f8c"],"field":"aliases","file":"scph5501.bin","found_at":"2026-10-27T11:00:24+00:00","id":"2026-10-27-dddd4d6b58d1","key":"beetle_psx/sony-playstation/scph5501.bin/aliases","profile_says":["SCPH5501.bin","SCPH-5501.bin","scph5503.bin","SCPH5503.bin","SCPH-5503.bin","scph7003.bin","SCPH7003.bin","SCPH-7003.bin","SCPH5501.BIN","SCPH-5501.BIN","SCPH5503.BIN","SCPH-5503.BIN"],"rule":"opened_other_name","run_shows":["SCPH5501.bin","SCPH-5501.bin","scph5503.bin","SCPH5503.bin","SCPH-5503.bin","scph7003.bin","SCPH7003.bin","SCPH-7003.bin","SCPH5501.BIN","SCPH-5501.BIN","SCPH5503.BIN","SCPH-5503.BIN","SCPH7003.BIN"],"schema_version":1,"statement":"the core opened scph5501.bin under the name SCPH7003.BIN","status":"applied","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"mednafen_psx_libretro.so","library_version":"0.9.44.1 7fea57a","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","evidence":["2026-10-27-a7c1a301bdb0"],"field":"aliases","file":"scph5501.bin","found_at":"2026-10-27T11:00:38+00:00","id":"2026-10-27-c42f5017189c","key":"beetle_psx/sony-playstation/scph5501.bin/aliases","profile_says":["SCPH5501.bin","SCPH-5501.bin","scph5503.bin","SCPH5503.bin","SCPH-5503.bin","scph7003.bin","SCPH7003.bin","SCPH-7003.bin","SCPH5501.BIN","SCPH-5501.BIN","SCPH5503.BIN","SCPH-5503.BIN","SCPH7003.BIN"],"rule":"opened_other_name","run_shows":["SCPH5501.bin","SCPH-5501.bin","scph5503.bin","SCPH5503.bin","SCPH-5503.bin","scph7003.bin","SCPH7003.bin","SCPH-7003.bin","SCPH5501.BIN","SCPH-5501.BIN","SCPH5503.BIN","SCPH-5503.BIN","SCPH7003.BIN","SCPH-7003.BIN"],"schema_version":1,"statement":"the core opened scph5501.bin under the name SCPH-7003.BIN","status":"applied","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"mednafen_psx_libretro.so","library_version":"0.9.44.1 7fea57a","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","evidence":["2026-10-27-6e97b657aca7","2026-10-27-633751632c03"],"field":"validation","file":"scph5501.bin","found_at":"2026-10-27T15:04:15+00:00","id":"2026-10-27-ca32d9ac77f1","key":"beetle_psx/sony-playstation/scph5501.bin/validation","profile_says":["sha1"],"rule":"validation_contradicted","run_shows":["sha1"],"schema_version":1,"statement":"the core does not check the content and does not check the size of scph5501.bin: a same-size file of zeros is run, the profile declares validation ['sha1']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"swanstation_libretro.so","library_version":"1.0.0 631f0fb","sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","evidence":["2026-10-27-ba53cd101c61","2026-10-27-32f3ac2b6c57"],"field":"validation","file":"scph5501.bin","found_at":"2026-10-27T16:51:34+00:00","id":"2026-10-27-5641bbf019c7","key":"swanstation/sony-playstation/scph5501.bin/validation","profile_says":["size","md5"],"rule":"validation_contradicted","run_shows":["md5","size"],"schema_version":1,"statement":"the core does not check the content and checks the size of scph5501.bin: a same-size file of zeros is run, the profile declares validation ['md5', 'size']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"pcsx_rearmed_libretro.so","library_version":"r26 c881679","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","evidence":["2026-10-27-1d4eb1daebe5","2026-10-27-ba3e1259ac73"],"field":"validation","file":"scph1001.bin","found_at":"2026-10-27T18:24:36+00:00","id":"2026-10-27-20578b795099","key":"pcsx_rearmed/sony-playstation/scph1001.bin/validation","profile_says":["size"],"rule":"validation_contradicted","run_shows":["size"],"schema_version":1,"statement":"the core checks the content of scph1001.bin: a same-size file of zeros is refused, the profile declares validation ['size']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"pcsx_rearmed_libretro.so","library_version":"r26 c881679","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","evidence":["2026-10-27-1d4eb1daebe5","2026-10-27-f681ea946c3d"],"field":"validation","file":"scph101.bin","found_at":"2026-10-27T18:35:58+00:00","id":"2026-10-27-ced308ff0b5a","key":"pcsx_rearmed/sony-playstation/scph101.bin/validation","profile_says":["size"],"rule":"validation_contradicted","run_shows":["size"],"schema_version":1,"statement":"the core checks the content of scph101.bin: a same-size file of zeros is refused, the profile declares validation ['size']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"pcsx_rearmed_libretro.so","library_version":"r26 c881679","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","evidence":["2026-10-27-1d4eb1daebe5","2026-10-27-b43c5feca378"],"field":"validation","file":"scph5501.bin","found_at":"2026-10-27T19:19:18+00:00","id":"2026-10-27-9fdf3d71f979","key":"pcsx_rearmed/sony-playstation/scph5501.bin/validation","profile_says":["size"],"rule":"validation_contradicted","run_shows":["size"],"schema_version":1,"statement":"the core checks the content of scph5501.bin: a same-size file of zeros is refused, the profile declares validation ['size']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"pcsx_rearmed_libretro.so","library_version":"r26 c881679","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","evidence":["2026-10-27-1d4eb1daebe5","2026-10-27-1a14651aeda0"],"field":"validation","file":"scph7001.bin","found_at":"2026-10-27T19:30:36+00:00","id":"2026-10-27-b1ea7fe42fb6","key":"pcsx_rearmed/sony-playstation/scph7001.bin/validation","profile_says":["size"],"rule":"validation_contradicted","run_shows":["size"],"schema_version":1,"statement":"the core checks the content of scph7001.bin: a same-size file of zeros is refused, the profile declares validation ['size']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"mednafen_psx_libretro.so","library_version":"0.9.44.1 7fea57a","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","evidence":["2026-10-27-ec1ab64f96d3"],"field":"required","file":"scph5501.bin","found_at":"2026-10-27T20:25:02+00:00","id":"2026-10-27-6e6fa344fe49","key":"beetle_psx/sony-playstation/scph5501.bin/required","profile_says":true,"rule":"boots_without_file","run_shows":false,"schema_version":1,"statement":"the profile says scph5501.bin is required, and the core boots without it. The table settles hle_fallback from this run, not required","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"mednafen_psx_libretro.so","library_version":"0.9.44.1 7fea57a","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","evidence":["2026-10-27-ec1ab64f96d3","2026-10-27-3413cc9ccce1"],"field":"validation","file":"scph5501.bin","found_at":"2026-10-27T20:25:02+00:00","id":"2026-10-27-449caab41f22","key":"beetle_psx/sony-playstation/scph5501.bin/validation","profile_says":["sha1"],"rule":"validation_contradicted","run_shows":{"content":false,"size":false},"schema_version":1,"statement":"the core does not check the content and does not check the size of scph5501.bin: a same-size file of zeros is run, the profile declares validation ['sha1']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"mednafen_psx_hw_libretro.so","library_version":"0.9.44.1 7fea57a","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","evidence":["2026-10-27-47c3dcceed98"],"field":"required","file":"scph5501.bin","found_at":"2026-10-27T20:25:02+00:00","id":"2026-10-27-e4eac1cb1c32","key":"beetle_psx/sony-playstation/scph5501.bin/required","profile_says":true,"rule":"boots_without_file","run_shows":false,"schema_version":1,"statement":"the profile says scph5501.bin is required, and the core boots without it. The table settles hle_fallback from this run, not required","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"mednafen_psx_hw_libretro.so","library_version":"0.9.44.1 7fea57a","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","evidence":["2026-10-27-47c3dcceed98","2026-10-27-173e7612bd3a"],"field":"validation","file":"scph5501.bin","found_at":"2026-10-27T20:25:02+00:00","id":"2026-10-27-2b411fbdc0ba","key":"beetle_psx/sony-playstation/scph5501.bin/validation","profile_says":["sha1"],"rule":"validation_contradicted","run_shows":{"content":false,"size":false},"schema_version":1,"statement":"the core does not check the content and does not check the size of scph5501.bin: a same-size file of zeros is run, the profile declares validation ['sha1']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"pcsx_rearmed_libretro.so","library_version":"r26 c881679","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","evidence":["2026-10-27-1d4eb1daebe5","2026-10-27-ba3e1259ac73"],"field":"validation","file":"scph1001.bin","found_at":"2026-10-27T20:25:02+00:00","id":"2026-10-27-5f32cbcad6da","key":"pcsx_rearmed/sony-playstation/scph1001.bin/validation","profile_says":["size"],"rule":"validation_contradicted","run_shows":{"content":true,"size":null},"schema_version":1,"statement":"the core checks the content of scph1001.bin: a same-size file of zeros is refused, the profile declares validation ['size']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"pcsx_rearmed_libretro.so","library_version":"r26 c881679","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","evidence":["2026-10-27-1d4eb1daebe5","2026-10-27-f681ea946c3d"],"field":"validation","file":"scph101.bin","found_at":"2026-10-27T20:25:02+00:00","id":"2026-10-27-48ac87f469d2","key":"pcsx_rearmed/sony-playstation/scph101.bin/validation","profile_says":["size"],"rule":"validation_contradicted","run_shows":{"content":true,"size":null},"schema_version":1,"statement":"the core checks the content of scph101.bin: a same-size file of zeros is refused, the profile declares validation ['size']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"pcsx_rearmed_libretro.so","library_version":"r26 c881679","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","evidence":["2026-10-27-1d4eb1daebe5","2026-10-27-b43c5feca378"],"field":"validation","file":"scph5501.bin","found_at":"2026-10-27T20:25:02+00:00","id":"2026-10-27-5997289794e7","key":"pcsx_rearmed/sony-playstation/scph5501.bin/validation","profile_says":["size"],"rule":"validation_contradicted","run_shows":{"content":true,"size":null},"schema_version":1,"statement":"the core checks the content of scph5501.bin: a same-size file of zeros is refused, the profile declares validation ['size']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"pcsx_rearmed_libretro.so","library_version":"r26 c881679","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","evidence":["2026-10-27-1d4eb1daebe5","2026-10-27-1a14651aeda0"],"field":"validation","file":"scph7001.bin","found_at":"2026-10-27T20:25:02+00:00","id":"2026-10-27-11711552daa6","key":"pcsx_rearmed/sony-playstation/scph7001.bin/validation","profile_says":["size"],"rule":"validation_contradicted","run_shows":{"content":true,"size":null},"schema_version":1,"statement":"the core checks the content of scph7001.bin: a same-size file of zeros is refused, the profile declares validation ['size']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"swanstation_libretro.so","library_version":"1.0.0 631f0fb","sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","evidence":["2026-10-27-ba53cd101c61","2026-10-27-32f3ac2b6c57"],"field":"validation","file":"scph5501.bin","found_at":"2026-10-27T20:26:02+00:00","id":"2026-10-27-f04e50523b56","key":"swanstation/sony-playstation/scph5501.bin/validation","profile_says":["size","md5"],"rule":"validation_contradicted","run_shows":{"content":false,"size":true},"schema_version":1,"statement":"the core does not check the content and checks the size of scph5501.bin: a same-size file of zeros is run, the profile declares validation ['md5', 'size']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"mednafen_psx_libretro.so","library_version":"0.9.44.1 7fea57a","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","evidence":["2026-10-27-607274136f7b"],"field":"required","file":"scph5501.bin","found_at":"2026-10-27T21:56:40+00:00","id":"2026-10-27-02e23c16515c","key":"beetle_psx/sony-playstation/scph5501.bin/required","profile_says":true,"rule":"boots_without_file","run_shows":false,"schema_version":1,"statement":"the profile says scph5501.bin is required, and the core boots without it. The table settles hle_fallback from this run, not required","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"mednafen_psx_libretro.so","library_version":"0.9.44.1 7fea57a","sha256":"a89200443c0afa594e85e5e77630921d5e5b04ebf9c499597f3e6f1c947b0c87"},"emulator":"beetle_psx","evidence":["2026-10-27-607274136f7b","2026-10-27-a794114cbc1e"],"field":"validation","file":"scph5501.bin","found_at":"2026-10-27T21:56:40+00:00","id":"2026-10-27-4c88e4ed2d8f","key":"beetle_psx/sony-playstation/scph5501.bin/validation","profile_says":["sha1"],"rule":"validation_contradicted","run_shows":{"content":false,"size":false},"schema_version":1,"statement":"the core does not check the content and does not check the size of scph5501.bin: a same-size file of zeros is run, the profile declares validation ['sha1']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"mednafen_psx_hw_libretro.so","library_version":"0.9.44.1 7fea57a","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","evidence":["2026-10-27-ae6d4db96e73"],"field":"required","file":"scph5501.bin","found_at":"2026-10-27T22:23:18+00:00","id":"2026-10-27-8d97aa8e9320","key":"beetle_psx/sony-playstation/scph5501.bin/required","profile_says":true,"rule":"boots_without_file","run_shows":false,"schema_version":1,"statement":"the profile says scph5501.bin is required, and the core boots without it. The table settles hle_fallback from this run, not required","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"mednafen_psx_hw_libretro.so","library_version":"0.9.44.1 7fea57a","sha256":"d16c889c9f12bd3265edc3c9d4b0e6e24c1f244d1d8d475235f6a74e65e5b10b"},"emulator":"beetle_psx","evidence":["2026-10-27-ae6d4db96e73","2026-10-27-c1f4aa5d47cd"],"field":"validation","file":"scph5501.bin","found_at":"2026-10-27T22:23:18+00:00","id":"2026-10-27-6c5dd27808b8","key":"beetle_psx/sony-playstation/scph5501.bin/validation","profile_says":["sha1"],"rule":"validation_contradicted","run_shows":{"content":false,"size":false},"schema_version":1,"statement":"the core does not check the content and does not check the size of scph5501.bin: a same-size file of zeros is run, the profile declares validation ['sha1']","status":"open","system":"sony-playstation"}
|
||||
{"content":"Bust-A-Move 2 - Arcade Edition (USA)","core":{"file":"swanstation_libretro.so","library_version":"1.0.0 631f0fb","sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","evidence":["2026-10-27-f9363c9e87f6","2026-10-27-97e674b2e56e"],"field":"validation","file":"scph5501.bin","found_at":"2026-10-27T22:37:43+00:00","id":"2026-10-27-7becd3ea082b","key":"swanstation/sony-playstation/scph5501.bin/validation","profile_says":["size","md5"],"rule":"validation_contradicted","run_shows":{"content":false,"size":true},"schema_version":1,"statement":"the core does not check the content and checks the size of scph5501.bin: a same-size file of zeros is run, the profile declares validation ['md5', 'size']","status":"open","system":"sony-playstation"}
|
||||
@@ -8,3 +8,9 @@
|
||||
{"check":{"claim":"pcsx1 opens scph5501.bin as scph5501.bin","method":"scph5501.bin staged as scph5501.bin, against nothing there, 3600 frames of Bust-A-Move 2 - Arcade Edition (USA). The files the core opened are read from strace.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[10,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[20,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[30,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[40,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[50,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[60,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[70,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[80,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[90,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[100,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[110,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[120,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[130,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[140,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[150,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[160,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[170,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[180,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[190,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[200,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[210,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[220,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[230,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[240,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[250,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[260,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[270,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[280,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[290,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[300,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[310,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[320,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[330,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[340,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[350,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[360,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[370,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[380,"a7d9a3a92862d233a9af74e14c14a508b8d915d4"],[390,"078c7a10e070de51fb4f3180b943c516723f5c3e"],[400,"0235b8f6fb152b40ba0c2ad9f6bc41701f853bbb"],[410,"85405bb719fe159eabb0df33a9bfac0e6d5339e2"],[420,"6cda59da62a54e53f4412eb37ede5f9069cd4a38"],[430,"936896370c29052c4d7308cdee0482f965f638f1"],[440,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[450,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[460,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[470,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[480,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[490,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[500,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[510,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[520,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[530,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[540,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[550,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[560,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[570,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[580,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[590,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[600,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[610,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[620,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[630,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[640,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[650,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[660,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[670,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[680,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[690,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[700,"92b7d703db08b980e107a364666cca1929165b8c"],[710,"5117624156ea4de81605adbd552cd1dd21a9ce12"],[720,"b606e0a8f25e951ec900550948393fcc7624b36e"],[730,"8504922b2bc5a9040f42a341882272555e8699ee"],[740,"ded28c56212cc2d08976fb48127f1312bead4661"],[750,"194f4830c6b256dbb7c7719c7563473db678158a"],[760,"f56021b847f3b567f0af5632b429bd4cbfcb17f5"],[770,"a2112ba1401b86fcd4bfd7b00c7d73e023adb366"],[780,"f45803d94670fa4e3020d53eb8a9ff740669e48d"],[790,"0ec516319249a992c2f35d762bbb5da4d2da5be4"],[800,"00efdf1eda323da5943f325cd6ed9fb16783c2ad"],[810,"fe82d42ad21e0685f0867df0b34a46b8ae552e48"],[820,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[830,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[840,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[850,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[860,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[870,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[880,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[890,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[900,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[910,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[920,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[930,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[940,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[950,"af2a3131b550b44c268f6eca17ef32635c6e2fec"],[960,"d9680eb8cLine truncated
|
||||
{"check":{"claim":"pcsx1 opens scph7001.bin as scph7001.bin","method":"scph7001.bin staged as scph7001.bin, against nothing there, 3600 frames of Bust-A-Move 2 - Arcade Edition (USA). The files the core opened are read from strace.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[10,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[20,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[30,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[40,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[50,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[60,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[70,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[80,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[90,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[100,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[110,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[120,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[130,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[140,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[150,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[160,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[170,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[180,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[190,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[200,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[210,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[220,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[230,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[240,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[250,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[260,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[270,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[280,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[290,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[300,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[310,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[320,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[330,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[340,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[350,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[360,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[370,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[380,"a7d9a3a92862d233a9af74e14c14a508b8d915d4"],[390,"078c7a10e070de51fb4f3180b943c516723f5c3e"],[400,"0235b8f6fb152b40ba0c2ad9f6bc41701f853bbb"],[410,"85405bb719fe159eabb0df33a9bfac0e6d5339e2"],[420,"6cda59da62a54e53f4412eb37ede5f9069cd4a38"],[430,"936896370c29052c4d7308cdee0482f965f638f1"],[440,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[450,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[460,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[470,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[480,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[490,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[500,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[510,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[520,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[530,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[540,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[550,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[560,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[570,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[580,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[590,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[600,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[610,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[620,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[630,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[640,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[650,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[660,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[670,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[680,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[690,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[700,"92b7d703db08b980e107a364666cca1929165b8c"],[710,"5117624156ea4de81605adbd552cd1dd21a9ce12"],[720,"b606e0a8f25e951ec900550948393fcc7624b36e"],[730,"8504922b2bc5a9040f42a341882272555e8699ee"],[740,"ded28c56212cc2d08976fb48127f1312bead4661"],[750,"194f4830c6b256dbb7c7719c7563473db678158a"],[760,"f56021b847f3b567f0af5632b429bd4cbfcb17f5"],[770,"a2112ba1401b86fcd4bfd7b00c7d73e023adb366"],[780,"f45803d94670fa4e3020d53eb8a9ff740669e48d"],[790,"0ec516319249a992c2f35d762bbb5da4d2da5be4"],[800,"00efdf1eda323da5943f325cd6ed9fb16783c2ad"],[810,"fe82d42ad21e0685f0867df0b34a46b8ae552e48"],[820,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[830,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[840,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[850,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[860,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[870,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[880,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[890,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[900,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[910,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[920,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[930,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[940,"e10f642259f2906bb39ae07fcb4b5a36eae18287"],[950,"af2a3131b550b44c268f6eca17ef32635c6e2fec"],[960,"d9680eb8cLine truncated
|
||||
{"core":{"build_command":"make -f Makefile.libretro -j6 platform=unix on git archive (isolation: bwrap)","commit":"35dabb85ff3af6825820f54090d344945f65d24e","compiler":["GCC: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0"],"file":"pcsx1_libretro.so","library_name":"PCSX1","library_version":"r22","repo":"https://github.com/libretro/pcsx1-libretro","sha256":"2d6b63b537f4147fec585dcd14dc9d022d75608216569438f7c9ed7b9e8bce11"},"emulator":"pcsx1","flags":["default: repetition 1 disagrees with repetition 0 on state_sha1","default: repetition 2 disagrees with repetition 0 on state_sha1","default: repetition 3 disagrees with repetition 0 on state_sha1","default: repetition 4 disagrees with repetition 0 on state_sha1","load average reached 3.48 (threshold 3.0)"],"frontend":{"commit":"f5e98bfda60052f8a5e3249b6b5a6a4c6983248d","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"a3182429ef3e86a03d23ae76326cd4d7b33a12fd18d28ce60c7231fe8ba5fe6e"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.48,3.2,3.18],"load_before":[1.38,2.83,3.06],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-451fadc750e0","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":0,"frames":1800,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1"],"options":{},"presses":[],"repetitions":5,"warmup":600},"kind":"bench","record_version":3,"recorded_at":"2026-10-27T11:23:25+00:00","subject":"bench-pcsx1-bust-a-move-2-arcade-edition-usa","supersedes":null,"timing":{"fps":{"max":789.2269047309904,"mean":766.0268207419689,"median":783.6421325691891,"min":716.8835757587194,"raw":[785.7487831642285,789.2269047309904,783.6421325691891,716.8835757587194,754.6327074867173],"stdev":30.750541678196715},"ms_per_frame":{"max":1.3949266433418315,"mean":1.3071802872258964,"median":1.276092693895205,"min":1.2670627344373822,"raw":[1.2726713950137816,1.2670627344373822,1.276092693895205,1.3949266433418315,1.3251479694412813],"stdev":0.0542885364472984}},"variants":[{"flags":["repetition 1 disagrees with repetition 0 on state_sha1","repetition 2 disagrees with repetition 0 on state_sha1","repetition 3 disagrees with repetition 0 on state_sha1","repetition 4 disagrees with repetition 0 on state_sha1"],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"8":1},"files_opened":null,"files_probed_absent":null,"fps":785.7487831642285,"fps_nominal":60.0,"frames":1800,"input_pressed":0,"input_queries":76800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX1","library_version":"r22","loaded":true,"logs":[],"ms_per_frame":1.2726713950137816,"observables":{"audio_sha1":"1a6555e50f83e52783356a5e7f2d49ab4ac31ba2","frame_sha1":"1c47205c0383c6e66c872e7c571e35001910e53e","state_sha1":"e2208e13055e037a9c58dce85cc8949bLine truncated
|
||||
{"core":{"build_command":"make -f Makefile.libretro -j6 platform=unix on git archive (isolation: bwrap)","commit":"35dabb85ff3af6825820f54090d344945f65d24e","compiler":["GCC: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0"],"file":"pcsx1_libretro.so","library_name":"PCSX1","library_version":"r22","repo":"https://github.com/libretro/pcsx1-libretro","sha256":"2d6b63b537f4147fec585dcd14dc9d022d75608216569438f7c9ed7b9e8bce11"},"emulator":"pcsx1","flags":["default: repetition 1 disagrees with repetition 0 on state_sha1"],"frontend":{"commit":"38dd7401fdfbaa4ae98bda3ea901c80f24d78da7","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6f18a8ff979e4a5b182d164aae3448818be0ec5ec596df3db636afe9bae44266"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.4,3.24,4.09],"load_before":[2.31,3.27,4.11],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-2905a9dd4b0a","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"84a3435916d67c64d1d7a12305d7bea63dcf7f1467ba5cd775cd35c5887f9532"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T14:47:46+00:00","subject":"references-pcsx1-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":["repetition 1 disagrees with repetition 0 on state_sha1"],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"8":1},"files_opened":[{"path":"scph1001.bin","sha1_after":"10155d8d6e6e832d6ea66db9bc098321fb5e8ebf","sha1_staged":"10155d8d6e6e832d6ea66db9bc098321fb5e8ebf"}],"files_probed_absent":[],"fps":275.26207667417964,"fps_nominal":60.0,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX1","library_version":"r22","loaded":true,"logs":[],"ms_per_frame":3.632901459156225,"observables":{"audio_sha1":"a22c3c99e06c7cf6ea56ba1d5e107da05b9e5dd1","frame_hashes":[[0,"12c3f670812a586f983758491fce0ce1968e4523"],[10,"12c3f670812a586f983758491fce0ce1968e4523"],[20,"12c3f670812a586f983758491fce0ce1968e4523"],[30,"12c3f670812a586f983758491fce0ce1968e4523"],[40,"12c3f670812a586f983758491fce0ce1968e4523"],[50,"12c3f670812a586f983758491fce0ce1968e4523"],[60,"12c3f670812a586f983758491fce0ce1968e4523"],[70,"12c3f670812a586f983758491fce0ce1968e4523"],[80,"12c3f670812a586f983758491fce0ce1968e4523"],[90,"12c3f670812a586f983758491fce0ce1968e4523"],[100,"12c3f670812a586f983758491fce0ce1968e4523"],[110,"12c3f670812a586f983758491fce0ce1968e4523"],[120,"12c3f670812a586f983758491fce0ce1968e4523"],[130,"12c3f670812a586fLine truncated
|
||||
{"core":{"build_command":"make -f Makefile.libretro -j6 platform=unix on git archive (isolation: bwrap)","commit":"35dabb85ff3af6825820f54090d344945f65d24e","compiler":["GCC: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0"],"file":"pcsx1_libretro.so","library_name":"PCSX1","library_version":"r22","repo":"https://github.com/libretro/pcsx1-libretro","sha256":"2d6b63b537f4147fec585dcd14dc9d022d75608216569438f7c9ed7b9e8bce11"},"emulator":"pcsx1","flags":["default: repetition 1 disagrees with repetition 0 on state_sha1"],"frontend":{"commit":"a17406edaeb01d334d15f3a4e6fa4950c6d0b727","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6aaa716a44ccf5e245f478c560f5718f6af3f0c8ded2e02b05f364adf81df9c8"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.77,2.62,3.04],"load_before":[2.65,2.59,3.04],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-7047debd7908","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"e10f642259f2906bb39ae07fcb4b5a36eae18287","shows":"the Acclaim logo with a stray strip at its right edge, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"f89e40011815ab1c50dac718cd53c5fcd675ccb67d2e611acff717e3cbaf2bbc"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T15:09:26+00:00","subject":"files-pcsx1-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":["repetition 1 disagrees with repetition 0 on state_sha1"],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"8":1},"files_opened":[{"path":"scph1001.bin","sha1_after":"10155d8d6e6e832d6ea66db9bc098321fb5e8ebf","sha1_staged":"10155d8d6e6e832d6ea66db9bc098321fb5e8ebf"}],"files_probed_absent":[],"fps":719.2184461729692,"fps_nominal":60.0,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX1","library_version":"r22","loaded":true,"logs":[],"ms_per_frame":1.390398154164561,"observables":{"audio_sha1":"a22c3c99e06c7cf6ea56ba1d5e107da05b9e5dd1","frame_hashes":[[0,"12c3f670812a586f983758491fce0ce1968e4523"],[10,"12c3f67081Line truncated
|
||||
{"core":{"build_command":"make -f Makefile.libretro -j6 platform=unix on git archive (isolation: bwrap)","commit":"35dabb85ff3af6825820f54090d344945f65d24e","compiler":["GCC: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0"],"file":"pcsx1_libretro.so","library_name":"PCSX1","library_version":"r22","repo":"https://github.com/libretro/pcsx1-libretro","sha256":"2d6b63b537f4147fec585dcd14dc9d022d75608216569438f7c9ed7b9e8bce11"},"emulator":"pcsx1","flags":["default: repetition 1 disagrees with repetition 0 on state_sha1"],"frontend":{"commit":"a17406edaeb01d334d15f3a4e6fa4950c6d0b727","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6aaa716a44ccf5e245f478c560f5718f6af3f0c8ded2e02b05f364adf81df9c8"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.73,2.62,3.04],"load_before":[2.77,2.62,3.04],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-c535a6e54730","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"e10f642259f2906bb39ae07fcb4b5a36eae18287","shows":"the Acclaim logo with a stray strip at its right edge, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"f89e40011815ab1c50dac718cd53c5fcd675ccb67d2e611acff717e3cbaf2bbc"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T15:09:37+00:00","subject":"none-pcsx1-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":["repetition 1 disagrees with repetition 0 on state_sha1"],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"6":1,"8":1},"files_opened":[],"files_probed_absent":["scph1001.bin","scph5501.bin","scph7001.bin"],"fps":722.9154695114875,"fps_nominal":60.0,"frames":3600,"input_pressed":0,"input_queries":115200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX1","library_version":"r22","loaded":true,"logs":[],"ms_per_frame":1.3832875933278248,"observables":{"audio_sha1":"4dc0185a25c0caac3fa12ae4c0b0d55b7898774c","frame_hashes":[[0,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[10,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[20,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[30,"Line truncated
|
||||
{"check":{"claim":"pcsx1 boots Bust-A-Move 2 - Arcade Edition (USA) with scph1001.bin alone and refuses a wrong file under its name","method":"scph1001.bin alone as scph1001.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"12c3f670812a586f983758491fce0ce1968e4523"],[10,"12c3f670812a586f983758491fce0ce1968e4523"],[20,"12c3f670812a586f983758491fce0ce1968e4523"],[30,"12c3f670812a586f983758491fce0ce1968e4523"],[40,"12c3f670812a586f983758491fce0ce1968e4523"],[50,"12c3f670812a586f983758491fce0ce1968e4523"],[60,"12c3f670812a586f983758491fce0ce1968e4523"],[70,"12c3f670812a586f983758491fce0ce1968e4523"],[80,"12c3f670812a586f983758491fce0ce1968e4523"],[90,"12c3f670812a586f983758491fce0ce1968e4523"],[100,"12c3f670812a586f983758491fce0ce1968e4523"],[110,"12c3f670812a586f983758491fce0ce1968e4523"],[120,"12c3f670812a586f983758491fce0ce1968e4523"],[130,"12c3f670812a586f983758491fce0ce1968e4523"],[140,"12c3f670812a586f983758491fce0ce1968e4523"],[150,"12c3f670812a586f983758491fce0ce1968e4523"],[160,"12c3f670812a586f983758491fce0ce1968e4523"],[170,"12c3f670812a586f983758491fce0ce1968e4523"],[180,"12c3f670812a586f983758491fce0ce1968e4523"],[190,"12c3f670812a586f983758491fce0ce1968e4523"],[200,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[210,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[220,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[230,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[240,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[250,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[260,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[270,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[280,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[290,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[300,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[310,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[320,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[330,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[340,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[350,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[360,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[370,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[380,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[390,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[400,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[410,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[420,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[430,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[440,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[450,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[460,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[470,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[480,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[490,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[500,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[510,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[520,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[530,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[540,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[550,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[560,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[570,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[580,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[590,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[600,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[610,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[620,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[630,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[640,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[650,"4888ef5567c7627420c1711a19ad56d598f4f08b"],[660,"8c8dc030b6e61b982022c5361313d4da5216534f"],[670,"70ee1119e670675f0dd5d2c289f8a9e1568f18a2"],[680,"48ba21b6f1435b76388ef77b97ad63904107c3c3"],[690,"a68e30d61a75ee1cd1ba631707285331bedcaf45"],[700,"4398f8ffb04d1ac3ed17e4c8713edd3c7cdcb6df"],[710,"be902fda82dcbae0fb4e3da05095cdc19a6b8039"],[720,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[730,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[740,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[750,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[760,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[770,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[780,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[790,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[800,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[810,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[820,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[830,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[840,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[850,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[860,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[870,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[880,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[890,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[900,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[910,"dd6dac23da6b8f4f256b809056Line truncated
|
||||
{"check":{"claim":"pcsx1 boots Bust-A-Move 2 - Arcade Edition (USA) with scph5501.bin alone and refuses a wrong file under its name","method":"scph5501.bin alone as scph5501.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"12c3f670812a586f983758491fce0ce1968e4523"],[10,"12c3f670812a586f983758491fce0ce1968e4523"],[20,"12c3f670812a586f983758491fce0ce1968e4523"],[30,"12c3f670812a586f983758491fce0ce1968e4523"],[40,"12c3f670812a586f983758491fce0ce1968e4523"],[50,"12c3f670812a586f983758491fce0ce1968e4523"],[60,"12c3f670812a586f983758491fce0ce1968e4523"],[70,"12c3f670812a586f983758491fce0ce1968e4523"],[80,"12c3f670812a586f983758491fce0ce1968e4523"],[90,"12c3f670812a586f983758491fce0ce1968e4523"],[100,"12c3f670812a586f983758491fce0ce1968e4523"],[110,"12c3f670812a586f983758491fce0ce1968e4523"],[120,"12c3f670812a586f983758491fce0ce1968e4523"],[130,"12c3f670812a586f983758491fce0ce1968e4523"],[140,"12c3f670812a586f983758491fce0ce1968e4523"],[150,"12c3f670812a586f983758491fce0ce1968e4523"],[160,"12c3f670812a586f983758491fce0ce1968e4523"],[170,"12c3f670812a586f983758491fce0ce1968e4523"],[180,"12c3f670812a586f983758491fce0ce1968e4523"],[190,"12c3f670812a586f983758491fce0ce1968e4523"],[200,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[210,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[220,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[230,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[240,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[250,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[260,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[270,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[280,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[290,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[300,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[310,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[320,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[330,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[340,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[350,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[360,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[370,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[380,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[390,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[400,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[410,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[420,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[430,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[440,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[450,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[460,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[470,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[480,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[490,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[500,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[510,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[520,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[530,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[540,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[550,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[560,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[570,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[580,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[590,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[600,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[610,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[620,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[630,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[640,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[650,"4888ef5567c7627420c1711a19ad56d598f4f08b"],[660,"8c8dc030b6e61b982022c5361313d4da5216534f"],[670,"70ee1119e670675f0dd5d2c289f8a9e1568f18a2"],[680,"48ba21b6f1435b76388ef77b97ad63904107c3c3"],[690,"a68e30d61a75ee1cd1ba631707285331bedcaf45"],[700,"4398f8ffb04d1ac3ed17e4c8713edd3c7cdcb6df"],[710,"be902fda82dcbae0fb4e3da05095cdc19a6b8039"],[720,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[730,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[740,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[750,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[760,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[770,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[780,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[790,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[800,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[810,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[820,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[830,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[840,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[850,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[860,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[870,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[880,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[890,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[900,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[910,"dd6dac23da6b8f4f256b809056Line truncated
|
||||
{"check":{"claim":"pcsx1 boots Bust-A-Move 2 - Arcade Edition (USA) with scph7001.bin alone and refuses a wrong file under its name","method":"scph7001.bin alone as scph7001.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"12c3f670812a586f983758491fce0ce1968e4523"],[10,"12c3f670812a586f983758491fce0ce1968e4523"],[20,"12c3f670812a586f983758491fce0ce1968e4523"],[30,"12c3f670812a586f983758491fce0ce1968e4523"],[40,"12c3f670812a586f983758491fce0ce1968e4523"],[50,"12c3f670812a586f983758491fce0ce1968e4523"],[60,"12c3f670812a586f983758491fce0ce1968e4523"],[70,"12c3f670812a586f983758491fce0ce1968e4523"],[80,"12c3f670812a586f983758491fce0ce1968e4523"],[90,"12c3f670812a586f983758491fce0ce1968e4523"],[100,"12c3f670812a586f983758491fce0ce1968e4523"],[110,"12c3f670812a586f983758491fce0ce1968e4523"],[120,"12c3f670812a586f983758491fce0ce1968e4523"],[130,"12c3f670812a586f983758491fce0ce1968e4523"],[140,"12c3f670812a586f983758491fce0ce1968e4523"],[150,"12c3f670812a586f983758491fce0ce1968e4523"],[160,"12c3f670812a586f983758491fce0ce1968e4523"],[170,"12c3f670812a586f983758491fce0ce1968e4523"],[180,"12c3f670812a586f983758491fce0ce1968e4523"],[190,"12c3f670812a586f983758491fce0ce1968e4523"],[200,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[210,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[220,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[230,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[240,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[250,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[260,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[270,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[280,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[290,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[300,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[310,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[320,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[330,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[340,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[350,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[360,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[370,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[380,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[390,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[400,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[410,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[420,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[430,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[440,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[450,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[460,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[470,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[480,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[490,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[500,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[510,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[520,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[530,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[540,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[550,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[560,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[570,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[580,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[590,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[600,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[610,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[620,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[630,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[640,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[650,"4888ef5567c7627420c1711a19ad56d598f4f08b"],[660,"8c8dc030b6e61b982022c5361313d4da5216534f"],[670,"70ee1119e670675f0dd5d2c289f8a9e1568f18a2"],[680,"48ba21b6f1435b76388ef77b97ad63904107c3c3"],[690,"a68e30d61a75ee1cd1ba631707285331bedcaf45"],[700,"4398f8ffb04d1ac3ed17e4c8713edd3c7cdcb6df"],[710,"be902fda82dcbae0fb4e3da05095cdc19a6b8039"],[720,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[730,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[740,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[750,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[760,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[770,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[780,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[790,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[800,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[810,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[820,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[830,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[840,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[850,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[860,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[870,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[880,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[890,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[900,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[910,"dd6dac23da6b8f4f256b809056Line truncated
|
||||
@@ -0,0 +1,2 @@
|
||||
{"check":{"claim":"PCSX2 boots Rez (USA) only with a PS2 BIOS image in its BIOS folder","method":"The PCSX2 AppImage EmuDeck installs, with its BIOS folder holding nothing, then the US BIOS ps2-0230a-20080220.bin as the collection holds it. Each variant runs twice from a fresh data folder for 120 seconds under Xvfb with the software renderer and no input, the screen sampled every 2 seconds. The verdict comes from the oracle and PCSX2's own BIOS error strings.","observable":"verdict","result":{"groups":[{"value":"unknown","variants":["ps2-0230a-20080220.bin-absent","ps2-0230a-20080220.bin"]}],"statement":"verdict is identical across all 2 variants","status":"same","verdicts":{"ps2-0230a-20080220.bin":"unknown","ps2-0230a-20080220.bin-absent":"unknown"}},"variable":"ps2-0230a-20080220.bin"},"core":{"artifact":"https://github.com/PCSX2/pcsx2/releases/download/v2.9.146/pcsx2-v2.9.146-linux-appimage-x64-Qt.AppImage","build_command":null,"commit":null,"compiler":null,"file":"pcsx2-v2.9.146-linux-appimage-x64-Qt.AppImage","library_name":"pcsx2","library_version":"v2.9.146","repo":"https://github.com/PCSX2/pcsx2","sha256":"72b88ee69384f43341aec83bb5b37de5c0341a3af7ccc03812120312ca2d0e0e"},"emulator":"pcsx2","flags":["load average reached 3.15 (threshold 3.0)"],"frontend":{"commit":"e6f7ea8f07ea6cf5ae3d8e6affad0ab877f27b4e","script":"scripts/standalone_probe.py","script_modified":false,"script_sha256":"08f5eae9327217f4b59ea262b644587f7180186cb84152db36c39248af2cdf8f"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.15,2.51,2.37],"load_before":[2.82,2.11,2.38],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-fac0b52c9475","inputs":{"content":{"label":"Rez (USA) (En,Fr,De,Es,It)","sha1":"f6ac65761e9d8c8c9eb9d3377ff53719557ae346","size":230785296,"tracks":[]},"env":{},"frame_hash_every":1,"frames":60,"joypad_ports":0,"observables":["verdict","screens","frame_hashes","uniform_frames"],"options":{"AutoUpdater.CheckAtStartup":"false","EmuCore/GS.Renderer":"13","Folders.Bios":"<bios>","Logging.EnableSystemConsole":"true","Logging.EnableVerbose":"false","SPU2/Output.Backend":"Null","UI.ConfirmShutdown":"false","UI.SettingsVersion":"1","UI.SetupWizardIncomplete":"false","UI.StartFullscreen":"true"},"oracle":{"bios_patterns":[],"error_patterns":["Unable\\ to\\ auto\\ locate\\ a\\ BIOS\\ image","BIOS\\ image\\ has\\ not\\ been\\ selected","could\\ not\\ be\\ read\\ \\(permission\\ denied\\?\\)"],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"eb8c851948806afcf075ea90ddd16727b662e1b59c4821ae56c00706e45576c9"},"presses":[],"repetitions":2,"warmup":0},"kind":"check","record_version":4,"recorded_at":"2026-10-27T22:15:56+00:00","subject":"pcsx2-boots-rez-usa-only-with-a-ps2-bios-7babf39c","supersedes":null,"variants":[{"flags":[],"label":"ps2-0230a-20080220.bin-absent","repetitions":[{"files_opened":[],"files_probed_absent":[],"frames":60,"isolation":"bwrap","library_name":"pcsx2","loaded":true,"logs":[{"frame":0,"level":"info","text":"[ 0.0546] Program Path: <emulator>/usr/bin/pcsx2-qt"},{"frame":0,"level":"info","text":"[ 0.0547] AppRoot Directory: <emulator>/usr/bin"},{"frame":0,"level":"info","text":"[ 0.0548] Resources Directory: <emulator>/usr/bin/resources"},{"frame":0,"level":"info","text":"[ 0.0557] DataRoot Directory: <scratch>/data/PCSX2"},{"frame":0,"level":"info","text":"[ 0.0559] Loading config from <scratch>/data/PCSX2/inis/PCSX2.ini."},{"frame":0,"level":"info","text":"[ 0.0565] Loading secrets from <scratch>/data/PCSX2/inis/secrets.ini."},{"frame":0,"level":"info","text":"[ 0.0570] BIOS Directory: <bios>"},{"frame":0,"level":"info","text":"[ 0.0571] Snapshots Directory: <scratch>/data/PCSX2/snaps"},{"frame":0,"level":"info","text":"[ 0.0572] Savestates Directory: <scratch>/data/PCSX2/sstates"},{"frame":0,"level":"info","text":"[ 0.0573] MemoryCards Directory: <scratch>/data/PCSX2/memcards"},{"frame":0,"level":"info","text":"[ 0.0574] Logs Directory: <scratch>/data/PCSX2/logs"},{"frame":0,"level":"info","text":"[ 0.0575] Cheats Directory: <scratch>/data/PCSX2/cheats"},{"frame":0,"level":"info","text":"[ 0.0576] Patches Directory: <scratch>/data/PCSX2/patches"},{"frame":0,"level":"info","text":"[ 0.0577] Covers Directory: <scratch>/data/PCSX2/covers"},{"frame":0,"level":"info","text":"[ 0.0578] Game Settings Directory: <scratch>/data/PCSX2/gamesettings"},{"frame":0,"level":"info","text":"[ 0.0579] Resources Directory: <emulator>/usr/bin/resources"},{"frame":0,"level":"info","text":"[ 0.0580] User Resources Directory: <scratch>/data/PCSX2/resources"},{"frame":0,"level":"info","text":"[ 0.0581] Cache Directory: <scratch>/data/PCSX2/cache"},{"frame":0,"level":"info","text":"[ 0.0582] Textures Directory: <scratch>/data/PCSX2/textures"},{"frame":0,"level":"infLine truncated
|
||||
{"check":{"claim":"PCSX2 boots Rez (USA) only with a PS2 BIOS image in its BIOS folder","method":"The PCSX2 AppImage EmuDeck installs, with its BIOS folder holding nothing, then the US BIOS ps2-0230a-20080220.bin as the collection holds it. Each variant runs twice from a fresh data folder for 120 seconds under Xvfb with the software renderer and no input, the screen sampled every 2 seconds. The verdict comes from the oracle and PCSX2's own BIOS error strings.","observable":"verdict","result":{"groups":[{"value":"bios_error","variants":["ps2-0230a-20080220.bin-absent"]},{"value":"boots","variants":["ps2-0230a-20080220.bin"]}],"statement":"verdict takes 2 distinct values across 2 variants","status":"differs","verdicts":{"ps2-0230a-20080220.bin":"boots","ps2-0230a-20080220.bin-absent":"bios_error"}},"variable":"ps2-0230a-20080220.bin"},"core":{"artifact":"https://github.com/PCSX2/pcsx2/releases/download/v2.9.146/pcsx2-v2.9.146-linux-appimage-x64-Qt.AppImage","build_command":null,"commit":null,"compiler":null,"file":"pcsx2-v2.9.146-linux-appimage-x64-Qt.AppImage","library_name":"pcsx2","library_version":"v2.9.146","repo":"https://github.com/PCSX2/pcsx2","sha256":"72b88ee69384f43341aec83bb5b37de5c0341a3af7ccc03812120312ca2d0e0e"},"emulator":"pcsx2","flags":["load average reached 4.05 (threshold 3.0)"],"frontend":{"commit":"499e5faa7d5aa67cc18da5f901dc9bd94c123a83","script":"scripts/standalone_probe.py","script_modified":false,"script_sha256":"9b7886750216125d0d450997b2a51bd26774275ba66b2ab749597406a93a8ac7"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[4.05,3.57,2.87],"load_before":[2.52,2.11,2.2],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-88237820d68e","inputs":{"content":{"label":"Rez (USA) (En,Fr,De,Es,It)","sha1":"f6ac65761e9d8c8c9eb9d3377ff53719557ae346","size":230785296,"tracks":[]},"env":{},"frame_hash_every":1,"frames":60,"joypad_ports":0,"observables":["verdict","screens","frame_hashes","uniform_frames"],"options":{"AutoUpdater.CheckAtStartup":"false","EmuCore/GS.Renderer":"13","Folders.Bios":"<bios>","Logging.EnableSystemConsole":"true","Logging.EnableVerbose":"false","SPU2/Output.Backend":"Null","UI.ConfirmShutdown":"false","UI.SettingsVersion":"1","UI.SetupWizardIncomplete":"false","UI.StartFullscreen":"true"},"oracle":{"bios_patterns":[],"error_patterns":["requires\\ a\\ PlayStation\\ 2\\ BIOS\\ in\\ order\\ to\\ run","Unable\\ to\\ auto\\ locate\\ a\\ BIOS\\ image","BIOS\\ image\\ has\\ not\\ been\\ selected","could\\ not\\ be\\ read\\ \\(permission\\ denied\\?\\)"],"error_screens":[{"sha1":"46329c633ea7d0b63349261e4aab169e4f44d3f6","shows":"the dialog \"PCSX2 requires a PlayStation 2 BIOS in order to run\""}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"003685f698160f1cc79ca0bc00091f30ccb681db","shows":"Rez asking to format the unformatted memory card in slot 1","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":2,"warmup":0},"kind":"check","record_version":4,"recorded_at":"2026-10-27T22:46:03+00:00","subject":"pcsx2-boots-rez-usa-only-with-a-ps2-bios-7babf39c","supersedes":null,"variants":[{"flags":[],"label":"ps2-0230a-20080220.bin-absent","repetitions":[{"files_opened":[],"files_probed_absent":[],"frames":60,"isolation":"bwrap","library_name":"pcsx2","loaded":true,"logs":[{"frame":0,"level":"info","text":"[ 0.0470] Program Path: <emulator>/usr/bin/pcsx2-qt"},{"frame":0,"level":"info","text":"[ 0.0471] AppRoot Directory: <emulator>/usr/bin"},{"frame":0,"level":"info","text":"[ 0.0471] Resources Directory: <emulator>/usr/bin/resources"},{"frame":0,"level":"info","text":"[ 0.0480] DataRoot Directory: <scratch>/data/PCSX2"},{"frame":0,"level":"info","text":"[ 0.0482] Loading config from <scratch>/data/PCSX2/inis/PCSX2.ini."},{"frame":0,"level":"info","text":"[ 0.0487] Loading secrets from <scratch>/data/PCSX2/inis/secrets.ini."},{"frame":0,"level":"info","text":"[ 0.0492] BIOS Directory: <bios>"},{"frame":0,"level":"info","text":"[ 0.0493] Snapshots Directory: <scratch>/data/PCSX2/snaps"},{"frame":0,"level":"info","text":"[ 0.0494] Savestates Directory: <scratch>/data/PCSX2/sstates"},{"frame":0,"level":"info","text":"[ 0.0495] MemoryCards Directory: <scratch>/data/PCSX2/memcards"},{"frame":0,"level":"info","text":"[ 0.0496] Logs Directory: <scratch>/data/PCSX2/logs"},{"frame":0,"level":"info","text":"[ 0.0497] Cheats Directory: <scratch>/data/PCSX2/cheats"},{"frame":0,"level":"info","text":"[ 0.0497] Patches Directory: <scratch>/data/PCSX2/patches"},{"frame":0,"level":"info","text":"[ 0.0498] Covers Directory: <scratch>/data/PCSX2/covers"},{"frame":0,"level":"info","text":"[ 0.0499] Game Settings Directory: <scratch>/data/PCSX2/gamesettings"},{"frame":0,"level":"info","text":"[ 0.0500] ReLine truncated
|
||||
@@ -5,3 +5,30 @@
|
||||
{"check":{"claim":"the copies of scph5502.bin change what pcsx_rearmed shows on Bust-A-Move 2 - Arcade Edition (USA)","method":"Each copy the collection holds staged as scph5502.bin, each run 2 times for 3600 frames, compared on the sampled frame hashes.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[10,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[20,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[30,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[40,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[50,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[60,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[70,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[80,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[90,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[100,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[110,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[120,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[130,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[140,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[150,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[160,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[170,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[180,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[190,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[200,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[210,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[220,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[230,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[240,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[250,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[260,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[270,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[280,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[290,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[300,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[310,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[320,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[330,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[340,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[350,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[360,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[370,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[380,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[390,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[400,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[410,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[420,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[430,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[440,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[450,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[460,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[470,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[480,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[490,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[500,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[510,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[520,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[530,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[540,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[550,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[560,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[570,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[580,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[590,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[600,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[610,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[620,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[630,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[640,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[650,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[660,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[670,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[680,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[690,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[700,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[710,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[720,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[730,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[740,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[750,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[760,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[770,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[780,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[790,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[800,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[810,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[820,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[830,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[840,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[850,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[860,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[870,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[880,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[890,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[900,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[910,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[920,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[930,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[940,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[950,"490761d0df7cbf87a09cc167fd710c728a4Line truncated
|
||||
{"check":{"claim":"pcsx_rearmed opens scph7001.bin as scph7001.bin","method":"scph7001.bin staged as scph7001.bin, against nothing there, 3600 frames of Bust-A-Move 2 - Arcade Edition (USA). The files the core opened are read from strace.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[10,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[20,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[30,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[40,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[50,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[60,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[70,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[80,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[90,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[100,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[110,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[120,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[130,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[140,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[150,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[160,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[170,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[180,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[190,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[200,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[210,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[220,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[230,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[240,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[250,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[260,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[270,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[280,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[290,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[300,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[310,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[320,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[330,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[340,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[350,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[360,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[370,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[380,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[390,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[400,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[410,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[420,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[430,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[440,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[450,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[460,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[470,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[480,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[490,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[500,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[510,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[520,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[530,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[540,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[550,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[560,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[570,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[580,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[590,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[600,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[610,"db0161770eb1bac93d8e73be8b494e2239416c92"],[620,"8c8dc030b6e61b982022c5361313d4da5216534f"],[630,"70ee1119e670675f0dd5d2c289f8a9e1568f18a2"],[640,"48ba21b6f1435b76388ef77b97ad63904107c3c3"],[650,"50a116cc0623c4fdb360f11bb2bd3bc5631cd7a4"],[660,"cef9baa991efb00402b2ab14059b1671fc54a70b"],[670,"aa88629f7654142ee3625e7fcc1db7106a531e98"],[680,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[690,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[700,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[710,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[720,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[730,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[740,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[750,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[760,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[770,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[780,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[790,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[800,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[810,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[820,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[830,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[840,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[850,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[860,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[870,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[880,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[890,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[900,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[910,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[920,"dd6dac23da6b8f4f256b8090568c52e8f8428425"],[930,"be902fda82dcbae0fb4e3da05095cdc19a6b8039"],[940,"6ecae7882208c18db87b39ec1ded89d16111b7b2"],[950,"a68e30d61a75ee1cd1ba631707285331bedcaf45"],[960,"48Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":"https://github.com/libretro/pcsx_rearmed","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"fdcf120a7d584f07ba3fbbc8feea507c8ac368ca","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"a3182429ef3e86a03d23ae76326cd4d7b33a12fd18d28ce60c7231fe8ba5fe6e"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.54,2.58,3.23],"load_before":[2.59,2.59,3.24],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-2138f64f1283","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":0,"frames":1800,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1"],"options":{},"presses":[],"repetitions":5,"warmup":600},"kind":"bench","record_version":3,"recorded_at":"2026-10-27T11:08:02+00:00","subject":"bench-pcsx-rearmed-bust-a-move-2-arcade-edition-usa","supersedes":null,"timing":{"fps":{"max":4331.721103675818,"mean":4267.333877918455,"median":4305.257242302731,"min":4141.151213176667,"raw":[4247.565194060011,4305.257242302731,4310.974636377049,4141.151213176667,4331.721103675818],"stdev":77.13831400255525},"ms_per_frame":{"max":0.24147874552808288,"mean":0.2344006248814468,"median":0.23227415778415483,"min":0.23085512110911724,"raw":[0.23542899386181185,0.23227415778415483,0.23196610612406707,0.24147874552808288,0.23085512110911724],"stdev":0.0043062941011853565}},"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":3,"40":2403,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":null,"files_probed_absent":null,"fps":4247.565194060011,"fps_nominal":60.0,"frames":1800,"input_pressed":0,"input_queries":307200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX-ReARMed","library_version":"r26 c881679","loaded":true,"logs":[{"frame":0,"level":"info","text":"Starting PCSX-ReARMed r26l-119-gc881679 (cc 9.4.0 64bit pic ssse3 lightrec gpu=neon)"},{"frame":0,"level":"info","text":"build time: Oct 25 2026 06:43:00"},{"frame":0,"level":"info","text":"12 cpu core(s) detected"},{"frame":0,"level":"info","text":"found US BIOS file, crc32 8d8cb7e4: <system>/scph5501.bin"},{"frame":0,"level":"info","text":"Using PIXEL_FORMAT 2"},{"frame":0,"level":"info","text":"cdrom precache: 12 buffers"},{"frame":0,"level":"info","text":"plugin: /builtin_gpu"},{"frame":0,"level":"info","text":"plugin: /builtin_spu"},{"frame":0,"level":"info","text":"PlugiLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":"https://github.com/libretro/pcsx_rearmed","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"38dd7401fdfbaa4ae98bda3ea901c80f24d78da7","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6f18a8ff979e4a5b182d164aae3448818be0ec5ec596df3db636afe9bae44266"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.59,3.22,4.06],"load_before":[2.4,3.24,4.09],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-8154bab7bf80","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"84a3435916d67c64d1d7a12305d7bea63dcf7f1467ba5cd775cd35c5887f9532"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T14:48:10+00:00","subject":"references-pcsx-rearmed-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":3,"40":3603,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":385.0897322632743,"fps_nominal":60.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX-ReARMed","library_version":"r26 c881679","loaded":true,"logs":[{"frame":0,"level":"info","text":"Starting PCSX-ReARMed r26l-119-gc881679 (cc 9.4.0 64bit pic ssse3 lightrec gpu=neon)"},{"frame":0,"level":"info","text":"build time: Oct 25 2026 06:43:00"},{"frame":0,"level":"info","text":"12 cpu core(s) detected"},{"frame":0,"level":"info","text":"found JP BIOS file, crc32 ff3eeb8c: <system>/scph5500.bin"},{"frame":0,"level":"info","text":"found US BIOS file, crc32 8d8cb7e4: <system>/scph5501.bin"},{"frame":0,"level":"info","text":"found EU BIOS file, crc32 d786f0b9Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":"https://github.com/libretro/pcsx_rearmed","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"a17406edaeb01d334d15f3a4e6fa4950c6d0b727","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6aaa716a44ccf5e245f478c560f5718f6af3f0c8ded2e02b05f364adf81df9c8"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.3,2.3,2.66],"load_before":[2.19,2.28,2.66],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-378cc9b49c66","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"f89e40011815ab1c50dac718cd53c5fcd675ccb67d2e611acff717e3cbaf2bbc"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T16:43:05+00:00","subject":"files-pcsx-rearmed-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":3,"40":3603,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":2841.1704776251495,"fps_nominal":60.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX-ReARMed","library_veLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":"https://github.com/libretro/pcsx_rearmed","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"a17406edaeb01d334d15f3a4e6fa4950c6d0b727","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6aaa716a44ccf5e245f478c560f5718f6af3f0c8ded2e02b05f364adf81df9c8"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.62,2.36,2.68],"load_before":[2.3,2.3,2.66],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-82bf6de00b8a","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"f89e40011815ab1c50dac718cd53c5fcd675ccb67d2e611acff717e3cbaf2bbc"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T16:43:20+00:00","subject":"none-pcsx-rearmed-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":2,"40":3602,"45":1,"51":1,"57":1,"59":1,"6":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[],"files_probed_absent":["scph5500.bin","scph5501.bin","scph5502.bin","psxonpsp660.bin","scph101.bin","scph7001.bin","scph1001.bin"],"fps":3059.9461504064743,"fps_nominal":60.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX-ReARMed","library_version":"r26 c881679","loaded":true,"logs":[{"frame":0,"level":"info","text":"Starting PCSX-ReARMed r26l-119-gc881679 (cc 9.4.0 64bit pic ssse3 lightrec gpu=neon)"},{"frame":0,"level":"info","text":"build time: Oct 25 2026 06:43:00"},{"frame":0,"level":"info","text":"12 cpu core(s) detected"},{"framLine truncated
|
||||
{"check":{"claim":"pcsx_rearmed boots Bust-A-Move 2 - Arcade Edition (USA) with scph1001.bin alone and refuses a wrong file under its name","method":"scph1001.bin alone as scph1001.bin, then 524288 zero bytes and its first 262144 bytes, then psxonpsp660.bin, scph5500.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[10,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[20,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[30,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[40,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[50,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[60,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[70,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[80,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[90,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[100,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[110,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[120,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[130,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[140,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[150,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[160,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[170,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[180,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[190,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[200,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[210,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[220,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[230,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[240,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[250,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[260,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[270,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[280,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[290,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[300,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[310,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[320,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[330,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[340,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[350,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[360,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[370,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[380,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[390,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[400,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[410,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[420,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[430,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[440,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[450,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[460,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[470,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[480,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[490,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[500,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[510,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[520,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[530,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[540,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[550,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[560,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[570,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[580,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[590,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[600,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[610,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[620,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[630,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[640,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[650,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[660,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[670,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[680,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[690,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[700,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[710,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[720,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[730,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[740,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[750,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[760,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[770,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[780,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[790,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[800,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[810,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[820,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[830,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[840,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[850,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[860,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[870,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[880,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[890,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[900,"e5af1f2023Line truncated
|
||||
{"check":{"claim":"pcsx_rearmed boots Bust-A-Move 2 - Arcade Edition (USA) with scph101.bin alone and refuses a wrong file under its name","method":"scph101.bin alone as scph101.bin, then 524288 zero bytes and its first 262144 bytes, then psxonpsp660.bin, scph5500.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[10,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[20,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[30,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[40,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[50,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[60,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[70,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[80,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[90,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[100,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[110,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[120,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[130,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[140,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[150,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[160,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[170,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[180,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[190,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[200,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[210,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[220,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[230,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[240,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[250,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[260,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[270,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[280,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[290,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[300,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[310,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[320,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[330,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[340,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[350,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[360,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[370,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[380,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[390,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[400,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[410,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[420,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[430,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[440,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[450,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[460,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[470,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[480,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[490,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[500,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[510,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[520,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[530,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[540,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[550,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[560,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[570,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[580,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[590,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[600,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[610,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[620,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[630,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[640,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[650,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[660,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[670,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[680,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[690,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[700,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[710,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[720,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[730,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[740,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[750,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[760,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[770,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[780,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[790,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[800,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[810,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[820,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[830,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[840,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[850,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[860,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[870,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[880,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[890,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[900,"e5af1f2023d0dLine truncated
|
||||
{"check":{"claim":"pcsx_rearmed boots Bust-A-Move 2 - Arcade Edition (USA) with scph5501.bin alone and refuses a wrong file under its name","method":"scph5501.bin alone as scph5501.bin, then 524288 zero bytes and its first 262144 bytes, then psxonpsp660.bin, scph5500.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[10,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[20,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[30,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[40,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[50,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[60,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[70,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[80,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[90,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[100,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[110,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[120,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[130,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[140,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[150,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[160,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[170,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[180,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[190,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[200,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[210,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[220,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[230,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[240,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[250,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[260,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[270,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[280,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[290,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[300,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[310,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[320,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[330,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[340,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[350,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[360,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[370,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[380,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[390,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[400,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[410,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[420,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[430,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[440,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[450,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[460,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[470,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[480,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[490,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[500,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[510,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[520,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[530,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[540,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[550,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[560,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[570,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[580,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[590,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[600,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[610,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[620,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[630,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[640,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[650,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[660,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[670,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[680,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[690,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[700,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[710,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[720,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[730,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[740,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[750,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[760,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[770,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[780,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[790,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[800,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[810,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[820,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[830,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[840,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[850,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[860,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[870,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[880,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[890,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[900,"e5af1f2023Line truncated
|
||||
{"check":{"claim":"pcsx_rearmed boots Bust-A-Move 2 - Arcade Edition (USA) with scph7001.bin alone and refuses a wrong file under its name","method":"scph7001.bin alone as scph7001.bin, then 524288 zero bytes and its first 262144 bytes, then psxonpsp660.bin, scph5500.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[10,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[20,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[30,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[40,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[50,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[60,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[70,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[80,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[90,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[100,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[110,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[120,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[130,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[140,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[150,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[160,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[170,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[180,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[190,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[200,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[210,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[220,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[230,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[240,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[250,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[260,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[270,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[280,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[290,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[300,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[310,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[320,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[330,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[340,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[350,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[360,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[370,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[380,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[390,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[400,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[410,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[420,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[430,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[440,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[450,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[460,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[470,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[480,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[490,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[500,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[510,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[520,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[530,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[540,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[550,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[560,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[570,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[580,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[590,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[600,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[610,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[620,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[630,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[640,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[650,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[660,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[670,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[680,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[690,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[700,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[710,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[720,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[730,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[740,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[750,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[760,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[770,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[780,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[790,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[800,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[810,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[820,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[830,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[840,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[850,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[860,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[870,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[880,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[890,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[900,"e5af1f2023Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":"https://github.com/libretro/pcsx_rearmed","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":["default: repetition 1 disagrees with repetition 0 on state_sha1","load average reached 3.06 (threshold 3.0)"],"frontend":{"commit":"70c3bbd8536cd30851c007d964561c8661df786d","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"86bf2ed561358442b28b6846679ab157a02e03e3b2b97528e1fa41df7a4df078"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.06,3.01,3.3],"load_before":[2.7,2.94,3.28],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-a67e729b8f42","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T18:22:04+00:00","subject":"files-pcsx-rearmed-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":["repetition 1 disagrees with repetition 0 on state_sha1"],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":3,"40":3603,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":"https://github.com/libretro/pcsx_rearmed","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"70c3bbd8536cd30851c007d964561c8661df786d","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"86bf2ed561358442b28b6846679ab157a02e03e3b2b97528e1fa41df7a4df078"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.92,2.96,3.26],"load_before":[2.53,2.89,3.24],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-1d4eb1daebe5","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T18:23:20+00:00","subject":"none-pcsx-rearmed-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":2,"40":3602,"45":1,"51":1,"57":1,"59":1,"6":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[],"files_probed_absent":["scph5500.bin","scph5501.bin","scph5502.bin","psxonpsp660.bin","scph101.bin","scph7001.bin","scph1001.bin"],"fps":2913.4395689702355,"fps_nominal":60.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX-ReARMed","library_version":"r26 c881679","loaded":true,"logs":[{"frame":0,"level":"info","text":"Starting PCSX-ReARMed r26l-119-gc881679 (cc 9.4.0 64bit pic ssse3 lightrec gpu=neon)"},{"frame":0,"level":"info","text":"build time: Oct 25 2026 06:43:00"},{"frame"Line truncated
|
||||
{"check":{"claim":"pcsx_rearmed boots Bust-A-Move 2 - Arcade Edition (USA) with scph1001.bin alone and refuses a wrong file under its name","method":"scph1001.bin alone as scph1001.bin, then 524288 zero bytes and its first 262144 bytes, then psxonpsp660.bin, scph5500.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[10,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[20,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[30,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[40,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[50,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[60,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[70,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[80,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[90,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[100,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[110,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[120,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[130,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[140,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[150,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[160,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[170,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[180,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[190,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[200,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[210,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[220,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[230,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[240,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[250,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[260,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[270,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[280,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[290,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[300,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[310,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[320,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[330,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[340,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[350,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[360,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[370,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[380,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[390,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[400,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[410,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[420,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[430,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[440,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[450,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[460,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[470,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[480,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[490,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[500,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[510,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[520,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[530,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[540,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[550,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[560,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[570,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[580,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[590,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[600,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[610,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[620,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[630,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[640,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[650,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[660,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[670,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[680,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[690,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[700,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[710,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[720,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[730,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[740,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[750,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[760,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[770,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[780,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[790,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[800,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[810,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[820,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[830,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[840,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[850,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[860,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[870,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[880,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[890,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[900,"e5af1f2023Line truncated
|
||||
{"check":{"claim":"pcsx_rearmed boots Bust-A-Move 2 - Arcade Edition (USA) with scph101.bin alone and refuses a wrong file under its name","method":"scph101.bin alone as scph101.bin, then 524288 zero bytes and its first 262144 bytes, then psxonpsp660.bin, scph5500.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[10,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[20,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[30,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[40,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[50,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[60,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[70,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[80,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[90,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[100,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[110,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[120,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[130,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[140,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[150,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[160,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[170,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[180,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[190,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[200,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[210,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[220,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[230,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[240,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[250,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[260,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[270,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[280,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[290,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[300,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[310,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[320,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[330,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[340,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[350,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[360,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[370,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[380,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[390,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[400,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[410,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[420,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[430,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[440,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[450,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[460,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[470,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[480,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[490,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[500,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[510,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[520,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[530,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[540,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[550,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[560,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[570,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[580,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[590,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[600,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[610,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[620,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[630,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[640,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[650,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[660,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[670,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[680,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[690,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[700,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[710,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[720,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[730,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[740,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[750,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[760,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[770,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[780,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[790,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[800,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[810,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[820,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[830,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[840,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[850,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[860,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[870,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[880,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[890,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[900,"e5af1f2023d0dLine truncated
|
||||
{"check":{"claim":"pcsx_rearmed boots Bust-A-Move 2 - Arcade Edition (USA) with scph5501.bin alone and refuses a wrong file under its name","method":"scph5501.bin alone as scph5501.bin, then 524288 zero bytes and its first 262144 bytes, then psxonpsp660.bin, scph5500.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[10,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[20,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[30,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[40,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[50,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[60,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[70,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[80,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[90,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[100,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[110,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[120,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[130,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[140,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[150,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[160,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[170,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[180,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[190,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[200,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[210,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[220,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[230,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[240,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[250,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[260,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[270,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[280,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[290,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[300,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[310,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[320,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[330,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[340,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[350,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[360,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[370,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[380,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[390,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[400,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[410,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[420,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[430,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[440,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[450,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[460,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[470,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[480,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[490,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[500,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[510,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[520,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[530,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[540,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[550,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[560,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[570,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[580,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[590,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[600,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[610,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[620,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[630,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[640,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[650,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[660,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[670,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[680,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[690,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[700,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[710,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[720,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[730,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[740,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[750,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[760,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[770,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[780,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[790,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[800,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[810,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[820,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[830,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[840,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[850,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[860,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[870,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[880,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[890,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[900,"e5af1f2023Line truncated
|
||||
{"check":{"claim":"pcsx_rearmed boots Bust-A-Move 2 - Arcade Edition (USA) with scph7001.bin alone and refuses a wrong file under its name","method":"scph7001.bin alone as scph7001.bin, then 524288 zero bytes and its first 262144 bytes, then psxonpsp660.bin, scph5500.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[10,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[20,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[30,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[40,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[50,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[60,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[70,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[80,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[90,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[100,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[110,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[120,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[130,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[140,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[150,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[160,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[170,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[180,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[190,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[200,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[210,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[220,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[230,"7c0a301f6dbdeef5bb7ec89400676ba8f819dcab"],[240,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[250,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[260,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[270,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[280,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[290,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[300,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[310,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[320,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[330,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[340,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[350,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[360,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[370,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[380,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[390,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[400,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[410,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[420,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[430,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[440,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[450,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[460,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[470,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[480,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[490,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[500,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[510,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[520,"36a81577bede5aabaade574c2cb212c2dd0e0071"],[530,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[540,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[550,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[560,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[570,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[580,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[590,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[600,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[610,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[620,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[630,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[640,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[650,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[660,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[670,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[680,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[690,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[700,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[710,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[720,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[730,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[740,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[750,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[760,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[770,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[780,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[790,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[800,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[810,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[820,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[830,"490761d0df7cbf87a09cc167fd710c728a46cb6f"],[840,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[850,"ca7614edfc54ec085049b365dd01e65f59502b7f"],[860,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[870,"35a8774a83d48a2892e1f1ce256542f870df77b1"],[880,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[890,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[900,"e5af1f2023Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":"https://github.com/libretro/pcsx_rearmed","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":["load average reached 3.04 (threshold 3.0)"],"frontend":{"commit":"dd64434122a3f0dd88ca5908a7cafc2bceedbb98","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.04,2.93,3.11],"load_before":[2.75,2.87,3.1],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-65923ebc1836","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:16:29+00:00","subject":"references-pcsx-rearmed-puzzle-bobble-2-japan","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":3,"40":3603,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":374.7221406045197,"fps_nominal":60.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX-ReARMed","library_version":"r26 c881679","loaded":true,"logs":[{"frame":0,"level":"info","text":"Starting PCSX-ReARMed r26l-119-gc881679 (cc 9.4.0 64bit pic ssse3 lightrec gpu=neon)"},{"frame":0,"level":"info","text":"build time: Oct 25 2026 06:43:00"},{"frame":0,"level":"info","text":"12 cpu core(s) detected"},{"frame":0,"level":"info","text":"found JP BIOS file, crc32 ff3eeb8c: <system>/scph5500.bin"},{"frame":0,"level":"info","text":"found US BIOS file, crc32 8d8cb7e4: <system>/scph5501.bin"},{"frame":0,"level":"info","text":"found EU BIOS file, crc32 d786f0b9: <system>/scph5502.bin"},{"frame":0,"level":"info","text":"Using PIXEL_FORMAT 2"},{"frame":0,"level":"info","text":"cdrom precache: 12 buffers"},{"frame":0,"level":"info","text":"plugin: /builtin_gpu"},{"frame":0,"level":"info","text":Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":"https://github.com/libretro/pcsx_rearmed","sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":["load average reached 3.07 (threshold 3.0)"],"frontend":{"commit":"dd64434122a3f0dd88ca5908a7cafc2bceedbb98","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.07,2.89,3.04],"load_before":[2.46,2.77,3.01],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-c71f71b579b9","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:20:14+00:00","subject":"references-pcsx-rearmed-bust-a-move-2-arcade-edition-europe","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":5,"40":3605,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":373.93533054780505,"fps_nominal":50.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX-ReARMed","library_version":"r26 c881679","loaded":true,"logs":[{"frame":0,"level":"info","text":"Starting PCSX-ReARMed r26l-119-gc881679 (cc 9.4.0 64bit pic ssse3 lightrec gpu=neon)"},{"frame":0,"level":"info","text":"build time: Oct 25 2026 06:43:00"},{"frame":0,"level":"info","text":"12 cpu core(s) detected"},{"frame":0,"level":"info","text":"found JP BIOS file, crc32 ff3eeb8c: <system>/scph5500.bin"},{"frame":0Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":null,"sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.88,2.93,2.85],"load_before":[2.67,2.89,2.84],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-021c5f873e1d","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:56:37+00:00","subject":"region-pcsx_rearmed-bust-a-move-2-arcade-edition-usa-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":3,"40":3603,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":2861.691149590149,"fps_nominal":60.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":null,"sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.96,2.9,2.84],"load_before":[2.87,2.88,2.84],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-ab4b533f4aab","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:58:00+00:00","subject":"region-pcsx_rearmed-bust-a-move-2-arcade-edition-usa-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":3,"40":3603,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph101.bin","sha1_after":"dcffe16bd90a723499ad46c641424981338d8378","sha1_staged":"dcffe16bd90a723499ad46c641424981338d8378"},{"path":"scph7001.bin","sha1_after":"14df4f6c1e367ce097c11deae21566b4fe5647a9","sha1_staged":"14df4f6c1e367ce097c11deae21566b4fe5647a9"},{"path":"scph1001.bin","sha1_after":"10155d8d6e6e832d6ea66db9bc098321fb5e8ebf","sha1_staged":"10155d8d6e6e832d6ea66db9bc098321fb5e8ebf"}],"files_probed_absent":["scph5500.bin","scph5502.bin",Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":null,"sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":["load average reached 3.23 (threshold 3.0)"],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.23,2.91,2.85],"load_before":[2.8,2.83,2.82],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-4b7a5bdc4d3c","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:59:24+00:00","subject":"region-pcsx_rearmed-bust-a-move-2-arcade-edition-usa-others","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":3,"40":3603,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"},{"path":"psxonpsp660.bin","sha1_after":"96880d1ca92a016ff054be5159bb06fe03cb4e14","sha1_staged":"96880d1ca92a016ff054be5159bb06fe03cb4e14"}],"files_probed_absent":["scph5501.bin","scph101.bin","scph7001.bin","scph1001.bin"],"fps":2768.717542752976,"fps_nominal":60.0,"frames":3600,Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":null,"sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":["load average reached 3.06 (threshold 3.0)"],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.06,2.93,2.86],"load_before":[2.98,2.91,2.85],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-bd1dc02bff51","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T23:01:32+00:00","subject":"region-pcsx_rearmed-bust-a-move-2-arcade-edition-usa-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":3,"40":3603,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph101.bin","sha1_after":"dcffe16bd90a723499ad46c641424981338d8378","sha1_staged":"dcffe16bd90a723499ad46c641424981338d8378"},{"path":"scph7001.bin","sha1_after":"14df4f6c1e367ce097c11deae21566b4fe5647a9","sha1_staged":"14df4f6c1e367ce097c11deae21566b4fe5647a9"},{"path":"scph1001.bin","sha1_after":"10155d8d6e6e832d6ea66db9bc098321fb5e8ebf","sha1_staged":"10155d8d6e6e832d6ea66db9bc098321fb5e8ebf"}],"files_pLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":null,"sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":["load average reached 3.05 (threshold 3.0)"],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.05,2.91,2.86],"load_before":[2.97,2.89,2.85],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-20b02a5c405e","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"2443e73be7ce3203408d7398c997fe6ec7cebd9f","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"373e5e3d7c524ed1556b9292a794169bf1de27d0","shows":"a black screen with CREDIT 6","stage":"game"},{"sha1":"53f32c4acd5a522f359952ee48f138e44aee6e61","shows":"the attract-mode game on the beach, PASSAGE TIME IS","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T23:02:48+00:00","subject":"region-pcsx_rearmed-puzzle-bobble-2-japan-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":3,"40":3603,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":2817.1952056776377,"fps_nominal":60.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX-ReARMed","library_version":"r26 c881679","loaded":true,"logs":[{"frame":0,"level":"info","text":"Starting PCSX-ReARMed r26l-119-gc881679 (cc 9.4.0 64bit pic ssse3 lightrec gpu=neon)"},{"frame":0,"level":"info","text":"build time: Oct 25 2026 06:43:00"},{"frame":0,"level":"info","text":"12 cpu core(s) detected"},{"frame":0,"level":"info","text":"found JP BIOS file, crc32 ff3eeb8c: Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":null,"sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.84,2.82,2.83],"load_before":[2.74,2.8,2.82],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-ab657833e2e6","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"2443e73be7ce3203408d7398c997fe6ec7cebd9f","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"373e5e3d7c524ed1556b9292a794169bf1de27d0","shows":"a black screen with CREDIT 6","stage":"game"},{"sha1":"53f32c4acd5a522f359952ee48f138e44aee6e61","shows":"the attract-mode game on the beach, PASSAGE TIME IS","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T23:05:12+00:00","subject":"region-pcsx_rearmed-puzzle-bobble-2-japan-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":3,"40":3603,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"psxonpsp660.bin","sha1_after":"96880d1ca92a016ff054be5159bb06fe03cb4e14","sha1_staged":"96880d1ca92a016ff054be5159bb06fe03cb4e14"}],"files_probed_absent":["scph5501.bin","scph5502.bin","scph101.bin","scph7001.bin","scph1001.bin"],"fps":2861.9182426042025,"fps_nominal":60.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX-ReARMed","library_version":"r26 c881679","loaded":true,"logs":[{"frame":0,"level":"info","text":"Starting PCSX-ReARMed r26l-119-gc881679 (cc 9.4.0 64bit pic ssse3 lightrec gpu=neon)"},{"frame":0,"level":"info","text":"build time: Oct 25 2026 06:43:00"},{"frame":0,"level":"info","text":"12 cpu core(s) detected"},{"frame":0,"level":"info","text":"found JP BIOS file, crc32 ff3eeb8c: <system>/scph5500.bin"},{"frame":0,"level":"info","text":"Using PIXEL_FORMAT 2"},{"frame":0,"level":"info"Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":null,"sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.31,2.68,2.77],"load_before":[2.34,2.69,2.78],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-49e28d441934","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"2443e73be7ce3203408d7398c997fe6ec7cebd9f","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"373e5e3d7c524ed1556b9292a794169bf1de27d0","shows":"a black screen with CREDIT 6","stage":"game"},{"sha1":"53f32c4acd5a522f359952ee48f138e44aee6e61","shows":"the attract-mode game on the beach, PASSAGE TIME IS","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T23:05:58+00:00","subject":"region-pcsx_rearmed-puzzle-bobble-2-japan-others","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":3,"40":3603,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"},{"path":"scph101.bin","sha1_after":"dcffe16bd90a723499ad46c641424981338d8378","sha1_staged":"dcffe16bd90a723499ad46c641424981338d8378"},{"path":"scph7001.bin","sha1_after":"14df4f6c1e367ce097c11deae21566b4fe5647a9","sha1_staged":"14df4f6c1e367ce097c11deae21566b4fe5647a9"},{"path":"scph1001.bin","sha1_after":"10155d8d6e6e832d6ea66db9bc098321fb5e8ebf","sha1_staged":"10155d8d6e6e832d6ea66db9bc098321fb5e8ebf"}],"files_probed_absent":["scph5500.bin","psxonpsp660.bin"],"fps":2858.7360851811554,"fps_nominal":60.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX-ReARMed","library_version":"r26 c881679","loaded":true,"logs":[{"frame":0,"level":"info","text":"Starting PCSX-ReARMed Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":null,"sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.9,2.77,2.8],"load_before":[2.71,2.73,2.79],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-8a03e9dff08a","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"2443e73be7ce3203408d7398c997fe6ec7cebd9f","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"373e5e3d7c524ed1556b9292a794169bf1de27d0","shows":"a black screen with CREDIT 6","stage":"game"},{"sha1":"53f32c4acd5a522f359952ee48f138e44aee6e61","shows":"the attract-mode game on the beach, PASSAGE TIME IS","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T23:07:00+00:00","subject":"region-pcsx_rearmed-puzzle-bobble-2-japan-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":3,"40":3603,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"psxonpsp660.bin","sha1_after":"96880d1ca92a016ff054be5159bb06fe03cb4e14","sha1_staged":"96880d1ca92a016ff054be5159bb06fe03cb4e14"}],"files_probed_absent":["scph5501.bin","scph5502.bin","scph101.bin","scph7001.bin","scph1001.bin"],"fps":2800.15199910165,"fps_nominal":60.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX-ReARMed","library_version":"r26 c881679","loaded":true,"logs":[{"frame":0,"level":"info","text":"Starting PCSX-ReARMed r26l-119-gc881679 (cc 9.4.0 64bit pic ssse3 lightrec gpu=neon)"},{"frame":0,"level":"info","text":"build time: Oct 25 2026 06:43:00"},{"frame":0,"level":"info","text":"12 cpu core(s) detected"},{"frame":0,"level":"info","text":"found JP BIOS file, crc32 ff3eeb8c: <system>/scph5500.bin"},{"frame":0,"level":"info","text":"Using PIXEL_FORMAT 2"},{"frame":0,"level":"info","Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":null,"sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.62,2.94,2.94],"load_before":[2.59,2.94,2.93],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-5eba2d1d6949","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"d0c5e568fd2585ad5c0ed244c25bdacdbb596d55","shows":"the anti-piracy notice","stage":"game"},{"sha1":"4ea5612d272a8b05fabf98ed7dc4b245fe759001","shows":"the Acclaim and Taito credits text","stage":"game"},{"sha1":"ed433c340dc7ef65c8afba4434542c1827251127","shows":"the Acclaim logo","stage":"game"},{"sha1":"a909b761d6f46ec28bdf46aac874873db40396b7","shows":"the Taito logo on white","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T23:17:50+00:00","subject":"region-pcsx_rearmed-bust-a-move-2-arcade-edition-europe-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":5,"40":3605,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":2875.492607784481,"fps_nominal":50.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":null,"sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.69,2.88,2.91],"load_before":[2.66,2.88,2.91],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-806522bbd94b","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"d0c5e568fd2585ad5c0ed244c25bdacdbb596d55","shows":"the anti-piracy notice","stage":"game"},{"sha1":"4ea5612d272a8b05fabf98ed7dc4b245fe759001","shows":"the Acclaim and Taito credits text","stage":"game"},{"sha1":"ed433c340dc7ef65c8afba4434542c1827251127","shows":"the Acclaim logo","stage":"game"},{"sha1":"a909b761d6f46ec28bdf46aac874873db40396b7","shows":"the Taito logo on white","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T23:19:15+00:00","subject":"region-pcsx_rearmed-bust-a-move-2-arcade-edition-europe-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":5,"40":3605,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":["scph5500.bin","scph5501.bin","psxonpsp660.bin","scph101.bin","scph7001.bin","scph1001.bin"],"fps":2839.364485186228,"fps_nominal":50.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX-ReARMed","library_version":"r26 c881679","loaded":true,"logs":[{"frame":0,"level":"info","text":"Starting PCSX-ReARMed r26l-119-gc881679 (cc 9.4.0 64bit pic ssse3 lLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":null,"sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.49,2.85,2.91],"load_before":[2.49,2.86,2.91],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-b5ea804d466d","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"d0c5e568fd2585ad5c0ed244c25bdacdbb596d55","shows":"the anti-piracy notice","stage":"game"},{"sha1":"4ea5612d272a8b05fabf98ed7dc4b245fe759001","shows":"the Acclaim and Taito credits text","stage":"game"},{"sha1":"ed433c340dc7ef65c8afba4434542c1827251127","shows":"the Acclaim logo","stage":"game"},{"sha1":"a909b761d6f46ec28bdf46aac874873db40396b7","shows":"the Taito logo on white","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T23:21:32+00:00","subject":"region-pcsx_rearmed-bust-a-move-2-arcade-edition-europe-others","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":5,"40":3605,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"psxonpsp660.bin","sha1_after":"96880d1ca92a016ff054be5159bb06fe03cb4e14","sha1_staged":"96880d1ca92a016ff054be5159bb06fe03cb4e14"},{"path":"scph101.bin","sha1_after":"dcffe16bd90a723499ad46c641424981338d8378","sha1_staged":"dcffe16bd90a723499ad46c641424981338d8378"},{"path":"scph7001.bin","sha1_aftLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/pcsx_rearmed_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"pcsx_rearmed_libretro.so","library_name":"PCSX-ReARMed","library_version":"r26 c881679","repo":null,"sha256":"bfda3f667f8ea8c2f5cc939b970628174b6f491ad32d7f6b143728322df46af6"},"emulator":"pcsx_rearmed","flags":[],"frontend":{"commit":"6bbf0f137cfbf390d4305362238608fce0152df0","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.89,3.15,3.07],"load_before":[2.77,3.14,3.07],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-1ebebc461356","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":["^found (US|EU|JP) BIOS file, crc32 "],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"d0c5e568fd2585ad5c0ed244c25bdacdbb596d55","shows":"the anti-piracy notice","stage":"game"},{"sha1":"4ea5612d272a8b05fabf98ed7dc4b245fe759001","shows":"the Acclaim and Taito credits text","stage":"game"},{"sha1":"ed433c340dc7ef65c8afba4434542c1827251127","shows":"the Acclaim logo","stage":"game"},{"sha1":"a909b761d6f46ec28bdf46aac874873db40396b7","shows":"the Taito logo on white","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T23:28:09+00:00","subject":"region-pcsx_rearmed-bust-a-move-2-arcade-edition-europe-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"23":1,"35":1,"36":1,"37":5,"40":3605,"45":1,"51":1,"57":1,"59":1,"62":1,"63":1,"69":1,"8":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":["scph5500.bin","scph5501.bin","psxonpsp660.bin","scph101.bin","scph7001.bin","scph1001.bin"],"fps":2771.7008044876056,"fps_nominal":50.0,"frames":3600,"input_pressed":0,"input_queries":460800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"PCSX-ReARMed","library_version":"r26 c881679","loaded":true,"logs":[{"frame":0,"level":"info","text":"Starting PCSX-ReARMed r26l-119-gc881679 (cc 9.4.0 64bit pic ssse3Line truncated
|
||||
@@ -3,3 +3,30 @@
|
||||
{"check":{"claim":"swanstation opens ps1_rom.bin as ps1_rom.bin","method":"ps1_rom.bin staged as ps1_rom.bin, against nothing there, 3600 frames of Bust-A-Move 2 - Arcade Edition (USA). The files the core opened are read from strace.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[10,"33ef0e3028294489c17de8b4dde3048383549dc2"],[20,"e66c21611814a83a8d91f8e1ae83ec2679781373"],[30,"072c5eab08091f3e27874d1a1614a6b66e973787"],[40,"b064548a1ae30980944621fd61e74860b7c2e97e"],[50,"c92e7214dcfea5264ab03e6447c530f443168420"],[60,"769bb96721746fe88b295346a9dc75dd996c8329"],[70,"f369597de01ed10be074b57cd6769caa6707cd94"],[80,"fac01ee8c2c421edf7a4cccfea93da716bea3d88"],[90,"10ee5fea0c82672a6e7e6ecb1e86371bbd34f607"],[100,"2c2abdf70f5c6a906b5e75c59509626bff954934"],[110,"fbf632b4e81fa0ddcaa53b8d59fdf3260d374554"],[120,"3c9be08da1d7853da09cb8bd79708dadfbe35acc"],[130,"e664af3c889e73aa501f7671a54054650d2b6b61"],[140,"9b54f2de7fb75e75846f250bd7abb748de1a477e"],[150,"e50a85fea5654599409f196d1cc0b825cf950fcb"],[160,"7c4bc077108563c81593c4f0c126d94ee5d67364"],[170,"f984202c04722fc8668f374a62cfb7c4d2023c08"],[180,"4a32e1f3e836b0dbb54c267a9e9710814d7a93d2"],[190,"25f248219d0d139236776b725daad917fa6178f7"],[200,"bf0c472bf3d7a9bcb435d821e05ac0037373af8f"],[210,"9c6be0c9b8fac287778dbc2b45df4d132d50b359"],[220,"84a7829a4078ea142f5004681a8cd8ba0f64f772"],[230,"4010d3f53696560c8b1577e168fd8bcd01f89056"],[240,"7046e2f6bda4b360485722ade2c8c94824685540"],[250,"12c3f670812a586f983758491fce0ce1968e4523"],[260,"12c3f670812a586f983758491fce0ce1968e4523"],[270,"12c3f670812a586f983758491fce0ce1968e4523"],[280,"12c3f670812a586f983758491fce0ce1968e4523"],[290,"12c3f670812a586f983758491fce0ce1968e4523"],[300,"12c3f670812a586f983758491fce0ce1968e4523"],[310,"12c3f670812a586f983758491fce0ce1968e4523"],[320,"12c3f670812a586f983758491fce0ce1968e4523"],[330,"12c3f670812a586f983758491fce0ce1968e4523"],[340,"12c3f670812a586f983758491fce0ce1968e4523"],[350,"12c3f670812a586f983758491fce0ce1968e4523"],[360,"12c3f670812a586f983758491fce0ce1968e4523"],[370,"12c3f670812a586f983758491fce0ce1968e4523"],[380,"12c3f670812a586f983758491fce0ce1968e4523"],[390,"12c3f670812a586f983758491fce0ce1968e4523"],[400,"12c3f670812a586f983758491fce0ce1968e4523"],[410,"12c3f670812a586f983758491fce0ce1968e4523"],[420,"12c3f670812a586f983758491fce0ce1968e4523"],[430,"12c3f670812a586f983758491fce0ce1968e4523"],[440,"12c3f670812a586f983758491fce0ce1968e4523"],[450,"12c3f670812a586f983758491fce0ce1968e4523"],[460,"12c3f670812a586f983758491fce0ce1968e4523"],[470,"12c3f670812a586f983758491fce0ce1968e4523"],[480,"12c3f670812a586f983758491fce0ce1968e4523"],[490,"12c3f670812a586f983758491fce0ce1968e4523"],[500,"12c3f670812a586f983758491fce0ce1968e4523"],[510,"12c3f670812a586f983758491fce0ce1968e4523"],[520,"12c3f670812a586f983758491fce0ce1968e4523"],[530,"12c3f670812a586f983758491fce0ce1968e4523"],[540,"12c3f670812a586f983758491fce0ce1968e4523"],[550,"12c3f670812a586f983758491fce0ce1968e4523"],[560,"12c3f670812a586f983758491fce0ce1968e4523"],[570,"12c3f670812a586f983758491fce0ce1968e4523"],[580,"12c3f670812a586f983758491fce0ce1968e4523"],[590,"12c3f670812a586f983758491fce0ce1968e4523"],[600,"12c3f670812a586f983758491fce0ce1968e4523"],[610,"12c3f670812a586f983758491fce0ce1968e4523"],[620,"12c3f670812a586f983758491fce0ce1968e4523"],[630,"12c3f670812a586f983758491fce0ce1968e4523"],[640,"12c3f670812a586f983758491fce0ce1968e4523"],[650,"12c3f670812a586f983758491fce0ce1968e4523"],[660,"12c3f670812a586f983758491fce0ce1968e4523"],[670,"12c3f670812a586f983758491fce0ce1968e4523"],[680,"12c3f670812a586f983758491fce0ce1968e4523"],[690,"12c3f670812a586f983758491fce0ce1968e4523"],[700,"12c3f670812a586f983758491fce0ce1968e4523"],[710,"12c3f670812a586f983758491fce0ce1968e4523"],[720,"12c3f670812a586f983758491fce0ce1968e4523"],[730,"12c3f670812a586f983758491fce0ce1968e4523"],[740,"12c3f670812a586f983758491fce0ce1968e4523"],[750,"12c3f670812a586f983758491fce0ce1968e4523"],[760,"12c3f670812a586f983758491fce0ce1968e4523"],[770,"12c3f670812a586f983758491fce0ce1968e4523"],[780,"12c3f670812a586f983758491fce0ce1968e4523"],[790,"12c3f670812a586f983758491fce0ce1968e4523"],[800,"12c3f670812a586f983758491fce0ce1968e4523"],[810,"12c3f670812a586f983758491fce0ce1968e4523"],[820,"12c3f670812a586f983758491fce0ce1968e4523"],[830,"12c3f670812a586f983758491fce0ce1968e4523"],[840,"12c3f670812a586f983758491fce0ce1968e4523"],[850,"12c3f670812a586f983758491fce0ce1968e4523"],[860,"12c3f670812a586f983758491fce0ce1968e4523"],[870,"12c3f670812a586f983758491fce0ce1968e4523"],[880,"12c3f670812a586f983758491fce0ce1968e4523"],[890,"12c3f670812a586f983758491fce0ce1968e4523"],[900,"12c3f670812a586f983758491fce0ce1968e4523"],[910,"12c3f670812a586f983758491fce0ce1968e4523"],[920,"12c3f670812a586f983758491fce0ce1968e4523"],[930,"12c3f670812a586f983758491fce0ce1968e4523"],[940,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[950,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[960,"e5af1f2Line truncated
|
||||
{"check":{"claim":"swanstation opens psxonpsp660.bin as psxonpsp660.bin","method":"psxonpsp660.bin staged as psxonpsp660.bin, against nothing there, 3600 frames of Bust-A-Move 2 - Arcade Edition (USA). The files the core opened are read from strace.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[10,"33ef0e3028294489c17de8b4dde3048383549dc2"],[20,"e66c21611814a83a8d91f8e1ae83ec2679781373"],[30,"072c5eab08091f3e27874d1a1614a6b66e973787"],[40,"b064548a1ae30980944621fd61e74860b7c2e97e"],[50,"c92e7214dcfea5264ab03e6447c530f443168420"],[60,"769bb96721746fe88b295346a9dc75dd996c8329"],[70,"f369597de01ed10be074b57cd6769caa6707cd94"],[80,"fac01ee8c2c421edf7a4cccfea93da716bea3d88"],[90,"10ee5fea0c82672a6e7e6ecb1e86371bbd34f607"],[100,"2c2abdf70f5c6a906b5e75c59509626bff954934"],[110,"fbf632b4e81fa0ddcaa53b8d59fdf3260d374554"],[120,"3c9be08da1d7853da09cb8bd79708dadfbe35acc"],[130,"e664af3c889e73aa501f7671a54054650d2b6b61"],[140,"9b54f2de7fb75e75846f250bd7abb748de1a477e"],[150,"e50a85fea5654599409f196d1cc0b825cf950fcb"],[160,"7c4bc077108563c81593c4f0c126d94ee5d67364"],[170,"f984202c04722fc8668f374a62cfb7c4d2023c08"],[180,"4a32e1f3e836b0dbb54c267a9e9710814d7a93d2"],[190,"25f248219d0d139236776b725daad917fa6178f7"],[200,"bf0c472bf3d7a9bcb435d821e05ac0037373af8f"],[210,"9c6be0c9b8fac287778dbc2b45df4d132d50b359"],[220,"84a7829a4078ea142f5004681a8cd8ba0f64f772"],[230,"4010d3f53696560c8b1577e168fd8bcd01f89056"],[240,"7046e2f6bda4b360485722ade2c8c94824685540"],[250,"12c3f670812a586f983758491fce0ce1968e4523"],[260,"12c3f670812a586f983758491fce0ce1968e4523"],[270,"12c3f670812a586f983758491fce0ce1968e4523"],[280,"12c3f670812a586f983758491fce0ce1968e4523"],[290,"12c3f670812a586f983758491fce0ce1968e4523"],[300,"12c3f670812a586f983758491fce0ce1968e4523"],[310,"12c3f670812a586f983758491fce0ce1968e4523"],[320,"12c3f670812a586f983758491fce0ce1968e4523"],[330,"12c3f670812a586f983758491fce0ce1968e4523"],[340,"12c3f670812a586f983758491fce0ce1968e4523"],[350,"12c3f670812a586f983758491fce0ce1968e4523"],[360,"12c3f670812a586f983758491fce0ce1968e4523"],[370,"12c3f670812a586f983758491fce0ce1968e4523"],[380,"12c3f670812a586f983758491fce0ce1968e4523"],[390,"12c3f670812a586f983758491fce0ce1968e4523"],[400,"12c3f670812a586f983758491fce0ce1968e4523"],[410,"12c3f670812a586f983758491fce0ce1968e4523"],[420,"12c3f670812a586f983758491fce0ce1968e4523"],[430,"12c3f670812a586f983758491fce0ce1968e4523"],[440,"12c3f670812a586f983758491fce0ce1968e4523"],[450,"12c3f670812a586f983758491fce0ce1968e4523"],[460,"12c3f670812a586f983758491fce0ce1968e4523"],[470,"12c3f670812a586f983758491fce0ce1968e4523"],[480,"12c3f670812a586f983758491fce0ce1968e4523"],[490,"12c3f670812a586f983758491fce0ce1968e4523"],[500,"12c3f670812a586f983758491fce0ce1968e4523"],[510,"12c3f670812a586f983758491fce0ce1968e4523"],[520,"12c3f670812a586f983758491fce0ce1968e4523"],[530,"12c3f670812a586f983758491fce0ce1968e4523"],[540,"12c3f670812a586f983758491fce0ce1968e4523"],[550,"12c3f670812a586f983758491fce0ce1968e4523"],[560,"12c3f670812a586f983758491fce0ce1968e4523"],[570,"12c3f670812a586f983758491fce0ce1968e4523"],[580,"12c3f670812a586f983758491fce0ce1968e4523"],[590,"12c3f670812a586f983758491fce0ce1968e4523"],[600,"12c3f670812a586f983758491fce0ce1968e4523"],[610,"12c3f670812a586f983758491fce0ce1968e4523"],[620,"12c3f670812a586f983758491fce0ce1968e4523"],[630,"12c3f670812a586f983758491fce0ce1968e4523"],[640,"12c3f670812a586f983758491fce0ce1968e4523"],[650,"12c3f670812a586f983758491fce0ce1968e4523"],[660,"12c3f670812a586f983758491fce0ce1968e4523"],[670,"12c3f670812a586f983758491fce0ce1968e4523"],[680,"12c3f670812a586f983758491fce0ce1968e4523"],[690,"12c3f670812a586f983758491fce0ce1968e4523"],[700,"12c3f670812a586f983758491fce0ce1968e4523"],[710,"12c3f670812a586f983758491fce0ce1968e4523"],[720,"12c3f670812a586f983758491fce0ce1968e4523"],[730,"12c3f670812a586f983758491fce0ce1968e4523"],[740,"12c3f670812a586f983758491fce0ce1968e4523"],[750,"12c3f670812a586f983758491fce0ce1968e4523"],[760,"12c3f670812a586f983758491fce0ce1968e4523"],[770,"12c3f670812a586f983758491fce0ce1968e4523"],[780,"12c3f670812a586f983758491fce0ce1968e4523"],[790,"12c3f670812a586f983758491fce0ce1968e4523"],[800,"12c3f670812a586f983758491fce0ce1968e4523"],[810,"12c3f670812a586f983758491fce0ce1968e4523"],[820,"12c3f670812a586f983758491fce0ce1968e4523"],[830,"12c3f670812a586f983758491fce0ce1968e4523"],[840,"12c3f670812a586f983758491fce0ce1968e4523"],[850,"12c3f670812a586f983758491fce0ce1968e4523"],[860,"12c3f670812a586f983758491fce0ce1968e4523"],[870,"12c3f670812a586f983758491fce0ce1968e4523"],[880,"12c3f670812a586f983758491fce0ce1968e4523"],[890,"12c3f670812a586f983758491fce0ce1968e4523"],[900,"12c3f670812a586f983758491fce0ce1968e4523"],[910,"12c3f670812a586f983758491fce0ce1968e4523"],[920,"12c3f670812a586f983758491fce0ce1968e4523"],[930,"12c3f670812a586f983758491fce0ce1968e4523"],[940,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[950,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":"https://github.com/libretro/swanstation","sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"fdcf120a7d584f07ba3fbbc8feea507c8ac368ca","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"a3182429ef3e86a03d23ae76326cd4d7b33a12fd18d28ce60c7231fe8ba5fe6e"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.28,2.51,3.19],"load_before":[2.39,2.53,3.2],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-fab739d8fbb6","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":0,"frames":1800,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1"],"options":{},"presses":[],"repetitions":5,"warmup":600},"kind":"bench","record_version":3,"recorded_at":"2026-10-27T11:08:32+00:00","subject":"bench-swanstation-bust-a-move-2-arcade-edition-usa","supersedes":null,"timing":{"fps":{"max":2378.8980515207204,"mean":2330.070066463387,"median":2335.1319947212696,"min":2258.6641821703206,"raw":[2351.6114770653353,2326.0446268392902,2258.6641821703206,2378.8980515207204,2335.1319947212696],"stdev":44.69013338817331},"ms_per_frame":{"max":0.44273956610898796,"mean":0.42929965154811117,"median":0.4282413166624287,"min":0.42036269665307674,"raw":[0.4252403127611615,0.42991436555490103,0.44273956610898796,0.42036269665307674,0.4282413166624287],"stdev":0.008343809735773854}},"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":2006,"45":3,"47":2400,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":null,"files_probed_absent":null,"fps":2351.6114770653353,"fps_nominal":59.81733322143555,"frames":1800,"input_pressed":0,"input_queries":67200,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"SwanStation","library_version":"1.0.0 631f0fb","loaded":true,"logs":[{"frame":0,"level":"warn","text":"[InitDiskControlInterface] Failed to set disk control interface"},{"frame":0,"level":"info","text":"[System] Loading CD image '<content>/Bust-A-Move 2 - Arcade Edition (USA).cue'..."},{"frame":0,"level":"info","text":"[System] Auto-detected console NTSC-U region for '<content>/Bust-A-Move 2 - Arcade Edition (USA).cue' (region NTSC-U)"},{"frame":0,"level":"info","text":"[System] Console Region: NTSC-U/C (US, Canada)"},{"frame":0,"level":"info","text":"[Common::MemoryArena] File mapping name: swanstation_2_0x7e39e7cdfc00"},{"frame":0,"level":"info","text":"[CDROMAsLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":"https://github.com/libretro/swanstation","sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"38dd7401fdfbaa4ae98bda3ea901c80f24d78da7","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6f18a8ff979e4a5b182d164aae3448818be0ec5ec596df3db636afe9bae44266"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.63,3.19,4.03],"load_before":[2.59,3.22,4.06],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-717f780131fc","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"84a3435916d67c64d1d7a12305d7bea63dcf7f1467ba5cd775cd35c5887f9532"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T14:48:28+00:00","subject":"references-swanstation-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3206,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":238.81468042894718,"fps_nominal":59.81733322143555,"frames":3600,"input_pressed":0,"input_queries":100800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"SwanStation","library_version":"1.0.0 631f0fb","loaded":true,"logs":[{"frame":0,"level":"warn","text":"[InitDiskControlInterface] Failed to set disk control interface"},{"frame":0,"level":"info","text":"[System] Loading CD image '<content>/Bust-A-Move 2 - Arcade Edition (USA).cue'..."},{"frame":0,"level":"info","text":"[System] Auto-detected console NTSC-U region for '<content>/Bust-A-Move 2 - Arcade Edition (USA).cue' (region NTSC-U)"},{"frame":0,"level":"info","text":"[System] Console Region: NTSC-U/C (US, Canada)"},{"frame":0,"level":"info","text":"[Common::MemoryArena] File mapping name: swanstation_5_0x7454472dfc00"},{"frame":0,"level":"info","text":"[CDROMAsyncReader] Read thread started with readahead of 8 sectors"},{"frame":0,"level":"info","text":"[HostInterface] Renderer = OpenGL"},{"frame":0,"level":"info","text":"Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":"https://github.com/libretro/swanstation","sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"a17406edaeb01d334d15f3a4e6fa4950c6d0b727","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6aaa716a44ccf5e245f478c560f5718f6af3f0c8ded2e02b05f364adf81df9c8"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.3,2.59,2.7],"load_before":[2.23,2.59,2.7],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-871d035a10c6","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"593a6e2600946040fefd6eb9aebdc5c0d56f0555","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"f89e40011815ab1c50dac718cd53c5fcd675ccb67d2e611acff717e3cbaf2bbc"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T16:50:22+00:00","subject":"files-swanstation-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3206,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":1578.3032144076965,"fps_nominal":59.81733322143555,"frames":3600,"input_pressed":0,"input_queries":100800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"SwanStation","library_version":Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":"https://github.com/libretro/swanstation","sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"a17406edaeb01d334d15f3a4e6fa4950c6d0b727","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"6aaa716a44ccf5e245f478c560f5718f6af3f0c8ded2e02b05f364adf81df9c8"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.35,2.6,2.7],"load_before":[2.3,2.59,2.7],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-ba53cd101c61","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"593a6e2600946040fefd6eb9aebdc5c0d56f0555","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"f89e40011815ab1c50dac718cd53c5fcd675ccb67d2e611acff717e3cbaf2bbc"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T16:50:28+00:00","subject":"none-swanstation-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3327,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[],"files_probed_absent":["scph5501.bin"],"fps":1529.4361663598859,"fps_nominal":59.81733322143555,"frames":3600,"input_pressed":0,"input_queries":100800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"SwanStation","library_version":"1.0.0 631f0fb","loaded":true,"logs":[{"frame":0,"level":"warn","text":"[InitDiskControlInterface] Failed to set disk controLine truncated
|
||||
{"check":{"claim":"swanstation boots Bust-A-Move 2 - Arcade Edition (USA) with ps1_rom.bin alone and refuses a wrong file under its name","method":"ps1_rom.bin alone as ps1_rom.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[10,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[20,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[30,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[40,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[50,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[60,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[70,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[80,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[90,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[100,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[110,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[120,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[130,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[140,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[150,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[160,"154688dd18ae734dba85ab19ad46d7118ab2f2a6"],[170,"6e7a6325516bfb954c86172a8368f4c15fe3aace"],[180,"5758e30df01e5eb4afc2665885e50c04e427d631"],[190,"81effa14e5507700b7459f46e670036c54e14a9b"],[200,"69ccdfe60203b9de19c8c690dc7bda4b9b79da44"],[210,"620c1e8d887adb3553f83845846935ac0bd7331f"],[220,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[230,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[240,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[250,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[260,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[270,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[280,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[290,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[300,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[310,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[320,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[330,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[340,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[350,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[360,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[370,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[380,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[390,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[400,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[410,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[420,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[430,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[440,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[450,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[460,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[470,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[480,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[490,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[500,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[510,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[520,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[530,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[540,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[550,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[560,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[570,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[580,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[590,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[600,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[610,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[620,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[630,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[640,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[650,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[660,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[670,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[680,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[690,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[700,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[710,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[720,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[730,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[740,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[750,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[760,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[770,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[780,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[790,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[800,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[810,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[820,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[830,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[840,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[850,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[860,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[870,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[880,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[890,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[900,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[910,"e5af1f2023d0d729ce7aabfLine truncated
|
||||
{"check":{"claim":"every copy of ps1_rom.bin boots Bust-A-Move 2 - Arcade Edition (USA) on swanstation","method":"Each copy the collection holds staged alone as ps1_rom.bin, each run 2 times for 3600 frames. The boot oracle judges each copy.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[10,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[20,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[30,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[40,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[50,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[60,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[70,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[80,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[90,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[100,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[110,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[120,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[130,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[140,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[150,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[160,"154688dd18ae734dba85ab19ad46d7118ab2f2a6"],[170,"6e7a6325516bfb954c86172a8368f4c15fe3aace"],[180,"5758e30df01e5eb4afc2665885e50c04e427d631"],[190,"81effa14e5507700b7459f46e670036c54e14a9b"],[200,"69ccdfe60203b9de19c8c690dc7bda4b9b79da44"],[210,"620c1e8d887adb3553f83845846935ac0bd7331f"],[220,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[230,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[240,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[250,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[260,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[270,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[280,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[290,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[300,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[310,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[320,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[330,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[340,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[350,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[360,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[370,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[380,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[390,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[400,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[410,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[420,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[430,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[440,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[450,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[460,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[470,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[480,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[490,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[500,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[510,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[520,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[530,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[540,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[550,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[560,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[570,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[580,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[590,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[600,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[610,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[620,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[630,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[640,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[650,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[660,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[670,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[680,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[690,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[700,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[710,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[720,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[730,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[740,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[750,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[760,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[770,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[780,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[790,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[800,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[810,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[820,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[830,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[840,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[850,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[860,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[870,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[880,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[890,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[900,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[910,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[920,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[930,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[940,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[950,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[960,Line truncated
|
||||
{"check":{"claim":"swanstation boots Bust-A-Move 2 - Arcade Edition (USA) with psxonpsp660.bin alone and refuses a wrong file under its name","method":"psxonpsp660.bin alone as psxonpsp660.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[10,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[20,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[30,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[40,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[50,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[60,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[70,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[80,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[90,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[100,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[110,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[120,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[130,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[140,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[150,"6e18adf4d2fa0dfb80cbb7e7fb45fa3b6599e5c6"],[160,"e02d0fd225cebfa24cb55876875838468df1f85c"],[170,"f82237bc74029b208d0d9ee42708be7e2993b1b0"],[180,"1af84636d8a821c425d0d16996bc731c79ea2756"],[190,"5b7db9932cf80eeecb90e91b0f32fa3e9e9b8221"],[200,"1e70b268416b6d2a98423386b40d4743f3a4d3b7"],[210,"e8baae73b5a4b6fe3c75378b61202bf52390a002"],[220,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[230,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[240,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[250,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[260,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[270,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[280,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[290,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[300,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[310,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[320,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[330,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[340,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[350,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[360,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[370,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[380,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[390,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[400,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[410,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[420,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[430,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[440,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[450,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[460,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[470,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[480,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[490,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[500,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[510,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[520,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[530,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[540,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[550,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[560,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[570,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[580,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[590,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[600,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[610,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[620,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[630,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[640,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[650,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[660,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[670,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[680,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[690,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[700,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[710,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[720,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[730,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[740,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[750,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[760,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[770,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[780,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[790,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[800,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[810,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[820,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[830,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[840,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[850,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[860,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[870,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[880,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[890,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[900,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[910,"180ff6f4954Line truncated
|
||||
{"check":{"claim":"swanstation boots Bust-A-Move 2 - Arcade Edition (USA) with scph5501.bin alone and refuses a wrong file under its name","method":"scph5501.bin alone as scph5501.bin, then 524288 zero bytes and its first 262144 bytes, then scph5500.bin, scph5502.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[10,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[20,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[30,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[40,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[50,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[60,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[70,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[80,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[90,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[100,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[110,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[120,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[130,"7046e2f6bda4b360485722ade2c8c94824685540"],[140,"1a79c3f6e9f45ef06531acea2b4e2e30d3d8b8e8"],[150,"3c6f9678bfe5d0433aebb9ae3e9efbbfc5fd62c2"],[160,"84a7829a4078ea142f5004681a8cd8ba0f64f772"],[170,"6ae3c4c197eaf1014f7e903f708189d3bdb62e96"],[180,"5b9de43af7943c200dae7a7853637de7f3092646"],[190,"2116cdc10b8f69825d5f83c0a31b80f4fe667a33"],[200,"55cf2bd572d949733bdc741a76f533963778847a"],[210,"f875f10898942a3928cb54c6ea2ee6fda17617cc"],[220,"6935cd6562626c4876f09d1ee8f4870fb260dedc"],[230,"3c6e6e92d153c5693da47ff0b333a13b9296b8d1"],[240,"bea0ea4eaceddbb833418749c2c36241f04c04ae"],[250,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[260,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[270,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[280,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[290,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[300,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[310,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[320,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[330,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[340,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[350,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[360,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[370,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[380,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[390,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[400,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[410,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[420,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[430,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[440,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[450,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[460,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[470,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[480,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[490,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[500,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[510,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[520,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[530,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[540,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[550,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[560,"cd22ca0a08ba97eccbb7fee7cd2542d22b124f8d"],[570,"2966a869a40438c373e7aec133ea8bd2984c58b7"],[580,"405513eab3403a7dca58059df27a510bdd109d7a"],[590,"e46b311640b057b5d46a3d8a14b2fbc3e83547e4"],[600,"3791f3ecf398d95f506295bacca32e2de8ea8cca"],[610,"668d9390ee00842f4178efd6f308ad1da851edb8"],[620,"3bb7e278a6d007452b329ad624ada99220b68cab"],[630,"6466c6ce12f24862251707ab72b236520f0f7dca"],[640,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[650,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[660,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[670,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[680,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[690,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[700,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[710,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[720,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[730,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[740,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[750,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[760,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[770,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[780,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[790,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[800,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[810,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[820,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[830,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[840,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[850,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[860,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[870,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[880,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[890,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[900,"593a6e26009460Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":"https://github.com/libretro/swanstation","sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"dd64434122a3f0dd88ca5908a7cafc2bceedbb98","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.56,2.8,2.97],"load_before":[2.59,2.83,2.98],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-abe38e414339","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:25:08+00:00","subject":"references-swanstation-puzzle-bobble-2-japan","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3206,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"}],"files_probed_absent":[],"fps":233.67499864014627,"fps_nominal":59.81733322143555,"frames":3600,"input_pressed":0,"input_queries":100800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"SwanStation","library_version":"1.0.0 631f0fb","loaded":true,"logs":[{"frame":0,"level":"warn","text":"[InitDiskControlInterface] Failed to set disk control interface"},{"frame":0,"level":"info","text":"[System] Loading CD image '<content>/Puzzle Bobble 2 (Japan).cue'..."},{"frame":0,"level":"info","text":"[System] Auto-detected console NTSC-J region for '<content>/Puzzle Bobble 2 (Japan).cue' (region NTSC-J)"},{"frame":0,"level":"info","text":"[System] Console Region: NTSC-J (Japan)"},{"frame":0,"level":"info","text":"[Common::MemoryArena] File mapping name: swanstation_5_0x756ff8adfc00"},{"frame":0,"level":"info","text":"[CDROMAsyncReader] Read thread started with readahead of 8 sectors"},{"frame":0,"level":"info","text":"[HostInterface] Renderer = OpenGL"},{"frame":0,"level":"info","text":"[HostInterface] Requesting hardware renderer context for OpenGL"},{"frame":0,"level":"error","text":"[RequestHardwareRendererContext] Failed to set any GL HW renderer"},{"frame":1169,"level":"info","text":"[MemoryCard] Writing memory card sector 63"},{"frame":1904,"level":"info","text":"[MemoryCard] Writing memory card sector 1"},{"frame":1910,"levLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":"https://github.com/libretro/swanstation","sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":["load average reached 3.17 (threshold 3.0)"],"frontend":{"commit":"dd64434122a3f0dd88ca5908a7cafc2bceedbb98","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[3.17,3.19,3.13],"load_before":[2.49,3.08,3.09],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-57e092562c10","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[],"file":"tests/campaign/oracle.yml","references":[],"sha256":"9f22341bc4be0d1f6dbb349010e35394aac0ba82f794c2cdf2ab0306492e799e"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T21:28:07+00:00","subject":"references-swanstation-bust-a-move-2-arcade-edition-europe","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"32":2,"35":1,"40":3185,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":242.9628131346958,"fps_nominal":49.74681854248047,"frames":3600,"input_pressed":0,"input_queries":100800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"SwanStation","library_version":"1.0.0 631f0fb","loaded":true,"logs":[{"frame":0,"level":"warn","text":"[InitDiskControlInterface] Failed to set disk control interface"},{"frame":0,"level":"info","text":"[System] Loading CD image '<content>/Bust-A-Move 2 - Arcade Edition (Europe).cue'..."},{"frame":0,"level":"info","text":"[System] Auto-detected console PAL region for '<content>/Bust-A-Move 2 - Arcade Edition (Europe).cue' (region PAL)"},{"frame":0,"level":"info","text":"[System] Console Region: PAL (Europe, Australia)"},{"frame":0,"level":"info","text":"[Common::MemoryArena] File mapping name: swanstation_5_0x71f0c6cdfc00"},{"frame":0,"level":"info","text":"[CDROMAsyncReader] Read thread started with readaheaLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":null,"sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"e6f7ea8f07ea6cf5ae3d8e6affad0ab877f27b4e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.34,2.36,2.32],"load_before":[2.29,2.35,2.32],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-679c3f0f9b33","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"593a6e2600946040fefd6eb9aebdc5c0d56f0555","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"eb8c851948806afcf075ea90ddd16727b662e1b59c4821ae56c00706e45576c9"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:17:42+00:00","subject":"region-swanstation-bust-a-move-2-arcade-edition-usa-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3206,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":1564.6818510526125,"fps_nominal":59.81733322143555,"frames":3600,"inpLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":null,"sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"d893823fe16b894a36e2ae464ffbf4cf624f1135","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.38,2.36,2.33],"load_before":[2.38,2.36,2.33],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-15dfcbf40979","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"593a6e2600946040fefd6eb9aebdc5c0d56f0555","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:19:05+00:00","subject":"region-swanstation-bust-a-move-2-arcade-edition-usa-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3206,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":1596.4653901629467,"fps_nominal":59.81733322143555,"frames":3600,"inpuLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":null,"sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.46,2.39,2.34],"load_before":[2.5,2.4,2.34],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-8e44763fdeba","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"593a6e2600946040fefd6eb9aebdc5c0d56f0555","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:20:13+00:00","subject":"region-swanstation-bust-a-move-2-arcade-edition-usa-others","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3477,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":null,"sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.89,2.5,2.38],"load_before":[2.89,2.5,2.38],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-f13fcb6e40ef","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"593a6e2600946040fefd6eb9aebdc5c0d56f0555","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:21:50+00:00","subject":"region-swanstation-bust-a-move-2-arcade-edition-usa-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3206,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":1591.4043413785425,"fps_nominal":59.81733322143555,"frames":3600,"inputLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":null,"sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.27,2.34,2.33],"load_before":[2.3,2.35,2.33],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-61acd5aba9b1","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"9c168a8d6a6c706157307910e2b46039d019e48b","shows":"the PlayStation logo licensed by Sony Computer Entertainment Inc.","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"2443e73be7ce3203408d7398c997fe6ec7cebd9f","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"373e5e3d7c524ed1556b9292a794169bf1de27d0","shows":"a black screen with CREDIT 6","stage":"game"},{"sha1":"53f32c4acd5a522f359952ee48f138e44aee6e61","shows":"the attract-mode game on the beach, PASSAGE TIME IS","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:23:49+00:00","subject":"region-swanstation-puzzle-bobble-2-japan-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3206,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"}],"files_probed_absent":[],"fps":1481.3801020520157,"fps_nominal":59.81733322143555,"frames":3600,"input_pressed":0,"input_queries":100800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"SwanStation","library_version":"1.0.0 631f0fb","loaded":true,"logs":[{"frame":0,"level":"warn","text":"[InitDiskControlInterface] Failed to set disk control interface"},{"frame":0,"level":"info","text":"[System] Loading CD image '<content>/Puzzle Bobble 2 (Japan).cue'..."},{"frame":0,"level":"info","text":"[System] Auto-detected consLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":null,"sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.32,2.33,2.33],"load_before":[2.32,2.33,2.33],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-f3c29f47b94b","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"9c168a8d6a6c706157307910e2b46039d019e48b","shows":"the PlayStation logo licensed by Sony Computer Entertainment Inc.","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"2443e73be7ce3203408d7398c997fe6ec7cebd9f","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"373e5e3d7c524ed1556b9292a794169bf1de27d0","shows":"a black screen with CREDIT 6","stage":"game"},{"sha1":"53f32c4acd5a522f359952ee48f138e44aee6e61","shows":"the attract-mode game on the beach, PASSAGE TIME IS","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:25:15+00:00","subject":"region-swanstation-puzzle-bobble-2-japan-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3206,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"}],"files_probed_absent":[],"fps":1471.1162975420486,"fps_nominal":59.81733322143555,"frames":3600,"input_pressed":0,"input_queries":100800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"SwanStation","library_version":"1.0.0 631f0fb","loaded":true,"logs":[{"frame":0,"level":"warn","text":"[InitDiskControlInterface] Failed to set disk control interface"},{"frame":0,"level":"info","text":"[System] Loading CD image '<content>/Puzzle Bobble 2 (Japan).cue'..."},{"frame":0,"level":"info","text":"[System] Auto-detected consLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":null,"sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.89,2.46,2.37],"load_before":[2.79,2.44,2.36],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-d26209a0fecc","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"9c168a8d6a6c706157307910e2b46039d019e48b","shows":"the PlayStation logo licensed by Sony Computer Entertainment Inc.","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"2443e73be7ce3203408d7398c997fe6ec7cebd9f","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"373e5e3d7c524ed1556b9292a794169bf1de27d0","shows":"a black screen with CREDIT 6","stage":"game"},{"sha1":"53f32c4acd5a522f359952ee48f138e44aee6e61","shows":"the attract-mode game on the beach, PASSAGE TIME IS","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:26:00+00:00","subject":"region-swanstation-puzzle-bobble-2-japan-others","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3206,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"},{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":["scph5500.bin"],"fps":1406.9133992304448,"fps_nominal":59.81733322143555,"frames":3600,"input_pressed":0,"input_queries":100800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"SwanStation","library_version":"1.0.0 631f0fb","loaded":true,"logs":[{"frame":0,"level":"warn","text":"[InitDiskControlInterface] Failed to set disk control interface"},{"frame":0,"Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":null,"sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.37,2.42,2.36],"load_before":[2.4,2.43,2.37],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-fd8ce164bbae","inputs":{"content":{"label":"Puzzle Bobble 2 (Japan)","sha1":"3b51b45b8b78777c04086fcd1ef1dd0439c365e6","size":1634,"tracks":[{"file":"Puzzle Bobble 2 (Japan) (Track 01).bin","sha1":"78418600795fac1b3378958ff80164cb100a50eb","size":28285152},{"file":"Puzzle Bobble 2 (Japan) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Puzzle Bobble 2 (Japan) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Puzzle Bobble 2 (Japan) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Puzzle Bobble 2 (Japan) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Puzzle Bobble 2 (Japan) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Puzzle Bobble 2 (Japan) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Puzzle Bobble 2 (Japan) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Puzzle Bobble 2 (Japan) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Puzzle Bobble 2 (Japan) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Puzzle Bobble 2 (Japan) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Puzzle Bobble 2 (Japan) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Puzzle Bobble 2 (Japan) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Puzzle Bobble 2 (Japan) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"9c168a8d6a6c706157307910e2b46039d019e48b","shows":"the PlayStation logo licensed by Sony Computer Entertainment Inc.","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"2443e73be7ce3203408d7398c997fe6ec7cebd9f","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"373e5e3d7c524ed1556b9292a794169bf1de27d0","shows":"a black screen with CREDIT 6","stage":"game"},{"sha1":"53f32c4acd5a522f359952ee48f138e44aee6e61","shows":"the attract-mode game on the beach, PASSAGE TIME IS","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:27:38+00:00","subject":"region-swanstation-puzzle-bobble-2-japan-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3206,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"}],"files_probed_absent":[],"fps":1467.1072560128605,"fps_nominal":59.81733322143555,"frames":3600,"input_pressed":0,"input_queries":100800,"isolation":"bwrap","last_frame_size":[320,240],"library_name":"SwanStation","library_version":"1.0.0 631f0fb","loaded":true,"logs":[{"frame":0,"level":"warn","text":"[InitDiskControlInterface] Failed to set disk control interface"},{"frame":0,"level":"info","text":"[System] Loading CD image '<content>/Puzzle Bobble 2 (Japan).cue'..."},{"frame":0,"level":"info","text":"[System] Auto-detected consLine truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":null,"sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"a123e7d71f892ae860ede66ce61b8624ace9386e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.34,2.4,2.36],"load_before":[2.37,2.4,2.36],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-06a9fd6e8315","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"e6f4f8524f3c8a47d5dba0d33f63c64dcebccde7","shows":"the PlayStation logo licensed by Sony Computer Entertainment Europe","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"d0c5e568fd2585ad5c0ed244c25bdacdbb596d55","shows":"the anti-piracy notice","stage":"game"},{"sha1":"4ea5612d272a8b05fabf98ed7dc4b245fe759001","shows":"the Acclaim and Taito credits text","stage":"game"},{"sha1":"ed433c340dc7ef65c8afba4434542c1827251127","shows":"the Acclaim logo","stage":"game"},{"sha1":"a909b761d6f46ec28bdf46aac874873db40396b7","shows":"the Taito logo on white","stage":"game"}],"sha256":"22b009c754169d6caf1f5f8979065914ed40118cf2fa12d46da0fcbc2f697437"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:28:45+00:00","subject":"region-swanstation-bust-a-move-2-arcade-edition-europe-full","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"32":2,"35":1,"40":3185,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":1481.4597729102663,"fps_nominal":49.74681854248047Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":null,"sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"f2f890602dcd1407a5c7a3a5f9c145caa383d843","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.33,2.42,2.37],"load_before":[2.36,2.43,2.38],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-65464d86bef7","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"e6f4f8524f3c8a47d5dba0d33f63c64dcebccde7","shows":"the PlayStation logo licensed by Sony Computer Entertainment Europe","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"d0c5e568fd2585ad5c0ed244c25bdacdbb596d55","shows":"the anti-piracy notice","stage":"game"},{"sha1":"4ea5612d272a8b05fabf98ed7dc4b245fe759001","shows":"the Acclaim and Taito credits text","stage":"game"},{"sha1":"ed433c340dc7ef65c8afba4434542c1827251127","shows":"the Acclaim logo","stage":"game"},{"sha1":"a909b761d6f46ec28bdf46aac874873db40396b7","shows":"the Taito logo on white","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:30:06+00:00","subject":"region-swanstation-bust-a-move-2-arcade-edition-europe-own","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"32":2,"35":1,"40":3185,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":1497.1183341722003,"fps_nominal":49.7468185424804Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":null,"sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"f2f890602dcd1407a5c7a3a5f9c145caa383d843","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[1.92,1.95,2.16],"load_before":[1.91,1.95,2.16],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-f8ac14dc774d","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"e6f4f8524f3c8a47d5dba0d33f63c64dcebccde7","shows":"the PlayStation logo licensed by Sony Computer Entertainment Europe","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"d0c5e568fd2585ad5c0ed244c25bdacdbb596d55","shows":"the anti-piracy notice","stage":"game"},{"sha1":"4ea5612d272a8b05fabf98ed7dc4b245fe759001","shows":"the Acclaim and Taito credits text","stage":"game"},{"sha1":"ed433c340dc7ef65c8afba4434542c1827251127","shows":"the Acclaim logo","stage":"game"},{"sha1":"a909b761d6f46ec28bdf46aac874873db40396b7","shows":"the Taito logo on white","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:37:08+00:00","subject":"region-swanstation-bust-a-move-2-arcade-edition-europe-others","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"32":3534,"35":1,"40":3490,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5500.bin","sha1_after":"b05def971d8ec59f346f2d9ac21fb742e3eb6917","sha1_staged":"b05def971d8ec59f346f2d9ac21fb742e3eb6917"},{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f3Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":null,"sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"5be7ee0760bbf2445dc9116d4da74295a974ea6e","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.95,3.09,2.81],"load_before":[2.94,3.09,2.81],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-0c06f75b6c25","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (Europe)","sha1":"fbfb904cdb7a0e25a659980a5ed1206298bc7a1e","size":1992,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 01).bin","sha1":"eb618f16522671450b00317df195b36550a2ffdd","size":28689696},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (Europe) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"e6f4f8524f3c8a47d5dba0d33f63c64dcebccde7","shows":"the PlayStation logo licensed by Sony Computer Entertainment Europe","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"d0c5e568fd2585ad5c0ed244c25bdacdbb596d55","shows":"the anti-piracy notice","stage":"game"},{"sha1":"4ea5612d272a8b05fabf98ed7dc4b245fe759001","shows":"the Acclaim and Taito credits text","stage":"game"},{"sha1":"ed433c340dc7ef65c8afba4434542c1827251127","shows":"the Acclaim logo","stage":"game"},{"sha1":"a909b761d6f46ec28bdf46aac874873db40396b7","shows":"the Taito logo on white","stage":"game"}],"sha256":"01899eb8623a201eb7fb1f5fb850b8f7766381d1f5878371d42aea54c2841d92"},"presses":[],"repetitions":1,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:49:41+00:00","subject":"region-swanstation-bust-a-move-2-arcade-edition-europe-pack","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"32":2,"35":1,"40":3185,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5502.bin","sha1_after":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0","sha1_staged":"f6bc2d1f5eb6593de7d089c425ac681d6fffd3f0"}],"files_probed_absent":[],"fps":1450.5398569948416,"fps_nominal":49.746818542480Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":"https://github.com/libretro/swanstation","sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"f2d474d86673d09275b49a5c052c6db0aad1e872","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.37,2.34,2.33],"load_before":[2.4,2.35,2.33],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-a18c4388b3e3","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"593a6e2600946040fefd6eb9aebdc5c0d56f0555","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"a0d7d28caa5f147cc3199d6dca5d1500d9a05b91dd234eb6e5900bdd0245a555"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:25:35+00:00","subject":"files-swanstation-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3206,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[{"path":"scph5501.bin","sha1_after":"0555c6fae8906f3f09baf5988f00e55f88e9f30b","sha1_staged":"0555c6fae8906f3f09baf5988f00e55f88e9f30b"}],"files_probed_absent":[],"fps":1608.9248038542762,"fps_nominal":59.817Line truncated
|
||||
{"core":{"artifact":"https://buildbot.libretro.com/nightly/linux/x86_64/latest/swanstation_libretro.so.zip","build_command":null,"commit":null,"compiler":["GCC: (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0"],"file":"swanstation_libretro.so","library_name":"SwanStation","library_version":"1.0.0 631f0fb","repo":"https://github.com/libretro/swanstation","sha256":"fc65bb2d662c3ad762b611a62ac578f78efd260431d3b8c090f0eb40887a77ea"},"emulator":"swanstation","flags":[],"frontend":{"commit":"f2d474d86673d09275b49a5c052c6db0aad1e872","script":"scripts/core_probe.py","script_modified":false,"script_sha256":"88bab307dab8da3ebdab4865ebe24b16982343b1554ec051c6503ab9e9476057"},"host":{"cpu_count":12,"cpu_model":"13th Gen Intel(R) Core(TM) i9-13900K","kernel":"6.18.54.1-microsoft-standard-WSL2","load_after":[2.4,2.43,2.37],"load_before":[2.44,2.44,2.37],"machine":"x86_64","max_load":3.0,"os":"Linux-6.18.54.1-microsoft-standard-WSL2-x86_64-with-glibc2.39","python":"3.12.3"},"id":"2026-10-27-f9363c9e87f6","inputs":{"content":{"label":"Bust-A-Move 2 - Arcade Edition (USA)","sha1":"ed4a437a6f653cc71ad6ac0da68cc85eb093f298","size":1947,"tracks":[{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 01).bin","sha1":"de8ecb522f6fb6091e5a8f7571fa1cfdf1570a46","size":28311024},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 02).bin","sha1":"4d08db14699c9e1006e0fd64580308266bea5d4e","size":1869840},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 03).bin","sha1":"bc9073820c6caab2a1d5cc69238587e6bde475f7","size":13345248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 04).bin","sha1":"e26b0dc47797003b467891f51d8e2084d17f30d7","size":12726672},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 05).bin","sha1":"80a25117805df470e174222daad36861c2db2fd1","size":33958176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 06).bin","sha1":"0a393b4015a63e8d51e3f4e17e09cf0648523561","size":35030688},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 07).bin","sha1":"f007bd4c61f7dc30fa32244f538f35d3cda72420","size":33795888},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 08).bin","sha1":"a001e6a91d13a08b1e8fd94ab211871b9d183117","size":34898976},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 09).bin","sha1":"d1765b989974cd7bf68f16e29e77f76956c84994","size":34219248},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 10).bin","sha1":"79eaef819941ef937534279e6279b0b9624ed32c","size":1691088},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 11).bin","sha1":"95062adcbfe6763522d728e6ba0fe51a2f83df0b","size":25458048},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 12).bin","sha1":"69813fee25b96a9bc68c14ec34291609b8d79d1f","size":10033632},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 13).bin","sha1":"5635907f575c7d71109370fb8c87f4fc006d6711","size":13053600},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 14).bin","sha1":"444f7bc8f28e8972807c555a80f81bc3dbbf4590","size":36016176},{"file":"Bust-A-Move 2 - Arcade Edition (USA) (Track 15).bin","sha1":"bea344b803475b463195df6fd60834069afe246e","size":32163600}]},"env":{},"frame_hash_every":10,"frames":3600,"joypad_ports":2,"observables":["frame_sha1","video_sha1","audio_sha1","state_sha1","frame_hashes","uniform_frames"],"options":{},"oracle":{"bios_patterns":[],"error_patterns":[],"error_screens":[{"sha1":"167fb7b6527e295b12dca5806a29856f5f31d401","shows":"the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)"}],"file":"tests/campaign/oracle.yml","references":[{"sha1":"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83","shows":"the Sony Computer Entertainment logo","stage":"bios"},{"sha1":"593a6e2600946040fefd6eb9aebdc5c0d56f0555","shows":"the PlayStation logo licensed by Sony Computer Entertainment America","stage":"bios"},{"sha1":"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230","shows":"Now Loading with the yellow bubble","stage":"game"},{"sha1":"dd6dac23da6b8f4f256b8090568c52e8f8428425","shows":"the Acclaim and Taito credits text, CREDIT 6","stage":"game"},{"sha1":"533715dd946ba1984af1b9356e06989c7770e04a","shows":"the Acclaim logo, CREDIT 6","stage":"game"},{"sha1":"0d17db6e9a2d5793695884c85dd2177093420fdc","shows":"the Taito logo on white, CREDIT 6","stage":"game"},{"sha1":"2238516839dc43c0b22c00db5fe76128f5fb6f3f","shows":"a black screen with CREDIT 6","stage":"game"}],"sha256":"a0d7d28caa5f147cc3199d6dca5d1500d9a05b91dd234eb6e5900bdd0245a555"},"presses":[],"repetitions":2,"warmup":0},"kind":"run","record_version":4,"recorded_at":"2026-10-27T22:27:11+00:00","subject":"none-swanstation-bust-a-move-2-arcade-edition-usa","supersedes":null,"variants":[{"flags":[],"label":"default","repetitions":[{"env_unanswered":{"11":1,"13":1,"14":15,"23":1,"35":1,"40":3327,"45":3,"47":3600,"51":1,"55":190,"56":1,"57":1,"59":1,"69":1},"files_opened":[],"files_probed_absent":["scph5501.bin"],"fps":1540.034882856006,"fps_nominal":59.81733322143555,"frames":3600,"input_pressed":0,"input_queries":100800,"isolation":"bwrap","last_frame_size":[320,240],"library_Line truncated
|
||||
{"check":{"claim":"swanstation boots Bust-A-Move 2 - Arcade Edition (USA) with ps1_rom.bin alone and refuses a wrong file under its name","method":"ps1_rom.bin alone as ps1_rom.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[10,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[20,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[30,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[40,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[50,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[60,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[70,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[80,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[90,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[100,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[110,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[120,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[130,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[140,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[150,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[160,"154688dd18ae734dba85ab19ad46d7118ab2f2a6"],[170,"6e7a6325516bfb954c86172a8368f4c15fe3aace"],[180,"5758e30df01e5eb4afc2665885e50c04e427d631"],[190,"81effa14e5507700b7459f46e670036c54e14a9b"],[200,"69ccdfe60203b9de19c8c690dc7bda4b9b79da44"],[210,"620c1e8d887adb3553f83845846935ac0bd7331f"],[220,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[230,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[240,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[250,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[260,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[270,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[280,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[290,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[300,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[310,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[320,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[330,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[340,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[350,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[360,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[370,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[380,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[390,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[400,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[410,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[420,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[430,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[440,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[450,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[460,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[470,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[480,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[490,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[500,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[510,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[520,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[530,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[540,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[550,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[560,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[570,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[580,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[590,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[600,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[610,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[620,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[630,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[640,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[650,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[660,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[670,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[680,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[690,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[700,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[710,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[720,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[730,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[740,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[750,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[760,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[770,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[780,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[790,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[800,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[810,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[820,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[830,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[840,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[850,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[860,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[870,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[880,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[890,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[900,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[910,"e5af1f2023d0d729ce7aabfLine truncated
|
||||
{"check":{"claim":"every copy of ps1_rom.bin boots Bust-A-Move 2 - Arcade Edition (USA) on swanstation","method":"Each copy the collection holds staged alone as ps1_rom.bin, each run 2 times for 3600 frames. The boot oracle judges each copy.","observable":"frame_hashes","result":{"groups":[{"value":[[0,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[10,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[20,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[30,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[40,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[50,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[60,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[70,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[80,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[90,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[100,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[110,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[120,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[130,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[140,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[150,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[160,"154688dd18ae734dba85ab19ad46d7118ab2f2a6"],[170,"6e7a6325516bfb954c86172a8368f4c15fe3aace"],[180,"5758e30df01e5eb4afc2665885e50c04e427d631"],[190,"81effa14e5507700b7459f46e670036c54e14a9b"],[200,"69ccdfe60203b9de19c8c690dc7bda4b9b79da44"],[210,"620c1e8d887adb3553f83845846935ac0bd7331f"],[220,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[230,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[240,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[250,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[260,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[270,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[280,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[290,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[300,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[310,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[320,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[330,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[340,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[350,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[360,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[370,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[380,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[390,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[400,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[410,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[420,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[430,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[440,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[450,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[460,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[470,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[480,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[490,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[500,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[510,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[520,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[530,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[540,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[550,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[560,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[570,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[580,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[590,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[600,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[610,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[620,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[630,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[640,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[650,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[660,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[670,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[680,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[690,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[700,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[710,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[720,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[730,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[740,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[750,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[760,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[770,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[780,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[790,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[800,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[810,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[820,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[830,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[840,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[850,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[860,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[870,"7453341901c7f72b2b852c1e5fa9f8a2f74e11bd"],[880,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[890,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[900,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[910,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[920,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[930,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[940,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[950,"e5af1f2023d0d729ce7aabf52d8e03f75bb8d230"],[960,Line truncated
|
||||
{"check":{"claim":"swanstation boots Bust-A-Move 2 - Arcade Edition (USA) with psxonpsp660.bin alone and refuses a wrong file under its name","method":"psxonpsp660.bin alone as psxonpsp660.bin, then 524288 zero bytes and its first 262144 bytes, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[10,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[20,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[30,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[40,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[50,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[60,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[70,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[80,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[90,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[100,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[110,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[120,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[130,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[140,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[150,"6e18adf4d2fa0dfb80cbb7e7fb45fa3b6599e5c6"],[160,"e02d0fd225cebfa24cb55876875838468df1f85c"],[170,"f82237bc74029b208d0d9ee42708be7e2993b1b0"],[180,"1af84636d8a821c425d0d16996bc731c79ea2756"],[190,"5b7db9932cf80eeecb90e91b0f32fa3e9e9b8221"],[200,"1e70b268416b6d2a98423386b40d4743f3a4d3b7"],[210,"e8baae73b5a4b6fe3c75378b61202bf52390a002"],[220,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[230,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[240,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[250,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[260,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[270,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[280,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[290,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[300,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[310,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[320,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[330,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[340,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[350,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[360,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[370,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[380,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[390,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[400,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[410,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[420,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[430,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[440,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[450,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[460,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[470,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[480,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[490,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[500,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[510,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[520,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[530,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[540,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[550,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[560,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[570,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[580,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[590,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[600,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[610,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[620,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[630,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[640,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[650,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[660,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[670,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[680,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[690,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[700,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[710,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[720,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[730,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[740,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[750,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[760,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[770,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[780,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[790,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[800,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[810,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[820,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[830,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[840,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[850,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[860,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[870,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[880,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[890,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[900,"180ff6f4954444ed4a675ea7d7ef272d1895e29a"],[910,"180ff6f4954Line truncated
|
||||
{"check":{"claim":"swanstation boots Bust-A-Move 2 - Arcade Edition (USA) with scph5501.bin alone and refuses a wrong file under its name","method":"scph5501.bin alone as scph5501.bin, then 524288 zero bytes and its first 262144 bytes, then scph5500.bin, scph5502.bin staged under its name, nothing else staged. Each run 2 times from a fresh process for 3600 frames with no button pressed, every 10th frame hashed. The boot oracle judges each variant against the reference frames of Bust-A-Move 2 - Arcade Edition (USA).","observable":"frame_hashes","result":{"groups":[{"value":[[0,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[10,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[20,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[30,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[40,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[50,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[60,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[70,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[80,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[90,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[100,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[110,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[120,"da39a3ee5e6b4b0d3255bfef95601890afd80709"],[130,"7046e2f6bda4b360485722ade2c8c94824685540"],[140,"1a79c3f6e9f45ef06531acea2b4e2e30d3d8b8e8"],[150,"3c6f9678bfe5d0433aebb9ae3e9efbbfc5fd62c2"],[160,"84a7829a4078ea142f5004681a8cd8ba0f64f772"],[170,"6ae3c4c197eaf1014f7e903f708189d3bdb62e96"],[180,"5b9de43af7943c200dae7a7853637de7f3092646"],[190,"2116cdc10b8f69825d5f83c0a31b80f4fe667a33"],[200,"55cf2bd572d949733bdc741a76f533963778847a"],[210,"f875f10898942a3928cb54c6ea2ee6fda17617cc"],[220,"6935cd6562626c4876f09d1ee8f4870fb260dedc"],[230,"3c6e6e92d153c5693da47ff0b333a13b9296b8d1"],[240,"bea0ea4eaceddbb833418749c2c36241f04c04ae"],[250,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[260,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[270,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[280,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[290,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[300,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[310,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[320,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[330,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[340,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[350,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[360,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[370,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[380,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[390,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[400,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[410,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[420,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[430,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[440,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[450,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[460,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[470,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[480,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[490,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[500,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[510,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[520,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[530,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[540,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[550,"fad859d9b8211ce9f35ad3a05b0b7d184fe14d83"],[560,"cd22ca0a08ba97eccbb7fee7cd2542d22b124f8d"],[570,"2966a869a40438c373e7aec133ea8bd2984c58b7"],[580,"405513eab3403a7dca58059df27a510bdd109d7a"],[590,"e46b311640b057b5d46a3d8a14b2fbc3e83547e4"],[600,"3791f3ecf398d95f506295bacca32e2de8ea8cca"],[610,"668d9390ee00842f4178efd6f308ad1da851edb8"],[620,"3bb7e278a6d007452b329ad624ada99220b68cab"],[630,"6466c6ce12f24862251707ab72b236520f0f7dca"],[640,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[650,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[660,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[670,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[680,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[690,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[700,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[710,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[720,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[730,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[740,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[750,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[760,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[770,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[780,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[790,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[800,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[810,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[820,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[830,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[840,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[850,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[860,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[870,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[880,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[890,"593a6e2600946040fefd6eb9aebdc5c0d56f0555"],[900,"593a6e26009460Line truncated
|
||||
@@ -2,7 +2,7 @@
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://abdess.github.io/retrobios/api/v1/schemas/core-probe-record.schema.json",
|
||||
"title": "RetroBIOS core probe record",
|
||||
"description": "One line of measurements/<emulator>.jsonl: one run of scripts/core_probe.py, a libretro core executed headless, in full, with what is needed to judge and reproduce it. Every repetition, its core logs and per-frame hashes, and the raw timing values are in the line.",
|
||||
"description": "One line of measurements/<emulator>.jsonl: one run of scripts/core_probe.py, a libretro core executed headless, in full, with what is needed to judge and reproduce it. Every repetition, its core logs and per-frame hashes, and the raw timing values are in the line. From record_version 4 every repetition and every variant carries the boot oracle's verdict (boots, bios_error, crash, hang, unknown) with the evidence that decided it.",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
@@ -22,7 +22,11 @@
|
||||
],
|
||||
"properties": {
|
||||
"record_version": {
|
||||
"const": 3
|
||||
"enum": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"description": "3: records before the boot oracle. 4: every repetition and variant carries `verdict` and `verdict_evidence`, and `inputs.oracle` names what the verdicts were judged against."
|
||||
},
|
||||
"id": {
|
||||
"type": "string",
|
||||
@@ -144,7 +148,11 @@
|
||||
],
|
||||
"properties": {
|
||||
"script": {
|
||||
"const": "scripts/core_probe.py"
|
||||
"enum": [
|
||||
"scripts/core_probe.py",
|
||||
"scripts/pack_probe.py",
|
||||
"scripts/standalone_probe.py"
|
||||
]
|
||||
},
|
||||
"commit": {
|
||||
"type": [
|
||||
@@ -353,6 +361,9 @@
|
||||
"frame_hash_every": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"oracle": {
|
||||
"$ref": "#/$defs/oracle"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -398,6 +409,13 @@
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"verdict": {
|
||||
"$ref": "#/$defs/verdict",
|
||||
"description": "The verdict every repetition of the variant agrees on, else unknown."
|
||||
},
|
||||
"verdict_evidence": {
|
||||
"$ref": "#/$defs/verdict_evidence"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -492,6 +510,13 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"verdicts": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"$ref": "#/$defs/verdict"
|
||||
},
|
||||
"description": "Variant label -> the variant's verdict."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -535,6 +560,51 @@
|
||||
"check"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"record_version": {
|
||||
"const": 4
|
||||
}
|
||||
}
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"inputs": {
|
||||
"required": [
|
||||
"oracle"
|
||||
]
|
||||
},
|
||||
"variants": {
|
||||
"items": {
|
||||
"required": [
|
||||
"verdict",
|
||||
"verdict_evidence"
|
||||
],
|
||||
"properties": {
|
||||
"repetitions": {
|
||||
"items": {
|
||||
"required": [
|
||||
"verdict",
|
||||
"verdict_evidence"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"check": {
|
||||
"properties": {
|
||||
"result": {
|
||||
"required": [
|
||||
"verdicts"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"$defs": {
|
||||
@@ -747,8 +817,205 @@
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"verdict": {
|
||||
"$ref": "#/$defs/verdict"
|
||||
},
|
||||
"verdict_evidence": {
|
||||
"$ref": "#/$defs/verdict_evidence"
|
||||
},
|
||||
"exit": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"status",
|
||||
"signal"
|
||||
],
|
||||
"properties": {
|
||||
"status": {
|
||||
"type": [
|
||||
"integer",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"signal": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"timeout_s": {
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
}
|
||||
},
|
||||
"description": "How a worker that did not finish ended: its exit status or the signal that killed it, or the timeout after which the probe killed it."
|
||||
}
|
||||
}
|
||||
},
|
||||
"verdict": {
|
||||
"enum": [
|
||||
"boots",
|
||||
"bios_error",
|
||||
"crash",
|
||||
"hang",
|
||||
"unknown"
|
||||
],
|
||||
"description": "boots: a reference frame of the content was reached. bios_error: an error pattern of the core log or a known error screen, and no reference frame. crash: the worker died. hang: killed after the timeout, or every sampled frame of the second half is one colour. unknown: none of these."
|
||||
},
|
||||
"verdict_evidence": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"rule",
|
||||
"detail"
|
||||
],
|
||||
"properties": {
|
||||
"rule": {
|
||||
"enum": [
|
||||
"reference_frame",
|
||||
"error_pattern",
|
||||
"error_screen",
|
||||
"exit_status",
|
||||
"timeout",
|
||||
"uniform_tail",
|
||||
"no_evidence",
|
||||
"repetitions_agree",
|
||||
"repetitions_disagree"
|
||||
]
|
||||
},
|
||||
"detail": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"frame": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"sha1": {
|
||||
"$ref": "#/$defs/sha1"
|
||||
},
|
||||
"stages": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/stage"
|
||||
},
|
||||
"description": "Stages of the reference frames the run reached, in the order first reached."
|
||||
},
|
||||
"pattern": {
|
||||
"type": "string"
|
||||
},
|
||||
"log": {
|
||||
"type": "string"
|
||||
},
|
||||
"exit_status": {
|
||||
"type": [
|
||||
"integer",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"signal": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"repetitions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/verdict"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"stage": {
|
||||
"enum": [
|
||||
"bios",
|
||||
"game"
|
||||
],
|
||||
"description": "bios: a screen only the console's own BIOS draws (its logo). game: a screen of the content itself."
|
||||
},
|
||||
"oracle": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "null"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"file",
|
||||
"sha256",
|
||||
"references",
|
||||
"error_patterns",
|
||||
"error_screens"
|
||||
],
|
||||
"properties": {
|
||||
"file": {
|
||||
"type": "string"
|
||||
},
|
||||
"sha256": {
|
||||
"$ref": "#/$defs/sha256"
|
||||
},
|
||||
"references": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"sha1",
|
||||
"stage",
|
||||
"shows"
|
||||
],
|
||||
"properties": {
|
||||
"sha1": {
|
||||
"$ref": "#/$defs/sha1"
|
||||
},
|
||||
"stage": {
|
||||
"$ref": "#/$defs/stage"
|
||||
},
|
||||
"shows": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"error_patterns": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"error_screens": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"sha1",
|
||||
"shows"
|
||||
],
|
||||
"properties": {
|
||||
"sha1": {
|
||||
"$ref": "#/$defs/sha1"
|
||||
},
|
||||
"shows": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"bios_patterns": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Log lines by which the core says it loaded the console's own BIOS: they add the bios stage when its screens are hidden."
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"description": "What the verdicts were judged against: the reference frames of this content and core, the core's error patterns, error screens and BIOS load patterns, from the oracle file at its sha256. Null when the run had no oracle entry."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -553,7 +553,8 @@
|
||||
"required": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}-[0-9a-f]{12}$"}},
|
||||
"hle_fallback": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}-[0-9a-f]{12}$"}},
|
||||
"path": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}-[0-9a-f]{12}$"}},
|
||||
"aliases": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}-[0-9a-f]{12}$"}}
|
||||
"aliases": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}-[0-9a-f]{12}$"}},
|
||||
"validation": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}-[0-9a-f]{12}$"}}
|
||||
}
|
||||
},
|
||||
"adler32_byteswap": {
|
||||
|
||||
+361
-175
@@ -1,41 +1,56 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Run the real-condition campaign unattended: cores, content, checks, rules.
|
||||
"""Run the real-condition campaign end to end: cores, content, checks, rules.
|
||||
|
||||
For each emulator profile in scope, the campaign takes the core (the libretro
|
||||
x86_64 Linux nightly, else a build of the profile's pinned commit), the test
|
||||
content of each of its systems (tests/campaign/content.yml, fetched through
|
||||
romfetch when it is not on disk), and runs core_probe.py:
|
||||
A maintainer starts each pass. For each emulator profile in scope, the
|
||||
campaign takes the core (the libretro x86_64 Linux nightly, else a build of
|
||||
the profile's pinned commit), the test content of each of its systems
|
||||
(tests/campaign/content.yml, fetched through romfetch when it is not on
|
||||
disk), and runs core_probe.py. The boot oracle of core_probe judges every
|
||||
run: boots, bios_error, crash, hang or unknown, against the reference frames
|
||||
and error patterns of tests/campaign/oracle.yml.
|
||||
|
||||
files every declared file the collection holds, staged, and which ones
|
||||
the core opens
|
||||
boot the content with no file against the content with the declared
|
||||
file, compared on the frames the core shows
|
||||
files every declared file the collection holds, staged: the full set,
|
||||
and which files the core opens
|
||||
none no BIOS at all
|
||||
negative per declared file of the content's region: the file alone, then
|
||||
zeros of its size, its first half and other regions' dumps
|
||||
staged under its name
|
||||
path a declared file staged where the core looked for it
|
||||
alias a declared file staged under a name the core looked for
|
||||
variants each .variants/ copy of a file the core opened
|
||||
bench the content timed, warm-up excluded, 5 repetitions
|
||||
bench with --bench only: the content timed, warm-up excluded
|
||||
|
||||
Every run is a record in measurements/<emulator>.jsonl. The fixed rule table
|
||||
(campaign_rules.py) turns records into verdicts. A verdict the table settles
|
||||
is written into the profile with the record ids as `evidence:`. Any other
|
||||
goes to measurements/findings.jsonl, where the site lists it as open. Each
|
||||
pass adds one line to measurements/campaign-runs.jsonl.
|
||||
(campaign_rules.py) reads the verdicts, never a comparison of frames. A
|
||||
verdict the table settles is written into the profile with the record ids
|
||||
as `evidence:`. Any other goes to measurements/findings.jsonl, where the
|
||||
site lists it as open. Each pass adds one line to
|
||||
measurements/campaign-runs.jsonl.
|
||||
|
||||
`references` runs the full set once per core and content with its frames
|
||||
saved as PNG, and lists the screens that stay on for several samples: the
|
||||
candidates a reviewer looks at before writing them into oracle.yml.
|
||||
|
||||
State is .cache/campaign/state.json of the main checkout: per check done,
|
||||
failed or pending with the reason, and the core sha256 and profile digest it
|
||||
ran against. A pass skips what is done unless the core build or the profile
|
||||
changed. The campaign holds the host-wide automation lock, waits for an idle
|
||||
host, stops cleanly on a busy host or a full disk, and resumes on the next
|
||||
pass. Under autorun (`campaign` job) the lock is the job's.
|
||||
failed or pending with the reason, and the core sha256, profile digest,
|
||||
oracle sha256 and record version it ran against. A pass skips what is done
|
||||
unless one of them changed. The campaign holds the host-wide automation
|
||||
lock, waits for an idle host, stops cleanly on a busy host or a full disk,
|
||||
and the next pass a maintainer starts resumes there.
|
||||
|
||||
Usage:
|
||||
python scripts/campaign.py run [--only CORE,...] [--system ID] [--budget 6h]
|
||||
python scripts/campaign.py run [--only CORE,...] [--system ID] [--budget 6h] [--bench]
|
||||
python scripts/campaign.py run --dry-run
|
||||
python scripts/campaign.py run --commit [--commit-every N]
|
||||
python scripts/campaign.py references --only CORE,... [--system ID]
|
||||
python scripts/campaign.py status [--json]
|
||||
python scripts/campaign.py findings [--all] [--json]
|
||||
python scripts/campaign.py gate
|
||||
python scripts/campaign.py install-timer [--enable]
|
||||
|
||||
install-timer is opt-in: a contributor who wants a schedule on their own
|
||||
machine installs the timer. It writes the units and enables nothing unless
|
||||
--enable is passed.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -86,6 +101,7 @@ PENDING = "pending"
|
||||
CRASH_ATTEMPTS = 3
|
||||
NETWORK_DELAYS = (10, 60, 300)
|
||||
MAX_ALIAS_CANDIDATES = 6
|
||||
MAX_REGION_DUMPS = 2
|
||||
BENCH_WARMUP = 600
|
||||
BENCH_FRAMES = 1800
|
||||
BENCH_REPEAT = 5
|
||||
@@ -175,6 +191,11 @@ def region_matches(entry: dict, region: str | None) -> bool:
|
||||
return region in regions or "world" in regions
|
||||
|
||||
|
||||
def regions_of(entry: dict) -> list[str]:
|
||||
regions = entry.get("region") or []
|
||||
return [regions] if isinstance(regions, str) else list(regions)
|
||||
|
||||
|
||||
def is_bios(entry: dict) -> bool:
|
||||
return entry.get("category", "bios") == "bios" and entry.get("type") != "directory"
|
||||
|
||||
@@ -235,6 +256,8 @@ class Settings:
|
||||
bench_frames: int = BENCH_FRAMES
|
||||
romfetch: str = ""
|
||||
network: bool = True
|
||||
# Benchmarks only choose between variants: never part of a default pass.
|
||||
bench: bool = False
|
||||
delays: tuple[float, ...] = NETWORK_DELAYS
|
||||
echo: bool = True
|
||||
# Third-party code (a nightly core, a project's Makefile) runs only under
|
||||
@@ -252,6 +275,7 @@ class Paths:
|
||||
content: Path
|
||||
db: Path
|
||||
content_file: Path = CONTENT_FILE
|
||||
oracle: Path = core_probe.DEFAULT_ORACLE
|
||||
|
||||
@property
|
||||
def state(self) -> Path:
|
||||
@@ -279,9 +303,9 @@ def child_env(romfetch: bool = False) -> dict[str, str]:
|
||||
"""What a program the campaign starts inherits: autorun's allowlist,
|
||||
never a token or a password. romfetch also gets its own settings
|
||||
(ROMFETCH_*), its account staying in its config file."""
|
||||
names: list[str] = []
|
||||
names: list[str] = [core_probe.PROBE_LOCK_ENV, core_probe.PROBE_LOCK_HELD_ENV]
|
||||
if romfetch:
|
||||
names = [k for k in os.environ if k.startswith("ROMFETCH_")] + list(ROMFETCH_PASSED)
|
||||
names += [k for k in os.environ if k.startswith("ROMFETCH_")] + list(ROMFETCH_PASSED)
|
||||
return autorun.safe_env(names)
|
||||
|
||||
|
||||
@@ -470,14 +494,17 @@ def save_state(path: Path, state: dict) -> None:
|
||||
autorun.save_state(path, state)
|
||||
|
||||
|
||||
def should_run(previous: dict | None, core_sha: str, digest: str) -> bool:
|
||||
def should_run(previous: dict | None, core_sha: str, digest: str, oracle_sha: str = "") -> bool:
|
||||
"""A check runs again when it never ran, is pending, or ran against
|
||||
another core build or another version of the profile."""
|
||||
another core build, another version of the profile, another oracle, or
|
||||
before records carried a verdict."""
|
||||
if not previous:
|
||||
return True
|
||||
if previous.get("status") == PENDING:
|
||||
return True
|
||||
return previous.get("core_sha256") != core_sha or previous.get("profile_digest") != digest
|
||||
return (previous.get("core_sha256") != core_sha or previous.get("profile_digest") != digest
|
||||
or previous.get("record_version") != mr.RECORD_VERSION
|
||||
or previous.get("oracle_sha256", "") != oracle_sha)
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
@@ -875,6 +902,8 @@ class Campaign:
|
||||
self.cores = Cores(self)
|
||||
self.store = ContentStore(self)
|
||||
self.content = load_content(paths.content_file)
|
||||
self.oracle_sha = file_sha256(paths.oracle) if paths.oracle.is_file() else ""
|
||||
self.oracle_data = core_probe.load_oracle(paths.oracle)[0]
|
||||
self.deadline = 0.0
|
||||
self.current: Pass | None = None
|
||||
self.dirty_at_start: set[str] = set()
|
||||
@@ -1004,6 +1033,8 @@ class Campaign:
|
||||
"--emulator", emulator, "--subject", subject,
|
||||
"--max-load", str(self.host.max_load), "--timeout", str(self.settings.probe_timeout),
|
||||
"--work-dir", str(self.paths.root / "tmp" / "core_probe")]
|
||||
if self.paths.oracle.is_file():
|
||||
argv += ["--oracle", str(self.paths.oracle)]
|
||||
if not self.settings.allow_unsandboxed:
|
||||
argv.append("--require-sandbox")
|
||||
if core.artifact:
|
||||
@@ -1025,8 +1056,14 @@ class Campaign:
|
||||
|
||||
def remember(self, emulator: str, key: str, result: ProbeResult, core: Core | None,
|
||||
digest: str) -> None:
|
||||
judged = None
|
||||
if result.record and result.record["inputs"].get("content"):
|
||||
judged = [result.record["inputs"]["content"]["sha1"], result.record["core"]["library_name"]]
|
||||
entry = {"status": result.status, "at": now_iso(), "profile_digest": digest,
|
||||
"core_sha256": core.sha256 if core else None}
|
||||
"core_sha256": core.sha256 if core else None,
|
||||
"record_version": mr.RECORD_VERSION, "oracle_sha256": self.oracle_digest(judged)}
|
||||
if judged:
|
||||
entry["oracle_key"] = judged
|
||||
if result.reason:
|
||||
entry["reason"] = result.reason
|
||||
if result.log:
|
||||
@@ -1042,6 +1079,38 @@ class Campaign:
|
||||
self.state["checks"].setdefault(emulator, {})[key] = {
|
||||
"status": PENDING, "reason": reason, "at": now_iso(), "profile_digest": digest}
|
||||
|
||||
def oracle_digest(self, key: list[str] | None) -> str:
|
||||
"""What a check's verdicts depend on in the oracle: the entries of its
|
||||
content and core, else the whole file. Another core's references
|
||||
never make a check run again."""
|
||||
if not key:
|
||||
return self.oracle_sha
|
||||
return mr.value_sha1(core_probe.oracle_for(self.oracle_data, *key))
|
||||
|
||||
def needed(self, emulator: str, key: str, core: Core, digest: str) -> bool:
|
||||
previous = self.state["checks"].get(emulator, {}).get(key)
|
||||
judged = (previous or {}).get("oracle_key")
|
||||
if previous and not judged and previous.get("record"):
|
||||
record = self.read_record(emulator, previous["record"]) or {}
|
||||
if (record.get("inputs") or {}).get("content"):
|
||||
judged = [record["inputs"]["content"]["sha1"], record["core"]["library_name"]]
|
||||
previous["oracle_key"] = judged
|
||||
# Judged against the entries the record kept, not the file it named.
|
||||
kept = {k: v for k, v in (record["inputs"].get("oracle") or {}).items()
|
||||
if k not in ("file", "sha256")}
|
||||
previous["oracle_sha256"] = mr.value_sha1({"bios_patterns": [], **kept})
|
||||
return should_run(previous, core.sha256, digest, self.oracle_digest(judged))
|
||||
|
||||
def check(self, emulator: str, key: str, core: Core, digest: str, argv: list[str],
|
||||
log_name: str) -> dict | None:
|
||||
"""The record of a check: run now when needed, else the one kept."""
|
||||
if not self.needed(emulator, key, core, digest):
|
||||
previous = self.state["checks"].get(emulator, {}).get(key) or {}
|
||||
return self.read_record(emulator, previous.get("record"))
|
||||
result = self.probe(argv, log_name)
|
||||
self.remember(emulator, key, result, core, digest)
|
||||
return result.record
|
||||
|
||||
def system_entries(self, profile: dict, system: str) -> list[tuple[int, dict]]:
|
||||
from validation import filter_files_by_mode
|
||||
|
||||
@@ -1060,84 +1129,148 @@ class Campaign:
|
||||
held.sort(key=lambda item: (item[1].get("priority", 1 << 30), item[0]))
|
||||
return held[0] if held else None
|
||||
|
||||
@staticmethod
|
||||
def other_regions(entry: dict, staged: dict[str, tuple[int, dict, Path]], local: Path) -> list[Path]:
|
||||
"""Held dumps of the same system for regions this entry does not
|
||||
serve, one per distinct file: the wrong-region variants."""
|
||||
mine = set(regions_of(entry))
|
||||
if not mine or "world" in mine:
|
||||
return []
|
||||
out: dict[str, Path] = {}
|
||||
for _, other, path in staged.values():
|
||||
theirs = set(regions_of(other))
|
||||
if theirs and "world" not in theirs and not theirs & mine and path.resolve() != local.resolve():
|
||||
out.setdefault(file_sha1(path), path)
|
||||
return sorted(out.values(), key=lambda p: p.name)[:MAX_REGION_DUMPS]
|
||||
|
||||
def run_unit_content(self, unit: Unit, core: Core, content: Content, digest: str) -> None:
|
||||
emulator, profile = unit.emulator, unit.profile
|
||||
checks = self.state["checks"].setdefault(emulator, {})
|
||||
entries = self.system_entries(profile, content.system)
|
||||
boot = self.boot_entry(entries, content)
|
||||
keys = {name: self.check_key(core, content, name) for name in ("files", "bench")}
|
||||
if boot:
|
||||
keys["boot"] = self.check_key(core, content, f"boot:{boot[1]['name']}")
|
||||
todo = [k for k in keys.values() if should_run(checks.get(k), core.sha256, digest)]
|
||||
if not todo:
|
||||
return
|
||||
try:
|
||||
folder = self.store.get(content)
|
||||
load = load_file(folder, content.load)
|
||||
except Unavailable as exc:
|
||||
for key in todo:
|
||||
self.pending(emulator, key, str(exc), digest)
|
||||
return
|
||||
frames = ["--frames", str(content.frames), "--frame-hash-every", str(content.frame_hash_every)]
|
||||
stem = f"{core.name}-{slug(content.name)}"
|
||||
|
||||
# files: every declared file the collection holds, at its place.
|
||||
staged: dict[str, tuple[int, dict, Path]] = {}
|
||||
for index, entry in entries:
|
||||
local = self.local_file(entry)
|
||||
if local and entry_dest(entry) not in staged:
|
||||
staged[entry_dest(entry)] = (index, entry, local)
|
||||
files_record = None
|
||||
if keys["files"] in todo:
|
||||
argv = self.probe_args("run", core, emulator, slug(f"files-{stem}"), content, load) + frames
|
||||
for dest, (_, _, local) in sorted(staged.items()):
|
||||
argv += ["--system-file", f"{dest}={local}"]
|
||||
result = self.probe(argv, f"{emulator}-{stem}-files")
|
||||
self.remember(emulator, keys["files"], result, core, digest)
|
||||
files_record = result.record
|
||||
elif checks.get(keys["files"], {}).get("status") == DONE:
|
||||
files_record = self.read_record(emulator, checks[keys["files"]].get("record"))
|
||||
tested = {dest: item for dest, item in staged.items() if region_matches(item[1], content.region)}
|
||||
keys = {"files": self.check_key(core, content, "files"),
|
||||
"none": self.check_key(core, content, "none")}
|
||||
for dest in tested:
|
||||
keys[f"negative:{dest}"] = self.check_key(core, content, f"negative:{dest}")
|
||||
if self.settings.bench:
|
||||
keys["bench"] = self.check_key(core, content, "bench")
|
||||
# The rules run on every pass, from the records kept when nothing
|
||||
# needs to run again: a change of the table applies without a run.
|
||||
try:
|
||||
folder = self.store.get(content)
|
||||
load = load_file(folder, content.load)
|
||||
except Unavailable as exc:
|
||||
for key in keys.values():
|
||||
if self.needed(emulator, key, core, digest):
|
||||
self.pending(emulator, key, str(exc), digest)
|
||||
return
|
||||
frames = ["--frames", str(content.frames), "--frame-hash-every", str(content.frame_hash_every)]
|
||||
repeat = ["--repeat", str(self.settings.check_repeat)]
|
||||
stem = f"{core.name}-{slug(content.name)}"
|
||||
|
||||
boot_record = None
|
||||
if boot and keys["boot"] in todo:
|
||||
index, entry = boot
|
||||
local = self.local_file(entry)
|
||||
dest = entry_dest(entry)
|
||||
argv = self.probe_args("check", core, emulator, slug(f"boot-{entry['name']}-{stem}"),
|
||||
content, load) + frames
|
||||
argv += ["--vary", f"{dest}=", "--vary", f"{dest}={local}", "--observable", "frame_hashes",
|
||||
"--repeat", str(self.settings.check_repeat),
|
||||
"--claim", f"{core.name} reaches the game on {content.name} without {entry['name']}",
|
||||
"--method", (f"Two variants, {entry['name']} absent and {entry['name']} as the "
|
||||
f"collection holds it, each run {self.settings.check_repeat} times "
|
||||
f"from a fresh process for {content.frames} frames with no button "
|
||||
f"pressed. Every {content.frame_hash_every}th frame is hashed. The "
|
||||
f"runs without the file are compared with the runs with it on the "
|
||||
f"frames that are not one colour.")]
|
||||
result = self.probe(argv, f"{emulator}-{stem}-boot")
|
||||
self.remember(emulator, keys["boot"], result, core, digest)
|
||||
boot_record = result.record
|
||||
if boot_record:
|
||||
absent, present = (v["label"] for v in boot_record["variants"])
|
||||
verdicts = rules.rule_bios_need(rules.boot_outcome(boot_record, absent, present),
|
||||
entry, boot_record["id"])
|
||||
# files: every declared file the collection holds, at its place.
|
||||
argv = self.probe_args("run", core, emulator, slug(f"files-{stem}"), content, load) + frames + repeat
|
||||
for dest, (_, _, local) in sorted(staged.items()):
|
||||
argv += ["--system-file", f"{dest}={local}"]
|
||||
files_record = self.check(emulator, keys["files"], core, digest, argv, f"{emulator}-{stem}-files")
|
||||
# none: no BIOS at all.
|
||||
argv = self.probe_args("run", core, emulator, slug(f"none-{stem}"), content, load) + frames + repeat
|
||||
none_record = self.check(emulator, keys["none"], core, digest, argv, f"{emulator}-{stem}-none")
|
||||
if not files_record or not none_record:
|
||||
return
|
||||
full = rules.run_of(files_record, files_record["variants"][0]["label"])
|
||||
none = rules.run_of(none_record, none_record["variants"][0]["label"])
|
||||
self.log(f"{emulator}: {core.name} on {content.name}: full set {full.verdict}, "
|
||||
f"no BIOS {none.verdict}")
|
||||
|
||||
for dest, (index, entry, local) in sorted(tested.items()):
|
||||
record = self.negative(unit, core, content, load, frames, digest, keys[f"negative:{dest}"],
|
||||
dest, entry, local, staged)
|
||||
if not record:
|
||||
continue
|
||||
labels = [v["label"] for v in record["variants"]]
|
||||
present = rules.run_of(record, labels[0])
|
||||
zeros, half = (rules.run_of(record, label) for label in labels[1:3])
|
||||
for label in labels[3:]:
|
||||
self.log(f"{emulator}: {rules.rule_region(rules.run_of(record, label), present, entry, content.region)}")
|
||||
if dest in self.opened(files_record, 0) or dest in self.opened(record, 0):
|
||||
verdicts = rules.rule_need(none, present, entry, rules.read(none, present, zeros, half))
|
||||
validation = rules.rule_validation(zeros, half, none, present, entry)
|
||||
if validation:
|
||||
verdicts.append(validation)
|
||||
self.settle(emulator, content, core, index, entry, verdicts)
|
||||
self.follow_aliases(unit, core, content, load, frames, digest, index, entry,
|
||||
local, boot_record, absent)
|
||||
variants = self.variant_files(entry, local)
|
||||
if variants:
|
||||
self.run_variants(unit, core, content, load, frames, digest, index, entry, dest,
|
||||
local, variants)
|
||||
else:
|
||||
self.moved(unit, core, content, load, frames, digest, index, entry, dest, local,
|
||||
files_record, record)
|
||||
|
||||
if files_record and keys["files"] in todo:
|
||||
self.read_files(unit, core, content, load, frames, digest, staged, files_record)
|
||||
boot = self.boot_entry(entries, content)
|
||||
if boot and entry_dest(boot[1]) in tested:
|
||||
index, entry = boot
|
||||
self.follow_aliases(unit, core, content, load, frames, digest, index, entry,
|
||||
tested[entry_dest(entry)][2], none_record)
|
||||
|
||||
if keys["bench"] in todo:
|
||||
if self.settings.bench and full.verdict == rules.BOOTS:
|
||||
argv = self.probe_args("bench", core, emulator, slug(f"bench-{stem}"), content, load)
|
||||
argv += ["--warmup", str(self.settings.bench_warmup), "--frames",
|
||||
str(self.settings.bench_frames), "--repeat", str(self.settings.bench_repeat),
|
||||
"--no-trace"]
|
||||
if boot:
|
||||
local = self.local_file(boot[1])
|
||||
argv += ["--system-file", f"{entry_dest(boot[1])}={local}"]
|
||||
result = self.probe(argv, f"{emulator}-{stem}-bench")
|
||||
self.remember(emulator, keys["bench"], result, core, digest)
|
||||
argv += ["--system-file", f"{entry_dest(boot[1])}={self.local_file(boot[1])}"]
|
||||
self.check(emulator, keys["bench"], core, digest, argv, f"{emulator}-{stem}-bench")
|
||||
|
||||
def negative(self, unit: Unit, core: Core, content: Content, load: Path, frames: list[str],
|
||||
digest: str, key: str, dest: str, entry: dict, local: Path,
|
||||
staged: dict[str, tuple[int, dict, Path]]) -> dict | None:
|
||||
"""The file alone, then wrong files under its name: zeros of its
|
||||
size, its first half, and other regions' dumps."""
|
||||
stem = f"{core.name}-{slug(content.name)}"
|
||||
size = local.stat().st_size
|
||||
others = self.other_regions(entry, staged, local)
|
||||
argv = self.probe_args("check", core, unit.emulator, slug(f"negative-{entry['name']}-{stem}"),
|
||||
content, load) + frames
|
||||
argv += ["--vary", f"{dest}={local}", "--vary", f"{dest}=@zeros:{size}",
|
||||
"--vary", f"{dest}=@head:{size // 2}:{local}"]
|
||||
for other in others:
|
||||
argv += ["--vary", f"{dest}={other}"]
|
||||
regions = f", then {', '.join(p.name for p in others)} staged under its name" if others else ""
|
||||
argv += ["--observable", "frame_hashes", "--repeat", str(self.settings.check_repeat),
|
||||
"--claim", (f"{core.name} boots {content.name} with {entry['name']} alone and "
|
||||
f"refuses a wrong file under its name"),
|
||||
"--method", (f"{entry['name']} alone as {dest}, then {size} zero bytes and its "
|
||||
f"first {size // 2} bytes{regions}, nothing else staged. Each run "
|
||||
f"{self.settings.check_repeat} times from a fresh process for "
|
||||
f"{content.frames} frames with no button pressed, every "
|
||||
f"{content.frame_hash_every}th frame hashed. The boot oracle judges "
|
||||
f"each variant against the reference frames of {content.name}.")]
|
||||
return self.check(unit.emulator, key, core, digest, argv, f"{unit.emulator}-{stem}-negative")
|
||||
|
||||
def moved(self, unit: Unit, core: Core, content: Content, load: Path, frames: list[str],
|
||||
digest: str, index: int, entry: dict, dest: str, local: Path, files_record: dict,
|
||||
alone: dict) -> None:
|
||||
"""A file the core opened neither in the full set nor alone: where
|
||||
else it looked for a file of that name, else flagged."""
|
||||
probed = [p for record in (files_record, alone) for r in record["variants"][0]["repetitions"]
|
||||
for p in r.get("files_probed_absent") or ()]
|
||||
others = [p for p in dict.fromkeys(probed) if p != dest
|
||||
and p.rsplit("/", 1)[-1].casefold() == dest.rsplit("/", 1)[-1].casefold()]
|
||||
for candidate in others[:MAX_ALIAS_CANDIDATES]:
|
||||
found = self.follow_up(unit, core, content, load, frames, digest, entry, local, candidate,
|
||||
f"path:{entry['name']}:{candidate}")
|
||||
if found and candidate in self.opened(found, 0):
|
||||
verdict = rules.rule_path(entry, dest, rules.Opened(candidate, found["id"]))
|
||||
if verdict:
|
||||
self.settle(unit.emulator, content, core, index, entry, [verdict])
|
||||
return
|
||||
verdict = rules.rule_never_opened(entry, [files_record["id"], alone["id"]], content.name)
|
||||
self.settle(unit.emulator, content, core, index, entry, [verdict])
|
||||
|
||||
def read_record(self, emulator: str, rid: str | None) -> dict | None:
|
||||
if not rid:
|
||||
@@ -1150,49 +1283,10 @@ class Campaign:
|
||||
return json.loads(line)
|
||||
return None
|
||||
|
||||
def read_files(self, unit: Unit, core: Core, content: Content, load: Path, frames: list[str],
|
||||
digest: str, staged: dict[str, tuple[int, dict, Path]], record: dict) -> None:
|
||||
"""Which staged files the core opened: path follow-ups, variants, flags."""
|
||||
emulator = unit.emulator
|
||||
rep = record["variants"][0]["repetitions"][0]
|
||||
if rep.get("files_opened") is None:
|
||||
return
|
||||
opened = {item["path"] for item in rep.get("files_opened") or ()}
|
||||
probed = list(rep.get("files_probed_absent") or ())
|
||||
for dest, (index, entry, local) in sorted(staged.items()):
|
||||
if dest in opened:
|
||||
variants = self.variant_files(entry, local)
|
||||
if variants:
|
||||
self.run_variants(unit, core, content, load, frames, digest, index, entry, dest,
|
||||
local, variants)
|
||||
continue
|
||||
if not region_matches(entry, content.region):
|
||||
continue
|
||||
# A fallback is read only when the files before it are absent:
|
||||
# staged alone, it shows whether the core reads it at all.
|
||||
alone = self.follow_up(unit, core, content, load, frames, digest, entry, local, dest,
|
||||
f"alone:{entry['name']}")
|
||||
if alone is None:
|
||||
continue
|
||||
if dest in self.opened(alone, 1):
|
||||
continue
|
||||
probed_alone = [p for r in alone["variants"][0]["repetitions"]
|
||||
for p in r.get("files_probed_absent") or ()]
|
||||
others = [p for p in dict.fromkeys(probed + probed_alone) if p != dest
|
||||
and p.rsplit("/", 1)[-1].casefold() == dest.rsplit("/", 1)[-1].casefold()]
|
||||
moved = False
|
||||
for candidate in others[:MAX_ALIAS_CANDIDATES]:
|
||||
record_c = self.follow_up(unit, core, content, load, frames, digest, entry, local,
|
||||
candidate, f"path:{entry['name']}:{candidate}")
|
||||
if record_c and candidate in self.opened(record_c, 1):
|
||||
verdict = rules.rule_path(entry, dest, rules.Opened(candidate, record_c["id"]))
|
||||
if verdict:
|
||||
self.settle(emulator, content, core, index, entry, [verdict])
|
||||
moved = True
|
||||
break
|
||||
if not moved:
|
||||
verdict = rules.rule_never_opened(entry, [record["id"], alone["id"]], content.name)
|
||||
self.settle(emulator, content, core, index, entry, [verdict])
|
||||
def judged(self, emulator: str, rid: str) -> bool:
|
||||
"""True for a record the boot oracle judged: only those prove a field."""
|
||||
record = self.read_record(emulator, rid)
|
||||
return bool(record) and record.get("record_version", 0) >= 4
|
||||
|
||||
@staticmethod
|
||||
def opened(record: dict, position: int) -> set[str]:
|
||||
@@ -1203,34 +1297,23 @@ class Campaign:
|
||||
|
||||
def follow_up(self, unit: Unit, core: Core, content: Content, load: Path, frames: list[str],
|
||||
digest: str, entry: dict, local: Path, dest: str, check: str) -> dict | None:
|
||||
"""The file staged at dest alone, against nothing there."""
|
||||
key = self.check_key(core, content, check)
|
||||
previous = self.state["checks"].get(unit.emulator, {}).get(key)
|
||||
if not should_run(previous, core.sha256, digest):
|
||||
return self.read_record(unit.emulator, (previous or {}).get("record"))
|
||||
"""The file staged at dest alone: does the core open it there."""
|
||||
stem = f"{core.name}-{slug(content.name)}"
|
||||
argv = self.probe_args("check", core, unit.emulator, slug(f"{check}-{stem}"), content, load)
|
||||
argv += frames + ["--vary", f"{dest}=", "--vary", f"{dest}={local}",
|
||||
"--observable", "frame_hashes", "--repeat", "1",
|
||||
"--claim", f"{core.name} opens {entry['name']} as {dest}",
|
||||
"--method", (f"{entry['name']} staged as {dest}, against nothing there, "
|
||||
f"{content.frames} frames of {content.name}. The files the "
|
||||
f"core opened are read from strace.")]
|
||||
result = self.probe(argv, f"{unit.emulator}-{stem}-{slug(check)}")
|
||||
self.remember(unit.emulator, key, result, core, digest)
|
||||
return result.record
|
||||
argv = self.probe_args("run", core, unit.emulator, slug(f"{check}-{stem}"), content, load)
|
||||
argv += frames + ["--system-file", f"{dest}={local}"]
|
||||
return self.check(unit.emulator, self.check_key(core, content, check), core, digest, argv,
|
||||
f"{unit.emulator}-{stem}-{slug(check)}")
|
||||
|
||||
def follow_aliases(self, unit: Unit, core: Core, content: Content, load: Path, frames: list[str],
|
||||
digest: str, index: int, entry: dict, local: Path, record: dict,
|
||||
absent_label: str) -> None:
|
||||
"""Names the core looked for, with the file absent, that no entry declares."""
|
||||
digest: str, index: int, entry: dict, local: Path, none_record: dict) -> None:
|
||||
"""Names the core looked for, with no BIOS, that no entry declares."""
|
||||
declared = {e["name"] for e in unit.profile.get("files") or ()}
|
||||
declared |= {a for e in unit.profile.get("files") or () for a in e.get("aliases") or ()}
|
||||
suffix = Path(entry["name"]).suffix.casefold()
|
||||
dest = entry_dest(entry)
|
||||
folder = dest.rsplit("/", 1)[0] if "/" in dest else ""
|
||||
probed: list[str] = []
|
||||
for rep in rules.variant(record, absent_label)["repetitions"]:
|
||||
for rep in none_record["variants"][0]["repetitions"]:
|
||||
for path in rep.get("files_probed_absent") or ():
|
||||
name = path.rsplit("/", 1)[-1]
|
||||
where = path.rsplit("/", 1)[0] if "/" in path else ""
|
||||
@@ -1240,7 +1323,7 @@ class Campaign:
|
||||
for candidate in probed[:MAX_ALIAS_CANDIDATES]:
|
||||
found = self.follow_up(unit, core, content, load, frames, digest, entry, local, candidate,
|
||||
f"alias:{entry['name']}:{candidate.rsplit('/', 1)[-1]}")
|
||||
if found and candidate in self.opened(found, 1):
|
||||
if found and candidate in self.opened(found, 0):
|
||||
verdict = rules.rule_alias(self.reload_entry(unit, index), rules.Opened(candidate, found["id"]))
|
||||
if verdict:
|
||||
self.settle(unit.emulator, content, core, index, self.reload_entry(unit, index), [verdict])
|
||||
@@ -1249,7 +1332,7 @@ class Campaign:
|
||||
digest: str, index: int, entry: dict, dest: str, primary: Path,
|
||||
variants: list[Path]) -> None:
|
||||
key = self.check_key(core, content, f"variants:{entry['name']}")
|
||||
if not should_run(self.state["checks"].get(unit.emulator, {}).get(key), core.sha256, digest):
|
||||
if not self.needed(unit.emulator, key, core, digest):
|
||||
return
|
||||
stem = f"{core.name}-{slug(content.name)}"
|
||||
argv = self.probe_args("check", core, unit.emulator, slug(f"variants-{entry['name']}-{stem}"),
|
||||
@@ -1257,16 +1340,14 @@ class Campaign:
|
||||
for path in [primary, *variants]:
|
||||
argv += ["--vary", f"{dest}={path}"]
|
||||
argv += ["--observable", "frame_hashes", "--repeat", str(self.settings.check_repeat),
|
||||
"--claim", f"the copies of {entry['name']} change what {core.name} shows on {content.name}",
|
||||
"--method", (f"Each copy the collection holds staged as {dest}, each run "
|
||||
f"{self.settings.check_repeat} times for {content.frames} frames, "
|
||||
f"compared on the sampled frame hashes.")]
|
||||
result = self.probe(argv, f"{unit.emulator}-{stem}-variants")
|
||||
self.remember(unit.emulator, key, result, core, digest)
|
||||
if result.record:
|
||||
status = result.record["check"]["result"]["status"]
|
||||
verdict = rules.rule_variants(status, [v["label"] for v in result.record["variants"]],
|
||||
entry, result.record["id"])
|
||||
"--claim", f"every copy of {entry['name']} boots {content.name} on {core.name}",
|
||||
"--method", (f"Each copy the collection holds staged alone as {dest}, each run "
|
||||
f"{self.settings.check_repeat} times for {content.frames} frames. The "
|
||||
f"boot oracle judges each copy.")]
|
||||
record = self.check(unit.emulator, key, core, digest, argv, f"{unit.emulator}-{stem}-variants")
|
||||
if record:
|
||||
verdict = rules.rule_variants([rules.run_of(record, v["label"]) for v in record["variants"]],
|
||||
entry)
|
||||
if verdict:
|
||||
self.settle(unit.emulator, content, core, index, entry, [verdict])
|
||||
|
||||
@@ -1291,9 +1372,10 @@ class Campaign:
|
||||
agrees = verdict.field in rules.SETTLED_FIELDS and rules.agrees(fresh, verdict)
|
||||
if verdict.apply:
|
||||
updates: dict[str, object] = {}
|
||||
if not agrees or verdict.field not in fresh:
|
||||
if not agrees or (verdict.field not in fresh and verdict.field != "validation"):
|
||||
updates[verdict.field] = verdict.value
|
||||
evidence = rules.merge_evidence(fresh.get("evidence"), verdict)
|
||||
evidence = rules.merge_evidence(fresh.get("evidence"), verdict,
|
||||
keep=lambda rid: self.judged(emulator, rid))
|
||||
if evidence != fresh.get("evidence"):
|
||||
updates["evidence"] = evidence
|
||||
if updates:
|
||||
@@ -1331,7 +1413,8 @@ class Campaign:
|
||||
key = self.finding_key(emulator, content, entry, verdict)
|
||||
previous = self.latest_findings().get(key)
|
||||
if previous and previous["status"] == status and previous["rule"] == verdict.rule \
|
||||
and previous["run_shows"] == verdict.value and previous["profile_says"] == says:
|
||||
and previous["run_shows"] == verdict.value and previous["profile_says"] == says \
|
||||
and previous["evidence"] == list(verdict.evidence):
|
||||
return
|
||||
line = mr.seal_line({
|
||||
"schema_version": 1, "found_at": now_iso(), "key": key, "emulator": emulator,
|
||||
@@ -1364,6 +1447,60 @@ class Campaign:
|
||||
return record["core"].get("library_version")
|
||||
return None
|
||||
|
||||
# -- reference frames -----------------------------------------------------------
|
||||
|
||||
def references(self, only: set[str], system: str | None, png_dir: Path) -> list[dict]:
|
||||
"""The full set run once per core and content, frames written as PNG,
|
||||
and the screens that stay on long enough to serve as references."""
|
||||
self.deadline = self.host.clock() + self.settings.budget
|
||||
listed = []
|
||||
for unit in self.units(only, system):
|
||||
contents = self.unit_contents(unit, system)
|
||||
if unit.pending or not contents:
|
||||
continue
|
||||
try:
|
||||
cores = self.unit_cores(unit.emulator, unit.profile, unit.buildbot_only)
|
||||
except Unavailable as exc:
|
||||
self.log(f"{unit.emulator}: {exc}")
|
||||
continue
|
||||
for core in cores:
|
||||
for content in contents:
|
||||
self.guard()
|
||||
self.store.hold(content, "references")
|
||||
try:
|
||||
load = load_file(self.store.get(content), content.load)
|
||||
except Unavailable as exc:
|
||||
self.log(f"{unit.emulator}: {exc}")
|
||||
continue
|
||||
stem = f"{core.name}-{slug(content.name)}"
|
||||
target = png_dir / slug(core.name) / slug(content.name)
|
||||
shutil.rmtree(target, ignore_errors=True)
|
||||
argv = self.probe_args("run", core, unit.emulator, slug(f"references-{stem}"),
|
||||
content, load)
|
||||
argv += ["--frames", str(content.frames), "--frame-hash-every",
|
||||
str(content.frame_hash_every), "--repeat", str(self.settings.check_repeat),
|
||||
"--png-dir", str(target)]
|
||||
for index, entry in self.system_entries(unit.profile, content.system):
|
||||
local = self.local_file(entry)
|
||||
if local and f"{entry_dest(entry)}=" not in " ".join(argv):
|
||||
argv += ["--system-file", f"{entry_dest(entry)}={local}"]
|
||||
result = self.probe(argv, f"{unit.emulator}-{stem}-references")
|
||||
self.store.release(content, "references")
|
||||
if not result.record:
|
||||
self.log(f"{unit.emulator}: references of {content.name}: {result.reason}")
|
||||
continue
|
||||
record = result.record
|
||||
listed.append({
|
||||
"emulator": unit.emulator, "core": core.name,
|
||||
"library_name": record["core"]["library_name"], "content": content.name,
|
||||
"content_sha1": record["inputs"]["content"]["sha1"], "record": record["id"],
|
||||
"verdict": record["variants"][0]["verdict"],
|
||||
"png_dir": str(target / record["variants"][0]["label"]),
|
||||
"candidates": reference_candidates(record),
|
||||
})
|
||||
save_state(self.paths.state, self.state)
|
||||
return listed
|
||||
|
||||
# -- the pass -----------------------------------------------------------------
|
||||
|
||||
def units(self, only: set[str], system: str | None) -> list[Unit]:
|
||||
@@ -1567,6 +1704,32 @@ class Campaign:
|
||||
return made
|
||||
|
||||
|
||||
def reference_candidates(record: dict, min_samples: int = 3) -> list[dict]:
|
||||
"""Screens of a record's first variant that are not one colour and stay
|
||||
on for at least min_samples consecutive samples in every repetition:
|
||||
what a reviewer looks at to choose reference frames."""
|
||||
found: list[dict[str, tuple[int, int]]] = []
|
||||
for rep in record["variants"][0]["repetitions"]:
|
||||
observables = rep.get("observables") or {}
|
||||
uniform = set(observables.get("uniform_frames") or ())
|
||||
runs: dict[str, tuple[int, int]] = {}
|
||||
previous, start, length = None, 0, 0
|
||||
for frame, digest in [*(observables.get("frame_hashes") or ()), (None, None)]:
|
||||
if digest == previous:
|
||||
length += 1
|
||||
continue
|
||||
if previous and previous not in uniform and length >= min_samples:
|
||||
first, longest = runs.get(previous, (start, 0))
|
||||
runs[previous] = (min(first, start), max(longest, length))
|
||||
previous, start, length = digest, frame, 1
|
||||
found.append(runs)
|
||||
common = set(found[0]) if found else set()
|
||||
for runs in found[1:]:
|
||||
common &= set(runs)
|
||||
return sorted(({"sha1": digest, "first_frame": found[0][digest][0], "samples": found[0][digest][1]}
|
||||
for digest in common), key=lambda item: item["first_frame"])
|
||||
|
||||
|
||||
def reason_class(reason: str) -> str:
|
||||
"""A pending reason without its detail, to count them."""
|
||||
head = reason.split(":", 1)[0].strip() if ":" in reason else reason
|
||||
@@ -1661,9 +1824,17 @@ def main(argv: Sequence[str] | None = None) -> int:
|
||||
parser = argparse.ArgumentParser(allow_abbrev=False, description=__doc__.split("\n\n")[0],
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
sub = parser.add_subparsers(dest="command", required=True)
|
||||
run_p = sub.add_parser("run", help="one pass: cores, content, checks, rules")
|
||||
run_p.add_argument("--only", default="", help="emulator profiles or core names, comma-separated")
|
||||
run_p.add_argument("--system", help="one system id")
|
||||
scope = argparse.ArgumentParser(add_help=False, allow_abbrev=False)
|
||||
scope.add_argument("--only", default="", help="emulator profiles or core names, comma-separated")
|
||||
scope.add_argument("--system", help="one system id")
|
||||
scope.add_argument("--romfetch", default="",
|
||||
help=f"romfetch command (default: ${ROMFETCH_ENV}, else romfetch on PATH)")
|
||||
scope.add_argument("--offline", action="store_true", help="no buildbot, no romfetch, no build")
|
||||
scope.add_argument("--content-file", default=str(CONTENT_FILE),
|
||||
help="the test content list (default: tests/campaign/content.yml)")
|
||||
scope.add_argument("--allow-unsandboxed", action="store_true",
|
||||
help="run cores and builds without bubblewrap when it is missing (refused by default)")
|
||||
run_p = sub.add_parser("run", parents=[scope], help="one pass: cores, content, checks, rules")
|
||||
run_p.add_argument("--budget", type=parse_budget, default=6 * 3600.0,
|
||||
help="stop starting checks after this long (6h, 90m, 3600s)")
|
||||
run_p.add_argument("--max-load-wait", type=float, default=3600,
|
||||
@@ -1671,16 +1842,17 @@ def main(argv: Sequence[str] | None = None) -> int:
|
||||
run_p.add_argument("--min-free-gb", type=float, default=30, help="pause below this free space")
|
||||
run_p.add_argument("--cache-cap-gb", type=float, default=20,
|
||||
help="content the campaign fetched is evicted past this size, oldest use first")
|
||||
run_p.add_argument("--romfetch", default="",
|
||||
help=f"romfetch command (default: ${ROMFETCH_ENV}, else romfetch on PATH)")
|
||||
run_p.add_argument("--offline", action="store_true", help="no buildbot, no romfetch, no build")
|
||||
run_p.add_argument("--allow-unsandboxed", action="store_true",
|
||||
help="run cores and builds without bubblewrap when it is missing (refused by default)")
|
||||
run_p.add_argument("--bench", action="store_true",
|
||||
help="also time each content that boots (benchmarks only choose between variants)")
|
||||
run_p.add_argument("--dry-run", action="store_true", help="print the plan, run nothing")
|
||||
run_p.add_argument("--commit", action="store_true",
|
||||
help="commit records, findings and each changed profile behind the gate")
|
||||
run_p.add_argument("--commit-every", type=int, default=0, metavar="N",
|
||||
help="with --commit, also commit after every N emulators")
|
||||
refs_p = sub.add_parser("references", parents=[scope],
|
||||
help="run the full set with PNG frames and list reference candidates")
|
||||
refs_p.add_argument("--png-dir", default=str(ROOT / "tmp" / "campaign" / "references"),
|
||||
help="where the frames are written, one folder per core and content")
|
||||
status_p = sub.add_parser("status", help="done, failed and pending checks, and why")
|
||||
status_p.add_argument("--json", action="store_true", help="the report as JSON")
|
||||
findings_p = sub.add_parser("findings", help="profile claims the runs contradict, open for review")
|
||||
@@ -1688,9 +1860,9 @@ def main(argv: Sequence[str] | None = None) -> int:
|
||||
findings_p.add_argument("--json", action="store_true", help="the findings as JSON")
|
||||
sub.add_parser("gate", help="tests, schemas, verify and pack of the changed profiles")
|
||||
timer_p = sub.add_parser("install-timer",
|
||||
help="write the autorun units, the campaign job's timer among them")
|
||||
help="opt-in: write the autorun units, the campaign job's timer among them")
|
||||
timer_p.add_argument("--enable", action="store_true",
|
||||
help="also reload systemd and enable the timers")
|
||||
help="also reload systemd and enable the timers (never by default)")
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
paths = Paths.default()
|
||||
@@ -1713,20 +1885,34 @@ def main(argv: Sequence[str] | None = None) -> int:
|
||||
settings = Settings(budget=args.budget, max_load_wait=args.max_load_wait,
|
||||
min_free_gb=args.min_free_gb, cache_cap_gb=args.cache_cap_gb,
|
||||
romfetch=args.romfetch, network=not args.offline,
|
||||
allow_unsandboxed=args.allow_unsandboxed, bench=args.bench)
|
||||
elif args.command == "references":
|
||||
settings = Settings(romfetch=args.romfetch, network=not args.offline,
|
||||
allow_unsandboxed=args.allow_unsandboxed)
|
||||
if args.command in ("run", "references"):
|
||||
paths.content_file = Path(args.content_file)
|
||||
campaign = Campaign(paths, settings)
|
||||
if args.command == "status":
|
||||
report = status_report(campaign)
|
||||
print(json.dumps(report, indent=2) if args.json else render_status(report))
|
||||
return 0
|
||||
only = {item.strip() for item in args.only.split(",") if item.strip()}
|
||||
if args.command == "references":
|
||||
try:
|
||||
with host_lock(campaign.lock_path):
|
||||
listed = campaign.references(only, args.system, Path(args.png_dir))
|
||||
except autorun.LockBusy as exc:
|
||||
print(f"campaign: deferred, {exc}", file=sys.stderr)
|
||||
return 75
|
||||
print(json.dumps(listed, indent=2))
|
||||
return 0
|
||||
if args.dry_run:
|
||||
campaign.run(only, args.system, dry_run=True)
|
||||
return 0
|
||||
campaign.dirty_at_start = set(autorun.changed_files(paths.root)) if args.commit else set()
|
||||
|
||||
def stop(signum: int, frame: object) -> None:
|
||||
# A timer's TimeoutStartSec ends the pass like Ctrl-C: state saved, pass line written.
|
||||
# SIGTERM ends the pass like Ctrl-C: state saved, pass line written.
|
||||
raise KeyboardInterrupt
|
||||
signal.signal(signal.SIGTERM, stop)
|
||||
try:
|
||||
|
||||
@@ -23,6 +23,7 @@ ANCHORS = {
|
||||
"hle_fallback": ("required", "name"),
|
||||
"path": ("name",),
|
||||
"aliases": ("path", "name"),
|
||||
"validation": ("sha1", "md5", "crc32", "size", "name"),
|
||||
}
|
||||
|
||||
|
||||
|
||||
+181
-97
@@ -1,25 +1,36 @@
|
||||
"""The campaign's fixed rule table: which observable settles which profile field.
|
||||
"""The campaign's fixed rule table: which verdicts settle which profile field.
|
||||
|
||||
Each rule is a pure function of a core probe record (or what was read from
|
||||
one) and a profile entry. It returns verdicts. A verdict with `apply` set is
|
||||
settled by the table and written into the profile with the record ids as
|
||||
`evidence:`. Any other verdict goes to the review queue
|
||||
(measurements/findings.jsonl).
|
||||
Each rule is a pure function of verdicts read from core probe records (the
|
||||
boot oracle of core_probe.py: boots, bios_error, crash, hang, unknown) and
|
||||
a profile entry. It returns verdicts on profile fields. One with `apply` set
|
||||
is settled by the table and written into the profile with the record ids as
|
||||
`evidence:`. Any other goes to the review queue (measurements/findings.jsonl).
|
||||
|
||||
observable field settled
|
||||
boots to the game with no file hle_fallback true
|
||||
no game screen without it, the game with it required true
|
||||
hle_fallback false
|
||||
opens the staged file under another path path that path
|
||||
opens the staged file under another name aliases name added
|
||||
a staged file the content should use, never read - flagged only
|
||||
Three runs are compared for a file, all on the same content: `none` with no
|
||||
BIOS at all, `present` with the file alone, and wrong files staged under its
|
||||
name (zeros of its size, its first half, another region's dump).
|
||||
|
||||
"Boots to the game" is read from the sampled frames: the run without the
|
||||
file shows at least MIN_SHARED_SCREENS distinct screens that the run with
|
||||
the file also shows, single-colour frames excluded. "No game screen" is a
|
||||
run that did not load, or whose every sampled frame is a single colour. A
|
||||
run that shows screens of its own that the reference never shows settles
|
||||
nothing.
|
||||
runs field settled
|
||||
none boots, the file changes the run hle_fallback true
|
||||
none fails, present boots required true
|
||||
hle_fallback false
|
||||
zeros refused, present boots validation a content check
|
||||
zeros used, present boots validation no content check
|
||||
half refused, zeros used validation size
|
||||
half used validation no size check
|
||||
opens the staged file under another path path that path
|
||||
opens the staged file under another name aliases name added
|
||||
a staged file the content should use, never - flagged only
|
||||
read
|
||||
copies of one file that boot and fail - queued
|
||||
|
||||
"Fails" is bios_error, crash or hang. A wrong file is refused when the
|
||||
core reports a BIOS error, or when it boots without the BIOS screens the
|
||||
right file shows (it fell back to a built-in BIOS). It is used when it
|
||||
turns the run into a hang or a crash that the run without any file does not
|
||||
show. Anything else settles nothing. Of validation, the table writes only a
|
||||
missing `size`. A contradicted content check goes to review: which hash a
|
||||
core computes is read in its code.
|
||||
|
||||
Standard library only.
|
||||
"""
|
||||
@@ -29,23 +40,34 @@ from __future__ import annotations
|
||||
from collections.abc import Iterable, Sequence
|
||||
from dataclasses import dataclass, field
|
||||
|
||||
MIN_SHARED_SCREENS = 2
|
||||
BOOTS = "boots"
|
||||
FAILS = "fails"
|
||||
INCONCLUSIVE = "inconclusive"
|
||||
BIOS_ERROR = "bios_error"
|
||||
CRASH = "crash"
|
||||
HANG = "hang"
|
||||
UNKNOWN = "unknown"
|
||||
FAILS = (BIOS_ERROR, CRASH, HANG)
|
||||
REFUSED = "refused"
|
||||
USED = "used"
|
||||
CONTENT_CHECKS = ("md5", "sha1", "sha256", "crc32", "adler32")
|
||||
|
||||
# A field an entry leaves out reads as this value.
|
||||
FIELD_DEFAULTS: dict[str, object] = {"hle_fallback": False, "path": None, "aliases": []}
|
||||
SETTLED_FIELDS = ("required", "hle_fallback", "path", "aliases")
|
||||
FIELD_DEFAULTS: dict[str, object] = {"hle_fallback": False, "path": None, "aliases": [],
|
||||
"validation": []}
|
||||
SETTLED_FIELDS = ("required", "hle_fallback", "path", "aliases", "validation")
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Boot:
|
||||
"""What the runs without the file showed, against the runs with it."""
|
||||
class Run:
|
||||
"""The verdict of one variant of a record: what a rule reads."""
|
||||
|
||||
status: str
|
||||
detail: str
|
||||
shared: int = 0
|
||||
verdict: str
|
||||
record_id: str
|
||||
label: str
|
||||
stages: tuple[str, ...] = ()
|
||||
|
||||
@property
|
||||
def shows_bios(self) -> bool:
|
||||
return "bios" in self.stages
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
@@ -67,13 +89,6 @@ class Opened:
|
||||
extra: dict = field(default_factory=dict)
|
||||
|
||||
|
||||
def screens(repetition: dict) -> set[str]:
|
||||
"""The distinct sampled frames of a repetition that are not one colour."""
|
||||
observables = repetition.get("observables") or {}
|
||||
uniform = set(observables.get("uniform_frames") or ())
|
||||
return {digest for _, digest in observables.get("frame_hashes") or () if digest not in uniform}
|
||||
|
||||
|
||||
def variant(record: dict, label: str) -> dict:
|
||||
for item in record.get("variants") or ():
|
||||
if item.get("label") == label:
|
||||
@@ -81,43 +96,16 @@ def variant(record: dict, label: str) -> dict:
|
||||
raise KeyError(f"record {record.get('id')}: no variant {label!r}")
|
||||
|
||||
|
||||
def boot_outcome(record: dict, absent_label: str, present_label: str) -> Boot:
|
||||
"""Whether the core reached the game without the file.
|
||||
def run_of(record: dict, label: str) -> Run:
|
||||
"""A variant's verdict as a rule reads it. A record from before the
|
||||
oracle has none, and reads as unknown."""
|
||||
item = variant(record, label)
|
||||
evidence = item.get("verdict_evidence") or {}
|
||||
return Run(item.get("verdict", UNKNOWN), record["id"], label, tuple(evidence.get("stages") or ()))
|
||||
|
||||
Every repetition must agree: one that boots and one that does not leave
|
||||
the question open.
|
||||
"""
|
||||
present = variant(record, present_label)["repetitions"]
|
||||
if any(not rep.get("loaded") for rep in present):
|
||||
return Boot(INCONCLUSIVE, "with the file, the core did not load the content")
|
||||
reference: set[str] = set()
|
||||
for rep in present:
|
||||
shown = screens(rep)
|
||||
if not shown:
|
||||
return Boot(INCONCLUSIVE, "with the file, the core showed no game screen")
|
||||
reference |= shown
|
||||
outcomes: list[str] = []
|
||||
shared_counts: list[int] = []
|
||||
for rep in variant(record, absent_label)["repetitions"]:
|
||||
if not rep.get("loaded"):
|
||||
outcomes.append(FAILS)
|
||||
continue
|
||||
shown = screens(rep)
|
||||
if not shown:
|
||||
outcomes.append(FAILS)
|
||||
continue
|
||||
shared = len(shown & reference)
|
||||
shared_counts.append(shared)
|
||||
outcomes.append(BOOTS if shared >= MIN_SHARED_SCREENS else INCONCLUSIVE)
|
||||
shared = min(shared_counts) if shared_counts else 0
|
||||
if all(o == BOOTS for o in outcomes):
|
||||
return Boot(BOOTS, f"without the file, every run showed {shared} or more screens the "
|
||||
f"run with the file shows", shared)
|
||||
if all(o == FAILS for o in outcomes):
|
||||
return Boot(FAILS, "without the file, no run loaded the content or showed more than "
|
||||
"one colour, while the run with the file reached the game")
|
||||
return Boot(INCONCLUSIVE, "without the file, the runs showed screens the run with the file "
|
||||
"never shows, or disagreed with each other", shared)
|
||||
|
||||
def ids(*runs: Run) -> tuple[str, ...]:
|
||||
return tuple(dict.fromkeys(run.record_id for run in runs))
|
||||
|
||||
|
||||
def current(entry: dict, name: str) -> object:
|
||||
@@ -130,32 +118,123 @@ def agrees(entry: dict, verdict: Verdict) -> bool:
|
||||
"""True when the profile already says what the run showed."""
|
||||
if verdict.field == "aliases":
|
||||
return set(verdict.value or ()) <= set(entry.get("aliases") or ())
|
||||
if verdict.field == "validation":
|
||||
return verdict.rule == "validation_agrees"
|
||||
return current(entry, verdict.field) == verdict.value
|
||||
|
||||
|
||||
def rule_bios_need(boot: Boot, entry: dict, record_id: str) -> list[Verdict]:
|
||||
"""Boot with no file against boot with the declared file."""
|
||||
def read(none: Run, *runs: Run) -> bool:
|
||||
"""True when the file changes the run: alone or as a wrong file, one
|
||||
variant ends otherwise than the run with no BIOS, or reaches other
|
||||
stages. A core can open a file without using it for this content (a
|
||||
scan that hashes every file of the folder)."""
|
||||
return any(run.verdict != none.verdict or run.stages != none.stages for run in runs if run)
|
||||
|
||||
|
||||
def rule_need(none: Run, present: Run, entry: dict, used: bool = True) -> list[Verdict]:
|
||||
"""No BIOS at all against the file alone: required and hle_fallback. A
|
||||
file the content never uses settles nothing."""
|
||||
name = entry["name"]
|
||||
evidence = (record_id,)
|
||||
if boot.status == BOOTS:
|
||||
if none.verdict == BOOTS and not used:
|
||||
return []
|
||||
if none.verdict == BOOTS:
|
||||
out = [Verdict("boots_without_file", "hle_fallback", True,
|
||||
f"the core reaches the game without {name}: {boot.detail}", evidence, True)]
|
||||
f"the core boots the content with no BIOS at all, {name} included",
|
||||
ids(none), True)]
|
||||
if entry.get("required") is True:
|
||||
out.append(Verdict(
|
||||
"boots_without_file", "required", False,
|
||||
f"the profile says {name} is required, and the core reaches the game "
|
||||
f"without it. The table settles hle_fallback from this run, not required",
|
||||
evidence))
|
||||
f"the profile says {name} is required, and the core boots without it. The table "
|
||||
f"settles hle_fallback from this run, not required", ids(none)))
|
||||
return out
|
||||
if boot.status == FAILS:
|
||||
if none.verdict in FAILS and present.verdict == BOOTS:
|
||||
return [
|
||||
Verdict("fails_without_file", "required", True,
|
||||
f"the core reaches the game only with {name}: {boot.detail}", evidence, True),
|
||||
f"with no BIOS the run ends in {none.verdict}, with {name} alone it boots",
|
||||
ids(none, present), True),
|
||||
Verdict("fails_without_file", "hle_fallback", False,
|
||||
f"no stand-in for {name}: {boot.detail}", evidence, True),
|
||||
f"no stand-in for {name}: with no BIOS the run ends in {none.verdict}",
|
||||
ids(none, present), True),
|
||||
]
|
||||
return [Verdict("inconclusive", "hle_fallback", None,
|
||||
f"the runs with and without {name} settle nothing: {boot.detail}", evidence)]
|
||||
return [Verdict("unsettled", "hle_fallback", None,
|
||||
f"with no BIOS the run is {none.verdict} and with {name} alone {present.verdict}: "
|
||||
f"no rule settles a field from that", ids(none, present))]
|
||||
|
||||
|
||||
def file_use(wrong: Run, none: Run, present: Run) -> str | None:
|
||||
"""Whether the core refused a wrong file or ran it, or None."""
|
||||
if present.verdict != BOOTS:
|
||||
return None
|
||||
if wrong.verdict == BIOS_ERROR:
|
||||
return REFUSED
|
||||
if wrong.verdict == BOOTS:
|
||||
if wrong.shows_bios:
|
||||
return USED
|
||||
return REFUSED if present.shows_bios else None
|
||||
if wrong.verdict in (HANG, CRASH) and none.verdict in (BOOTS, BIOS_ERROR):
|
||||
return USED
|
||||
return None
|
||||
|
||||
|
||||
def declared_checks(entry: dict) -> tuple[set[str], bool]:
|
||||
"""The checks the entry's validation names, and whether it is one list
|
||||
(a per-build dict is never edited by the table)."""
|
||||
value = entry.get("validation") or []
|
||||
if isinstance(value, dict):
|
||||
return {str(v) for items in value.values() for v in items or ()}, False
|
||||
return {str(v) for v in value}, True
|
||||
|
||||
|
||||
def rule_validation(zeros: Run | None, half: Run | None, none: Run, present: Run,
|
||||
entry: dict) -> Verdict | None:
|
||||
"""Same-size and short wrong files against the right one: validation."""
|
||||
name = entry["name"]
|
||||
content = {REFUSED: True, USED: False}.get(file_use(zeros, none, present)) if zeros else None
|
||||
half_use = file_use(half, none, present) if half else None
|
||||
size: bool | None = None
|
||||
if half_use == USED:
|
||||
size, content = False, False if content is None else content
|
||||
elif half_use == REFUSED and content is False:
|
||||
size = True
|
||||
if content is None and size is None:
|
||||
return None
|
||||
declared, editable = declared_checks(entry)
|
||||
evidence = ids(*(run for run in (none, present, zeros, half) if run))
|
||||
said = sorted(declared)
|
||||
shown = []
|
||||
problems = []
|
||||
if content is not None:
|
||||
shown.append("checks the content" if content else "does not check the content")
|
||||
if content != bool(declared & set(CONTENT_CHECKS)):
|
||||
problems.append("a same-size file of zeros is " + ("refused" if content else "run")
|
||||
+ f", the profile declares validation {said}")
|
||||
missing_size = size is True and "size" not in declared
|
||||
if size is not None:
|
||||
shown.append("checks the size" if size else "does not check the size")
|
||||
if size is False and "size" in declared:
|
||||
problems.append(f"the first half of {name} is run, the profile declares a size check")
|
||||
statement = f"the core {' and '.join(shown)} of {name}"
|
||||
# What the runs show, for a finding beside what the profile says.
|
||||
checks = {"content": content, "size": size}
|
||||
if problems:
|
||||
return Verdict("validation_contradicted", "validation", checks,
|
||||
f"{statement}: {'; '.join(problems)}", evidence)
|
||||
if missing_size:
|
||||
if not editable:
|
||||
return Verdict("validation_contradicted", "validation", checks,
|
||||
f"{statement}: the per-build validation has no size check", evidence)
|
||||
value = [*(entry.get("validation") or []), "size"]
|
||||
return Verdict("validation_size_added", "validation", value,
|
||||
f"{statement}: half of the file is refused while zeros of its size are run",
|
||||
evidence, True)
|
||||
return Verdict("validation_agrees", "validation", entry.get("validation") or [], statement,
|
||||
evidence, editable)
|
||||
|
||||
|
||||
def rule_region(dump: Run, present: Run, entry: dict, game_region: str | None) -> str:
|
||||
"""What the core did with another region's dump under this file's name."""
|
||||
return (f"{dump.label} staged as {entry['name']} with a {game_region or 'region-less'} game: "
|
||||
f"{dump.verdict}, {entry['name']} itself: {present.verdict}")
|
||||
|
||||
|
||||
def rule_path(entry: dict, declared: str, opened: Opened) -> Verdict | None:
|
||||
@@ -184,20 +263,25 @@ def rule_never_opened(entry: dict, record_ids: Sequence[str], content: str) -> V
|
||||
f"{content}", tuple(record_ids))
|
||||
|
||||
|
||||
def rule_variants(status: str, labels: Iterable[str], entry: dict, record_id: str) -> Verdict | None:
|
||||
"""Copies of one file that change what the core shows: a pack choice to review."""
|
||||
if status != "differs":
|
||||
def rule_variants(runs: Iterable[Run], entry: dict) -> Verdict | None:
|
||||
"""Copies of one file whose verdicts differ: a pack choice to review."""
|
||||
runs = list(runs)
|
||||
if len({run.verdict for run in runs}) < 2:
|
||||
return None
|
||||
return Verdict("variant_changes_output", "variants", sorted(labels),
|
||||
f"the copies of {entry['name']} change what the core shows",
|
||||
(record_id,))
|
||||
shown = ", ".join(f"{run.label} {run.verdict}" for run in runs)
|
||||
return Verdict("variant_changes_verdict", "variants", sorted(run.label for run in runs),
|
||||
f"the copies of {entry['name']} do not boot alike: {shown}", ids(*runs))
|
||||
|
||||
|
||||
def merge_evidence(existing: dict | None, verdict: Verdict) -> dict:
|
||||
"""The entry's evidence: map with the verdict's record ids added under its field."""
|
||||
def merge_evidence(existing: dict | None, verdict: Verdict,
|
||||
keep: object = lambda rid: True) -> dict:
|
||||
"""The entry's evidence: map with the verdict's record ids added under its
|
||||
field. An id `keep` refuses is dropped from that field: a record from
|
||||
before the oracle no longer proves anything."""
|
||||
out = {key: list(value) for key, value in (existing or {}).items()}
|
||||
ids = out.setdefault(verdict.field, [])
|
||||
ids_ = [rid for rid in out.get(verdict.field, []) if keep(rid)]
|
||||
for rid in verdict.evidence:
|
||||
if rid not in ids:
|
||||
ids.append(rid)
|
||||
return {key: out[key] for key in sorted(out)}
|
||||
if rid not in ids_:
|
||||
ids_.append(rid)
|
||||
out[verdict.field] = ids_
|
||||
return {key: out[key] for key in sorted(out) if out[key]}
|
||||
+326
-17
@@ -21,6 +21,7 @@ import argparse
|
||||
import contextlib
|
||||
import ctypes
|
||||
import datetime as dt
|
||||
import fcntl
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
@@ -35,7 +36,7 @@ import sys
|
||||
import tempfile
|
||||
import time
|
||||
import zlib
|
||||
from collections.abc import Iterable, Sequence
|
||||
from collections.abc import Iterable, Iterator, Sequence
|
||||
from dataclasses import dataclass, field
|
||||
from pathlib import Path
|
||||
|
||||
@@ -73,6 +74,39 @@ PRINTF_SPEC = re.compile(r"%(?P<flags>[-+ #0]*)(?P<width>\*|\d+)?(?:\.(?P<prec>\
|
||||
r"(?P<len>hh|h|ll|l|j|z|t|L)?(?P<conv>[diouxXeEfFgGaAcspn%])")
|
||||
|
||||
|
||||
# One measurement at a time on the host: each core_probe execution takes this
|
||||
# lock itself, its load check included, and releases it when it ends. A pass
|
||||
# of many runs never holds it between them, so two passes interleave.
|
||||
PROBE_LOCK_ENV = "RETROBIOS_PROBE_LOCK"
|
||||
PROBE_LOCK_HELD_ENV = "RETROBIOS_PROBE_LOCK_HELD"
|
||||
DEFAULT_PROBE_LOCK = Path.home() / ".local" / "state" / "retrobios" / "probe.lock"
|
||||
|
||||
|
||||
def probe_lock_path() -> Path:
|
||||
return Path(os.environ.get(PROBE_LOCK_ENV) or DEFAULT_PROBE_LOCK)
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def host_probe_lock() -> Iterator[None]:
|
||||
"""The host's probe lock for one execution. A caller that already holds
|
||||
it for this run says so with RETROBIOS_PROBE_LOCK_HELD."""
|
||||
if os.environ.get(PROBE_LOCK_HELD_ENV):
|
||||
yield
|
||||
return
|
||||
path = probe_lock_path()
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
with path.open("a") as handle:
|
||||
try:
|
||||
fcntl.flock(handle, fcntl.LOCK_EX | fcntl.LOCK_NB)
|
||||
except BlockingIOError:
|
||||
print(f"waiting for {path}: another measurement is running", file=sys.stderr)
|
||||
fcntl.flock(handle, fcntl.LOCK_EX)
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
fcntl.flock(handle, fcntl.LOCK_UN)
|
||||
|
||||
|
||||
class ProbeError(RuntimeError):
|
||||
"""A run that cannot produce a trustworthy result."""
|
||||
|
||||
@@ -375,15 +409,25 @@ class Frontend:
|
||||
self.unanswered: dict[int, int] = {}
|
||||
self.input_queries = 0
|
||||
self.input_pressed = 0
|
||||
# What a run showed so far, one JSON line per event, flushed at once:
|
||||
# a core that kills the worker leaves its logs and frames behind.
|
||||
events = spec.get("events")
|
||||
self.events = open(events, "a", encoding="utf-8", buffering=1) if events else None # noqa: SIM115
|
||||
self.callbacks = (
|
||||
EnvFn(self.environment), VideoFn(self.video_refresh), AudioFn(self.audio_sample),
|
||||
AudioBatchFn(self.audio_batch), PollFn(lambda: None), InputFn(self.input_state),
|
||||
)
|
||||
self.log_callback = RetroLogCallback(LogFn(self.log))
|
||||
|
||||
def event(self, kind: str, **values: object) -> None:
|
||||
if self.events:
|
||||
self.events.write(json.dumps({"event": kind, **values}) + "\n")
|
||||
|
||||
def log(self, level: int, fmt: bytes, *args: int) -> None:
|
||||
name = LOG_LEVELS[level] if 0 <= level < len(LOG_LEVELS) else str(level)
|
||||
self.logs.append({"frame": self.frame, "level": name, "text": render_printf(fmt or b"", args)})
|
||||
line = {"frame": self.frame, "level": name, "text": render_printf(fmt or b"", args)}
|
||||
self.logs.append(line)
|
||||
self.event("log", **line)
|
||||
|
||||
def environment(self, cmd: int, data: int) -> bool:
|
||||
cmd &= ~ENV_EXPERIMENTAL
|
||||
@@ -446,8 +490,10 @@ class Frontend:
|
||||
if every and self.frame % every == 0:
|
||||
digest = hashlib.sha1(self.last_frame).hexdigest()
|
||||
self.frame_hashes.append([self.frame, digest])
|
||||
if digest not in self.uniform and uniform_frame(self.last_frame, PIXEL_BYTES[self.pixel_format]):
|
||||
flat = digest in self.uniform or uniform_frame(self.last_frame, PIXEL_BYTES[self.pixel_format])
|
||||
if flat:
|
||||
self.uniform.add(digest)
|
||||
self.event("frame", frame=self.frame, sha1=digest, uniform=flat)
|
||||
png_dir = self.spec.get("png_dir")
|
||||
if png_dir and self.last_frame:
|
||||
rgb = to_rgb(self.pixel_format, *self.last_size, self.last_frame)
|
||||
@@ -483,6 +529,7 @@ def run_worker(spec: dict) -> dict:
|
||||
getattr(core, name)(fn)
|
||||
info = RetroSystemInfo()
|
||||
core.retro_get_system_info(ctypes.byref(info))
|
||||
front.event("info", library_name=info.library_name.decode(), library_version=info.library_version.decode())
|
||||
core.retro_init()
|
||||
game = None
|
||||
if spec.get("content"):
|
||||
@@ -494,7 +541,9 @@ def run_worker(spec: dict) -> dict:
|
||||
front.option_buffers.append(holder)
|
||||
game.data, game.size = ctypes.cast(holder, ctypes.c_void_p), len(blob)
|
||||
core.retro_load_game.restype = ctypes.c_bool
|
||||
if not core.retro_load_game(ctypes.byref(game) if game else None):
|
||||
loaded = bool(core.retro_load_game(ctypes.byref(game) if game else None))
|
||||
front.event("loaded", value=loaded)
|
||||
if not loaded:
|
||||
return {"loaded": False, "logs": front.logs, "library_name": info.library_name.decode()}
|
||||
# A frontend plugs a joypad into each port after loading, as RetroArch does.
|
||||
for port in range(spec["joypad_ports"]):
|
||||
@@ -619,10 +668,41 @@ def core_identity(args: argparse.Namespace) -> dict:
|
||||
# Runs (parent side)
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Synthetic:
|
||||
"""A wrong file made for a negative test: `@zeros:SIZE` is SIZE zero
|
||||
bytes, `@head:SIZE:PATH` the first SIZE bytes of PATH."""
|
||||
|
||||
kind: str
|
||||
size: int
|
||||
source: Path | None = None
|
||||
|
||||
@classmethod
|
||||
def parse(cls, text: str) -> Synthetic:
|
||||
kind, _, rest = text[1:].partition(":")
|
||||
size_text, _, source = rest.partition(":")
|
||||
if kind not in ("zeros", "head") or not size_text.isdigit() or (kind == "head") != bool(source):
|
||||
raise argparse.ArgumentTypeError(
|
||||
f"{text!r}: a made file is @zeros:SIZE or @head:SIZE:PATH")
|
||||
return cls(kind, int(size_text), Path(source) if source else None)
|
||||
|
||||
def label(self, dest: str) -> str:
|
||||
if self.kind == "zeros":
|
||||
return f"{dest}-zeros-{self.size}"
|
||||
return f"{dest}-head-{self.size}-of-{self.source.name}"
|
||||
|
||||
def write(self, out: Path) -> None:
|
||||
if self.kind == "zeros":
|
||||
out.write_bytes(bytes(self.size))
|
||||
return
|
||||
with self.source.open("rb") as handle:
|
||||
out.write_bytes(handle.read(self.size))
|
||||
|
||||
|
||||
@dataclass
|
||||
class Variant:
|
||||
label: str
|
||||
files: dict[str, Path | None] = field(default_factory=dict)
|
||||
files: dict[str, Path | Synthetic | None] = field(default_factory=dict)
|
||||
|
||||
|
||||
def stage_system_dir(base: dict[str, Path], variant: Variant, target: Path) -> dict[str, str | None]:
|
||||
@@ -632,10 +712,14 @@ def stage_system_dir(base: dict[str, Path], variant: Variant, target: Path) -> d
|
||||
for dest, src in {**base, **variant.files}.items():
|
||||
out = target / dest
|
||||
if src is None:
|
||||
out.unlink(missing_ok=True)
|
||||
staged[dest] = None
|
||||
continue
|
||||
out.parent.mkdir(parents=True, exist_ok=True)
|
||||
shutil.copyfile(src, out)
|
||||
if isinstance(src, Synthetic):
|
||||
src.write(out)
|
||||
else:
|
||||
shutil.copyfile(src, out)
|
||||
staged[dest] = file_digest(out)
|
||||
return staged
|
||||
|
||||
@@ -781,6 +865,45 @@ def run_group(command: list[str], timeout: float, env: dict[str, str]) -> subpro
|
||||
return subprocess.CompletedProcess(command, proc.returncode, out, err)
|
||||
|
||||
|
||||
WORKER_TRACEBACK = "Traceback (most recent call last)"
|
||||
|
||||
|
||||
def exit_description(returncode: int) -> dict:
|
||||
"""The status of a worker that died. A signal reaches the probe as a
|
||||
negative code, or as 128 + its number through bubblewrap's init."""
|
||||
number = -returncode if returncode < 0 else returncode - 128 if 128 < returncode < 160 else 0
|
||||
name = None
|
||||
if number:
|
||||
with contextlib.suppress(ValueError):
|
||||
name = signal.Signals(number).name
|
||||
return {"status": returncode, "signal": name}
|
||||
|
||||
|
||||
def partial_result(events: Path, spec: dict) -> dict:
|
||||
"""A repetition rebuilt from the events a worker wrote before it died."""
|
||||
lines = []
|
||||
if events.is_file():
|
||||
for line in events.read_text(encoding="utf-8", errors="replace").splitlines():
|
||||
with contextlib.suppress(ValueError):
|
||||
lines.append(json.loads(line))
|
||||
info = next((e for e in lines if e.get("event") == "info"), {})
|
||||
loaded = next((e["value"] for e in lines if e.get("event") == "loaded"), False)
|
||||
frames = [e for e in lines if e.get("event") == "frame"]
|
||||
result: dict = {
|
||||
"loaded": bool(loaded),
|
||||
"library_name": info.get("library_name", ""),
|
||||
"logs": [{k: e[k] for k in ("frame", "level", "text")} for e in lines if e.get("event") == "log"],
|
||||
}
|
||||
if info.get("library_version"):
|
||||
result["library_version"] = info["library_version"]
|
||||
if spec["frame_hash_every"]:
|
||||
result["observables"] = {
|
||||
"frame_hashes": [[e["frame"], e["sha1"]] for e in frames],
|
||||
"uniform_frames": sorted({e["sha1"] for e in frames if e.get("uniform")}),
|
||||
}
|
||||
return result
|
||||
|
||||
|
||||
def run_once(args: argparse.Namespace, system_dir: Path, scratch: Path, state_out: Path | None,
|
||||
png_dir: Path | None) -> dict:
|
||||
save_dir = scratch / "save"
|
||||
@@ -800,6 +923,7 @@ def run_once(args: argparse.Namespace, system_dir: Path, scratch: Path, state_ou
|
||||
"png_dir": str(png_dir) if png_dir else None,
|
||||
"state_out": str(state_out) if state_out else None,
|
||||
"env": dict(args.env),
|
||||
"events": str((scratch / "events.jsonl").resolve()),
|
||||
}
|
||||
spec_path, out_path, trace_path = scratch / "spec.json", scratch / "result.json", scratch / "strace.txt"
|
||||
spec_path.write_text(json.dumps(spec), encoding="utf-8")
|
||||
@@ -816,10 +940,20 @@ def run_once(args: argparse.Namespace, system_dir: Path, scratch: Path, state_ou
|
||||
if args.require_sandbox and isolation != SANDBOX:
|
||||
raise ProbeError(f"refused to run the core outside a sandbox: {isolation}")
|
||||
# The core sees the variables it was given and nothing of the host's.
|
||||
proc = run_group(prefix + command, args.timeout, dict(args.env))
|
||||
if proc.returncode != 0 or not out_path.exists():
|
||||
raise ProbeError(f"worker exited {proc.returncode}: {proc.stderr.strip()[-2000:]}")
|
||||
result = json.loads(out_path.read_text(encoding="utf-8"))
|
||||
try:
|
||||
proc = run_group(prefix + command, args.timeout, dict(args.env))
|
||||
except subprocess.TimeoutExpired:
|
||||
result = partial_result(scratch / "events.jsonl", spec)
|
||||
result["exit"] = {"status": None, "signal": "SIGKILL", "timeout_s": args.timeout}
|
||||
else:
|
||||
if proc.returncode == 0 and out_path.exists():
|
||||
result = json.loads(out_path.read_text(encoding="utf-8"))
|
||||
elif WORKER_TRACEBACK in proc.stderr:
|
||||
# The probe's own code failed: no verdict on the core is drawn.
|
||||
raise ProbeError(f"worker exited {proc.returncode}: {proc.stderr.strip()[-2000:]}")
|
||||
else:
|
||||
result = partial_result(scratch / "events.jsonl", spec)
|
||||
result["exit"] = exit_description(proc.returncode)
|
||||
places = [(str(system_dir.resolve()), "<system>"), (str(save_dir.resolve()), "<save>")]
|
||||
if args.content:
|
||||
places.append((str(Path(args.content).resolve().parent), "<content>"))
|
||||
@@ -872,6 +1006,10 @@ def run_variant(args: argparse.Namespace, base: dict[str, Path], variant: Varian
|
||||
if state_out:
|
||||
state_out.parent.mkdir(parents=True, exist_ok=True)
|
||||
rep = run_once(args, system_dir, scratch, state_out, png_dir)
|
||||
oracle = oracle_for(args.oracle_data, args.content_sha1, rep.get("library_name"))
|
||||
rep["verdict"], rep["verdict_evidence"] = judge(rep, oracle)
|
||||
if rep.get("exit"):
|
||||
flags.append(f"repetition {index}: {rep['verdict_evidence']['detail']}")
|
||||
if not rep.get("loaded"):
|
||||
flags.append(f"repetition {index}: retro_load_game returned false")
|
||||
for entry in rep.get("files_opened") or []:
|
||||
@@ -885,11 +1023,14 @@ def run_variant(args: argparse.Namespace, base: dict[str, Path], variant: Varian
|
||||
if rep.get("observables") != reference:
|
||||
differing = sorted(k for k in (reference or {}) if (rep.get("observables") or {}).get(k) != reference[k])
|
||||
flags.append(f"repetition {index} disagrees with repetition 0 on {', '.join(differing)}")
|
||||
verdict, evidence = variant_verdict(reps)
|
||||
return {
|
||||
"label": variant.label,
|
||||
"system_files": {dest: sha for dest, sha in sorted(staged.items())},
|
||||
"repetitions": reps,
|
||||
"flags": flags,
|
||||
"verdict": verdict,
|
||||
"verdict_evidence": evidence,
|
||||
}
|
||||
|
||||
|
||||
@@ -946,12 +1087,18 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
help="refuse to record when the 1-minute load average exceeds this "
|
||||
"(default: a quarter of the CPU count)")
|
||||
common.add_argument("--work-dir", default=str(DEFAULT_WORK_DIR), help="scratch directory")
|
||||
common.add_argument("--timeout", type=int, default=1800, help="seconds per repetition")
|
||||
common.add_argument("--timeout", type=int, default=1800,
|
||||
help="seconds per repetition, after which the run is killed and judged a hang")
|
||||
common.add_argument("--oracle", default=None, metavar="FILE",
|
||||
help="reference frames and error patterns the verdicts are judged against "
|
||||
"(default: tests/campaign/oracle.yml)")
|
||||
common.add_argument("--no-trace", action="store_true", help="do not run the worker under strace")
|
||||
common.add_argument("--require-sandbox", action="store_true",
|
||||
help="refuse to run the core unless bubblewrap can isolate it")
|
||||
|
||||
sub.add_parser("run", parents=[common], help="one execution")
|
||||
run = sub.add_parser("run", parents=[common], help="one execution")
|
||||
run.add_argument("--repeat", type=int, default=1,
|
||||
help="runs, each in a fresh process: the verdict is the one they all agree on")
|
||||
bench = sub.add_parser("bench", parents=[common], help="timed repetitions")
|
||||
bench.add_argument("--repeat", type=int, default=MIN_BENCH_REPETITIONS,
|
||||
help=f"timed repetitions, each in a fresh process (at least {MIN_BENCH_REPETITIONS} to record)")
|
||||
@@ -993,12 +1140,16 @@ def validate_args(args: argparse.Namespace) -> list[str]:
|
||||
for dest, src in args.system_file:
|
||||
if not Path(src).is_file():
|
||||
problems.append(f"--system-file {dest}={src}: not a file")
|
||||
if args.repeat < 1:
|
||||
problems.append("--repeat must be >= 1")
|
||||
if args.frames < 1 or args.warmup < 0:
|
||||
problems.append("--frames must be >= 1 and --warmup >= 0")
|
||||
if args.require_sandbox:
|
||||
isolation = sandbox_argv([])[1]
|
||||
if isolation != SANDBOX:
|
||||
problems.append(f"--require-sandbox: {isolation}")
|
||||
if args.oracle and not Path(args.oracle).is_file():
|
||||
problems.append(f"--oracle {args.oracle}: not a file")
|
||||
if args.png_dir and not args.frame_hash_every:
|
||||
problems.append("--png-dir needs --frame-hash-every")
|
||||
if args.record:
|
||||
@@ -1022,7 +1173,15 @@ def validate_args(args: argparse.Namespace) -> list[str]:
|
||||
if len(dests) != 1:
|
||||
problems.append("--vary must name the same DEST in every occurrence")
|
||||
for dest, src in args.vary:
|
||||
if src and not Path(src).is_file():
|
||||
if src.startswith("@"):
|
||||
try:
|
||||
made = Synthetic.parse(src)
|
||||
except argparse.ArgumentTypeError as exc:
|
||||
problems.append(f"--vary {dest}: {exc}")
|
||||
continue
|
||||
if made.source and not made.source.is_file():
|
||||
problems.append(f"--vary {dest}={src}: {made.source} is not a file")
|
||||
elif src and not Path(src).is_file():
|
||||
problems.append(f"--vary {dest}={src}: not a file")
|
||||
names = set(BASE_OBSERVABLES) | {f"state:{v}" for v in args.state_var}
|
||||
if args.frame_hash_every:
|
||||
@@ -1038,11 +1197,12 @@ def variants_for(args: argparse.Namespace) -> list[Variant]:
|
||||
out: list[Variant] = []
|
||||
seen: set[str] = set()
|
||||
for dest, src in args.vary:
|
||||
label = Path(src).name if src else f"{dest}-absent"
|
||||
made = Synthetic.parse(src) if src.startswith("@") else None
|
||||
label = made.label(dest) if made else Path(src).name if src else f"{dest}-absent"
|
||||
while label in seen:
|
||||
label += "+"
|
||||
seen.add(label)
|
||||
out.append(Variant(label, {dest: Path(src) if src else None}))
|
||||
out.append(Variant(label, {dest: made or (Path(src) if src else None)}))
|
||||
return out
|
||||
|
||||
|
||||
@@ -1088,6 +1248,144 @@ def check_result(variants: list[dict], observable: str) -> dict:
|
||||
}
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Boot oracle: what a run reached, from positive evidence
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
BOOTS, BIOS_ERROR, CRASH, HANG, UNKNOWN = "boots", "bios_error", "crash", "hang", "unknown"
|
||||
VERDICTS = (BOOTS, BIOS_ERROR, CRASH, HANG, UNKNOWN)
|
||||
DEFAULT_ORACLE = ROOT / "tests" / "campaign" / "oracle.yml"
|
||||
|
||||
|
||||
def oracle_for(data: dict, content_sha1: str | None, library_name: str | None) -> dict:
|
||||
"""The oracle entries that judge one content on one core: its reference
|
||||
frames, the error patterns every core shares and the core's own, the
|
||||
core's known error screens, and the log lines by which it says it loaded
|
||||
the console's own BIOS."""
|
||||
core = (data.get("cores") or {}).get(library_name or "") or {}
|
||||
references: list[dict] = []
|
||||
for item in data.get("content") or ():
|
||||
if content_sha1 and item.get("sha1") == content_sha1:
|
||||
block = (item.get("references") or {}).get(library_name or "") or {}
|
||||
references = [{"sha1": f["sha1"], "stage": f["stage"], "shows": f["shows"]}
|
||||
for f in block.get("frames") or ()]
|
||||
patterns = [p["pattern"] for p in (data.get("error_patterns") or ())]
|
||||
patterns += [p["pattern"] for p in core.get("error_patterns") or ()]
|
||||
screens = [{"sha1": s["sha1"], "shows": s["shows"]} for s in core.get("error_screens") or ()]
|
||||
loaded = [p["pattern"] for p in core.get("bios_patterns") or ()]
|
||||
return {"references": references, "error_patterns": patterns, "error_screens": screens,
|
||||
"bios_patterns": loaded}
|
||||
|
||||
|
||||
def sampled(rep: dict) -> list[tuple[int, str]]:
|
||||
observables = rep.get("observables") or {}
|
||||
return [(int(frame), digest) for frame, digest in observables.get("frame_hashes") or ()]
|
||||
|
||||
|
||||
def judge(rep: dict, oracle: dict) -> tuple[str, dict]:
|
||||
"""The verdict of one repetition and the evidence that decided it.
|
||||
|
||||
In order: a worker killed after the timeout is a hang and one that died
|
||||
a crash, from the process status. A reference frame of the game reached
|
||||
is a boot: the console's own screens alone are not. Without one, an error pattern of the core log or a known error screen
|
||||
is a BIOS error. Every sampled frame of the second half one colour is a
|
||||
hang. Anything else is unknown: a run is never called a boot because
|
||||
its frames differ from another run's.
|
||||
"""
|
||||
ended = rep.get("exit")
|
||||
if ended and ended.get("timeout_s") is not None:
|
||||
return HANG, {"rule": "timeout", "detail": f"killed after {ended['timeout_s']} s",
|
||||
"exit_status": ended.get("status"), "signal": ended.get("signal")}
|
||||
if ended:
|
||||
how = f"signal {ended['signal']}" if ended.get("signal") else f"exit status {ended.get('status')}"
|
||||
return CRASH, {"rule": "exit_status", "detail": f"the worker died: {how}",
|
||||
"exit_status": ended.get("status"), "signal": ended.get("signal")}
|
||||
frames = sampled(rep)
|
||||
final = (rep.get("observables") or {}).get("frame_sha1")
|
||||
if final:
|
||||
frames.append((int(rep.get("frames", 0)) + int(rep.get("warmup", 0)), final))
|
||||
references = {r["sha1"]: r for r in oracle.get("references") or ()}
|
||||
reached = [(frame, digest) for frame, digest in frames if digest in references]
|
||||
stages = list(dict.fromkeys(references[d]["stage"] for _, d in reached))
|
||||
# A core that hides the BIOS screens by default still says it loaded one.
|
||||
if "bios" not in stages and any(re.search(pattern, line["text"])
|
||||
for pattern in oracle.get("bios_patterns") or ()
|
||||
for line in rep.get("logs") or ()):
|
||||
stages.insert(0, "bios")
|
||||
game = [(frame, digest) for frame, digest in reached if references[digest]["stage"] == "game"]
|
||||
if game:
|
||||
frame, digest = game[0]
|
||||
return BOOTS, {"rule": "reference_frame",
|
||||
"detail": f"frame {frame} shows {references[digest]['shows']}",
|
||||
"frame": frame, "sha1": digest, "stages": stages}
|
||||
verdict, evidence = _without_the_game(rep, oracle, frames)
|
||||
if stages:
|
||||
# The console's own screens without one of the game: never a boot.
|
||||
evidence["stages"] = stages
|
||||
evidence["detail"] += ", after the BIOS screens and no screen of the game"
|
||||
return verdict, evidence
|
||||
|
||||
|
||||
def _without_the_game(rep: dict, oracle: dict, frames: list[tuple[int, str]]) -> tuple[str, dict]:
|
||||
"""The verdict of a run that reached no screen of the game."""
|
||||
for pattern in oracle.get("error_patterns") or ():
|
||||
for line in rep.get("logs") or ():
|
||||
if re.search(pattern, line["text"]):
|
||||
return BIOS_ERROR, {"rule": "error_pattern",
|
||||
"detail": f"the core logged an error at frame {line['frame']}",
|
||||
"pattern": pattern, "log": line["text"], "frame": line["frame"]}
|
||||
screens = {s["sha1"]: s for s in oracle.get("error_screens") or ()}
|
||||
for frame, digest in frames:
|
||||
if digest in screens:
|
||||
return BIOS_ERROR, {"rule": "error_screen",
|
||||
"detail": f"frame {frame} shows {screens[digest]['shows']}",
|
||||
"frame": frame, "sha1": digest}
|
||||
if not rep.get("loaded"):
|
||||
return UNKNOWN, {"rule": "no_evidence",
|
||||
"detail": "retro_load_game returned false and no error pattern matched"}
|
||||
uniform = set((rep.get("observables") or {}).get("uniform_frames") or ())
|
||||
tail = [digest for frame, digest in sampled(rep)][len(sampled(rep)) // 2:]
|
||||
if tail and all(digest in uniform for digest in tail):
|
||||
return HANG, {"rule": "uniform_tail",
|
||||
"detail": f"the last {len(tail)} sampled frames are one colour each"}
|
||||
if not oracle.get("references"):
|
||||
return UNKNOWN, {"rule": "no_evidence", "detail": "no reference frame is known for this "
|
||||
"content on this core"}
|
||||
return UNKNOWN, {"rule": "no_evidence", "detail": "no reference frame reached, no error pattern "
|
||||
"and no error screen"}
|
||||
|
||||
|
||||
def variant_verdict(reps: Sequence[dict]) -> tuple[str, dict]:
|
||||
"""The verdict all repetitions agree on, else unknown."""
|
||||
verdicts = [rep["verdict"] for rep in reps]
|
||||
if len(set(verdicts)) == 1:
|
||||
first = reps[0]["verdict_evidence"]
|
||||
evidence = {"rule": "repetitions_agree",
|
||||
"detail": f"{len(reps)} of {len(reps)} repetitions: {first['detail']}",
|
||||
"repetitions": verdicts}
|
||||
for key in ("frame", "sha1", "stages", "pattern", "log", "exit_status", "signal"):
|
||||
if key in first:
|
||||
evidence[key] = first[key]
|
||||
return verdicts[0], evidence
|
||||
return UNKNOWN, {"rule": "repetitions_disagree",
|
||||
"detail": f"the repetitions disagree: {', '.join(verdicts)}",
|
||||
"repetitions": verdicts}
|
||||
|
||||
|
||||
def load_oracle(path: Path | None) -> tuple[dict, dict | None]:
|
||||
"""The oracle file's data and its identity, or nothing without a file."""
|
||||
if path is None or not path.is_file():
|
||||
return {}, None
|
||||
import yaml # noqa: PLC0415
|
||||
|
||||
data = yaml.safe_load(path.read_text(encoding="utf-8")) or {}
|
||||
try:
|
||||
shown = path.resolve().relative_to(ROOT).as_posix()
|
||||
except ValueError:
|
||||
shown = path.name
|
||||
return data, {"file": shown, "sha256": file_digest(path, "sha256")}
|
||||
|
||||
|
||||
def default_emulator(core_file: Path, library_name: str | None) -> str:
|
||||
"""The profile whose cores: names the .so, else the library name as a slug."""
|
||||
stem = core_file.name.split(".")[0].removesuffix("_libretro")
|
||||
@@ -1143,14 +1441,21 @@ def probe(args: argparse.Namespace) -> int:
|
||||
for problem in problems:
|
||||
print(f"ERROR: {problem}", file=sys.stderr)
|
||||
return 2
|
||||
with host_probe_lock():
|
||||
return _probe(args)
|
||||
|
||||
|
||||
def _probe(args: argparse.Namespace) -> int:
|
||||
max_load = args.max_load if args.max_load is not None else (os.cpu_count() or 1) / 4
|
||||
load_before = load_average()
|
||||
if args.record and load_before and load_before[0] > max_load:
|
||||
print(f"ERROR: load average {load_before[0]} exceeds {max_load}: the machine is busy, "
|
||||
f"nothing recorded (raise --max-load to override)", file=sys.stderr)
|
||||
return 3
|
||||
repetitions = 1 if args.mode == "run" else args.repeat
|
||||
repetitions = args.repeat
|
||||
base = {dest: Path(src) for dest, src in args.system_file}
|
||||
args.oracle_data, oracle_identity = load_oracle(Path(args.oracle) if args.oracle else DEFAULT_ORACLE)
|
||||
args.content_sha1 = file_digest(Path(args.content)) if args.content else None
|
||||
work = Path(tempfile.mkdtemp(prefix=f"{args.mode}-", dir=_ensure(Path(args.work_dir))))
|
||||
try:
|
||||
variants = [run_variant(args, base, variant, work / f"v{i}", repetitions)
|
||||
@@ -1188,6 +1493,9 @@ def probe(args: argparse.Namespace) -> int:
|
||||
+ (["frame_hashes", "uniform_frames"] if args.frame_hash_every else []),
|
||||
"frame_hash_every": args.frame_hash_every,
|
||||
"joypad_ports": args.joypad_ports,
|
||||
"oracle": ({**oracle_identity, **oracle_for(args.oracle_data, args.content_sha1,
|
||||
first.get("library_name"))}
|
||||
if oracle_identity else None),
|
||||
},
|
||||
"variants": variants,
|
||||
"flags": [f"{v['label']}: {flag}" for v in variants for flag in v["flags"]],
|
||||
@@ -1202,7 +1510,8 @@ def probe(args: argparse.Namespace) -> int:
|
||||
if args.mode == "check":
|
||||
record["check"] = {"claim": args.claim, "method": args.method, "observable": args.observable,
|
||||
"variable": args.vary[0][0],
|
||||
"result": check_result(variants, args.observable)}
|
||||
"result": {**check_result(variants, args.observable),
|
||||
"verdicts": {v["label"]: v["verdict"] for v in variants}}}
|
||||
try:
|
||||
record["emulator"] = args.emulator or default_emulator(Path(args.core), first.get("library_name"))
|
||||
except ProbeError as exc:
|
||||
|
||||
@@ -7180,6 +7180,11 @@ def system_pages(
|
||||
_section_label(manufacturer, console),
|
||||
_install_pairs(installs.get(console, []), lead, consumers))
|
||||
|
||||
def region_block(console: str, level: int = 3) -> list[str]:
|
||||
# Under the console's heading on a maker's page, a section of its
|
||||
# own on the console's page.
|
||||
return sitemeasurements.region_section(_REGION_RESULTS.get((slug, console), []), level)
|
||||
|
||||
def all_sections() -> dict[str, list[Card]]:
|
||||
anchors: set[str] = set()
|
||||
return {console: cards_of(console, anchors) for console in ordered}
|
||||
@@ -7221,6 +7226,7 @@ def system_pages(
|
||||
lines.append("")
|
||||
lines.extend(start_of(console))
|
||||
lines.extend(install_block(console))
|
||||
lines.extend(region_block(console))
|
||||
lines.extend(_cards_markdown(cards))
|
||||
lines.append("")
|
||||
lines.extend(_next_block([*_NEXT_FROM_SYSTEMS, json_next]))
|
||||
@@ -7283,6 +7289,7 @@ def system_pages(
|
||||
if console not in moved:
|
||||
summary.extend(start_of(console))
|
||||
summary.extend(install_block(console))
|
||||
summary.extend(region_block(console))
|
||||
summary.extend(_cards_markdown(cards_of(console, summary_anchors)))
|
||||
summary.append("")
|
||||
continue
|
||||
@@ -7367,6 +7374,8 @@ def system_pages(
|
||||
lines.extend(legend)
|
||||
lines.extend(_romset_note({console: consoles[console]}))
|
||||
lines.extend(install_block(console))
|
||||
if index == 0:
|
||||
lines.extend(region_block(console, 2))
|
||||
lines.extend(["## Files", ""])
|
||||
lines.extend(_cards_markdown(part))
|
||||
lines.append("")
|
||||
@@ -9097,6 +9106,9 @@ _DATA_MEMBERS: dict[str, dict[str, dict]] = {}
|
||||
_DATA_REVISIONS: dict[str, dict] = {}
|
||||
# The measurement index items of each emulator, for its Tested block.
|
||||
_MEASUREMENT_ITEMS: dict[str, list[dict]] = {}
|
||||
# (manufacturer slug, console) -> the region outcomes of its systems
|
||||
# (region_check.py), shown under the console on its system page.
|
||||
_REGION_RESULTS: dict[tuple[str, str], list[dict]] = {}
|
||||
# The emulator pages that list each data directory, by ref.
|
||||
_DATA_READERS: dict[str, list[tuple[str, str]]] = {}
|
||||
|
||||
@@ -11833,6 +11845,13 @@ def _generate(args: argparse.Namespace) -> None:
|
||||
_system_pages_from_data(manufacturers, coverages, db, profiles)
|
||||
)
|
||||
print(f" {len(_system_page_map)} system IDs mapped to pages")
|
||||
from siterender import _page_by_norm # noqa: PLC0415
|
||||
|
||||
_REGION_RESULTS.clear()
|
||||
for result in sitemeasurements.site_region_results(repo=REPO_URL):
|
||||
place = _system_page_map.get(result["system"]) or _page_by_norm(result["system"])
|
||||
if place:
|
||||
_REGION_RESULTS.setdefault(place, []).append(result)
|
||||
set_console_sections(manufacturers, program_names(profiles))
|
||||
from siterender import link_coverage, system_ids # noqa: PLC0415
|
||||
|
||||
@@ -11887,7 +11906,9 @@ def _generate(args: argparse.Namespace) -> None:
|
||||
_MEASUREMENT_ITEMS.update(sitemeasurements.by_emulator(measured.index))
|
||||
print(f" {measured.index['records']} records, {measured.index['count']} tests")
|
||||
write_if_changed(str(docs / sitemeasurements.EXPLORER_PAGE),
|
||||
sitemeasurements.generate_explorer_page(measured.index) + reference_next())
|
||||
sitemeasurements.generate_explorer_page(
|
||||
measured.index, {sys_id: system_name(sys_id) for sys_id in sorted(set(_system_page_map))})
|
||||
+ reference_next())
|
||||
|
||||
print("Generating static API and bulk data exports...")
|
||||
exports = generate_data_exports(
|
||||
|
||||
@@ -27,7 +27,9 @@ from collections.abc import Iterable
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
|
||||
RECORD_VERSION = 3
|
||||
RECORD_VERSION = 4
|
||||
# 3: before the boot oracle. 4: every repetition and variant carries a verdict.
|
||||
RECORD_VERSIONS = (3, 4)
|
||||
RECORDS_DIR = "measurements"
|
||||
ID_PATTERN = re.compile(r"^\d{4}-\d{2}-\d{2}-[0-9a-f]{12}$")
|
||||
SLUG_PATTERN = re.compile(r"^[a-z0-9]+(?:[-_][a-z0-9]+)*$")
|
||||
@@ -137,8 +139,8 @@ def check_line(record: dict) -> list[str]:
|
||||
"""The structural rules a line holds, without a JSON Schema validator."""
|
||||
rid = record.get("id", "")
|
||||
problems = []
|
||||
if record.get("record_version") != RECORD_VERSION:
|
||||
problems.append(f"{rid}: record_version {record.get('record_version')} != {RECORD_VERSION}")
|
||||
if record.get("record_version") not in RECORD_VERSIONS:
|
||||
problems.append(f"{rid}: record_version {record.get('record_version')} not in {RECORD_VERSIONS}")
|
||||
if not ID_PATTERN.match(str(rid)):
|
||||
problems.append(f"{rid!r}: not an id of the form YYYY-MM-DD-<12 hex>")
|
||||
elif str(record.get("recorded_at", ""))[:10] != rid[:10]:
|
||||
|
||||
@@ -0,0 +1,400 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Region checks: which regional BIOS a core reads for a game, and whether
|
||||
the game boots without it.
|
||||
|
||||
For a system whose profile marks its BIOS entries with `region:`, each test
|
||||
game of a region (tests/campaign/content.yml) runs through core_probe four
|
||||
times, each a record in measurements/<emulator>.jsonl:
|
||||
|
||||
full every regional BIOS the profile declares
|
||||
own only the entries whose `region:` holds the game's region
|
||||
others only the entries of the other regions
|
||||
pack the files of `generate_pack.py --emulator E --region R`, at
|
||||
the place the pack puts them
|
||||
|
||||
The outcome reads the records: the file the core opened in the full run
|
||||
(from strace) settles the `region:` claim, the verdicts of `own` and
|
||||
`others` say whether the BIOS is locked to the region, and `pack` says
|
||||
whether the pack filtered for the region boots the region's game.
|
||||
|
||||
run the four runs for each region game of one core and system
|
||||
report the outcome of every region record already in measurements/
|
||||
|
||||
A maintainer starts a run. Nothing here runs on a timer.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
import urllib.request
|
||||
from collections.abc import Callable, Iterable
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
||||
|
||||
import yaml # noqa: E402
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
CONTENT_FILE = ROOT / "tests" / "campaign" / "content.yml"
|
||||
CORES = ROOT / ".cache" / "region" / "cores"
|
||||
NIGHTLY = "https://buildbot.libretro.com/nightly/linux/x86_64/latest/{core}_libretro.so.zip"
|
||||
VARIANTS = ("full", "own", "others", "pack")
|
||||
SUBJECT = re.compile(r"^region-(?P<core>[a-z0-9_]+)-(?P<game>[a-z0-9-]+)-(?P<variant>full|own|others|pack)$")
|
||||
# The territory a test game names, as generate_pack --region takes it.
|
||||
PACK_REGION = {"japan": "jp", "north-america": "us", "europe": "eu"}
|
||||
REGION_WORDS = {"japan": "Japanese", "north-america": "US", "europe": "European"}
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Pure rules
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
def regions_of(entry: dict) -> list[str]:
|
||||
regions = entry.get("region") or []
|
||||
return [regions] if isinstance(regions, str) else list(regions)
|
||||
|
||||
|
||||
def entry_dest(entry: dict) -> str:
|
||||
path = entry.get("path")
|
||||
if isinstance(path, str) and path and not path.endswith("/"):
|
||||
return path
|
||||
return entry["name"]
|
||||
|
||||
|
||||
def region_entries(profile: dict, system: str) -> list[dict]:
|
||||
"""The BIOS entries of a system that a `region:` ties to territories."""
|
||||
out = []
|
||||
for entry in profile.get("files") or ():
|
||||
systems = entry.get("systems") or ([entry["system"]] if entry.get("system")
|
||||
else profile.get("systems") or [])
|
||||
if (system in systems and regions_of(entry) and "world" not in regions_of(entry)
|
||||
and entry.get("category", "bios") == "bios" and entry.get("mode") != "standalone"):
|
||||
out.append(entry)
|
||||
return out
|
||||
|
||||
|
||||
def plan_variants(entries: Iterable[dict], region: str,
|
||||
local: Callable[[dict], Path | None]) -> dict[str, dict[str, Path]]:
|
||||
"""The staged files of `full`, `own` and `others`, dest -> file. An entry
|
||||
the collection does not hold is left out of every variant."""
|
||||
held = [(entry, local(entry)) for entry in entries]
|
||||
held = [(entry, path) for entry, path in held if path]
|
||||
full = {entry_dest(e): p for e, p in held}
|
||||
own = {entry_dest(e): p for e, p in held if region in regions_of(e)}
|
||||
others = {entry_dest(e): p for e, p in held if region not in regions_of(e)}
|
||||
return {"full": full, "own": own, "others": others}
|
||||
|
||||
|
||||
def subject(core: str, game: str, variant: str) -> str:
|
||||
words = re.findall(r"[a-z0-9]+", game.lower())
|
||||
return f"region-{core.lower().replace('-', '_')}-{'-'.join(words)[:60].strip('-')}-{variant}"
|
||||
|
||||
|
||||
def opened(record: dict) -> set[str]:
|
||||
return {item["path"] for variant in record["variants"] for rep in variant["repetitions"]
|
||||
for item in rep.get("files_opened") or ()}
|
||||
|
||||
|
||||
def frames(record: dict) -> list:
|
||||
rep = record["variants"][0]["repetitions"][0]
|
||||
return (rep.get("observables") or {}).get("frame_hashes") or []
|
||||
|
||||
|
||||
def verdict(record: dict) -> str:
|
||||
return record["variants"][0].get("verdict") or "unknown"
|
||||
|
||||
|
||||
def outcome(records: dict[str, dict], entries: list[dict], region: str) -> dict:
|
||||
"""What the four records of one game on one core settle.
|
||||
|
||||
`selected` is the regional file the core opened with every one staged.
|
||||
The `region:` claim is `confirmed` when every regional file it opened
|
||||
holds the game's region, `contradicted` when none does, `ambiguous`
|
||||
when it opened its own region's file and others too, `unread` when it
|
||||
opened none. Each variant's result is its oracle verdict. While no
|
||||
reference frame is known for the game, a variant that samples the same
|
||||
frames as the full run (`as_full`) boots, and one that does not stays
|
||||
without an answer: frames that differ never make a verdict.
|
||||
"""
|
||||
by_dest = {entry_dest(e): e for e in entries}
|
||||
full = records.get("full")
|
||||
selected = sorted(opened(full) & set(by_dest)) if full else []
|
||||
if not full:
|
||||
claim = "unrun"
|
||||
elif not selected:
|
||||
claim = "unread"
|
||||
elif all(region in regions_of(by_dest[d]) for d in selected):
|
||||
claim = "confirmed"
|
||||
elif any(region in regions_of(by_dest[d]) for d in selected):
|
||||
# Opened every region's file, to hash them or to choose: the open
|
||||
# alone does not say which one the core runs.
|
||||
claim = "ambiguous"
|
||||
else:
|
||||
claim = "contradicted"
|
||||
results: dict[str, dict] = {}
|
||||
for label in VARIANTS:
|
||||
record = records.get(label)
|
||||
if not record:
|
||||
continue
|
||||
loaded = all(rep.get("loaded") for v in record["variants"] for rep in v["repetitions"])
|
||||
item = {"record": record["id"], "verdict": verdict(record), "loaded": loaded,
|
||||
"staged": sorted(record["variants"][0]["system_files"])}
|
||||
if full and label != "full":
|
||||
item["as_full"] = loaded and frames(record) == frames(full)
|
||||
results[label] = item
|
||||
|
||||
full_verdict = verdict(full) if full else None
|
||||
|
||||
def boots(label: str) -> bool | None:
|
||||
item = results.get(label)
|
||||
if not item:
|
||||
return None
|
||||
if item["verdict"] != "unknown":
|
||||
return item["verdict"] == "boots"
|
||||
# No verdict: the interim rule. The same frames as the full run is a
|
||||
# boot, while the full run itself is not shown to fail. Other frames
|
||||
# say nothing: the US disc reaches its game on the Japanese and
|
||||
# European BIOS through another licence screen.
|
||||
if full_verdict in ("boots", "unknown") and item.get("as_full"):
|
||||
return True
|
||||
return None
|
||||
|
||||
return {
|
||||
"region": region,
|
||||
"selected": [by_dest[d]["name"] for d in selected],
|
||||
"claim": claim,
|
||||
"variants": results,
|
||||
"own_boots": boots("own"),
|
||||
"others_boot": boots("others"),
|
||||
"pack_boots": boots("pack"),
|
||||
"judged_by": "verdict" if full_verdict not in (None, "unknown") else "full_run_frames",
|
||||
}
|
||||
|
||||
|
||||
def sentence(game_region: str, result: dict) -> str:
|
||||
"""The outcome in words, for the site."""
|
||||
word = REGION_WORDS.get(game_region, game_region)
|
||||
own, others = result.get("own_boots"), result.get("others_boot")
|
||||
if own is None:
|
||||
return f"The {word} game has no run with its own BIOS yet."
|
||||
first = f"The {word} BIOS {'boots' if own else 'does not boot'} the {word} game"
|
||||
if others is None:
|
||||
return first + ". The other regions' BIOS have no verdict yet."
|
||||
if others:
|
||||
return first + ", and so do the other regions' BIOS."
|
||||
return first + ", the other regions' BIOS do not."
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Runs
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
def load_content(path: Path = CONTENT_FILE) -> dict[str, list[dict]]:
|
||||
data = yaml.safe_load(path.read_text(encoding="utf-8")) or {}
|
||||
out: dict[str, list[dict]] = {}
|
||||
for system, spec in (data.get("systems") or {}).items():
|
||||
for item in spec.get("content") or ():
|
||||
out.setdefault(system, []).append({**item, "romfetch": spec["romfetch"]})
|
||||
return out
|
||||
|
||||
|
||||
def content_file(item: dict, content_dir: Path) -> Path:
|
||||
folder = content_dir / item["romfetch"] / item["name"]
|
||||
if item.get("load") == "cue":
|
||||
cues = sorted(folder.glob("*.cue"))
|
||||
if len(cues) != 1:
|
||||
raise FileNotFoundError(f"{folder}: {len(cues)} .cue files, one expected")
|
||||
return cues[0]
|
||||
if item.get("load"):
|
||||
return folder / item["load"]
|
||||
files = [p for p in sorted(folder.iterdir()) if p.is_file() and p.name != "identity.json"]
|
||||
if len(files) != 1:
|
||||
raise FileNotFoundError(f"{folder}: {len(files)} files, name one with load:")
|
||||
return files[0]
|
||||
|
||||
|
||||
def nightly_core(core: str) -> tuple[Path, str]:
|
||||
"""The buildbot nightly of a core, downloaded once, and its URL."""
|
||||
import zipfile # noqa: PLC0415
|
||||
|
||||
url = NIGHTLY.format(core=core)
|
||||
target = CORES / f"{core}_libretro.so"
|
||||
if not target.is_file():
|
||||
CORES.mkdir(parents=True, exist_ok=True)
|
||||
archive = CORES / f"{core}.zip"
|
||||
with urllib.request.urlopen(url, timeout=300) as response, archive.open("wb") as out:
|
||||
out.write(response.read())
|
||||
with zipfile.ZipFile(archive) as handle:
|
||||
member = f"{core}_libretro.so"
|
||||
if member not in handle.namelist():
|
||||
raise FileNotFoundError(f"{archive.name}: no {member} inside")
|
||||
partial = target.with_suffix(".part")
|
||||
partial.write_bytes(handle.read(member))
|
||||
partial.replace(target)
|
||||
archive.unlink()
|
||||
return target, url
|
||||
|
||||
|
||||
def pack_files(emulator: str, region: str, work: Path) -> dict[str, Path]:
|
||||
"""The files generate_pack puts in the emulator's pack for one region,
|
||||
extracted, by their path in the pack."""
|
||||
from ziptools import safe_extract_zip # noqa: PLC0415
|
||||
|
||||
out_dir = work / "pack"
|
||||
subprocess.run([sys.executable, str(ROOT / "scripts" / "generate_pack.py"), "--emulator", emulator,
|
||||
"--region", PACK_REGION[region], "--output-dir", str(out_dir)],
|
||||
cwd=ROOT, check=True, capture_output=True, text=True)
|
||||
zips = sorted(out_dir.glob("*.zip"))
|
||||
if len(zips) != 1:
|
||||
raise FileNotFoundError(f"{out_dir}: {len(zips)} packs, one expected")
|
||||
tree = work / "pack-tree"
|
||||
safe_extract_zip(str(zips[0]), str(tree))
|
||||
return {p.relative_to(tree).as_posix(): p for p in sorted(tree.rglob("*")) if p.is_file()
|
||||
and not p.name.upper().startswith("README")}
|
||||
|
||||
|
||||
def local_resolver() -> Callable[[dict], Path | None]:
|
||||
from common import load_database, resolve_local_file # noqa: PLC0415
|
||||
|
||||
db = load_database(str(ROOT / "database.json"))
|
||||
|
||||
def local(entry: dict) -> Path | None:
|
||||
hint = entry.get("path") if isinstance(entry.get("path"), str) else ""
|
||||
path, status = resolve_local_file(entry, db, dest_hint=hint or "")
|
||||
if not path or status in ("not_found", "hash_mismatch"):
|
||||
return None
|
||||
found = Path(path) if Path(path).is_absolute() else ROOT / path
|
||||
return found if found.is_file() else None
|
||||
|
||||
return local
|
||||
|
||||
|
||||
BUSY = 3 # core_probe's exit status when it refuses to record on a busy host
|
||||
POLL_S = 15
|
||||
|
||||
|
||||
def probe_when_idle(argv: list[str], max_wait: float,
|
||||
clock: Callable[[], float] = time.monotonic,
|
||||
pause: Callable[[float], None] = time.sleep,
|
||||
runner: Callable[..., subprocess.CompletedProcess] = subprocess.run
|
||||
) -> subprocess.CompletedProcess:
|
||||
"""core_probe, run again while it refuses a busy host, as the campaign
|
||||
does: every POLL_S seconds until max_wait seconds have passed. The load
|
||||
threshold stays core_probe's own."""
|
||||
started = clock()
|
||||
while True:
|
||||
proc = runner(argv, cwd=ROOT, capture_output=True, text=True)
|
||||
if proc.returncode != BUSY or clock() - started >= max_wait:
|
||||
return proc
|
||||
pause(POLL_S)
|
||||
|
||||
|
||||
def run(args: argparse.Namespace) -> int:
|
||||
from common import load_emulator_profiles # noqa: PLC0415
|
||||
|
||||
profile = load_emulator_profiles(str(ROOT / "emulators"))[args.emulator]
|
||||
entries = region_entries(profile, args.system)
|
||||
if not entries:
|
||||
print(f"ERROR: {args.emulator} declares no regional BIOS for {args.system}", file=sys.stderr)
|
||||
return 2
|
||||
games = [g for g in load_content().get(args.system, []) if g.get("region") in PACK_REGION]
|
||||
if not games:
|
||||
print(f"ERROR: content.yml has no regional game for {args.system}", file=sys.stderr)
|
||||
return 2
|
||||
core, url = (Path(args.core), args.core_artifact) if args.core else nightly_core(args.core_name)
|
||||
local = local_resolver()
|
||||
failures = 0
|
||||
for game in games:
|
||||
load = content_file(game, Path(args.content_dir))
|
||||
with tempfile.TemporaryDirectory(dir=ROOT / "tmp") as scratch:
|
||||
variants = plan_variants(entries, game["region"], local)
|
||||
variants["pack"] = pack_files(args.emulator, game["region"], Path(scratch))
|
||||
for label in args.variants or VARIANTS:
|
||||
argv = [sys.executable, str(ROOT / "scripts" / "core_probe.py"), "run",
|
||||
"--core", str(core), "--content", str(load), "--content-label", game["name"],
|
||||
"--frames", str(game.get("frames", 3600)),
|
||||
"--frame-hash-every", str(game.get("frame_hash_every", 10)),
|
||||
"--record", str(ROOT), "--emulator", args.emulator,
|
||||
"--subject", subject(core.name.removesuffix("_libretro.so"), game["name"], label),
|
||||
"--require-sandbox", "--timeout", str(args.timeout)]
|
||||
if url:
|
||||
argv += ["--core-artifact", url]
|
||||
for dest, src in sorted(variants[label].items()):
|
||||
argv += ["--system-file", f"{dest}={src}"]
|
||||
proc = probe_when_idle(argv, args.max_load_wait)
|
||||
status = "recorded" if proc.returncode == 0 else f"exit {proc.returncode}"
|
||||
print(json.dumps({"game": game["name"], "variant": label, "status": status,
|
||||
"error": proc.stderr.strip()[-400:] if proc.returncode else None}),
|
||||
flush=True)
|
||||
failures += proc.returncode != 0
|
||||
return 1 if failures else 0
|
||||
|
||||
|
||||
def collect(root: Path = ROOT, stored_records: list | None = None) -> list[dict]:
|
||||
"""Every region outcome the records under measurements/ hold. A game
|
||||
listed under several systems (sega-megacd and mega-cd) is judged under
|
||||
the one whose profile ran it."""
|
||||
from common import load_emulator_profiles # noqa: PLC0415
|
||||
from measurement_records import live, read_records # noqa: PLC0415
|
||||
|
||||
content: dict[str, list[tuple[str, dict]]] = {}
|
||||
for system, items in load_content(root / "tests" / "campaign" / "content.yml").items():
|
||||
for item in items:
|
||||
content.setdefault(item["name"], []).append((system, item))
|
||||
profiles = load_emulator_profiles(str(root / "emulators"))
|
||||
groups: dict[tuple[str, str, str], dict[str, dict]] = {}
|
||||
for stored in read_records(root) if stored_records is None else stored_records:
|
||||
match = SUBJECT.match(stored.record.get("subject", ""))
|
||||
label = ((stored.record.get("inputs") or {}).get("content") or {}).get("label")
|
||||
if not match or label not in content:
|
||||
continue
|
||||
key = (stored.emulator, match["core"], label)
|
||||
groups.setdefault(key, {})[match["variant"]] = stored.record
|
||||
out = []
|
||||
for (emulator, core, game), records in sorted(groups.items()):
|
||||
records = {k: v for k, v in records.items() if v["id"] in {r["id"] for r in live(records.values())}}
|
||||
profile = profiles.get(emulator, {})
|
||||
system, item = next(((s, i) for s, i in content[game] if s in (profile.get("systems") or ())),
|
||||
content[game][0])
|
||||
entries = region_entries(profile, system)
|
||||
result = outcome(records, entries, item["region"])
|
||||
out.append({"emulator": emulator, "core": core, "system": system, "game": game, **result,
|
||||
"sentence": sentence(item["region"], result)})
|
||||
return out
|
||||
|
||||
|
||||
def main(argv: list[str] | None = None) -> int:
|
||||
parser = argparse.ArgumentParser(allow_abbrev=False, description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
sub = parser.add_subparsers(dest="command", required=True)
|
||||
go = sub.add_parser("run", allow_abbrev=False, help="the four runs of each region game, recorded")
|
||||
go.add_argument("--emulator", required=True, help="the profile, e.g. beetle_psx")
|
||||
go.add_argument("--system", required=True, help="the system, e.g. sony-playstation")
|
||||
go.add_argument("--core-name", help="buildbot core name, e.g. mednafen_psx (downloads the nightly)")
|
||||
go.add_argument("--core", help="a core .so to use instead of the nightly")
|
||||
go.add_argument("--core-artifact", help="where --core was downloaded from")
|
||||
go.add_argument("--content-dir", default=str(ROOT / ".cache" / "test-content"),
|
||||
help="where romfetch keeps the test games (default: .cache/test-content)")
|
||||
go.add_argument("--variants", nargs="*", choices=VARIANTS, help="a subset of the four runs")
|
||||
go.add_argument("--timeout", type=int, default=900, help="seconds per run")
|
||||
go.add_argument("--max-load-wait", type=int, default=1800,
|
||||
help="seconds a run waits for a busy host to settle before it is given up (default 1800)")
|
||||
sub.add_parser("report", allow_abbrev=False, help="the outcomes the records hold, as JSON")
|
||||
args = parser.parse_args(argv)
|
||||
if args.command == "run":
|
||||
if not (args.core or args.core_name):
|
||||
parser.error("run needs --core-name or --core")
|
||||
return run(args)
|
||||
print(json.dumps(collect(), indent=2))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
from common import run_cli
|
||||
|
||||
run_cli(main)
|
||||
+630
-78
@@ -18,17 +18,16 @@ its line at the last commit that touched measurements/.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import html
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import sqlite3
|
||||
import sys
|
||||
from collections.abc import Callable
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
|
||||
import measurement_records as mr
|
||||
import siteentries
|
||||
import sitemarkup as markup
|
||||
from artifacts import json_text, write_if_changed
|
||||
from siterender import _escape_tags
|
||||
@@ -41,7 +40,7 @@ HOSTS_MARKER = "<!-- measurements-hosts -->"
|
||||
INDEX_PATH = Path("data") / "measurements" / "index.json"
|
||||
SQLITE_PATH = Path("downloads") / "measurements.sqlite"
|
||||
PER_EMULATOR_DIR = Path("downloads") / "measurements"
|
||||
SQLITE_SCHEMA_VERSION = "2"
|
||||
SQLITE_SCHEMA_VERSION = "3"
|
||||
# Observables the variants table leaves out: one value per sampled frame.
|
||||
BULKY_OBSERVABLES = ("frame_hashes",)
|
||||
INDEX_SCHEMA_VERSION = 1
|
||||
@@ -76,6 +75,40 @@ def permalink(repo: str, commit: str, path: str, line: int | None = None) -> str
|
||||
return f"{repo}/blob/{commit}/{path}" + (f"#L{line}" if line else "")
|
||||
|
||||
|
||||
def verdicts_of(record: dict) -> list[dict]:
|
||||
"""Each variant's boot verdict, from record version 4 on."""
|
||||
return [{"variant": v["label"], "verdict": v["verdict"],
|
||||
"detail": (v.get("verdict_evidence") or {}).get("detail", "")}
|
||||
for v in record["variants"] if "verdict" in v]
|
||||
|
||||
|
||||
def result_of(record: dict) -> tuple[str, str]:
|
||||
"""The status and statement a page shows for a record.
|
||||
|
||||
A run, or a check compared on the sampled frames, is shown by its boot
|
||||
verdicts: one verdict when every variant has it, else `mixed`, each
|
||||
variant named in the statement. A check on another observable keeps
|
||||
its comparison. A frame comparison recorded before the boot oracle
|
||||
shows `no verdict`: frames that differ prove nothing about a boot.
|
||||
"""
|
||||
check = record.get("check") or {}
|
||||
result = check.get("result") or {}
|
||||
if record["kind"] == "bench":
|
||||
return "measured", bench_statement(record) if record.get("timing") else ""
|
||||
verdicts = verdicts_of(record)
|
||||
by_frames = record["kind"] == "run" or check.get("observable") == "frame_hashes"
|
||||
if verdicts and by_frames:
|
||||
values = {v["verdict"] for v in verdicts}
|
||||
status = values.pop() if len(values) == 1 else "mixed"
|
||||
if record["kind"] == "run":
|
||||
return status, verdicts[0]["detail"]
|
||||
return status, ". ".join(f"{v['variant']}: {v['verdict']}" for v in verdicts)
|
||||
if by_frames:
|
||||
return "no verdict", ("recorded before the boot oracle. Its frames were compared, which "
|
||||
"settles nothing about a boot")
|
||||
return result.get("status") or "ran", result.get("statement") or ""
|
||||
|
||||
|
||||
def index_item(entry: mr.Stored, runs: int, source: dict, profiles: dict,
|
||||
system_names: dict[str, str]) -> dict:
|
||||
record = entry.record
|
||||
@@ -95,9 +128,9 @@ def index_item(entry: mr.Stored, runs: int, source: dict, profiles: dict,
|
||||
"method": check.get("method"),
|
||||
"observable": check.get("observable"),
|
||||
"variable": check.get("variable"),
|
||||
"status": (check.get("result") or {}).get("status") or ("measured" if record["kind"] == "bench" else "ran"),
|
||||
"statement": (check.get("result") or {}).get("statement")
|
||||
or (bench_statement(record) if record.get("timing") else ""),
|
||||
"status": result_of(record)[0],
|
||||
"statement": result_of(record)[1],
|
||||
"verdicts": verdicts_of(record),
|
||||
"content": content.get("label"),
|
||||
"variants": len(record["variants"]),
|
||||
"repetitions": record["inputs"]["repetitions"],
|
||||
@@ -114,9 +147,21 @@ def index_item(entry: mr.Stored, runs: int, source: dict, profiles: dict,
|
||||
"runs": runs,
|
||||
"record_url": permalink(source["repo"], source["commit"], mr.records_path(entry.emulator), entry.line),
|
||||
"sqlite": f"downloads/measurements/{entry.emulator}.sqlite",
|
||||
"host_short": short_host(record["host"]),
|
||||
"setup": setup_of(record),
|
||||
"groups": variant_groups(record),
|
||||
"proves": proves(record["id"], profile),
|
||||
"timing": ({"ms_per_frame": record["timing"]["ms_per_frame"]["median"],
|
||||
"fps": record["timing"]["fps"]["median"],
|
||||
"stdev": record["timing"]["ms_per_frame"]["stdev"]}
|
||||
if record.get("timing") else None),
|
||||
}
|
||||
|
||||
|
||||
def with_title(item: dict) -> dict:
|
||||
return {**item, "title": short_title(item)}
|
||||
|
||||
|
||||
def build_index(stored: list[mr.Stored], source: dict | None, profiles: dict,
|
||||
system_names: dict[str, str] | None = None) -> dict:
|
||||
"""One item per (emulator, subject): its latest record not superseded."""
|
||||
@@ -129,7 +174,8 @@ def build_index(stored: list[mr.Stored], source: dict | None, profiles: dict,
|
||||
for key in sorted(by_subject):
|
||||
entries = by_subject[key]
|
||||
latest = max(entries, key=lambda s: (s.record["recorded_at"], s.line))
|
||||
items.append(index_item(latest, len(entries), source or {}, profiles, system_names or {}))
|
||||
items.append(with_title(index_item(latest, len(entries), source or {}, profiles,
|
||||
system_names or {})))
|
||||
items.sort(key=lambda item: (item["emulator"], item["date"], item["subject"]))
|
||||
return {
|
||||
"schema_version": INDEX_SCHEMA_VERSION,
|
||||
@@ -206,7 +252,8 @@ def campaign_section(summary: dict | None) -> list[str]:
|
||||
lines = [
|
||||
"## Campaign",
|
||||
"",
|
||||
f"Tests run by themselves every night on an idle computer ([how]({METHOD_PAGE})). "
|
||||
f"A maintainer starts a pass, on an idle computer, and nothing runs by itself "
|
||||
f"([how]({METHOD_PAGE})). "
|
||||
f"Last pass: {_plain(last['ended_at'][:10])}, {_plain(last['result'])}"
|
||||
+ (f" ({_plain(last['detail'])})" if last.get("detail") else "") + ". "
|
||||
f"{int(counts['done'])} tests done, {int(counts['failed'])} failed, {int(counts['pending'])} waiting. "
|
||||
@@ -241,6 +288,176 @@ def campaign_section(summary: dict | None) -> list[str]:
|
||||
return lines
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Coverage and region results
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CONTENT_FILE = Path("tests") / "campaign" / "content.yml"
|
||||
|
||||
|
||||
def coverage(root: Path, stored: list[mr.Stored], profiles: dict | None = None) -> dict:
|
||||
"""Per system of the content list: its games, and which emulators ran
|
||||
each one. A record counts for a system only when its emulator's profile
|
||||
names that system: one catalog name can be a PlayStation disc and a
|
||||
Saturn disc. A system no catalog covers comes with the reason and the
|
||||
error romfetch returned."""
|
||||
import yaml # noqa: PLC0415
|
||||
|
||||
path = root / CONTENT_FILE
|
||||
if not path.is_file():
|
||||
return {"systems": [], "uncovered": []}
|
||||
data = yaml.safe_load(path.read_text(encoding="utf-8")) or {}
|
||||
ran: dict[str, set[str]] = {}
|
||||
for entry in stored:
|
||||
label = ((entry.record.get("inputs") or {}).get("content") or {}).get("label")
|
||||
if label:
|
||||
ran.setdefault(label, set()).add(entry.emulator)
|
||||
systems = []
|
||||
for system, spec in (data.get("systems") or {}).items():
|
||||
games = [{"name": item["name"], "region": item.get("region"),
|
||||
"emulators": sorted(e for e in ran.get(item["name"], ())
|
||||
if profiles is None
|
||||
or system in ((profiles.get(e) or {}).get("systems") or ()))}
|
||||
for item in spec.get("content") or ()]
|
||||
listed = {item["name"] for item in spec.get("content") or ()}
|
||||
# Runs of this system's emulators on games the list does not name.
|
||||
other = sorted({e for label, emulators in ran.items() if label not in listed for e in emulators
|
||||
if profiles is not None
|
||||
and system in ((profiles.get(e) or {}).get("systems") or ())})
|
||||
systems.append({"system": system, "games": games, "other_games_by": other,
|
||||
"tested": any(game["emulators"] for game in games)})
|
||||
uncovered = [{"system": system, "want": item.get("want"), "reason": " ".join(str(item["reason"]).split()),
|
||||
"romfetch": item.get("romfetch") or {}}
|
||||
for system, item in (data.get("uncovered") or {}).items()]
|
||||
return {"systems": systems, "uncovered": uncovered}
|
||||
|
||||
|
||||
def coverage_section(cov: dict | None, system_names: dict[str, str] | None = None) -> list[str]:
|
||||
"""The Coverage block of the explorer page: tested or not, and why not."""
|
||||
if not cov or not (cov.get("systems") or cov.get("uncovered")):
|
||||
return []
|
||||
names = system_names or {}
|
||||
tested = [s for s in cov["systems"] if s["tested"]]
|
||||
lines = [
|
||||
"## Coverage",
|
||||
"",
|
||||
f"Test games come from [`{CONTENT_FILE.as_posix()}`]({REPO}/blob/main/{CONTENT_FILE.as_posix()}), "
|
||||
f"one per region where a BIOS depends on it. {len(tested)} of {len(cov['systems'])} listed "
|
||||
f"systems have a recorded run, and {len(cov['uncovered'])} "
|
||||
f"{'system has' if len(cov['uncovered']) == 1 else 'systems have'} no test game.",
|
||||
"",
|
||||
"| System | Games | Tested by |",
|
||||
"|--------|-------|-----------|",
|
||||
]
|
||||
# Two ids of one console (sega-megacd, mega-cd) share their list: one row.
|
||||
rows: dict[tuple[str, str], set[str]] = {}
|
||||
others: dict[tuple[str, str], set[str]] = {}
|
||||
for item in cov["systems"]:
|
||||
row = (_plain(names.get(item["system"], item["system"])),
|
||||
", ".join(_plain(game["name"]) for game in item["games"]))
|
||||
rows.setdefault(row, set()).update(e for game in item["games"] for e in game["emulators"])
|
||||
others.setdefault(row, set()).update(item.get("other_games_by") or ())
|
||||
for (name, games), by in rows.items():
|
||||
if by:
|
||||
status = ", ".join(_plain(e) for e in sorted(by))
|
||||
elif others[(name, games)]:
|
||||
status = ("not yet with these games, other games by "
|
||||
+ ", ".join(_plain(e) for e in sorted(others[(name, games)])))
|
||||
else:
|
||||
status = "not yet: no run recorded"
|
||||
lines.append(f"| {name} | {games} | {status} |")
|
||||
lines.append("")
|
||||
if cov["uncovered"]:
|
||||
lines += ["Systems without a test game:", "",
|
||||
"| System | Wanted | Why not | romfetch |",
|
||||
"|--------|--------|---------|----------|"]
|
||||
for item in cov["uncovered"]:
|
||||
code = item["romfetch"].get("code") or "no source"
|
||||
lines.append(f"| {_plain(names.get(item['system'], item['system']))} | {_plain(item['want'])} | "
|
||||
f"{_plain(item['reason'])} | exit {_plain(item['romfetch'].get('exit'))}, "
|
||||
f"{_code(code)} |")
|
||||
lines.append("")
|
||||
return lines
|
||||
|
||||
|
||||
def region_results(root: Path, stored: list[mr.Stored], source: dict | None) -> list[dict]:
|
||||
"""The region outcomes the records hold (region_check.py), each record
|
||||
linked at the commit the explorer links."""
|
||||
import region_check # noqa: PLC0415
|
||||
|
||||
lines = {s.record["id"]: s for s in stored}
|
||||
results = region_check.collect(root, stored)
|
||||
for result in results:
|
||||
for item in result["variants"].values():
|
||||
found = lines.get(item["record"])
|
||||
item["url"] = (permalink(source["repo"], source["commit"], mr.records_path(found.emulator),
|
||||
found.line)
|
||||
if found and source and source.get("commit") else None)
|
||||
return results
|
||||
|
||||
|
||||
def site_region_results(root: Path = ROOT, repo: str = REPO) -> list[dict]:
|
||||
"""region_results with the records and commit the explorer uses."""
|
||||
stored = mr.read_records(root)
|
||||
source = {"repo": repo, "commit": records_commit(root) if stored else None}
|
||||
return region_results(root, stored, source)
|
||||
|
||||
|
||||
REGION_SUBJECT = re.compile(r"^region-[a-z0-9_]+-[a-z0-9-]+-(full|own|others|pack)$")
|
||||
|
||||
VARIANT_WORDS = {"full": "every regional BIOS", "own": "its own region's BIOS only",
|
||||
"others": "the other regions' BIOS only", "pack": "the region's pack"}
|
||||
|
||||
|
||||
REGION_SHORT = {"japan": "Japanese", "north-america": "US", "europe": "European"}
|
||||
OUTCOME_WORDS = {True: "boots", False: "does not boot", None: "no verdict"}
|
||||
|
||||
|
||||
def core_region_line(results: list[dict]) -> str:
|
||||
"""One core's outcome over its region games, in a sentence: each game
|
||||
on its own BIOS, then on the other regions' BIOS."""
|
||||
own = {r["own_boots"] for r in results}
|
||||
others = {r["others_boot"] for r in results}
|
||||
if own == {True} and others == {True}:
|
||||
return "Each region's game boots on its own BIOS and on the other regions' BIOS."
|
||||
if own == {True} and others == {False}:
|
||||
return "Each region's game boots on its own BIOS only."
|
||||
parts = [f"{REGION_SHORT.get(r['region'], r['region'])} game: {OUTCOME_WORDS[r['own_boots']]} "
|
||||
f"on its BIOS, {OUTCOME_WORDS[r['others_boot']]} on the others" for r in results]
|
||||
return ", ".join(parts) + "."
|
||||
|
||||
|
||||
def region_section(results: list[dict], level: int = 3) -> list[str]:
|
||||
"""What the region runs showed for one system: a line per core, the
|
||||
games and their records in a fold."""
|
||||
if not results:
|
||||
return []
|
||||
lines = ["#" * level + " Region check", "",
|
||||
f"Each game ran with {VARIANT_WORDS['own']}, then with {VARIANT_WORDS['others']} "
|
||||
f"([method](../{METHOD_PAGE})).", ""]
|
||||
by_core: dict[str, list[dict]] = {}
|
||||
for result in results:
|
||||
by_core.setdefault(result["core"], []).append(result)
|
||||
for core, items in by_core.items():
|
||||
lines.append(f"- **{_plain(core)}**: {_plain(core_region_line(items))}")
|
||||
lines.append("")
|
||||
rows = []
|
||||
for result in results:
|
||||
links = ", ".join(_link(item.get("url"), _cell(VARIANT_WORDS[label]))
|
||||
for label, item in result["variants"].items())
|
||||
names = ", ".join(f"<code>{_cell(name)}</code>" for name in result["selected"])
|
||||
read = (f" It reads {names} with every regional BIOS there "
|
||||
f"({_cell(result['claim'])} against the profile)." if result["selected"] else "")
|
||||
basis = ("" if result["judged_by"] == "verdict"
|
||||
else " Judged against the run with every regional BIOS until reference frames are recorded.")
|
||||
rows.append(f"<li><strong>{_cell(result['core'])}</strong>, {_cell(result['game'])}: "
|
||||
f"{_cell(result['sentence'])}{read}{basis} Records: {links}.</li>")
|
||||
# One line: MDX reads an HTML block split over lines as paragraphs.
|
||||
lines += ['<details class="rb-region-runs"><summary>Each game and its records</summary><ul>'
|
||||
+ "".join(rows) + "</ul></details>", ""]
|
||||
return lines
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# SQLite
|
||||
# --------------------------------------------------------------------------
|
||||
@@ -294,7 +511,8 @@ SCHEMA_SQL = """
|
||||
run_id TEXT NOT NULL REFERENCES runs(id), position INTEGER NOT NULL,
|
||||
label TEXT NOT NULL, repetitions INTEGER NOT NULL, loaded INTEGER NOT NULL,
|
||||
flags TEXT NOT NULL, observables TEXT NOT NULL, files_opened TEXT,
|
||||
files_probed_absent TEXT, tracing TEXT, PRIMARY KEY (run_id, position)
|
||||
files_probed_absent TEXT, tracing TEXT, verdict TEXT, verdict_evidence TEXT,
|
||||
PRIMARY KEY (run_id, position)
|
||||
);
|
||||
CREATE TABLE system_files (
|
||||
run_id TEXT NOT NULL REFERENCES runs(id), variant_position INTEGER NOT NULL,
|
||||
@@ -405,11 +623,12 @@ def _insert_run(connection: sqlite3.Connection, entry: mr.Stored, source: dict,
|
||||
# The first repetition stands for the variant, its per-frame hashes left out.
|
||||
observables = {key: value for key, value in (first.get("observables") or {}).items()
|
||||
if key not in BULKY_OBSERVABLES}
|
||||
connection.execute("INSERT INTO variants VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", (
|
||||
connection.execute("INSERT INTO variants VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", (
|
||||
rid, position, variant["label"], len(reps), int(all(rep.get("loaded") for rep in reps)),
|
||||
json_text(variant["flags"]), json_text(observables),
|
||||
json_text(first.get("files_opened")), json_text(first.get("files_probed_absent")),
|
||||
json_text(first.get("tracing"))))
|
||||
json_text(first.get("tracing")), variant.get("verdict"),
|
||||
json_text(variant.get("verdict_evidence")) if "verdict_evidence" in variant else None))
|
||||
connection.executemany("INSERT INTO system_files VALUES (?, ?, ?, ?)", [
|
||||
(rid, position, dest, sha1) for dest, sha1 in sorted(variant["system_files"].items())])
|
||||
for metric, stats in sorted((r.get("timing") or {}).items()):
|
||||
@@ -462,6 +681,7 @@ def build(public: Path, root: Path = ROOT, emulators_dir: Path = ROOT / "emulato
|
||||
profiles = load_profiles(emulators_dir)
|
||||
index = build_index(stored, source, profiles, system_names)
|
||||
index["campaign"] = campaign_summary(root, stored, source)
|
||||
index["coverage"] = coverage(root, stored, profiles)
|
||||
paths = [public / INDEX_PATH]
|
||||
(public / INDEX_PATH).parent.mkdir(parents=True, exist_ok=True)
|
||||
write_if_changed(str(public / INDEX_PATH),
|
||||
@@ -480,9 +700,14 @@ def build(public: Path, root: Path = ROOT, emulators_dir: Path = ROOT / "emulato
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
def by_emulator(index: dict) -> dict[str, list[dict]]:
|
||||
"""Each emulator's items, with the count of its findings still open."""
|
||||
opened: dict[str, int] = {}
|
||||
for line in (index.get("campaign") or {}).get("open") or ():
|
||||
opened[line["emulator"]] = opened.get(line["emulator"], 0) + 1
|
||||
out: dict[str, list[dict]] = {}
|
||||
for item in index.get("items", []):
|
||||
out.setdefault(item["emulator"], []).append(item)
|
||||
out.setdefault(item["emulator"], []).append(
|
||||
{**item, "open_findings": opened.get(item["emulator"], 0)})
|
||||
return out
|
||||
|
||||
|
||||
@@ -498,92 +723,418 @@ def _short(commit: str | None) -> str:
|
||||
return f"`{commit[:12]}`" if commit else "unknown"
|
||||
|
||||
|
||||
# A result the probe could not settle is the one a reader should not take
|
||||
# at its word. The others describe what was seen, none of them is a fault.
|
||||
_STATUS_BADGE = {"inconclusive": "warning"}
|
||||
# A verdict or a comparison, as the block says it: words and a chip kind.
|
||||
RESULT_WORDS = {
|
||||
"boots": ("works", "success"),
|
||||
"bios_error": ("BIOS error", "danger"),
|
||||
"crash": ("crash", "danger"),
|
||||
"hang": ("hang", "warning"),
|
||||
"unknown": ("unknown", "muted"),
|
||||
"mixed": ("depends on the file", "info"),
|
||||
"same": ("same with every file", "muted"),
|
||||
"differs": ("depends on the file", "info"),
|
||||
"inconclusive": ("inconclusive", "warning"),
|
||||
"no verdict": ("no verdict", "muted"),
|
||||
"ran": ("ran", "muted"),
|
||||
}
|
||||
# Words a subject slug spells that read as one term.
|
||||
TERMS = {"bios": "BIOS", "vcd": "Video CD", "cd": "CD", "jp": "JP", "us": "US", "eu": "EU",
|
||||
"cr2": "CR2", "mpeg": "MPEG", "psx": "PSX", "hle": "HLE", "usa": "USA"}
|
||||
# The campaign's own check names, as the block says them.
|
||||
CHECK_NAMES = {"files": "full set", "none": "no BIOS", "negative": "wrong files",
|
||||
"references": "reference run", "variants": "copies", "alias": "other name",
|
||||
"path": "other path", "bench": "benchmark", "boot": "boot test", "alone": "file alone"}
|
||||
|
||||
|
||||
def _computer(host: str) -> str:
|
||||
"""The computer a host line names. The load average differs per run."""
|
||||
return host.split(", load ")[0]
|
||||
def _words(text: str) -> list[str]:
|
||||
return re.findall(r"[a-z0-9]+", str(text or "").lower())
|
||||
|
||||
|
||||
def _build(core: dict) -> str:
|
||||
return f"{_text(core['library'])} at {_short(core['commit'])}" if core.get("commit") \
|
||||
else _text(core["library"])
|
||||
def short_content(label: str | None) -> str:
|
||||
"""A content label cut to the game's name: no source prefix, no
|
||||
edition, region or identity detail."""
|
||||
text = str(label or "").strip()
|
||||
if ":" in text.split("(")[0]:
|
||||
text = text.split(":", 1)[1].strip()
|
||||
for cut in (" - ", " (", ", "):
|
||||
text = text.split(cut, 1)[0]
|
||||
return text.strip()
|
||||
|
||||
|
||||
def _shared(items: list[dict], value: Callable[[dict], str]) -> str | None:
|
||||
"""The value every item gives, None when they differ."""
|
||||
values = {value(item) for item in items}
|
||||
return values.pop() if len(values) == 1 else None
|
||||
def short_title(item: dict) -> str:
|
||||
"""A test's name in a few words: the file it varies, the game, and what
|
||||
the subject adds to them (a build, a region, a check of the campaign)."""
|
||||
thing = Path(str(item.get("variable") or "")).name
|
||||
game = short_content(item.get("content"))
|
||||
known = set(_words(thing)) | set(_words(item.get("content"))) | set(_words(game))
|
||||
known |= set(_words(Path(str((item.get("core") or {}).get("file") or "")).name.split("_libretro")[0]))
|
||||
axis = []
|
||||
for word in _words(item.get("subject")):
|
||||
if word in known or re.fullmatch(r"[0-9a-f]{8}", word):
|
||||
continue
|
||||
issue = re.fullmatch(r"issue(\d+)", word)
|
||||
word = f"issue {issue[1]}" if issue else CHECK_NAMES.get(word, TERMS.get(word, word))
|
||||
if word not in axis:
|
||||
axis.append(word)
|
||||
head = ", ".join(part for part in (thing, game) if part)
|
||||
title = f"{head} ({' '.join(axis)})" if axis and head else head or " ".join(axis)
|
||||
return title or str(item.get("subject") or "")
|
||||
|
||||
|
||||
def _plural(count: int, noun: str) -> str:
|
||||
return f"{count} {noun}{'s' if count != 1 else ''}"
|
||||
OBSERVABLE_WORDS = {"video_sha1": "video", "frame_hashes": "screens", "audio_sha1": "audio",
|
||||
"state_sha1": "save state", "frame_sha1": "last frame"}
|
||||
|
||||
|
||||
def tested_row(item: dict, shared_build: bool) -> siteentries.Row:
|
||||
"""One test: its claim as the row, the result beside it, the method,
|
||||
the load and the record when the row opens."""
|
||||
title = item["claim"] or f"Benchmark of {item['content'] or 'the core alone'}"
|
||||
runs = "1 run" if item["runs"] == 1 else f"{item['runs']} runs, the latest shown"
|
||||
body = []
|
||||
if item["statement"]:
|
||||
body += [f"{_text(item['statement'])}.", ""]
|
||||
if item.get("method"):
|
||||
body += [f"**Method:** {_text(item['method'])}", ""]
|
||||
load = item["host"].partition(", load ")[2]
|
||||
counts = (f"{_plural(item['variants'], 'variant')}, "
|
||||
f"{_plural(item['repetitions'], 'repetition')} each"
|
||||
+ (f", {_plural(item['flags'], 'flag')} raised" if item["flags"] else "") + ".")
|
||||
body += [f"**Ran:** {counts}" + (f" Load {_text(load)}." if load else "")
|
||||
+ ("" if shared_build else f" Core build: {_build(item['core'])}."), ""]
|
||||
body += [f"[Full record]({item['record_url']}), {runs}."]
|
||||
tone = _STATUS_BADGE.get(item["status"], "muted")
|
||||
result = f'<span class="rb-badge rb-badge-{tone}">{_text(item["status"])}</span>'
|
||||
return siteentries.Row(_text(title), body, [_text(item["content"]), result])
|
||||
def setup_of(record: dict) -> dict:
|
||||
"""What told two runs of one test apart, each as the words a title
|
||||
would use: the campaign check, the core build, the core options, the
|
||||
clock, the number of files tried and what was compared."""
|
||||
build = str(record["core"].get("build_command") or "")
|
||||
patched = re.search(r"\b(patch|edit(?:ed|ing)?)\b", build, re.IGNORECASE)
|
||||
named = re.search(r"\b([A-Z]+[0-9]+)\b", build) if patched else None
|
||||
check = record.get("check") or {}
|
||||
first = (_words(record["subject"]) or [""])[0]
|
||||
options = {}
|
||||
for key, value in sorted(record["inputs"].get("options", {}).items()):
|
||||
options[key] = f"{value} region" if key.endswith("_region") else f"{key.rsplit('_', 1)[-1]} {value}"
|
||||
observable = str(check.get("observable") or "")
|
||||
return {
|
||||
"check": CHECK_NAMES.get(first, ""),
|
||||
"build": (f"{named[1]} patch" if named else "patched build") if patched else "published build",
|
||||
"options": options,
|
||||
"clock": "fixed clock" if "FAKETIME" in record["inputs"].get("env", {}) else "running clock",
|
||||
"files": (f"{len(record['variants'])} file{'s' if len(record['variants']) != 1 else ''}"
|
||||
if record["kind"] == "check" else ""),
|
||||
"observable": (observable.split(":", 1)[1] if observable.startswith("state:")
|
||||
else OBSERVABLE_WORDS.get(observable, observable)),
|
||||
}
|
||||
|
||||
|
||||
def _features(item: dict) -> dict[str, str]:
|
||||
"""A test's setup as named features, the options one by one."""
|
||||
setup = item.get("setup") or {}
|
||||
out = {name: str(setup.get(name) or "") for name in ("build", "clock", "files", "observable")}
|
||||
for key, value in (setup.get("options") or {}).items():
|
||||
out[f"option:{key}"] = value
|
||||
return out
|
||||
|
||||
|
||||
def distinct_titles(items: list[dict]) -> dict[str, str]:
|
||||
"""A title per item: its game and campaign check, then what sets it
|
||||
apart from the other tests of the same file, game and core.
|
||||
|
||||
A test whose setup is the common one of its group is named by its game.
|
||||
Another adds the features where it leaves the common setup (a patched
|
||||
build, a running clock, another region). Two titles still alike take
|
||||
every feature that varies in the group, then the subject's own words.
|
||||
Nothing is cut.
|
||||
"""
|
||||
out: dict[str, str] = {}
|
||||
peers: dict[tuple, list[dict]] = {}
|
||||
for item in items:
|
||||
game = short_content(item.get("content")) or short_title(item)
|
||||
peers.setdefault((item.get("variable") or "", game, item["core"].get("file")), []).append(item)
|
||||
for (_, game, _), group in peers.items():
|
||||
features = [_features(item) for item in group]
|
||||
names = sorted({name for f in features for name in f},
|
||||
key=lambda n: (n.startswith("option:"), ["build", "clock", "files", "observable"].index(n)
|
||||
if not n.startswith("option:") else 0, n))
|
||||
common = {}
|
||||
for name in names:
|
||||
values = [f.get(name, "") for f in features]
|
||||
ranked = sorted(set(values), key=lambda v: -values.count(v))
|
||||
# A tie has no common value: every test names its own.
|
||||
tied = len(ranked) > 1 and values.count(ranked[0]) == values.count(ranked[1])
|
||||
common[name] = None if tied else ranked[0]
|
||||
varying = [n for n in names if len({f.get(n, "") for f in features}) > 1]
|
||||
|
||||
def title(item: dict, own: dict[str, str], every: bool, varying: list[str] = varying,
|
||||
common: dict[str, str] = common, game: str = game) -> str:
|
||||
words = [(item.get("setup") or {}).get("check", "")]
|
||||
for name in varying:
|
||||
value = own.get(name, "")
|
||||
if every or value != common[name]:
|
||||
words.append(value or f"no {name.rsplit('_', 1)[-1]}")
|
||||
return ", ".join([game, *[w for w in words if w]])
|
||||
|
||||
for item, own in zip(group, features):
|
||||
out[item["id"]] = title(item, own, every=False)
|
||||
for every in (True, None):
|
||||
seen: dict[str, int] = {}
|
||||
for item in group:
|
||||
seen[out[item["id"]]] = seen.get(out[item["id"]], 0) + 1
|
||||
for item, own in zip(group, features):
|
||||
if seen[out[item["id"]]] > 1:
|
||||
if every:
|
||||
out[item["id"]] = title(item, own, every=True)
|
||||
else:
|
||||
axis = short_title({**item, "variable": None, "content": None})
|
||||
out[item["id"]] = f"{out[item['id']]}, {axis}"
|
||||
return out
|
||||
|
||||
|
||||
def short_host(host: dict) -> str:
|
||||
"""The computer as a reader names it: the CPU model and the OS."""
|
||||
cpu = str(host.get("cpu_model") or "unknown CPU")
|
||||
cpu = re.sub(r"\(R\)|\(TM\)|\bCPU\b|@.*$|^\d+(?:st|nd|rd|th) Gen ", "", cpu)
|
||||
cpu = " ".join(cpu.split())
|
||||
system = str(host.get("os") or "")
|
||||
name = "Linux" if "Linux" in system else system.split("-")[0] or "unknown OS"
|
||||
if "microsoft" in system.lower():
|
||||
name += " (WSL2)"
|
||||
return f"{cpu}, {name}"
|
||||
|
||||
|
||||
def variant_groups(record: dict) -> list[dict]:
|
||||
"""One entry per variant: the result group it falls in, and whether it
|
||||
staged no file. A run that carries verdicts is grouped by verdict, a
|
||||
comparison by the value its observable took."""
|
||||
check = record.get("check") or {}
|
||||
position: dict[str, int] = {}
|
||||
result: dict[str, str] = {}
|
||||
if all("verdict" in v for v in record["variants"]) and (
|
||||
record["kind"] == "run" or check.get("observable") == "frame_hashes"):
|
||||
for variant in record["variants"]:
|
||||
position.setdefault(variant["verdict"], len(position))
|
||||
result[variant["label"]] = RESULT_WORDS[variant["verdict"]][0]
|
||||
groups = {v["label"]: position[v["verdict"]] for v in record["variants"]}
|
||||
else:
|
||||
groups = {}
|
||||
for number, group in enumerate((check.get("result") or {}).get("groups") or ()):
|
||||
for label in group["variants"]:
|
||||
groups[label] = number
|
||||
result[label] = f"result {chr(ord('A') + number % 26)}"
|
||||
varied = check.get("variable")
|
||||
return [{"variant": v["label"], "group": groups.get(v["label"], 0),
|
||||
"result": result.get(v["label"], ""),
|
||||
"absent": bool(varied) and varied in v["system_files"] and v["system_files"][varied] is None}
|
||||
for v in record["variants"]]
|
||||
|
||||
|
||||
def proves(record_id: str, profile: dict) -> list[str]:
|
||||
"""The profile fields this record is evidence for, as `field of file`."""
|
||||
out = []
|
||||
for entry in profile.get("files") or ():
|
||||
for name, ids in sorted((entry.get("evidence") or {}).items()):
|
||||
if record_id in ids:
|
||||
out.append(f"{name} of {entry.get('name')}")
|
||||
return out
|
||||
|
||||
|
||||
# An MDX page reads a brace as the start of an expression, in text and in
|
||||
# an attribute alike.
|
||||
_BRACES = str.maketrans({"{": "{", "}": "}"})
|
||||
|
||||
|
||||
def _attr(value: object) -> str:
|
||||
return html.escape(" ".join(str(value or "").split()), quote=True).translate(_BRACES)
|
||||
|
||||
|
||||
def _cell(value: object) -> str:
|
||||
"""Record text placed in raw HTML: escaped as text, never read as
|
||||
Markdown (a run's output is no markup), braces made inert for MDX. A
|
||||
semicolon joining two clauses ends a sentence, as on the rest of the
|
||||
site."""
|
||||
text = " ".join(str(value or "").split())
|
||||
text = re.sub(r";\s+(\w)", lambda m: ". " + m[1].upper(), text)
|
||||
return html.escape(text, quote=True).translate(_BRACES)
|
||||
|
||||
|
||||
_SAFE_HREF = re.compile(r"^(?:https?://[^\s\"'<>]+|/[^\s\"'<>]*|\.{0,2}/?[\w.~-][^\s\"'<>:]*)$")
|
||||
|
||||
|
||||
def _href(url: object) -> str | None:
|
||||
"""A link target from a record: http(s) or relative only, else none."""
|
||||
text = str(url or "")
|
||||
return _attr(text) if text and _SAFE_HREF.match(text) and not text.lower().startswith(
|
||||
("javascript:", "data:", "vbscript:")) else None
|
||||
|
||||
|
||||
def _link(url: object, text: str) -> str:
|
||||
target = _href(url)
|
||||
return f'<a href="{target}">{text}</a>' if target else text
|
||||
|
||||
|
||||
def _dots(item: dict) -> str:
|
||||
groups = item.get("groups") or []
|
||||
names = ". ".join(f"{g['variant']}: {g['result']}" for g in groups)
|
||||
dots = "".join(
|
||||
f'<span class="rb-dot rb-dot-{g["group"] % 5}{" rb-dot-empty" if g["absent"] else ""}" '
|
||||
f'title="{_attr(g["variant"] + ": " + g["result"])}"></span>' for g in groups)
|
||||
return (f'<span class="rb-dots" role="img" aria-label="{_attr(f"{len(groups)} variants. {names}")}">'
|
||||
f"{dots}</span>")
|
||||
|
||||
|
||||
def _chip(item: dict) -> str:
|
||||
words, kind = RESULT_WORDS.get(item["status"], (item["status"], "muted"))
|
||||
return f'<span class="rb-badge rb-badge-{kind}">{_cell(words)}</span>'
|
||||
|
||||
|
||||
def _sentence_html(label: str, value: object, markup_ready: bool = False) -> str:
|
||||
"""One line of the details, or nothing: an empty value is never printed."""
|
||||
text = (str(value or "") if markup_ready else _cell(value)).strip().rstrip(".")
|
||||
return f"<p><strong>{label}:</strong> {text}.</p>" if text else ""
|
||||
|
||||
|
||||
def _details(item: dict) -> list[str]:
|
||||
core = item["core"]
|
||||
build = _cell(core["library"]) + (f" at <code>{_cell(core['commit'][:12])}</code>"
|
||||
if core.get("commit") else "")
|
||||
reps = f"{item['variants']} variant{'s' if item['variants'] != 1 else ''}, " \
|
||||
f"{item['repetitions']} repetition{'s' if item['repetitions'] != 1 else ''} each"
|
||||
if item["flags"]:
|
||||
reps += f", {item['flags']} flag{'s' if item['flags'] != 1 else ''} raised"
|
||||
runs = "" if item["runs"] == 1 else f", {item['runs']} runs, the latest shown"
|
||||
lines = [
|
||||
_sentence_html("Claim", item.get("claim")),
|
||||
_sentence_html("Result", item.get("statement")),
|
||||
_sentence_html("Method", item.get("method")),
|
||||
_sentence_html("Proves", ", ".join(item.get("proves") or [])),
|
||||
_sentence_html("Ran on", item.get("host_short") or item["host"]),
|
||||
_sentence_html("Core build", build and f"{build}. {reps}", markup_ready=True),
|
||||
f'<p>{_link(item["record_url"], "Full record")}{runs}.</p>',
|
||||
]
|
||||
return [line for line in lines if line]
|
||||
|
||||
|
||||
def tested_counts(items: list[dict]) -> dict:
|
||||
tests = [i for i in items if i["kind"] != "bench"]
|
||||
return {"tests": len(items), "confirmed": sum(1 for i in items if i.get("proves")),
|
||||
"open": max((i.get("open_findings", 0) for i in items), default=0),
|
||||
"benchmarks": len(items) - len(tests),
|
||||
"last": max((i["date"][:10] for i in items), default="")}
|
||||
|
||||
|
||||
def core_label(item: dict) -> str:
|
||||
return Path(str(item["core"].get("file") or "")).name.split("_libretro")[0]
|
||||
|
||||
|
||||
def _row(item: dict, title: str, page_host: str, main_core: str) -> list[str]:
|
||||
elsewhere = (item.get("host_short") or item["host"]) != page_host
|
||||
title = _cell(title)
|
||||
if core_label(item) != main_core:
|
||||
title += f' <small>{_cell(core_label(item))}</small>'
|
||||
return [
|
||||
'<details class="rb-tested-row">',
|
||||
("<summary>"
|
||||
f'<span class="rb-tested-test">{title}</span>'
|
||||
f'<span class="rb-tested-result">{_chip(item)}</span>'
|
||||
f'<span class="rb-tested-variants">{_dots(item)}</span>'
|
||||
f'<span class="rb-tested-date">{item["date"][:10]}'
|
||||
+ (f' <small>{_attr(item.get("host_short"))}</small>' if elsewhere else "")
|
||||
+ "</span></summary>"),
|
||||
'<div class="rb-tested-more">',
|
||||
*_details(item),
|
||||
"</div>",
|
||||
"</details>",
|
||||
]
|
||||
|
||||
|
||||
def by_file(items: list[dict]) -> list[tuple[str, list[dict]]]:
|
||||
"""The items under the file each varies, in order of first appearance;
|
||||
the runs that vary none last."""
|
||||
groups: dict[str, list[dict]] = {}
|
||||
for item in items:
|
||||
groups.setdefault(Path(str(item.get("variable") or "")).name, []).append(item)
|
||||
return sorted(groups.items(), key=lambda kv: kv[0] == "")
|
||||
|
||||
|
||||
def folded(item: dict) -> bool:
|
||||
"""A row the block folds away: a test from before the boot oracle, or a
|
||||
run that recorded reference frames for the oracle, which a reviewer
|
||||
reads and a visitor does not."""
|
||||
return item["status"] == "no verdict" or str(item.get("subject") or "").startswith("references-")
|
||||
|
||||
|
||||
def summary_line(items: list[dict], page_host: str) -> str:
|
||||
"""N tests, the confirmed and open counts when there are any, the last
|
||||
run and its computer."""
|
||||
counts = tested_counts(items)
|
||||
parts = [f"{counts['tests']} test{'s' if counts['tests'] != 1 else ''}"]
|
||||
parts += [f"{counts[key]} {key}" for key in ("confirmed", "open") if counts[key]]
|
||||
parts.append(f"last run {counts['last']} on {page_host}")
|
||||
return " · ".join(parts) + "."
|
||||
|
||||
|
||||
def tested_section(name: str, items: list[dict]) -> list[str]:
|
||||
"""The Tested block of an emulator page, empty when nothing was recorded.
|
||||
What every test shares is said once above the table."""
|
||||
|
||||
The answer first: one summary line, then the tests under the file each
|
||||
one varies, a row per test with its result chip, a dot per variant and
|
||||
its date. What proves it (method, claim, computer, core build, record)
|
||||
waits in each row's details. Tests recorded before the boot oracle fold
|
||||
under one line, and benchmarks get their own table at the end.
|
||||
"""
|
||||
if not items:
|
||||
return []
|
||||
computer = _shared(items, lambda i: _computer(i["host"]))
|
||||
build = _shared(items, lambda i: _build(i["core"]))
|
||||
content = _shared(items, lambda i: i["content"] or "")
|
||||
day = _shared(items, lambda i: i["date"][:10])
|
||||
context = []
|
||||
if content:
|
||||
context.append(f"Played: {_text(content)}.")
|
||||
if build:
|
||||
context.append(f"Core build: {build}.")
|
||||
if computer:
|
||||
context.append(f"Ran on {_text(computer)}" + (f", {day}." if day else "."))
|
||||
elif day:
|
||||
context.append(f"Ran on {day}.")
|
||||
rows = [tested_row(item, build is not None)
|
||||
for item in sorted(items, key=lambda i: (i["date"], i["subject"]), reverse=True)]
|
||||
if content:
|
||||
rows = [siteentries.Row(r.title, r.body, ["", r.cells[1]]) for r in rows]
|
||||
return [
|
||||
"## Tested",
|
||||
"",
|
||||
f"This emulator was run in real conditions by the [core probe](../{METHOD_PAGE}). "
|
||||
f"Each test below is the latest of its kind. "
|
||||
f"[All measurements](../{EXPLORER_PAGE}), "
|
||||
f"[these records as SQLite](../downloads/measurements/{name}.sqlite).",
|
||||
"",
|
||||
*([" ".join(context), ""] if context else []),
|
||||
*siteentries.entry_table(rows, ["Test", "Game", "Result"], f"rb-tested-{name}", "tests"),
|
||||
]
|
||||
hosts = [i.get("host_short") or i["host"] for i in items]
|
||||
page_host = max(sorted(set(hosts)), key=hosts.count)
|
||||
cores = [core_label(i) for i in items]
|
||||
main_core = max(sorted(set(cores)), key=cores.count)
|
||||
titles = distinct_titles(items)
|
||||
links = (f'<a href="{markup.site_href(METHOD_PAGE.removesuffix(".md") + "/")}">How</a> · '
|
||||
f'<a href="{markup.site_href(EXPLORER_PAGE.removesuffix(".md") + "/")}">All tests</a> · '
|
||||
f'<a href="{markup.site_href(f"downloads/measurements/{name}.sqlite")}">SQLite</a>')
|
||||
ordered = sorted(items, key=lambda i: (i["date"], i["subject"], core_label(i)), reverse=True)
|
||||
benches = [i for i in ordered if i["kind"] == "bench"]
|
||||
# The region runs (region_check.py) read as one outcome per game, on the
|
||||
# system page: listed here they would be a row per run.
|
||||
regional = [i for i in ordered if i["kind"] != "bench" and REGION_SUBJECT.match(i["subject"])]
|
||||
ordered = [i for i in ordered if i not in regional]
|
||||
earlier = [i for i in ordered if i["kind"] != "bench" and folded(i)]
|
||||
current = [i for i in ordered if i["kind"] != "bench" and not folded(i)]
|
||||
lines = ["## Tested", "", '<div class="rb-tested">',
|
||||
f'<p class="rb-tested-summary">{_cell(summary_line(items, page_host))} {links}</p>']
|
||||
if current or earlier:
|
||||
lines.append('<div class="rb-tested-head" aria-hidden="true"><span>Test</span>'
|
||||
"<span>Result</span><span>Variants</span><span>Date</span></div>")
|
||||
for file, group in by_file(current):
|
||||
label = f"<code>{_cell(file)}</code>" if file else "No file varied"
|
||||
lines.append(f'<p class="rb-tested-file">{label}</p>')
|
||||
for item in group:
|
||||
lines += _row(item, titles[item["id"]], page_host, main_core)
|
||||
if current:
|
||||
lines.append('<p class="rb-tested-legend"><span class="rb-dot rb-dot-0"></span> A dot per file tried, '
|
||||
'the same colour for the same result. <span class="rb-dot rb-dot-0 rb-dot-empty">'
|
||||
"</span> No file staged.</p>")
|
||||
if earlier:
|
||||
old = sum(1 for i in earlier if i["status"] == "no verdict")
|
||||
parts = [f"{old} test{'s' if old != 1 else ''} from before the boot oracle" if old else "",
|
||||
(f"{len(earlier) - old} reference run{'s' if len(earlier) - old != 1 else ''}"
|
||||
if len(earlier) - old else "")]
|
||||
lines += ['<details class="rb-tested-earlier">',
|
||||
f"<summary>{_cell(' and '.join(p for p in parts if p))}</summary>"]
|
||||
for item in earlier:
|
||||
file = Path(str(item.get("variable") or "")).name
|
||||
title = f"{file}, {titles[item['id']]}" if file else titles[item["id"]]
|
||||
lines += _row(item, title, page_host, main_core)
|
||||
lines.append("</details>")
|
||||
if regional:
|
||||
games = len({i["content"] for i in regional})
|
||||
lines.append(f'<p class="rb-tested-file">Region check: {len(regional)} runs of '
|
||||
f"{games} game{'s' if games != 1 else ''}, read on the system page.</p>")
|
||||
if benches:
|
||||
# One line: MDX reads a table split over lines as paragraphs.
|
||||
table = ['<table class="rb-tested-bench"><thead><tr><th>Benchmark</th><th>ms per frame</th>'
|
||||
"<th>fps</th><th>stdev</th><th>runs</th></tr></thead><tbody>"]
|
||||
for item in benches:
|
||||
timing = item.get("timing") or {}
|
||||
title = _cell(titles[item["id"]])
|
||||
if core_label(item) != main_core:
|
||||
title += f' <small>{_cell(core_label(item))}</small>'
|
||||
table.append(
|
||||
f'<tr><td>{_link(item["record_url"], title)}</td>'
|
||||
f'<td>{timing.get("ms_per_frame", 0):.3f}</td><td>{timing.get("fps", 0):.1f}</td>'
|
||||
f'<td>{timing.get("stdev", 0):.3f}</td><td>{item["repetitions"]}</td></tr>')
|
||||
lines.append("".join([*table, "</tbody></table>"]))
|
||||
return [*lines, "</div>", ""]
|
||||
|
||||
|
||||
def hosts_table(index: dict) -> list[str]:
|
||||
hosts: dict[str, int] = {}
|
||||
for item in index.get("items", []):
|
||||
computer = _computer(item["host"])
|
||||
# The load average differs per run: the computer is what comes before it.
|
||||
computer = item["host"].split(", load ")[0]
|
||||
hosts[computer] = hosts.get(computer, 0) + 1
|
||||
if not hosts:
|
||||
return ["No result is recorded yet.", ""]
|
||||
@@ -600,7 +1151,7 @@ def with_hosts(page: str, index: dict) -> str:
|
||||
return page.replace(HOSTS_MARKER, "\n".join(hosts_table(index)).rstrip("\n"))
|
||||
|
||||
|
||||
def generate_explorer_page(index: dict) -> str:
|
||||
def generate_explorer_page(index: dict, system_names: dict[str, str] | None = None) -> str:
|
||||
commit = index.get("commit")
|
||||
repo = index.get("repo") or ""
|
||||
source = (f"[`measurements/`]({repo}/tree/{commit}/{mr.RECORDS_DIR}) at {_short(commit)}"
|
||||
@@ -623,6 +1174,7 @@ def generate_explorer_page(index: dict) -> str:
|
||||
"<MeasurementsExplorer />",
|
||||
"",
|
||||
*campaign_section(index.get("campaign")),
|
||||
*coverage_section(index.get("coverage"), system_names),
|
||||
])
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,714 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Run a platform's standalone emulator on a game and record what it did.
|
||||
|
||||
The libretro counterpart is core_probe.py: this script records the same way,
|
||||
in the same measurements/<emulator>.jsonl, for the release binaries the
|
||||
platforms install beside RetroArch.
|
||||
|
||||
resolve the release asset a platform's installer picks, by its own rule
|
||||
fetch download it into .cache/standalone/, by sha256
|
||||
run one execution, printed as JSON
|
||||
check the same execution under several variants of one BIOS file
|
||||
|
||||
The binary is the asset the platform downloads, unpacked from its AppImage
|
||||
without running it. Each repetition starts a private Xvfb, runs the emulator
|
||||
in core_probe's allowlist sandbox under strace, and samples the screen at a
|
||||
fixed interval from the X server's framebuffer file. The BIOS files are
|
||||
staged in a directory the emulator's settings name as its BIOS folder, the
|
||||
way the platform configures it, and the files it opened there come from
|
||||
strace.
|
||||
|
||||
The verdict of a repetition is one of boots, bios_error, crash, hang or
|
||||
unknown, by the oracle's rules: a reference screen reached, an error string
|
||||
of the emulator in its log, the process dying, a uniform screen to the end.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import contextlib
|
||||
import datetime as dt
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import signal
|
||||
import struct
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import threading
|
||||
import time
|
||||
import urllib.request
|
||||
from collections.abc import Sequence
|
||||
from dataclasses import dataclass, field
|
||||
from pathlib import Path
|
||||
from typing import IO
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
||||
|
||||
import core_probe as cp
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
CACHE = ROOT / ".cache" / "standalone"
|
||||
DEFAULT_WORK_DIR = ROOT / "tmp" / "standalone_probe"
|
||||
RECORD_VERSION = 4
|
||||
SCREEN = (1280, 720)
|
||||
OBSERVABLES = ("verdict", "screens", "frame_hashes", "uniform_frames")
|
||||
SCRIPT = "scripts/standalone_probe.py"
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# What each emulator is, how the platform installs it, how it is driven
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Emulator:
|
||||
"""A standalone emulator as one platform installs it.
|
||||
|
||||
`asset_*` reproduce the installer's choice: EmuDeck's getReleaseURLGH
|
||||
takes the first asset, over GitHub's release list in its own order
|
||||
(pre-releases included), whose name contains `asset_contains` and ends
|
||||
with `asset_endswith`.
|
||||
"""
|
||||
|
||||
name: str
|
||||
platform: str
|
||||
installer_ref: str
|
||||
repo: str
|
||||
asset_endswith: str
|
||||
asset_contains: str
|
||||
binary: str
|
||||
settings_file: str
|
||||
error_patterns: tuple[str, ...]
|
||||
settings: dict[str, dict[str, str]] = field(default_factory=dict)
|
||||
bios_setting: tuple[str, str] = ("", "")
|
||||
args: tuple[str, ...] = ()
|
||||
|
||||
|
||||
EMULATORS: dict[str, Emulator] = {
|
||||
"duckstation": Emulator(
|
||||
name="duckstation",
|
||||
platform="emudeck",
|
||||
installer_ref="dragoonDorise/EmuDeck functions/EmuScripts/emuDeckDuckStation.sh "
|
||||
"(getReleaseURLGH \"stenzek/duckstation\" \"AppImage\" \"x64.\")",
|
||||
repo="stenzek/duckstation",
|
||||
asset_endswith="AppImage",
|
||||
asset_contains="x64.",
|
||||
binary="usr/bin/duckstation-qt",
|
||||
# Core::SetDataRoot (src/core/core.cpp): $XDG_CONFIG_HOME/duckstation on Linux.
|
||||
settings_file="data/duckstation/settings.ini",
|
||||
bios_setting=("BIOS", "SearchDirectory"),
|
||||
settings={
|
||||
"Main": {"SetupWizardIncomplete": "false", "ConfirmPowerOff": "false",
|
||||
"StartFullscreen": "true"},
|
||||
"AutoUpdater": {"CheckAtStartup": "false"},
|
||||
"GPU": {"Renderer": "Software"},
|
||||
# No sound device in the sandbox: the null backend, not an error dialog.
|
||||
"Audio": {"Backend": "Null"},
|
||||
"Logging": {"LogLevel": "Info", "LogToConsole": "true", "LogToFile": "false"},
|
||||
"Console": {"Region": "Auto"},
|
||||
},
|
||||
args=("-batch", "-nogui", "-fullscreen", "--"),
|
||||
# Strings of src/core/bios.cpp and src/core/system.cpp, as the
|
||||
# release binary carries them.
|
||||
error_patterns=("No BIOS image found for", "No BIOS images found",
|
||||
"No BIOS images were found", "Failed to open BIOS"),
|
||||
),
|
||||
"pcsx2": Emulator(
|
||||
name="pcsx2",
|
||||
platform="emudeck",
|
||||
installer_ref="dragoonDorise/EmuDeck functions/EmuScripts/emuDeckPCSX2QT.sh "
|
||||
"(getReleaseURLGH \"PCSX2/pcsx2\" \"Qt.AppImage\" \"\")",
|
||||
repo="PCSX2/pcsx2",
|
||||
asset_endswith="Qt.AppImage",
|
||||
asset_contains="",
|
||||
binary="usr/bin/pcsx2-qt",
|
||||
# EmuFolders::SetDataDirectory (pcsx2/Pcsx2Config.cpp): $XDG_CONFIG_HOME/PCSX2 on Linux,
|
||||
# its settings in inis/.
|
||||
settings_file="data/PCSX2/inis/PCSX2.ini",
|
||||
bios_setting=("Folders", "Bios"),
|
||||
settings={
|
||||
# SETTINGS_VERSION of pcsx2/VMManager.cpp: another value resets every setting.
|
||||
"UI": {"SettingsVersion": "1", "SetupWizardIncomplete": "false", "ConfirmShutdown": "false",
|
||||
"StartFullscreen": "true"},
|
||||
"AutoUpdater": {"CheckAtStartup": "false"},
|
||||
# GSRendererType::SW
|
||||
"EmuCore/GS": {"Renderer": "13"},
|
||||
# No sound device in the sandbox: the null backend, not an error dialog
|
||||
# over the screen.
|
||||
"SPU2/Output": {"Backend": "Null"},
|
||||
"Logging": {"EnableSystemConsole": "true", "EnableVerbose": "false"},
|
||||
},
|
||||
args=("-batch", "-nogui", "-fullscreen", "-earlyconsolelog", "--"),
|
||||
error_patterns=("requires a PlayStation 2 BIOS in order to run",
|
||||
"Unable to auto locate a BIOS image", "BIOS image has not been selected",
|
||||
"could not be read (permission denied?)"),
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Pure helpers
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
def select_asset(releases: Sequence[dict], endswith: str, contains: str) -> dict | None:
|
||||
"""The asset EmuDeck's getReleaseURLGH returns: the first, over the
|
||||
releases in the API's order, whose name contains and ends as asked."""
|
||||
for release in releases:
|
||||
for asset in release.get("assets") or ():
|
||||
name = asset.get("name", "")
|
||||
if contains in name and name.endswith(endswith):
|
||||
return {"tag": release.get("tag_name"), "name": name,
|
||||
"url": asset.get("browser_download_url"),
|
||||
"prerelease": bool(release.get("prerelease"))}
|
||||
return None
|
||||
|
||||
|
||||
def appimage_offset(head: bytes) -> int:
|
||||
"""Where an AppImage's squashfs starts: the end of its ELF runtime,
|
||||
read from the section header table, as the runtime computes it."""
|
||||
if head[:4] != b"\x7fELF":
|
||||
raise cp.ProbeError("not an ELF file, not an AppImage")
|
||||
if head[4] == 2:
|
||||
shoff = struct.unpack_from("<Q", head, 0x28)[0]
|
||||
shentsize, shnum = struct.unpack_from("<HH", head, 0x3A)
|
||||
else:
|
||||
shoff = struct.unpack_from("<I", head, 0x20)[0]
|
||||
shentsize, shnum = struct.unpack_from("<HH", head, 0x2E)
|
||||
return shoff + shentsize * shnum
|
||||
|
||||
|
||||
def ini_text(sections: dict[str, dict[str, str]]) -> str:
|
||||
out = []
|
||||
for section, values in sections.items():
|
||||
out.append(f"[{section}]")
|
||||
out.extend(f"{key} = {value}" for key, value in values.items())
|
||||
out.append("")
|
||||
return "\n".join(out)
|
||||
|
||||
|
||||
def emulator_settings(emu: Emulator, bios_dir: Path, overrides: Sequence[tuple[str, str]]
|
||||
) -> dict[str, dict[str, str]]:
|
||||
"""The settings written before a run: the emulator's own, the BIOS
|
||||
folder, then each SECTION.KEY=VALUE override."""
|
||||
sections = {name: dict(values) for name, values in emu.settings.items()}
|
||||
section, key = emu.bios_setting
|
||||
sections.setdefault(section, {})[key] = str(bios_dir)
|
||||
for name, value in overrides:
|
||||
sec, _, k = name.rpartition(".")
|
||||
if not sec or not k:
|
||||
raise cp.ProbeError(f"--setting {name}: SECTION.KEY expected")
|
||||
sections.setdefault(sec, {})[k] = value
|
||||
return sections
|
||||
|
||||
|
||||
def parse_xwd(data: bytes) -> tuple[int, int, bytes]:
|
||||
"""Width, height and RGB pixels of an XWD image, the file Xvfb keeps
|
||||
its screen in: 32 bits per pixel, least significant byte first."""
|
||||
if len(data) < 100:
|
||||
raise cp.ProbeError("framebuffer file shorter than an XWD header")
|
||||
fields = struct.unpack_from(">25I", data, 0)
|
||||
header_size, version = fields[0], fields[1]
|
||||
width, height = fields[4], fields[5]
|
||||
byte_order, bits_per_pixel, bytes_per_line, ncolors = fields[7], fields[11], fields[12], fields[19]
|
||||
if version != 7 or bits_per_pixel != 32 or byte_order != 0:
|
||||
raise cp.ProbeError(f"XWD version {version}, {bits_per_pixel} bpp, byte order "
|
||||
f"{byte_order}: only version 7, 32 bpp, LSB first are read")
|
||||
start = header_size + ncolors * 12
|
||||
rows = [data[start + y * bytes_per_line:start + y * bytes_per_line + width * 4] for y in range(height)]
|
||||
packed = b"".join(rows)
|
||||
if len(packed) != width * height * 4:
|
||||
raise cp.ProbeError("framebuffer file shorter than its header says")
|
||||
return width, height, cp.to_rgb(1, width, height, packed)
|
||||
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Release binaries
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
def github_releases(repo: str) -> list[dict]:
|
||||
from scraper.base_scraper import github_headers # noqa: PLC0415
|
||||
|
||||
request = urllib.request.Request(f"https://api.github.com/repos/{repo}/releases",
|
||||
headers=github_headers())
|
||||
with urllib.request.urlopen(request, timeout=60) as response:
|
||||
return json.load(response)
|
||||
|
||||
|
||||
def fetch(emu: Emulator, cache: Path = CACHE) -> dict:
|
||||
"""Download the asset the platform picks, unpack it, and describe it."""
|
||||
asset = select_asset(github_releases(emu.repo), emu.asset_endswith, emu.asset_contains)
|
||||
if not asset:
|
||||
raise cp.ProbeError(f"{emu.repo}: no release asset matches the {emu.platform} rule")
|
||||
folder = cache / emu.name
|
||||
folder.mkdir(parents=True, exist_ok=True)
|
||||
partial = folder / f"{asset['name']}.part"
|
||||
with urllib.request.urlopen(asset["url"], timeout=600) as response, partial.open("wb") as out:
|
||||
shutil.copyfileobj(response, out)
|
||||
sha256 = cp.file_digest(partial, "sha256")
|
||||
target = folder / sha256 / asset["name"]
|
||||
target.parent.mkdir(parents=True, exist_ok=True)
|
||||
partial.replace(target)
|
||||
unpack(target)
|
||||
meta = {**asset, "sha256": sha256, "repo": emu.repo, "platform": emu.platform,
|
||||
"installer_ref": emu.installer_ref, "fetched_at": now_iso()}
|
||||
(target.parent / "asset.json").write_text(json.dumps(meta, indent=2), encoding="utf-8")
|
||||
return meta
|
||||
|
||||
|
||||
def unpack(appimage: Path) -> Path:
|
||||
"""The AppImage's tree, unpacked with unsquashfs: the runtime is never run."""
|
||||
tree = appimage.parent / "tree"
|
||||
if tree.is_dir():
|
||||
return tree
|
||||
unsquashfs = shutil.which("unsquashfs")
|
||||
if not unsquashfs:
|
||||
raise cp.ProbeError("unsquashfs not found (squashfs-tools)")
|
||||
with appimage.open("rb") as handle:
|
||||
offset = appimage_offset(handle.read(64))
|
||||
scratch = appimage.parent / "tree.part"
|
||||
shutil.rmtree(scratch, ignore_errors=True)
|
||||
subprocess.run([unsquashfs, "-q", "-n", "-o", str(offset), "-d", str(scratch), str(appimage)],
|
||||
check=True, stdout=subprocess.DEVNULL)
|
||||
scratch.replace(tree)
|
||||
return tree
|
||||
|
||||
|
||||
def installed(emu: Emulator, sha256: str | None, cache: Path = CACHE) -> tuple[dict, Path]:
|
||||
"""The fetched asset to run: the one named by sha256, else the newest."""
|
||||
folder = cache / emu.name
|
||||
metas = sorted(folder.glob("*/asset.json"), key=lambda p: p.stat().st_mtime, reverse=True)
|
||||
for path in metas:
|
||||
meta = json.loads(path.read_text(encoding="utf-8"))
|
||||
if sha256 in (None, meta["sha256"]):
|
||||
return meta, unpack(path.parent / meta["name"])
|
||||
raise cp.ProbeError(f"{emu.name}: no fetched asset{' ' + sha256 if sha256 else ''}, "
|
||||
f"run `standalone_probe.py fetch {emu.name}`")
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# One repetition
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
def now_iso() -> str:
|
||||
return dt.datetime.now(dt.timezone.utc).replace(microsecond=0).isoformat()
|
||||
|
||||
|
||||
# The X server runs inside the sandbox, on the sandbox's own /tmp: the
|
||||
# display is private to the run, and the host's /tmp/.X11-unix (read-only
|
||||
# under WSLg) is never touched. Its fbdir option keeps the screen as an XWD
|
||||
# file in the run's scratch folder, which the probe reads from outside.
|
||||
DISPLAY_NUMBER = 1
|
||||
XVFB_WRAPPER = (
|
||||
f'Xvfb ":{DISPLAY_NUMBER}" -screen 0 {SCREEN[0]}x{SCREEN[1]}x24 -nolisten tcp -fbdir "$1" '
|
||||
'-noreset >/dev/null 2>&1 &\n'
|
||||
'i=0\n'
|
||||
f'while [ ! -S /tmp/.X11-unix/X{DISPLAY_NUMBER} ]; do\n'
|
||||
' i=$((i + 1)); [ "$i" -gt 400 ] && exit 97; sleep 0.05\n'
|
||||
'done\n'
|
||||
'shift\n'
|
||||
'exec "$@"\n'
|
||||
)
|
||||
|
||||
|
||||
def with_display(argv: list[str], fbdir: Path) -> list[str]:
|
||||
"""The emulator's command, started once the sandbox's Xvfb listens."""
|
||||
return ["/bin/sh", "-c", XVFB_WRAPPER, "xvfb", str(fbdir), *argv]
|
||||
|
||||
|
||||
def stop(proc: subprocess.Popen) -> None:
|
||||
if proc.poll() is None:
|
||||
with contextlib.suppress(ProcessLookupError):
|
||||
os.killpg(proc.pid, signal.SIGKILL)
|
||||
proc.wait()
|
||||
|
||||
|
||||
ANSI = re.compile(r"\x1b\[[0-9;]*[A-Za-z]")
|
||||
|
||||
|
||||
def read_lines(stream: IO[bytes], out: list[dict], samples: list) -> None:
|
||||
"""The emulator's console, line by line, each with the sample count
|
||||
reached when it was written, colour escapes removed."""
|
||||
for raw in iter(stream.readline, b""):
|
||||
text = ANSI.sub("", raw.decode("utf-8", errors="replace")).rstrip()
|
||||
if text:
|
||||
out.append({"frame": len(samples), "level": "info", "text": text})
|
||||
|
||||
|
||||
def run_once(args: argparse.Namespace, emu: Emulator, tree: Path, system_dir: Path, scratch: Path,
|
||||
png_dir: Path | None) -> dict:
|
||||
home = scratch / "home"
|
||||
data = scratch / "data"
|
||||
for folder in (home, data):
|
||||
folder.mkdir(parents=True, exist_ok=True)
|
||||
settings = emulator_settings(emu, system_dir.resolve(), args.setting)
|
||||
settings_path = scratch / emu.settings_file
|
||||
settings_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
settings_path.write_text(ini_text(settings), encoding="utf-8")
|
||||
content = Path(args.content).resolve()
|
||||
argv = [str(tree / emu.binary)] + [a.format(data=data.resolve()) for a in emu.args] + [str(content)]
|
||||
trace = scratch / "strace.txt"
|
||||
strace = shutil.which("strace") if not args.no_trace else None
|
||||
if strace:
|
||||
argv = [strace, "-f", "-qq", "-s", "4096", "-e", "trace=openat,open", "-o", str(trace)] + argv
|
||||
samples: list[tuple[float, str, bool]] = []
|
||||
logs: list[dict] = []
|
||||
if not shutil.which("Xvfb"):
|
||||
raise cp.ProbeError("Xvfb not found")
|
||||
fbdir = scratch / "fb"
|
||||
fbdir.mkdir(parents=True, exist_ok=True)
|
||||
screen_file = fbdir / "Xvfb_screen0"
|
||||
env = {"HOME": str(home.resolve()), "XDG_CONFIG_HOME": str(data.resolve()),
|
||||
"XDG_DATA_HOME": str(data.resolve()), "XDG_CACHE_HOME": str((home / ".cache").resolve()),
|
||||
"DISPLAY": f":{DISPLAY_NUMBER}", "QT_QPA_PLATFORM": "xcb", "LIBGL_ALWAYS_SOFTWARE": "1",
|
||||
"PATH": "/usr/bin:/bin", "LANG": "C.UTF-8"}
|
||||
# The BIOS folder is writable, as the platform's is: PCSX2 creates its
|
||||
# NVRAM and MEC files there.
|
||||
prefix, isolation = cp.sandbox_argv([scratch, system_dir], [tree, content.parent])
|
||||
if args.require_sandbox and isolation != cp.SANDBOX:
|
||||
raise cp.ProbeError(f"refused to run the emulator outside a sandbox: {isolation}")
|
||||
proc = subprocess.Popen(prefix + with_display(argv, fbdir.resolve()), stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT, env=env, start_new_session=True)
|
||||
reader = threading.Thread(target=read_lines, args=(proc.stdout, logs, samples), daemon=True)
|
||||
reader.start()
|
||||
try:
|
||||
deadline = time.monotonic() + 30
|
||||
while not screen_file.exists():
|
||||
if proc.poll() is not None or time.monotonic() > deadline:
|
||||
raise cp.ProbeError(f"Xvfb did not start in the sandbox (exit {proc.poll()}): "
|
||||
f"{' / '.join(line['text'] for line in logs[-5:])}")
|
||||
time.sleep(0.05)
|
||||
started = time.monotonic()
|
||||
ended = None
|
||||
for index in range(args.samples):
|
||||
target = started + (index + 1) * args.interval
|
||||
while time.monotonic() < target and proc.poll() is None:
|
||||
time.sleep(min(0.05, max(0.0, target - time.monotonic())))
|
||||
if proc.poll() is not None:
|
||||
code = proc.returncode
|
||||
ended = {"status": code if code >= 0 else None,
|
||||
"signal": signal.Signals(-code).name if code < 0 else None}
|
||||
break
|
||||
width, height, rgb = parse_xwd(screen_file.read_bytes())
|
||||
sha1 = hashlib.sha1(rgb).hexdigest()
|
||||
samples.append((round(time.monotonic() - started, 3), sha1, cp.uniform_frame(rgb, 3)))
|
||||
if png_dir and not any(p.name.endswith(f"{sha1[:12]}.png") for p in png_dir.iterdir()):
|
||||
(png_dir / f"{index:04d}-{sha1[:12]}.png").write_bytes(cp.png_bytes(width, height, rgb))
|
||||
wall = time.monotonic() - started
|
||||
finally:
|
||||
stop(proc)
|
||||
reader.join(5)
|
||||
places = [(str(system_dir.resolve()), "<bios>"), (str(scratch.resolve()), "<scratch>"),
|
||||
(str(content.parent), "<content>"), (str(tree), "<emulator>"), (str(ROOT), "<repo>")]
|
||||
for line in logs:
|
||||
line["text"] = cp.host_paths_hidden(line["text"], places)
|
||||
rep: dict = {
|
||||
"loaded": ended is None,
|
||||
"library_name": emu.name,
|
||||
"frames": max(len(samples), 1),
|
||||
"wall_s": round(wall, 3),
|
||||
"sample_interval_s": args.interval,
|
||||
"sample_times_s": [t for t, _, _ in samples],
|
||||
# The shapes core_probe gives them: [sample, sha1] pairs, and the
|
||||
# digests of the samples that are one colour.
|
||||
"observables": {
|
||||
"frame_hashes": [[index, h] for index, (_, h, _) in enumerate(samples)],
|
||||
"uniform_frames": sorted({h for _, h, u in samples if u}),
|
||||
"screens": sorted({h for _, h, u in samples if not u}),
|
||||
},
|
||||
"logs": logs,
|
||||
"isolation": isolation,
|
||||
}
|
||||
if ended:
|
||||
rep["exit"] = ended
|
||||
if strace and trace.is_file():
|
||||
opened, probed = cp.files_under(cp.parse_strace(trace.read_text(encoding="utf-8", errors="replace")),
|
||||
system_dir)
|
||||
rep["files_opened"] = [{"path": rel, "sha1_after": cp.file_digest(system_dir / rel)}
|
||||
for rel in opened if (system_dir / rel).is_file()]
|
||||
rep["files_probed_absent"] = probed
|
||||
rep["tracing"] = "strace"
|
||||
else:
|
||||
rep["files_opened"] = None
|
||||
rep["files_probed_absent"] = None
|
||||
rep["tracing"] = "disabled: --no-trace" if args.no_trace else "unavailable: strace not found"
|
||||
return rep
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Variants and the record
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
def run_variant(args: argparse.Namespace, emu: Emulator, tree: Path, oracle: dict,
|
||||
base: dict[str, Path], variant: cp.Variant, work: Path, repetitions: int) -> dict:
|
||||
reps: list[dict] = []
|
||||
flags: list[str] = []
|
||||
for index in range(repetitions):
|
||||
# A fresh BIOS folder each time: PCSX2 writes its NVRAM and MEC files
|
||||
# beside the BIOS, as on a user's folder, and a repetition must not
|
||||
# start from what the last one wrote.
|
||||
system_dir = work / f"bios{index}"
|
||||
staged = cp.stage_system_dir(base, variant, system_dir)
|
||||
png_dir = None
|
||||
if args.png_dir and index == 0:
|
||||
png_dir = Path(args.png_dir) / variant.label
|
||||
png_dir.mkdir(parents=True, exist_ok=True)
|
||||
rep = run_once(args, emu, tree, system_dir, work / f"rep{index}", png_dir)
|
||||
rep["verdict"], rep["verdict_evidence"] = cp.judge(rep, oracle)
|
||||
rep["observables"]["verdict"] = rep["verdict"]
|
||||
for entry in rep.get("files_opened") or []:
|
||||
expected = staged.get(entry["path"])
|
||||
entry["sha1_staged"] = expected
|
||||
if expected is not None and expected != entry["sha1_after"]:
|
||||
flags.append(f"repetition {index}: {entry['path']} sha1 changed during the run")
|
||||
reps.append(rep)
|
||||
verdict, evidence = cp.variant_verdict(reps)
|
||||
return {"label": variant.label, "system_files": dict(sorted(staged.items())), "repetitions": reps,
|
||||
"flags": flags, "verdict": verdict, "verdict_evidence": evidence}
|
||||
|
||||
|
||||
def frontend_identity() -> dict:
|
||||
script = Path(__file__).resolve()
|
||||
commit = dirty = None
|
||||
try:
|
||||
commit = subprocess.run(["git", "rev-parse", "HEAD"], cwd=ROOT, capture_output=True, text=True,
|
||||
check=True).stdout.strip()
|
||||
dirty = bool(subprocess.run(["git", "status", "--porcelain", "--", str(script)], cwd=ROOT,
|
||||
capture_output=True, text=True, check=True).stdout.strip())
|
||||
except (OSError, subprocess.CalledProcessError) as exc:
|
||||
print(f"WARNING: frontend commit unknown, git failed: {exc}", file=sys.stderr)
|
||||
return {"script": SCRIPT, "commit": commit, "script_modified": dirty,
|
||||
"script_sha256": cp.file_digest(script, "sha256")}
|
||||
|
||||
|
||||
def emulator_oracle(emu: Emulator, path: Path, content_sha1: str) -> dict:
|
||||
"""The oracle core_probe reads (tests/campaign/oracle.yml), looked up by
|
||||
the content's sha1 and the emulator's name, with the emulator's own
|
||||
error strings of this script added as patterns. Without the file the
|
||||
oracle names this script, which then holds every pattern."""
|
||||
data, identity = cp.load_oracle(path)
|
||||
entries = cp.oracle_for(data, content_sha1, emu.name)
|
||||
own = [re.escape(text) for text in emu.error_patterns]
|
||||
entries["error_patterns"] = list(dict.fromkeys(entries["error_patterns"] + own))
|
||||
if identity is None:
|
||||
identity = {"file": SCRIPT, "sha256": cp.file_digest(Path(__file__).resolve(), "sha256")}
|
||||
return {**identity, **entries}
|
||||
|
||||
|
||||
def check_result(variants: list[dict], observable: str) -> dict:
|
||||
"""core_probe's comparison, with each variant's verdict beside it."""
|
||||
return {**cp.check_result(variants, observable),
|
||||
"verdicts": {v["label"]: v["verdict"] for v in variants}}
|
||||
|
||||
|
||||
def probe(args: argparse.Namespace) -> int:
|
||||
emu = EMULATORS[args.emulator]
|
||||
problems = validate(args)
|
||||
if problems:
|
||||
for problem in problems:
|
||||
print(f"ERROR: {problem}", file=sys.stderr)
|
||||
return 2
|
||||
# One run on the host at a time, as core_probe: the lock is held for
|
||||
# this run, its load check included, and freed when it ends.
|
||||
with cp.host_probe_lock():
|
||||
return _probe(args, emu)
|
||||
|
||||
|
||||
def _probe(args: argparse.Namespace, emu: Emulator) -> int:
|
||||
meta, tree = installed(emu, args.sha256)
|
||||
max_load = args.max_load if args.max_load is not None else (os.cpu_count() or 1) / 4
|
||||
load_before = cp.load_average()
|
||||
if args.record and load_before and load_before[0] > max_load:
|
||||
print(f"ERROR: load average {load_before[0]} exceeds {max_load}: the machine is busy, "
|
||||
f"nothing recorded", file=sys.stderr)
|
||||
return 3
|
||||
oracle = emulator_oracle(emu, Path(args.oracle) if args.oracle else cp.DEFAULT_ORACLE,
|
||||
cp.file_digest(Path(args.content)))
|
||||
repetitions = 1 if args.mode == "run" else args.repeat
|
||||
base = {dest: Path(src) for dest, src in args.bios_file}
|
||||
if args.mode == "check":
|
||||
variants_in = []
|
||||
seen: set[str] = set()
|
||||
for dest, src in args.vary:
|
||||
label = Path(src).name if src else f"{dest}-absent"
|
||||
while label in seen:
|
||||
label += "+"
|
||||
seen.add(label)
|
||||
variants_in.append(cp.Variant(label, {dest: Path(src) if src else None}))
|
||||
else:
|
||||
variants_in = [cp.Variant("default")]
|
||||
work = Path(tempfile.mkdtemp(prefix=f"{args.mode}-", dir=cp._ensure(Path(args.work_dir))))
|
||||
try:
|
||||
variants = [run_variant(args, emu, tree, oracle, base, variant, work / f"v{i}", repetitions)
|
||||
for i, variant in enumerate(variants_in)]
|
||||
except (cp.ProbeError, OSError, subprocess.SubprocessError) as exc:
|
||||
print(f"ERROR: {exc}", file=sys.stderr)
|
||||
return 1
|
||||
finally:
|
||||
shutil.rmtree(work, ignore_errors=True)
|
||||
load_after = cp.load_average()
|
||||
record: dict = {
|
||||
"record_version": RECORD_VERSION,
|
||||
"emulator": emu.name,
|
||||
"subject": None,
|
||||
"supersedes": args.supersedes,
|
||||
"kind": args.mode,
|
||||
"recorded_at": now_iso(),
|
||||
"core": {"file": meta["name"], "sha256": meta["sha256"], "repo": f"https://github.com/{meta['repo']}",
|
||||
"commit": None, "build_command": None, "compiler": None, "library_name": emu.name,
|
||||
"library_version": meta["tag"], "artifact": meta["url"]},
|
||||
"frontend": frontend_identity(),
|
||||
"host": {**cp.host_identity(), "load_before": load_before, "load_after": load_after,
|
||||
"max_load": max_load},
|
||||
"inputs": {
|
||||
"content": cp.content_identity(Path(args.content), args.content_label),
|
||||
"options": {f"{s}.{k}": v for s, values in
|
||||
emulator_settings(emu, Path("<bios>"), args.setting).items() for k, v in values.items()},
|
||||
"env": {},
|
||||
"frames": args.samples,
|
||||
"warmup": 0,
|
||||
"repetitions": repetitions,
|
||||
"presses": [],
|
||||
"observables": list(OBSERVABLES),
|
||||
"frame_hash_every": 1,
|
||||
"joypad_ports": 0,
|
||||
"oracle": oracle,
|
||||
},
|
||||
"variants": variants,
|
||||
"flags": [f"{v['label']}: {flag}" for v in variants for flag in v["flags"]],
|
||||
}
|
||||
if load_before and load_after and max(load_before[0], load_after[0]) > max_load:
|
||||
record["flags"].append(f"load average reached {max(load_before[0], load_after[0])} "
|
||||
f"(threshold {max_load})")
|
||||
if args.mode == "check":
|
||||
record["check"] = {"claim": args.claim, "method": args.method, "observable": args.observable,
|
||||
"variable": args.vary[0][0], "result": check_result(variants, args.observable)}
|
||||
from measurement_records import canonical, sha256_hex, slugify
|
||||
|
||||
if args.subject:
|
||||
record["subject"] = args.subject
|
||||
elif args.mode == "check":
|
||||
digest = sha256_hex(canonical([args.claim, args.method, args.observable, args.vary[0][0]]))[:8]
|
||||
record["subject"] = f"{slugify(args.claim)}-{digest}"
|
||||
else:
|
||||
digest = sha256_hex(canonical([meta["sha256"], record["inputs"]["content"],
|
||||
record["inputs"]["options"], args.bios_file]))[:8]
|
||||
record["subject"] = f"run-{slugify(args.content_label or Path(args.content).name, 30)}-{digest}"
|
||||
if args.record:
|
||||
try:
|
||||
lines, record = cp.write_record(Path(args.record), record)
|
||||
except cp.ProbeError as exc:
|
||||
print(f"ERROR: {exc}", file=sys.stderr)
|
||||
return 2
|
||||
print(f"recorded {lines}", file=sys.stderr)
|
||||
print(json.dumps(record, indent=2))
|
||||
return 0
|
||||
|
||||
|
||||
def validate(args: argparse.Namespace) -> list[str]:
|
||||
problems = []
|
||||
if not Path(args.content).is_file():
|
||||
problems.append(f"--content {args.content}: not a file")
|
||||
for dest, src in args.bios_file:
|
||||
if not Path(src).is_file():
|
||||
problems.append(f"--bios-file {dest}={src}: not a file")
|
||||
if args.oracle and not Path(args.oracle).is_file():
|
||||
problems.append(f"--oracle {args.oracle}: not a file")
|
||||
if args.samples < 2 or args.interval <= 0:
|
||||
problems.append("--samples must be >= 2 and --interval > 0")
|
||||
if args.require_sandbox:
|
||||
isolation = cp.sandbox_argv([])[1]
|
||||
if isolation != cp.SANDBOX:
|
||||
problems.append(f"--require-sandbox: {isolation}")
|
||||
if args.record:
|
||||
wrong = cp.not_a_checkout_root(Path(args.record))
|
||||
if wrong:
|
||||
problems.append(wrong)
|
||||
if args.subject and not re.fullmatch(r"[a-z0-9]+(?:[-_][a-z0-9]+)*", args.subject):
|
||||
problems.append(f"--subject {args.subject!r}: lowercase letters, digits, - and _ only")
|
||||
if args.mode == "check":
|
||||
if len({dest for dest, _ in args.vary}) != 1:
|
||||
problems.append("--vary must name the same DEST in every occurrence")
|
||||
for dest, src in args.vary:
|
||||
if src and not Path(src).is_file():
|
||||
problems.append(f"--vary {dest}={src}: not a file")
|
||||
if args.observable not in OBSERVABLES:
|
||||
problems.append(f"--observable {args.observable}: not one of {', '.join(OBSERVABLES)}")
|
||||
return problems
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Command line
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
def build_parser() -> argparse.ArgumentParser:
|
||||
parser = argparse.ArgumentParser(allow_abbrev=False, description=__doc__,
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
sub = parser.add_subparsers(dest="mode", required=True)
|
||||
for name, text in (("resolve", "print the asset the platform's installer picks"),
|
||||
("fetch", "download and unpack it into .cache/standalone/")):
|
||||
p = sub.add_parser(name, help=text)
|
||||
p.add_argument("emulator", choices=sorted(EMULATORS), help="the emulator, by its profile name")
|
||||
common = argparse.ArgumentParser(add_help=False, allow_abbrev=False)
|
||||
common.add_argument("emulator", choices=sorted(EMULATORS), help="the emulator, by its profile name")
|
||||
common.add_argument("--content", required=True, help="the game: a .cue, .iso or .chd")
|
||||
common.add_argument("--content-label", help="identity of the content, its Redump or No-Intro name")
|
||||
common.add_argument("--bios-file", action="append", default=[], metavar="DEST=SRC",
|
||||
type=lambda t: cp.parse_assignment(t, "--bios-file"),
|
||||
help="copy SRC into the staged BIOS folder as DEST")
|
||||
common.add_argument("--setting", action="append", default=[], metavar="SECTION.KEY=VALUE",
|
||||
type=lambda t: cp.parse_assignment(t, "--setting"),
|
||||
help="an emulator setting written before the run")
|
||||
common.add_argument("--sha256", help="the fetched asset to run (default: the newest fetched)")
|
||||
common.add_argument("--samples", type=int, default=60, help="screen samples per repetition")
|
||||
common.add_argument("--interval", type=float, default=1.0, help="seconds between two samples")
|
||||
common.add_argument("--oracle", metavar="FILE",
|
||||
help="the boot oracle (default: tests/campaign/oracle.yml, as core_probe)")
|
||||
common.add_argument("--png-dir", help="write each distinct sampled screen of repetition 0 as PNG")
|
||||
common.add_argument("--record", metavar="DIR", nargs="?", const=str(ROOT),
|
||||
help="append the record to measurements/<emulator>.jsonl in the checkout DIR")
|
||||
common.add_argument("--subject", help="slug naming what the record tests")
|
||||
common.add_argument("--supersedes", metavar="ID", help="id of an earlier record this one corrects")
|
||||
common.add_argument("--max-load", type=float, default=None,
|
||||
help="refuse to record above this 1-minute load average (default: CPUs / 4)")
|
||||
common.add_argument("--work-dir", default=str(DEFAULT_WORK_DIR), help="scratch directory")
|
||||
common.add_argument("--no-trace", action="store_true", help="do not run under strace")
|
||||
common.add_argument("--require-sandbox", action="store_true",
|
||||
help="refuse to run unless bubblewrap can isolate the emulator")
|
||||
sub.add_parser("run", parents=[common], help="one execution")
|
||||
check = sub.add_parser("check", parents=[common], help="compare variants of one BIOS file")
|
||||
check.add_argument("--vary", action="append", required=True, metavar="DEST=SRC",
|
||||
type=lambda t: cp.parse_assignment(t, "--vary"),
|
||||
help="one variant per occurrence; an empty SRC leaves DEST absent")
|
||||
check.add_argument("--observable", default="verdict", help="compared across variants")
|
||||
check.add_argument("--claim", required=True, help="the statement under test")
|
||||
check.add_argument("--method", required=True, help="how the run tests it")
|
||||
check.add_argument("--repeat", type=int, default=2, help="runs of each variant")
|
||||
return parser
|
||||
|
||||
|
||||
def main(argv: Sequence[str] | None = None) -> int:
|
||||
args = build_parser().parse_args(argv)
|
||||
emu = EMULATORS[args.emulator]
|
||||
if args.mode == "resolve":
|
||||
asset = select_asset(github_releases(emu.repo), emu.asset_endswith, emu.asset_contains)
|
||||
print(json.dumps({"emulator": emu.name, "platform": emu.platform,
|
||||
"installer_ref": emu.installer_ref, "asset": asset}, indent=2))
|
||||
return 0 if asset else 1
|
||||
if args.mode == "fetch":
|
||||
try:
|
||||
print(json.dumps(fetch(emu), indent=2))
|
||||
except (cp.ProbeError, OSError, subprocess.CalledProcessError) as exc:
|
||||
print(f"ERROR: {exc}", file=sys.stderr)
|
||||
return 1
|
||||
return 0
|
||||
return probe(args)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
from common import run_cli
|
||||
|
||||
run_cli(main)
|
||||
@@ -16,6 +16,11 @@ import os
|
||||
from pathlib import Path
|
||||
|
||||
os.environ.setdefault("RETROBIOS_OFFLINE", "1")
|
||||
# A test never waits on, nor blocks, the measurements running on the host.
|
||||
os.environ.setdefault(
|
||||
"RETROBIOS_PROBE_LOCK",
|
||||
str(Path(__file__).resolve().parent.parent / "tmp" / "tests" / "probe.lock"),
|
||||
)
|
||||
|
||||
(Path(__file__).resolve().parent.parent / "tmp" / "tests").mkdir(
|
||||
parents=True, exist_ok=True
|
||||
|
||||
+552
-1
@@ -9,6 +9,8 @@
|
||||
# region the territory of the disc or cartridge: the BIOS entry the
|
||||
# boot test varies is the one whose `region:` holds it, or one
|
||||
# without `region:`
|
||||
# also_regions the other territories one release was sold in, when the
|
||||
# catalog names one entry for several (`(USA, Europe)`)
|
||||
# load the file handed to the core: `cue` (the .cue sheet) or a
|
||||
# file name inside the folder, by default the single file
|
||||
# frames frames run per repetition, the same with and without the file
|
||||
@@ -19,7 +21,18 @@
|
||||
#
|
||||
# The checks a game is used for are the boot test (no file against the
|
||||
# declared file), the files test (every declared file staged, which ones the
|
||||
# core opens) and the benchmark.
|
||||
# core opens), the benchmark, and for a system whose BIOS a profile ties to a
|
||||
# territory, the region check (scripts/region_check.py): one game per region,
|
||||
# run with only its own region's BIOS, then with only the others.
|
||||
#
|
||||
# Systems come in the order of the users a missing BIOS stops: BIOS-required
|
||||
# consoles first, then the arcade BIOS sets, then everything else with a BIOS
|
||||
# entry. A system no catalog or romfetch source covers is listed under
|
||||
# `uncovered`, with the reason and romfetch's error code, so the gap is named
|
||||
# rather than silent.
|
||||
#
|
||||
# A system named twice in the profiles (`sega-megacd` and ares' `mega-cd`)
|
||||
# repeats its list with a YAML alias: the same games, one download.
|
||||
|
||||
systems:
|
||||
sony-playstation:
|
||||
@@ -40,3 +53,541 @@ systems:
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
pinned: true
|
||||
- name: "Puzzle Bobble 2 (Japan)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
The Japanese release of the same game as the US and European discs, so
|
||||
the three region runs show the same title screens and only the BIOS
|
||||
licence screen differs. Beetle PSX picks scph5500.bin for a Japanese
|
||||
disc, the region check proves it.
|
||||
region: japan
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
- name: "Bust-A-Move 2 - Arcade Edition (Europe)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
The PAL release of the same game: a European disc runs at 50 Hz and
|
||||
Beetle PSX reads scph5502.bin for it. Third leg of the region check,
|
||||
beside the Japanese and US discs of the same title.
|
||||
region: europe
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
sony-playstation-2:
|
||||
romfetch: ps2
|
||||
content:
|
||||
- name: "Rez (USA) (En,Fr,De,Es,It)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
A 230 MB CD-ROM release, the smallest well-known PS2 disc, that boots
|
||||
through the PS2 BIOS logo straight to its title screen without input.
|
||||
The profiles do not tie PS2 BIOS images to a region, so one game is
|
||||
enough for PCSX2 and LRPS2.
|
||||
region: north-america
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
sega-saturn:
|
||||
romfetch: saturn
|
||||
content: &saturn
|
||||
- name: "Puzzle Bobble 2X (Japan) (2M1, 2MB1)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
The Japanese release of the game the US and European discs carry, so
|
||||
the three region runs compare the same screens. Beetle Saturn loads
|
||||
sega_101.bin for a Japanese disc and refuses a disc of another area
|
||||
code, which the region check shows.
|
||||
region: japan
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
- name: "Bust-A-Move 2 - Arcade Edition (USA)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
The US release of the same game: Beetle Saturn loads mpr-17933.bin
|
||||
for a North American disc. Reaches its title within a minute with no
|
||||
input.
|
||||
region: north-america
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
- name: "Bust-A-Move 2 - Arcade Edition (Europe)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
The European release of the same game, area code E. mpr-17933.bin
|
||||
also serves PAL consoles in Beetle Saturn, so this disc tells whether
|
||||
one file covers two territories as the profile says.
|
||||
region: europe
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
sega-megacd:
|
||||
romfetch: segacd
|
||||
content: &megacd
|
||||
- name: "Sonic the Hedgehog CD (Japan)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
Sega's own title in all three regions, so the region runs compare one
|
||||
game. Genesis Plus GX, PicoDrive and the other Mega CD cores choose
|
||||
bios_CD_J.bin or its aliases for a Japanese console.
|
||||
region: japan
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
- name: "Sonic CD (USA)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
The US release of the same game, booted through the Sega CD BIOS
|
||||
(bios_CD_U.bin, us_scd2_9306.bin in PicoDrive). The BIOS shows its
|
||||
own animated screen before the disc starts.
|
||||
region: north-america
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
- name: "Sonic CD (Europe)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
The PAL release of the same game, for the European Mega CD BIOS
|
||||
(bios_CD_E.bin, eu_mcd2_9306.bin). Third leg of the region check.
|
||||
region: europe
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
# ares names the same console mega-cd.
|
||||
mega-cd:
|
||||
romfetch: segacd
|
||||
content: *megacd
|
||||
|
||||
sega-32x:
|
||||
romfetch: 32x
|
||||
content:
|
||||
- name: "Knuckles' Chaotix (Japan, USA) (En)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
A 32X-only cartridge: the cores that do not emulate the 32X boot ROMs
|
||||
in HLE need 32X_G_BIOS.BIN, 32X_M_BIOS.BIN and 32X_S_BIOS.BIN to run
|
||||
any of it. One release for both territories.
|
||||
region: north-america
|
||||
also_regions: [japan]
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
nec-pc-engine-cd:
|
||||
romfetch: pcecd
|
||||
content:
|
||||
- name: "Gate of Thunder (Japan) (FACT, FADT)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
A Super CD-ROM2 disc: it needs a System Card 3.0 image (syscard3.pce)
|
||||
and stops on the card's error screen with an older card or none. The
|
||||
profiles do not tie the card to a region.
|
||||
region: japan
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
snk-neogeo-cd:
|
||||
romfetch: neogeocd
|
||||
content:
|
||||
- name: "Metal Slug (Japan) (En,Ja)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
A Neo Geo CD disc that cannot start without the console's BIOS
|
||||
(neocd.bin and its CDZ variants). Metal Slug is the title the MVS
|
||||
entry of the arcade list uses too.
|
||||
region: japan
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
sega-dreamcast:
|
||||
romfetch: dreamcast
|
||||
content:
|
||||
- name: "ChuChu Rocket! (USA) (En,Ja,Fr,De,Es)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
A GD-ROM that boots through the Dreamcast BIOS logo (dc_boot.bin) to
|
||||
its title without input. Flycast runs it with its HLE BIOS too, so the
|
||||
boot test shows the difference the file makes.
|
||||
region: north-america
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
nintendo-ds:
|
||||
romfetch: nds
|
||||
content:
|
||||
- name: "Mario Kart DS (Japan)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
One game in the three regions, each held by a romfetch source (the
|
||||
Japanese Tetris DS is not). melonDS and DeSmuME boot with the
|
||||
ARM7/ARM9 BIOS and firmware or with their free replacements, and
|
||||
BizHawk ties firmware dumps to regions.
|
||||
region: japan
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
- name: "Mario Kart DS (USA, Australia) (En,Fr,De,Es,It)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
The US release of the same game, for the US firmware dump BizHawk
|
||||
declares and for the boot test of bios7.bin, bios9.bin and
|
||||
firmware.bin in melonDS.
|
||||
region: north-america
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
- name: "Mario Kart DS (Europe) (En,Fr,De,Es,It)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
The European release of the same game, third leg of the region check
|
||||
for the firmware dumps BizHawk ties to a region.
|
||||
region: europe
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
nintendo-gba:
|
||||
romfetch: gba
|
||||
content:
|
||||
- name: "Advance Wars (USA)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
A 4 MB cartridge that shows the Game Boy Advance boot logo when
|
||||
gba_bios.bin is given and skips it on the cores' HLE BIOS, so the
|
||||
boot test sees the optional BIOS at work.
|
||||
region: north-america
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
panasonic-3do:
|
||||
romfetch: 3do
|
||||
content:
|
||||
- name: "Gex (USA, Europe)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
A 3DO disc: Opera needs a 3DO BIOS (panafz10.bin and the others the
|
||||
profile lists) for any game, and Gex shows the 3DO logo the BIOS
|
||||
draws before the game.
|
||||
region: north-america
|
||||
also_regions: [europe]
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
philips-cdi:
|
||||
romfetch: cdi
|
||||
content:
|
||||
- name: "Hotel Mario (Europe)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
A CD-i disc: the CD-i cores run nothing without the player's system
|
||||
ROM (cdimono1.zip in MAME, the BIOS SAME CDi declares). A 366 MB disc
|
||||
that starts its intro without input.
|
||||
region: europe
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
commodore-amiga-cd32:
|
||||
romfetch: cd32
|
||||
content:
|
||||
- name: "Pinball Fantasies (Europe)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
A 97 MB CD32 disc: PUAE needs the CD32 Kickstart and extended ROM to
|
||||
boot any CD32 title, and the disc shows the CD32 boot animation the
|
||||
ROM draws.
|
||||
region: europe
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
atari-lynx:
|
||||
romfetch: lynx
|
||||
content:
|
||||
- name: "Super Skweek (World) (Atari Lynx Collection 1) (Unl)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
Handy and Beetle Lynx refuse to start a cartridge without
|
||||
lynxboot.img. The headered Lynx catalog romfetch reads holds only the
|
||||
Atari Lynx Collection releases and betas, and this is a full game
|
||||
from that collection.
|
||||
region: north-america
|
||||
also_regions: [europe, japan]
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
# Everything else with a BIOS entry.
|
||||
|
||||
sega-mastersystem:
|
||||
romfetch: mastersystem
|
||||
content: &mastersystem
|
||||
- name: "Alex Kidd no Miracle World (Japan)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
The Japanese Mark III cartridge. Genesis Plus GX ties bios_J.sms to
|
||||
Japan and bios_U.sms to the other regions, so the region check runs
|
||||
the same game on each.
|
||||
region: japan
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
- name: "Alex Kidd in Miracle World (USA, Europe)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
The western cartridge of the same game, one release for the US and
|
||||
Europe, as bios_U.sms serves both in the Genesis Plus GX profile.
|
||||
region: north-america
|
||||
also_regions: [europe]
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
# ares names the same console master-system.
|
||||
master-system:
|
||||
romfetch: mastersystem
|
||||
content: *mastersystem
|
||||
|
||||
nintendo-64:
|
||||
romfetch: n64
|
||||
content:
|
||||
- name: "Super Mario 64 (Japan)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
One game in the three regions. simple64 loads the NTSC or the PAL PIF
|
||||
ROM by the cartridge's region, which the region check proves on the
|
||||
Japanese, US and European releases.
|
||||
region: japan
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
- name: "Super Mario 64 (USA)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
The US release of the same game, NTSC like the Japanese one, so it
|
||||
should read the same PIF ROM as the Japanese cartridge.
|
||||
region: north-america
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
- name: "Super Mario 64 (Europe) (En,Fr,De)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
The PAL release of the same game: the one cartridge the PAL PIF ROM
|
||||
(pif.pal) is for in simple64.
|
||||
region: europe
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
nintendo-gamecube:
|
||||
romfetch: gamecube
|
||||
content:
|
||||
- name: "Pikmin (Japan) (Rev 1)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
One game in the three regions. Dolphin reads the IPL of the disc's
|
||||
region (GC/JAP/IPL.bin) to show the GameCube boot animation, and
|
||||
skips it on its HLE boot. 1.4 GB, fetched only when a check needs it.
|
||||
region: japan
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
- name: "Pikmin (USA)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
The US release of the same game, for GC/USA/IPL.bin in Dolphin and
|
||||
its forks.
|
||||
region: north-america
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
- name: "Pikmin (Europe, Australia) (En,Fr,De,Es,It)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
The PAL release of the same game, for GC/EUR/IPL.bin. Third leg of
|
||||
the region check.
|
||||
region: europe
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
sega-megadrive:
|
||||
romfetch: megadrive
|
||||
content:
|
||||
- name: "Sonic The Hedgehog (USA, Europe)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
A cartridge that passes the TMSS check of a later Mega Drive: with
|
||||
bios_MD.bin the core shows the TMSS licence screen first, without it
|
||||
the game starts at once.
|
||||
region: north-america
|
||||
also_regions: [europe]
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
sega-gamegear:
|
||||
romfetch: gamegear
|
||||
content:
|
||||
- name: "Sonic The Hedgehog (World) (Rev A)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
A cartridge for the optional Game Gear boot ROM (bios.gg): with it the
|
||||
core shows the Sega licence screen before the game.
|
||||
region: north-america
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
nintendo-gb:
|
||||
romfetch: gb
|
||||
content:
|
||||
- name: "Tetris (World) (Rev 1)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
The cartridge every Game Boy core runs: with the optional boot ROM
|
||||
(gb_bios.bin, dmg_boot.bin) the Nintendo logo scrolls down first,
|
||||
without it the game starts at once.
|
||||
region: north-america
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
nintendo-gbc:
|
||||
romfetch: gbc
|
||||
content:
|
||||
- name: "Tetris DX (World) (SGB Enhanced) (GB Compatible)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
A Game Boy Color cartridge for the optional CGB boot ROM
|
||||
(gbc_bios.bin, cgb_boot.bin): the boot animation and the palette it
|
||||
picks show whether the core read it.
|
||||
region: north-america
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
snk-neogeo-pocket:
|
||||
romfetch: ngp
|
||||
content:
|
||||
- name: "King of Fighters R-1 - Pocket Fighting Series (Japan, Europe) (En,Ja)"
|
||||
catalog: no-intro
|
||||
reason: >-
|
||||
A Neo Geo Pocket cartridge for the optional BIOS some cores read (the
|
||||
SNK boot screen and the clock setting it asks for). Mednafen's HLE
|
||||
starts the game without it.
|
||||
region: japan
|
||||
also_regions: [europe]
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
nec-pc-fx:
|
||||
romfetch: pcfx
|
||||
content:
|
||||
- name: "Battle Heat (Japan)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
A PC-FX disc: Beetle PC-FX needs pcfx.rom for any game. Every PC-FX
|
||||
release is Japanese.
|
||||
region: japan
|
||||
load: cue
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
sony-psp:
|
||||
romfetch: psp
|
||||
content:
|
||||
- name: "Lumines - Puzzle Fusion (Europe) (En,Fr,De,Es,It)"
|
||||
catalog: redump
|
||||
reason: >-
|
||||
A UMD image for PPSSPP, which needs no BIOS but reads its font and
|
||||
asset files (the ppsspp data directory) to draw the system dialogs.
|
||||
region: europe
|
||||
frames: 3600
|
||||
frame_hash_every: 10
|
||||
|
||||
# Systems with a BIOS entry that no catalog romfetch reads covers, or whose
|
||||
# content romfetch cannot fetch. `romfetch` is what the request returned:
|
||||
# its exit code and error code.
|
||||
uncovered:
|
||||
snk-neogeo-mvs:
|
||||
want: "mslug (neogeo.zip with Metal Slug), through MAME and FBNeo"
|
||||
reason: >-
|
||||
Arcade sets are not in the Redump or No-Intro catalogs and romfetch has
|
||||
no arcade system.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "arcade"}
|
||||
sega-naomi:
|
||||
want: "mvsc2 (naomi.zip with Marvel vs. Capcom 2), through MAME and Flycast"
|
||||
reason: Arcade set, no catalog romfetch reads.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "arcade"}
|
||||
sammy-atomiswave:
|
||||
want: "kofnw (awbios.zip with The King of Fighters Neowave), through MAME and Flycast"
|
||||
reason: Arcade set, no catalog romfetch reads.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "arcade"}
|
||||
igs-pgm:
|
||||
want: "kov (pgm.zip with Knights of Valour), through MAME and FBNeo"
|
||||
reason: Arcade set, no catalog romfetch reads.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "arcade"}
|
||||
cps3:
|
||||
want: "sfiii3 (Street Fighter III 3rd Strike), through MAME and FBNeo"
|
||||
reason: Arcade set, no catalog romfetch reads.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "arcade"}
|
||||
sega-stv:
|
||||
want: "shienryu (stvbios.zip with Shienryu), through MAME, FBNeo and Kronos"
|
||||
reason: Arcade set, no catalog romfetch reads.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "arcade"}
|
||||
sega-triforce:
|
||||
want: "a Triforce GD-ROM set, through Dolphin Triforce"
|
||||
reason: Arcade set, no catalog romfetch reads.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "arcade"}
|
||||
nintendo-dsi:
|
||||
want: "a DSi-enhanced cartridge or DSiWare title, for melonDS in DSi mode"
|
||||
reason: romfetch reads the decrypted DS catalog only, no DSi set.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "dsi"}
|
||||
nintendo-3ds:
|
||||
want: "one game per region, for Citra's regional system archives"
|
||||
reason: No 3DS catalog in romfetch.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "3ds"}
|
||||
nintendo-64dd:
|
||||
want: "F-Zero X - Expansion Kit (Japan), for the 64DD IPL"
|
||||
reason: No 64DD catalog in romfetch.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "n64dd"}
|
||||
atari-jaguarcd:
|
||||
want: "Myst (USA), for the Jaguar CD BIOS"
|
||||
reason: No Jaguar CD catalog in romfetch.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "jaguarcd"}
|
||||
intellivision:
|
||||
want: "Astrosmash (USA, Europe), for exec.bin and grom.bin"
|
||||
reason: No Intellivision catalog in romfetch.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "intellivision"}
|
||||
colecovision:
|
||||
want: "Donkey Kong (USA), for colecovision.rom"
|
||||
reason: No ColecoVision catalog in romfetch.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "colecovision"}
|
||||
msx:
|
||||
want: "Gradius (Japan), for the MSX system ROMs"
|
||||
reason: No MSX catalog in romfetch.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "msx"}
|
||||
commodore-amiga:
|
||||
want: "Lemmings (Europe), for the Kickstart ROMs"
|
||||
reason: >-
|
||||
romfetch reads the Amiga CD32 catalog only, no Amiga floppy catalog.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "amiga"}
|
||||
atari-5200:
|
||||
want: "Pac-Man (USA), for 5200.rom"
|
||||
reason: No Atari 5200 catalog in romfetch.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "atari5200"}
|
||||
atari-7800:
|
||||
want: "Asteroids (USA), for the 7800 BIOS"
|
||||
reason: No Atari 7800 catalog in romfetch.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "atari7800"}
|
||||
nintendo-fds:
|
||||
want: "Super Mario Brothers 2 (Japan), for disksys.rom"
|
||||
reason: No Famicom Disk System catalog in romfetch.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "fds"}
|
||||
nintendo-pokemon-mini:
|
||||
want: "Pokemon Pinball Mini (USA, Europe), for bios.min"
|
||||
reason: No Pokemon Mini catalog in romfetch.
|
||||
romfetch: {exit: 1, code: unknown_system, request: "pokemini"}
|
||||
microsoft-xbox:
|
||||
want: "Halo - Combat Evolved (USA), for xemu's MCPX ROM, BIOS and hard disk image"
|
||||
reason: >-
|
||||
romfetch plans the 7.8 GB entry but no source holds it (exit 1, no
|
||||
candidate), and it is above romfetch's 4 GiB limit that needs --yes.
|
||||
romfetch: {exit: 1, code: null, request: "xbox"}
|
||||
sony-playstation-3:
|
||||
want: "Ridge Racer 7 (USA), for RPCS3's PS3UPDAT.PUP firmware"
|
||||
reason: romfetch plans the entry but no source holds it (exit 1, no candidate).
|
||||
romfetch: {exit: 1, code: null, request: "ps3"}
|
||||
@@ -0,0 +1,500 @@
|
||||
# The boot oracle of scripts/core_probe.py: what a run must reach to boot,
|
||||
# and what tells a BIOS error apart.
|
||||
#
|
||||
# content per piece of test content (by the sha1 of the file handed to
|
||||
# the core, the .cue for a disc), per core (by the library name
|
||||
# retro_get_system_info gives): the reference frames a run with
|
||||
# the full BIOS set reaches. Each was recorded once
|
||||
# (`recorded_from`, the record id) and reviewed by looking at its
|
||||
# PNG, from the variant `variant` names when that run was a
|
||||
# check. `stage: bios` is a screen only the console's own BIOS
|
||||
# draws, `stage: game` a screen of the content. A run that reaches
|
||||
# one of them boots.
|
||||
# error_patterns log lines after which a core stops, read from its source
|
||||
# (`source_ref`). Shared ones at the top level, a core's own under
|
||||
# cores:. A line a core logs and then carries on (a fallback to a
|
||||
# built-in BIOS) is not an error pattern.
|
||||
# error_screens per core, the sha1 of a frame that shows its BIOS error message.
|
||||
# bios_patterns per core, log lines by which it says it loaded the console's
|
||||
# own BIOS: they stand for the bios-stage screens of a core
|
||||
# that hides them by default.
|
||||
#
|
||||
# A run that reaches no reference frame, matches no pattern or screen and
|
||||
# does not end on one colour is `unknown`: frames that differ from another
|
||||
# run's never make a boot.
|
||||
|
||||
error_patterns: []
|
||||
|
||||
cores:
|
||||
# The PlayStation cores below log a missing or wrong BIOS and boot a
|
||||
# built-in one: none of those lines is an error pattern.
|
||||
"Beetle PSX":
|
||||
note: >-
|
||||
A missing BIOS logs "Firmware is missing" and loads the embedded
|
||||
OpenBIOS, a wrong one logs "Firmware found but has invalid SHA1" and is
|
||||
loaded anyway (libretro.c:849, 856, 3504-3511 at 7fea57a5).
|
||||
error_patterns: []
|
||||
error_screens:
|
||||
- sha1: dfbfc299250c0983f86bbf951efd187441306d92
|
||||
shows: the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)
|
||||
"Beetle PSX HW":
|
||||
note: The same code as Beetle PSX, built with the hardware renderers.
|
||||
error_patterns: []
|
||||
error_screens:
|
||||
- sha1: dfbfc299250c0983f86bbf951efd187441306d92
|
||||
shows: the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)
|
||||
"SwanStation":
|
||||
note: >-
|
||||
"No BIOS image found for <region> region" is followed by the built-in
|
||||
OpenBIOS (src/core/host_interface.cpp:182, src/core/system.cpp:678-682
|
||||
at 631f0fb3).
|
||||
error_patterns: []
|
||||
error_screens:
|
||||
- sha1: 167fb7b6527e295b12dca5806a29856f5f31d401
|
||||
shows: the Japanese BIOS main menu, the disc refused (a US disc under a Japanese BIOS)
|
||||
"PCSX-ReARMed":
|
||||
note: >-
|
||||
Without a BIOS, or with one of the wrong size, it logs "Using HLE BIOS"
|
||||
and runs its own (frontend/libretro.c:3893-3899 at c8816799). The BIOS
|
||||
boot logo is off by default (pcsx_rearmed_show_bios_bootlogo), so its
|
||||
runs reach no bios-stage screen: the line it logs once a file passes
|
||||
its signature check and is kept stands for them.
|
||||
bios_patterns:
|
||||
- pattern: '^found (US|EU|JP) BIOS file, crc32 '
|
||||
source_ref: frontend/libretro.c:3646-3669 at c8816799
|
||||
error_patterns: []
|
||||
error_screens: []
|
||||
"Beetle Saturn":
|
||||
note: Without a usable BIOS the core logs one of these and retro_load_game fails.
|
||||
error_patterns:
|
||||
- pattern: '^Cannot open BIOS file '
|
||||
source_ref: mednafen/ss/ss.c:1943-1947 at 2ce77e20
|
||||
- pattern: '^BIOS file ".*" is of an incorrect size\.'
|
||||
source_ref: mednafen/ss/ss.c:1961-1967 at 2ce77e20
|
||||
- pattern: '^BIOS file ".*" could not be fully read'
|
||||
source_ref: mednafen/ss/ss.c:1978-1983 at 2ce77e20
|
||||
error_screens: []
|
||||
"pcsx2":
|
||||
note: >-
|
||||
PCSX2 standalone (scripts/standalone_probe.py). Without a BIOS it shows a
|
||||
dialog and runs nothing: the dialog is its error screen, captured as the
|
||||
1280x720 root window.
|
||||
error_patterns: []
|
||||
error_screens:
|
||||
- sha1: 46329c633ea7d0b63349261e4aab169e4f44d3f6
|
||||
shows: the dialog "PCSX2 requires a PlayStation 2 BIOS in order to run"
|
||||
"PCSX1":
|
||||
note: An HLE BIOS stands in when none is found, and the run logs nothing about it.
|
||||
error_patterns: []
|
||||
error_screens: []
|
||||
|
||||
content:
|
||||
- name: "Bust-A-Move 2 - Arcade Edition (USA)"
|
||||
catalog: redump
|
||||
# The sha1 of the .cue handed to the core.
|
||||
sha1: ed4a437a6f653cc71ad6ac0da68cc85eb093f298
|
||||
references:
|
||||
"Beetle PSX":
|
||||
recorded_from: 2026-10-27-b0150a15670d
|
||||
frames:
|
||||
- sha1: 7b72ebae83893b63f9fffd1685f03b1d048d9fa9
|
||||
stage: bios
|
||||
shows: the Sony Computer Entertainment logo
|
||||
- sha1: 0905c920a1de996664eddca94f93f75d0dcd4c52
|
||||
stage: bios
|
||||
shows: the PlayStation logo licensed by Sony Computer Entertainment America
|
||||
- sha1: d51ab7783f8eeafc63a28f14ce39f8e2babeffb3
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: 63a96bd6d1d487da1824e10d37f6658506edc451
|
||||
stage: game
|
||||
shows: the Acclaim and Taito credits text, CREDIT 6
|
||||
- sha1: 6628416f377d2e25df45e5fa2126f8f9313551f0
|
||||
stage: game
|
||||
shows: the Acclaim logo, CREDIT 6
|
||||
- sha1: d68892362e0f33c41cc59dac1b5a2077fe5428ee
|
||||
stage: game
|
||||
shows: the Taito logo on white, CREDIT 6
|
||||
- sha1: 56330c6c7646c2c261acb3f48450825cb289845a
|
||||
stage: game
|
||||
shows: a black screen with CREDIT 6
|
||||
"Beetle PSX HW":
|
||||
recorded_from: 2026-10-27-ee69ad83c9f8
|
||||
frames:
|
||||
- sha1: 7b72ebae83893b63f9fffd1685f03b1d048d9fa9
|
||||
stage: bios
|
||||
shows: the Sony Computer Entertainment logo
|
||||
- sha1: 0905c920a1de996664eddca94f93f75d0dcd4c52
|
||||
stage: bios
|
||||
shows: the PlayStation logo licensed by Sony Computer Entertainment America
|
||||
- sha1: d51ab7783f8eeafc63a28f14ce39f8e2babeffb3
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: 63a96bd6d1d487da1824e10d37f6658506edc451
|
||||
stage: game
|
||||
shows: the Acclaim and Taito credits text, CREDIT 6
|
||||
- sha1: 6628416f377d2e25df45e5fa2126f8f9313551f0
|
||||
stage: game
|
||||
shows: the Acclaim logo, CREDIT 6
|
||||
- sha1: d68892362e0f33c41cc59dac1b5a2077fe5428ee
|
||||
stage: game
|
||||
shows: the Taito logo on white, CREDIT 6
|
||||
- sha1: 56330c6c7646c2c261acb3f48450825cb289845a
|
||||
stage: game
|
||||
shows: a black screen with CREDIT 6
|
||||
"SwanStation":
|
||||
recorded_from: 2026-10-27-717f780131fc
|
||||
frames:
|
||||
- sha1: fad859d9b8211ce9f35ad3a05b0b7d184fe14d83
|
||||
stage: bios
|
||||
shows: the Sony Computer Entertainment logo
|
||||
- sha1: 593a6e2600946040fefd6eb9aebdc5c0d56f0555
|
||||
stage: bios
|
||||
shows: the PlayStation logo licensed by Sony Computer Entertainment America
|
||||
- sha1: e5af1f2023d0d729ce7aabf52d8e03f75bb8d230
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: dd6dac23da6b8f4f256b8090568c52e8f8428425
|
||||
stage: game
|
||||
shows: the Acclaim and Taito credits text, CREDIT 6
|
||||
- sha1: 533715dd946ba1984af1b9356e06989c7770e04a
|
||||
stage: game
|
||||
shows: the Acclaim logo, CREDIT 6
|
||||
- sha1: 0d17db6e9a2d5793695884c85dd2177093420fdc
|
||||
stage: game
|
||||
shows: the Taito logo on white, CREDIT 6
|
||||
- sha1: 2238516839dc43c0b22c00db5fe76128f5fb6f3f
|
||||
stage: game
|
||||
shows: a black screen with CREDIT 6
|
||||
"PCSX-ReARMed":
|
||||
recorded_from: 2026-10-27-8154bab7bf80
|
||||
frames:
|
||||
- sha1: e5af1f2023d0d729ce7aabf52d8e03f75bb8d230
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: dd6dac23da6b8f4f256b8090568c52e8f8428425
|
||||
stage: game
|
||||
shows: the Acclaim and Taito credits text, CREDIT 6
|
||||
- sha1: 533715dd946ba1984af1b9356e06989c7770e04a
|
||||
stage: game
|
||||
shows: the Acclaim logo, CREDIT 6
|
||||
- sha1: 0d17db6e9a2d5793695884c85dd2177093420fdc
|
||||
stage: game
|
||||
shows: the Taito logo on white, CREDIT 6
|
||||
- sha1: 2238516839dc43c0b22c00db5fe76128f5fb6f3f
|
||||
stage: game
|
||||
shows: a black screen with CREDIT 6
|
||||
"PCSX1":
|
||||
recorded_from: 2026-10-27-2905a9dd4b0a
|
||||
frames:
|
||||
- sha1: e5af1f2023d0d729ce7aabf52d8e03f75bb8d230
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: dd6dac23da6b8f4f256b8090568c52e8f8428425
|
||||
stage: game
|
||||
shows: the Acclaim and Taito credits text, CREDIT 6
|
||||
- sha1: e10f642259f2906bb39ae07fcb4b5a36eae18287
|
||||
stage: game
|
||||
shows: the Acclaim logo with a stray strip at its right edge, CREDIT 6
|
||||
- sha1: 0d17db6e9a2d5793695884c85dd2177093420fdc
|
||||
stage: game
|
||||
shows: the Taito logo on white, CREDIT 6
|
||||
- sha1: 2238516839dc43c0b22c00db5fe76128f5fb6f3f
|
||||
stage: game
|
||||
shows: a black screen with CREDIT 6
|
||||
"duckstation":
|
||||
recorded_from: 2026-10-27-9bc8fbcebc85
|
||||
variant: scph5501.bin
|
||||
frames:
|
||||
- sha1: 7218f6facf5c27248b8dc9cff31d8b4aeb3b1829
|
||||
stage: bios
|
||||
shows: the Sony Computer Entertainment logo
|
||||
- sha1: d70b0e9e9e4e05eb54fb56d6adbab3afb753631a
|
||||
stage: bios
|
||||
shows: the PlayStation logo licensed by Sony Computer Entertainment America
|
||||
- sha1: f336e067bb644abaf2ab30462564a1baa037d58e
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: 534459d74bac4644fe7d3f23689390026bbb6d1b
|
||||
stage: game
|
||||
shows: the Acclaim and Taito credits text, CREDIT 6
|
||||
- sha1: b01b0ebfe12f3bcfd7250443f391a67f002c40d4
|
||||
stage: game
|
||||
shows: the Acclaim logo, CREDIT 6
|
||||
- sha1: 5d83577be2b2ca48bd55daaede7cc4ba96b7fee7
|
||||
stage: game
|
||||
shows: the Taito logo on white, CREDIT 6
|
||||
- sha1: 4b4e686aeae9fecbb8cb504dcddb9b91bc1a137e
|
||||
stage: game
|
||||
shows: a black screen with CREDIT 6
|
||||
- sha1: 2901974f4a50e0a9f061b21e5f262ea7edf5b8c2
|
||||
stage: game
|
||||
shows: the attract-mode game, two playfields of bubbles
|
||||
- name: "Puzzle Bobble 2 (Japan)"
|
||||
catalog: redump
|
||||
sha1: 3b51b45b8b78777c04086fcd1ef1dd0439c365e6
|
||||
references:
|
||||
"Beetle PSX":
|
||||
recorded_from: 2026-10-27-a2bd916f1765
|
||||
frames:
|
||||
- sha1: 7b72ebae83893b63f9fffd1685f03b1d048d9fa9
|
||||
stage: bios
|
||||
shows: the Sony Computer Entertainment logo
|
||||
- sha1: 1d5305661b110a78aff8e41d60c19168c4af77ac
|
||||
stage: bios
|
||||
shows: the PlayStation logo licensed by Sony Computer Entertainment Inc.
|
||||
- sha1: d51ab7783f8eeafc63a28f14ce39f8e2babeffb3
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: 80d023ecbf776a97b6bb2bdeb13e43460f60fd53
|
||||
stage: game
|
||||
shows: the Taito logo on white, CREDIT 6
|
||||
- sha1: 1bda114b66fd098623abca772cf23813293a3849
|
||||
stage: game
|
||||
shows: a black screen with CREDIT 6
|
||||
- sha1: 3bb53b8a3036554a4bf9ec4785df7a4b4e06a87d
|
||||
stage: game
|
||||
shows: the attract-mode game on the beach, PASSAGE TIME IS
|
||||
"Beetle PSX HW":
|
||||
recorded_from: 2026-10-27-6e0e946eeba5
|
||||
frames:
|
||||
- sha1: 7b72ebae83893b63f9fffd1685f03b1d048d9fa9
|
||||
stage: bios
|
||||
shows: the Sony Computer Entertainment logo
|
||||
- sha1: 1d5305661b110a78aff8e41d60c19168c4af77ac
|
||||
stage: bios
|
||||
shows: the PlayStation logo licensed by Sony Computer Entertainment Inc.
|
||||
- sha1: d51ab7783f8eeafc63a28f14ce39f8e2babeffb3
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: 80d023ecbf776a97b6bb2bdeb13e43460f60fd53
|
||||
stage: game
|
||||
shows: the Taito logo on white, CREDIT 6
|
||||
- sha1: 1bda114b66fd098623abca772cf23813293a3849
|
||||
stage: game
|
||||
shows: a black screen with CREDIT 6
|
||||
- sha1: 3bb53b8a3036554a4bf9ec4785df7a4b4e06a87d
|
||||
stage: game
|
||||
shows: the attract-mode game on the beach, PASSAGE TIME IS
|
||||
"PCSX-ReARMed":
|
||||
recorded_from: 2026-10-27-65923ebc1836
|
||||
frames:
|
||||
- sha1: e5af1f2023d0d729ce7aabf52d8e03f75bb8d230
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: 2443e73be7ce3203408d7398c997fe6ec7cebd9f
|
||||
stage: game
|
||||
shows: the Taito logo on white, CREDIT 6
|
||||
- sha1: 373e5e3d7c524ed1556b9292a794169bf1de27d0
|
||||
stage: game
|
||||
shows: a black screen with CREDIT 6
|
||||
- sha1: 53f32c4acd5a522f359952ee48f138e44aee6e61
|
||||
stage: game
|
||||
shows: the attract-mode game on the beach, PASSAGE TIME IS
|
||||
"SwanStation":
|
||||
recorded_from: 2026-10-27-abe38e414339
|
||||
frames:
|
||||
- sha1: fad859d9b8211ce9f35ad3a05b0b7d184fe14d83
|
||||
stage: bios
|
||||
shows: the Sony Computer Entertainment logo
|
||||
- sha1: 9c168a8d6a6c706157307910e2b46039d019e48b
|
||||
stage: bios
|
||||
shows: the PlayStation logo licensed by Sony Computer Entertainment Inc.
|
||||
- sha1: e5af1f2023d0d729ce7aabf52d8e03f75bb8d230
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: 2443e73be7ce3203408d7398c997fe6ec7cebd9f
|
||||
stage: game
|
||||
shows: the Taito logo on white, CREDIT 6
|
||||
- sha1: 373e5e3d7c524ed1556b9292a794169bf1de27d0
|
||||
stage: game
|
||||
shows: a black screen with CREDIT 6
|
||||
- sha1: 53f32c4acd5a522f359952ee48f138e44aee6e61
|
||||
stage: game
|
||||
shows: the attract-mode game on the beach, PASSAGE TIME IS
|
||||
- name: "Bust-A-Move 2 - Arcade Edition (Europe)"
|
||||
catalog: redump
|
||||
sha1: fbfb904cdb7a0e25a659980a5ed1206298bc7a1e
|
||||
references:
|
||||
"Beetle PSX":
|
||||
recorded_from: 2026-10-27-4b9e700d03a9
|
||||
frames:
|
||||
- sha1: 7b72ebae83893b63f9fffd1685f03b1d048d9fa9
|
||||
stage: bios
|
||||
shows: the Sony Computer Entertainment logo
|
||||
- sha1: 408effe5ed13b50c97a21d2efe9930ab0d2b6f43
|
||||
stage: bios
|
||||
shows: the PlayStation logo licensed by Sony Computer Entertainment Europe
|
||||
- sha1: d51ab7783f8eeafc63a28f14ce39f8e2babeffb3
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: f5649c8df958220324753968e8785ea80a021837
|
||||
stage: game
|
||||
shows: the anti-piracy notice
|
||||
- sha1: 2cccff1e0706fcc8bdd4fdcd35e0310c9aaf9ac5
|
||||
stage: game
|
||||
shows: the Acclaim and Taito credits text
|
||||
- sha1: dd70e8e057c3de89f0c39c2b91b72fce902a8588
|
||||
stage: game
|
||||
shows: the Acclaim logo
|
||||
- sha1: 368ac3ce2a4ef7dcc1720e0e48f18e3e6404e191
|
||||
stage: game
|
||||
shows: the Taito logo on white
|
||||
"Beetle PSX HW":
|
||||
recorded_from: 2026-10-27-f3b61598f415
|
||||
frames:
|
||||
- sha1: 7b72ebae83893b63f9fffd1685f03b1d048d9fa9
|
||||
stage: bios
|
||||
shows: the Sony Computer Entertainment logo
|
||||
- sha1: 408effe5ed13b50c97a21d2efe9930ab0d2b6f43
|
||||
stage: bios
|
||||
shows: the PlayStation logo licensed by Sony Computer Entertainment Europe
|
||||
- sha1: d51ab7783f8eeafc63a28f14ce39f8e2babeffb3
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: f5649c8df958220324753968e8785ea80a021837
|
||||
stage: game
|
||||
shows: the anti-piracy notice
|
||||
- sha1: 2cccff1e0706fcc8bdd4fdcd35e0310c9aaf9ac5
|
||||
stage: game
|
||||
shows: the Acclaim and Taito credits text
|
||||
- sha1: dd70e8e057c3de89f0c39c2b91b72fce902a8588
|
||||
stage: game
|
||||
shows: the Acclaim logo
|
||||
- sha1: 368ac3ce2a4ef7dcc1720e0e48f18e3e6404e191
|
||||
stage: game
|
||||
shows: the Taito logo on white
|
||||
"PCSX-ReARMed":
|
||||
recorded_from: 2026-10-27-c71f71b579b9
|
||||
frames:
|
||||
- sha1: e5af1f2023d0d729ce7aabf52d8e03f75bb8d230
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: d0c5e568fd2585ad5c0ed244c25bdacdbb596d55
|
||||
stage: game
|
||||
shows: the anti-piracy notice
|
||||
- sha1: 4ea5612d272a8b05fabf98ed7dc4b245fe759001
|
||||
stage: game
|
||||
shows: the Acclaim and Taito credits text
|
||||
- sha1: ed433c340dc7ef65c8afba4434542c1827251127
|
||||
stage: game
|
||||
shows: the Acclaim logo
|
||||
- sha1: a909b761d6f46ec28bdf46aac874873db40396b7
|
||||
stage: game
|
||||
shows: the Taito logo on white
|
||||
"SwanStation":
|
||||
recorded_from: 2026-10-27-57e092562c10
|
||||
frames:
|
||||
- sha1: fad859d9b8211ce9f35ad3a05b0b7d184fe14d83
|
||||
stage: bios
|
||||
shows: the Sony Computer Entertainment logo
|
||||
- sha1: e6f4f8524f3c8a47d5dba0d33f63c64dcebccde7
|
||||
stage: bios
|
||||
shows: the PlayStation logo licensed by Sony Computer Entertainment Europe
|
||||
- sha1: e5af1f2023d0d729ce7aabf52d8e03f75bb8d230
|
||||
stage: game
|
||||
shows: Now Loading with the yellow bubble
|
||||
- sha1: d0c5e568fd2585ad5c0ed244c25bdacdbb596d55
|
||||
stage: game
|
||||
shows: the anti-piracy notice
|
||||
- sha1: 4ea5612d272a8b05fabf98ed7dc4b245fe759001
|
||||
stage: game
|
||||
shows: the Acclaim and Taito credits text
|
||||
- sha1: ed433c340dc7ef65c8afba4434542c1827251127
|
||||
stage: game
|
||||
shows: the Acclaim logo
|
||||
- sha1: a909b761d6f46ec28bdf46aac874873db40396b7
|
||||
stage: game
|
||||
shows: the Taito logo on white
|
||||
- name: "Puzzle Bobble 2X (Japan) (2M1, 2MB1)"
|
||||
catalog: redump
|
||||
sha1: b962ec9148a189239810a10677dcba073983733f
|
||||
references:
|
||||
"Beetle Saturn":
|
||||
recorded_from: 2026-10-27-ea155398ce4b
|
||||
frames:
|
||||
- sha1: 5edec5180d1c04dc0ead1e5fbbc7d6d53cc23fdb
|
||||
stage: bios
|
||||
shows: the SEGA SATURN logo of the Japanese BIOS
|
||||
- sha1: dcd45679fcd31a423d0e54690e89b52f417d8728
|
||||
stage: bios
|
||||
shows: SEGA, produced by or under license from Sega Enterprises
|
||||
- sha1: 7efe0a96245086d186a702a253525614d03f01f4
|
||||
stage: game
|
||||
shows: NOW LOADING
|
||||
- sha1: 79894146225fefecb7db22b6aa296cb035a8d8ae
|
||||
stage: game
|
||||
shows: the Taito logo on white, CREDIT 9
|
||||
- sha1: 475fce75c7c581b7367ac1a4adaa0aadc18afab1
|
||||
stage: game
|
||||
shows: GAME OVER, press 1P or 2P start button
|
||||
- sha1: f610c613f723fa640250121d6086b5e2c53b695c
|
||||
stage: game
|
||||
shows: the Puzzle Bobble 2X title, press start button
|
||||
- name: "Bust-A-Move 2 - Arcade Edition (USA)"
|
||||
catalog: redump
|
||||
sha1: 782b93d04ecb9da4cc534489e67feeac7ea9dc78
|
||||
references:
|
||||
"Beetle Saturn":
|
||||
recorded_from: 2026-10-27-35dd5587262d
|
||||
frames:
|
||||
- sha1: f6f6ad7714da4b7c32a7736276c8cba7ef9d45d0
|
||||
stage: bios
|
||||
shows: the SEGA SATURN globe logo
|
||||
- sha1: dcd45679fcd31a423d0e54690e89b52f417d8728
|
||||
stage: bios
|
||||
shows: SEGA, produced by or under license from Sega Enterprises
|
||||
- sha1: e0b0fd36c4da2579b509934b8fe010f4741edfa5
|
||||
stage: game
|
||||
shows: NOW LOADING
|
||||
- sha1: 97f62d0835bc7f27b660f330d794c149c50c5716
|
||||
stage: game
|
||||
shows: the Acclaim and Taito credits text, CREDIT 9
|
||||
- sha1: 0cd323a8a93adec3a2173549300acbf9a3fe5596
|
||||
stage: game
|
||||
shows: the Acclaim logo, CREDIT 9
|
||||
- sha1: 76ed20462b9f45e247611fa77feff69e47052875
|
||||
stage: game
|
||||
shows: the Taito logo on white, CREDIT 9
|
||||
- sha1: e90793d79a1c815cd74e7a56f0e9d8f124bfc547
|
||||
stage: game
|
||||
shows: the Bust-A-Move 2 title, press start button
|
||||
- name: "Bust-A-Move 2 - Arcade Edition (Europe)"
|
||||
catalog: redump
|
||||
sha1: 9298fabcdd797272c8c993abc81fcdd51a4e7830
|
||||
references:
|
||||
"Beetle Saturn":
|
||||
recorded_from: 2026-10-27-1880da25f150
|
||||
frames:
|
||||
- sha1: 2d870b2352923df4b2563f75c8a01a3d6dcb4237
|
||||
stage: bios
|
||||
shows: the SEGA SATURN globe logo
|
||||
- sha1: 95410b3a4a9f69ae981e2774c55574886efa67ea
|
||||
stage: bios
|
||||
shows: SEGA, produced by or under license from Sega Enterprises
|
||||
- sha1: 4d426aec90be9bff76e2d32da0437d91f9880950
|
||||
stage: game
|
||||
shows: NOW LOADING
|
||||
- sha1: 5bfbc97567caa32bad7489acc6c9a4f3f65ed863
|
||||
stage: game
|
||||
shows: the Acclaim and Taito credits text, CREDIT 9
|
||||
- sha1: 8af02ae2f2f0864657a3c7a68293a4da163000d6
|
||||
stage: game
|
||||
shows: the Acclaim logo, CREDIT 9
|
||||
- sha1: e3245a31197fa028c2da63f387f58a38e010c98d
|
||||
stage: game
|
||||
shows: the Taito logo on white, CREDIT 9
|
||||
- sha1: 9ae4dbf2ded891887635634d224dedccf176c1a0
|
||||
stage: game
|
||||
shows: the Bust-A-Move 2 title, press start button
|
||||
- name: "Rez (USA) (En,Fr,De,Es,It)"
|
||||
catalog: redump
|
||||
sha1: f6ac65761e9d8c8c9eb9d3377ff53719557ae346
|
||||
references:
|
||||
"pcsx2":
|
||||
recorded_from: 2026-10-27-fac0b52c9475
|
||||
variant: ps2-0230a-20080220.bin
|
||||
frames:
|
||||
- sha1: 003685f698160f1cc79ca0bc00091f30ccb681db
|
||||
stage: game
|
||||
shows: Rez asking to format the unformatted memory card in slot 1
|
||||
+282
-81
@@ -16,6 +16,7 @@ import io
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
import struct
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
@@ -92,15 +93,20 @@ void retro_init(void) {}
|
||||
void retro_deinit(void) {}
|
||||
static FILE *try_open(const char *dir, const char *name) {
|
||||
char path[4096]; snprintf(path, sizeof path, "%s/%s", dir, name); return fopen(path, "rb"); }
|
||||
/* booted: 0 a black screen to the end, 1 the BIOS logo then the title,
|
||||
2 the title alone (the built-in stand-in of FAKE_HLE). */
|
||||
bool retro_load_game(const void *g) {
|
||||
const char *dir = NULL; FILE *f; (void)g; env(9, &dir);
|
||||
const char *dir = NULL; FILE *f; unsigned char buf[8]; size_t n = 0; (void)g; env(9, &dir);
|
||||
f = try_open(dir, "bios.bin");
|
||||
if (!f) f = try_open(dir, "BIOS.BIN");
|
||||
if (f) { n = fread(buf, 1, sizeof buf, f); fclose(f); }
|
||||
int valid = f && n == 4 && buf[0] == 'B';
|
||||
#ifdef FAKE_HLE
|
||||
if (f) fclose(f);
|
||||
booted = 1;
|
||||
/* Checks the size only: a file of the wrong size is refused for the
|
||||
stand-in, one of the right size is run, whatever it holds. */
|
||||
booted = valid ? 1 : (f && n == 4) ? 0 : 2;
|
||||
#else
|
||||
if (f) { fclose(f); booted = 1; } else booted = 0;
|
||||
booted = valid ? 1 : 0;
|
||||
#endif
|
||||
return true; }
|
||||
void retro_unload_game(void) {}
|
||||
@@ -109,7 +115,8 @@ void retro_run(void) {
|
||||
#ifdef FAKE_HANG
|
||||
for (;;) {}
|
||||
#endif
|
||||
for (int i = 0; i < 8; i++) pixels[i] = booted ? (uint16_t)(frame / 2 + i) : 0;
|
||||
int shown = frame < 4 ? 0 : booted == 1 && frame < 8 ? 1 : booted ? 2 : 0;
|
||||
for (int i = 0; i < 8; i++) pixels[i] = shown == 0 ? 0 : (uint16_t)((shown == 1 ? 1 : 20) + i);
|
||||
frame++;
|
||||
video(pixels, 4, 2, 8); batch(s, 2); }
|
||||
size_t retro_serialize_size(void) { return 0; }
|
||||
@@ -117,78 +124,103 @@ bool retro_serialize(void *d, size_t n) { (void)d; (void)n; return false; }
|
||||
"""
|
||||
|
||||
|
||||
def rep(frames: list[str], uniform: list[str] | None = None, loaded: bool = True) -> dict:
|
||||
return {"loaded": loaded, "observables": {
|
||||
"frame_hashes": [[i * 10, h] for i, h in enumerate(frames)],
|
||||
"uniform_frames": sorted(set(uniform or []))}}
|
||||
def run(verdict: str, label: str = "v", stages: tuple[str, ...] = (),
|
||||
rid: str = "2026-10-27-aaaaaaaaaaaa") -> rules.Run:
|
||||
return rules.Run(verdict, rid, label, stages)
|
||||
|
||||
|
||||
def boot_record(absent: list[dict], present: list[dict], rid: str = "2026-10-27-aaaaaaaaaaaa") -> dict:
|
||||
return {"id": rid, "variants": [{"label": "bios.bin-absent", "repetitions": absent},
|
||||
{"label": "bios.bin", "repetitions": present}]}
|
||||
|
||||
|
||||
class BootOutcome(unittest.TestCase):
|
||||
GAME = ("black", "logo", "title", "title2")
|
||||
|
||||
def test_boots_when_screens_are_shared(self) -> None:
|
||||
record = boot_record([rep(["black", "hle", "logo", "title"], ["black"])] * 2,
|
||||
[rep(self.GAME, ["black"])] * 2)
|
||||
boot = rules.boot_outcome(record, "bios.bin-absent", "bios.bin")
|
||||
self.assertEqual((boot.status, boot.shared), (rules.BOOTS, 2))
|
||||
|
||||
def test_one_colour_and_no_load_fail(self) -> None:
|
||||
black = boot_record([rep(["black"], ["black"]), rep([], [], loaded=False)],
|
||||
[rep(self.GAME, ["black"])])
|
||||
self.assertEqual(rules.boot_outcome(black, "bios.bin-absent", "bios.bin").status, rules.FAILS)
|
||||
|
||||
def test_a_shared_blank_screen_proves_nothing(self) -> None:
|
||||
# The black frame both runs start on is one colour: it is no game screen.
|
||||
record = boot_record([rep(["black", "error"], ["black"])], [rep(self.GAME, ["black"])])
|
||||
self.assertEqual(rules.boot_outcome(record, "bios.bin-absent", "bios.bin").status,
|
||||
rules.INCONCLUSIVE)
|
||||
|
||||
def test_one_shared_screen_is_not_enough(self) -> None:
|
||||
record = boot_record([rep(["logo", "error"])], [rep(self.GAME, ["black"])])
|
||||
self.assertEqual(rules.boot_outcome(record, "bios.bin-absent", "bios.bin").status,
|
||||
rules.INCONCLUSIVE)
|
||||
|
||||
def test_repetitions_that_disagree_settle_nothing(self) -> None:
|
||||
record = boot_record([rep(["logo", "title"]), rep(["black"], ["black"])],
|
||||
[rep(self.GAME, ["black"])])
|
||||
self.assertEqual(rules.boot_outcome(record, "bios.bin-absent", "bios.bin").status,
|
||||
rules.INCONCLUSIVE)
|
||||
|
||||
def test_a_reference_that_shows_nothing_settles_nothing(self) -> None:
|
||||
record = boot_record([rep(["logo", "title"])], [rep(["black"], ["black"])])
|
||||
self.assertEqual(rules.boot_outcome(record, "bios.bin-absent", "bios.bin").status,
|
||||
rules.INCONCLUSIVE)
|
||||
record = boot_record([rep(["logo", "title"])], [rep(self.GAME, loaded=False)])
|
||||
self.assertEqual(rules.boot_outcome(record, "bios.bin-absent", "bios.bin").status,
|
||||
rules.INCONCLUSIVE)
|
||||
NONE_BOOTS = run(rules.BOOTS, "none", ("game",), "2026-10-27-000000000001")
|
||||
NONE_HANGS = run(rules.HANG, "none", (), "2026-10-27-000000000001")
|
||||
PRESENT = run(rules.BOOTS, "bios.bin", ("bios", "game"), "2026-10-27-000000000002")
|
||||
|
||||
|
||||
class RuleTable(unittest.TestCase):
|
||||
ENTRY = MappingProxyType({"name": "bios.bin", "required": True, "aliases": ["Bios.bin"]})
|
||||
RID = "2026-10-27-bbbbbbbbbbbb"
|
||||
|
||||
def test_boots_without_settles_hle_and_queues_required(self) -> None:
|
||||
verdicts = rules.rule_bios_need(rules.Boot(rules.BOOTS, "x", 3), self.ENTRY, self.RID)
|
||||
def test_a_verdict_is_read_from_the_record(self) -> None:
|
||||
record = {"id": self.RID, "variants": [
|
||||
{"label": "a", "verdict": "boots", "verdict_evidence": {"rule": "repetitions_agree",
|
||||
"detail": "d", "stages": ["bios"]}},
|
||||
{"label": "old"}]}
|
||||
self.assertEqual(rules.run_of(record, "a"), rules.Run("boots", self.RID, "a", ("bios",)))
|
||||
# A record from before the oracle proves nothing.
|
||||
self.assertEqual(rules.run_of(record, "old").verdict, rules.UNKNOWN)
|
||||
|
||||
def test_boots_with_no_bios_settles_hle_and_queues_required(self) -> None:
|
||||
verdicts = rules.rule_need(NONE_BOOTS, PRESENT, self.ENTRY)
|
||||
self.assertEqual([(v.field, v.value, v.apply) for v in verdicts],
|
||||
[("hle_fallback", True, True), ("required", False, False)])
|
||||
self.assertEqual(verdicts[0].evidence, (self.RID,))
|
||||
optional = rules.rule_bios_need(rules.Boot(rules.BOOTS, "x", 3),
|
||||
{"name": "a", "required": False}, self.RID)
|
||||
self.assertEqual(verdicts[0].evidence, (NONE_BOOTS.record_id,))
|
||||
optional = rules.rule_need(NONE_BOOTS, PRESENT, {"name": "a", "required": False})
|
||||
self.assertEqual([v.field for v in optional], ["hle_fallback"])
|
||||
|
||||
def test_fails_without_settles_required_and_no_hle(self) -> None:
|
||||
verdicts = rules.rule_bios_need(rules.Boot(rules.FAILS, "x"), self.ENTRY, self.RID)
|
||||
self.assertEqual([(v.field, v.value, v.apply) for v in verdicts],
|
||||
[("required", True, True), ("hle_fallback", False, True)])
|
||||
def test_a_file_the_content_never_uses_settles_nothing(self) -> None:
|
||||
unused = run(rules.BOOTS, "bios.bin", ("game",))
|
||||
self.assertFalse(rules.read(NONE_BOOTS, unused, unused, unused))
|
||||
self.assertEqual(rules.rule_need(NONE_BOOTS, unused, self.ENTRY, used=False), [])
|
||||
# A wrong file that hangs where no file boots: the core reads it.
|
||||
self.assertTrue(rules.read(NONE_BOOTS, unused, run(rules.HANG), unused))
|
||||
self.assertTrue(rules.read(NONE_BOOTS, PRESENT, None, None))
|
||||
|
||||
def test_inconclusive_is_queued(self) -> None:
|
||||
(verdict,) = rules.rule_bios_need(rules.Boot(rules.INCONCLUSIVE, "x"), self.ENTRY, self.RID)
|
||||
self.assertFalse(verdict.apply)
|
||||
def test_fails_without_and_boots_alone_settles_required(self) -> None:
|
||||
for failure in rules.FAILS:
|
||||
verdicts = rules.rule_need(run(failure, "none"), PRESENT, self.ENTRY)
|
||||
self.assertEqual([(v.field, v.value, v.apply) for v in verdicts],
|
||||
[("required", True, True), ("hle_fallback", False, True)])
|
||||
|
||||
def test_unknown_or_no_boot_alone_settles_nothing(self) -> None:
|
||||
for none, present in ((run(rules.UNKNOWN), PRESENT), (NONE_HANGS, run(rules.HANG)),
|
||||
(NONE_HANGS, run(rules.UNKNOWN))):
|
||||
(verdict,) = rules.rule_need(none, present, self.ENTRY)
|
||||
self.assertFalse(verdict.apply)
|
||||
self.assertEqual(verdict.rule, "unsettled")
|
||||
|
||||
def test_file_use(self) -> None:
|
||||
self.assertEqual(rules.file_use(run(rules.BIOS_ERROR), NONE_HANGS, PRESENT), rules.REFUSED)
|
||||
# It boots without the BIOS screens the right file shows: a fallback.
|
||||
self.assertEqual(rules.file_use(run(rules.BOOTS, stages=("game",)), NONE_BOOTS, PRESENT),
|
||||
rules.REFUSED)
|
||||
self.assertEqual(rules.file_use(run(rules.BOOTS, stages=("bios", "game")), NONE_BOOTS, PRESENT),
|
||||
rules.USED)
|
||||
self.assertEqual(rules.file_use(run(rules.HANG), NONE_BOOTS, PRESENT), rules.USED)
|
||||
self.assertEqual(rules.file_use(run(rules.CRASH), NONE_BOOTS, PRESENT), rules.USED)
|
||||
# A hang the run with no file shows too says nothing about the file.
|
||||
self.assertIsNone(rules.file_use(run(rules.HANG), NONE_HANGS, PRESENT))
|
||||
self.assertIsNone(rules.file_use(run(rules.UNKNOWN), NONE_BOOTS, PRESENT))
|
||||
self.assertIsNone(rules.file_use(run(rules.BIOS_ERROR), NONE_BOOTS, run(rules.HANG)))
|
||||
no_logo = run(rules.BOOTS, stages=("game",))
|
||||
self.assertIsNone(rules.file_use(run(rules.BOOTS, stages=("game",)), NONE_BOOTS, no_logo))
|
||||
|
||||
def test_validation_agrees_or_adds_size(self) -> None:
|
||||
refused = run(rules.BOOTS, stages=("game",))
|
||||
used = run(rules.HANG)
|
||||
entry = {"name": "bios.bin", "validation": ["size", "md5"]}
|
||||
verdict = rules.rule_validation(refused, refused, NONE_BOOTS, PRESENT, entry)
|
||||
self.assertEqual((verdict.rule, verdict.apply), ("validation_agrees", True))
|
||||
self.assertTrue(rules.agrees(entry, verdict))
|
||||
added = rules.rule_validation(used, refused, NONE_BOOTS, PRESENT, {"name": "bios.bin"})
|
||||
self.assertEqual((added.rule, added.value, added.apply), ("validation_size_added", ["size"], True))
|
||||
self.assertFalse(rules.agrees({"name": "bios.bin"}, added))
|
||||
self.assertEqual(rules.rule_validation(used, used, NONE_BOOTS, PRESENT, {"name": "b"}).rule,
|
||||
"validation_agrees")
|
||||
|
||||
def test_validation_contradicted_is_queued(self) -> None:
|
||||
refused = run(rules.BIOS_ERROR)
|
||||
used = run(rules.HANG)
|
||||
cases = [
|
||||
(refused, None, {"name": "b", "validation": ["size"]}), # content check undeclared
|
||||
(used, None, {"name": "b", "validation": ["md5"]}), # declared, not done
|
||||
(None, used, {"name": "b", "validation": ["size"]}), # half of it runs
|
||||
(used, refused, {"name": "b", "validation": {"core": ["md5"]}}), # per-build form
|
||||
]
|
||||
for zeros, half, entry in cases:
|
||||
verdict = rules.rule_validation(zeros, half, NONE_BOOTS, PRESENT, entry)
|
||||
self.assertEqual((verdict.rule, verdict.apply), ("validation_contradicted", False), entry)
|
||||
self.assertEqual(set(verdict.value), {"content", "size"})
|
||||
self.assertFalse(rules.agrees(entry, verdict))
|
||||
self.assertIsNone(rules.rule_validation(run(rules.UNKNOWN), None, NONE_BOOTS, PRESENT,
|
||||
{"name": "b"}))
|
||||
|
||||
def test_path_and_alias(self) -> None:
|
||||
self.assertIsNone(rules.rule_path(self.ENTRY, "bios.bin", rules.Opened("bios.bin", self.RID)))
|
||||
@@ -204,8 +236,14 @@ class RuleTable(unittest.TestCase):
|
||||
self.assertEqual(verdict.rule, "never_opened")
|
||||
|
||||
def test_variants(self) -> None:
|
||||
self.assertIsNone(rules.rule_variants("same", ["a", "b"], self.ENTRY, self.RID))
|
||||
self.assertFalse(rules.rule_variants("differs", ["b", "a"], self.ENTRY, self.RID).apply)
|
||||
self.assertIsNone(rules.rule_variants([run(rules.BOOTS, "a"), run(rules.BOOTS, "b")], self.ENTRY))
|
||||
verdict = rules.rule_variants([run(rules.BOOTS, "b"), run(rules.HANG, "a")], self.ENTRY)
|
||||
self.assertEqual((verdict.value, verdict.apply), (["a", "b"], False))
|
||||
|
||||
def test_every_settled_field_can_carry_evidence(self) -> None:
|
||||
schema = json.loads((REPO_ROOT / "schemas" / "emulator.schema.json").read_text())
|
||||
evidence = schema["properties"]["files"]["items"]["properties"]["evidence"]["properties"]
|
||||
self.assertEqual(set(rules.SETTLED_FIELDS), set(evidence))
|
||||
|
||||
def test_agreement_and_evidence(self) -> None:
|
||||
self.assertTrue(rules.agrees({"name": "a"}, rules.Verdict("r", "hle_fallback", False, "", ())))
|
||||
@@ -213,6 +251,22 @@ class RuleTable(unittest.TestCase):
|
||||
self.assertTrue(rules.agrees(self.ENTRY, rules.Verdict("r", "aliases", ["Bios.bin"], "", ())))
|
||||
merged = rules.merge_evidence({"required": ["x"]}, rules.Verdict("r", "required", True, "", ("y", "x")))
|
||||
self.assertEqual(merged, {"required": ["x", "y"]})
|
||||
# An id a frame comparison wrote no longer proves the field.
|
||||
merged = rules.merge_evidence({"required": ["old"], "path": ["p"]},
|
||||
rules.Verdict("r", "required", True, "", ("new",)),
|
||||
keep=lambda rid: rid != "old")
|
||||
self.assertEqual(merged, {"path": ["p"], "required": ["new"]})
|
||||
|
||||
def test_reference_candidates(self) -> None:
|
||||
def rep(hashes: list[str]) -> dict:
|
||||
return {"observables": {"frame_hashes": [[i * 10, h] for i, h in enumerate(hashes)],
|
||||
"uniform_frames": ["black"]}}
|
||||
record = {"variants": [{"repetitions": [
|
||||
rep(["black"] * 4 + ["logo"] * 3 + ["flash"] + ["title"] * 5),
|
||||
rep(["black"] * 5 + ["logo"] * 3 + ["title"] * 3)]}]}
|
||||
self.assertEqual(campaign.reference_candidates(record),
|
||||
[{"sha1": "logo", "first_frame": 40, "samples": 3},
|
||||
{"sha1": "title", "first_frame": 80, "samples": 5}])
|
||||
|
||||
|
||||
class ProfileEditor(unittest.TestCase):
|
||||
@@ -286,6 +340,11 @@ class FakeHost(campaign.Host):
|
||||
return result
|
||||
|
||||
|
||||
def screen(base: int) -> str:
|
||||
"""The sha1 of a frame of FAKE_CORE: eight 16-bit pixels from base up."""
|
||||
return hashlib.sha1(struct.pack("<8H", *range(base, base + 8))).hexdigest()
|
||||
|
||||
|
||||
class Workspace(unittest.TestCase):
|
||||
def setUp(self) -> None:
|
||||
TMP.mkdir(parents=True, exist_ok=True)
|
||||
@@ -309,9 +368,17 @@ class Workspace(unittest.TestCase):
|
||||
"name": "Fake Game (World)", "catalog": "no-intro", "reason": "a test",
|
||||
"frames": 12, "frame_hash_every": 2}]}}}), encoding="utf-8")
|
||||
self.game = self.tmp / "content" / "fakesys" / "Fake Game (World)"
|
||||
self.oracle = self.tmp / "oracle.yml"
|
||||
self.oracle.write_text(yaml.safe_dump({
|
||||
"error_patterns": [], "cores": {}, "content": [{
|
||||
"name": "Fake Game (World)", "sha1": hashlib.sha1(b"GAME").hexdigest(),
|
||||
"references": {"Fake": {"recorded_from": "2026-10-27-000000000000", "frames": [
|
||||
{"sha1": screen(1), "stage": "bios", "shows": "the fake logo"},
|
||||
{"sha1": screen(20), "stage": "game", "shows": "the fake title"}]}}}]}),
|
||||
encoding="utf-8")
|
||||
self.paths = campaign.Paths(root=self.root, home=self.tmp / "home",
|
||||
content=self.tmp / "content", db=self.root / "database.json",
|
||||
content_file=self.content_file)
|
||||
content_file=self.content_file, oracle=self.oracle)
|
||||
|
||||
def tearDown(self) -> None:
|
||||
shutil.rmtree(self.tmp, ignore_errors=True)
|
||||
@@ -333,13 +400,30 @@ class Workspace(unittest.TestCase):
|
||||
class StateAndResume(Workspace):
|
||||
def test_should_run(self) -> None:
|
||||
self.assertTrue(campaign.should_run(None, "a", "d"))
|
||||
done = {"status": "done", "core_sha256": "a", "profile_digest": "d"}
|
||||
done = {"status": "done", "core_sha256": "a", "profile_digest": "d",
|
||||
"record_version": mr.RECORD_VERSION, "oracle_sha256": ""}
|
||||
self.assertFalse(campaign.should_run(done, "a", "d"))
|
||||
# A record from before the verdicts, or judged against another oracle, runs again.
|
||||
self.assertTrue(campaign.should_run({**done, "record_version": 3}, "a", "d"))
|
||||
self.assertTrue(campaign.should_run(done, "a", "d", "f" * 64))
|
||||
self.assertTrue(campaign.should_run(done, "b", "d"))
|
||||
self.assertTrue(campaign.should_run(done, "a", "e"))
|
||||
self.assertTrue(campaign.should_run({**done, "status": "pending"}, "a", "d"))
|
||||
self.assertFalse(campaign.should_run({**done, "status": "failed"}, "a", "d"))
|
||||
|
||||
def test_only_its_own_oracle_entries_make_a_check_run_again(self) -> None:
|
||||
key = [hashlib.sha1(b"GAME").hexdigest(), "Fake"]
|
||||
before = self.make().oracle_digest(key)
|
||||
data = yaml.safe_load(self.oracle.read_text())
|
||||
data["content"][0]["references"]["Other"] = {"recorded_from": "2026-10-27-000000000000",
|
||||
"frames": [{"sha1": "a" * 40, "stage": "game",
|
||||
"shows": "x"}]}
|
||||
self.oracle.write_text(yaml.safe_dump(data), encoding="utf-8")
|
||||
self.assertEqual(self.make().oracle_digest(key), before)
|
||||
data["cores"] = {"Fake": {"error_patterns": [{"pattern": "BIOS", "reason": "r"}]}}
|
||||
self.oracle.write_text(yaml.safe_dump(data), encoding="utf-8")
|
||||
self.assertNotEqual(self.make().oracle_digest(key), before)
|
||||
|
||||
def test_evidence_does_not_change_the_digest(self) -> None:
|
||||
profile = yaml.safe_load(PROFILE)
|
||||
before = campaign.profile_digest(profile)
|
||||
@@ -752,8 +836,14 @@ class Findings(Workspace):
|
||||
def entry(self, index: int = 0) -> dict:
|
||||
return yaml.safe_load(self.profile.read_text())["files"][index]
|
||||
|
||||
def none(self, verdict: str) -> rules.Run:
|
||||
return rules.Run(verdict, self.RID, "none")
|
||||
|
||||
def present(self) -> rules.Run:
|
||||
return rules.Run(rules.BOOTS, self.RID, "bios.bin", ("game",))
|
||||
|
||||
def test_a_settled_field_is_written_with_its_evidence(self) -> None:
|
||||
verdicts = rules.rule_bios_need(rules.Boot(rules.BOOTS, "shown", 4), self.entry(), self.RID)
|
||||
verdicts = rules.rule_need(self.none(rules.BOOTS), self.present(), self.entry())
|
||||
self.c.settle("fake", self.content, self.core, 0, self.entry(), verdicts)
|
||||
entry = self.entry()
|
||||
self.assertEqual(entry["hle_fallback"], True)
|
||||
@@ -767,7 +857,7 @@ class Findings(Workspace):
|
||||
self.assertEqual(len(self.lines()), 2)
|
||||
|
||||
def test_an_agreeing_run_adds_evidence_only(self) -> None:
|
||||
verdicts = rules.rule_bios_need(rules.Boot(rules.FAILS, "nothing"), self.entry(), self.RID)
|
||||
verdicts = rules.rule_need(self.none(rules.HANG), self.present(), self.entry())
|
||||
self.c.settle("fake", self.content, self.core, 0, self.entry(), verdicts)
|
||||
entry = self.entry()
|
||||
self.assertEqual((entry["required"], entry["hle_fallback"]), (True, False))
|
||||
@@ -775,13 +865,22 @@ class Findings(Workspace):
|
||||
self.assertEqual(self.lines(), [])
|
||||
|
||||
def test_a_later_agreement_resolves_the_open_finding(self) -> None:
|
||||
(verdict,) = rules.rule_bios_need(rules.Boot(rules.INCONCLUSIVE, "?"), self.entry(), self.RID)
|
||||
(verdict,) = rules.rule_need(self.none(rules.UNKNOWN), self.present(), self.entry())
|
||||
self.c.settle("fake", self.content, self.core, 0, self.entry(), [verdict])
|
||||
self.assertEqual(self.lines()[-1]["status"], "open")
|
||||
later = rules.Verdict("inconclusive", "hle_fallback", False, "agrees now", ("2026-10-28-000000000000",))
|
||||
self.c.settle("fake", self.content, self.core, 0, self.entry(), [later])
|
||||
self.assertEqual([line["status"] for line in self.lines()], ["open", "resolved"])
|
||||
|
||||
def test_new_evidence_writes_the_finding_again(self) -> None:
|
||||
verdict = rules.Verdict("unsettled", "hle_fallback", None, "x", (self.RID,))
|
||||
self.c.settle("fake", self.content, self.core, 0, self.entry(), [verdict])
|
||||
self.c.settle("fake", self.content, self.core, 0, self.entry(), [verdict])
|
||||
later = rules.Verdict("unsettled", "hle_fallback", None, "x", ("2026-10-28-000000000000",))
|
||||
self.c.settle("fake", self.content, self.core, 0, self.entry(), [later])
|
||||
self.assertEqual([line["evidence"] for line in self.lines()],
|
||||
[[self.RID], ["2026-10-28-000000000000"]])
|
||||
|
||||
def test_never_opened_is_flagged(self) -> None:
|
||||
verdict = rules.rule_never_opened(self.entry(1), [self.RID], "Fake Game (World)")
|
||||
self.c.settle("fake", self.content, self.core, 1, self.entry(1), [verdict])
|
||||
@@ -789,7 +888,7 @@ class Findings(Workspace):
|
||||
self.assertNotIn("evidence", self.entry(1))
|
||||
|
||||
def test_finding_lines_validate(self) -> None:
|
||||
verdicts = rules.rule_bios_need(rules.Boot(rules.BOOTS, "shown", 4), self.entry(), self.RID)
|
||||
verdicts = rules.rule_need(self.none(rules.BOOTS), self.present(), self.entry())
|
||||
self.c.settle("fake", self.content, self.core, 0, self.entry(), verdicts)
|
||||
self.c.write_run_line(self.c.current)
|
||||
try:
|
||||
@@ -802,7 +901,7 @@ class Findings(Workspace):
|
||||
self.assertEqual(list(Draft202012Validator(schema).iter_errors(line)), [], name)
|
||||
|
||||
def test_the_batch_commit_plan(self) -> None:
|
||||
verdicts = rules.rule_bios_need(rules.Boot(rules.BOOTS, "shown", 4), self.entry(), self.RID)
|
||||
verdicts = rules.rule_need(self.none(rules.BOOTS), self.present(), self.entry())
|
||||
self.c.settle("fake", self.content, self.core, 0, self.entry(), verdicts)
|
||||
self.c.current.touched.add(mr.records_path("fake"))
|
||||
plan = self.c.plan_commits(set())
|
||||
@@ -819,6 +918,37 @@ class Findings(Workspace):
|
||||
self.assertIn("would commit 'chore: add campaign measurements'", out.getvalue())
|
||||
|
||||
|
||||
class ContentFile(Workspace):
|
||||
def test_a_content_list_can_be_named(self) -> None:
|
||||
other = self.tmp / "other.yml"
|
||||
other.write_text(yaml.safe_dump({"systems": {"fake-system": {
|
||||
"romfetch": "fakesys", "content": [{"name": "Other Game (Japan)", "catalog": "redump",
|
||||
"reason": "r"}]}}}), encoding="utf-8")
|
||||
out = io.StringIO()
|
||||
with unittest.mock.patch.object(campaign.Paths, "default", return_value=self.paths), \
|
||||
contextlib.redirect_stdout(out):
|
||||
self.assertEqual(campaign.main(["run", "--dry-run", "--content-file", str(other)]), 0)
|
||||
self.assertIn("Other Game (Japan)", out.getvalue())
|
||||
|
||||
|
||||
class InstallTimer(unittest.TestCase):
|
||||
def test_writes_the_units_and_enables_only_when_asked(self) -> None:
|
||||
calls = []
|
||||
real_run = subprocess.run
|
||||
|
||||
def fake_run(argv: list[str], **kwargs: object) -> subprocess.CompletedProcess:
|
||||
if "install-timers" not in argv:
|
||||
return real_run(argv, **kwargs)
|
||||
calls.append(argv)
|
||||
return subprocess.CompletedProcess(argv, 0)
|
||||
with unittest.mock.patch.object(campaign.subprocess, "run", fake_run):
|
||||
self.assertEqual(campaign.main(["install-timer"]), 0)
|
||||
self.assertEqual(campaign.main(["install-timer", "--enable"]), 0)
|
||||
self.assertEqual([argv[2:] for argv in calls],
|
||||
[["install-timers"], ["install-timers", "--enable"]])
|
||||
self.assertTrue(calls[0][1].endswith("scripts/autorun.py"))
|
||||
|
||||
|
||||
class Registry(unittest.TestCase):
|
||||
def test_no_profile_takes_a_campaign_file_name(self) -> None:
|
||||
stems = {p.stem for p in (REPO_ROOT / "emulators").glob("*.yml")}
|
||||
@@ -942,12 +1072,19 @@ class FakeCorePasses(Workspace):
|
||||
isolations = {rep["isolation"] for r in records for v in r["variants"] for rep in v["repetitions"]}
|
||||
self.assertEqual(isolations, {campaign.core_probe.SANDBOX})
|
||||
kinds = sorted(r["subject"].split("-")[0] for r in records)
|
||||
self.assertEqual(kinds, ["alias", "bench", "boot", "files"])
|
||||
boot = next(r for r in records if r["subject"].startswith("boot"))
|
||||
alias = next(r for r in records if r["subject"].startswith("alias"))
|
||||
self.assertEqual(kinds, ["alias", "files", "negative", "none"])
|
||||
by_kind = {r["subject"].split("-")[0]: r for r in records}
|
||||
self.assertEqual(by_kind["files"]["variants"][0]["verdict"], "boots")
|
||||
self.assertEqual(by_kind["none"]["variants"][0]["verdict_evidence"]["stages"], ["game"])
|
||||
self.assertEqual(by_kind["negative"]["check"]["result"]["verdicts"],
|
||||
{"bios.bin": "boots", "bios.bin-zeros-4": "hang",
|
||||
"bios.bin-head-2-of-bios.bin": "boots"})
|
||||
entry = yaml.safe_load((self.root / "emulators" / "fake.yml").read_text())["files"][0]
|
||||
self.assertEqual(entry["hle_fallback"], True)
|
||||
self.assertEqual(entry["evidence"], {"aliases": [alias["id"]], "hle_fallback": [boot["id"]]})
|
||||
self.assertEqual(entry["validation"], ["size"])
|
||||
self.assertEqual(entry["evidence"], {
|
||||
"aliases": [by_kind["alias"]["id"]], "hle_fallback": [by_kind["none"]["id"]],
|
||||
"validation": [by_kind["none"]["id"], by_kind["negative"]["id"]]})
|
||||
statuses = {(f["field"], f["status"]) for f in mr.read_campaign(self.root, mr.FINDINGS)}
|
||||
self.assertEqual(statuses, {("hle_fallback", "applied"), ("required", "open"),
|
||||
("aliases", "applied")})
|
||||
@@ -966,9 +1103,23 @@ class FakeCorePasses(Workspace):
|
||||
with rebuilt.open("ab") as handle:
|
||||
handle.write(b"\0")
|
||||
third = self.passing("hle", core=rebuilt)
|
||||
# BIOS.BIN is declared now, so no alias run follows the boot test.
|
||||
# BIOS.BIN is declared now, so no alias run follows.
|
||||
self.assertEqual(len(third.run(set(), None).records), 3)
|
||||
|
||||
def test_a_size_check_the_profile_lacks_is_written(self) -> None:
|
||||
profile = self.root / "emulators" / "fake.yml"
|
||||
profile.write_text(PROFILE.replace(" validation: [size]\n", ""), encoding="utf-8")
|
||||
self.passing("hle").run(set(), None)
|
||||
entry = yaml.safe_load(profile.read_text())["files"][0]
|
||||
self.assertEqual(entry["validation"], ["size"])
|
||||
applied = {f["field"] for f in mr.read_campaign(self.root, mr.FINDINGS) if f["status"] == "applied"}
|
||||
self.assertIn("validation", applied)
|
||||
|
||||
def test_bench_runs_only_when_asked(self) -> None:
|
||||
self.passing("plain", bench=True).run(set(), None)
|
||||
subjects = [s.record["subject"] for s in mr.read_records(self.root)]
|
||||
self.assertEqual(sum(s.startswith("bench") for s in subjects), 1)
|
||||
|
||||
def test_no_stand_in_settles_required_and_finds_an_alias(self) -> None:
|
||||
c = self.passing()
|
||||
c.run(set(), None)
|
||||
@@ -987,9 +1138,59 @@ class FakeCorePasses(Workspace):
|
||||
self.assertEqual(left.stdout, b"")
|
||||
checks = c.state["checks"]["fake"]
|
||||
self.assertTrue(checks)
|
||||
self.assertEqual({entry["status"] for entry in checks.values()}, {"failed"})
|
||||
self.assertEqual({entry["reason"] for entry in checks.values()}, {"timeout"})
|
||||
self.assertEqual(mr.read_records(self.root), [])
|
||||
# A run killed after its timeout is a record whose verdict is a hang.
|
||||
self.assertEqual({entry["status"] for entry in checks.values()}, {"done"})
|
||||
records = [s.record for s in mr.read_records(self.root)]
|
||||
self.assertTrue(records)
|
||||
self.assertEqual({v["verdict"] for r in records for v in r["variants"]}, {"hang"})
|
||||
self.assertEqual({rep["verdict_evidence"]["rule"] for r in records for v in r["variants"]
|
||||
for rep in v["repetitions"]}, {"timeout"})
|
||||
|
||||
def test_two_passes_interleave_their_runs(self) -> None:
|
||||
"""Each core_probe takes the host lock for its own run: a pass never
|
||||
holds it between runs, so a second pass runs between them."""
|
||||
import threading
|
||||
import time
|
||||
|
||||
spans: dict[str, list[tuple[float, float]]] = {"a": [], "b": []}
|
||||
other = Workspace(methodName="setUp")
|
||||
other.setUp()
|
||||
self.addCleanup(other.tearDown)
|
||||
passes = []
|
||||
for name, workspace in (("a", self), ("b", other)):
|
||||
c = FakeCorePasses.passing(workspace, "hle") if workspace is self else self.passing_in(workspace)
|
||||
real = c.host.run
|
||||
|
||||
def timed(argv: list[str], *args: object, _name: str = name, _real=real, **kwargs: object):
|
||||
start = time.monotonic()
|
||||
try:
|
||||
return _real(argv, *args, **kwargs)
|
||||
finally:
|
||||
spans[_name].append((start, time.monotonic()))
|
||||
c.host.run = timed
|
||||
passes.append(c)
|
||||
threads = [threading.Thread(target=c.run, args=(set(), None)) for c in passes]
|
||||
for thread in threads:
|
||||
thread.start()
|
||||
for thread in threads:
|
||||
thread.join()
|
||||
ends = {name: sorted(end for _, end in runs) for name, runs in spans.items()}
|
||||
self.assertGreater(len(ends["a"]), 2)
|
||||
self.assertGreater(len(ends["b"]), 2)
|
||||
# Neither pass finished all its runs before the other started finishing its own.
|
||||
self.assertLess(ends["b"][0], ends["a"][-1])
|
||||
self.assertLess(ends["a"][0], ends["b"][-1])
|
||||
|
||||
def passing_in(self, workspace: Workspace) -> campaign.Campaign:
|
||||
workspace.put_game()
|
||||
host = campaign.Host(loadavg=lambda: (0.0, 0.0, 0.0), free_gb=lambda path: 500.0,
|
||||
cpu_count=1_000_000)
|
||||
c = campaign.Campaign(workspace.paths, campaign.Settings(
|
||||
check_repeat=2, probe_timeout=30, delays=(1,), echo=False), host,
|
||||
lock_path=workspace.tmp / "auto.lock")
|
||||
so = self.cores["hle"]
|
||||
c.unit_cores = lambda *a, **k: [campaign.Core("fake", so, campaign.file_sha256(so))]
|
||||
return c
|
||||
|
||||
def test_missing_content_leaves_the_checks_pending(self) -> None:
|
||||
c = self.passing(romfetch=str(self.tmp / "no-romfetch"))
|
||||
|
||||
+285
-1
@@ -9,6 +9,7 @@ from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import contextlib
|
||||
import hashlib
|
||||
import io
|
||||
import json
|
||||
import os
|
||||
@@ -20,6 +21,7 @@ import tempfile
|
||||
import unittest
|
||||
import unittest.mock
|
||||
from pathlib import Path
|
||||
from typing import ClassVar
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parent.parent
|
||||
sys.path.insert(0, str(REPO_ROOT / "scripts"))
|
||||
@@ -42,6 +44,7 @@ FAKE_CORE = r"""
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
struct retro_system_info { const char *n, *v, *e; bool full, block; };
|
||||
struct retro_game_geometry { unsigned bw, bh, mw, mh; float a; };
|
||||
struct retro_system_timing { double fps, rate; };
|
||||
@@ -78,11 +81,15 @@ bool retro_load_game(const void *g) {
|
||||
if (env(27, &cb)) {
|
||||
logger = cb;
|
||||
cb.log(1, "card %s byte %d\n", f ? "present" : "absent", (int)card);
|
||||
cb.log(1, "tag %s\n", tag ? tag : "unset"); }
|
||||
cb.log(1, "tag %s\n", tag ? tag : "unset");
|
||||
if (card == 0xEE) cb.log(3, "BIOS not found: card.bin\n"); }
|
||||
return true; }
|
||||
void retro_unload_game(void) {}
|
||||
void retro_run(void) {
|
||||
int16_t s[4] = {1, 2, 3, 4};
|
||||
const char *end = getenv("CORE_PROBE_TEST_END");
|
||||
if (end && frames == 1 && !strcmp(end, "crash")) { if (logger.log) logger.log(3, "about to fall\n"); raise(SIGSEGV); }
|
||||
if (end && frames == 1 && !strcmp(end, "hang")) for (;;) {}
|
||||
if (frames++ == 0 && logger.log) logger.log(1, "ports %u\n", ports);
|
||||
input(0, 1, 0, 8);
|
||||
for (int i = 0; i < 8; i++) pixels[i] = card;
|
||||
@@ -177,6 +184,187 @@ class ParsingTests(unittest.TestCase):
|
||||
self.assertEqual([p.name for p in core_probe.cue_tracks(cue)], ["a b.bin", "c.bin"])
|
||||
|
||||
|
||||
def frames(*pairs: tuple[int, str]) -> list[list]:
|
||||
return [[frame, digest] for frame, digest in pairs]
|
||||
|
||||
|
||||
class OracleTests(unittest.TestCase):
|
||||
"""judge() turns a repetition into a verdict from positive evidence only."""
|
||||
|
||||
TITLE, LOGO, ERROR, BLACK, OTHER = ("1" * 40, "2" * 40, "3" * 40, "4" * 40, "5" * 40)
|
||||
ORACLE: ClassVar[dict] = {"references": [{"sha1": "2" * 40, "stage": "bios", "shows": "the console logo"},
|
||||
{"sha1": "1" * 40, "stage": "game", "shows": "the title"}],
|
||||
"error_patterns": [r"BIOS not found"],
|
||||
"error_screens": [{"sha1": "3" * 40, "shows": "the core's missing-BIOS message"}]}
|
||||
|
||||
def rep(self, hashes: list, logs: list[str] = (), uniform: list[str] = (), loaded: bool = True,
|
||||
**extra: object) -> dict:
|
||||
return {"loaded": loaded, "library_name": "Fake", "frames": 100, "warmup": 0,
|
||||
"logs": [{"frame": 0, "level": "error", "text": text} for text in logs],
|
||||
"observables": {"frame_hashes": hashes, "uniform_frames": list(uniform)}, **extra}
|
||||
|
||||
def test_a_reference_frame_is_a_boot_with_its_stages(self) -> None:
|
||||
verdict, evidence = core_probe.judge(
|
||||
self.rep(frames((0, self.BLACK), (10, self.LOGO), (20, self.TITLE)),
|
||||
logs=["BIOS not found"]), self.ORACLE)
|
||||
self.assertEqual(verdict, "boots")
|
||||
self.assertEqual((evidence["rule"], evidence["frame"], evidence["stages"]),
|
||||
("reference_frame", 20, ["bios", "game"]))
|
||||
|
||||
def test_a_bios_load_line_stands_for_hidden_bios_screens(self) -> None:
|
||||
oracle = {**self.ORACLE, "bios_patterns": [r"^found US BIOS file"]}
|
||||
verdict, evidence = core_probe.judge(
|
||||
self.rep(frames((0, self.TITLE)), logs=["found US BIOS file, crc32 1: x"]), oracle)
|
||||
self.assertEqual((verdict, evidence["stages"]), ("boots", ["bios", "game"]))
|
||||
self.assertEqual(core_probe.judge(self.rep(frames((0, self.TITLE))), oracle)[1]["stages"], ["game"])
|
||||
|
||||
def test_the_bios_screens_alone_are_not_a_boot(self) -> None:
|
||||
# A console that shows its logo and then refuses the disc never reached the game.
|
||||
verdict, evidence = core_probe.judge(
|
||||
self.rep(frames((0, self.LOGO), (10, self.BLACK), (20, self.BLACK)), uniform=[self.BLACK]),
|
||||
self.ORACLE)
|
||||
self.assertEqual((verdict, evidence["rule"], evidence["stages"]), ("hang", "uniform_tail", ["bios"]))
|
||||
self.assertIn("no screen of the game", evidence["detail"])
|
||||
|
||||
def test_an_error_pattern_or_screen_without_a_reference_is_a_bios_error(self) -> None:
|
||||
verdict, evidence = core_probe.judge(
|
||||
self.rep(frames((0, self.OTHER)), logs=["x", "BIOS not found: scph5501.bin"]), self.ORACLE)
|
||||
self.assertEqual((verdict, evidence["rule"], evidence["log"]),
|
||||
("bios_error", "error_pattern", "BIOS not found: scph5501.bin"))
|
||||
verdict, evidence = core_probe.judge(self.rep(frames((0, self.ERROR))), self.ORACLE)
|
||||
self.assertEqual((verdict, evidence["rule"], evidence["frame"]), ("bios_error", "error_screen", 0))
|
||||
self.assertEqual(core_probe.judge(self.rep([], logs=["BIOS not found"], loaded=False),
|
||||
self.ORACLE)[0], "bios_error")
|
||||
|
||||
def test_process_status_decides_crash_and_hang_first(self) -> None:
|
||||
crashed = self.rep(frames((0, self.TITLE)), exit={"status": -11, "signal": "SIGSEGV"})
|
||||
self.assertEqual(core_probe.judge(crashed, self.ORACLE)[0], "crash")
|
||||
killed = self.rep([], exit={"status": None, "signal": "SIGKILL", "timeout_s": 5})
|
||||
self.assertEqual(core_probe.judge(killed, self.ORACLE), (
|
||||
"hang", {"rule": "timeout", "detail": "killed after 5 s", "exit_status": None,
|
||||
"signal": "SIGKILL"}))
|
||||
|
||||
def test_a_one_colour_second_half_is_a_hang(self) -> None:
|
||||
run = self.rep(frames((0, self.OTHER), (10, self.OTHER), (20, self.BLACK), (30, self.BLACK)),
|
||||
uniform=[self.BLACK])
|
||||
self.assertEqual(core_probe.judge(run, self.ORACLE)[1]["rule"], "uniform_tail")
|
||||
lit = self.rep(frames((0, self.BLACK), (10, self.BLACK), (20, self.OTHER), (30, self.BLACK)),
|
||||
uniform=[self.BLACK])
|
||||
self.assertEqual(core_probe.judge(lit, self.ORACLE)[0], "unknown")
|
||||
|
||||
def test_frames_that_differ_are_never_a_boot(self) -> None:
|
||||
verdict, evidence = core_probe.judge(self.rep(frames((0, self.OTHER), (10, "6" * 40))),
|
||||
self.ORACLE)
|
||||
self.assertEqual((verdict, evidence["rule"]), ("unknown", "no_evidence"))
|
||||
verdict, evidence = core_probe.judge(self.rep(frames((0, self.TITLE))),
|
||||
{**self.ORACLE, "references": []})
|
||||
self.assertEqual(verdict, "unknown")
|
||||
self.assertIn("no reference frame is known", evidence["detail"])
|
||||
self.assertEqual(core_probe.judge(self.rep([], loaded=False), self.ORACLE)[0], "unknown")
|
||||
|
||||
def test_a_variant_needs_every_repetition_to_agree(self) -> None:
|
||||
boot = {"verdict": "boots", "verdict_evidence": {"rule": "reference_frame", "detail": "d",
|
||||
"frame": 3, "stages": ["game"]}}
|
||||
verdict, evidence = core_probe.variant_verdict([boot, boot])
|
||||
self.assertEqual((verdict, evidence["rule"], evidence["stages"]),
|
||||
("boots", "repetitions_agree", ["game"]))
|
||||
hang = {"verdict": "hang", "verdict_evidence": {"rule": "uniform_tail", "detail": "d"}}
|
||||
verdict, evidence = core_probe.variant_verdict([boot, hang])
|
||||
self.assertEqual((verdict, evidence["repetitions"]), ("unknown", ["boots", "hang"]))
|
||||
|
||||
def test_oracle_entries_are_picked_by_content_and_core(self) -> None:
|
||||
data = {"error_patterns": [{"pattern": "shared"}],
|
||||
"cores": {"Fake": {"error_patterns": [{"pattern": "own"}],
|
||||
"error_screens": [{"sha1": self.ERROR, "shows": "s"}]}},
|
||||
"content": [{"name": "disc", "sha1": "a" * 40, "references": {
|
||||
"Fake": {"frames": [{"sha1": self.TITLE, "stage": "game", "shows": "t"}]},
|
||||
"Other": {"frames": [{"sha1": self.LOGO, "stage": "bios", "shows": "l"}]}}}]}
|
||||
picked = core_probe.oracle_for(data, "a" * 40, "Fake")
|
||||
self.assertEqual(picked["references"], [{"sha1": self.TITLE, "stage": "game", "shows": "t"}])
|
||||
self.assertEqual(picked["error_patterns"], ["shared", "own"])
|
||||
self.assertEqual(picked["bios_patterns"], [])
|
||||
self.assertEqual(core_probe.oracle_for(data, "b" * 40, "Fake")["references"], [])
|
||||
self.assertEqual(core_probe.oracle_for(data, "a" * 40, "Nobody")["error_patterns"], ["shared"])
|
||||
|
||||
def test_every_reference_judges_its_own_record_a_boot(self) -> None:
|
||||
"""Each reference block names the run it was taken from: judged
|
||||
again with the oracle as it stands, every repetition of that run
|
||||
boots, so a frame copied wrong or a stage mislabelled fails here."""
|
||||
data, _ = core_probe.load_oracle(core_probe.DEFAULT_ORACLE)
|
||||
records = {s.record["id"]: s.record for s in measurement_records.read_records(REPO_ROOT)}
|
||||
checked = 0
|
||||
for item in data.get("content") or ():
|
||||
for library, block in item["references"].items():
|
||||
record = records.get(block["recorded_from"])
|
||||
self.assertIsNotNone(record, f"{item['name']} on {library}: {block['recorded_from']}")
|
||||
self.assertEqual(record["inputs"]["content"]["sha1"], item["sha1"], item["name"])
|
||||
# A check names the variant that ran the full set, a run has one.
|
||||
label = block.get("variant")
|
||||
chosen = next(v for v in record["variants"] if v["label"] == label) if label \
|
||||
else record["variants"][0]
|
||||
for rep in chosen["repetitions"]:
|
||||
oracle = core_probe.oracle_for(data, item["sha1"], rep["library_name"])
|
||||
verdict, evidence = core_probe.judge(rep, oracle)
|
||||
self.assertEqual(verdict, "boots", f"{item['name']} on {library}: {evidence}")
|
||||
checked += 1
|
||||
self.assertGreaterEqual(checked, 2 * 14)
|
||||
|
||||
def test_the_repository_error_patterns_and_screens(self) -> None:
|
||||
data, _ = core_probe.load_oracle(core_probe.DEFAULT_ORACLE)
|
||||
saturn = core_probe.oracle_for(data, None, "Beetle Saturn")
|
||||
for line in ('Cannot open BIOS file "/system/sega_101.bin".',
|
||||
'BIOS file "/system/sega_101.bin" is of an incorrect size.',
|
||||
'BIOS file "/system/sega_101.bin" could not be fully read (short or failed read).'):
|
||||
rep = {"loaded": False, "logs": [{"frame": 0, "level": "error", "text": line}]}
|
||||
self.assertEqual(core_probe.judge(rep, saturn)[0], "bios_error", line)
|
||||
menu = {"Beetle PSX": "dfbfc299250c0983f86bbf951efd187441306d92",
|
||||
"Beetle PSX HW": "dfbfc299250c0983f86bbf951efd187441306d92",
|
||||
"SwanStation": "167fb7b6527e295b12dca5806a29856f5f31d401",
|
||||
"pcsx2": "46329c633ea7d0b63349261e4aab169e4f44d3f6"}
|
||||
for library, sha1 in menu.items():
|
||||
rep = {"loaded": True, "logs": [], "frames": 100, "warmup": 0,
|
||||
"observables": {"frame_hashes": [[90, sha1]], "uniform_frames": []}}
|
||||
verdict, evidence = core_probe.judge(rep, core_probe.oracle_for(data, None, library))
|
||||
self.assertEqual((verdict, evidence["rule"]), ("bios_error", "error_screen"), library)
|
||||
# The PlayStation cores fall back to a built-in BIOS: nothing they log is an error.
|
||||
for library in ("Beetle PSX", "SwanStation", "PCSX-ReARMed", "PCSX1"):
|
||||
self.assertEqual(core_probe.oracle_for(data, None, library)["error_patterns"], [])
|
||||
|
||||
def test_the_repository_oracle_is_well_formed(self) -> None:
|
||||
import yaml
|
||||
data = yaml.safe_load(core_probe.DEFAULT_ORACLE.read_text(encoding="utf-8"))
|
||||
patterns = list(data.get("error_patterns") or ())
|
||||
for core in (data.get("cores") or {}).values():
|
||||
patterns += (core.get("error_patterns") or []) + (core.get("bios_patterns") or [])
|
||||
for screen in core.get("error_screens") or ():
|
||||
self.assertRegex(screen["sha1"], r"^[0-9a-f]{40}$")
|
||||
for pattern in patterns:
|
||||
self.assertTrue(pattern.get("source_ref") or pattern.get("reason"), pattern)
|
||||
core_probe.re.compile(pattern["pattern"])
|
||||
for item in data.get("content") or ():
|
||||
self.assertRegex(item["sha1"], r"^[0-9a-f]{40}$")
|
||||
for block in item["references"].values():
|
||||
self.assertRegex(block["recorded_from"], r"^\d{4}-\d{2}-\d{2}-[0-9a-f]{12}$")
|
||||
stages = {frame["stage"] for frame in block["frames"]}
|
||||
self.assertIn("game", stages, item["name"])
|
||||
for frame in block["frames"]:
|
||||
self.assertRegex(frame["sha1"], r"^[0-9a-f]{40}$")
|
||||
self.assertIn(frame["stage"], ("bios", "game"))
|
||||
self.assertTrue(frame["shows"])
|
||||
|
||||
def test_made_files(self) -> None:
|
||||
zeros = core_probe.Synthetic.parse("@zeros:16")
|
||||
self.assertEqual((zeros.label("bios.bin"), zeros.source), ("bios.bin-zeros-16", None))
|
||||
head = core_probe.Synthetic.parse("@head:8:/x/scph5501.bin")
|
||||
self.assertEqual(head.label("bios.bin"), "bios.bin-head-8-of-scph5501.bin")
|
||||
for bad in ("@zeros:", "@zeros:8:/x", "@head:8", "@ones:8", "@head:x:/y"):
|
||||
with self.assertRaises(argparse.ArgumentTypeError):
|
||||
core_probe.Synthetic.parse(bad)
|
||||
self.assertEqual(core_probe.exit_description(-11), {"status": -11, "signal": "SIGSEGV"})
|
||||
self.assertEqual(core_probe.exit_description(139), {"status": 139, "signal": "SIGSEGV"})
|
||||
self.assertEqual(core_probe.exit_description(1), {"status": 1, "signal": None})
|
||||
|
||||
|
||||
class ResultTests(unittest.TestCase):
|
||||
@staticmethod
|
||||
def variant(label: str, value: str, loaded: bool = True) -> dict:
|
||||
@@ -290,6 +478,102 @@ class FakeCoreTests(unittest.TestCase):
|
||||
schema = json.loads((REPO_ROOT / "schemas" / "core-probe-record.schema.json").read_text())
|
||||
self.assertEqual(list(Draft202012Validator(schema).iter_errors(line)), [])
|
||||
|
||||
def oracle_file(self) -> Path:
|
||||
title = hashlib.sha1(struct.pack("<8H", *[1] * 8)).hexdigest()
|
||||
content = self.tmp / "game.bin"
|
||||
content.write_bytes(b"game")
|
||||
path = self.tmp / "oracle.yml"
|
||||
path.write_text(
|
||||
"error_patterns:\n - pattern: 'BIOS not found'\n reason: test\n"
|
||||
"cores:\n Fake:\n error_patterns: []\n error_screens: []\n"
|
||||
f"content:\n - name: game\n sha1: {core_probe.file_digest(content)}\n"
|
||||
" references:\n Fake:\n recorded_from: 2026-10-27-000000000000\n"
|
||||
f" frames:\n - sha1: {title}\n stage: game\n"
|
||||
" shows: card one\n", encoding="utf-8")
|
||||
return path
|
||||
|
||||
def test_verdicts_of_a_negative_check(self) -> None:
|
||||
oracle = self.oracle_file()
|
||||
error = self.tmp / "error.bin"
|
||||
error.write_bytes(b"\xee")
|
||||
code, record = self.probe(["check", "--core", str(self.core), "--frames", "4",
|
||||
"--frame-hash-every", "1", "--content", str(self.tmp / "game.bin"),
|
||||
"--oracle", str(oracle), "--vary", "card.bin=",
|
||||
"--vary", f"card.bin={self.cards[0]}", "--vary", f"card.bin={error}",
|
||||
"--vary", "card.bin=@zeros:1",
|
||||
"--vary", f"card.bin=@head:0:{self.cards[0]}",
|
||||
"--observable", "frame_hashes", "--claim", "c", "--method", "m",
|
||||
"--no-trace", "--repeat", "2"])
|
||||
self.assertEqual(code, 0)
|
||||
verdicts = record["check"]["result"]["verdicts"]
|
||||
self.assertEqual(verdicts, {"card.bin-absent": "hang", "card0.bin": "boots",
|
||||
"error.bin": "bios_error", "card.bin-zeros-1": "hang",
|
||||
"card.bin-head-0-of-card0.bin": "hang"})
|
||||
boot = record["variants"][1]
|
||||
self.assertEqual((boot["verdict_evidence"]["rule"], boot["verdict_evidence"]["stages"]),
|
||||
("repetitions_agree", ["game"]))
|
||||
self.assertEqual(boot["repetitions"][0]["verdict_evidence"]["rule"], "reference_frame")
|
||||
self.assertEqual(record["variants"][3]["system_files"],
|
||||
{"card.bin": hashlib.sha1(b"\x00").hexdigest()})
|
||||
self.assertEqual(record["inputs"]["oracle"]["error_patterns"], ["BIOS not found"])
|
||||
self.assertEqual(record["record_version"], 4)
|
||||
self.assert_schema(record)
|
||||
|
||||
def test_a_crash_and_a_hang_are_verdicts(self) -> None:
|
||||
oracle = self.oracle_file()
|
||||
code, record = self.probe(["run", "--core", str(self.core), "--frames", "4",
|
||||
"--frame-hash-every", "1", "--oracle", str(oracle),
|
||||
"--env", "CORE_PROBE_TEST_END=crash"])
|
||||
self.assertEqual(code, 0)
|
||||
crashed = record["variants"][0]
|
||||
self.assertEqual((crashed["verdict"], crashed["repetitions"][0]["exit"]["signal"]),
|
||||
("crash", "SIGSEGV"))
|
||||
self.assertEqual(crashed["repetitions"][0]["logs"][-1]["text"], "about to fall")
|
||||
self.assertEqual(crashed["repetitions"][0]["observables"]["frame_hashes"][0][0], 0)
|
||||
self.assert_schema(record)
|
||||
code, record = self.probe(["run", "--core", str(self.core), "--frames", "4",
|
||||
"--frame-hash-every", "1", "--oracle", str(oracle), "--timeout", "3",
|
||||
"--env", "CORE_PROBE_TEST_END=hang", "--no-trace"])
|
||||
self.assertEqual(code, 0)
|
||||
self.assertEqual((record["variants"][0]["verdict"],
|
||||
record["variants"][0]["repetitions"][0]["verdict_evidence"]["rule"]),
|
||||
("hang", "timeout"))
|
||||
|
||||
def assert_schema(self, record: dict) -> None:
|
||||
try:
|
||||
from jsonschema import Draft202012Validator
|
||||
except ImportError:
|
||||
return
|
||||
schema = json.loads((REPO_ROOT / "schemas" / "core-probe-record.schema.json").read_text())
|
||||
sealed = measurement_records.seal({**record, "emulator": "fake", "subject": "s"})
|
||||
self.assertEqual([e.message for e in Draft202012Validator(schema).iter_errors(sealed)], [])
|
||||
|
||||
def test_a_run_waits_for_the_host_lock_and_frees_it(self) -> None:
|
||||
import fcntl
|
||||
import time
|
||||
|
||||
lock = self.tmp / "host.lock"
|
||||
argv = [sys.executable, str(REPO_ROOT / "scripts" / "core_probe.py"), "run", "--core",
|
||||
str(self.core), "--frames", "1", "--no-trace", "--work-dir", str(self.tmp / "work")]
|
||||
env = {**os.environ, "RETROBIOS_PROBE_LOCK": str(lock)}
|
||||
with lock.open("a") as held:
|
||||
fcntl.flock(held, fcntl.LOCK_EX)
|
||||
waiting = subprocess.Popen(argv, env=env, stdout=subprocess.DEVNULL, stderr=subprocess.PIPE,
|
||||
text=True)
|
||||
time.sleep(1.5)
|
||||
self.assertIsNone(waiting.poll(), "the run went ahead while another held the lock")
|
||||
# A caller that holds the lock for this run says so.
|
||||
held_run = subprocess.run(argv, env={**env, "RETROBIOS_PROBE_LOCK_HELD": "1"},
|
||||
capture_output=True, text=True, timeout=60, check=False)
|
||||
self.assertEqual(held_run.returncode, 0, held_run.stderr)
|
||||
fcntl.flock(held, fcntl.LOCK_UN)
|
||||
_, err = waiting.communicate(timeout=60)
|
||||
self.assertEqual(waiting.returncode, 0, err)
|
||||
self.assertIn("another measurement is running", err)
|
||||
# Released at the end of the run: the lock is free again.
|
||||
with lock.open("a") as again:
|
||||
fcntl.flock(again, fcntl.LOCK_EX | fcntl.LOCK_NB)
|
||||
|
||||
def test_second_run_is_appended_beside_the_first(self) -> None:
|
||||
record_dir = checkout(self.tmp / "appended")
|
||||
argv = ["run", "--core", str(self.core), "--frames", "1", "--no-trace", "--max-load", "1000",
|
||||
|
||||
+185
-23
@@ -43,16 +43,21 @@ def repetition(value: str, frames: int = 3) -> dict:
|
||||
"last_frame_size": [4, 2], "tracing": "strace", "input_queries": 3, "input_pressed": 1,
|
||||
"files_opened": [{"path": "card.bin", "sha1_after": SHA1, "sha1_staged": SHA1}],
|
||||
"files_probed_absent": [],
|
||||
"verdict": "boots",
|
||||
"verdict_evidence": {"rule": "reference_frame", "detail": "reached the title", "frame": 150,
|
||||
"sha1": value, "stages": ["game"]},
|
||||
}
|
||||
|
||||
|
||||
def full_record(emulator: str, subject: str, when: str, kind: str = "check",
|
||||
values: tuple[str, ...] = ("1" * 40, "2" * 40), observable: str = "video_sha1") -> dict:
|
||||
variants = [{"label": f"v{i}", "system_files": {"card.bin": SHA1},
|
||||
"repetitions": [repetition(v), repetition(v)], "flags": []}
|
||||
"repetitions": [repetition(v), repetition(v)], "flags": [], "verdict": "boots",
|
||||
"verdict_evidence": {"rule": "repetitions_agree", "detail": "both boot",
|
||||
"repetitions": ["boots", "boots"]}}
|
||||
for i, v in enumerate(values)]
|
||||
record = {
|
||||
"record_version": mr.RECORD_VERSION, "emulator": emulator, "subject": subject,
|
||||
"record_version": 4, "emulator": emulator, "subject": subject,
|
||||
"supersedes": None, "kind": kind, "recorded_at": when,
|
||||
"core": {"file": "fake_libretro.so", "sha256": SHA256, "repo": "https://example.org/fake",
|
||||
"commit": "c" * 40, "build_command": "make", "compiler": ["GCC 13"],
|
||||
@@ -67,7 +72,10 @@ def full_record(emulator: str, subject: str, when: str, kind: str = "check",
|
||||
"options": {"fake_option": "a"}, "env": {}, "frames": 3, "warmup": 0,
|
||||
"repetitions": 2 if kind == "check" else 5, "presses": [],
|
||||
"observables": ["frame_sha1", "video_sha1", "audio_sha1", "state_sha1", "frame_hashes"],
|
||||
"frame_hash_every": 150, "joypad_ports": 2},
|
||||
"frame_hash_every": 150, "joypad_ports": 2,
|
||||
"oracle": {"file": "tests/campaign/oracle.yml", "sha256": SHA256,
|
||||
"references": [{"sha1": values[0], "stage": "game", "shows": "title"}],
|
||||
"error_patterns": ["BIOS not found"], "error_screens": []}},
|
||||
"variants": variants,
|
||||
"flags": [],
|
||||
}
|
||||
@@ -81,7 +89,8 @@ def full_record(emulator: str, subject: str, when: str, kind: str = "check",
|
||||
"observable": observable, "variable": "card.bin",
|
||||
"result": {"status": "differs" if len(groups) > 1 else "same",
|
||||
"statement": f"{observable} takes {len(groups)} values",
|
||||
"groups": [{"value": json.loads(k), "variants": v} for k, v in groups.items()]},
|
||||
"groups": [{"value": json.loads(k), "variants": v} for k, v in groups.items()],
|
||||
"verdicts": {v["label"]: v["verdict"] for v in variants}},
|
||||
}
|
||||
else:
|
||||
record["variants"] = record["variants"][:1]
|
||||
@@ -211,7 +220,8 @@ class ReadAndIndex(Workspace):
|
||||
keys = {"emulator", "emulator_name", "profiled", "systems", "system_names", "subject", "kind",
|
||||
"claim", "method", "observable", "variable", "status", "statement", "content",
|
||||
"variants", "repetitions", "flags", "date", "host", "core", "frontend_commit", "id",
|
||||
"runs", "record_url", "sqlite"}
|
||||
"runs", "record_url", "sqlite", "verdicts", "title", "host_short", "groups",
|
||||
"proves", "timing", "setup"}
|
||||
for item in index["items"]:
|
||||
self.assertEqual(set(item), keys)
|
||||
alpha = {i["subject"]: i for i in index["items"] if i["emulator"] == "alpha"}
|
||||
@@ -225,6 +235,23 @@ class ReadAndIndex(Workspace):
|
||||
written = json.loads((self.tmp / "public" / sm.INDEX_PATH).read_text())
|
||||
self.assertEqual(written, index)
|
||||
|
||||
def test_a_frame_check_shows_its_verdicts_never_frames_that_differ(self) -> None:
|
||||
record = full_record("alpha", "boot", "2026-10-06T10:00:00+00:00", observable="frame_hashes")
|
||||
record["variants"][1]["verdict"] = "hang"
|
||||
self.assertEqual(sm.result_of(record), ("mixed", "v0: boots. v1: hang"))
|
||||
self.assertEqual([v["verdict"] for v in sm.verdicts_of(record)], ["boots", "hang"])
|
||||
old = {**record, "record_version": 3,
|
||||
"variants": [{k: v for k, v in variant.items() if not k.startswith("verdict")}
|
||||
for variant in record["variants"]]}
|
||||
status, statement = sm.result_of(old)
|
||||
self.assertEqual(status, "no verdict")
|
||||
self.assertNotIn("differ", statement)
|
||||
# A check on another observable keeps its comparison.
|
||||
self.assertEqual(sm.result_of(full_record("alpha", "c", "2026-10-06T10:00:00+00:00"))[0], "differs")
|
||||
groups = sm.variant_groups(record)
|
||||
self.assertEqual([(g["variant"], g["result"], g["group"]) for g in groups],
|
||||
[("v0", "works", 0), ("v1", "hang", 1)])
|
||||
|
||||
def test_links_name_the_last_commit_that_touched_the_records(self) -> None:
|
||||
first = self.repository()
|
||||
(self.tree / "other.txt").write_text("x")
|
||||
@@ -304,6 +331,26 @@ class ReadAndIndex(Workspace):
|
||||
self.assertTrue(any("measurements/beta.jsonl:1" in e and "kind" in e for e in errors), errors)
|
||||
self.assertIsNotNone(Draft202012Validator)
|
||||
|
||||
def test_a_version_4_record_needs_its_verdicts(self) -> None:
|
||||
try:
|
||||
from jsonschema import Draft202012Validator # noqa: F401
|
||||
except ImportError:
|
||||
self.skipTest("jsonschema is not installed")
|
||||
import validate_schemas # noqa: PLC0415
|
||||
|
||||
lines = self.tree / mr.records_path("beta")
|
||||
record = json.loads(lines.read_text())
|
||||
del record["variants"][0]["verdict"]
|
||||
del record["variants"][0]["repetitions"][0]["verdict_evidence"]
|
||||
lines.write_text(mr.line_text(record) + "\n")
|
||||
errors = validate_schemas._measurement_errors(self.tree)
|
||||
self.assertTrue(any("'verdict' is a required property" in e for e in errors), errors)
|
||||
self.assertTrue(any("'verdict_evidence' is a required property" in e for e in errors), errors)
|
||||
old = {**record, "record_version": 3}
|
||||
lines.write_text(mr.line_text(old) + "\n")
|
||||
self.assertFalse(any("required property" in e
|
||||
for e in validate_schemas._measurement_errors(self.tree)))
|
||||
|
||||
|
||||
class AppendOnly(Workspace):
|
||||
def setUp(self) -> None:
|
||||
@@ -383,26 +430,141 @@ class SitePages(unittest.TestCase):
|
||||
self.assertEqual(sm.tested_section("beetle_saturn", []), [])
|
||||
text = "\n".join(sm.tested_section("beetle_saturn", [self.ITEM]))
|
||||
self.assertTrue(text.startswith("## Tested\n"))
|
||||
for expected in ('<span class="rb-badge rb-badge-muted">same</span>',
|
||||
"**Method:** Twice per card. Every input fixed.",
|
||||
"Ran on Test CPU, 12 CPUs, 2026-10-27.", "Played: disc.",
|
||||
self.ITEM["record_url"], "1 flag raised", "2 runs",
|
||||
"../downloads/measurements/beetle_saturn.sqlite", "../wiki/measurements.md",
|
||||
"<image>", '<table class="rb-entries"'):
|
||||
for expected in ("same with every file", "<strong>Method:</strong> Twice per card. Every input fixed.",
|
||||
"<strong>Ran on:</strong> Test CPU, 12 CPUs", self.ITEM["record_url"],
|
||||
"1 flag raised", "2 runs", "downloads/measurements/beetle_saturn.sqlite",
|
||||
"wiki/measurements/", "<image>", "1 test · last run 2026-10-27",
|
||||
'<p class="rb-tested-file"><code>mpeg_card.bin</code></p>',
|
||||
'class="rb-tested-legend"', "No file staged."):
|
||||
self.assertIn(expected, text)
|
||||
self.assertNotIn('<th scope="col">Game</th>', text)
|
||||
self.assertNotIn("confirmed", text)
|
||||
self.assertNotIn(" open", text)
|
||||
|
||||
def test_tested_block_says_shared_context_once(self) -> None:
|
||||
other = {**self.ITEM, "subject": "other", "content": "cart", "status": "inconclusive",
|
||||
"host": "Test CPU, 12 CPUs, load 1.5 before, 1.6 after",
|
||||
"core": {**self.ITEM["core"], "commit": "f" * 40}}
|
||||
text = "\n".join(sm.tested_section("beetle_saturn", [self.ITEM, other]))
|
||||
self.assertEqual(text.count("Test CPU, 12 CPUs"), 1)
|
||||
self.assertIn('<th scope="col">Game</th>', text)
|
||||
self.assertNotIn("Played:", text)
|
||||
self.assertIn(f"Core build: Beetle Saturn v1.32.1 at `{'f' * 12}`.", text)
|
||||
self.assertIn("Load 1.5 before, 1.6 after.", text)
|
||||
self.assertIn('<span class="rb-badge rb-badge-warning">inconclusive</span>', text)
|
||||
def item(self, **values: object) -> dict:
|
||||
return {**self.ITEM, "host_short": "Test CPU, Linux", **values}
|
||||
|
||||
def test_summary_counts(self) -> None:
|
||||
items = [self.item(proves=["hle_fallback of a.bin"], open_findings=2),
|
||||
self.item(id="b", subject="b", date="2026-10-28T00:00:00+00:00", open_findings=2),
|
||||
self.item(id="c", kind="bench", status="measured", subject="c",
|
||||
timing={"ms_per_frame": 1.5, "fps": 660.0, "stdev": 0.01})]
|
||||
self.assertEqual(sm.tested_counts(items), {"tests": 3, "confirmed": 1, "open": 2, "benchmarks": 1,
|
||||
"last": "2026-10-28"})
|
||||
text = "\n".join(sm.tested_section("beetle_saturn", items))
|
||||
self.assertIn("3 tests · 1 confirmed · 2 open · last run 2026-10-28 on Test CPU, Linux.", text)
|
||||
self.assertIn("<td>1.500</td><td>660.0</td>", text)
|
||||
|
||||
def test_short_titles(self) -> None:
|
||||
cases = [
|
||||
({"subject": "mpeg-card-lunar-cr2-build", "variable": "mpeg_card.bin",
|
||||
"content": "Redump: Lunar - Silver Star Story Complete (Japan), T-27904G V1.00"},
|
||||
"mpeg_card.bin, Lunar (CR2 build)"),
|
||||
({"subject": "negative-scph5501-bin-mednafen-psx-bust-a-move-2-arcade-edition-usa",
|
||||
"variable": "scph5501.bin", "content": "Bust-A-Move 2 - Arcade Edition (USA)",
|
||||
"core": {"file": "mednafen_psx_libretro.so"}},
|
||||
"scph5501.bin, Bust-A-Move 2 (wrong files)"),
|
||||
({"subject": "issue85-lunar-opening-movie", "variable": None,
|
||||
"content": "Redump: Lunar - Silver Star Story Complete (Japan), T-27904G V1.00"},
|
||||
"Lunar (issue 85 opening movie)"),
|
||||
({"subject": "with-command-auth-device-and-command-get-9a211715", "variable": "mpeg_card.bin",
|
||||
"content": "Redump: Lunar"},
|
||||
"mpeg_card.bin, Lunar (with command auth device and get)"),
|
||||
]
|
||||
for item, title in cases:
|
||||
self.assertEqual(sm.short_title(item), title)
|
||||
self.assertEqual(sm.short_host({"cpu_model": "13th Gen Intel(R) Core(TM) i9-13900K",
|
||||
"os": "Linux-6.18.54.1-microsoft-standard-WSL2-x86_64"}),
|
||||
"Intel Core i9-13900K, Linux (WSL2)")
|
||||
|
||||
def test_rows_of_one_file_never_read_alike(self) -> None:
|
||||
def item(rid: str, build: str, files: int, observable: str, clock: bool = True) -> dict:
|
||||
record = {"core": {"build_command": build}, "subject": "mpeg-card-lunar", "kind": "check",
|
||||
"check": {"observable": observable}, "variants": [{}] * files,
|
||||
"inputs": {"options": {"beetle_saturn_mpeg_card": "enabled"},
|
||||
"env": {"FAKETIME": "x"} if clock else {}}}
|
||||
return self.item(id=rid, content="Redump: Lunar - Silver Star Story", setup=sm.setup_of(record))
|
||||
items = [item("a", "make -j8", 11, "video_sha1"),
|
||||
item("b", "make -j8 after editing cdb.c", 11, "video_sha1"),
|
||||
item("c", "make -j10, with the CR2 patch to cdb.c", 3, "state:MPEG.AuthState"),
|
||||
item("d", "make -j8", 11, "video_sha1", clock=False)]
|
||||
titles = sm.distinct_titles(items)
|
||||
self.assertEqual(titles, {
|
||||
"a": "Lunar",
|
||||
"b": "Lunar, patched build",
|
||||
"c": "Lunar, CR2 patch, 3 files, MPEG.AuthState",
|
||||
"d": "Lunar, running clock"})
|
||||
self.assertEqual(len(set(titles.values())), len(items))
|
||||
self.assertNotIn("...", " ".join(titles.values()))
|
||||
# Alone in its file, a test is named by its game.
|
||||
self.assertEqual(sm.distinct_titles(items[:1]), {"a": "Lunar"})
|
||||
|
||||
def test_run_output_is_text_never_markup(self) -> None:
|
||||
nasty = "`code` {expr} <script>alert(1)</script> [x](javascript:alert(1)) \"q\" 'q' **b**"
|
||||
item = self.item(
|
||||
claim=nasty, method=nasty, statement=nasty, host=nasty, host_short=nasty, content=nasty,
|
||||
variable=f"{nasty}.bin", subject="s", title=nasty, proves=[nasty], runs=2, flags=1,
|
||||
core={"library": nasty, "commit": "{`<x>`}", "file": f"{nasty}_libretro.so"},
|
||||
groups=[{"variant": nasty, "group": 0, "result": nasty, "absent": False}],
|
||||
record_url="javascript:alert(1)")
|
||||
bench = self.item(id="b", kind="bench", status="measured", subject="bench", title=nasty,
|
||||
content=nasty, record_url="java\nscript:x",
|
||||
timing={"ms_per_frame": 1.0, "fps": 1.0, "stdev": 0.0})
|
||||
earlier = self.item(id="e", status="no verdict", subject="e", content=nasty, claim=nasty)
|
||||
text = "\n".join(sm.tested_section("alpha", [item, bench, earlier]))
|
||||
self.assertNotIn("<script", text)
|
||||
self.assertNotRegex(text, r'href="(?!https?://|/)')
|
||||
self.assertNotIn("javascript:alert(1)\"", text)
|
||||
self.assertNotRegex(text, r"[{}]")
|
||||
self.assertNotIn("<strong>b</strong>", text)
|
||||
self.assertNotIn("<code>code</code>", text)
|
||||
self.assertNotRegex(text, r'="[^"]*"q"')
|
||||
self.assertIn("<script>", text)
|
||||
self.assertIn("{expr}", text)
|
||||
|
||||
def test_no_empty_sentence(self) -> None:
|
||||
text = "\n".join(sm.tested_section("beetle_saturn", [self.item(claim=None, method=None, statement="",
|
||||
kind="run", status="ran")]))
|
||||
self.assertNotRegex(text, r"</strong>\s*\.|:\s*\.\s|`ran`\. \.")
|
||||
self.assertNotIn("Claim:", text)
|
||||
self.assertNotIn("Method:", text)
|
||||
|
||||
def test_dots_follow_the_result_groups(self) -> None:
|
||||
record = full_record("alpha", "boot", "2026-10-06T10:00:00+00:00", values=("1" * 40, "2" * 40, "1" * 40))
|
||||
record["check"]["variable"] = "card.bin"
|
||||
record["variants"][2]["system_files"] = {"card.bin": None}
|
||||
groups = sm.variant_groups(record)
|
||||
self.assertEqual([g["group"] for g in groups],
|
||||
[i for i, group in enumerate(record["check"]["result"]["groups"])
|
||||
for _ in group["variants"]][:1] + [1, 0])
|
||||
self.assertEqual([g["absent"] for g in groups], [False, False, True])
|
||||
text = "\n".join(sm.tested_section("alpha", [self.item(groups=groups)]))
|
||||
strip = text.split('class="rb-dots"', 1)[1].split("</span></span>", 1)[0]
|
||||
self.assertEqual(re.findall(r'rb-dot rb-dot-(\d)( rb-dot-empty)?"', strip),
|
||||
[("0", ""), ("1", ""), ("0", " rb-dot-empty")])
|
||||
self.assertIn('aria-label="3 variants. v0: result A. v1: result B. v2: result A"', text)
|
||||
|
||||
def test_the_details_hold_the_method_and_the_host(self) -> None:
|
||||
text = "\n".join(sm.tested_section("beetle_saturn", [self.item(runs=1)]))
|
||||
details = text.split('<div class="rb-tested-more">', 1)[1].split("</div>", 1)[0]
|
||||
self.assertIn("Twice per card", details)
|
||||
self.assertIn("<strong>Ran on:</strong> Test CPU, Linux.", details)
|
||||
self.assertIn(f'<a href="{self.ITEM["record_url"]}">Full record</a>.', details)
|
||||
self.assertNotIn("1 run", details)
|
||||
|
||||
def test_the_beetle_saturn_block_stays_short(self) -> None:
|
||||
stored = mr.read_records(REPO_ROOT)
|
||||
profiles = sm.load_profiles(REPO_ROOT / "emulators")
|
||||
index = sm.build_index(stored, {"repo": REPO_URL, "commit": COMMIT}, profiles)
|
||||
items = sm.by_emulator(index).get("beetle_saturn")
|
||||
if not items:
|
||||
self.skipTest("no beetle_saturn record")
|
||||
block = "\n".join(sm.tested_section("beetle_saturn", items))
|
||||
# What a reader sees before opening anything: the closed details hide their body.
|
||||
shown = re.sub(r'<div class="rb-tested-more">.*?</div>', " ", block, flags=re.S)
|
||||
shown = re.sub(r'<details class="rb-tested-earlier">.*?</details>\s*</details>', " ", shown,
|
||||
flags=re.S)
|
||||
shown = re.sub(r"<[^>]+>", " ", shown)
|
||||
self.assertLess(len(re.findall(r"[A-Za-z0-9][\w.'-]*", shown)), 120, shown)
|
||||
|
||||
def test_hosts_table_on_the_method_page(self) -> None:
|
||||
page = sm.with_hosts(f"x\n\n{sm.HOSTS_MARKER}\n",
|
||||
|
||||
@@ -0,0 +1,288 @@
|
||||
"""region_check: the variants a region game runs under and what their
|
||||
records settle."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
sys.path.insert(0, str(ROOT / "scripts"))
|
||||
|
||||
import region_check as rc # noqa: E402
|
||||
|
||||
PROFILE = {
|
||||
"systems": ["sony-playstation"],
|
||||
"files": [
|
||||
{"name": "scph5500.bin", "region": ["japan"]},
|
||||
{"name": "scph5501.bin", "region": ["north-america", "latin-america"]},
|
||||
{"name": "scph5502.bin", "region": ["europe", "oceania"]},
|
||||
{"name": "openbios.bin"},
|
||||
{"name": "ps1_rom.bin", "region": ["world"]},
|
||||
{"name": "standalone.bin", "region": ["japan"], "mode": "standalone"},
|
||||
{"name": "other.bin", "region": ["japan"], "system": "sony-playstation-2"},
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def record(rid: str, staged: list[str], opened: list[str], hashes: list, verdict: str = "unknown",
|
||||
loaded: bool = True) -> dict:
|
||||
return {"id": rid, "variants": [{
|
||||
"label": "default", "verdict": verdict, "system_files": {name: "0" * 40 for name in staged},
|
||||
"repetitions": [{"loaded": loaded, "files_opened": [{"path": p} for p in opened],
|
||||
"observables": {"frame_hashes": hashes}}]}]}
|
||||
|
||||
|
||||
class Entries(unittest.TestCase):
|
||||
def test_only_regional_bios_of_the_system_in_the_libretro_build(self) -> None:
|
||||
names = [e["name"] for e in rc.region_entries(PROFILE, "sony-playstation")]
|
||||
self.assertEqual(names, ["scph5500.bin", "scph5501.bin", "scph5502.bin"])
|
||||
|
||||
def test_variants_split_by_the_game_region(self) -> None:
|
||||
entries = rc.region_entries(PROFILE, "sony-playstation")
|
||||
plan = rc.plan_variants(entries, "japan", lambda e: Path("/bios") / e["name"])
|
||||
self.assertEqual(sorted(plan["full"]), ["scph5500.bin", "scph5501.bin", "scph5502.bin"])
|
||||
self.assertEqual(sorted(plan["own"]), ["scph5500.bin"])
|
||||
self.assertEqual(sorted(plan["others"]), ["scph5501.bin", "scph5502.bin"])
|
||||
|
||||
def test_a_file_the_collection_lacks_is_in_no_variant(self) -> None:
|
||||
entries = rc.region_entries(PROFILE, "sony-playstation")
|
||||
plan = rc.plan_variants(entries, "europe",
|
||||
lambda e: None if e["name"] == "scph5502.bin" else Path(e["name"]))
|
||||
self.assertEqual(plan["own"], {})
|
||||
self.assertNotIn("scph5502.bin", plan["full"])
|
||||
|
||||
def test_subject_names_core_game_and_variant(self) -> None:
|
||||
slug = rc.subject("mednafen_psx", "Puzzle Bobble 2 (Japan)", "own")
|
||||
self.assertEqual(slug, "region-mednafen_psx-puzzle-bobble-2-japan-own")
|
||||
self.assertRegex(slug, rc.SUBJECT)
|
||||
|
||||
|
||||
class BusyHost(unittest.TestCase):
|
||||
def _run(self, codes: list[int], max_wait: float) -> tuple[int, int]:
|
||||
import subprocess
|
||||
|
||||
now = [0.0]
|
||||
calls = []
|
||||
|
||||
def runner(argv, **_kwargs):
|
||||
calls.append(argv)
|
||||
return subprocess.CompletedProcess(argv, codes[min(len(calls), len(codes)) - 1], "", "")
|
||||
|
||||
def pause(seconds: float) -> None:
|
||||
now[0] += seconds
|
||||
|
||||
proc = rc.probe_when_idle(["probe"], max_wait, clock=lambda: now[0], pause=pause, runner=runner)
|
||||
return proc.returncode, len(calls)
|
||||
|
||||
def test_a_refused_run_is_tried_again_once_the_host_settles(self) -> None:
|
||||
self.assertEqual(self._run([rc.BUSY, rc.BUSY, 0], 600), (0, 3))
|
||||
|
||||
def test_it_gives_up_after_the_wait(self) -> None:
|
||||
code, calls = self._run([rc.BUSY], 60)
|
||||
self.assertEqual(code, rc.BUSY)
|
||||
self.assertEqual(calls, 60 // rc.POLL_S + 1)
|
||||
|
||||
def test_another_failure_is_not_retried(self) -> None:
|
||||
self.assertEqual(self._run([1, 0], 600), (1, 1))
|
||||
|
||||
|
||||
class Outcome(unittest.TestCase):
|
||||
ENTRIES = rc.region_entries(PROFILE, "sony-playstation")
|
||||
ALL = ["scph5500.bin", "scph5501.bin", "scph5502.bin"]
|
||||
|
||||
def test_locked_bios_by_verdict(self) -> None:
|
||||
records = {
|
||||
"full": record("f", self.ALL, ["scph5500.bin"], [[0, "a"]], "boots"),
|
||||
"own": record("o", ["scph5500.bin"], ["scph5500.bin"], [[0, "a"]], "boots"),
|
||||
"others": record("x", self.ALL[1:], [], [[0, "b"]], "bios_error", loaded=False),
|
||||
"pack": record("p", ["scph5500.bin"], ["scph5500.bin"], [[0, "a"]], "boots"),
|
||||
}
|
||||
result = rc.outcome(records, self.ENTRIES, "japan")
|
||||
self.assertEqual(result["selected"], ["scph5500.bin"])
|
||||
self.assertEqual(result["claim"], "confirmed")
|
||||
self.assertEqual((result["own_boots"], result["others_boot"], result["pack_boots"]),
|
||||
(True, False, True))
|
||||
self.assertEqual(result["judged_by"], "verdict")
|
||||
self.assertEqual(rc.sentence("japan", result),
|
||||
"The Japanese BIOS boots the Japanese game, the other regions' BIOS do not.")
|
||||
|
||||
def test_interim_rule_counts_the_same_frames_as_a_boot_and_nothing_else(self) -> None:
|
||||
records = {
|
||||
"full": record("f", self.ALL, ["scph5501.bin"], [[0, "a"], [10, "b"]]),
|
||||
"own": record("o", ["scph5501.bin"], ["scph5501.bin"], [[0, "a"], [10, "b"]]),
|
||||
"others": record("x", ["scph5500.bin", "scph5502.bin"], ["scph5500.bin"], [[0, "a"], [10, "c"]]),
|
||||
}
|
||||
result = rc.outcome(records, self.ENTRIES, "north-america")
|
||||
self.assertEqual(result["judged_by"], "full_run_frames")
|
||||
self.assertTrue(result["own_boots"])
|
||||
# Other frames are no verdict: a US disc reaches its game on the
|
||||
# Japanese BIOS through another licence screen.
|
||||
self.assertIsNone(result["others_boot"])
|
||||
self.assertIsNone(result["pack_boots"])
|
||||
self.assertEqual(rc.sentence("north-america", result),
|
||||
"The US BIOS boots the US game. The other regions' BIOS have no verdict yet.")
|
||||
|
||||
def test_no_interim_answer_when_the_full_run_fails(self) -> None:
|
||||
records = {"full": record("f", self.ALL, [], [[0, "a"]], "bios_error"),
|
||||
"own": record("o", ["scph5502.bin"], [], [[0, "a"]])}
|
||||
result = rc.outcome(records, self.ENTRIES, "europe")
|
||||
self.assertIsNone(result["own_boots"])
|
||||
self.assertEqual(result["claim"], "unread")
|
||||
|
||||
def test_a_core_reading_another_region_contradicts_the_claim(self) -> None:
|
||||
records = {"full": record("f", self.ALL, ["scph5501.bin"], [[0, "a"]], "boots")}
|
||||
self.assertEqual(rc.outcome(records, self.ENTRIES, "japan")["claim"], "contradicted")
|
||||
|
||||
def test_a_core_opening_every_region_file_settles_nothing(self) -> None:
|
||||
"""PCSX-ReARMed opens the three regional files whatever the disc."""
|
||||
records = {"full": record("f", self.ALL, self.ALL, [[0, "a"]], "boots")}
|
||||
self.assertEqual(rc.outcome(records, self.ENTRIES, "japan")["claim"], "ambiguous")
|
||||
|
||||
def test_region_free_bios(self) -> None:
|
||||
records = {"full": record("f", self.ALL, ["scph5501.bin"], [[0, "a"]], "boots"),
|
||||
"own": record("o", ["scph5502.bin"], [], [[0, "a"]], "boots"),
|
||||
"others": record("x", ["scph5501.bin"], ["scph5501.bin"], [[0, "a"]], "boots")}
|
||||
result = rc.outcome(records, self.ENTRIES, "europe")
|
||||
self.assertEqual(rc.sentence("europe", result),
|
||||
"The European BIOS boots the European game, and so do the other regions' BIOS.")
|
||||
|
||||
def test_no_own_run(self) -> None:
|
||||
self.assertEqual(rc.sentence("japan", rc.outcome({}, self.ENTRIES, "japan")),
|
||||
"The Japanese game has no run with its own BIOS yet.")
|
||||
|
||||
|
||||
class ContentList(unittest.TestCase):
|
||||
def test_every_region_system_has_a_game_per_region_or_says_why(self) -> None:
|
||||
"""A system whose BIOS a profile ties to JP, US and EU has a game for
|
||||
each of the three, or the content list says why it has none."""
|
||||
from common import load_emulator_profiles
|
||||
|
||||
import yaml
|
||||
|
||||
data = yaml.safe_load(rc.CONTENT_FILE.read_text(encoding="utf-8"))
|
||||
content = rc.load_content()
|
||||
uncovered = data.get("uncovered") or {}
|
||||
profiles = load_emulator_profiles(str(ROOT / "emulators"))
|
||||
regional: set[str] = set()
|
||||
for profile in profiles.values():
|
||||
for system in profile.get("systems") or ():
|
||||
regions = {r for e in rc.region_entries(profile, system) for r in rc.regions_of(e)}
|
||||
if {"japan", "north-america", "europe"} <= regions:
|
||||
regional.add(system)
|
||||
for system in sorted(regional):
|
||||
if system in uncovered:
|
||||
continue
|
||||
held = {item.get("region") for item in content.get(system, [])}
|
||||
missing = {"japan", "north-america", "europe"} - held
|
||||
# One cartridge sold in two territories counts for both.
|
||||
missing -= {r for item in content.get(system, []) for r in item.get("also_regions") or ()}
|
||||
self.assertFalse(missing, f"{system}: no game for {sorted(missing)}")
|
||||
|
||||
|
||||
class RequiredFromTheRegionRuns(unittest.TestCase):
|
||||
def test_beetle_psx_boots_each_region_without_its_bios(self) -> None:
|
||||
"""libretro.c maps its built-in OpenBIOS when the region's file is
|
||||
absent: the evidence of required: false is a record where the file
|
||||
was not staged and the oracle judged the run a boot."""
|
||||
import json
|
||||
|
||||
import yaml
|
||||
|
||||
profile = yaml.safe_load((ROOT / "emulators" / "beetle_psx.yml").read_text(encoding="utf-8"))
|
||||
records = {}
|
||||
for line in (ROOT / "measurements" / "beetle_psx.jsonl").read_text(encoding="utf-8").splitlines():
|
||||
record = json.loads(line)
|
||||
records[record["id"]] = record
|
||||
regional = [e for e in profile["files"] if e["name"] in ("scph5500.bin", "scph5501.bin", "scph5502.bin")]
|
||||
self.assertEqual(len(regional), 3)
|
||||
for entry in regional:
|
||||
with self.subTest(entry=entry["name"]):
|
||||
self.assertIs(entry["required"], False)
|
||||
self.assertIn("3425-3511", entry["source_ref"])
|
||||
ids = entry["evidence"]["required"]
|
||||
self.assertTrue(ids)
|
||||
for rid in ids:
|
||||
record = records[rid]
|
||||
self.assertEqual(record["record_version"], 4)
|
||||
variant = record["variants"][0]
|
||||
self.assertNotIn(entry["name"], variant["system_files"])
|
||||
self.assertEqual(variant["verdict"], "boots")
|
||||
self.assertIn("game", variant["verdict_evidence"].get("stages", []))
|
||||
|
||||
|
||||
class SitePages(unittest.TestCase):
|
||||
def test_region_section_links_every_record(self) -> None:
|
||||
import sitemeasurements as sm
|
||||
|
||||
records = {"full": record("f", Outcome.ALL, ["scph5500.bin"], [[0, "a"]], "boots"),
|
||||
"own": record("o", ["scph5500.bin"], ["scph5500.bin"], [[0, "a"]], "boots"),
|
||||
"others": record("x", Outcome.ALL[1:], [], [[0, "b"]], "bios_error")}
|
||||
result = rc.outcome(records, Outcome.ENTRIES, "japan")
|
||||
result.update(core="mednafen_psx", game="Puzzle Bobble 2 (Japan)",
|
||||
sentence=rc.sentence("japan", result))
|
||||
for label, item in result["variants"].items():
|
||||
item["url"] = f"https://example.org/{label}"
|
||||
text = "\n".join(sm.region_section([result]))
|
||||
self.assertIn("- **mednafen_psx**: Each region's game boots on its own BIOS only.", text)
|
||||
self.assertIn("The Japanese BIOS boots the Japanese game, the other regions' BIOS do not.", text)
|
||||
# The per-game lines and their records wait in a closed fold.
|
||||
self.assertIn('<details class="rb-region-runs">', text)
|
||||
self.assertIn('<a href="https://example.org/own">its own region's BIOS only</a>', text)
|
||||
self.assertIn("<code>scph5500.bin</code>", text)
|
||||
self.assertNotIn("reference frames are recorded", text)
|
||||
self.assertEqual(sm.region_section([]), [])
|
||||
|
||||
def test_the_emulator_page_folds_region_runs_into_one_line(self) -> None:
|
||||
import measurement_records as mr
|
||||
import sitemeasurements as sm
|
||||
|
||||
stored = mr.read_records(ROOT)
|
||||
index = sm.build_index(stored, {"repo": sm.REPO, "commit": "0" * 40}, sm.load_profiles(ROOT / "emulators"))
|
||||
items = sm.by_emulator(index).get("beetle_psx") or []
|
||||
regional = [i for i in items if sm.REGION_SUBJECT.match(i["subject"])]
|
||||
if not regional:
|
||||
self.skipTest("no region record")
|
||||
text = "\n".join(sm.tested_section("beetle_psx", items))
|
||||
self.assertIn(f"Region check: {len(regional)} runs of 3 games, read on the system page.", text)
|
||||
for item in regional:
|
||||
self.assertNotIn(item["record_url"], text)
|
||||
|
||||
def test_coverage_names_tested_and_uncovered_systems(self) -> None:
|
||||
import sitemeasurements as sm
|
||||
|
||||
cov = {"systems": [{"system": "sony-playstation", "tested": True, "games": [
|
||||
{"name": "A (USA)", "region": "north-america", "emulators": ["beetle_psx"]}]},
|
||||
{"system": "sega-32x", "tested": False, "games": [
|
||||
{"name": "B (World)", "region": None, "emulators": []}]}],
|
||||
"uncovered": [{"system": "msx", "want": "Gradius", "reason": "No MSX catalog.",
|
||||
"romfetch": {"exit": 1, "code": "unknown_system"}}]}
|
||||
text = "\n".join(sm.coverage_section(cov, {"sony-playstation": "PlayStation"}))
|
||||
self.assertIn("1 of 2 listed systems have a recorded run, and 1 system has no test game", text)
|
||||
self.assertIn("| PlayStation | A (USA) | beetle_psx |", text)
|
||||
self.assertIn("| sega-32x | B (World) | not yet: no run recorded |", text)
|
||||
self.assertIn("exit 1, <code>unknown_system</code>", text)
|
||||
|
||||
def test_one_catalog_name_on_two_systems_counts_only_where_it_ran(self) -> None:
|
||||
import measurement_records as mr
|
||||
import sitemeasurements as sm
|
||||
|
||||
label = "Bust-A-Move 2 - Arcade Edition (USA)"
|
||||
stored = [mr.Stored("beetle_psx", 1, {"inputs": {"content": {"label": label}}})]
|
||||
cov = sm.coverage(ROOT, stored, {"beetle_psx": {"systems": ["sony-playstation"]}})
|
||||
by_system = {item["system"]: item for item in cov["systems"]}
|
||||
self.assertTrue(by_system["sony-playstation"]["tested"])
|
||||
self.assertFalse(by_system["sega-saturn"]["tested"])
|
||||
|
||||
def test_coverage_reads_the_real_content_list(self) -> None:
|
||||
import sitemeasurements as sm
|
||||
|
||||
cov = sm.coverage(ROOT, [])
|
||||
systems = {item["system"] for item in cov["systems"]}
|
||||
self.assertIn("sony-playstation", systems)
|
||||
self.assertTrue(all(item["romfetch"].get("exit") for item in cov["uncovered"]))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
@@ -0,0 +1,201 @@
|
||||
"""standalone_probe: the platform's asset choice, the AppImage offset, the
|
||||
framebuffer reader, the settings it writes and the oracle it judges with."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import struct
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
sys.path.insert(0, str(ROOT / "scripts"))
|
||||
|
||||
import core_probe as cp # noqa: E402
|
||||
import standalone_probe as sp # noqa: E402
|
||||
|
||||
|
||||
def xwd(width: int, height: int, pixels: bytes, ncolors: int = 0, pad: int = 0) -> bytes:
|
||||
"""An XWD file as Xvfb keeps its screen: version 7, 32 bpp, LSB first."""
|
||||
name = b"Xvfb main window\0"
|
||||
header_size = 100 + len(name)
|
||||
bytes_per_line = width * 4 + pad
|
||||
fields = [header_size, 7, 2, 24, width, height, 0, 0, 32, 0, 32, 32, bytes_per_line, 4,
|
||||
0xFF0000, 0xFF00, 0xFF, 8, 256, ncolors, ncolors, width, height, 0, 0]
|
||||
rows = b"".join(pixels[y * width * 4:(y + 1) * width * 4] + b"\0" * pad for y in range(height))
|
||||
return struct.pack(">25I", *fields) + name + b"\0" * (12 * ncolors) + rows
|
||||
|
||||
|
||||
class AssetChoice(unittest.TestCase):
|
||||
RELEASES = [
|
||||
{"tag_name": "preview", "prerelease": True, "assets": [
|
||||
{"name": "DuckStation-x64-SSE2.AppImage", "browser_download_url": "u1"},
|
||||
{"name": "DuckStation-x64.AppImage", "browser_download_url": "u2"}]},
|
||||
{"tag_name": "latest", "prerelease": False, "assets": [
|
||||
{"name": "DuckStation-x64.AppImage", "browser_download_url": "u3"}]},
|
||||
]
|
||||
|
||||
def test_first_match_in_api_order_like_getreleaseurlgh(self) -> None:
|
||||
asset = sp.select_asset(self.RELEASES, "AppImage", "x64.")
|
||||
self.assertEqual((asset["tag"], asset["name"], asset["url"]),
|
||||
("preview", "DuckStation-x64.AppImage", "u2"))
|
||||
self.assertTrue(asset["prerelease"])
|
||||
|
||||
def test_no_match(self) -> None:
|
||||
self.assertIsNone(sp.select_asset(self.RELEASES, "Qt.AppImage", ""))
|
||||
|
||||
def test_every_emulator_names_its_installer_and_profile(self) -> None:
|
||||
profiles = {p.stem for p in (ROOT / "emulators").glob("*.yml")}
|
||||
for name, emu in sp.EMULATORS.items():
|
||||
self.assertEqual(name, emu.name)
|
||||
self.assertIn(name, profiles)
|
||||
self.assertIn("EmuDeck", emu.installer_ref)
|
||||
self.assertTrue(emu.error_patterns)
|
||||
|
||||
|
||||
class AppImage(unittest.TestCase):
|
||||
def test_offset_is_the_end_of_the_section_headers(self) -> None:
|
||||
head = bytearray(64)
|
||||
head[:5] = b"\x7fELF\x02"
|
||||
struct.pack_into("<Q", head, 0x28, 1000)
|
||||
struct.pack_into("<HH", head, 0x3A, 64, 30)
|
||||
self.assertEqual(sp.appimage_offset(bytes(head)), 1000 + 64 * 30)
|
||||
|
||||
def test_not_elf(self) -> None:
|
||||
with self.assertRaises(cp.ProbeError):
|
||||
sp.appimage_offset(b"hsqs" + bytes(60))
|
||||
|
||||
|
||||
class Framebuffer(unittest.TestCase):
|
||||
def test_reads_rgb_and_skips_colormap_and_padding(self) -> None:
|
||||
# Two pixels, BGRX: red then blue.
|
||||
pixels = bytes((0, 0, 255, 0, 255, 0, 0, 0))
|
||||
width, height, rgb = sp.parse_xwd(xwd(2, 1, pixels, ncolors=3, pad=8))
|
||||
self.assertEqual((width, height), (2, 1))
|
||||
self.assertEqual(rgb, bytes((255, 0, 0, 0, 0, 255)))
|
||||
|
||||
def test_refuses_other_layouts(self) -> None:
|
||||
data = bytearray(xwd(1, 1, bytes(4)))
|
||||
struct.pack_into(">I", data, 44, 16)
|
||||
with self.assertRaises(cp.ProbeError):
|
||||
sp.parse_xwd(bytes(data))
|
||||
|
||||
def test_truncated(self) -> None:
|
||||
with self.assertRaises(cp.ProbeError):
|
||||
sp.parse_xwd(xwd(4, 4, bytes(64))[:-10])
|
||||
|
||||
|
||||
class Settings(unittest.TestCase):
|
||||
def test_bios_folder_and_overrides(self) -> None:
|
||||
emu = sp.EMULATORS["duckstation"]
|
||||
sections = sp.emulator_settings(emu, Path("/b"), [("GPU.Renderer", "Vulkan"), ("New.Key", "1")])
|
||||
self.assertEqual(sections["BIOS"]["SearchDirectory"], "/b")
|
||||
self.assertEqual(sections["GPU"]["Renderer"], "Vulkan")
|
||||
self.assertEqual(sections["New"]["Key"], "1")
|
||||
self.assertEqual(emu.settings["GPU"]["Renderer"], "Software")
|
||||
text = sp.ini_text(sections)
|
||||
self.assertIn("[BIOS]\nSearchDirectory = /b\n", text)
|
||||
|
||||
def test_override_needs_a_section(self) -> None:
|
||||
with self.assertRaises(cp.ProbeError):
|
||||
sp.emulator_settings(sp.EMULATORS["pcsx2"], Path("/b"), [("Renderer", "13")])
|
||||
|
||||
def test_display_wrapper_passes_the_command_through(self) -> None:
|
||||
argv = sp.with_display(["/emu", "--", "game.cue"], Path("/fb"))
|
||||
self.assertEqual(argv[:2], ["/bin/sh", "-c"])
|
||||
self.assertEqual(argv[3:], ["xvfb", "/fb", "/emu", "--", "game.cue"])
|
||||
self.assertIn(f'Xvfb ":{sp.DISPLAY_NUMBER}"', argv[2])
|
||||
|
||||
|
||||
class Oracle(unittest.TestCase):
|
||||
def test_emulator_patterns_join_the_oracle_file(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
path = Path(tmp) / "oracle.yml"
|
||||
path.write_text("error_patterns:\n - {pattern: 'shared', source_ref: x}\n"
|
||||
"cores:\n duckstation:\n error_screens:\n"
|
||||
" - {sha1: '" + "a" * 40 + "', shows: 'no BIOS'}\n"
|
||||
"content:\n - sha1: '" + "b" * 40 + "'\n references:\n"
|
||||
" duckstation:\n frames:\n"
|
||||
" - {sha1: '" + "c" * 40 + "', stage: bios, shows: 'logo'}\n",
|
||||
encoding="utf-8")
|
||||
oracle = sp.emulator_oracle(sp.EMULATORS["duckstation"], path, "b" * 40)
|
||||
self.assertEqual(oracle["references"][0]["sha1"], "c" * 40)
|
||||
self.assertEqual(oracle["error_screens"][0]["shows"], "no BIOS")
|
||||
self.assertEqual(oracle["error_patterns"][0], "shared")
|
||||
self.assertIn(r"No\ BIOS\ image\ found\ for", oracle["error_patterns"])
|
||||
self.assertEqual(len(oracle["sha256"]), 64)
|
||||
|
||||
def test_without_the_file_the_oracle_names_the_script(self) -> None:
|
||||
oracle = sp.emulator_oracle(sp.EMULATORS["pcsx2"], Path("/nonexistent/oracle.yml"), "0" * 40)
|
||||
self.assertEqual(oracle["file"], sp.SCRIPT)
|
||||
self.assertEqual(oracle["references"], [])
|
||||
|
||||
def test_a_log_line_gives_bios_error_through_core_probe_judge(self) -> None:
|
||||
oracle = sp.emulator_oracle(sp.EMULATORS["duckstation"], Path("/nonexistent"), "0" * 40)
|
||||
rep = {"loaded": True, "observables": {"frame_hashes": [[0, "d" * 40]], "uniform_frames": []},
|
||||
"logs": [{"frame": 3, "level": "info", "text": "E: No BIOS image found for NTSC-J region."}]}
|
||||
verdict, evidence = cp.judge(rep, oracle)
|
||||
self.assertEqual((verdict, evidence["rule"]), ("bios_error", "error_pattern"))
|
||||
|
||||
def test_an_early_exit_is_a_crash_and_a_black_tail_a_hang(self) -> None:
|
||||
oracle = {"references": [], "error_patterns": [], "error_screens": []}
|
||||
rep = {"loaded": False, "exit": {"status": 1, "signal": None}, "observables": {}, "logs": []}
|
||||
self.assertEqual(cp.judge(rep, oracle)[0], "crash")
|
||||
black = "e" * 40
|
||||
rep = {"loaded": True, "logs": [], "observables": {
|
||||
"frame_hashes": [[0, "f" * 40], [1, black], [2, black]], "uniform_frames": [black]}}
|
||||
self.assertEqual(cp.judge(rep, oracle)[0], "hang")
|
||||
|
||||
def test_check_result_carries_the_verdicts(self) -> None:
|
||||
def variant(label: str, verdict: str) -> dict:
|
||||
return {"label": label, "flags": [], "verdict": verdict, "repetitions": [
|
||||
{"loaded": True, "observables": {"verdict": verdict}}]}
|
||||
result = sp.check_result([variant("absent", "bios_error"), variant("scph5501.bin", "boots")],
|
||||
"verdict")
|
||||
self.assertEqual(result["status"], "differs")
|
||||
self.assertEqual(result["verdicts"], {"absent": "bios_error", "scph5501.bin": "boots"})
|
||||
|
||||
|
||||
class HostLock(unittest.TestCase):
|
||||
def test_a_run_holds_the_probe_lock_for_itself(self) -> None:
|
||||
import contextlib
|
||||
from unittest import mock
|
||||
|
||||
events = []
|
||||
|
||||
@contextlib.contextmanager
|
||||
def lock():
|
||||
events.append("take")
|
||||
yield
|
||||
events.append("free")
|
||||
|
||||
def body(_args, _emu):
|
||||
events.append("run")
|
||||
return 0
|
||||
|
||||
with tempfile.NamedTemporaryFile(suffix=".cue") as content, \
|
||||
mock.patch.object(sp.cp, "host_probe_lock", lock), mock.patch.object(sp, "_probe", body):
|
||||
args = sp.build_parser().parse_args(["run", "duckstation", "--content", content.name])
|
||||
self.assertEqual(sp.probe(args), 0)
|
||||
self.assertEqual(events, ["take", "run", "free"])
|
||||
|
||||
|
||||
class CommandLine(unittest.TestCase):
|
||||
def test_check_refuses_two_destinations(self) -> None:
|
||||
with tempfile.NamedTemporaryFile(suffix=".cue") as content:
|
||||
args = sp.build_parser().parse_args(
|
||||
["check", "duckstation", "--content", content.name, "--vary", "a.bin=", "--vary", "b.bin=",
|
||||
"--claim", "c", "--method", "m"])
|
||||
self.assertIn("--vary must name the same DEST in every occurrence", sp.validate(args))
|
||||
|
||||
def test_unknown_observable(self) -> None:
|
||||
with tempfile.NamedTemporaryFile(suffix=".cue") as content:
|
||||
args = sp.build_parser().parse_args(
|
||||
["check", "pcsx2", "--content", content.name, "--vary", "a.bin=", "--observable", "fps",
|
||||
"--claim", "c", "--method", "m"])
|
||||
self.assertTrue(any("--observable fps" in p for p in sp.validate(args)))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
@@ -154,7 +154,11 @@ class ThePullRequestBuildsTheSite(unittest.TestCase):
|
||||
if not path.startswith(("scripts/", ".github/"))
|
||||
}
|
||||
self.assertIn("wiki/**", inputs)
|
||||
self.assertEqual(sorted(inputs - watched), [])
|
||||
# A path the deploy names inside a folder validate.yml watches
|
||||
# whole (tests/campaign/content.yml under tests/**) is watched.
|
||||
unwatched = [path for path in inputs - watched
|
||||
if not any(fnmatch.fnmatch(path, pattern) for pattern in watched)]
|
||||
self.assertEqual(sorted(unwatched), [])
|
||||
self.assertIn("scripts/**", watched)
|
||||
|
||||
|
||||
|
||||
@@ -1051,3 +1051,88 @@ starlight-tabs [role='tab'] { white-space: nowrap; }
|
||||
@media (min-width: 50rem) {
|
||||
header .site-title img { height: calc(4rem - 2 * var(--sl-nav-pad-y)); width: auto; }
|
||||
}
|
||||
|
||||
/* The Tested block of an emulator page (scripts/sitemeasurements.py): a
|
||||
summary line, then one row per test, each a <details> whose summary is
|
||||
the row and whose body is the proof. Rows stack into two lines on a
|
||||
phone. A dot per variant, its group in colour and its name in a title
|
||||
and the strip's label; a variant that staged no file is a ring. */
|
||||
.sl-markdown-content .rb-tested-summary { color: var(--rb-text-secondary); font-size: 0.9rem; }
|
||||
.sl-markdown-content :is(.rb-tested-head, .rb-tested-row > summary) {
|
||||
display: grid;
|
||||
grid-template-columns: 1.25rem minmax(0, 1fr) 8.5rem 9rem 6rem;
|
||||
gap: 0.5rem;
|
||||
align-items: center;
|
||||
}
|
||||
.sl-markdown-content .rb-tested-head {
|
||||
margin-top: 0.75rem;
|
||||
padding: 0 0 0.25rem;
|
||||
border-bottom: 1px solid var(--rb-border-strong);
|
||||
color: var(--rb-text-secondary);
|
||||
font-size: 0.8rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
.sl-markdown-content .rb-tested-head::before { content: ""; }
|
||||
/* Starlight draws a side rule on every details: a row has a rule below only. */
|
||||
.sl-markdown-content details:is(.rb-tested-row, .rb-tested-earlier) { border-inline-start: 0; padding-inline-start: 0; }
|
||||
.sl-markdown-content details.rb-tested-row { margin: 0; border-bottom: 1px solid var(--rb-border); }
|
||||
.sl-markdown-content details.rb-tested-row:has(> summary:hover) { border-color: var(--rb-border); }
|
||||
.sl-markdown-content .rb-tested-row > summary {
|
||||
min-height: 2.25rem;
|
||||
padding: 0.3rem 0;
|
||||
cursor: pointer;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.sl-markdown-content .rb-tested-row > summary::before { background-color: var(--rb-text-secondary); margin: 0; }
|
||||
.sl-markdown-content .rb-tested-row > summary:hover { background: var(--rb-surface); }
|
||||
.sl-markdown-content .rb-tested-test { font-weight: 600; overflow-wrap: anywhere; }
|
||||
.sl-markdown-content :is(.rb-tested-test, .rb-tested-date) small { color: var(--rb-text-secondary); font-weight: 400; }
|
||||
.sl-markdown-content .rb-tested-date { color: var(--rb-text-secondary); font-variant-numeric: tabular-nums; white-space: nowrap; }
|
||||
.sl-markdown-content .rb-tested-more {
|
||||
margin: 0 0 0.75rem 1.75rem;
|
||||
padding: 0.5rem 0.75rem;
|
||||
border: 1px solid var(--rb-border);
|
||||
border-radius: 4px;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
.sl-markdown-content .rb-tested-more p { margin: 0.35rem 0 0; }
|
||||
.sl-markdown-content .rb-tested-more p:first-child { margin-top: 0; }
|
||||
.sl-markdown-content details.rb-tested-earlier { margin-top: 0.75rem; }
|
||||
.sl-markdown-content details.rb-tested-earlier > summary { font-size: 0.9rem; color: var(--rb-text-secondary); cursor: pointer; }
|
||||
.sl-markdown-content .rb-dots { display: inline-flex; flex-wrap: wrap; gap: 3px; }
|
||||
.sl-markdown-content .rb-dot {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 3px;
|
||||
border: 2px solid var(--rb-dot);
|
||||
background: var(--rb-dot);
|
||||
}
|
||||
.sl-markdown-content .rb-dot-empty { background: transparent; }
|
||||
.sl-markdown-content .rb-dot-0 { --rb-dot: var(--rb-ok-fg); }
|
||||
.sl-markdown-content .rb-dot-1 { --rb-dot: var(--rb-info-fg); }
|
||||
.sl-markdown-content .rb-dot-2 { --rb-dot: var(--rb-warn-fg); }
|
||||
.sl-markdown-content .rb-dot-3 { --rb-dot: var(--rb-err-fg); }
|
||||
.sl-markdown-content .rb-dot-4 { --rb-dot: var(--rb-muted-fg); }
|
||||
.sl-markdown-content p.rb-tested-file {
|
||||
margin: 0.9rem 0 0;
|
||||
padding-bottom: 0.2rem;
|
||||
border-bottom: 1px solid var(--rb-border-strong);
|
||||
font-size: 0.85rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
.sl-markdown-content p.rb-tested-legend { margin-top: 0.5rem; color: var(--rb-text-secondary); font-size: 0.8rem; }
|
||||
.sl-markdown-content p.rb-tested-legend .rb-dot { display: inline-block; vertical-align: -1px; }
|
||||
.sl-markdown-content table.rb-tested-bench { margin-top: 1rem; font-size: 0.875rem; }
|
||||
.sl-markdown-content table.rb-tested-bench td:not(:first-child) { font-variant-numeric: tabular-nums; text-align: right; }
|
||||
@media (max-width: 50rem) {
|
||||
.sl-markdown-content div.rb-tested-head { display: none; }
|
||||
.sl-markdown-content details.rb-tested-row > summary {
|
||||
grid-template-columns: 1.25rem auto minmax(0, 1fr) auto;
|
||||
row-gap: 0.2rem;
|
||||
}
|
||||
.sl-markdown-content .rb-tested-row > summary::before { grid-row: 1; }
|
||||
.sl-markdown-content .rb-tested-test { grid-column: 2 / -1; }
|
||||
.sl-markdown-content .rb-tested-result { grid-column: 2; }
|
||||
.sl-markdown-content .rb-tested-date { text-align: right; }
|
||||
.sl-markdown-content .rb-tested-more { margin-left: 0.5rem; }
|
||||
}
|
||||
+26
-16
@@ -14,25 +14,35 @@ the emulator's page shows a **Tested** block. Every result is on the
|
||||
## What a test does
|
||||
|
||||
- A script runs the emulator with no window and no sound.
|
||||
- It starts a game or a disc and presses buttons at set frames.
|
||||
- It runs again for each version of one file, such as a BIOS. Nothing else changes.
|
||||
- It compares what the emulator showed, played or saved, by fingerprint (a hash).
|
||||
- Each version runs at least twice, each time from a fresh start.
|
||||
|
||||
## When tests run
|
||||
|
||||
A maintainer starts a test run. It then works alone on an idle computer. A clear
|
||||
result updates the emulator's page and names the test as proof.
|
||||
|
||||
Anything else waits on the [Measurements](../measurements.md) page for someone
|
||||
to read the code.
|
||||
- It starts a game and runs it for a set time, at least twice.
|
||||
- It compares the screens with ones we checked by eye.
|
||||
|
||||
## What a result says
|
||||
|
||||
- **same**: the file changed nothing that was compared.
|
||||
- **differs**: some versions of the file changed it.
|
||||
- **inconclusive**: two runs of one version did not match, so no answer is given.
|
||||
- **measured**: a speed test, given as time per frame.
|
||||
| Result | Meaning |
|
||||
|--------|---------|
|
||||
| works | the game reached a screen it shows when it works |
|
||||
| BIOS error | the emulator said a BIOS is missing or wrong |
|
||||
| crash | the emulator stopped |
|
||||
| hang | the screen stayed blank, or the run never ended |
|
||||
| unknown | none of these could be shown |
|
||||
| no verdict | an older test that only compared screens |
|
||||
| ms per frame | a speed test |
|
||||
|
||||
## How a file is proven
|
||||
|
||||
The game runs with no BIOS and with the BIOS alone. Then it runs with a wrong
|
||||
file under the BIOS name: zeros, half the file, or another region's BIOS.
|
||||
|
||||
- **Required**: no BIOS fails, the BIOS alone works.
|
||||
- **Built-in stand-in**: no BIOS still works.
|
||||
- **Checked**: a wrong file is refused.
|
||||
|
||||
## When tests run
|
||||
|
||||
A maintainer starts a test run. A clear result updates the emulator's page.
|
||||
Anything else waits on the [Measurements](../measurements.md) page for someone
|
||||
to read the code.
|
||||
|
||||
## What a result keeps
|
||||
|
||||
|
||||
@@ -59,6 +59,8 @@ Every module in `tests/`, by the area it guards.
|
||||
| Running cores | parsers on fixed inputs, a libretro core built from C in the test when a compiler exists | `test_core_probe` |
|
||||
| Measurement records | synthetic record files, the committed `measurements/` against HEAD | `test_measurements` |
|
||||
| Real-condition campaign | synthetic profiles, records and content folders, a fake host for load, disk, clock and commands, and whole passes against a libretro core built from C when a compiler and strace exist | `test_campaign` |
|
||||
| Region checks | the variants a region game runs under, the outcome read from synthetic records, the system page sentence and the coverage table, and that every system whose BIOS a profile ties to Japan, the US and Europe has a game per region in the content list or a reason | `test_region_check` |
|
||||
| Standalone emulators | the release asset EmuDeck's rule picks, the AppImage offset, the Xvfb framebuffer reader, the settings written and the oracle the verdicts use, with no emulator run | `test_standalone_probe` |
|
||||
| Automation runner, disk cleanup, asset sync and bit-flip repair | fake jobs, git repositories with a bare origin and session worktrees, a committed file with one bit flipped, canned CI runs in place of `gh` | `test_autorun` |
|
||||
| Truth and native export | synthetic + cached originals | `test_export_counts`, `test_export_native_layer`, `test_export_report`, `test_exporters`, `test_truth_data_dir_readers`, `test_truth_diff`, `test_truth_layout` |
|
||||
| Scrapers, upstream and provenance | inline sources, synthetic | `test_batocera_md5_list`, `test_check_freshness`, `test_contributing_text`, `test_coverage_cache`, `test_data_dir_refs`, `test_dataclass_defaults`, `test_dedup`, `test_doc_pages`, `test_doc_surfaces`, `test_elec_scrapers`, `test_fbneo_parser`, `test_find_pinned_revision`, `test_hash_merge`, `test_launchers`, `test_launchers_emudeck`, `test_launchers_recalbox`, `test_launchers_retrobat`, `test_launchers_retrodeck`, `test_launchers_retropie`, `test_launchers_rocknix`, `test_mame_devices`, `test_mame_parser`, `test_mame_ref_audit`, `test_optional_dependencies`, `test_profile_sync`, `test_prose_style`, `test_provenance`, `test_refresh_data_dirs`, `test_refresh_failures`, `test_refresh_stale`, `test_retrodeck_scraper_errors`, `test_romset_recipes`, `test_schema_semantic_gate`, `test_scraper_contract`, `test_site_availability`, `test_site_content_data`, `test_site_copy`, `test_site_cores`, `test_site_emulator_page`, `test_site_exports`, `test_site_funnel`, `test_site_images`, `test_site_picker`, `test_site_platform_hashes`, `test_site_r2_components`, `test_site_r2_css`, `test_site_r2_emulators`, `test_site_r2_entry`, `test_site_r2_gate`, `test_site_r2_nav`, `test_site_r2_p0`, `test_site_r2_reference`, `test_site_r2_systems`, `test_site_r2_wiki`, `test_site_r3_collection`, `test_site_r3_components`, `test_site_r3_css`, `test_site_r3_emulators`, `test_site_r3_entry`, `test_site_r3_nav`, `test_site_r3_p0`, `test_site_r3_reference`, `test_site_r3_systems`, `test_site_r3_wiki`, `test_site_r4_components`, `test_site_r4_css`, `test_site_r4_emulators`, `test_site_r4_entry`, `test_site_r4_merge`, `test_site_r4_p0`, `test_site_r4_reference`, `test_site_r4_search`, `test_site_r4_systems`, `test_site_r4_wiki`, `test_site_r5_components`, `test_site_r5_css`, `test_site_r5_emulators`, `test_site_r5_entry`, `test_site_r5_reference`, `test_site_r5_search`, `test_site_r5_systems`, `test_site_r5_wiki`, `test_site_render`, `test_site_system_links`, `test_site_validation`, `test_site_weight`, `test_site_write`, `test_source_ref_targets`, `test_upstream`, `test_upstream_index`, `test_validate_pr`, `test_version_basis`, `test_validate_pr_flow`, `test_validate_pr_hashes`, `test_workflow_paths` |
|
||||
|
||||
+178
-18
@@ -862,8 +862,23 @@ python scripts/core_probe.py bench --core core.so --content game.cue \
|
||||
python scripts/core_probe.py check --core core.so --content disc.cue \
|
||||
--vary mpeg_card.bin=a.bin --vary mpeg_card.bin=b.bin --vary mpeg_card.bin= \
|
||||
--observable video_sha1 --claim "..." --method "..." --record
|
||||
|
||||
# negative variants: the file, zeros of its size, its first half
|
||||
python scripts/core_probe.py check --core core.so --content disc.cue \
|
||||
--frame-hash-every 10 --vary scph5501.bin=bios/scph5501.bin \
|
||||
--vary scph5501.bin=@zeros:524288 --vary scph5501.bin=@head:262144:bios/scph5501.bin \
|
||||
--observable frame_hashes --claim "..." --method "..." --repeat 2 --record
|
||||
```
|
||||
|
||||
One measurement runs at a time on the host. core_probe takes the host lock
|
||||
itself, per run: `~/.local/state/retrobios/probe.lock` (`RETROBIOS_PROBE_LOCK`
|
||||
names another file), from its load check to its record, released when the run
|
||||
ends. A run that finds it held waits and says so. Never wrap a whole pass in
|
||||
`flock`: a pass of many runs then holds the host for hours, while called
|
||||
directly its runs interleave with everyone else's. A caller that holds the
|
||||
lock around one core_probe call sets `RETROBIOS_PROBE_LOCK_HELD=1`. The tests
|
||||
use their own lock file.
|
||||
|
||||
Each repetition runs in a fresh process under `strace -f -e trace=openat,open`
|
||||
when strace is installed. The worker starts with an empty environment and
|
||||
clears its own before it loads the core, keeping only the `--env` values.
|
||||
@@ -876,15 +891,43 @@ writable. Every namespace is unshared, the network included, so nothing of
|
||||
the user (`~/.config`, `~/.ssh`, `~/.git-credentials`) or of the checkout is
|
||||
there to read. Each repetition names what it ran under in `isolation`
|
||||
(`bwrap`, or `environment only` with the reason), and `--require-sandbox`
|
||||
refuses to run without it. A timeout kills the worker's whole process group. The files the core opened under the system
|
||||
refuses to run without it. The files the core opened under the system
|
||||
directory come from the kernel, each hashed again after the run. Without
|
||||
strace the record says that tracing was unavailable.
|
||||
|
||||
**Boot oracle.** Every repetition and every variant carries a `verdict` and
|
||||
the `verdict_evidence` that decided it (record version 4), judged against
|
||||
`tests/campaign/oracle.yml` (`--oracle`), in this order:
|
||||
|
||||
| Verdict | Evidence |
|
||||
|---------|----------|
|
||||
| `hang` | the worker was killed after `--timeout` (`timeout`) |
|
||||
| `crash` | the worker died, by exit status or signal (`exit_status`). Its logs and sampled frames are rebuilt from the events it streamed |
|
||||
| `boots` | a sampled frame or the last frame is a `game` reference frame of this content on this core (`reference_frame`), with the `stages` reached: `bios` for a screen only the console's BIOS draws, `game` for one of the content. The BIOS screens alone are never a boot: the stages go into the evidence of the verdict below |
|
||||
| `bios_error` | a log line matches an error pattern of the core (`error_pattern`), or a frame is one of its error screens (`error_screen`) |
|
||||
| `hang` | every sampled frame of the second half is one colour (`uniform_tail`) |
|
||||
| `unknown` | none of these (`no_evidence`) |
|
||||
|
||||
A variant's verdict is the one all its repetitions agree on, else `unknown`
|
||||
(`repetitions_disagree`). A check lists them in `check.result.verdicts`, and
|
||||
`inputs.oracle` keeps what they were judged against. The oracle finds a
|
||||
content by the sha1 of the file handed to the core and a core by its library
|
||||
name. A reference frame is recorded once with the full BIOS set and reviewed
|
||||
by looking at its PNG. An error pattern is a log line after which the core
|
||||
stops, read from its source: a line a core logs before it falls back to a
|
||||
built-in BIOS is not one. A BIOS load pattern is the line a core logs once
|
||||
it keeps the console's BIOS: it adds the `bios` stage for a core that hides
|
||||
the BIOS screens by default (PCSX-ReARMed). Frames that differ from another run never make a
|
||||
boot.
|
||||
|
||||
| Option | Effect |
|
||||
|--------|--------|
|
||||
| `--system-file DEST=SRC` | copy SRC into a staged system directory as DEST |
|
||||
| `--content-label` | identity of the content, such as its Redump name, copied into the record |
|
||||
| `--work-dir`, `--timeout` | scratch directory for the staged runs, and seconds allowed per repetition (default 1800) |
|
||||
| `--work-dir`, `--timeout` | scratch directory for the staged runs, and seconds allowed per repetition (default 1800), after which the run is killed and judged a hang |
|
||||
| `--oracle FILE` | reference frames, error patterns and error screens the verdicts are judged against (default `tests/campaign/oracle.yml`) |
|
||||
| `--repeat N` | runs of each variant, each in a fresh process (`run` defaults to 1, `check` to 2, `bench` to 5) |
|
||||
| `--vary DEST=SRC` | (`check`) one variant per occurrence. An empty SRC leaves DEST absent, `@zeros:SIZE` stages SIZE zero bytes and `@head:SIZE:PATH` the first SIZE bytes of PATH |
|
||||
| `--option KEY=VALUE` | core option. Unset options take the first value the core declares |
|
||||
| `--frames`, `--warmup` | frames timed, and frames run before timing starts |
|
||||
| `--press FRAME:BUTTON[:LEN]` | hold a libretro joypad button on port 0 (`a`, `b`, `start`, `up`...). A menu may need 15 frames or more to see it |
|
||||
@@ -964,51 +1007,77 @@ files a core opens nor writes a record.
|
||||
python scripts/campaign.py run --system sony-playstation --budget 6h
|
||||
python scripts/campaign.py run --only beetle_psx,swanstation --dry-run
|
||||
python scripts/campaign.py run --commit --commit-every 10
|
||||
python scripts/campaign.py run --only pcsx_rearmed --bench # with benchmarks
|
||||
python scripts/campaign.py references --only beetle_psx --system sony-playstation
|
||||
python scripts/campaign.py references --only beetle_saturn --content-file other.yml # another content list
|
||||
python scripts/campaign.py status # done, failed, pending, and why
|
||||
python scripts/campaign.py findings # what waits for review
|
||||
python scripts/campaign.py gate # the checks behind a commit
|
||||
python scripts/campaign.py install-timer # the autorun units, the campaign's among them
|
||||
python scripts/campaign.py install-timer # opt-in: writes the autorun units, enables nothing
|
||||
```
|
||||
|
||||
| Step | What happens |
|
||||
|------|--------------|
|
||||
| Core | The x86_64 Linux nightly from `buildbot.libretro.com`, for each name of the profile's `cores:` the buildbot publishes, downloaded again only when its `ETag` or `Last-Modified` changes. The record keeps the artifact URL, the `.so` sha256 and the `retro_get_system_info` version. With no nightly, the profile's `source_commit` is cloned and built once with `make` (`Makefile.libretro` first), the failure kept so it is not tried again for that commit. Host git only fetches into bare mirrors (`.cache/campaign/mirrors/`), one per repository, submodules included, that it alone touches: no working tree, never bound into a sandbox, and earlier working-tree clones are deleted. It runs with no user or system config, https as the only transport, and `-c` overrides emptying hooks, `core.fsmonitor`, `core.sshCommand`, `core.gitProxy`, credential helpers and every filter driver the mirror's config defines. The commit and each submodule at the commit its tree records are exported with `git archive` into a fresh folder, and `make` runs there in the same bubblewrap sandbox as a core, that folder the one writable path. The core copied out is the newest `*_libretro.so` that is a regular file inside that folder, opened without following links. The record's `build_command` says which isolation was used. A standalone emulator is `pending: standalone` |
|
||||
| Content | Each system's games come from `tests/campaign/content.yml`, by catalog name and with the reason each was chosen. They are read from `.cache/test-content/<romfetch system>/<name>/`, each file checked against its `identity.json`. Missing content is fetched with `romfetch get <system> <name> --json` when romfetch is on `PATH`, in `RETROBIOS_ROMFETCH` or given with `--romfetch`. Otherwise the checks are `pending: content`, with romfetch's exit code and error code when it failed. Content never enters git, and a record keeps only its identity |
|
||||
| Checks | `files` stages every declared file the collection holds and reads which ones the core opens (strace). `boot` runs the game with no file and with the declared one (`boot_file:`, else the entry of the game's region). An entry the `files` run left unread is staged `alone`, then where the core looked for it (`path`) and under the names it looked for (`alias`). `variants` runs each `.variants/` copy of a file the core opened. `bench` times the game, warm-up excluded, 5 repetitions |
|
||||
| Checks | `files` stages every declared file the collection holds (the full set) and reads which ones the core opens (strace). `none` runs the game with no BIOS at all. `negative` runs, for each declared file of the game's region the collection holds, the file alone, then zeros of its size, its first half and up to two other regions' dumps staged under its name. An entry neither the full set nor its own run opened is staged where the core looked for it (`path`), else flagged. The `boot_file:` entry is also staged under the names the core looked for with no BIOS (`alias`). `variants` runs each `.variants/` copy of a file the core opened. Each runs twice from a fresh process and is judged by the boot oracle. `bench` (only with `--bench`) times the game once the full set boots, warm-up excluded, 5 repetitions |
|
||||
| Rules | `campaign_rules.py`, a fixed table of pure functions (below). A field the table settles is written into the profile, with `evidence:` naming the record ids. Anything else is a line of `measurements/findings.jsonl` |
|
||||
| Content reuse | A game stays on disk until the last emulator that needs it in the pass is done, then the campaign deletes it if it fetched it. Past `--cache-cap-gb` (default 20) the least recently used goes first. An entry marked `pinned:`, or one the campaign did not fetch, is never deleted |
|
||||
|
||||
| Observable | Field | Written |
|
||||
|------------|-------|---------|
|
||||
| Without the file, at least 2 screens the run with the file also shows (single-colour frames left out), in every repetition | `hle_fallback` | `true` |
|
||||
| Without the file, no repetition loads the game or shows more than one colour, while the run with it reaches the game | `required`, `hle_fallback` | `true`, `false` |
|
||||
| Verdicts | Field | Written |
|
||||
|----------|-------|---------|
|
||||
| `none` boots, and the file changes the run: alone or as a wrong file, another verdict or other stages than with no BIOS | `hle_fallback` | `true`. A file the game never uses settles nothing: a core can open every file of the folder to hash it |
|
||||
| `none` fails (`bios_error`, `crash`, `hang`) and the file alone boots | `required`, `hle_fallback` | `true`, `false` |
|
||||
| Zeros of the file's size refused while the file boots | `validation` | a content check is proven. Agreeing adds evidence, a profile with no md5, sha1, sha256, crc32 or adler32 is an open finding |
|
||||
| Zeros used while the file boots | `validation` | no content check. A profile that declares one is an open finding |
|
||||
| Its first half refused while zeros are used | `validation` | `size`, added when missing |
|
||||
| Its first half used | `validation` | no size check. A profile that declares one is an open finding |
|
||||
| The core opened the file staged at another place it looked for | `path` | that path |
|
||||
| The core opened the file staged under a name no entry declares | `aliases` | the name added |
|
||||
| A staged file the game's region uses, never opened, staged alone either | nothing | flagged |
|
||||
| Anything else (runs that disagree, a profile that says `required: true` for a file the core boots without) | nothing | open finding |
|
||||
| Copies of one file whose verdicts differ | nothing | open finding |
|
||||
| Anything else (an `unknown`, a profile that says `required: true` for a file the core boots without) | nothing | open finding |
|
||||
|
||||
A run that agrees with the profile adds its record id to `evidence:` and
|
||||
A wrong file is refused when the run reports `bios_error`, or boots without
|
||||
the `bios` screens the right file shows: the core fell back to a built-in
|
||||
BIOS. It is used when it turns the run into a `hang` or a `crash` that the
|
||||
run with no BIOS does not show. Another region's dump is recorded with its
|
||||
verdict, and the region claims are settled by their own test. Evidence that a
|
||||
record from before the oracle wrote no longer counts: when a verdict settles a
|
||||
field again, those ids leave its `evidence:`.
|
||||
|
||||
`references` runs the full set once per core and content with every sampled
|
||||
frame written as PNG under `tmp/campaign/references/<core>/<content>/`, and
|
||||
prints the record id with the screens that stay on for 3 samples or more in
|
||||
every repetition. A reviewer opens those PNGs and writes the chosen frames
|
||||
into `tests/campaign/oracle.yml` with their stage and what they show.
|
||||
|
||||
The rules run on every pass, from the kept records when no check needs to run
|
||||
again, so a change of the table applies without a run. A run that agrees with
|
||||
the profile adds its record id to `evidence:` and
|
||||
resolves an open finding of the same field. The profile is edited as text and
|
||||
the edit is refused unless the result parses to the same profile with only
|
||||
those fields changed.
|
||||
|
||||
State lives in `.cache/campaign/state.json` of the main checkout: each check
|
||||
is `done`, `failed` (with the reason and its log) or `pending` (with the
|
||||
reason), with the core sha256 and the profile digest it ran against. A pass
|
||||
skips a check that is done or failed against the same core and profile, so it
|
||||
reason), with the core sha256, the profile digest, the oracle entries of its
|
||||
content and core (by sha1) and the record version it ran against. A pass
|
||||
skips a check that is done or failed against the same four, so it
|
||||
takes new nightlies, changed profiles, newly fetched content and pending
|
||||
checks. The campaign's own `evidence:` writes do not count as a profile change.
|
||||
|
||||
| Guard | Rule |
|
||||
|-------|------|
|
||||
| Lock | The host-wide autorun lock. Under the `campaign` job, autorun holds it and says so with `RETROBIOS_AUTO_LOCK_HELD` |
|
||||
| Probe lock | Not held by the pass: each core_probe it starts takes the host probe lock for its own run, so the pass and other measurements (pack_probe, a core_probe loop) interleave. Two campaign passes still exclude each other through the automation lock, since they share `.cache/campaign/state.json`. Do not wrap `campaign.py run` in `flock` |
|
||||
| Environment | `core_probe.py`, git and `make` get autorun's allowlist, romfetch the same plus its `ROMFETCH_*` settings. None sees a token or a password |
|
||||
| Sandbox | Fails closed: without a working bubblewrap the pass is `refused` (exit 3) and nothing third-party runs, every probe is started with `--require-sandbox`, and a build is refused. `--allow-unsandboxed` overrides. Under autorun the refusal raises the `job:campaign` alert |
|
||||
| Load | Before each run, waits while the 1-minute load is above a quarter of the CPUs, up to `--max-load-wait` seconds, then the pass stops as `paused` |
|
||||
| Disk | Below `--min-free-gb` (default 30) the pass stops as `paused` |
|
||||
| Budget | No check starts after `--budget` |
|
||||
| Timeout | A run is killed after 900 seconds per repetition and variant, recorded `failed: timeout`, and the pass moves on |
|
||||
| Crash | A run that dies is tried 3 times, then `failed` with its log |
|
||||
| Timeout | A repetition is killed after 900 seconds and judged `hang`. A core_probe call that outlives all its repetitions is `failed: timeout` |
|
||||
| Crash | A core that dies is a `crash` verdict in its record. A core_probe call that fails for another reason is tried 3 times, then `failed` with its log |
|
||||
| Network | Buildbot and romfetch source errors are retried after 10, 60 and 300 seconds |
|
||||
|
||||
Each pass appends one line to `measurements/campaign-runs.jsonl`: when it ran,
|
||||
@@ -1019,13 +1088,104 @@ the findings it added. Logs are `.cache/campaign/logs/`, kept 30 days.
|
||||
each changed profile in its own, behind `campaign.py gate`: the measurement
|
||||
and campaign tests, `validate_schemas.py --source-only`, then `verify.py
|
||||
--emulator` and `generate_pack.py --emulator` for each changed profile. A file
|
||||
that had uncommitted changes before the pass is left alone. The nightly
|
||||
`campaign` autorun job (06:00, after `nightly`) runs a 150-minute pass in the
|
||||
automation worktree, gates it with `campaign.py gate` and commits with its
|
||||
own rules, pushing only with `--push`.
|
||||
that had uncommitted changes before the pass is left alone.
|
||||
|
||||
A maintainer starts each pass. Scheduling is opt-in: a contributor who wants a
|
||||
schedule on their own machine installs the timer with `campaign.py
|
||||
install-timer`, which writes the autorun units and enables nothing unless
|
||||
`--enable` is passed. The `campaign` autorun job then runs a 150-minute pass
|
||||
in the automation worktree, gates it with `campaign.py gate` and commits with
|
||||
its own rules, pushing only with `--push`.
|
||||
|
||||
Schemas: `campaign-finding.schema.json` and `campaign-run.schema.json`.
|
||||
|
||||
### region_check.py
|
||||
|
||||
Proves the `region:` fields of a profile on a real run. For each test game
|
||||
of a region in `tests/campaign/content.yml`, it runs `core_probe.py` four
|
||||
times, each a record whose subject is `region-<core>-<game>-<variant>`.
|
||||
|
||||
| Variant | BIOS staged |
|
||||
|---------|-------------|
|
||||
| `full` | every regional BIOS of the system the collection holds |
|
||||
| `own` | only the entries whose `region:` holds the game's region |
|
||||
| `others` | only the entries of the other regions |
|
||||
| `pack` | the files of `generate_pack.py --emulator E --region R`, where the pack puts them |
|
||||
|
||||
```bash
|
||||
python scripts/region_check.py run \
|
||||
--emulator beetle_psx --system sony-playstation --core-name mednafen_psx
|
||||
python scripts/region_check.py report # the outcome of every region record, as JSON
|
||||
```
|
||||
|
||||
| Option | Effect |
|
||||
|--------|--------|
|
||||
| `--core-name` | the buildbot name of the core, whose x86_64 nightly is downloaded once into `.cache/region/cores/` and named in the record |
|
||||
| `--core`, `--core-artifact` | a core `.so` to use instead, and where it was downloaded from |
|
||||
| `--content-dir` | where romfetch keeps the test games (default `.cache/test-content`) |
|
||||
| `--variants` | a subset of `full`, `own`, `others` and `pack` |
|
||||
| `--timeout` | seconds per run (default 900) |
|
||||
| `--max-load-wait` | seconds a run refused on a busy host is tried again, every 15 seconds, before it is given up (default 1800). The load threshold stays core_probe's |
|
||||
|
||||
The file the core opened in the `full` run, read from strace, settles the
|
||||
claim: `confirmed` when its `region:` holds the game's region, `contradicted`
|
||||
when it does not, `ambiguous` when the core opened its own region's file and the others too (PCSX-ReARMed opens all three), `unread` when it opened none of them. Each variant's
|
||||
result is the oracle verdict of its record. While the oracle has no reference
|
||||
frame for a game, a variant counts as booting when it samples the same frames
|
||||
as the `full` run, and the outcome says it was judged that way. Other frames give no verdict: the US disc reaches its game on the Japanese and European BIOS through another licence screen. The system
|
||||
pages show each outcome as a sentence ("the Japanese BIOS boots the Japanese
|
||||
game, the other regions' BIOS do not") with links to the four records. A
|
||||
maintainer starts each run. Each core_probe run takes the host probe lock for itself and frees it before the next, so do not wrap the command in `flock`. Nothing runs by itself.
|
||||
|
||||
### standalone_probe.py
|
||||
|
||||
Runs a platform's standalone emulator on a game and records it like
|
||||
`core_probe.py`, in the same `measurements/<emulator>.jsonl` and the same
|
||||
record schema (`frontend.script` names this script). No existing harness
|
||||
traces the files a standalone emulator opens or writes a record, so this is
|
||||
a thin layer over the emulator's own batch mode, Xvfb and core_probe's
|
||||
sandbox, oracle and record functions, imported and not copied.
|
||||
|
||||
```bash
|
||||
python scripts/standalone_probe.py resolve duckstation # the asset EmuDeck's installer picks
|
||||
python scripts/standalone_probe.py fetch duckstation # download and unpack it, by sha256
|
||||
python scripts/standalone_probe.py run duckstation \
|
||||
--content game.cue --content-label "Bust-A-Move 2 - Arcade Edition (USA)" \
|
||||
--bios-file scph5501.bin=bios/Sony/PlayStation/scph5501.bin \
|
||||
--samples 60 --interval 1.5 --require-sandbox --record
|
||||
python scripts/standalone_probe.py check pcsx2 \
|
||||
--content game.bin --vary ps2-0230a-20080220.bin= \
|
||||
--vary "ps2-0230a-20080220.bin=bios/Sony/PlayStation 2/ps2-0230a-20080220.bin" \
|
||||
--claim "..." --method "..." --require-sandbox --record
|
||||
```
|
||||
|
||||
| Step | What happens |
|
||||
|------|--------------|
|
||||
| Binary | The release asset the platform installs, chosen by its installer's own rule. EmuDeck's `getReleaseURLGH` takes the first asset, over GitHub's release list in its order, pre-releases included, whose name matches: `DuckStation-x64.AppImage` and `pcsx2-*-Qt.AppImage`. It is downloaded into `.cache/standalone/<emulator>/<sha256>/` and unpacked with `unsquashfs` at the offset the AppImage runtime computes, so the runtime is never run. The record names the asset, its release tag, its URL and its sha256 |
|
||||
| Settings | Written before each repetition in a scratch data folder, `$XDG_CONFIG_HOME/duckstation/settings.ini` and `$XDG_CONFIG_HOME/PCSX2/inis/PCSX2.ini`, the places the emulators read on Linux. The BIOS folder setting names the staged BIOS folder, as EmuDeck points it at `Emulation/bios`. Software rendering, no update check, no setup wizard. `--setting SECTION.KEY=VALUE` adds one. The record lists every setting |
|
||||
| Sandbox | The allowlist bubblewrap sandbox of `core_probe.py`: the unpacked emulator, the content folder and the staged BIOS folder read-only, the repetition's scratch folder the one writable path, no network. Xvfb runs inside it, on the sandbox's own `/tmp`, so the display is private to the run. `--require-sandbox` refuses to run without bubblewrap |
|
||||
| Screen | Xvfb keeps its screen as a file (`-fbdir`). The probe reads it every `--interval` seconds, `--samples` times, and hashes each sample's pixels. `--png-dir` writes each distinct sample as PNG for review |
|
||||
| Files | `strace -f` inside the sandbox: the files the emulator opened in the staged BIOS folder, and the ones it looked for there and did not find |
|
||||
| Verdict | `core_probe.judge` on each repetition, with the oracle of `tests/campaign/oracle.yml` looked up by the content's sha1 and the emulator's name, plus the emulator's own error strings this script lists (DuckStation's "No BIOS image found for", PCSX2's "Unable to auto locate a BIOS image"). An emulator that exits before the last sample is a crash |
|
||||
|
||||
| Option | Effect |
|
||||
|--------|--------|
|
||||
| `--bios-file DEST=SRC` | copy SRC into the staged BIOS folder as DEST |
|
||||
| `--setting SECTION.KEY=VALUE` | an emulator setting written before the run |
|
||||
| `--sha256` | the fetched asset to run (default: the newest fetched) |
|
||||
| `--samples`, `--interval` | screen samples per repetition (default 60), and seconds between two (default 1) |
|
||||
| `--oracle` | the boot oracle file (default `tests/campaign/oracle.yml`, as `core_probe.py`) |
|
||||
| `--png-dir` | each distinct sampled screen of the first repetition as PNG |
|
||||
| `--record`, `--subject`, `--supersedes`, `--max-load`, `--work-dir`, `--no-trace`, `--require-sandbox` | as in `core_probe.py` |
|
||||
| `check`: `--vary`, `--observable`, `--claim`, `--method`, `--repeat` | as in `core_probe.py`, compared on `verdict` by default |
|
||||
|
||||
Supported: DuckStation and PCSX2. Dolphin, Flycast, PPSSPP, melonDS, xemu and
|
||||
MAME are installed by EmuDeck from Flathub, Ryujinx from a Codeberg tarball and
|
||||
RPCS3 from its own update server: each needs its installer's rule before it
|
||||
can be added. Cemu is an AppImage like the two supported ones, and waits for
|
||||
Wii U content, which no catalog romfetch reads holds. Each run takes the host probe lock (`RETROBIOS_PROBE_LOCK`) for itself, its load check included, and frees it when it ends, as `core_probe.py` does. A maintainer starts each run. Nothing runs
|
||||
by itself.
|
||||
|
||||
### Other tools
|
||||
|
||||
| Script | Purpose |
|
||||
|
||||
Reference in new issue
Block a user