Skip to content

Session status bits (0x564d)

The session status byte gates every phase of the link. Bit names below are behavioral (recovered from code), not original SNK symbols.

Bit Mask Behavior
0 01 accepted an FC 01 <catalog> identity
1 02 accepted an FD 01 <catalog> identity; later selects the gameplay ordering branch
2 04 per-tick timeout/error event; cleared on tick entry, set by expired countdowns
3 08 enables the F8 gameplay branch
4 10 normal-transport busy/progress marker
5 20 session initialized / handshake-complete
6 40 identity frame validated
7 80 active-session enable — gates entry into normal (F0) transport

The bit 7 / bit 3 gate

The active handler (0x206f68) chooses transport sub-mode from bit 7:

206f6d  bit 7,(0x564d)
206f72  jrl Z,0x207447      ; bit7 CLEAR → F8 gameplay branch (0x207447, gated by bit 3)
206f75  set 4,(0x564d)      ; bit7 SET   → normal F0 transport continues here

So:

  • bit 7 set → normal F0/bulk transport
  • bit 7 clear + bit 3 setF8 gameplay exchange

The transition from transport to gameplay (routine 0x20da5a) therefore clears bit 7 and sets bit 3 after the phase barrier completes (0x5651 == 0x5652 == 1), restores base control to F0, and resets the phase snapshots.

Observed vs. intuitive

"Active" (bit 7) meaning normal transport, not gameplay, is the single most counter-intuitive fact here. Executing the ROM was what pinned it down.

Values seen in a real run

From the dynamic validation trace:

Point 0x564d Bits
after accepting FC 41 0, 6
active, normal transport E1 / F1 0,5,6,7 (F1 also sets bit 4)
after F8 transition 69 0,3,5,6