DEV Community

Nivando Soares
Nivando Soares

Posted on

Porting Test Drive II from SNES to PC, Part 31: Closing the SNES top-menu signboard labels

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:

SNES top menu signboard labels

The row mapping is now:

  • $1C6A = 0 -> row 15 -> Game Options
  • $1C6A = 1 -> row 16 -> Play TDII
  • $1C6A = 2 -> row 17 -> High Score

Two wording details matter here:

  • the ROM-side label is Play TDII, not an expanded guess like Play Test Drive
  • the third signboard is High Score in this rendered row, not High 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)