DEV Community

Nivando Soares
Nivando Soares

Posted on

Porting Test Drive II from SNES to PC, Part 32: Closing the SNES top-menu transition semantics

Porting Test Drive II from SNES to PC, Part 32: Closing the SNES top-menu transition semantics

The last front-end checkpoint closed the text of the SNES top menu:

  • Game Options
  • Play TDII
  • High Score

That was useful, but it still left one important gap:

what does each of those signboards do in the actual bank-1 flow?

That gap is now closed too.

The top menu is no longer just a text surface

The decision point is inside L00BAE8, at 01:BB7F.

That routine is the separate $1C6A top-level gate that sits before the later
downstream $0202 corridor.

The three branches now read as:

  • $1C6A = 0 / Game Options -> jsr L00C0C7 ; jmp L00BAE8
  • $1C6A = 1 / Play TDII -> return success to L008B31, which falls through to L008B3E
  • $1C6A = 2 / High Score -> lda #$FFFF ; jsr L00A3CC ; jmp L00BAE8

So the three signboards are now closed at the semantic level, not only the
rendered-label level.

Play TDII is the only advancing branch

This is the important consequence:

Play TDII is the only top-level option that actually advances into the later
front-end setup chain.

That matters because it keeps the SNES flow aligned with the user-guided
sequence:

Ballistic -> initial menu -> Play TDII -> cars -> adversary/clock -> phase -> gameplay

With the current code read, the best fit for that flow is now:

L00BAE8 -> L008B3E -> L00C20B -> L00BE76

That does not fully prove the meaning of every later surface yet.

But it does prove where the initial top-menu handoff actually happens.

Game Options now has a direct static anchor too

The Game Options branch lands in L00C0C7.

That is important because it ties the top-level signboard directly to the
already decoded settings-label family, instead of relying only on longplay
memory or UI guesswork.

So the initial menu is now closed in two ways:

  • visible signboard labels from 1E:8000 rows 15..17
  • semantic branch behavior from L00BAE8

The same signboard image still helps

The rendered rows are still the same committed descriptor family:

SNES top menu signboard labels

What changed is the meaning behind them.

What changes next

The next useful front-end target is no longer “what do these signboards say?”

That part is done.

The next target is to use the now-closed Game Options -> L00C0C7 anchor and
the user-guided menu flow to narrow the exact runtime/callback path of the
initial signboard menu itself, while keeping it separate from the downstream
$0202 corridor that starts after Play TDII.

Top comments (0)