Reconstruct _main_loop from the exact Claude packet using semantic helper names, authentic types, and owner-header prototypes. Keep collision timing declarations behind the collision debug/log boundary so units.obj remains exact.
Reconstruct three bounded functions in network_messages.obj against the
January target object:
initialize_network_game_packets 0x10 padded, 2 relocations
network_event 0x60 padded, 8 relocations
decode_network_game_message 0xa0 padded, 8 relocations
All three are proven exact by coff_compare.py: padded size, normalized
hash, and every relocation offset, type, resolved target and addend.
Parameter names and assert expressions are recovered from the target's
own assert strings. data_0030aa68 is declared with a named container
type following the initialize_key_agreement_packets convention, placing
the packet group at +0x830; its definition is deferred with the packet
definition table.
data_packet_group_decode_packet is declared in data_packet_groups.h,
whose parameter names come from the callee's assert strings.
data_packet_groups.h now includes cseries.h so it is self-sufficient for
translation units that include it without cseries.h first.
code_0011af00 (encode_network_game_message) is left dormant: it takes
message_struct, encoded_message and encoded_message_size in edi/ebx/esi
without saving them, so it uses a private register calling convention
that MSVC only selects with its sole caller, create_network_game_message,
present in the same translation unit.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* misc changes and additions
formatting changes and add structs/constants for terminal work
* match write_to_error_file and add error_global_data
* console work
* requested changes
* terminal work
100% match all terminal functions
* Formatting
---------
Co-authored-by: punpckhdq <121350336+punpckhdq@users.noreply.github.com>