From c86b6f01a237688305954c059e62dc42230f9bba Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Sat, 22 Jun 2024 01:19:25 +0200 Subject: [PATCH] move debug code defines into header --- inc/debug.h | 10 +++++++ src/IDirect3D/IDirect3D.c | 9 ------ src/IDirect3D/IDirect3D2.c | 9 ------ src/IDirect3D/IDirect3D3.c | 9 ------ src/IDirect3D/IDirect3D7.c | 9 ------ src/IDirectDraw/IDirectDraw.c | 10 ------- src/IDirectDraw/IDirectDrawClipper.c | 9 ------ src/IDirectDraw/IDirectDrawGammaControl.c | 9 ------ src/IDirectDraw/IDirectDrawPalette.c | 9 ------ src/IDirectDraw/IDirectDrawSurface.c | 9 ------ src/directinput.c | 10 ------- src/utils.c | 34 +++++++++++++++++++++++ src/winapi_hooks.c | 9 ------ 13 files changed, 44 insertions(+), 101 deletions(-) diff --git a/inc/debug.h b/inc/debug.h index f16a944..72efcf1 100644 --- a/inc/debug.h +++ b/inc/debug.h @@ -3,6 +3,7 @@ #define WIN32_LEAN_AND_MEAN #include +#include LONG WINAPI dbg_exception_handler(EXCEPTION_POINTERS* exception); void dbg_counter_start(); @@ -31,6 +32,15 @@ extern double g_dbg_frame_time; extern DWORD g_dbg_frame_count; extern LPTOP_LEVEL_EXCEPTION_FILTER g_dbg_exception_filter; +#if defined(__GNUC__) /* wrap msvc intrinsics onto gcc builtins */ +#undef _ReturnAddress +#undef _AddressOfReturnAddress +#define _ReturnAddress() __builtin_return_address(0) +#define _AddressOfReturnAddress() __builtin_frame_address (0) +#else +#pragma intrinsic(_ReturnAddress) +#endif /* __GNUC__ */ + //#define _DEBUG 1 /* use OutputDebugStringA rather than printf */ diff --git a/src/IDirect3D/IDirect3D.c b/src/IDirect3D/IDirect3D.c index 7702407..0aaa1e8 100644 --- a/src/IDirect3D/IDirect3D.c +++ b/src/IDirect3D/IDirect3D.c @@ -1,15 +1,6 @@ -#include #include "IDirect3D.h" #include "debug.h" -#if defined(__GNUC__) /* wrap msvc intrinsics onto gcc builtins */ -#undef _ReturnAddress -#undef _AddressOfReturnAddress -#define _ReturnAddress() __builtin_return_address(0) -#define _AddressOfReturnAddress() __builtin_frame_address (0) -#else -#pragma intrinsic(_ReturnAddress) -#endif /* __GNUC__ */ HRESULT __stdcall IDirect3D__QueryInterface(IDirect3DImpl* This, REFIID riid, void** obj) { diff --git a/src/IDirect3D/IDirect3D2.c b/src/IDirect3D/IDirect3D2.c index ed8c5dc..50ae5ec 100644 --- a/src/IDirect3D/IDirect3D2.c +++ b/src/IDirect3D/IDirect3D2.c @@ -1,15 +1,6 @@ -#include #include "IDirect3D.h" #include "debug.h" -#if defined(__GNUC__) /* wrap msvc intrinsics onto gcc builtins */ -#undef _ReturnAddress -#undef _AddressOfReturnAddress -#define _ReturnAddress() __builtin_return_address(0) -#define _AddressOfReturnAddress() __builtin_frame_address (0) -#else -#pragma intrinsic(_ReturnAddress) -#endif /* __GNUC__ */ HRESULT __stdcall IDirect3D2__QueryInterface(IDirect3D2Impl* This, REFIID riid, void** obj) { diff --git a/src/IDirect3D/IDirect3D3.c b/src/IDirect3D/IDirect3D3.c index 38d6d64..9cc65bd 100644 --- a/src/IDirect3D/IDirect3D3.c +++ b/src/IDirect3D/IDirect3D3.c @@ -1,15 +1,6 @@ -#include #include "IDirect3D.h" #include "debug.h" -#if defined(__GNUC__) /* wrap msvc intrinsics onto gcc builtins */ -#undef _ReturnAddress -#undef _AddressOfReturnAddress -#define _ReturnAddress() __builtin_return_address(0) -#define _AddressOfReturnAddress() __builtin_frame_address (0) -#else -#pragma intrinsic(_ReturnAddress) -#endif /* __GNUC__ */ HRESULT __stdcall IDirect3D3__QueryInterface(IDirect3D3Impl* This, REFIID riid, void** obj) { diff --git a/src/IDirect3D/IDirect3D7.c b/src/IDirect3D/IDirect3D7.c index 85eb13e..5d64fc6 100644 --- a/src/IDirect3D/IDirect3D7.c +++ b/src/IDirect3D/IDirect3D7.c @@ -1,15 +1,6 @@ -#include #include "IDirect3D.h" #include "debug.h" -#if defined(__GNUC__) /* wrap msvc intrinsics onto gcc builtins */ -#undef _ReturnAddress -#undef _AddressOfReturnAddress -#define _ReturnAddress() __builtin_return_address(0) -#define _AddressOfReturnAddress() __builtin_frame_address (0) -#else -#pragma intrinsic(_ReturnAddress) -#endif /* __GNUC__ */ HRESULT __stdcall IDirect3D7__QueryInterface(IDirect3D7Impl* This, REFIID riid, void** obj) { diff --git a/src/IDirectDraw/IDirectDraw.c b/src/IDirectDraw/IDirectDraw.c index 8295bbd..ee6c653 100644 --- a/src/IDirectDraw/IDirectDraw.c +++ b/src/IDirectDraw/IDirectDraw.c @@ -1,6 +1,5 @@ #include #include -#include #include "IDirectDraw.h" #include "IDirect3D.h" #include "IAMMediaStream.h" @@ -12,15 +11,6 @@ #include "hook.h" #include "config.h" -#if defined(__GNUC__) /* wrap msvc intrinsics onto gcc builtins */ -#undef _ReturnAddress -#undef _AddressOfReturnAddress -#define _ReturnAddress() __builtin_return_address(0) -#define _AddressOfReturnAddress() __builtin_frame_address (0) -#else -#pragma intrinsic(_ReturnAddress) -#endif /* __GNUC__ */ - HRESULT __stdcall IDirectDraw__QueryInterface(IDirectDrawImpl* This, REFIID riid, LPVOID FAR* ppvObj) { diff --git a/src/IDirectDraw/IDirectDrawClipper.c b/src/IDirectDraw/IDirectDrawClipper.c index 7270fd2..86b8a2f 100644 --- a/src/IDirectDraw/IDirectDrawClipper.c +++ b/src/IDirectDraw/IDirectDrawClipper.c @@ -1,16 +1,7 @@ -#include #include "IDirectDrawClipper.h" #include "ddclipper.h" #include "debug.h" -#if defined(__GNUC__) /* wrap msvc intrinsics onto gcc builtins */ -#undef _ReturnAddress -#undef _AddressOfReturnAddress -#define _ReturnAddress() __builtin_return_address(0) -#define _AddressOfReturnAddress() __builtin_frame_address (0) -#else -#pragma intrinsic(_ReturnAddress) -#endif /* __GNUC__ */ HRESULT __stdcall IDirectDrawClipper__QueryInterface(IDirectDrawClipperImpl* This, REFIID riid, LPVOID FAR* ppvObj) { diff --git a/src/IDirectDraw/IDirectDrawGammaControl.c b/src/IDirectDraw/IDirectDrawGammaControl.c index d234ba3..65f61fa 100644 --- a/src/IDirectDraw/IDirectDrawGammaControl.c +++ b/src/IDirectDraw/IDirectDrawGammaControl.c @@ -1,15 +1,6 @@ -#include #include "IDirectDrawGammaControl.h" #include "debug.h" -#if defined(__GNUC__) /* wrap msvc intrinsics onto gcc builtins */ -#undef _ReturnAddress -#undef _AddressOfReturnAddress -#define _ReturnAddress() __builtin_return_address(0) -#define _AddressOfReturnAddress() __builtin_frame_address (0) -#else -#pragma intrinsic(_ReturnAddress) -#endif /* __GNUC__ */ HRESULT __stdcall IDirectDrawGammaControl__QueryInterface(IDirectDrawGammaControlImpl* This, REFIID riid, LPVOID FAR* ppvObj) { diff --git a/src/IDirectDraw/IDirectDrawPalette.c b/src/IDirectDraw/IDirectDrawPalette.c index 89c8f2b..a5429ea 100644 --- a/src/IDirectDraw/IDirectDrawPalette.c +++ b/src/IDirectDraw/IDirectDrawPalette.c @@ -1,17 +1,8 @@ -#include #include "IDirectDrawPalette.h" #include "ddpalette.h" #include "ddsurface.h" #include "debug.h" -#if defined(__GNUC__) /* wrap msvc intrinsics onto gcc builtins */ -#undef _ReturnAddress -#undef _AddressOfReturnAddress -#define _ReturnAddress() __builtin_return_address(0) -#define _AddressOfReturnAddress() __builtin_frame_address (0) -#else -#pragma intrinsic(_ReturnAddress) -#endif /* __GNUC__ */ HRESULT __stdcall IDirectDrawPalette__QueryInterface(IDirectDrawPaletteImpl* This, REFIID riid, LPVOID FAR* ppvObj) { diff --git a/src/IDirectDraw/IDirectDrawSurface.c b/src/IDirectDraw/IDirectDrawSurface.c index 8624667..8984571 100644 --- a/src/IDirectDraw/IDirectDrawSurface.c +++ b/src/IDirectDraw/IDirectDrawSurface.c @@ -1,4 +1,3 @@ -#include #include #include "IDirectDrawSurface.h" #include "IDirectDrawGammaControl.h" @@ -6,14 +5,6 @@ #include "dd.h" #include "debug.h" -#if defined(__GNUC__) /* wrap msvc intrinsics onto gcc builtins */ -#undef _ReturnAddress -#undef _AddressOfReturnAddress -#define _ReturnAddress() __builtin_return_address(0) -#define _AddressOfReturnAddress() __builtin_frame_address (0) -#else -#pragma intrinsic(_ReturnAddress) -#endif /* __GNUC__ */ HRESULT __stdcall IDirectDrawSurface__QueryInterface(IDirectDrawSurfaceImpl* This, REFIID riid, LPVOID FAR* ppvObj) { diff --git a/src/directinput.c b/src/directinput.c index 059e034..4c29144 100644 --- a/src/directinput.c +++ b/src/directinput.c @@ -1,6 +1,5 @@ #include #include -#include #include "directinput.h" #include "debug.h" #include "hook.h" @@ -8,15 +7,6 @@ #include "mouse.h" #include "config.h" -#if defined(__GNUC__) /* wrap msvc intrinsics onto gcc builtins */ -#undef _ReturnAddress -#undef _AddressOfReturnAddress -#define _ReturnAddress() __builtin_return_address(0) -#define _AddressOfReturnAddress() __builtin_frame_address (0) -#else -#pragma intrinsic(_ReturnAddress) -#endif /* __GNUC__ */ - #ifdef _MSC_VER #include "detours.h" #endif diff --git a/src/utils.c b/src/utils.c index 48218b2..be3c430 100644 --- a/src/utils.c +++ b/src/utils.c @@ -155,6 +155,40 @@ void util_limit_game_ticks() if (GetCurrentThreadId() != g_ddraw.gui_thread_id) return; + /* + static void (WINAPI * getSystemTimePreciseAsFileTime)(LPFILETIME); + + if (!getSystemTimePreciseAsFileTime) + { + getSystemTimePreciseAsFileTime = GetProcAddress(LoadLibraryA("Kernel32.dll"), "GetSystemTimePreciseAsFileTime"); + + //if (!getSystemTimePreciseAsFileTime) + // getSystemTimePreciseAsFileTime = GetSystemTimeAsFileTime; + } + + + if (1) + { + FILETIME ft = { 0 }; + getSystemTimePreciseAsFileTime(&ft); + + if (CompareFileTime((FILETIME*)&g_ddraw.ticks_limiter.due_time, &ft) == -1) + { + memcpy(&g_ddraw.ticks_limiter.due_time, &ft, sizeof(LARGE_INTEGER)); + } + else + { + while (TRUE) + { + getSystemTimePreciseAsFileTime(&ft); + if (CompareFileTime((FILETIME*)&g_ddraw.ticks_limiter.due_time, &ft) <= 0) + break; + } + } + + g_ddraw.ticks_limiter.due_time.QuadPart += g_ddraw.ticks_limiter.tick_length_ns; + } + else */ if (g_ddraw.ticks_limiter.htimer) { FILETIME ft = { 0 }; diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c index 807e3cf..b3a4cce 100644 --- a/src/winapi_hooks.c +++ b/src/winapi_hooks.c @@ -1,7 +1,6 @@ #include #include #include -#include #include "debug.h" #include "config.h" #include "dd.h" @@ -20,14 +19,6 @@ #include "hook.h" #include "directinput.h" -#if defined(__GNUC__) /* wrap msvc intrinsics onto gcc builtins */ -#undef _ReturnAddress -#undef _AddressOfReturnAddress -#define _ReturnAddress() __builtin_return_address(0) -#define _AddressOfReturnAddress() __builtin_frame_address (0) -#else -#pragma intrinsic(_ReturnAddress) -#endif /* __GNUC__ */ BOOL WINAPI fake_GetCursorPos(LPPOINT lpPoint) {