Porting Test Drive II from SNES to PC, Part 9: Closing the 1006..1013 ownership block
The previous checkpoint closed the first direct bridge-extracted 998..1005 block with live ownership evidence.
That made the next step obvious:
push the same method one block later and see whether the same late 01:9FE5 ownership story still holds.
This checkpoint does that at frame 1013.
Why 1013 mattered
1013 is the end of the next direct bridge-extracted block:
1006..1013
The repo already had continuity notes saying that frame 1013 was still inside the same 01:9FE5 family. But continuity notes are not the same thing as a live producer-trace-backed contract.
The real question was:
- does the block still close inside the same ownership family?
- do the producer domains stay the same?
- if the visible screen keeps changing, does ownership stay flat anyway?
Those are stronger questions than βthe frame still looks roughly right.β
The checkpoint
The workflow stayed the same as before:
- extract frame
1013 - build a design pack
- run a bounded write-point probe across the whole
1006..1013block - merge that probe into a visual contract
The exact commands were:
MESEN_RELEASE_DIR=/home/nivando-soares/Mesen2/bin/linux-x64/Release \
make -C tools mesen-design-pack MESEN_FRAME=1013
MESEN_RELEASE_DIR=/home/nivando-soares/Mesen2/bin/linux-x64/Release \
MESEN_TIMEOUT_SECONDS=150 \
TD2_BOOT_PROBE_OUTPUT_PREFIX=tools/out/visual_contract_probe_1013_live/td2_boot_probe \
TD2_BOOT_PROBE_TOTAL_FRAMES=1014 \
TD2_BOOT_PROBE_TRACE_START_FRAME=1006 \
TD2_BOOT_PROBE_TRACE_END_FRAME=1013 \
TD2_BOOT_PROBE_TRACE_WRITE_POINTS='objsel=00:2101,oamaddl=00:2102,oamaddh=00:2103,oamdata=00:2104,vmaddl=00:2116,vmaddh=00:2117,vmdatal=00:2118,vmdatah=00:2119,cgadd=00:2121,cgdata=00:2122' \
TD2_BOOT_PROBE_WRITE_POINT_MAX_HITS=8192 \
./validation/run_mesen_probe_boot.sh
python3 tools/build_mesen_visual_contract.py \
tools/out/design_frame1013 \
tools/out/visual_contract_frame1013_live_probe.json \
--probe-json tools/out/visual_contract_probe_1013_live/td2_boot_probe.json
The promoted artifacts are now committed:
tools/out/visual_contract_probe_1013_live/td2_boot_probe.jsontools/out/visual_contract_frame1013_live_probe.json
What the trace showed
The probe recorded:
-
6174write hits -
0drops - exact trace window
1006..1013
The most useful result is that the callback family still does not move:
- active main callback:
01:9FE5 - active IRQ callback:
00:835F
The producer domains also still do not fork:
- OAM:
4368writes across1006..1013 - VRAM:
1806writes across1006..1012
That last detail is the new interesting one.
The block still closes under the same ownership family, but the bounded VRAM activity no longer reaches the final frame of the block.
So the useful reading is now:
- OAM stays flat
- callback family stays flat
- VRAM tapers off one frame earlier
That is exactly the kind of nuance a producer-trace-backed contract is good at exposing.
What changed visually
The fresh design pack for 1013 reports:
-
61visible sprites
That matters because the previous end-of-block proof at 1005 reported:
-
53visible sprites
So the picture is still:
- more visible overlay on screen
- same late callback family
- no control-flow fork required to explain it
That is the important distinction.
Validation
The fresh extracted frame was first compared against a new local screenshot-backed capture for 1013:
python3 tools/compare_frames.py \
tools/out/intro_loop_frame_01013_frame.png \
tools/out/mesen_frame1013/main_visible.ppm \
--diff-out tools/out/mesen_frame1013_vs_intro1013_diff.ppm
That landed at:
-
4638mismatched pixels (8.088030%)
Again, this is not a screenshot-exact checkpoint.
The bounded renderer-side validation stayed on the repo's stable Python mode7-ppu surface:
python3 tools/render_mesen_snes_bg.py \
tools/out/mesen_frame1013/vram.bin \
tools/out/mesen_frame1013/cgram.bin \
tools/out/mesen_frame1013/ppu_state.json \
tools/out/mesen_frame1013_mode7ppu.ppm \
--oam tools/out/mesen_frame1013/oam.bin \
--obj-renderer mode7-ppu \
--json-out tools/out/mesen_frame1013_mode7ppu.json
python3 tools/compare_frames.py \
tools/out/mesen_frame1013/main_visible.ppm \
tools/out/mesen_frame1013_mode7ppu.ppm \
--diff-out tools/out/mesen_frame1013_mode7ppu_vs_mesen1013_diff.ppm
That compare landed at:
-
10mismatched pixels (0.017439%)
That is exactly the same practical surface the earlier bridge-visible docs already expected for frame 1013.
Why this checkpoint is useful
This is not a flashy checkpoint. It is a clarifying one.
After 998 and 1005, the repo could already say:
- the first direct bridge-extracted block is ownership-stable
After 1013, it can now say:
- the next block is also ownership-stable
- but the VRAM part of the bounded write window no longer reaches the last frame of the block
That is a better statement than simply βthe same callback still appears in a probe log.β
Now the archaeology lane has live ownership closure on two consecutive direct bridge-extracted blocks:
998..10051006..1013
That is meaningful progress.
What comes next
The next step is the same pattern one block later:
- extend the live ownership surface to frame
1021
That closes the next direct bridge-extracted 1014..1021 block and shows whether the same flat ownership story still holds there too.
The headline for this checkpoint is simple:
the 1006..1013 block is now closed by live ownership evidence, and it adds one useful nuance: bounded VRAM writes stop one frame before the end of the block.
United States
NORTH AMERICA
Related News
CBS News Shutters Radio Service After Nearly a Century
5h ago
White House Unveils National AI Policy Framework To Limit State Power
5h ago
Officer Leaks Location of French Aircraft Carrier With Strava Run
5h ago
Microsoft Says It Is Fixing Windows 11
5h ago
NASA's Hubble Unexpectedly Catches Comet Breaking Up
5h ago