{
  "schema_version": 1,
  "sigs_version": "3.0.3.0",
  "scope": "Incomplete reverse-engineered reference. Static layout verification does not establish field semantics or live behavior.",
  "messages": [
    {
      "id": 101,
      "hex": "0x65",
      "name": "RoomServerConnectivityResult",
      "direction": "S->C",
      "state": "lobby",
      "format": "%s %i",
      "fields": [
        {
          "name": "room_name",
          "token": "%s"
        },
        {
          "name": "status",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Lobby handler 0x10004114 displays room-server unable-to-connect/firewall warning when status=-1; other values have no visible action in this handler. Room dispatcher default -1. Underlying probe mechanism unresolved."
    },
    {
      "id": 102,
      "hex": "0x66",
      "name": "GameConnectionRequest",
      "direction": "C->S",
      "state": "game_creation",
      "format": "%s %s %i",
      "fields": [
        {
          "name": "username",
          "token": "%s"
        },
        {
          "name": "client_address",
          "token": "%s"
        },
        {
          "name": "client_integer",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Constructed by 0x10005e3d after game endpoint connect. Integer copied from same global as 111; likely client port, not proven. User live test confirmed receipt on TCP7803 after404."
    },
    {
      "id": 103,
      "hex": "0x67",
      "name": "GameTransportConfiguration",
      "direction": "S->C",
      "state": "game_creation",
      "format": "%s %s %i %i",
      "fields": [
        {
          "name": "unused_string",
          "token": "%s"
        },
        {
          "name": "transport_address",
          "token": "%s"
        },
        {
          "name": "tcp_port",
          "token": "%i"
        },
        {
          "name": "udp_port",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Static handler 0x10005244: string0 read but unused; string1 endpoint, int0 TCP port, int1 optional UDP port. Experimental sequence in docs/game-transport.md; not live-confirmed."
    },
    {
      "id": 104,
      "hex": "0x68",
      "name": "ExitNotification104",
      "direction": "C->S",
      "state": "game_state_or_client_exit",
      "format": "%s",
      "fields": [
        {
          "name": "identity_string",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Registry0x100324e2 establishes string. User observed on lobby during client exit. Exact role/string semantics not yet traced."
    },
    {
      "id": 106,
      "hex": "0x6a",
      "name": "GameControlDisconnect",
      "direction": "C->S",
      "state": "game_state_or_client_exit",
      "format": "%s",
      "fields": [
        {
          "name": "username",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Constructor0x100060cb inserts username global0x100730dc. Called by game cleanup0x10005a35. Do not infer a server acknowledgment."
    },
    {
      "id": 107,
      "hex": "0x6B",
      "name": "PingResponse",
      "direction": "C->S",
      "state": "room",
      "format": "",
      "fields": [],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 109,
      "hex": "0x6d",
      "name": "UpdateGamingProfile",
      "direction": "C->S",
      "state": "lobby",
      "format": "%s %s %c %s %s",
      "fields": [
        {
          "name": "identity_string",
          "token": "%s"
        },
        {
          "name": "username",
          "token": "%s"
        },
        {
          "name": "player_flags",
          "token": "%c"
        },
        {
          "name": "profile_string_0",
          "token": "%s"
        },
        {
          "name": "profile_string_1",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Registry 0x100325d1; constructor 0x1000bf74 duplicates local identity then profile byte and two strings. Preserve byte and text without assuming skill bit assignments."
    },
    {
      "id": 110,
      "hex": "0x6e",
      "name": "UDPTestEndpoint",
      "direction": "S->C",
      "state": "udp_test",
      "format": "%s %i",
      "fields": [
        {
          "name": "host",
          "token": "%s"
        },
        {
          "name": "port",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Experimental UDP reachability test. See traced handlers and limitations."
    },
    {
      "id": 111,
      "hex": "0x6f",
      "name": "RoomPlayerRecord",
      "direction": "C->S and S->C",
      "state": "room",
      "format": "%s %s %c %s %s %s %i",
      "fields": [
        {
          "name": "identity_string",
          "token": "%s"
        },
        {
          "name": "username",
          "token": "%s"
        },
        {
          "name": "player_flags",
          "token": "%c"
        },
        {
          "name": "profile_string_0",
          "token": "%s"
        },
        {
          "name": "profile_string_1",
          "token": "%s"
        },
        {
          "name": "address_string",
          "token": "%s"
        },
        {
          "name": "session_integer",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Format and both handlers verified statically. Positional semantics mostly provisional; outgoing strings 0 and 1 copy the local username. Server handler uses string 1 for local-user comparison."
    },
    {
      "id": 201,
      "hex": "0xc9",
      "name": "RoomMemberNotification",
      "direction": "S->C",
      "state": "room",
      "format": "%s",
      "fields": [
        {
          "name": "username",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Local username clears pending flag at 0x10010570; other usernames go to room-member UI logic. Exact startup ordering remains experimental. Game-control handler 0x10005493 clears UI status; its string is read but otherwise unused there. Experimental completion follows data 107."
    },
    {
      "id": 202,
      "hex": "0xca",
      "name": "RoomMemberDeparture",
      "direction": "S->C",
      "state": "room",
      "format": "%s",
      "fields": [
        {
          "name": "username",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Registry 0x10032668..0x10032685 uses %s; dispatch table 0x10031908 maps 202 to 0x1003122b, vtable +0x38. Room handler 0x100105bd removes the named UI entry via 0x1002144b and updates state via 0x100271da. Live validation pending."
    },
    {
      "id": 207,
      "hex": "0xCF",
      "name": "Ping",
      "direction": "S->C",
      "state": "room",
      "format": "",
      "fields": [],
      "layout_status": "reported_in_conversation",
      "notes": " Also handled by game-control 0x10005102 and game-data 0x10009bdb, both emitting 107."
    },
    {
      "id": 301,
      "hex": "0x12D",
      "name": "DLLVersionMismatch",
      "direction": "S->C",
      "state": "signup_reply",
      "format": "%f",
      "fields": [
        {
          "name": "required_dll_version",
          "token": "%f"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Signup 620 reply checks 301 at 0x1000b60a; reads float 0, displays required DLL version and returns -1. Float accessor byte-swaps binary32. Not an update transfer offer."
    },
    {
      "id": 302,
      "hex": "0x12E",
      "name": "SignupResultCandidate",
      "direction": "S->C",
      "state": "signup",
      "format": "%i %s %s",
      "fields": [
        {
          "name": "status",
          "token": "%i"
        },
        {
          "name": "session_string",
          "token": "%s"
        },
        {
          "name": "detail_string",
          "token": "%s"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": "Layout matches synchronous signup receive at 1000b72d. Reply ID is experimental; normal response path does not explicitly require 302."
    },
    {
      "id": 303,
      "hex": "0x12F",
      "name": "RoomJoinStatus",
      "direction": "S->C",
      "state": "joining_room",
      "format": "%i",
      "fields": [
        {
          "name": "status",
          "token": "%i"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 304,
      "hex": "0x130",
      "name": "RoomCreationStatusResponse",
      "direction": "S->C",
      "state": "creating_room",
      "format": "%i",
      "fields": [
        {
          "name": "status",
          "token": "%i"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 305,
      "hex": "0x131",
      "name": "Unknown",
      "direction": "S->C",
      "state": "lobby",
      "format": "%i",
      "fields": [
        {
          "name": "field_0",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Lobby handler 0x100029dd reads integer 0 and discards it, returning 0. Purpose unresolved. Room handler returns -1. 0x10019007 references string resource 305, not a message sender."
    },
    {
      "id": 306,
      "hex": "0x132",
      "name": "AddRoom",
      "direction": "S->C",
      "state": "lobby",
      "format": "%s %s %i %i %i %i %c %s %s %s %i",
      "fields": [
        {
          "name": "room_name",
          "token": "%s"
        },
        {
          "name": "game_type",
          "token": "%s"
        },
        {
          "name": "room_id",
          "token": "%i"
        },
        {
          "name": "num_players",
          "token": "%i"
        },
        {
          "name": "unknown1",
          "token": "%i"
        },
        {
          "name": "unknown2",
          "token": "%i"
        },
        {
          "name": "unknown3",
          "token": "%c"
        },
        {
          "name": "password",
          "token": "%s"
        },
        {
          "name": "description",
          "token": "%s"
        },
        {
          "name": "room_server_address",
          "token": "%s"
        },
        {
          "name": "room_server_port",
          "token": "%i"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 308,
      "hex": "0x134",
      "name": "FindOpponentResult",
      "direction": "S->C",
      "state": "lobby",
      "format": "%i",
      "fields": [
        {
          "name": "room_id",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Handler 10002d73 calls 100238d2; -1 not found, otherwise room ID."
    },
    {
      "id": 309,
      "hex": "0x135",
      "name": "RemoveRoom",
      "direction": "S->C",
      "state": "lobby",
      "format": "%s",
      "fields": [
        {
          "name": "room_name",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Lobby handler 0x10003278 reads a string and calls 0x1002144b; tree item removed with TVM_DELETEITEM at 0x10021607. Live validation pending."
    },
    {
      "id": 310,
      "hex": "0x136",
      "name": "UpdateRoomPopulation",
      "direction": "S->C",
      "state": "lobby",
      "format": "%i %i",
      "fields": [
        {
          "name": "room_id",
          "token": "%i"
        },
        {
          "name": "population",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Registry0x1003298e; lobby310 handler0x10002d9c reads room ID then population. UI0x10022d52 matches room+0x9c and updates population/total. Lab counts connected room clients including game members; historical counting policy unknown."
    },
    {
      "id": 311,
      "hex": "0x137",
      "name": "LoginResult_candidate",
      "direction": "S->C (hypothesis)",
      "state": "login_pending (hypothesis)",
      "format": "%i %s",
      "fields": [
        {
          "name": "status_candidate",
          "token": "%i"
        },
        {
          "name": "session_info_candidate",
          "token": "%s"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": "Format reported from DLL; login role remains hypothesis."
    },
    {
      "id": 314,
      "hex": "0x13a",
      "name": "MemberProfile",
      "direction": "S->C",
      "state": "lobby",
      "format": "%s %s %s %s %s %s %s %s %s %s %s %l %l %i %c %c %c %c %c %c",
      "fields": [
        {
          "name": "membership_string_0",
          "token": "%s"
        },
        {
          "name": "membership_string_1",
          "token": "%s"
        },
        {
          "name": "membership_string_2",
          "token": "%s"
        },
        {
          "name": "membership_string_3",
          "token": "%s"
        },
        {
          "name": "membership_string_4",
          "token": "%s"
        },
        {
          "name": "membership_string_5",
          "token": "%s"
        },
        {
          "name": "membership_string_6",
          "token": "%s"
        },
        {
          "name": "membership_string_7",
          "token": "%s"
        },
        {
          "name": "membership_string_8",
          "token": "%s"
        },
        {
          "name": "membership_string_9",
          "token": "%s"
        },
        {
          "name": "membership_string_10",
          "token": "%s"
        },
        {
          "name": "membership_short_0",
          "token": "%l"
        },
        {
          "name": "membership_short_1",
          "token": "%l"
        },
        {
          "name": "membership_integer",
          "token": "%i"
        },
        {
          "name": "membership_byte_0",
          "token": "%c"
        },
        {
          "name": "membership_byte_1",
          "token": "%c"
        },
        {
          "name": "membership_byte_2",
          "token": "%c"
        },
        {
          "name": "membership_byte_3",
          "token": "%c"
        },
        {
          "name": "membership_byte_4",
          "token": "%c"
        },
        {
          "name": "membership_byte_5",
          "token": "%c"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Registry and 314 handler 10003642 / 622 constructor 1000bb6f. Numeric enum meanings provisional."
    },
    {
      "id": 401,
      "hex": "0x191",
      "name": "RoomInitialization",
      "direction": "S->C",
      "state": "room_initialization",
      "format": "%i %i %i %i %i %i %i %i %i %i %i %i %i %i",
      "fields": [
        {
          "name": "room_id",
          "token": "%i"
        },
        {
          "name": "min_game_players",
          "token": "%i"
        },
        {
          "name": "max_game_players",
          "token": "%i"
        },
        {
          "name": "room_parameter_3",
          "token": "%i"
        },
        {
          "name": "room_parameter_4",
          "token": "%i"
        },
        {
          "name": "room_parameter_5",
          "token": "%i"
        },
        {
          "name": "room_parameter_6",
          "token": "%i"
        },
        {
          "name": "room_parameter_7",
          "token": "%i"
        },
        {
          "name": "room_parameter_8",
          "token": "%i"
        },
        {
          "name": "room_parameter_9",
          "token": "%i"
        },
        {
          "name": "room_parameter_10",
          "token": "%i"
        },
        {
          "name": "room_parameter_11",
          "token": "%i"
        },
        {
          "name": "room_parameter_12",
          "token": "%i"
        },
        {
          "name": "room_parameter_13",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Room ID plus 13 configuration integers. Fields1/2 feed Create Game player range; defaults2/4 are test choices. Remaining eleven parameters remain zero placeholders. Field 13 maps to room +0x88; value 3 is required by the conditional UDP initialization path in 103. See docs/udp-setup.md; live verification pending."
    },
    {
      "id": 402,
      "hex": "0x192",
      "name": "RoomListCompletion",
      "direction": "S->C",
      "state": "room_initialization",
      "format": "%i %i",
      "fields": [
        {
          "name": "context_integer",
          "token": "%i"
        },
        {
          "name": "remaining_member_count",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Two ints verified. Second=0 clears status/busy cursor immediately; nonzero seeds counter decremented by nonlocal 201 notifications. First read but unused in handler."
    },
    {
      "id": 403,
      "hex": "0x193",
      "name": "GameListing",
      "direction": "S->C",
      "state": "game_creation",
      "format": "%s %i %i %i %i %s %i",
      "fields": [
        {
          "name": "game_name",
          "token": "%s"
        },
        {
          "name": "setting_0",
          "token": "%i"
        },
        {
          "name": "setting_1",
          "token": "%i"
        },
        {
          "name": "setting_2",
          "token": "%i"
        },
        {
          "name": "setting_3",
          "token": "%i"
        },
        {
          "name": "game_server_address",
          "token": "%s"
        },
        {
          "name": "game_server_port",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Registry and handler verified. Experimental listing mirrors first four 605 integers; final string/int are empty/zero placeholders. User screenshot confirmed game tree listing; full integer semantics remain provisional. Endpoint fields verified through 0x1001cb0b offsets0x90/0x94 and 0x10023509; now filled with reachable game-control endpoint."
    },
    {
      "id": 404,
      "hex": "0x194",
      "name": "GameCreationStatus",
      "direction": "S->C",
      "state": "game_creation",
      "format": "%i %s %i",
      "fields": [
        {
          "name": "status",
          "token": "%i"
        },
        {
          "name": "game_server_address",
          "token": "%s"
        },
        {
          "name": "game_server_port",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Status zero configures/connects game connection, which sends 102. Handler 0x1001023a. User live test confirmed endpoint handoff and subsequent102."
    },
    {
      "id": 405,
      "hex": "0x195",
      "name": "GameStartedNotification",
      "direction": "S->C",
      "state": "room_game_start",
      "format": "%s",
      "fields": [
        {
          "name": "game_name",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Room handler0x1001086b checks current game then calls0x10001d22(1), reaching TellMeGameConnected success callback. Registry0x10032b9e. Experimental reply to619 via combined lab, not historical sequence confirmation."
    },
    {
      "id": 406,
      "hex": "0x196",
      "name": "RemoveGame",
      "direction": "S->C",
      "state": "room",
      "format": "%s",
      "fields": [
        {
          "name": "game_name",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Registry at 0x10032be4; room dispatch vtable +0xb4 -> 0x10010675 reads string0 and removes named UI entry via 0x1002144b. Live empty-game removal verification pending."
    },
    {
      "id": 407,
      "hex": "0x197",
      "name": "GameInvitation",
      "direction": "S->C",
      "state": "room",
      "format": "%s %i %i %s",
      "fields": [
        {
          "name": "game_name",
          "token": "%s"
        },
        {
          "name": "coordinate_0",
          "token": "%i"
        },
        {
          "name": "coordinate_1",
          "token": "%i"
        },
        {
          "name": "inviter",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Invite handler 10010c5f; reply constructor 10017d08; result handler 1001071e."
    },
    {
      "id": 408,
      "hex": "0x198",
      "name": "InvitationResult",
      "direction": "S->C",
      "state": "room",
      "format": "%i %s",
      "fields": [
        {
          "name": "accepted",
          "token": "%i"
        },
        {
          "name": "recipient",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Invite handler 10010c5f; reply constructor 10017d08; result handler 1001071e."
    },
    {
      "id": 409,
      "hex": "0x199",
      "name": "GameJoinPermissionRequest",
      "direction": "S->C",
      "state": "room",
      "format": "%s %i %i %s",
      "fields": [
        {
          "name": "game_name",
          "token": "%s"
        },
        {
          "name": "coordinate_0",
          "token": "%i"
        },
        {
          "name": "coordinate_1",
          "token": "%i"
        },
        {
          "name": "requester",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Registry 0x10032c6e, format 0x10070204; host prompt 0x100109b5."
    },
    {
      "id": 410,
      "hex": "0x19a",
      "name": "GameJoinApproval",
      "direction": "S->C",
      "state": "room_game_membership",
      "format": "%i",
      "fields": [
        {
          "name": "status",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Room handler0x1000fceb: zero connects the preconfigured game endpoint; -1 rejected. Endpoint comes from403, not this reply."
    },
    {
      "id": 411,
      "hex": "0x19b",
      "name": "GameMemberJoined",
      "direction": "S->C",
      "state": "room_game_membership",
      "format": "%s %i %i %s",
      "fields": [
        {
          "name": "game_name",
          "token": "%s"
        },
        {
          "name": "slot_coordinate_0",
          "token": "%i"
        },
        {
          "name": "slot_coordinate_1",
          "token": "%i"
        },
        {
          "name": "username",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Room handler0x1000f4c5 calls0x1002107b to place member under game. Integers used as slot coordinates by0x1000f39f; 0,0 is a provisional single-player choice."
    },
    {
      "id": 412,
      "hex": "0x19c",
      "name": "GameMemberLeft",
      "direction": "S->C",
      "state": "room_game_membership",
      "format": "%s %i %i %s",
      "fields": [
        {
          "name": "game_name",
          "token": "%s"
        },
        {
          "name": "slot_coordinate_0",
          "token": "%i"
        },
        {
          "name": "slot_coordinate_1",
          "token": "%i"
        },
        {
          "name": "username",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Registry0x10032ce0; dispatch offset0xcc ->0x1000fef4. Removes game player, cleans local game state through0x10022638 and returns player to room through0x10020ac2. 0,0 coordinates match experimental411; reply ordering unverified live."
    },
    {
      "id": 601,
      "hex": "0x259",
      "name": "Login",
      "direction": "C->S",
      "state": "lobby_connected",
      "format": "%s %s",
      "fields": [
        {
          "name": "username",
          "token": "%s"
        },
        {
          "name": "password",
          "token": "%s"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": " Also constructed on game-data TCP by 0x100141df after 103. This asynchronous path does not await 311; second-string semantics on that channel are unresolved and redacted."
    },
    {
      "id": 602,
      "hex": "0x25A",
      "name": "JoinRoom",
      "direction": "C->S",
      "state": "lobby",
      "format": "%i",
      "fields": [
        {
          "name": "room_id",
          "token": "%i"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 603,
      "hex": "0x25B",
      "name": "CreateRoom",
      "direction": "C->S",
      "state": "lobby",
      "format": "%s %s %s %i %c %s",
      "fields": [
        {
          "name": "room_name",
          "token": "%s"
        },
        {
          "name": "description",
          "token": "%s"
        },
        {
          "name": "game_type",
          "token": "%s"
        },
        {
          "name": "max_players",
          "token": "%i"
        },
        {
          "name": "room_flags",
          "token": "%c"
        },
        {
          "name": "password",
          "token": "%s"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": "Dialog 0x10004e13 sets byte at +0x6c to 1 unconditionally. Password checkbox is +0x88, separate from transmitted byte. Previous use_password label was incorrect. Password text remains last string."
    },
    {
      "id": 604,
      "hex": "0x25C",
      "name": "Unknown",
      "direction": "unknown",
      "state": "unknown",
      "format": "",
      "fields": [],
      "layout_status": "verified_sierranw_static",
      "notes": "Fieldless registry entry at 0x100330ec. Room/lobby virtual offset 0x120 resolves to default -1 handler 0x100320f0. No direct sender found; purpose/direction unresolved."
    },
    {
      "id": 605,
      "hex": "0x25D",
      "name": "CreateGame",
      "direction": "C->S",
      "state": "room",
      "format": "%s %i %i %i %i %i %i",
      "fields": [
        {
          "name": "game_name",
          "token": "%s"
        },
        {
          "name": "selected_players_0",
          "token": "%i"
        },
        {
          "name": "selected_players_1",
          "token": "%i"
        },
        {
          "name": "setting_2",
          "token": "%i"
        },
        {
          "name": "setting_3",
          "token": "%i"
        },
        {
          "name": "unknown_4",
          "token": "%i"
        },
        {
          "name": "unknown_5",
          "token": "%i"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": "Observed on Create Game; first two integers come from selected player count. Last two set to -1 by caller; remaining semantics unresolved."
    },
    {
      "id": 606,
      "hex": "0x25e",
      "name": "InvitePlayer",
      "direction": "C->S",
      "state": "room",
      "format": "%s %i %i %s",
      "fields": [
        {
          "name": "game_name",
          "token": "%s"
        },
        {
          "name": "coordinate_0",
          "token": "%i"
        },
        {
          "name": "coordinate_1",
          "token": "%i"
        },
        {
          "name": "recipient",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Invite handler 10010c5f; reply constructor 10017d08; result handler 1001071e."
    },
    {
      "id": 607,
      "hex": "0x25f",
      "name": "InviteReply",
      "direction": "C->S",
      "state": "room",
      "format": "%s %i",
      "fields": [
        {
          "name": "inviter",
          "token": "%s"
        },
        {
          "name": "accepted",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Invite handler 10010c5f; reply constructor 10017d08; result handler 1001071e."
    },
    {
      "id": 608,
      "hex": "0x260",
      "name": "RequestGameJoin",
      "direction": "C->S",
      "state": "room_join_approval",
      "format": "%s %s %i %i",
      "fields": [
        {
          "name": "game_name",
          "token": "%s"
        },
        {
          "name": "join_string",
          "token": "%s"
        },
        {
          "name": "unknown_0",
          "token": "%i"
        },
        {
          "name": "unknown_1",
          "token": "%i"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": "Live Join Game request Test,BOGUS,-1,-1. Constructor 0x10017717. Second string semantics unresolved."
    },
    {
      "id": 609,
      "hex": "0x261",
      "name": "GameJoinDecision",
      "direction": "C->S",
      "state": "unknown",
      "format": "%s %i",
      "fields": [
        {
          "name": "requester",
          "token": "%s"
        },
        {
          "name": "accepted",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Host reply to 409; 1 accepts, 0 refuses. Constructor 0x10017b6d."
    },
    {
      "id": 610,
      "hex": "0x262",
      "name": "Unknown",
      "direction": "unknown",
      "state": "unknown",
      "format": "%s %i %s",
      "fields": [
        {
          "name": "field_0",
          "token": "%s"
        },
        {
          "name": "field_1",
          "token": "%i"
        },
        {
          "name": "field_2",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Layout confirmed in registry. Purpose and direction unresolved; no direct sender found in inspected disassembly. Room/lobby handlers return -1. See evidence note."
    },
    {
      "id": 611,
      "hex": "0x263",
      "name": "Unknown",
      "direction": "unknown",
      "state": "unknown",
      "format": "%s %i",
      "fields": [
        {
          "name": "field_0",
          "token": "%s"
        },
        {
          "name": "field_1",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Layout confirmed in registry. Purpose and direction unresolved; no direct sender found in inspected disassembly. Room/lobby handlers return -1. See evidence note."
    },
    {
      "id": 612,
      "hex": "0x264",
      "name": "FindOpponent",
      "direction": "unknown",
      "state": "unknown",
      "format": "%s",
      "fields": [
        {
          "name": "username",
          "token": "%s"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 613,
      "hex": "0x265",
      "name": "Unknown",
      "direction": "unknown",
      "state": "unknown",
      "format": "%l",
      "fields": [
        {
          "name": "field_0",
          "token": "%l"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 614,
      "hex": "0x266",
      "name": "Unknown",
      "direction": "unknown",
      "state": "unknown",
      "format": "",
      "fields": [],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 615,
      "hex": "0x267",
      "name": "LeaveGameRequest",
      "direction": "C->S",
      "state": "in_game",
      "format": "",
      "fields": [],
      "layout_status": "reported_in_conversation",
      "notes": "Fieldless constructor0x10017c49, caller0x100225a6 also sends game106. Live observed on Leave Game. Experimental reply412."
    },
    {
      "id": 616,
      "hex": "0x268",
      "name": "RequestSIGSVersionCheck",
      "direction": "C->S",
      "state": "validation",
      "format": "%s %s",
      "fields": [
        {
          "name": "game_region",
          "token": "%s"
        },
        {
          "name": "sigs_version_candidate",
          "token": "%s"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": "Live observation: Outpost2_US, 3.0.3.0; second string likely SIGS component version."
    },
    {
      "id": 617,
      "hex": "0x269",
      "name": "RequestUpdateDownload",
      "direction": "C->S",
      "state": "validation_update_offer",
      "format": "",
      "fields": [],
      "layout_status": "verified_snwvalid_static",
      "notes": "Sent after user accepts update offer."
    },
    {
      "id": 619,
      "hex": "0x26b",
      "name": "StartGameRequest",
      "direction": "C->S",
      "state": "game_control",
      "format": "",
      "fields": [],
      "layout_status": "verified_sierranw_static",
      "notes": "Starting Game UI routine0x10022529 calls0x100062a0; constructs fieldless619 at0x100062c2. Registry0x10033386 uses empty format. Observe only; no start reply or launch implementation."
    },
    {
      "id": 620,
      "hex": "0x26C",
      "name": "SignupRequest",
      "direction": "C->S",
      "state": "signup",
      "format": "%s %s %s %s %s %s %s %s %s %s %s %s %l %l %i %c %c %c %c %c %c",
      "fields": [
        {
          "name": "username",
          "token": "%s"
        },
        {
          "name": "real_name",
          "token": "%s"
        },
        {
          "name": "registration_password_placeholder",
          "token": "%s"
        },
        {
          "name": "registration_string_3",
          "token": "%s"
        },
        {
          "name": "registration_string_4",
          "token": "%s"
        },
        {
          "name": "registration_string_5",
          "token": "%s"
        },
        {
          "name": "registration_string_6",
          "token": "%s"
        },
        {
          "name": "registration_string_7",
          "token": "%s"
        },
        {
          "name": "registration_string_8",
          "token": "%s"
        },
        {
          "name": "registration_string_9",
          "token": "%s"
        },
        {
          "name": "registration_string_10",
          "token": "%s"
        },
        {
          "name": "registration_string_11",
          "token": "%s"
        },
        {
          "name": "registration_short_0",
          "token": "%l"
        },
        {
          "name": "registration_short_1",
          "token": "%l"
        },
        {
          "name": "registration_integer",
          "token": "%i"
        },
        {
          "name": "registration_byte_0",
          "token": "%c"
        },
        {
          "name": "registration_byte_1",
          "token": "%c"
        },
        {
          "name": "registration_byte_2",
          "token": "%c"
        },
        {
          "name": "registration_byte_3",
          "token": "%c"
        },
        {
          "name": "registration_byte_4",
          "token": "%c"
        },
        {
          "name": "registration_byte_5",
          "token": "%c"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Corrected via dialog validation 10008895/100088cd and copies 1000e35e..1000e37d: string0 member name, string1 real name. String2 constructed from literal PASSWORD at 1001e05b/1001e104. Never authenticate against this placeholder."
    },
    {
      "id": 621,
      "hex": "0x26D",
      "name": "PasswordChangeRequest_candidate",
      "direction": "C->S",
      "state": "account_management",
      "format": "%s %s",
      "fields": [
        {
          "name": "password_change_string_0",
          "token": "%s"
        },
        {
          "name": "password_change_string_1",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Registry 100333e2 uses format at 100701f0. User identifies operation as password change; field semantics and response remain unresolved. Both fields must be redacted."
    },
    {
      "id": 622,
      "hex": "0x26e",
      "name": "UpdateMemberProfile",
      "direction": "C->S",
      "state": "lobby",
      "format": "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %l %l %i %c %c %c %c %c %c",
      "fields": [
        {
          "name": "membership_string_0",
          "token": "%s"
        },
        {
          "name": "membership_string_1",
          "token": "%s"
        },
        {
          "name": "membership_string_2",
          "token": "%s"
        },
        {
          "name": "membership_string_3",
          "token": "%s"
        },
        {
          "name": "membership_string_4",
          "token": "%s"
        },
        {
          "name": "membership_string_5",
          "token": "%s"
        },
        {
          "name": "membership_string_6",
          "token": "%s"
        },
        {
          "name": "membership_string_7",
          "token": "%s"
        },
        {
          "name": "membership_string_8",
          "token": "%s"
        },
        {
          "name": "membership_string_9",
          "token": "%s"
        },
        {
          "name": "membership_string_10",
          "token": "%s"
        },
        {
          "name": "membership_string_11",
          "token": "%s"
        },
        {
          "name": "membership_string_12",
          "token": "%s"
        },
        {
          "name": "membership_string_13",
          "token": "%s"
        },
        {
          "name": "membership_short_0",
          "token": "%l"
        },
        {
          "name": "membership_short_1",
          "token": "%l"
        },
        {
          "name": "membership_integer",
          "token": "%i"
        },
        {
          "name": "membership_byte_0",
          "token": "%c"
        },
        {
          "name": "membership_byte_1",
          "token": "%c"
        },
        {
          "name": "membership_byte_2",
          "token": "%c"
        },
        {
          "name": "membership_byte_3",
          "token": "%c"
        },
        {
          "name": "membership_byte_4",
          "token": "%c"
        },
        {
          "name": "membership_byte_5",
          "token": "%c"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Corrected: 14 strings, two shorts, one integer, SIX bytes. Registry 10070124 and constructor 1000bc60..1000bca3 agree; previous catalog incorrectly required a seventh byte."
    },
    {
      "id": 626,
      "hex": "0x272",
      "name": "RequestGameVersionCheck",
      "direction": "C->S",
      "state": "validation",
      "format": "%s %s",
      "fields": [
        {
          "name": "game_identifier",
          "token": "%s"
        },
        {
          "name": "game_version",
          "token": "%s"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": "Live observation: OUTPOST2, 1.2.0.5. Field names corrected from original export."
    },
    {
      "id": 627,
      "hex": "0x273",
      "name": "SetGameState",
      "direction": "C->S",
      "state": "game_state_or_client_exit",
      "format": "%s %i %i",
      "fields": [
        {
          "name": "game_name",
          "token": "%s"
        },
        {
          "name": "state_value_0",
          "token": "%i"
        },
        {
          "name": "state_value_1",
          "token": "%i"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Export SetGameState0x10013293 calls constructor0x10018083, inserting current game name and two supplied integers; meanings unresolved. Sent via room object0x10073094. Observed during exit but not proven a leave request."
    },
    {
      "id": 631,
      "hex": "0x277",
      "name": "UserComplaint",
      "direction": "C->S",
      "state": "lobby",
      "format": "%s %s",
      "fields": [
        {
          "name": "complaint_string_0",
          "token": "%s"
        },
        {
          "name": "complaint_string_1",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Registry 100335ae; send-only constructor 1000c269; field labels provisional."
    },
    {
      "id": 634,
      "hex": "0x27a",
      "name": "UDPTestRequest",
      "direction": "C->S",
      "state": "udp_test",
      "format": "%s",
      "fields": [
        {
          "name": "username",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Experimental UDP reachability test. See traced handlers and limitations."
    },
    {
      "id": 701,
      "hex": "0x2bd",
      "name": "PublicRoomChat",
      "direction": "C<->S",
      "state": "room",
      "format": "%s %s",
      "fields": [
        {
          "name": "username",
          "token": "%s"
        },
        {
          "name": "text",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Registry 0x1003367e uses %s %s. Sender constructor 0x10017e38 fills local username then text. Room receiver 0x10010e90 displays same fields. Server broadcast requires live verification."
    },
    {
      "id": 702,
      "hex": "0x2be",
      "name": "PrivateRoomChat",
      "direction": "C<->S",
      "state": "room",
      "format": "%s %s %s",
      "fields": [
        {
          "name": "recipient",
          "token": "%s"
        },
        {
          "name": "username",
          "token": "%s"
        },
        {
          "name": "text",
          "token": "%s"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Registry 0x100336ac. Constructor 0x10017f23 puts target in string0, local sender in string1 and text in string2; receiver 0x1001101f renders sender/text. Recipient-only routing; live verification pending."
    },
    {
      "id": 703,
      "hex": "0x2bf",
      "name": "TCPBroadcastData",
      "direction": "C->S",
      "state": "game_data",
      "format": "%b",
      "fields": [
        {
          "name": "data",
          "token": "%b"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Binary block has BE32 byte length. Routing and slot semantics experimental; dedicated relay adapter only."
    },
    {
      "id": 704,
      "hex": "0x2c0",
      "name": "TCPPointData",
      "direction": "C<->S",
      "state": "game_data",
      "format": "%i %i %b",
      "fields": [
        {
          "name": "peer_slot_candidate",
          "token": "%i"
        },
        {
          "name": "reserved_candidate",
          "token": "%i"
        },
        {
          "name": "data",
          "token": "%b"
        }
      ],
      "layout_status": "verified_sierranw_static",
      "notes": "Binary block has BE32 byte length. Routing and slot semantics experimental; dedicated relay adapter only."
    },
    {
      "id": 901,
      "hex": "0x385",
      "name": "ConnectionSuccessful",
      "direction": "S->C",
      "state": "validation",
      "format": "%s %i",
      "fields": [
        {
          "name": "next_server_host",
          "token": "%s"
        },
        {
          "name": "next_server_port",
          "token": "%i"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 902,
      "hex": "0x386",
      "name": "Unknown",
      "direction": "unknown",
      "state": "unknown",
      "format": "",
      "fields": [],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 903,
      "hex": "0x387",
      "name": "Unknown",
      "direction": "unknown",
      "state": "unknown",
      "format": "%s %i",
      "fields": [
        {
          "name": "field_0",
          "token": "%s"
        },
        {
          "name": "field_1",
          "token": "%i"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 904,
      "hex": "0x388",
      "name": "Unknown",
      "direction": "unknown",
      "state": "unknown",
      "format": "%i",
      "fields": [
        {
          "name": "field_0",
          "token": "%i"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 905,
      "hex": "0x389",
      "name": "Unknown",
      "direction": "unknown",
      "state": "unknown",
      "format": "%b",
      "fields": [
        {
          "name": "field_0",
          "token": "%b"
        }
      ],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 906,
      "hex": "0x38A",
      "name": "Unknown",
      "direction": "unknown",
      "state": "unknown",
      "format": "",
      "fields": [],
      "layout_status": "reported_in_conversation",
      "notes": ""
    },
    {
      "id": 907,
      "hex": "0x38B",
      "name": "GameRequiresUpdate",
      "direction": "S->C",
      "state": "validation",
      "format": "%i %i %l",
      "fields": [
        {
          "name": "status",
          "token": "%i"
        },
        {
          "name": "download_size",
          "token": "%i"
        },
        {
          "name": "update_flag",
          "token": "%l"
        }
      ],
      "layout_status": "verified_snwvalid_static",
      "notes": "%i %i %l confirmed; %l is 16-bit big-endian. Status >=0 skips update path after 626. Test response 907(0,0,0); live validation pending. See docs/validation-analysis.md."
    }
  ]
}
