Skip to content

Symbol Map — Organized Reference

FA.SMS ships with Jane's Fighters Anthology and contains 3,829 MSVC C++ mangled symbols with virtual addresses spanning 0x004010000x005937E0. This document organizes them by address range into functional subsystems and highlights format-related entry points.

Provenance: Ghidra static analysis of the game executable with FA.SMS symbols applied; the file itself is specified in formats/SMS.md. Confidence markers follow spec-authoring.md: confirmed · inferred · unknown.

Reconstruction program: for subsystems the game-executable reconstruction program (epic #209) has completed, the machine-readable symbol database and its per-subsystem doc are canonical (they include recovered names beyond FA.SMS, mechanically checked against the Ghidra project). This page stays the FA.SMS overview and the reference for ranges not yet migrated.


Summary Table

Subsystem Address Range Approx. Symbol Count
Network (NET/MP/SER) 0x401000–0x409000 ~60
HUD / cockpit display 0x405E30–0x40AE50 ~40
Core shell / menu 0x40AE50–0x421C70 ~90
Sound / music 0x432920–0x435F80 ~70
Memory manager (MM) 0x435C60–0x436320 ~35
Campaign map (MAP/CAM) 0x421C70–0x42B800 ~25
Collision (COL) 0x42B800–0x42E690 ~20
Flight model (FM/HARD) 0x451480–0x454800 ~80
Video decode (FMV/Cobra) 0x456300–0x45D090 ~45
Network (UDP/PKT layer) 0x45D090–0x45DBD0 ~30
Graphics low-level (GG/G_) 0x45DBD0–0x499380 ~130
Wingman/Group AI (WNG/GRP) 0x45E460–0x460FB0 ~50
Object system (OBJ/chain) 0x462600–0x464C80 ~40
AI interpreter (CT) 0x464C80–0x467110 ~120
Pilot / mission / campaign 0x467110–0x490000 ~180
Joystick / serial / modem 0x494270–0x4AC510 ~110
Terrain renderer (T_) 0x4A6E50–0x4C5D70 ~90
Projectile / weapons (PROJ) 0x4C0690–0x4C5D30 ~55
3D renderer (GR/render) 0x4C5D70–0x4D5C00 ~100
Airport / carrier (AP) 0x4BA750–0x4BEE60 ~40
World render / palette (WR) 0x4B3010–0x4B4B30 ~30
Multiplayer protocol (MP) 0x46ADE0–0x473680 ~95
Dialog / UI shell 0x487A3A–0x48D200 ~70
SAY / voice callout 0x48D2B0–0x491240 ~20
CRT / Win32 imports 0x4D6F5C–0x4E8B66 ~300
Data globals / BSS 0x4EB5F4–0x593800 ~300

Subsystem symbol registry

The per-subsystem tables below are generated from the symbol database so they cannot drift from the Ghidra project. Each row is a named symbol; the full record (including waived interiors) is the linked CSV, and the narrative for each subsystem is on its own page. Progress: reconstruction matrix.

Generated from db/symbols/; each subsystem's detailed prose lives on its own page.

Binary: FA.EXE

Network / multiplayer (NET/SER/UDP/MP)

network.csv · page — 377 named functions

VA Symbol Src Role
0x004016C0 NET_SlaveInit sms client: open connection to master at NET_ADDRESS; registers PLAYER_ACTION/NET_CONNECTED_STATE callbacks
0x00401780 NET_SlaveShutdown sms client leave/teardown
0x004017B0 NET_RequestPlayerList sms query lobby for player list (async)
0x00401850 NET_CancelPlayerList sms cancel pending player-list query
0x00401880 PlayerListQueryEvents sms
0x004019A0 player_list_process_pkt sms dispatch player-list-query reply packets
0x00401A60 NETSlaveConnect re slave connect helper: proto_ptr->open (vtbl+0x56), register slave_events (0x401B20) via socket_add_state_func, seed socket_state addr fields; net_set_often_state(5). Body @0x401A60 cited
0x00401B20 slave_events sms
0x00401CD0 handle_slave_connection_failed sms retry-or-fail: emits 'Connection to %s failed', pkt_send_error(6), net_set_often_state(0)
0x00401E30 NETSlaveLostConn re slave lost-connection notifier: 'Lost connection to %s', socket_close, net_set_often_state(0). Body @0x401E30; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00401EB0 slave_process_pkt sms slave lobby FSM: type 3=can-i-play reply,4=player_list,7=err,8=new_player,0xB/0xC=ready,0xD=play_game,0x11/0x12=sync,0x13=lost,0x16=msg,0x1B=connected
0x00402320 state_func_slave_connecting sms
0x00402330 NETArmKeepalive re arm socket send timer (state+8 = timerTicks+0x400; state+4 = 4 unless already ready). Body @0x402330; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00402360 NETResetTimer re reset socket send timer to now (state+8 = timerTicks; state+4 = 4). Body @0x402360
0x004024D0 NETProcessPlayerList re process NET_PLAYER_LIST: find self via NETIsAddrLocal, net_add_self, connect to every other listed peer (mesh) via proto vtbl+0x56 + socket_add_state_func(...,0x401B20); if all ready -> pkt_send_ready. Called from slave_process_pkt case 4. Body @0x4024D0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00405360 NETWaitMasterScreen re slave: spin polling MPReceive/MPCheckDisconnect while _masterNextScreen==-1, then adopt it as _curScreen (thisComputer>0). Body @0x405360; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004053A0 NETApplyMasterScreen re slave: apply pending _masterNextScreen to _curScreen once (non-blocking). Body @0x4053A0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004054F0 netDialogAppIO sms net-config dialog appIO callback: 0x65=CN_NewPrint,0x66/67=info box,0x68=yes/no; else poll key/mouse
0x00405580 monoPrintfIO sms
0x00405590 RunTCPOptionsDialog sms
0x00405CD0 NETFormatIP re format IP address as '%d.%d.%d.%d' via Sprintf (s__d__d__d__d_004EBCFC). Body @0x405CD0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00405D10 ip2long sms parse dotted-quad string -> packed u32 (strchr('.')+atoi x4)
0x00405DF0 RunNetConfigurationScreen sms net config screen entry; calls doConfigurationScreen(1|4)
0x0040AE50 NET_MasterInit sms
0x0040AF40 state_func_master_query sms
0x0040AFA0 NET_MasterStartGame sms
0x0040AFF0 NET_MasterRejectPlayer sms
0x0040B080 NET_MasterShutdown sms
0x0040B110 master_events sms
0x00418880 MSGSendChatter sms imported by 14 shipped .MC overlays (#491); named at this VA by FA.SMS
0x0041E840 atohb sms
0x00441F80 UDPopensocket sms
0x004420D0 UDPserverbroadcast sms
0x00442200 UDPquery sms
0x0044BAF0 SER_EnterCriticalCodeForeground sms
0x0044BB50 SER_LeaveCriticalCodeForeground sms
0x0044BB70 SER_ForegroundCheckConnection sms
0x0044BC00 SER_ForegroundGetPacket sms
0x0044BCB0 SER_ForegroundPutPacket sms
0x0044BD40 SER_Flush sms
0x0044BDB0 SER_Write sms
0x0044BE40 SER_WriteAvail sms
0x0044BEC0 SER_Transmitting sms
0x0044BF00 _SER_Read sms
0x0044BFC0 SER_Read sms
0x0044C030 SER_ReadAvail sms
0x0044C080 SER_PeekByte sms
0x0044C0F0 SER_Synchronize sms
0x0044C1B0 SER_Often sms
0x0044C1E0 SER_Suspend sms
0x0044C200 SER_Resume sms
0x0044C220 SER_ExNamesTimeout sms
0x0044C260 SER_ExchangeNames sms
0x0044C570 SER_Initialize1 sms
0x0044C5D0 SER_Initialize2 sms
0x0044C6E0 SER_Initialize2_5 sms
0x0044C980 SER_Initialize3 sms
0x0044C990 SER_Initialize4 sms
0x0044CA70 SER_Initialize5 sms
0x0044CB20 SER_Initialize sms
0x0044CBD0 SER_Shutdown1 sms
0x0044CC00 SER_Shutdown2 sms
0x0044CC70 SER_Shutdown3 sms
0x0044CCA0 SER_Shutdown sms
0x0044CCC0 serIO sms
0x0045D090 pkt_send_can_i_play sms client->host join request
0x0045D120 pkt_send_can_i_play_player sms join request naming a player slot
0x0045D1B0 pkt_send_sync sms send sync request
0x0045D1C0 pkt_send_type sms send a bare typed packet to peer index
0x0045D200 pkt_sock_send_type sms send bare typed packet to a socket
0x0045D240 pkt_sock_send_message sms send text message packet to a socket
0x0045D280 pkt_build_message sms fill NET_PKT message body
0x0045D2D0 pkt_send_you_can_play sms host->client accept
0x0045D320 pkt_send_ready sms ready handshake
0x0045D360 pkt_send_error sms send error code to peer
0x0045D3A0 pkt_send_new_player sms announce new player to peer
0x0045D440 pkt_sock_send_new_player sms announce new player over socket
0x0045D4E0 pkt_send_lost_player sms
0x0045D580 pkt_sock_send_lost_player sms announce lost player over socket
0x0045D620 pkt_build_new_player sms
0x0045D690 pkt_build_lost_player sms
0x0045D700 pkt_sock_send_error sms send error over socket
0x0045D740 pkt_build_sync sms
0x0045D760 pkt_build_sync_reply sms fill sync-reply header
0x0045D780 pkt_build_play_game sms fill play-game (start) header
0x0045D7A0 pkt_send_debug sms
0x0045D810 pkt_send_player_info sms send NET_PLAYER_LIST entry
0x0045D850 pkt_sock_send_player_info sms
0x0045D890 pkt_build_player_info sms serialize NET_PLAYER_LIST into NET_PKT
0x0045D940 pkt_sock_send sms low-level: send NET_PKT to one socket
0x0045D970 pkt_send sms low-level: send NET_PKT to peer index
0x0045DA10 pkt_set_header sms fill NET_PKT header (type/len)
0x0045DA30 pkt_queue_write re append payload to a socket's output ring (state+0x2C86 head,+0x2C8E cap,+0x2C92 count,+0x2C96 busy); flush via net_write_output_q when full; socket_build_write_fds. Body @0x45DA30
0x0045DB00 pkt_sock_read sms read one NET_PKT from a socket
0x00464660 dlg_list_init sms
0x004646B0 dlg_list_shutdown sms
0x00464710 dlg_list_often sms
0x004647D0 dlg_list_clear sms
0x00464800 dlg_list_get_selection sms
0x00464880 dlg_list_get_new_selection sms
0x004648B0 dlg_list_add sms
0x004649F0 dlg_list_update sms
0x0046AC00 net_test_process_pkt sms
0x0046AC40 net_test_process_pkt_ack sms
0x0046ACF0 net_test_start_latency_test sms
0x0046BDE0 MPFlushAll sms
0x0046BE50 MPCheckConnection sms
0x0046C0A0 MPEnqueue re core outbound primitive: enqueue param_3 bytes to peers matching param_1 (peer id / -1 all-others / -2 all) via MP_WriteAvail/MP_Write, gated by MP_Info connected_mask +0x158; stamps DAT_00546E30 last-send. Body @0x46C0A0 (docs: 'packet enqueue helper')
0x0046C150 MPSetSlowComm sms
0x0046C190 MPConnect sms
0x0046C250 MPShutdown sms
0x0046C260 MPTimeSync sms
0x0046C280 MPMissionInit1 sms
0x0046C470 MPMissionInit2 sms
0x0046C500 MPMissionShutdown sms
0x0046C520 MPService sms
0x0046C680 MPInterpPosAxis re interpolate one position axis from packet tick delta (uses MPUpdateInterval). Body @0x46C680
0x0046C780 MPUpdateInterval re per-entity net update interval (LOD): class _cg==6/==4, distance from last-sent (+0x8C/8E/90 vs +0x1D/1F/21), _slowComm, CloseToAnything. Body @0x46C780; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0046C860 MPInterpAngleAxis re interpolate one angle axis (uses MPWrapAngle). Body @0x46C860
0x0046C980 MPReceive sms per-frame inbound dispatcher (entry; body=FUN_0046C98F). Keepalive/timeout scan + 0x10-0x51 dispatch + MP_Often tail
0x0046EC40 MPRelToAbsTime re resolve relative packet timestamp to absolute (+currentT; skips sentinels 0/0x7FFF). Body @0x46EC40; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0046EC60 MPResolveAlias re map network alias <-> local object id via entity +0x74; walks _objPtrs[1.._nextObjId]. Body @0x46EC60 (the OBJ/net bridge)
0x0046ECD0 MPReadAlloc re MMAllocPtr(n) then MP_Read n bytes from peer 0 (bulk payloads: file/waypoint sync). Body @0x46ECD0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0046ED10 MPDecodeState16 re decode packed pos(+angle) delta scaled by hdr+3 into int[3]/short[3] (packet 0x16). Body @0x46ED10
0x0046EDB0 MPDecodePos re decode packed position delta bytes*0x1000 into int[3] (packet 0x14/0x15). Body @0x46EDB0
0x0046EE00 MPGetType re peek/pull next packet type byte from peer (MP_PeekByte/MP_Read); -0x100 on EOF. Body @0x46EE00 (docs cite as FUN_0046EE00); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0046EE40 MPReadPayload re read param_3 bytes iff fully available (MP_ReadAvail then MP_Read). Body @0x46EE40
0x0046EE90 MPClearDeadStatus re zero _mpStatus[peer] for peers no longer in MP_Info connected_mask. Body @0x46EE90; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0046EED0 MPSend sms
0x0046FA40 MPAbsToRelTime re encode absolute time to relative packet timestamp (-currentT; skips sentinels). Body @0x46FA40; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0046FA60 MPEncodeState14 re encode packet 0x14: quantized pos delta (auto-exponent) + BAM angle delta /0xB6, writes alias +0x74. Body @0x46FA60
0x0046FBF0 MPEncodeState15 re encode packet 0x15: small position-only delta (>>0xC). Body @0x46FBF0
0x0046FD50 MPSendSyncOnce re broadcast one 0x10 sync byte once per session (guard DAT_004F78C8) via MPEnqueue(-1). Body @0x46FD50; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0046FDB0 MPRemoveCurObj sms
0x0046FE00 MPEndMission sms
0x0046FE30 MPSendGameMode sms
0x0046FE70 MPAddScore sms
0x0046FEF0 MPSendMissionSucceeded sms
0x0046FF20 MPSendScenarioEndTime re broadcast packet 0x50 (_endScenarioSetTime - _currentTime) via MPEnqueue(-1). Body @0x46FF20; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0046FF70 MPPaused sms
0x0046FFC0 MPSetPaused sms
0x00470010 MPProjAdd sms
0x00470150 MPEjectAdd sms
0x004701A0 MPManAdd sms
0x00470250 MPPrepareForInterp sms
0x00470640 MPMsgSend sms
0x00470780 MPMsgRemapAliases re remap object ids embedded in a T_MSG to/from net aliases (+8=0x4000/-0x8000/-1, sub-type +10) via MPResolveAlias. Body @0x470780; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004708B0 MPGraphicAddCrater sms
0x00470900 MPGraphicAddExp sms
0x00470990 MPGraphicAddSmoke sms
0x00470A20 MPGraphicAddDebris sms
0x00470A90 MPGraphicAddClusterRelease sms
0x00470B00 MPGraphicAddSpecialDebris sms
0x00470B70 MPGraphicAddHulk sms
0x00470BC0 MPLaunchDevice sms
0x00470C30 MPGraphicAddFire sms
0x00470CF0 MPGraphicAddSmokeAdder sms
0x00470DC0 MPGraphicRemove sms
0x00470E00 MPShellSendScreen sms
0x00470E40 MPPlayerChoseSide sms
0x00470E80 MPQuickButton sms
0x00470EB0 MPQuickButtonText sms
0x00470EF0 MPPlayerChoseFort sms
0x00470F30 MPFortButton sms
0x00470F60 MPFortButtonText sms
0x00470FA0 MPFortButton2 sms
0x00470FD0 MPFortButtonText2 sms
0x00471010 MPSendAntiCheat sms
0x00471070 MPSendCheatsOn sms
0x004710B0 MPSendFrameRate sms
0x004710F0 MPShowFrameRate sms
0x00471130 MPSingleFilename sms
0x00471190 MPSendPrefs sms
0x004711F0 MPMaybePausedMsg sms
0x00471360 MPWpnStats sms
0x00471400 MPKillStats sms
0x00471450 MPLandingStats sms
0x00471490 MPHUDMessage sms
0x004714D0 MPStatusInit sms
0x00471510 MPStatusSet sms
0x00471560 MPStatusToDrawSet sms
0x004715B0 MPStatusDraw sms
0x00471880 MPChatChecksum re checksum of CHAT edit-line + all chat lines (DAT_00546EA0 stride 0x79 x DAT_00546DD4) for change/anti-cheat detection. Body @0x471880; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004718F0 MPDrawStatusLine re truncate string to width + G_ColorPrint (MP status/chat draw helper). Body @0x4718F0
0x004719E0 MPEveryoneStatus sms
0x00471A30 MPWaitEveryoneStatus sms
0x00471A90 MPWaitStatus re modal loop: poll MPReceive/MPCheckDisconnect until all peers reach status (or key/mouse abort); master uses MPStatusToDrawSet, slave MPStatusSet. Body @0x471A90 (docs: wait-for-everyone-status)
0x00471B80 MPAllPeersAtStatus re test whether every connected peer's _mpStatus == param_1. Body @0x471B80; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00471BD0 MPAssignPlayers sms
0x00471FA0 MPAssignPlanePlayers re per-plane helper in MPAssignPlayers: for obj class 4 w/ flag, iterate DAT_00547324 player table. Body @0x471FA0; called from MPAssignPlayers; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00472100 MPComparePlaneRank re qsort comparator ordering the multiplayer wing-assignment candidates by the 4-byte rank at +3 of each 7-byte record; ?MPAssignPlayers@@YGXXZ passes it to _qsort twice over the table at 0x547180
0x00472130 MPBuildSpawnPayload re apply spawn position offset (+0x3E800/+0x1F400) and build up-to-500-byte payload; called from MPAssignPlayers. Body @0x472130
0x00472260 MPSetControl sms
0x004722D0 MPRequestControl sms
0x00472330 MPChangePlaneType sms
0x004723A0 MPSetFuel sms
0x00472400 MPSetHardpoints sms
0x00472520 MPSetWaypoints sms
0x004725B0 MPLifeNotify sms
0x00472670 MPRevive re apply player revive/respawn; entry (12B) into body FUN_0047267C. Called from MPReceive packet 0x30 (docs: 'increments _playerRevives[peer]') and MPKey. Body @0x472670
0x00472A90 MPKey sms
0x004733E0 MPCheckDisconnect sms
0x004735C0 MPShellInitMessages sms
0x004735D0 MPChatStore re append incoming chat/SAY message to on-screen buffer DAT_00546EA0 (6 lines x 0x79, count DAT_00546DD4); shifts when full. Body @0x4735D0; called from MPReceive 0x1A / MPKey; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0047F100 CN_NewSetLines sms
0x0047F190 CN_NewPrint sms
0x0047F370 CN_ClearLines sms
0x0047F390 CN_SetLines sms
0x0047F3B0 CN_Print sms
0x0047F5D0 CN_GetString sms
0x0047F5F0 CN_GetBigString sms
0x0047F6D0 CN_SetFactoryDefaults sms
0x0047F740 CfigChecksum sms
0x0047F7A0 CN_ReadConfig sms
0x0047F930 CN_WriteConfig sms
0x0047F990 RunSimpleConnect sms CN_ReadConfig(NET.DAT) + MP_Initialize with dialog feedback
0x004874C0 sapopensocket sms SAP open socket - IPX Service Advertising Protocol; name-dispatched (label-only in a clean rebuild)
0x00487670 sapserverbroadcast sms
0x00487760 sapquery sms
0x004878C0 sapprocessadvertisement sms
0x004922E0 SER_RemoteQueueFull sms
0x00492300 SER_UpdateRemoteQueueStatus sms
0x00492330 SER_ProcessStatusPacket sms
0x00492390 SER_ProcessDataPacket sms
0x004923B0 SER_ProcessResentPacket sms
0x00492460 SER_ProcessRequestPacket sms
0x004924C0 SER_WrapPacket sms
0x00492570 SER_ProcessIncomingPacket sms
0x00492690 SER_ReadIncomingPackets sms
0x00493780 RunIPXOptionsDialog sms IPX/SPX network options dialog (switch over frame types); label-only in a clean rebuild
0x00493EE0 connected_state_callback sms
0x004940E0 players_box_add sms
0x004941E0 players_box_connected_state_callback sms
0x00494BB0 noIO sms no-op I/O stub directly before MP_Initialize
0x00494BC0 MP_Initialize sms
0x00494CB0 MP_Info sms
0x00494CC0 MP_Shutdown sms
0x00494D40 MP_SetTransmitTimeout sms
0x00494D50 MP_Dont_care sms
0x00496F40 spxinit sms SPX transport init - enumerate IPX adapters into a NET_ADDRESS_LIST
0x00497000 spxinit2 sms SPX secondary init from NET_PROTOCOL/CN_INFO
0x00497010 spxlisten sms open+bind an IPX socket and start SPX listening (backlog 5)
0x004970C0 spxopensocket re open an SPX socket - socket(6) then SPX ioctl 0x8004667e; sibling of sapopensocket; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00497150 spxconnect sms SPX connect to a NET_ADDRESS
0x004971D0 convert_addr_ipx2usnf sms convert an IPX sockaddr to the engine NET_ADDRESS
0x00497210 convert_addr_usnf2ipx sms convert an engine NET_ADDRESS to an IPX sockaddr
0x00497250 spxaddr2str sms
0x00497290 spxbuildaddress sms build a NET_ADDRESS for an SPX peer from NET_PROTOCOL/CN_INFO
0x004972D0 spxfactory sms
0x00499F70 setPacketInfo sms write SERIAL_PACKET type (low2 bits of byte0 | 0xfc) and seq (byte3)
0x00499F90 computePacketCRC sms directly after setPacketInfo in the serial-packet unit
0x0049A000 packetCRC sms extract stored CRC (byte1 [+byte10 for type0/3]) by packet type
0x0049A040 verifyPacketCRC sms packetCRC()==computePacketCRC()
0x0049A070 assignPacketCRC sms store computed CRC into byte1 (+byte10 for type0/3)
0x0049A0A0 SER_EnterCriticalCodeBackground sms spin-acquire Ctrl busy flag (DAT_00570bb4) under critical section w/ Sleep(0)
0x0049A100 SER_LeaveCriticalCodeBackground sms clear Ctrl busy flag under critical section
0x0049A120 SER_CheckDisconnect sms detect link loss: modem carrier (IsCarrierDetect) / 8s idle timeout; on loss SER_ShutdownLowLevel + set disconnect flags
0x0049A1B0 SER_GetOutholdingLimit sms transmit-buffer flow control: BytesInTransmitBuffer -> out-holding budget (250-byte / 0xfa window)
0x0049A260 SER_BackgroundThread sms
0x0049A380 InitializeQueue sms directly before updateQueueHead in the serial-queue unit
0x0049A3E0 updateQueueHead sms head = seq % capacity; returns seq / capacity (wrap count)
0x0049A400 insertQueue sms copy wrapper (0xc dwords) into slot (seq%cap)*0x30; mark valid (+0x10=1); bump count
0x0049A460 overwriteQueue sms overwrite slot by wrapper seq without count bump (history record)
0x0049A4A0 retrieveFromQueue sms copy out slot at (idx%cap)*0x30
0x0049A4D0 fetchFromQueueTail sms pop tail slot then zero it; advance tail; returns wrap count
0x0049A520 SER_InitializeControlStruct sms
0x0049A660 SER_InitializeLowLevel sms init control struct + 3 queues: InQueue(1024)/OutQueue(64)/HistoryQueue(256) with their packet buffers
0x0049A6B0 SER_ShutdownLowLevel sms mark link inactive (DAT_00570cc5=0); set player-drop mask; clear connected flag
0x0049A6E0 fnc_toCallDuringAnswer sms
0x0049A700 strToCom sms map "COM1".."COM8" (strcmpi vs DAT_005015d8..5015a0) -> 0..7; -1 if none
0x0049A7D0 MOD_InitPortAndModem sms SER_Initialize1/2 then ModemAttention/SetPortCharacteristics/ModemInit on port handle DAT_00570dcc
0x0049A850 MOD_FindModemAndInit sms
0x0049A9B0 MOD_FindModemAndInitPCMCIA sms enumerate Enum\PCMCIA for Class=modem PORTNAME=COMx; strToCom; MOD_InitPortAndModem
0x0049AC00 MOD_WaitForCall sms answer mode: ModemAnswerMode + poll IsRing / RX buffer for RING; ModemWaitForCall; appIO "Ring..."
0x0049AD00 MOD_Initialize1 sms dispatch: explicit COM (CN_INFO+0xbc!=8 -> +0x64) else auto FindModemAndInit then PCMCIA; serIO(0x19) on fail
0x0049AD70 MOD_DoConnect sms
0x0049AF30 MOD_InitializeAndConnect sms MOD_Initialize1 -> MOD_DoConnect -> SER_Initialize2_5/3/4/5 handshake; SER_Shutdown on any failure
0x0049AFF0 MOD_Initialize sms top-level modem entry: capture appIO (CN_INFO+0xdac); MOD_InitializeAndConnect; set connection type DAT_00500304=2; carrier-detect debounce
0x0049B0D0 MOD_Shutdown sms SER_Shutdown1 + Sleep + ModemHangup/AnswerMode + SER_Shutdown2/3
0x0049B110 serIO sms
0x004A45E0 AddJanesStatsJOGC sms build the Janes Online Gaming Community post-mission stats report (MP_Info + playerDamage rankings)
0x004A55F0 EveryoneHasChosenSides sms all _humanChoseSide entries set
0x004A5620 ChooseSidesDialog sms MP side-selection dialog over MPWaitEveryoneStatus/MPPlayerChoseSide
0x004A5760 FixChosenSides sms rebalance when a side exceeds 5 players
0x004A5810 ChooseSidesDialog2 sms variant that verifies both sides are non-empty
0x004A5990 winsock_load sms
0x004A5CB0 winsock_cleanup sms
0x004A5CE0 winsock_handle_error sms
0x004A5D10 winsock_process_error sms
0x004A5E00 winsock_set_non_blocking sms
0x004A5E50 winsock_set_buffer_sizes sms
0x004A5F90 socket_flush_close sms
0x004A5FA0 socket_close sms
0x004A6110 socket_close_non_player_sockets sms
0x004A6150 socket_close_socket sms
0x004A61A0 socket_close_all sms
0x004A6220 socket_get_state_ptr sms
0x004A6260 socket_add_state_func sms
0x004A62A0 socket_set_state sms
0x004A62B0 socket_set_socket sms
0x004A62C0 socket_set_type sms
0x004A62D0 socket_set_all_players_state_funcs sms
0x004A6320 socket_set_state_func sms
0x004A6390 socket_build_write_fds sms
0x004A6650 socket_get_fds sms
0x004A66C0 socket_check_duplicates sms
0x004A6760 socket_set_doa sms
0x004A67B0 socket_process_doa sms
0x004ABBF0 tcpinit sms
0x004ABD40 tcpinit2 sms
0x004ABD60 tcp_save_settings sms
0x004ABDC0 tcplisten sms
0x004ABF00 tcpconnect sms
0x004ABF90 tcpaddr2str sms
0x004ABFE0 convert_addr_usnf2tcp sms
0x004AC030 convert_addr_tcp2usnf sms
0x004AC080 tcpfactory sms
0x004AC0C0 tcpbuildaddress sms
0x004AC180 SER_SendBytes sms append bytes to holding buffer DAT_00570bc2; debit out-holding budget DAT_00570bba
0x004AC1D0 SER_SendHoldingBuffer sms flush holding buffer via ser_rs232_putpacket; on error set flag + SER_ShutdownLowLevel
0x004AC210 SER_OkToSendPacket sms budget check (>0x17=23 bytes free); set pending flag DAT_00570edc
0x004AC230 SER_SendPacket sms per-type window check; stamp ack byte; assignPacketCRC; SER_SendBytes 0x18 bytes; bump per-type tx counters
0x004AC2E0 SER_SendRequests sms scan InQueue for gaps; send retransmit-request (type 3) via setPacketInfo+SER_SendPacket
0x004AC3E0 SER_SendDataPackets sms
0x004AC480 SER_SendStatus sms send status/ACK packet (type0) carrying last-tx seq + per-player state
0x004B0610 NetSetProtocol sms
0x004B06C0 NetProtocolPresent sms
0x004B0700 NetSetFactoryTCP sms
0x004B0730 NET_GetLocalAddressString sms
0x004B0830 NET_Initialize sms
0x004B0940 NET_StartQuery sms
0x004B0A10 NET_Shutdown sms
0x004B0A90 NET_ShutdownQuery sms
0x004B0AC0 NET_Often sms
0x004B0BD0 NET_Synchronize sms
0x004B0CC0 NET_Disconnect sms
0x004B0CF0 NET_Write sms
0x004B0DD0 NET_WriteAvail sms
0x004B0E00 NET_Flush sms
0x004B0E50 NET_Read sms
0x004B10D0 NET_ReadAvail sms
0x004B1150 NET_PeekByte sms
0x004B1240 NETIsAddrLocal sms
0x004B1280 NET_GetLastError sms
0x004B12A0 NET_SendMessageAll sms
0x004B1350 NET_MakeAutoConnectAddress sms
0x004B1380 NET_Addr2string sms
0x004B13A0 net_add_player_id sms
0x004B1540 NETProcessEvent sms
0x004B1590 fill_in_mpinfo sms
0x004B1660 game_event_handler sms
0x004B16B0 net_write_output_q sms
0x004B18F0 scan_packet_queue sms
0x004B1A80 validate_packet sms
0x004B1B10 net_handle_fd_write sms
0x004B1B40 net_all_players_ready sms
0x004B1B60 get_pkt_err_string sms
0x004B1B80 net_send_all sms
0x004B1BF0 net_do_accept_connection sms
0x004B1CA0 net_set_ready sms
0x004B1CC0 net_print_player_found sms
0x004B1D00 net_add_self sms
0x004B1DD0 validate_player sms
0x004B1E00 clear_all_syncs sms
0x004B1E30 clear_all_sync_replies sms
0x004B2070 net_print_connection_failed sms
0x004B20C0 net_addr_equal sms
0x004B2120 net_mung_name sms
0x004B2180 net_unmung_name sms
0x004B2530 net_start_game sms
0x004B2590 net_set_callback_host sms
0x004B25B0 net_set_callback_players sms
0x004B25D0 net_set_callback_connected sms
0x004B25F0 state_func_query_hosts sms
0x004B2630 net_set_often_state sms
0x004B26C0 net_get_often_state sms
0x004B26D0 net_free_player_list sms

HUD / cockpit

hud.csv · page — 42 named functions

VA Symbol Src Role
0x00405E30 HUDInitMessages sms
0x00405E50 HUDDrawMessages sms
0x00405F50 HUDMessage sms
0x00406010 HUDReprintMessages sms
0x00406040 HUDInit sms
0x00406920 HUDRevive sms
0x00406950 HUDShutdown sms
0x00406A50 HUDDraw sms
0x004075D0 HUDDrawTargetView re render a 3D shape into the HUD bitmap (_T_Make/_T_Render on _hudShape), flip and blit; target/padlock silhouette or combining-glass image
0x004077B0 HUDSetWarning sms
0x004078B0 HUDDrawWarning re draw the blinking warning string set by HUDSetWarning (STALL / LOW FUEL / ...) while unexpired; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00407930 HUDDrawConfigFlags re stacked gear/flaps/speedbrake/hook annunciators gated by entity config bits (DAT_0050cfef); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00407A00 HUDDrawGLoadThrottle re lower data block: G-load, throttle (THR AFT / THR %d%%) and thrust-vector line; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00407B60 HUDDrawHeading sms
0x00407EC0 HUDSpeedToY sms
0x00407EE0 HUDDrawSpeed sms
0x00408400 HUDAltToY sms
0x00408420 HUDDrawAlt sms
0x00408930 InitScreenMove sms
0x004089A0 HUDDrawPitchLadder re climb/dive pitch ladder: rotate the pitch-bar table by roll, position vs waterline, dashed below / solid above horizon; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00408C80 HUDDrawLeadCaret re lag/lead aim caret at the padlock target using a time-lagged sample; SymFont glyph bucketed by range
0x00408E20 HUDDrawHVel sms
0x00409030 HUDDrawWeaponInfo sms
0x004092D0 HUDDrawRangeInfo sms
0x00409760 HUDDrawBombFall re CCIP bomb fall line/pipper from the ballistic solution (PROJMakeBombEq/PROJBombPos); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00409910 HUDDrawGunReticle re gun aiming circle + bearing tick + vertical range tape with weapon/lock/target markers
0x00409BF0 HUDDrawApproach re ILS/carrier glideslope box in landing submode (APApproachPath/CheckLandingParms)
0x00409F30 HUDDrawTargetBox re target-designator box over the padlock target (PROJLock tone/lock, GRTo2d projection, IFF glyph); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040A450 HUDSquawk sms
0x0040A530 HUDFindNearest sms
0x0040A6C0 HUDDrawTargetLabels re name tags over visible targets; player's current target in a distinct color; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040A7F0 HUDDrawContacts re radar/IR sensor contacts (CPGetContact), SymFont glyph per contact, locked one highlighted; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040AAC0 HUDBrightness sms
0x0040AB10 HUDSetFont sms
0x0040AB30 HUDSetSymFont sms
0x0040AB50 HUDSetWinFont sms
0x0040AB70 HUDSetDisrupt sms
0x0040ABB0 HUDDrawDisrupt sms
0x0040AC80 HUDSetStability sms
0x0040ACE0 HUDDrawStability sms
0x0040AD40 ComputeBombPosition sms
0x0040AE40 HUDHasFlaps sms

Core shell / menu / dialog UI

shell-ui.csv · page — 199 named functions

VA Symbol Src Role
0x004053D0 IFMSetTime sms in-flight-menu open/close: pause time compression + dim palette + VIEWSnapshot (IFM family per FlightMenu)
0x0040B8A0 MouseLoadPtr sms load per-screen mouse pointer bitmap (PLANE.C etc.); reads _curScreen/_menuResolution
0x0040BA10 ShellSetup sms shell chrome setup: palette save copies, mouse pointer PIC (MOUSE320/MOUSEPTR), SHADV32/64 + corner drop-shadow PICs by _menuResolution, steel pattern + palette for the in-flight menu (curScreen 0x10), MenuCreateRemaps
0x0040BC20 MaybeCampaignMenu sms conditionally overlay the campaign action bar (MAINMENU.MNU) on a screen
0x0040BD00 MaybeCampaignMenu2 sms tail variant of MaybeCampaignMenu
0x0040BD30 MenuStartUp sms build+show a menu bar from a .MNU name; calls ShellSetup, clears _menuSelecting
0x0040BF40 MenuInstallRemap re install a palette color-remap table into a G-remap slot (0x114-0x118); called 5x by MenuCreateRemaps; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040BF60 MenuMeasureItemWidth re measure widest menu item label via G_ColorStringWidth over the item linked list (+0x12 text, +submenu via FUN_0040c130)
0x0040C130 MenuItemSubString re skip a menu label's leading marker bytes (>1) and return the submenu/secondary substring, or NULL
0x0040C160 MenuLoadFont re load MENUFONT.PIC (640) or MFONT320.PIC (320) per _menuResolution into DAT_004ec21c; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040C1A0 MenuRemoveItem sms remove a menu item by packed G-index
0x0040C1D0 MenuLinkTerminate re walk _firstMenu linked list to the tail and null-terminate it; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040C1F0 MenuCreateRemaps sms build 5 shadow palette-remaps (menuShadow1..5 at 0x5221f0/0x5220f0/0x521ef0/0x521df0/0x521ff0, %=60/66/74/84/96) via FUN_0040d4e0; install slots 0x114-0x118 via FUN_0040bf40
0x0040C290 ShellOff sms release shell chrome: hide mouse, restore + free the saved palettes, free the pointer save
0x0040C310 MenuShutDown sms tear down the menu bar: restore the saved menu-bar background (optional flush), free bar/steel/brush handles, restore submenu backgrounds, free the _firstMenu list
0x0040C410 MenuDrawBar sms save region under bar (menuBarSave) then draw the top menu bar from _firstMenu list
0x0040C4F0 MenuUpdate sms per-frame menu poll: ShellMousePos, hover/hit-test, returns selected G-index; skips mouse poll while _dialogOn
0x0040C5A0 MenuCurrentIndex re close open sub-item/menu highlights, then compute the packed (menu<<8 | item) index of the current selection; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040C670 MenuMouseSelect re hit-test mouse over bar entries/items via MouseInBox; update _curMenu/_curSubMenu/_curItem, open/close dropdowns; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040C990 MenuDrawDropdown re draw an opened submenu: save background (FUN_0040cea0/cf40), MenuSteelRect frame, item rows; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040CB10 MenuClearItemInvert re restore the current item's inverted-highlight brush (pair of FUN_0040cb80); called by MenuCurrentIndex; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040CB40 MenuCloseSubMenu re close/restore the open sub-menu highlight; called by MenuCurrentIndex and MenuMouseSelect; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040CB80 MenuInvertItem re toggle the highlight brush over _curItem (invertItemBrush: AllocBitmap+BlitToBrush+URect2, or blit back+free); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040CC50 MenuInvertSubItem re toggle the highlight brush over _curSubItem (invertSubItem); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040CD20 MenuInvertBar re toggle the highlight brush over the _curMenu bar entry (invertMenuBrush); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040CDE0 CheckItem sms set/clear checkmark on a menu item (via FUN_0040ce00 index lookup)
0x0040CE00 MenuItemByIndex re resolve a packed index (hi=menu#, lo=item#) to a MENU_ITEM* by walking _firstMenu; used by Check/Enable/DisableItem; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040CE70 EnableItem sms enable a menu item by index
0x0040CE80 DisableItem sms disable/dim a menu item by index
0x0040CE90 IsItemEnabled sms
0x0040CEA0 MenuSaveBackground re save the screen region under a submenu into menuSaveBrush (+shadowWidth/Height margin); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040CF00 MenuRestoreBackground re blit menuSaveBrush back to screen and free it; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040CF40 MenuSaveBackground2 re second save-background path (item flag==0 branch of MenuDrawDropdown); pairs with FUN_0040cfa0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040CFA0 MenuRestoreBackground2 re restore pair for FUN_0040cf40; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040CFE0 ShadowBox sms 11-byte entry; drop-shadow frame around a rect. Worker is FUN_0040cfeb (tail)
0x0040CFEB ShadowBoxDraw re 403-byte worker behind ShadowBox@0x40CFE0: renders the 8-piece drop-shadow frame (shadowUR/LL/LR/H/V handles)
0x0040D180 MenuSteelRect sms draw the brushed-steel panel rectangle (uses steelHandle, FUN_0040d390 pattern)
0x0040D390 MenuSteelPattern re builds an i*i square table and tiles the brushed-steel gradient (DAT_004ec260) used by MenuSteelRect
0x0040D4E0 MenuBuildRemap re build a palette remap table scaling _curPalette RGB by param%/100; confirmed by MenuCreateRemaps callsites
0x0040D5F0 PushShellAlloc sms push MM alloc-id scope for shell allocations (paired with PopShellAlloc)
0x0040D620 PopShellAlloc sms pop shell MM alloc scope
0x0040D640 ShellShowMouse sms show software mouse cursor (ref counts via mouseShown)
0x0040D6B0 ShellHideMouse sms hide software mouse cursor
0x0040D6E0 ShellMousePos sms sample mouse: writes _shellMousePos, _shellButtons, _shellEvent
0x0040D790 MouseInBox sms hit-test _shellMousePos against a BOX; used by menu bar/item hover
0x0041C820 NamesShutdown sms free the NAMES list (_items) and zero the count
0x0041C840 GetNames sms build the NAMES list from a category mask: globs types*.PT/.NT/.OT/.JT, mission*.M, .T2, .2D, .P, .COM (sound-driver COMs excluded); 0x30-byte records {u32 class flags, filename, title[30]}; titles from mission header (file+4) or type record; type flags: class byte, +9 bit 0x4000 user-flyable, +0xba, year at +0x37 drives the reference era filters (e.g. 1955-1976)
0x0041D580 NamesSort re quicksort of the 0x30-byte NAMES records by title (stricmp at +0x11) via Swapmem
0x0041D640 NamesCompare re NAMES record compare: stricmp of the titles at +0x11
0x0041D670 NamesDedupe re compact adjacent NAMES records with equal filenames (+4) after the sort
0x0041D6F0 NamesShrink re shrink-realloc _items to _numItems records
0x0041D720 FreeNames sms free _items
0x0042E680 QuickMultiButton sms quick-mission wizard: store button value into DAT_00537360[i]/DAT_00537260[i]; just past collision's range
0x0042E690 QuickMultiButtonText sms set a quick-mission wizard button's label
0x0042E9A0 QuickMission sms quick-mission creator loop (drives the 24 QUICKB*.DLG wizard steps)
0x0045FEC0 INFO2Draw sms draw the Jane's reference content pane (dirty-checked): mode 0 .INF text page via PrepareText/PrintText, mode 1 the 3-D shape view (display list w/ horizon proc + v_air/v_land/v_sea backdrop, palette from the shape PIC, rotate/zoom, carriers substitute x.SH, optional GLASSES stereo pair offset by _glassesXDiff), modes 2+ photo PIC pages with PAGE x OF y overlay
0x00460CB0 Info2MediaName re build the media PIC name for a view mode: 2 -> _, 3..6 -> _p/_c/_e/_f, 7/8/9 -> ar_vidp/ar_vidh/ar_vidm stills (ar_novid when the video button is disabled), fallback ar_nopic.PIC
0x00460F20 Info2SyncPalette re when _curPalette changed, resync the reference screen palette copy + MenuCreateRemaps
0x00460F60 Info2Frame re draw one L-shaped frame border pair around the content pane
0x00460FB0 INFO2SetType sms select reference item n: free the per-screen pools (id 9), load the type record from _items[n], view distance = ObjRadius*15 (min 0x6400), count photo pages by probing _0..8 via LibFileExists, enable the 22 media dialog buttons (Fly needs class 5 + flag 0x800000, or ASTOVL)
0x00460FBB Info2SetTypeBody re body of INFO2SetType (overlapping alternate entry)
0x004613B0 Info2VideoName re build the video (Cobra) file name for view modes 7/8/9
0x00461710 INFO2Screen sms the Jane's reference screen loop: ar_menu/ar_dlg + day1.LAY weather + palette.PAL, menu = category filters (GetNames masks) + prefs/3-D-glasses items, dialog 1-10 = view mode, 0xb prev/next type, keys +/- zoom, arrows rotate 5 deg (0x38e), PgUp/PgDn page, Ins/Del cycle type, Space play video, mouse drag rotates/zooms; Fly button -> _missionName ~a.M (else ~info.M) + _selectedTypeName, returns 1 to launch
0x004625B0 Info2PlayVideo re play the current reference video via Info2VideoName + PlayCobra + DoFadeout
0x004625F0 Info2Click re ShellClickSound(0x140,1) - the reference screen click
0x00467990 RemapInsignia sms remap a T_BITMAP pixels through _insigniaRemap (squadron-insignia palette fix)
0x004679C0 MakePicList sms enumerate NN.PIC with matching width/height into a 500-name list (insignia-remapping each); the LEFT prefix also collects RIGHT twins (pilot photo facing pairs)
0x00467C30 FindPic sms locate the current name in a MakePicList list and step prev/next (photo/nose-art/tail-art cycling)
0x00474800 FlightMenu sms the in-flight menu (FMENUD): pauses via _timeCompression=0x7fff; items map to control devices (stick 0-6/rudder 7-8/throttle 9-10 + InputCalibrate), time compression (-1,0..3 = shift counts), gamePrefs/gameMultiPrefs bits, F1-F10+F12 views (VIEWBuild 0x3b00-0x4400,0x5800), cockpit windows, envelope realism (_envelopeType 0-2), difficulty field (prefs low 3 bits), 3-D glasses, MP AI-skill dialogs, IFM show masks, free-flight APTeleport; WriteConfig + MISSIONPrefsChanged on exit
0x0047D190 PageText sms return the first printable char of page n from the current text context page table
0x0047D1D0 FormatInit sms zero the text-context stack (0x44-byte contexts at _fmtText) and the 14-slot font handle cache
0x0047D200 FindSectionHeader sms scan text for the 8-char tag "[section" with matching number argument
0x0047D2C0 FindSection sms find [section n] in a text buffer, returning the char after the tag
0x0047D3A0 FormatArgNumber re parse a numeric tag argument: FormatArgWord + atoi
0x0047D3C0 FormatArgWord re extract one whitespace-delimited tag argument (cut at space/tab/CR), reporting chars consumed
0x0047D420 FormatFindSpace re find the next space/tab (NULL at end of string)
0x0047D440 PrepareText sms paginate marked-up text into a new context: push _textNum, style 0-5 selects font + margin chars, optional [section n] start, builds 0x18-byte page records by measuring via FormatToken, optional background save bitmap when multi-page; returns page count
0x0047D6C0 FormatLoadFont re load font n from the TITLEFONT.PIC-rooted font name table (cached handles)
0x0047D700 FormatToken re the per-token engine: read one whitespace token, dot-directives dispatch to FormatDirective (0x47e1b0), plain words are measured/word-wrapped/rendered
0x0047E1B0 FormatDirective re the dot-directive interpreter (the vocabulary in formats/MT.md is read from THIS dispatch): .section/.page/.title/.header/.body/.italic/.bold/.underline/.left/.right/.center/.full/.indent_*/.picture/.sound/.music(_off)/.button/.dbutton with ..-prefixed off forms; unknown tokens render as text
0x0047EEF0 FontGlyphSize re glyph metrics from a font PIC: table at +0x2a, 6-byte records, width +2 height +4
0x0047EF30 PrintText sms print one prepared page: restore background, load the page record cursor/state, run FormatToken in print mode to page end
0x0047EFF0 FreeTextStuff sms pop a text context: free page table + background bitmap, MusicOff if a [music] tag started one
0x0047F050 EndText sms pop all text contexts and free the cached font handles
0x0047F0B0 InTextButton sms hit-test mouse against the _buttonBoxes[_lastButton] MNU text-button array; in campaign seed range
0x0047F500 _GetString sms modal string-entry dialog: edit item 3 preloaded, prompt printed at dialog+offset; OK copies back (bounded)
0x0047F610 ClipString sms print a string clipped to a pixel width with an ellipsis suffix
0x0047F61B ClipStringBody re body of ClipString (overlapping alternate entry)
0x0047FA30 RunDisconnectScreen sms multiplayer disconnect confirmation screen (DDIAG.DLG)
0x00487A3A WaitTicks sms busy-wait N ticks (TIMESystemTime); dialog animation delay
0x00487A63 DialogSetup sms push a DIALOG frame (_curDialog = &_dialogStruct + ++_dialogNum*0x29); ChoosePreload header, link records
0x00487E90 DialogLinkRecords re per-record setup pass over the DIALOG record list (short-field init); called by DialogSetup; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004880D0 DialogShow sms render the dialog: alloc/lazy-init background bitmap (+0x16/+0x1a), draw all records
0x00488170 DialogBeginDraw re common draw prologue: PushShellAlloc + ShellHideMouse
0x00488180 DialogEndDraw re paired draw epilogue (ShellShowMouse/PopShellAlloc)
0x00488190 DialogShutDown sms blit saved background back (param gated), free +0x16/+0x1a/+0x12 handles
0x00488300 DialogDone sms free all shared dialog fonts (wheel/list/panel/panelDisabled/panel2/actionBlue)
0x00488470 DialogDraw sms record draw dispatcher: walks next_record_ptr calling (**draw_fn_ptr)(record)
0x00488490 DialogUpdate sms event dispatcher (2617 B): per-record PointInBox hit-test, focus, slider/rocker/edit input, returns selected item
0x00488F00 DialogWaitUntilTick re spin on TIMESystemTime until a target tick reached (returns bool); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00488F30 DialogHelper488f30 re small dialog helper (31 B); role not confirmed; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00488F50 DialogRadioGroupClear re walk records; for type 1/5 matching group id at +0x17, clear the pressed flag (+0xb) — radio de-select
0x00488FC0 DialogWhatItem sms return _dialogItemPtr (last record that passed hit-test)
0x00488FD0 DialogScrollbarHit re type-7 scrollbar custom hit handler: PointInBox(+0x18) then callback +0x24 (DLG.md hit-zone table)
0x00489070 DialogSliderRelease re active-slider mouse handler: on button-up call slider callback +0x2c and clear _activeSlider
0x004891A0 DialogScrollThumbInit re initialise scrollbar thumb position from +0xb/+0xc/+0xe/+0x10 (DLG.md: called on show)
0x00489220 DialogClampThumb re clamp scrollbar thumb (+0x12) within track bounds (+0x16/+0x1a/+0x1e)
0x004892E0 DialogGetPtr sms resolve a record pointer by item id
0x00489300 DialogGetValue sms read a control's current value
0x00489360 DialogMatchListString sms find a list-box row by string; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00489400 DialogSetRocker sms set a rocker control's state
0x00489430 DialogSetValue sms set a control's value; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004894F0 DialogSelectItem sms mark a record selected (highlight)
0x00489580 DialogDeselectItem sms clear a record's selected/disabled bit
0x004895D0 DialogSetString sms set an edit/text record's string
0x00489660 DialogUpdateString sms refresh a text record after edit; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004896A0 DialogGetString sms read an edit box's text buffer
0x00489710 TopCenterDialog sms center dialog: x=(sw-w)/2, y=(sh-h)/3; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00489760 Info2640Preload sms preload header for INFO2640.DLG (OK+Cancel 640)
0x00489780 Info640Preload sms preload header for INFO640.DLG
0x004897A0 GrafPrefPreload sms preload header for GRAFPREF.DLG
0x004897D0 SndPrefPreload sms preload header for SNDPREF.DLG
0x004897F0 ChoosePreload sms DLG header record: PushShellAlloc, load action-button PIC/font by type (DLG.md); dispatched via computed indirect call
0x00489810 MultiPreload sms preload header for multiplayer dialogs
0x00489840 LoadActionFont re loads one action-button font/bitmap set (blue / red / blue2 / green, selected by the register argument) and warms the RM cache for the "LMR"+digit labels; called by _Info640Preload, _GrafPrefPreload, _SndPrefPreload, _ChoosePreload and _MultiPreload
0x00489AC0 DrawText sms type-9 static text renderer (DLG.md field layout); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00489B90 DrawAction sms type-0 clickable action-button renderer (DLG.md field layout); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048A080 DialogFlush re ShellShowMouse + G_Flush + ShellHideMouse
0x0048A260 DialogBlitModuleBitmap re blit from the DLG module bitmap (MMAccessR of _curDialog+0x1a) at dialog-relative x/y
0x0048A2B0 DialogSetupBitmap re SetupBitmapAccess wrapper for dialog rendering; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048A2F0 DialClick sms
0x0048A4C0 DrawDial sms rotary dial control renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048A730 DrawLight sms indicator light/LED renderer
0x0048A7D0 PrintPageNums sms render 'page N of M' for paged list widgets
0x0048A8E0 DialogEnsureListFont re lazy-load SMLFONT into _listFont if null; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048A910 DrawFormattedText sms type-9 variant multi-line/paged text renderer (DLG.md); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048A9F0 DrawMissList sms single-mission list renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048ABF0 DrawCampaignList sms
0x0048ADE0 DrawListBox sms generic scrollable list-box renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048B320 DrawCheck sms checkbox renderer (type 3); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048B450 DialogRockerRepeat re rocker auto-repeat: reset rockerTicks/rockerLastTicks, step _activeRocker parent (+0x22) by +0x16; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048B4E0 DrawRocker sms type-6 rocker/toggle renderer (two hit halves)
0x0048B8B0 DialogHelper48b8b0 re rocker/slider draw helper (62 B); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048B8F0 DialogHelper48b8f0 re rocker/slider draw helper (62 B); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048B930 DrawToggle sms two-state toggle renderer (type 8); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048BAD0 DrawSliderHoriz sms horizontal slider renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048BBE0 DialogHelper48bbe0 re small slider helper (31 B); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048BC00 DialogHelper48bc00 re slider helper (96 B)
0x0048BC60 DrawSliderVert sms vertical slider renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048BDF0 DialogHelper48bdf0 re slider/edit helper (99 B)
0x0048BE60 CheckMousePtr sms test/redraw mouse pointer over a widget rect during draw
0x0048BEC0 DialogEditGeom re compute edit-box on-screen geometry from _curDialog + focused record (+0x1e); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048BF50 DialogHelper48bf50 re edit-box helper (66 B); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048BFA0 DialogDrawEditCaret re draw the blinking text caret (G_Vline) at _cursorAt within the focused edit box; _selectEnd gate; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048C040 DialogEditKey re edit-box keystroke handler (1220 B; char insert/delete/cursor); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048C510 DialogHelper48c510 re edit helper (94 B); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048C570 DialogHelper48c570 re edit helper (45 B)
0x0048C5A0 DialogDrawEditText re render edit-box text/selection (359 B)
0x0048C710 DrawEditBox sms type-2 edit-box renderer (DLG.md field layout); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048C800 DrawText320 sms 320x200 static text renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048C8A0 DrawCheck320 sms 320x200 checkbox renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048C970 DrawDial320 sms 320x200 dial renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048CB00 Do320Button sms 320x200 action-button dispatcher
0x0048CBE0 DrawYes320 sms 320 'Yes' button label renderer
0x0048CC10 DrawNo320 sms 320 'No' button label renderer
0x0048CC40 DrawCancel320 sms 320 'Cancel' button label renderer
0x0048CC70 DrawDone320 sms 320 'Done' button label renderer
0x0048CCA0 DrawOK320 sms 320 'OK' button label renderer
0x0048CD40 DrawLight320 sms 320 indicator light renderer
0x0048CD70 DrawSwitch320 sms 320 switch renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048CF10 SliderVert320 sms 320 vertical slider renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048CFE0 ShellButtonSound sms
0x0048D030 ShellClickSound sms play the UI click sound on a valid activation
0x0048D090 ShellDisabledSound sms play the 'disabled' buzz when a dimmed control is clicked
0x0048D0D0 DisableActionButton sms set record type_flags bit15 (dim); see DLG.md +0x00
0x0048D0E0 EnableActionButton sms clear record type_flags bit15 (undim)
0x0048D0F0 DialogEnableItem sms enable/disable a dialog item
0x0048D140 DialogItemIsEnabled sms query a dialog item's enabled bit
0x0048D150 LimitEditFieldLength sms cap an edit field's character length
0x0048D160 DialogTextStreamInit re init a paged text-stream reader object (vtable[2]=LAB_0048d1d0, [3]=FUN_0048d1e0; alloc 0x26+0x1000); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048D1D0 DialogTextStreamMarkDone re text-stream vtable slot 2: sets the one-shot notify flag at +0x24 that DialogTextStreamRead tests and clears, firing event 0x29 to the owning control
0x0048D1E0 DialogTextStreamRead re text-stream read callback: FUN_00486f20 decode into 0x1000 buffer; sets state 0x29/0x74; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0048D260 DialogTextStreamSkip re text-stream vtable slot 4: advances the cursor by n bytes, calling DialogTextStreamRead to refill the buffer whenever the remaining count runs short
0x004A0560 MakeNamesForList sms concatenate all NAMES titles into one NUL-separated buffer for a DLG list widget
0x004A0610 ScreenDirty sms invalidate every scanline (_lineStats = 0xFF) to force a full redraw
0x004A0640 DialogFadeout sms palette fade for the Dialog family (shell-ui owns DialogSetup/Show/Update)
0x004A0710 DialogFadein sms
0x004A0810 DialogDrawBkgd sms blit .PIC full-screen as a dialog backdrop
0x004A0860 MainMenu sms shell menu-bar service: Alt+F4 -> exit item 0x101/MaybeExitToDOS; menu group 2 -> CampaignMenu
0x004A08A0 ChooseActivity sms TOP-LEVEL shell screen dispatcher loop: gates on _doScreens, MP sync (MPSendGameMode/MPWaitEveryoneStatus), random CHOOSEAC/CHOOSE3 background, drives main-menu screen selection
0x004A10B0 SingleFilename sms store the picked single-mission filename to 0x572008
0x004A1810 SortIndexByString re selection-sort an index array by stricmp of the indexed strings (campaign titles)
0x004A18A0 CampaignSelect sms the campaign chooser: glob *.CAM + mission*.CAM, each campaign's .TXT description loaded and its [section 1]/[section 2] title/body collected into a paged [page]-joined document; returns the pick (0xffff = cancel)
0x004A1C80 DialogPickFiles sms generic file picker over GetNames(mask): captions Choose an object/mission/map by mask bit (0x8000 mission, 0x4000 map), list via MakeNamesForList, picked 0x30-byte record copied to _itemPicked
0x004A2220 GraphicPrefs sms graphics preferences dialog (GRAF320/GRAFPREF): detail radio pairs (0x4eb6bc/0x4eb6b2), graphics flag words 0x4eb6be (default 0xdf99) / 0x4eb6b4 (default 0xfffa), FPU warning before enabling flag 0x10000 when _fpuType==0
0x004A2480 SoundPrefs sms the SNDPREF/SOUND320 sound-preferences dialog proc
0x004A26F0 DoDialogInfoBox sms modal info-box driver; freezes time (_timeCompression=0x7fff) when in cockpit (_curScreen==0x10)
0x004A27C0 DialogInfoBox sms generic INFO320/INFO640 message-box builder+run
0x004C6710 QuickDist sms

View / camera & replay (VIEW)

view.csv · page — 19 named functions

VA Symbol Src Role
0x0040D7A0 VIEWSlew sms slew (free-look) camera control
0x0040D7F0 VIEWApplyMode re if the view mode word (+0xB4) is set delegate to the view builder VIEWBuild; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040D810 VIEWFromObject re position the view from the tracked object (_objPtrs[view+0x1C]) and its state; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040E240 VIEWUpdateByType re per-object-type view update (object class 7/0xC/0xF branches)
0x0040E2C0 VIEWFitDistance re compute camera stand-off distance from the object radius (_ObjRadius); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040E330 VIEWAngleScale re angle-to-scale clamp helper for the view transform
0x0040E380 VIEWImmediateVisibility sms force the view to immediate (no-transition) visibility
0x0040E3A0 VIEWInit re allocate/initialise a view slot (MMPushAllocId; zero +0x1C/+0x1E); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040E450 VIEWFree re free the view's allocated buffer (_MMFreePtr on +0x60); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040E470 VIEWSnapshot re copy the 0x30-dword view state block (snapshot/restore helper); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040E930 VIEWInTransition sms returns non-zero while the view is mid-transition
0x0040E960 VIEWReplayRecordGate re replay record gate: inside the _timerTicks window (DAT_005223F0/F4) set replay-active DAT_005224C0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040EBA0 VIEWReplayPlayback re replay playback: when replay-active copy the 0x30-dword saved-view buffer (DAT_00522400) into the view; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040EBC0 VIEWBuild re build the external/spot view for the given mode (the view builder VIEWApplyMode calls); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040F230 VIEWModeLookup re scan the view-mode table at DAT_004EC420; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040F270 VIEWScaleClamp re clamp/scale helper for the view field-of-view or zoom; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040F2D0 VIEWSlewIntegrate re frame-rate-scaled slew integration (_LMultDiv256 by _systemFrameTicks); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040F590 VIEWChangeObj sms switch the view to a different tracked object
0x0040F5D0 VIEWCanSeeTarget re visibility/padlock check (_WRCanSee) gated on a _gamePrefs bit; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand

Campaign / mission / pilot (MAP/CAM/MC/MM/PLT)

campaign.csv · page — 279 named functions

VA Symbol Src Role
0x0041F800 FortDropdownInit re open the Fort-mission type dropdown (NamesShutdown + rebuild the fort-type name list)
0x0041F830 FortMultiButton sms set the selected radio-button index in a Fort-mission multiplayer setup group
0x0041F840 FortMultiButtonText sms set a Fort-setup radio group by matching the given label against the fort-type name list
0x0041F8D0 FortTypeNameList re build (or fetch cached) the fort-type name list from the fort .M definitions
0x0041FB60 FortMission sms Fort (base-assault) mission builder
0x00420790 FortSetupApplyA re Fort setup helper: apply a picked option to the fort configuration
0x004207C0 FortSetupApplyB re Fort setup helper: apply a picked option to the fort configuration
0x00420800 FortSetupApplyC re Fort setup helper: apply a picked option to the fort configuration
0x00420830 FortMissionSetup re Fort ("base assault") mission setup: seed the RNG, set fort size/parameters, and configure the object-side filters from _gameMultiPrefs (sides 0x30000)
0x00420AB0 FortSetupReset re reset the fort-setup working state
0x00420AD0 FortSetupCountA re Fort setup helper: count/enumerate a fort option set
0x00420B20 FortSetupCountB re Fort setup helper: count/enumerate a fort option set
0x00420BB0 FortSetupDialog re the Fort-mission multiplayer setup dialog: fort type / sides / size selection driving FortMissionSetup
0x00421C70 ZONEInit sms
0x00421C80 ZONEAdd sms
0x00421CC0 ZONEForGV sms
0x00421D40 ZONEActive re zone active-window test: currentTime within [start,end] (param[7],param[8]); gate for ZONEUpdate; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00421DD0 ZONEUpdate sms
0x00421DE0 ZONEServiceRange re per-zone service worker (variant of _ZONEUpdate@0 over a range); fires _PROJAdd/_PROJHit/_GRAPHICAddExp on schedule using _Rand/_Percent; not a C function (#479): mid-function split of _ZONEUpdate@0 (0x00421DD0)
0x00422120 ZONEPickTarget re resolve a target plane index for a zone from _planes/_numPlanes (base &DAT_005713a6)
0x00422190 MAPWPListBounds re walk a waypoint list: find head via flag bit0(&1), count entries to tail via bit1(&2); stride 0x44
0x004221D0 MAPObjAlts sms
0x00422230 MAPAdjustObjAlt re raise current object altitude (DAT_0050ce95) to terrain via _T_Info; helper of @MAPObjAlts@4; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00422300 MAPSetSide sms
0x00422320 MAPMaybeSetControl sms
0x00422350 MAPMarkDirty re clear DAT_00536720 hover, set DAT_00536518 redraw flag; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00422380 MAPWorldToScreen sms
0x004223BE MAPDrawGrid sms
0x004224B3 MAPScreenToWorld re inverse of _MAPWorldToScreen: screen point * _mapScale + _worldCenter; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004224EE MAPDrawBG sms
0x0042256A MAPLoadBG re load theater map background bitmap via _RMAccessHandle into DAT_004f0564 (alloc-id 7); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004225D4 MAPRefreshBG re reload map BG if theater name (_th+0x54) changed; recomputes map extents DAT_00536418.._00536430; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00422667 MAPFreeBG re free the map background handle DAT_004f0564; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042267F MAPUpdateWPPtrs sms
0x004226CB MAPSetObjWP re set an object's active waypoint pointer (+0xe4); helper of @MAPUpdateWPPtrs@8; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004226EE MAPSetFormationWP re set new WP for an object plus its wing (_WNGPart) and group (_GRPPart) members
0x004226F0 MAPSetNewWP sms
0x004227AD MAPMaybeClearSelWP sms
0x00422828 MAPClearSelection re clear map selection state: DAT_00536500 obj / _00536514 wp / _00536530 special / _005363e8 mode; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00422840 MAPClearHover re 17-byte map-state setter (clears hover/redraw); role low-confidence, revisit; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00422851 MAPDrawSpecials sms
0x0042297E MAPAddSpecial re allocate a 0x3a-byte 'special' map marker into the _specials/DAT_0053665c table
0x00422A0D MAPOnSpecial sms
0x00422A71 MAPScreen re mission-map/planning screen main loop (_curScreen==3); CAM.md 'FUN_00422a71'. Loads mc_menu/mc_dlg, drives waypoint/plane edit, save-mission, slew view; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00423ED4 MAPRebuildWPLoop re recompute a waypoint loop back-pointer after edit (uses MAPWPListBounds + MAPWPOwnerIndex); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00423F30 MAPStoreLeafTmap re write selected tmap id+rotation into _tlist at current leaf coords; _T_SortTmapList; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00423F90 MAPFindLeafTmap re linear search _tlist[_tlistSize] for the entry at (x&0xfffc,y&0xfffc); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00423FD0 MAPReadLeafTmap re read tmap id/rot at current leaf coords into DAT_00536724/_0053652c; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00424040 MAPSetLeafTmapPic re load '%s%d.PIC' tmap thumbnail via _RMAccess for the selected leaf; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004240D0 MAPEditTmapDialog re mc_name dialog: prompt for a tmap index, then apply via MAPStoreLeafTmap; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004241A0 MAPReadLeafTmap2 re duplicate of MAPReadLeafTmap (separate call site); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004241D0 MAPSelWPIsPlayers re true if the selected waypoint (DAT_00536514) belongs to the player's wing; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00424220 MAPObjInPlayerWing re true if object id shares the player's wing (_WNGPart of _playerId); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00424290 MAPSpecialSelectable re returns 0 in this build (special markers not directly selectable); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004242A0 MAPResetObjects re reset/place ALL mission objects to start state: clear parks (_APClearParks), reassign airfield parking (_APNearest/_APAssignPark), reset positions/speeds/waypoints. Called after load and before save; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00424DE0 MAPSetWPTargetPos re copy a waypoint target's world position (_WPTarget) onto an object; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00424E60 MAPClaimObjControl re set current object owner byte DAT_0050ce90 = _thisComputer|0x80 (mark human-controlled); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00424EC0 MAPSetObjWPFlags re set object's waypoint-capable flag (bit2 of +1) from class (5/7, or 3 with a group); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00424F20 MAPStatusText re set the map help/status line text (DAT_005365a8) and render it via _PrepareText; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00424FA3 MAPWPOwnerIndex re return the object index that owns a given waypoint pointer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00425023 MAPSnapWPToStrip re snap a waypoint onto the nearest airstrip (_APNearest); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00425072 MAPWPNearStrip re test whether a point is near an airstrip (_APNearest); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00425096 MAPScreenSpan re compute world-space span of the current map viewport (two MAPScreenToWorld corners); signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand
0x004250CE MAPPickObjIcon re hit-test object icons at a screen point (12x10 px box), honoring MAPObjVisible; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00425196 MAPObjVisible re object map-visibility/side filter using view mask _DAT_00536628 and side flags; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00425249 MAPPickWPIcon re hit-test waypoint icons at a screen point; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042532A MAPSwapPalette re swap map palette DAT_00536590 <-> _curPalette (enter/leave map draw); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00425358 MAPDraw re full map render: 2D map (grid/BG/specials/icons/paths) or 3D leaf preview via _T_Make/_T_Render depending on mode DAT_005363f0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00425948 MAPDrawRuler re draw the map scale ruler bar; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00425A8F MAPIconRadius re compute on-screen icon radius from current map scale; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand
0x00425ACD MAPDrawEra re draw 'Historical Era' year range text (non-campaign multiplayer maps); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00425B8B MAPSyncSliders re sync dialog X/Y sliders (items 4,3) to current _worldCenter/DAT_00536528; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00425C0A MAPRedrawSelection re redraw highlight when the selected object changes; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00425C77 MAPDrawObjIcon re draw one object's map icon: side color ring, type glyph (mcicons.PIC), padlock/target markers, label; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand
0x00426277 MAPDrawTargetLink re draw the dashed target link line from an object to its target; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004262DE MAPDrawAllPaths re iterate visible objects and draw each waypoint path; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00426325 MAPDrawObjPath re draw one object's full waypoint polyline + target links; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042648F MAPDrawWPIcon re blit a single waypoint node icon (mcicons.PIC)
0x0042658D MAPSetSelection re set current selection to an object id / waypoint ptr / special index (DAT_00536500/_514/_530); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004265C1 MAPStepSelection re advance waypoint selection +/-1 along the owning object's list; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00426696 MAPAssignWPTarget re assign escort/target to the selected waypoint with validation ('can't escort yourself', 'can't target a zone'); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004267E4 MAPInsertWP re insert a new waypoint after the selection: alloc (count+2)*0x44, _MMAllocPtr, splice via MAPUpdateWPPtrs, 'Only ten waypoints allowed'; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00426ACB MAPObjEditable re ownership/editability test for an object (compares against DAT_00536504/_005364f8 special ids); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00426B70 MAPObjEditableP re wrapper for MAPObjEditable(param,1); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00426BF0 MAPInitWPSpeed re initialize a new waypoint's speed from _COCornerSpeed + formation defaults; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00426C45 MAPSetWPFormationParams re copy formation offset/params from table &DAT_004f057e[idx*7] into a waypoint; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00426C6D MAPDeleteWP re delete the selected waypoint (frees loop node, memmoves list, fixes head flag); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00426D6D MAPRequirePlayerPlane re error 'You must first designate a plane' if no flyable/human plane exists; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00426D98 MAPHasFlyablePlane re scan objects for a human-controllable class-4 plane (flags +0x10 bit7)
0x00426DE2 MAPMakeSelPlayer re make the selected class-4 object the human/player (calls MAPClaimObjControl); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00426E37 MAPAddObject re add a new object to the mission: _DialogPickFiles, _T_AddObj, seed position/altitude/side per class flags; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00427195 MAPDeleteObject re delete an object from the mission: _GRPRemove, _APDelete, clear chains, MAPResetObjects; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004271ED MAPWPButtons re waypoint-properties dialog button handler: name/altitude/speed/formation/react/loop edits (mc_name dialog); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004276A0 MAPWPFormationIndex re return a waypoint's formation-table index (&DAT_004f0578); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004276E9 MAPQuantizeAlt re round an altitude to selectable increments within [min,max]
0x00427721 MAPQuantizeToTable re snap a value to the nearest entry of a speed/step table (&DAT_004f0740); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00427769 MAPObjButtons re object-properties dialog button handler: side (mc_nat2), pilot name, plane type (_ChangePlaneType), fly-this-plane, success-condition flags; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004281DD MAPObjCampaignLocked re editability gate that is stricter when _campaignFile != 0 (campaign missions are locked); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00428270 MAPObjEditableCheck re wrapper: MAPObjEditable then flag test; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004282D0 MAPToggleObjControl re toggle human control ownership of an object across the current-obj stack
0x00428340 MAPCenterOnPlayer re center the map _worldCenter/DAT_00536528 on the player object; select it; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00428412 MISSIONLoad re canonical campaign/mission loader (CAM.md): MISSIONShutdown->Init1->CallMissionProc(.mc[_nato]_M or named)->Init2->MAPResetObjects->CenterOnPlayer->T_NamedTmaps/T_InitDictionary; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004284CA MAPSaveMission re save-mission dialog: prompt filename (mc_name), validate, write .M via FUN_00495e80; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042866A MAPDragItem re mouse-drag a selected object/waypoint to a new map position (ghost bitmap follow); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004289EE MAPSelWorldPos re get the world position of the current selection (obj/wp/special); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00428A3B MAPDrawSelInfo re draw the selection highlight glyph + rebuild the info panel (dispatches to MAPBuildObjInfo/MAPBuildWPInfo); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00428AEF MAPBuildWPInfo re build the waypoint info-panel text and hot-button rects: heading/ETA/formation/react/target strings; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00429245 MAPFormatWPTarget re format a waypoint's target name string (_WPTarget + _NextString); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004292D2 MAPFormatReactFlags re map a react-flag byte to the button-index table (&DAT_004f0550)
0x0042934C MAPBuildObjInfo re build the object info-panel text and hot-button rects: pilot/heading/altitude/mission-success/attack flags; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00429DDE MAPMissionMenu re mission-editor command dispatcher: view-filter toggles (DAT_00536628), CampaignMenu, save-changes prompt, opens all mc* scenario dialogs; drives wing/group add via MAPWingAdd/MAPGroupAdd; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042A656 MAPRandomizeSkill re randomize a side's object AI-skill byte (DAT_0050cf62) via _Rand; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042A71A MAPLoadMissionDialog re pick a mission file (_DialogPickFiles) and load it into the editor via MISSIONLoad; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042A780 MAPDlgWeather re weather/time-of-day dialog (mc_weth); sets _startTimeOfDay/_currentTimeOfDay, random cloud offset; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042A93A MAPDlgEndTime re end-scenario time dialog (mc_time); sets _endScenarioSetTime; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042A9C4 MAPDlgRevive re revive/lives dialog (mc_lives); sets _reviveAllowed; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042AA50 MAPDlgReviveDelay re revive-delay dialog (mc_delay); sets _reviveDelay; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042AADC MAPDlgReviveDist re revive-distance dialog (mc_dist); sets _reviveDist; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042AB68 MAPDlgEndKills re end-scenario kills dialog (mc_kills); sets _endScenarioKills; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042ABF4 MAPDlgEndKillType re end-scenario kill-type dialog (mc_killt); sets _endScenarioKillsType; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042AC80 MAPDlgNatoFighters re NATO-fighters side dialog (mc_natf); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042AD35 MAPDlgScoring re scoring dialog (mc_scr); reads 4 score-weight fields; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042AE3F MAPWingRejoin re rejoin/reposition a wing at its leader (_WNGPart, _wingIds/_wingSizes); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042AEDF MAPWingSetLeader re make the selected object its wing's leader (_wingIds[slot]=sel); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042AF86 MAPWingAdd re add an aircraft to wing slot N (_WNGAdd); 'No more aircraft can be added'; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042B056 MAPGroupRejoin re rejoin/reposition a group at its leader (_GRPPart, _groupIds/_groupSizes); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042B0F6 MAPGroupSetLeader re make the selected object its group's leader (_groupIds[slot]=sel); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042B19D MAPGroupAdd re add an object to group slot N (_GRPAdd, _GRPHumansFirst); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042B275 MAPDeleteSpecial re delete the selected special marker (_MMFreePtr on _specials[sel]); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00441C60 ChooseScoreInit sms seed the combat-score display: latch the .MC proc(1) result into the scoreboard state and reset the combat-score timer
0x00441C90 ChooseScore sms score-screen selection (end-of-mission)
0x0044CF00 FortMultiButton2 sms second Fort-setup radio-group button setter
0x0044CF10 FortMultiButtonText2 sms second Fort-setup radio group text matcher
0x0044D070 FortMission2 sms Fort mission builder (variant 2)
0x00467110 AwardMedal sms append the medal title to the pilot service-record block (+0x5AF), skipped when the block would exceed 1000 bytes (#29)
0x00467180 PilotSave sms write a PILOT record to PLT%03d.P (slot -1 = PilotFindFreeSlot), 0x25e0 bytes via RM cache + SaveFile, insert into the sorted roster, set _pilotName
0x00467240 PilotFindFreeSlot re find an unused pilot save slot by probing PLT%03d.P (s_PLT_03d_P) with _Rand until _Open fails; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004672C0 PilotPhoto sms blit the pilot photo PIC (name at PILOT+0x95) at (0x44,0x69) + MenuCreateRemaps
0x00467310 CallsignChoose sms callsign picker dialog: stores PILOT+0x41; derives the personal insignia ^.5K (uppercase A-Z only, max 7 after ^) into PILOT+0x61 when that 5K exists; rebuilds the paper
0x004674F0 PilotBuildPaper re build the pilot logbook 'paper' text (mission count, Available/MIA/KIA/Retired status via _AddStats) and blit photo (_PilotPhoto). AnalyzePLT 'pilot card display'; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00467860 PilotPaperAddLine re append one label/value line pair into the pilot-paper text buffer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00467880 PilotPaperEndLine re append the final/terminating line to the pilot-paper buffer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004678B0 EditPilot sms modal edit of one pilot string field; MISSIONEnsureLegalName on name+callsign; rebuild paper
0x00467E30 PilotListAddAvail re load a pilot file (_RMAccess 0x810c) and insert it sorted into _sortedPilots (_totalPilots++); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00467F30 PilotFindFile sms does any PLT*.P with status 0 (available) resp. 1 (on campaign) exist
0x00468020 PilotScreen sms the pilot roster screen, 3 modes: 0 SHWPILOT select, 1 CONTPLT continue-campaign, 2 VIEWPLT view; validates PLT###.P (9-char name, version byte 0x0f, size 0x25e0) into avail/unavail rosters; photo list MakePicList(PILOT,164,134) + nose/tail-art lists; [button] strip via PrepareText; insignia remap fixups
0x00468C40 PilotListAddUnavail re load a pilot into the unavailable list _unAvailNames (_unAvailPilots++); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00468CA0 PilotMakeCopyName re generate a unique 'NAME Copy N' pilot name, scanning both pilot lists; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00468DF0 PilotStripCopySuffix re strip a trailing ' Copy' from a pilot name (_strstr s_Copy); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00468E40 PilotLoadBySortIndex re load the pilot at sorted index (PLT%03d.P) and copy fields into _pilotName etc.
0x00468F00 PilotFormatRank re format a pilot's rank string from the _pilotRanks table; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00468F40 PilotDiskSpaceError re 'You don't have enough free disk space' dialog before a pilot save; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00468F80 PilotSetField re small pilot-record field setter (cdecl int,char); exact field low-confidence, revisit; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00469010 PilotFieldProc re proc for the pilot-record field object: PilotSetField allocates the object, stores it at +0x17A and installs this as its proc (*puVar1 = FUN_00469010); it branches on the message in param_2 (0/2/3) and resets the two sub-fields to 0
0x004692D0 EJECTProc sms
0x00469300 EJECTEventProc sms
0x004694D0 EJECTMoveProc sms
0x0047FAA0 _SingleMission sms single-mission entry — sets up a one-off (non-campaign) mission
0x0047FAAE JOGCFetchMission re download a mission file from the JOGC online server (_getMSdatafile/_getMSdatafilesize, _SaveFile), then run single mission. BORDERLINE: online path may belong to network #219; not a C function (#479): mid-function split of __SingleMission@0 (0x0047FAA0)
0x0047FEC0 _CreateQuickMission sms constructs a Quick mission
0x0047FF30 _CreateFortMission sms constructs a Fort mission
0x0047FF40 _CreateFortMission2 sms constructs a Fort mission (variant 2)
0x0047FF50 _CreateProMission sms Pro Mission Creator entry: MAPScreen when screens enabled, else fixed ~fake.M (error if missing)
0x0047FFC0 _AircraftReference sms shell trampoline to INFO2Screen
0x0047FFD0 _ViewPilots sms shell trampoline to PilotScreen (view mode)
0x0047FFE0 _StartCampaign sms CampaignSelect then PilotScreen; false when either cancels
0x00480000 _ContinueCampaign sms PilotScreen in continue-campaign mode
0x00480020 _BriefPaper sms briefing/debrief paper step: BriefScreen on .MT (honors _doScreens/_doBriefPaper skip flags; free-flight skips); cancel aborts the campaign; Jane's Online host deletes the temp mission+MT after
0x00480110 _BriefMap sms briefing map step: MAPScreen when enabled; returns next-screen code 0xd/0xb
0x00480150 _SelectPlane sms plane-select step via SelectRepairPlane (pilot-aware); next-screen code 0xe when skipped
0x004801A0 _RepairPlane sms repair-plane step via SelectRepairPlane(repair mode) when a pilot is loaded
0x004801C0 InitAntiCheat sms multiplayer anti-cheat: clear the FILE_CRC verification table (_localAntiCheat, stride 0x11) and per-computer cheat/frame-rate state
0x00480230 ComputeCRC sms CRC-32 (via _crc_table) over a class-specific prefix of an OBJ_TYPE record (0xa6 plane / 0xba GV / 0x1bc ordnance / 0x13b …), zeroing the variable tail fields first so only the tuning bytes count; fort missions exempt class-5 ordnance. Detects a modified .PT/.OT (souped-up plane)
0x004804C0 GetAntiCheatIndex sms find (or -1) the anti-cheat table slot for a type filename
0x00480530 FindAntiCheatIndex sms find the anti-cheat slot for a filename, returning the free slot count when absent (insert position)
0x004805A0 UpdateAntiCheat sms record this station's CRC for a type file into the shared table and set its presence bit (MP only)
0x00480690 PostAntiCheat sms broadcast every local CRC (MPSendAntiCheat) + the local cheats-on flag at mission start; arm the frame-rate/cheat-info display windows
0x00480700 PostCheatsOn sms broadcast whether the local player has cheats enabled; re-show the cheat banner on change
0x00480750 MISSIONInit1Impl sms THE mission bring-up: seed the RNG (Rand16 ^ system-time ^ waitCounter), zero all 8-slot per-player score arrays (kills/deaths/damage/revives/killRatio/scores + human/AI splits), reset scenario end-conditions (endScenarioKills/Time, revive rules), randomise wind, then init every sim subsystem in order — T_Init, OBJInit(300000), COLInit, CTInit, MSGInit, SAYInit, WNGInit, GRPInit, APInit, PLANEInit, ROInit, PROJInit, ZONEInit, GRAPHICInit — and clear the _stats block
0x004809D0 MISSIONLoadOrdIcons re load ordnance HUD icon PICs (ord_air3.PIC ...) during MISSIONInit2 when no player plane / at home airport
0x00480A30 MISSIONInit2Impl sms post-load pass (after _MISSIONTextProc built the objects): assign sides (MAPSetSide), find humans, resolve aliases (OBJAliasAll/ForMulti), set the mission clock, load the .MC event proc (host only), SAYInit2 + ChooseScoreInit, load ordnance icons, first MISSIONCheckSuccess
0x00480B40 MISSIONInit1 sms C-linkage entry wrapping _MISSIONInit1 (the mission bring-up), for the .MC/shell callers
0x00480B50 MISSIONInit2 sms
0x00480B60 MISSIONInit3 sms third init phase: reset the SAY home/succeeded/failed flags and seed them from MISSIONSucceededForThisPlayer
0x00480B70 MyFilterProc sms
0x00480B80 MISSIONInitMedalInfo sms set _playerHasWingmen from the player's wing size (medal eligibility) and refresh the cheating state
0x00480BE0 MISSIONSetCheating sms sets the mission cheating flag
0x00480C20 LoadCampaignProc sms load the campaign proc resource -> _campaignProc
0x00480C40 InitCampaignPilot sms
0x00480C90 AddCampaignPlane sms
0x00480D70 CampaignPlanesLeft sms
0x00480D90 UkraineCheckMaxPlanes sms
0x00480DF0 UkraineAddA7 sms
0x00480E10 AddCampaignStore sms imported by 6 shipped .CAM overlays (#491); named at this VA by FA.SMS
0x00480EA0 LoadCampaignStores sms sync the campaign 50-slot stores pool (16-byte records at PILOT+0x1c60: type + count at +0xe) with the player plane hardpoints: param 0 returns stores to the pool, 1 deducts (clamped 0); -1 count = unlimited
0x00480F90 UkraineRescued sms
0x004810C0 KurileRescued sms
0x004810D0 VietnamRescued sms
0x004810E0 ATFRescued sms
0x00481190 UkraineQuit sms
0x004811A0 ConfirmQuitMission re quit-mission confirmation (shared body of the KurileQuit/VietnamQuit thunks): AlmostHome + CallMissionProc success test -> "If you quit before reaching home..." / "You have not yet fulfilled the mission..." yes/no
0x00481260 KurileQuit sms
0x00481270 VietnamQuit sms
0x004812B0 CampaignDiskError sms disk-full/read-only/cannot-write dialogs, then campaign state 0x11 + CampaignOff
0x00481320 CampaignSave sms write _campaignPilot (0x25e0, base 0x4f8bb8) to the RM cache + the pilot file; disk error path on failure
0x00481370 CampaignOff sms free the campaign proc + clear campaign/pilot/mission name globals and _campaignPlane
0x004813C0 AbortCampaign sms confirm (when mid-mission), then CampaignOff + state 0x11
0x004813F0 CampaignMenu sms campaign menu-bar commands: 1 = restore PILOT.BKP + state 4 (replay mission), 2 = AbortCampaign
0x00481440 CallCampaignProc sms the campaign driver: cmd 0 init, 1 = save PILOT.BKP + invoke + SeqEnd (mission start), 3 = post-mission (playerBailed test, bail zeroes the 0xbc-byte plane-roster slot at +0xdb0, home landing stores damage into the slot + repair% = dam*100/max + type+0x1b4 clamp 100, LoadCampaignStores return, stats: missions/failures/bails/wingman at +0x1f80..), 4 = debrief (dead/MIA/failed -> retry restores PILOT.BKP else save+off), 5 = end (victory appends to the campaigns-won field +0xc2), 6/8 = query, 7 = bail notify
0x00481920 CampaignProcInvoke re low-level campaign-DLL call: latch __campaignFailures=DAT_004fab40 then (*_campaignProc)(cmd). Inner worker of _CallCampaignProc@4
0x00481940 CallMissionProc sms dispatches into the mission's compiled .MC DLL proc (see MC.md); called from _MISSIONTextProc for the mission-logic handoff
0x004819F0 MISSIONShutdown sms tear the mission down once (guard flag): WRShutdown, T_Shutdown(+DB), OBJShutdown, VIEWFree, HUDShutdown, CTShutdown, MPMissionShutdown, sound off, SAYShutdown, StreamersShutdown, free the mission RM/MM alloc id 1
0x00481A70 MISSIONSuccess sms imported by 15 shipped .MC overlays (#491); named at this VA by FA.SMS
0x00481A7B MISSIONEnemiesAlive re scan objects for a live enemy during the first 300 ticks (_Alive, _currentTime<300); mission start-grace test used near _AlmostHome; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00481B80 AlmostHome sms within 0xA50000 of APHomeAirport and below 0x4E2000 alt (RTB gating)
0x00481BD0 ConvertOldPreferredTargetId sms widen an old 16-bit save target id to the 32-bit form (save compat)
0x00481C10 MISSIONTextProc sms the .M mission-file interpreter (#485): whitespace-tokenizes the file via TextNextToken over a global cursor (_0x55281c/_0x5528c0), dispatches a keyword switch that reads numeric fields (TextNextNumber) and constructs the live mission — _T_AddObj per placement, then _WNGAdd (wing)/_GRPAdd (group)/_HARDLoad (loadout)/MAPAddSpecial, and _OBJAlias+_WPSetWaypoints for waypoint lists. Header directives set _layerName/_missionDLLName/_mapName/_missionHours; _CallMissionProc runs the .MC DLL
0x00483C90 TextNextToken re whitespace-delimited token scanner over the parse cursor DAT_0055281c..DAT_005528c0. MC.md: MISSIONTextProc tokenizer FUN_00483c90; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00483D10 TextIsDelim re predicate: is char a token delimiter/whitespace (helper of TextNextToken); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00483D30 TextNextNumber re read next token and convert to integer (_StringToNumber); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00483D50 TextTokenToValue re scalar token->value conversion helper (uint->uint); low-confidence, revisit
0x00483E00 UkraineMedals sms Ukraine campaign medal pass: test criteria, set the +0x572 medal-flag band, _AwardMedal the title (Navy decorations) (#29)
0x00484050 KurileMedals sms Kurile campaign medal pass: test criteria, set the +0x572 medal-flag band, _AwardMedal the title (Navy decorations + Yellow Fever) (#29)
0x004842B0 KurilePromotions sms
0x00484410 VietnamMedals sms stub — return 0; the Vietnam campaign awards no medals (#29)
0x00484420 VietnamPromotions sms
0x00484430 ATFEgyptMedals sms ATF Egypt campaign medal pass: test criteria, set the +0x572 medal-flag band, _AwardMedal the title (Air Force decorations) (#29)
0x00484690 ATFVladMedals sms ATF Vladivostok campaign medal pass: test criteria, set the +0x572 medal-flag band, _AwardMedal the title (Air Force decorations) (#29)
0x004848F0 ATFPromotions sms
0x00484B70 ATFBalticMedals sms ATF Baltic campaign medal pass: test criteria, set the +0x572 medal-flag band, _AwardMedal the title (Air Force decorations) (#29)
0x00484D90 EndOfMissionStats sms end-of-mission player statistics (kills/losses/score)
0x00485040 EndOfFortMissionStats sms end-of-mission statistics for Fort (base-assault) missions
0x004851C0 MISSIONFortDestroyed sms Fort-mission: a fort object was destroyed
0x00485260 MISSIONFortDestroyedByFort sms Fort-mission: a fort was destroyed by another fort
0x004852F0 MISSIONFortStatus sms Fort-mission: current fort status query
0x00485380 CampaignAccumStats re fold end-of-mission stats into campaign running totals (DAT_004fab44.. += DAT_0054ddc4..) via StatsAddPair. AnalyzePLT 'stats flush'; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004854A0 StatsAddPair re add a fired/hit counter pair (accumulator). AnalyzePLT 'weapon accuracy accumulator'; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004854E0 WpnStats sms per-weapon stats accumulator: bump the shots/hits/kills/misses counters in the StatsBucketFor bucket by event type (0 fire, 1 hit+damage, 2 kill, 3 miss); Jane's Online counts only human-target events; mirror to peers (MPWpnStats)
0x004856F0 StatsBucketFor re resolve the per-player weapon-stat bucket for a shooter/target id (_playerId/_playerWMId). AnalyzePLT 'weapon accuracy dispatch'; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00485820 KillStats sms tally one kill into the right category (13 buckets x player/wingman at 0x54ddx8) from the victim class/type-flag bits — friendly kill, plane, fort-gun, heli, ship, ground vehicle, SAM, AAA, structure, etc.; mirror to peers (MPKillStats)
0x00485A40 LandingStats sms tally a landing for the player/wingman and add its quality score (good = +50/+100); mirror to peers (MPLandingStats)
0x00485AE0 ConvertPilotFiles sms pilot-file migration: 0x15b4 legacy records (pre-FA) converted field-by-field to the 0x25e0 layout and rewritten; other wrong-size files renamed to .POO
0x00485EF0 CheckCD sms imported by 6 shipped .CAM overlays (#491); named at this VA by FA.SMS
0x00486010 MISSIONLoadCommonResources sms loads the resources common to every mission
0x00486060 CanBackUp sms can the briefing sequence step back a screen — screen-code + doBriefMap/doSelectPlane/doBriefPaper gating (host always can)
0x004860F0 MISSIONFortWin sms Fort-mission win condition test
0x00486160 MISSIONEndScenario sms the end-of-scenario test (multiplayer): time limit, four kill-goal modes (team total / either side reaches N / any single player / enemy team), Fort win via MISSIONFortWin (0x80 friendly, 0x800000 enemy), and the Jane's Online all-dead / out-of-revives condition; calls SetScenarioEndTime(2) when met
0x00486440 MISSIONScoreSides sms sum friendly vs enemy team scores (each MISSIONScore, capped at 0x3e700)
0x004864D0 MISSIONScore sms one player's score by the _scoreBy metric: 0 = kills, 1 = kill/death ratio, 2 = damage
0x00486500 MISSIONSortPlayers sms qsort the player index array by score (descending, id tiebreak) for the scoreboard
0x00486530 MISSIONScoreCmp re qsort comparator for MISSIONSortPlayers: compare two players by MISSIONScore, id as tiebreak
0x00486580 MISSIONAddScore sms mission scoring accumulator (#485)
0x004867D0 MISSIONPlayerSlot re resolve the player-score array slot index for a computer/object id (used by _MISSIONAddScore); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00486810 MISSIONPrefsChanged sms apply changed game prefs to the live player plane: unlimited weapons (HARDUnlimited), guns-only (HARDGunsOnlyAll), refresh cheating flags
0x00486860 MISSIONCheckSuccess sms per-tick mission success poll; drives _MISSIONFortWin / end-of-mission
0x004868B0 MISSIONSucceededForThisPlayer sms _missionSucceeded from the local player's side perspective (negated when this station flies the opposing side)
0x00486910 MISSIONEnsureLegalName sms strip in-string "." / "^" control markers from a pilot name/callsign so they cannot smuggle sound/insignia directives
0x00486980 MISSIONUpdateFpsRatio re store the FPS ratio DAT_5528f0 = frames/ticks (mission timing readout helper)
0x004869A0 TIMESystemTime sms
0x00486A10 TIMEInit sms
0x00486A90 TIMERestart sms
0x00486AA0 TIMEUpdate sms
0x00486C60 TIMESetCompression sms
0x00486E20 InstallTimerInt sms
0x00499380 WPSetWaypoints sms
0x004993C0 WPSetupCurrent sms
0x00499640 WPGoalObjEvent sms
0x00499680 WPMaybeAdvance sms
0x00499840 WPChange sms
0x004999B0 WPPos sms
0x00499A50 WPObj sms
0x00499AA0 WPTarget sms
0x00499AD0 WPDoingWaypoints sms
0x00499AF0 WPDirString sms
0x00499C50 WPOptimizeWaypoints sms
0x004A10E0 SingleMission sms the single-mission browser: glob the .M files, read each mission's title from [section 1] of its .MT (falling back to the filename), sort (SortIndexByString), present the SNGLMISS dialog picker with MP filename sync, and on OK write _missionName (uppercased) + return 1 to launch
0x004A1DD0 BriefScreen sms briefing/debrief screen: loads .MT (fallback [section 1..3] skeleton), AddStats for debrief (+ Jane's Online JOGC stats), one of 4 random backgrounds (BRIEFSCR/SC3/SCU/SCV, DEB* for debrief), CHATKey passthrough, mouse wheel-areas -> PgUp/PgDn, MP ready-status sync (0xd brief/0xe debrief/0x1a ready), campaignState 0x13 while briefing
0x004A2A30 AddStats sms compose the marked-up debrief/logbook stats text: CAMPAIGN/MISSION AVERAGES/PLAYER WINGMAN/AIRBASE/MISSION sections, kills/losses/damage/landing grade/elapsed time lines, [center]/[bold]/[underline] tags
0x004A5970 CanReplay sms mission replay available: a mission is loaded and not multiplayer

Collision (COL)

collision.csv · page — 19 named functions

VA Symbol Src Role
0x0042B800 Collision sms
0x0042BD30 COLSetAngle sms
0x0042BDC0 COLSweepTerrain re swept segment-vs-terrain grid walk (<=20 cells; ClipSegToCell + TestTerrainCell)
0x0042BFC0 COLTestTerrainCell re test one terrain grid cell's two triangles (corner heights + normals); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042C1A0 COLTestTerrainTri re segment vs one terrain triangle plane; records a blocking hit
0x0042C420 COLClipSegToCell re Cohen-Sutherland XZ clip of the segment to one terrain cell column
0x0042C840 COLTestObjects re object broad-phase: AABB-overlap the frame's registered ids; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042C9B0 COLTestObj re object narrow-phase: ray into object local frame, box-hierarchy clip; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0042D050 COLClipSegToBox re segment vs oriented box: 6-plane clip with closure radius
0x0042DDA0 COLFlatGround sms
0x0042DE60 COLRecordHit re keep-nearest hit accumulator (blocking slot / object slot)
0x0042DF80 COLPitchToAvoidTerrain sms
0x0042E0C0 COLGetInfo sms
0x0042E100 COLGetBox sms
0x0042E140 COLDrawInfo sms label-only in FA.SMS; ApplySymbols materializes the function
0x0042E4E0 COLTerrainBlocking sms
0x0042E530 COLInit sms
0x0042E540 COLAddObj sms
0x0042E5C0 COLRemoveCurObj sms

Sound / music (incl. WAIL32)

sound.csv · page — 53 named functions

VA Symbol Src Role
0x00412A90 ButtonSound sms play _BUTTON1/_BUTTON2.11K via SingleSound (sound owns Single/BasicSound)
0x004328B0 InitMusic sms
0x00432920 ShutDownMidi sms
0x004329A0 DMusicOn sms
0x004329E0 MusicOn sms
0x00432A80 DMusicVolume sms label-only in FA.SMS; ApplySymbols materializes the function
0x00432A90 SoundActive sms
0x00432B40 MusicVolume sms
0x00432BD0 DMusicOff sms
0x00432C00 MusicOff sms
0x00432C30 ScoreOn sms
0x00432C70 ScoreOff sms
0x00432CA0 ScoreUpdate sms
0x00432F70 ScorePlaying sms
0x00432F80 ShellMusicUpdate sms
0x00433170 ShellMusic sms
0x00433180 InitSound sms
0x00433280 ShutDownSndDriver sms
0x004332F0 ShutDownMixer sms label-only in FA.SMS; ApplySymbols materializes the function
0x00433300 InitMixer sms
0x00433480 SoundPoints sms
0x004334D0 SoundNoMixer sms
0x00433580 SingleSound sms
0x004335C0 BasicSound sms
0x004335F0 BasicLinkSound sms label-only in FA.SMS; ApplySymbols materializes the function
0x00433640 LoopSound sms
0x00433680 SoundOn sms
0x00433CE0 SoundOff sms
0x00433D40 SoundAllOff sms
0x00433D80 SoundSetup sms
0x004343B0 ViewPan sms
0x00434550 Turbulence sms
0x00434620 SoundRelease sms
0x004347A0 CheckSndPurge sms
0x004347E0 SetupLoopSounds sms
0x00434800 MaybeLoopSound sms
0x00434920 UpdateLoopSounds sms
0x004349D0 ServiceSounds sms
0x00435480 StopGameSounds sms
0x004354B0 PollMod sms label-only in FA.SMS; ApplySymbols materializes the function
0x004357C0 SoundPrioritize sms
0x00435900 StartWaitingSounds sms
0x00435980 StartVoice sms
0x00435A00 SetVolPitchPan sms
0x00435AE0 CheckSndLink sms
0x00435B40 GetMixerStatus sms label-only in FA.SMS; ApplySymbols materializes the function
0x00435B80 SoundStatus sms
0x00435BC0 SndLostFocus sms
0x00435C20 SndGotFocus sms
0x00435C30 SoundName sms
0x0046B4C0 InitAudio sms
0x0046B4D0 CleanAudio sms
0x0047A670 ShutdownGraphicsSystem sms

Memory & resource managers (MM/RM)

memory-resource.csv · page — 86 named functions

VA Symbol Src Role
0x00412FC0 cdpath sms scan logical drives for the FA CD (GetDriveTypeA==DRIVE_CDROM + probe fopen); caches _CDPATH
0x00435C60 MMInit sms alloc handle table operator_new(count*0x1C); thread all handles onto free list; GetSystemInfo page size; sets mm_initialized
0x00435D40 MMShutdown sms MMFreeAllId for ids 0..0x12 (19 pools) then free handle array; clears mm_initialized
0x00435D80 MMAllocHandle sms core allocator: MMInternalAlloc(size)+MMUseHandle -> T_HANDLE*; frees block if no free handle
0x00435DC0 MMMapFile sms
0x00435E90 MMUnmapFile sms UnmapViewOfFile + CloseHandle(mapping) + CloseHandle(file)
0x00435ED0 MMUseHandle sms pop mm_unused_list; fill data(+8)/len(+C)/flags(+10)/allocId(+12); push onto mm_used_list
0x00435F70 MMAllocPtr sms MMAllocHandle then return handle->data (+8)
0x00435F80 MMFreeHandle sms unmap(if flag 0x4000) or MMInternalFree data; RMNotify if flag 0x0010; unlink used-list; push to free list
0x00436040 MMFreePtr sms MMPtrToHandle then MMFreeHandle
0x00436060 MMReallocHandle sms
0x004360D0 MMReallocPtr sms MMPtrToHandle then return handle->data (thin realloc-by-ptr shim)
0x004360E0 MMInternalAlloc sms
0x00436110 MMInternalFree sms
0x00436140 MMPtrToHandle sms linear scan mm_used_list for handle whose data(+8)==ptr
0x00436170 MMPushAllocId sms save mmAllocId onto id save-stack @0x538250 (depth @0x4F3DCC); set new id
0x00436190 MMPopAllocId sms restore mmAllocId from id save-stack
0x004361B0 MMCompactRAM sms stub -> return 0 (no heap compaction on Win32) — the Mac-heritage purger that would discard purgeable handles and set T_HANDLE flag 0x1000 (purged); its readers (RMFind/RMFindAndLoad/BrushFromIndex/MAPDrawBG free-and-reload on the flag) are dead recovery paths in the shipping build
0x004361C0 MMFreeAllId sms walk mm_used_list; MMFreeHandle every handle whose allocId(+12)==id (group free)
0x004361F0 MMHandleLen sms return handle->len(+C) if data non-null else 0
0x00436210 MMLock sms
0x00436220 MMLockW sms
0x00436230 MMLockR sms
0x00436240 MMLockE sms SMS-named; not in inventory; extended-lock variant in the MMLock family (undecompiled)
0x00436260 MMUnlock sms no-op ret (Win32 memory is fixed)
0x00436270 MMAccessR sms
0x00436280 MMAccessW sms
0x00436290 MMAccessE sms return handle->data(+8)+offset (0 if handle/data null); THE handle-deref primitive
0x004362C0 MMAreaFree sms SMS-named; not in inventory; free-area query (returns KA/ulong)
0x004362D0 MMByteAt sms (int8)(base+off)
0x004362E0 MMWordAt sms (int16)(base+off)
0x004362F0 MMUWordAt sms SMS-named; not in inventory; unsigned 16-bit read primitive; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00436300 MMLongAt sms SMS-named; not in inventory; signed 32-bit read primitive; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00436310 MMULongAt sms (uint32)(base+off)
0x0046A370 SMInit sms load the FA.SMS symbol map (.SMS then RELEASE.SMS fallback); build the sorted name->VA table; family of the claimed SMCallByName@0x46A570
0x0046A4C0 SMShutdown sms
0x0046A4E0 SMAddress sms binary-search the symbol map: name -> address (RM binds _Load/_Setup/_Free through it)
0x0046A570 SMCallByName sms
0x00478BC0 LibStartUp sms
0x00479630 DoLoadLibFile sms
0x004797E0 CompareHints sms comparator for the SearchLib hint table (DoLoadLibFile < here < SearchLib)
0x004798B0 SearchLib sms
0x00479960 FindNext sms file-find family inside the LIB-search unit (SearchLib < here < LibOpen)
0x00479A60 FindFirst sms
0x00479B20 FindClose sms
0x00479B50 MatchPattern sms
0x00479BD0 LibOpen sms
0x00479DA0 GetDiskFree sms
0x00479F50 GetDosFileTime sms
0x004A5540 GetFiles sms collect 8.3 filenames matching pattern into a table over _FindFirst/_FindNext/_FindClose
0x004A67F0 RMInit sms zero resList[1400] (0x19FA dwords) and resCache[20]; set rmInitialized(@0x50A618)=1
0x004A6820 RMShutdown sms RMFree every live resList slot; zero table; clear rmInitialized
0x004A6860 RMType sms
0x004A6870 RMChangeType sms
0x004A68F0 RMLocate sms register key(uppercased)+flags(+0E)+ptr(+0F) in first free RES_LIST slot; tag allocId(+0D)=mmAllocId
0x004A6970 RMUnlocate sms RMFind(name) then clear name byte (release the RES_LIST slot)
0x004A6990 RMFind sms uppercase key; check 20-entry LRU resCache then linear-scan resList; refresh timerTicks; purge dead handles (flag&2 && handle+0x11&0x10)
0x004A6AB0 RMCacheInsert re insert RES_LIST ptr into resCache evicting the oldest (min timerTicks) slot; stamps timerTicks [FUN_004a6ab0]; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004A6AE0 RMAccess sms
0x004A6B30 RMFindAndLoad re core resolve+load+register; name from embedded string "RMFindAndLoad: can't load %s" @0x50A624; SMCallByName _Load; LoadFile; IsDLL/LoadDLL for PE-packaged resources; marks handle flag|0x0010; RMLocate(name,3,h); RMSetup [FUN_004a6b30]
0x004A6CC0 RMAccessHandle sms RMFindAndLoad then return the raw handle/ptr (+0x0F) WITHOUT dereferencing
0x004A6CE0 RMFree sms RMFind; if flag bit0 SMCallByName _Free; MMFreePtr or MMFreeHandle by flag bit1; RMUnlocate
0x004A6D60 RMFreeAllId sms RMFree every resList entry whose allocId(+0D)==id; brackets with rmNotifyEnabled=0/1
0x004A6DB0 RMNotify sms callback from MMFreeHandle: find resList entry whose ptr(+0F)==freed handle and invalidate it; gated by rmNotifyEnabled
0x004A6DF0 RMSetup re post-load per-type hook: SMCallByName _Setup (string @0x50A654) on the freshly loaded resource [FUN_004a6df0]; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004A6E20 SetupBitmapAccess sms
0x004A6E50 LoadPIC sms RM-cached PIC load (RMFind/RMChangeType/G_LoadBitmap/RMLocate); 10 bytes past the declared range end 0x4A6E46
0x004A7240 RMLegalFilename sms canonicalize a resource filename in place (IsBadStringPtr len 0xD; collapse to a single '.'); OUT-OF-RANGE claim (sits in terrain span)
0x004ACDC0 DiskInit sms disk-I/O layer 0x4ACDC0-0x4AD3A0 directly preceding LoadFile@0x4AD3C0 which builds on it
0x004ACDF0 GetHandle16 sms
0x004ACE50 Open sms
0x004ACF30 Create sms
0x004ACFA0 Close sms
0x004AD0C0 Read sms
0x004AD140 Write sms
0x004AD1C0 UGetFileSize sms
0x004AD220 Delete sms
0x004AD250 Rename sms
0x004AD270 GetCurrentPath sms
0x004AD2E0 SaveFile sms
0x004AD380 ClearCachedFilenames sms
0x004AD3A0 GetExecutablePath sms
0x004AD3C0 LoadFile sms
0x004AD9B0 LoadFile2 sms
0x004ADAC0 ConcatDirAndFile sms path join for LoadFile/LoadFile2 (sits between them and PlayVDOFile)
0x004C60F0 DecodeFile sms LZSS ring decoder over _lzwBuff (0xFEE init / 0x20 fill); named API entry of the waived lzwlib unit

Cockpit sensors (radar / IR / RWR)

cockpit-sensors.csv · page — 63 named functions

VA Symbol Src Role
0x00438520 CPSetMissile sms set the currently-selected missile/weapon on the scope
0x004385C0 CPClearMissile sms clear the selected missile
0x004385E0 CPCopyView sms copy the cockpit view state
0x004386C0 CPToggleWindow sms toggle a cockpit MFD/scope window
0x00438870 WPCInit sms compute the on-screen positions/sizes of the cockpit MFD windows (the 0x539d38 layout table) from the screen resolution (0x55c06a/0x55c06c) and the scale shifts (0x538808/0x538800); param selects a layout variant
0x0043887B WPCInitBody re overlapping alternate entry of WPCInit
0x00438B70 CPInit sms cockpit-sensor init: allocates the radar + RWR contact buffers and resets the scopes
0x00439170 CPShutdown sms cockpit-sensor shutdown
0x00439220 CPDraw sms render the radar/IR/RWR scopes and cockpit MFDs (the scope renderer; consumes the contact buffers CPAddItemToScopes fills)
0x00439E40 CPScopeProject re project a contact's world position into scope coordinates for the radar/RWR renderers
0x0043A0B0 CPDrawScopeButton re draw a small labelled indicator/button in a scope corner (highlighted when selected)
0x0043A190 CPDrawWindow re the cockpit MFD window dispatcher: switch on _windowTypes[i] to render each scope — 1 -> CPDrawWindow1, 2/3 -> radar B-scope (front/other view), 4/0xb -> target MFD, 5/6/7/8/9 -> the other MFDs, 10 -> the RWR (CPDrawRWR); blit to screen/brush by the return code
0x0043A364 CPWindowDirty re MFD helper: has a scope window changed since last draw
0x0043A400 CPDrawEmptyWindow re draw an empty/framed cockpit MFD window
0x0043A5C0 CPDrawRadarScope re the radar B-scope / target-designation MFD renderer (front/other/target views): walks the radar contact buffer, draws each contact, resolves the designated target and the selected-weapon lock, and is weather-gated via WRCanSee (renderer.md). The subsystem's largest scope renderer
0x0043BB50 CPScopeBlank re blank/prep a scope drawing surface
0x0043BBA0 CPDrawWindow8 re cockpit MFD window-type 8 renderer
0x0043BF60 CPDrawWindow6 re cockpit MFD window-type 6 renderer
0x0043C2F0 CPDrawWindow7 re cockpit MFD window-type 7 renderer
0x0043C5B0 CPScopeHelperA re scope-renderer helper (shared drawing primitive)
0x0043C610 CPScopeHelperB re scope-renderer helper (shared drawing primitive)
0x0043C6B0 CPDrawTID re a large cockpit MFD renderer (tactical/threat information display): draws the contact list with range rings and symbols
0x0043CEC0 CPScopeHelperC re scope-renderer helper
0x0043CF10 CPScopeHelperD re scope-renderer helper
0x0043CFB0 CPScopeHelperE re scope-renderer helper
0x0043D0E0 CPScopeHelperF re scope-renderer helper
0x0043D290 CPScopeHelperG re scope-renderer helper
0x0043D460 CPScopeHelperH re scope-renderer helper
0x0043D690 CPDrawWindow1 re cockpit MFD window-type 1 renderer (thunk into the body)
0x0043D69B CPDrawWindow1Body re cockpit MFD window-type 1 renderer body
0x0043DB40 CPScopeHelperI re scope-renderer helper
0x0043DCC0 CPScopeHelperJ re scope-renderer helper
0x0043DDD0 CPRadarRange sms current radar range setting
0x0043DE00 CPToggleHistory sms toggle the radar history trail
0x0043DE10 UsingSuppRadar sms is the supplementary (secondary) radar in use
0x0043DE90 CPSetSkill sms set the AI/radar skill level
0x0043DEE0 CPAddItemToScopes sms per-target visibility gate: runs the radar / IR / RWR detection tests and inserts the contact into the matching scope buffer (0x53bea8 radar+IR, 0x539e58 RWR)
0x0043DF70 CPRadarSees re radar detection predicate: target alive (+1 bit0) and radar-detectable (type +9 bit 0x20), passes the mode-specific look-down/altitude filter (_radarMode 0x5387d8; modes gate ground-clutter, RCS at type +0x3b sets max range), lies in the scan-bounds box (0x5387e0 up / 0x539d78 down), is inside the radar-beam FOV (PROJInFOV), and is not terrain-blocked. Chaff (GRAPHIC type 0xc/0xd) always shows
0x0043DF7B CPRadarSeesBody re overlapping alternate entry of CPRadarSees
0x0043E220 CPSuppRadarSees re supplemental (AWACS/GCI datalink) detection predicate: only when UsingSuppRadar; a wider bounds box (0x539e50 / 0x5387a0), inserted into the radar scope as a datalink contact (mode 1)
0x0043E330 CPRwrSees re RWR detection predicate — is this emitter illuminating the player: for a SAM/AAA site (class 6) the emitter must be on (type +0xa6 bit1), not in a non-emitting state (+0xb4 != 4), not in the exclusion-name list, and within 0x76ac00; for a plane (class 2/4) it must be radar-capable and have the radar-locking-me flag (+0xde bit 0x400)
0x0043E450 CPScopeInsert re insert-or-update a detected object into a scope contact buffer (radar/IR at 0x53bea8, RWR at 0x539e58), deduping by object id and refreshing its record
0x0043E700 CPScopeFindContact re find an existing contact record for an object id in a scope buffer
0x0043E780 CPRemoveItemFromScopes sms remove a contact from the scopes
0x0043E7B0 CPScopeClearEntry re clear one scope contact-buffer entry
0x0043E7E0 CPBombRange sms current bomb-range/CCIP setting
0x0043E810 CPUpdateRadar sms per-frame radar sweep: timestamps the scan and clears the sweep accumulator
0x0043E830 CPResetRWR sms reset the RWR: zero the radar-scope and RWR contact buffers (2x 0x6d6 dwords) and re-arm the scan timers
0x0043E8C0 CPComputeRCS sms radar-cross-section + IR-signature model: sums a target's signature from base size (type +0x45), configuration (gear/bay/afterburner via the +0x16F flags), aspect (pitch +0x1F, bank +0x21), damage (+0x10), and the class extension (+0xDE). The gameplay-defining input to the weapons seeker/lock model (weapons.md)
0x0043EA40 CPDrawRWR re the RWR threat-display renderer: refreshes every 0x40 ticks, draws the threat ring + the RCS diamond from _frontRCS/_sideRCS, and each RWR contact coloured by lock state — a track lock is red (0x2b) and a search lock yellow (0x2c) until _currentT passes _trackLockEndT/_searchLockEndT (the RWR spike timing)
0x0043F0E0 CPScopeForEach re walk a scope contact buffer applying a predicate/callback (thunk)
0x0043F0EA CPScopeForEachBody re body of CPScopeForEach: iterate the contact buffer, dropping entries the predicate rejects
0x0043F280 CPScopeAge re age out stale scope contacts past their timeout
0x0043F300 CPContactVisible re is a scope contact currently drawable (on-scope + not expired)
0x0043F360 CPScopeSymbol re pick + draw the symbol/colour for one scope contact by its class/threat state
0x0043F510 CPDrawWindow5 re cockpit MFD window-type 5 renderer (thunk)
0x0043F51A CPDrawWindow5Body re cockpit MFD window-type 5 renderer body
0x0043FAF0 CPDrawGroundRadar re cockpit MFD case-9 renderer: the air-to-ground / ground-map radar scope — sets _radarMode=4 when A/G radar is on (0x50cf5e bit 0x100000), picks the best air-ground seeker (HARDBestSeekers 3), and draws the contact list via CPScopeRangeRing/CPScopeSelectContact. Was masked by an IP.EXE cross-binary waiver (#477)
0x00440BF0 CPScopeRangeRing re draw the range rings / scale marks on a scope
0x00440D00 CPScopeSelectContact re update the selected/designated contact highlight on a scope
0x00440E10 CPNextTarget sms cycle the radar-scope target: scan the radar contact buffer (0x53bea8) for the next (or previous) radar-detectable contact past/before the current target range — the t / T keys (input.md FlightKey)
0x00440FE0 CPUpdateIRItems sms per-frame IR-item update: refreshes the IR-seeker contact list
0x00441160 CPGetContact sms in the CP scope unit (CPNextTarget < here < ChooseScoreInit)

.SEQ scripted-cutscene / sequence player (SEQ)

seq.csv · page — 41 named functions

VA Symbol Src Role
0x00412C10 PlaySeq sms public entry - SeqStart then GetKey/SeqContinue/flush loop then SeqEnd; scattered out-of-range
0x00444F70 SeqInit sms zero all seq lists/free-lists/arrays (seqList seqGrArray seqFontArray seqLabels seqText); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00445060 SeqStart sms load .SEQ file - alloc a 0x38-byte SEQUENCE slot - build background bitmap - returns slot index; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00445330 SeqLoadScript re LoadFile the .SEQ then loop skip/expand/include lines into compiled command buffer; recursive for includes
0x00445440 SeqSkipComments re scan script text past blank lines - ; and // comments - whitespace; return next content or NULL; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004454D0 SeqSubstitute sms expand %N token into the N-th SeqStart argument string
0x00445550 SeqExpandLine re tokenize one script line into seqLine - handle quotes and %-substitution; return next line; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004456B0 SeqParseInclude re detect an include directive and extract the quoted filename; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00445700 SeqContinue sms main per-tick interpreter - fade + labels + fetch line + build SEQ+cmd name and SMAddress-dispatch the sub-op; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00445B40 SeqFetchLine re read next raw line from compiled buffer into seqLine - parse leading timecode (/abs +rel frame) into next-command tick; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00445CC0 SeqParseLabel re parse =label definition - copy name into a seqLabelList node and set seqLabelPtr; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00445D30 SeqStop sms tear down one sequence slot - free handle - return label/graphic nodes to free lists
0x00445E30 SeqEnd sms stop all active sequences - SoundAllOff - MusicOff - RMFreeAllId(4); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00445E70 SeqRect sms script op - set current sequence clip rectangle (x y w h); absent-from-inventory
0x00445ED0 SeqRender re per-frame render - SetupBitmapAccess then expire nodes then walk seqGraphics ring drawing dirty SEQGR nodes under clip box; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446090 SeqExpireGraphics re age SEQGR ring nodes vs timerTicks - set expired/dirty flags; return redraw-needed; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446100 SeqNextOverlap re iterate SEQGR ring for next node whose rect overlaps a given rect
0x00446170 SeqGraphicOrder re SEQGR list walk via prev-links (+0x28) to a target node - returns its left-x; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004461A0 SeqDrawGraphic re draw one SEQGR node by type - 1 bitmap blit - 2 filled rect - 4 multiline color text; mark overlaps dirty; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446330 SeqAccessResource re RMAccessHandle wrapper that credits the load time back into seqIgnoreTicks
0x00446360 SeqRedrawRegion re redraw a SEQGR node clipped to a sub-rect (partial refresh of overlapped area); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446500 SeqNewGraphic re allocate a SEQGR node from seqGrList free-list - link into seqGraphics ring - set rect/type/expiry/name; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446610 SeqGRFind sms find a SEQGR node by its name string; absent-from-inventory
0x00446660 SEQbitmap sms script op - load and display a bitmap as a SEQGR node; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446710 SeqLinkLabel re link seqLabelPtr into the sequence label list and set the synch wait target when seqSynch
0x004467B0 SEQblock sms script op - draw a filled colored block as a SEQGR type-2 node
0x00446850 SEQcall sms script op - chain/call another sequence or label; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446890 SEQfadein sms script op - begin palette fade-in (save curPalette - set seqFading=1 fade start/len); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446910 SEQfadeout sms script op - begin palette fade-out (seqFading=-1); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446990 SeqFadeOut sms apply a fade-out step - blacken curPalette by elapsed/len ratio; return done
0x004469F0 SeqFadeIn sms apply a fade-in step - un-blacken curPalette by ratio; return done
0x00446A50 SEQfont sms script op - load a font into seqFontList; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446B70 SEQmusic sms script op - start a music track via MusicOn(name priority); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446BE0 SEQpalette sms script op - load/set the sequence palette; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446C60 SEQrun sms script op - resume/run control (16-byte leaf); absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446C70 SEQsound sms script op - play a sound effect; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446D30 SEQsndoff sms script op - stop sound(s); absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00446D90 FormatText sms
0x00446F10 SEQtext sms script op - build a wrapped-text SEQGR type-4 node using FormatText; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00447090 SEQvideo sms script op - play an AVI/video clip (drives videoState); absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00447120 SEQwait sms script op - wait/synchronize N ticks; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand

Flight model / physics (FM/HARD)

flight-model.csv · page — 116 named functions

VA Symbol Src Role
0x0040F6B0 DAMAGEInit2 sms secondary damage init
0x0040F760 DAMAGEInit sms damage-model init: seeds the entity damage-state fields (0xA0 hud_draw_data, 0xAA damage_hit_data, 0x6A damage_init_data)
0x0040F970 DAMAGEDoHit sms hit resolution (#487): DAMAGEDoHit(entity, short amount, int hit_record). Branches on object class (_cg==4 aircraft, class 7 objects), reads health at entity+0x0E and the damage-flags word at entity+0xA6 (bit 0 gates aircraft damage, bit 0x80 the class-7 path), writes entity+0xAA damage_hit_data / +0xC8 cn_damage; hands a destroyed aircraft to PLANEBreakUp
0x004106D0 DAMAGEPorpoise sms porpoising — the pitch instability a damaged/overstressed aircraft develops
0x004108B0 DAMAGEUpdate sms per-frame damage update: re-reads the entity+0xA6 damage-flags and drives progressive damage effects
0x00411350 DAMAGEReport sms HUD damage report: formats _dam as a percentage (via _percentDamageString) and posts it with _HUDMessage
0x004113C0 DAMAGEAutopilotAvail sms tests whether the autopilot is still available given the current damage state (a block of damage-state globals at 0x5224dc-0x5224e3)
0x00412780 SpeedOfSound sms
0x00413C70 TVKey sms
0x004197D0 ArmPlane sms the interactive arming/loadout screen (#487): presents the aircraft hardpoints, drives weapon selection via dialogs, and applies the loadout through _HARDPtrs/_HARDLoad (+ _MPSetHardpoints/_MPSetFuel for MP sync); reads shell-UI state. Returns a status uint. The largest single function in the binary (11 KB)
0x00447970 IntersectT sms
0x004479D8 IntersectB sms sibling of IntersectT@0x447970 (same signature; 0x68 apart in the same unit)
0x004514C0 FMUpdateGearPitch sms
0x00451580 FMUpdateGear sms
0x004515E0 FMUpdateWingSweep sms
0x00451680 FMUpdateThrustVector sms
0x004516B0 FMGetWeight sms
0x00451820 FMCopyAngles sms
0x004518A0 FMInitPlane sms
0x00451A60 LimitThrottle sms
0x00451B00 SetThrottle sms
0x00451B60 FMFlaps sms
0x00451C30 FMHook sms
0x00451C90 FMGear sms
0x00451D70 FMBrakes sms
0x00451E00 FMVector sms
0x00451E50 FMFuelConsumption sms
0x00451E80 BurnFuel sms
0x00452050 FMBurnNPCFuel sms
0x00452140 FMUpdatePlaneFields sms
0x00452630 FMBay sms
0x00452710 FMUpdateBay sms
0x00452760 FMBayIsOpen sms
0x00452770 HARDPtrs sms
0x004527F0 HARDUnload sms
0x00452870 HARDPtrsFort sms
0x004528D0 HARDUnloadFort sms
0x00452940 HARDStoreWeight sms
0x00452980 HARDCanLoad sms
0x00452C20 HARDLoad sms
0x00452D10 HARDLoadAll sms
0x00452D60 HARDUnloadAll sms
0x00452D90 HARDBestSeekers sms
0x00452E60 HARDBestSeeker sms
0x00452EA0 HARDFindJammer sms
0x00452F10 HARDFindECMForObj sms
0x00452F80 HARDFindStore sms
0x00452FF0 HARDFindProj sms
0x004530A0 HARDSetFlags sms
0x00453220 HARDUnrotatedHardPos sms
0x004532A0 HARDPos sms
0x004533D0 HARDGunsOnly sms
0x00453440 HARDGunsOnlyAll sms
0x00453490 HARDGunLoadPercent sms
0x00453510 HARDNameDebug sms
0x00453640 HARDUnlimited sms
0x00453710 HARDPodHack sms
0x00453800 HARDClearUnloadedHarpoints sms
0x00453870 HARDResourceName sms
0x00453890 HARDStoreName re resolve a hardpoint store's resource-name string via _NextString (name at +5 for loaded stores, +1 otherwise); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004538C0 HARDSaveHumanLoads sms
0x004539C0 HARDRestoreHumanLoad sms
0x00453A70 HARDTotalFuel sms
0x00453AC0 HARDNumLoaded sms
0x00453AF0 HARDHasInternalBay sms
0x00453B90 HARDRearmTest sms
0x00453C50 HARDRearmHumanLoad sms
0x00453D10 HARDUsedWeapons sms
0x00453D50 HARDSaveFortLoads sms
0x00453EC0 HARDRestoreFortLoad sms
0x00453F90 HARDRearmFortTest sms
0x00454060 HARDRearmFortLoad sms
0x00454140 ChangePlaneType sms
0x004543A0 RepairTime sms
0x004543C0 SelectRepairPlane sms
0x00476880 LimitFromLowSpeed sms
0x004768F0 WrapHB sms wrap a heading/bank attitude angle; sits in the flight-dynamics code region
0x00476920 WrapP sms wrap a pitch attitude angle
0x00476950 StickInput sms
0x00476AA0 GToTurn sms
0x00476AE0 MovePlane sms the per-frame player-aircraft motion integration step
0x00477140 CheckLandingParms sms
0x00477240 CheckLanding sms
0x00477590 FMTurbulence sms
0x00477D10 COMinSpeed sms
0x00477D30 COCornerSpeed sms
0x00477D50 MaxSpeed sms between COCornerSpeed and COMaxSpeed in the CO performance-query cluster
0x00477E50 COMaxSpeed sms
0x00477E60 COAcc sms
0x00477E80 CODacc sms
0x00477EA0 COBv sms
0x00477ED0 COBrv sms
0x00478090 COBankRate sms
0x004780D0 COTurnRate sms
0x00478150 COTurnRadius sms
0x00478190 COThrust sms
0x004781D0 COTwr sms
0x00478200 COSig sms
0x004784A0 COGPullDrag sms
0x0047A690 FMAircraftSetup sms
0x0047A770 FMGetAcc sms
0x0047AC60 FMGetNPCAcc sms
0x0047ADD0 ThrustSupport sms
0x0047AEB0 FMVertMotion sms
0x0047AF20 GetGround sms ground elevation under the aircraft; between FMVertMotion and FMSetTV
0x0047AF70 FMSetTV sms
0x0047B000 FMResetTV sms
0x0047B020 FMFlight sms
0x0047FA50 _ArmPlane sms thunk to @ArmPlane@4
0x0049D1B0 TakeoffSpeed sms
0x0049D1D0 StallSpeed sms
0x0049D200 GetFlightEnvelope sms
0x0049D230 CheckFlightEnvelope sms
0x0049D2D0 EnvelopeSpeedLimits sms
0x0049D490 MaxGAtAlt sms
0x0049D4D0 EnvHighest sms envelope-table maximum query; envelope cluster at 0x49D1B0-0x49D4D0

Video decode (FMV/Cobra)

video.csv · page — 82 named functions

VA Symbol Src Role
0x00405490 VDOInit sms
0x004054B0 ZeroFrame sms VDO frame clear; directly follows VDOInit@0x405490
0x004127B0 ScreenDump sms screenshot writer: mhwa/nh header + _curPalette + _cb framebuffer to screen%d.raw
0x004219B0 StopCobraSound sms
0x004219D0 StartCobraSound sms
0x00421A50 PlayCobra sms imported by 1 shipped .CAM overlay (#491); named at this VA by FA.SMS
0x00442360 InitMovieContext sms
0x00442370 DecodeFrame sms
0x00456300 DecodeDSVGA8Frame sms key/intra frame -> 8bpp paletted SVGA output with 2x pixel doubling (Double); ExpandDB/ExpandSB books + DrawAcrossBank
0x00456AD0 EDB sms expand-book: 512 iters, reads 2 index bytes -> 8 out bytes; neighbor (idx+-1) squared-RGB-distance<=8 smoothing against frame color table at FrameHeader+0x18; builds interpolated 2x2 index pattern for 8bpp dither path
0x00456EC0 DecodeSVGA8Frame sms
0x00457230 DecodeDBook sms decode 15/16-bit codebook: 256 entries x (4 luma + 2 chroma) -> 4 RGB555/565 px each; YUV->RGB via GlobalData+0xC1B4(luma scale)/+0xC1B6(Cb off)/+0xC1B8(Cr off)/+0xC1BA(grayscale flag); param_3==0xF selects 5:5:5 else 5:6:5; channels clamped by ClampU8
0x004575E0 ClampU8 re saturate short to unsigned byte [0,255]: <0 -> 0, >=256 -> 255; leaf color-channel clamp called ~12x by DecodeDBook/DoubleDecodeDBook/Decode24Book/DoubleDecode24Book in YUV->RGB. (only FUN_ in range); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00457600 DoubleDecodeDBook sms 15/16-bit codebook decode with horizontal 2x replication (Double path)
0x00457A50 DecodeSVGA15Frame sms key/intra frame -> 15/16bpp hi-color SVGA (single); dispatch case 3 depth 0xF..0x10
0x00457E00 DecodeDSVGA15Frame sms key/intra frame -> 15/16bpp hi-color SVGA with 2x doubling; dispatch case 4 depth 0xF..0x10
0x004581C0 Decode24Book sms decode 24-bit (true-color) codebook: 256 entries -> RGB888 (uint out); YUV->RGB with ClampU8
0x00458480 DoubleDecode24Book sms 24-bit codebook decode with 2x replication
0x004587B0 DecodeSVGA24Frame sms key/intra frame -> 24bpp true-color SVGA (single); dispatch case 3 depth==0x20
0x00458D10 DecodeDSVGA24Frame sms key/intra frame -> 24bpp true-color SVGA with 2x doubling; dispatch case 4 depth==0x20
0x00459390 DecodeInterSVGA15Frame sms INTER/delta (P) frame -> 15/16bpp SVGA (single); requires prior key frame (MovieContext+0x14!=0)
0x00459B20 DecodeInterDSVGA15Frame sms INTER/delta (P) frame -> 15/16bpp SVGA with 2x doubling
0x0045A2F0 DitherCodeSingle sms ordered-dither a 15/16-bit codebook down to 8bpp palette indices (single)
0x0045A520 DitherCode sms dither a 24-bit codebook to 8bpp palette indices
0x0045A800 DitherCodeDouble sms dither codebook to 8bpp with 2x replication (Double)
0x0045AB90 DecodeDSVGA15NONFrame sms key frame, 15-bit codebook rendered to 8bpp (NON path, depth==8) with 2x doubling; dispatch submode6 case2 (+4==0)
0x0045B170 DecodeDSVGA15NONSkipFrame sms NON 8bpp doubled key frame with skip-map (GlobalData+4!=0); dispatch submode6 case2 (+4!=0)
0x0045B610 DecodeSVGA15NONFrame sms key frame 15-bit codebook -> 8bpp (NON path) single; dispatch submode6 case1
0x0045B9C0 DecodeInterSVGA15NONFrame sms INTER/delta NON 8bpp single; dispatch inter submode6 case1
0x0045BE60 DecodeInterDSVGA15NONFrame sms INTER/delta NON 8bpp doubled; dispatch inter submode6 case2 (+4==0)
0x0045C500 DecodeInterDSVGA15NONSkipFrame sms INTER/delta NON 8bpp doubled with skip-map; dispatch inter submode6 case2 (+4!=0)
0x0046ADC0 WritePalette sms VESA/palette trio directly preceding InitCobra@0x46AE10
0x0046ADF0 SetVESABank sms
0x0046AE00 SetVESATop sms
0x0046AE10 InitCobra sms
0x0046B0F0 CleanCobra sms
0x0046B120 InitVideo sms
0x0046B4B0 CleanVideo sms
0x0046B4E0 SetupCobra sms
0x0046B530 CleanupCobra sms
0x004A06F0 DoFadeout sms imported by 6 shipped .CAM overlays (#491); named at this VA by FA.SMS
0x004AE350 CenterPrint sms centered-text helper directly before PlayVDOFile (VDO subtitle print)
0x004AE410 PlayVDOFile sms
0x004AE440 PlayVDOString sms
0x004AECD0 VDOClearToBlack sms
0x004AED50 VDOSetMode sms
0x004AEE30 VDOSetLineStats sms
0x004AEE80 BuildVDOList sms
0x004AF030 FileExists sms VDO unit's local file probe (video callers; sits in the VDO code run)
0x004AF050 FileSize sms
0x004AF070 StartVDOAudio sms
0x004AF100 NewVDOLinkNode sms
0x004AF1B0 FreeVDOLinkNode sms
0x004AF1E0 OpenVDOFile sms
0x004AF200 ReadVDOHeader sms
0x004AF230 ReadFrameSizesFile sms
0x004AF2D0 ReadVDOPalette sms
0x004AF320 VDOfromVDOHEADER sms
0x004AF3A0 AllocVDO sms
0x004AF4B0 DeallocVDO sms
0x004AF510 GetVDOFrame sms
0x004AF690 VDOAlloc sms
0x004AF6A0 VDOFree sms
0x004AF6B0 VDO_320x200_to_640x480 sms
0x004AF760 VDOCompareBitmaps sms
0x004C8AA4 DecompressVideo sms
0x004C8AFC UnRLE sms
0x004C8BEC BuildSelfModifyCode sms self-modifying blit codegen inside the video-decompress unit (UnRLE < here < DecompressVideoImage)
0x004C8C60 DoNibble sms
0x004C8CD8 DecompressVideoImage sms
0x004CCC48 CopySB8 sms
0x004CCC7C CopyDB8 sms
0x004CCD14 CopySB15 sms 15-bit variants interleaved with the claimed CopySB8/CopyDB8/ExpandDB/DecodeYUV15 family
0x004CCD70 CopyDB15 sms
0x004CCDF8 CopyDSB15 sms
0x004CCE7C CopyDDB15 sms
0x004CCF54 ExpandDB sms
0x004CCF88 ExpandSB sms
0x004CCFE1 clampit_ sms YUV clamp helper directly before DecodeYUV15@0x4CCFFC
0x004CCFFC DecodeYUV15 sms
0x004CD1C0 DecodeYUV15Double1 sms
0x004CD394 DecodeYUV15Double2 sms

Renderer & rasterizer (GG/G_)

renderer.csv · page — 251 named functions

VA Symbol Src Role
0x004129A0 PrintShapeName sms empty release stub (single ret) of a shape-name debug print
0x00412A30 SetHShake sms player-gated public entry over G_SetHShake (renderer owns G_SetHShake/GG_Shake)
0x00412A60 SetVShake sms
0x0041D740 ?CreateSingleton@CDirDraw@@SAHXZ sms
0x0041D800 ?DeleteSingleton@CDirDraw@@SAXXZ sms
0x0041D910 ?Create@CDirDraw@@QAEHPAX@Z sms
0x0041D9F0 ?SetDisplayMode@CDirDraw@@QAEHKKK@Z sms
0x0041DA20 ?SetDisplayModeFromMain@CDirDraw@@QAEHKKK@Z sms
0x0041DCE0 ?CreateSurface@CDirDraw@@IAEPAVCDirDrawSurface@@PAU_DDSURFACEDESC@@@Z sms
0x0041DDA0 ?CreatePrimarySurface@CDirDraw@@QAEPAVCDirDrawSurface@@W4T_MODE@@@Z sms
0x0041DE20 ?CreateSecondarySurface@CDirDraw@@QAEPAVCDirDrawSurface@@GG@Z sms
0x0041DE80 ?DestroySurface@CDirDraw@@QAEHPAVCDirDrawSurface@@@Z sms
0x0041DEB0 ?Destroy@CDirDraw@@QAEXXZ sms
0x0041DF50 ?SetCooperativeLevel@CDirDraw@@QAEHK@Z sms
0x0041DFF0 ?GetDriverCaps@CDirDraw@@QAEPBU_DDCAPS@@XZ sms
0x0041E010 ?GetHELCaps@CDirDraw@@QAEPBU_DDCAPS@@XZ sms
0x0041E030 ?Lock@CDirDraw@@QAEPAU_DDSURFACEDESC@@PAVCDirDrawSurface@@PAUtagRECT@@H@Z sms
0x0041E050 ?Unlock@CDirDraw@@QAEHPAVCDirDrawSurface@@@Z sms
0x0041E060 ?WaitForVerticalBlank@CDirDraw@@QAEXK@Z sms
0x0041E090 ?EnumDisplayModes@CDirDraw@@QAEKXZ sms
0x0041E130 ModeCallback sms the CDirDraw::EnumDisplayModes callback (directly follows it at 0x41E090)
0x0041E300 ?ShowDDError@CDirDraw@@SAXJ@Z sms
0x0041E310 ?ddECS@CDirDraw@@SAXXZ sms
0x0041E330 ?ddLCS@CDirDraw@@SAXXZ sms
0x00447A40 G_TileInit sms
0x00447A73 G_TileShutDown sms
0x00447AA5 G_Tile sms
0x0045CA70 DrawAcrossBankInter sms
0x0045CDA0 DrawAcrossBank sms
0x0045DBD0 GG_InitMode sms
0x0045DCB0 GG_ShutdownMode sms
0x0045DCE0 GG_GetMode sms
0x0045DE70 GG_SetPalette sms
0x0045DEC0 GG_Shake sms
0x0045DEDF GG_FlushShaken re present the back buffer with the current screen-shake offset (reads _vShakeTicks/_hShakeTicks); shake variant of GG_Flush with no direct callers in the image (dead or indirect shake path); not a C function (#479): mid-function split of @GG_Shake@0 (0x0045DEC0)
0x0045E100 GG_GetSubmodes sms
0x0045E110 GG_GetSubmodeName sms
0x0045E120 GG_Flush sms
0x0045E13F GG_FlushDirtyLines re the dirty-line blit region of GG_Flush (0x45E120, whose SEH body spans 0x45E120-0x45E356); a Ghidra mid-function split reached only by fall-through (no callers) — not separately callable; not a C function (#479): mid-function split of @GG_Flush@4 (0x0045E120)
0x0045E370 flushLineStats sms
0x0045E3A0 GG_RestoreSurfaces sms
0x0045E410 GG_WaitRetrace sms
0x0045E430 GG_QuickBlt sms
0x0045E440 GG_VideoModesAvailable sms
0x0046A640 G_InitCircles sms
0x0046A690 G_ShutdownCircles sms
0x0046A6C0 G_Circle sms
0x00478520 ?Create@CDirDrawSurface@@QAEHPAUIDirectDraw@@PAU_DDSURFACEDESC@@@Z sms
0x00478740 ?SetEntries@CDirDrawSurface@@QAEHPAUT_RGB@@JJD@Z sms
0x00478830 ?Restore@CDirDrawSurface@@QAEHXZ sms
0x004788A0 ?Lock@CDirDrawSurface@@QAEPAU_DDSURFACEDESC@@PAUtagRECT@@H@Z sms
0x00478900 ?Unlock@CDirDrawSurface@@QAEHXZ sms
0x00478940 ?Blit@CDirDrawSurface@@QAEJPAUtagRECT@@PAUIDirectDrawSurface@@0K@Z sms
0x004789E0 ?InitSurfaceDesc@CDirDrawSurface@@SAXPAU_DDSURFACEDESC@@@Z sms
0x00478A00 ?Destroy@CDirDrawSurface@@QAEXXZ sms
0x00478AE0 ?Clear@CDirDrawSurface@@QAEJXZ sms
0x00479E10 G_FindFirstFile sms
0x00479EA0 G_FindNextFile sms
0x00479F20 G_FindClose sms
0x0047A5A0 InitGraphicsMode sms G_Init + derive _xscale/_xshift/_yscale/_yshift from the mode dims
0x0047A610 InitGraphicsSystem sms CDirDraw singleton bring-up (Create + SetCooperativeLevel); the #529 device layer
0x00486CF0 FPSInit sms
0x00486D10 FPSUpdate sms
0x00486DA0 FPSPrint sms
0x00486DF0 FPSPrint2 sms
0x00486E10 FPSReturn sms
0x00497330 G_FlipY sms
0x00497340 G_Init sms
0x004973F0 G_Shutdown sms
0x00497490 G_InitLineStats sms
0x004974C0 G_SetPalette sms
0x004974E0 G_SetBitmap sms
0x004974F0 G_SetClipBox sms
0x004975F0 G_SetFullClipBox sms
0x00497610 G_PushClipBox sms
0x00497650 G_PopClipBox sms
0x00497680 G_SetColor sms
0x004976D0 G_Point sms
0x00497700 G_UPoint sms
0x00497750 G_GetPoint sms
0x00497770 G_UHline sms
0x00497A10 G_Hline sms
0x00497A60 G_UVline sms
0x00497B00 G_Vline sms
0x00497B60 G_URect sms
0x00497BF0 G_Rect sms
0x00497CE0 G_Rect2 sms
0x00497D10 G_URect2 sms
0x00497D40 G_UBox sms
0x00497D90 G_Box sms
0x00497DE0 G_ClipLine sms
0x00498160 G_Line sms
0x004981A0 G_ULine sms
0x00498380 G_PatLine sms
0x004983E0 G_DrawYLR sms
0x00498410 G_SetScaleMax sms
0x00498420 G_Flush sms
0x00498430 G_ReverseVertices sms
0x00498480 G_Flip sms
0x004984B0 G_PolygonFlip sms
0x004984F0 G_UPolygonFlip sms
0x00498530 G_SPolygonFlip sms
0x00498550 G_SUPolygonFlip sms
0x00498570 G_PointFlip sms
0x00498590 G_UPointFlip sms
0x004985B0 G_UHlineFlip sms
0x004985E0 G_ULineFlip sms
0x00498610 G_LineFlip sms
0x00498640 G_CircleFlip sms
0x00498670 G_URectFlip sms
0x004986A0 G_SetFont sms
0x004986B0 G_Print sms
0x004988F0 G_PrintOutline sms
0x00498980 G_Printf sms signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004989F0 G_StringWidth sms
0x00498A20 G_StringHeight sms
0x00498A30 G_LoadDriver sms
0x00498A40 G_UnloadDriver sms
0x00498A50 G_Visible sms
0x00498AF0 code sms
0x00498B80 printPoly sms
0x00498B90 clipT sms
0x00498CE0 clipB sms
0x00498E30 clipL sms
0x00498F90 clipR sms
0x004990F0 G_ClipDestPoly sms
0x004991B0 G_CopyDriverName sms
0x004991E0 G_LoadVesa sms
0x004991F0 G_UnloadVesa sms
0x00499200 G_SetHShake sms
0x00499240 G_SetVShake sms
0x00499280 G_Hline2 sms
0x004992B0 G_UHline2 sms
0x004992E0 G_Box2 sms
0x00499330 G_UBox2 sms
0x004AF800 GLASSESInit sms
0x004AF850 GLASSESShutDown sms
0x004AF880 GLASSESHDiff sms
0x004AF8B0 GLASSESAdjust3dAmount sms
0x004AF8F0 GLASSESSaveBitmap sms
0x004AF930 GLASSESInterleaveBitmap sms
0x004AFA00 GLASSESSaveBitmapBox sms
0x004AFA40 GLASSESInterleaveBitmapBox sms
0x004AFB40 ShowPicture re shows a full-screen picture and restores the display: saves _curPalette, snapshots the screen into a scratch bitmap (_G_AllocBitmap@12 + _G_BlitToBrush@16), blits the PIC named by the argument centred (_RMAccess@8 / _G_Blit@36), holds it for 0x80 ticks (_WaitTicks@4), then restores palette and screen and frees the scratch. Defined by the disassembly of ?GLASSESInterleaveBitmapBox@@YGXJJJJ@Z, which falls through into it
0x004AFC60 GLASSESBlitWithOffsets sms
0x004B00A0 GLASSESBeforeDrawingPop sms
0x004B00D0 GLASSESAfterDrawingPop sms
0x004B0130 GLASSESSpreadLines sms
0x004B01E0 GLASSESPrintAmount sms
0x004B3170 WRSetTint sms select the active tint-remap table (_currentTintTable) by index
0x004B3190 WRGetLayer sms find the LAYER struct (0x160-byte stride) covering a given altitude; report whether it is above the cloud deck
0x004B31F0 WRSetRemaps sms pick the shade+tint remap tables for an object at a distance/altitude, interpolating between the two straddling LAYERs so haze blends smoothly across the deck
0x004B3410 WRInterpFog re interpolate a LAYER's fog density at a distance along its vis-lo..vis-hi ramp
0x004B3480 WRUpdate sms per-frame atmosphere update at the eye altitude: advance the time-of-day LAYER state machine, recompute the sun angle + light source, blend the sky/horizon palette bands, and roll random palette flicker (lightning)
0x004B3750 WRAdvanceLayers re step the LAYER weather state toward the scheduled next state (fog rolling in/out over time)
0x004B3820 WRLerpByte re byte lerp helper for the LAYER blend
0x004B382A WRBlendLayer re blend two LAYER structs field-by-field by a 0..0x100 fraction (the fog/colour cross-fade body)
0x004B3AD0 WRLerpColor re interpolate an RGB palette entry for the layer blend
0x004B3B60 WRClampByte re clamp helper for the palette blend
0x004B3B80 WRLerpWord re word lerp helper for the layer blend
0x004B3BE0 WRComposeLayerFlags re compose the effective _currentLayer flag word (night-haze etc.) for the eye altitude
0x004B3CB0 WRBuildSkyBands re build the sky-gradient colour bands from the active LAYER
0x004B3D90 WRUpdatePalette sms rebuild the working palette each frame from the LAYER sky/ground colours + tint + global colour-add, uploading only when it changed
0x004B4170 WRLightUpdate sms recompute the directional light + ambient from the sun position for terrain/object shading
0x004B4320 WRFogLayerUpdate sms imported by all 24 shipped .LAY overlays, which spell it _WRFogLayerUpdate as FA.SMS does (#491)
0x004B4370 WRInit sms load the theater .LAY weather DLL, copy its 30-dword header, init the shade/tint tables + tmap remaps, and force a first palette update
0x004B4680 WRPickTintTable re helper: select the tint table pointer for the current effects flags
0x004B46D0 WRShutdown sms free the LAYER header allocation and clear the WR-enabled flag
0x004B46F0 WRInt sms write the single-byte WR-enabled flag
0x004B4700 WRForcePaletteUpdate sms invalidate _lastPalette so the next frame re-uploads the whole palette
0x004B4720 WRWeatherEffects sms the visibility model: the minimum per-LAYER visibility byte (+0x14e) across the altitude band between two objects, plus the layer's fog distance — the range weather permits seeing through
0x004B4790 InitTmapRemaps sms
0x004B47B0 SetTmapRemaps sms
0x004B48C0 WRMakeHazeList sms build the (distance,colour) haze ramp list the sky renderer walks, terminated by 0x7fffffff
0x004B4990 WRLensFlare sms draw the sun lens-flare disc chain when the sun is on-screen and above the horizon (gamePrefs bit 0x80)
0x004B4B30 WRCanSee sms weather-gated line-of-sight: distance <= (weather visibility x the target's detectability +0x3b), clamped to the layer floor. Called by _Targetable (so weather gates visual target acquisition), VIEWCanSeeTarget, PROJScoreTarget, and the AI (0x43a5c0)
0x004B7910 G_AllocBitmapBuffer re allocate a 0x112-byte bitmap buffer via the class allocator and clear its trailing flag; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004B7930 G_RelocBitmap sms
0x004B79B0 G_AllocBitmap sms
0x004B7A80 G_AllocSurfaceBitmap sms
0x004B7BF0 G_FreeSurfaceBitmap sms
0x004B7C30 RemapAdd sms
0x004B7C60 RemapRelocate sms
0x004B7CD0 G_LoadBitmap sms
0x004B7E10 G_RemapBitmapToPalette re remap a bitmap's RGB triples to the nearest _curPalette index (sum-of-squared-channel-diff nearest-colour match)
0x004B7F60 G_BlitToBrush sms
0x004B7FA0 G_BlitToScreen sms
0x004B7FE0 G_Blit sms
0x004B8460 G_ColorPrint sms
0x004B8570 G_ColorPrintf sms
0x004B85F0 G_ColorStringWidth sms
0x004B8620 G_ColorStringHeight sms
0x004B8630 G_NextTab sms
0x004B8670 G_Scale sms
0x004B8710 G_ScaleFlip sms
0x004B87C0 G_Texture sms
0x004B87F0 G_AcTexture sms
0x004B8820 G_TextureFlip sms
0x004B8890 G_PerspectiveFlip sms
0x004B8920 G_HFlipBitmap sms
0x004B8960 G_DoubleBitmapY sms
0x004B8BA0 G_CompareBitmapSpan re qsort comparator ordering the doubled span list by (y, x): @G_DoubleBitmapY@4 passes it to _qsort with stride 10 over the span records it just built
0x004B8BF0 G_DoubleBitmapX sms
0x004B8D90 carefulDiv sms
0x004B8E10 NPM_clipTop sms
0x004B8F70 NPM_clipTri sms
0x004B90C0 NPM_clipAndScan sms
0x004B9430 NPM_FlatTri sms
0x004B9630 NPM_TextureLinearTri sms
0x004B9B90 NPM_TexturePerspectiveTri sms
0x004BA400 G_FloatFlatFlip sms
0x004BA500 G_FloatTextureFlip sms
0x004BA660 G_FloatPerspectiveFlip sms
0x004BEE60 unknown_divide_error sms
0x004BEE70 divide_by_ecx_handler sms
0x004BEF50 divide_by_ebp_handler sms
0x004BF040 divide_by_bp_handler sms
0x004BF130 divide_overflow_handler_common sms
0x004BF220 sphere_overflow sms
0x004BF250 overflow_handler_reg sms
0x004BF2C0 line_overflow1 sms
0x004BF310 line_overflow2 sms
0x004BF340 access_violation_handler sms
0x004C619C G_UPatLine sms
0x004C6334 G_UBresenhamLine sms
0x004C6ECC G_UPolygon sms
0x004C77D0 G_SUPolygon sms
0x004C8A38 G_Polygon sms
0x004C8A74 G_SPolygon sms
0x004C8E20 WRBlackenPalette sms scale a palette toward black by a 0..0x100 amount (G-LOC / blackout fade)
0x004C8E6C WRWhitenPalette sms scale a palette toward white (flash / red-out / nuke flash)
0x004C8EC8 WRReddenPalette sms scale a palette toward red (red-out under negative g)
0x004C8F10 WRColorPalette sms blend a palette toward an arbitrary RGB by an amount (generic screen tint)
0x004C8FD4 Horizon2d re scanline fill for the solid horizon band — orders the span endpoints (hhigh/hxlow/hxhigh/hlow) and fills the sky/ground colour band into the raster surface; terminal step of _SolidHorizon (renderer.md §10); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C9224 NoHorizon re off-screen fallback for _SolidHorizon when the tilted horizon line falls outside the viewport — emits no raster output; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C924C SolidHorizon re solid-colour sky/ground band: stores _sky_color_data/_ground_color_data, derives the horizon quad from the camera up-vector (top_up/right_up/forward_up) plus __amtMoveHorizon, then calls Horizon2d (on-screen) or NoHorizon (renderer.md §10); signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand
0x004C942C GouraudHorizon re Gouraud sky/ground gradient: stages gradient-polygon vertices/colours (tilted by heading vector _headv_x/_headv_z) into 0x50FDA0-0x50FE40, then rasterizes them through the vector_table SH draw-opcodes (renderer.md §10)
0x004C95C8 ScreenMove sms offset a screen point along the view's _unitRight/_unitUp basis (RENDER_TILE unit)
0x004C9A88 AC_interpolate_linear_span sms span innerloop of G__AC_Texture@0x4CA028
0x004CA028 G__AC_Texture sms not a C function (#479): bitmap in ESI and span state in EAX/EBX
0x004CA1B4 interpolate_linear_span sms span innerloop of G__Texture@0x4CAE38
0x004CAE38 G__Texture sms not a C function (#479): bitmap in ESI and span state in EAX/EBX
0x004CB088 interpolate_perspective_span sms span innerloop of G__Perspective@0x4CBD0B
0x004CBD0B G__Perspective sms not a C function (#479): bitmap in ESI and span state in EAX/EBX
0x004CBE7C G__ScaleBitmap sms not a C function (#479): source bitmap in ESI and destination rect in EDI
0x004CC3A5 expand_texture_poly sms
0x004CC44C Remap sms shading/remap table machinery for the rasterizer
0x004CC4B4 SetShadingTable sms
0x004CC518 DoSetTmapRemaps sms
0x004CC7F4 RemapYLRP sms pairs with DrawYLRP@0x4CC8B0
0x004CC8B0 DrawYLRP sms

Wingman / group AI (WNG/GRP)

wingman.csv · page — 48 named functions

VA Symbol Src Role
0x0045E460 WNGInit sms
0x0045E490 WNGAdd sms
0x0045E520 WNGRemove re remove _curId from a wing; MSGSend 0x14 handoff (twin of GRPRemove); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045E630 WNGLeader re first live member of a wing (twin of GRPLeader); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045E690 WNGWingman re undetected twin of GRPWingman; materialized on apply; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045E6E0 WNGWingmen sms
0x0045E710 WNGPart sms
0x0045E790 WNGWingmenNearby re count wingmen within distance/alt (twin of GRPWingmenNearby); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045E850 WNGSetWaypoints sms
0x0045E8A0 WNGControl re if wingman, optional FormationMove; return formControl (twin of GRPControl); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045E8F0 WNGLeaderLanding sms
0x0045E970 WNGFormationMove sms
0x0045EAC0 WNGSetControl re set formation control; MSGSend subcode 10; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045EB30 WNGSetType re set formation type; MSGSend subcode 9; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045EB70 WNGSetSpacingH re set horizontal spacing; MSGSend subcode 7; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045EBB0 WNGSetSpacingV re set vertical spacing; MSGSend subcode 8; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045EBF0 WNGSetStateTarget re EnterState + set target; MSGSend 0x11 (twin of GRPSetStateTarget); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045ED90 WNGSendWM sms
0x0045EEF0 WNGResponseSize re response capacity from the orders-block flags; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045EF20 WNGAttackingObj re count wing members attacking a target; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045EFB0 WNGHumansFirst re move human-controlled members to slot 0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045F030 WNGInHumanWing re true if id shares the player's wing; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0045F090 WNGPlayerWM sms
0x0045F100 WNGName re format 'Wingleader'/'Wingman'/'Wingman %d' (twin of GRPName)
0x0045F190 GRPInit sms
0x0045F1C0 GRPAdd sms
0x0045F250 GRPRemove sms
0x0045F360 GRPLeader sms
0x0045F3C0 GRPWingman sms
0x0045F410 GRPWingmen sms
0x0045F440 GRPPart sms
0x0045F4C0 GRPWingmenNearby sms
0x0045F580 GRPSetWaypoints sms
0x0045F5D0 GRPControl sms
0x0045F620 GRPLeaderLanding sms
0x0045F6A0 GRPFormationMove sms
0x0045F7F0 GRPSetControl sms
0x0045F860 GRPSetType sms
0x0045F8A0 GRPSetSpacingH sms
0x0045F8E0 GRPSetSpacingV sms
0x0045F920 GRPSetStateTarget sms
0x0045FAC0 GRPSendWM sms
0x0045FC20 GRPResponseSize sms
0x0045FC50 GRPAttackingObj sms
0x0045FCE0 GRPHumansFirst sms
0x0045FD60 GRPInHumanWing sms
0x0045FDC0 GRPPlayerWM sms
0x0045FE30 GRPName sms

Object / entity system & shape selection

objects.csv · page — 157 named functions

VA Symbol Src Role
0x00411910 OnTheGround sms imported by 4 shipped .MC overlays (#491); named at this VA by FA.SMS
0x00414510 MessagesToPlayer sms drain MSGReceive queues into PLANEEventProc/GVEventProc for the player entity (_cg)
0x00436B30 MoveObj sms
0x004382D0 MoveGoalValue re resolve one move-goal operand by kind (heading/altitude/speed/...); executes CreateMoveGoal records for MoveObj; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00442640 CATGUYEventProc sms
0x00442720 CATGUYProc sms
0x00442750 CATGUYMoveProc sms
0x00442AB0 CATGUYDraw sms
0x00442C00 GRAPHICInit sms init the 100-entry _graphics effect pool + per-type .SH handle table (crater/smoke/fire/exp/debris/chaff/flare/spd/mpd/lpd); see objects.md GRAPHIC effect spawning
0x00442DA0 GRAPHICRemove sms expire every network-origin (flag 0x10000) GRAPHIC owned by _curId; mirror the removal to peers
0x00442DE0 GRAPHICUpdate sms step every live GRAPHIC entry via FUN_00442e10 (motion/fuse/adder emission), then _UpdateLoopSounds
0x00442E10 GRAPHICStep re advance one GRAPHIC per frame: integrate velocity/spin (or track the owner object), clamp to ground, spawn a fire child at 100%/50% life for the burn types, run its looping sound when in range, and free it at end-of-life
0x00443120 GRAPHICViewOffset re transform a GRAPHIC world position into the owner-object view frame for the muzzle/impact attach (used by AddExp and the per-frame step)
0x004431B0 GRAPHICAddYourObjs sms
0x004432D0 GRAPHICAddExp sms spawn an explosion: random type-variation, chained debris/cluster-release/smoke children, MP mirror
0x00443B70 GRAPHICAlloc re allocate + initialise a GRAPHIC record: type, flags, position, spawn/expiry ticks, ground-Z from T_Info; returns the entry
0x00443C60 GRAPHICFindSlot re the pool eviction policy: return the first free slot, else evict the lowest-priority live entry (age-biased so explosions/craters outlive smoke)
0x00443D00 GRAPHICAddCrater sms spawn a ground crater/scar decal (skipped on non-terrain); mirror to peers
0x00443DC0 GRAPHICAddHulk sms spawn a burnt-out static hulk marker (type 0x27+id); mirror to peers
0x00443E80 GRAPHICAddSmoke sms spawn a smoke puff that drifts with _windH/_windSpeed and rises; mirror to peers
0x00443F90 GRAPHICAddSmokeAdder sms spawn an invisible emitter that periodically births smoke puffs (via GRAPHICMakeAdder)
0x00444020 GRAPHICAddFire sms spawn a looping fire effect + sound, optionally mounted on an object; mirror to peers
0x004440F0 GRAPHICAddInvisible sms spawn a position-only GRAPHIC (no visual) used as a sound/child-emitter carrier
0x00444150 GRAPHICMakeAdder sms turn a GRAPHIC into a periodic child-spawner (adder byte +0x4a = child type, interval, rgb)
0x004441D0 GRAPHICAddDebris sms scatter N tumbling debris fragments from a base velocity + spread; mirror to peers
0x004443D0 GRAPHICAddClusterRelease sms spawn a cluster-munition sub-release burst (thin wrapper over the shared body)
0x004443DA GRAPHICAddClusterReleaseBody re overlapping alternate entry / body of GRAPHICAddClusterRelease
0x00444560 GRAPHICAddSpecialDebris sms scatter type-specific debris (wings/panels) drawn from the exploding object's own shape
0x004447A0 GRAPHICAddDevice sms spawn the visual for a dropped device (chaff/flare/tank) as a GRAPHIC
0x0044B9B0 ROInit sms pre-allocated reusable-object pool: T_AddObj records in _ro; size check vs class size + 0xDE
0x0044BA20 ROGet sms grab a free pooled object (alive-bit + cooldown checks)
0x0044BAA0 RORemoveCurObj sms return the current object to the pool with a cooldown
0x00462600 InitChain sms
0x00462620 RemoveFromChains sms
0x00462640 ChainRemoveCurObj re unlink the current object from a service chain head; clears in-chain flag (entity +0x01 bit1); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004626B0 ImmediateService sms
0x004626D0 ChainInsertCurObj re ordered insert of the current object by service key (+0x68); honors correctChainPlacement; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004627B0 RemoveCurObj sms
0x004628B0 GetCurObj sms
0x00462980 PutCurObj sms
0x004629C0 GetCurObj2 sms
0x004629D0 PutCurObj2 sms
0x004629E0 PushCurObj sms
0x00462A20 PopCurObj sms
0x00462A50 ServiceObjects sms signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00462B70 ChainMergeSorted re merge the re-queue chain back into chainStart keeping +0x68 order; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00462C91 ProcessHitMsgs re drain MSG 0x800B/0x800C remote hit events; raises event 0x4000 and spawns explosion via GRAPHICAddExp; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00462D40 ProcessEffectMsgs re drain per-computer MSG 0x8003+n remote effect spawns: explosion / smoke / MANAdd; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00462E70 Service sms
0x004631B0 CheckForEvents1 sms
0x004631F0 CheckForEvents2 sms
0x00463730 PadlockTarget re pick the object id the player is visually tracking (angle+distance gates, wingman fallback); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00463900 NearbyGroupLeader re return the group leader id when the current object flies in role 2 within 0xC800; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00463980 MaybeCallEventProc sms
0x004639C0 CallEventProc sms
0x00463A20 CreateMove sms
0x00463AF0 CreateMoveGoal sms
0x00463B90 TimeAddSat re saturating add to currentT, clamped at 0x7FFF; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00463BC0 ObjPlusAngleParm sms
0x00463BE0 ObjPlusDeltaParm sms
0x00463C50 WriteCmdBuf sms
0x00463CA0 WriteCmdBufProcptr sms
0x00463CC0 WriteCmdBufMove sms
0x00463CD0 WriteCmdBufEnd sms
0x00463CE0 FinishCmdBuf sms
0x00463D00 AllocCmdBuf sms
0x00463D40 ReadCmdBuf sms signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00463E50 CancelCmdBuf sms
0x00463EA0 MaskEvents sms
0x00463EC0 CallDamageProc sms
0x00463F30 GetObjProc re resolve a proc selector: entity override (+0x6C) else class proc (type +0x7D)
0x00463F60 CallUtilProc sms not a C function (#479): call sites clean 4/8/12 bytes
0x00463FA0 Ignore sms
0x00464040 Reaction sms
0x00464300 EnterState sms
0x00464420 InSearchArea sms
0x0046442B InSearchAreaBody re Ghidra mid-function split: body of @InSearchArea@4 (entry +0xB); route-corridor DistToLine test; not a C function (#479): mid-function split of @InSearchArea@4 (0x00464420)
0x004644F0 PreferredTargetId sms
0x00464520 PreferredProtectId sms
0x00464550 CloseToAnything sms
0x00464640 SetScenarioEndTime sms
0x00469960 EJECTRemove sms
0x00469970 EJECTAdd sms
0x00473680 FlightControlOverMe sms entity flight-control-ownership query; run into NPCWeaponsProc@0x4736F0
0x004736B0 NPCSetStateTarget sms NPC is an entity class in the OBJ/NPC/PLANE/PROJ hierarchy (see _cg note)
0x004736F0 NPCWeaponsProc sms
0x00473A40 OBJEventProc sms label-only in FA.SMS import; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00473B40 OBJDamageProc sms label-only in FA.SMS import; ApplySymbols materializes the function
0x00473BE0 OBJProc sms
0x00473C10 Kill sms
0x00473DB0 GVProc sms class proc for ground vehicles, named by 73 shipped .NT records (#491); a selector: 3 -> GVEventProc, 5 -> NPCWeaponsProc, else delegates to OBJProc — so GV extends OBJ
0x00473DE0 GVDoCurrentWaypoint sms
0x00473F50 GVEventProc sms
0x00474650 NPCSetReact sms
0x00474740 AmmoForClass sms per-class ammo query; between GVEventProc and Alive in the objects run
0x004747C0 Alive sms imported by 6 shipped .MC overlays (#491); named at this VA by FA.SMS
0x0047CEB0 MANAdd sms
0x0047D0F0 MANRunAway sms spawn runner.NT flee maneuvers via MANAdd (objects owns MANAdd)
0x0048D780 PLANESayProc sms
0x0048E8D0 OBJSayProc sms
0x0048EC40 PLANECommentProc sms
0x00491240 OBJGet sms
0x00491250 OBJInit sms
0x004912C0 OBJShutdown sms
0x00491300 OBJAlloc sms label-only in FA.SMS import; ApplySymbols materializes the function
0x00491320 OBJStopAdding sms
0x00491340 OBJFindHumans sms
0x004913E0 OBJAdd sms
0x00491490 OBJSubtract sms
0x004914C0 OBJAlias sms
0x00491530 OBJCreateAliases sms
0x00491610 OBJAliasPreferred sms
0x00491670 OBJAliasAll sms
0x00491720 OBJAliasWaypoint sms
0x00491780 OBJAliasForMulti sms
0x004917D0 OBJNextAliasForMulti sms
0x004917F0 OBJTempAlias sms
0x00491810 OBJSetControl sms
0x004918D0 OBJHumanName sms
0x0049D510 PLANEInit sms
0x0049D520 PLANERemove sms
0x0049D580 PLANEDoCurrentWaypoint sms
0x0049D6E0 PLANESetEjectTime sms
0x0049D730 PLANEBreakUp sms
0x0049D860 PLANEBlow sms
0x0049D890 PLANECrash sms
0x0049DF40 PLANEEventProc sms
0x0049F840 PLANEMoveProc sms
0x0049FA10 PLANECheckEject sms
0x0049FA50 PLANEAddProc sms
0x0049FAA0 PLANEList sms
0x0049FB10 PLANEProc sms
0x0049FB70 PLANECheckFuel sms
0x0049FCD0 PLANESetThrottle sms
0x0049FD40 PLANEUpdateJustLanded sms
0x0049FD70 FindStreamerDef sms streamer (wingtip/contrail trail) unit 0x49FD70-0x4A0300 nested inside the PLANE region
0x0049FD90 DrawStreamer sms
0x004A0010 StreamersInit sms
0x004A0250 StreamersUpdate sms
0x004A02D0 StreamersShutdown sms called from MISSIONShutdown (campaign.csv note)
0x004A0310 PLANEHackForPlayerWing sms
0x004A04F0 PLANETurnOffGunSound sms
0x004A0510 PLANESetFeetWet sms
0x004A6B10 ResolveTypeRecord re resolve the OT/NT/PT/JT type record from the MM handle at wrapper +0x0F (MMAccessE when +0x0E bit1 set); SetupOT's first step; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004A6EB0 SetupOT sms
0x004A71C0 LoadShapeVariantPair re load the _a slot; aircraft (obj_class & 0xC000) also load the _b slot (+0x1B); not a C function (#479): mid-function split of _SetupOT (0x004A6EB0)
0x004A71E0 LoadShapeSlot re resolve one shape-slot filename to a loaded pointer via RMAccess (was proposed type_load_shape_slot)
0x004A7200 SetupNT sms
0x004A7220 SetupPT sms signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004A7230 SetupJT sms signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004AB450 ShapeSetup sms
0x004BD5B0 CARRIERProc sms
0x004BD950 RotatePattern re transforms a landing/takeoff pattern into world space for the current object: runs the nine local (x,y,z) offsets in the pattern record through _RotatedOffset@20 against the current-object mirror _cg (0x50CE80), then copies _cg heading into the record and slews it by the record pitch/roll deltas. Reached from the carrier/strip pattern build (?STRIPAddProc@@YAJXZ, _CARRIERProc)
0x004BE2A0 STRIPAddProc sms
0x004BE640 STRIPProc sms
0x004C66CC Dist sms imported by 4 shipped .MC overlays (#491); named at this VA by FA.SMS
0x004D709A WriteFile sms

AI interpreter (CT)

ai.csv · page — 130 named functions

VA Symbol Src Role
0x00464C60 CTInit sms
0x00464C80 CTShutdown sms
0x00464C90 CTRespondToCancelCmdBuf sms
0x00464CD0 CTLoadProgram re load/switch the BI CODE resource by name (RMAccess 0x8000); set IP=base, CTResetPC; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464DB0 CTResetPC re reset IP=base and line=1; if arg!=0 also zero stack depth; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464DE0 CTVarDiff sms
0x00464E20 CTEval_time sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand
0x00464E30 CTEval_do_nothing sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464E40 CTEval_do_evade sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464E50 CTEval_do_attack sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464E60 CTEval_do_radar_launch sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464E70 CTEval_do_ir_launch sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464E80 CTEval_do_hit sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464E90 CTEval_tgtattackingme sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464ED0 CTEval_tgtattackinganyone sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464F10 CTEval_tgt sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464F50 CTEval_tgtclass sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464F90 CTEval_tgtisfighter sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464FB0 CTEval_tgtisbomber sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464FD0 CTEval_tgtisplane sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00464FF0 CTEval_tgtisship sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465000 CTEval_tgtissam sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465010 CTEval_tgtisaaa sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465020 CTEval_tgthumancontrol sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465040 CTEval_maxrange sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465060 CTEval_maxrangediff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465080 CTEval_bestrange sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465090 CTEval_bestrangediff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004650A0 CTEval_radar sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004650B0 CTEval_tgtradar sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004650E0 CTEval_ir sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004650F0 CTEval_tgtir sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465120 CTEval_tgtoffbeam sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465150 CTEval_tgtahead sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465180 CTEval_tgtfacing sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004651D0 CTEval_hrzdisttotgt sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465220 CTEval_disttotgt sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465240 CTEval_htotgt sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465290 CTEval_ptotgt sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004652E0 CTEval_tgtaspectangle sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465380 CTEval_canclimb sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004653A0 CTEval_speed sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004653B0 CTEval_speeddiff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004653D0 CTEval_minspeed sms label-only in FA.SMS; ApplySymbols materializes the function
0x004653E0 CTEval_minspeeddiff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004653F0 CTEval_cornerspeed sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465400 CTEval_corner sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465410 CTEval_cornerspeeddiff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465420 CTEval_maxrudderh sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465430 CTEval_maxrudderp sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465440 CTEval_maxspeed sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465450 CTEval_maxspeeddiff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465460 CTEval_betterspeed sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465480 CTEval_twr sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465490 CTEval_twrdiff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004654A0 CTEval_bettertwr sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004654C0 CTEval_turnrate sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004654D0 CTEval_turnratediff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004654F0 CTEval_turnradius sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465500 CTEval_turnradiusdiff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465510 CTEval_alt sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465540 CTEval_altdiff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465560 CTEval_maxalt sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465590 CTEval_maxaltdiff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004655B0 CTEval_minalt sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004655C0 CTEval_minaltdiff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004655E0 CTEval_waypointalt sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465640 CTEval_disttowaypoint sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004656B0 CTEval_cloudalt sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004656C0 CTEval_skill sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004656D0 CTEval_h sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465710 CTEval_p sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465730 CTEval_b sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465750 CTEval_hdiff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465770 CTEval_pdiff sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465790 CTEval_any sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004657A0 CTEval_engagep sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004658A0 CTEval_wingapproach sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465960 CTEval_wingcombat sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004659F0 CTEval_wm_hspacing_is sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465A00 CTEval_wm_vspacing_is sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465A10 CTEval_wm_formation_is sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465A20 CTEval_wm_control_is sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465A30 CTDo_exit sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465A50 CTDo_restart sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465A70 CTDo_maneuver sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465AD0 CTPop re eval-stack pop; underflow raises CTError(4); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465B00 CTDo_print sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465B60 CTDo_printnum sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465BC0 CTDo_play sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465C20 CTDo_rudder sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465C90 CTReadAngle re pop then clamp [-90,90] x182 (binary degrees); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465CC0 CTDo_move sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465D40 CTReadHeading re pop then normalize [0,359] x182; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465DA0 CTReadAngle180 re pop then clamp [-180,180] x182; passthrough sentinel 0x7FFFFFFF; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465DE0 CTReadDuration re pop then clamp [0,15]; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465E00 CTReadSpeed re pop then clamp [COMinSpeed,COMaxSpeed] read live; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465E20 CTDo_movetoalt sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00465EA0 CTDo_turn sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00466052 CTDo_yoyo sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004660C0 CTDo_circle sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004661A0 CTDo_homeangle sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00466290 CTPush re eval-stack push; overflow (>0x13) raises CTError(5); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004662C0 CTDo_homepos sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004663E0 CTDo_uhomepos sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004663F0 CTDo_jink sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004664C0 CTDo_invert sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004664F0 CTDo_btoh sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00466540 CTDo_splits sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00466590 CTDo_immelman sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004665E0 CTDo_wm_break sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00466630 CTDo_wm_approach sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00466700 CTDo_wm_hspacing sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00466750 CTDo_wm_vspacing sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004667A0 CTDo_wm_formation sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004667E0 CTDo_wm_control sms label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00466820 CTError re map error code 1..0xc to a string and ErrorExit('Chuck Talk error: %s, line %u'); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004668F0 CTRestoreState re restore _ctState from _ctStateCheckpoint (or zero it); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00466920 CTSaveState re copy _ctState to the heap checkpoint, then zero it; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00466970 CTExecProgram sms
0x00466A80 CTStep re fetch one opcode and dispatch via switch; CALL_BY_NAME(0x27) resolves via SMAddress then self-patches to CALL_DIRECT(0x26); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004670E0 CTVarPtr re return &_ctState[i] for script var index i in [0,4]; out-of-range raises CTError(3); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004AC510 MVRMove sms MVR maneuver family: interleaved with MVRJink/MVRSplitS/MVRImmelman @0x4AC9E0-0x4ACCB0
0x004AC680 MVRMoveToAlt sms
0x004AC760 MVRInvert sms
0x004AC780 MVRYoyo sms
0x004AC880 MVRApproachTarget sms
0x004AC9E0 MVRJink sms
0x004ACB80 MVRSplitS sms
0x004ACCB0 MVRImmelman sms

Input — joystick / serial / modem

input.csv · page — 80 named functions

VA Symbol Src Role
0x004114F0 ResetKeyboard sms
0x00411540 ShutdownKeyboard sms
0x00411560 GetKey2 sms
0x004115C0 KeyAvail sms
0x004115F0 GetKeyFlags sms
0x00411600 KEYEvent sms WM_(SYS)KEYDOWN/UP hook: scan from lParam, qualifier bits (1=shift 2=ctrl 4=alt) in _qualStatus/_keyFlags, _keyarray[scan] held state, kbScanToASCII translate (hi-byte=bare ASCII code, lo-byte=keypad normalize, none=scan<<8|qual), 16-entry _kbBuffer ring; drops auto-repeats of _ignoreRepeats scans in flight
0x00411890 KEYECS sms enter the keyboard critical section (0x522558) if initialized
0x004118B0 KEYLCS sms leave the keyboard critical section
0x004118D0 KEYPause sms flush keyboard state: kbBuffer ring ptrs, _keyarray[256], qualifier bits
0x00411F00 PutFakeKey sms push a synthetic key code onto the 8-entry fake-key stack (0x5226b0); UI/joystick inject commands this way
0x00411F20 GetFakeKey sms pop the fake-key stack (0 when empty); polled after GetKey by the shell screens
0x00412930 WaitKey sms spin (Sleep 0) until GetKey returns a key
0x00412960 GetKey sms
0x00413D10 SlewKey sms slew-mode key dispatch: keypad 8/2/4/6 translate, 9/3 altitude, ctrl+7/9 heading +/-364 (2 deg), keypad-0 speed x2, keypad-. speed /2 (min 0x100), ctrl+S next slewable object (obj flag bit0 via T_ObjList), Esc exit; consumed keys return 0
0x00414070 SlewObjListCollect re T_ObjList visitor for SlewKey ctrl+S: append object id to the bounded id list at 0x522c1c/0x522c24
0x004140A0 SetPlayerTarget sms targeting-key support unit 0x4140A0-0x4144B0 inside the input key region (SlewObjListCollect < here < FlightKey); input owns the same-family PickVisibleTarget
0x004140C0 TargetNearestTo sms
0x00414180 GetTargetPositions sms
0x004141D0 Targetable sms
0x004143F0 SetPlayerContact sms
0x00414410 ContactNearestTo sms
0x004144B0 GetContactPositions sms
0x00414690 FlightKey sms THE in-flight command table: offers the key to the stick/rudder/throttle device procs (msg 3) then dispatches ~70 commands - flight controls (a/b/f/g/h/o), sensors (r/i/m/y, Shift+R A/G, Shift+A AWACS, Shift+G GCI), targeting (Enter/t/T/;), weapons ([ ] Space Tab, keypad-Ins chaff keypad-Del flare, Shift+J/K jettison), wingman Alt+letters + Alt+1..9 break angles, Shift+digit MFD windows, Ctrl+keypad thrust vector, Shift+E eject (double-press). See input.md section
0x00415E30 PickVisibleTarget re filter _visibleTargetIds by Targetable, then param!=0: nearest to screen centre (boresight), param==0: next in raster order after the current target
0x00415F80 NextTargetOnScreen re raster-order scan of on-screen target positions; returns the id following the reference position, skipping the current target
0x00416050 PickVisibleContact re radar-contact twin of PickVisibleTarget over CPGetContact/_numContacts (/ and \ keys, realistic-avionics pref)
0x00416140 NextContactOnScreen re raster-order scan over contact screen positions; returns CPGetContact(best)
0x00416200 WngAttackTarget re order wingman vs the player target: hostile check (side byte objPtrs[id]+9 XOR player side, bit 0x80), optional WNGSetControl, MSGSend cmd 0xb with target id (0x1fffffff = engage at will); Alt+E(1,1)/Alt+R(2,1)
0x004162C0 WngAttackContact re same as WngAttackTarget but for the radar _contactId (Alt+F)
0x00416380 SetAutopilot sms set/clear plane-flags bit 0x1000 (autopilot); on engage WPSetupCurrent(0)+AutopilotEngage, on disengage CancelCmdBuf; clears bit 0x2000 (forced) when off
0x004163F0 AutopilotEngage re autopilot engage bootstrap: EnterState(0x1f) if beyond, temporarily clear target, PLANEEventProc(0x80), CallUtilProc/MoveObj/ReadCmdBuf priming
0x00416470 ForceAutopilot sms engage autopilot marking it forced (bit 0x2000) - used by menus/eject/hook-catch
0x00416490 RestoreAutopilot sms disengage a forced autopilot (bit 0x2000 set) only
0x004164B0 ServicePlayer sms per-frame player service: forced-AP when dead, stick decay under time compression, DAMAGEUpdate, target FOV re-check (pref 0x10000000), autopilot maintenance, FMFlight tick + crash dispatch (PLANECrash, crash-landed score -2), arrestor-hook catch (Collision type 0x84, HOOK_5K, state 0x16), waypoint auto-advance (WP+0x44 stride, passed bit 0x80), collision MSGSend 0x4000 + Kill, afterburner/engine sounds, trigger logic (_weaponButton/_gunButton -> PROJFire, bay-door + refire checks), brake button edges
0x004170C0 PlayerDriveVehicle re non-plane player control: stick -> CreateMove turn (COTurnRate, reversed in reverse) + speed (COMaxSpeed, half max reverse)
0x00417150 PlayerUpdateState re the player plane auto state machine: on ground - auto-rearm, catapult (APTakeoffType 7 -> state 7 + forced AP), takeoff roll 0x11, taxi 1, parking 0x1a-0x1e; in air - approach/landing 0x12/0x14 near airport w/ gear, else free flight 0x1f, engage 0x20; skips the ~BGUN.PT fort gun
0x00417530 PlayerAutoRearm re stationary at a friendly airport within 0x64000: HARDRearmTest/HARDRearmHumanLoad (fort variants on fort missions) + SAYRearmMessage
0x00417620 PlayerNeedsRearm re rearm-needed test: drop-tank fuel sum + base tankage vs HARDTotalFuel, threshold 0x15e
0x00417690 PlayerPickParking re nearest of the airport 4 parking points (apt+0x62/0x74/0x86/0x98) -> states 0x1b..0x1e (1 when already 0x1a)
0x0041769C PlayerPickParkingAlt re alternate entry of PlayerPickParking (reference point in EAX); overlapping-entry pair
0x00417760 InitPlayerControl sms load vis240.SEE into the 57-byte view/visibility block 0x4ee348, deviceProc(0) init for stick/rudder/throttle, clear buttons + coolie state, throttle from entity+0x1f2
0x00417850 InputCalibrate sms deviceProc(1) calibrate for one device + ensure the shell mouse is shown
0x00417880 GetPlayerControl sms per-frame control poll: ReadSticksRaw + deviceProc(2) stick/rudder/throttle + KeyStick(2,0) so Space/Tab always latch fire buttons
0x004178D0 KeyStick sms keyboard stick device proc: msg2 latches Space=_weaponButton Tab=_gunButton from _keyarray, arrows = full deflection +/-0x100 (shift reserved for views, alt+arrows reserved for TV); msg3 passes keys through
0x00417A10 PotStick sms
0x00417C20 KeyThrottle sms
0x00417D10 KeyRudder sms
0x00417D80 PotThrottle sms
0x00417ED0 PotRudder sms
0x00417F00 Slew sms compose yaw/pitch view offsets with object attitude via rotation matrices + ArcTan -> euler view angles (padlock/slew view math)
0x00481280 GetKeySlow sms
0x00492280 ShowSlewObj sms draw the G_Box marker around _slewId (the input Slew unit: SlewKey/SlewObjListCollect)
0x00494270 ReadSticksRaw sms poll X/throttle/rudder/POV via ReadDevice gated by joystickFunctions bits (1/4/8/0x10)
0x004942D0 InitJoysticks sms joyGetNumDevs (cap 16); probe each joyGetPos+joyGetDevCapsA(0x194) into joystickCaps; build joystickMask; assign X/Y/throttle/rudder/POV device roles -> joystickFunctions
0x00494430 GetJoystickType sms JOYRESULT enum: 4=uninit 3=absent 0=legacy(JOYINFO) 1=extended(JOYINFOEX); decides by caps axes<3 && buttons<4
0x004944A0 ReadDevice sms read one device joyGetPos/joyGetPosEx into joystickInfo/Ex[id]; 50ms (0x32) rate-limit via joystickLastRead + timeGetTime
0x00494580 ScaleToRange sms clamp/scale a float axis into calibrated min/center/max range via __ftol; stack-arg helper for NormalizeStick
0x004946B0 NormalizeStick sms normalize X/Y/throttle/rudder to ints; first-read center auto-capture (gotCenterX/Y/R -> DAT_00554ec4/ec8/ebc); calls ScaleToRange
0x00494A50 GetPOV sms read POV hat; map centidegrees/100 to keypad scancode 0x48/0x4D/0x50/0x4B (U/R/D/L); 0xFFFF=centered->0
0x00494AE0 ASynchJoystick sms poll buttons via ReadJoystickButtons; edge-detect new presses into buttonPresses[] per JOYCAPS button count
0x00494B50 ReadJoystickButtons sms return button mask from joystickInfo+0x14 (legacy) or joystickInfoEx+0x28 (extended)
0x00494BA0 MP_DoNothing sms
0x00499CF0 MOUSESetLimits sms set cursor clamp limits (mouse-ring limit fields DAT_00560f38/f3a)
0x00499D10 MOUSESetPos sms center mousePos to screen/2 (DAT_0055c06a/c06c halved)
0x00499D40 MOUSECenter sms FA.SMS symbol at 0x499d40 not split by current Ghidra inventory; ~16-byte helper between MOUSESetPos and MOUSERead — candidate to define; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00499D50 MOUSERead sms dequeue next event from 16-entry ring (critical-section); returns queued pos+buttons or current mousePos/mouseButtons if empty
0x00499DF0 MOUSEInit sms InitializeCriticalSection(mouse_critical_section); reset ring indices; set initialized flag DAT_00501598
0x00499E30 MOUSEShutdown sms DeleteCriticalSection(mouse_critical_section) if initialized; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00499E50 MOUSEEvent sms WndProc mouse handler WM_MOUSEMOVE/L/R DOWN+UP (0x200/201/202/204/205); edge-count mouseButtonPresses & DAT_00560ef1; push to ring; update mousePos
0x0049B1D0 RunSerialConfigurationScreen sms large device-config dialog for direct-serial link (baud/port/etc.); ~5.4KB UI — could alternatively be shell-ui
0x0049B9B0 ParseStrForModemName sms
0x0049BA60 CompareDBEntry sms
0x0049BA80 SortModemDB sms
0x0049BAA0 IsComment sms
0x0049BAE0 ReadModemDB sms
0x0049BD60 WriteModemEntry sms
0x0049BDC0 SelectModemFromDB sms
0x0049BF70 WriteModemFile sms
0x0049C260 RunModemAdvSetupDialog sms
0x0049C780 RunModemConfigurationScreen sms large device-config dialog for modem link (init string/dial/port); ~2.6KB UI — could alternatively be shell-ui

Terrain (T_)

terrain.csv · page — 85 named functions

VA Symbol Src Role
0x004A7310 T_InitPlane sms spawns player plane on terrain at mission start (FMInitPlane/FMUpdatePlaneFields/EnterState/PLANESetFeetWet); writes _cg mirror fields
0x004A73B0 T_AddObj sms add a static object/building to the terrain object database (1642 B)
0x004A7A40 T_AddYourObjs sms terrain "add your objects" service pass
0x004A7D70 T_ImmediateVisibility sms
0x004A7DF0 T_ObjList sms
0x004A7E50 T_Render sms
0x004A7F20 T_InitForestProc sms label-only in FA.SMS import; ApplySymbols materializes (0x20 B setup preceding T_ResolveDecorShapes)
0x004A7F40 T_ResolveDecorShapes re walk a decoration brush-list (stride 0x1a) resolving each entry's SH via _RMAccess into +2; called by T_InitWaterProc(&_waterList) / T_InitCloudProc(&_cloudList); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004A7F70 T_ForestProc sms scatters forest decoration (desert vs _forestList) via T_ScatterGrid
0x004A8090 T_ScatterGrid re 2^n x 2^n tiling loop invoking T_ScatterDecorTile; called by every T_*Proc (evidence: T_ForestProc/T_MooseProc/T_WaterProc)
0x004A8130 T_ScatterDecorTile re place one decoration cluster per tile: per-band distance LOD, T_GetLeaf gate, T_Info altitude, T_QueueDecor
0x004A83E0 T_InitForest1Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8400 T_Forest1Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8520 T_InitForest2Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8540 T_Forest2Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8660 T_InitFarmProc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8670 T_FarmProc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8730 T_InitMooseProc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8750 T_MooseProc sms scatters "moose" decoration (desert vs _mooseList)
0x004A8870 T_InitVietRicePaddy1Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8880 T_VietRicePaddy1Proc sms Vietnam theater rice-paddy decoration proc
0x004A8950 T_InitVietRicePaddy2Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8960 T_VietRicePaddy2Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8970 T_InitVietRicePaddy3Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8980 T_VietRicePaddy3Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8990 T_InitVietPalms1Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A89A0 T_VietPalms1Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A89B0 T_InitVietPalms2Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A89C0 T_VietPalms2Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A89D0 T_InitVietPalms3Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A89E0 T_VietPalms3Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A89F0 T_InitVietTrees1Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8A00 T_VietTrees1Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8A10 T_InitVietTrees2Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8A20 T_VietTrees2Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8A30 T_InitVietTrees3Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8A40 T_VietTrees3Proc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8A50 T_InitVietWaterBuffaloProc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8A60 T_VietWaterBuffaloProc sms label-only in FA.SMS import; ApplySymbols materializes
0x004A8A70 T_InitWaterProc sms copies _waterCfg string then resolves _waterList via T_ResolveDecorShapes; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004A8AB0 T_WaterProc sms scatters water-surface decoration; lazy-inits via T_InitWaterProc
0x004A8B90 T_InitCloudProc sms resolves _cloudList via T_ResolveDecorShapes(&_cloudList 0x50C298)
0x004A8BA0 T_CloudProc sms label-only; the global ambient proc (set in T_Init2)
0x004A8C30 T_QueueDecor re append an entry (short id + 0x17-B record) to the per-frame decor/comment list at _decorListEnd (DAT_0057336c); dedupes by id; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004A8CC0 T_ObjIsVisible re per-object render-flag/type visibility test (DAT_00573396 flags vs type table at 0x50A6B8); used by T_AddVisibleObjs; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004A8D30 T_Normal sms
0x004A8E50 T_LeafOp sms emit one terrain leaf's geometry; 14-B entry + split body FUN_004a8e5e
0x004A9660 T_Make sms build terrain scene: pick LOD tile size (_lodTileSize 0x20-0x100) + detail (_lodDetail 1/2/4/8) by view distance/DAT_00573394; quadtree tessellate into _cellArray; run ambient/object passes; emit leaf list
0x004A9BB0 T_RunAmbientProcs re iterate _ambientProcs[0..0x10] (17 decoration procs) calling each with its index; gated by DAT_00573396&0x8000 and _ambientSuppress; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004A9C20 T_AddVisibleObjs re iterate _objPtrs[1.._nextObjId]; for visible in-bounds objects run ImmediateService and T_QueueDecor (via GetCurObj/PutCurObj); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004A9D00 T_BuildQuadCell re build one quad cell in _cellArray (sample T_GetLeaf at 4 corners, T_QuadAltitude/SetFlags)
0x004A9E20 T_QuadAltitude re representative altitude of a cell (clamped min/max blend of corner heights scaled by DAT_00573392); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004A9EA0 T_QuadSetFlags re set leaf flat-bit (+0xF|1) vs sloped-bit (+0xE|0x80) from corner-delta bytes; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004A9ED0 T_ViewBounds re rotate view box by heading (_Rotate2) to compute cell-space AABB DAT_0057334a..DAT_00573350; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004AA070 T_SubdivideCells re LOD pass: walk _cellArray, subdivide cells finer than _lodDetail via 4x T_BuildQuadCell; T_CellScreenBounds cull; caps at 500 cells; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004AA260 T_CellScreenBounds re cell world extent (<<5) AND'd with view bounds via _BoundsAnd (cull test); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004AA2B0 T_CompactCells re compact _cellArray dropping dead (0xffff) cells; rewrites _cellCount and optional carried index; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004AA380 T_SortCells re in-place quicksort of _cellArray (stride 0x16) via comparator (*_cellCompare 0x580B9C) and _Swapmem; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004AA440 T_CountCells re tally cells into front/back counts (returns front count); drives T_Make's subdivide-again loop; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004AA4A0 T_EmitCells re per live cell: T_CellTmapLookup + optional T_Normal, then T_LeafOp to emit geometry; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand
0x004AA620 T_InitDictionary sms init the tmap dictionary (_tdic)
0x004AA680 T_InitDictionaryEntry sms
0x004AA790 T_NamedTmaps sms build named-tmap list (_tlist) from dictionary
0x004AA7E0 T_CompareTlist sms qsort comparator for _tlist (label-only; xref-only in globals.csv)
0x004AA820 T_SortTmapList sms sort _tlist for binary search
0x004AA840 T_CellTmapLookup re binary-search _tlist by packed cell coord ((y&~3)<<16|(x&~3)) to pick the tile texture; gated by _lowMemory/_tlistSize/DAT_00573396&2; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand
0x004AACA0 T_InitHorizonProc sms RMAccess stars.SH/moon.SH/sun.SH into _starsH/_moonH/_sunH
0x004AACE0 T_HorizonProc sms 1-B stub in current Ghidra (single RET / proc-ptr slot); SMS underscore differs from current label; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand
0x004AACF0 T_DefaultHorizon sms
0x004AACFE T_DrawHorizon re horizon/sky band render: _T_Info horizon sample + _WRMakeHazeList + _currentTintTable sky colors + _hackSky/_clip* extents; static, no SMS symbol; not a C function (#479): mid-function split of the routine at 0x004AACF0
0x004AB7F0 HardpointAngle sms
0x004AB860 BrushFromIndex sms
0x004ABA60 InsectWingAngle sms
0x004ABAB0 T_Info sms
0x004C5D30 T_InitDatabase sms set _dbDynamicLow/High to _dbaseLow bounds (dynamic terrain-object DB)
0x004C5D50 T_ShutdownDatabase sms zero _dbDynamicLow/High
0x004C5D60 T_Init sms
0x004C5D70 T_Load sms load .T2 via RMAccess on map change (T_Shutdown first); relocate the tile-summary (+0x85) and leaf (+0x91) array offsets into pointers; derive land.PIC (fallback land.PIC)
0x004C5F40 T_StripTildes re remove '~' chars from a filename in place; used twice by T_Load; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand
0x004C5F60 T_Init2 sms
0x004C5FA0 T_Shutdown sms mirror of T_Init: free handle + clear dictionary/list (used by T_Load on map change)
0x004C6020 T_StopAdding sms OBJStopAdding (unless _curScreen==3) + OBJFindHumans
0x004C6040 T_GetLeaf sms return 3-byte leaf ptr: fine grid (th+0x91,stride th+0x89) if size _borderLeaf (0x50CE4C)
0x004C9624 T_InterpAltNW sms barycentric altitude interpolation in the NW triangle of a leaf quad (64-bit divide of corner heights)
0x004C9770 T_InterpAltSE sms label-only in FA.SMS import; SE-triangle counterpart (folded into InterpAltNW tail today)

Weapons — projectiles / seekers / ECM (PROJ)

weapons.csv · page — 55 named functions

VA Symbol Src Role
0x004C06A0 PROJInit sms
0x004C0710 PROJGetTargetPos sms
0x004C0820 PROJAccurateHardPos sms
0x004C0870 PROJSetTarget sms
0x004C0960 PROJLockUpdate sms
0x004C0A90 PROJAdd sms
0x004C1120 PROJSpeed sms
0x004C1170 PROJEngineState sms
0x004C11B0 PROJMoveProc sms
0x004C1630 PROJGuideToTarget re CreateMove toward lock target (proportional guidance); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C1660 PROJGuideLoft re loft/high-trajectory guidance when range>=type+0x10D; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C1720 PROJHoldCourse re hold current commanded angles (fly straight); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C1760 PROJGuideToSun re steer IR seeker toward the sun when decoyed; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C17A0 PROJUpdateWeave re random weave/jink aim offsets from type weave amp; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C17F0 PROJSunInSeeker re IR seeker sun/sky FOV check (decoy source); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C1870 PROJDamageProc sms
0x004C1C10 PROJBuildName re compose ' ' into the kill-chatter name buffer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C1CC0 PROJEventProc sms label-only in FA.SMS; ApplySymbols materializes the function
0x004C1F10 PROJIsLockableTarget re predicate: valid non-player lock candidate; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C1F50 PROJProc sms signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C20C0 PROJHit sms
0x004C2170 PROJFire sms
0x004C24B0 PROJAimAngles re compute launch/boresight angles in the launcher frame (gimbal-limited)
0x004C26F0 PROJFireSound sms
0x004C2860 PROJInFOV sms
0x004C2B50 PROJTargetSignal re seeker signal/lock quality (contrast, IR notch, look-down, clutter)
0x004C2E40 PROJInNotch re Doppler-notch/beaming detection (defeats pulse-doppler)
0x004C2EB0 PROJRadarIsOn sms
0x004C2F20 PROJLock sms
0x004C31F0 PROJIRSensorOn re IR-seeker detectability duty gate
0x004C3250 PROJProximityFuze re closest-approach detonation decision + hit roll
0x004C3360 PROJTargetIsFastAir re predicate: fast maneuvering aircraft (class4, speed>0x3A00); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C3380 PROJHitChance sms
0x004C3830 PROJApplyPkCurve re interpolate and clamp the running Pk penalty
0x004C3890 PROJRangePk re range->Pk envelope lookup from the type range table; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C3960 PROJSizePk re target-size/RCS vs weapon-sensitivity Pk scalar; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C39A0 PROJLaunchDevice sms
0x004C3AF0 PROJRetargetMissilesOnDevice sms
0x004C3C40 PROJGuideToDevice re steer a seduced missile toward the decoy device
0x004C3CA0 PROJRemove sms
0x004C3DD0 PROJRetargetMissiles sms
0x004C3EB0 PROJMakeBombEq sms
0x004C4030 PROJChangeBombEq sms
0x004C4050 PROJBombPos sms
0x004C4100 PROJSelectTarget sms
0x004C4390 PROJScoreTarget re per-candidate seeker scoring callback (dist+penalties); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C4700 PROJServiceWeapon sms
0x004C5000 PROJSetReattackTimer re set a random AI re-attack delay from aggression; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C5050 PROJAimGunSolution re gun/dumb-weapon aim point with dispersion + terrain clamp; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C5270 PROJHasMissileOnTarget re predicate: already have a guided missile locked on target; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C52D0 PROJSelectStore re AI: pick the best weapon store for a target; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004C5570 PROJMissileAttacking sms
0x004C5670 PROJSendCollateralDamages sms
0x004C58A0 PROJAreaWeaponHit re special-warhead detonation (submunition scatter + collateral)
0x004C5D00 PROJMinScatterAngle re clamp a scatter angle away from zero for submunition dispersion; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand

3D render core / SH interpreter (GR)

render-core.csv · page — 174 named functions

VA Symbol Src Role
0x004CD588 sincos re sin/cos via sin_table lookup+lerp; AL=frac AH=index; core of GRSinCos/angles_2_matrix/all rotates; not a C function (#479): angle in BX; sin in AX, cos in BX
0x004CD5C6 fast_sincos sms
0x004CD5DF isqrt16 re tail-call wrapper of FUN_004cd5ee (16-bit integer sqrt); not a C function (#479): 32-bit value in CX:BX, result in DI
0x004CD5EE isqrt16_body re Newton-Raphson 16-bit integer square root (magnitude-classed); used by distance/normalize; not a C function (#479): 32-bit value in CX:BX, result in DI
0x004CD73B fast_asin sms
0x004CD75F asin sms
0x004CD7A0 GRACos sms public arccos wrapper over acos
0x004CD7B4 acos re arccos via DAT_00515dcc table lookup+lerp; not a C function (#479): cosine in BX, angle result in CX
0x004CD7FF atan2 sms
0x004CD834 GRSetLightSource sms store world light dir into _worldLightSource/515ED2/515ED4
0x004CD854 SetShading re thin wrapper -> SetShadingTable (renderer span); rebuilds shade LUT; not a C function (#479): 3-component vector in EAX/EBX/ECX
0x004CD8B0 Sun re lighting dot product of _worldLightSource against current matrix rows (518384/38A/390); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004CD8F0 clip_edge_right re Sutherland-Hodgman clip vs screen edge (outcode bit4); vbuf/vbuf2 ping-pong; calls ecode_pnt; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004CD9DA clip_edge_left re S-H clip vs screen edge (outcode bit8); vbuf ping-pong; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004CDAC6 clip_edge_top re S-H clip vs screen edge (outcode bit2); vbuf ping-pong; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004CDBB3 clip_edge_bottom re S-H clip vs screen edge (outcode bit1); vbuf ping-pong; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004CDCA8 do_nop sms SH opcode 0x34 no-op handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004CDCB8 render_3d re scene traversal: sets viewport from _cb clip box; inits sort list; T_AddYourObjs; dispatches dddEntry via vector_table; painter-sorts cur_sort_list then draws via PTR_FUN_0051839c; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004CDEB4 setup_view_projection re per-frame view/projection setup (aspect/head vectors/frustum) from zoom + screen dims; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004CE4A8 set_render_mode re tail into check_flat body; installs perspective-path rasterizer fn-ptr table (5184AC-518674/5185F0-51861C)
0x004CE4B4 check_flat re pick flat vs perspective render path from matrix (m4=m2=m8=m6=0 && m5~0x7FFF); swaps the rasterizer fn-ptr dispatch tables; sets DAT_00518679/515F84; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004CE784 load_normal_table re copy lighting normal_table (or DAT_00518620 variant) into working DAT_00518484 by in_AL selector; not a C function (#479): table selector in AL, no return value
0x004CE7BC load_xlate_rotate_pnt re hand-asm vertex load+translate+rotate helper (axis-select on DAT_00515f84)
0x004CE7F7 mxmul re hand-asm matrix*scalar accumulate helper (axis-select); not a C function (#479): vector in EBX/ECX/EBP; result in BX/CX/BP
0x004CE89C compute_axis_check re derive axis_check_type from dominant matrix axis (m3/m6/m9 vs aspect); selects transform/cull variant; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004CE968 sort_objs_wrapper re painter depth sort wrapper over _SortObjs_8; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004CE980 dmxmul sms
0x004CEA40 dmxmul2 sms
0x004CEB00 rotate_vec_roll re rotate _xv/_zv by cached sin/cos (roll axis) helper of rotate_matrix_roll; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004CEB70 rotate_matrix_roll re object-instancing: concat roll rotation into current matrix (m1..m9) via sincos; not a C function (#479): angle in BX, result in the carry flag
0x004CED44 rotate_vec_pitch re rotate _yv/_zv (pitch axis) helper of rotate_matrix_pitch; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004CEDB8 rotate_matrix_pitch re object-instancing: concat pitch rotation into current matrix via sincos; not a C function (#479): angle in BX, result in the carry flag
0x004CEF8C rotate_vec_yaw re rotate _xv/_yv (yaw axis) helper of rotate_matrix_yaw; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004CF000 rotate_matrix_yaw re object-instancing: concat yaw rotation into current matrix via sincos; not a C function (#479): angle in BX, result in the carry flag
0x004CF258 CodePnt sms
0x004CF270 code_pnt re compute 5-bit frustum outcode of a projected point (BP/BX bounds); not a C function (#479): point in BX/CX/BP, outcode in AL
0x004CF2A4 ecode_pnt re extended outcode (near-plane aware) returned in AL; used by clippers; not a C function (#479): point in EBX/ECX/EBP, outcode in AL
0x004CF2D0 matrix_from_angle3 re build 3x3 rotation matrix (3x FUN_004cf410) for MakeObj/ViewRotationMatrix; not a C function (#479): source vector in ESI and destination matrix in EBP
0x004CF328 mult_point_by_matrix_asm re hand-asm point*matrix (register-only; empty decompile) — MultPointByMatrix core; not a C function (#479): point in ESI and matrix in EBP, result in BX/CX/DI
0x004CF410 matrix_row_asm re hand-asm matrix row build (register-only; empty decompile); not a C function (#479): row in EBP and matrix in ESI, result in BX/CX/DI
0x004D028C cull_bbox_viewspace re view-space bounding-box/near-plane visibility test; returns clip code; called by GRAddBrentObj & do_drawobj000; not a C function (#479): shift in CL, box in SI/BX/BP/AX; result in the carry flag
0x004D0494 get_sort_dist re painter sort key = max|Δ|+quarters of others + per-obj bias (from _xv32/_yv32/_zv32); not a C function (#479): object record in EDI; sort key returned in BP
0x004D057C GRAddBrentObj sms
0x004D0798 draw_brent_obj re per-object shape-draw callback (PTR_FUN_0051839c target): restore saved matrix/viewer; ShapeSetup(brentObjId); object rotate (roll/pitch/yaw); lighting matrix; check_flat; SetShadingTable; interpret shape stream with _bdrawObj=1; not a C function (#479): object record in EDI
0x004D0C2F sh_op_BA re SH opcode 0xBA handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D0C50 do_drawobj000 sms not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D0C8A sh_op_6A re SH opcode 0x6A handler (render-state/geometry; 1409 bytes); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D120B sh_op_28 re SH opcode 0x28/0x30 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D1421 sh_op_D6_pre re 3-byte pre-adjust falling into sh_op_5A (op 0xD6); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D1424 sh_op_5A re SH opcode 0x5A handler (epic #52 placeholder name; 623 bytes); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D1694 sh_op_20 re SH opcode 0x20 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D17BC do_shape_name sms SH opcode 0x42 (SourceName): consume null-terminated shape name into _shapeName; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D17E0 sh_op_stub re shared no-op stub for 10 unassigned SH opcodes; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D17F0 sh_op_00 re SH opcode 0x00 (EndObject) handler entry (1 byte; falls into do_short_eof); not a C function (#479): SH dispatch-table jmp target; the RET returns from the enclosing interpreter
0x004D17F4 do_short_eof sms SH opcode 0x1E (ShortEOF): plain ret — returns from the current interpreter call frame (ends an Unmask/selector-called fragment; at top level ends the object). Trailing 0x1E runs are alignment after the return; not a C function (#479): SH dispatch-table jmp target; consumes ESI from the enclosing interpreter
0x004D17F8 sh_op_3A re SH opcode 0x3A handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D18F4 sh_op_08 re SH opcode 0x08 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D1974 sh_op_72 re SH opcode 0x72 handler (epic #52 placeholder name); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D1984 sh_op_96 re SH opcode 0x96 handler (856 bytes); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D1E5C do_vertexbuffer re SH opcode 0x82 (VertexBuffer) + 0x02/0x04/0x0A: push vertex batch into global pool at push_at/8; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D1ECC sh_op_A2 re SH opcode 0xA2/0xAE handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D1EDC sh_op_7A re SH opcode 0x7A handler (epic #52 placeholder name); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D1F24 sh_op_74 re SH opcode 0x74/0x7C/0x8E/0x9C handler (6-byte); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D1F2C sh_op_76 re SH opcode 0x76 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D1F34 sh_op_22 re SH opcode 0x22/0x7E handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D1FC0 sh_op_80 re SH opcode 0x80 handler (epic #52 placeholder name; 796 bytes); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D225E sh_op_1A re SH opcode 0x1A handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2278 do_unmask re SH opcode 0x12 (Unmask): dispatches the target sub-stream via the vector_table call-form; the callee chain runs until its ShortEOF (0x1E) rets; control resumes after the opcode; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D22A8 do_sfcal_long sms SH opcode 0x6E (UnmaskLong); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D22D4 do_ifdestroyed sms SH opcode 0xAC (JumpToDamage): esi+=rel16 if _destroyed (0x50C39C); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D22FC do_no_overlap sms SH opcode 0xB8: clears overlap/collision flag via FUN_004d426c; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2318 do_jumptodetail re SH opcode 0xA6 (JumpToDetail): skip rel16 when _detail(0x515EEE) < threshold; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2344 do_use_terrain_detail sms SH opcode 0xB2; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2360 sh_op_B0 re SH opcode 0xB0 handler; not a C function (#479): SH dispatch-table jmp target; consumes ESI and tail-jumps back into the table
0x004D2380 do_if_not_effect sms SH opcodes 0x14/0x16/0x3C/0xA8/0xAA/0xC0: conditional skip keyed on effects setting; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D23AC sh_op_6C re SH opcode 0x6C (draw-order selector): compares object-record field [w0] to w1; ALWAYS renders both sub-chains — calls one (returns at its ShortEOF) and tail-continues the other; the condition only swaps the order (painter's sorting). Targets: call=opd+w3+8 / continue=opd+6+w2; 13/14/16-byte sizes are the trailing embedded 38/48/50 jump; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2450 sh_op_06 re SH opcode 0x06 (plane-test draw-order selector): sign of nx(x+_xv)+ny(y+_yv)+nz*(z+_zv) picks the order; both sub-chains always render (call one / continue other). Operand: 3×(coeff i16 + coord i16) + size u16 + call-rel16 + embedded jump; call=opd+16+rel / continue=next instruction (opd+14+size); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D24F8 sh_op_0C re SH opcode 0x0C: two-axis (y/z) variant of the 0x06 plane-test draw-order selector; operand 2×(coeff+coord) + size u16 + call-rel16 + embedded jump; call=opd+12+rel / continue=next instruction; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2580 sh_op_0E re SH opcode 0x0E: two-axis (x/z) variant of the 0x06 plane-test draw-order selector (same layout as 0x0C); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2608 sh_op_10 re SH opcode 0x10: two-axis (x/y) variant of the 0x06 plane-test draw-order selector (same layout as 0x0C); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2690 sh_op_18 re SH opcode 0x18 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2740 sh_op_84 re SH opcode 0x84 handler (epic #52 placeholder name); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2798 load_dest re interpreter helper: load destination operand; not a C function (#479): SH bytecode cursor in ESI (advanced in place); result in EAX
0x004D27C8 sh_op_1C_flat re SH opcode 0x1C/0x88 handler, FLAT-path variant; not a C function (#479): threaded-code jump target. check_flat installs it into PTR_sh_op_1C_* where the perspective path installs sh_op_1C (0x4D2880) — it drops that sibling's m4/m6 matrix multiply
0x004D2880 sh_op_1C re SH opcode 0x1C/0x88 handler (perspective-path variant swapped by check_flat); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2910 sh_op_26 re SH opcode 0x26 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2948 sh_op_2A_flat re SH opcode 0x2A/0x86 handler, FLAT-path variant; not a C function (#479): threaded-code jump target. Installed by check_flat into PTR_sh_op_2A_* opposite sh_op_2A (0x4D29EC) — keeps the _scaled_matrix multiply, drops the m3 one
0x004D29EC sh_op_2A re SH opcode 0x2A/0x86 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2A7C sh_op_2C_flat re SH opcode 0x2C/0x8A handler, FLAT-path variant; not a C function (#479): threaded-code jump target. Installed by check_flat into PTR_sh_op_2C_* opposite sh_op_2C (0x4D2B20)
0x004D2B20 sh_op_2C re SH opcode 0x2C/0x8A handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2BB0 sh_op_92 re SH opcode 0x92 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2C70 sh_op_90 re SH opcode 0x90 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2D30 sh_op_94 re SH opcode 0x94 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2FC0 do_setcolor2 sms SH opcode 0x5C; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2FC8 sh_op_BC re SH opcode 0xBC handler (UnkBC); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D2FD0 sh_op_2E re SH opcode 0x2E handler; contains do_setcolor_continue (0x4D2FD6); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D300A sh_op_24_pre re 2-byte entry for op 0x24 (falls into do_fullpntg16); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D300C do_fullpntg16 sms SH opcode 0xFA; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D3064 sh_op_A0 re SH opcode 0xA0 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D30C8 sh_op_4E re SH opcode 0x4E handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D30E4 do_short_ijmp sms SH opcode 0x38 (ShortJump): DEC ESI then shares 0x48 body; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D30E5 do_jump sms SH opcode 0x48 (Jump): esi+=rel16; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D3100 do_ijmp_long sms SH opcode 0x50 (LongJump): esi+=rel32; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D3118 sh_op_32 re SH opcode 0x32 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D3134 do_anim_jmp sms SH opcode 0x40 (JumpToFrame): idx=_frameCounter mod nframes; relative frame-table jump; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D315C sh_op_4A re SH opcode 0x4A handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D3193 sh_op_4C_pre re 1-byte entry for op 0x4C/0x8C (falls into sh_op_C4); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D3194 do_xformunmask re SH opcode 0xC4 XformUnmask: render sub-stream at a relative transform; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D33D8 do_icall_long sms SH opcode 0xC6 (XformUnmaskLong); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D3618 sh_op_52 re SH opcode 0x52/0x54 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D3644 sh_op_56 re SH opcode 0x56 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D3670 sh_op_5E re SH opcode 0x5E handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D36CC sh_op_60 re SH opcode 0x60 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D3728 sh_op_62 re SH opcode 0x62 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D3784 sh_op_64 re SH opcode 0x64 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D37BC sh_op_66 re SH opcode 0x66 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D37F4 sh_op_68 re SH opcode 0x68 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D382C sh_op_58 re SH opcode 0x58 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D3938 sh_op_78 re SH opcode 0x78: oriented bounding-box visibility cull — transforms a center+-extent box by the view matrix and trivially-rejects the guarded geometry from its 8 corners (code_pnt Cohen-Sutherland outcodes); emits no geometry (largest handler; 2085 bytes); not a C function (#479): SH dispatch-table jmp target; consumes ESI and CL from the enclosing interpreter
0x004D415D thunk_FUN_004d416b sms 2-byte thunk for ops 0xA4/0xBE -> FUN_004d416b
0x004D416B sh_op_A4_body re body reached via thunk (op 0xA4/0xBE); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D416C do_jumpfar4 sms SH opcode 0xC8 (JumpToLOD): distance/size LOD test; skips 6-byte operand when _effects&0x20000; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D4240 do_start_interp sms bytecode re-entry target for x86-embedded regions (all 208 x86 shapes jump here); esi=selected sub-stream; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D4254 do_start_asm sms SH opcode 0xF0 (X86Code): push esi; ret -> execute embedded x86 payload; not a C function (#479): SH opcode 0xF0: push esi; ret transfers control to the embedded x86 code
0x004D4258 do_collision_info sms SH opcode 0xF2 (PtrToObjEnd): records obj_end_off; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D426C set_overlap_flag re helper: AND/OR update of collision/overlap flag word 0x515EF0 (used by do_no_overlap); not a C function (#479): value in EAX and mask in EBX (AND/OR update of [0x515EF0])
0x004D4288 sh_op_CA re SH opcode 0xCA handler (UnkCA); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D42C8 do_setlight sms SH opcode 0xDA; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D42EC do_setcoarse sms SH opcode 0x44 (sets _coarse detail flag); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D4308 do_set_point_color sms SH opcode 0xF6 (VertexInfo): per-vertex color+normal; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D4364 do_set_gouraud sms SH opcode 0xF4; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D43CC SetFlatColor re helper: set flat-shade color for do_new_poly; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand
0x004D43DC do_new_poly sms SH opcode 0xFC (Face): parse face flags/indices(<<3=*8 pool)/texcoords; effect-gate; synthesize+dispatch sub-program of setcolor/gouraud/texture/brush opcodes -> rasterizer; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D478C do_force_no_pmap sms SH opcode 0x46 (sets _force_no_pmap); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D47A4 do_streamer_def sms SH opcode 0xCE (streamer/contrail define); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D47B8 do_streamer_draw sms SH opcode 0xD0 (streamer/contrail draw); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D4874 NeedClip re helper: mark clip needed; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D4888 RestoreClip re helper: restore prior clip state; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D4894 do_screen_coords sms SH opcode 0xD2 (project to screen coords); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D4988 do_texture_index re SH opcode 0xE0 (TextureIndex): select current texture by index; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D49C0 do_texture_file re SH opcode 0xE2 (TextureFile): set current texture by 14-byte name; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D4A19 do_brush_solid sms SH opcode 0xEC; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D4A30 do_brush_trans sms SH opcode 0xEE; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D4A47 do_brush_area sms SH opcode 0xE4; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D4A6D do_brush_area_full sms SH opcode 0xE6; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D4ACA sh_op_DC re SH opcode 0xDC handler (UnkDC; 610 bytes; textured-fill path); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D4D2C sh_op_DE re SH opcode 0xDE handler (perspective textured-fill; 723 bytes); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D4FFF shade_span_a re do_new_smap/rmap shade-span builder variant A; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D511B shade_span_b re do_new_smap/rmap shade-span builder variant B; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D523B shade_span_c re do_new_smap/rmap shade-span builder variant C; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D5356 shade_span_d re do_new_smap/rmap shade-span builder variant D; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D5475 do_new_smap sms SH opcode 0xE8 (shade map); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D5644 do_new_rmap sms SH opcode 0xEA (remap; 872 bytes); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D59AC do_new_pmap_or_tmap sms SH opcodes 0x36/0x3E (perspective/texture map); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D5A2C angles_2_matrix re build view rotation matrix from _am_h/_am_p/_am_b (heading/pitch/bank) via sincos; not a C function (#479): destination matrix in EBP
0x004D5BA8 GRInit3d sms init: store detail flag; install _overflow_ptr divide trap
0x004D5BCC GRRender sms top-level 3D render: set viewer xyz + view angles + zoom + obj/ter detail/effects; angles_2_matrix; render_3d; export _unscaled_matrix
0x004D5C98 GRSinCos sms public sin/cos wrapper over sincos
0x004D5CC0 GRTo2d sms
0x004D5E18 TransposeMatrix sms
0x004D5E58 MakeObjRotationMatrix sms build object rotation matrix (roll/pitch/yaw) into caller buffer
0x004D60D8 MakeViewRotationMatrix sms build view rotation matrix (yaw/pitch/roll order) into caller buffer
0x004D631C MultPointByMatrix sms transform a point by the current matrix (wraps mult_point_by_matrix_asm)
0x004D6348 GRSaveContext sms save viewer/xv/scr/bias/wtop + scaled+unscaled matrices to shadow block 0x51D5E3+
0x004D63F0 GRRestoreContext sms restore the GRSaveContext shadow block
0x004D6498 GRExec sms execute one SH command stream: dispatch vector_table[*param]; preserve _xv/_yv/_zv (used by scene dispatch for sky/sun list)
0x004D64D8 MultF24PointByMatrix sms transform a 24.8 fixed point by matrix with saturation
0x004D65C4 Sqrt sms
0x004D6640 do_nt sms SH opcode 0xFE (terrain node/tile): read tile verts; compute bbox+sort key; insert into sort list; draw_quad or draw_tri_nw+se by diagonal; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own
0x004D69EC __compute_viewer_dot_product re backface cull: face-normal dot (vertex - viewer) for do_nt tiles; not a C function (#479): vertex in EDI and normal in EBX; result in the sign flag / EDX:EAX
0x004D6A38 draw_quad re assemble 4-vertex tile working set -> draw_nt; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D6A90 draw_tri_nw re assemble NW-triangle working set -> draw_nt; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D6B24 draw_tri_se re assemble SE-triangle working set -> draw_nt; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D6BB8 draw_nt re build terrain-tile polygon (flat/gouraud/textured) from working set and submit to the 2D rasterizer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand

Startup / Phar Lap DOS extender / config

startup.csv · page — 495 named functions

VA Symbol Src Role
0x00403700 usnfmain sms
0x00404C70 FlyingLoop sms
0x0041E370 SetConfig sms command-line parser: /D /H /J /M /N switches + janes* globals + UCONFIG_Initialize
0x0041E8E0 WriteConfig sms serialize devices/volumes/prefs/pilot to EA.CFG via SaveFile
0x0041E8F0 IsBrentDLL sms PE/DLL loader family: directly precedes IsDLL@0x41E910 (claimed in #534)
0x0041E910 IsDLL sms
0x0041E990 VAToPtrInFile sms
0x0041EA80 FindSection sms
0x0041EB60 LoadDLL sms
0x0041F240 LoadBrentDLL sms
0x00436320 StartGameThread sms
0x0044A110 InstallErrorExit sms
0x0044A120 ErrorExit sms
0x0044A370 GameCleanup sms
0x0044A420 ErrorExitNoMem sms
0x0046B560 MainLoop sms
0x00476120 WinMain sms
0x00476180 MainWndproc sms
0x004764B0 InitApplication sms
0x00476660 CreateGameThread sms
0x00476700 EndGame sms
0x004767F0 DisplayCopyright sms
0x00486E80 StartTimeThread sms the 15ms timer thread: ticks + WRUpdatePalette + ASynchJoystick + GG_Shake
0x00487A10 WaitUntil sms busy-wait on _timerTicks (the timer thread's counter)
0x00492740 doConfigurationScreen sms
0x004B27C0 UCONFIG_DMusic sms
0x004B2820 UCONFIG_SetVideoOptions sms
0x004B2930 UCONFIG_load_EA_CFG sms
0x004B2980 UCONFIG_save_EA_CFG sms
0x004B2BD0 UCONFIG_Initialize sms
0x004D6F5C timeGetTime sms IAT import thunk (jmp [imp…])
0x004D6F62 joyGetPos sms IAT import thunk (jmp [imp…])
0x004D6F68 joyGetDevCapsA sms IAT import thunk (jmp [imp…])
0x004D6F6E joyGetNumDevs sms IAT import thunk (jmp [imp…])
0x004D6F74 joyGetPosEx sms IAT import thunk (jmp [imp…])
0x004D6F7A Sleep sms IAT import thunk (jmp [imp…])
0x004D6F80 SetCurrentDirectoryA sms IAT import thunk (jmp [imp…])
0x004D6F86 InitializeCriticalSection sms IAT import thunk (jmp [imp…])
0x004D6F8C DeleteCriticalSection sms IAT import thunk (jmp [imp…])
0x004D6F92 LeaveCriticalSection sms IAT import thunk (jmp [imp…])
0x004D6F98 EnterCriticalSection sms IAT import thunk (jmp [imp…])
0x004D6F9E GetDriveTypeA sms IAT import thunk (jmp [imp…])
0x004D6FA4 GetLogicalDrives sms IAT import thunk (jmp [imp…])
0x004D6FAA SetThreadPriority sms IAT import thunk (jmp [imp…])
0x004D6FB0 GetCurrentThread sms IAT import thunk (jmp [imp…])
0x004D6FB6 GetThreadPriority sms IAT import thunk (jmp [imp…])
0x004D6FBC GetSystemInfo sms IAT import thunk (jmp [imp…])
0x004D6FC2 MapViewOfFile sms IAT import thunk (jmp [imp…])
0x004D6FC8 CreateFileMappingA sms IAT import thunk (jmp [imp…])
0x004D6FCE GetFileSize sms IAT import thunk (jmp [imp…])
0x004D6FD4 CreateFileA sms IAT import thunk (jmp [imp…])
0x004D6FDA IsBadStringPtrA sms IAT import thunk (jmp [imp…])
0x004D6FE0 CloseHandle sms IAT import thunk (jmp [imp…])
0x004D6FE6 UnmapViewOfFile sms IAT import thunk (jmp [imp…])
0x004D6FEC GlobalAlloc sms IAT import thunk (jmp [imp…])
0x004D6FF2 VirtualAlloc sms IAT import thunk (jmp [imp…])
0x004D6FF8 GlobalFree sms IAT import thunk (jmp [imp…])
0x004D6FFE VirtualFree sms IAT import thunk (jmp [imp…])
0x004D7004 ExitThread sms IAT import thunk (jmp [imp…])
0x004D700A ExitProcess sms IAT import thunk (jmp [imp…])
0x004D7010 SuspendThread sms IAT import thunk (jmp [imp…])
0x004D7016 GetCurrentThreadId sms IAT import thunk (jmp [imp…])
0x004D701C CreateThread sms IAT import thunk (jmp [imp…])
0x004D7022 GetExitCodeThread sms IAT import thunk (jmp [imp…])
0x004D7028 QueryPerformanceCounter sms IAT import thunk (jmp [imp…])
0x004D702E QueryPerformanceFrequency sms IAT import thunk (jmp [imp…])
0x004D7034 ResumeThread sms IAT import thunk (jmp [imp…])
0x004D703A TerminateThread sms IAT import thunk (jmp [imp…])
0x004D7040 FindClose sms IAT import thunk (jmp [imp…])
0x004D7046 FindFirstFileA sms IAT import thunk (jmp [imp…])
0x004D704C GetDiskFreeSpaceA sms IAT import thunk (jmp [imp…])
0x004D7052 FindNextFileA sms IAT import thunk (jmp [imp…])
0x004D7058 FileTimeToDosDateTime sms IAT import thunk (jmp [imp…])
0x004D705E FileTimeToLocalFileTime sms IAT import thunk (jmp [imp…])
0x004D7064 GetFileTime sms IAT import thunk (jmp [imp…])
0x004D706A GetLocalTime sms IAT import thunk (jmp [imp…])
0x004D7070 GetSystemTime sms IAT import thunk (jmp [imp…])
0x004D7076 FreeLibrary sms IAT import thunk (jmp [imp…])
0x004D707C GetProcAddress sms IAT import thunk (jmp [imp…])
0x004D7082 LoadLibraryA sms IAT import thunk (jmp [imp…])
0x004D7088 SetErrorMode sms IAT import thunk (jmp [imp…])
0x004D708E SetFilePointer sms IAT import thunk (jmp [imp…])
0x004D7094 ReadFile sms IAT import thunk (jmp [imp…])
0x004D70A0 DeleteFileA sms IAT import thunk (jmp [imp…])
0x004D70A6 MoveFileA sms IAT import thunk (jmp [imp…])
0x004D70AC lstrcpyA sms IAT import thunk (jmp [imp…])
0x004D70B2 GetCurrentDirectoryA sms IAT import thunk (jmp [imp…])
0x004D70B8 GetModuleFileNameA sms IAT import thunk (jmp [imp…])
0x004D70BE GetTickCount sms IAT import thunk (jmp [imp…])
0x004D70C4 PostMessageA sms IAT import thunk (jmp [imp…])
0x004D70CA SendMessageA sms IAT import thunk (jmp [imp…])
0x004D70D0 GetCursorPos sms IAT import thunk (jmp [imp…])
0x004D70D6 ClipCursor sms IAT import thunk (jmp [imp…])
0x004D70DC SetRect sms IAT import thunk (jmp [imp…])
0x004D70E2 MessageBoxA sms IAT import thunk (jmp [imp…])
0x004D70E8 ShowWindow sms IAT import thunk (jmp [imp…])
0x004D70EE DispatchMessageA sms IAT import thunk (jmp [imp…])
0x004D70F4 GetMessageA sms IAT import thunk (jmp [imp…])
0x004D70FA DestroyWindow sms IAT import thunk (jmp [imp…])
0x004D7100 SetCursor sms IAT import thunk (jmp [imp…])
0x004D7106 SetForegroundWindow sms IAT import thunk (jmp [imp…])
0x004D710C GetForegroundWindow sms IAT import thunk (jmp [imp…])
0x004D7112 DefWindowProcA sms IAT import thunk (jmp [imp…])
0x004D7118 PostQuitMessage sms IAT import thunk (jmp [imp…])
0x004D711E ShowCursor sms IAT import thunk (jmp [imp…])
0x004D7124 SetFocus sms IAT import thunk (jmp [imp…])
0x004D712A CreateWindowExA sms IAT import thunk (jmp [imp…])
0x004D7130 GetSystemMetrics sms IAT import thunk (jmp [imp…])
0x004D7136 RegisterClassA sms IAT import thunk (jmp [imp…])
0x004D713C LoadIconA sms IAT import thunk (jmp [imp…])
0x004D7142 FindWindowA sms IAT import thunk (jmp [imp…])
0x004D7148 SystemParametersInfoA sms IAT import thunk (jmp [imp…])
0x004D714E SetDlgItemTextA sms IAT import thunk (jmp [imp…])
0x004D7154 CreateDialogParamA sms IAT import thunk (jmp [imp…])
0x004D715A _DirectDrawCreate@12 sms IAT jump thunk -> DDRAW.DLL import (used by InitVideo); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7160 AIL_midiOutOpen sms
0x004D7166 AIL_set_preference sms
0x004D716C AIL_startup sms
0x004D7172 AIL_shutdown sms
0x004D7178 AIL_stop_timer sms
0x004D717E AIL_midiOutClose sms
0x004D7184 AIL_start_sequence sms
0x004D718A AIL_release_sequence_handle sms
0x004D7190 AIL_init_sequence sms
0x004D7196 AIL_allocate_sequence_handle sms
0x004D719C AIL_unlock sms
0x004D71A2 AIL_set_XMIDI_master_volume sms
0x004D71A8 AIL_lock sms
0x004D71AE AIL_sequence_status sms
0x004D71B4 AIL_allocate_sample_handle sms
0x004D71BA AIL_waveOutOpen sms
0x004D71C0 AIL_start_timer sms
0x004D71C6 AIL_set_timer_frequency sms
0x004D71CC AIL_register_timer sms
0x004D71D2 AIL_waveOutClose sms
0x004D71D8 AIL_end_sample sms
0x004D71DE AIL_sample_status sms
0x004D71E4 AIL_stop_sequence sms
0x004D71EA AIL_resume_sequence sms
0x004D71F0 AIL_start_sample sms
0x004D71F6 AIL_set_sample_type sms
0x004D71FC AIL_set_sample_address sms
0x004D7202 AIL_set_sample_loop_count sms
0x004D7208 AIL_init_sample sms
0x004D720E AIL_set_sample_pan sms
0x004D7214 AIL_set_sample_volume sms
0x004D721A AIL_set_sample_playback_rate sms
0x004D7220 _ser_rs232_getpacket@12 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7226 _ser_rs232_block@12 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D722C _ser_rs232_flush@8 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7232 _ser_rs232_getbyte@8 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7238 _ser_rs232_putbyte@8 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D723E _ser_rs232_getstatus@8 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7244 _ser_rs232_putpacket@12 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D724A _FlushTransmitBuffer@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7250 _FlushReceiveBuffer@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7256 _SetFlowControlThreshold@12 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D725C _SetPaceTime@8 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7262 _SetTimeout@8 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7268 _UnInitializePort@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D726E _SetPortCharacteristics@24 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7274 _InitializePort@36 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D727A _IsPortAvailable@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7280 _BytesInReceiveBuffer@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7286 _BytesInTransmitBuffer@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D728C _GetByte@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7292 _PeekChar@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7298 _CdrvCrc16@8 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D729E _IsCarrierDetect@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D72A4 _ModemInit@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D72AA _ModemAttention@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D72B0 _ModemWaitForCall@16 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D72B6 _IsRing@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D72BC _GetString@12 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D72C2 _ModemAnswerMode@8 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D72C8 _ModemGetCarrierSpeed@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D72CE _ModemConnect@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D72D4 _Dial@12 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D72DA _ModemModifyValue@12 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D72E0 _ModemHangup@4 sms IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D72E6 RegCloseKey sms
0x004D72EC RegQueryValueExA sms
0x004D72F2 RegOpenKeyExA sms
0x004D72F8 RegEnumKeyExA sms
0x004D72FE _closeMS sms IAT jump thunk -> msapi.dll matchmaking-service import (network subsystem); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7304 _getMSdatafile sms IAT jump thunk -> msapi.dll matchmaking-service import (network subsystem); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D730A _getMSdatafilesize sms IAT jump thunk -> msapi.dll matchmaking-service import (network subsystem); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7310 _initializeMS sms IAT jump thunk -> msapi.dll matchmaking-service import (network subsystem); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7316 _connectMS sms IAT jump thunk -> msapi.dll matchmaking-service import (network subsystem); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D731C _sendMSresults sms IAT jump thunk -> msapi.dll matchmaking-service import (network subsystem); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004D7330 _strncpy sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7430 __cinit sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D7460 _exit sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D7480 __exit sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D74A0 _cexit sms
0x004D7580 __lockexit sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D7590 __unlockexit sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D75C0 _strrchr sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D75F0 _atol sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D76A0 _atoi sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D76B0 __atoi64 sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand
0x004D7790 _sprintf sms MSVC C runtime (statically linked); FA.SMS public symbol; not a C function (#479): va_list built at [esp+0xC] (MSVC CRT sprintf: char , const char , ...)
0x004D7810 _strchr sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D78D0 _memmove sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7A20 _tolower sms
0x004D7A30 _tolower sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7AA0 __tolower_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7B90 _fclose sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7BD0 __fclose_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7C70 _fopen sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7C90 _strstr sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7D10 isalpha sms
0x004D7D50 isupper sms
0x004D7D80 islower sms
0x004D7DB0 _isdigit sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7DE0 isxdigit sms
0x004D7E20 _isspace sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7E50 ispunct sms
0x004D7E80 _isalnum sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7EC0 _isprint sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7F00 isgraph sms
0x004D7F40 iscntrl sms
0x004D8040 _toupper sms
0x004D8050 _toupper sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D80C0 __toupper_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D81B0 __chkstk sms MSVC C runtime (statically linked); FA.SMS public symbol; not a C function (#479): frame size in EAX; adjusts ESP and the return address in place
0x004D81E0 ?_JumpToContinuation@@YGXPAXPAUEHRegistrationNode@@@Z sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8220 ?_CallMemberFunction0@@YGXPAX0@Z sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8230 ?_CallMemberFunction1@@YGXPAX00@Z sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8240 ?_CallMemberFunction2@@YGXPAX00H@Z sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8250 ?_UnwindNestedFrames@@YGXPAUEHRegistrationNode@@PAUEHExceptionRecord@@@Z sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8310 ?_CallCatchBlock2@@YAPAXPAUEHRegistrationNode@@PBU_s_FuncInfo@@PAXHK@Z sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D83B0 ?_CallSETranslator@@YAHPAUEHExceptionRecord@@PAUEHRegistrationNode@@PAX2PBU_s_FuncInfo@@H1@Z sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8510 __global_unwind2 sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8552 __local_unwind2 sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D85BA __abnormal_termination sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D85DD __NLG_Notify1 sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D85E6 __NLG_Notify sms MSVC C runtime (statically linked); FA.SMS public symbol; not a C function (#479): target in EAX and the CALLER's EBP frame, plus one stack dword
0x004D8610 _strncmp sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8648 __ftol sms MSVC C runtime (statically linked); FA.SMS public symbol; not a C function (#479): double argument in the x87 register ST(0); result in EDX:EAX
0x004D86A0 __cfltcvt_init sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D86F8 _except_handler3 sms
0x004D87B5 __seh_longjmp_unwind@4 sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D87D0 _labs sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D87E0 _strncat sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8910 __alldiv sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D89C0 __allmul sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8A00 _qsort sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8C00 __chdir sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8CB0 __fullpath sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D8D90 __splitpath sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D8EF0 __getcwd sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8F20 _getdcwd sms
0x004D8F60 __getdcwd_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D90A0 __validdrive sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D90F0 _strupr sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D9250 _bsearch sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D9300 _fread sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D9340 __fread_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D9490 _fwrite sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D94D0 __fwrite_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D9660 _stricmp sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D9730 _strlen sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D97B0 _strcpy sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D97C0 _strcat sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D98A0 srand sms
0x004D98B0 _rand sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004D98E0 fgets sms
0x004D9960 fprintf sms
0x004D99B0 _lsearch sms
0x004D9A10 _sscanf sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D9A60 _getenv sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D9A90 __getenv_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D9B30 fflush sms
0x004D9B70 __fflush_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D9D00 WinMainCRTStartup sms PE entry point / MSVC CRT startup: GetVersion, __heap_init, __mtinit, __ioinit, initmbctable, _setargv/setenvp/__cinit, then _WinMain@16 (0x476120, outside range), _exit. THE one true startup element in range
0x004D9EB0 __amsg_exit sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D9EE0 __strlwr sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DA040 _strnicmp sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DA140 __mtinitlocks sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DA170 __mtdeletelocks sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DA1E0 __lock sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DA250 __unlock sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DA270 __lock_file sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DA2B0 __lock_file2 sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DA2E0 __unlock_file sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DA320 __unlock_file2 sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DA350 _lockerr_exit sms
0x004DA370 __isctype sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DB020 setlocale sms
0x004DB560 _expandlocale sms
0x004DB740 _strcats sms
0x004DBDB0 _free sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DBE20 __close sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DBE90 __close_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DCCD0 __CallSettingFrame@12 sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DCD20 __mtinit sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DCD80 _mtterm sms
0x004DCDB0 __initptd sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DCDD0 __getptd sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DCE40 _freeptd sms
0x004DCF10 _malloc sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DCF30 __nh_malloc sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DCF80 __heap_alloc sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DCFE0 __setdefaultprecision sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DD000 __ms_p5_test_fdiv sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DD050 __ms_p5_mp_test_fdiv sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DD080 _forcdecpt sms
0x004DD0F0 _cropzeros sms
0x004DD150 _positive sms
0x004DD170 _fassign sms
0x004DD1C0 __cftoe sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DD330 __cftof sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DD460 __cftog sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DD510 _cfltcvt sms
0x004DD5B0 __dosmaperr sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DD630 __errno sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DD650 __mbctoupper sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DD6E0 __mbsnbcpy sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DD790 __setmbcp sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DDAA0 _getmbcp sms
0x004DDAC0 __filbuf sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DDBC0 __read sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DDC40 __read_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DDE70 __write sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DDEF0 __write_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DE0F0 _stbuf sms
0x004DE1D0 __input sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DEF30 __mbsnbicoll sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DF000 __commit sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DF1A0 __XcptFilter sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DF320 _ismbbkalnum sms
0x004DF340 _ismbbkprint sms
0x004DF360 _ismbbkpunct sms
0x004DF380 _ismbbalnum sms
0x004DF3A0 _ismbbalpha sms
0x004DF3C0 _ismbbgraph sms
0x004DF3E0 _ismbbprint sms
0x004DF400 _ismbbpunct sms
0x004DF420 __ismbblead sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DF440 _ismbbtrail sms
0x004DF460 _ismbbkana sms
0x004DF4D0 __setenvp sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DF5C0 __setargv sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DFBC0 __ioinit sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DFDA0 __ioterm sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DFE00 __heap_init sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DFE40 _heap_term sms
0x004DFE80 __FF_MSGBANNER sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004DFEC0 __NMSG_WRITE sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E00C0 _GET_RTERRMSG sms
0x004E0460 __lseek_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E0540 __isatty sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E0570 _wctomb sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E05D0 __wctomb_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E0670 __aulldiv sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E06E0 __aullrem sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E1700 _strcspn sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E1740 _strpbrk sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E1C40 _get_sbh_threshold sms
0x004E1C50 _set_sbh_threshold sms
0x004E2680 __alloc_osfhnd sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E27C0 __set_osfhnd sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E2870 __free_osfhnd sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E2910 __get_osfhandle sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E2960 _open_osfhandle sms
0x004E2A20 __lock_fhandle sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E2A90 __unlock_fhandle sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E2AE0 __sopen sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E2F70 ?__CxxUnhandledExceptionFilter@@YGJPAU_EXCEPTION_POINTERS@@@Z sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E2FD0 __CxxRestoreUnhandledExceptionFilter sms
0x004E2FE0 ?terminate@@YAXXZ sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3060 unexpected sms
0x004E3080 ?_inconsistency@@YAXXZ sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3100 ?_ValidateRead@@YAHPBXI@Z sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3120 ?_ValidateWrite@@YAHPAXI@Z sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3140 ?_ValidateExecute@@YAHP6GHXZ@Z sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3160 _calloc sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3210 _set_new_handler sms
0x004E3240 _query_new_handler sms
0x004E3250 __callnewh sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3290 __statusfp sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E32B0 __clearfp sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E32D0 __control87 sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3310 __controlfp sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3500 __ZeroTail sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3570 __IncMan sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E35E0 __RoundMan sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3690 __CopyMan sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E36B0 __FillZeroMan sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E36C0 __IsZeroMan sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E36E0 __ShrMan sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3790 __ld12cvt sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3960 __ld12tod sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3980 __ld12tof sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E39A0 _ld12told sms
0x004E3A30 __atodbl sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E3A70 _atoldbl sms
0x004E3AB0 __atoflt sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E3B80 __fltout2 sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand
0x004E3CD0 _mbtowc sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E3D30 __mbtowc_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3E40 ungetc sms
0x004E3E70 __ungetc_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E47C0 __fcloseall sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E4860 _wcslen sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E4920 __Getdays sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E4A10 __Getmonths sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E4B00 _Gettnames sms
0x004E4E60 strftime sms
0x004E4E80 _Strftime sms
0x004E5B40 localeconv sms
0x004E5BF0 _ltoa sms
0x004E5C20 _ultoa sms
0x004E5C40 _i64toa sms
0x004E5D20 _ui64toa sms
0x004E5FB0 wcstol sms
0x004E61E0 wcstoul sms
0x004E6200 _chsize sms
0x004E6270 __chsize_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E63B0 __onexit sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E6440 _atexit sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E64A0 _abort sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E64C0 signal sms
0x004E6730 _raise sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E7320 _$I10_OUTPUT sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E76C0 _realloc sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E7890 __mbschr sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E7950 __strdup sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E79C0 _tzset sms
0x004E7CC0 _isindst sms
0x004E80E0 towupper sms
0x004E8160 __towupper_lk sms MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x004E8200 _iswctype sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E8280 is_wctype sms
0x004E82A0 _setmode sms
0x004E8310 __setmode_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E8380 __msize sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E8720 _wcstombs sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E8780 __wcstombs_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E8A22 TerminateProcess sms
0x004E8A28 GetCurrentProcess sms
0x004E8A2E _RtlUnwind@16 sms IAT jump thunk -> ntdll RtlUnwind import (used by CRT C++ EH); FA.SMS-named linker stub, conceptual owner is another subsystem
0x004E8A34 GetLastError sms IAT import thunk (jmp [imp…])
0x004E8A3A SetEnvironmentVariableA sms IAT import thunk (jmp [imp…])
0x004E8A40 GetFullPathNameA sms IAT import thunk (jmp [imp…])
0x004E8A46 GetModuleHandleA sms IAT import thunk (jmp [imp…])
0x004E8A4C GetStartupInfoA sms IAT import thunk (jmp [imp…])
0x004E8A52 GetCommandLineA sms IAT import thunk (jmp [imp…])
0x004E8A58 GetVersion sms IAT import thunk (jmp [imp…])
0x004E8A5E FatalAppExitA sms IAT import thunk (jmp [imp…])
0x004E8A64 MultiByteToWideChar sms IAT import thunk (jmp [imp…])
0x004E8A6A LCMapStringA sms IAT import thunk (jmp [imp…])
0x004E8A70 WideCharToMultiByte sms IAT import thunk (jmp [imp…])
0x004E8A76 LCMapStringW sms IAT import thunk (jmp [imp…])
0x004E8A7C HeapFree sms IAT import thunk (jmp [imp…])
0x004E8A82 TlsSetValue sms IAT import thunk (jmp [imp…])
0x004E8A88 TlsAlloc sms IAT import thunk (jmp [imp…])
0x004E8A8E TlsFree sms IAT import thunk (jmp [imp…])
0x004E8A94 SetLastError sms IAT import thunk (jmp [imp…])
0x004E8A9A TlsGetValue sms IAT import thunk (jmp [imp…])
0x004E8AA0 HeapAlloc sms IAT import thunk (jmp [imp…])
0x004E8AA6 GetCPInfo sms IAT import thunk (jmp [imp…])
0x004E8AAC GetACP sms IAT import thunk (jmp [imp…])
0x004E8AB2 GetOEMCP sms IAT import thunk (jmp [imp…])
0x004E8AB8 FlushFileBuffers sms IAT import thunk (jmp [imp…])
0x004E8ABE UnhandledExceptionFilter sms IAT import thunk (jmp [imp…])
0x004E8AC4 FreeEnvironmentStringsA sms IAT import thunk (jmp [imp…])
0x004E8ACA GetEnvironmentStrings sms IAT import thunk (jmp [imp…])
0x004E8AD0 FreeEnvironmentStringsW sms IAT import thunk (jmp [imp…])
0x004E8AD6 GetEnvironmentStringsW sms IAT import thunk (jmp [imp…])
0x004E8ADC SetHandleCount sms IAT import thunk (jmp [imp…])
0x004E8AE2 GetFileType sms IAT import thunk (jmp [imp…])
0x004E8AE8 GetStdHandle sms IAT import thunk (jmp [imp…])
0x004E8AEE HeapDestroy sms IAT import thunk (jmp [imp…])
0x004E8AF4 HeapCreate sms IAT import thunk (jmp [imp…])
0x004E8AFA GetStringTypeA sms IAT import thunk (jmp [imp…])
0x004E8B00 GetStringTypeW sms IAT import thunk (jmp [imp…])
0x004E8B06 IsValidLocale sms IAT import thunk (jmp [imp…])
0x004E8B0C IsValidCodePage sms IAT import thunk (jmp [imp…])
0x004E8B12 GetUserDefaultLCID sms IAT import thunk (jmp [imp…])
0x004E8B18 SetStdHandle sms IAT import thunk (jmp [imp…])
0x004E8B1E SetUnhandledExceptionFilter sms IAT import thunk (jmp [imp…])
0x004E8B24 IsBadReadPtr sms IAT import thunk (jmp [imp…])
0x004E8B2A IsBadWritePtr sms IAT import thunk (jmp [imp…])
0x004E8B30 IsBadCodePtr sms IAT import thunk (jmp [imp…])
0x004E8B36 CompareStringA sms IAT import thunk (jmp [imp…])
0x004E8B3C CompareStringW sms IAT import thunk (jmp [imp…])
0x004E8B42 GetLocaleInfoA sms IAT import thunk (jmp [imp…])
0x004E8B48 GetLocaleInfoW sms IAT import thunk (jmp [imp…])
0x004E8B4E SetEndOfFile sms IAT import thunk (jmp [imp…])
0x004E8B54 SetConsoleCtrlHandler sms IAT import thunk (jmp [imp…])
0x004E8B5A HeapReAlloc sms IAT import thunk (jmp [imp…])
0x004E8B60 GetTimeZoneInformation sms IAT import thunk (jmp [imp…])
0x004E8B66 HeapSize sms IAT import thunk (jmp [imp…])

Binary: WAIL32.DLL

WAIL32.DLL — Miles Sound System (AIL) audio driver

wail32.csv · page — 130 named functions

VA Symbol Src Role
0x20001660 DllMain re Miles/AIL public export
0x200019C0 AIL_startup re Miles/AIL public export
0x20001CF0 AIL_shutdown re Miles/AIL public export
0x20001E00 MEM_alloc_lock re Miles/AIL public export
0x20001F10 MEM_free_lock re Miles/AIL public export
0x20001FA0 AIL_set_preference re Miles/AIL public export
0x200020C0 AIL_get_preference re Miles/AIL public export
0x200021D0 AIL_last_error re Miles/AIL public export
0x200022D0 AIL_set_error re Miles/AIL public export
0x20002360 AIL_lock re Miles/AIL public export
0x20002380 AIL_unlock re Miles/AIL public export
0x200023A0 AIL_delay re Miles/AIL public export
0x20002420 AIL_background re Miles/AIL public export
0x20002430 AIL_register_timer re Miles/AIL public export
0x20002540 AIL_set_timer_user re Miles/AIL public export
0x20002660 AIL_set_timer_period re Miles/AIL public export
0x20002700 AIL_set_timer_frequency re Miles/AIL public export
0x200027A0 AIL_set_timer_divisor re Miles/AIL public export
0x20002840 AIL_start_timer re Miles/AIL public export
0x200028D0 AIL_start_all_timers re Miles/AIL public export
0x20002950 AIL_stop_timer re Miles/AIL public export
0x200029E0 AIL_stop_all_timers re Miles/AIL public export
0x20002A60 AIL_release_timer_handle re Miles/AIL public export
0x20002AF0 AIL_release_all_timers re Miles/AIL public export
0x20002B70 AIL_waveOutOpen re Miles/AIL public export
0x20002CB0 AIL_waveOutClose re Miles/AIL public export
0x20002D60 AIL_allocate_sample_handle re Miles/AIL public export
0x20002E80 AIL_allocate_file_sample re Miles/AIL public export
0x20002FB0 AIL_release_sample_handle re Miles/AIL public export
0x20003060 AIL_init_sample re Miles/AIL public export
0x20003110 AIL_set_sample_file re Miles/AIL public export
0x20003240 AIL_set_sample_address re Miles/AIL public export
0x200032F0 AIL_set_sample_type re Miles/AIL public export
0x200033A0 AIL_start_sample re Miles/AIL public export
0x20003450 AIL_stop_sample re Miles/AIL public export
0x20003500 AIL_resume_sample re Miles/AIL public export
0x200035B0 AIL_end_sample re Miles/AIL public export
0x20003660 AIL_set_sample_playback_rate re Miles/AIL public export
0x20003710 AIL_set_sample_volume re Miles/AIL public export
0x200037C0 AIL_set_sample_pan re Miles/AIL public export
0x20003870 AIL_set_sample_loop_count re Miles/AIL public export
0x20003920 AIL_set_sample_loop_block re Miles/AIL public export
0x200039D0 AIL_sample_status re Miles/AIL public export
0x20003AF0 AIL_sample_playback_rate re Miles/AIL public export
0x20003C10 AIL_sample_volume re Miles/AIL public export
0x20003D30 AIL_sample_pan re Miles/AIL public export
0x20003E50 AIL_sample_loop_count re Miles/AIL public export
0x20003F70 AIL_set_digital_master_volume re Miles/AIL public export
0x20004020 AIL_digital_master_volume re Miles/AIL public export
0x20004140 AIL_minimum_sample_buffer_size re Miles/AIL public export
0x20004280 AIL_sample_buffer_ready re Miles/AIL public export
0x200043A0 AIL_load_sample_buffer re Miles/AIL public export
0x20004460 AIL_sample_buffer_info re Miles/AIL public export
0x200045B0 AIL_set_sample_position re Miles/AIL public export
0x20004660 AIL_sample_position re Miles/AIL public export
0x20004780 AIL_register_SOB_callback re Miles/AIL public export
0x200048B0 AIL_register_EOB_callback re Miles/AIL public export
0x200049E0 AIL_register_EOS_callback re Miles/AIL public export
0x20004B10 AIL_register_EOF_callback re Miles/AIL public export
0x20004C30 AIL_set_sample_user_data re Miles/AIL public export
0x20004CE0 AIL_sample_user_data re Miles/AIL public export
0x20004E10 AIL_active_sample_count re Miles/AIL public export
0x20004F30 AIL_digital_configuration re Miles/AIL public export
0x20004FF0 AIL_set_direct_buffer_control re Miles/AIL public export
0x20005110 AIL_get_DirectSound_info re Miles/AIL public export
0x200051A0 AIL_midiOutOpen re Miles/AIL public export
0x200052D0 AIL_midiOutClose re Miles/AIL public export
0x20005360 AIL_allocate_sequence_handle re Miles/AIL public export
0x20005470 AIL_release_sequence_handle re Miles/AIL public export
0x20005500 AIL_init_sequence re Miles/AIL public export
0x20005630 AIL_start_sequence re Miles/AIL public export
0x200056C0 AIL_stop_sequence re Miles/AIL public export
0x20005750 AIL_resume_sequence re Miles/AIL public export
0x200057E0 AIL_end_sequence re Miles/AIL public export
0x20005870 AIL_set_sequence_tempo re Miles/AIL public export
0x20005910 AIL_set_sequence_volume re Miles/AIL public export
0x200059B0 AIL_set_sequence_loop_count re Miles/AIL public export
0x20005A50 AIL_sequence_status re Miles/AIL public export
0x20005B60 AIL_sequence_tempo re Miles/AIL public export
0x20005C70 AIL_sequence_volume re Miles/AIL public export
0x20005D80 AIL_sequence_loop_count re Miles/AIL public export
0x20005E90 AIL_set_XMIDI_master_volume re Miles/AIL public export
0x20005F30 AIL_XMIDI_master_volume re Miles/AIL public export
0x20006040 AIL_active_sequence_count re Miles/AIL public export
0x20006150 AIL_controller_value re Miles/AIL public export
0x20006280 AIL_channel_notes re Miles/AIL public export
0x200063A0 AIL_sequence_position re Miles/AIL public export
0x200064C0 AIL_branch_index re Miles/AIL public export
0x20006560 AIL_register_prefix_callback re Miles/AIL public export
0x20006680 AIL_register_trigger_callback re Miles/AIL public export
0x200067A0 AIL_register_sequence_callback re Miles/AIL public export
0x200068C0 AIL_register_beat_callback re Miles/AIL public export
0x200069E0 AIL_register_event_callback re Miles/AIL public export
0x20006B00 AIL_register_timbre_callback re Miles/AIL public export
0x20006C20 AIL_set_sequence_user_data re Miles/AIL public export
0x20006CC0 AIL_sequence_user_data re Miles/AIL public export
0x20006DE0 AIL_register_ICA_array re Miles/AIL public export
0x20006E80 AIL_lock_channel re Miles/AIL public export
0x20006F90 AIL_release_channel re Miles/AIL public export
0x20007030 AIL_map_sequence_channel re Miles/AIL public export
0x200070D0 AIL_true_sequence_channel re Miles/AIL public export
0x200071F0 AIL_send_channel_voice_message re Miles/AIL public export
0x200072B0 AIL_send_sysex_message re Miles/AIL public export
0x20007350 AIL_create_wave_synthesizer re Miles/AIL public export
0x20007480 AIL_destroy_wave_synthesizer re Miles/AIL public export
0x20007510 FILE_error re Miles/AIL public export
0x20007610 FILE_size re Miles/AIL public export
0x20007720 FILE_read re Miles/AIL public export
0x20007840 FILE_write re Miles/AIL public export
0x20007970 AIL_serve re Miles/AIL public export
0x200079F0 AIL_redbook_open re Miles/AIL public export
0x20007B00 AIL_redbook_close re Miles/AIL public export
0x20007B90 AIL_redbook_eject re Miles/AIL public export
0x20007C20 AIL_redbook_status re Miles/AIL public export
0x20007D30 AIL_redbook_tracks re Miles/AIL public export
0x20007E40 AIL_redbook_track_info re Miles/AIL public export
0x20007EF0 AIL_redbook_id re Miles/AIL public export
0x20008000 AIL_redbook_position re Miles/AIL public export
0x20008110 AIL_redbook_play re Miles/AIL public export
0x20008240 AIL_redbook_stop re Miles/AIL public export
0x20008350 AIL_redbook_pause re Miles/AIL public export
0x20008460 AIL_redbook_resume re Miles/AIL public export
0x20008570 AIL_quick_startup re Miles/AIL public export
0x200086B0 AIL_quick_shutdown re Miles/AIL public export
0x20008730 AIL_quick_load re Miles/AIL public export
0x20008840 AIL_quick_unload re Miles/AIL public export
0x200088D0 AIL_quick_play re Miles/AIL public export
0x200089F0 AIL_quick_halt re Miles/AIL public export
0x20008A80 AIL_quick_status re Miles/AIL public export
0x20008B90 AIL_quick_load_and_play re Miles/AIL public export

Binary: IP.EXE

IP.EXE — EA system-info & tech-support tool (MFC)

ip.csv · page — 5 named functions

VA Symbol Src Role
0x004019B0 CDROMBenchmark re CD-ROM speed/transfer benchmark ("Benchmarking CD-ROM Drive", Single/Double/Quad-Speed, KB/s); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00403FE0 LaunchSystemProperties re ShellExecute sysdm.cpl (Windows System control panel); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00404061 LoadDetectionDlls re LoadLibrary hdd.dll + cd.dll (hardware-detection helper libraries); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x0040DC60 BuildSupportReport re builds the [CPU]/[VIDEO]/[SOUND]/[MODEM] system-config report and faxes/e-mails it to EA support (support@ea.com); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x00436EF0 WinMain re MFC AfxWinMain wrapper (Ghidra FID)

Binary: CDRVDL32.DLL

CDRVDL32.DLL — Cdrv RS-232 serial comms driver

comms-dl.csv · page — 26 named functions

VA Symbol Src Role
0x100019D0 ser_rs232_block re Cdrv comms driver (RS-232 serial) public export
0x100019E0 ser_rs232_cleanup re Cdrv comms driver (RS-232 serial) public export
0x10001A90 ser_rs232_dtr_off re Cdrv comms driver (RS-232 serial) public export
0x10001AE0 ser_rs232_dtr_on re Cdrv comms driver (RS-232 serial) public export
0x10001B30 ser_rs232_flush re Cdrv comms driver (RS-232 serial) public export
0x10001C50 ser_rs232_getbyte re Cdrv comms driver (RS-232 serial) public export
0x10001D20 ser_rs232_getpacket re Cdrv comms driver (RS-232 serial) public export
0x10001DF0 ser_rs232_getport re Cdrv comms driver (RS-232 serial) public export
0x10001E50 ser_rs232_getregister re Cdrv comms driver (RS-232 serial) public export
0x10001EB0 ser_rs232_getstatus re Cdrv comms driver (RS-232 serial) public export
0x10001F00 ser_rs232_maxport re Cdrv comms driver (RS-232 serial) public export; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10001F10 ser_rs232_putbyte re Cdrv comms driver (RS-232 serial) public export
0x10001FE0 ser_rs232_putpacket re Cdrv comms driver (RS-232 serial) public export
0x100020B0 ser_rs232_putregister re Cdrv comms driver (RS-232 serial) public export
0x100020C0 ser_rs232_rts_off re Cdrv comms driver (RS-232 serial) public export
0x10002110 ser_rs232_rts_on re Cdrv comms driver (RS-232 serial) public export
0x10002160 ser_rs232_set_intfunc re Cdrv comms driver (RS-232 serial) public export
0x100021D0 ser_rs232_misc_func re Cdrv comms driver (RS-232 serial) public export
0x10002420 ser_rs232_setbauddiv re Cdrv comms driver (RS-232 serial) public export
0x10002450 ser_rs232_setup re Cdrv comms driver (RS-232 serial) public export
0x10002B10 ser_rs232_viewpacket re Cdrv comms driver (RS-232 serial) public export
0x10002B80 ser_rs232_get_sdata re Cdrv comms driver (RS-232 serial) public export; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10002BC0 bio_set_timer re Cdrv comms driver (RS-232 serial) public export
0x10002BE0 bio_get_elapsedtime re Cdrv comms driver (RS-232 serial) public export
0x10002C10 bio_get_timer re Cdrv comms driver (RS-232 serial) public export
0x10002C40 bio_set_timerresolution re Cdrv comms driver (RS-232 serial) public export

Binary: CDRVHF32.DLL

CDRVHF32.DLL — Cdrv Hayes-modem comms driver

comms-hf.csv · page — 75 named functions

VA Symbol Src Role
0x10001000 InitializePort re Cdrv comms driver (Hayes modem) public export
0x100013D0 SetBaud re Cdrv comms driver (Hayes modem) public export
0x10001430 SetFlowControlCharacters re Cdrv comms driver (Hayes modem) public export
0x100014B0 SetFlowControlThreshold re Cdrv comms driver (Hayes modem) public export
0x10001510 SetPortCharacteristics re Cdrv comms driver (Hayes modem) public export
0x100015A0 UnInitializePort re Cdrv comms driver (Hayes modem) public export
0x10001640 SetSpecialBehavior re Cdrv comms driver (Hayes modem) public export
0x10001720 Dial re Cdrv comms driver (Hayes modem) public export
0x10001880 ModemAnswerMode re Cdrv comms driver (Hayes modem) public export
0x10001950 ModemAttention re Cdrv comms driver (Hayes modem) public export
0x10001A70 ModemConnect re Cdrv comms driver (Hayes modem) public export
0x10001C20 ModemGetCarrierSpeed re Cdrv comms driver (Hayes modem) public export
0x10001C50 ModemGetConnectSpeed re Cdrv comms driver (Hayes modem) public export
0x10001C80 ModemHangup re Cdrv comms driver (Hayes modem) public export
0x10001D30 ModemInit re Cdrv comms driver (Hayes modem) public export
0x10001DE0 ModemModifyString re Cdrv comms driver (Hayes modem) public export
0x10001F40 ModemModifyValue re Cdrv comms driver (Hayes modem) public export
0x10002010 SendBreak re Cdrv comms driver (Hayes modem) public export
0x10002090 ModemWaitForCall re Cdrv comms driver (Hayes modem) public export
0x10002270 GetByte re Cdrv comms driver (Hayes modem) public export
0x100022F0 GetPacket re Cdrv comms driver (Hayes modem) public export
0x100023A0 GetString re Cdrv comms driver (Hayes modem) public export
0x100024C0 PeekChar re Cdrv comms driver (Hayes modem) public export
0x10002540 PutByte re Cdrv comms driver (Hayes modem) public export
0x100025C0 PutPacket re Cdrv comms driver (Hayes modem) public export
0x100026B0 PutString re Cdrv comms driver (Hayes modem) public export
0x100026E0 BytesInReceiveBuffer re Cdrv comms driver (Hayes modem) public export
0x10002700 BytesInTransmitBuffer re Cdrv comms driver (Hayes modem) public export
0x10002720 FlushReceiveBuffer re Cdrv comms driver (Hayes modem) public export
0x10002740 FlushTransmitBuffer re Cdrv comms driver (Hayes modem) public export
0x10002760 ReceiveBufferSize re Cdrv comms driver (Hayes modem) public export
0x10002780 SpaceInReceiveBuffer re Cdrv comms driver (Hayes modem) public export
0x100027B0 SpaceInTransmitBuffer re Cdrv comms driver (Hayes modem) public export
0x100027E0 SpaceTransmitBuffer re Cdrv comms driver (Hayes modem) public export
0x100027F0 TransmitBufferSize re Cdrv comms driver (Hayes modem) public export
0x10002810 WaitForPeekTableFixed re Cdrv comms driver (Hayes modem) public export
0x10002970 WaitForPeekFixed re Cdrv comms driver (Hayes modem) public export
0x100029C0 WaitForTableFixed re Cdrv comms driver (Hayes modem) public export
0x10002C10 WaitForFixed re Cdrv comms driver (Hayes modem) public export
0x10002C60 WaitForPeekTable re Cdrv comms driver (Hayes modem) public export
0x10002DB0 WaitForPeek re Cdrv comms driver (Hayes modem) public export
0x10002DF0 WaitForTable re Cdrv comms driver (Hayes modem) public export
0x10003010 WaitFor re Cdrv comms driver (Hayes modem) public export
0x10003050 CdrvCrc16 re Cdrv comms driver (Hayes modem) public export
0x100030A0 CdrvCrc32 re Cdrv comms driver (Hayes modem) public export
0x100030E0 DtrOff re Cdrv comms driver (Hayes modem) public export
0x10003100 DtrOn re Cdrv comms driver (Hayes modem) public export
0x10003120 RtsOff re Cdrv comms driver (Hayes modem) public export
0x10003140 RtsOn re Cdrv comms driver (Hayes modem) public export
0x10003160 CdrvGetPcb re Cdrv comms driver (Hayes modem) public export
0x10003180 CdrvCheckTime re Cdrv comms driver (Hayes modem) public export
0x10003240 CdrvDelay re Cdrv comms driver (Hayes modem) public export
0x10003270 CdrvReturnStringAddress re Cdrv comms driver (Hayes modem) public export
0x10003280 CdrvSetTime re Cdrv comms driver (Hayes modem) public export
0x100032D0 CdrvSetTimeoutFunction re Cdrv comms driver (Hayes modem) public export
0x10003300 CdrvSetTimerResolution re Cdrv comms driver (Hayes modem) public export
0x10003320 GetPaceTime re Cdrv comms driver (Hayes modem) public export
0x10003350 GetTimeout re Cdrv comms driver (Hayes modem) public export
0x10003380 SetPaceTime re Cdrv comms driver (Hayes modem) public export
0x100033B0 SetTimeout re Cdrv comms driver (Hayes modem) public export
0x100033E0 DataStreamGetPacket re Cdrv comms driver (Hayes modem) public export
0x10003430 DataStreamGetByte re Cdrv comms driver (Hayes modem) public export
0x10003480 SetDataStreamFunction re Cdrv comms driver (Hayes modem) public export
0x100034B0 IsBreak re Cdrv comms driver (Hayes modem) public export
0x100034F0 IsCarrierDetect re Cdrv comms driver (Hayes modem) public export
0x10003520 IsCts re Cdrv comms driver (Hayes modem) public export
0x10003550 IsDsr re Cdrv comms driver (Hayes modem) public export
0x10003580 IsFramingError re Cdrv comms driver (Hayes modem) public export
0x100035C0 IsInputOverrun re Cdrv comms driver (Hayes modem) public export
0x10003600 IsOverrunError re Cdrv comms driver (Hayes modem) public export
0x10003640 IsParityError re Cdrv comms driver (Hayes modem) public export
0x10003680 IsPortAvailable re Cdrv comms driver (Hayes modem) public export
0x100036A0 IsReceiveBufferEmpty re Cdrv comms driver (Hayes modem) public export
0x100036C0 IsRing re Cdrv comms driver (Hayes modem) public export
0x10003700 IsTransmitBufferEmpty re Cdrv comms driver (Hayes modem) public export

Binary: CDRVXF32.DLL

CDRVXF32.DLL — Cdrv file-transfer comms driver

comms-xf.csv · page — 33 named functions

VA Symbol Src Role
0x10002410 CdrvXferCreateDialog re Cdrv comms driver (file transfer) public export
0x10002580 CdrvXferUpdateDialog re Cdrv comms driver (file transfer) public export
0x100026A0 CdrvXferDestroyDialog re Cdrv comms driver (file transfer) public export
0x10002A90 cdrvxfer_files re Cdrv comms driver (file transfer) public export
0x10002AC0 cdrvxfer_sfiles re Cdrv comms driver (file transfer) public export
0x10002AF0 FileTransferDialog re Cdrv comms driver (file transfer) public export
0x10003080 cdrvxfer_gclose re Cdrv comms driver (file transfer) public export
0x100033E0 cdrvxfer_getfiles re Cdrv comms driver (file transfer) public export
0x10003410 cdrvxfer_sendfiles re Cdrv comms driver (file transfer) public export
0x10003440 SetXferParameters re Cdrv comms driver (file transfer) public export
0x10003500 TransferFiles re Cdrv comms driver (file transfer) public export
0x100058B0 dos_close re Cdrv comms driver (file transfer) public export
0x100058D0 dos_commit re Cdrv comms driver (file transfer) public export
0x100058F0 dos_create re Cdrv comms driver (file transfer) public export
0x10005960 dos_createdir re Cdrv comms driver (file transfer) public export
0x10005980 dos_delete re Cdrv comms driver (file transfer) public export
0x100059A0 dos_deletedir re Cdrv comms driver (file transfer) public export
0x100059C0 dos_getdate re Cdrv comms driver (file transfer) public export
0x10005A10 dos_getdir re Cdrv comms driver (file transfer) public export
0x10005A80 dos_getfdate re Cdrv comms driver (file transfer) public export
0x10005AD0 dos_getfileattribute re Cdrv comms driver (file transfer) public export
0x10005B20 dos_getfiledatetime re Cdrv comms driver (file transfer) public export
0x10005BC0 dos_getfirstfile re Cdrv comms driver (file transfer) public export
0x10005C70 dos_getnextfile re Cdrv comms driver (file transfer) public export
0x10005DA0 dos_gettime re Cdrv comms driver (file transfer) public export; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10005E00 dos_open re Cdrv comms driver (file transfer) public export
0x10005EA0 dos_read re Cdrv comms driver (file transfer) public export
0x10005EE0 dos_rename re Cdrv comms driver (file transfer) public export
0x10005F00 dos_seek re Cdrv comms driver (file transfer) public export
0x10005F40 dos_setfdate re Cdrv comms driver (file transfer) public export
0x10005F90 dos_setfileattribute re Cdrv comms driver (file transfer) public export
0x10005FE0 dos_setfiledatetime re Cdrv comms driver (file transfer) public export
0x10006070 dos_write re Cdrv comms driver (file transfer) public export

Binary: COMMSC32.DLL

COMMSC32.DLL — Cdrv comms terminal-screen service

comms-sc.csv · page — 8 named functions

VA Symbol Src Role
0x100011F0 commdrvw_char_screen re Cdrv comms service (terminal screen) public export
0x10001990 CdrvScrDestroy re Cdrv comms service (terminal screen) public export
0x100019B0 CdrvScrCreate re Cdrv comms service (terminal screen) public export
0x100019D0 CdrvScrResize re Cdrv comms service (terminal screen) public export
0x100019F0 CdrvScrWrite re Cdrv comms service (terminal screen) public export
0x10001A10 CdrvScrKillFocus re Cdrv comms service (terminal screen) public export
0x10001A30 CdrvScrSetFocus re Cdrv comms service (terminal screen) public export
0x10001A50 CdrvScrPaint re Cdrv comms service (terminal screen) public export

Binary: MSAPI.DLL

Matchmaking / internet-play client (MSAPI)

msapi.csv · page — 25 named functions

VA Symbol Src Role
0x100011E0 connectMS re Export ord2: read Server IP/Server Port from the registry (SOFTWARE...\Matchmaker via ms_reg_open/select/read) or a default source; socket(AF_INET,SOCK_STREAM)+connect() into ms_socket; then send 'WAKEUP' (6B) and expect 'OK'. Codes: 1=OK, 0x3E8=socket() failed, 0x3E9=handshake rejected, 0x3EA=connect error, 0x3EB=proto.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10001670 initializeMS re Export ord7: registration handshake — send record size (u32) + 'u' + player record, call ms_upload_init_arrays ('i'), then register the volume serial (GetVolumeInformation, '%d'-formatted); expect 'OK'. Creates the receive worker (ms_recv_thread, CREATE_SUSPENDED).; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10001A20 ms_upload_init_arrays re Opcode 'i' (@0x1001D0FC): upload the init record as two groups of three u32 arrays, each u32-length-prefixed (ms_send_u32) and htonl-byteswapped. Part of the initializeMS handshake.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10001D20 loginMShost re Export ord9: opcode 'h' — login as game host; stores host cookie (ms_host_cookie) and ResumeThread on ms_recv_thread.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10001D80 loginMSPlayer re Export ord8: opcode 'p' — login as player; SuspendThread on ms_recv_thread and clear ms_host_cookie.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10001DE0 requestMSgame re Export ord10: opcode 'r' — request game list; reads 'P'-prefixed records (ms_recv_u32 length, then payload) into the 0x24-byte linked-list nodes at ms_game_list_head (+0x10 len, +0x14 payload, +0x1C next, +0x20 head); returns 5-dword header + payload to caller.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10002030 selectMSgame re Export ord12: opcode 's' — select game by id (rec+0x10, ms_send_u32); expect 'O'.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x100020C0 deselectMSgame re Export ord3: opcode 'd' — deselect game by id (rec+0x10).; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10002120 resetMSfilter re Export ord11: opcode 't' — reset game-list filter/cursor; clears ms_game_count/ms_game_selected, sets ms_list_dirty.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10002170 updateMSgame re Export ord14: opcode 'u' — upload/update the player-or-game record (ms_record_size bytes).; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x100021D0 fetchMSgame re Export ord4: opcode 'f' — fetch one game record by id; reads a 'P' payload of ms_record_size bytes.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10002280 sendMSresults re Export ord13: opcode 'v' — send mission-results blob (ms_send_u32 length + data); expect 'O'.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10002330 getMSdatafilesize re Export ord6: opcode 'z' — query server data-file size by name; reads a u32 size; 0xFFFFFFFF => not found (0x3F3); expect 'O'.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10002440 getMSdatafile re Export ord5: opcode 'x' — download server data-file by name into a buffer; client acks 'O', expects 'K'.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10002570 closeMS re Export ord1: opcode 'l' — quit/logout; closesocket(ms_socket); free the game list + DeleteCriticalSection; clear ms_running.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10002630 ms_recv_all re recv() exactly N bytes in a loop ('Read Packet Error - Correcting...' on short read).; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10002680 ms_send_all re send() exactly N bytes in a loop ('Send Packet Error - Correcting...' on short write).
0x100026D0 ms_recv_u32 re recv 4 bytes then ntohl -> host u32 (network-order length prefix).
0x10002700 ms_send_u32 re htonl then send 4 bytes (network-order length prefix).
0x10002730 ms_disconnect re Receive-worker teardown: send 'l' quit opcode, closesocket, free game list + critical section.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10002800 ms_reg_open re Registry-cache ctor: RegCreateKeyExA the HKLM SOFTWARE... base keys (this+0x308/0x30C/0x310) for the Server IP/Port + data-file cache.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10002950 ms_reg_close re Registry-cache dtor: RegFlushKey + RegCloseKey the open keys.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x100029A0 ms_reg_select_subkey re Registry-cache: RegCreateKeyExA a named subkey (e.g. 'Matchmaker') into this+0x314.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x10002A00 ms_reg_read_value re Registry-cache: RegQueryValueExA a named value into a buffer; if missing and a default is given, RegSetValueExA writes it (get-or-create). Used for 'Server IP'/'Server Port'.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand
0x100034D0 ms_atoi re Decimal-string-to-int (thin wrapper over FUN_10003430); parses the registry port string in connectMS.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand

Format Loaders and Parsers

Cross-reference of symbols that directly load, initialize, or parse named file formats.

LIB Archive (EALIB)

Address Symbol Role
0x47A090 LibSeek(…) Seek within open LIB entry
0x47A130 LibFileExists(…) Test for named entry
0x479BD0 LibOpen(…) Open a named LIB entry
0x479C80 LibRead Read bytes from open entry
0x479D20 LibClose Close entry handle
0x479D40 LibFileSize Query entry size
0x479630 DoLoadLibFile Internal LIB decompression dispatch
0x47A5A0 InitGraphicsMode Sets up graphics mode post-LIB init
0x47BC40 LibStartUp Initialize LIB subsystem
0x4792D0 LibShutDown Shutdown LIB subsystem
0x479350 LibUpdate Periodic LIB maintenance

Overlay DLL (.LAY, .HUD, .FNT, .CAM, .MUS, .BI, .MC)

Address Symbol Role
0x41E8F0 IsBrentDLL(void*) Detect Phar Lap PL\0\0 signature
0x41E910 IsDLL(…) Generic DLL validity check
0x41EB60 LoadDLL(…) Load and IAT-patch an overlay DLL
0x41F240 LoadBrentDLL(…) Load Phar Lap PE overlay (CAM/BI/MC)
0x4B4370 WRInit(…) Load .LAY file via LoadLibrary + IAT patch
0x4A6E50 LoadPIC Load .PIC bitmap (also via LIB)
0x4A7220 SetupPT Init .PT (playable aircraft BRF type)
0x4A6EB0 SetupOT Init .OT (static object BRF type)
0x4A7200 SetupNT Init .NT (NPC/vehicle BRF type)
0x4A7230 SetupJT Init .JT (projectile BRF type)

Config / Save (.CFG, .PLT, NET.DAT)

Address Symbol Role
0x47F6D0 CN_SetFactoryDefaults(CN_INFO*) Initialize config struct to defaults
0x47F7A0 CN_ReadConfig(CN_INFO*, unsigned char*) Read EA.CFG into CN_INFO
0x47F930 CN_WriteConfig(CN_INFO*, unsigned char*) Write EA.CFG from CN_INFO
0x47F740 CfigChecksum(CN_INFO*) Verify config checksum
0x4B2930 UCONFIG_load_EA_CFG() High-level EA.CFG load
0x4B2980 UCONFIG_save_EA_CFG() High-level EA.CFG save
0x4B2BD0 UCONFIG_Initialize() Full config system init
0x467180 PilotSave(PILOT*, short) Write .PLT pilot save file

BRF / Object Types (.OT, .NT, .PT, .JT, .GAS, .ECM)

Address Symbol Role
0x41E8F0 IsBrentDLL(void*) Detect BRF magic header
0x4A6EB0 SetupOT Load/init .OT static object
0x4A7200 SetupNT Load/init .NT NPC/vehicle
0x4A7220 SetupPT Load/init .PT playable aircraft
0x4A7230 SetupJT Load/init .JT projectile

Video (.VDO / Cobra codec)

Address Symbol Role
0x4AE440 PlayVDOString(char*, …) Play FMV by filename
0x4AE406 PlayVDOFile(char*, …) Play FMV from open file
0x4AF070 StartVDOAudio(char*) Start audio stream for VDO
0x4AF1B0 OpenVDOFile(char*) Open a .VDO file
0x4AF200 ReadVDOHeader(…) Parse .VDO file header
0x4AF2D0 ReadFrameSizesFile(char*) Read .FBC companion sizes
0x4AF320 ReadVDOPalette(…) Extract palette from VDO header
0x4AF3A0 AllocVDO(VDO*) Allocate VDO playback context
0x4AE4E0 BuildVDOList(char*) Build linked list of VDO files
0x4AED50 VDOSetMode(VDO*) Set video decode mode
0x442360 InitMovieContext(MovieContext*, …) Init Cobra codec context
0x442370 DecodeFrame(MovieContext*, …) Decode one Cobra video frame

Terrain (.T2)

Address Symbol Role
0x4C5D60 T_Init() Initialize terrain database
0x4C5D70 T_Load(…) Load .T2 terrain file
0x4C5D50 T_ShutdownDatabase() / T_Init2() / T_Shutdown() Lifecycle
0x4AA620 T_InitDictionary() Set up terrain tile dictionary
0x4AA680 T_InitDictionaryEntry(…) Add .T2 tile entry
0x4AA7E0 T_CompareTlist(…) / T_SortTmapList() Sort terrain tmap list
0x4C6040 T_GetLeaf(…) Get terrain leaf node at position

Music / Sequencer (.MUS, .XMI)

Address Symbol Role
0x432920 InitMusic() / ShutDownMidi() Miles Sound System MIDI init/shutdown
0x4329A0 DMusicOn(char*, float) Load and start .MUS playlist
0x432A90 MusicOn(char*, float) Load and start music by name
0x432B400x432C00 MusicVolume(…) / DMusicOff() / MusicOff() Volume / stop
0x432C30 ScoreOn(void*, char) Start .XMI sequence via AIL
0x446B70 SEQmusic SEQ script music command dispatcher

Sequence Scripts (.SEQ)

Address Symbol Role
0x44F70 SeqInit Initialize sequencer
0x445060 SeqStart Begin SEQ playback
0x445D30 SeqStop Stop SEQ
0x445700 SeqContinue Resume/step SEQ
0x446C70 SEQsound / SEQsndoff SEQ audio commands
0x446A50 SEQfont SEQ font command
0x446BE0 SEQpalette SEQ palette command
0x447090 SEQvideo SEQ video command
0x4454D0 SeqSubstitute(…) Variable substitution in SEQ text

Mission Map (.MM)

Address Symbol Role
0x47A130 LibFileExists(…) Asset-existence test used during MM load (LIB membership, then loose files by extension — see memory-resource.md)
0x4B4370 WRInit(…) Dispatcher for .LAY lines in .MM
0x4A7D70 T_ImmediateVisibility(…) Terrain visibility update from MM

Modem DB / Serial config

Address Symbol Role
0x4B9BA0 ReadModemDB() Read modem database file
0x4B9BD6 WriteModemEntry(…) Write modem entry to file
0x4B9DC0 SelectModemFromDB(CN_INFO*) Select modem from parsed DB
0x4B9BF0 WriteModemFile(CN_INFO*) Write modem config file

Generated from FA.SMS (3,829 symbols). Addresses are virtual addresses in the game executable's address space (ImageBase 0x00400000).