gbe_fork/game_overlay_renderer_lib/game_overlay_renderer_lib.h

71 lines
3.0 KiB
C
Raw Permalink Normal View History

// this library is sometimes needed because some apps (like appid 410900) will check
// for its existence inside their memory space during runtime,
// otherwise they'll trigger custom nagging stuff
// notice how functions return a boolean result as uint32 not bool
// the return value is placed inside the entire 'eax' register, not just 'al'
// you have to disassem both 32-bit and 64-bit libraries to see this nonsense
// ex: 32-bit ValveIsScreenshotsHooked(): mov al, byte ptr ds:[0x7AF62DA1]
// 64-bit ValveIsScreenshotsHooked(): movzx eax, byte ptr ds:[0x00007FF8938F235D]
#ifndef __GAME_OVERLAY_RENDERER_LIB_H__
#define __GAME_OVERLAY_RENDERER_LIB_H__
#include "dll/common_includes.h"
S_API_EXPORT steam_bool S_CALLTYPE BOverlayNeedsPresent();
S_API_EXPORT steam_bool S_CALLTYPE IsOverlayEnabled();
S_API_EXPORT void S_CALLTYPE OverlayHookD3D3(void *param_1, void *param_2);
S_API_EXPORT void S_CALLTYPE SetNotificationInset(int32 param_1, int32 param_2);
S_API_EXPORT void S_CALLTYPE SetNotificationPosition(ENotificationPosition param_1);
S_API_EXPORT steam_bool S_CALLTYPE SteamOverlayIsUsingGamepad();
S_API_EXPORT steam_bool S_CALLTYPE SteamOverlayIsUsingKeyboard();
S_API_EXPORT void S_CALLTYPE ValveHookScreenshots(bool param_1);
S_API_EXPORT steam_bool S_CALLTYPE ValveIsScreenshotsHooked();
// only available for 32-bit lib on Windows
// the function takes 2 arguments, but they're expected to be at [esp] & [esp+4]
// notice how the top of the stack is not the return address, but param 1
// this function might be designed to be invoked via a jmp instruction,
// at the end it does this:
// popad // pop all 8 general purpose registers
// popfd // pop flags register
// ret // regular return
// notice how it eventually deallocates 8+1 registers (4 bytes * 9),
// meaning that (4 bytes * 2 input params) + (4 bytes * 9) are deallocated from the stack
// note: this is not marked S_API_EXPORT, because later we'll use a linker pragma
// to both export this function, and prevent __stdcall name mangling
#if defined(__WINDOWS_32__)
void __stdcall VirtualFreeWrapper(
void *param_1, void *param_2,
void *stack_cleanup_1, void *stack_cleanup_2, void *stack_cleanup_3, void *stack_cleanup_4, void *stack_cleanup_5,
void *stack_cleanup_6, void *stack_cleanup_7, void *stack_cleanup_8, void *stack_cleanup_9
);
#endif // __WINDOWS_32__
S_API_EXPORT void S_CALLTYPE VulkanSteamOverlayGetScaleFactors(float *param_1, float *param_2);
S_API_EXPORT void S_CALLTYPE VulkanSteamOverlayPresent(
void *param_1, int32 param_2, int32 param_3, void *param_4, void * param_5,
void *param_6, void *param_7, void *param_8, void *param_9, void *param_10
);
S_API_EXPORT void S_CALLTYPE VulkanSteamOverlayProcessCapturedFrame(
bool param_1, int32 param_2, int32 param_3, int32 param_4, void *param_5, void *param_6, int32 param_7,
int32 param_8, int32 param_9, int32 param_10, int32 param_11, int16 param_12, int16 param_13, int16 param_14
);
#endif // __GAME_OVERLAY_RENDERER_LIB_H__