Symbol Map — Organized Reference¶
FA.SMS ships with Jane's Fighters Anthology and contains 3,829 MSVC C++ mangled symbols with virtual addresses spanning 0x00401000–0x005937E0. This document organizes them by address range into functional subsystems and highlights format-related entry points.
Provenance: Ghidra static analysis of the game executable with FA.SMS symbols applied; the file itself is specified in formats/SMS.md. Confidence markers follow spec-authoring.md: confirmed · inferred · unknown.
Reconstruction program: for subsystems the game-executable reconstruction program (epic #209) has completed, the machine-readable symbol database and its per-subsystem doc are canonical (they include recovered names beyond FA.SMS, mechanically checked against the Ghidra project). This page stays the FA.SMS overview and the reference for ranges not yet migrated.
Summary Table¶
| Subsystem | Address Range | Approx. Symbol Count |
|---|---|---|
| Network (NET/MP/SER) | 0x401000–0x409000 | ~60 |
| HUD / cockpit display | 0x405E30–0x40AE50 | ~40 |
| Core shell / menu | 0x40AE50–0x421C70 | ~90 |
| Sound / music | 0x432920–0x435F80 | ~70 |
| Memory manager (MM) | 0x435C60–0x436320 | ~35 |
| Campaign map (MAP/CAM) | 0x421C70–0x42B800 | ~25 |
| Collision (COL) | 0x42B800–0x42E690 | ~20 |
| Flight model (FM/HARD) | 0x451480–0x454800 | ~80 |
| Video decode (FMV/Cobra) | 0x456300–0x45D090 | ~45 |
| Network (UDP/PKT layer) | 0x45D090–0x45DBD0 | ~30 |
| Graphics low-level (GG/G_) | 0x45DBD0–0x499380 | ~130 |
| Wingman/Group AI (WNG/GRP) | 0x45E460–0x460FB0 | ~50 |
| Object system (OBJ/chain) | 0x462600–0x464C80 | ~40 |
| AI interpreter (CT) | 0x464C80–0x467110 | ~120 |
| Pilot / mission / campaign | 0x467110–0x490000 | ~180 |
| Joystick / serial / modem | 0x494270–0x4AC510 | ~110 |
| Terrain renderer (T_) | 0x4A6E50–0x4C5D70 | ~90 |
| Projectile / weapons (PROJ) | 0x4C0690–0x4C5D30 | ~55 |
| 3D renderer (GR/render) | 0x4C5D70–0x4D5C00 | ~100 |
| Airport / carrier (AP) | 0x4BA750–0x4BEE60 | ~40 |
| World render / palette (WR) | 0x4B3010–0x4B4B30 | ~30 |
| Multiplayer protocol (MP) | 0x46ADE0–0x473680 | ~95 |
| Dialog / UI shell | 0x487A3A–0x48D200 | ~70 |
| SAY / voice callout | 0x48D2B0–0x491240 | ~20 |
| CRT / Win32 imports | 0x4D6F5C–0x4E8B66 | ~300 |
| Data globals / BSS | 0x4EB5F4–0x593800 | ~300 |
Subsystem symbol registry¶
The per-subsystem tables below are generated from the symbol database so they cannot drift from the Ghidra project. Each row is a named symbol; the full record (including waived interiors) is the linked CSV, and the narrative for each subsystem is on its own page. Progress: reconstruction matrix.
Generated from db/symbols/; each subsystem's detailed prose lives on its own page.
Binary: FA.EXE
Network / multiplayer (NET/SER/UDP/MP)¶
network.csv · page — 377 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x004016C0 |
NET_SlaveInit |
sms | client: open connection to master at NET_ADDRESS; registers PLAYER_ACTION/NET_CONNECTED_STATE callbacks |
0x00401780 |
NET_SlaveShutdown |
sms | client leave/teardown |
0x004017B0 |
NET_RequestPlayerList |
sms | query lobby for player list (async) |
0x00401850 |
NET_CancelPlayerList |
sms | cancel pending player-list query |
0x00401880 |
PlayerListQueryEvents |
sms | |
0x004019A0 |
player_list_process_pkt |
sms | dispatch player-list-query reply packets |
0x00401A60 |
NETSlaveConnect |
re | slave connect helper: proto_ptr->open (vtbl+0x56), register slave_events (0x401B20) via socket_add_state_func, seed socket_state addr fields; net_set_often_state(5). Body @0x401A60 cited |
0x00401B20 |
slave_events |
sms | |
0x00401CD0 |
handle_slave_connection_failed |
sms | retry-or-fail: emits 'Connection to %s failed', pkt_send_error(6), net_set_often_state(0) |
0x00401E30 |
NETSlaveLostConn |
re | slave lost-connection notifier: 'Lost connection to %s', socket_close, net_set_often_state(0). Body @0x401E30; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00401EB0 |
slave_process_pkt |
sms | slave lobby FSM: type 3=can-i-play reply,4=player_list,7=err,8=new_player,0xB/0xC=ready,0xD=play_game,0x11/0x12=sync,0x13=lost,0x16=msg,0x1B=connected |
0x00402320 |
state_func_slave_connecting |
sms | |
0x00402330 |
NETArmKeepalive |
re | arm socket send timer (state+8 = timerTicks+0x400; state+4 = 4 unless already ready). Body @0x402330; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00402360 |
NETResetTimer |
re | reset socket send timer to now (state+8 = timerTicks; state+4 = 4). Body @0x402360 |
0x004024D0 |
NETProcessPlayerList |
re | process NET_PLAYER_LIST: find self via NETIsAddrLocal, net_add_self, connect to every other listed peer (mesh) via proto vtbl+0x56 + socket_add_state_func(...,0x401B20); if all ready -> pkt_send_ready. Called from slave_process_pkt case 4. Body @0x4024D0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00405360 |
NETWaitMasterScreen |
re | slave: spin polling MPReceive/MPCheckDisconnect while _masterNextScreen==-1, then adopt it as _curScreen (thisComputer>0). Body @0x405360; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004053A0 |
NETApplyMasterScreen |
re | slave: apply pending _masterNextScreen to _curScreen once (non-blocking). Body @0x4053A0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004054F0 |
netDialogAppIO |
sms | net-config dialog appIO callback: 0x65=CN_NewPrint,0x66/67=info box,0x68=yes/no; else poll key/mouse |
0x00405580 |
monoPrintfIO |
sms | |
0x00405590 |
RunTCPOptionsDialog |
sms | |
0x00405CD0 |
NETFormatIP |
re | format IP address as '%d.%d.%d.%d' via Sprintf (s__d__d__d__d_004EBCFC). Body @0x405CD0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00405D10 |
ip2long |
sms | parse dotted-quad string -> packed u32 (strchr('.')+atoi x4) |
0x00405DF0 |
RunNetConfigurationScreen |
sms | net config screen entry; calls doConfigurationScreen(1|4) |
0x0040AE50 |
NET_MasterInit |
sms | |
0x0040AF40 |
state_func_master_query |
sms | |
0x0040AFA0 |
NET_MasterStartGame |
sms | |
0x0040AFF0 |
NET_MasterRejectPlayer |
sms | |
0x0040B080 |
NET_MasterShutdown |
sms | |
0x0040B110 |
master_events |
sms | |
0x00418880 |
MSGSendChatter |
sms | imported by 14 shipped .MC overlays (#491); named at this VA by FA.SMS |
0x0041E840 |
atohb |
sms | |
0x00441F80 |
UDPopensocket |
sms | |
0x004420D0 |
UDPserverbroadcast |
sms | |
0x00442200 |
UDPquery |
sms | |
0x0044BAF0 |
SER_EnterCriticalCodeForeground |
sms | |
0x0044BB50 |
SER_LeaveCriticalCodeForeground |
sms | |
0x0044BB70 |
SER_ForegroundCheckConnection |
sms | |
0x0044BC00 |
SER_ForegroundGetPacket |
sms | |
0x0044BCB0 |
SER_ForegroundPutPacket |
sms | |
0x0044BD40 |
SER_Flush |
sms | |
0x0044BDB0 |
SER_Write |
sms | |
0x0044BE40 |
SER_WriteAvail |
sms | |
0x0044BEC0 |
SER_Transmitting |
sms | |
0x0044BF00 |
_SER_Read |
sms | |
0x0044BFC0 |
SER_Read |
sms | |
0x0044C030 |
SER_ReadAvail |
sms | |
0x0044C080 |
SER_PeekByte |
sms | |
0x0044C0F0 |
SER_Synchronize |
sms | |
0x0044C1B0 |
SER_Often |
sms | |
0x0044C1E0 |
SER_Suspend |
sms | |
0x0044C200 |
SER_Resume |
sms | |
0x0044C220 |
SER_ExNamesTimeout |
sms | |
0x0044C260 |
SER_ExchangeNames |
sms | |
0x0044C570 |
SER_Initialize1 |
sms | |
0x0044C5D0 |
SER_Initialize2 |
sms | |
0x0044C6E0 |
SER_Initialize2_5 |
sms | |
0x0044C980 |
SER_Initialize3 |
sms | |
0x0044C990 |
SER_Initialize4 |
sms | |
0x0044CA70 |
SER_Initialize5 |
sms | |
0x0044CB20 |
SER_Initialize |
sms | |
0x0044CBD0 |
SER_Shutdown1 |
sms | |
0x0044CC00 |
SER_Shutdown2 |
sms | |
0x0044CC70 |
SER_Shutdown3 |
sms | |
0x0044CCA0 |
SER_Shutdown |
sms | |
0x0044CCC0 |
serIO |
sms | |
0x0045D090 |
pkt_send_can_i_play |
sms | client->host join request |
0x0045D120 |
pkt_send_can_i_play_player |
sms | join request naming a player slot |
0x0045D1B0 |
pkt_send_sync |
sms | send sync request |
0x0045D1C0 |
pkt_send_type |
sms | send a bare typed packet to peer index |
0x0045D200 |
pkt_sock_send_type |
sms | send bare typed packet to a socket |
0x0045D240 |
pkt_sock_send_message |
sms | send text message packet to a socket |
0x0045D280 |
pkt_build_message |
sms | fill NET_PKT message body |
0x0045D2D0 |
pkt_send_you_can_play |
sms | host->client accept |
0x0045D320 |
pkt_send_ready |
sms | ready handshake |
0x0045D360 |
pkt_send_error |
sms | send error code to peer |
0x0045D3A0 |
pkt_send_new_player |
sms | announce new player to peer |
0x0045D440 |
pkt_sock_send_new_player |
sms | announce new player over socket |
0x0045D4E0 |
pkt_send_lost_player |
sms | |
0x0045D580 |
pkt_sock_send_lost_player |
sms | announce lost player over socket |
0x0045D620 |
pkt_build_new_player |
sms | |
0x0045D690 |
pkt_build_lost_player |
sms | |
0x0045D700 |
pkt_sock_send_error |
sms | send error over socket |
0x0045D740 |
pkt_build_sync |
sms | |
0x0045D760 |
pkt_build_sync_reply |
sms | fill sync-reply header |
0x0045D780 |
pkt_build_play_game |
sms | fill play-game (start) header |
0x0045D7A0 |
pkt_send_debug |
sms | |
0x0045D810 |
pkt_send_player_info |
sms | send NET_PLAYER_LIST entry |
0x0045D850 |
pkt_sock_send_player_info |
sms | |
0x0045D890 |
pkt_build_player_info |
sms | serialize NET_PLAYER_LIST into NET_PKT |
0x0045D940 |
pkt_sock_send |
sms | low-level: send NET_PKT to one socket |
0x0045D970 |
pkt_send |
sms | low-level: send NET_PKT to peer index |
0x0045DA10 |
pkt_set_header |
sms | fill NET_PKT header (type/len) |
0x0045DA30 |
pkt_queue_write |
re | append payload to a socket's output ring (state+0x2C86 head,+0x2C8E cap,+0x2C92 count,+0x2C96 busy); flush via net_write_output_q when full; socket_build_write_fds. Body @0x45DA30 |
0x0045DB00 |
pkt_sock_read |
sms | read one NET_PKT from a socket |
0x00464660 |
dlg_list_init |
sms | |
0x004646B0 |
dlg_list_shutdown |
sms | |
0x00464710 |
dlg_list_often |
sms | |
0x004647D0 |
dlg_list_clear |
sms | |
0x00464800 |
dlg_list_get_selection |
sms | |
0x00464880 |
dlg_list_get_new_selection |
sms | |
0x004648B0 |
dlg_list_add |
sms | |
0x004649F0 |
dlg_list_update |
sms | |
0x0046AC00 |
net_test_process_pkt |
sms | |
0x0046AC40 |
net_test_process_pkt_ack |
sms | |
0x0046ACF0 |
net_test_start_latency_test |
sms | |
0x0046BDE0 |
MPFlushAll |
sms | |
0x0046BE50 |
MPCheckConnection |
sms | |
0x0046C0A0 |
MPEnqueue |
re | core outbound primitive: enqueue param_3 bytes to peers matching param_1 (peer id / -1 all-others / -2 all) via MP_WriteAvail/MP_Write, gated by MP_Info connected_mask +0x158; stamps DAT_00546E30 last-send. Body @0x46C0A0 (docs: 'packet enqueue helper') |
0x0046C150 |
MPSetSlowComm |
sms | |
0x0046C190 |
MPConnect |
sms | |
0x0046C250 |
MPShutdown |
sms | |
0x0046C260 |
MPTimeSync |
sms | |
0x0046C280 |
MPMissionInit1 |
sms | |
0x0046C470 |
MPMissionInit2 |
sms | |
0x0046C500 |
MPMissionShutdown |
sms | |
0x0046C520 |
MPService |
sms | |
0x0046C680 |
MPInterpPosAxis |
re | interpolate one position axis from packet tick delta (uses MPUpdateInterval). Body @0x46C680 |
0x0046C780 |
MPUpdateInterval |
re | per-entity net update interval (LOD): class _cg==6/==4, distance from last-sent (+0x8C/8E/90 vs +0x1D/1F/21), _slowComm, CloseToAnything. Body @0x46C780; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0046C860 |
MPInterpAngleAxis |
re | interpolate one angle axis (uses MPWrapAngle). Body @0x46C860 |
0x0046C980 |
MPReceive |
sms | per-frame inbound dispatcher (entry; body=FUN_0046C98F). Keepalive/timeout scan + 0x10-0x51 dispatch + MP_Often tail |
0x0046EC40 |
MPRelToAbsTime |
re | resolve relative packet timestamp to absolute (+currentT; skips sentinels 0/0x7FFF). Body @0x46EC40; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0046EC60 |
MPResolveAlias |
re | map network alias <-> local object id via entity +0x74; walks _objPtrs[1.._nextObjId]. Body @0x46EC60 (the OBJ/net bridge) |
0x0046ECD0 |
MPReadAlloc |
re | MMAllocPtr(n) then MP_Read n bytes from peer 0 (bulk payloads: file/waypoint sync). Body @0x46ECD0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0046ED10 |
MPDecodeState16 |
re | decode packed pos(+angle) delta scaled by hdr+3 into int[3]/short[3] (packet 0x16). Body @0x46ED10 |
0x0046EDB0 |
MPDecodePos |
re | decode packed position delta bytes*0x1000 into int[3] (packet 0x14/0x15). Body @0x46EDB0 |
0x0046EE00 |
MPGetType |
re | peek/pull next packet type byte from peer (MP_PeekByte/MP_Read); -0x100 on EOF. Body @0x46EE00 (docs cite as FUN_0046EE00); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0046EE40 |
MPReadPayload |
re | read param_3 bytes iff fully available (MP_ReadAvail then MP_Read). Body @0x46EE40 |
0x0046EE90 |
MPClearDeadStatus |
re | zero _mpStatus[peer] for peers no longer in MP_Info connected_mask. Body @0x46EE90; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0046EED0 |
MPSend |
sms | |
0x0046FA40 |
MPAbsToRelTime |
re | encode absolute time to relative packet timestamp (-currentT; skips sentinels). Body @0x46FA40; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0046FA60 |
MPEncodeState14 |
re | encode packet 0x14: quantized pos delta (auto-exponent) + BAM angle delta /0xB6, writes alias +0x74. Body @0x46FA60 |
0x0046FBF0 |
MPEncodeState15 |
re | encode packet 0x15: small position-only delta (>>0xC). Body @0x46FBF0 |
0x0046FD50 |
MPSendSyncOnce |
re | broadcast one 0x10 sync byte once per session (guard DAT_004F78C8) via MPEnqueue(-1). Body @0x46FD50; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0046FDB0 |
MPRemoveCurObj |
sms | |
0x0046FE00 |
MPEndMission |
sms | |
0x0046FE30 |
MPSendGameMode |
sms | |
0x0046FE70 |
MPAddScore |
sms | |
0x0046FEF0 |
MPSendMissionSucceeded |
sms | |
0x0046FF20 |
MPSendScenarioEndTime |
re | broadcast packet 0x50 (_endScenarioSetTime - _currentTime) via MPEnqueue(-1). Body @0x46FF20; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0046FF70 |
MPPaused |
sms | |
0x0046FFC0 |
MPSetPaused |
sms | |
0x00470010 |
MPProjAdd |
sms | |
0x00470150 |
MPEjectAdd |
sms | |
0x004701A0 |
MPManAdd |
sms | |
0x00470250 |
MPPrepareForInterp |
sms | |
0x00470640 |
MPMsgSend |
sms | |
0x00470780 |
MPMsgRemapAliases |
re | remap object ids embedded in a T_MSG to/from net aliases (+8=0x4000/-0x8000/-1, sub-type +10) via MPResolveAlias. Body @0x470780; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004708B0 |
MPGraphicAddCrater |
sms | |
0x00470900 |
MPGraphicAddExp |
sms | |
0x00470990 |
MPGraphicAddSmoke |
sms | |
0x00470A20 |
MPGraphicAddDebris |
sms | |
0x00470A90 |
MPGraphicAddClusterRelease |
sms | |
0x00470B00 |
MPGraphicAddSpecialDebris |
sms | |
0x00470B70 |
MPGraphicAddHulk |
sms | |
0x00470BC0 |
MPLaunchDevice |
sms | |
0x00470C30 |
MPGraphicAddFire |
sms | |
0x00470CF0 |
MPGraphicAddSmokeAdder |
sms | |
0x00470DC0 |
MPGraphicRemove |
sms | |
0x00470E00 |
MPShellSendScreen |
sms | |
0x00470E40 |
MPPlayerChoseSide |
sms | |
0x00470E80 |
MPQuickButton |
sms | |
0x00470EB0 |
MPQuickButtonText |
sms | |
0x00470EF0 |
MPPlayerChoseFort |
sms | |
0x00470F30 |
MPFortButton |
sms | |
0x00470F60 |
MPFortButtonText |
sms | |
0x00470FA0 |
MPFortButton2 |
sms | |
0x00470FD0 |
MPFortButtonText2 |
sms | |
0x00471010 |
MPSendAntiCheat |
sms | |
0x00471070 |
MPSendCheatsOn |
sms | |
0x004710B0 |
MPSendFrameRate |
sms | |
0x004710F0 |
MPShowFrameRate |
sms | |
0x00471130 |
MPSingleFilename |
sms | |
0x00471190 |
MPSendPrefs |
sms | |
0x004711F0 |
MPMaybePausedMsg |
sms | |
0x00471360 |
MPWpnStats |
sms | |
0x00471400 |
MPKillStats |
sms | |
0x00471450 |
MPLandingStats |
sms | |
0x00471490 |
MPHUDMessage |
sms | |
0x004714D0 |
MPStatusInit |
sms | |
0x00471510 |
MPStatusSet |
sms | |
0x00471560 |
MPStatusToDrawSet |
sms | |
0x004715B0 |
MPStatusDraw |
sms | |
0x00471880 |
MPChatChecksum |
re | checksum of CHAT edit-line + all chat lines (DAT_00546EA0 stride 0x79 x DAT_00546DD4) for change/anti-cheat detection. Body @0x471880; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004718F0 |
MPDrawStatusLine |
re | truncate string to width + G_ColorPrint (MP status/chat draw helper). Body @0x4718F0 |
0x004719E0 |
MPEveryoneStatus |
sms | |
0x00471A30 |
MPWaitEveryoneStatus |
sms | |
0x00471A90 |
MPWaitStatus |
re | modal loop: poll MPReceive/MPCheckDisconnect until all peers reach status (or key/mouse abort); master uses MPStatusToDrawSet, slave MPStatusSet. Body @0x471A90 (docs: wait-for-everyone-status) |
0x00471B80 |
MPAllPeersAtStatus |
re | test whether every connected peer's _mpStatus == param_1. Body @0x471B80; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00471BD0 |
MPAssignPlayers |
sms | |
0x00471FA0 |
MPAssignPlanePlayers |
re | per-plane helper in MPAssignPlayers: for obj class 4 w/ flag, iterate DAT_00547324 player table. Body @0x471FA0; called from MPAssignPlayers; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00472100 |
MPComparePlaneRank |
re | qsort comparator ordering the multiplayer wing-assignment candidates by the 4-byte rank at +3 of each 7-byte record; ?MPAssignPlayers@@YGXXZ passes it to _qsort twice over the table at 0x547180 |
0x00472130 |
MPBuildSpawnPayload |
re | apply spawn position offset (+0x3E800/+0x1F400) and build up-to-500-byte payload; called from MPAssignPlayers. Body @0x472130 |
0x00472260 |
MPSetControl |
sms | |
0x004722D0 |
MPRequestControl |
sms | |
0x00472330 |
MPChangePlaneType |
sms | |
0x004723A0 |
MPSetFuel |
sms | |
0x00472400 |
MPSetHardpoints |
sms | |
0x00472520 |
MPSetWaypoints |
sms | |
0x004725B0 |
MPLifeNotify |
sms | |
0x00472670 |
MPRevive |
re | apply player revive/respawn; entry (12B) into body FUN_0047267C. Called from MPReceive packet 0x30 (docs: 'increments _playerRevives[peer]') and MPKey. Body @0x472670 |
0x00472A90 |
MPKey |
sms | |
0x004733E0 |
MPCheckDisconnect |
sms | |
0x004735C0 |
MPShellInitMessages |
sms | |
0x004735D0 |
MPChatStore |
re | append incoming chat/SAY message to on-screen buffer DAT_00546EA0 (6 lines x 0x79, count DAT_00546DD4); shifts when full. Body @0x4735D0; called from MPReceive 0x1A / MPKey; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0047F100 |
CN_NewSetLines |
sms | |
0x0047F190 |
CN_NewPrint |
sms | |
0x0047F370 |
CN_ClearLines |
sms | |
0x0047F390 |
CN_SetLines |
sms | |
0x0047F3B0 |
CN_Print |
sms | |
0x0047F5D0 |
CN_GetString |
sms | |
0x0047F5F0 |
CN_GetBigString |
sms | |
0x0047F6D0 |
CN_SetFactoryDefaults |
sms | |
0x0047F740 |
CfigChecksum |
sms | |
0x0047F7A0 |
CN_ReadConfig |
sms | |
0x0047F930 |
CN_WriteConfig |
sms | |
0x0047F990 |
RunSimpleConnect |
sms | CN_ReadConfig(NET.DAT) + MP_Initialize with dialog feedback |
0x004874C0 |
sapopensocket |
sms | SAP open socket - IPX Service Advertising Protocol; name-dispatched (label-only in a clean rebuild) |
0x00487670 |
sapserverbroadcast |
sms | |
0x00487760 |
sapquery |
sms | |
0x004878C0 |
sapprocessadvertisement |
sms | |
0x004922E0 |
SER_RemoteQueueFull |
sms | |
0x00492300 |
SER_UpdateRemoteQueueStatus |
sms | |
0x00492330 |
SER_ProcessStatusPacket |
sms | |
0x00492390 |
SER_ProcessDataPacket |
sms | |
0x004923B0 |
SER_ProcessResentPacket |
sms | |
0x00492460 |
SER_ProcessRequestPacket |
sms | |
0x004924C0 |
SER_WrapPacket |
sms | |
0x00492570 |
SER_ProcessIncomingPacket |
sms | |
0x00492690 |
SER_ReadIncomingPackets |
sms | |
0x00493780 |
RunIPXOptionsDialog |
sms | IPX/SPX network options dialog (switch over frame types); label-only in a clean rebuild |
0x00493EE0 |
connected_state_callback |
sms | |
0x004940E0 |
players_box_add |
sms | |
0x004941E0 |
players_box_connected_state_callback |
sms | |
0x00494BB0 |
noIO |
sms | no-op I/O stub directly before MP_Initialize |
0x00494BC0 |
MP_Initialize |
sms | |
0x00494CB0 |
MP_Info |
sms | |
0x00494CC0 |
MP_Shutdown |
sms | |
0x00494D40 |
MP_SetTransmitTimeout |
sms | |
0x00494D50 |
MP_Dont_care |
sms | |
0x00496F40 |
spxinit |
sms | SPX transport init - enumerate IPX adapters into a NET_ADDRESS_LIST |
0x00497000 |
spxinit2 |
sms | SPX secondary init from NET_PROTOCOL/CN_INFO |
0x00497010 |
spxlisten |
sms | open+bind an IPX socket and start SPX listening (backlog 5) |
0x004970C0 |
spxopensocket |
re | open an SPX socket - socket(6) then SPX ioctl 0x8004667e; sibling of sapopensocket; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00497150 |
spxconnect |
sms | SPX connect to a NET_ADDRESS |
0x004971D0 |
convert_addr_ipx2usnf |
sms | convert an IPX sockaddr to the engine NET_ADDRESS |
0x00497210 |
convert_addr_usnf2ipx |
sms | convert an engine NET_ADDRESS to an IPX sockaddr |
0x00497250 |
spxaddr2str |
sms | |
0x00497290 |
spxbuildaddress |
sms | build a NET_ADDRESS for an SPX peer from NET_PROTOCOL/CN_INFO |
0x004972D0 |
spxfactory |
sms | |
0x00499F70 |
setPacketInfo |
sms | write SERIAL_PACKET type (low2 bits of byte0 | 0xfc) and seq (byte3) |
0x00499F90 |
computePacketCRC |
sms | directly after setPacketInfo in the serial-packet unit |
0x0049A000 |
packetCRC |
sms | extract stored CRC (byte1 [+byte10 for type0/3]) by packet type |
0x0049A040 |
verifyPacketCRC |
sms | packetCRC()==computePacketCRC() |
0x0049A070 |
assignPacketCRC |
sms | store computed CRC into byte1 (+byte10 for type0/3) |
0x0049A0A0 |
SER_EnterCriticalCodeBackground |
sms | spin-acquire Ctrl busy flag (DAT_00570bb4) under critical section w/ Sleep(0) |
0x0049A100 |
SER_LeaveCriticalCodeBackground |
sms | clear Ctrl busy flag under critical section |
0x0049A120 |
SER_CheckDisconnect |
sms | detect link loss: modem carrier (IsCarrierDetect) / 8s idle timeout; on loss SER_ShutdownLowLevel + set disconnect flags |
0x0049A1B0 |
SER_GetOutholdingLimit |
sms | transmit-buffer flow control: BytesInTransmitBuffer -> out-holding budget (250-byte / 0xfa window) |
0x0049A260 |
SER_BackgroundThread |
sms | |
0x0049A380 |
InitializeQueue |
sms | directly before updateQueueHead in the serial-queue unit |
0x0049A3E0 |
updateQueueHead |
sms | head = seq % capacity; returns seq / capacity (wrap count) |
0x0049A400 |
insertQueue |
sms | copy wrapper (0xc dwords) into slot (seq%cap)*0x30; mark valid (+0x10=1); bump count |
0x0049A460 |
overwriteQueue |
sms | overwrite slot by wrapper seq without count bump (history record) |
0x0049A4A0 |
retrieveFromQueue |
sms | copy out slot at (idx%cap)*0x30 |
0x0049A4D0 |
fetchFromQueueTail |
sms | pop tail slot then zero it; advance tail; returns wrap count |
0x0049A520 |
SER_InitializeControlStruct |
sms | |
0x0049A660 |
SER_InitializeLowLevel |
sms | init control struct + 3 queues: InQueue(1024)/OutQueue(64)/HistoryQueue(256) with their packet buffers |
0x0049A6B0 |
SER_ShutdownLowLevel |
sms | mark link inactive (DAT_00570cc5=0); set player-drop mask; clear connected flag |
0x0049A6E0 |
fnc_toCallDuringAnswer |
sms | |
0x0049A700 |
strToCom |
sms | map "COM1".."COM8" (strcmpi vs DAT_005015d8..5015a0) -> 0..7; -1 if none |
0x0049A7D0 |
MOD_InitPortAndModem |
sms | SER_Initialize1/2 then ModemAttention/SetPortCharacteristics/ModemInit on port handle DAT_00570dcc |
0x0049A850 |
MOD_FindModemAndInit |
sms | |
0x0049A9B0 |
MOD_FindModemAndInitPCMCIA |
sms | enumerate Enum\PCMCIA for Class=modem PORTNAME=COMx; strToCom; MOD_InitPortAndModem |
0x0049AC00 |
MOD_WaitForCall |
sms | answer mode: ModemAnswerMode + poll IsRing / RX buffer for RING; ModemWaitForCall; appIO "Ring..." |
0x0049AD00 |
MOD_Initialize1 |
sms | dispatch: explicit COM (CN_INFO+0xbc!=8 -> +0x64) else auto FindModemAndInit then PCMCIA; serIO(0x19) on fail |
0x0049AD70 |
MOD_DoConnect |
sms | |
0x0049AF30 |
MOD_InitializeAndConnect |
sms | MOD_Initialize1 -> MOD_DoConnect -> SER_Initialize2_5/3/4/5 handshake; SER_Shutdown on any failure |
0x0049AFF0 |
MOD_Initialize |
sms | top-level modem entry: capture appIO (CN_INFO+0xdac); MOD_InitializeAndConnect; set connection type DAT_00500304=2; carrier-detect debounce |
0x0049B0D0 |
MOD_Shutdown |
sms | SER_Shutdown1 + Sleep + ModemHangup/AnswerMode + SER_Shutdown2/3 |
0x0049B110 |
serIO |
sms | |
0x004A45E0 |
AddJanesStatsJOGC |
sms | build the Janes Online Gaming Community post-mission stats report (MP_Info + playerDamage rankings) |
0x004A55F0 |
EveryoneHasChosenSides |
sms | all _humanChoseSide entries set |
0x004A5620 |
ChooseSidesDialog |
sms | MP side-selection dialog over MPWaitEveryoneStatus/MPPlayerChoseSide |
0x004A5760 |
FixChosenSides |
sms | rebalance when a side exceeds 5 players |
0x004A5810 |
ChooseSidesDialog2 |
sms | variant that verifies both sides are non-empty |
0x004A5990 |
winsock_load |
sms | |
0x004A5CB0 |
winsock_cleanup |
sms | |
0x004A5CE0 |
winsock_handle_error |
sms | |
0x004A5D10 |
winsock_process_error |
sms | |
0x004A5E00 |
winsock_set_non_blocking |
sms | |
0x004A5E50 |
winsock_set_buffer_sizes |
sms | |
0x004A5F90 |
socket_flush_close |
sms | |
0x004A5FA0 |
socket_close |
sms | |
0x004A6110 |
socket_close_non_player_sockets |
sms | |
0x004A6150 |
socket_close_socket |
sms | |
0x004A61A0 |
socket_close_all |
sms | |
0x004A6220 |
socket_get_state_ptr |
sms | |
0x004A6260 |
socket_add_state_func |
sms | |
0x004A62A0 |
socket_set_state |
sms | |
0x004A62B0 |
socket_set_socket |
sms | |
0x004A62C0 |
socket_set_type |
sms | |
0x004A62D0 |
socket_set_all_players_state_funcs |
sms | |
0x004A6320 |
socket_set_state_func |
sms | |
0x004A6390 |
socket_build_write_fds |
sms | |
0x004A6650 |
socket_get_fds |
sms | |
0x004A66C0 |
socket_check_duplicates |
sms | |
0x004A6760 |
socket_set_doa |
sms | |
0x004A67B0 |
socket_process_doa |
sms | |
0x004ABBF0 |
tcpinit |
sms | |
0x004ABD40 |
tcpinit2 |
sms | |
0x004ABD60 |
tcp_save_settings |
sms | |
0x004ABDC0 |
tcplisten |
sms | |
0x004ABF00 |
tcpconnect |
sms | |
0x004ABF90 |
tcpaddr2str |
sms | |
0x004ABFE0 |
convert_addr_usnf2tcp |
sms | |
0x004AC030 |
convert_addr_tcp2usnf |
sms | |
0x004AC080 |
tcpfactory |
sms | |
0x004AC0C0 |
tcpbuildaddress |
sms | |
0x004AC180 |
SER_SendBytes |
sms | append bytes to holding buffer DAT_00570bc2; debit out-holding budget DAT_00570bba |
0x004AC1D0 |
SER_SendHoldingBuffer |
sms | flush holding buffer via ser_rs232_putpacket; on error set flag + SER_ShutdownLowLevel |
0x004AC210 |
SER_OkToSendPacket |
sms | budget check (>0x17=23 bytes free); set pending flag DAT_00570edc |
0x004AC230 |
SER_SendPacket |
sms | per-type window check; stamp ack byte; assignPacketCRC; SER_SendBytes 0x18 bytes; bump per-type tx counters |
0x004AC2E0 |
SER_SendRequests |
sms | scan InQueue for gaps; send retransmit-request (type 3) via setPacketInfo+SER_SendPacket |
0x004AC3E0 |
SER_SendDataPackets |
sms | |
0x004AC480 |
SER_SendStatus |
sms | send status/ACK packet (type0) carrying last-tx seq + per-player state |
0x004B0610 |
NetSetProtocol |
sms | |
0x004B06C0 |
NetProtocolPresent |
sms | |
0x004B0700 |
NetSetFactoryTCP |
sms | |
0x004B0730 |
NET_GetLocalAddressString |
sms | |
0x004B0830 |
NET_Initialize |
sms | |
0x004B0940 |
NET_StartQuery |
sms | |
0x004B0A10 |
NET_Shutdown |
sms | |
0x004B0A90 |
NET_ShutdownQuery |
sms | |
0x004B0AC0 |
NET_Often |
sms | |
0x004B0BD0 |
NET_Synchronize |
sms | |
0x004B0CC0 |
NET_Disconnect |
sms | |
0x004B0CF0 |
NET_Write |
sms | |
0x004B0DD0 |
NET_WriteAvail |
sms | |
0x004B0E00 |
NET_Flush |
sms | |
0x004B0E50 |
NET_Read |
sms | |
0x004B10D0 |
NET_ReadAvail |
sms | |
0x004B1150 |
NET_PeekByte |
sms | |
0x004B1240 |
NETIsAddrLocal |
sms | |
0x004B1280 |
NET_GetLastError |
sms | |
0x004B12A0 |
NET_SendMessageAll |
sms | |
0x004B1350 |
NET_MakeAutoConnectAddress |
sms | |
0x004B1380 |
NET_Addr2string |
sms | |
0x004B13A0 |
net_add_player_id |
sms | |
0x004B1540 |
NETProcessEvent |
sms | |
0x004B1590 |
fill_in_mpinfo |
sms | |
0x004B1660 |
game_event_handler |
sms | |
0x004B16B0 |
net_write_output_q |
sms | |
0x004B18F0 |
scan_packet_queue |
sms | |
0x004B1A80 |
validate_packet |
sms | |
0x004B1B10 |
net_handle_fd_write |
sms | |
0x004B1B40 |
net_all_players_ready |
sms | |
0x004B1B60 |
get_pkt_err_string |
sms | |
0x004B1B80 |
net_send_all |
sms | |
0x004B1BF0 |
net_do_accept_connection |
sms | |
0x004B1CA0 |
net_set_ready |
sms | |
0x004B1CC0 |
net_print_player_found |
sms | |
0x004B1D00 |
net_add_self |
sms | |
0x004B1DD0 |
validate_player |
sms | |
0x004B1E00 |
clear_all_syncs |
sms | |
0x004B1E30 |
clear_all_sync_replies |
sms | |
0x004B2070 |
net_print_connection_failed |
sms | |
0x004B20C0 |
net_addr_equal |
sms | |
0x004B2120 |
net_mung_name |
sms | |
0x004B2180 |
net_unmung_name |
sms | |
0x004B2530 |
net_start_game |
sms | |
0x004B2590 |
net_set_callback_host |
sms | |
0x004B25B0 |
net_set_callback_players |
sms | |
0x004B25D0 |
net_set_callback_connected |
sms | |
0x004B25F0 |
state_func_query_hosts |
sms | |
0x004B2630 |
net_set_often_state |
sms | |
0x004B26C0 |
net_get_often_state |
sms | |
0x004B26D0 |
net_free_player_list |
sms |
HUD / cockpit¶
hud.csv · page — 42 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x00405E30 |
HUDInitMessages |
sms | |
0x00405E50 |
HUDDrawMessages |
sms | |
0x00405F50 |
HUDMessage |
sms | |
0x00406010 |
HUDReprintMessages |
sms | |
0x00406040 |
HUDInit |
sms | |
0x00406920 |
HUDRevive |
sms | |
0x00406950 |
HUDShutdown |
sms | |
0x00406A50 |
HUDDraw |
sms | |
0x004075D0 |
HUDDrawTargetView |
re | render a 3D shape into the HUD bitmap (_T_Make/_T_Render on _hudShape), flip and blit; target/padlock silhouette or combining-glass image |
0x004077B0 |
HUDSetWarning |
sms | |
0x004078B0 |
HUDDrawWarning |
re | draw the blinking warning string set by HUDSetWarning (STALL / LOW FUEL / ...) while unexpired; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00407930 |
HUDDrawConfigFlags |
re | stacked gear/flaps/speedbrake/hook annunciators gated by entity config bits (DAT_0050cfef); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00407A00 |
HUDDrawGLoadThrottle |
re | lower data block: G-load, throttle (THR AFT / THR %d%%) and thrust-vector line; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00407B60 |
HUDDrawHeading |
sms | |
0x00407EC0 |
HUDSpeedToY |
sms | |
0x00407EE0 |
HUDDrawSpeed |
sms | |
0x00408400 |
HUDAltToY |
sms | |
0x00408420 |
HUDDrawAlt |
sms | |
0x00408930 |
InitScreenMove |
sms | |
0x004089A0 |
HUDDrawPitchLadder |
re | climb/dive pitch ladder: rotate the pitch-bar table by roll, position vs waterline, dashed below / solid above horizon; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00408C80 |
HUDDrawLeadCaret |
re | lag/lead aim caret at the padlock target using a time-lagged sample; SymFont glyph bucketed by range |
0x00408E20 |
HUDDrawHVel |
sms | |
0x00409030 |
HUDDrawWeaponInfo |
sms | |
0x004092D0 |
HUDDrawRangeInfo |
sms | |
0x00409760 |
HUDDrawBombFall |
re | CCIP bomb fall line/pipper from the ballistic solution (PROJMakeBombEq/PROJBombPos); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00409910 |
HUDDrawGunReticle |
re | gun aiming circle + bearing tick + vertical range tape with weapon/lock/target markers |
0x00409BF0 |
HUDDrawApproach |
re | ILS/carrier glideslope box in landing submode (APApproachPath/CheckLandingParms) |
0x00409F30 |
HUDDrawTargetBox |
re | target-designator box over the padlock target (PROJLock tone/lock, GRTo2d projection, IFF glyph); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040A450 |
HUDSquawk |
sms | |
0x0040A530 |
HUDFindNearest |
sms | |
0x0040A6C0 |
HUDDrawTargetLabels |
re | name tags over visible targets; player's current target in a distinct color; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040A7F0 |
HUDDrawContacts |
re | radar/IR sensor contacts (CPGetContact), SymFont glyph per contact, locked one highlighted; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040AAC0 |
HUDBrightness |
sms | |
0x0040AB10 |
HUDSetFont |
sms | |
0x0040AB30 |
HUDSetSymFont |
sms | |
0x0040AB50 |
HUDSetWinFont |
sms | |
0x0040AB70 |
HUDSetDisrupt |
sms | |
0x0040ABB0 |
HUDDrawDisrupt |
sms | |
0x0040AC80 |
HUDSetStability |
sms | |
0x0040ACE0 |
HUDDrawStability |
sms | |
0x0040AD40 |
ComputeBombPosition |
sms | |
0x0040AE40 |
HUDHasFlaps |
sms |
Core shell / menu / dialog UI¶
shell-ui.csv · page — 199 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x004053D0 |
IFMSetTime |
sms | in-flight-menu open/close: pause time compression + dim palette + VIEWSnapshot (IFM family per FlightMenu) |
0x0040B8A0 |
MouseLoadPtr |
sms | load per-screen mouse pointer bitmap (PLANE.C etc.); reads _curScreen/_menuResolution |
0x0040BA10 |
ShellSetup |
sms | shell chrome setup: palette save copies, mouse pointer PIC (MOUSE320/MOUSEPTR), SHADV32/64 + corner drop-shadow PICs by _menuResolution, steel pattern + palette for the in-flight menu (curScreen 0x10), MenuCreateRemaps |
0x0040BC20 |
MaybeCampaignMenu |
sms | conditionally overlay the campaign action bar (MAINMENU.MNU) on a screen |
0x0040BD00 |
MaybeCampaignMenu2 |
sms | tail variant of MaybeCampaignMenu |
0x0040BD30 |
MenuStartUp |
sms | build+show a menu bar from a .MNU name; calls ShellSetup, clears _menuSelecting |
0x0040BF40 |
MenuInstallRemap |
re | install a palette color-remap table into a G-remap slot (0x114-0x118); called 5x by MenuCreateRemaps; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040BF60 |
MenuMeasureItemWidth |
re | measure widest menu item label via G_ColorStringWidth over the item linked list (+0x12 text, +submenu via FUN_0040c130) |
0x0040C130 |
MenuItemSubString |
re | skip a menu label's leading marker bytes (>1) and return the submenu/secondary substring, or NULL |
0x0040C160 |
MenuLoadFont |
re | load MENUFONT.PIC (640) or MFONT320.PIC (320) per _menuResolution into DAT_004ec21c; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040C1A0 |
MenuRemoveItem |
sms | remove a menu item by packed G-index |
0x0040C1D0 |
MenuLinkTerminate |
re | walk _firstMenu linked list to the tail and null-terminate it; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040C1F0 |
MenuCreateRemaps |
sms | build 5 shadow palette-remaps (menuShadow1..5 at 0x5221f0/0x5220f0/0x521ef0/0x521df0/0x521ff0, %=60/66/74/84/96) via FUN_0040d4e0; install slots 0x114-0x118 via FUN_0040bf40 |
0x0040C290 |
ShellOff |
sms | release shell chrome: hide mouse, restore + free the saved palettes, free the pointer save |
0x0040C310 |
MenuShutDown |
sms | tear down the menu bar: restore the saved menu-bar background (optional flush), free bar/steel/brush handles, restore submenu backgrounds, free the _firstMenu list |
0x0040C410 |
MenuDrawBar |
sms | save region under bar (menuBarSave) then draw the top menu bar from _firstMenu list |
0x0040C4F0 |
MenuUpdate |
sms | per-frame menu poll: ShellMousePos, hover/hit-test, returns selected G-index; skips mouse poll while _dialogOn |
0x0040C5A0 |
MenuCurrentIndex |
re | close open sub-item/menu highlights, then compute the packed (menu<<8 | item) index of the current selection; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040C670 |
MenuMouseSelect |
re | hit-test mouse over bar entries/items via MouseInBox; update _curMenu/_curSubMenu/_curItem, open/close dropdowns; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040C990 |
MenuDrawDropdown |
re | draw an opened submenu: save background (FUN_0040cea0/cf40), MenuSteelRect frame, item rows; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040CB10 |
MenuClearItemInvert |
re | restore the current item's inverted-highlight brush (pair of FUN_0040cb80); called by MenuCurrentIndex; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040CB40 |
MenuCloseSubMenu |
re | close/restore the open sub-menu highlight; called by MenuCurrentIndex and MenuMouseSelect; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040CB80 |
MenuInvertItem |
re | toggle the highlight brush over _curItem (invertItemBrush: AllocBitmap+BlitToBrush+URect2, or blit back+free); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040CC50 |
MenuInvertSubItem |
re | toggle the highlight brush over _curSubItem (invertSubItem); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040CD20 |
MenuInvertBar |
re | toggle the highlight brush over the _curMenu bar entry (invertMenuBrush); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040CDE0 |
CheckItem |
sms | set/clear checkmark on a menu item (via FUN_0040ce00 index lookup) |
0x0040CE00 |
MenuItemByIndex |
re | resolve a packed index (hi=menu#, lo=item#) to a MENU_ITEM* by walking _firstMenu; used by Check/Enable/DisableItem; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040CE70 |
EnableItem |
sms | enable a menu item by index |
0x0040CE80 |
DisableItem |
sms | disable/dim a menu item by index |
0x0040CE90 |
IsItemEnabled |
sms | |
0x0040CEA0 |
MenuSaveBackground |
re | save the screen region under a submenu into menuSaveBrush (+shadowWidth/Height margin); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040CF00 |
MenuRestoreBackground |
re | blit menuSaveBrush back to screen and free it; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040CF40 |
MenuSaveBackground2 |
re | second save-background path (item flag==0 branch of MenuDrawDropdown); pairs with FUN_0040cfa0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040CFA0 |
MenuRestoreBackground2 |
re | restore pair for FUN_0040cf40; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040CFE0 |
ShadowBox |
sms | 11-byte entry; drop-shadow frame around a rect. Worker is FUN_0040cfeb (tail) |
0x0040CFEB |
ShadowBoxDraw |
re | 403-byte worker behind ShadowBox@0x40CFE0: renders the 8-piece drop-shadow frame (shadowUR/LL/LR/H/V handles) |
0x0040D180 |
MenuSteelRect |
sms | draw the brushed-steel panel rectangle (uses steelHandle, FUN_0040d390 pattern) |
0x0040D390 |
MenuSteelPattern |
re | builds an i*i square table and tiles the brushed-steel gradient (DAT_004ec260) used by MenuSteelRect |
0x0040D4E0 |
MenuBuildRemap |
re | build a palette remap table scaling _curPalette RGB by param%/100; confirmed by MenuCreateRemaps callsites |
0x0040D5F0 |
PushShellAlloc |
sms | push MM alloc-id scope for shell allocations (paired with PopShellAlloc) |
0x0040D620 |
PopShellAlloc |
sms | pop shell MM alloc scope |
0x0040D640 |
ShellShowMouse |
sms | show software mouse cursor (ref counts via mouseShown) |
0x0040D6B0 |
ShellHideMouse |
sms | hide software mouse cursor |
0x0040D6E0 |
ShellMousePos |
sms | sample mouse: writes _shellMousePos, _shellButtons, _shellEvent |
0x0040D790 |
MouseInBox |
sms | hit-test _shellMousePos against a BOX; used by menu bar/item hover |
0x0041C820 |
NamesShutdown |
sms | free the NAMES list (_items) and zero the count |
0x0041C840 |
GetNames |
sms | build the NAMES list from a category mask: globs types*.PT/.NT/.OT/.JT, mission*.M, .T2, .2D, .P, .COM (sound-driver COMs excluded); 0x30-byte records {u32 class flags, filename, title[30]}; titles from mission header (file+4) or type record; type flags: class byte, +9 bit 0x4000 user-flyable, +0xba, year at +0x37 drives the reference era filters (e.g. 1955-1976) |
0x0041D580 |
NamesSort |
re | quicksort of the 0x30-byte NAMES records by title (stricmp at +0x11) via Swapmem |
0x0041D640 |
NamesCompare |
re | NAMES record compare: stricmp of the titles at +0x11 |
0x0041D670 |
NamesDedupe |
re | compact adjacent NAMES records with equal filenames (+4) after the sort |
0x0041D6F0 |
NamesShrink |
re | shrink-realloc _items to _numItems records |
0x0041D720 |
FreeNames |
sms | free _items |
0x0042E680 |
QuickMultiButton |
sms | quick-mission wizard: store button value into DAT_00537360[i]/DAT_00537260[i]; just past collision's range |
0x0042E690 |
QuickMultiButtonText |
sms | set a quick-mission wizard button's label |
0x0042E9A0 |
QuickMission |
sms | quick-mission creator loop (drives the 24 QUICKB*.DLG wizard steps) |
0x0045FEC0 |
INFO2Draw |
sms | draw the Jane's reference content pane (dirty-checked): mode 0 .INF text page via PrepareText/PrintText, mode 1 the 3-D shape view (display list w/ horizon proc + v_air/v_land/v_sea backdrop, palette from the shape PIC, rotate/zoom, carriers substitute x |
0x00460CB0 |
Info2MediaName |
re | build the media PIC name for a view mode: 2 -> |
0x00460F20 |
Info2SyncPalette |
re | when _curPalette changed, resync the reference screen palette copy + MenuCreateRemaps |
0x00460F60 |
Info2Frame |
re | draw one L-shaped frame border pair around the content pane |
0x00460FB0 |
INFO2SetType |
sms | select reference item n: free the per-screen pools (id 9), load the type record from _items[n], view distance = ObjRadius*15 (min 0x6400), count photo pages by probing |
0x00460FBB |
Info2SetTypeBody |
re | body of INFO2SetType (overlapping alternate entry) |
0x004613B0 |
Info2VideoName |
re | build the video (Cobra) file name for view modes 7/8/9 |
0x00461710 |
INFO2Screen |
sms | the Jane's reference screen loop: ar_menu/ar_dlg + day1.LAY weather + palette.PAL, menu = category filters (GetNames masks) + prefs/3-D-glasses items, dialog 1-10 = view mode, 0xb prev/next type, keys +/- zoom, arrows rotate 5 deg (0x38e), PgUp/PgDn page, Ins/Del cycle type, Space play video, mouse drag rotates/zooms; Fly button -> _missionName ~a |
0x004625B0 |
Info2PlayVideo |
re | play the current reference video via Info2VideoName + PlayCobra + DoFadeout |
0x004625F0 |
Info2Click |
re | ShellClickSound(0x140,1) - the reference screen click |
0x00467990 |
RemapInsignia |
sms | remap a T_BITMAP pixels through _insigniaRemap (squadron-insignia palette fix) |
0x004679C0 |
MakePicList |
sms | enumerate |
0x00467C30 |
FindPic |
sms | locate the current name in a MakePicList list and step prev/next (photo/nose-art/tail-art cycling) |
0x00474800 |
FlightMenu |
sms | the in-flight menu (FMENUD): pauses via _timeCompression=0x7fff; items map to control devices (stick 0-6/rudder 7-8/throttle 9-10 + InputCalibrate), time compression (-1,0..3 = shift counts), gamePrefs/gameMultiPrefs bits, F1-F10+F12 views (VIEWBuild 0x3b00-0x4400,0x5800), cockpit windows, envelope realism (_envelopeType 0-2), difficulty field (prefs low 3 bits), 3-D glasses, MP AI-skill dialogs, IFM show masks, free-flight APTeleport; WriteConfig + MISSIONPrefsChanged on exit |
0x0047D190 |
PageText |
sms | return the first printable char of page n from the current text context page table |
0x0047D1D0 |
FormatInit |
sms | zero the text-context stack (0x44-byte contexts at _fmtText) and the 14-slot font handle cache |
0x0047D200 |
FindSectionHeader |
sms | scan text for the 8-char tag "[section" with matching number argument |
0x0047D2C0 |
FindSection |
sms | find [section n] in a text buffer, returning the char after the tag |
0x0047D3A0 |
FormatArgNumber |
re | parse a numeric tag argument: FormatArgWord + atoi |
0x0047D3C0 |
FormatArgWord |
re | extract one whitespace-delimited tag argument (cut at space/tab/CR), reporting chars consumed |
0x0047D420 |
FormatFindSpace |
re | find the next space/tab (NULL at end of string) |
0x0047D440 |
PrepareText |
sms | paginate marked-up text into a new context: push _textNum, style 0-5 selects font + margin chars, optional [section n] start, builds 0x18-byte page records by measuring via FormatToken, optional background save bitmap when multi-page; returns page count |
0x0047D6C0 |
FormatLoadFont |
re | load font n from the TITLEFONT.PIC-rooted font name table (cached handles) |
0x0047D700 |
FormatToken |
re | the per-token engine: read one whitespace token, dot-directives dispatch to FormatDirective (0x47e1b0), plain words are measured/word-wrapped/rendered |
0x0047E1B0 |
FormatDirective |
re | the dot-directive interpreter (the vocabulary in formats/MT.md is read from THIS dispatch): .section/.page/.title/.header/.body/.italic/.bold/.underline/.left/.right/.center/.full/.indent_*/.picture/.sound/.music(_off)/.button/.dbutton with ..-prefixed off forms; unknown tokens render as text |
0x0047EEF0 |
FontGlyphSize |
re | glyph metrics from a font PIC: table at +0x2a, 6-byte records, width +2 height +4 |
0x0047EF30 |
PrintText |
sms | print one prepared page: restore background, load the page record cursor/state, run FormatToken in print mode to page end |
0x0047EFF0 |
FreeTextStuff |
sms | pop a text context: free page table + background bitmap, MusicOff if a [music] tag started one |
0x0047F050 |
EndText |
sms | pop all text contexts and free the cached font handles |
0x0047F0B0 |
InTextButton |
sms | hit-test mouse against the _buttonBoxes[_lastButton] MNU text-button array; in campaign seed range |
0x0047F500 |
_GetString |
sms | modal string-entry dialog: edit item 3 preloaded, prompt printed at dialog+offset; OK copies back (bounded) |
0x0047F610 |
ClipString |
sms | print a string clipped to a pixel width with an ellipsis suffix |
0x0047F61B |
ClipStringBody |
re | body of ClipString (overlapping alternate entry) |
0x0047FA30 |
RunDisconnectScreen |
sms | multiplayer disconnect confirmation screen (DDIAG.DLG) |
0x00487A3A |
WaitTicks |
sms | busy-wait N ticks (TIMESystemTime); dialog animation delay |
0x00487A63 |
DialogSetup |
sms | push a DIALOG frame (_curDialog = &_dialogStruct + ++_dialogNum*0x29); ChoosePreload header, link records |
0x00487E90 |
DialogLinkRecords |
re | per-record setup pass over the DIALOG record list (short-field init); called by DialogSetup; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004880D0 |
DialogShow |
sms | render the dialog: alloc/lazy-init background bitmap (+0x16/+0x1a), draw all records |
0x00488170 |
DialogBeginDraw |
re | common draw prologue: PushShellAlloc + ShellHideMouse |
0x00488180 |
DialogEndDraw |
re | paired draw epilogue (ShellShowMouse/PopShellAlloc) |
0x00488190 |
DialogShutDown |
sms | blit saved background back (param gated), free +0x16/+0x1a/+0x12 handles |
0x00488300 |
DialogDone |
sms | free all shared dialog fonts (wheel/list/panel/panelDisabled/panel2/actionBlue) |
0x00488470 |
DialogDraw |
sms | record draw dispatcher: walks next_record_ptr calling (**draw_fn_ptr)(record) |
0x00488490 |
DialogUpdate |
sms | event dispatcher (2617 B): per-record PointInBox hit-test, focus, slider/rocker/edit input, returns selected item |
0x00488F00 |
DialogWaitUntilTick |
re | spin on TIMESystemTime until a target tick reached (returns bool); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00488F30 |
DialogHelper488f30 |
re | small dialog helper (31 B); role not confirmed; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00488F50 |
DialogRadioGroupClear |
re | walk records; for type 1/5 matching group id at +0x17, clear the pressed flag (+0xb) — radio de-select |
0x00488FC0 |
DialogWhatItem |
sms | return _dialogItemPtr (last record that passed hit-test) |
0x00488FD0 |
DialogScrollbarHit |
re | type-7 scrollbar custom hit handler: PointInBox(+0x18) then callback +0x24 (DLG.md hit-zone table) |
0x00489070 |
DialogSliderRelease |
re | active-slider mouse handler: on button-up call slider callback +0x2c and clear _activeSlider |
0x004891A0 |
DialogScrollThumbInit |
re | initialise scrollbar thumb position from +0xb/+0xc/+0xe/+0x10 (DLG.md: called on show) |
0x00489220 |
DialogClampThumb |
re | clamp scrollbar thumb (+0x12) within track bounds (+0x16/+0x1a/+0x1e) |
0x004892E0 |
DialogGetPtr |
sms | resolve a record pointer by item id |
0x00489300 |
DialogGetValue |
sms | read a control's current value |
0x00489360 |
DialogMatchListString |
sms | find a list-box row by string; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00489400 |
DialogSetRocker |
sms | set a rocker control's state |
0x00489430 |
DialogSetValue |
sms | set a control's value; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004894F0 |
DialogSelectItem |
sms | mark a record selected (highlight) |
0x00489580 |
DialogDeselectItem |
sms | clear a record's selected/disabled bit |
0x004895D0 |
DialogSetString |
sms | set an edit/text record's string |
0x00489660 |
DialogUpdateString |
sms | refresh a text record after edit; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004896A0 |
DialogGetString |
sms | read an edit box's text buffer |
0x00489710 |
TopCenterDialog |
sms | center dialog: x=(sw-w)/2, y=(sh-h)/3; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00489760 |
Info2640Preload |
sms | preload header for INFO2640.DLG (OK+Cancel 640) |
0x00489780 |
Info640Preload |
sms | preload header for INFO640.DLG |
0x004897A0 |
GrafPrefPreload |
sms | preload header for GRAFPREF.DLG |
0x004897D0 |
SndPrefPreload |
sms | preload header for SNDPREF.DLG |
0x004897F0 |
ChoosePreload |
sms | DLG header record: PushShellAlloc, load action-button PIC/font by type (DLG.md); dispatched via computed indirect call |
0x00489810 |
MultiPreload |
sms | preload header for multiplayer dialogs |
0x00489840 |
LoadActionFont |
re | loads one action-button font/bitmap set (blue / red / blue2 / green, selected by the register argument) and warms the RM cache for the "LMR"+digit labels; called by _Info640Preload, _GrafPrefPreload, _SndPrefPreload, _ChoosePreload and _MultiPreload |
0x00489AC0 |
DrawText |
sms | type-9 static text renderer (DLG.md field layout); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00489B90 |
DrawAction |
sms | type-0 clickable action-button renderer (DLG.md field layout); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048A080 |
DialogFlush |
re | ShellShowMouse + G_Flush + ShellHideMouse |
0x0048A260 |
DialogBlitModuleBitmap |
re | blit from the DLG module bitmap (MMAccessR of _curDialog+0x1a) at dialog-relative x/y |
0x0048A2B0 |
DialogSetupBitmap |
re | SetupBitmapAccess wrapper for dialog rendering; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048A2F0 |
DialClick |
sms | |
0x0048A4C0 |
DrawDial |
sms | rotary dial control renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048A730 |
DrawLight |
sms | indicator light/LED renderer |
0x0048A7D0 |
PrintPageNums |
sms | render 'page N of M' for paged list widgets |
0x0048A8E0 |
DialogEnsureListFont |
re | lazy-load SMLFONT into _listFont if null; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048A910 |
DrawFormattedText |
sms | type-9 variant multi-line/paged text renderer (DLG.md); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048A9F0 |
DrawMissList |
sms | single-mission list renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048ABF0 |
DrawCampaignList |
sms | |
0x0048ADE0 |
DrawListBox |
sms | generic scrollable list-box renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048B320 |
DrawCheck |
sms | checkbox renderer (type 3); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048B450 |
DialogRockerRepeat |
re | rocker auto-repeat: reset rockerTicks/rockerLastTicks, step _activeRocker parent (+0x22) by +0x16; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048B4E0 |
DrawRocker |
sms | type-6 rocker/toggle renderer (two hit halves) |
0x0048B8B0 |
DialogHelper48b8b0 |
re | rocker/slider draw helper (62 B); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048B8F0 |
DialogHelper48b8f0 |
re | rocker/slider draw helper (62 B); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048B930 |
DrawToggle |
sms | two-state toggle renderer (type 8); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048BAD0 |
DrawSliderHoriz |
sms | horizontal slider renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048BBE0 |
DialogHelper48bbe0 |
re | small slider helper (31 B); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048BC00 |
DialogHelper48bc00 |
re | slider helper (96 B) |
0x0048BC60 |
DrawSliderVert |
sms | vertical slider renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048BDF0 |
DialogHelper48bdf0 |
re | slider/edit helper (99 B) |
0x0048BE60 |
CheckMousePtr |
sms | test/redraw mouse pointer over a widget rect during draw |
0x0048BEC0 |
DialogEditGeom |
re | compute edit-box on-screen geometry from _curDialog + focused record (+0x1e); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048BF50 |
DialogHelper48bf50 |
re | edit-box helper (66 B); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048BFA0 |
DialogDrawEditCaret |
re | draw the blinking text caret (G_Vline) at _cursorAt within the focused edit box; _selectEnd gate; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048C040 |
DialogEditKey |
re | edit-box keystroke handler (1220 B; char insert/delete/cursor); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048C510 |
DialogHelper48c510 |
re | edit helper (94 B); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048C570 |
DialogHelper48c570 |
re | edit helper (45 B) |
0x0048C5A0 |
DialogDrawEditText |
re | render edit-box text/selection (359 B) |
0x0048C710 |
DrawEditBox |
sms | type-2 edit-box renderer (DLG.md field layout); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048C800 |
DrawText320 |
sms | 320x200 static text renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048C8A0 |
DrawCheck320 |
sms | 320x200 checkbox renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048C970 |
DrawDial320 |
sms | 320x200 dial renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048CB00 |
Do320Button |
sms | 320x200 action-button dispatcher |
0x0048CBE0 |
DrawYes320 |
sms | 320 'Yes' button label renderer |
0x0048CC10 |
DrawNo320 |
sms | 320 'No' button label renderer |
0x0048CC40 |
DrawCancel320 |
sms | 320 'Cancel' button label renderer |
0x0048CC70 |
DrawDone320 |
sms | 320 'Done' button label renderer |
0x0048CCA0 |
DrawOK320 |
sms | 320 'OK' button label renderer |
0x0048CD40 |
DrawLight320 |
sms | 320 indicator light renderer |
0x0048CD70 |
DrawSwitch320 |
sms | 320 switch renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048CF10 |
SliderVert320 |
sms | 320 vertical slider renderer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048CFE0 |
ShellButtonSound |
sms | |
0x0048D030 |
ShellClickSound |
sms | play the UI click sound on a valid activation |
0x0048D090 |
ShellDisabledSound |
sms | play the 'disabled' buzz when a dimmed control is clicked |
0x0048D0D0 |
DisableActionButton |
sms | set record type_flags bit15 (dim); see DLG.md +0x00 |
0x0048D0E0 |
EnableActionButton |
sms | clear record type_flags bit15 (undim) |
0x0048D0F0 |
DialogEnableItem |
sms | enable/disable a dialog item |
0x0048D140 |
DialogItemIsEnabled |
sms | query a dialog item's enabled bit |
0x0048D150 |
LimitEditFieldLength |
sms | cap an edit field's character length |
0x0048D160 |
DialogTextStreamInit |
re | init a paged text-stream reader object (vtable[2]=LAB_0048d1d0, [3]=FUN_0048d1e0; alloc 0x26+0x1000); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048D1D0 |
DialogTextStreamMarkDone |
re | text-stream vtable slot 2: sets the one-shot notify flag at +0x24 that DialogTextStreamRead tests and clears, firing event 0x29 to the owning control |
0x0048D1E0 |
DialogTextStreamRead |
re | text-stream read callback: FUN_00486f20 decode into 0x1000 buffer; sets state 0x29/0x74; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0048D260 |
DialogTextStreamSkip |
re | text-stream vtable slot 4: advances the cursor by n bytes, calling DialogTextStreamRead to refill the buffer whenever the remaining count runs short |
0x004A0560 |
MakeNamesForList |
sms | concatenate all NAMES titles into one NUL-separated buffer for a DLG list widget |
0x004A0610 |
ScreenDirty |
sms | invalidate every scanline (_lineStats = 0xFF) to force a full redraw |
0x004A0640 |
DialogFadeout |
sms | palette fade for the Dialog family (shell-ui owns DialogSetup/Show/Update) |
0x004A0710 |
DialogFadein |
sms | |
0x004A0810 |
DialogDrawBkgd |
sms | blit |
0x004A0860 |
MainMenu |
sms | shell menu-bar service: Alt+F4 -> exit item 0x101/MaybeExitToDOS; menu group 2 -> CampaignMenu |
0x004A08A0 |
ChooseActivity |
sms | TOP-LEVEL shell screen dispatcher loop: gates on _doScreens, MP sync (MPSendGameMode/MPWaitEveryoneStatus), random CHOOSEAC/CHOOSE3 background, drives main-menu screen selection |
0x004A10B0 |
SingleFilename |
sms | store the picked single-mission filename to 0x572008 |
0x004A1810 |
SortIndexByString |
re | selection-sort an index array by stricmp of the indexed strings (campaign titles) |
0x004A18A0 |
CampaignSelect |
sms | the campaign chooser: glob *.CAM + mission*.CAM, each campaign's |
0x004A1C80 |
DialogPickFiles |
sms | generic file picker over GetNames(mask): captions Choose an object/mission/map by mask bit (0x8000 mission, 0x4000 map), list via MakeNamesForList, picked 0x30-byte record copied to _itemPicked |
0x004A2220 |
GraphicPrefs |
sms | graphics preferences dialog (GRAF320/GRAFPREF): detail radio pairs (0x4eb6bc/0x4eb6b2), graphics flag words 0x4eb6be (default 0xdf99) / 0x4eb6b4 (default 0xfffa), FPU warning before enabling flag 0x10000 when _fpuType==0 |
0x004A2480 |
SoundPrefs |
sms | the SNDPREF/SOUND320 sound-preferences dialog proc |
0x004A26F0 |
DoDialogInfoBox |
sms | modal info-box driver; freezes time (_timeCompression=0x7fff) when in cockpit (_curScreen==0x10) |
0x004A27C0 |
DialogInfoBox |
sms | generic INFO320/INFO640 message-box builder+run |
0x004C6710 |
QuickDist |
sms |
View / camera & replay (VIEW)¶
view.csv · page — 19 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x0040D7A0 |
VIEWSlew |
sms | slew (free-look) camera control |
0x0040D7F0 |
VIEWApplyMode |
re | if the view mode word (+0xB4) is set delegate to the view builder VIEWBuild; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040D810 |
VIEWFromObject |
re | position the view from the tracked object (_objPtrs[view+0x1C]) and its state; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040E240 |
VIEWUpdateByType |
re | per-object-type view update (object class 7/0xC/0xF branches) |
0x0040E2C0 |
VIEWFitDistance |
re | compute camera stand-off distance from the object radius (_ObjRadius); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040E330 |
VIEWAngleScale |
re | angle-to-scale clamp helper for the view transform |
0x0040E380 |
VIEWImmediateVisibility |
sms | force the view to immediate (no-transition) visibility |
0x0040E3A0 |
VIEWInit |
re | allocate/initialise a view slot (MMPushAllocId; zero +0x1C/+0x1E); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040E450 |
VIEWFree |
re | free the view's allocated buffer (_MMFreePtr on +0x60); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040E470 |
VIEWSnapshot |
re | copy the 0x30-dword view state block (snapshot/restore helper); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040E930 |
VIEWInTransition |
sms | returns non-zero while the view is mid-transition |
0x0040E960 |
VIEWReplayRecordGate |
re | replay record gate: inside the _timerTicks window (DAT_005223F0/F4) set replay-active DAT_005224C0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040EBA0 |
VIEWReplayPlayback |
re | replay playback: when replay-active copy the 0x30-dword saved-view buffer (DAT_00522400) into the view; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040EBC0 |
VIEWBuild |
re | build the external/spot view for the given mode (the view builder VIEWApplyMode calls); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040F230 |
VIEWModeLookup |
re | scan the view-mode table at DAT_004EC420; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040F270 |
VIEWScaleClamp |
re | clamp/scale helper for the view field-of-view or zoom; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040F2D0 |
VIEWSlewIntegrate |
re | frame-rate-scaled slew integration (_LMultDiv256 by _systemFrameTicks); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040F590 |
VIEWChangeObj |
sms | switch the view to a different tracked object |
0x0040F5D0 |
VIEWCanSeeTarget |
re | visibility/padlock check (_WRCanSee) gated on a _gamePrefs bit; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
Campaign / mission / pilot (MAP/CAM/MC/MM/PLT)¶
campaign.csv · page — 279 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x0041F800 |
FortDropdownInit |
re | open the Fort-mission type dropdown (NamesShutdown + rebuild the fort-type name list) |
0x0041F830 |
FortMultiButton |
sms | set the selected radio-button index in a Fort-mission multiplayer setup group |
0x0041F840 |
FortMultiButtonText |
sms | set a Fort-setup radio group by matching the given label against the fort-type name list |
0x0041F8D0 |
FortTypeNameList |
re | build (or fetch cached) the fort-type name list from the fort .M definitions |
0x0041FB60 |
FortMission |
sms | Fort (base-assault) mission builder |
0x00420790 |
FortSetupApplyA |
re | Fort setup helper: apply a picked option to the fort configuration |
0x004207C0 |
FortSetupApplyB |
re | Fort setup helper: apply a picked option to the fort configuration |
0x00420800 |
FortSetupApplyC |
re | Fort setup helper: apply a picked option to the fort configuration |
0x00420830 |
FortMissionSetup |
re | Fort ("base assault") mission setup: seed the RNG, set fort size/parameters, and configure the object-side filters from _gameMultiPrefs (sides 0x30000) |
0x00420AB0 |
FortSetupReset |
re | reset the fort-setup working state |
0x00420AD0 |
FortSetupCountA |
re | Fort setup helper: count/enumerate a fort option set |
0x00420B20 |
FortSetupCountB |
re | Fort setup helper: count/enumerate a fort option set |
0x00420BB0 |
FortSetupDialog |
re | the Fort-mission multiplayer setup dialog: fort type / sides / size selection driving FortMissionSetup |
0x00421C70 |
ZONEInit |
sms | |
0x00421C80 |
ZONEAdd |
sms | |
0x00421CC0 |
ZONEForGV |
sms | |
0x00421D40 |
ZONEActive |
re | zone active-window test: currentTime within [start,end] (param[7],param[8]); gate for ZONEUpdate; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00421DD0 |
ZONEUpdate |
sms | |
0x00421DE0 |
ZONEServiceRange |
re | per-zone service worker (variant of _ZONEUpdate@0 over a range); fires _PROJAdd/_PROJHit/_GRAPHICAddExp on schedule using _Rand/_Percent; not a C function (#479): mid-function split of _ZONEUpdate@0 (0x00421DD0) |
0x00422120 |
ZONEPickTarget |
re | resolve a target plane index for a zone from _planes/_numPlanes (base &DAT_005713a6) |
0x00422190 |
MAPWPListBounds |
re | walk a waypoint list: find head via flag bit0(&1), count entries to tail via bit1(&2); stride 0x44 |
0x004221D0 |
MAPObjAlts |
sms | |
0x00422230 |
MAPAdjustObjAlt |
re | raise current object altitude (DAT_0050ce95) to terrain via _T_Info; helper of @MAPObjAlts@4; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00422300 |
MAPSetSide |
sms | |
0x00422320 |
MAPMaybeSetControl |
sms | |
0x00422350 |
MAPMarkDirty |
re | clear DAT_00536720 hover, set DAT_00536518 redraw flag; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00422380 |
MAPWorldToScreen |
sms | |
0x004223BE |
MAPDrawGrid |
sms | |
0x004224B3 |
MAPScreenToWorld |
re | inverse of _MAPWorldToScreen: screen point * _mapScale + _worldCenter; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004224EE |
MAPDrawBG |
sms | |
0x0042256A |
MAPLoadBG |
re | load theater map background bitmap via _RMAccessHandle into DAT_004f0564 (alloc-id 7); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004225D4 |
MAPRefreshBG |
re | reload map BG if theater name (_th+0x54) changed; recomputes map extents DAT_00536418.._00536430; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00422667 |
MAPFreeBG |
re | free the map background handle DAT_004f0564; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042267F |
MAPUpdateWPPtrs |
sms | |
0x004226CB |
MAPSetObjWP |
re | set an object's active waypoint pointer (+0xe4); helper of @MAPUpdateWPPtrs@8; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004226EE |
MAPSetFormationWP |
re | set new WP for an object plus its wing (_WNGPart) and group (_GRPPart) members |
0x004226F0 |
MAPSetNewWP |
sms | |
0x004227AD |
MAPMaybeClearSelWP |
sms | |
0x00422828 |
MAPClearSelection |
re | clear map selection state: DAT_00536500 obj / _00536514 wp / _00536530 special / _005363e8 mode; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00422840 |
MAPClearHover |
re | 17-byte map-state setter (clears hover/redraw); role low-confidence, revisit; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00422851 |
MAPDrawSpecials |
sms | |
0x0042297E |
MAPAddSpecial |
re | allocate a 0x3a-byte 'special' map marker into the _specials/DAT_0053665c table |
0x00422A0D |
MAPOnSpecial |
sms | |
0x00422A71 |
MAPScreen |
re | mission-map/planning screen main loop (_curScreen==3); CAM.md 'FUN_00422a71'. Loads mc_menu/mc_dlg, drives waypoint/plane edit, save-mission, slew view; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00423ED4 |
MAPRebuildWPLoop |
re | recompute a waypoint loop back-pointer after edit (uses MAPWPListBounds + MAPWPOwnerIndex); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00423F30 |
MAPStoreLeafTmap |
re | write selected tmap id+rotation into _tlist at current leaf coords; _T_SortTmapList; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00423F90 |
MAPFindLeafTmap |
re | linear search _tlist[_tlistSize] for the entry at (x&0xfffc,y&0xfffc); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00423FD0 |
MAPReadLeafTmap |
re | read tmap id/rot at current leaf coords into DAT_00536724/_0053652c; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00424040 |
MAPSetLeafTmapPic |
re | load '%s%d.PIC' tmap thumbnail via _RMAccess for the selected leaf; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004240D0 |
MAPEditTmapDialog |
re | mc_name dialog: prompt for a tmap index, then apply via MAPStoreLeafTmap; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004241A0 |
MAPReadLeafTmap2 |
re | duplicate of MAPReadLeafTmap (separate call site); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004241D0 |
MAPSelWPIsPlayers |
re | true if the selected waypoint (DAT_00536514) belongs to the player's wing; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00424220 |
MAPObjInPlayerWing |
re | true if object id shares the player's wing (_WNGPart of _playerId); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00424290 |
MAPSpecialSelectable |
re | returns 0 in this build (special markers not directly selectable); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004242A0 |
MAPResetObjects |
re | reset/place ALL mission objects to start state: clear parks (_APClearParks), reassign airfield parking (_APNearest/_APAssignPark), reset positions/speeds/waypoints. Called after load and before save; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00424DE0 |
MAPSetWPTargetPos |
re | copy a waypoint target's world position (_WPTarget) onto an object; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00424E60 |
MAPClaimObjControl |
re | set current object owner byte DAT_0050ce90 = _thisComputer|0x80 (mark human-controlled); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00424EC0 |
MAPSetObjWPFlags |
re | set object's waypoint-capable flag (bit2 of +1) from class (5/7, or 3 with a group); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00424F20 |
MAPStatusText |
re | set the map help/status line text (DAT_005365a8) and render it via _PrepareText; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00424FA3 |
MAPWPOwnerIndex |
re | return the object index that owns a given waypoint pointer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00425023 |
MAPSnapWPToStrip |
re | snap a waypoint onto the nearest airstrip (_APNearest); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00425072 |
MAPWPNearStrip |
re | test whether a point is near an airstrip (_APNearest); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00425096 |
MAPScreenSpan |
re | compute world-space span of the current map viewport (two MAPScreenToWorld corners); signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand |
0x004250CE |
MAPPickObjIcon |
re | hit-test object icons at a screen point (12x10 px box), honoring MAPObjVisible; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00425196 |
MAPObjVisible |
re | object map-visibility/side filter using view mask _DAT_00536628 and side flags; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00425249 |
MAPPickWPIcon |
re | hit-test waypoint icons at a screen point; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042532A |
MAPSwapPalette |
re | swap map palette DAT_00536590 <-> _curPalette (enter/leave map draw); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00425358 |
MAPDraw |
re | full map render: 2D map (grid/BG/specials/icons/paths) or 3D leaf preview via _T_Make/_T_Render depending on mode DAT_005363f0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00425948 |
MAPDrawRuler |
re | draw the map scale ruler bar; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00425A8F |
MAPIconRadius |
re | compute on-screen icon radius from current map scale; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand |
0x00425ACD |
MAPDrawEra |
re | draw 'Historical Era' year range text (non-campaign multiplayer maps); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00425B8B |
MAPSyncSliders |
re | sync dialog X/Y sliders (items 4,3) to current _worldCenter/DAT_00536528; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00425C0A |
MAPRedrawSelection |
re | redraw highlight when the selected object changes; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00425C77 |
MAPDrawObjIcon |
re | draw one object's map icon: side color ring, type glyph (mcicons.PIC), padlock/target markers, label; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand |
0x00426277 |
MAPDrawTargetLink |
re | draw the dashed target link line from an object to its target; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004262DE |
MAPDrawAllPaths |
re | iterate visible objects and draw each waypoint path; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00426325 |
MAPDrawObjPath |
re | draw one object's full waypoint polyline + target links; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042648F |
MAPDrawWPIcon |
re | blit a single waypoint node icon (mcicons.PIC) |
0x0042658D |
MAPSetSelection |
re | set current selection to an object id / waypoint ptr / special index (DAT_00536500/_514/_530); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004265C1 |
MAPStepSelection |
re | advance waypoint selection +/-1 along the owning object's list; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00426696 |
MAPAssignWPTarget |
re | assign escort/target to the selected waypoint with validation ('can't escort yourself', 'can't target a zone'); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004267E4 |
MAPInsertWP |
re | insert a new waypoint after the selection: alloc (count+2)*0x44, _MMAllocPtr, splice via MAPUpdateWPPtrs, 'Only ten waypoints allowed'; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00426ACB |
MAPObjEditable |
re | ownership/editability test for an object (compares against DAT_00536504/_005364f8 special ids); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00426B70 |
MAPObjEditableP |
re | wrapper for MAPObjEditable(param,1); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00426BF0 |
MAPInitWPSpeed |
re | initialize a new waypoint's speed from _COCornerSpeed + formation defaults; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00426C45 |
MAPSetWPFormationParams |
re | copy formation offset/params from table &DAT_004f057e[idx*7] into a waypoint; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00426C6D |
MAPDeleteWP |
re | delete the selected waypoint (frees loop node, memmoves list, fixes head flag); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00426D6D |
MAPRequirePlayerPlane |
re | error 'You must first designate a plane' if no flyable/human plane exists; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00426D98 |
MAPHasFlyablePlane |
re | scan objects for a human-controllable class-4 plane (flags +0x10 bit7) |
0x00426DE2 |
MAPMakeSelPlayer |
re | make the selected class-4 object the human/player (calls MAPClaimObjControl); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00426E37 |
MAPAddObject |
re | add a new object to the mission: _DialogPickFiles, _T_AddObj, seed position/altitude/side per class flags; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00427195 |
MAPDeleteObject |
re | delete an object from the mission: _GRPRemove, _APDelete, clear chains, MAPResetObjects; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004271ED |
MAPWPButtons |
re | waypoint-properties dialog button handler: name/altitude/speed/formation/react/loop edits (mc_name dialog); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004276A0 |
MAPWPFormationIndex |
re | return a waypoint's formation-table index (&DAT_004f0578); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004276E9 |
MAPQuantizeAlt |
re | round an altitude to selectable increments within [min,max] |
0x00427721 |
MAPQuantizeToTable |
re | snap a value to the nearest entry of a speed/step table (&DAT_004f0740); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00427769 |
MAPObjButtons |
re | object-properties dialog button handler: side (mc_nat2), pilot name, plane type (_ChangePlaneType), fly-this-plane, success-condition flags; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004281DD |
MAPObjCampaignLocked |
re | editability gate that is stricter when _campaignFile != 0 (campaign missions are locked); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00428270 |
MAPObjEditableCheck |
re | wrapper: MAPObjEditable then flag test; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004282D0 |
MAPToggleObjControl |
re | toggle human control ownership of an object across the current-obj stack |
0x00428340 |
MAPCenterOnPlayer |
re | center the map _worldCenter/DAT_00536528 on the player object; select it; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00428412 |
MISSIONLoad |
re | canonical campaign/mission loader (CAM.md): MISSIONShutdown->Init1->CallMissionProc(.mc[_nato]_M or named)->Init2->MAPResetObjects->CenterOnPlayer->T_NamedTmaps/T_InitDictionary; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004284CA |
MAPSaveMission |
re | save-mission dialog: prompt filename (mc_name), validate, write .M via FUN_00495e80; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042866A |
MAPDragItem |
re | mouse-drag a selected object/waypoint to a new map position (ghost bitmap follow); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004289EE |
MAPSelWorldPos |
re | get the world position of the current selection (obj/wp/special); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00428A3B |
MAPDrawSelInfo |
re | draw the selection highlight glyph + rebuild the info panel (dispatches to MAPBuildObjInfo/MAPBuildWPInfo); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00428AEF |
MAPBuildWPInfo |
re | build the waypoint info-panel text and hot-button rects: heading/ETA/formation/react/target strings; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00429245 |
MAPFormatWPTarget |
re | format a waypoint's target name string (_WPTarget + _NextString); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004292D2 |
MAPFormatReactFlags |
re | map a react-flag byte to the button-index table (&DAT_004f0550) |
0x0042934C |
MAPBuildObjInfo |
re | build the object info-panel text and hot-button rects: pilot/heading/altitude/mission-success/attack flags; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00429DDE |
MAPMissionMenu |
re | mission-editor command dispatcher: view-filter toggles (DAT_00536628), CampaignMenu, save-changes prompt, opens all mc* scenario dialogs; drives wing/group add via MAPWingAdd/MAPGroupAdd; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042A656 |
MAPRandomizeSkill |
re | randomize a side's object AI-skill byte (DAT_0050cf62) via _Rand; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042A71A |
MAPLoadMissionDialog |
re | pick a mission file (_DialogPickFiles) and load it into the editor via MISSIONLoad; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042A780 |
MAPDlgWeather |
re | weather/time-of-day dialog (mc_weth); sets _startTimeOfDay/_currentTimeOfDay, random cloud offset; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042A93A |
MAPDlgEndTime |
re | end-scenario time dialog (mc_time); sets _endScenarioSetTime; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042A9C4 |
MAPDlgRevive |
re | revive/lives dialog (mc_lives); sets _reviveAllowed; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042AA50 |
MAPDlgReviveDelay |
re | revive-delay dialog (mc_delay); sets _reviveDelay; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042AADC |
MAPDlgReviveDist |
re | revive-distance dialog (mc_dist); sets _reviveDist; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042AB68 |
MAPDlgEndKills |
re | end-scenario kills dialog (mc_kills); sets _endScenarioKills; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042ABF4 |
MAPDlgEndKillType |
re | end-scenario kill-type dialog (mc_killt); sets _endScenarioKillsType; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042AC80 |
MAPDlgNatoFighters |
re | NATO-fighters side dialog (mc_natf); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042AD35 |
MAPDlgScoring |
re | scoring dialog (mc_scr); reads 4 score-weight fields; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042AE3F |
MAPWingRejoin |
re | rejoin/reposition a wing at its leader (_WNGPart, _wingIds/_wingSizes); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042AEDF |
MAPWingSetLeader |
re | make the selected object its wing's leader (_wingIds[slot]=sel); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042AF86 |
MAPWingAdd |
re | add an aircraft to wing slot N (_WNGAdd); 'No more aircraft can be added'; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042B056 |
MAPGroupRejoin |
re | rejoin/reposition a group at its leader (_GRPPart, _groupIds/_groupSizes); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042B0F6 |
MAPGroupSetLeader |
re | make the selected object its group's leader (_groupIds[slot]=sel); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042B19D |
MAPGroupAdd |
re | add an object to group slot N (_GRPAdd, _GRPHumansFirst); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042B275 |
MAPDeleteSpecial |
re | delete the selected special marker (_MMFreePtr on _specials[sel]); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00441C60 |
ChooseScoreInit |
sms | seed the combat-score display: latch the .MC proc(1) result into the scoreboard state and reset the combat-score timer |
0x00441C90 |
ChooseScore |
sms | score-screen selection (end-of-mission) |
0x0044CF00 |
FortMultiButton2 |
sms | second Fort-setup radio-group button setter |
0x0044CF10 |
FortMultiButtonText2 |
sms | second Fort-setup radio group text matcher |
0x0044D070 |
FortMission2 |
sms | Fort mission builder (variant 2) |
0x00467110 |
AwardMedal |
sms | append the medal title to the pilot service-record block (+0x5AF), skipped when the block would exceed 1000 bytes (#29) |
0x00467180 |
PilotSave |
sms | write a PILOT record to PLT%03d.P (slot -1 = PilotFindFreeSlot), 0x25e0 bytes via RM cache + SaveFile, insert into the sorted roster, set _pilotName |
0x00467240 |
PilotFindFreeSlot |
re | find an unused pilot save slot by probing PLT%03d.P (s_PLT_03d_P) with _Rand until _Open fails; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004672C0 |
PilotPhoto |
sms | blit the pilot photo PIC (name at PILOT+0x95) at (0x44,0x69) + MenuCreateRemaps |
0x00467310 |
CallsignChoose |
sms | callsign picker dialog: stores PILOT+0x41; derives the personal insignia ^ |
0x004674F0 |
PilotBuildPaper |
re | build the pilot logbook 'paper' text (mission count, Available/MIA/KIA/Retired status via _AddStats) and blit photo (_PilotPhoto). AnalyzePLT 'pilot card display'; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00467860 |
PilotPaperAddLine |
re | append one label/value line pair into the pilot-paper text buffer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00467880 |
PilotPaperEndLine |
re | append the final/terminating line to the pilot-paper buffer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004678B0 |
EditPilot |
sms | modal edit of one pilot string field; MISSIONEnsureLegalName on name+callsign; rebuild paper |
0x00467E30 |
PilotListAddAvail |
re | load a pilot file (_RMAccess 0x810c) and insert it sorted into _sortedPilots (_totalPilots++); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00467F30 |
PilotFindFile |
sms | does any PLT*.P with status 0 (available) resp. 1 (on campaign) exist |
0x00468020 |
PilotScreen |
sms | the pilot roster screen, 3 modes: 0 SHWPILOT select, 1 CONTPLT continue-campaign, 2 VIEWPLT view; validates PLT###.P (9-char name, version byte 0x0f, size 0x25e0) into avail/unavail rosters; photo list MakePicList(PILOT,164,134) + nose/tail-art lists; [button] strip via PrepareText; insignia remap fixups |
0x00468C40 |
PilotListAddUnavail |
re | load a pilot into the unavailable list _unAvailNames (_unAvailPilots++); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00468CA0 |
PilotMakeCopyName |
re | generate a unique 'NAME Copy N' pilot name, scanning both pilot lists; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00468DF0 |
PilotStripCopySuffix |
re | strip a trailing ' Copy' from a pilot name (_strstr s_Copy); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00468E40 |
PilotLoadBySortIndex |
re | load the pilot at sorted index (PLT%03d.P) and copy fields into _pilotName etc. |
0x00468F00 |
PilotFormatRank |
re | format a pilot's rank string from the _pilotRanks table; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00468F40 |
PilotDiskSpaceError |
re | 'You don't have enough free disk space' dialog before a pilot save; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00468F80 |
PilotSetField |
re | small pilot-record field setter (cdecl int,char); exact field low-confidence, revisit; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00469010 |
PilotFieldProc |
re | proc for the pilot-record field object: PilotSetField allocates the object, stores it at +0x17A and installs this as its proc (*puVar1 = FUN_00469010); it branches on the message in param_2 (0/2/3) and resets the two sub-fields to 0 |
0x004692D0 |
EJECTProc |
sms | |
0x00469300 |
EJECTEventProc |
sms | |
0x004694D0 |
EJECTMoveProc |
sms | |
0x0047FAA0 |
_SingleMission |
sms | single-mission entry — sets up a one-off (non-campaign) mission |
0x0047FAAE |
JOGCFetchMission |
re | download a mission file from the JOGC online server (_getMSdatafile/_getMSdatafilesize, _SaveFile), then run single mission. BORDERLINE: online path may belong to network #219; not a C function (#479): mid-function split of __SingleMission@0 (0x0047FAA0) |
0x0047FEC0 |
_CreateQuickMission |
sms | constructs a Quick mission |
0x0047FF30 |
_CreateFortMission |
sms | constructs a Fort mission |
0x0047FF40 |
_CreateFortMission2 |
sms | constructs a Fort mission (variant 2) |
0x0047FF50 |
_CreateProMission |
sms | Pro Mission Creator entry: MAPScreen when screens enabled, else fixed ~fake.M (error if missing) |
0x0047FFC0 |
_AircraftReference |
sms | shell trampoline to INFO2Screen |
0x0047FFD0 |
_ViewPilots |
sms | shell trampoline to PilotScreen (view mode) |
0x0047FFE0 |
_StartCampaign |
sms | CampaignSelect then PilotScreen; false when either cancels |
0x00480000 |
_ContinueCampaign |
sms | PilotScreen in continue-campaign mode |
0x00480020 |
_BriefPaper |
sms | briefing/debrief paper step: BriefScreen on |
0x00480110 |
_BriefMap |
sms | briefing map step: MAPScreen when enabled; returns next-screen code 0xd/0xb |
0x00480150 |
_SelectPlane |
sms | plane-select step via SelectRepairPlane (pilot-aware); next-screen code 0xe when skipped |
0x004801A0 |
_RepairPlane |
sms | repair-plane step via SelectRepairPlane(repair mode) when a pilot is loaded |
0x004801C0 |
InitAntiCheat |
sms | multiplayer anti-cheat: clear the FILE_CRC verification table (_localAntiCheat, stride 0x11) and per-computer cheat/frame-rate state |
0x00480230 |
ComputeCRC |
sms | CRC-32 (via _crc_table) over a class-specific prefix of an OBJ_TYPE record (0xa6 plane / 0xba GV / 0x1bc ordnance / 0x13b …), zeroing the variable tail fields first so only the tuning bytes count; fort missions exempt class-5 ordnance. Detects a modified .PT/.OT (souped-up plane) |
0x004804C0 |
GetAntiCheatIndex |
sms | find (or -1) the anti-cheat table slot for a type filename |
0x00480530 |
FindAntiCheatIndex |
sms | find the anti-cheat slot for a filename, returning the free slot count when absent (insert position) |
0x004805A0 |
UpdateAntiCheat |
sms | record this station's CRC for a type file into the shared table and set its presence bit (MP only) |
0x00480690 |
PostAntiCheat |
sms | broadcast every local CRC (MPSendAntiCheat) + the local cheats-on flag at mission start; arm the frame-rate/cheat-info display windows |
0x00480700 |
PostCheatsOn |
sms | broadcast whether the local player has cheats enabled; re-show the cheat banner on change |
0x00480750 |
MISSIONInit1Impl |
sms | THE mission bring-up: seed the RNG (Rand16 ^ system-time ^ waitCounter), zero all 8-slot per-player score arrays (kills/deaths/damage/revives/killRatio/scores + human/AI splits), reset scenario end-conditions (endScenarioKills/Time, revive rules), randomise wind, then init every sim subsystem in order — T_Init, OBJInit(300000), COLInit, CTInit, MSGInit, SAYInit, WNGInit, GRPInit, APInit, PLANEInit, ROInit, PROJInit, ZONEInit, GRAPHICInit — and clear the _stats block |
0x004809D0 |
MISSIONLoadOrdIcons |
re | load ordnance HUD icon PICs (ord_air3.PIC ...) during MISSIONInit2 when no player plane / at home airport |
0x00480A30 |
MISSIONInit2Impl |
sms | post-load pass (after _MISSIONTextProc built the objects): assign sides (MAPSetSide), find humans, resolve aliases (OBJAliasAll/ForMulti), set the mission clock, load the .MC event proc (host only), SAYInit2 + ChooseScoreInit, load ordnance icons, first MISSIONCheckSuccess |
0x00480B40 |
MISSIONInit1 |
sms | C-linkage entry wrapping _MISSIONInit1 (the mission bring-up), for the .MC/shell callers |
0x00480B50 |
MISSIONInit2 |
sms | |
0x00480B60 |
MISSIONInit3 |
sms | third init phase: reset the SAY home/succeeded/failed flags and seed them from MISSIONSucceededForThisPlayer |
0x00480B70 |
MyFilterProc |
sms | |
0x00480B80 |
MISSIONInitMedalInfo |
sms | set _playerHasWingmen from the player's wing size (medal eligibility) and refresh the cheating state |
0x00480BE0 |
MISSIONSetCheating |
sms | sets the mission cheating flag |
0x00480C20 |
LoadCampaignProc |
sms | load the campaign proc resource -> _campaignProc |
0x00480C40 |
InitCampaignPilot |
sms | |
0x00480C90 |
AddCampaignPlane |
sms | |
0x00480D70 |
CampaignPlanesLeft |
sms | |
0x00480D90 |
UkraineCheckMaxPlanes |
sms | |
0x00480DF0 |
UkraineAddA7 |
sms | |
0x00480E10 |
AddCampaignStore |
sms | imported by 6 shipped .CAM overlays (#491); named at this VA by FA.SMS |
0x00480EA0 |
LoadCampaignStores |
sms | sync the campaign 50-slot stores pool (16-byte records at PILOT+0x1c60: type + count at +0xe) with the player plane hardpoints: param 0 returns stores to the pool, 1 deducts (clamped 0); -1 count = unlimited |
0x00480F90 |
UkraineRescued |
sms | |
0x004810C0 |
KurileRescued |
sms | |
0x004810D0 |
VietnamRescued |
sms | |
0x004810E0 |
ATFRescued |
sms | |
0x00481190 |
UkraineQuit |
sms | |
0x004811A0 |
ConfirmQuitMission |
re | quit-mission confirmation (shared body of the KurileQuit/VietnamQuit thunks): AlmostHome + CallMissionProc success test -> "If you quit before reaching home..." / "You have not yet fulfilled the mission..." yes/no |
0x00481260 |
KurileQuit |
sms | |
0x00481270 |
VietnamQuit |
sms | |
0x004812B0 |
CampaignDiskError |
sms | disk-full/read-only/cannot-write dialogs, then campaign state 0x11 + CampaignOff |
0x00481320 |
CampaignSave |
sms | write _campaignPilot (0x25e0, base 0x4f8bb8) to the RM cache + the pilot file; disk error path on failure |
0x00481370 |
CampaignOff |
sms | free the campaign proc + clear campaign/pilot/mission name globals and _campaignPlane |
0x004813C0 |
AbortCampaign |
sms | confirm (when mid-mission), then CampaignOff + state 0x11 |
0x004813F0 |
CampaignMenu |
sms | campaign menu-bar commands: 1 = restore PILOT.BKP + state 4 (replay mission), 2 = AbortCampaign |
0x00481440 |
CallCampaignProc |
sms | the campaign driver: cmd 0 init, 1 = save PILOT.BKP + invoke + SeqEnd (mission start), 3 = post-mission (playerBailed test, bail zeroes the 0xbc-byte plane-roster slot at +0xdb0, home landing stores damage into the slot + repair% = dam*100/max + type+0x1b4 clamp 100, LoadCampaignStores return, stats: missions/failures/bails/wingman at +0x1f80..), 4 = debrief (dead/MIA/failed -> retry restores PILOT.BKP else save+off), 5 = end (victory appends to the campaigns-won field +0xc2), 6/8 = query, 7 = bail notify |
0x00481920 |
CampaignProcInvoke |
re | low-level campaign-DLL call: latch __campaignFailures=DAT_004fab40 then (*_campaignProc)(cmd). Inner worker of _CallCampaignProc@4 |
0x00481940 |
CallMissionProc |
sms | dispatches into the mission's compiled .MC DLL proc (see MC.md); called from _MISSIONTextProc for the mission-logic handoff |
0x004819F0 |
MISSIONShutdown |
sms | tear the mission down once (guard flag): WRShutdown, T_Shutdown(+DB), OBJShutdown, VIEWFree, HUDShutdown, CTShutdown, MPMissionShutdown, sound off, SAYShutdown, StreamersShutdown, free the mission RM/MM alloc id 1 |
0x00481A70 |
MISSIONSuccess |
sms | imported by 15 shipped .MC overlays (#491); named at this VA by FA.SMS |
0x00481A7B |
MISSIONEnemiesAlive |
re | scan objects for a live enemy during the first 300 ticks (_Alive, _currentTime<300); mission start-grace test used near _AlmostHome; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00481B80 |
AlmostHome |
sms | within 0xA50000 of APHomeAirport and below 0x4E2000 alt (RTB gating) |
0x00481BD0 |
ConvertOldPreferredTargetId |
sms | widen an old 16-bit save target id to the 32-bit form (save compat) |
0x00481C10 |
MISSIONTextProc |
sms | the .M mission-file interpreter (#485): whitespace-tokenizes the file via TextNextToken over a global cursor (_0x55281c/_0x5528c0), dispatches a keyword switch that reads numeric fields (TextNextNumber) and constructs the live mission — _T_AddObj per placement, then _WNGAdd (wing)/_GRPAdd (group)/_HARDLoad (loadout)/MAPAddSpecial, and _OBJAlias+_WPSetWaypoints for waypoint lists. Header directives set _layerName/_missionDLLName/_mapName/_missionHours; _CallMissionProc runs the .MC DLL |
0x00483C90 |
TextNextToken |
re | whitespace-delimited token scanner over the parse cursor DAT_0055281c..DAT_005528c0. MC.md: MISSIONTextProc tokenizer FUN_00483c90; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00483D10 |
TextIsDelim |
re | predicate: is char a token delimiter/whitespace (helper of TextNextToken); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00483D30 |
TextNextNumber |
re | read next token and convert to integer (_StringToNumber); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00483D50 |
TextTokenToValue |
re | scalar token->value conversion helper (uint->uint); low-confidence, revisit |
0x00483E00 |
UkraineMedals |
sms | Ukraine campaign medal pass: test criteria, set the +0x572 medal-flag band, _AwardMedal the title (Navy decorations) (#29) |
0x00484050 |
KurileMedals |
sms | Kurile campaign medal pass: test criteria, set the +0x572 medal-flag band, _AwardMedal the title (Navy decorations + Yellow Fever) (#29) |
0x004842B0 |
KurilePromotions |
sms | |
0x00484410 |
VietnamMedals |
sms | stub — return 0; the Vietnam campaign awards no medals (#29) |
0x00484420 |
VietnamPromotions |
sms | |
0x00484430 |
ATFEgyptMedals |
sms | ATF Egypt campaign medal pass: test criteria, set the +0x572 medal-flag band, _AwardMedal the title (Air Force decorations) (#29) |
0x00484690 |
ATFVladMedals |
sms | ATF Vladivostok campaign medal pass: test criteria, set the +0x572 medal-flag band, _AwardMedal the title (Air Force decorations) (#29) |
0x004848F0 |
ATFPromotions |
sms | |
0x00484B70 |
ATFBalticMedals |
sms | ATF Baltic campaign medal pass: test criteria, set the +0x572 medal-flag band, _AwardMedal the title (Air Force decorations) (#29) |
0x00484D90 |
EndOfMissionStats |
sms | end-of-mission player statistics (kills/losses/score) |
0x00485040 |
EndOfFortMissionStats |
sms | end-of-mission statistics for Fort (base-assault) missions |
0x004851C0 |
MISSIONFortDestroyed |
sms | Fort-mission: a fort object was destroyed |
0x00485260 |
MISSIONFortDestroyedByFort |
sms | Fort-mission: a fort was destroyed by another fort |
0x004852F0 |
MISSIONFortStatus |
sms | Fort-mission: current fort status query |
0x00485380 |
CampaignAccumStats |
re | fold end-of-mission stats into campaign running totals (DAT_004fab44.. += DAT_0054ddc4..) via StatsAddPair. AnalyzePLT 'stats flush'; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004854A0 |
StatsAddPair |
re | add a fired/hit counter pair (accumulator). AnalyzePLT 'weapon accuracy accumulator'; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004854E0 |
WpnStats |
sms | per-weapon stats accumulator: bump the shots/hits/kills/misses counters in the StatsBucketFor bucket by event type (0 fire, 1 hit+damage, 2 kill, 3 miss); Jane's Online counts only human-target events; mirror to peers (MPWpnStats) |
0x004856F0 |
StatsBucketFor |
re | resolve the per-player weapon-stat bucket for a shooter/target id (_playerId/_playerWMId). AnalyzePLT 'weapon accuracy dispatch'; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00485820 |
KillStats |
sms | tally one kill into the right category (13 buckets x player/wingman at 0x54ddx8) from the victim class/type-flag bits — friendly kill, plane, fort-gun, heli, ship, ground vehicle, SAM, AAA, structure, etc.; mirror to peers (MPKillStats) |
0x00485A40 |
LandingStats |
sms | tally a landing for the player/wingman and add its quality score (good = +50/+100); mirror to peers (MPLandingStats) |
0x00485AE0 |
ConvertPilotFiles |
sms | pilot-file migration: 0x15b4 legacy records (pre-FA) converted field-by-field to the 0x25e0 layout and rewritten; other wrong-size files renamed to .POO |
0x00485EF0 |
CheckCD |
sms | imported by 6 shipped .CAM overlays (#491); named at this VA by FA.SMS |
0x00486010 |
MISSIONLoadCommonResources |
sms | loads the resources common to every mission |
0x00486060 |
CanBackUp |
sms | can the briefing sequence step back a screen — screen-code + doBriefMap/doSelectPlane/doBriefPaper gating (host always can) |
0x004860F0 |
MISSIONFortWin |
sms | Fort-mission win condition test |
0x00486160 |
MISSIONEndScenario |
sms | the end-of-scenario test (multiplayer): time limit, four kill-goal modes (team total / either side reaches N / any single player / enemy team), Fort win via MISSIONFortWin (0x80 friendly, 0x800000 enemy), and the Jane's Online all-dead / out-of-revives condition; calls SetScenarioEndTime(2) when met |
0x00486440 |
MISSIONScoreSides |
sms | sum friendly vs enemy team scores (each MISSIONScore, capped at 0x3e700) |
0x004864D0 |
MISSIONScore |
sms | one player's score by the _scoreBy metric: 0 = kills, 1 = kill/death ratio, 2 = damage |
0x00486500 |
MISSIONSortPlayers |
sms | qsort the player index array by score (descending, id tiebreak) for the scoreboard |
0x00486530 |
MISSIONScoreCmp |
re | qsort comparator for MISSIONSortPlayers: compare two players by MISSIONScore, id as tiebreak |
0x00486580 |
MISSIONAddScore |
sms | mission scoring accumulator (#485) |
0x004867D0 |
MISSIONPlayerSlot |
re | resolve the player-score array slot index for a computer/object id (used by _MISSIONAddScore); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00486810 |
MISSIONPrefsChanged |
sms | apply changed game prefs to the live player plane: unlimited weapons (HARDUnlimited), guns-only (HARDGunsOnlyAll), refresh cheating flags |
0x00486860 |
MISSIONCheckSuccess |
sms | per-tick mission success poll; drives _MISSIONFortWin / end-of-mission |
0x004868B0 |
MISSIONSucceededForThisPlayer |
sms | _missionSucceeded from the local player's side perspective (negated when this station flies the opposing side) |
0x00486910 |
MISSIONEnsureLegalName |
sms | strip in-string "." / "^" control markers from a pilot name/callsign so they cannot smuggle sound/insignia directives |
0x00486980 |
MISSIONUpdateFpsRatio |
re | store the FPS ratio DAT_5528f0 = frames/ticks (mission timing readout helper) |
0x004869A0 |
TIMESystemTime |
sms | |
0x00486A10 |
TIMEInit |
sms | |
0x00486A90 |
TIMERestart |
sms | |
0x00486AA0 |
TIMEUpdate |
sms | |
0x00486C60 |
TIMESetCompression |
sms | |
0x00486E20 |
InstallTimerInt |
sms | |
0x00499380 |
WPSetWaypoints |
sms | |
0x004993C0 |
WPSetupCurrent |
sms | |
0x00499640 |
WPGoalObjEvent |
sms | |
0x00499680 |
WPMaybeAdvance |
sms | |
0x00499840 |
WPChange |
sms | |
0x004999B0 |
WPPos |
sms | |
0x00499A50 |
WPObj |
sms | |
0x00499AA0 |
WPTarget |
sms | |
0x00499AD0 |
WPDoingWaypoints |
sms | |
0x00499AF0 |
WPDirString |
sms | |
0x00499C50 |
WPOptimizeWaypoints |
sms | |
0x004A10E0 |
SingleMission |
sms | the single-mission browser: glob the .M files, read each mission's title from [section 1] of its .MT (falling back to the filename), sort (SortIndexByString), present the SNGLMISS dialog picker with MP filename sync, and on OK write _missionName (uppercased) + return 1 to launch |
0x004A1DD0 |
BriefScreen |
sms | briefing/debrief screen: loads |
0x004A2A30 |
AddStats |
sms | compose the marked-up debrief/logbook stats text: CAMPAIGN/MISSION AVERAGES/PLAYER WINGMAN/AIRBASE/MISSION sections, kills/losses/damage/landing grade/elapsed time lines, [center]/[bold]/[underline] tags |
0x004A5970 |
CanReplay |
sms | mission replay available: a mission is loaded and not multiplayer |
Collision (COL)¶
collision.csv · page — 19 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x0042B800 |
Collision |
sms | |
0x0042BD30 |
COLSetAngle |
sms | |
0x0042BDC0 |
COLSweepTerrain |
re | swept segment-vs-terrain grid walk (<=20 cells; ClipSegToCell + TestTerrainCell) |
0x0042BFC0 |
COLTestTerrainCell |
re | test one terrain grid cell's two triangles (corner heights + normals); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042C1A0 |
COLTestTerrainTri |
re | segment vs one terrain triangle plane; records a blocking hit |
0x0042C420 |
COLClipSegToCell |
re | Cohen-Sutherland XZ clip of the segment to one terrain cell column |
0x0042C840 |
COLTestObjects |
re | object broad-phase: AABB-overlap the frame's registered ids; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042C9B0 |
COLTestObj |
re | object narrow-phase: ray into object local frame, box-hierarchy clip; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0042D050 |
COLClipSegToBox |
re | segment vs oriented box: 6-plane clip with closure radius |
0x0042DDA0 |
COLFlatGround |
sms | |
0x0042DE60 |
COLRecordHit |
re | keep-nearest hit accumulator (blocking slot / object slot) |
0x0042DF80 |
COLPitchToAvoidTerrain |
sms | |
0x0042E0C0 |
COLGetInfo |
sms | |
0x0042E100 |
COLGetBox |
sms | |
0x0042E140 |
COLDrawInfo |
sms | label-only in FA.SMS; ApplySymbols materializes the function |
0x0042E4E0 |
COLTerrainBlocking |
sms | |
0x0042E530 |
COLInit |
sms | |
0x0042E540 |
COLAddObj |
sms | |
0x0042E5C0 |
COLRemoveCurObj |
sms |
Sound / music (incl. WAIL32)¶
sound.csv · page — 53 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x00412A90 |
ButtonSound |
sms | play _BUTTON1/_BUTTON2.11K via SingleSound (sound owns Single/BasicSound) |
0x004328B0 |
InitMusic |
sms | |
0x00432920 |
ShutDownMidi |
sms | |
0x004329A0 |
DMusicOn |
sms | |
0x004329E0 |
MusicOn |
sms | |
0x00432A80 |
DMusicVolume |
sms | label-only in FA.SMS; ApplySymbols materializes the function |
0x00432A90 |
SoundActive |
sms | |
0x00432B40 |
MusicVolume |
sms | |
0x00432BD0 |
DMusicOff |
sms | |
0x00432C00 |
MusicOff |
sms | |
0x00432C30 |
ScoreOn |
sms | |
0x00432C70 |
ScoreOff |
sms | |
0x00432CA0 |
ScoreUpdate |
sms | |
0x00432F70 |
ScorePlaying |
sms | |
0x00432F80 |
ShellMusicUpdate |
sms | |
0x00433170 |
ShellMusic |
sms | |
0x00433180 |
InitSound |
sms | |
0x00433280 |
ShutDownSndDriver |
sms | |
0x004332F0 |
ShutDownMixer |
sms | label-only in FA.SMS; ApplySymbols materializes the function |
0x00433300 |
InitMixer |
sms | |
0x00433480 |
SoundPoints |
sms | |
0x004334D0 |
SoundNoMixer |
sms | |
0x00433580 |
SingleSound |
sms | |
0x004335C0 |
BasicSound |
sms | |
0x004335F0 |
BasicLinkSound |
sms | label-only in FA.SMS; ApplySymbols materializes the function |
0x00433640 |
LoopSound |
sms | |
0x00433680 |
SoundOn |
sms | |
0x00433CE0 |
SoundOff |
sms | |
0x00433D40 |
SoundAllOff |
sms | |
0x00433D80 |
SoundSetup |
sms | |
0x004343B0 |
ViewPan |
sms | |
0x00434550 |
Turbulence |
sms | |
0x00434620 |
SoundRelease |
sms | |
0x004347A0 |
CheckSndPurge |
sms | |
0x004347E0 |
SetupLoopSounds |
sms | |
0x00434800 |
MaybeLoopSound |
sms | |
0x00434920 |
UpdateLoopSounds |
sms | |
0x004349D0 |
ServiceSounds |
sms | |
0x00435480 |
StopGameSounds |
sms | |
0x004354B0 |
PollMod |
sms | label-only in FA.SMS; ApplySymbols materializes the function |
0x004357C0 |
SoundPrioritize |
sms | |
0x00435900 |
StartWaitingSounds |
sms | |
0x00435980 |
StartVoice |
sms | |
0x00435A00 |
SetVolPitchPan |
sms | |
0x00435AE0 |
CheckSndLink |
sms | |
0x00435B40 |
GetMixerStatus |
sms | label-only in FA.SMS; ApplySymbols materializes the function |
0x00435B80 |
SoundStatus |
sms | |
0x00435BC0 |
SndLostFocus |
sms | |
0x00435C20 |
SndGotFocus |
sms | |
0x00435C30 |
SoundName |
sms | |
0x0046B4C0 |
InitAudio |
sms | |
0x0046B4D0 |
CleanAudio |
sms | |
0x0047A670 |
ShutdownGraphicsSystem |
sms |
Memory & resource managers (MM/RM)¶
memory-resource.csv · page — 86 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x00412FC0 |
cdpath |
sms | scan logical drives for the FA CD (GetDriveTypeA==DRIVE_CDROM + probe fopen); caches _CDPATH |
0x00435C60 |
MMInit |
sms | alloc handle table operator_new(count*0x1C); thread all handles onto free list; GetSystemInfo page size; sets mm_initialized |
0x00435D40 |
MMShutdown |
sms | MMFreeAllId for ids 0..0x12 (19 pools) then free handle array; clears mm_initialized |
0x00435D80 |
MMAllocHandle |
sms | core allocator: MMInternalAlloc(size)+MMUseHandle -> T_HANDLE*; frees block if no free handle |
0x00435DC0 |
MMMapFile |
sms | |
0x00435E90 |
MMUnmapFile |
sms | UnmapViewOfFile + CloseHandle(mapping) + CloseHandle(file) |
0x00435ED0 |
MMUseHandle |
sms | pop mm_unused_list; fill data(+8)/len(+C)/flags(+10)/allocId(+12); push onto mm_used_list |
0x00435F70 |
MMAllocPtr |
sms | MMAllocHandle then return handle->data (+8) |
0x00435F80 |
MMFreeHandle |
sms | unmap(if flag 0x4000) or MMInternalFree data; RMNotify if flag 0x0010; unlink used-list; push to free list |
0x00436040 |
MMFreePtr |
sms | MMPtrToHandle then MMFreeHandle |
0x00436060 |
MMReallocHandle |
sms | |
0x004360D0 |
MMReallocPtr |
sms | MMPtrToHandle then return handle->data (thin realloc-by-ptr shim) |
0x004360E0 |
MMInternalAlloc |
sms | |
0x00436110 |
MMInternalFree |
sms | |
0x00436140 |
MMPtrToHandle |
sms | linear scan mm_used_list for handle whose data(+8)==ptr |
0x00436170 |
MMPushAllocId |
sms | save mmAllocId onto id save-stack @0x538250 (depth @0x4F3DCC); set new id |
0x00436190 |
MMPopAllocId |
sms | restore mmAllocId from id save-stack |
0x004361B0 |
MMCompactRAM |
sms | stub -> return 0 (no heap compaction on Win32) — the Mac-heritage purger that would discard purgeable handles and set T_HANDLE flag 0x1000 (purged); its readers (RMFind/RMFindAndLoad/BrushFromIndex/MAPDrawBG free-and-reload on the flag) are dead recovery paths in the shipping build |
0x004361C0 |
MMFreeAllId |
sms | walk mm_used_list; MMFreeHandle every handle whose allocId(+12)==id (group free) |
0x004361F0 |
MMHandleLen |
sms | return handle->len(+C) if data non-null else 0 |
0x00436210 |
MMLock |
sms | |
0x00436220 |
MMLockW |
sms | |
0x00436230 |
MMLockR |
sms | |
0x00436240 |
MMLockE |
sms | SMS-named; not in inventory; extended-lock variant in the MMLock family (undecompiled) |
0x00436260 |
MMUnlock |
sms | no-op ret (Win32 memory is fixed) |
0x00436270 |
MMAccessR |
sms | |
0x00436280 |
MMAccessW |
sms | |
0x00436290 |
MMAccessE |
sms | return handle->data(+8)+offset (0 if handle/data null); THE handle-deref primitive |
0x004362C0 |
MMAreaFree |
sms | SMS-named; not in inventory; free-area query (returns KA/ulong) |
0x004362D0 |
MMByteAt |
sms | (int8)(base+off) |
0x004362E0 |
MMWordAt |
sms | (int16)(base+off) |
0x004362F0 |
MMUWordAt |
sms | SMS-named; not in inventory; unsigned 16-bit read primitive; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00436300 |
MMLongAt |
sms | SMS-named; not in inventory; signed 32-bit read primitive; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00436310 |
MMULongAt |
sms | (uint32)(base+off) |
0x0046A370 |
SMInit |
sms | load the FA.SMS symbol map ( |
0x0046A4C0 |
SMShutdown |
sms | |
0x0046A4E0 |
SMAddress |
sms | binary-search the symbol map: name -> address (RM binds |
0x0046A570 |
SMCallByName |
sms | |
0x00478BC0 |
LibStartUp |
sms | |
0x00479630 |
DoLoadLibFile |
sms | |
0x004797E0 |
CompareHints |
sms | comparator for the SearchLib hint table (DoLoadLibFile < here < SearchLib) |
0x004798B0 |
SearchLib |
sms | |
0x00479960 |
FindNext |
sms | file-find family inside the LIB-search unit (SearchLib < here < LibOpen) |
0x00479A60 |
FindFirst |
sms | |
0x00479B20 |
FindClose |
sms | |
0x00479B50 |
MatchPattern |
sms | |
0x00479BD0 |
LibOpen |
sms | |
0x00479DA0 |
GetDiskFree |
sms | |
0x00479F50 |
GetDosFileTime |
sms | |
0x004A5540 |
GetFiles |
sms | collect 8.3 filenames matching pattern into a table over _FindFirst/_FindNext/_FindClose |
0x004A67F0 |
RMInit |
sms | zero resList[1400] (0x19FA dwords) and resCache[20]; set rmInitialized(@0x50A618)=1 |
0x004A6820 |
RMShutdown |
sms | RMFree every live resList slot; zero table; clear rmInitialized |
0x004A6860 |
RMType |
sms | |
0x004A6870 |
RMChangeType |
sms | |
0x004A68F0 |
RMLocate |
sms | register key(uppercased)+flags(+0E)+ptr(+0F) in first free RES_LIST slot; tag allocId(+0D)=mmAllocId |
0x004A6970 |
RMUnlocate |
sms | RMFind(name) then clear name byte (release the RES_LIST slot) |
0x004A6990 |
RMFind |
sms | uppercase key; check 20-entry LRU resCache then linear-scan resList; refresh timerTicks; purge dead handles (flag&2 && handle+0x11&0x10) |
0x004A6AB0 |
RMCacheInsert |
re | insert RES_LIST ptr into resCache evicting the oldest (min timerTicks) slot; stamps timerTicks [FUN_004a6ab0]; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004A6AE0 |
RMAccess |
sms | |
0x004A6B30 |
RMFindAndLoad |
re | core resolve+load+register; name from embedded string "RMFindAndLoad: can't load %s" @0x50A624; SMCallByName |
0x004A6CC0 |
RMAccessHandle |
sms | RMFindAndLoad then return the raw handle/ptr (+0x0F) WITHOUT dereferencing |
0x004A6CE0 |
RMFree |
sms | RMFind; if flag bit0 SMCallByName |
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 |
0x004A6E20 |
SetupBitmapAccess |
sms | |
0x004A6E50 |
LoadPIC |
sms | RM-cached PIC load (RMFind/RMChangeType/G_LoadBitmap/RMLocate); 10 bytes past the declared range end 0x4A6E46 |
0x004A7240 |
RMLegalFilename |
sms | canonicalize a resource filename in place (IsBadStringPtr len 0xD; collapse to a single '.'); OUT-OF-RANGE claim (sits in terrain span) |
0x004ACDC0 |
DiskInit |
sms | disk-I/O layer 0x4ACDC0-0x4AD3A0 directly preceding LoadFile@0x4AD3C0 which builds on it |
0x004ACDF0 |
GetHandle16 |
sms | |
0x004ACE50 |
Open |
sms | |
0x004ACF30 |
Create |
sms | |
0x004ACFA0 |
Close |
sms | |
0x004AD0C0 |
Read |
sms | |
0x004AD140 |
Write |
sms | |
0x004AD1C0 |
UGetFileSize |
sms | |
0x004AD220 |
Delete |
sms | |
0x004AD250 |
Rename |
sms | |
0x004AD270 |
GetCurrentPath |
sms | |
0x004AD2E0 |
SaveFile |
sms | |
0x004AD380 |
ClearCachedFilenames |
sms | |
0x004AD3A0 |
GetExecutablePath |
sms | |
0x004AD3C0 |
LoadFile |
sms | |
0x004AD9B0 |
LoadFile2 |
sms | |
0x004ADAC0 |
ConcatDirAndFile |
sms | path join for LoadFile/LoadFile2 (sits between them and PlayVDOFile) |
0x004C60F0 |
DecodeFile |
sms | LZSS ring decoder over _lzwBuff (0xFEE init / 0x20 fill); named API entry of the waived lzwlib unit |
Cockpit sensors (radar / IR / RWR)¶
cockpit-sensors.csv · page — 63 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x00438520 |
CPSetMissile |
sms | set the currently-selected missile/weapon on the scope |
0x004385C0 |
CPClearMissile |
sms | clear the selected missile |
0x004385E0 |
CPCopyView |
sms | copy the cockpit view state |
0x004386C0 |
CPToggleWindow |
sms | toggle a cockpit MFD/scope window |
0x00438870 |
WPCInit |
sms | compute the on-screen positions/sizes of the cockpit MFD windows (the 0x539d38 layout table) from the screen resolution (0x55c06a/0x55c06c) and the scale shifts (0x538808/0x538800); param selects a layout variant |
0x0043887B |
WPCInitBody |
re | overlapping alternate entry of WPCInit |
0x00438B70 |
CPInit |
sms | cockpit-sensor init: allocates the radar + RWR contact buffers and resets the scopes |
0x00439170 |
CPShutdown |
sms | cockpit-sensor shutdown |
0x00439220 |
CPDraw |
sms | render the radar/IR/RWR scopes and cockpit MFDs (the scope renderer; consumes the contact buffers CPAddItemToScopes fills) |
0x00439E40 |
CPScopeProject |
re | project a contact's world position into scope coordinates for the radar/RWR renderers |
0x0043A0B0 |
CPDrawScopeButton |
re | draw a small labelled indicator/button in a scope corner (highlighted when selected) |
0x0043A190 |
CPDrawWindow |
re | the cockpit MFD window dispatcher: switch on _windowTypes[i] to render each scope — 1 -> CPDrawWindow1, 2/3 -> radar B-scope (front/other view), 4/0xb -> target MFD, 5/6/7/8/9 -> the other MFDs, 10 -> the RWR (CPDrawRWR); blit to screen/brush by the return code |
0x0043A364 |
CPWindowDirty |
re | MFD helper: has a scope window changed since last draw |
0x0043A400 |
CPDrawEmptyWindow |
re | draw an empty/framed cockpit MFD window |
0x0043A5C0 |
CPDrawRadarScope |
re | the radar B-scope / target-designation MFD renderer (front/other/target views): walks the radar contact buffer, draws each contact, resolves the designated target and the selected-weapon lock, and is weather-gated via WRCanSee (renderer.md). The subsystem's largest scope renderer |
0x0043BB50 |
CPScopeBlank |
re | blank/prep a scope drawing surface |
0x0043BBA0 |
CPDrawWindow8 |
re | cockpit MFD window-type 8 renderer |
0x0043BF60 |
CPDrawWindow6 |
re | cockpit MFD window-type 6 renderer |
0x0043C2F0 |
CPDrawWindow7 |
re | cockpit MFD window-type 7 renderer |
0x0043C5B0 |
CPScopeHelperA |
re | scope-renderer helper (shared drawing primitive) |
0x0043C610 |
CPScopeHelperB |
re | scope-renderer helper (shared drawing primitive) |
0x0043C6B0 |
CPDrawTID |
re | a large cockpit MFD renderer (tactical/threat information display): draws the contact list with range rings and symbols |
0x0043CEC0 |
CPScopeHelperC |
re | scope-renderer helper |
0x0043CF10 |
CPScopeHelperD |
re | scope-renderer helper |
0x0043CFB0 |
CPScopeHelperE |
re | scope-renderer helper |
0x0043D0E0 |
CPScopeHelperF |
re | scope-renderer helper |
0x0043D290 |
CPScopeHelperG |
re | scope-renderer helper |
0x0043D460 |
CPScopeHelperH |
re | scope-renderer helper |
0x0043D690 |
CPDrawWindow1 |
re | cockpit MFD window-type 1 renderer (thunk into the body) |
0x0043D69B |
CPDrawWindow1Body |
re | cockpit MFD window-type 1 renderer body |
0x0043DB40 |
CPScopeHelperI |
re | scope-renderer helper |
0x0043DCC0 |
CPScopeHelperJ |
re | scope-renderer helper |
0x0043DDD0 |
CPRadarRange |
sms | current radar range setting |
0x0043DE00 |
CPToggleHistory |
sms | toggle the radar history trail |
0x0043DE10 |
UsingSuppRadar |
sms | is the supplementary (secondary) radar in use |
0x0043DE90 |
CPSetSkill |
sms | set the AI/radar skill level |
0x0043DEE0 |
CPAddItemToScopes |
sms | per-target visibility gate: runs the radar / IR / RWR detection tests and inserts the contact into the matching scope buffer (0x53bea8 radar+IR, 0x539e58 RWR) |
0x0043DF70 |
CPRadarSees |
re | radar detection predicate: target alive (+1 bit0) and radar-detectable (type +9 bit 0x20), passes the mode-specific look-down/altitude filter (_radarMode 0x5387d8; modes gate ground-clutter, RCS at type +0x3b sets max range), lies in the scan-bounds box (0x5387e0 up / 0x539d78 down), is inside the radar-beam FOV (PROJInFOV), and is not terrain-blocked. Chaff (GRAPHIC type 0xc/0xd) always shows |
0x0043DF7B |
CPRadarSeesBody |
re | overlapping alternate entry of CPRadarSees |
0x0043E220 |
CPSuppRadarSees |
re | supplemental (AWACS/GCI datalink) detection predicate: only when UsingSuppRadar; a wider bounds box (0x539e50 / 0x5387a0), inserted into the radar scope as a datalink contact (mode 1) |
0x0043E330 |
CPRwrSees |
re | RWR detection predicate — is this emitter illuminating the player: for a SAM/AAA site (class 6) the emitter must be on (type +0xa6 bit1), not in a non-emitting state (+0xb4 != 4), not in the exclusion-name list, and within 0x76ac00; for a plane (class 2/4) it must be radar-capable and have the radar-locking-me flag (+0xde bit 0x400) |
0x0043E450 |
CPScopeInsert |
re | insert-or-update a detected object into a scope contact buffer (radar/IR at 0x53bea8, RWR at 0x539e58), deduping by object id and refreshing its record |
0x0043E700 |
CPScopeFindContact |
re | find an existing contact record for an object id in a scope buffer |
0x0043E780 |
CPRemoveItemFromScopes |
sms | remove a contact from the scopes |
0x0043E7B0 |
CPScopeClearEntry |
re | clear one scope contact-buffer entry |
0x0043E7E0 |
CPBombRange |
sms | current bomb-range/CCIP setting |
0x0043E810 |
CPUpdateRadar |
sms | per-frame radar sweep: timestamps the scan and clears the sweep accumulator |
0x0043E830 |
CPResetRWR |
sms | reset the RWR: zero the radar-scope and RWR contact buffers (2x 0x6d6 dwords) and re-arm the scan timers |
0x0043E8C0 |
CPComputeRCS |
sms | radar-cross-section + IR-signature model: sums a target's signature from base size (type +0x45), configuration (gear/bay/afterburner via the +0x16F flags), aspect (pitch +0x1F, bank +0x21), damage (+0x10), and the class extension (+0xDE). The gameplay-defining input to the weapons seeker/lock model (weapons.md) |
0x0043EA40 |
CPDrawRWR |
re | the RWR threat-display renderer: refreshes every 0x40 ticks, draws the threat ring + the RCS diamond from _frontRCS/_sideRCS, and each RWR contact coloured by lock state — a track lock is red (0x2b) and a search lock yellow (0x2c) until _currentT passes _trackLockEndT/_searchLockEndT (the RWR spike timing) |
0x0043F0E0 |
CPScopeForEach |
re | walk a scope contact buffer applying a predicate/callback (thunk) |
0x0043F0EA |
CPScopeForEachBody |
re | body of CPScopeForEach: iterate the contact buffer, dropping entries the predicate rejects |
0x0043F280 |
CPScopeAge |
re | age out stale scope contacts past their timeout |
0x0043F300 |
CPContactVisible |
re | is a scope contact currently drawable (on-scope + not expired) |
0x0043F360 |
CPScopeSymbol |
re | pick + draw the symbol/colour for one scope contact by its class/threat state |
0x0043F510 |
CPDrawWindow5 |
re | cockpit MFD window-type 5 renderer (thunk) |
0x0043F51A |
CPDrawWindow5Body |
re | cockpit MFD window-type 5 renderer body |
0x0043FAF0 |
CPDrawGroundRadar |
re | cockpit MFD case-9 renderer: the air-to-ground / ground-map radar scope — sets _radarMode=4 when A/G radar is on (0x50cf5e bit 0x100000), picks the best air-ground seeker (HARDBestSeekers 3), and draws the contact list via CPScopeRangeRing/CPScopeSelectContact. Was masked by an IP.EXE cross-binary waiver (#477) |
0x00440BF0 |
CPScopeRangeRing |
re | draw the range rings / scale marks on a scope |
0x00440D00 |
CPScopeSelectContact |
re | update the selected/designated contact highlight on a scope |
0x00440E10 |
CPNextTarget |
sms | cycle the radar-scope target: scan the radar contact buffer (0x53bea8) for the next (or previous) radar-detectable contact past/before the current target range — the t / T keys (input.md FlightKey) |
0x00440FE0 |
CPUpdateIRItems |
sms | per-frame IR-item update: refreshes the IR-seeker contact list |
0x00441160 |
CPGetContact |
sms | in the CP scope unit (CPNextTarget < here < ChooseScoreInit) |
.SEQ scripted-cutscene / sequence player (SEQ)¶
seq.csv · page — 41 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x00412C10 |
PlaySeq |
sms | public entry - SeqStart then GetKey/SeqContinue/flush loop then SeqEnd; scattered out-of-range |
0x00444F70 |
SeqInit |
sms | zero all seq lists/free-lists/arrays (seqList seqGrArray seqFontArray seqLabels seqText); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00445060 |
SeqStart |
sms | load .SEQ file - alloc a 0x38-byte SEQUENCE slot - build background bitmap - returns slot index; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00445330 |
SeqLoadScript |
re | LoadFile the .SEQ then loop skip/expand/include lines into compiled command buffer; recursive for includes |
0x00445440 |
SeqSkipComments |
re | scan script text past blank lines - ; and // comments - whitespace; return next content or NULL; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004454D0 |
SeqSubstitute |
sms | expand %N token into the N-th SeqStart argument string |
0x00445550 |
SeqExpandLine |
re | tokenize one script line into seqLine - handle quotes and %-substitution; return next line; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004456B0 |
SeqParseInclude |
re | detect an include directive and extract the quoted filename; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00445700 |
SeqContinue |
sms | main per-tick interpreter - fade + labels + fetch line + build SEQ+cmd name and SMAddress-dispatch the sub-op; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00445B40 |
SeqFetchLine |
re | read next raw line from compiled buffer into seqLine - parse leading timecode (/abs +rel frame) into next-command tick; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00445CC0 |
SeqParseLabel |
re | parse =label definition - copy name into a seqLabelList node and set seqLabelPtr; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00445D30 |
SeqStop |
sms | tear down one sequence slot - free handle - return label/graphic nodes to free lists |
0x00445E30 |
SeqEnd |
sms | stop all active sequences - SoundAllOff - MusicOff - RMFreeAllId(4); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00445E70 |
SeqRect |
sms | script op - set current sequence clip rectangle (x y w h); absent-from-inventory |
0x00445ED0 |
SeqRender |
re | per-frame render - SetupBitmapAccess then expire nodes then walk seqGraphics ring drawing dirty SEQGR nodes under clip box; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446090 |
SeqExpireGraphics |
re | age SEQGR ring nodes vs timerTicks - set expired/dirty flags; return redraw-needed; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446100 |
SeqNextOverlap |
re | iterate SEQGR ring for next node whose rect overlaps a given rect |
0x00446170 |
SeqGraphicOrder |
re | SEQGR list walk via prev-links (+0x28) to a target node - returns its left-x; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004461A0 |
SeqDrawGraphic |
re | draw one SEQGR node by type - 1 bitmap blit - 2 filled rect - 4 multiline color text; mark overlaps dirty; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446330 |
SeqAccessResource |
re | RMAccessHandle wrapper that credits the load time back into seqIgnoreTicks |
0x00446360 |
SeqRedrawRegion |
re | redraw a SEQGR node clipped to a sub-rect (partial refresh of overlapped area); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446500 |
SeqNewGraphic |
re | allocate a SEQGR node from seqGrList free-list - link into seqGraphics ring - set rect/type/expiry/name; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446610 |
SeqGRFind |
sms | find a SEQGR node by its name string; absent-from-inventory |
0x00446660 |
SEQbitmap |
sms | script op - load and display a bitmap as a SEQGR node; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446710 |
SeqLinkLabel |
re | link seqLabelPtr into the sequence label list and set the synch wait target when seqSynch |
0x004467B0 |
SEQblock |
sms | script op - draw a filled colored block as a SEQGR type-2 node |
0x00446850 |
SEQcall |
sms | script op - chain/call another sequence or label; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446890 |
SEQfadein |
sms | script op - begin palette fade-in (save curPalette - set seqFading=1 fade start/len); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446910 |
SEQfadeout |
sms | script op - begin palette fade-out (seqFading=-1); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446990 |
SeqFadeOut |
sms | apply a fade-out step - blacken curPalette by elapsed/len ratio; return done |
0x004469F0 |
SeqFadeIn |
sms | apply a fade-in step - un-blacken curPalette by ratio; return done |
0x00446A50 |
SEQfont |
sms | script op - load a font into seqFontList; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446B70 |
SEQmusic |
sms | script op - start a music track via MusicOn(name priority); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446BE0 |
SEQpalette |
sms | script op - load/set the sequence palette; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446C60 |
SEQrun |
sms | script op - resume/run control (16-byte leaf); absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446C70 |
SEQsound |
sms | script op - play a sound effect; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446D30 |
SEQsndoff |
sms | script op - stop sound(s); absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00446D90 |
FormatText |
sms | |
0x00446F10 |
SEQtext |
sms | script op - build a wrapped-text SEQGR type-4 node using FormatText; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00447090 |
SEQvideo |
sms | script op - play an AVI/video clip (drives videoState); absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00447120 |
SEQwait |
sms | script op - wait/synchronize N ticks; absent-from-inventory; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
Flight model / physics (FM/HARD)¶
flight-model.csv · page — 116 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x0040F6B0 |
DAMAGEInit2 |
sms | secondary damage init |
0x0040F760 |
DAMAGEInit |
sms | damage-model init: seeds the entity damage-state fields (0xA0 hud_draw_data, 0xAA damage_hit_data, 0x6A damage_init_data) |
0x0040F970 |
DAMAGEDoHit |
sms | hit resolution (#487): DAMAGEDoHit(entity, short amount, int hit_record). Branches on object class (_cg==4 aircraft, class 7 objects), reads health at entity+0x0E and the damage-flags word at entity+0xA6 (bit 0 gates aircraft damage, bit 0x80 the class-7 path), writes entity+0xAA damage_hit_data / +0xC8 cn_damage; hands a destroyed aircraft to PLANEBreakUp |
0x004106D0 |
DAMAGEPorpoise |
sms | porpoising — the pitch instability a damaged/overstressed aircraft develops |
0x004108B0 |
DAMAGEUpdate |
sms | per-frame damage update: re-reads the entity+0xA6 damage-flags and drives progressive damage effects |
0x00411350 |
DAMAGEReport |
sms | HUD damage report: formats _dam as a percentage (via _percentDamageString) and posts it with _HUDMessage |
0x004113C0 |
DAMAGEAutopilotAvail |
sms | tests whether the autopilot is still available given the current damage state (a block of damage-state globals at 0x5224dc-0x5224e3) |
0x00412780 |
SpeedOfSound |
sms | |
0x00413C70 |
TVKey |
sms | |
0x004197D0 |
ArmPlane |
sms | the interactive arming/loadout screen (#487): presents the aircraft hardpoints, drives weapon selection via dialogs, and applies the loadout through _HARDPtrs/_HARDLoad (+ _MPSetHardpoints/_MPSetFuel for MP sync); reads shell-UI state. Returns a status uint. The largest single function in the binary (11 KB) |
0x00447970 |
IntersectT |
sms | |
0x004479D8 |
IntersectB |
sms | sibling of IntersectT@0x447970 (same signature; 0x68 apart in the same unit) |
0x004514C0 |
FMUpdateGearPitch |
sms | |
0x00451580 |
FMUpdateGear |
sms | |
0x004515E0 |
FMUpdateWingSweep |
sms | |
0x00451680 |
FMUpdateThrustVector |
sms | |
0x004516B0 |
FMGetWeight |
sms | |
0x00451820 |
FMCopyAngles |
sms | |
0x004518A0 |
FMInitPlane |
sms | |
0x00451A60 |
LimitThrottle |
sms | |
0x00451B00 |
SetThrottle |
sms | |
0x00451B60 |
FMFlaps |
sms | |
0x00451C30 |
FMHook |
sms | |
0x00451C90 |
FMGear |
sms | |
0x00451D70 |
FMBrakes |
sms | |
0x00451E00 |
FMVector |
sms | |
0x00451E50 |
FMFuelConsumption |
sms | |
0x00451E80 |
BurnFuel |
sms | |
0x00452050 |
FMBurnNPCFuel |
sms | |
0x00452140 |
FMUpdatePlaneFields |
sms | |
0x00452630 |
FMBay |
sms | |
0x00452710 |
FMUpdateBay |
sms | |
0x00452760 |
FMBayIsOpen |
sms | |
0x00452770 |
HARDPtrs |
sms | |
0x004527F0 |
HARDUnload |
sms | |
0x00452870 |
HARDPtrsFort |
sms | |
0x004528D0 |
HARDUnloadFort |
sms | |
0x00452940 |
HARDStoreWeight |
sms | |
0x00452980 |
HARDCanLoad |
sms | |
0x00452C20 |
HARDLoad |
sms | |
0x00452D10 |
HARDLoadAll |
sms | |
0x00452D60 |
HARDUnloadAll |
sms | |
0x00452D90 |
HARDBestSeekers |
sms | |
0x00452E60 |
HARDBestSeeker |
sms | |
0x00452EA0 |
HARDFindJammer |
sms | |
0x00452F10 |
HARDFindECMForObj |
sms | |
0x00452F80 |
HARDFindStore |
sms | |
0x00452FF0 |
HARDFindProj |
sms | |
0x004530A0 |
HARDSetFlags |
sms | |
0x00453220 |
HARDUnrotatedHardPos |
sms | |
0x004532A0 |
HARDPos |
sms | |
0x004533D0 |
HARDGunsOnly |
sms | |
0x00453440 |
HARDGunsOnlyAll |
sms | |
0x00453490 |
HARDGunLoadPercent |
sms | |
0x00453510 |
HARDNameDebug |
sms | |
0x00453640 |
HARDUnlimited |
sms | |
0x00453710 |
HARDPodHack |
sms | |
0x00453800 |
HARDClearUnloadedHarpoints |
sms | |
0x00453870 |
HARDResourceName |
sms | |
0x00453890 |
HARDStoreName |
re | resolve a hardpoint store's resource-name string via _NextString (name at +5 for loaded stores, +1 otherwise); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004538C0 |
HARDSaveHumanLoads |
sms | |
0x004539C0 |
HARDRestoreHumanLoad |
sms | |
0x00453A70 |
HARDTotalFuel |
sms | |
0x00453AC0 |
HARDNumLoaded |
sms | |
0x00453AF0 |
HARDHasInternalBay |
sms | |
0x00453B90 |
HARDRearmTest |
sms | |
0x00453C50 |
HARDRearmHumanLoad |
sms | |
0x00453D10 |
HARDUsedWeapons |
sms | |
0x00453D50 |
HARDSaveFortLoads |
sms | |
0x00453EC0 |
HARDRestoreFortLoad |
sms | |
0x00453F90 |
HARDRearmFortTest |
sms | |
0x00454060 |
HARDRearmFortLoad |
sms | |
0x00454140 |
ChangePlaneType |
sms | |
0x004543A0 |
RepairTime |
sms | |
0x004543C0 |
SelectRepairPlane |
sms | |
0x00476880 |
LimitFromLowSpeed |
sms | |
0x004768F0 |
WrapHB |
sms | wrap a heading/bank attitude angle; sits in the flight-dynamics code region |
0x00476920 |
WrapP |
sms | wrap a pitch attitude angle |
0x00476950 |
StickInput |
sms | |
0x00476AA0 |
GToTurn |
sms | |
0x00476AE0 |
MovePlane |
sms | the per-frame player-aircraft motion integration step |
0x00477140 |
CheckLandingParms |
sms | |
0x00477240 |
CheckLanding |
sms | |
0x00477590 |
FMTurbulence |
sms | |
0x00477D10 |
COMinSpeed |
sms | |
0x00477D30 |
COCornerSpeed |
sms | |
0x00477D50 |
MaxSpeed |
sms | between COCornerSpeed and COMaxSpeed in the CO performance-query cluster |
0x00477E50 |
COMaxSpeed |
sms | |
0x00477E60 |
COAcc |
sms | |
0x00477E80 |
CODacc |
sms | |
0x00477EA0 |
COBv |
sms | |
0x00477ED0 |
COBrv |
sms | |
0x00478090 |
COBankRate |
sms | |
0x004780D0 |
COTurnRate |
sms | |
0x00478150 |
COTurnRadius |
sms | |
0x00478190 |
COThrust |
sms | |
0x004781D0 |
COTwr |
sms | |
0x00478200 |
COSig |
sms | |
0x004784A0 |
COGPullDrag |
sms | |
0x0047A690 |
FMAircraftSetup |
sms | |
0x0047A770 |
FMGetAcc |
sms | |
0x0047AC60 |
FMGetNPCAcc |
sms | |
0x0047ADD0 |
ThrustSupport |
sms | |
0x0047AEB0 |
FMVertMotion |
sms | |
0x0047AF20 |
GetGround |
sms | ground elevation under the aircraft; between FMVertMotion and FMSetTV |
0x0047AF70 |
FMSetTV |
sms | |
0x0047B000 |
FMResetTV |
sms | |
0x0047B020 |
FMFlight |
sms | |
0x0047FA50 |
_ArmPlane |
sms | thunk to @ArmPlane@4 |
0x0049D1B0 |
TakeoffSpeed |
sms | |
0x0049D1D0 |
StallSpeed |
sms | |
0x0049D200 |
GetFlightEnvelope |
sms | |
0x0049D230 |
CheckFlightEnvelope |
sms | |
0x0049D2D0 |
EnvelopeSpeedLimits |
sms | |
0x0049D490 |
MaxGAtAlt |
sms | |
0x0049D4D0 |
EnvHighest |
sms | envelope-table maximum query; envelope cluster at 0x49D1B0-0x49D4D0 |
Video decode (FMV/Cobra)¶
video.csv · page — 82 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x00405490 |
VDOInit |
sms | |
0x004054B0 |
ZeroFrame |
sms | VDO frame clear; directly follows VDOInit@0x405490 |
0x004127B0 |
ScreenDump |
sms | screenshot writer: mhwa/nh header + _curPalette + _cb framebuffer to screen%d.raw |
0x004219B0 |
StopCobraSound |
sms | |
0x004219D0 |
StartCobraSound |
sms | |
0x00421A50 |
PlayCobra |
sms | imported by 1 shipped .CAM overlay (#491); named at this VA by FA.SMS |
0x00442360 |
InitMovieContext |
sms | |
0x00442370 |
DecodeFrame |
sms | |
0x00456300 |
DecodeDSVGA8Frame |
sms | key/intra frame -> 8bpp paletted SVGA output with 2x pixel doubling (Double); ExpandDB/ExpandSB books + DrawAcrossBank |
0x00456AD0 |
EDB |
sms | expand-book: 512 iters, reads 2 index bytes -> 8 out bytes; neighbor (idx+-1) squared-RGB-distance<=8 smoothing against frame color table at FrameHeader+0x18; builds interpolated 2x2 index pattern for 8bpp dither path |
0x00456EC0 |
DecodeSVGA8Frame |
sms | |
0x00457230 |
DecodeDBook |
sms | decode 15/16-bit codebook: 256 entries x (4 luma + 2 chroma) -> 4 RGB555/565 px each; YUV->RGB via GlobalData+0xC1B4(luma scale)/+0xC1B6(Cb off)/+0xC1B8(Cr off)/+0xC1BA(grayscale flag); param_3==0xF selects 5:5:5 else 5:6:5; channels clamped by ClampU8 |
0x004575E0 |
ClampU8 |
re | saturate short to unsigned byte [0,255]: <0 -> 0, >=256 -> 255; leaf color-channel clamp called ~12x by DecodeDBook/DoubleDecodeDBook/Decode24Book/DoubleDecode24Book in YUV->RGB. (only FUN_ in range); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00457600 |
DoubleDecodeDBook |
sms | 15/16-bit codebook decode with horizontal 2x replication (Double path) |
0x00457A50 |
DecodeSVGA15Frame |
sms | key/intra frame -> 15/16bpp hi-color SVGA (single); dispatch case 3 depth 0xF..0x10 |
0x00457E00 |
DecodeDSVGA15Frame |
sms | key/intra frame -> 15/16bpp hi-color SVGA with 2x doubling; dispatch case 4 depth 0xF..0x10 |
0x004581C0 |
Decode24Book |
sms | decode 24-bit (true-color) codebook: 256 entries -> RGB888 (uint out); YUV->RGB with ClampU8 |
0x00458480 |
DoubleDecode24Book |
sms | 24-bit codebook decode with 2x replication |
0x004587B0 |
DecodeSVGA24Frame |
sms | key/intra frame -> 24bpp true-color SVGA (single); dispatch case 3 depth==0x20 |
0x00458D10 |
DecodeDSVGA24Frame |
sms | key/intra frame -> 24bpp true-color SVGA with 2x doubling; dispatch case 4 depth==0x20 |
0x00459390 |
DecodeInterSVGA15Frame |
sms | INTER/delta (P) frame -> 15/16bpp SVGA (single); requires prior key frame (MovieContext+0x14!=0) |
0x00459B20 |
DecodeInterDSVGA15Frame |
sms | INTER/delta (P) frame -> 15/16bpp SVGA with 2x doubling |
0x0045A2F0 |
DitherCodeSingle |
sms | ordered-dither a 15/16-bit codebook down to 8bpp palette indices (single) |
0x0045A520 |
DitherCode |
sms | dither a 24-bit codebook to 8bpp palette indices |
0x0045A800 |
DitherCodeDouble |
sms | dither codebook to 8bpp with 2x replication (Double) |
0x0045AB90 |
DecodeDSVGA15NONFrame |
sms | key frame, 15-bit codebook rendered to 8bpp (NON path, depth==8) with 2x doubling; dispatch submode6 case2 (+4==0) |
0x0045B170 |
DecodeDSVGA15NONSkipFrame |
sms | NON 8bpp doubled key frame with skip-map (GlobalData+4!=0); dispatch submode6 case2 (+4!=0) |
0x0045B610 |
DecodeSVGA15NONFrame |
sms | key frame 15-bit codebook -> 8bpp (NON path) single; dispatch submode6 case1 |
0x0045B9C0 |
DecodeInterSVGA15NONFrame |
sms | INTER/delta NON 8bpp single; dispatch inter submode6 case1 |
0x0045BE60 |
DecodeInterDSVGA15NONFrame |
sms | INTER/delta NON 8bpp doubled; dispatch inter submode6 case2 (+4==0) |
0x0045C500 |
DecodeInterDSVGA15NONSkipFrame |
sms | INTER/delta NON 8bpp doubled with skip-map; dispatch inter submode6 case2 (+4!=0) |
0x0046ADC0 |
WritePalette |
sms | VESA/palette trio directly preceding InitCobra@0x46AE10 |
0x0046ADF0 |
SetVESABank |
sms | |
0x0046AE00 |
SetVESATop |
sms | |
0x0046AE10 |
InitCobra |
sms | |
0x0046B0F0 |
CleanCobra |
sms | |
0x0046B120 |
InitVideo |
sms | |
0x0046B4B0 |
CleanVideo |
sms | |
0x0046B4E0 |
SetupCobra |
sms | |
0x0046B530 |
CleanupCobra |
sms | |
0x004A06F0 |
DoFadeout |
sms | imported by 6 shipped .CAM overlays (#491); named at this VA by FA.SMS |
0x004AE350 |
CenterPrint |
sms | centered-text helper directly before PlayVDOFile (VDO subtitle print) |
0x004AE410 |
PlayVDOFile |
sms | |
0x004AE440 |
PlayVDOString |
sms | |
0x004AECD0 |
VDOClearToBlack |
sms | |
0x004AED50 |
VDOSetMode |
sms | |
0x004AEE30 |
VDOSetLineStats |
sms | |
0x004AEE80 |
BuildVDOList |
sms | |
0x004AF030 |
FileExists |
sms | VDO unit's local file probe (video callers; sits in the VDO code run) |
0x004AF050 |
FileSize |
sms | |
0x004AF070 |
StartVDOAudio |
sms | |
0x004AF100 |
NewVDOLinkNode |
sms | |
0x004AF1B0 |
FreeVDOLinkNode |
sms | |
0x004AF1E0 |
OpenVDOFile |
sms | |
0x004AF200 |
ReadVDOHeader |
sms | |
0x004AF230 |
ReadFrameSizesFile |
sms | |
0x004AF2D0 |
ReadVDOPalette |
sms | |
0x004AF320 |
VDOfromVDOHEADER |
sms | |
0x004AF3A0 |
AllocVDO |
sms | |
0x004AF4B0 |
DeallocVDO |
sms | |
0x004AF510 |
GetVDOFrame |
sms | |
0x004AF690 |
VDOAlloc |
sms | |
0x004AF6A0 |
VDOFree |
sms | |
0x004AF6B0 |
VDO_320x200_to_640x480 |
sms | |
0x004AF760 |
VDOCompareBitmaps |
sms | |
0x004C8AA4 |
DecompressVideo |
sms | |
0x004C8AFC |
UnRLE |
sms | |
0x004C8BEC |
BuildSelfModifyCode |
sms | self-modifying blit codegen inside the video-decompress unit (UnRLE < here < DecompressVideoImage) |
0x004C8C60 |
DoNibble |
sms | |
0x004C8CD8 |
DecompressVideoImage |
sms | |
0x004CCC48 |
CopySB8 |
sms | |
0x004CCC7C |
CopyDB8 |
sms | |
0x004CCD14 |
CopySB15 |
sms | 15-bit variants interleaved with the claimed CopySB8/CopyDB8/ExpandDB/DecodeYUV15 family |
0x004CCD70 |
CopyDB15 |
sms | |
0x004CCDF8 |
CopyDSB15 |
sms | |
0x004CCE7C |
CopyDDB15 |
sms | |
0x004CCF54 |
ExpandDB |
sms | |
0x004CCF88 |
ExpandSB |
sms | |
0x004CCFE1 |
clampit_ |
sms | YUV clamp helper directly before DecodeYUV15@0x4CCFFC |
0x004CCFFC |
DecodeYUV15 |
sms | |
0x004CD1C0 |
DecodeYUV15Double1 |
sms | |
0x004CD394 |
DecodeYUV15Double2 |
sms |
Renderer & rasterizer (GG/G_)¶
renderer.csv · page — 251 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x004129A0 |
PrintShapeName |
sms | empty release stub (single ret) of a shape-name debug print |
0x00412A30 |
SetHShake |
sms | player-gated public entry over G_SetHShake (renderer owns G_SetHShake/GG_Shake) |
0x00412A60 |
SetVShake |
sms | |
0x0041D740 |
?CreateSingleton@CDirDraw@@SAHXZ |
sms | |
0x0041D800 |
?DeleteSingleton@CDirDraw@@SAXXZ |
sms | |
0x0041D910 |
?Create@CDirDraw@@QAEHPAX@Z |
sms | |
0x0041D9F0 |
?SetDisplayMode@CDirDraw@@QAEHKKK@Z |
sms | |
0x0041DA20 |
?SetDisplayModeFromMain@CDirDraw@@QAEHKKK@Z |
sms | |
0x0041DCE0 |
?CreateSurface@CDirDraw@@IAEPAVCDirDrawSurface@@PAU_DDSURFACEDESC@@@Z |
sms | |
0x0041DDA0 |
?CreatePrimarySurface@CDirDraw@@QAEPAVCDirDrawSurface@@W4T_MODE@@@Z |
sms | |
0x0041DE20 |
?CreateSecondarySurface@CDirDraw@@QAEPAVCDirDrawSurface@@GG@Z |
sms | |
0x0041DE80 |
?DestroySurface@CDirDraw@@QAEHPAVCDirDrawSurface@@@Z |
sms | |
0x0041DEB0 |
?Destroy@CDirDraw@@QAEXXZ |
sms | |
0x0041DF50 |
?SetCooperativeLevel@CDirDraw@@QAEHK@Z |
sms | |
0x0041DFF0 |
?GetDriverCaps@CDirDraw@@QAEPBU_DDCAPS@@XZ |
sms | |
0x0041E010 |
?GetHELCaps@CDirDraw@@QAEPBU_DDCAPS@@XZ |
sms | |
0x0041E030 |
?Lock@CDirDraw@@QAEPAU_DDSURFACEDESC@@PAVCDirDrawSurface@@PAUtagRECT@@H@Z |
sms | |
0x0041E050 |
?Unlock@CDirDraw@@QAEHPAVCDirDrawSurface@@@Z |
sms | |
0x0041E060 |
?WaitForVerticalBlank@CDirDraw@@QAEXK@Z |
sms | |
0x0041E090 |
?EnumDisplayModes@CDirDraw@@QAEKXZ |
sms | |
0x0041E130 |
ModeCallback |
sms | the CDirDraw::EnumDisplayModes callback (directly follows it at 0x41E090) |
0x0041E300 |
?ShowDDError@CDirDraw@@SAXJ@Z |
sms | |
0x0041E310 |
?ddECS@CDirDraw@@SAXXZ |
sms | |
0x0041E330 |
?ddLCS@CDirDraw@@SAXXZ |
sms | |
0x00447A40 |
G_TileInit |
sms | |
0x00447A73 |
G_TileShutDown |
sms | |
0x00447AA5 |
G_Tile |
sms | |
0x0045CA70 |
DrawAcrossBankInter |
sms | |
0x0045CDA0 |
DrawAcrossBank |
sms | |
0x0045DBD0 |
GG_InitMode |
sms | |
0x0045DCB0 |
GG_ShutdownMode |
sms | |
0x0045DCE0 |
GG_GetMode |
sms | |
0x0045DE70 |
GG_SetPalette |
sms | |
0x0045DEC0 |
GG_Shake |
sms | |
0x0045DEDF |
GG_FlushShaken |
re | present the back buffer with the current screen-shake offset (reads _vShakeTicks/_hShakeTicks); shake variant of GG_Flush with no direct callers in the image (dead or indirect shake path); not a C function (#479): mid-function split of @GG_Shake@0 (0x0045DEC0) |
0x0045E100 |
GG_GetSubmodes |
sms | |
0x0045E110 |
GG_GetSubmodeName |
sms | |
0x0045E120 |
GG_Flush |
sms | |
0x0045E13F |
GG_FlushDirtyLines |
re | the dirty-line blit region of GG_Flush (0x45E120, whose SEH body spans 0x45E120-0x45E356); a Ghidra mid-function split reached only by fall-through (no callers) — not separately callable; not a C function (#479): mid-function split of @GG_Flush@4 (0x0045E120) |
0x0045E370 |
flushLineStats |
sms | |
0x0045E3A0 |
GG_RestoreSurfaces |
sms | |
0x0045E410 |
GG_WaitRetrace |
sms | |
0x0045E430 |
GG_QuickBlt |
sms | |
0x0045E440 |
GG_VideoModesAvailable |
sms | |
0x0046A640 |
G_InitCircles |
sms | |
0x0046A690 |
G_ShutdownCircles |
sms | |
0x0046A6C0 |
G_Circle |
sms | |
0x00478520 |
?Create@CDirDrawSurface@@QAEHPAUIDirectDraw@@PAU_DDSURFACEDESC@@@Z |
sms | |
0x00478740 |
?SetEntries@CDirDrawSurface@@QAEHPAUT_RGB@@JJD@Z |
sms | |
0x00478830 |
?Restore@CDirDrawSurface@@QAEHXZ |
sms | |
0x004788A0 |
?Lock@CDirDrawSurface@@QAEPAU_DDSURFACEDESC@@PAUtagRECT@@H@Z |
sms | |
0x00478900 |
?Unlock@CDirDrawSurface@@QAEHXZ |
sms | |
0x00478940 |
?Blit@CDirDrawSurface@@QAEJPAUtagRECT@@PAUIDirectDrawSurface@@0K@Z |
sms | |
0x004789E0 |
?InitSurfaceDesc@CDirDrawSurface@@SAXPAU_DDSURFACEDESC@@@Z |
sms | |
0x00478A00 |
?Destroy@CDirDrawSurface@@QAEXXZ |
sms | |
0x00478AE0 |
?Clear@CDirDrawSurface@@QAEJXZ |
sms | |
0x00479E10 |
G_FindFirstFile |
sms | |
0x00479EA0 |
G_FindNextFile |
sms | |
0x00479F20 |
G_FindClose |
sms | |
0x0047A5A0 |
InitGraphicsMode |
sms | G_Init + derive _xscale/_xshift/_yscale/_yshift from the mode dims |
0x0047A610 |
InitGraphicsSystem |
sms | CDirDraw singleton bring-up (Create + SetCooperativeLevel); the #529 device layer |
0x00486CF0 |
FPSInit |
sms | |
0x00486D10 |
FPSUpdate |
sms | |
0x00486DA0 |
FPSPrint |
sms | |
0x00486DF0 |
FPSPrint2 |
sms | |
0x00486E10 |
FPSReturn |
sms | |
0x00497330 |
G_FlipY |
sms | |
0x00497340 |
G_Init |
sms | |
0x004973F0 |
G_Shutdown |
sms | |
0x00497490 |
G_InitLineStats |
sms | |
0x004974C0 |
G_SetPalette |
sms | |
0x004974E0 |
G_SetBitmap |
sms | |
0x004974F0 |
G_SetClipBox |
sms | |
0x004975F0 |
G_SetFullClipBox |
sms | |
0x00497610 |
G_PushClipBox |
sms | |
0x00497650 |
G_PopClipBox |
sms | |
0x00497680 |
G_SetColor |
sms | |
0x004976D0 |
G_Point |
sms | |
0x00497700 |
G_UPoint |
sms | |
0x00497750 |
G_GetPoint |
sms | |
0x00497770 |
G_UHline |
sms | |
0x00497A10 |
G_Hline |
sms | |
0x00497A60 |
G_UVline |
sms | |
0x00497B00 |
G_Vline |
sms | |
0x00497B60 |
G_URect |
sms | |
0x00497BF0 |
G_Rect |
sms | |
0x00497CE0 |
G_Rect2 |
sms | |
0x00497D10 |
G_URect2 |
sms | |
0x00497D40 |
G_UBox |
sms | |
0x00497D90 |
G_Box |
sms | |
0x00497DE0 |
G_ClipLine |
sms | |
0x00498160 |
G_Line |
sms | |
0x004981A0 |
G_ULine |
sms | |
0x00498380 |
G_PatLine |
sms | |
0x004983E0 |
G_DrawYLR |
sms | |
0x00498410 |
G_SetScaleMax |
sms | |
0x00498420 |
G_Flush |
sms | |
0x00498430 |
G_ReverseVertices |
sms | |
0x00498480 |
G_Flip |
sms | |
0x004984B0 |
G_PolygonFlip |
sms | |
0x004984F0 |
G_UPolygonFlip |
sms | |
0x00498530 |
G_SPolygonFlip |
sms | |
0x00498550 |
G_SUPolygonFlip |
sms | |
0x00498570 |
G_PointFlip |
sms | |
0x00498590 |
G_UPointFlip |
sms | |
0x004985B0 |
G_UHlineFlip |
sms | |
0x004985E0 |
G_ULineFlip |
sms | |
0x00498610 |
G_LineFlip |
sms | |
0x00498640 |
G_CircleFlip |
sms | |
0x00498670 |
G_URectFlip |
sms | |
0x004986A0 |
G_SetFont |
sms | |
0x004986B0 |
G_Print |
sms | |
0x004988F0 |
G_PrintOutline |
sms | |
0x00498980 |
G_Printf |
sms | signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004989F0 |
G_StringWidth |
sms | |
0x00498A20 |
G_StringHeight |
sms | |
0x00498A30 |
G_LoadDriver |
sms | |
0x00498A40 |
G_UnloadDriver |
sms | |
0x00498A50 |
G_Visible |
sms | |
0x00498AF0 |
code |
sms | |
0x00498B80 |
printPoly |
sms | |
0x00498B90 |
clipT |
sms | |
0x00498CE0 |
clipB |
sms | |
0x00498E30 |
clipL |
sms | |
0x00498F90 |
clipR |
sms | |
0x004990F0 |
G_ClipDestPoly |
sms | |
0x004991B0 |
G_CopyDriverName |
sms | |
0x004991E0 |
G_LoadVesa |
sms | |
0x004991F0 |
G_UnloadVesa |
sms | |
0x00499200 |
G_SetHShake |
sms | |
0x00499240 |
G_SetVShake |
sms | |
0x00499280 |
G_Hline2 |
sms | |
0x004992B0 |
G_UHline2 |
sms | |
0x004992E0 |
G_Box2 |
sms | |
0x00499330 |
G_UBox2 |
sms | |
0x004AF800 |
GLASSESInit |
sms | |
0x004AF850 |
GLASSESShutDown |
sms | |
0x004AF880 |
GLASSESHDiff |
sms | |
0x004AF8B0 |
GLASSESAdjust3dAmount |
sms | |
0x004AF8F0 |
GLASSESSaveBitmap |
sms | |
0x004AF930 |
GLASSESInterleaveBitmap |
sms | |
0x004AFA00 |
GLASSESSaveBitmapBox |
sms | |
0x004AFA40 |
GLASSESInterleaveBitmapBox |
sms | |
0x004AFB40 |
ShowPicture |
re | shows a full-screen picture and restores the display: saves _curPalette, snapshots the screen into a scratch bitmap (_G_AllocBitmap@12 + _G_BlitToBrush@16), blits the PIC named by the argument centred (_RMAccess@8 / _G_Blit@36), holds it for 0x80 ticks (_WaitTicks@4), then restores palette and screen and frees the scratch. Defined by the disassembly of ?GLASSESInterleaveBitmapBox@@YGXJJJJ@Z, which falls through into it |
0x004AFC60 |
GLASSESBlitWithOffsets |
sms | |
0x004B00A0 |
GLASSESBeforeDrawingPop |
sms | |
0x004B00D0 |
GLASSESAfterDrawingPop |
sms | |
0x004B0130 |
GLASSESSpreadLines |
sms | |
0x004B01E0 |
GLASSESPrintAmount |
sms | |
0x004B3170 |
WRSetTint |
sms | select the active tint-remap table (_currentTintTable) by index |
0x004B3190 |
WRGetLayer |
sms | find the LAYER struct (0x160-byte stride) covering a given altitude; report whether it is above the cloud deck |
0x004B31F0 |
WRSetRemaps |
sms | pick the shade+tint remap tables for an object at a distance/altitude, interpolating between the two straddling LAYERs so haze blends smoothly across the deck |
0x004B3410 |
WRInterpFog |
re | interpolate a LAYER's fog density at a distance along its vis-lo..vis-hi ramp |
0x004B3480 |
WRUpdate |
sms | per-frame atmosphere update at the eye altitude: advance the time-of-day LAYER state machine, recompute the sun angle + light source, blend the sky/horizon palette bands, and roll random palette flicker (lightning) |
0x004B3750 |
WRAdvanceLayers |
re | step the LAYER weather state toward the scheduled next state (fog rolling in/out over time) |
0x004B3820 |
WRLerpByte |
re | byte lerp helper for the LAYER blend |
0x004B382A |
WRBlendLayer |
re | blend two LAYER structs field-by-field by a 0..0x100 fraction (the fog/colour cross-fade body) |
0x004B3AD0 |
WRLerpColor |
re | interpolate an RGB palette entry for the layer blend |
0x004B3B60 |
WRClampByte |
re | clamp helper for the palette blend |
0x004B3B80 |
WRLerpWord |
re | word lerp helper for the layer blend |
0x004B3BE0 |
WRComposeLayerFlags |
re | compose the effective _currentLayer flag word (night-haze etc.) for the eye altitude |
0x004B3CB0 |
WRBuildSkyBands |
re | build the sky-gradient colour bands from the active LAYER |
0x004B3D90 |
WRUpdatePalette |
sms | rebuild the working palette each frame from the LAYER sky/ground colours + tint + global colour-add, uploading only when it changed |
0x004B4170 |
WRLightUpdate |
sms | recompute the directional light + ambient from the sun position for terrain/object shading |
0x004B4320 |
WRFogLayerUpdate |
sms | imported by all 24 shipped .LAY overlays, which spell it _WRFogLayerUpdate as FA.SMS does (#491) |
0x004B4370 |
WRInit |
sms | load the theater .LAY weather DLL, copy its 30-dword header, init the shade/tint tables + tmap remaps, and force a first palette update |
0x004B4680 |
WRPickTintTable |
re | helper: select the tint table pointer for the current effects flags |
0x004B46D0 |
WRShutdown |
sms | free the LAYER header allocation and clear the WR-enabled flag |
0x004B46F0 |
WRInt |
sms | write the single-byte WR-enabled flag |
0x004B4700 |
WRForcePaletteUpdate |
sms | invalidate _lastPalette so the next frame re-uploads the whole palette |
0x004B4720 |
WRWeatherEffects |
sms | the visibility model: the minimum per-LAYER visibility byte (+0x14e) across the altitude band between two objects, plus the layer's fog distance — the range weather permits seeing through |
0x004B4790 |
InitTmapRemaps |
sms | |
0x004B47B0 |
SetTmapRemaps |
sms | |
0x004B48C0 |
WRMakeHazeList |
sms | build the (distance,colour) haze ramp list the sky renderer walks, terminated by 0x7fffffff |
0x004B4990 |
WRLensFlare |
sms | draw the sun lens-flare disc chain when the sun is on-screen and above the horizon (gamePrefs bit 0x80) |
0x004B4B30 |
WRCanSee |
sms | weather-gated line-of-sight: distance <= (weather visibility x the target's detectability +0x3b), clamped to the layer floor. Called by _Targetable (so weather gates visual target acquisition), VIEWCanSeeTarget, PROJScoreTarget, and the AI (0x43a5c0) |
0x004B7910 |
G_AllocBitmapBuffer |
re | allocate a 0x112-byte bitmap buffer via the class allocator and clear its trailing flag; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004B7930 |
G_RelocBitmap |
sms | |
0x004B79B0 |
G_AllocBitmap |
sms | |
0x004B7A80 |
G_AllocSurfaceBitmap |
sms | |
0x004B7BF0 |
G_FreeSurfaceBitmap |
sms | |
0x004B7C30 |
RemapAdd |
sms | |
0x004B7C60 |
RemapRelocate |
sms | |
0x004B7CD0 |
G_LoadBitmap |
sms | |
0x004B7E10 |
G_RemapBitmapToPalette |
re | remap a bitmap's RGB triples to the nearest _curPalette index (sum-of-squared-channel-diff nearest-colour match) |
0x004B7F60 |
G_BlitToBrush |
sms | |
0x004B7FA0 |
G_BlitToScreen |
sms | |
0x004B7FE0 |
G_Blit |
sms | |
0x004B8460 |
G_ColorPrint |
sms | |
0x004B8570 |
G_ColorPrintf |
sms | |
0x004B85F0 |
G_ColorStringWidth |
sms | |
0x004B8620 |
G_ColorStringHeight |
sms | |
0x004B8630 |
G_NextTab |
sms | |
0x004B8670 |
G_Scale |
sms | |
0x004B8710 |
G_ScaleFlip |
sms | |
0x004B87C0 |
G_Texture |
sms | |
0x004B87F0 |
G_AcTexture |
sms | |
0x004B8820 |
G_TextureFlip |
sms | |
0x004B8890 |
G_PerspectiveFlip |
sms | |
0x004B8920 |
G_HFlipBitmap |
sms | |
0x004B8960 |
G_DoubleBitmapY |
sms | |
0x004B8BA0 |
G_CompareBitmapSpan |
re | qsort comparator ordering the doubled span list by (y, x): @G_DoubleBitmapY@4 passes it to _qsort with stride 10 over the span records it just built |
0x004B8BF0 |
G_DoubleBitmapX |
sms | |
0x004B8D90 |
carefulDiv |
sms | |
0x004B8E10 |
NPM_clipTop |
sms | |
0x004B8F70 |
NPM_clipTri |
sms | |
0x004B90C0 |
NPM_clipAndScan |
sms | |
0x004B9430 |
NPM_FlatTri |
sms | |
0x004B9630 |
NPM_TextureLinearTri |
sms | |
0x004B9B90 |
NPM_TexturePerspectiveTri |
sms | |
0x004BA400 |
G_FloatFlatFlip |
sms | |
0x004BA500 |
G_FloatTextureFlip |
sms | |
0x004BA660 |
G_FloatPerspectiveFlip |
sms | |
0x004BEE60 |
unknown_divide_error |
sms | |
0x004BEE70 |
divide_by_ecx_handler |
sms | |
0x004BEF50 |
divide_by_ebp_handler |
sms | |
0x004BF040 |
divide_by_bp_handler |
sms | |
0x004BF130 |
divide_overflow_handler_common |
sms | |
0x004BF220 |
sphere_overflow |
sms | |
0x004BF250 |
overflow_handler_reg |
sms | |
0x004BF2C0 |
line_overflow1 |
sms | |
0x004BF310 |
line_overflow2 |
sms | |
0x004BF340 |
access_violation_handler |
sms | |
0x004C619C |
G_UPatLine |
sms | |
0x004C6334 |
G_UBresenhamLine |
sms | |
0x004C6ECC |
G_UPolygon |
sms | |
0x004C77D0 |
G_SUPolygon |
sms | |
0x004C8A38 |
G_Polygon |
sms | |
0x004C8A74 |
G_SPolygon |
sms | |
0x004C8E20 |
WRBlackenPalette |
sms | scale a palette toward black by a 0..0x100 amount (G-LOC / blackout fade) |
0x004C8E6C |
WRWhitenPalette |
sms | scale a palette toward white (flash / red-out / nuke flash) |
0x004C8EC8 |
WRReddenPalette |
sms | scale a palette toward red (red-out under negative g) |
0x004C8F10 |
WRColorPalette |
sms | blend a palette toward an arbitrary RGB by an amount (generic screen tint) |
0x004C8FD4 |
Horizon2d |
re | scanline fill for the solid horizon band — orders the span endpoints (hhigh/hxlow/hxhigh/hlow) and fills the sky/ground colour band into the raster surface; terminal step of _SolidHorizon (renderer.md §10); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C9224 |
NoHorizon |
re | off-screen fallback for _SolidHorizon when the tilted horizon line falls outside the viewport — emits no raster output; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C924C |
SolidHorizon |
re | solid-colour sky/ground band: stores _sky_color_data/_ground_color_data, derives the horizon quad from the camera up-vector (top_up/right_up/forward_up) plus __amtMoveHorizon, then calls Horizon2d (on-screen) or NoHorizon (renderer.md §10); signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand |
0x004C942C |
GouraudHorizon |
re | Gouraud sky/ground gradient: stages gradient-polygon vertices/colours (tilted by heading vector _headv_x/_headv_z) into 0x50FDA0-0x50FE40, then rasterizes them through the vector_table SH draw-opcodes (renderer.md §10) |
0x004C95C8 |
ScreenMove |
sms | offset a screen point along the view's _unitRight/_unitUp basis (RENDER_TILE unit) |
0x004C9A88 |
AC_interpolate_linear_span |
sms | span innerloop of G__AC_Texture@0x4CA028 |
0x004CA028 |
G__AC_Texture |
sms | not a C function (#479): bitmap in ESI and span state in EAX/EBX |
0x004CA1B4 |
interpolate_linear_span |
sms | span innerloop of G__Texture@0x4CAE38 |
0x004CAE38 |
G__Texture |
sms | not a C function (#479): bitmap in ESI and span state in EAX/EBX |
0x004CB088 |
interpolate_perspective_span |
sms | span innerloop of G__Perspective@0x4CBD0B |
0x004CBD0B |
G__Perspective |
sms | not a C function (#479): bitmap in ESI and span state in EAX/EBX |
0x004CBE7C |
G__ScaleBitmap |
sms | not a C function (#479): source bitmap in ESI and destination rect in EDI |
0x004CC3A5 |
expand_texture_poly |
sms | |
0x004CC44C |
Remap |
sms | shading/remap table machinery for the rasterizer |
0x004CC4B4 |
SetShadingTable |
sms | |
0x004CC518 |
DoSetTmapRemaps |
sms | |
0x004CC7F4 |
RemapYLRP |
sms | pairs with DrawYLRP@0x4CC8B0 |
0x004CC8B0 |
DrawYLRP |
sms |
Wingman / group AI (WNG/GRP)¶
wingman.csv · page — 48 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x0045E460 |
WNGInit |
sms | |
0x0045E490 |
WNGAdd |
sms | |
0x0045E520 |
WNGRemove |
re | remove _curId from a wing; MSGSend 0x14 handoff (twin of GRPRemove); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045E630 |
WNGLeader |
re | first live member of a wing (twin of GRPLeader); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045E690 |
WNGWingman |
re | undetected twin of GRPWingman; materialized on apply; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045E6E0 |
WNGWingmen |
sms | |
0x0045E710 |
WNGPart |
sms | |
0x0045E790 |
WNGWingmenNearby |
re | count wingmen within distance/alt (twin of GRPWingmenNearby); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045E850 |
WNGSetWaypoints |
sms | |
0x0045E8A0 |
WNGControl |
re | if wingman, optional FormationMove; return formControl (twin of GRPControl); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045E8F0 |
WNGLeaderLanding |
sms | |
0x0045E970 |
WNGFormationMove |
sms | |
0x0045EAC0 |
WNGSetControl |
re | set formation control; MSGSend subcode 10; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045EB30 |
WNGSetType |
re | set formation type; MSGSend subcode 9; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045EB70 |
WNGSetSpacingH |
re | set horizontal spacing; MSGSend subcode 7; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045EBB0 |
WNGSetSpacingV |
re | set vertical spacing; MSGSend subcode 8; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045EBF0 |
WNGSetStateTarget |
re | EnterState + set target; MSGSend 0x11 (twin of GRPSetStateTarget); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045ED90 |
WNGSendWM |
sms | |
0x0045EEF0 |
WNGResponseSize |
re | response capacity from the orders-block flags; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045EF20 |
WNGAttackingObj |
re | count wing members attacking a target; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045EFB0 |
WNGHumansFirst |
re | move human-controlled members to slot 0; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045F030 |
WNGInHumanWing |
re | true if id shares the player's wing; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0045F090 |
WNGPlayerWM |
sms | |
0x0045F100 |
WNGName |
re | format 'Wingleader'/'Wingman'/'Wingman %d' (twin of GRPName) |
0x0045F190 |
GRPInit |
sms | |
0x0045F1C0 |
GRPAdd |
sms | |
0x0045F250 |
GRPRemove |
sms | |
0x0045F360 |
GRPLeader |
sms | |
0x0045F3C0 |
GRPWingman |
sms | |
0x0045F410 |
GRPWingmen |
sms | |
0x0045F440 |
GRPPart |
sms | |
0x0045F4C0 |
GRPWingmenNearby |
sms | |
0x0045F580 |
GRPSetWaypoints |
sms | |
0x0045F5D0 |
GRPControl |
sms | |
0x0045F620 |
GRPLeaderLanding |
sms | |
0x0045F6A0 |
GRPFormationMove |
sms | |
0x0045F7F0 |
GRPSetControl |
sms | |
0x0045F860 |
GRPSetType |
sms | |
0x0045F8A0 |
GRPSetSpacingH |
sms | |
0x0045F8E0 |
GRPSetSpacingV |
sms | |
0x0045F920 |
GRPSetStateTarget |
sms | |
0x0045FAC0 |
GRPSendWM |
sms | |
0x0045FC20 |
GRPResponseSize |
sms | |
0x0045FC50 |
GRPAttackingObj |
sms | |
0x0045FCE0 |
GRPHumansFirst |
sms | |
0x0045FD60 |
GRPInHumanWing |
sms | |
0x0045FDC0 |
GRPPlayerWM |
sms | |
0x0045FE30 |
GRPName |
sms |
Object / entity system & shape selection¶
objects.csv · page — 157 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x00411910 |
OnTheGround |
sms | imported by 4 shipped .MC overlays (#491); named at this VA by FA.SMS |
0x00414510 |
MessagesToPlayer |
sms | drain MSGReceive queues into PLANEEventProc/GVEventProc for the player entity (_cg) |
0x00436B30 |
MoveObj |
sms | |
0x004382D0 |
MoveGoalValue |
re | resolve one move-goal operand by kind (heading/altitude/speed/...); executes CreateMoveGoal records for MoveObj; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00442640 |
CATGUYEventProc |
sms | |
0x00442720 |
CATGUYProc |
sms | |
0x00442750 |
CATGUYMoveProc |
sms | |
0x00442AB0 |
CATGUYDraw |
sms | |
0x00442C00 |
GRAPHICInit |
sms | init the 100-entry _graphics effect pool + per-type .SH handle table (crater/smoke/fire/exp/debris/chaff/flare/spd/mpd/lpd); see objects.md GRAPHIC effect spawning |
0x00442DA0 |
GRAPHICRemove |
sms | expire every network-origin (flag 0x10000) GRAPHIC owned by _curId; mirror the removal to peers |
0x00442DE0 |
GRAPHICUpdate |
sms | step every live GRAPHIC entry via FUN_00442e10 (motion/fuse/adder emission), then _UpdateLoopSounds |
0x00442E10 |
GRAPHICStep |
re | advance one GRAPHIC per frame: integrate velocity/spin (or track the owner object), clamp to ground, spawn a fire child at 100%/50% life for the burn types, run its looping sound when in range, and free it at end-of-life |
0x00443120 |
GRAPHICViewOffset |
re | transform a GRAPHIC world position into the owner-object view frame for the muzzle/impact attach (used by AddExp and the per-frame step) |
0x004431B0 |
GRAPHICAddYourObjs |
sms | |
0x004432D0 |
GRAPHICAddExp |
sms | spawn an explosion: random type-variation, chained debris/cluster-release/smoke children, MP mirror |
0x00443B70 |
GRAPHICAlloc |
re | allocate + initialise a GRAPHIC record: type, flags, position, spawn/expiry ticks, ground-Z from T_Info; returns the entry |
0x00443C60 |
GRAPHICFindSlot |
re | the pool eviction policy: return the first free slot, else evict the lowest-priority live entry (age-biased so explosions/craters outlive smoke) |
0x00443D00 |
GRAPHICAddCrater |
sms | spawn a ground crater/scar decal (skipped on non-terrain); mirror to peers |
0x00443DC0 |
GRAPHICAddHulk |
sms | spawn a burnt-out static hulk marker (type 0x27+id); mirror to peers |
0x00443E80 |
GRAPHICAddSmoke |
sms | spawn a smoke puff that drifts with _windH/_windSpeed and rises; mirror to peers |
0x00443F90 |
GRAPHICAddSmokeAdder |
sms | spawn an invisible emitter that periodically births smoke puffs (via GRAPHICMakeAdder) |
0x00444020 |
GRAPHICAddFire |
sms | spawn a looping fire effect + sound, optionally mounted on an object; mirror to peers |
0x004440F0 |
GRAPHICAddInvisible |
sms | spawn a position-only GRAPHIC (no visual) used as a sound/child-emitter carrier |
0x00444150 |
GRAPHICMakeAdder |
sms | turn a GRAPHIC into a periodic child-spawner (adder byte +0x4a = child type, interval, rgb) |
0x004441D0 |
GRAPHICAddDebris |
sms | scatter N tumbling debris fragments from a base velocity + spread; mirror to peers |
0x004443D0 |
GRAPHICAddClusterRelease |
sms | spawn a cluster-munition sub-release burst (thin wrapper over the shared body) |
0x004443DA |
GRAPHICAddClusterReleaseBody |
re | overlapping alternate entry / body of GRAPHICAddClusterRelease |
0x00444560 |
GRAPHICAddSpecialDebris |
sms | scatter type-specific debris (wings/panels) drawn from the exploding object's own shape |
0x004447A0 |
GRAPHICAddDevice |
sms | spawn the visual for a dropped device (chaff/flare/tank) as a GRAPHIC |
0x0044B9B0 |
ROInit |
sms | pre-allocated reusable-object pool: T_AddObj records in _ro; size check vs class size + 0xDE |
0x0044BA20 |
ROGet |
sms | grab a free pooled object (alive-bit + cooldown checks) |
0x0044BAA0 |
RORemoveCurObj |
sms | return the current object to the pool with a cooldown |
0x00462600 |
InitChain |
sms | |
0x00462620 |
RemoveFromChains |
sms | |
0x00462640 |
ChainRemoveCurObj |
re | unlink the current object from a service chain head; clears in-chain flag (entity +0x01 bit1); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004626B0 |
ImmediateService |
sms | |
0x004626D0 |
ChainInsertCurObj |
re | ordered insert of the current object by service key (+0x68); honors correctChainPlacement; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004627B0 |
RemoveCurObj |
sms | |
0x004628B0 |
GetCurObj |
sms | |
0x00462980 |
PutCurObj |
sms | |
0x004629C0 |
GetCurObj2 |
sms | |
0x004629D0 |
PutCurObj2 |
sms | |
0x004629E0 |
PushCurObj |
sms | |
0x00462A20 |
PopCurObj |
sms | |
0x00462A50 |
ServiceObjects |
sms | signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00462B70 |
ChainMergeSorted |
re | merge the re-queue chain back into chainStart keeping +0x68 order; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00462C91 |
ProcessHitMsgs |
re | drain MSG 0x800B/0x800C remote hit events; raises event 0x4000 and spawns explosion via GRAPHICAddExp; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00462D40 |
ProcessEffectMsgs |
re | drain per-computer MSG 0x8003+n remote effect spawns: explosion / smoke / MANAdd; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00462E70 |
Service |
sms | |
0x004631B0 |
CheckForEvents1 |
sms | |
0x004631F0 |
CheckForEvents2 |
sms | |
0x00463730 |
PadlockTarget |
re | pick the object id the player is visually tracking (angle+distance gates, wingman fallback); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00463900 |
NearbyGroupLeader |
re | return the group leader id when the current object flies in role 2 within 0xC800; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00463980 |
MaybeCallEventProc |
sms | |
0x004639C0 |
CallEventProc |
sms | |
0x00463A20 |
CreateMove |
sms | |
0x00463AF0 |
CreateMoveGoal |
sms | |
0x00463B90 |
TimeAddSat |
re | saturating add to currentT, clamped at 0x7FFF; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00463BC0 |
ObjPlusAngleParm |
sms | |
0x00463BE0 |
ObjPlusDeltaParm |
sms | |
0x00463C50 |
WriteCmdBuf |
sms | |
0x00463CA0 |
WriteCmdBufProcptr |
sms | |
0x00463CC0 |
WriteCmdBufMove |
sms | |
0x00463CD0 |
WriteCmdBufEnd |
sms | |
0x00463CE0 |
FinishCmdBuf |
sms | |
0x00463D00 |
AllocCmdBuf |
sms | |
0x00463D40 |
ReadCmdBuf |
sms | signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00463E50 |
CancelCmdBuf |
sms | |
0x00463EA0 |
MaskEvents |
sms | |
0x00463EC0 |
CallDamageProc |
sms | |
0x00463F30 |
GetObjProc |
re | resolve a proc selector: entity override (+0x6C) else class proc (type +0x7D) |
0x00463F60 |
CallUtilProc |
sms | not a C function (#479): call sites clean 4/8/12 bytes |
0x00463FA0 |
Ignore |
sms | |
0x00464040 |
Reaction |
sms | |
0x00464300 |
EnterState |
sms | |
0x00464420 |
InSearchArea |
sms | |
0x0046442B |
InSearchAreaBody |
re | Ghidra mid-function split: body of @InSearchArea@4 (entry +0xB); route-corridor DistToLine test; not a C function (#479): mid-function split of @InSearchArea@4 (0x00464420) |
0x004644F0 |
PreferredTargetId |
sms | |
0x00464520 |
PreferredProtectId |
sms | |
0x00464550 |
CloseToAnything |
sms | |
0x00464640 |
SetScenarioEndTime |
sms | |
0x00469960 |
EJECTRemove |
sms | |
0x00469970 |
EJECTAdd |
sms | |
0x00473680 |
FlightControlOverMe |
sms | entity flight-control-ownership query; run into NPCWeaponsProc@0x4736F0 |
0x004736B0 |
NPCSetStateTarget |
sms | NPC is an entity class in the OBJ/NPC/PLANE/PROJ hierarchy (see _cg note) |
0x004736F0 |
NPCWeaponsProc |
sms | |
0x00473A40 |
OBJEventProc |
sms | label-only in FA.SMS import; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00473B40 |
OBJDamageProc |
sms | label-only in FA.SMS import; ApplySymbols materializes the function |
0x00473BE0 |
OBJProc |
sms | |
0x00473C10 |
Kill |
sms | |
0x00473DB0 |
GVProc |
sms | class proc for ground vehicles, named by 73 shipped .NT records (#491); a selector: 3 -> GVEventProc, 5 -> NPCWeaponsProc, else delegates to OBJProc — so GV extends OBJ |
0x00473DE0 |
GVDoCurrentWaypoint |
sms | |
0x00473F50 |
GVEventProc |
sms | |
0x00474650 |
NPCSetReact |
sms | |
0x00474740 |
AmmoForClass |
sms | per-class ammo query; between GVEventProc and Alive in the objects run |
0x004747C0 |
Alive |
sms | imported by 6 shipped .MC overlays (#491); named at this VA by FA.SMS |
0x0047CEB0 |
MANAdd |
sms | |
0x0047D0F0 |
MANRunAway |
sms | spawn runner.NT flee maneuvers via MANAdd (objects owns MANAdd) |
0x0048D780 |
PLANESayProc |
sms | |
0x0048E8D0 |
OBJSayProc |
sms | |
0x0048EC40 |
PLANECommentProc |
sms | |
0x00491240 |
OBJGet |
sms | |
0x00491250 |
OBJInit |
sms | |
0x004912C0 |
OBJShutdown |
sms | |
0x00491300 |
OBJAlloc |
sms | label-only in FA.SMS import; ApplySymbols materializes the function |
0x00491320 |
OBJStopAdding |
sms | |
0x00491340 |
OBJFindHumans |
sms | |
0x004913E0 |
OBJAdd |
sms | |
0x00491490 |
OBJSubtract |
sms | |
0x004914C0 |
OBJAlias |
sms | |
0x00491530 |
OBJCreateAliases |
sms | |
0x00491610 |
OBJAliasPreferred |
sms | |
0x00491670 |
OBJAliasAll |
sms | |
0x00491720 |
OBJAliasWaypoint |
sms | |
0x00491780 |
OBJAliasForMulti |
sms | |
0x004917D0 |
OBJNextAliasForMulti |
sms | |
0x004917F0 |
OBJTempAlias |
sms | |
0x00491810 |
OBJSetControl |
sms | |
0x004918D0 |
OBJHumanName |
sms | |
0x0049D510 |
PLANEInit |
sms | |
0x0049D520 |
PLANERemove |
sms | |
0x0049D580 |
PLANEDoCurrentWaypoint |
sms | |
0x0049D6E0 |
PLANESetEjectTime |
sms | |
0x0049D730 |
PLANEBreakUp |
sms | |
0x0049D860 |
PLANEBlow |
sms | |
0x0049D890 |
PLANECrash |
sms | |
0x0049DF40 |
PLANEEventProc |
sms | |
0x0049F840 |
PLANEMoveProc |
sms | |
0x0049FA10 |
PLANECheckEject |
sms | |
0x0049FA50 |
PLANEAddProc |
sms | |
0x0049FAA0 |
PLANEList |
sms | |
0x0049FB10 |
PLANEProc |
sms | |
0x0049FB70 |
PLANECheckFuel |
sms | |
0x0049FCD0 |
PLANESetThrottle |
sms | |
0x0049FD40 |
PLANEUpdateJustLanded |
sms | |
0x0049FD70 |
FindStreamerDef |
sms | streamer (wingtip/contrail trail) unit 0x49FD70-0x4A0300 nested inside the PLANE region |
0x0049FD90 |
DrawStreamer |
sms | |
0x004A0010 |
StreamersInit |
sms | |
0x004A0250 |
StreamersUpdate |
sms | |
0x004A02D0 |
StreamersShutdown |
sms | called from MISSIONShutdown (campaign.csv note) |
0x004A0310 |
PLANEHackForPlayerWing |
sms | |
0x004A04F0 |
PLANETurnOffGunSound |
sms | |
0x004A0510 |
PLANESetFeetWet |
sms | |
0x004A6B10 |
ResolveTypeRecord |
re | resolve the OT/NT/PT/JT type record from the MM handle at wrapper +0x0F (MMAccessE when +0x0E bit1 set); SetupOT's first step; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004A6EB0 |
SetupOT |
sms | |
0x004A71C0 |
LoadShapeVariantPair |
re | load the _a slot; aircraft (obj_class & 0xC000) also load the _b slot (+0x1B); not a C function (#479): mid-function split of _SetupOT (0x004A6EB0) |
0x004A71E0 |
LoadShapeSlot |
re | resolve one shape-slot filename to a loaded pointer via RMAccess (was proposed type_load_shape_slot) |
0x004A7200 |
SetupNT |
sms | |
0x004A7220 |
SetupPT |
sms | signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004A7230 |
SetupJT |
sms | signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004AB450 |
ShapeSetup |
sms | |
0x004BD5B0 |
CARRIERProc |
sms | |
0x004BD950 |
RotatePattern |
re | transforms a landing/takeoff pattern into world space for the current object: runs the nine local (x,y,z) offsets in the pattern record through _RotatedOffset@20 against the current-object mirror _cg (0x50CE80), then copies _cg heading into the record and slews it by the record pitch/roll deltas. Reached from the carrier/strip pattern build (?STRIPAddProc@@YAJXZ, _CARRIERProc) |
0x004BE2A0 |
STRIPAddProc |
sms | |
0x004BE640 |
STRIPProc |
sms | |
0x004C66CC |
Dist |
sms | imported by 4 shipped .MC overlays (#491); named at this VA by FA.SMS |
0x004D709A |
WriteFile |
sms |
AI interpreter (CT)¶
ai.csv · page — 130 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x00464C60 |
CTInit |
sms | |
0x00464C80 |
CTShutdown |
sms | |
0x00464C90 |
CTRespondToCancelCmdBuf |
sms | |
0x00464CD0 |
CTLoadProgram |
re | load/switch the BI CODE resource by name (RMAccess 0x8000); set IP=base, CTResetPC; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464DB0 |
CTResetPC |
re | reset IP=base and line=1; if arg!=0 also zero stack depth; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464DE0 |
CTVarDiff |
sms | |
0x00464E20 |
CTEval_time |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand |
0x00464E30 |
CTEval_do_nothing |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464E40 |
CTEval_do_evade |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464E50 |
CTEval_do_attack |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464E60 |
CTEval_do_radar_launch |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464E70 |
CTEval_do_ir_launch |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464E80 |
CTEval_do_hit |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464E90 |
CTEval_tgtattackingme |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464ED0 |
CTEval_tgtattackinganyone |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464F10 |
CTEval_tgt |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464F50 |
CTEval_tgtclass |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464F90 |
CTEval_tgtisfighter |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464FB0 |
CTEval_tgtisbomber |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464FD0 |
CTEval_tgtisplane |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00464FF0 |
CTEval_tgtisship |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465000 |
CTEval_tgtissam |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465010 |
CTEval_tgtisaaa |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465020 |
CTEval_tgthumancontrol |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465040 |
CTEval_maxrange |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465060 |
CTEval_maxrangediff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465080 |
CTEval_bestrange |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465090 |
CTEval_bestrangediff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004650A0 |
CTEval_radar |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004650B0 |
CTEval_tgtradar |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004650E0 |
CTEval_ir |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004650F0 |
CTEval_tgtir |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465120 |
CTEval_tgtoffbeam |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465150 |
CTEval_tgtahead |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465180 |
CTEval_tgtfacing |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004651D0 |
CTEval_hrzdisttotgt |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465220 |
CTEval_disttotgt |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465240 |
CTEval_htotgt |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465290 |
CTEval_ptotgt |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004652E0 |
CTEval_tgtaspectangle |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465380 |
CTEval_canclimb |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004653A0 |
CTEval_speed |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004653B0 |
CTEval_speeddiff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004653D0 |
CTEval_minspeed |
sms | label-only in FA.SMS; ApplySymbols materializes the function |
0x004653E0 |
CTEval_minspeeddiff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004653F0 |
CTEval_cornerspeed |
sms | label-only in FA.SMS; ApplySymbols materializes the function |
0x00465400 |
CTEval_corner |
sms | label-only in FA.SMS; ApplySymbols materializes the function |
0x00465410 |
CTEval_cornerspeeddiff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465420 |
CTEval_maxrudderh |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465430 |
CTEval_maxrudderp |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465440 |
CTEval_maxspeed |
sms | label-only in FA.SMS; ApplySymbols materializes the function |
0x00465450 |
CTEval_maxspeeddiff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465460 |
CTEval_betterspeed |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465480 |
CTEval_twr |
sms | label-only in FA.SMS; ApplySymbols materializes the function |
0x00465490 |
CTEval_twrdiff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004654A0 |
CTEval_bettertwr |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004654C0 |
CTEval_turnrate |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004654D0 |
CTEval_turnratediff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004654F0 |
CTEval_turnradius |
sms | label-only in FA.SMS; ApplySymbols materializes the function |
0x00465500 |
CTEval_turnradiusdiff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465510 |
CTEval_alt |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465540 |
CTEval_altdiff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465560 |
CTEval_maxalt |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465590 |
CTEval_maxaltdiff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004655B0 |
CTEval_minalt |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004655C0 |
CTEval_minaltdiff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004655E0 |
CTEval_waypointalt |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465640 |
CTEval_disttowaypoint |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004656B0 |
CTEval_cloudalt |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004656C0 |
CTEval_skill |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004656D0 |
CTEval_h |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465710 |
CTEval_p |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465730 |
CTEval_b |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465750 |
CTEval_hdiff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465770 |
CTEval_pdiff |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465790 |
CTEval_any |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004657A0 |
CTEval_engagep |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004658A0 |
CTEval_wingapproach |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465960 |
CTEval_wingcombat |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004659F0 |
CTEval_wm_hspacing_is |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465A00 |
CTEval_wm_vspacing_is |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465A10 |
CTEval_wm_formation_is |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465A20 |
CTEval_wm_control_is |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465A30 |
CTDo_exit |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465A50 |
CTDo_restart |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465A70 |
CTDo_maneuver |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465AD0 |
CTPop |
re | eval-stack pop; underflow raises CTError(4); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465B00 |
CTDo_print |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465B60 |
CTDo_printnum |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465BC0 |
CTDo_play |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465C20 |
CTDo_rudder |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465C90 |
CTReadAngle |
re | pop then clamp [-90,90] x182 (binary degrees); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465CC0 |
CTDo_move |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465D40 |
CTReadHeading |
re | pop then normalize [0,359] x182; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465DA0 |
CTReadAngle180 |
re | pop then clamp [-180,180] x182; passthrough sentinel 0x7FFFFFFF; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465DE0 |
CTReadDuration |
re | pop then clamp [0,15]; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465E00 |
CTReadSpeed |
re | pop then clamp [COMinSpeed,COMaxSpeed] read live; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465E20 |
CTDo_movetoalt |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00465EA0 |
CTDo_turn |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00466052 |
CTDo_yoyo |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004660C0 |
CTDo_circle |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004661A0 |
CTDo_homeangle |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00466290 |
CTPush |
re | eval-stack push; overflow (>0x13) raises CTError(5); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004662C0 |
CTDo_homepos |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004663E0 |
CTDo_uhomepos |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004663F0 |
CTDo_jink |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004664C0 |
CTDo_invert |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004664F0 |
CTDo_btoh |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00466540 |
CTDo_splits |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00466590 |
CTDo_immelman |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004665E0 |
CTDo_wm_break |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00466630 |
CTDo_wm_approach |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00466700 |
CTDo_wm_hspacing |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00466750 |
CTDo_wm_vspacing |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004667A0 |
CTDo_wm_formation |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004667E0 |
CTDo_wm_control |
sms | label-only in FA.SMS; ApplySymbols materializes the function; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00466820 |
CTError |
re | map error code 1..0xc to a string and ErrorExit('Chuck Talk error: %s, line %u'); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004668F0 |
CTRestoreState |
re | restore _ctState from _ctStateCheckpoint (or zero it); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00466920 |
CTSaveState |
re | copy _ctState to the heap checkpoint, then zero it; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00466970 |
CTExecProgram |
sms | |
0x00466A80 |
CTStep |
re | fetch one opcode and dispatch via switch; CALL_BY_NAME(0x27) resolves via SMAddress then self-patches to CALL_DIRECT(0x26); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004670E0 |
CTVarPtr |
re | return &_ctState[i] for script var index i in [0,4]; out-of-range raises CTError(3); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004AC510 |
MVRMove |
sms | MVR maneuver family: interleaved with MVRJink/MVRSplitS/MVRImmelman @0x4AC9E0-0x4ACCB0 |
0x004AC680 |
MVRMoveToAlt |
sms | |
0x004AC760 |
MVRInvert |
sms | |
0x004AC780 |
MVRYoyo |
sms | |
0x004AC880 |
MVRApproachTarget |
sms | |
0x004AC9E0 |
MVRJink |
sms | |
0x004ACB80 |
MVRSplitS |
sms | |
0x004ACCB0 |
MVRImmelman |
sms |
Input — joystick / serial / modem¶
input.csv · page — 80 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x004114F0 |
ResetKeyboard |
sms | |
0x00411540 |
ShutdownKeyboard |
sms | |
0x00411560 |
GetKey2 |
sms | |
0x004115C0 |
KeyAvail |
sms | |
0x004115F0 |
GetKeyFlags |
sms | |
0x00411600 |
KEYEvent |
sms | WM_(SYS)KEYDOWN/UP hook: scan from lParam, qualifier bits (1=shift 2=ctrl 4=alt) in _qualStatus/_keyFlags, _keyarray[scan] held state, kbScanToASCII translate (hi-byte=bare ASCII code, lo-byte=keypad normalize, none=scan<<8|qual), 16-entry _kbBuffer ring; drops auto-repeats of _ignoreRepeats scans in flight |
0x00411890 |
KEYECS |
sms | enter the keyboard critical section (0x522558) if initialized |
0x004118B0 |
KEYLCS |
sms | leave the keyboard critical section |
0x004118D0 |
KEYPause |
sms | flush keyboard state: kbBuffer ring ptrs, _keyarray[256], qualifier bits |
0x00411F00 |
PutFakeKey |
sms | push a synthetic key code onto the 8-entry fake-key stack (0x5226b0); UI/joystick inject commands this way |
0x00411F20 |
GetFakeKey |
sms | pop the fake-key stack (0 when empty); polled after GetKey by the shell screens |
0x00412930 |
WaitKey |
sms | spin (Sleep 0) until GetKey returns a key |
0x00412960 |
GetKey |
sms | |
0x00413D10 |
SlewKey |
sms | slew-mode key dispatch: keypad 8/2/4/6 translate, 9/3 altitude, ctrl+7/9 heading +/-364 (2 deg), keypad-0 speed x2, keypad-. speed /2 (min 0x100), ctrl+S next slewable object (obj flag bit0 via T_ObjList), Esc exit; consumed keys return 0 |
0x00414070 |
SlewObjListCollect |
re | T_ObjList visitor for SlewKey ctrl+S: append object id to the bounded id list at 0x522c1c/0x522c24 |
0x004140A0 |
SetPlayerTarget |
sms | targeting-key support unit 0x4140A0-0x4144B0 inside the input key region (SlewObjListCollect < here < FlightKey); input owns the same-family PickVisibleTarget |
0x004140C0 |
TargetNearestTo |
sms | |
0x00414180 |
GetTargetPositions |
sms | |
0x004141D0 |
Targetable |
sms | |
0x004143F0 |
SetPlayerContact |
sms | |
0x00414410 |
ContactNearestTo |
sms | |
0x004144B0 |
GetContactPositions |
sms | |
0x00414690 |
FlightKey |
sms | THE in-flight command table: offers the key to the stick/rudder/throttle device procs (msg 3) then dispatches ~70 commands - flight controls (a/b/f/g/h/o), sensors (r/i/m/y, Shift+R A/G, Shift+A AWACS, Shift+G GCI), targeting (Enter/t/T/;), weapons ([ ] Space Tab, keypad-Ins chaff keypad-Del flare, Shift+J/K jettison), wingman Alt+letters + Alt+1..9 break angles, Shift+digit MFD windows, Ctrl+keypad thrust vector, Shift+E eject (double-press). See input.md section |
0x00415E30 |
PickVisibleTarget |
re | filter _visibleTargetIds by Targetable, then param!=0: nearest to screen centre (boresight), param==0: next in raster order after the current target |
0x00415F80 |
NextTargetOnScreen |
re | raster-order scan of on-screen target positions; returns the id following the reference position, skipping the current target |
0x00416050 |
PickVisibleContact |
re | radar-contact twin of PickVisibleTarget over CPGetContact/_numContacts (/ and \ keys, realistic-avionics pref) |
0x00416140 |
NextContactOnScreen |
re | raster-order scan over contact screen positions; returns CPGetContact(best) |
0x00416200 |
WngAttackTarget |
re | order wingman vs the player target: hostile check (side byte objPtrs[id]+9 XOR player side, bit 0x80), optional WNGSetControl, MSGSend cmd 0xb with target id (0x1fffffff = engage at will); Alt+E(1,1)/Alt+R(2,1) |
0x004162C0 |
WngAttackContact |
re | same as WngAttackTarget but for the radar _contactId (Alt+F) |
0x00416380 |
SetAutopilot |
sms | set/clear plane-flags bit 0x1000 (autopilot); on engage WPSetupCurrent(0)+AutopilotEngage, on disengage CancelCmdBuf; clears bit 0x2000 (forced) when off |
0x004163F0 |
AutopilotEngage |
re | autopilot engage bootstrap: EnterState(0x1f) if beyond, temporarily clear target, PLANEEventProc(0x80), CallUtilProc/MoveObj/ReadCmdBuf priming |
0x00416470 |
ForceAutopilot |
sms | engage autopilot marking it forced (bit 0x2000) - used by menus/eject/hook-catch |
0x00416490 |
RestoreAutopilot |
sms | disengage a forced autopilot (bit 0x2000 set) only |
0x004164B0 |
ServicePlayer |
sms | per-frame player service: forced-AP when dead, stick decay under time compression, DAMAGEUpdate, target FOV re-check (pref 0x10000000), autopilot maintenance, FMFlight tick + crash dispatch (PLANECrash, crash-landed score -2), arrestor-hook catch (Collision type 0x84, HOOK_5K, state 0x16), waypoint auto-advance (WP+0x44 stride, passed bit 0x80), collision MSGSend 0x4000 + Kill, afterburner/engine sounds, trigger logic (_weaponButton/_gunButton -> PROJFire, bay-door + refire checks), brake button edges |
0x004170C0 |
PlayerDriveVehicle |
re | non-plane player control: stick -> CreateMove turn (COTurnRate, reversed in reverse) + speed (COMaxSpeed, half max reverse) |
0x00417150 |
PlayerUpdateState |
re | the player plane auto state machine: on ground - auto-rearm, catapult (APTakeoffType 7 -> state 7 + forced AP), takeoff roll 0x11, taxi 1, parking 0x1a-0x1e; in air - approach/landing 0x12/0x14 near airport w/ gear, else free flight 0x1f, engage 0x20; skips the ~BGUN.PT fort gun |
0x00417530 |
PlayerAutoRearm |
re | stationary at a friendly airport within 0x64000: HARDRearmTest/HARDRearmHumanLoad (fort variants on fort missions) + SAYRearmMessage |
0x00417620 |
PlayerNeedsRearm |
re | rearm-needed test: drop-tank fuel sum + base tankage vs HARDTotalFuel, threshold 0x15e |
0x00417690 |
PlayerPickParking |
re | nearest of the airport 4 parking points (apt+0x62/0x74/0x86/0x98) -> states 0x1b..0x1e (1 when already 0x1a) |
0x0041769C |
PlayerPickParkingAlt |
re | alternate entry of PlayerPickParking (reference point in EAX); overlapping-entry pair |
0x00417760 |
InitPlayerControl |
sms | load vis240.SEE into the 57-byte view/visibility block 0x4ee348, deviceProc(0) init for stick/rudder/throttle, clear buttons + coolie state, throttle from entity+0x1f2 |
0x00417850 |
InputCalibrate |
sms | deviceProc(1) calibrate for one device + ensure the shell mouse is shown |
0x00417880 |
GetPlayerControl |
sms | per-frame control poll: ReadSticksRaw + deviceProc(2) stick/rudder/throttle + KeyStick(2,0) so Space/Tab always latch fire buttons |
0x004178D0 |
KeyStick |
sms | keyboard stick device proc: msg2 latches Space=_weaponButton Tab=_gunButton from _keyarray, arrows = full deflection +/-0x100 (shift reserved for views, alt+arrows reserved for TV); msg3 passes keys through |
0x00417A10 |
PotStick |
sms | |
0x00417C20 |
KeyThrottle |
sms | |
0x00417D10 |
KeyRudder |
sms | |
0x00417D80 |
PotThrottle |
sms | |
0x00417ED0 |
PotRudder |
sms | |
0x00417F00 |
Slew |
sms | compose yaw/pitch view offsets with object attitude via rotation matrices + ArcTan -> euler view angles (padlock/slew view math) |
0x00481280 |
GetKeySlow |
sms | |
0x00492280 |
ShowSlewObj |
sms | draw the G_Box marker around _slewId (the input Slew unit: SlewKey/SlewObjListCollect) |
0x00494270 |
ReadSticksRaw |
sms | poll X/throttle/rudder/POV via ReadDevice gated by joystickFunctions bits (1/4/8/0x10) |
0x004942D0 |
InitJoysticks |
sms | joyGetNumDevs (cap 16); probe each joyGetPos+joyGetDevCapsA(0x194) into joystickCaps; build joystickMask; assign X/Y/throttle/rudder/POV device roles -> joystickFunctions |
0x00494430 |
GetJoystickType |
sms | JOYRESULT enum: 4=uninit 3=absent 0=legacy(JOYINFO) 1=extended(JOYINFOEX); decides by caps axes<3 && buttons<4 |
0x004944A0 |
ReadDevice |
sms | read one device joyGetPos/joyGetPosEx into joystickInfo/Ex[id]; 50ms (0x32) rate-limit via joystickLastRead + timeGetTime |
0x00494580 |
ScaleToRange |
sms | clamp/scale a float axis into calibrated min/center/max range via __ftol; stack-arg helper for NormalizeStick |
0x004946B0 |
NormalizeStick |
sms | normalize X/Y/throttle/rudder to ints; first-read center auto-capture (gotCenterX/Y/R -> DAT_00554ec4/ec8/ebc); calls ScaleToRange |
0x00494A50 |
GetPOV |
sms | read POV hat; map centidegrees/100 to keypad scancode 0x48/0x4D/0x50/0x4B (U/R/D/L); 0xFFFF=centered->0 |
0x00494AE0 |
ASynchJoystick |
sms | poll buttons via ReadJoystickButtons; edge-detect new presses into buttonPresses[] per JOYCAPS button count |
0x00494B50 |
ReadJoystickButtons |
sms | return button mask from joystickInfo+0x14 (legacy) or joystickInfoEx+0x28 (extended) |
0x00494BA0 |
MP_DoNothing |
sms | |
0x00499CF0 |
MOUSESetLimits |
sms | set cursor clamp limits (mouse-ring limit fields DAT_00560f38/f3a) |
0x00499D10 |
MOUSESetPos |
sms | center mousePos to screen/2 (DAT_0055c06a/c06c halved) |
0x00499D40 |
MOUSECenter |
sms | FA.SMS symbol at 0x499d40 not split by current Ghidra inventory; ~16-byte helper between MOUSESetPos and MOUSERead — candidate to define; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00499D50 |
MOUSERead |
sms | dequeue next event from 16-entry ring (critical-section); returns queued pos+buttons or current mousePos/mouseButtons if empty |
0x00499DF0 |
MOUSEInit |
sms | InitializeCriticalSection(mouse_critical_section); reset ring indices; set initialized flag DAT_00501598 |
0x00499E30 |
MOUSEShutdown |
sms | DeleteCriticalSection(mouse_critical_section) if initialized; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00499E50 |
MOUSEEvent |
sms | WndProc mouse handler WM_MOUSEMOVE/L/R DOWN+UP (0x200/201/202/204/205); edge-count mouseButtonPresses & DAT_00560ef1; push to ring; update mousePos |
0x0049B1D0 |
RunSerialConfigurationScreen |
sms | large device-config dialog for direct-serial link (baud/port/etc.); ~5.4KB UI — could alternatively be shell-ui |
0x0049B9B0 |
ParseStrForModemName |
sms | |
0x0049BA60 |
CompareDBEntry |
sms | |
0x0049BA80 |
SortModemDB |
sms | |
0x0049BAA0 |
IsComment |
sms | |
0x0049BAE0 |
ReadModemDB |
sms | |
0x0049BD60 |
WriteModemEntry |
sms | |
0x0049BDC0 |
SelectModemFromDB |
sms | |
0x0049BF70 |
WriteModemFile |
sms | |
0x0049C260 |
RunModemAdvSetupDialog |
sms | |
0x0049C780 |
RunModemConfigurationScreen |
sms | large device-config dialog for modem link (init string/dial/port); ~2.6KB UI — could alternatively be shell-ui |
Terrain (T_)¶
terrain.csv · page — 85 named functions
| VA | Symbol | Src | Role | |
|---|---|---|---|---|
0x004A7310 |
T_InitPlane |
sms | spawns player plane on terrain at mission start (FMInitPlane/FMUpdatePlaneFields/EnterState/PLANESetFeetWet); writes _cg mirror fields | |
0x004A73B0 |
T_AddObj |
sms | add a static object/building to the terrain object database (1642 B) | |
0x004A7A40 |
T_AddYourObjs |
sms | terrain "add your objects" service pass | |
0x004A7D70 |
T_ImmediateVisibility |
sms | ||
0x004A7DF0 |
T_ObjList |
sms | ||
0x004A7E50 |
T_Render |
sms | ||
0x004A7F20 |
T_InitForestProc |
sms | label-only in FA.SMS import; ApplySymbols materializes (0x20 B setup preceding T_ResolveDecorShapes) | |
0x004A7F40 |
T_ResolveDecorShapes |
re | walk a decoration brush-list (stride 0x1a) resolving each entry's SH via _RMAccess into +2; called by T_InitWaterProc(&_waterList) / T_InitCloudProc(&_cloudList); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004A7F70 |
T_ForestProc |
sms | scatters forest decoration (desert vs _forestList) via T_ScatterGrid | |
0x004A8090 |
T_ScatterGrid |
re | 2^n x 2^n tiling loop invoking T_ScatterDecorTile; called by every T_*Proc (evidence: T_ForestProc/T_MooseProc/T_WaterProc) | |
0x004A8130 |
T_ScatterDecorTile |
re | place one decoration cluster per tile: per-band distance LOD, T_GetLeaf gate, T_Info altitude, T_QueueDecor | |
0x004A83E0 |
T_InitForest1Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8400 |
T_Forest1Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8520 |
T_InitForest2Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8540 |
T_Forest2Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8660 |
T_InitFarmProc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8670 |
T_FarmProc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8730 |
T_InitMooseProc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8750 |
T_MooseProc |
sms | scatters "moose" decoration (desert vs _mooseList) | |
0x004A8870 |
T_InitVietRicePaddy1Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8880 |
T_VietRicePaddy1Proc |
sms | Vietnam theater rice-paddy decoration proc | |
0x004A8950 |
T_InitVietRicePaddy2Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8960 |
T_VietRicePaddy2Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8970 |
T_InitVietRicePaddy3Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8980 |
T_VietRicePaddy3Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8990 |
T_InitVietPalms1Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A89A0 |
T_VietPalms1Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A89B0 |
T_InitVietPalms2Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A89C0 |
T_VietPalms2Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A89D0 |
T_InitVietPalms3Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A89E0 |
T_VietPalms3Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A89F0 |
T_InitVietTrees1Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8A00 |
T_VietTrees1Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8A10 |
T_InitVietTrees2Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8A20 |
T_VietTrees2Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8A30 |
T_InitVietTrees3Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8A40 |
T_VietTrees3Proc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8A50 |
T_InitVietWaterBuffaloProc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8A60 |
T_VietWaterBuffaloProc |
sms | label-only in FA.SMS import; ApplySymbols materializes | |
0x004A8A70 |
T_InitWaterProc |
sms | copies _waterCfg string then resolves _waterList via T_ResolveDecorShapes; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004A8AB0 |
T_WaterProc |
sms | scatters water-surface decoration; lazy-inits via T_InitWaterProc | |
0x004A8B90 |
T_InitCloudProc |
sms | resolves _cloudList via T_ResolveDecorShapes(&_cloudList 0x50C298) | |
0x004A8BA0 |
T_CloudProc |
sms | label-only; the global ambient proc (set in T_Init2) | |
0x004A8C30 |
T_QueueDecor |
re | append an entry (short id + 0x17-B record) to the per-frame decor/comment list at _decorListEnd (DAT_0057336c); dedupes by id; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004A8CC0 |
T_ObjIsVisible |
re | per-object render-flag/type visibility test (DAT_00573396 flags vs type table at 0x50A6B8); used by T_AddVisibleObjs; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004A8D30 |
T_Normal |
sms | ||
0x004A8E50 |
T_LeafOp |
sms | emit one terrain leaf's geometry; 14-B entry + split body FUN_004a8e5e | |
0x004A9660 |
T_Make |
sms | build terrain scene: pick LOD tile size (_lodTileSize 0x20-0x100) + detail (_lodDetail 1/2/4/8) by view distance/DAT_00573394; quadtree tessellate into _cellArray; run ambient/object passes; emit leaf list | |
0x004A9BB0 |
T_RunAmbientProcs |
re | iterate _ambientProcs[0..0x10] (17 decoration procs) calling each with its index; gated by DAT_00573396&0x8000 and _ambientSuppress; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004A9C20 |
T_AddVisibleObjs |
re | iterate _objPtrs[1.._nextObjId]; for visible in-bounds objects run ImmediateService and T_QueueDecor (via GetCurObj/PutCurObj); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004A9D00 |
T_BuildQuadCell |
re | build one quad cell in _cellArray (sample T_GetLeaf at 4 corners, T_QuadAltitude/SetFlags) | |
0x004A9E20 |
T_QuadAltitude |
re | representative altitude of a cell (clamped min/max blend of corner heights scaled by DAT_00573392); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004A9EA0 |
T_QuadSetFlags |
re | set leaf flat-bit (+0xF|1) vs sloped-bit (+0xE|0x80) from corner-delta bytes; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004A9ED0 |
T_ViewBounds |
re | rotate view box by heading (_Rotate2) to compute cell-space AABB DAT_0057334a..DAT_00573350; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004AA070 |
T_SubdivideCells |
re | LOD pass: walk _cellArray, subdivide cells finer than _lodDetail via 4x T_BuildQuadCell; T_CellScreenBounds cull; caps at 500 cells; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004AA260 |
T_CellScreenBounds |
re | cell world extent (<<5) AND'd with view bounds via _BoundsAnd (cull test); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004AA2B0 |
T_CompactCells |
re | compact _cellArray dropping dead (0xffff) cells; rewrites _cellCount and optional carried index; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004AA380 |
T_SortCells |
re | in-place quicksort of _cellArray (stride 0x16) via comparator (*_cellCompare 0x580B9C) and _Swapmem; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004AA440 |
T_CountCells |
re | tally cells into front/back counts (returns front count); drives T_Make's subdivide-again loop; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand | |
0x004AA4A0 |
T_EmitCells |
re | per live cell: T_CellTmapLookup + optional T_Normal, then T_LeafOp to emit geometry; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand | |
0x004AA620 |
T_InitDictionary |
sms | init the tmap dictionary (_tdic) | |
0x004AA680 |
T_InitDictionaryEntry |
sms | ||
0x004AA790 |
T_NamedTmaps |
sms | build named-tmap list (_tlist) from dictionary | |
0x004AA7E0 |
T_CompareTlist |
sms | qsort comparator for _tlist (label-only; xref-only in globals.csv) | |
0x004AA820 |
T_SortTmapList |
sms | sort _tlist for binary search | |
0x004AA840 |
T_CellTmapLookup |
re | binary-search _tlist by packed cell coord ((y&~3)<<16|(x&~3)) to pick the tile texture; gated by _lowMemory/_tlistSize/DAT_00573396&2; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand | |
0x004AACA0 |
T_InitHorizonProc |
sms | RMAccess stars.SH/moon.SH/sun.SH into _starsH/_moonH/_sunH | |
0x004AACE0 |
T_HorizonProc |
sms | 1-B stub in current Ghidra (single RET / proc-ptr slot); SMS underscore differs from current label; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand | |
0x004AACF0 |
T_DefaultHorizon |
sms | ||
0x004AACFE |
T_DrawHorizon |
re | horizon/sky band render: _T_Info horizon sample + _WRMakeHazeList + _currentTintTable sky colors + _hackSky/_clip* extents; static, no SMS symbol; not a C function (#479): mid-function split of the routine at 0x004AACF0 | |
0x004AB7F0 |
HardpointAngle |
sms | ||
0x004AB860 |
BrushFromIndex |
sms | ||
0x004ABA60 |
InsectWingAngle |
sms | ||
0x004ABAB0 |
T_Info |
sms | ||
0x004C5D30 |
T_InitDatabase |
sms | set _dbDynamicLow/High to _dbaseLow bounds (dynamic terrain-object DB) | |
0x004C5D50 |
T_ShutdownDatabase |
sms | zero _dbDynamicLow/High | |
0x004C5D60 |
T_Init |
sms | ||
0x004C5D70 |
T_Load |
sms | load |
|
0x004C5F40 |
T_StripTildes |
re | remove '~' chars from a filename in place; used twice by T_Load; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand | |
0x004C5F60 |
T_Init2 |
sms | ||
0x004C5FA0 |
T_Shutdown |
sms | mirror of T_Init: free handle + clear dictionary/list (used by T_Load on map change) | |
0x004C6020 |
T_StopAdding |
sms | OBJStopAdding (unless _curScreen==3) + OBJFindHumans | |
0x004C6040 |
T_GetLeaf |
sms | return 3-byte leaf ptr: fine grid (th+0x91,stride th+0x89) if size | _borderLeaf (0x50CE4C) |
0x004C9624 |
T_InterpAltNW |
sms | barycentric altitude interpolation in the NW triangle of a leaf quad (64-bit divide of corner heights) | |
0x004C9770 |
T_InterpAltSE |
sms | label-only in FA.SMS import; SE-triangle counterpart (folded into InterpAltNW tail today) |
Weapons — projectiles / seekers / ECM (PROJ)¶
weapons.csv · page — 55 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x004C06A0 |
PROJInit |
sms | |
0x004C0710 |
PROJGetTargetPos |
sms | |
0x004C0820 |
PROJAccurateHardPos |
sms | |
0x004C0870 |
PROJSetTarget |
sms | |
0x004C0960 |
PROJLockUpdate |
sms | |
0x004C0A90 |
PROJAdd |
sms | |
0x004C1120 |
PROJSpeed |
sms | |
0x004C1170 |
PROJEngineState |
sms | |
0x004C11B0 |
PROJMoveProc |
sms | |
0x004C1630 |
PROJGuideToTarget |
re | CreateMove toward lock target (proportional guidance); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C1660 |
PROJGuideLoft |
re | loft/high-trajectory guidance when range>=type+0x10D; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C1720 |
PROJHoldCourse |
re | hold current commanded angles (fly straight); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C1760 |
PROJGuideToSun |
re | steer IR seeker toward the sun when decoyed; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C17A0 |
PROJUpdateWeave |
re | random weave/jink aim offsets from type weave amp; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C17F0 |
PROJSunInSeeker |
re | IR seeker sun/sky FOV check (decoy source); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C1870 |
PROJDamageProc |
sms | |
0x004C1C10 |
PROJBuildName |
re | compose ' |
0x004C1CC0 |
PROJEventProc |
sms | label-only in FA.SMS; ApplySymbols materializes the function |
0x004C1F10 |
PROJIsLockableTarget |
re | predicate: valid non-player lock candidate; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C1F50 |
PROJProc |
sms | signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C20C0 |
PROJHit |
sms | |
0x004C2170 |
PROJFire |
sms | |
0x004C24B0 |
PROJAimAngles |
re | compute launch/boresight angles in the launcher frame (gimbal-limited) |
0x004C26F0 |
PROJFireSound |
sms | |
0x004C2860 |
PROJInFOV |
sms | |
0x004C2B50 |
PROJTargetSignal |
re | seeker signal/lock quality (contrast, IR notch, look-down, clutter) |
0x004C2E40 |
PROJInNotch |
re | Doppler-notch/beaming detection (defeats pulse-doppler) |
0x004C2EB0 |
PROJRadarIsOn |
sms | |
0x004C2F20 |
PROJLock |
sms | |
0x004C31F0 |
PROJIRSensorOn |
re | IR-seeker detectability duty gate |
0x004C3250 |
PROJProximityFuze |
re | closest-approach detonation decision + hit roll |
0x004C3360 |
PROJTargetIsFastAir |
re | predicate: fast maneuvering aircraft (class4, speed>0x3A00); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C3380 |
PROJHitChance |
sms | |
0x004C3830 |
PROJApplyPkCurve |
re | interpolate and clamp the running Pk penalty |
0x004C3890 |
PROJRangePk |
re | range->Pk envelope lookup from the type range table; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C3960 |
PROJSizePk |
re | target-size/RCS vs weapon-sensitivity Pk scalar; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C39A0 |
PROJLaunchDevice |
sms | |
0x004C3AF0 |
PROJRetargetMissilesOnDevice |
sms | |
0x004C3C40 |
PROJGuideToDevice |
re | steer a seduced missile toward the decoy device |
0x004C3CA0 |
PROJRemove |
sms | |
0x004C3DD0 |
PROJRetargetMissiles |
sms | |
0x004C3EB0 |
PROJMakeBombEq |
sms | |
0x004C4030 |
PROJChangeBombEq |
sms | |
0x004C4050 |
PROJBombPos |
sms | |
0x004C4100 |
PROJSelectTarget |
sms | |
0x004C4390 |
PROJScoreTarget |
re | per-candidate seeker scoring callback (dist+penalties); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C4700 |
PROJServiceWeapon |
sms | |
0x004C5000 |
PROJSetReattackTimer |
re | set a random AI re-attack delay from aggression; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C5050 |
PROJAimGunSolution |
re | gun/dumb-weapon aim point with dispersion + terrain clamp; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C5270 |
PROJHasMissileOnTarget |
re | predicate: already have a guided missile locked on target; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C52D0 |
PROJSelectStore |
re | AI: pick the best weapon store for a target; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004C5570 |
PROJMissileAttacking |
sms | |
0x004C5670 |
PROJSendCollateralDamages |
sms | |
0x004C58A0 |
PROJAreaWeaponHit |
re | special-warhead detonation (submunition scatter + collateral) |
0x004C5D00 |
PROJMinScatterAngle |
re | clamp a scatter angle away from zero for submunition dispersion; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
3D render core / SH interpreter (GR)¶
render-core.csv · page — 174 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x004CD588 |
sincos |
re | sin/cos via sin_table lookup+lerp; AL=frac AH=index; core of GRSinCos/angles_2_matrix/all rotates; not a C function (#479): angle in BX; sin in AX, cos in BX |
0x004CD5C6 |
fast_sincos |
sms | |
0x004CD5DF |
isqrt16 |
re | tail-call wrapper of FUN_004cd5ee (16-bit integer sqrt); not a C function (#479): 32-bit value in CX:BX, result in DI |
0x004CD5EE |
isqrt16_body |
re | Newton-Raphson 16-bit integer square root (magnitude-classed); used by distance/normalize; not a C function (#479): 32-bit value in CX:BX, result in DI |
0x004CD73B |
fast_asin |
sms | |
0x004CD75F |
asin |
sms | |
0x004CD7A0 |
GRACos |
sms | public arccos wrapper over acos |
0x004CD7B4 |
acos |
re | arccos via DAT_00515dcc table lookup+lerp; not a C function (#479): cosine in BX, angle result in CX |
0x004CD7FF |
atan2 |
sms | |
0x004CD834 |
GRSetLightSource |
sms | store world light dir into _worldLightSource/515ED2/515ED4 |
0x004CD854 |
SetShading |
re | thin wrapper -> SetShadingTable (renderer span); rebuilds shade LUT; not a C function (#479): 3-component vector in EAX/EBX/ECX |
0x004CD8B0 |
Sun |
re | lighting dot product of _worldLightSource against current matrix rows (518384/38A/390); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004CD8F0 |
clip_edge_right |
re | Sutherland-Hodgman clip vs screen edge (outcode bit4); vbuf/vbuf2 ping-pong; calls ecode_pnt; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004CD9DA |
clip_edge_left |
re | S-H clip vs screen edge (outcode bit8); vbuf ping-pong; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004CDAC6 |
clip_edge_top |
re | S-H clip vs screen edge (outcode bit2); vbuf ping-pong; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004CDBB3 |
clip_edge_bottom |
re | S-H clip vs screen edge (outcode bit1); vbuf ping-pong; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004CDCA8 |
do_nop |
sms | SH opcode 0x34 no-op handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004CDCB8 |
render_3d |
re | scene traversal: sets viewport from _cb clip box; inits sort list; T_AddYourObjs; dispatches dddEntry via vector_table; painter-sorts cur_sort_list then draws via PTR_FUN_0051839c; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004CDEB4 |
setup_view_projection |
re | per-frame view/projection setup (aspect/head vectors/frustum) from zoom + screen dims; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004CE4A8 |
set_render_mode |
re | tail into check_flat body; installs perspective-path rasterizer fn-ptr table (5184AC-518674/5185F0-51861C) |
0x004CE4B4 |
check_flat |
re | pick flat vs perspective render path from matrix (m4=m2=m8=m6=0 && m5~0x7FFF); swaps the rasterizer fn-ptr dispatch tables; sets DAT_00518679/515F84; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004CE784 |
load_normal_table |
re | copy lighting normal_table (or DAT_00518620 variant) into working DAT_00518484 by in_AL selector; not a C function (#479): table selector in AL, no return value |
0x004CE7BC |
load_xlate_rotate_pnt |
re | hand-asm vertex load+translate+rotate helper (axis-select on DAT_00515f84) |
0x004CE7F7 |
mxmul |
re | hand-asm matrix*scalar accumulate helper (axis-select); not a C function (#479): vector in EBX/ECX/EBP; result in BX/CX/BP |
0x004CE89C |
compute_axis_check |
re | derive axis_check_type from dominant matrix axis (m3/m6/m9 vs aspect); selects transform/cull variant; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004CE968 |
sort_objs_wrapper |
re | painter depth sort wrapper over _SortObjs_8; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004CE980 |
dmxmul |
sms | |
0x004CEA40 |
dmxmul2 |
sms | |
0x004CEB00 |
rotate_vec_roll |
re | rotate _xv/_zv by cached sin/cos (roll axis) helper of rotate_matrix_roll; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004CEB70 |
rotate_matrix_roll |
re | object-instancing: concat roll rotation into current matrix (m1..m9) via sincos; not a C function (#479): angle in BX, result in the carry flag |
0x004CED44 |
rotate_vec_pitch |
re | rotate _yv/_zv (pitch axis) helper of rotate_matrix_pitch; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004CEDB8 |
rotate_matrix_pitch |
re | object-instancing: concat pitch rotation into current matrix via sincos; not a C function (#479): angle in BX, result in the carry flag |
0x004CEF8C |
rotate_vec_yaw |
re | rotate _xv/_yv (yaw axis) helper of rotate_matrix_yaw; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004CF000 |
rotate_matrix_yaw |
re | object-instancing: concat yaw rotation into current matrix via sincos; not a C function (#479): angle in BX, result in the carry flag |
0x004CF258 |
CodePnt |
sms | |
0x004CF270 |
code_pnt |
re | compute 5-bit frustum outcode of a projected point (BP/BX bounds); not a C function (#479): point in BX/CX/BP, outcode in AL |
0x004CF2A4 |
ecode_pnt |
re | extended outcode (near-plane aware) returned in AL; used by clippers; not a C function (#479): point in EBX/ECX/EBP, outcode in AL |
0x004CF2D0 |
matrix_from_angle3 |
re | build 3x3 rotation matrix (3x FUN_004cf410) for MakeObj/ViewRotationMatrix; not a C function (#479): source vector in ESI and destination matrix in EBP |
0x004CF328 |
mult_point_by_matrix_asm |
re | hand-asm point*matrix (register-only; empty decompile) — MultPointByMatrix core; not a C function (#479): point in ESI and matrix in EBP, result in BX/CX/DI |
0x004CF410 |
matrix_row_asm |
re | hand-asm matrix row build (register-only; empty decompile); not a C function (#479): row in EBP and matrix in ESI, result in BX/CX/DI |
0x004D028C |
cull_bbox_viewspace |
re | view-space bounding-box/near-plane visibility test; returns clip code; called by GRAddBrentObj & do_drawobj000; not a C function (#479): shift in CL, box in SI/BX/BP/AX; result in the carry flag |
0x004D0494 |
get_sort_dist |
re | painter sort key = max|Δ|+quarters of others + per-obj bias (from _xv32/_yv32/_zv32); not a C function (#479): object record in EDI; sort key returned in BP |
0x004D057C |
GRAddBrentObj |
sms | |
0x004D0798 |
draw_brent_obj |
re | per-object shape-draw callback (PTR_FUN_0051839c target): restore saved matrix/viewer; ShapeSetup(brentObjId); object rotate (roll/pitch/yaw); lighting matrix; check_flat; SetShadingTable; interpret shape stream with _bdrawObj=1; not a C function (#479): object record in EDI |
0x004D0C2F |
sh_op_BA |
re | SH opcode 0xBA handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D0C50 |
do_drawobj000 |
sms | not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D0C8A |
sh_op_6A |
re | SH opcode 0x6A handler (render-state/geometry; 1409 bytes); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D120B |
sh_op_28 |
re | SH opcode 0x28/0x30 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D1421 |
sh_op_D6_pre |
re | 3-byte pre-adjust falling into sh_op_5A (op 0xD6); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D1424 |
sh_op_5A |
re | SH opcode 0x5A handler (epic #52 placeholder name; 623 bytes); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D1694 |
sh_op_20 |
re | SH opcode 0x20 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D17BC |
do_shape_name |
sms | SH opcode 0x42 (SourceName): consume null-terminated shape name into _shapeName; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D17E0 |
sh_op_stub |
re | shared no-op stub for 10 unassigned SH opcodes; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D17F0 |
sh_op_00 |
re | SH opcode 0x00 (EndObject) handler entry (1 byte; falls into do_short_eof); not a C function (#479): SH dispatch-table jmp target; the RET returns from the enclosing interpreter |
0x004D17F4 |
do_short_eof |
sms | SH opcode 0x1E (ShortEOF): plain ret — returns from the current interpreter call frame (ends an Unmask/selector-called fragment; at top level ends the object). Trailing 0x1E runs are alignment after the return; not a C function (#479): SH dispatch-table jmp target; consumes ESI from the enclosing interpreter |
0x004D17F8 |
sh_op_3A |
re | SH opcode 0x3A handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D18F4 |
sh_op_08 |
re | SH opcode 0x08 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D1974 |
sh_op_72 |
re | SH opcode 0x72 handler (epic #52 placeholder name); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D1984 |
sh_op_96 |
re | SH opcode 0x96 handler (856 bytes); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D1E5C |
do_vertexbuffer |
re | SH opcode 0x82 (VertexBuffer) + 0x02/0x04/0x0A: push vertex batch into global pool at push_at/8; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D1ECC |
sh_op_A2 |
re | SH opcode 0xA2/0xAE handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D1EDC |
sh_op_7A |
re | SH opcode 0x7A handler (epic #52 placeholder name); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D1F24 |
sh_op_74 |
re | SH opcode 0x74/0x7C/0x8E/0x9C handler (6-byte); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D1F2C |
sh_op_76 |
re | SH opcode 0x76 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D1F34 |
sh_op_22 |
re | SH opcode 0x22/0x7E handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D1FC0 |
sh_op_80 |
re | SH opcode 0x80 handler (epic #52 placeholder name; 796 bytes); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D225E |
sh_op_1A |
re | SH opcode 0x1A handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2278 |
do_unmask |
re | SH opcode 0x12 (Unmask): dispatches the target sub-stream via the vector_table call-form; the callee chain runs until its ShortEOF (0x1E) rets; control resumes after the opcode; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D22A8 |
do_sfcal_long |
sms | SH opcode 0x6E (UnmaskLong); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D22D4 |
do_ifdestroyed |
sms | SH opcode 0xAC (JumpToDamage): esi+=rel16 if _destroyed (0x50C39C); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D22FC |
do_no_overlap |
sms | SH opcode 0xB8: clears overlap/collision flag via FUN_004d426c; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2318 |
do_jumptodetail |
re | SH opcode 0xA6 (JumpToDetail): skip rel16 when _detail(0x515EEE) < threshold; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2344 |
do_use_terrain_detail |
sms | SH opcode 0xB2; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2360 |
sh_op_B0 |
re | SH opcode 0xB0 handler; not a C function (#479): SH dispatch-table jmp target; consumes ESI and tail-jumps back into the table |
0x004D2380 |
do_if_not_effect |
sms | SH opcodes 0x14/0x16/0x3C/0xA8/0xAA/0xC0: conditional skip keyed on effects setting; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D23AC |
sh_op_6C |
re | SH opcode 0x6C (draw-order selector): compares object-record field [w0] to w1; ALWAYS renders both sub-chains — calls one (returns at its ShortEOF) and tail-continues the other; the condition only swaps the order (painter's sorting). Targets: call=opd+w3+8 / continue=opd+6+w2; 13/14/16-byte sizes are the trailing embedded 38/48/50 jump; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2450 |
sh_op_06 |
re | SH opcode 0x06 (plane-test draw-order selector): sign of nx(x+_xv)+ny(y+_yv)+nz*(z+_zv) picks the order; both sub-chains always render (call one / continue other). Operand: 3×(coeff i16 + coord i16) + size u16 + call-rel16 + embedded jump; call=opd+16+rel / continue=next instruction (opd+14+size); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D24F8 |
sh_op_0C |
re | SH opcode 0x0C: two-axis (y/z) variant of the 0x06 plane-test draw-order selector; operand 2×(coeff+coord) + size u16 + call-rel16 + embedded jump; call=opd+12+rel / continue=next instruction; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2580 |
sh_op_0E |
re | SH opcode 0x0E: two-axis (x/z) variant of the 0x06 plane-test draw-order selector (same layout as 0x0C); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2608 |
sh_op_10 |
re | SH opcode 0x10: two-axis (x/y) variant of the 0x06 plane-test draw-order selector (same layout as 0x0C); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2690 |
sh_op_18 |
re | SH opcode 0x18 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2740 |
sh_op_84 |
re | SH opcode 0x84 handler (epic #52 placeholder name); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2798 |
load_dest |
re | interpreter helper: load destination operand; not a C function (#479): SH bytecode cursor in ESI (advanced in place); result in EAX |
0x004D27C8 |
sh_op_1C_flat |
re | SH opcode 0x1C/0x88 handler, FLAT-path variant; not a C function (#479): threaded-code jump target. check_flat installs it into PTR_sh_op_1C_* where the perspective path installs sh_op_1C (0x4D2880) — it drops that sibling's m4/m6 matrix multiply |
0x004D2880 |
sh_op_1C |
re | SH opcode 0x1C/0x88 handler (perspective-path variant swapped by check_flat); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2910 |
sh_op_26 |
re | SH opcode 0x26 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2948 |
sh_op_2A_flat |
re | SH opcode 0x2A/0x86 handler, FLAT-path variant; not a C function (#479): threaded-code jump target. Installed by check_flat into PTR_sh_op_2A_* opposite sh_op_2A (0x4D29EC) — keeps the _scaled_matrix multiply, drops the m3 one |
0x004D29EC |
sh_op_2A |
re | SH opcode 0x2A/0x86 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2A7C |
sh_op_2C_flat |
re | SH opcode 0x2C/0x8A handler, FLAT-path variant; not a C function (#479): threaded-code jump target. Installed by check_flat into PTR_sh_op_2C_* opposite sh_op_2C (0x4D2B20) |
0x004D2B20 |
sh_op_2C |
re | SH opcode 0x2C/0x8A handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2BB0 |
sh_op_92 |
re | SH opcode 0x92 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2C70 |
sh_op_90 |
re | SH opcode 0x90 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2D30 |
sh_op_94 |
re | SH opcode 0x94 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2FC0 |
do_setcolor2 |
sms | SH opcode 0x5C; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2FC8 |
sh_op_BC |
re | SH opcode 0xBC handler (UnkBC); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D2FD0 |
sh_op_2E |
re | SH opcode 0x2E handler; contains do_setcolor_continue (0x4D2FD6); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D300A |
sh_op_24_pre |
re | 2-byte entry for op 0x24 (falls into do_fullpntg16); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D300C |
do_fullpntg16 |
sms | SH opcode 0xFA; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D3064 |
sh_op_A0 |
re | SH opcode 0xA0 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D30C8 |
sh_op_4E |
re | SH opcode 0x4E handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D30E4 |
do_short_ijmp |
sms | SH opcode 0x38 (ShortJump): DEC ESI then shares 0x48 body; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D30E5 |
do_jump |
sms | SH opcode 0x48 (Jump): esi+=rel16; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D3100 |
do_ijmp_long |
sms | SH opcode 0x50 (LongJump): esi+=rel32; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D3118 |
sh_op_32 |
re | SH opcode 0x32 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D3134 |
do_anim_jmp |
sms | SH opcode 0x40 (JumpToFrame): idx=_frameCounter mod nframes; relative frame-table jump; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D315C |
sh_op_4A |
re | SH opcode 0x4A handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D3193 |
sh_op_4C_pre |
re | 1-byte entry for op 0x4C/0x8C (falls into sh_op_C4); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D3194 |
do_xformunmask |
re | SH opcode 0xC4 XformUnmask: render sub-stream at a relative transform; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D33D8 |
do_icall_long |
sms | SH opcode 0xC6 (XformUnmaskLong); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D3618 |
sh_op_52 |
re | SH opcode 0x52/0x54 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D3644 |
sh_op_56 |
re | SH opcode 0x56 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D3670 |
sh_op_5E |
re | SH opcode 0x5E handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D36CC |
sh_op_60 |
re | SH opcode 0x60 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D3728 |
sh_op_62 |
re | SH opcode 0x62 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D3784 |
sh_op_64 |
re | SH opcode 0x64 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D37BC |
sh_op_66 |
re | SH opcode 0x66 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D37F4 |
sh_op_68 |
re | SH opcode 0x68 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D382C |
sh_op_58 |
re | SH opcode 0x58 handler; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D3938 |
sh_op_78 |
re | SH opcode 0x78: oriented bounding-box visibility cull — transforms a center+-extent box by the view matrix and trivially-rejects the guarded geometry from its 8 corners (code_pnt Cohen-Sutherland outcodes); emits no geometry (largest handler; 2085 bytes); not a C function (#479): SH dispatch-table jmp target; consumes ESI and CL from the enclosing interpreter |
0x004D415D |
thunk_FUN_004d416b |
sms | 2-byte thunk for ops 0xA4/0xBE -> FUN_004d416b |
0x004D416B |
sh_op_A4_body |
re | body reached via thunk (op 0xA4/0xBE); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D416C |
do_jumpfar4 |
sms | SH opcode 0xC8 (JumpToLOD): distance/size LOD test; skips 6-byte operand when _effects&0x20000; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D4240 |
do_start_interp |
sms | bytecode re-entry target for x86-embedded regions (all 208 x86 shapes jump here); esi=selected sub-stream; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D4254 |
do_start_asm |
sms | SH opcode 0xF0 (X86Code): push esi; ret -> execute embedded x86 payload; not a C function (#479): SH opcode 0xF0: push esi; ret transfers control to the embedded x86 code |
0x004D4258 |
do_collision_info |
sms | SH opcode 0xF2 (PtrToObjEnd): records obj_end_off; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D426C |
set_overlap_flag |
re | helper: AND/OR update of collision/overlap flag word 0x515EF0 (used by do_no_overlap); not a C function (#479): value in EAX and mask in EBX (AND/OR update of [0x515EF0]) |
0x004D4288 |
sh_op_CA |
re | SH opcode 0xCA handler (UnkCA); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D42C8 |
do_setlight |
sms | SH opcode 0xDA; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D42EC |
do_setcoarse |
sms | SH opcode 0x44 (sets _coarse detail flag); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D4308 |
do_set_point_color |
sms | SH opcode 0xF6 (VertexInfo): per-vertex color+normal; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D4364 |
do_set_gouraud |
sms | SH opcode 0xF4; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D43CC |
SetFlatColor |
re | helper: set flat-shade color for do_new_poly; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand |
0x004D43DC |
do_new_poly |
sms | SH opcode 0xFC (Face): parse face flags/indices(<<3=*8 pool)/texcoords; effect-gate; synthesize+dispatch sub-program of setcolor/gouraud/texture/brush opcodes -> rasterizer; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D478C |
do_force_no_pmap |
sms | SH opcode 0x46 (sets _force_no_pmap); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D47A4 |
do_streamer_def |
sms | SH opcode 0xCE (streamer/contrail define); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D47B8 |
do_streamer_draw |
sms | SH opcode 0xD0 (streamer/contrail draw); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D4874 |
NeedClip |
re | helper: mark clip needed; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D4888 |
RestoreClip |
re | helper: restore prior clip state; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D4894 |
do_screen_coords |
sms | SH opcode 0xD2 (project to screen coords); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D4988 |
do_texture_index |
re | SH opcode 0xE0 (TextureIndex): select current texture by index; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D49C0 |
do_texture_file |
re | SH opcode 0xE2 (TextureFile): set current texture by 14-byte name; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D4A19 |
do_brush_solid |
sms | SH opcode 0xEC; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D4A30 |
do_brush_trans |
sms | SH opcode 0xEE; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D4A47 |
do_brush_area |
sms | SH opcode 0xE4; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D4A6D |
do_brush_area_full |
sms | SH opcode 0xE6; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D4ACA |
sh_op_DC |
re | SH opcode 0xDC handler (UnkDC; 610 bytes; textured-fill path); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D4D2C |
sh_op_DE |
re | SH opcode 0xDE handler (perspective textured-fill; 723 bytes); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D4FFF |
shade_span_a |
re | do_new_smap/rmap shade-span builder variant A; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D511B |
shade_span_b |
re | do_new_smap/rmap shade-span builder variant B; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D523B |
shade_span_c |
re | do_new_smap/rmap shade-span builder variant C; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D5356 |
shade_span_d |
re | do_new_smap/rmap shade-span builder variant D; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D5475 |
do_new_smap |
sms | SH opcode 0xE8 (shade map); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D5644 |
do_new_rmap |
sms | SH opcode 0xEA (remap; 872 bytes); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D59AC |
do_new_pmap_or_tmap |
sms | SH opcodes 0x36/0x3E (perspective/texture map); not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D5A2C |
angles_2_matrix |
re | build view rotation matrix from _am_h/_am_p/_am_b (heading/pitch/bank) via sincos; not a C function (#479): destination matrix in EBP |
0x004D5BA8 |
GRInit3d |
sms | init: store detail flag; install _overflow_ptr divide trap |
0x004D5BCC |
GRRender |
sms | top-level 3D render: set viewer xyz + view angles + zoom + obj/ter detail/effects; angles_2_matrix; render_3d; export _unscaled_matrix |
0x004D5C98 |
GRSinCos |
sms | public sin/cos wrapper over sincos |
0x004D5CC0 |
GRTo2d |
sms | |
0x004D5E18 |
TransposeMatrix |
sms | |
0x004D5E58 |
MakeObjRotationMatrix |
sms | build object rotation matrix (roll/pitch/yaw) into caller buffer |
0x004D60D8 |
MakeViewRotationMatrix |
sms | build view rotation matrix (yaw/pitch/roll order) into caller buffer |
0x004D631C |
MultPointByMatrix |
sms | transform a point by the current matrix (wraps mult_point_by_matrix_asm) |
0x004D6348 |
GRSaveContext |
sms | save viewer/xv/scr/bias/wtop + scaled+unscaled matrices to shadow block 0x51D5E3+ |
0x004D63F0 |
GRRestoreContext |
sms | restore the GRSaveContext shadow block |
0x004D6498 |
GRExec |
sms | execute one SH command stream: dispatch vector_table[*param]; preserve _xv/_yv/_zv (used by scene dispatch for sky/sun list) |
0x004D64D8 |
MultF24PointByMatrix |
sms | transform a 24.8 fixed point by matrix with saturation |
0x004D65C4 |
Sqrt |
sms | |
0x004D6640 |
do_nt |
sms | SH opcode 0xFE (terrain node/tile): read tile verts; compute bbox+sort key; insert into sort list; draw_quad or draw_tri_nw+se by diagonal; not a C function (#479): threaded-code jump target dispatched through vector_table (0x5183A0) with ESI live as the bytecode cursor; no RET of its own |
0x004D69EC |
__compute_viewer_dot_product |
re | backface cull: face-normal dot (vertex - viewer) for do_nt tiles; not a C function (#479): vertex in EDI and normal in EBX; result in the sign flag / EDX:EAX |
0x004D6A38 |
draw_quad |
re | assemble 4-vertex tile working set -> draw_nt; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D6A90 |
draw_tri_nw |
re | assemble NW-triangle working set -> draw_nt; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D6B24 |
draw_tri_se |
re | assemble SE-triangle working set -> draw_nt; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D6BB8 |
draw_nt |
re | build terrain-tile polygon (flat/gouraud/textured) from working set and submit to the 2D rasterizer; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
Startup / Phar Lap DOS extender / config¶
startup.csv · page — 495 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x00403700 |
usnfmain |
sms | |
0x00404C70 |
FlyingLoop |
sms | |
0x0041E370 |
SetConfig |
sms | command-line parser: /D /H /J /M /N switches + janes* globals + UCONFIG_Initialize |
0x0041E8E0 |
WriteConfig |
sms | serialize devices/volumes/prefs/pilot to EA.CFG via SaveFile |
0x0041E8F0 |
IsBrentDLL |
sms | PE/DLL loader family: directly precedes IsDLL@0x41E910 (claimed in #534) |
0x0041E910 |
IsDLL |
sms | |
0x0041E990 |
VAToPtrInFile |
sms | |
0x0041EA80 |
FindSection |
sms | |
0x0041EB60 |
LoadDLL |
sms | |
0x0041F240 |
LoadBrentDLL |
sms | |
0x00436320 |
StartGameThread |
sms | |
0x0044A110 |
InstallErrorExit |
sms | |
0x0044A120 |
ErrorExit |
sms | |
0x0044A370 |
GameCleanup |
sms | |
0x0044A420 |
ErrorExitNoMem |
sms | |
0x0046B560 |
MainLoop |
sms | |
0x00476120 |
WinMain |
sms | |
0x00476180 |
MainWndproc |
sms | |
0x004764B0 |
InitApplication |
sms | |
0x00476660 |
CreateGameThread |
sms | |
0x00476700 |
EndGame |
sms | |
0x004767F0 |
DisplayCopyright |
sms | |
0x00486E80 |
StartTimeThread |
sms | the 15ms timer thread: ticks + WRUpdatePalette + ASynchJoystick + GG_Shake |
0x00487A10 |
WaitUntil |
sms | busy-wait on _timerTicks (the timer thread's counter) |
0x00492740 |
doConfigurationScreen |
sms | |
0x004B27C0 |
UCONFIG_DMusic |
sms | |
0x004B2820 |
UCONFIG_SetVideoOptions |
sms | |
0x004B2930 |
UCONFIG_load_EA_CFG |
sms | |
0x004B2980 |
UCONFIG_save_EA_CFG |
sms | |
0x004B2BD0 |
UCONFIG_Initialize |
sms | |
0x004D6F5C |
timeGetTime |
sms | IAT import thunk (jmp [imp…]) |
0x004D6F62 |
joyGetPos |
sms | IAT import thunk (jmp [imp…]) |
0x004D6F68 |
joyGetDevCapsA |
sms | IAT import thunk (jmp [imp…]) |
0x004D6F6E |
joyGetNumDevs |
sms | IAT import thunk (jmp [imp…]) |
0x004D6F74 |
joyGetPosEx |
sms | IAT import thunk (jmp [imp…]) |
0x004D6F7A |
Sleep |
sms | IAT import thunk (jmp [imp…]) |
0x004D6F80 |
SetCurrentDirectoryA |
sms | IAT import thunk (jmp [imp…]) |
0x004D6F86 |
InitializeCriticalSection |
sms | IAT import thunk (jmp [imp…]) |
0x004D6F8C |
DeleteCriticalSection |
sms | IAT import thunk (jmp [imp…]) |
0x004D6F92 |
LeaveCriticalSection |
sms | IAT import thunk (jmp [imp…]) |
0x004D6F98 |
EnterCriticalSection |
sms | IAT import thunk (jmp [imp…]) |
0x004D6F9E |
GetDriveTypeA |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FA4 |
GetLogicalDrives |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FAA |
SetThreadPriority |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FB0 |
GetCurrentThread |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FB6 |
GetThreadPriority |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FBC |
GetSystemInfo |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FC2 |
MapViewOfFile |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FC8 |
CreateFileMappingA |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FCE |
GetFileSize |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FD4 |
CreateFileA |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FDA |
IsBadStringPtrA |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FE0 |
CloseHandle |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FE6 |
UnmapViewOfFile |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FEC |
GlobalAlloc |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FF2 |
VirtualAlloc |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FF8 |
GlobalFree |
sms | IAT import thunk (jmp [imp…]) |
0x004D6FFE |
VirtualFree |
sms | IAT import thunk (jmp [imp…]) |
0x004D7004 |
ExitThread |
sms | IAT import thunk (jmp [imp…]) |
0x004D700A |
ExitProcess |
sms | IAT import thunk (jmp [imp…]) |
0x004D7010 |
SuspendThread |
sms | IAT import thunk (jmp [imp…]) |
0x004D7016 |
GetCurrentThreadId |
sms | IAT import thunk (jmp [imp…]) |
0x004D701C |
CreateThread |
sms | IAT import thunk (jmp [imp…]) |
0x004D7022 |
GetExitCodeThread |
sms | IAT import thunk (jmp [imp…]) |
0x004D7028 |
QueryPerformanceCounter |
sms | IAT import thunk (jmp [imp…]) |
0x004D702E |
QueryPerformanceFrequency |
sms | IAT import thunk (jmp [imp…]) |
0x004D7034 |
ResumeThread |
sms | IAT import thunk (jmp [imp…]) |
0x004D703A |
TerminateThread |
sms | IAT import thunk (jmp [imp…]) |
0x004D7040 |
FindClose |
sms | IAT import thunk (jmp [imp…]) |
0x004D7046 |
FindFirstFileA |
sms | IAT import thunk (jmp [imp…]) |
0x004D704C |
GetDiskFreeSpaceA |
sms | IAT import thunk (jmp [imp…]) |
0x004D7052 |
FindNextFileA |
sms | IAT import thunk (jmp [imp…]) |
0x004D7058 |
FileTimeToDosDateTime |
sms | IAT import thunk (jmp [imp…]) |
0x004D705E |
FileTimeToLocalFileTime |
sms | IAT import thunk (jmp [imp…]) |
0x004D7064 |
GetFileTime |
sms | IAT import thunk (jmp [imp…]) |
0x004D706A |
GetLocalTime |
sms | IAT import thunk (jmp [imp…]) |
0x004D7070 |
GetSystemTime |
sms | IAT import thunk (jmp [imp…]) |
0x004D7076 |
FreeLibrary |
sms | IAT import thunk (jmp [imp…]) |
0x004D707C |
GetProcAddress |
sms | IAT import thunk (jmp [imp…]) |
0x004D7082 |
LoadLibraryA |
sms | IAT import thunk (jmp [imp…]) |
0x004D7088 |
SetErrorMode |
sms | IAT import thunk (jmp [imp…]) |
0x004D708E |
SetFilePointer |
sms | IAT import thunk (jmp [imp…]) |
0x004D7094 |
ReadFile |
sms | IAT import thunk (jmp [imp…]) |
0x004D70A0 |
DeleteFileA |
sms | IAT import thunk (jmp [imp…]) |
0x004D70A6 |
MoveFileA |
sms | IAT import thunk (jmp [imp…]) |
0x004D70AC |
lstrcpyA |
sms | IAT import thunk (jmp [imp…]) |
0x004D70B2 |
GetCurrentDirectoryA |
sms | IAT import thunk (jmp [imp…]) |
0x004D70B8 |
GetModuleFileNameA |
sms | IAT import thunk (jmp [imp…]) |
0x004D70BE |
GetTickCount |
sms | IAT import thunk (jmp [imp…]) |
0x004D70C4 |
PostMessageA |
sms | IAT import thunk (jmp [imp…]) |
0x004D70CA |
SendMessageA |
sms | IAT import thunk (jmp [imp…]) |
0x004D70D0 |
GetCursorPos |
sms | IAT import thunk (jmp [imp…]) |
0x004D70D6 |
ClipCursor |
sms | IAT import thunk (jmp [imp…]) |
0x004D70DC |
SetRect |
sms | IAT import thunk (jmp [imp…]) |
0x004D70E2 |
MessageBoxA |
sms | IAT import thunk (jmp [imp…]) |
0x004D70E8 |
ShowWindow |
sms | IAT import thunk (jmp [imp…]) |
0x004D70EE |
DispatchMessageA |
sms | IAT import thunk (jmp [imp…]) |
0x004D70F4 |
GetMessageA |
sms | IAT import thunk (jmp [imp…]) |
0x004D70FA |
DestroyWindow |
sms | IAT import thunk (jmp [imp…]) |
0x004D7100 |
SetCursor |
sms | IAT import thunk (jmp [imp…]) |
0x004D7106 |
SetForegroundWindow |
sms | IAT import thunk (jmp [imp…]) |
0x004D710C |
GetForegroundWindow |
sms | IAT import thunk (jmp [imp…]) |
0x004D7112 |
DefWindowProcA |
sms | IAT import thunk (jmp [imp…]) |
0x004D7118 |
PostQuitMessage |
sms | IAT import thunk (jmp [imp…]) |
0x004D711E |
ShowCursor |
sms | IAT import thunk (jmp [imp…]) |
0x004D7124 |
SetFocus |
sms | IAT import thunk (jmp [imp…]) |
0x004D712A |
CreateWindowExA |
sms | IAT import thunk (jmp [imp…]) |
0x004D7130 |
GetSystemMetrics |
sms | IAT import thunk (jmp [imp…]) |
0x004D7136 |
RegisterClassA |
sms | IAT import thunk (jmp [imp…]) |
0x004D713C |
LoadIconA |
sms | IAT import thunk (jmp [imp…]) |
0x004D7142 |
FindWindowA |
sms | IAT import thunk (jmp [imp…]) |
0x004D7148 |
SystemParametersInfoA |
sms | IAT import thunk (jmp [imp…]) |
0x004D714E |
SetDlgItemTextA |
sms | IAT import thunk (jmp [imp…]) |
0x004D7154 |
CreateDialogParamA |
sms | IAT import thunk (jmp [imp…]) |
0x004D715A |
_DirectDrawCreate@12 |
sms | IAT jump thunk -> DDRAW.DLL import (used by InitVideo); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7160 |
AIL_midiOutOpen |
sms | |
0x004D7166 |
AIL_set_preference |
sms | |
0x004D716C |
AIL_startup |
sms | |
0x004D7172 |
AIL_shutdown |
sms | |
0x004D7178 |
AIL_stop_timer |
sms | |
0x004D717E |
AIL_midiOutClose |
sms | |
0x004D7184 |
AIL_start_sequence |
sms | |
0x004D718A |
AIL_release_sequence_handle |
sms | |
0x004D7190 |
AIL_init_sequence |
sms | |
0x004D7196 |
AIL_allocate_sequence_handle |
sms | |
0x004D719C |
AIL_unlock |
sms | |
0x004D71A2 |
AIL_set_XMIDI_master_volume |
sms | |
0x004D71A8 |
AIL_lock |
sms | |
0x004D71AE |
AIL_sequence_status |
sms | |
0x004D71B4 |
AIL_allocate_sample_handle |
sms | |
0x004D71BA |
AIL_waveOutOpen |
sms | |
0x004D71C0 |
AIL_start_timer |
sms | |
0x004D71C6 |
AIL_set_timer_frequency |
sms | |
0x004D71CC |
AIL_register_timer |
sms | |
0x004D71D2 |
AIL_waveOutClose |
sms | |
0x004D71D8 |
AIL_end_sample |
sms | |
0x004D71DE |
AIL_sample_status |
sms | |
0x004D71E4 |
AIL_stop_sequence |
sms | |
0x004D71EA |
AIL_resume_sequence |
sms | |
0x004D71F0 |
AIL_start_sample |
sms | |
0x004D71F6 |
AIL_set_sample_type |
sms | |
0x004D71FC |
AIL_set_sample_address |
sms | |
0x004D7202 |
AIL_set_sample_loop_count |
sms | |
0x004D7208 |
AIL_init_sample |
sms | |
0x004D720E |
AIL_set_sample_pan |
sms | |
0x004D7214 |
AIL_set_sample_volume |
sms | |
0x004D721A |
AIL_set_sample_playback_rate |
sms | |
0x004D7220 |
_ser_rs232_getpacket@12 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7226 |
_ser_rs232_block@12 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D722C |
_ser_rs232_flush@8 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7232 |
_ser_rs232_getbyte@8 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7238 |
_ser_rs232_putbyte@8 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D723E |
_ser_rs232_getstatus@8 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7244 |
_ser_rs232_putpacket@12 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D724A |
_FlushTransmitBuffer@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7250 |
_FlushReceiveBuffer@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7256 |
_SetFlowControlThreshold@12 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D725C |
_SetPaceTime@8 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7262 |
_SetTimeout@8 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7268 |
_UnInitializePort@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D726E |
_SetPortCharacteristics@24 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7274 |
_InitializePort@36 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D727A |
_IsPortAvailable@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7280 |
_BytesInReceiveBuffer@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7286 |
_BytesInTransmitBuffer@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D728C |
_GetByte@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7292 |
_PeekChar@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7298 |
_CdrvCrc16@8 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D729E |
_IsCarrierDetect@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D72A4 |
_ModemInit@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D72AA |
_ModemAttention@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D72B0 |
_ModemWaitForCall@16 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D72B6 |
_IsRing@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D72BC |
_GetString@12 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D72C2 |
_ModemAnswerMode@8 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D72C8 |
_ModemGetCarrierSpeed@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D72CE |
_ModemConnect@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D72D4 |
_Dial@12 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D72DA |
_ModemModifyValue@12 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D72E0 |
_ModemHangup@4 |
sms | IAT jump thunk -> CDRVxF32/COMMSC32 serial+modem driver import (network/input transport); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D72E6 |
RegCloseKey |
sms | |
0x004D72EC |
RegQueryValueExA |
sms | |
0x004D72F2 |
RegOpenKeyExA |
sms | |
0x004D72F8 |
RegEnumKeyExA |
sms | |
0x004D72FE |
_closeMS |
sms | IAT jump thunk -> msapi.dll matchmaking-service import (network subsystem); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7304 |
_getMSdatafile |
sms | IAT jump thunk -> msapi.dll matchmaking-service import (network subsystem); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D730A |
_getMSdatafilesize |
sms | IAT jump thunk -> msapi.dll matchmaking-service import (network subsystem); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7310 |
_initializeMS |
sms | IAT jump thunk -> msapi.dll matchmaking-service import (network subsystem); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7316 |
_connectMS |
sms | IAT jump thunk -> msapi.dll matchmaking-service import (network subsystem); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D731C |
_sendMSresults |
sms | IAT jump thunk -> msapi.dll matchmaking-service import (network subsystem); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004D7330 |
_strncpy |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D7430 |
__cinit |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D7460 |
_exit |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D7480 |
__exit |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D74A0 |
_cexit |
sms | |
0x004D7580 |
__lockexit |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D7590 |
__unlockexit |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D75C0 |
_strrchr |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D75F0 |
_atol |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D76A0 |
_atoi |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D76B0 |
__atoi64 |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand |
0x004D7790 |
_sprintf |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; not a C function (#479): va_list built at [esp+0xC] (MSVC CRT sprintf: char , const char , ...) |
0x004D7810 |
_strchr |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D78D0 |
_memmove |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D7A20 |
_tolower |
sms | |
0x004D7A30 |
_tolower |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D7AA0 |
__tolower_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D7B90 |
_fclose |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D7BD0 |
__fclose_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D7C70 |
_fopen |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D7C90 |
_strstr |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D7D10 |
isalpha |
sms | |
0x004D7D50 |
isupper |
sms | |
0x004D7D80 |
islower |
sms | |
0x004D7DB0 |
_isdigit |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D7DE0 |
isxdigit |
sms | |
0x004D7E20 |
_isspace |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D7E50 |
ispunct |
sms | |
0x004D7E80 |
_isalnum |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D7EC0 |
_isprint |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D7F00 |
isgraph |
sms | |
0x004D7F40 |
iscntrl |
sms | |
0x004D8040 |
_toupper |
sms | |
0x004D8050 |
_toupper |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D80C0 |
__toupper_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D81B0 |
__chkstk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; not a C function (#479): frame size in EAX; adjusts ESP and the return address in place |
0x004D81E0 |
?_JumpToContinuation@@YGXPAXPAUEHRegistrationNode@@@Z |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D8220 |
?_CallMemberFunction0@@YGXPAX0@Z |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D8230 |
?_CallMemberFunction1@@YGXPAX00@Z |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D8240 |
?_CallMemberFunction2@@YGXPAX00H@Z |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D8250 |
?_UnwindNestedFrames@@YGXPAUEHRegistrationNode@@PAUEHExceptionRecord@@@Z |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D8310 |
?_CallCatchBlock2@@YAPAXPAUEHRegistrationNode@@PBU_s_FuncInfo@@PAXHK@Z |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D83B0 |
?_CallSETranslator@@YAHPAUEHExceptionRecord@@PAUEHRegistrationNode@@PAX2PBU_s_FuncInfo@@H1@Z |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D8510 |
__global_unwind2 |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D8552 |
__local_unwind2 |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D85BA |
__abnormal_termination |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D85DD |
__NLG_Notify1 |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D85E6 |
__NLG_Notify |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; not a C function (#479): target in EAX and the CALLER's EBP frame, plus one stack dword |
0x004D8610 |
_strncmp |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D8648 |
__ftol |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; not a C function (#479): double argument in the x87 register ST(0); result in EDX:EAX |
0x004D86A0 |
__cfltcvt_init |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D86F8 |
_except_handler3 |
sms | |
0x004D87B5 |
__seh_longjmp_unwind@4 |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D87D0 |
_labs |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D87E0 |
_strncat |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D8910 |
__alldiv |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D89C0 |
__allmul |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D8A00 |
_qsort |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D8C00 |
__chdir |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D8CB0 |
__fullpath |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D8D90 |
__splitpath |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D8EF0 |
__getcwd |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D8F20 |
_getdcwd |
sms | |
0x004D8F60 |
__getdcwd_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D90A0 |
__validdrive |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D90F0 |
_strupr |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D9250 |
_bsearch |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D9300 |
_fread |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D9340 |
__fread_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D9490 |
_fwrite |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D94D0 |
__fwrite_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D9660 |
_stricmp |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D9730 |
_strlen |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D97B0 |
_strcpy |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D97C0 |
_strcat |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D98A0 |
srand |
sms | |
0x004D98B0 |
_rand |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004D98E0 |
fgets |
sms | |
0x004D9960 |
fprintf |
sms | |
0x004D99B0 |
_lsearch |
sms | |
0x004D9A10 |
_sscanf |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D9A60 |
_getenv |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D9A90 |
__getenv_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D9B30 |
fflush |
sms | |
0x004D9B70 |
__fflush_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D9D00 |
WinMainCRTStartup |
sms | PE entry point / MSVC CRT startup: GetVersion, __heap_init, __mtinit, __ioinit, initmbctable, _setargv/setenvp/__cinit, then _WinMain@16 (0x476120, outside range), _exit. THE one true startup element in range |
0x004D9EB0 |
__amsg_exit |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004D9EE0 |
__strlwr |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DA040 |
_strnicmp |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DA140 |
__mtinitlocks |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DA170 |
__mtdeletelocks |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DA1E0 |
__lock |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DA250 |
__unlock |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DA270 |
__lock_file |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DA2B0 |
__lock_file2 |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DA2E0 |
__unlock_file |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DA320 |
__unlock_file2 |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DA350 |
_lockerr_exit |
sms | |
0x004DA370 |
__isctype |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DB020 |
setlocale |
sms | |
0x004DB560 |
_expandlocale |
sms | |
0x004DB740 |
_strcats |
sms | |
0x004DBDB0 |
_free |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DBE20 |
__close |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DBE90 |
__close_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DCCD0 |
__CallSettingFrame@12 |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DCD20 |
__mtinit |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DCD80 |
_mtterm |
sms | |
0x004DCDB0 |
__initptd |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DCDD0 |
__getptd |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DCE40 |
_freeptd |
sms | |
0x004DCF10 |
_malloc |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DCF30 |
__nh_malloc |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DCF80 |
__heap_alloc |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DCFE0 |
__setdefaultprecision |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DD000 |
__ms_p5_test_fdiv |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DD050 |
__ms_p5_mp_test_fdiv |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DD080 |
_forcdecpt |
sms | |
0x004DD0F0 |
_cropzeros |
sms | |
0x004DD150 |
_positive |
sms | |
0x004DD170 |
_fassign |
sms | |
0x004DD1C0 |
__cftoe |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DD330 |
__cftof |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DD460 |
__cftog |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DD510 |
_cfltcvt |
sms | |
0x004DD5B0 |
__dosmaperr |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DD630 |
__errno |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DD650 |
__mbctoupper |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DD6E0 |
__mbsnbcpy |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DD790 |
__setmbcp |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DDAA0 |
_getmbcp |
sms | |
0x004DDAC0 |
__filbuf |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DDBC0 |
__read |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DDC40 |
__read_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DDE70 |
__write |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DDEF0 |
__write_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DE0F0 |
_stbuf |
sms | |
0x004DE1D0 |
__input |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DEF30 |
__mbsnbicoll |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DF000 |
__commit |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DF1A0 |
__XcptFilter |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DF320 |
_ismbbkalnum |
sms | |
0x004DF340 |
_ismbbkprint |
sms | |
0x004DF360 |
_ismbbkpunct |
sms | |
0x004DF380 |
_ismbbalnum |
sms | |
0x004DF3A0 |
_ismbbalpha |
sms | |
0x004DF3C0 |
_ismbbgraph |
sms | |
0x004DF3E0 |
_ismbbprint |
sms | |
0x004DF400 |
_ismbbpunct |
sms | |
0x004DF420 |
__ismbblead |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004DF440 |
_ismbbtrail |
sms | |
0x004DF460 |
_ismbbkana |
sms | |
0x004DF4D0 |
__setenvp |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DF5C0 |
__setargv |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DFBC0 |
__ioinit |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DFDA0 |
__ioterm |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DFE00 |
__heap_init |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DFE40 |
_heap_term |
sms | |
0x004DFE80 |
__FF_MSGBANNER |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004DFEC0 |
__NMSG_WRITE |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E00C0 |
_GET_RTERRMSG |
sms | |
0x004E0460 |
__lseek_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E0540 |
__isatty |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E0570 |
_wctomb |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E05D0 |
__wctomb_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E0670 |
__aulldiv |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E06E0 |
__aullrem |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E1700 |
_strcspn |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E1740 |
_strpbrk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E1C40 |
_get_sbh_threshold |
sms | |
0x004E1C50 |
_set_sbh_threshold |
sms | |
0x004E2680 |
__alloc_osfhnd |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E27C0 |
__set_osfhnd |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E2870 |
__free_osfhnd |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E2910 |
__get_osfhandle |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E2960 |
_open_osfhandle |
sms | |
0x004E2A20 |
__lock_fhandle |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E2A90 |
__unlock_fhandle |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E2AE0 |
__sopen |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E2F70 |
?__CxxUnhandledExceptionFilter@@YGJPAU_EXCEPTION_POINTERS@@@Z |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E2FD0 |
__CxxRestoreUnhandledExceptionFilter |
sms | |
0x004E2FE0 |
?terminate@@YAXXZ |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3060 |
unexpected |
sms | |
0x004E3080 |
?_inconsistency@@YAXXZ |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3100 |
?_ValidateRead@@YAHPBXI@Z |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3120 |
?_ValidateWrite@@YAHPAXI@Z |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3140 |
?_ValidateExecute@@YAHP6GHXZ@Z |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3160 |
_calloc |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3210 |
_set_new_handler |
sms | |
0x004E3240 |
_query_new_handler |
sms | |
0x004E3250 |
__callnewh |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3290 |
__statusfp |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E32B0 |
__clearfp |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E32D0 |
__control87 |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3310 |
__controlfp |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3500 |
__ZeroTail |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3570 |
__IncMan |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E35E0 |
__RoundMan |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3690 |
__CopyMan |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E36B0 |
__FillZeroMan |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E36C0 |
__IsZeroMan |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E36E0 |
__ShrMan |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3790 |
__ld12cvt |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3960 |
__ld12tod |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3980 |
__ld12tof |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E39A0 |
_ld12told |
sms | |
0x004E3A30 |
__atodbl |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E3A70 |
_atoldbl |
sms | |
0x004E3AB0 |
__atoflt |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E3B80 |
__fltout2 |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 close-out; convention and stack arity checked against the binary's RET operand |
0x004E3CD0 |
_mbtowc |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E3D30 |
__mbtowc_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E3E40 |
ungetc |
sms | |
0x004E3E70 |
__ungetc_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E47C0 |
__fcloseall |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E4860 |
_wcslen |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E4920 |
__Getdays |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E4A10 |
__Getmonths |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E4B00 |
_Gettnames |
sms | |
0x004E4E60 |
strftime |
sms | |
0x004E4E80 |
_Strftime |
sms | |
0x004E5B40 |
localeconv |
sms | |
0x004E5BF0 |
_ltoa |
sms | |
0x004E5C20 |
_ultoa |
sms | |
0x004E5C40 |
_i64toa |
sms | |
0x004E5D20 |
_ui64toa |
sms | |
0x004E5FB0 |
wcstol |
sms | |
0x004E61E0 |
wcstoul |
sms | |
0x004E6200 |
_chsize |
sms | |
0x004E6270 |
__chsize_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E63B0 |
__onexit |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E6440 |
_atexit |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E64A0 |
_abort |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E64C0 |
signal |
sms | |
0x004E6730 |
_raise |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E7320 |
_$I10_OUTPUT |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E76C0 |
_realloc |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E7890 |
__mbschr |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E7950 |
__strdup |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E79C0 |
_tzset |
sms | |
0x004E7CC0 |
_isindst |
sms | |
0x004E80E0 |
towupper |
sms | |
0x004E8160 |
__towupper_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x004E8200 |
_iswctype |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E8280 |
is_wctype |
sms | |
0x004E82A0 |
_setmode |
sms | |
0x004E8310 |
__setmode_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E8380 |
__msize |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E8720 |
_wcstombs |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E8780 |
__wcstombs_lk |
sms | MSVC C runtime (statically linked); FA.SMS public symbol |
0x004E8A22 |
TerminateProcess |
sms | |
0x004E8A28 |
GetCurrentProcess |
sms | |
0x004E8A2E |
_RtlUnwind@16 |
sms | IAT jump thunk -> ntdll RtlUnwind import (used by CRT C++ EH); FA.SMS-named linker stub, conceptual owner is another subsystem |
0x004E8A34 |
GetLastError |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A3A |
SetEnvironmentVariableA |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A40 |
GetFullPathNameA |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A46 |
GetModuleHandleA |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A4C |
GetStartupInfoA |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A52 |
GetCommandLineA |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A58 |
GetVersion |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A5E |
FatalAppExitA |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A64 |
MultiByteToWideChar |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A6A |
LCMapStringA |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A70 |
WideCharToMultiByte |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A76 |
LCMapStringW |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A7C |
HeapFree |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A82 |
TlsSetValue |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A88 |
TlsAlloc |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A8E |
TlsFree |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A94 |
SetLastError |
sms | IAT import thunk (jmp [imp…]) |
0x004E8A9A |
TlsGetValue |
sms | IAT import thunk (jmp [imp…]) |
0x004E8AA0 |
HeapAlloc |
sms | IAT import thunk (jmp [imp…]) |
0x004E8AA6 |
GetCPInfo |
sms | IAT import thunk (jmp [imp…]) |
0x004E8AAC |
GetACP |
sms | IAT import thunk (jmp [imp…]) |
0x004E8AB2 |
GetOEMCP |
sms | IAT import thunk (jmp [imp…]) |
0x004E8AB8 |
FlushFileBuffers |
sms | IAT import thunk (jmp [imp…]) |
0x004E8ABE |
UnhandledExceptionFilter |
sms | IAT import thunk (jmp [imp…]) |
0x004E8AC4 |
FreeEnvironmentStringsA |
sms | IAT import thunk (jmp [imp…]) |
0x004E8ACA |
GetEnvironmentStrings |
sms | IAT import thunk (jmp [imp…]) |
0x004E8AD0 |
FreeEnvironmentStringsW |
sms | IAT import thunk (jmp [imp…]) |
0x004E8AD6 |
GetEnvironmentStringsW |
sms | IAT import thunk (jmp [imp…]) |
0x004E8ADC |
SetHandleCount |
sms | IAT import thunk (jmp [imp…]) |
0x004E8AE2 |
GetFileType |
sms | IAT import thunk (jmp [imp…]) |
0x004E8AE8 |
GetStdHandle |
sms | IAT import thunk (jmp [imp…]) |
0x004E8AEE |
HeapDestroy |
sms | IAT import thunk (jmp [imp…]) |
0x004E8AF4 |
HeapCreate |
sms | IAT import thunk (jmp [imp…]) |
0x004E8AFA |
GetStringTypeA |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B00 |
GetStringTypeW |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B06 |
IsValidLocale |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B0C |
IsValidCodePage |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B12 |
GetUserDefaultLCID |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B18 |
SetStdHandle |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B1E |
SetUnhandledExceptionFilter |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B24 |
IsBadReadPtr |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B2A |
IsBadWritePtr |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B30 |
IsBadCodePtr |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B36 |
CompareStringA |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B3C |
CompareStringW |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B42 |
GetLocaleInfoA |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B48 |
GetLocaleInfoW |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B4E |
SetEndOfFile |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B54 |
SetConsoleCtrlHandler |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B5A |
HeapReAlloc |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B60 |
GetTimeZoneInformation |
sms | IAT import thunk (jmp [imp…]) |
0x004E8B66 |
HeapSize |
sms | IAT import thunk (jmp [imp…]) |
Binary: WAIL32.DLL
WAIL32.DLL — Miles Sound System (AIL) audio driver¶
wail32.csv · page — 130 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x20001660 |
DllMain |
re | Miles/AIL public export |
0x200019C0 |
AIL_startup |
re | Miles/AIL public export |
0x20001CF0 |
AIL_shutdown |
re | Miles/AIL public export |
0x20001E00 |
MEM_alloc_lock |
re | Miles/AIL public export |
0x20001F10 |
MEM_free_lock |
re | Miles/AIL public export |
0x20001FA0 |
AIL_set_preference |
re | Miles/AIL public export |
0x200020C0 |
AIL_get_preference |
re | Miles/AIL public export |
0x200021D0 |
AIL_last_error |
re | Miles/AIL public export |
0x200022D0 |
AIL_set_error |
re | Miles/AIL public export |
0x20002360 |
AIL_lock |
re | Miles/AIL public export |
0x20002380 |
AIL_unlock |
re | Miles/AIL public export |
0x200023A0 |
AIL_delay |
re | Miles/AIL public export |
0x20002420 |
AIL_background |
re | Miles/AIL public export |
0x20002430 |
AIL_register_timer |
re | Miles/AIL public export |
0x20002540 |
AIL_set_timer_user |
re | Miles/AIL public export |
0x20002660 |
AIL_set_timer_period |
re | Miles/AIL public export |
0x20002700 |
AIL_set_timer_frequency |
re | Miles/AIL public export |
0x200027A0 |
AIL_set_timer_divisor |
re | Miles/AIL public export |
0x20002840 |
AIL_start_timer |
re | Miles/AIL public export |
0x200028D0 |
AIL_start_all_timers |
re | Miles/AIL public export |
0x20002950 |
AIL_stop_timer |
re | Miles/AIL public export |
0x200029E0 |
AIL_stop_all_timers |
re | Miles/AIL public export |
0x20002A60 |
AIL_release_timer_handle |
re | Miles/AIL public export |
0x20002AF0 |
AIL_release_all_timers |
re | Miles/AIL public export |
0x20002B70 |
AIL_waveOutOpen |
re | Miles/AIL public export |
0x20002CB0 |
AIL_waveOutClose |
re | Miles/AIL public export |
0x20002D60 |
AIL_allocate_sample_handle |
re | Miles/AIL public export |
0x20002E80 |
AIL_allocate_file_sample |
re | Miles/AIL public export |
0x20002FB0 |
AIL_release_sample_handle |
re | Miles/AIL public export |
0x20003060 |
AIL_init_sample |
re | Miles/AIL public export |
0x20003110 |
AIL_set_sample_file |
re | Miles/AIL public export |
0x20003240 |
AIL_set_sample_address |
re | Miles/AIL public export |
0x200032F0 |
AIL_set_sample_type |
re | Miles/AIL public export |
0x200033A0 |
AIL_start_sample |
re | Miles/AIL public export |
0x20003450 |
AIL_stop_sample |
re | Miles/AIL public export |
0x20003500 |
AIL_resume_sample |
re | Miles/AIL public export |
0x200035B0 |
AIL_end_sample |
re | Miles/AIL public export |
0x20003660 |
AIL_set_sample_playback_rate |
re | Miles/AIL public export |
0x20003710 |
AIL_set_sample_volume |
re | Miles/AIL public export |
0x200037C0 |
AIL_set_sample_pan |
re | Miles/AIL public export |
0x20003870 |
AIL_set_sample_loop_count |
re | Miles/AIL public export |
0x20003920 |
AIL_set_sample_loop_block |
re | Miles/AIL public export |
0x200039D0 |
AIL_sample_status |
re | Miles/AIL public export |
0x20003AF0 |
AIL_sample_playback_rate |
re | Miles/AIL public export |
0x20003C10 |
AIL_sample_volume |
re | Miles/AIL public export |
0x20003D30 |
AIL_sample_pan |
re | Miles/AIL public export |
0x20003E50 |
AIL_sample_loop_count |
re | Miles/AIL public export |
0x20003F70 |
AIL_set_digital_master_volume |
re | Miles/AIL public export |
0x20004020 |
AIL_digital_master_volume |
re | Miles/AIL public export |
0x20004140 |
AIL_minimum_sample_buffer_size |
re | Miles/AIL public export |
0x20004280 |
AIL_sample_buffer_ready |
re | Miles/AIL public export |
0x200043A0 |
AIL_load_sample_buffer |
re | Miles/AIL public export |
0x20004460 |
AIL_sample_buffer_info |
re | Miles/AIL public export |
0x200045B0 |
AIL_set_sample_position |
re | Miles/AIL public export |
0x20004660 |
AIL_sample_position |
re | Miles/AIL public export |
0x20004780 |
AIL_register_SOB_callback |
re | Miles/AIL public export |
0x200048B0 |
AIL_register_EOB_callback |
re | Miles/AIL public export |
0x200049E0 |
AIL_register_EOS_callback |
re | Miles/AIL public export |
0x20004B10 |
AIL_register_EOF_callback |
re | Miles/AIL public export |
0x20004C30 |
AIL_set_sample_user_data |
re | Miles/AIL public export |
0x20004CE0 |
AIL_sample_user_data |
re | Miles/AIL public export |
0x20004E10 |
AIL_active_sample_count |
re | Miles/AIL public export |
0x20004F30 |
AIL_digital_configuration |
re | Miles/AIL public export |
0x20004FF0 |
AIL_set_direct_buffer_control |
re | Miles/AIL public export |
0x20005110 |
AIL_get_DirectSound_info |
re | Miles/AIL public export |
0x200051A0 |
AIL_midiOutOpen |
re | Miles/AIL public export |
0x200052D0 |
AIL_midiOutClose |
re | Miles/AIL public export |
0x20005360 |
AIL_allocate_sequence_handle |
re | Miles/AIL public export |
0x20005470 |
AIL_release_sequence_handle |
re | Miles/AIL public export |
0x20005500 |
AIL_init_sequence |
re | Miles/AIL public export |
0x20005630 |
AIL_start_sequence |
re | Miles/AIL public export |
0x200056C0 |
AIL_stop_sequence |
re | Miles/AIL public export |
0x20005750 |
AIL_resume_sequence |
re | Miles/AIL public export |
0x200057E0 |
AIL_end_sequence |
re | Miles/AIL public export |
0x20005870 |
AIL_set_sequence_tempo |
re | Miles/AIL public export |
0x20005910 |
AIL_set_sequence_volume |
re | Miles/AIL public export |
0x200059B0 |
AIL_set_sequence_loop_count |
re | Miles/AIL public export |
0x20005A50 |
AIL_sequence_status |
re | Miles/AIL public export |
0x20005B60 |
AIL_sequence_tempo |
re | Miles/AIL public export |
0x20005C70 |
AIL_sequence_volume |
re | Miles/AIL public export |
0x20005D80 |
AIL_sequence_loop_count |
re | Miles/AIL public export |
0x20005E90 |
AIL_set_XMIDI_master_volume |
re | Miles/AIL public export |
0x20005F30 |
AIL_XMIDI_master_volume |
re | Miles/AIL public export |
0x20006040 |
AIL_active_sequence_count |
re | Miles/AIL public export |
0x20006150 |
AIL_controller_value |
re | Miles/AIL public export |
0x20006280 |
AIL_channel_notes |
re | Miles/AIL public export |
0x200063A0 |
AIL_sequence_position |
re | Miles/AIL public export |
0x200064C0 |
AIL_branch_index |
re | Miles/AIL public export |
0x20006560 |
AIL_register_prefix_callback |
re | Miles/AIL public export |
0x20006680 |
AIL_register_trigger_callback |
re | Miles/AIL public export |
0x200067A0 |
AIL_register_sequence_callback |
re | Miles/AIL public export |
0x200068C0 |
AIL_register_beat_callback |
re | Miles/AIL public export |
0x200069E0 |
AIL_register_event_callback |
re | Miles/AIL public export |
0x20006B00 |
AIL_register_timbre_callback |
re | Miles/AIL public export |
0x20006C20 |
AIL_set_sequence_user_data |
re | Miles/AIL public export |
0x20006CC0 |
AIL_sequence_user_data |
re | Miles/AIL public export |
0x20006DE0 |
AIL_register_ICA_array |
re | Miles/AIL public export |
0x20006E80 |
AIL_lock_channel |
re | Miles/AIL public export |
0x20006F90 |
AIL_release_channel |
re | Miles/AIL public export |
0x20007030 |
AIL_map_sequence_channel |
re | Miles/AIL public export |
0x200070D0 |
AIL_true_sequence_channel |
re | Miles/AIL public export |
0x200071F0 |
AIL_send_channel_voice_message |
re | Miles/AIL public export |
0x200072B0 |
AIL_send_sysex_message |
re | Miles/AIL public export |
0x20007350 |
AIL_create_wave_synthesizer |
re | Miles/AIL public export |
0x20007480 |
AIL_destroy_wave_synthesizer |
re | Miles/AIL public export |
0x20007510 |
FILE_error |
re | Miles/AIL public export |
0x20007610 |
FILE_size |
re | Miles/AIL public export |
0x20007720 |
FILE_read |
re | Miles/AIL public export |
0x20007840 |
FILE_write |
re | Miles/AIL public export |
0x20007970 |
AIL_serve |
re | Miles/AIL public export |
0x200079F0 |
AIL_redbook_open |
re | Miles/AIL public export |
0x20007B00 |
AIL_redbook_close |
re | Miles/AIL public export |
0x20007B90 |
AIL_redbook_eject |
re | Miles/AIL public export |
0x20007C20 |
AIL_redbook_status |
re | Miles/AIL public export |
0x20007D30 |
AIL_redbook_tracks |
re | Miles/AIL public export |
0x20007E40 |
AIL_redbook_track_info |
re | Miles/AIL public export |
0x20007EF0 |
AIL_redbook_id |
re | Miles/AIL public export |
0x20008000 |
AIL_redbook_position |
re | Miles/AIL public export |
0x20008110 |
AIL_redbook_play |
re | Miles/AIL public export |
0x20008240 |
AIL_redbook_stop |
re | Miles/AIL public export |
0x20008350 |
AIL_redbook_pause |
re | Miles/AIL public export |
0x20008460 |
AIL_redbook_resume |
re | Miles/AIL public export |
0x20008570 |
AIL_quick_startup |
re | Miles/AIL public export |
0x200086B0 |
AIL_quick_shutdown |
re | Miles/AIL public export |
0x20008730 |
AIL_quick_load |
re | Miles/AIL public export |
0x20008840 |
AIL_quick_unload |
re | Miles/AIL public export |
0x200088D0 |
AIL_quick_play |
re | Miles/AIL public export |
0x200089F0 |
AIL_quick_halt |
re | Miles/AIL public export |
0x20008A80 |
AIL_quick_status |
re | Miles/AIL public export |
0x20008B90 |
AIL_quick_load_and_play |
re | Miles/AIL public export |
Binary: IP.EXE
IP.EXE — EA system-info & tech-support tool (MFC)¶
ip.csv · page — 5 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x004019B0 |
CDROMBenchmark |
re | CD-ROM speed/transfer benchmark ("Benchmarking CD-ROM Drive", Single/Double/Quad-Speed, KB/s); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00403FE0 |
LaunchSystemProperties |
re | ShellExecute sysdm.cpl (Windows System control panel); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00404061 |
LoadDetectionDlls |
re | LoadLibrary hdd.dll + cd.dll (hardware-detection helper libraries); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x0040DC60 |
BuildSupportReport |
re | builds the [CPU]/[VIDEO]/[SOUND]/[MODEM] system-config report and faxes/e-mails it to EA support (support@ea.com); signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x00436EF0 |
WinMain |
re | MFC AfxWinMain wrapper (Ghidra FID) |
Binary: CDRVDL32.DLL
CDRVDL32.DLL — Cdrv RS-232 serial comms driver¶
comms-dl.csv · page — 26 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x100019D0 |
ser_rs232_block |
re | Cdrv comms driver (RS-232 serial) public export |
0x100019E0 |
ser_rs232_cleanup |
re | Cdrv comms driver (RS-232 serial) public export |
0x10001A90 |
ser_rs232_dtr_off |
re | Cdrv comms driver (RS-232 serial) public export |
0x10001AE0 |
ser_rs232_dtr_on |
re | Cdrv comms driver (RS-232 serial) public export |
0x10001B30 |
ser_rs232_flush |
re | Cdrv comms driver (RS-232 serial) public export |
0x10001C50 |
ser_rs232_getbyte |
re | Cdrv comms driver (RS-232 serial) public export |
0x10001D20 |
ser_rs232_getpacket |
re | Cdrv comms driver (RS-232 serial) public export |
0x10001DF0 |
ser_rs232_getport |
re | Cdrv comms driver (RS-232 serial) public export |
0x10001E50 |
ser_rs232_getregister |
re | Cdrv comms driver (RS-232 serial) public export |
0x10001EB0 |
ser_rs232_getstatus |
re | Cdrv comms driver (RS-232 serial) public export |
0x10001F00 |
ser_rs232_maxport |
re | Cdrv comms driver (RS-232 serial) public export; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10001F10 |
ser_rs232_putbyte |
re | Cdrv comms driver (RS-232 serial) public export |
0x10001FE0 |
ser_rs232_putpacket |
re | Cdrv comms driver (RS-232 serial) public export |
0x100020B0 |
ser_rs232_putregister |
re | Cdrv comms driver (RS-232 serial) public export |
0x100020C0 |
ser_rs232_rts_off |
re | Cdrv comms driver (RS-232 serial) public export |
0x10002110 |
ser_rs232_rts_on |
re | Cdrv comms driver (RS-232 serial) public export |
0x10002160 |
ser_rs232_set_intfunc |
re | Cdrv comms driver (RS-232 serial) public export |
0x100021D0 |
ser_rs232_misc_func |
re | Cdrv comms driver (RS-232 serial) public export |
0x10002420 |
ser_rs232_setbauddiv |
re | Cdrv comms driver (RS-232 serial) public export |
0x10002450 |
ser_rs232_setup |
re | Cdrv comms driver (RS-232 serial) public export |
0x10002B10 |
ser_rs232_viewpacket |
re | Cdrv comms driver (RS-232 serial) public export |
0x10002B80 |
ser_rs232_get_sdata |
re | Cdrv comms driver (RS-232 serial) public export; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10002BC0 |
bio_set_timer |
re | Cdrv comms driver (RS-232 serial) public export |
0x10002BE0 |
bio_get_elapsedtime |
re | Cdrv comms driver (RS-232 serial) public export |
0x10002C10 |
bio_get_timer |
re | Cdrv comms driver (RS-232 serial) public export |
0x10002C40 |
bio_set_timerresolution |
re | Cdrv comms driver (RS-232 serial) public export |
Binary: CDRVHF32.DLL
CDRVHF32.DLL — Cdrv Hayes-modem comms driver¶
comms-hf.csv · page — 75 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x10001000 |
InitializePort |
re | Cdrv comms driver (Hayes modem) public export |
0x100013D0 |
SetBaud |
re | Cdrv comms driver (Hayes modem) public export |
0x10001430 |
SetFlowControlCharacters |
re | Cdrv comms driver (Hayes modem) public export |
0x100014B0 |
SetFlowControlThreshold |
re | Cdrv comms driver (Hayes modem) public export |
0x10001510 |
SetPortCharacteristics |
re | Cdrv comms driver (Hayes modem) public export |
0x100015A0 |
UnInitializePort |
re | Cdrv comms driver (Hayes modem) public export |
0x10001640 |
SetSpecialBehavior |
re | Cdrv comms driver (Hayes modem) public export |
0x10001720 |
Dial |
re | Cdrv comms driver (Hayes modem) public export |
0x10001880 |
ModemAnswerMode |
re | Cdrv comms driver (Hayes modem) public export |
0x10001950 |
ModemAttention |
re | Cdrv comms driver (Hayes modem) public export |
0x10001A70 |
ModemConnect |
re | Cdrv comms driver (Hayes modem) public export |
0x10001C20 |
ModemGetCarrierSpeed |
re | Cdrv comms driver (Hayes modem) public export |
0x10001C50 |
ModemGetConnectSpeed |
re | Cdrv comms driver (Hayes modem) public export |
0x10001C80 |
ModemHangup |
re | Cdrv comms driver (Hayes modem) public export |
0x10001D30 |
ModemInit |
re | Cdrv comms driver (Hayes modem) public export |
0x10001DE0 |
ModemModifyString |
re | Cdrv comms driver (Hayes modem) public export |
0x10001F40 |
ModemModifyValue |
re | Cdrv comms driver (Hayes modem) public export |
0x10002010 |
SendBreak |
re | Cdrv comms driver (Hayes modem) public export |
0x10002090 |
ModemWaitForCall |
re | Cdrv comms driver (Hayes modem) public export |
0x10002270 |
GetByte |
re | Cdrv comms driver (Hayes modem) public export |
0x100022F0 |
GetPacket |
re | Cdrv comms driver (Hayes modem) public export |
0x100023A0 |
GetString |
re | Cdrv comms driver (Hayes modem) public export |
0x100024C0 |
PeekChar |
re | Cdrv comms driver (Hayes modem) public export |
0x10002540 |
PutByte |
re | Cdrv comms driver (Hayes modem) public export |
0x100025C0 |
PutPacket |
re | Cdrv comms driver (Hayes modem) public export |
0x100026B0 |
PutString |
re | Cdrv comms driver (Hayes modem) public export |
0x100026E0 |
BytesInReceiveBuffer |
re | Cdrv comms driver (Hayes modem) public export |
0x10002700 |
BytesInTransmitBuffer |
re | Cdrv comms driver (Hayes modem) public export |
0x10002720 |
FlushReceiveBuffer |
re | Cdrv comms driver (Hayes modem) public export |
0x10002740 |
FlushTransmitBuffer |
re | Cdrv comms driver (Hayes modem) public export |
0x10002760 |
ReceiveBufferSize |
re | Cdrv comms driver (Hayes modem) public export |
0x10002780 |
SpaceInReceiveBuffer |
re | Cdrv comms driver (Hayes modem) public export |
0x100027B0 |
SpaceInTransmitBuffer |
re | Cdrv comms driver (Hayes modem) public export |
0x100027E0 |
SpaceTransmitBuffer |
re | Cdrv comms driver (Hayes modem) public export |
0x100027F0 |
TransmitBufferSize |
re | Cdrv comms driver (Hayes modem) public export |
0x10002810 |
WaitForPeekTableFixed |
re | Cdrv comms driver (Hayes modem) public export |
0x10002970 |
WaitForPeekFixed |
re | Cdrv comms driver (Hayes modem) public export |
0x100029C0 |
WaitForTableFixed |
re | Cdrv comms driver (Hayes modem) public export |
0x10002C10 |
WaitForFixed |
re | Cdrv comms driver (Hayes modem) public export |
0x10002C60 |
WaitForPeekTable |
re | Cdrv comms driver (Hayes modem) public export |
0x10002DB0 |
WaitForPeek |
re | Cdrv comms driver (Hayes modem) public export |
0x10002DF0 |
WaitForTable |
re | Cdrv comms driver (Hayes modem) public export |
0x10003010 |
WaitFor |
re | Cdrv comms driver (Hayes modem) public export |
0x10003050 |
CdrvCrc16 |
re | Cdrv comms driver (Hayes modem) public export |
0x100030A0 |
CdrvCrc32 |
re | Cdrv comms driver (Hayes modem) public export |
0x100030E0 |
DtrOff |
re | Cdrv comms driver (Hayes modem) public export |
0x10003100 |
DtrOn |
re | Cdrv comms driver (Hayes modem) public export |
0x10003120 |
RtsOff |
re | Cdrv comms driver (Hayes modem) public export |
0x10003140 |
RtsOn |
re | Cdrv comms driver (Hayes modem) public export |
0x10003160 |
CdrvGetPcb |
re | Cdrv comms driver (Hayes modem) public export |
0x10003180 |
CdrvCheckTime |
re | Cdrv comms driver (Hayes modem) public export |
0x10003240 |
CdrvDelay |
re | Cdrv comms driver (Hayes modem) public export |
0x10003270 |
CdrvReturnStringAddress |
re | Cdrv comms driver (Hayes modem) public export |
0x10003280 |
CdrvSetTime |
re | Cdrv comms driver (Hayes modem) public export |
0x100032D0 |
CdrvSetTimeoutFunction |
re | Cdrv comms driver (Hayes modem) public export |
0x10003300 |
CdrvSetTimerResolution |
re | Cdrv comms driver (Hayes modem) public export |
0x10003320 |
GetPaceTime |
re | Cdrv comms driver (Hayes modem) public export |
0x10003350 |
GetTimeout |
re | Cdrv comms driver (Hayes modem) public export |
0x10003380 |
SetPaceTime |
re | Cdrv comms driver (Hayes modem) public export |
0x100033B0 |
SetTimeout |
re | Cdrv comms driver (Hayes modem) public export |
0x100033E0 |
DataStreamGetPacket |
re | Cdrv comms driver (Hayes modem) public export |
0x10003430 |
DataStreamGetByte |
re | Cdrv comms driver (Hayes modem) public export |
0x10003480 |
SetDataStreamFunction |
re | Cdrv comms driver (Hayes modem) public export |
0x100034B0 |
IsBreak |
re | Cdrv comms driver (Hayes modem) public export |
0x100034F0 |
IsCarrierDetect |
re | Cdrv comms driver (Hayes modem) public export |
0x10003520 |
IsCts |
re | Cdrv comms driver (Hayes modem) public export |
0x10003550 |
IsDsr |
re | Cdrv comms driver (Hayes modem) public export |
0x10003580 |
IsFramingError |
re | Cdrv comms driver (Hayes modem) public export |
0x100035C0 |
IsInputOverrun |
re | Cdrv comms driver (Hayes modem) public export |
0x10003600 |
IsOverrunError |
re | Cdrv comms driver (Hayes modem) public export |
0x10003640 |
IsParityError |
re | Cdrv comms driver (Hayes modem) public export |
0x10003680 |
IsPortAvailable |
re | Cdrv comms driver (Hayes modem) public export |
0x100036A0 |
IsReceiveBufferEmpty |
re | Cdrv comms driver (Hayes modem) public export |
0x100036C0 |
IsRing |
re | Cdrv comms driver (Hayes modem) public export |
0x10003700 |
IsTransmitBufferEmpty |
re | Cdrv comms driver (Hayes modem) public export |
Binary: CDRVXF32.DLL
CDRVXF32.DLL — Cdrv file-transfer comms driver¶
comms-xf.csv · page — 33 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x10002410 |
CdrvXferCreateDialog |
re | Cdrv comms driver (file transfer) public export |
0x10002580 |
CdrvXferUpdateDialog |
re | Cdrv comms driver (file transfer) public export |
0x100026A0 |
CdrvXferDestroyDialog |
re | Cdrv comms driver (file transfer) public export |
0x10002A90 |
cdrvxfer_files |
re | Cdrv comms driver (file transfer) public export |
0x10002AC0 |
cdrvxfer_sfiles |
re | Cdrv comms driver (file transfer) public export |
0x10002AF0 |
FileTransferDialog |
re | Cdrv comms driver (file transfer) public export |
0x10003080 |
cdrvxfer_gclose |
re | Cdrv comms driver (file transfer) public export |
0x100033E0 |
cdrvxfer_getfiles |
re | Cdrv comms driver (file transfer) public export |
0x10003410 |
cdrvxfer_sendfiles |
re | Cdrv comms driver (file transfer) public export |
0x10003440 |
SetXferParameters |
re | Cdrv comms driver (file transfer) public export |
0x10003500 |
TransferFiles |
re | Cdrv comms driver (file transfer) public export |
0x100058B0 |
dos_close |
re | Cdrv comms driver (file transfer) public export |
0x100058D0 |
dos_commit |
re | Cdrv comms driver (file transfer) public export |
0x100058F0 |
dos_create |
re | Cdrv comms driver (file transfer) public export |
0x10005960 |
dos_createdir |
re | Cdrv comms driver (file transfer) public export |
0x10005980 |
dos_delete |
re | Cdrv comms driver (file transfer) public export |
0x100059A0 |
dos_deletedir |
re | Cdrv comms driver (file transfer) public export |
0x100059C0 |
dos_getdate |
re | Cdrv comms driver (file transfer) public export |
0x10005A10 |
dos_getdir |
re | Cdrv comms driver (file transfer) public export |
0x10005A80 |
dos_getfdate |
re | Cdrv comms driver (file transfer) public export |
0x10005AD0 |
dos_getfileattribute |
re | Cdrv comms driver (file transfer) public export |
0x10005B20 |
dos_getfiledatetime |
re | Cdrv comms driver (file transfer) public export |
0x10005BC0 |
dos_getfirstfile |
re | Cdrv comms driver (file transfer) public export |
0x10005C70 |
dos_getnextfile |
re | Cdrv comms driver (file transfer) public export |
0x10005DA0 |
dos_gettime |
re | Cdrv comms driver (file transfer) public export; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10005E00 |
dos_open |
re | Cdrv comms driver (file transfer) public export |
0x10005EA0 |
dos_read |
re | Cdrv comms driver (file transfer) public export |
0x10005EE0 |
dos_rename |
re | Cdrv comms driver (file transfer) public export |
0x10005F00 |
dos_seek |
re | Cdrv comms driver (file transfer) public export |
0x10005F40 |
dos_setfdate |
re | Cdrv comms driver (file transfer) public export |
0x10005F90 |
dos_setfileattribute |
re | Cdrv comms driver (file transfer) public export |
0x10005FE0 |
dos_setfiledatetime |
re | Cdrv comms driver (file transfer) public export |
0x10006070 |
dos_write |
re | Cdrv comms driver (file transfer) public export |
Binary: COMMSC32.DLL
COMMSC32.DLL — Cdrv comms terminal-screen service¶
comms-sc.csv · page — 8 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x100011F0 |
commdrvw_char_screen |
re | Cdrv comms service (terminal screen) public export |
0x10001990 |
CdrvScrDestroy |
re | Cdrv comms service (terminal screen) public export |
0x100019B0 |
CdrvScrCreate |
re | Cdrv comms service (terminal screen) public export |
0x100019D0 |
CdrvScrResize |
re | Cdrv comms service (terminal screen) public export |
0x100019F0 |
CdrvScrWrite |
re | Cdrv comms service (terminal screen) public export |
0x10001A10 |
CdrvScrKillFocus |
re | Cdrv comms service (terminal screen) public export |
0x10001A30 |
CdrvScrSetFocus |
re | Cdrv comms service (terminal screen) public export |
0x10001A50 |
CdrvScrPaint |
re | Cdrv comms service (terminal screen) public export |
Binary: MSAPI.DLL
Matchmaking / internet-play client (MSAPI)¶
msapi.csv · page — 25 named functions
| VA | Symbol | Src | Role |
|---|---|---|---|
0x100011E0 |
connectMS |
re | Export ord2: read Server IP/Server Port from the registry (SOFTWARE...\Matchmaker via ms_reg_open/select/read) or a default source; socket(AF_INET,SOCK_STREAM)+connect() into ms_socket; then send 'WAKEUP' (6B) and expect 'OK'. Codes: 1=OK, 0x3E8=socket() failed, 0x3E9=handshake rejected, 0x3EA=connect error, 0x3EB=proto.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10001670 |
initializeMS |
re | Export ord7: registration handshake — send record size (u32) + 'u' + player record, call ms_upload_init_arrays ('i'), then register the volume serial (GetVolumeInformation, '%d'-formatted); expect 'OK'. Creates the receive worker (ms_recv_thread, CREATE_SUSPENDED).; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10001A20 |
ms_upload_init_arrays |
re | Opcode 'i' (@0x1001D0FC): upload the init record as two groups of three u32 arrays, each u32-length-prefixed (ms_send_u32) and htonl-byteswapped. Part of the initializeMS handshake.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10001D20 |
loginMShost |
re | Export ord9: opcode 'h' — login as game host; stores host cookie (ms_host_cookie) and ResumeThread on ms_recv_thread.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10001D80 |
loginMSPlayer |
re | Export ord8: opcode 'p' — login as player; SuspendThread on ms_recv_thread and clear ms_host_cookie.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10001DE0 |
requestMSgame |
re | Export ord10: opcode 'r' — request game list; reads 'P'-prefixed records (ms_recv_u32 length, then payload) into the 0x24-byte linked-list nodes at ms_game_list_head (+0x10 len, +0x14 payload, +0x1C next, +0x20 head); returns 5-dword header + payload to caller.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10002030 |
selectMSgame |
re | Export ord12: opcode 's' — select game by id (rec+0x10, ms_send_u32); expect 'O'.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x100020C0 |
deselectMSgame |
re | Export ord3: opcode 'd' — deselect game by id (rec+0x10).; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10002120 |
resetMSfilter |
re | Export ord11: opcode 't' — reset game-list filter/cursor; clears ms_game_count/ms_game_selected, sets ms_list_dirty.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10002170 |
updateMSgame |
re | Export ord14: opcode 'u' — upload/update the player-or-game record (ms_record_size bytes).; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x100021D0 |
fetchMSgame |
re | Export ord4: opcode 'f' — fetch one game record by id; reads a 'P' payload of ms_record_size bytes.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10002280 |
sendMSresults |
re | Export ord13: opcode 'v' — send mission-results blob (ms_send_u32 length + data); expect 'O'.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10002330 |
getMSdatafilesize |
re | Export ord6: opcode 'z' — query server data-file size by name; reads a u32 size; 0xFFFFFFFF => not found (0x3F3); expect 'O'.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10002440 |
getMSdatafile |
re | Export ord5: opcode 'x' — download server data-file by name into a buffer; client acks 'O', expects 'K'.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10002570 |
closeMS |
re | Export ord1: opcode 'l' — quit/logout; closesocket(ms_socket); free the game list + DeleteCriticalSection; clear ms_running.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10002630 |
ms_recv_all |
re | recv() exactly N bytes in a loop ('Read Packet Error - Correcting...' on short read).; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10002680 |
ms_send_all |
re | send() exactly N bytes in a loop ('Send Packet Error - Correcting...' on short write). |
0x100026D0 |
ms_recv_u32 |
re | recv 4 bytes then ntohl -> host u32 (network-order length prefix). |
0x10002700 |
ms_send_u32 |
re | htonl then send 4 bytes (network-order length prefix). |
0x10002730 |
ms_disconnect |
re | Receive-worker teardown: send 'l' quit opcode, closesocket, free game list + critical section.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10002800 |
ms_reg_open |
re | Registry-cache ctor: RegCreateKeyExA the HKLM SOFTWARE... base keys (this+0x308/0x30C/0x310) for the Server IP/Port + data-file cache.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10002950 |
ms_reg_close |
re | Registry-cache dtor: RegFlushKey + RegCloseKey the open keys.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x100029A0 |
ms_reg_select_subkey |
re | Registry-cache: RegCreateKeyExA a named subkey (e.g. 'Matchmaker') into this+0x314.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x10002A00 |
ms_reg_read_value |
re | Registry-cache: RegQueryValueExA a named value into a buffer; if missing and a default is given, RegSetValueExA writes it (get-or-create). Used for 'Server IP'/'Server Port'.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
0x100034D0 |
ms_atoi |
re | Decimal-string-to-int (thin wrapper over FUN_10003430); parses the registry port string in connectMS.; signature recovered in the #453 per-subsystem pass; convention and stack arity checked against the binary's RET operand |
Format Loaders and Parsers¶
Cross-reference of symbols that directly load, initialize, or parse named file formats.
LIB Archive (EALIB)¶
| Address | Symbol | Role |
|---|---|---|
0x47A090 |
LibSeek(…) |
Seek within open LIB entry |
0x47A130 |
LibFileExists(…) |
Test for named entry |
0x479BD0 |
LibOpen(…) |
Open a named LIB entry |
0x479C80 |
LibRead |
Read bytes from open entry |
0x479D20 |
LibClose |
Close entry handle |
0x479D40 |
LibFileSize |
Query entry size |
0x479630 |
DoLoadLibFile |
Internal LIB decompression dispatch |
0x47A5A0 |
InitGraphicsMode |
Sets up graphics mode post-LIB init |
0x47BC40 |
LibStartUp |
Initialize LIB subsystem |
0x4792D0 |
LibShutDown |
Shutdown LIB subsystem |
0x479350 |
LibUpdate |
Periodic LIB maintenance |
Overlay DLL (.LAY, .HUD, .FNT, .CAM, .MUS, .BI, .MC)¶
| Address | Symbol | Role |
|---|---|---|
0x41E8F0 |
IsBrentDLL(void*) |
Detect Phar Lap PL\0\0 signature |
0x41E910 |
IsDLL(…) |
Generic DLL validity check |
0x41EB60 |
LoadDLL(…) |
Load and IAT-patch an overlay DLL |
0x41F240 |
LoadBrentDLL(…) |
Load Phar Lap PE overlay (CAM/BI/MC) |
0x4B4370 |
WRInit(…) |
Load .LAY file via LoadLibrary + IAT patch |
0x4A6E50 |
LoadPIC |
Load .PIC bitmap (also via LIB) |
0x4A7220 |
SetupPT |
Init .PT (playable aircraft BRF type) |
0x4A6EB0 |
SetupOT |
Init .OT (static object BRF type) |
0x4A7200 |
SetupNT |
Init .NT (NPC/vehicle BRF type) |
0x4A7230 |
SetupJT |
Init .JT (projectile BRF type) |
Config / Save (.CFG, .PLT, NET.DAT)¶
| Address | Symbol | Role |
|---|---|---|
0x47F6D0 |
CN_SetFactoryDefaults(CN_INFO*) |
Initialize config struct to defaults |
0x47F7A0 |
CN_ReadConfig(CN_INFO*, unsigned char*) |
Read EA.CFG into CN_INFO |
0x47F930 |
CN_WriteConfig(CN_INFO*, unsigned char*) |
Write EA.CFG from CN_INFO |
0x47F740 |
CfigChecksum(CN_INFO*) |
Verify config checksum |
0x4B2930 |
UCONFIG_load_EA_CFG() |
High-level EA.CFG load |
0x4B2980 |
UCONFIG_save_EA_CFG() |
High-level EA.CFG save |
0x4B2BD0 |
UCONFIG_Initialize() |
Full config system init |
0x467180 |
PilotSave(PILOT*, short) |
Write .PLT pilot save file |
BRF / Object Types (.OT, .NT, .PT, .JT, .GAS, .ECM)¶
| Address | Symbol | Role |
|---|---|---|
0x41E8F0 |
IsBrentDLL(void*) |
Detect BRF magic header |
0x4A6EB0 |
SetupOT |
Load/init .OT static object |
0x4A7200 |
SetupNT |
Load/init .NT NPC/vehicle |
0x4A7220 |
SetupPT |
Load/init .PT playable aircraft |
0x4A7230 |
SetupJT |
Load/init .JT projectile |
Video (.VDO / Cobra codec)¶
| Address | Symbol | Role |
|---|---|---|
0x4AE440 |
PlayVDOString(char*, …) |
Play FMV by filename |
0x4AE406 |
PlayVDOFile(char*, …) |
Play FMV from open file |
0x4AF070 |
StartVDOAudio(char*) |
Start audio stream for VDO |
0x4AF1B0 |
OpenVDOFile(char*) |
Open a .VDO file |
0x4AF200 |
ReadVDOHeader(…) |
Parse .VDO file header |
0x4AF2D0 |
ReadFrameSizesFile(char*) |
Read .FBC companion sizes |
0x4AF320 |
ReadVDOPalette(…) |
Extract palette from VDO header |
0x4AF3A0 |
AllocVDO(VDO*) |
Allocate VDO playback context |
0x4AE4E0 |
BuildVDOList(char*) |
Build linked list of VDO files |
0x4AED50 |
VDOSetMode(VDO*) |
Set video decode mode |
0x442360 |
InitMovieContext(MovieContext*, …) |
Init Cobra codec context |
0x442370 |
DecodeFrame(MovieContext*, …) |
Decode one Cobra video frame |
Terrain (.T2)¶
| Address | Symbol | Role |
|---|---|---|
0x4C5D60 |
T_Init() |
Initialize terrain database |
0x4C5D70 |
T_Load(…) |
Load .T2 terrain file |
0x4C5D50 |
T_ShutdownDatabase() / T_Init2() / T_Shutdown() |
Lifecycle |
0x4AA620 |
T_InitDictionary() |
Set up terrain tile dictionary |
0x4AA680 |
T_InitDictionaryEntry(…) |
Add .T2 tile entry |
0x4AA7E0 |
T_CompareTlist(…) / T_SortTmapList() |
Sort terrain tmap list |
0x4C6040 |
T_GetLeaf(…) |
Get terrain leaf node at position |
Music / Sequencer (.MUS, .XMI)¶
| Address | Symbol | Role |
|---|---|---|
0x432920 |
InitMusic() / ShutDownMidi() |
Miles Sound System MIDI init/shutdown |
0x4329A0 |
DMusicOn(char*, float) |
Load and start .MUS playlist |
0x432A90 |
MusicOn(char*, float) |
Load and start music by name |
0x432B40 — 0x432C00 |
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).