mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-01 00:27:20 -05:00
fix: no region verdict from frames that differ
The first runs showed it: beetle_psx reaches the game of the US disc on the Japanese and European BIOS, through a different licence screen, so its frames differ from the full run while the oracle says boots. The interim rule read those frames as a failure. A variant now boots on the same frames as the full run or by its oracle verdict, and otherwise has no answer.
This commit is contained in:
1 parent
1c613dc4b4
commit
6d3045cbb3
3 files changed
+16
-12
No files matched your search
+10
-8
@@ -117,9 +117,9 @@ def outcome(records: dict[str, dict], entries: list[dict], region: str) -> dict:
|
||||
The `region:` claim is `confirmed` when the regions of what it opened
|
||||
hold the game's region, `contradicted` when none does, `unread` when it
|
||||
opened none. Each variant's result is its oracle verdict. While no
|
||||
reference frame is known for the game, a variant is compared with the
|
||||
full run instead: `as_full` when it samples the same frames, which is
|
||||
what the oracle's reference frames will name.
|
||||
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")
|
||||
@@ -152,10 +152,12 @@ def outcome(records: dict[str, dict], entries: list[dict], region: str) -> dict:
|
||||
return None
|
||||
if item["verdict"] != "unknown":
|
||||
return item["verdict"] == "boots"
|
||||
# No verdict: the interim rule, as the full run behaves, and only
|
||||
# while the full run itself is not shown to fail.
|
||||
if full_verdict in ("boots", "unknown") and "as_full" in item:
|
||||
return item["as_full"]
|
||||
# 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 {
|
||||
@@ -178,7 +180,7 @@ def sentence(game_region: str, result: dict) -> str:
|
||||
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 + "."
|
||||
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."
|
||||
|
||||
@@ -108,7 +108,7 @@ class Outcome(unittest.TestCase):
|
||||
self.assertEqual(rc.sentence("japan", result),
|
||||
"The Japanese BIOS boots the Japanese game, the other regions' BIOS do not.")
|
||||
|
||||
def test_interim_rule_compares_with_the_full_run(self) -> None:
|
||||
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"]]),
|
||||
@@ -117,10 +117,12 @@ class Outcome(unittest.TestCase):
|
||||
result = rc.outcome(records, self.ENTRIES, "north-america")
|
||||
self.assertEqual(result["judged_by"], "full_run_frames")
|
||||
self.assertTrue(result["own_boots"])
|
||||
self.assertFalse(result["others_boot"])
|
||||
# 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 do not.")
|
||||
"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"),
|
||||
|
||||
+1
-1
@@ -1117,7 +1117,7 @@ claim: `confirmed` when its `region:` holds the game's region, `contradicted`
|
||||
when it does not, `unread` when the core 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. The system
|
||||
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.
|
||||
|
||||
Reference in new issue
Block a user