21 "Failed to update joystick availability: %s",
32 SDL_JoystickID *
const joysticks = SDL_GetGamepads(&
count);
35 if (!joysticks || index < 0 || index >=
count) {
67 if (!SDL_InitSubSystem(SDL_INIT_GAMEPAD)) {
68 DTTR_LOG_ERROR(
"SDL_InitSubSystem(GAMEPAD) failed: %s", SDL_GetError());
80 "Required DInput allocator unavailable: %s",
89 "56 8B 74 24 ?? 56 8B 06",
108 switch (
event->type) {
109 case SDL_EVENT_GAMEPAD_ADDED:
122 int32_t game_initialized = 0;
128 "Failed to read game input init state: %s",
140 case SDL_EVENT_GAMEPAD_REMOVED:
DTTR_Graphics_COM_Direct3DDevice7 void DWORD flags DWORD count
void void DWORD HANDLE event
DTTR_Graphics_COM_DirectDrawSurface7 DWORD flags void NULL
DTTR_Result DTTR_Core_PatchGroupRelease(DTTR_Core_PatchGroup **group)
#define DTTR_ARRAY_COUNT(array_)
struct DTTR_Core_PatchGroup DTTR_Core_PatchGroup
#define DTTR_LOG_DEBUG(...)
#define DTTR_LOG_WARN(...)
#define DTTR_LOG_INFO(...)
#define DTTR_LOG_ERROR(...)
union SDL_Event SDL_Event
DTTR_PCDOGS_API const struct dttr_pcdogs_function_accessor_Mem_MallocCRT *const DTTR_PCDOGS_F_Mem_MallocCRT
Accessor object for Mem_MallocCRT.
DTTR_PCDOGS_API const struct DTTR_PCDOGS_D_Window_ProcessGameProc_Initialized_type *const DTTR_PCDOGS_D_Window_ProcessGameProc_Initialized
DTTR_PCDOGS_API const struct DTTR_PCDOGS_D_Video_PlayMovieLoop_GetAsyncKeyStateThunk_type *const DTTR_PCDOGS_D_Video_PlayMovieLoop_GetAsyncKeyStateThunk
#define DTTR_PCDOGS_PATCH_SPEC_AOB_REL32_JMP(required_, aob_, offset_, detour_)
DTTR_PCDOGS_API const struct DTTR_PCDOGS_D_Input_GetPressedButton_JoystickAvailable_type *const DTTR_PCDOGS_D_Input_GetPressedButton_JoystickAvailable
bool DTTR_ResultOK(DTTR_Result result)
SHORT dttr_inputs_hook_get_async_key_state_callback(int vkey)
static const char * dttr_sidecar_result_detail(DTTR_Result result)
static bool dttr_sidecar_install_pcdogs_patch_group(const DTTR_Mods_Context *ctx, const char *label, const DTTR_PCDOGS_T_Patch_Spec *patches, size_t patch_count, DTTR_Core_PatchGroup **group)