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 — 107 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
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
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
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
0x00402330 NETArmKeepalive re arm socket send timer (state+8 = timerTicks+0x400; state+4 = 4 unless already ready). Body @0x402330
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
0x00405360 NETWaitMasterScreen re slave: spin polling MPReceive/MPCheckDisconnect while _masterNextScreen==-1, then adopt it as _curScreen (thisComputer>0). Body @0x405360
0x004053A0 NETApplyMasterScreen re slave: apply pending _masterNextScreen to _curScreen once (non-blocking). Body @0x4053A0
0x004054F0 netDialogAppIO sms net-config dialog appIO callback: 0x65=CN_NewPrint,0x66/67=info box,0x68=yes/no; else poll key/mouse
0x00405CD0 NETFormatIP re format IP address as '%d.%d.%d.%d' via Sprintf (s__d__d__d__d_004EBCFC). Body @0x405CD0
0x00405D10 ip2long sms parse dotted-quad string -> packed u32 (strchr('.')+atoi x4)
0x00405DF0 RunNetConfigurationScreen sms net config screen entry; calls doConfigurationScreen(1|4)
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
0x0045D580 pkt_sock_send_lost_player sms announce lost player over socket
0x0045D700 pkt_sock_send_error sms send error over socket
0x0045D760 pkt_build_sync_reply sms fill sync-reply header
0x0045D780 pkt_build_play_game sms fill play-game (start) header
0x0045D810 pkt_send_player_info sms send NET_PLAYER_LIST entry
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
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')
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
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
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
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)
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
0x0046FA40 MPAbsToRelTime re encode absolute time to relative packet timestamp (-currentT; skips sentinels). Body @0x46FA40
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
0x0046FF20 MPSendScenarioEndTime re broadcast packet 0x50 (_endScenarioSetTime - _currentTime) via MPEnqueue(-1). Body @0x46FF20
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
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
0x004718F0 MPDrawStatusLine re truncate string to width + G_ColorPrint (MP status/chat draw helper). Body @0x4718F0
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
0x00471FA0 MPAssignPlanePlayers re per-plane helper in MPAssignPlayers: for obj class 4 w/ flag, iterate DAT_00547324 player table. Body @0x471FA0; called from MPAssignPlayers
0x00472130 MPBuildSpawnPayload re apply spawn position offset (+0x3E800/+0x1F400) and build up-to-500-byte payload; called from MPAssignPlayers. Body @0x472130
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
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
0x004874C0 sapopensocket sms SAP open socket - IPX Service Advertising Protocol; name-dispatched (label-only in a clean rebuild)
0x00493780 RunIPXOptionsDialog sms IPX/SPX network options dialog (switch over frame types); label-only in a clean rebuild
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
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
0x00497290 spxbuildaddress sms build a NET_ADDRESS for an SPX peer from NET_PROTOCOL/CN_INFO
0x00499F70 setPacketInfo sms write SERIAL_PACKET type (low2 bits of byte0 | 0xfc) and seq (byte3)
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)
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
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
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
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
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
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
0x004AC480 SER_SendStatus sms send status/ACK packet (type0) carrying last-tx seq + per-player state

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
0x00407930 HUDDrawConfigFlags re stacked gear/flaps/speedbrake/hook annunciators gated by entity config bits (DAT_0050cfef)
0x00407A00 HUDDrawGLoadThrottle re lower data block: G-load, throttle (THR AFT / THR %d%%) and thrust-vector line
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
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)
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)
0x0040A450 HUDSquawk sms
0x0040A530 HUDFindNearest sms
0x0040A6C0 HUDDrawTargetLabels re name tags over visible targets; player's current target in a distinct color
0x0040A7F0 HUDDrawContacts re radar/IR sensor contacts (CPGetContact), SymFont glyph per contact, locked one highlighted
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 — 136 named functions

VA Symbol Src Role
0x0040B8A0 MouseLoadPtr sms load per-screen mouse pointer bitmap (PLANE.C etc.); reads _curScreen/_menuResolution
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
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
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
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
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
0x0040C670 MenuMouseSelect re hit-test mouse over bar entries/items via MouseInBox; update _curMenu/_curSubMenu/_curItem, open/close dropdowns
0x0040C990 MenuDrawDropdown re draw an opened submenu: save background (FUN_0040cea0/cf40), MenuSteelRect frame, item rows
0x0040CB10 MenuClearItemInvert re restore the current item's inverted-highlight brush (pair of FUN_0040cb80); called by MenuCurrentIndex
0x0040CB40 MenuCloseSubMenu re close/restore the open sub-menu highlight; called by MenuCurrentIndex and MenuMouseSelect
0x0040CB80 MenuInvertItem re toggle the highlight brush over _curItem (invertItemBrush: AllocBitmap+BlitToBrush+URect2, or blit back+free)
0x0040CC50 MenuInvertSubItem re toggle the highlight brush over _curSubItem (invertSubItem)
0x0040CD20 MenuInvertBar re toggle the highlight brush over the _curMenu bar entry (invertMenuBrush)
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
0x0040CE70 EnableItem sms enable a menu item by index
0x0040CE80 DisableItem sms disable/dim a menu item by index
0x0040CEA0 MenuSaveBackground re save the screen region under a submenu into menuSaveBrush (+shadowWidth/Height margin)
0x0040CF00 MenuRestoreBackground re blit menuSaveBrush back to screen and free it
0x0040CF40 MenuSaveBackground2 re second save-background path (item flag==0 branch of MenuDrawDropdown); pairs with FUN_0040cfa0
0x0040CFA0 MenuRestoreBackground2 re restore pair for FUN_0040cf40
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
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)
0x0047F0B0 InTextButton sms hit-test mouse against the _buttonBoxes[_lastButton] MNU text-button array; in campaign seed range
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
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)
0x00488F30 DialogHelper488f30 re small dialog helper (31 B); role not confirmed
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
0x00489400 DialogSetRocker sms set a rocker control's state
0x00489430 DialogSetValue sms set a control's value
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
0x004896A0 DialogGetString sms read an edit box's text buffer
0x00489710 TopCenterDialog sms center dialog: x=(sw-w)/2, y=(sh-h)/3
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
0x00489AC0 DrawText sms type-9 static text renderer (DLG.md field layout)
0x00489B90 DrawAction sms type-0 clickable action-button renderer (DLG.md field layout)
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
0x0048A4C0 DrawDial sms rotary dial control renderer
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
0x0048A910 DrawFormattedText sms type-9 variant multi-line/paged text renderer (DLG.md)
0x0048A9F0 DrawMissList sms single-mission list renderer
0x0048ADE0 DrawListBox sms generic scrollable list-box renderer
0x0048B320 DrawCheck sms checkbox renderer (type 3)
0x0048B450 DialogRockerRepeat re rocker auto-repeat: reset rockerTicks/rockerLastTicks, step _activeRocker parent (+0x22) by +0x16
0x0048B4E0 DrawRocker sms type-6 rocker/toggle renderer (two hit halves)
0x0048B8B0 DialogHelper48b8b0 re rocker/slider draw helper (62 B)
0x0048B8F0 DialogHelper48b8f0 re rocker/slider draw helper (62 B)
0x0048B930 DrawToggle sms two-state toggle renderer (type 8)
0x0048BAD0 DrawSliderHoriz sms horizontal slider renderer
0x0048BBE0 DialogHelper48bbe0 re small slider helper (31 B)
0x0048BC00 DialogHelper48bc00 re slider helper (96 B)
0x0048BC60 DrawSliderVert sms vertical slider renderer
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)
0x0048BF50 DialogHelper48bf50 re edit-box helper (66 B)
0x0048BFA0 DialogDrawEditCaret re draw the blinking text caret (G_Vline) at _cursorAt within the focused edit box; _selectEnd gate
0x0048C040 DialogEditKey re edit-box keystroke handler (1220 B; char insert/delete/cursor)
0x0048C510 DialogHelper48c510 re edit helper (94 B)
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)
0x0048C800 DrawText320 sms 320x200 static text renderer
0x0048C8A0 DrawCheck320 sms 320x200 checkbox renderer
0x0048C970 DrawDial320 sms 320x200 dial renderer
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
0x0048CF10 SliderVert320 sms 320 vertical slider renderer
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)
0x0048D1E0 DialogTextStreamRead re text-stream read callback: FUN_00486f20 decode into 0x1000 buffer; sets state 0x29/0x74
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
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

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
0x0040D810 VIEWFromObject re position the view from the tracked object (_objPtrs[view+0x1C]) and its state
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)
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)
0x0040E450 VIEWFree re free the view's allocated buffer (_MMFreePtr on +0x60)
0x0040E470 VIEWSnapshot re copy the 0x30-dword view state block (snapshot/restore helper)
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
0x0040EBA0 VIEWReplayPlayback re replay playback: when replay-active copy the 0x30-dword saved-view buffer (DAT_00522400) into the view
0x0040EBC0 VIEWBuild re build the external/spot view for the given mode (the view builder VIEWApplyMode calls)
0x0040F230 VIEWModeLookup re scan the view-mode table at DAT_004EC420
0x0040F270 VIEWScaleClamp re clamp/scale helper for the view field-of-view or zoom
0x0040F2D0 VIEWSlewIntegrate re frame-rate-scaled slew integration (_LMultDiv256 by _systemFrameTicks)
0x0040F590 VIEWChangeObj sms switch the view to a different tracked object
0x0040F5D0 VIEWCanSeeTarget re visibility/padlock check (_WRCanSee) gated on a _gamePrefs bit

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

campaign.csv · page — 125 named functions

VA Symbol Src Role
0x00421D40 ZONEActive re zone active-window test: currentTime within [start,end] (param[7],param[8]); gate for ZONEUpdate
0x00421DE0 ZONEServiceRange re per-zone service worker (variant of _ZONEUpdate@0 over a range); fires _PROJAdd/_PROJHit/_GRAPHICAddExp on schedule using _Rand/_Percent
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
0x00422230 MAPAdjustObjAlt re raise current object altitude (DAT_0050ce95) to terrain via _T_Info; helper of @MAPObjAlts@4
0x00422350 MAPMarkDirty re clear DAT_00536720 hover, set DAT_00536518 redraw flag
0x004224B3 MAPScreenToWorld re inverse of _MAPWorldToScreen: screen point * _mapScale + _worldCenter
0x0042256A MAPLoadBG re load theater map background bitmap via _RMAccessHandle into DAT_004f0564 (alloc-id 7)
0x004225D4 MAPRefreshBG re reload map BG if theater name (_th+0x54) changed; recomputes map extents DAT_00536418.._00536430
0x00422667 MAPFreeBG re free the map background handle DAT_004f0564
0x004226CB MAPSetObjWP re set an object's active waypoint pointer (+0xe4); helper of @MAPUpdateWPPtrs@8
0x004226EE MAPSetFormationWP re set new WP for an object plus its wing (_WNGPart) and group (_GRPPart) members
0x00422828 MAPClearSelection re clear map selection state: DAT_00536500 obj / _00536514 wp / _00536530 special / _005363e8 mode
0x00422840 MAPClearHover re 17-byte map-state setter (clears hover/redraw); role low-confidence, revisit
0x0042297E MAPAddSpecial re allocate a 0x3a-byte 'special' map marker into the _specials/DAT_0053665c table
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
0x00423ED4 MAPRebuildWPLoop re recompute a waypoint loop back-pointer after edit (uses MAPWPListBounds + MAPWPOwnerIndex)
0x00423F30 MAPStoreLeafTmap re write selected tmap id+rotation into _tlist at current leaf coords; _T_SortTmapList
0x00423F90 MAPFindLeafTmap re linear search _tlist[_tlistSize] for the entry at (x&0xfffc,y&0xfffc)
0x00423FD0 MAPReadLeafTmap re read tmap id/rot at current leaf coords into DAT_00536724/_0053652c
0x00424040 MAPSetLeafTmapPic re load '%s%d.PIC' tmap thumbnail via _RMAccess for the selected leaf
0x004240D0 MAPEditTmapDialog re mc_name dialog: prompt for a tmap index, then apply via MAPStoreLeafTmap
0x004241A0 MAPReadLeafTmap2 re duplicate of MAPReadLeafTmap (separate call site)
0x004241D0 MAPSelWPIsPlayers re true if the selected waypoint (DAT_00536514) belongs to the player's wing
0x00424220 MAPObjInPlayerWing re true if object id shares the player's wing (_WNGPart of _playerId)
0x00424290 MAPSpecialSelectable re returns 0 in this build (special markers not directly selectable)
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
0x00424DE0 MAPSetWPTargetPos re copy a waypoint target's world position (_WPTarget) onto an object
0x00424E60 MAPClaimObjControl re set current object owner byte DAT_0050ce90 = _thisComputer|0x80 (mark human-controlled)
0x00424EC0 MAPSetObjWPFlags re set object's waypoint-capable flag (bit2 of +1) from class (5/7, or 3 with a group)
0x00424F20 MAPStatusText re set the map help/status line text (DAT_005365a8) and render it via _PrepareText
0x00424FA3 MAPWPOwnerIndex re return the object index that owns a given waypoint pointer
0x00425023 MAPSnapWPToStrip re snap a waypoint onto the nearest airstrip (_APNearest)
0x00425072 MAPWPNearStrip re test whether a point is near an airstrip (_APNearest)
0x00425096 MAPScreenSpan re compute world-space span of the current map viewport (two MAPScreenToWorld corners)
0x004250CE MAPPickObjIcon re hit-test object icons at a screen point (12x10 px box), honoring MAPObjVisible
0x00425196 MAPObjVisible re object map-visibility/side filter using view mask _DAT_00536628 and side flags
0x00425249 MAPPickWPIcon re hit-test waypoint icons at a screen point
0x0042532A MAPSwapPalette re swap map palette DAT_00536590 <-> _curPalette (enter/leave map draw)
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
0x00425948 MAPDrawRuler re draw the map scale ruler bar
0x00425A8F MAPIconRadius re compute on-screen icon radius from current map scale
0x00425ACD MAPDrawEra re draw 'Historical Era' year range text (non-campaign multiplayer maps)
0x00425B8B MAPSyncSliders re sync dialog X/Y sliders (items 4,3) to current _worldCenter/DAT_00536528
0x00425C0A MAPRedrawSelection re redraw highlight when the selected object changes
0x00425C77 MAPDrawObjIcon re draw one object's map icon: side color ring, type glyph (mcicons.PIC), padlock/target markers, label
0x00426277 MAPDrawTargetLink re draw the dashed target link line from an object to its target
0x004262DE MAPDrawAllPaths re iterate visible objects and draw each waypoint path
0x00426325 MAPDrawObjPath re draw one object's full waypoint polyline + target links
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)
0x004265C1 MAPStepSelection re advance waypoint selection +/-1 along the owning object's list
0x00426696 MAPAssignWPTarget re assign escort/target to the selected waypoint with validation ('can't escort yourself', 'can't target a zone')
0x004267E4 MAPInsertWP re insert a new waypoint after the selection: alloc (count+2)*0x44, _MMAllocPtr, splice via MAPUpdateWPPtrs, 'Only ten waypoints allowed'
0x00426ACB MAPObjEditable re ownership/editability test for an object (compares against DAT_00536504/_005364f8 special ids)
0x00426B70 MAPObjEditableP re wrapper for MAPObjEditable(param,1)
0x00426BF0 MAPInitWPSpeed re initialize a new waypoint's speed from _COCornerSpeed + formation defaults
0x00426C45 MAPSetWPFormationParams re copy formation offset/params from table &DAT_004f057e[idx*7] into a waypoint
0x00426C6D MAPDeleteWP re delete the selected waypoint (frees loop node, memmoves list, fixes head flag)
0x00426D6D MAPRequirePlayerPlane re error 'You must first designate a plane' if no flyable/human plane exists
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)
0x00426E37 MAPAddObject re add a new object to the mission: _DialogPickFiles, _T_AddObj, seed position/altitude/side per class flags
0x00427195 MAPDeleteObject re delete an object from the mission: _GRPRemove, _APDelete, clear chains, MAPResetObjects
0x004271ED MAPWPButtons re waypoint-properties dialog button handler: name/altitude/speed/formation/react/loop edits (mc_name dialog)
0x004276A0 MAPWPFormationIndex re return a waypoint's formation-table index (&DAT_004f0578)
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)
0x00427769 MAPObjButtons re object-properties dialog button handler: side (mc_nat2), pilot name, plane type (_ChangePlaneType), fly-this-plane, success-condition flags
0x004281DD MAPObjCampaignLocked re editability gate that is stricter when _campaignFile != 0 (campaign missions are locked)
0x00428270 MAPObjEditableCheck re wrapper: MAPObjEditable then flag test
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
0x00428412 MISSIONLoad re canonical campaign/mission loader (CAM.md): MISSIONShutdown->Init1->CallMissionProc(.mc[_nato]_M or named)->Init2->MAPResetObjects->CenterOnPlayer->T_NamedTmaps/T_InitDictionary
0x004284CA MAPSaveMission re save-mission dialog: prompt filename (mc_name), validate, write .M via FUN_00495e80
0x0042866A MAPDragItem re mouse-drag a selected object/waypoint to a new map position (ghost bitmap follow)
0x004289EE MAPSelWorldPos re get the world position of the current selection (obj/wp/special)
0x00428A3B MAPDrawSelInfo re draw the selection highlight glyph + rebuild the info panel (dispatches to MAPBuildObjInfo/MAPBuildWPInfo)
0x00428AEF MAPBuildWPInfo re build the waypoint info-panel text and hot-button rects: heading/ETA/formation/react/target strings
0x00429245 MAPFormatWPTarget re format a waypoint's target name string (_WPTarget + _NextString)
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
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
0x0042A656 MAPRandomizeSkill re randomize a side's object AI-skill byte (DAT_0050cf62) via _Rand
0x0042A71A MAPLoadMissionDialog re pick a mission file (_DialogPickFiles) and load it into the editor via MISSIONLoad
0x0042A780 MAPDlgWeather re weather/time-of-day dialog (mc_weth); sets _startTimeOfDay/_currentTimeOfDay, random cloud offset
0x0042A93A MAPDlgEndTime re end-scenario time dialog (mc_time); sets _endScenarioSetTime
0x0042A9C4 MAPDlgRevive re revive/lives dialog (mc_lives); sets _reviveAllowed
0x0042AA50 MAPDlgReviveDelay re revive-delay dialog (mc_delay); sets _reviveDelay
0x0042AADC MAPDlgReviveDist re revive-distance dialog (mc_dist); sets _reviveDist
0x0042AB68 MAPDlgEndKills re end-scenario kills dialog (mc_kills); sets _endScenarioKills
0x0042ABF4 MAPDlgEndKillType re end-scenario kill-type dialog (mc_killt); sets _endScenarioKillsType
0x0042AC80 MAPDlgNatoFighters re NATO-fighters side dialog (mc_natf)
0x0042AD35 MAPDlgScoring re scoring dialog (mc_scr); reads 4 score-weight fields
0x0042AE3F MAPWingRejoin re rejoin/reposition a wing at its leader (_WNGPart, _wingIds/_wingSizes)
0x0042AEDF MAPWingSetLeader re make the selected object its wing's leader (_wingIds[slot]=sel)
0x0042AF86 MAPWingAdd re add an aircraft to wing slot N (_WNGAdd); 'No more aircraft can be added'
0x0042B056 MAPGroupRejoin re rejoin/reposition a group at its leader (_GRPPart, _groupIds/_groupSizes)
0x0042B0F6 MAPGroupSetLeader re make the selected object its group's leader (_groupIds[slot]=sel)
0x0042B19D MAPGroupAdd re add an object to group slot N (_GRPAdd, _GRPHumansFirst)
0x0042B275 MAPDeleteSpecial re delete the selected special marker (_MMFreePtr on _specials[sel])
0x00467240 PilotFindFreeSlot re find an unused pilot save slot by probing PLT%03d.P (s_PLT_03d_P) with _Rand until _Open fails
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'
0x00467860 PilotPaperAddLine re append one label/value line pair into the pilot-paper text buffer
0x00467880 PilotPaperEndLine re append the final/terminating line to the pilot-paper buffer
0x00467E30 PilotListAddAvail re load a pilot file (_RMAccess 0x810c) and insert it sorted into _sortedPilots (_totalPilots++)
0x00468C40 PilotListAddUnavail re load a pilot into the unavailable list _unAvailNames (_unAvailPilots++)
0x00468CA0 PilotMakeCopyName re generate a unique 'NAME Copy N' pilot name, scanning both pilot lists
0x00468DF0 PilotStripCopySuffix re strip a trailing ' Copy' from a pilot name (_strstr s_Copy)
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
0x00468F40 PilotDiskSpaceError re 'You don't have enough free disk space' dialog before a pilot save
0x00468F80 PilotSetField re small pilot-record field setter (cdecl int,char); exact field low-confidence, revisit
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
0x004809D0 MISSIONLoadOrdIcons re load ordnance HUD icon PICs (ord_air3.PIC ...) during MISSIONInit2 when no player plane / at home airport
0x00481920 CampaignProcInvoke re low-level campaign-DLL call: latch __campaignFailures=DAT_004fab40 then (*_campaignProc)(cmd). Inner worker of _CallCampaignProc@4
0x00481A7B MISSIONEnemiesAlive re scan objects for a live enemy during the first 300 ticks (_Alive, _currentTime<300); mission start-grace test used near _AlmostHome
0x00483C90 TextNextToken re whitespace-delimited token scanner over the parse cursor DAT_0055281c..DAT_005528c0. MC.md: MISSIONTextProc tokenizer FUN_00483c90
0x00483D10 TextIsDelim re predicate: is char a token delimiter/whitespace (helper of TextNextToken)
0x00483D30 TextNextNumber re read next token and convert to integer (_StringToNumber)
0x00483D50 TextTokenToValue re scalar token->value conversion helper (uint->uint); low-confidence, revisit
0x00485380 CampaignAccumStats re fold end-of-mission stats into campaign running totals (DAT_004fab44.. += DAT_0054ddc4..) via StatsAddPair. AnalyzePLT 'stats flush'
0x004854A0 StatsAddPair re add a fired/hit counter pair (accumulator). AnalyzePLT 'weapon accuracy accumulator'
0x004856F0 StatsBucketFor re resolve the per-player weapon-stat bucket for a shooter/target id (_playerId/_playerWMId). AnalyzePLT 'weapon accuracy dispatch'
0x004867D0 MISSIONPlayerSlot re resolve the player-score array slot index for a computer/object id (used by _MISSIONAddScore)

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)
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
0x0042C9B0 COLTestObj re object narrow-phase: ray into object local frame, box-hierarchy clip
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 — 49 named functions

VA Symbol Src Role
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

Memory & resource managers (MM/RM)

memory-resource.csv · page — 50 named functions

VA Symbol Src Role
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
0x00436300 MMLongAt sms SMS-named; not in inventory; signed 32-bit read primitive
0x00436310 MMULongAt sms (uint32)(base+off)
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]
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]
0x004A6E20 SetupBitmapAccess sms
0x004A7240 RMLegalFilename sms canonicalize a resource filename in place (IsBadStringPtr len 0xD; collapse to a single '.'); OUT-OF-RANGE claim (sits in terrain span)

.SEQ scripted-cutscene / sequence player (SEQ)

seq.csv · page — 40 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)
0x00445060 SeqStart sms load .SEQ file - alloc a 0x38-byte SEQUENCE slot - build background bitmap - returns slot index
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
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
0x004456B0 SeqParseInclude re detect an include directive and extract the quoted filename
0x00445700 SeqContinue sms main per-tick interpreter - fade + labels + fetch line + build SEQ+cmd name and SMAddress-dispatch the sub-op
0x00445B40 SeqFetchLine re read next raw line from compiled buffer into seqLine - parse leading timecode (/abs +rel frame) into next-command tick
0x00445CC0 SeqParseLabel re parse =label definition - copy name into a seqLabelList node and set seqLabelPtr
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)
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
0x00446090 SeqExpireGraphics re age SEQGR ring nodes vs timerTicks - set expired/dirty flags; return redraw-needed
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
0x004461A0 SeqDrawGraphic re draw one SEQGR node by type - 1 bitmap blit - 2 filled rect - 4 multiline color text; mark overlaps dirty
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)
0x00446500 SeqNewGraphic re allocate a SEQGR node from seqGrList free-list - link into seqGraphics ring - set rect/type/expiry/name
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
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
0x00446890 SEQfadein sms script op - begin palette fade-in (save curPalette - set seqFading=1 fade start/len)
0x00446910 SEQfadeout sms script op - begin palette fade-out (seqFading=-1)
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
0x00446B70 SEQmusic sms script op - start a music track via MusicOn(name priority)
0x00446BE0 SEQpalette sms script op - load/set the sequence palette; absent-from-inventory
0x00446C60 SEQrun sms script op - resume/run control (16-byte leaf); absent-from-inventory
0x00446C70 SEQsound sms script op - play a sound effect; absent-from-inventory
0x00446D30 SEQsndoff sms script op - stop sound(s); absent-from-inventory
0x00446F10 SEQtext sms script op - build a wrapped-text SEQGR type-4 node using FormatText; absent-from-inventory
0x00447090 SEQvideo sms script op - play an AVI/video clip (drives videoState); absent-from-inventory
0x00447120 SEQwait sms script op - wait/synchronize N ticks; absent-from-inventory

Flight model / physics (FM/HARD)

flight-model.csv · page — 58 named functions

VA Symbol Src Role
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
0x00452940 HARDStoreWeight sms
0x00452980 HARDCanLoad sms
0x00452C20 HARDLoad sms
0x00452D10 HARDLoadAll 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
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)
0x004538C0 HARDSaveHumanLoads sms
0x004539C0 HARDRestoreHumanLoad sms
0x00453A70 HARDTotalFuel 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

Video decode (FMV/Cobra)

video.csv · page — 23 named functions

VA Symbol Src Role
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)
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)

Renderer & rasterizer (GG/G_)

renderer.csv · page — 118 named functions

VA Symbol Src Role
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)
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
0x0045E370 flushLineStats sms
0x0045E3A0 GG_RestoreSurfaces sms
0x0045E410 GG_WaitRetrace sms
0x0045E440 GG_VideoModesAvailable 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
0x00497770 G_UHline sms
0x00497A10 G_Hline sms
0x00497A60 G_UVline sms
0x00497B00 G_Vline sms
0x00497B60 G_URect sms
0x00497BF0 G_Rect 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
0x004984F0 G_UPolygonFlip sms
0x00498570 G_PointFlip 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
0x004989F0 G_StringWidth sms
0x00498A20 G_StringHeight sms
0x00498AF0 code sms
0x00498B90 clipT sms
0x00498CE0 clipB sms
0x00498E30 clipL sms
0x00498F90 clipR sms
0x004990F0 G_ClipDestPoly 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
0x004B7910 G_AllocBitmapBuffer re allocate a 0x112-byte bitmap buffer via the class allocator and clear its trailing flag
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
0x004B85F0 G_ColorStringWidth sms
0x004B8620 G_ColorStringHeight sms
0x004B8630 G_NextTab sms
0x004B8670 G_Scale sms
0x004B8710 G_ScaleFlip sms
0x004B87F0 G_AcTexture sms
0x004B8820 G_TextureFlip sms
0x004B8890 G_PerspectiveFlip sms
0x004B8920 G_HFlipBitmap sms
0x004B8960 G_DoubleBitmapY sms
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
0x004C619C G_UPatLine sms
0x004C6334 G_UBresenhamLine sms
0x004C6ECC G_UPolygon sms
0x004C77D0 G_SUPolygon sms
0x004C8A38 G_Polygon sms
0x004C8A74 G_SPolygon sms
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)
0x004C9224 NoHorizon re off-screen fallback for _SolidHorizon when the tilted horizon line falls outside the viewport — emits no raster output
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)
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)
0x004CA028 G__AC_Texture sms
0x004CAE38 G__Texture sms
0x004CBD0B G__Perspective sms
0x004CBE7C G__ScaleBitmap sms
0x004CC8B0 DrawYLRP sms

Wingman / group AI (WNG/GRP)

wingman.csv · page — 38 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)
0x0045E630 WNGLeader re first live member of a wing (twin of GRPLeader)
0x0045E690 WNGWingman re undetected twin of GRPWingman; materialized on apply
0x0045E6E0 WNGWingmen sms
0x0045E710 WNGPart sms
0x0045E790 WNGWingmenNearby re count wingmen within distance/alt (twin of GRPWingmenNearby)
0x0045E8A0 WNGControl re if wingman, optional FormationMove; return formControl (twin of GRPControl)
0x0045E8F0 WNGLeaderLanding sms
0x0045E970 WNGFormationMove sms
0x0045EAC0 WNGSetControl re set formation control; MSGSend subcode 10
0x0045EB30 WNGSetType re set formation type; MSGSend subcode 9
0x0045EB70 WNGSetSpacingH re set horizontal spacing; MSGSend subcode 7
0x0045EBB0 WNGSetSpacingV re set vertical spacing; MSGSend subcode 8
0x0045EBF0 WNGSetStateTarget re EnterState + set target; MSGSend 0x11 (twin of GRPSetStateTarget)
0x0045ED90 WNGSendWM sms
0x0045EEF0 WNGResponseSize re response capacity from the orders-block flags
0x0045EF20 WNGAttackingObj re count wing members attacking a target
0x0045EFB0 WNGHumansFirst re move human-controlled members to slot 0
0x0045F030 WNGInHumanWing re true if id shares the player's wing
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
0x0045F410 GRPWingmen sms
0x0045F440 GRPPart sms
0x0045F5D0 GRPControl sms
0x0045F6A0 GRPFormationMove sms
0x0045F7F0 GRPSetControl sms
0x0045F860 GRPSetType sms
0x0045F8A0 GRPSetSpacingH sms
0x0045F8E0 GRPSetSpacingV sms
0x0045FC20 GRPResponseSize sms
0x0045FC50 GRPAttackingObj sms
0x0045FCE0 GRPHumansFirst sms

Object / entity system & shape selection

objects.csv · page — 83 named functions

VA Symbol Src Role
0x00436B30 MoveObj sms
0x004382D0 MoveGoalValue re resolve one move-goal operand by kind (heading/altitude/speed/...); executes CreateMoveGoal records for MoveObj
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
0x00442DE0 GRAPHICUpdate sms step every live GRAPHIC entry via FUN_00442e10 (motion/fuse/adder emission), then _UpdateLoopSounds
0x004431B0 GRAPHICAddYourObjs sms
0x004432D0 GRAPHICAddExp sms spawn an explosion: random type-variation, chained debris/cluster-release/smoke children, MP mirror
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)
0x004626B0 ImmediateService sms
0x004626D0 ChainInsertCurObj re ordered insert of the current object by service key (+0x68); honors correctChainPlacement
0x004627B0 RemoveCurObj sms
0x004628B0 GetCurObj sms
0x00462980 PutCurObj sms
0x004629E0 PushCurObj sms
0x00462A20 PopCurObj sms
0x00462A50 ServiceObjects sms
0x00462B70 ChainMergeSorted re merge the re-queue chain back into chainStart keeping +0x68 order
0x00462C91 ProcessHitMsgs re drain MSG 0x800B/0x800C remote hit events; raises event 0x4000 and spawns explosion via GRAPHICAddExp
0x00462D40 ProcessEffectMsgs re drain per-computer MSG 0x8003+n remote effect spawns: explosion / smoke / MANAdd
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)
0x00463900 NearbyGroupLeader re return the group leader id when the current object flies in role 2 within 0xC800
0x00463980 MaybeCallEventProc sms
0x004639C0 CallEventProc sms
0x00463A20 CreateMove sms
0x00463AF0 CreateMoveGoal sms
0x00463B90 TimeAddSat re saturating add to currentT, clamped at 0x7FFF
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
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
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
0x004644F0 PreferredTargetId sms
0x00464520 PreferredProtectId sms
0x00464550 CloseToAnything sms
0x00464640 SetScenarioEndTime sms
0x00473A40 OBJEventProc sms label-only in FA.SMS import; ApplySymbols materializes the function
0x00473B40 OBJDamageProc sms label-only in FA.SMS import; ApplySymbols materializes the function
0x00473BE0 OBJProc sms
0x00473C10 Kill 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
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
0x004A6EB0 SetupOT sms
0x004A71C0 LoadShapeVariantPair re load the _a slot; aircraft (obj_class & 0xC000) also load the _b slot (+0x1B)
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
0x004A7230 SetupJT sms
0x004AB450 ShapeSetup sms

AI interpreter (CT)

ai.csv · page — 122 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
0x00464DB0 CTResetPC re reset IP=base and line=1; if arg!=0 also zero stack depth
0x00464DE0 CTVarDiff sms
0x00464E20 CTEval_time sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464E30 CTEval_do_nothing sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464E40 CTEval_do_evade sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464E50 CTEval_do_attack sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464E60 CTEval_do_radar_launch sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464E70 CTEval_do_ir_launch sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464E80 CTEval_do_hit sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464E90 CTEval_tgtattackingme sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464ED0 CTEval_tgtattackinganyone sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464F10 CTEval_tgt sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464F50 CTEval_tgtclass sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464F90 CTEval_tgtisfighter sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464FB0 CTEval_tgtisbomber sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464FD0 CTEval_tgtisplane sms label-only in FA.SMS; ApplySymbols materializes the function
0x00464FF0 CTEval_tgtisship sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465000 CTEval_tgtissam sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465010 CTEval_tgtisaaa sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465020 CTEval_tgthumancontrol sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465040 CTEval_maxrange sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465060 CTEval_maxrangediff sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465080 CTEval_bestrange sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465090 CTEval_bestrangediff sms label-only in FA.SMS; ApplySymbols materializes the function
0x004650A0 CTEval_radar sms label-only in FA.SMS; ApplySymbols materializes the function
0x004650B0 CTEval_tgtradar sms label-only in FA.SMS; ApplySymbols materializes the function
0x004650E0 CTEval_ir sms label-only in FA.SMS; ApplySymbols materializes the function
0x004650F0 CTEval_tgtir sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465120 CTEval_tgtoffbeam sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465150 CTEval_tgtahead sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465180 CTEval_tgtfacing sms label-only in FA.SMS; ApplySymbols materializes the function
0x004651D0 CTEval_hrzdisttotgt sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465220 CTEval_disttotgt sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465240 CTEval_htotgt sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465290 CTEval_ptotgt sms label-only in FA.SMS; ApplySymbols materializes the function
0x004652E0 CTEval_tgtaspectangle sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465380 CTEval_canclimb sms label-only in FA.SMS; ApplySymbols materializes the function
0x004653A0 CTEval_speed sms label-only in FA.SMS; ApplySymbols materializes the function
0x004653B0 CTEval_speeddiff sms label-only in FA.SMS; ApplySymbols materializes the function
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
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
0x00465420 CTEval_maxrudderh sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465430 CTEval_maxrudderp sms label-only in FA.SMS; ApplySymbols materializes the function
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
0x00465460 CTEval_betterspeed sms label-only in FA.SMS; ApplySymbols materializes the function
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
0x004654A0 CTEval_bettertwr sms label-only in FA.SMS; ApplySymbols materializes the function
0x004654C0 CTEval_turnrate sms label-only in FA.SMS; ApplySymbols materializes the function
0x004654D0 CTEval_turnratediff sms label-only in FA.SMS; ApplySymbols materializes the function
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
0x00465510 CTEval_alt sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465540 CTEval_altdiff sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465560 CTEval_maxalt sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465590 CTEval_maxaltdiff sms label-only in FA.SMS; ApplySymbols materializes the function
0x004655B0 CTEval_minalt sms label-only in FA.SMS; ApplySymbols materializes the function
0x004655C0 CTEval_minaltdiff sms label-only in FA.SMS; ApplySymbols materializes the function
0x004655E0 CTEval_waypointalt sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465640 CTEval_disttowaypoint sms label-only in FA.SMS; ApplySymbols materializes the function
0x004656B0 CTEval_cloudalt sms label-only in FA.SMS; ApplySymbols materializes the function
0x004656C0 CTEval_skill sms label-only in FA.SMS; ApplySymbols materializes the function
0x004656D0 CTEval_h sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465710 CTEval_p sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465730 CTEval_b sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465750 CTEval_hdiff sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465770 CTEval_pdiff sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465790 CTEval_any sms label-only in FA.SMS; ApplySymbols materializes the function
0x004657A0 CTEval_engagep sms label-only in FA.SMS; ApplySymbols materializes the function
0x004658A0 CTEval_wingapproach sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465960 CTEval_wingcombat sms label-only in FA.SMS; ApplySymbols materializes the function
0x004659F0 CTEval_wm_hspacing_is sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465A00 CTEval_wm_vspacing_is sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465A10 CTEval_wm_formation_is sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465A20 CTEval_wm_control_is sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465A30 CTDo_exit sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465A50 CTDo_restart sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465A70 CTDo_maneuver sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465AD0 CTPop re eval-stack pop; underflow raises CTError(4)
0x00465B00 CTDo_print sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465B60 CTDo_printnum sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465BC0 CTDo_play sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465C20 CTDo_rudder sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465C90 CTReadAngle re pop then clamp [-90,90] x182 (binary degrees)
0x00465CC0 CTDo_move sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465D40 CTReadHeading re pop then normalize [0,359] x182
0x00465DA0 CTReadAngle180 re pop then clamp [-180,180] x182; passthrough sentinel 0x7FFFFFFF
0x00465DE0 CTReadDuration re pop then clamp [0,15]
0x00465E00 CTReadSpeed re pop then clamp [COMinSpeed,COMaxSpeed] read live
0x00465E20 CTDo_movetoalt sms label-only in FA.SMS; ApplySymbols materializes the function
0x00465EA0 CTDo_turn sms label-only in FA.SMS; ApplySymbols materializes the function
0x00466052 CTDo_yoyo sms label-only in FA.SMS; ApplySymbols materializes the function
0x004660C0 CTDo_circle sms label-only in FA.SMS; ApplySymbols materializes the function
0x004661A0 CTDo_homeangle sms label-only in FA.SMS; ApplySymbols materializes the function
0x00466290 CTPush re eval-stack push; overflow (>0x13) raises CTError(5)
0x004662C0 CTDo_homepos sms label-only in FA.SMS; ApplySymbols materializes the function
0x004663E0 CTDo_uhomepos sms label-only in FA.SMS; ApplySymbols materializes the function
0x004663F0 CTDo_jink sms label-only in FA.SMS; ApplySymbols materializes the function
0x004664C0 CTDo_invert sms label-only in FA.SMS; ApplySymbols materializes the function
0x004664F0 CTDo_btoh sms label-only in FA.SMS; ApplySymbols materializes the function
0x00466540 CTDo_splits sms label-only in FA.SMS; ApplySymbols materializes the function
0x00466590 CTDo_immelman sms label-only in FA.SMS; ApplySymbols materializes the function
0x004665E0 CTDo_wm_break sms label-only in FA.SMS; ApplySymbols materializes the function
0x00466630 CTDo_wm_approach sms label-only in FA.SMS; ApplySymbols materializes the function
0x00466700 CTDo_wm_hspacing sms label-only in FA.SMS; ApplySymbols materializes the function
0x00466750 CTDo_wm_vspacing sms label-only in FA.SMS; ApplySymbols materializes the function
0x004667A0 CTDo_wm_formation sms label-only in FA.SMS; ApplySymbols materializes the function
0x004667E0 CTDo_wm_control sms label-only in FA.SMS; ApplySymbols materializes the function
0x00466820 CTError re map error code 1..0xc to a string and ErrorExit('Chuck Talk error: %s, line %u')
0x004668F0 CTRestoreState re restore _ctState from _ctStateCheckpoint (or zero it)
0x00466920 CTSaveState re copy _ctState to the heap checkpoint, then zero it
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)
0x004670E0 CTVarPtr re return &_ctState[i] for script var index i in [0,4]; out-of-range raises CTError(3)

Input — joystick / serial / modem

input.csv · page — 18 named functions

VA Symbol Src Role
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)
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
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
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
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 — 82 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)
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
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
0x004A8CC0 T_ObjIsVisible re per-object render-flag/type visibility test (DAT_00573396 flags vs type table at 0x50A6B8); used by T_AddVisibleObjs
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
0x004A9C20 T_AddVisibleObjs re iterate _objPtrs[1.._nextObjId]; for visible in-bounds objects run ImmediateService and T_QueueDecor (via GetCurObj/PutCurObj)
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)
0x004A9EA0 T_QuadSetFlags re set leaf flat-bit (+0xF|1) vs sloped-bit (+0xE|0x80) from corner-delta bytes
0x004A9ED0 T_ViewBounds re rotate view box by heading (_Rotate2) to compute cell-space AABB DAT_0057334a..DAT_00573350
0x004AA070 T_SubdivideCells re LOD pass: walk _cellArray, subdivide cells finer than _lodDetail via 4x T_BuildQuadCell; T_CellScreenBounds cull; caps at 500 cells
0x004AA260 T_CellScreenBounds re cell world extent (<<5) AND'd with view bounds via _BoundsAnd (cull test)
0x004AA2B0 T_CompactCells re compact _cellArray dropping dead (0xffff) cells; rewrites _cellCount and optional carried index
0x004AA380 T_SortCells re in-place quicksort of _cellArray (stride 0x16) via comparator (*_cellCompare 0x580B9C) and _Swapmem
0x004AA440 T_CountCells re tally cells into front/back counts (returns front count); drives T_Make's subdivide-again loop
0x004AA4A0 T_EmitCells re per live cell: T_CellTmapLookup + optional T_Normal, then T_LeafOp to emit geometry
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
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
0x004AACFE T_DrawHorizon re horizon/sky band render: _T_Info horizon sample + _WRMakeHazeList + _currentTintTable sky colors + _hackSky/_clip* extents; static, no SMS symbol
0x004AB860 BrushFromIndex 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
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)
0x004C1660 PROJGuideLoft re loft/high-trajectory guidance when range>=type+0x10D
0x004C1720 PROJHoldCourse re hold current commanded angles (fly straight)
0x004C1760 PROJGuideToSun re steer IR seeker toward the sun when decoyed
0x004C17A0 PROJUpdateWeave re random weave/jink aim offsets from type weave amp
0x004C17F0 PROJSunInSeeker re IR seeker sun/sky FOV check (decoy source)
0x004C1870 PROJDamageProc sms
0x004C1C10 PROJBuildName re compose ' ' into the kill-chatter name buffer
0x004C1CC0 PROJEventProc sms label-only in FA.SMS; ApplySymbols materializes the function
0x004C1F10 PROJIsLockableTarget re predicate: valid non-player lock candidate
0x004C1F50 PROJProc sms
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)
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
0x004C3960 PROJSizePk re target-size/RCS vs weapon-sensitivity Pk scalar
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)
0x004C4700 PROJServiceWeapon sms
0x004C5000 PROJSetReattackTimer re set a random AI re-attack delay from aggression
0x004C5050 PROJAimGunSolution re gun/dumb-weapon aim point with dispersion + terrain clamp
0x004C5270 PROJHasMissileOnTarget re predicate: already have a guided missile locked on target
0x004C52D0 PROJSelectStore re AI: pick the best weapon store for a target
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

3D render core / SH interpreter (GR)

render-core.csv · page — 163 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
0x004CD5DF isqrt16 re tail-call wrapper of FUN_004cd5ee (16-bit integer sqrt)
0x004CD5EE isqrt16_body re Newton-Raphson 16-bit integer square root (magnitude-classed); used by distance/normalize
0x004CD7A0 GRACos sms public arccos wrapper over acos
0x004CD7B4 acos re arccos via DAT_00515dcc table lookup+lerp
0x004CD834 GRSetLightSource sms store world light dir into _worldLightSource/515ED2/515ED4
0x004CD854 SetShading re thin wrapper -> SetShadingTable (renderer span); rebuilds shade LUT
0x004CD8B0 Sun re lighting dot product of _worldLightSource against current matrix rows (518384/38A/390)
0x004CD8F0 clip_edge_right re Sutherland-Hodgman clip vs screen edge (outcode bit4); vbuf/vbuf2 ping-pong; calls ecode_pnt
0x004CD9DA clip_edge_left re S-H clip vs screen edge (outcode bit8); vbuf ping-pong
0x004CDAC6 clip_edge_top re S-H clip vs screen edge (outcode bit2); vbuf ping-pong
0x004CDBB3 clip_edge_bottom re S-H clip vs screen edge (outcode bit1); vbuf ping-pong
0x004CDCA8 do_nop sms SH opcode 0x34 no-op handler
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
0x004CDEB4 setup_view_projection re per-frame view/projection setup (aspect/head vectors/frustum) from zoom + screen dims
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
0x004CE784 load_normal_table re copy lighting normal_table (or DAT_00518620 variant) into working DAT_00518484 by in_AL selector
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)
0x004CE89C compute_axis_check re derive axis_check_type from dominant matrix axis (m3/m6/m9 vs aspect); selects transform/cull variant
0x004CE968 sort_objs_wrapper re painter depth sort wrapper over _SortObjs_8
0x004CEB00 rotate_vec_roll re rotate _xv/_zv by cached sin/cos (roll axis) helper of rotate_matrix_roll
0x004CEB70 rotate_matrix_roll re object-instancing: concat roll rotation into current matrix (m1..m9) via sincos
0x004CED44 rotate_vec_pitch re rotate _yv/_zv (pitch axis) helper of rotate_matrix_pitch
0x004CEDB8 rotate_matrix_pitch re object-instancing: concat pitch rotation into current matrix via sincos
0x004CEF8C rotate_vec_yaw re rotate _xv/_yv (yaw axis) helper of rotate_matrix_yaw
0x004CF000 rotate_matrix_yaw re object-instancing: concat yaw rotation into current matrix via sincos
0x004CF270 code_pnt re compute 5-bit frustum outcode of a projected point (BP/BX bounds)
0x004CF2A4 ecode_pnt re extended outcode (near-plane aware) returned in AL; used by clippers
0x004CF2D0 matrix_from_angle3 re build 3x3 rotation matrix (3x FUN_004cf410) for MakeObj/ViewRotationMatrix
0x004CF328 mult_point_by_matrix_asm re hand-asm point*matrix (register-only; empty decompile) — MultPointByMatrix core
0x004CF410 matrix_row_asm re hand-asm matrix row build (register-only; empty decompile)
0x004D028C cull_bbox_viewspace re view-space bounding-box/near-plane visibility test; returns clip code; called by GRAddBrentObj & do_drawobj000
0x004D0494 get_sort_dist re painter sort key = max|Δ|+quarters of others + per-obj bias (from _xv32/_yv32/_zv32)
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
0x004D0C2F sh_op_BA re SH opcode 0xBA handler
0x004D0C50 do_drawobj000 sms
0x004D0C8A sh_op_6A re SH opcode 0x6A handler (render-state/geometry; 1409 bytes)
0x004D120B sh_op_28 re SH opcode 0x28/0x30 handler
0x004D1421 sh_op_D6_pre re 3-byte pre-adjust falling into sh_op_5A (op 0xD6)
0x004D1424 sh_op_5A re SH opcode 0x5A handler (epic #52 placeholder name; 623 bytes)
0x004D1694 sh_op_20 re SH opcode 0x20 handler
0x004D17BC do_shape_name sms SH opcode 0x42 (SourceName): consume null-terminated shape name into _shapeName
0x004D17E0 sh_op_stub re shared no-op stub for 10 unassigned SH opcodes
0x004D17F0 sh_op_00 re SH opcode 0x00 (EndObject) handler entry (1 byte; falls into do_short_eof)
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
0x004D17F8 sh_op_3A re SH opcode 0x3A handler
0x004D18F4 sh_op_08 re SH opcode 0x08 handler
0x004D1974 sh_op_72 re SH opcode 0x72 handler (epic #52 placeholder name)
0x004D1984 sh_op_96 re SH opcode 0x96 handler (856 bytes)
0x004D1E5C do_vertexbuffer re SH opcode 0x82 (VertexBuffer) + 0x02/0x04/0x0A: push vertex batch into global pool at push_at/8
0x004D1ECC sh_op_A2 re SH opcode 0xA2/0xAE handler
0x004D1EDC sh_op_7A re SH opcode 0x7A handler (epic #52 placeholder name)
0x004D1F24 sh_op_74 re SH opcode 0x74/0x7C/0x8E/0x9C handler (6-byte)
0x004D1F2C sh_op_76 re SH opcode 0x76 handler
0x004D1F34 sh_op_22 re SH opcode 0x22/0x7E handler
0x004D1FC0 sh_op_80 re SH opcode 0x80 handler (epic #52 placeholder name; 796 bytes)
0x004D225E sh_op_1A re SH opcode 0x1A handler
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
0x004D22A8 do_sfcal_long sms SH opcode 0x6E (UnmaskLong)
0x004D22D4 do_ifdestroyed sms SH opcode 0xAC (JumpToDamage): esi+=rel16 if _destroyed (0x50C39C)
0x004D22FC do_no_overlap sms SH opcode 0xB8: clears overlap/collision flag via FUN_004d426c
0x004D2318 do_jumptodetail re SH opcode 0xA6 (JumpToDetail): skip rel16 when _detail(0x515EEE) < threshold
0x004D2344 do_use_terrain_detail sms SH opcode 0xB2
0x004D2360 sh_op_B0 re SH opcode 0xB0 handler
0x004D2380 do_if_not_effect sms SH opcodes 0x14/0x16/0x3C/0xA8/0xAA/0xC0: conditional skip keyed on effects setting
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
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)
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
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)
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)
0x004D2690 sh_op_18 re SH opcode 0x18 handler
0x004D2740 sh_op_84 re SH opcode 0x84 handler (epic #52 placeholder name)
0x004D2798 load_dest re interpreter helper: load destination operand
0x004D2880 sh_op_1C re SH opcode 0x1C/0x88 handler (perspective-path variant swapped by check_flat)
0x004D2910 sh_op_26 re SH opcode 0x26 handler
0x004D29EC sh_op_2A re SH opcode 0x2A/0x86 handler
0x004D2B20 sh_op_2C re SH opcode 0x2C/0x8A handler
0x004D2BB0 sh_op_92 re SH opcode 0x92 handler
0x004D2C70 sh_op_90 re SH opcode 0x90 handler
0x004D2D30 sh_op_94 re SH opcode 0x94 handler
0x004D2FC0 do_setcolor2 sms SH opcode 0x5C
0x004D2FC8 sh_op_BC re SH opcode 0xBC handler (UnkBC)
0x004D2FD0 sh_op_2E re SH opcode 0x2E handler; contains do_setcolor_continue (0x4D2FD6)
0x004D300A sh_op_24_pre re 2-byte entry for op 0x24 (falls into do_fullpntg16)
0x004D300C do_fullpntg16 sms SH opcode 0xFA
0x004D3064 sh_op_A0 re SH opcode 0xA0 handler
0x004D30C8 sh_op_4E re SH opcode 0x4E handler
0x004D30E4 do_short_ijmp sms SH opcode 0x38 (ShortJump): DEC ESI then shares 0x48 body
0x004D30E5 do_jump sms SH opcode 0x48 (Jump): esi+=rel16
0x004D3100 do_ijmp_long sms SH opcode 0x50 (LongJump): esi+=rel32
0x004D3118 sh_op_32 re SH opcode 0x32 handler
0x004D3134 do_anim_jmp sms SH opcode 0x40 (JumpToFrame): idx=_frameCounter mod nframes; relative frame-table jump
0x004D315C sh_op_4A re SH opcode 0x4A handler
0x004D3193 sh_op_4C_pre re 1-byte entry for op 0x4C/0x8C (falls into sh_op_C4)
0x004D3194 do_xformunmask re SH opcode 0xC4 XformUnmask: render sub-stream at a relative transform
0x004D33D8 do_icall_long sms SH opcode 0xC6 (XformUnmaskLong)
0x004D3618 sh_op_52 re SH opcode 0x52/0x54 handler
0x004D3644 sh_op_56 re SH opcode 0x56 handler
0x004D3670 sh_op_5E re SH opcode 0x5E handler
0x004D36CC sh_op_60 re SH opcode 0x60 handler
0x004D3728 sh_op_62 re SH opcode 0x62 handler
0x004D3784 sh_op_64 re SH opcode 0x64 handler
0x004D37BC sh_op_66 re SH opcode 0x66 handler
0x004D37F4 sh_op_68 re SH opcode 0x68 handler
0x004D382C sh_op_58 re SH opcode 0x58 handler
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)
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)
0x004D416C do_jumpfar4 sms SH opcode 0xC8 (JumpToLOD): distance/size LOD test; skips 6-byte operand when _effects&0x20000
0x004D4240 do_start_interp sms bytecode re-entry target for x86-embedded regions (all 208 x86 shapes jump here); esi=selected sub-stream
0x004D4254 do_start_asm sms SH opcode 0xF0 (X86Code): push esi; ret -> execute embedded x86 payload
0x004D4258 do_collision_info sms SH opcode 0xF2 (PtrToObjEnd): records obj_end_off
0x004D426C set_overlap_flag re helper: AND/OR update of collision/overlap flag word 0x515EF0 (used by do_no_overlap)
0x004D4288 sh_op_CA re SH opcode 0xCA handler (UnkCA)
0x004D42C8 do_setlight sms SH opcode 0xDA
0x004D42EC do_setcoarse sms SH opcode 0x44 (sets _coarse detail flag)
0x004D4308 do_set_point_color sms SH opcode 0xF6 (VertexInfo): per-vertex color+normal
0x004D4364 do_set_gouraud sms SH opcode 0xF4
0x004D43CC SetFlatColor re helper: set flat-shade color for do_new_poly
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
0x004D478C do_force_no_pmap sms SH opcode 0x46 (sets _force_no_pmap)
0x004D47A4 do_streamer_def sms SH opcode 0xCE (streamer/contrail define)
0x004D47B8 do_streamer_draw sms SH opcode 0xD0 (streamer/contrail draw)
0x004D4874 NeedClip re helper: mark clip needed
0x004D4888 RestoreClip re helper: restore prior clip state
0x004D4894 do_screen_coords sms SH opcode 0xD2 (project to screen coords)
0x004D4988 do_texture_index re SH opcode 0xE0 (TextureIndex): select current texture by index
0x004D49C0 do_texture_file re SH opcode 0xE2 (TextureFile): set current texture by 14-byte name
0x004D4A19 do_brush_solid sms SH opcode 0xEC
0x004D4A30 do_brush_trans sms SH opcode 0xEE
0x004D4A47 do_brush_area sms SH opcode 0xE4
0x004D4A6D do_brush_area_full sms SH opcode 0xE6
0x004D4ACA sh_op_DC re SH opcode 0xDC handler (UnkDC; 610 bytes; textured-fill path)
0x004D4D2C sh_op_DE re SH opcode 0xDE handler (perspective textured-fill; 723 bytes)
0x004D4FFF shade_span_a re do_new_smap/rmap shade-span builder variant A
0x004D511B shade_span_b re do_new_smap/rmap shade-span builder variant B
0x004D523B shade_span_c re do_new_smap/rmap shade-span builder variant C
0x004D5356 shade_span_d re do_new_smap/rmap shade-span builder variant D
0x004D5475 do_new_smap sms SH opcode 0xE8 (shade map)
0x004D5644 do_new_rmap sms SH opcode 0xEA (remap; 872 bytes)
0x004D59AC do_new_pmap_or_tmap sms SH opcodes 0x36/0x3E (perspective/texture map)
0x004D5A2C angles_2_matrix re build view rotation matrix from _am_h/_am_p/_am_b (heading/pitch/bank) via sincos
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
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
0x004D69EC __compute_viewer_dot_product re backface cull: face-normal dot (vertex - viewer) for do_nt tiles
0x004D6A38 draw_quad re assemble 4-vertex tile working set -> draw_nt
0x004D6A90 draw_tri_nw re assemble NW-triangle working set -> draw_nt
0x004D6B24 draw_tri_se re assemble SE-triangle working set -> draw_nt
0x004D6BB8 draw_nt re build terrain-tile polygon (flat/gouraud/textured) from working set and submit to the 2D rasterizer

Startup / Phar Lap DOS extender / config

startup.csv · page — 222 named functions

VA Symbol Src Role
0x004D715A _DirectDrawCreate@12 sms IAT jump thunk -> DDRAW.DLL import (used by InitVideo); FA.SMS-named linker stub, conceptual owner is another subsystem
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
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
0x004D7460 _exit sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7480 __exit sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7580 __lockexit sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7590 __unlockexit sms MSVC C runtime (statically linked); FA.SMS public symbol
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
0x004D7790 _sprintf sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7810 _strchr sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D78D0 _memmove sms MSVC C runtime (statically linked); FA.SMS public symbol
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
0x004D7DB0 _isdigit sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7E20 _isspace sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7E80 _isalnum sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D7EC0 _isprint sms MSVC C runtime (statically linked); FA.SMS public symbol
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
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
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
0x004D8610 _strncmp sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8648 __ftol sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D86A0 __cfltcvt_init sms MSVC C runtime (statically linked); FA.SMS public symbol
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
0x004D8D90 __splitpath sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004D8EF0 __getcwd sms MSVC C runtime (statically linked); FA.SMS public symbol
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
0x004D98B0 _rand sms MSVC C runtime (statically linked); FA.SMS public symbol
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
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
0x004DA040 _strnicmp sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DA140 __mtinitlocks sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DA170 __mtdeletelocks sms MSVC C runtime (statically linked); FA.SMS public symbol
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
0x004DA370 __isctype sms MSVC C runtime (statically linked); FA.SMS public symbol
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
0x004DCDB0 __initptd sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DCDD0 __getptd sms MSVC C runtime (statically linked); FA.SMS public symbol
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
0x004DD000 __ms_p5_test_fdiv sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DD050 __ms_p5_mp_test_fdiv sms MSVC C runtime (statically linked); FA.SMS public symbol
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
0x004DD5B0 __dosmaperr sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DD630 __errno sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DD650 __mbctoupper sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DD6E0 __mbsnbcpy sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DD790 __setmbcp sms MSVC C runtime (statically linked); FA.SMS public symbol
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
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
0x004DF420 __ismbblead sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DF4D0 __setenvp sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DF5C0 __setargv sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DFBC0 __ioinit sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DFDA0 __ioterm sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DFE00 __heap_init sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DFE80 __FF_MSGBANNER sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004DFEC0 __NMSG_WRITE sms MSVC C runtime (statically linked); FA.SMS public symbol
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
0x004E1740 _strpbrk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E2680 __alloc_osfhnd sms MSVC C runtime (statically linked); FA.SMS public symbol
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
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
0x004E2FE0 ?terminate@@YAXXZ sms MSVC C runtime (statically linked); FA.SMS public symbol
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
0x004E3250 __callnewh sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3290 __statusfp sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E32B0 __clearfp sms MSVC C runtime (statically linked); FA.SMS public symbol
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
0x004E35E0 __RoundMan sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3690 __CopyMan sms MSVC C runtime (statically linked); FA.SMS public symbol
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
0x004E3A30 __atodbl sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3AB0 __atoflt sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3B80 __fltout2 sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3CD0 _mbtowc sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E3D30 __mbtowc_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
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
0x004E4860 _wcslen sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E4920 __Getdays sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E4A10 __Getmonths sms MSVC C runtime (statically linked); FA.SMS public symbol
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
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
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
0x004E8160 __towupper_lk sms MSVC C runtime (statically linked); FA.SMS public symbol
0x004E8200 _iswctype sms MSVC C runtime (statically linked); FA.SMS public symbol
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
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

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)
0x00403FE0 LaunchSystemProperties re ShellExecute sysdm.cpl (Windows System control panel)
0x00404061 LoadDetectionDlls re LoadLibrary hdd.dll + cd.dll (hardware-detection helper libraries)
0x0040DC60 BuildSupportReport re builds the [CPU]/[VIDEO]/[SOUND]/[MODEM] system-config report and faxes/e-mails it to EA support (support@ea.com)
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
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
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
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.
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).
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.
0x10001D20 loginMShost re Export ord9: opcode 'h' — login as game host; stores host cookie (ms_host_cookie) and ResumeThread on ms_recv_thread.
0x10001D80 loginMSPlayer re Export ord8: opcode 'p' — login as player; SuspendThread on ms_recv_thread and clear ms_host_cookie.
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.
0x10002030 selectMSgame re Export ord12: opcode 's' — select game by id (rec+0x10, ms_send_u32); expect 'O'.
0x100020C0 deselectMSgame re Export ord3: opcode 'd' — deselect game by id (rec+0x10).
0x10002120 resetMSfilter re Export ord11: opcode 't' — reset game-list filter/cursor; clears ms_game_count/ms_game_selected, sets ms_list_dirty.
0x10002170 updateMSgame re Export ord14: opcode 'u' — upload/update the player-or-game record (ms_record_size bytes).
0x100021D0 fetchMSgame re Export ord4: opcode 'f' — fetch one game record by id; reads a 'P' payload of ms_record_size bytes.
0x10002280 sendMSresults re Export ord13: opcode 'v' — send mission-results blob (ms_send_u32 length + data); expect 'O'.
0x10002330 getMSdatafilesize re Export ord6: opcode 'z' — query server data-file size by name; reads a u32 size; 0xFFFFFFFF => not found (0x3F3); expect 'O'.
0x10002440 getMSdatafile re Export ord5: opcode 'x' — download server data-file by name into a buffer; client acks 'O', expects 'K'.
0x10002570 closeMS re Export ord1: opcode 'l' — quit/logout; closesocket(ms_socket); free the game list + DeleteCriticalSection; clear ms_running.
0x10002630 ms_recv_all re recv() exactly N bytes in a loop ('Read Packet Error - Correcting...' on short read).
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.
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.
0x10002950 ms_reg_close re Registry-cache dtor: RegFlushKey + RegCloseKey the open keys.
0x100029A0 ms_reg_select_subkey re Registry-cache: RegCreateKeyExA a named subkey (e.g. 'Matchmaker') into this+0x314.
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'.
0x100034D0 ms_atoi re Decimal-string-to-int (thin wrapper over FUN_10003430); parses the registry port string in connectMS.

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).