diff --git a/saco/game/util.cpp b/saco/game/util.cpp index 42d1f06..7da027e 100644 --- a/saco/game/util.cpp +++ b/saco/game/util.cpp @@ -5,6 +5,8 @@ #include "util.h" #include +extern int iGtaVersion; + DWORD dwPlayerPedPtrs[PLAYER_PED_SLOTS]; struc_13 VAR_1026C258[PLAYER_PED_SLOTS]; @@ -285,7 +287,61 @@ BOOL __stdcall IsValidPedModel(int iModel) return FALSE; } +//----------------------------------------------------------- +int FUNC_100B41F0(void *pData) +{ + int iRet = 0; + DWORD dwFunc; + DWORD dwCamera = *(DWORD *)0xC1703C; + + if(!dwCamera) return iRet; + + dwFunc = (iGtaVersion != GTASA_VERSION_USA10) ? 0x7EE310 : 0x7EE2D0; + + _asm push pData + _asm push dwCamera + _asm mov edx, dwFunc + _asm call edx + _asm pop edx + _asm pop edx + _asm mov iRet, eax + + return iRet; +} + +//----------------------------------------------------------- + +int __stdcall FUNC_100B4240(DWORD *pdwIn, DWORD dwParam) +{ + DWORD dwCamera; + DWORD dwFunc; + DWORD *pData; + DWORD data[4]; + int iRet; + + data[0] = pdwIn[0]; + data[1] = pdwIn[1]; + data[2] = pdwIn[2]; + data[3] = dwParam; + pData = data; + iRet = 0; + + dwCamera = *(DWORD *)0xC1703C; + if(!dwCamera) return iRet; + + dwFunc = (iGtaVersion != GTASA_VERSION_USA10) ? 0x7EE310 : 0x7EE2D0; + + _asm push pData + _asm push dwCamera + _asm mov edx, dwFunc + _asm call edx + _asm pop edx + _asm pop edx + _asm mov iRet, eax + + return iRet; +} diff --git a/saco/game/util.h b/saco/game/util.h index 934be31..79d0b9b 100644 --- a/saco/game/util.h +++ b/saco/game/util.h @@ -104,6 +104,8 @@ void VectorCrossProduct(VECTOR *vecOut, VECTOR *vec1, VECTOR *vec2); // .text:10 void VectorNormaliseTo(VECTOR *vecOut, VECTOR *vecIn); // .text:100B4CC0 bool FUNC_100B4A70(VECTOR *vec); // .text:100B4A70 bool FUNC_100B3D30(int nModelIndex); // .text:100B3D30 +int FUNC_100B41F0(void *pData); // .text:100B41F0 +int __stdcall FUNC_100B4240(DWORD *pdwIn, DWORD dwParam); // .text:100B4240 void FUNC_100B5210(int a1, void *a2); // .text:100B5210, __cdecl: the caller's // stack cleanup is folded into the next call's argument setup