diff --git a/saco/game/util.cpp b/saco/game/util.cpp index 26ee99c..0cbf9c9 100644 --- a/saco/game/util.cpp +++ b/saco/game/util.cpp @@ -1173,6 +1173,49 @@ void CreateCameraRaster() _asm add esp, 16 } +//---------------------------------------------------- + +DWORD CamFrameBufferSave; +DWORD CamZBufferSave; + +DWORD *pRwSceneCamera = (DWORD *)0xC1703C; + +void FUNC_100B5D20() +{ + DWORD dwCamera; + + _asm pushad + + CreateCameraRaster(); + + dwCamera = *pRwSceneCamera; + *(DWORD *)0xC9BCC0 = dwCamera; + + _asm mov ebx, dwCamera + _asm mov edx, [ebx+0x60] + _asm mov CamFrameBufferSave, edx + _asm mov edx, [ebx+0x64] + _asm mov CamZBufferSave, edx + _asm mov edx, CamFrameBuffer2 + _asm mov [ebx+0x60], edx + _asm mov edx, CamZBuffer2 + _asm mov [ebx+0x64], edx + + _asm mov edx, 0x734650 + _asm call edx + _asm mov edx, 0x53DF40 + _asm call edx + _asm mov edx, 0x732F30 + _asm call edx + + _asm mov ebx, dwCamera + _asm mov edx, CamFrameBufferSave + _asm mov [ebx+0x60], edx + _asm mov edx, CamZBufferSave + _asm mov [ebx+0x64], edx + + _asm popad +} //---------------------------------------------------- diff --git a/saco/game/util.h b/saco/game/util.h index ec16d60..405d2f4 100644 --- a/saco/game/util.h +++ b/saco/game/util.h @@ -108,6 +108,7 @@ int FUNC_100B41F0(void *pData); // .text:100B41F0 int __stdcall FUNC_100B4240(DWORD *pdwIn, DWORD dwParam); // .text:100B4240 void __stdcall FUNC_100B42B0(DWORD *pdwEntity); // .text:100B42B0 DWORD __stdcall FUNC_100B4430(int a1, int a2); // .text:100B4430 +void FUNC_100B5D20(); // .text:100B5D20 void FUNC_100B5210(int a1, void *a2); // .text:100B5210, __cdecl: the caller's // stack cleanup is folded into the next call's argument setup