Drew T
d2b48b7680
feat(phase-30): tools/o0_subsplit.py — the T2 carve-within-a-carve driver; +3 banked in ov_SC03_015
...
Promotes the proven probe (commit:1266) into a real tool, and validates it FIRST-TRY on a
fresh overlay.
tools/o0_subsplit.py <ov> --lo <vram> --hi <vram>:
- derives the range's contents from the SOURCE ANCHORS (overlay_src_split.parse_overlay_c:
`asm` = unmatched stub, `define`/`def`/`nonmatch` = already matched), NEVER from an asm
scan -- a matched fn emits no .s, which is exactly the blindness that made the range look
like a clean contiguous run (SS126 / SS124's shape);
- computes the -O0 bound as (address range MINUS already-matched bodies) and emits ONE
sub-region per maximal run of unmatched anchors (K matched islands => K+1 regions);
- names each `<ov>_o0<letter>` picking free suffixes, so the widened Makefile glob selects
them; refuses loudly if it runs out or if the range spans >1 object or is already -O0;
- honours the one-carve-per-region law (forces a cut at every already-banked jr in the
object) and reuses jr_isolate_all's plan/build_new_config/ascending-unique validation
verbatim, so carve-repoint + source-repartition stay on the proven path;
- warns (does not refuse) when a stub in an -O0 run lacks the frame-pointer prologue --
the byte-gate is the arbiter, not the heuristic.
VALIDATION on ov_SC03_015 (untouched by the manual probe): the tool independently derived the
SAME structure found by hand on ov_SC03_014 -- 2 matched -O2 islands (func_80184440,
func_801848E4), 2 -O0 regions (8 + 7 fns), same 5 cuts. Sub-split -> BYTE-IDENTICAL. Then 3
drafts, each global DERIVED FROM THAT OVERLAY'S OWN ASM (%hi operand) rather than copied:
3/3 match_one --o0 MATCH (22 ins), 3/3 through the whole-binary gate.
BANKED this commit: func_801846E4 / func_8018473C / func_80184794 in ov_SC03_015 (6 across
the two overlays now). The other 24 stubs in the region are undrafted -- the route makes them
DRAFTABLE (they were un-bankable at any effort before); drafting them is crack-wave work.
R22 CLEAN-FLEET: extract-all 139/139 (+main); check-all 140 passed, 0 failed of 140.
cookbook SS126 (the address-range-is-not-an-optimization-region law + the probe ladder).
2026-07-31 08:41:54 -06:00
..
2026-06-16 19:02:14 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 16:44:01 -06:00
2026-06-16 16:44:01 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 15:39:52 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 16:44:01 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-07-15 18:33:37 -06:00
2026-07-15 18:33:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-07-15 18:33:37 -06:00
2026-07-15 18:33:37 -06:00
2026-06-15 22:50:55 -06:00
2026-06-14 12:05:38 -06:00
2026-07-31 07:25:47 -06:00
2026-07-31 08:03:08 -06:00
2026-07-28 17:04:09 -06:00
2026-07-28 17:04:09 -06:00
2026-07-28 17:04:09 -06:00
2026-07-28 17:04:09 -06:00
2026-07-28 17:04:09 -06:00
2026-07-28 17:04:09 -06:00
2026-07-28 17:04:09 -06:00
2026-07-28 17:04:09 -06:00
2026-07-28 15:16:38 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-31 08:36:42 -06:00
2026-07-31 08:41:54 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-31 08:03:08 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 01:03:33 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-30 22:22:35 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 15:47:52 -06:00
2026-07-28 15:47:52 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 17:27:20 -06:00
2026-07-28 15:47:52 -06:00
2026-07-28 15:47:52 -06:00
2026-06-15 23:00:51 -06:00
2026-07-14 10:12:19 -06:00
2026-06-16 16:44:01 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-18 22:58:15 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-07-19 00:05:52 -06:00
2026-06-14 03:19:23 -06:00
2026-06-14 03:19:23 -06:00
2026-07-07 22:01:58 -06:00
2026-07-14 10:12:19 -06:00
2026-07-14 10:12:19 -06:00