Commit Graph

1798 Commits

Author SHA1 Message Date
ricardoofnl 80b6155fd6 [saco] Implement/match CVehiclePool::FUNC_1001EEB0; the sentinel stays 32-bit only while the loop exit assigns it 2026-09-04 22:28:02 +07:00
ricardoofnl ea6365cdc6 [saco] Implement/match CVehiclePool::FUNC_1001ED70; the plate texture is built by a thiscall on the renderer global 2026-09-04 22:28:02 +07:00
ricardoofnl e23f696955 [saco] Implement/match CVehiclePool::FUNC_1001EC00; the int return is what zero-extends the WORD id 2026-09-04 22:28:02 +07:00
ricardoofnl 1ab9ab262c [saco] Implement/match CChatWindow::AddClientMessage; it drops anything over 144 chars and calls ReplaceControlChars out of line 2026-09-04 22:28:02 +07:00
ricardoofnl b6e839d49f [saco] Implement/match CChatWindow::AddChatMessage; the control-char scrub is written out again instead of calling ReplaceControlChars 2026-09-04 22:28:01 +07:00
ricardoofnl 13e0a5e9e8 [saco] Implement/match the four CChatWindow scrollbar pokes; CDXUTScrollBar::GetTrackPos comes along as the out-of-line COMDAT at 0x100670D0 2026-09-04 22:28:01 +07:00
ricardoofnl 272d63d75b [saco] Implement/match CChatWindow::ReplaceControlChars; its range test is signed, unlike the ReplaceUnprintableChars in game/util.cpp 2026-09-04 22:28:01 +07:00
ricardoofnl d9312cbda5 [saco] Implement/match CChatWindow::SetPageSize; it returns void, retail leaves the leftover FUNC_10067200 return in eax 2026-09-04 22:28:01 +07:00
ricardoofnl 6452edd2f1 [saco] Match CLocalPlayer::SelectNextClass; the class step plays sound 1052/1053 through CAudio at pGame+0 2026-09-04 22:28:01 +07:00
ricardoofnl a9f1f78a02 [saco] Match CLocalPlayer::RequestClass and SendStatsUpdate; the stats packet is ID_STATS_UPDATE over Send, not an RPC 2026-09-04 22:28:01 +07:00
ricardoofnl 67d0758e1d [saco] Match the three CLocalPlayer damage reports; RELIABLE_ORDERED is 9 and the WORD arg copy widens to a dword 2026-09-04 22:28:01 +07:00
ricardoofnl 441f89429a [saco] Implement/match UnkAA; the Read(bool&) specialization cannot throw so the frame carries no EH state 2026-09-04 22:28:01 +07:00
ricardoofnl e4c72ce5f7 [saco] Implement/match the four ped heading patch helpers; each is an inlined memcpy/memset over the saved code arrays 2026-09-04 22:28:01 +07:00
ricardoofnl 5bd0b5c882 [saco] Match FUNC_1000D2C0, the state 1 twin of FUNC_1000D320, and add its FUNC_1000C650 callee 2026-09-04 21:31:14 +07:00
ricardoofnl de2ab66e6f [saco] Match FUNC_1000D1E0; split DOWNLOAD_ENTRY.field_5A out as the retry countdown it ticks 2026-09-04 21:31:14 +07:00
ricardoofnl f5c4ef93fd [saco] Match the three CDownloadManager slot counters; the six-slot loop gets fully unrolled 2026-09-04 21:31:14 +07:00
ricardoofnl c8719debd2 [saco] Match FUNC_1000C0F0/FUNC_1000C140, the slot hold flag pair on field_5 2026-09-04 21:31:14 +07:00
ricardoofnl 47d6497b95 [saco] Match FUNC_1000D240/FUNC_1000D280; they return the dff/txd id of a staged entry 2026-09-04 21:31:14 +07:00
ricardoofnl e504cb236e [saco] Match the three CDownloadList delete helpers; _snprintf with sizeof(buf) - 1 into a 261-byte frame 2026-09-04 21:31:14 +07:00
ricardoofnl 662d3331b9 [saco] Implement/match ReplaceUnprintableChars; both ends of the range test are unsigned 2026-09-04 20:19:44 +07:00
ricardoofnl ce1f1e9c34 [saco] Add FUNC_100B4BE0 and FUNC_100B4C00; the first GTA callee cleans its own stack, the second does not 2026-09-04 20:18:48 +07:00
ricardoofnl fc68e18131 [saco] Implement/match IsValidModel; the BOOL return normalizes GetModelInfo through neg/sbb/neg 2026-09-04 20:18:31 +07:00
ricardoofnl 371b742e82 [saco] Match FUNC_100B3CD0 and FUNC_100B3D00; the used-slot count is an inlined member on a constant this 2026-09-04 20:17:42 +07:00
ricardoofnl 1e1f0d9896 [saco] Implement/match FUNC_100B64E0 and FUNC_100B6510; both are thiscall thunks into GTA 2026-09-04 19:40:40 +07:00
ricardoofnl db94f0cc06 [saco] Lock the SCOREBOARD_ROW layout with compile-time size and offset probes 2026-09-04 19:32:02 +07:00
ricardoofnl bbc39ba1e9 [saco] Match the six-argument CNewPlayerTags::Draw; the label rect is a copy of the status rect taken before the measure 2026-09-04 19:32:02 +07:00
ricardoofnl 96a893c87a [saco] Match FUNC_100A3BB0; the local-target flag is a byte and its if/else arms are inverted 2026-09-04 19:32:02 +07:00
ricardoofnl d65675f504 [saco] Add CDownloadList::FUNC_1000C770; the real thiscall closes FUNC_1000D320 2026-09-04 19:32:02 +07:00
ricardoofnl 426168a8d3 [saco] Lock the downloader layouts with compile-time assertions; a wrong offset now fails the build 2026-09-04 19:32:01 +07:00
ricardoofnl 12d85813ee [saco] Implement/match ScrUnk85; it calls CGame::SetWantedLevel behind an early return 2026-09-04 19:32:01 +07:00
ricardoofnl 1de918acd0 [saco] Implement/match ScrSetSpawnInfo; the player pool is fetched after the bitstream 2026-09-04 19:32:01 +07:00
ricardoofnl 82997497af [saco] Match CNetGame::Packet_DisconnectionNotification; it stops the radio then disconnects 2026-09-04 19:32:01 +07:00
ricardoofnl 45abe08b78 [saco] Match ResetObjectPool; the nine pool-recreate helpers are complete 2026-09-04 19:32:01 +07:00
ricardoofnl 5cdeb8c5fb [saco] Match ResetVehiclePool and ResetTextDrawPool; their teardowns are destructors 2026-09-04 19:32:01 +07:00
ricardoofnl 468f90ddf1 [saco] Match six CNetGame::Reset*Pool helpers and CActorPool::~CActorPool 2026-09-04 19:32:01 +07:00
ricardoofnl a5f949d91d Match CVehiclePool::FUNC_1001EB30; the widened callee parameter forces the movzx 2026-09-04 19:19:16 +07:00
ricardoofnl 8d07c02c2b Split CVehicle::_gap50 into field_64 and field_65; add FUNC_100B7840 2026-09-04 19:19:16 +07:00
ricardoofnl a713761542 Lock the CVehiclePool layout with compile-time offset and size probes 2026-09-04 19:19:16 +07:00
ricardoofnl 842b8323a4 [saco] Lock the CRemotePlayer offsets this TU depends on with compile-time assertions 2026-09-04 19:15:13 +07:00
ricardoofnl 959f1b88ae [saco] Implement/match sub_100A4170; it zeroes eight bytes then inlines the strcpy 2026-09-04 19:03:01 +07:00
ricardoofnl 6f588d338e [saco] Implement/match GetModelInfo; the bounds test is signed and the relocated table wins before it 2026-09-04 19:03:01 +07:00
ricardoofnl bf76562de5 Match CVehiclePool::FUNC_1001EA80; CVehicle inherits a virtual dtor so the delete goes through slot 0 2026-09-04 19:03:01 +07:00
ricardoofnl 78dbcbac10 Match CVehiclePool::FUNC_1001EB00; the single-slot dispatch takes no bounds check 2026-09-04 19:03:01 +07:00
ricardoofnl 6c7a2dfe3e [saco] Add CDownloadList::FUNC_1000D320; the entry layout is right, the call setup schedules 3 loads early 2026-09-04 19:03:01 +07:00
ricardoofnl 6bc9176965 [saco] Match the three CDownloadList CRC lookups; the index loops compare !=, not < 2026-09-04 19:03:01 +07:00
ricardoofnl 0690d8f4a1 [saco] Match CDownloadManager::AddURLRequest; logurls gates the log through GetIntVariable 2026-09-04 19:03:01 +07:00
ricardoofnl c859373b8e [saco] Match CRemotePlayer::FUNC_10014800; field_10B is unsigned and the vehicle lookup is its own statement 2026-09-04 19:03:01 +07:00
ricardoofnl 29d5a9f6e5 [saco] Split CPlayerPed::_gap2FD into field_2FD and field_329; sizeof and every offset are unchanged 2026-09-03 22:51:40 +07:00
ricardoofnl 055be6d51d [saco] Correct the FUNC_1006ED30 sprintf buffer to 256 and walk a row pointer in the fill loop 2026-09-03 22:25:37 +07:00
ricardoofnl 7622034e0d [saco] Implement/match CPlayerPed::ProcessDrunkCamera; two sequential && chains, not an if/else 2026-09-03 22:25:37 +07:00