mirror of
https://github.com/dashr9230/SA-MP.git
synced 2026-10-10 03:33:04 +08:00
[saco] Implement/match FUNC_100B44E0, FUNC_100B6470, VectorScale, FUNC_100B51E0 and FUNC_100B5180; the quaternion norm needs its tail sum parenthesised or MSVC folds the first square to the top of the x87 stack
This commit is contained in:
@@ -1655,3 +1655,62 @@ void __stdcall FUNC_100B4730(int iModel, WORD wValue)
|
|||||||
_asm mov [edx+8], bx
|
_asm mov [edx+8], bx
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------
|
||||||
|
|
||||||
|
BOOL __stdcall FUNC_100B44E0(DWORD *pModelInfo)
|
||||||
|
{
|
||||||
|
if(pModelInfo && (*pModelInfo == 0x85BBF0 || *pModelInfo == 0x85BC30 ||
|
||||||
|
*pModelInfo == 0x85BC70 || *pModelInfo == 0x85BCB0 || *pModelInfo == 0x85BCF0))
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------
|
||||||
|
|
||||||
|
WORD FUNC_100B6470(int a1, int a2, int a3, int a4, int a5)
|
||||||
|
{
|
||||||
|
if(!a1) return 0;
|
||||||
|
|
||||||
|
WORD wRet = 0;
|
||||||
|
|
||||||
|
_asm lea edx, a1
|
||||||
|
_asm xor eax, eax
|
||||||
|
_asm mov ax, [edx+0x12]
|
||||||
|
_asm mov wRet, ax
|
||||||
|
|
||||||
|
return wRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------
|
||||||
|
|
||||||
|
void VectorScale(VECTOR *vecOut, VECTOR *vecIn, float fScale)
|
||||||
|
{
|
||||||
|
vecOut->X = fScale * vecIn->X;
|
||||||
|
vecOut->Y = fScale * vecIn->Y;
|
||||||
|
vecOut->Z = fScale * vecIn->Z;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------
|
||||||
|
|
||||||
|
void FUNC_100B51E0(int a1, int a2)
|
||||||
|
{
|
||||||
|
DWORD dwFunc = (iGtaVersion != GTASA_VERSION_USA10) ? 0x7EB600 : 0x7EB5C0;
|
||||||
|
|
||||||
|
_asm push a2
|
||||||
|
_asm push a1
|
||||||
|
_asm mov eax, dwFunc
|
||||||
|
_asm call eax
|
||||||
|
_asm pop edx
|
||||||
|
_asm pop edx
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------
|
||||||
|
|
||||||
|
float FUNC_100B5180(float *pQuat)
|
||||||
|
{
|
||||||
|
return pQuat[0] * pQuat[0] + (pQuat[1] * pQuat[1] + pQuat[2] * pQuat[2] +
|
||||||
|
pQuat[3] * pQuat[3]);
|
||||||
|
}
|
||||||
|
|||||||
@@ -140,6 +140,11 @@ void __stdcall FUNC_100B4630(int iModel, int a2); // .text:100B4630
|
|||||||
DWORD __stdcall FUNC_100B46D0(int iModel); // .text:100B46D0
|
DWORD __stdcall FUNC_100B46D0(int iModel); // .text:100B46D0
|
||||||
WORD __stdcall FUNC_100B4700(int iModel); // .text:100B4700
|
WORD __stdcall FUNC_100B4700(int iModel); // .text:100B4700
|
||||||
void __stdcall FUNC_100B4730(int iModel, WORD wValue); // .text:100B4730
|
void __stdcall FUNC_100B4730(int iModel, WORD wValue); // .text:100B4730
|
||||||
|
BOOL __stdcall FUNC_100B44E0(DWORD *pModelInfo); // .text:100B44E0
|
||||||
|
WORD FUNC_100B6470(int a1, int a2, int a3, int a4, int a5); // .text:100B6470
|
||||||
|
void VectorScale(VECTOR *vecOut, VECTOR *vecIn, float fScale); // .text:100B51B0
|
||||||
|
void FUNC_100B51E0(int a1, int a2); // .text:100B51E0
|
||||||
|
float FUNC_100B5180(float *pQuat); // .text:100B5180
|
||||||
void FUNC_100B5210(int a1, void *a2); // .text:100B5210, __cdecl: the caller's
|
void FUNC_100B5210(int a1, void *a2); // .text:100B5210, __cdecl: the caller's
|
||||||
// stack cleanup is folded into the next call's argument setup
|
// stack cleanup is folded into the next call's argument setup
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user