Porting Test Drive II from SNES to PC, Part 31: Closing the SNES top-menu signboard labels
The previous front-end checkpoints had already separated two different SNES
surfaces:
- the top-level three-option gate on
$1C6A - the later downstream three-slot corridor on
$0202
What was still missing was the exact text carried by the first surface.
That gap is now closed from ROM-side descriptor evidence.
The top menu is already in the 1E:8000 row family
The key callsite is 01:BAC3.
It builds the long pointer table rooted at 1E:8000, loads:
$00 = $1C6A + 0x000F
and then dispatches through L00179B.
That means the initial three-option signboard menu is not some unrelated text
surface.
It lives in the same compact descriptor family already used by the track
labels and the later settings labels.
Rows 15..17 now render directly
I promoted the row decode for 0x0F..0x11 and rendered the previews as a
single image:
The row mapping is now:
-
$1C6A = 0-> row15->Game Options -
$1C6A = 1-> row16->Play TDII -
$1C6A = 2-> row17->High Score
Two wording details matter here:
- the ROM-side label is
Play TDII, not an expanded guess likePlay Test Drive - the third signboard is
High Scorein this rendered row, notHigh Scores
So the old user-guided reading was directionally right, but the promoted
artifact now uses the exact rendered wording.
Why this matters
This closes another ownership boundary in the SNES front end:
-
$1C6A + 0x000F-> top-level signboards -
$1C7C + 0x000B-> track labels -
$0202 + 0x0008-> rolling-tire helper cycle -
0x15..0x1B-> control/sound settings labels
That makes the front-end table read much more cleanly than before.
It also means the initial menu no longer needs to be reconstructed from
longplay memory alone. The signboard labels are now directly recoverable from
the ROM.
What changes next
The next useful front-end step is not more guessing about the top menu text.
That part is done.
The next step is to use this closed signboard family together with the already
recovered configuration-menu strings to narrow the exact runtime path back into
the initial menu, while keeping it separate from the downstream $0202
corridor.

Top comments (0)