ricardoofnl
|
773bf14843
|
[saco] Match CLocalPlayer::FUNC_10005AD0; the flag byte comes from a branch not setne, and the GTA id needs its own local to reuse esi
|
2026-09-04 22:52:29 +07:00 |
|
ricardoofnl
|
c2a7c3ad17
|
[saco] Match CLocalPlayer::FUNC_10005BF0; the guards must nest, sequential returns each emit their own BitStream dtor
|
2026-09-04 22:52:29 +07:00 |
|
ricardoofnl
|
4def6b65da
|
[saco] Implement/match CNetGame::UpdateScoresPingsIPs; the six argument RPC overload sits at vtable slot 25 because MSVC reverses an overload set
|
2026-09-04 22:28:02 +07:00 |
|
ricardoofnl
|
de62ab5a26
|
[saco] Implement/match CNetGame::ResetWorldBounds; the guard byte is struc_41 offset 0x2B
|
2026-09-04 22:28:02 +07:00 |
|
ricardoofnl
|
ab008a3286
|
[saco] Implement/match the three message-only handlers Packet_RSAPublicKeyMismatch, Packet_ConnectionBanned and Packet_ConnectionSucceeded
|
2026-09-04 22:28:02 +07:00 |
|
ricardoofnl
|
01fd323e8d
|
[saco] Implement/match CVehiclePool::FUNC_1001ED10; the waiting slots are 100 forty byte entries and the scan must be a do/while(i != n)
|
2026-09-04 22:28:02 +07:00 |
|
ricardoofnl
|
56909c4418
|
[saco] Implement/match CVehiclePool::FUNC_1001EF30; field-wise point copies keep vecStart enregistered and spill this
|
2026-09-04 22:28:02 +07:00 |
|
ricardoofnl
|
86edcdf9af
|
[saco] Implement/match CVehiclePool::FUNC_1001EC70; the closest-distance float has to be initialised before the id
|
2026-09-04 22:28:02 +07:00 |
|
ricardoofnl
|
a6dc7e699d
|
[saco] Implement/match CVehiclePool::FUNC_1001EE20; the 300 unit cutoff is a float literal and the walk is a plain int
|
2026-09-04 22:28:02 +07:00 |
|
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 |
|