re: T8aD +0x04 bit 0x02 predicts the MEASURED blend, 35/35 -- and a prediction to test it
REFUTED.md kills this claim: 'T8aD +0x04 bit 0x02 selects an additive blend -> mine, and refuted. Blending those sprites additively worsens every measure against the capture.' That refutation rests entirely on our renderer, which the corpus's own rule calls a hypothesis under test. The blend is now measured off the GPU, so the claim can be tested against the oracle. 35 elements over three screens, every label an RB_BLENDCONTROL0 value read from the command stream: 16 bit-set and additive, 19 bit-clear and alpha-over, zero false positives, zero false negatives. The control that makes it a decode rather than a coincidence: of every bit of the first 12 header words, EXACTLY ONE separates those 35 elements without error. Nothing ties with it. A perfect partition on a small sample is worthless if half the header partitions equally well, which is the mistake +0x08 = 0x8050 was. And the pair no confound survives: ptbtn00 = 0x0110, ptbtn00f = 0x0112 -- the PRESS (A) plate and its own highlight, same screen, differing in exactly this bit, drawn alpha-over and additive respectively. Committed alongside is a PREDICTION for GP_OPTIONS, written before the capture that tests it: a different archive, a different element set, and a MIXED prediction -- po_menu_eff01/02/03 additive, 592 elements alpha-over. Falsified if those three draw alpha-over or anything else draws additive. The developer splash was considered first and rejected as a test: both its elements predict alpha-over, so it can fail but cannot discriminate. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
@@ -45,7 +45,7 @@ def blend_name(raw):
|
||||
return "%s+%s" % (FACTOR.get(src, src), FACTOR.get(dst, dst))
|
||||
|
||||
|
||||
def candidates(builds):
|
||||
def candidates(builds, pak="GP_TITLE"):
|
||||
"""Every size a UI draw could legitimately have, with a label and a basis.
|
||||
|
||||
Two bases, because neither alone names every element:
|
||||
@@ -67,7 +67,7 @@ def candidates(builds):
|
||||
def run(example):
|
||||
return subprocess.run(
|
||||
["cargo", "run", "--release", "-q", "-p", "sylpheed-formats",
|
||||
"--example", example, "--"] + [str(b) for b in builds],
|
||||
"--example", example, "--", pak] + [str(b) for b in builds],
|
||||
capture_output=True, text=True, cwd="/work", env=env).stdout
|
||||
out = []
|
||||
for line in run("rest_scale_of").splitlines():
|
||||
@@ -87,7 +87,8 @@ def main():
|
||||
path = sys.argv[1]
|
||||
spec = sys.argv[sys.argv.index("--build") + 1] if "--build" in sys.argv else "5"
|
||||
builds = [int(b) for b in spec.split(",")]
|
||||
cands = candidates(builds)
|
||||
pak = sys.argv[sys.argv.index("--pak") + 1] if "--pak" in sys.argv else "GP_TITLE"
|
||||
cands = candidates(builds, pak)
|
||||
lines = open(path).read().splitlines()
|
||||
rows = []
|
||||
for i, line in enumerate(lines):
|
||||
|
||||
Reference in New Issue
Block a user