Commit Graph

  • 1e1f0d9896 [saco] Implement/match FUNC_100B64E0 and FUNC_100B6510; both are thiscall thunks into GTA ricardoofnl 2026-09-04 19:10:30 +07:00
  • db94f0cc06 [saco] Lock the SCOREBOARD_ROW layout with compile-time size and offset probes ricardoofnl 2026-09-04 19:16:57 +07:00
  • bbc39ba1e9 [saco] Match the six-argument CNewPlayerTags::Draw; the label rect is a copy of the status rect taken before the measure ricardoofnl 2026-09-04 19:18:29 +07:00
  • 96a893c87a [saco] Match FUNC_100A3BB0; the local-target flag is a byte and its if/else arms are inverted ricardoofnl 2026-09-04 19:17:37 +07:00
  • d65675f504 [saco] Add CDownloadList::FUNC_1000C770; the real thiscall closes FUNC_1000D320 ricardoofnl 2026-09-04 19:19:50 +07:00
  • 426168a8d3 [saco] Lock the downloader layouts with compile-time assertions; a wrong offset now fails the build ricardoofnl 2026-09-04 19:12:13 +07:00
  • 12d85813ee [saco] Implement/match ScrUnk85; it calls CGame::SetWantedLevel behind an early return ricardoofnl 2026-09-03 22:07:50 +07:00
  • 1de918acd0 [saco] Implement/match ScrSetSpawnInfo; the player pool is fetched after the bitstream ricardoofnl 2026-09-03 05:26:04 +07:00
  • 82997497af [saco] Match CNetGame::Packet_DisconnectionNotification; it stops the radio then disconnects ricardoofnl 2026-09-04 19:23:13 +07:00
  • 45abe08b78 [saco] Match ResetObjectPool; the nine pool-recreate helpers are complete ricardoofnl 2026-09-04 19:20:11 +07:00
  • 5cdeb8c5fb [saco] Match ResetVehiclePool and ResetTextDrawPool; their teardowns are destructors ricardoofnl 2026-09-04 19:18:19 +07:00
  • 468f90ddf1 [saco] Match six CNetGame::Reset*Pool helpers and CActorPool::~CActorPool ricardoofnl 2026-09-04 19:16:01 +07:00
  • a5f949d91d Match CVehiclePool::FUNC_1001EB30; the widened callee parameter forces the movzx ricardoofnl 2026-09-04 19:16:23 +07:00
  • 8d07c02c2b Split CVehicle::_gap50 into field_64 and field_65; add FUNC_100B7840 ricardoofnl 2026-09-04 19:16:23 +07:00
  • a713761542 Lock the CVehiclePool layout with compile-time offset and size probes ricardoofnl 2026-09-04 19:10:42 +07:00
  • 842b8323a4 [saco] Lock the CRemotePlayer offsets this TU depends on with compile-time assertions ricardoofnl 2026-09-04 19:13:13 +07:00
  • 959f1b88ae [saco] Implement/match sub_100A4170; it zeroes eight bytes then inlines the strcpy ricardoofnl 2026-09-03 22:30:37 +07:00
  • 6f588d338e [saco] Implement/match GetModelInfo; the bounds test is signed and the relocated table wins before it ricardoofnl 2026-09-03 22:24:05 +07:00
  • bf76562de5 Match CVehiclePool::FUNC_1001EA80; CVehicle inherits a virtual dtor so the delete goes through slot 0 ricardoofnl 2026-09-03 21:54:29 +07:00
  • 78dbcbac10 Match CVehiclePool::FUNC_1001EB00; the single-slot dispatch takes no bounds check ricardoofnl 2026-09-03 21:47:53 +07:00
  • 6c7a2dfe3e [saco] Add CDownloadList::FUNC_1000D320; the entry layout is right, the call setup schedules 3 loads early ricardoofnl 2026-09-03 22:36:37 +07:00
  • 6bc9176965 [saco] Match the three CDownloadList CRC lookups; the index loops compare !=, not < ricardoofnl 2026-09-03 22:17:01 +07:00
  • 0690d8f4a1 [saco] Match CDownloadManager::AddURLRequest; logurls gates the log through GetIntVariable ricardoofnl 2026-09-03 21:53:58 +07:00
  • c859373b8e [saco] Match CRemotePlayer::FUNC_10014800; field_10B is unsigned and the vehicle lookup is its own statement ricardoofnl 2026-09-03 22:09:57 +07:00
  • 29d5a9f6e5 [saco] Split CPlayerPed::_gap2FD into field_2FD and field_329; sizeof and every offset are unchanged ricardoofnl 2026-09-03 22:40:53 +07:00
  • 055be6d51d [saco] Correct the FUNC_1006ED30 sprintf buffer to 256 and walk a row pointer in the fill loop ricardoofnl 2026-09-03 22:19:20 +07:00
  • 7622034e0d [saco] Implement/match CPlayerPed::ProcessDrunkCamera; two sequential && chains, not an if/else ricardoofnl 2026-09-03 22:13:56 +07:00
  • f9693ce115 [saco] Annotate six verified declarations with their .text addresses so address greps find them ricardoofnl 2026-09-03 21:52:26 +07:00
  • 4c3609e565 Match CVehiclePool::FUNC_1001EDE0; the slot loop bound is inclusive and reloads field_0 each pass ricardoofnl 2026-09-03 05:10:11 +07:00
  • ce1db2e0fc Match CVehiclePool::FUNC_1001F060; it deletes every slot through FUNC_1001EA80 ricardoofnl 2026-09-03 05:08:34 +07:00
  • 4a65d4777a [saco] Match CNetGame::ResetMapIcons; the expanded guard skips the slot, it does not return ricardoofnl 2026-09-03 05:35:59 +07:00
  • 27dcb2fdf2 De-inline CNetGame::DisableMapIcon to restore ScrUnk90; hand-expand it at both map-icon call sites instead ricardoofnl 2026-09-03 05:32:10 +07:00
  • d7a9f31a83 [saco] Match CNetGame::AttemptConnect; it retries the connect every three seconds ricardoofnl 2026-09-03 05:25:24 +07:00
  • cf7fdd28bb [saco] Match CNetGame::SetMapIcon and ResetMapIcons; DisableMapIcon must be inline ricardoofnl 2026-09-03 05:24:00 +07:00
  • 0d9fc30d3b [saco] Match CNetGame::ToggleNameTagStatus; it mirrors the flag into nonametagstatus ricardoofnl 2026-09-03 05:22:55 +07:00
  • 3e1070db78 [saco] Match three CNetGame packet handlers; full, bad password and no response ricardoofnl 2026-09-03 05:20:36 +07:00
  • b3dab2e6ef [saco] Annotate the six already-matching net/netgame.cpp functions ricardoofnl 2026-09-03 05:18:08 +07:00
  • 3983f6e174 [saco] Implement/match ScrUnk90; it calls CNetGame::DisableMapIcon ricardoofnl 2026-09-03 05:18:18 +07:00
  • e39e76f106 [saco] Implement/match ScrUnk86; the oversize-textdraw warning is the fallthrough arm ricardoofnl 2026-09-03 05:10:31 +07:00
  • 1a2d8d76ad [saco] Match SvrStats; it reads straight into the global RakServerStats ricardoofnl 2026-09-03 05:06:59 +07:00
  • f1ca3e849c [saco] Match RequestClass; the 46-byte SPAWN_INFO comes off the stream whole ricardoofnl 2026-09-03 05:04:03 +07:00
  • 67aa31d871 [saco] Match CNetGame::DisableMapIcon; it is out of line at 0x10008FB0 ricardoofnl 2026-09-03 05:02:19 +07:00
  • 4c0934a638 Add the missing raknet/SocketDataEncryptor.h; net/netgame.cpp compiles again ricardoofnl 2026-09-03 05:02:19 +07:00
  • 653054feaf [saco] Match SetRaceCheckpoint; the size read reuses the fX temp ricardoofnl 2026-09-03 02:08:43 +07:00
  • 811f4f61bf [saco] Match SetCheckpoint; the single radius fills all three extent components ricardoofnl 2026-09-03 02:07:18 +07:00
  • 9f8466f0bb [saco] Match Chat; local text goes to the chat window, remote text to the player ricardoofnl 2026-09-03 02:05:36 +07:00
  • b62d35175c [saco] Match ConnectionRejected; four reject reasons then a 500ms Disconnect ricardoofnl 2026-09-03 02:03:09 +07:00
  • dee26ca679 [saco] Match ClientMessage; the 256-byte buffer forces the 8-byte stack realign ricardoofnl 2026-09-03 02:01:01 +07:00
  • 442c3fcf57 [saco] Add matching Checksum and LoadModelsThread; both were missing from the TU ricardoofnl 2026-09-03 01:57:13 +07:00
  • c7d3f4eb33 Match CTextDrawPool::GetAt; two split guards hoist the zero arm ahead of the value arm ricardoofnl 2026-09-03 04:53:21 +07:00
  • 8b61418b8b Declare CTextDrawPool::FUNC_1001E910 so ScrUnk86 can call it ricardoofnl 2026-09-03 04:48:22 +07:00
  • aa4345eedb [saco] Implement/match ScrUnkB0; it teleports an actor and reads the position into a VECTOR ricardoofnl 2026-09-03 04:51:57 +07:00
  • 33f11dd9d3 [saco] Implement/match ScrUnk87; it is the textdraw hide RPC and calls CTextDrawPool::FUNC_1001E7F0 ricardoofnl 2026-09-03 04:42:00 +07:00
  • c901c3f7e5 Write the ScrUnk4B attach-object body; frame is 4 bytes short of 0x1001C6A0 ricardoofnl 2026-09-03 04:36:40 +07:00
  • b25e6281da Move CObject into net/objectpool.h and name field_44; the GTA handle the object RPCs pass ricardoofnl 2026-09-03 04:24:35 +07:00
  • ae6110aa78 [saco] Implement/match ScrUnk56; it is the apply-animation RPC and sets the remote player flag at 0x1C1 ricardoofnl 2026-09-03 04:12:19 +07:00
  • 554f00d613 Move the ScrUnk21 zero-init below the bitstream; frame size now matches, buffer still 1 byte off ricardoofnl 2026-09-03 03:59:09 +07:00
  • 7404343b7e Write the ScrUnk21 shop-name body; the zero-init lands before the ctor instead of after ricardoofnl 2026-09-03 03:53:07 +07:00
  • 7922c71515 [saco] Turn sub_100A0210 into CGame::DeletePlayerPed; the call site loads ecx, so 0x100A0210 is the member ricardoofnl 2026-09-03 03:29:55 +07:00
  • bf8a95cb42 [saco] Repoint the three aliased CGame setters at their real members; the aliases were declared but never defined ricardoofnl 2026-09-03 03:27:19 +07:00
  • 16b657842e [saco] Match CRemotePlayer::FUNC_10014650; vehicle ids 2000-3000 index the object pool, offsets clamped to +/-100 ricardoofnl 2026-09-03 03:37:09 +07:00
  • cfa984713e [saco] Point CPlayerPed at GetTaskTypeFromTask; my file-local GetTaskType alias had no definition ricardoofnl 2026-09-03 03:44:14 +07:00
  • ddca4621ce Write the ScrInitMenu body; still 4 float stack slots short of 0x1001C870 ricardoofnl 2026-09-03 03:35:13 +07:00
  • e2b4621acd [saco] Implement/match ScrUnk0F; it calls CPlayerPed::TogglePlayerControllable ricardoofnl 2026-09-03 03:27:53 +07:00
  • b23f356def [saco] Match CRemotePlayer::FUNC_10014540; it re-creates the map marker when there is no ped ricardoofnl 2026-09-03 03:03:39 +07:00
  • 606b5d37f1 [saco] Match CNetPlayer::GetName; GetPlayerName reaches the name through it, not through .c_str() directly ricardoofnl 2026-09-03 02:59:39 +07:00
  • dd5b9125e7 [saco] Match CRemotePlayer::FUNC_10017610; two separate NULL stores merge into the mid-function zero arm ricardoofnl 2026-09-03 02:54:44 +07:00
  • e8708bf464 [saco] Implement/match CPlayerPed::FUNC_100AFFD0; it kills the ped via kill_actor after unwinding the jetpack ricardoofnl 2026-09-03 03:25:01 +07:00
  • 4ee8177703 [saco] Implement/match CPlayerPed::FUNC_100AD0F0; it calls 0x5393F0 on the ped and vehicle slots ricardoofnl 2026-09-03 03:22:51 +07:00
  • 989405a307 [saco] Implement/match ScrUnk16; it is the give-weapon RPC and calls CPlayerPed::GiveWeapon ricardoofnl 2026-09-03 03:22:53 +07:00
  • 3ed37ae8ee [saco] Implement/match ScrUnk43; it is the armed-weapon RPC and calls CPlayerPed::SetArmedWeapon ricardoofnl 2026-09-03 03:21:29 +07:00
  • aed6c4dd6f Repoint the four aliased CPlayerPed calls at their real members; the aliases were declared but never defined ricardoofnl 2026-09-03 03:18:52 +07:00
  • 33bda17f1d Match CNetGame::FUNC_10002E10; it is GetObjectPool's out-of-line copy, not a TODO ricardoofnl 2026-09-03 03:07:25 +07:00
  • d1425c2c8e Write the ScrUnk99 set-skin body; still one lazy push ebx short of 0x10019190 ricardoofnl 2026-09-03 03:02:45 +07:00
  • 4edeb5b18c [saco] Implement/match ScrShowMenu and ScrHideMenu; CNetGame::GetMenuPool is an inline, not an out-of-line call ricardoofnl 2026-09-03 02:55:46 +07:00
  • 79f96e1555 [saco] Implement/match ScrUnk91; it is the set-ammo RPC and calls CPlayerPed::SetWeaponAmmo ricardoofnl 2026-09-03 02:51:39 +07:00
  • 55d339a9e1 [saco] Match CRemotePlayer::FUNC_10001080; a header inline, one && over a DWORD pointer and a BYTE state ricardoofnl 2026-09-03 02:50:18 +07:00
  • 5160deda40 [saco] Implement/match ScrAddGangZone and ScrFlashGangZone; the gang zone pool is fetched after the bitstream ricardoofnl 2026-09-03 02:43:11 +07:00
  • c44c11548d [saco] Implement/match ScrRemoveGangZone and ScrStopFlashGangZone; both read the zone id inside the pool null check ricardoofnl 2026-09-03 02:28:26 +07:00
  • f8d9e4dcf2 [saco] Implement/match ScrRemovePlayerFromVehicle; it calls CPlayerPed::ExitCurrentVehicle ricardoofnl 2026-09-03 02:27:07 +07:00
  • 0ee9dcba50 Remove the duplicate declarations and leftover stubs left by the merge ricardoofnl 2026-09-03 02:40:51 +07:00
  • 41411d3ddb [saco] Add the six-argument CNewPlayerTags::Draw; still 4 register copies short of 0x1006CDA0 ricardoofnl 2026-09-03 01:55:53 +07:00
  • 6a641db29a [saco] Match the CUnkClass3 constructor; retail zeroes field_89 with a loop, not memset ricardoofnl 2026-09-03 01:47:44 +07:00
  • 802b8aded3 [saco] Implement/match CPlayerPed::FUNC_100AC5D0 and FUNC_100AC640; both read the enter/leave-car task type ricardoofnl 2026-09-03 02:32:32 +07:00
  • fae75bbc87 [saco] Implement/match CPlayerPed::SetWeaponAmmo; it writes the slot ammo found by FindWeaponSlot ricardoofnl 2026-09-03 02:25:52 +07:00
  • 6cbbd15928 [saco] Implement CPlayerPed::Destroy and match ~CPlayerPed; the destructor body is just Destroy() ricardoofnl 2026-09-03 02:09:43 +07:00
  • 3e0b45b61e [saco] Implement/match CPlayerPed::RemoveAllAttachedObjects and StopCarrying ricardoofnl 2026-09-03 02:07:02 +07:00
  • e207d37fb4 [saco] Implement/match the CPlayerPed attached-object slot accessors; a live slot holds 1, not just nonzero ricardoofnl 2026-09-03 02:06:27 +07:00
  • ed3d698e36 [saco] Implement/match FUNC_100B61D0; it forwards its argument to the GTA routine at 0x745C70 ricardoofnl 2026-09-03 01:46:09 +07:00
  • d1ada09e0d [saco] Point CPlayerPed::SetSkin at UnFuck and util.h; drop the file-local prototypes ricardoofnl 2026-09-03 02:17:40 +07:00
  • c761f03055 [saco] Implement/match IsValidPedModel; the model bounds test is signed, and the vtable is 0x85BDC0 ricardoofnl 2026-09-03 02:09:43 +07:00
  • 910e879b56 [saco] Match CTextDrawPool::FUNC_1001E830; the counter is declared above the guard, which flips the push order ricardoofnl 2026-09-03 02:01:44 +07:00
  • 42bd7d950f [saco] Match CTextDrawPool::FUNC_1001E870 and FUNC_1001E8A0; both dispatch over live slots ricardoofnl 2026-09-03 01:58:49 +07:00
  • 5a8554d37c [saco] Match CTextDrawPool::FUNC_1001E8D0; the delete-all loop strength-reduces to a pointer walk ricardoofnl 2026-09-03 01:57:40 +07:00
  • eb8c6e50e8 [saco] Match CTextDrawPool::FUNC_1001E7F0; add CTextDraw so the slot delete emits its out-of-line dtor ricardoofnl 2026-09-03 01:56:33 +07:00
  • 403e0cb671 [saco] Split CVehiclePool::_gapBD14 into field_BD14/field_DC54/field_FB94/field_11AD4 ricardoofnl 2026-09-03 01:51:32 +07:00
  • 9f962b6477 [saco] Match CDownloadManager::FUNC_1000C010 and its empty worker proc; _beginthread per slot ricardoofnl 2026-09-03 02:14:01 +07:00
  • 60c7d6ba09 [saco] Add net/downloader.cpp and match CDownloadManager::FUNC_1000C0C0; 6 slots of 0x230 ricardoofnl 2026-09-03 02:11:19 +07:00
  • 2e0f46beb1 [saco] Implement CScoreBoard::FUNC_1006ED30; Show and six small helpers match, the refresh is 444/892 off ricardoofnl 2026-09-03 01:59:44 +07:00
  • 1cb6783ace [saco] Match ExitVehicle; it only acts inside a 200-unit radius ricardoofnl 2026-09-03 00:31:00 +07:00