From b61d2ca7cc3f715fe16908d69817feae9c73edd6 Mon Sep 17 00:00:00 2001 From: ricardoofnl Date: Sat, 5 Sep 2026 08:57:35 +0700 Subject: [PATCH] [saco] Implement/match `CPlayerPed::FUNC_100AE530`; the inherited renderware getter needs no `ecx` reload, `this` is still live --- saco/game/entity.h | 1 + saco/game/playerped.cpp | 11 +++++++++++ saco/game/playerped.h | 1 + saco/game/util.h | 1 + 4 files changed, 14 insertions(+) diff --git a/saco/game/entity.h b/saco/game/entity.h index 0a4bc80..c5197d7 100644 --- a/saco/game/entity.h +++ b/saco/game/entity.h @@ -63,6 +63,7 @@ public: BYTE FUNC_100B8340(); // .text:100B8340 float FUNC_100B72A0(); // .text:100B72A0 int FUNC_100B7390(); // .text:100B7390 + DWORD * FUNC_1009FA60(); // .text:1009FA60 VECTOR field_4[5]; ENTITY_TYPE *m_pEntity; diff --git a/saco/game/playerped.cpp b/saco/game/playerped.cpp index 2c7fdc6..fdda6ac 100644 --- a/saco/game/playerped.cpp +++ b/saco/game/playerped.cpp @@ -2230,3 +2230,14 @@ int CPlayerPed::FUNC_100AD9E0() return FUNC_100B4180(m_pPed->entity.nModelIndex); } //----------------------------------------------------------- + +void CPlayerPed::FUNC_100AE530(int a1, int a2) +{ + if(!m_pPed) return; + + DWORD *pRenderWare = FUNC_1009FA60(); + if(!pRenderWare) return; + + FUNC_100B1DA0(pRenderWare, a1, a2); +} +//----------------------------------------------------------- diff --git a/saco/game/playerped.h b/saco/game/playerped.h index 29ea40d..b266563 100644 --- a/saco/game/playerped.h +++ b/saco/game/playerped.h @@ -228,6 +228,7 @@ public: int FUNC_100AD9C0(); // .text:100AD9C0 int FUNC_100AD9E0(); // .text:100AD9E0 + void FUNC_100AE530(int a1, int a2); // .text:100AE530 int m_iCellPhoneEnabled; int field_4C[10]; diff --git a/saco/game/util.h b/saco/game/util.h index 7ec2619..07f6032 100644 --- a/saco/game/util.h +++ b/saco/game/util.h @@ -117,6 +117,7 @@ void FUNC_100B5470(float *pQuat, MATRIX4X4 *pMatrix); // .text:100B5470 void FUNC_100B5500(float *pQuat); // .text:100B5500 int FUNC_100B4100(int iModel); // .text:100B4100 int FUNC_100B4180(int iModel); // .text:100B4180 +int FUNC_100B1DA0(DWORD *pRenderWare, int a2, int a3); // .text:100B1DA0 void FUNC_100B5210(int a1, void *a2); // .text:100B5210, __cdecl: the caller's // stack cleanup is folded into the next call's argument setup