FINDINGS.md §6 item 1: the Overall Rating formula is solved and live-validated (mean|residual| ≈1.8 across live-read players — see the "Live validation" subsection), and its identity was confirmed early on (exact match against both the Scouting Report and Team Roster screens for the same player/session).
What's still open is the exact in-ROM storage/computation mechanism. Every live trace attempt at the render call site (0x0008562C / 0x00085627) lands inside a bytecode/jump-table interpreter (jmp (a0), not a normal call) — confirmed independently at two separate call sites (Scouting Report and Team Roster), so it's a real architectural feature of the ROM, not a one-off. Ad-hoc live tracing has been tried from multiple angles across two sessions with consistent, well-evidenced negative results (see §7 item 1 for the specifics already ruled out).
Recommended approach, not yet attempted: either (a) properly trace the interpreter's dispatch loop as its own scoped session (map the bytecode opcodes, not just the entry jump), or (b) a VDP/tile-level approach — reading what's actually being blitted to determine the source data path independent of the CPU-side trace.
Low priority now that the formula itself is solved and live-validated — this closes a "how does the ROM actually do it" curiosity, not a "do we trust the numbers" question.
FINDINGS.md §6 item 1: the Overall Rating formula is solved and live-validated (mean|residual| ≈1.8 across live-read players — see the "Live validation" subsection), and its identity was confirmed early on (exact match against both the Scouting Report and Team Roster screens for the same player/session).
What's still open is the exact in-ROM storage/computation mechanism. Every live trace attempt at the render call site (
0x0008562C/0x00085627) lands inside a bytecode/jump-table interpreter (jmp (a0), not a normal call) — confirmed independently at two separate call sites (Scouting Report and Team Roster), so it's a real architectural feature of the ROM, not a one-off. Ad-hoc live tracing has been tried from multiple angles across two sessions with consistent, well-evidenced negative results (see §7 item 1 for the specifics already ruled out).Recommended approach, not yet attempted: either (a) properly trace the interpreter's dispatch loop as its own scoped session (map the bytecode opcodes, not just the entry jump), or (b) a VDP/tile-level approach — reading what's actually being blitted to determine the source data path independent of the CPU-side trace.
Low priority now that the formula itself is solved and live-validated — this closes a "how does the ROM actually do it" curiosity, not a "do we trust the numbers" question.