Commit Graph
141 Commits
Author SHA1 Message Date
ricardoofnl faee9024b8 [saco] Implement/match CPlayerPed::FUNC_100AEC50; the same argument-slot tail call, into FUNC_100AEB10 2026-09-05 08:45:37 +07:00
ricardoofnl 56ef225874 [saco] Implement/match CPlayerPed::FUNC_100AEC10; the frame index goes back into the second argument slot, so the call tails into FUNC_100AEA80 2026-09-05 08:45:37 +07:00
ricardoofnl bc954875b3 [saco] Implement/match CPlayerPed::FUNC_100AE1E0; split _gap2BD into field_2BD and lock the offset with a probe 2026-09-05 08:45:37 +07:00
ricardoofnl 133894cdf5 [saco] Implement/match CPlayerPed::FUNC_100AC6C0; the tasks local is initialised before its own test, so the store precedes the branch 2026-09-05 08:45:37 +07:00
ricardoofnl f6c6d653a2 [saco] Implement/match CPlayerPed::FUNC_100AEA30; the same clump lookup again, reading the third word 2026-09-05 08:45:37 +07:00
ricardoofnl 67d91f09e0 [saco] Implement/match CPlayerPed::FUNC_100AE9E0; the same clump lookup as FUNC_100AE990, reading the second word 2026-09-05 08:45:37 +07:00
ricardoofnl ba2861f0be [saco] Implement/match CPlayerPed::FUNC_100AE990; the clump lookup keeps the GTA address in its own local so the _asm can call through it 2026-09-05 08:45:37 +07:00
ricardoofnl b345b1b9c8 [saco] Implement/match CPlayerPed::FUNC_100AD080; the task pointer is cached for the _asm and reloaded through Tasks for the clear 2026-09-05 08:45:37 +07:00
ricardoofnl 55151572b6 [saco] Implement/match CPlayerPed::FUNC_100AE560; the first branch has its own epilogue, so it ends in an explicit return 2026-09-05 08:45:37 +07:00
ricardoofnl 1e23436cb7 [saco] Implement/match CPlayerPed::FUNC_100AEBB0; the locals are declared up front so the renderware store precedes the two constants 2026-09-05 08:45:37 +07:00
ricardoofnl 6164c3283b [saco] Implement/match CPlayerPed::FUNC_100AD3E0; the object teardown Destroy spells out inline, as its own function 2026-09-05 08:45:37 +07:00
ricardoofnl 226301087b [saco] Implement/match CPlayerPed::FUNC_100AD030; nesting the tests keeps mov eax, 1 instead of folding the compare into neg/sbb 2026-09-05 08:45:37 +07:00
ricardoofnl 7d27da3613 [saco] Implement/match CPlayerPed::FUNC_100AD8B0; the GetWeaponInfo result is written back into the parameter slot 2026-09-05 08:45:37 +07:00
ricardoofnl 8cd945bd9f [saco] Implement/match CPlayerPed::FUNC_100ACE50; the else branch needs a zeroed register, which is why retail cmps instead of tests 2026-09-05 08:45:37 +07:00
ricardoofnl 9938023f49 [saco] Implement/match CPlayerPed::FUNC_100ADA00; the explicit else pins the early FALSE block ahead of the IsAdded call 2026-09-05 08:45:37 +07:00
ricardoofnl 371a18f009 [saco] Implement/match CPlayerPed::FUNC_100AE960; the result local is declared before the ped pointer, which is what orders the two stack slots 2026-09-05 08:45:37 +07:00
ricardoofnl e04d49c02f [saco] Implement/match CPlayerPed::FUNC_100AC690; a single && condition, so both tests jump forward to one zero return 2026-09-05 08:45:37 +07:00
ricardoofnl e39cc31f7e [saco] Implement/match CPlayerPed::FUNC_100AE5D0; testing the number positively is what zero-extends it up front for the widened call 2026-09-05 08:45:37 +07:00
ricardoofnl a037dff6c5 [saco] Implement/match FUNC_100AE520; a file-scope WORD clear of the GTA global at 0xB7CEDC 2026-09-05 08:45:37 +07:00
ricardoofnl 2d204144e0 [saco] Implement/match CPlayerPed::FUNC_100AEF60; the renderware test goes through ecx so m_pPed stays in eax 2026-09-05 08:45:37 +07:00
ricardoofnl dfd7768541 [saco] Implement/match CPlayerPed::FUNC_100AEC90; the _asm call is what forces the ebp frame here 2026-09-05 08:45:37 +07:00
ricardoofnl 83e944cbea [saco] Implement/match CPlayerPed::FUNC_100AC720; the pool lookup is tested before m_pPed, not after 2026-09-05 08:45:37 +07:00
ricardoofnl c6d663e825 [saco] Implement/match CPlayerPed::FUNC_100AD880; the first store can alias m_pPed, which forces the reload for the second 2026-09-05 08:45:37 +07:00
ricardoofnl 55846225c4 [saco] Implement/match CPlayerPed::FUNC_100AD860; dwStateFlags & 3 narrows to a byte test 2026-09-05 08:45:37 +07:00
ricardoofnl 4835be7464 [saco] Implement/match CPlayerPed::FUNC_100ACF00; only al is live at the retn 4, so the setter returns void 2026-09-05 08:45:37 +07:00
ricardoofnl 8801e505b2 [saco] Implement/match CPlayerPed::FUNC_100ACEF0; the same setnz shape as FUNC_100ACE40, on field_2DE 2026-09-05 08:45:37 +07:00
ricardoofnl 77b4179732 [saco] Implement/match CPlayerPed::FUNC_100ACE40; the BOOL return of field_2E2 != 0 normalises through xor/test/setnz 2026-09-05 08:45:37 +07:00
ricardoofnl 72081093cb [saco] Implement/match CPlayerPed::FUNC_100AE260; a bare field_2F2 getter 2026-09-05 08:45: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
ricardoofnl cfa984713e [saco] Point CPlayerPed at GetTaskTypeFromTask; my file-local GetTaskType alias had no definition 2026-09-03 03:46:05 +07:00
ricardoofnl e8708bf464 [saco] Implement/match CPlayerPed::FUNC_100AFFD0; it kills the ped via kill_actor after unwinding the jetpack 2026-09-03 03:28:53 +07:00
ricardoofnl 4ee8177703 [saco] Implement/match CPlayerPed::FUNC_100AD0F0; it calls 0x5393F0 on the ped and vehicle slots 2026-09-03 03:28:53 +07:00
ricardoofnl 802b8aded3 [saco] Implement/match CPlayerPed::FUNC_100AC5D0 and FUNC_100AC640; both read the enter/leave-car task type 2026-09-03 02:34:40 +07:00
ricardoofnl fae75bbc87 [saco] Implement/match CPlayerPed::SetWeaponAmmo; it writes the slot ammo found by FindWeaponSlot 2026-09-03 02:34:40 +07:00
ricardoofnl 6cbbd15928 [saco] Implement CPlayerPed::Destroy and match ~CPlayerPed; the destructor body is just Destroy() 2026-09-03 02:34:40 +07:00
ricardoofnl 3e0b45b61e [saco] Implement/match CPlayerPed::RemoveAllAttachedObjects and StopCarrying 2026-09-03 02:34:40 +07:00
ricardoofnl e207d37fb4 [saco] Implement/match the CPlayerPed attached-object slot accessors; a live slot holds 1, not just nonzero 2026-09-03 02:34:40 +07:00
ricardoofnl d1ada09e0d [saco] Point CPlayerPed::SetSkin at UnFuck and util.h; drop the file-local prototypes 2026-09-03 02:32:59 +07:00
ricardoofnl c0fab98037 [saco] Implement/match CPlayerPed::SetInterior; the refresh flag is a BOOL, not a byte 2026-09-03 01:56:59 +07:00
ricardoofnl 3825e14367 [saco] Implement/match CPlayerPed::SetSkin; it rets out a streamer assert before swapping the model 2026-09-03 01:56:59 +07:00
ricardoofnl f3dac635fc [saco] Match the field_2C9 and field_2C1 accessors at 0x100ADFA0, 0x100ADFB0 and 0x100ADC90 2026-09-03 01:33:32 +07:00
ricardoofnl d21274463a [saco] Rework CPlayerPed::SetKeys to retail shape; masks the unshifted wKeys and spells both helpers out 2026-09-03 01:33:32 +07:00
ricardoofnl fd568887be [saco] Match CPlayerPed::GetKeys; retail inlines IsInVehicle, IsInJetpackMode and HasAmmoForCurrentWeapon 2026-09-03 01:33:32 +07:00
ricardoofnl 5709b2c351 [saco] Match CPlayerPed::PutDirectlyInVehicle; retail tests the 0xFFFF pool sentinel before MAX_VEHICLES 2026-09-03 01:33:32 +07:00
ricardoofnl 6a287f55f4 [saco] Match CPlayerPed::ExitCurrentVehicle; GetCurrentVehicleID is an inline in the header 2026-09-03 01:33:32 +07:00
ricardoofnl e28d19cd4a [saco] Match CPlayerPed::TogglePlayerControllable; retail writes the IsInVehicle test out inline 2026-09-03 01:33:32 +07:00
ricardoofnl 686bb11b7a [saco] Match CPlayerPed::StartGoggles; retail writes the HasGoggles test out inline 2026-09-03 01:33:32 +07:00
ricardoofnl 4e2dd5ffc5 [saco] Match CPlayerPed::StopGoggles; retail writes the HasGoggles test out inline 2026-09-03 01:33:32 +07:00
ricardoofnl eec72291c4 [saco] Match CPlayerPed::ShowMarker; retail writes the HideMarker body inline 2026-09-03 01:33:32 +07:00
ricardoofnl 1387bbcf00 [saco] Match CPlayerPed::GetVehicleSeatID; retail reads dwAction instead of calling GetActionTrigger 2026-09-03 01:33:32 +07:00