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
|
40f011845e
|
[saco] Implement/match ScrUnk57; a single goto exit gives the one shared epilogue while keeping push esi delayed, which neither early returns nor nesting produced
|
2026-09-05 08:24:05 +07:00 |
|
ricardoofnl
|
810a3cffbd
|
[saco] Implement/match ScrUnk71; CPlayerPool::GetAt will not inline here, so the ternary has to be spelled out, and the attach test is negated
|
2026-09-05 08:11:28 +07:00 |
|
ricardoofnl
|
d8bc0efab5
|
[saco] Implement/match ScrUnk94; two GetAt lookups on different ids keep both slot tests, and the trailer is the this of the pair of calls
|
2026-09-05 08:11:28 +07:00 |
|
ricardoofnl
|
b18ac60ce5
|
[saco] Implement/match ScrUnk70; it forwards to CGame::PlayCrimeReport with the position passed by pointer
|
2026-09-05 08:11:28 +07:00 |
|
ricardoofnl
|
26cbdd6983
|
[saco] Implement/match ScrUnk38; it is CNetGame::SetMapIcon, and the contiguous ascending X/Y/Z slots mean a VECTOR rather than three floats
|
2026-09-05 08:11:28 +07:00 |
|
ricardoofnl
|
f904873daf
|
[saco] Implement/match ScrUnk7B; zeroing the 33-byte buffer with memset gives eight aligned dwords plus a trailing byte, an = {0} initializer does not
|
2026-09-05 08:11:28 +07:00 |
|
ricardoofnl
|
787d1811fd
|
[saco] Implement/match ScrUnk2D; the read order lands X in the second float slot, not the first
|
2026-09-05 08:11:28 +07:00 |
|
ricardoofnl
|
235b85f926
|
Document the build: VC7.1 toolchain, the Release flags and per-file overrides, and why the DLL does not link yet
|
2026-09-05 07:40:52 +07:00 |
|
ricardoofnl
|
7cf34084ce
|
[saco] Implement/match FUNC_100B5D20; it swaps the offscreen rasters into the scene camera around three GTA calls
|
2026-09-05 07:37:06 +07:00 |
|
ricardoofnl
|
315ae05989
|
[saco] Add FUNC_100B4430; the second asm block reads the 0x4D3A60 result straight out of eax
|
2026-09-05 07:37:06 +07:00 |
|
ricardoofnl
|
237a0fe6bb
|
[saco] Implement/match FUNC_100B42B0; the asm-visible copy is taken after the state tests so the object pointer stays in eax
|
2026-09-05 07:37:06 +07:00 |
|
ricardoofnl
|
db738d9c73
|
[saco] Add FUNC_100B41F0 and FUNC_100B4240; both dispatch the version-dependent 0x7EE2D0/0x7EE310 pair on the scene camera
|
2026-09-05 07:37:06 +07:00 |
|
ricardoofnl
|
17b3f3d248
|
[saco] Implement/match FUNC_100B3D30; the object pool walk advances the pointer in the for increment, after the counter
|
2026-09-05 07:37:06 +07:00 |
|
ricardoofnl
|
1bb92445f6
|
[saco] Implement/match FUNC_100B4A70; the unit-range test is <= and >= on all three components
|
2026-09-05 07:37:06 +07:00 |
|
ricardoofnl
|
cd7c129445
|
[saco] Implement/match VectorNormaliseTo; casting the sum to double picks the fsqrt intrinsic instead of the float sqrt overload
|
2026-09-05 07:37:06 +07:00 |
|
ricardoofnl
|
783584be6e
|
[saco] Implement/match VectorCrossProduct; each product needs its own statement or MSVC canonicalises the fmul operands by address
|
2026-09-05 07:37:05 +07:00 |
|
ricardoofnl
|
500a3abcd3
|
[saco] Implement/match FastSqrt; one newton step on the 0x5F3759D5 inverse-sqrt seed, scaled back up by x
|
2026-09-05 07:37:05 +07:00 |
|
ricardoofnl
|
0c4148e8a4
|
[saco] Add FUNC_100B4BC0; a 0x59C730 thunk with the same three-pop cleanup as FUNC_100B4C00
|
2026-09-05 07:37:05 +07:00 |
|
ricardoofnl
|
ec3b61abfa
|
[saco] Implement/match Packet_AimSync, Packet_PassengerSync and Packet_TrailerSync; the pool pointer is fetched before the id bound check
|
2026-09-05 07:36:48 +07:00 |
|
ricardoofnl
|
4ec0c924cf
|
[saco] Implement/match CChatWindow::FUNC_10067ED0; it only re-renders the target texture when m_bRedraw is set or the scroll position moved
|
2026-09-05 07:36:48 +07:00 |
|
ricardoofnl
|
f1d8eabde1
|
[saco] Implement/match CChatWindow::WriteChatLog; the entry type is a switch (subtract chain) and the timestamp buffer takes 68 stack bytes
|
2026-09-05 07:36:48 +07:00 |
|
ricardoofnl
|
256a3d372c
|
[saco] Implement/match CChatWindow::FUNC_10067E00; the scrollbar stays visible while scrolled off the bottom or the cmd window is open
|
2026-09-05 07:36:48 +07:00 |
|
ricardoofnl
|
6ce44a81b5
|
[saco] Implement/match CChatWindow::FUNC_10067120; it DT_CALCRECTs "Y" for the line height and "[19:58:34]" for the timestamp width in field_63E6
|
2026-09-05 07:36:48 +07:00 |
|