• src/doors/syncretro/syncretro.h syncretro_input.c syncretro_io.c

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Mon Jul 13 01:09:59 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/ea627e6cf2f49ebe740dcff2
    Modified Files:
    src/doors/syncretro/syncretro.h syncretro_input.c syncretro_io.c
    Log Message:
    syncretro: start on sixel when the terminal has it, and read the whole numpad

    SIXEL WAS BEING MISSED ON SYNCTERM. The door asks the terminal two questions and asks them in this order: how big are you (the grid probe inside termgfx_term_probe) and what can you do (DA1, which is where sixel is advertised). So the grid reply always comes back FIRST -- and the settle gate opened on it alone. The very next frame built the tier list while the "I do sixel" reply was still in flight, read it as "no sixel", and started the
    player on a TEXT tier with no sixel anywhere in the F4 cycle. Whether both replies landed in one read was a matter of packet boundaries, which is why sixel would appear once in a session and never again. (The comment there claimed the settle window guaranteed DA1 had answered. It did not.)

    Wait for both answers now. And because a slow link can still answer after the window closes, the tier list rebuilds itself if sixel turns up late: a player who has not touched F4 is promoted to it -- he was on the fallback only
    because we did not know better yet -- while a player who HAS chosen a tier keeps the one he chose. Verified with the DA1 reply delayed 0, 300 and 800 ms: sixel every time, where it fell to half-block every time before.

    NUMLOCK HID HALF THE NUMPAD FROM KITTY TERMINALS. With NumLock ON the keypad reports KP_0..KP_9 (57399-57408); with it OFF the very same physical keys report the NAVIGATION functionals instead (KP_UP 57419, KP_LEFT 57417, ...). The decoder knew only the digits, so with NumLock off every numpad key fell through and was dropped -- the arrow keys drove the game and the numpad did nothing. SyncTERM was never affected: its evdev reports are physical keycodes, which NumLock does not touch.

    Both spellings fold to the same key here, deliberately. NumLock is a TYPING distinction -- it decides whether the key means "8" or "up" -- and on a game controller that key IS up: the top of a d-pad, or the 8 of the Intellivision's keypad. A player should not have to check a lock light to steer. (SyncConquer, a strategy game with a text UI, honors the distinction; a console door has no reason to.) Confirmed against a capture of a real kitty terminal rather than the spec: the codes arrive exactly as above, and the pad reads U=1 / D=1 / R=1 while the keys are held.
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net