diff --git a/scripts/region_check.py b/scripts/region_check.py index 20df5d9c9..fa95d159a 100644 --- a/scripts/region_check.py +++ b/scripts/region_check.py @@ -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." diff --git a/tests/test_region_check.py b/tests/test_region_check.py index 8e5abc3b7..568b851c1 100644 --- a/tests/test_region_check.py +++ b/tests/test_region_check.py @@ -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"), diff --git a/wiki/tools.md b/wiki/tools.md index a9b205bb8..c7e7ebf4a 100644 --- a/wiki/tools.md +++ b/wiki/tools.md @@ -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.