sdl2-compat: Updated for first batch of function renaming.

From a1e0bfdb712b08052ab1b504a13910a885d3a0d8 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Thu, 29 Dec 2022 03:11:26 -0500
Subject: [PATCH] Updated for first batch of function renaming.

This is already out of sync with SDL3, but it puts the bulk of the
work in place to do this more quickly for any pending renames.
---
 src/dynapi/SDL_dynapi.c    |    7 +-
 src/sdl2_compat.c          |   28 +-
 src/sdl3_include_wrapper.h | 4732 ++++++++++++++++++------------------
 src/sdl3_syms.h            |  385 +--
 4 files changed, 2564 insertions(+), 2588 deletions(-)

diff --git a/src/dynapi/SDL_dynapi.c b/src/dynapi/SDL_dynapi.c
index 156c991..1758547 100644
--- a/src/dynapi/SDL_dynapi.c
+++ b/src/dynapi/SDL_dynapi.c
@@ -27,8 +27,13 @@
 
 #define SDL_DYNAMIC_API_ENVVAR "SDL_DYNAMIC_API"
 
-/* sdl2-compat: this type was removed from SDL3, but we need it for SDL2 APIs exported here. */
+/* sdl2-compat: this types were removed from SDL3, but we need them for SDL2 APIs exported here. */
 typedef Sint64 SDL_GestureID;
+typedef SDL_Gamepad SDL_GameController;  /* since they're opaque types, for simplicity we just typedef it here and use the old types in sdl3_syms.h */
+typedef SDL_GamepadAxis SDL_GameControllerAxis;
+typedef SDL_GamepadBinding SDL_GameControllerButtonBind;
+typedef SDL_GamepadButton SDL_GameControllerButton;
+typedef SDL_GamepadType SDL_GameControllerType;
 
 
 #if defined(__OS2__)
diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index 224d93d..4804bbe 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -99,6 +99,12 @@
 extern "C" {
 #endif
 
+typedef SDL_Gamepad SDL_GameController;  /* since they're opaque types, for simplicity we just typedef it here and use the old types in sdl3_syms.h */
+typedef SDL_GamepadAxis SDL_GameControllerAxis;
+typedef SDL_GamepadBinding SDL_GameControllerButtonBind;
+typedef SDL_GamepadButton SDL_GameControllerButton;
+typedef SDL_GamepadType SDL_GameControllerType;
+
 typedef Sint64 SDL_GestureID;
 
 #define SDL3_SYM(rc,fn,params,args,ret) \
@@ -111,6 +117,11 @@ typedef Sint64 SDL_GestureID;
     DECLSPEC rc SDLCALL SDL_##fn params { ret SDL3_##fn args; }
 #include "sdl3_syms.h"
 
+/* Things that were renamed and _should_ be binary compatible pass right through with the correct names... */
+#define SDL3_SYM_RENAMED(rc,oldfn,newfn,params,args,ret) \
+    DECLSPEC rc SDLCALL SDL_##oldfn params { ret SDL3_##newfn args; }
+#include "sdl3_syms.h"
+
 
 /* these are macros (etc) in the SDL headers, so make our own. */
 #define SDL3_OutOfMemory() SDL3_Error(SDL_ENOMEM)
@@ -1842,7 +1853,7 @@ SDL_GameControllerAddMappingsFromRW(SDL2_RWops *rwops2, int freerw)
     int retval = -1;
     SDL_RWops *rwops3 = RWops2to3(rwops2);
     if (rwops3) {
-        retval = SDL3_GameControllerAddMappingsFromRW(rwops3, freerw);
+        retval = SDL3_AddGamepadMappingsFromRW(rwops3, freerw);
         if (!freerw) {
             SDL3_FreeRW(rwops3);  /* don't close it because that'll close the SDL2_RWops. */
         }
@@ -1953,8 +1964,7 @@ SDL_ConvertSurfaceFormat(SDL_Surface * src, Uint32 pixel_format, Uint32 flags)
 DECLSPEC SDL_Surface * SDLCALL
 SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask)
 {
-    return SDL3_CreateSurface(width, height,
-            SDL3_MasksToPixelFormatEnum(depth, Rmask, Gmask, Bmask, Amask));
+    return SDL3_CreateSurface(width, height, SDL3_GetPixelFormatEnumForMasks(depth, Rmask, Gmask, Bmask, Amask));
 }
 
 DECLSPEC SDL_Surface * SDLCALL
@@ -1966,8 +1976,7 @@ SDL_CreateRGBSurfaceWithFormat(Uint32 flags, int width, int height, int depth, U
 DECLSPEC SDL_Surface * SDLCALL
 SDL_CreateRGBSurfaceFrom(void *pixels, int width, int height, int depth, int pitch, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask)
 {
-    return SDL3_CreateSurfaceFrom(pixels, width, height, pitch,
-            SDL3_MasksToPixelFormatEnum(depth, Rmask, Gmask, Bmask, Amask));
+    return SDL3_CreateSurfaceFrom(pixels, width, height, pitch, SDL3_GetPixelFormatEnumForMasks(depth, Rmask, Gmask, Bmask, Amask));
 }
 
 DECLSPEC SDL_Surface * SDLCALL
@@ -2001,7 +2010,7 @@ SDL_GetWindowWMInfo(SDL_Window *window, SDL_SysWMinfo *wminfo)
 DECLSPEC int SDLCALL
 SDL_JoystickNumBalls(SDL_Joystick *joystick)
 {
-    if (SDL3_JoystickNumAxes(joystick) == -1) {
+    if (SDL3_GetNumJoystickAxes(joystick) == -1) {
         return -1;  /* just to call JOYSTICK_CHECK_MAGIC on `joystick`. */
     }
     return 0;
@@ -2011,7 +2020,7 @@ SDL_JoystickNumBalls(SDL_Joystick *joystick)
 DECLSPEC int SDLCALL
 SDL_JoystickGetBall(SDL_Joystick *joystick, int ball, int *dx, int *dy)
 {
-    if (SDL3_JoystickNumAxes(joystick) == -1) {
+    if (SDL3_GetNumJoystickAxes(joystick) == -1) {
         return -1;  /* just to call JOYSTICK_CHECK_MAGIC on `joystick`. */
     }
     return SDL3_SetError("Joystick only has 0 balls");
@@ -2873,10 +2882,11 @@ SDL_Has3DNow(void)
     return SDL_FALSE;
 }
 
+/* This was always a basic wrapper over SDL_free; SDL3 removed it and says use SDL_free directly. */
 DECLSPEC void SDLCALL
-SDL_FreeWAV(Uint8 * audio_buf)
+SDL_FreeWAV(Uint8 *audio_buf)
 {
-    SDL_free(audio_buf);
+    SDL3_free(audio_buf);
 }
 
 #ifdef __cplusplus
diff --git a/src/sdl3_include_wrapper.h b/src/sdl3_include_wrapper.h
index e9d8b6d..f70ff2f 100644
--- a/src/sdl3_include_wrapper.h
+++ b/src/sdl3_include_wrapper.h
@@ -28,74 +28,13 @@
 #ifndef INCL_SDL3_INCLUDE_WRAPPER_H
 #define INCL_SDL3_INCLUDE_WRAPPER_H
 
-#undef SDL_ENABLE_OLD_NAMES
-#ifndef SDL_DISABLE_OLD_NAMES
-#define SDL_DISABLE_OLD_NAMES
-#endif
-
-#define SDL_GetVersion IGNORE_THIS_VERSION_OF_SDL_GetVersion
-#define SDL_GetRevision IGNORE_THIS_VERSION_OF_SDL_GetRevision
-#define SDL_GetRevisionNumber IGNORE_THIS_VERSION_OF_SDL_GetRevisionNumber
-#define SDL_RecordGesture IGNORE_THIS_VERSION_OF_SDL_RecordGesture
-#define SDL_SaveAllDollarTemplates IGNORE_THIS_VERSION_OF_SDL_SaveAllDollarTemplates
-#define SDL_SaveDollarTemplate IGNORE_THIS_VERSION_OF_SDL_SaveDollarTemplate
-#define SDL_LoadDollarTemplates IGNORE_THIS_VERSION_OF_SDL_LoadDollarTemplates
-#define SDL_CreateRGBSurface IGNORE_THIS_VERSION_OF_SDL_CreateRGBSurface
-#define SDL_CreateRGBSurfaceWithFormat IGNORE_THIS_VERSION_OF_SDL_CreateRGBSurfaceWithFormat
-#define SDL_CreateRGBSurfaceFrom IGNORE_THIS_VERSION_OF_SDL_CreateRGBSurfaceFrom
-#define SDL_CreateRGBSurfaceWithFormatFrom IGNORE_THIS_VERSION_OF_SDL_CreateRGBSurfaceWithFormatFrom
-#define SDL_FreeSurface IGNORE_THIS_VERSION_OF_SDL_FreeSurface
-#define SDL_SetSurfacePalette IGNORE_THIS_VERSION_OF_SDL_SetSurfacePalette
-#define SDL_LockSurface IGNORE_THIS_VERSION_OF_SDL_LockSurface
-#define SDL_UnlockSurface IGNORE_THIS_VERSION_OF_SDL_UnlockSurface
-#define SDL_LoadBMP_RW IGNORE_THIS_VERSION_OF_SDL_LoadBMP_RW
-#define SDL_SaveBMP_RW IGNORE_THIS_VERSION_OF_SDL_SaveBMP_RW
-#define SDL_SetSurfaceRLE IGNORE_THIS_VERSION_OF_SDL_SetSurfaceRLE
-#define SDL_HasSurfaceRLE IGNORE_THIS_VERSION_OF_SDL_HasSurfaceRLE
-#define SDL_SetColorKey IGNORE_THIS_VERSION_OF_SDL_SetColorKey
-#define SDL_HasColorKey IGNORE_THIS_VERSION_OF_SDL_HasColorKey
-#define SDL_GetColorKey IGNORE_THIS_VERSION_OF_SDL_GetColorKey
-#define SDL_SetSurfaceColorMod IGNORE_THIS_VERSION_OF_SDL_SetSurfaceColorMod
-#define SDL_GetSurfaceColorMod IGNORE_THIS_VERSION_OF_SDL_GetSurfaceColorMod
-#define SDL_SetSurfaceAlphaMod IGNORE_THIS_VERSION_OF_SDL_SetSurfaceAlphaMod
-#define SDL_GetSurfaceAlphaMod IGNORE_THIS_VERSION_OF_SDL_GetSurfaceAlphaMod
-#define SDL_SetSurfaceBlendMode IGNORE_THIS_VERSION_OF_SDL_SetSurfaceBlendMode
-#define SDL_GetSurfaceBlendMode IGNORE_THIS_VERSION_OF_SDL_GetSurfaceBlendMode
-#define SDL_SetClipRect IGNORE_THIS_VERSION_OF_SDL_SetClipRect
-#define SDL_GetClipRect IGNORE_THIS_VERSION_OF_SDL_GetClipRect
-#define SDL_DuplicateSurface IGNORE_THIS_VERSION_OF_SDL_DuplicateSurface
-#define SDL_ConvertSurface IGNORE_THIS_VERSION_OF_SDL_ConvertSurface
-#define SDL_ConvertSurfaceFormat IGNORE_THIS_VERSION_OF_SDL_ConvertSurfaceFormat
-#define SDL_ConvertPixels IGNORE_THIS_VERSION_OF_SDL_ConvertPixels
-#define SDL_PremultiplyAlpha IGNORE_THIS_VERSION_OF_SDL_PremultiplyAlpha
-#define SDL_FillRect IGNORE_THIS_VERSION_OF_SDL_FillRect
-#define SDL_FillRects IGNORE_THIS_VERSION_OF_SDL_FillRects
-#define SDL_UpperBlit IGNORE_THIS_VERSION_OF_SDL_UpperBlit
-#define SDL_LowerBlit IGNORE_THIS_VERSION_OF_SDL_LowerBlit
-#define SDL_SoftStretch IGNORE_THIS_VERSION_OF_SDL_SoftStretch
-#define SDL_SoftStretchLinear IGNORE_THIS_VERSION_OF_SDL_SoftStretchLinear
-#define SDL_UpperBlitScaled IGNORE_THIS_VERSION_OF_SDL_UpperBlitScaled
-#define SDL_LowerBlitScaled IGNORE_THIS_VERSION_OF_SDL_LowerBlitScaled
-#define SDL_SetYUVConversionMode IGNORE_THIS_VERSION_OF_SDL_SetYUVConversionMode
-#define SDL_GetYUVConversionMode IGNORE_THIS_VERSION_OF_SDL_GetYUVConversionMode
-#define SDL_GetYUVConversionModeForResolution IGNORE_THIS_VERSION_OF_SDL_GetYUVConversionModeForResolution
-#define SDL_GetPixelFormatName IGNORE_THIS_VERSION_OF_SDL_GetPixelFormatName
-#define SDL_PixelFormatEnumToMasks IGNORE_THIS_VERSION_OF_SDL_PixelFormatEnumToMasks
-#define SDL_MasksToPixelFormatEnum IGNORE_THIS_VERSION_OF_SDL_MasksToPixelFormatEnum
-#define SDL_AllocFormat IGNORE_THIS_VERSION_OF_SDL_AllocFormat
-#define SDL_FreeFormat IGNORE_THIS_VERSION_OF_SDL_FreeFormat
-#define SDL_AllocPalette IGNORE_THIS_VERSION_OF_SDL_AllocPalette
-#define SDL_SetPixelFormatPalette IGNORE_THIS_VERSION_OF_SDL_SetPixelFormatPalette
-#define SDL_SetPaletteColors IGNORE_THIS_VERSION_OF_SDL_SetPaletteColors
-#define SDL_FreePalette IGNORE_THIS_VERSION_OF_SDL_FreePalette
-#define SDL_MapRGB IGNORE_THIS_VERSION_OF_SDL_MapRGB
-#define SDL_MapRGBA IGNORE_THIS_VERSION_OF_SDL_MapRGBA
-#define SDL_GetRGB IGNORE_THIS_VERSION_OF_SDL_GetRGB
-#define SDL_GetRGBA IGNORE_THIS_VERSION_OF_SDL_GetRGBA
+#define SDL_Init IGNORE_THIS_VERSION_OF_SDL_Init
+#define SDL_InitSubSystem IGNORE_THIS_VERSION_OF_SDL_InitSubSystem
+#define SDL_QuitSubSystem IGNORE_THIS_VERSION_OF_SDL_QuitSubSystem
+#define SDL_WasInit IGNORE_THIS_VERSION_OF_SDL_WasInit
+#define SDL_Quit IGNORE_THIS_VERSION_OF_SDL_Quit
 #define SDL_GetNumAudioDrivers IGNORE_THIS_VERSION_OF_SDL_GetNumAudioDrivers
 #define SDL_GetAudioDriver IGNORE_THIS_VERSION_OF_SDL_GetAudioDriver
-#define SDL_AudioInit IGNORE_THIS_VERSION_OF_SDL_AudioInit
-#define SDL_AudioQuit IGNORE_THIS_VERSION_OF_SDL_AudioQuit
 #define SDL_GetCurrentAudioDriver IGNORE_THIS_VERSION_OF_SDL_GetCurrentAudioDriver
 #define SDL_OpenAudio IGNORE_THIS_VERSION_OF_SDL_OpenAudio
 #define SDL_GetNumAudioDevices IGNORE_THIS_VERSION_OF_SDL_GetNumAudioDevices
@@ -108,16 +47,15 @@
 #define SDL_PauseAudio IGNORE_THIS_VERSION_OF_SDL_PauseAudio
 #define SDL_PauseAudioDevice IGNORE_THIS_VERSION_OF_SDL_PauseAudioDevice
 #define SDL_LoadWAV_RW IGNORE_THIS_VERSION_OF_SDL_LoadWAV_RW
-#define SDL_FreeWAV IGNORE_THIS_VERSION_OF_SDL_FreeWAV
 #define SDL_BuildAudioCVT IGNORE_THIS_VERSION_OF_SDL_BuildAudioCVT
 #define SDL_ConvertAudio IGNORE_THIS_VERSION_OF_SDL_ConvertAudio
-#define SDL_NewAudioStream IGNORE_THIS_VERSION_OF_SDL_NewAudioStream
-#define SDL_AudioStreamPut IGNORE_THIS_VERSION_OF_SDL_AudioStreamPut
-#define SDL_AudioStreamGet IGNORE_THIS_VERSION_OF_SDL_AudioStreamGet
-#define SDL_AudioStreamAvailable IGNORE_THIS_VERSION_OF_SDL_AudioStreamAvailable
-#define SDL_AudioStreamFlush IGNORE_THIS_VERSION_OF_SDL_AudioStreamFlush
-#define SDL_AudioStreamClear IGNORE_THIS_VERSION_OF_SDL_AudioStreamClear
-#define SDL_FreeAudioStream IGNORE_THIS_VERSION_OF_SDL_FreeAudioStream
+#define SDL_CreateAudioStream IGNORE_THIS_VERSION_OF_SDL_CreateAudioStream
+#define SDL_PutAudioStreamData IGNORE_THIS_VERSION_OF_SDL_PutAudioStreamData
+#define SDL_GetAudioStreamData IGNORE_THIS_VERSION_OF_SDL_GetAudioStreamData
+#define SDL_GetAudioStreamAvailable IGNORE_THIS_VERSION_OF_SDL_GetAudioStreamAvailable
+#define SDL_FlushAudioStream IGNORE_THIS_VERSION_OF_SDL_FlushAudioStream
+#define SDL_ClearAudioStream IGNORE_THIS_VERSION_OF_SDL_ClearAudioStream
+#define SDL_DestroyAudioStream IGNORE_THIS_VERSION_OF_SDL_DestroyAudioStream
 #define SDL_MixAudio IGNORE_THIS_VERSION_OF_SDL_MixAudio
 #define SDL_MixAudioFormat IGNORE_THIS_VERSION_OF_SDL_MixAudioFormat
 #define SDL_QueueAudio IGNORE_THIS_VERSION_OF_SDL_QueueAudio
@@ -130,15 +68,307 @@
 #define SDL_UnlockAudioDevice IGNORE_THIS_VERSION_OF_SDL_UnlockAudioDevice
 #define SDL_CloseAudio IGNORE_THIS_VERSION_OF_SDL_CloseAudio
 #define SDL_CloseAudioDevice IGNORE_THIS_VERSION_OF_SDL_CloseAudioDevice
+#define SDL_hid_init IGNORE_THIS_VERSION_OF_SDL_hid_init
+#define SDL_hid_exit IGNORE_THIS_VERSION_OF_SDL_hid_exit
+#define SDL_hid_device_change_count IGNORE_THIS_VERSION_OF_SDL_hid_device_change_count
+#define SDL_hid_enumerate IGNORE_THIS_VERSION_OF_SDL_hid_enumerate
+#define SDL_hid_free_enumeration IGNORE_THIS_VERSION_OF_SDL_hid_free_enumeration
+#define SDL_hid_open IGNORE_THIS_VERSION_OF_SDL_hid_open
+#define SDL_hid_open_path IGNORE_THIS_VERSION_OF_SDL_hid_open_path
+#define SDL_hid_write IGNORE_THIS_VERSION_OF_SDL_hid_write
+#define SDL_hid_read_timeout IGNORE_THIS_VERSION_OF_SDL_hid_read_timeout
+#define SDL_hid_read IGNORE_THIS_VERSION_OF_SDL_hid_read
+#define SDL_hid_set_nonblocking IGNORE_THIS_VERSION_OF_SDL_hid_set_nonblocking
+#define SDL_hid_send_feature_report IGNORE_THIS_VERSION_OF_SDL_hid_send_feature_report
+#define SDL_hid_get_feature_report IGNORE_THIS_VERSION_OF_SDL_hid_get_feature_report
+#define SDL_hid_close IGNORE_THIS_VERSION_OF_SDL_hid_close
+#define SDL_hid_get_manufacturer_string IGNORE_THIS_VERSION_OF_SDL_hid_get_manufacturer_string
+#define SDL_hid_get_product_string IGNORE_THIS_VERSION_OF_SDL_hid_get_product_string
+#define SDL_hid_get_serial_number_string IGNORE_THIS_VERSION_OF_SDL_hid_get_serial_number_string
+#define SDL_hid_get_indexed_string IGNORE_THIS_VERSION_OF_SDL_hid_get_indexed_string
+#define SDL_hid_ble_scan IGNORE_THIS_VERSION_OF_SDL_hid_ble_scan
+#define SDL_GetNumTouchDevices IGNORE_THIS_VERSION_OF_SDL_GetNumTouchDevices
+#define SDL_GetTouchDevice IGNORE_THIS_VERSION_OF_SDL_GetTouchDevice
+#define SDL_GetTouchName IGNORE_THIS_VERSION_OF_SDL_GetTouchName
+#define SDL_GetTouchDeviceType IGNORE_THIS_VERSION_OF_SDL_GetTouchDeviceType
+#define SDL_GetNumTouchFingers IGNORE_THIS_VERSION_OF_SDL_GetNumTouchFingers
+#define SDL_GetTouchFinger IGNORE_THIS_VERSION_OF_SDL_GetTouchFinger
+#define SDL_LockSensors IGNORE_THIS_VERSION_OF_SDL_LockSensors
+#define SDL_UnlockSensors IGNORE_THIS_VERSION_OF_SDL_UnlockSensors
+#define SDL_GetNumSensors IGNORE_THIS_VERSION_OF_SDL_GetNumSensors
+#define SDL_GetSensorDeviceName IGNORE_THIS_VERSION_OF_SDL_GetSensorDeviceName
+#define SDL_GetSensorDeviceType IGNORE_THIS_VERSION_OF_SDL_GetSensorDeviceType
+#define SDL_GetSensorDeviceNonPortableType IGNORE_THIS_VERSION_OF_SDL_GetSensorDeviceNonPortableType
+#define SDL_GetSensorDeviceInstanceID IGNORE_THIS_VERSION_OF_SDL_GetSensorDeviceInstanceID
+#define SDL_OpenSensor IGNORE_THIS_VERSION_OF_SDL_OpenSensor
+#define SDL_GetSensorFromInstanceID IGNORE_THIS_VERSION_OF_SDL_GetSensorFromInstanceID
+#define SDL_GetSensorName IGNORE_THIS_VERSION_OF_SDL_GetSensorName
+#define SDL_GetSensorType IGNORE_THIS_VERSION_OF_SDL_GetSensorType
+#define SDL_GetSensorNonPortableType IGNORE_THIS_VERSION_OF_SDL_GetSensorNonPortableType
+#define SDL_GetSensorInstanceID IGNORE_THIS_VERSION_OF_SDL_GetSensorInstanceID
+#define SDL_GetSensorData IGNORE_THIS_VERSION_OF_SDL_GetSensorData
+#define SDL_CloseSensor IGNORE_THIS_VERSION_OF_SDL_CloseSensor
+#define SDL_UpdateSensors IGNORE_THIS_VERSION_OF_SDL_UpdateSensors
+#define SDL_AddGamepadMapping IGNORE_THIS_VERSION_OF_SDL_AddGamepadMapping
+#define SDL_AddGamepadMappingsFromRW IGNORE_THIS_VERSION_OF_SDL_AddGamepadMappingsFromRW
+#define SDL_GetNumGamepadMappings IGNORE_THIS_VERSION_OF_SDL_GetNumGamepadMappings
+#define SDL_GetGamepadMappingForIndex IGNORE_THIS_VERSION_OF_SDL_GetGamepadMappingForIndex
+#define SDL_GetGamepadMappingForGUID IGNORE_THIS_VERSION_OF_SDL_GetGamepadMappingForGUID
+#define SDL_GetGamepadMapping IGNORE_THIS_VERSION_OF_SDL_GetGamepadMapping
+#define SDL_IsGamepad IGNORE_THIS_VERSION_OF_SDL_IsGamepad
+#define SDL_GetGamepadNameForIndex IGNORE_THIS_VERSION_OF_SDL_GetGamepadNameForIndex
+#define SDL_GetGamepadPathForIndex IGNORE_THIS_VERSION_OF_SDL_GetGamepadPathForIndex
+#define SDL_GetGamepadTypeForIndex IGNORE_THIS_VERSION_OF_SDL_GetGamepadTypeForIndex
+#define SDL_GetGamepadMappingForDeviceIndex IGNORE_THIS_VERSION_OF_SDL_GetGamepadMappingForDeviceIndex
+#define SDL_OpenGamepad IGNORE_THIS_VERSION_OF_SDL_OpenGamepad
+#define SDL_GetGamepadFromInstanceID IGNORE_THIS_VERSION_OF_SDL_GetGamepadFromInstanceID
+#define SDL_GetGamepadFromPlayerIndex IGNORE_THIS_VERSION_OF_SDL_GetGamepadFromPlayerIndex
+#define SDL_GetGamepadName IGNORE_THIS_VERSION_OF_SDL_GetGamepadName
+#define SDL_GetGamepadPath IGNORE_THIS_VERSION_OF_SDL_GetGamepadPath
+#define SDL_GetGamepadType IGNORE_THIS_VERSION_OF_SDL_GetGamepadType
+#define SDL_GetGamepadPlayerIndex IGNORE_THIS_VERSION_OF_SDL_GetGamepadPlayerIndex
+#define SDL_SetGamepadPlayerIndex IGNORE_THIS_VERSION_OF_SDL_SetGamepadPlayerIndex
+#define SDL_GetGamepadVendor IGNORE_THIS_VERSION_OF_SDL_GetGamepadVendor
+#define SDL_GetGamepadProduct IGNORE_THIS_VERSION_OF_SDL_GetGamepadProduct
+#define SDL_GetGamepadProductVersion IGNORE_THIS_VERSION_OF_SDL_GetGamepadProductVersion
+#define SDL_GetGamepadFirmwareVersion IGNORE_THIS_VERSION_OF_SDL_GetGamepadFirmwareVersion
+#define SDL_GetGamepadSerial IGNORE_THIS_VERSION_OF_SDL_GetGamepadSerial
+#define SDL_IsGamepadConnected IGNORE_THIS_VERSION_OF_SDL_IsGamepadConnected
+#define SDL_GetGamepadJoystick IGNORE_THIS_VERSION_OF_SDL_GetGamepadJoystick
+#define SDL_GetGamepadEventState IGNORE_THIS_VERSION_OF_SDL_GetGamepadEventState
+#define SDL_UpdateGamepads IGNORE_THIS_VERSION_OF_SDL_UpdateGamepads
+#define SDL_GetGamepadAxisFromString IGNORE_THIS_VERSION_OF_SDL_GetGamepadAxisFromString
+#define SDL_GetGamepadStringForAxis IGNORE_THIS_VERSION_OF_SDL_GetGamepadStringForAxis
+#define SDL_GetGamepadBindForAxis IGNORE_THIS_VERSION_OF_SDL_GetGamepadBindForAxis
+#define SDL_GamepadHasAxis IGNORE_THIS_VERSION_OF_SDL_GamepadHasAxis
+#define SDL_GetGamepadAxis IGNORE_THIS_VERSION_OF_SDL_GetGamepadAxis
+#define SDL_GetGamepadButtonFromString IGNORE_THIS_VERSION_OF_SDL_GetGamepadButtonFromString
+#define SDL_GetGamepadStringForButton IGNORE_THIS_VERSION_OF_SDL_GetGamepadStringForButton
+#define SDL_GetGamepadBindForButton IGNORE_THIS_VERSION_OF_SDL_GetGamepadBindForButton
+#define SDL_GamepadHasButton IGNORE_THIS_VERSION_OF_SDL_GamepadHasButton
+#define SDL_GetGamepadButton IGNORE_THIS_VERSION_OF_SDL_GetGamepadButton
+#define SDL_GetGamepadNumTouchpads IGNORE_THIS_VERSION_OF_SDL_GetGamepadNumTouchpads
+#define SDL_GetGamepadNumTouchpadFingers IGNORE_THIS_VERSION_OF_SDL_GetGamepadNumTouchpadFingers
+#define SDL_GetGamepadTouchpadFinger IGNORE_THIS_VERSION_OF_SDL_GetGamepadTouchpadFinger
+#define SDL_GamepadHasSensor IGNORE_THIS_VERSION_OF_SDL_GamepadHasSensor
+#define SDL_SetGamepadSensorEnabled IGNORE_THIS_VERSION_OF_SDL_SetGamepadSensorEnabled
+#define SDL_IsGamepadSensorEnabled IGNORE_THIS_VERSION_OF_SDL_IsGamepadSensorEnabled
+#define SDL_GetGamepadSensorDataRate IGNORE_THIS_VERSION_OF_SDL_GetGamepadSensorDataRate
+#define SDL_GetGamepadSensorData IGNORE_THIS_VERSION_OF_SDL_GetGamepadSensorData
+#define SDL_RumbleGamepad IGNORE_THIS_VERSION_OF_SDL_RumbleGamepad
+#define SDL_RumbleGamepadTriggers IGNORE_THIS_VERSION_OF_SDL_RumbleGamepadTriggers
+#define SDL_GamepadHasLED IGNORE_THIS_VERSION_OF_SDL_GamepadHasLED
+#define SDL_GamepadHasRumble IGNORE_THIS_VERSION_OF_SDL_GamepadHasRumble
+#define SDL_GamepadHasRumbleTriggers IGNORE_THIS_VERSION_OF_SDL_GamepadHasRumbleTriggers
+#define SDL_SetGamepadLED IGNORE_THIS_VERSION_OF_SDL_SetGamepadLED
+#define SDL_SendGamepadEffect IGNORE_THIS_VERSION_OF_SDL_SendGamepadEffect
+#define SDL_CloseGamepad IGNORE_THIS_VERSION_OF_SDL_CloseGamepad
+#define SDL_GetGamepadAppleSFSymbolsNameForButton IGNORE_THIS_VERSION_OF_SDL_GetGamepadAppleSFSymbolsNameForButton
+#define SDL_GetGamepadAppleSFSymbolsNameForAxis IGNORE_THIS_VERSION_OF_SDL_GetGamepadAppleSFSymbolsNameForAxis
 #define SDL_GUIDToString IGNORE_THIS_VERSION_OF_SDL_GUIDToString
 #define SDL_GUIDFromString IGNORE_THIS_VERSION_OF_SDL_GUIDFromString
+#define SDL_ReportAssertion IGNORE_THIS_VERSION_OF_SDL_ReportAssertion
+#define SDL_SetAssertionHandler IGNORE_THIS_VERSION_OF_SDL_SetAssertionHandler
+#define SDL_GetDefaultAssertionHandler IGNORE_THIS_VERSION_OF_SDL_GetDefaultAssertionHandler
+#define SDL_GetAssertionHandler IGNORE_THIS_VERSION_OF_SDL_GetAssertionHandler
+#define SDL_GetAssertionReport IGNORE_THIS_VERSION_OF_SDL_GetAssertionReport
+#define SDL_ResetAssertionReport IGNORE_THIS_VERSION_OF_SDL_ResetAssertionReport
+#define SDL_Metal_CreateView IGNORE_THIS_VERSION_OF_SDL_Metal_CreateView
+#define SDL_Metal_DestroyView IGNORE_THIS_VERSION_OF_SDL_Metal_DestroyView
+#define SDL_Metal_GetLayer IGNORE_THIS_VERSION_OF_SDL_Metal_GetLayer
+#define SDL_Metal_GetDrawableSize IGNORE_THIS_VERSION_OF_SDL_Metal_GetDrawableSize
+#define SDL_CreateMutex IGNORE_THIS_VERSION_OF_SDL_CreateMutex
+#define SDL_LockMutex IGNORE_THIS_VERSION_OF_SDL_LockMutex
+#define SDL_TryLockMutex IGNORE_THIS_VERSION_OF_SDL_TryLockMutex
+#define SDL_UnlockMutex IGNORE_THIS_VERSION_OF_SDL_UnlockMutex
+#define SDL_DestroyMutex IGNORE_THIS_VERSION_OF_SDL_DestroyMutex
+#define SDL_CreateSemaphore IGNORE_THIS_VERSION_OF_SDL_CreateSemaphore
+#define SDL_DestroySemaphore IGNORE_THIS_VERSION_OF_SDL_DestroySemaphore
+#define SDL_SemWait IGNORE_THIS_VERSION_OF_SDL_SemWait
+#define SDL_SemTryWait IGNORE_THIS_VERSION_OF_SDL_SemTryWait
+#define SDL_SemWaitTimeout IGNORE_THIS_VERSION_OF_SDL_SemWaitTimeout
+#define SDL_SemPost IGNORE_THIS_VERSION_OF_SDL_SemPost
+#define SDL_SemValue IGNORE_THIS_VERSION_OF_SDL_SemValue
+#define SDL_CreateCond IGNORE_THIS_VERSION_OF_SDL_CreateCond
+#define SDL_DestroyCond IGNORE_THIS_VERSION_OF_SDL_DestroyCond
+#define SDL_CondSignal IGNORE_THIS_VERSION_OF_SDL_CondSignal
+#define SDL_CondBroadcast IGNORE_THIS_VERSION_OF_SDL_CondBroadcast
+#define SDL_CondWait IGNORE_THIS_VERSION_OF_SDL_CondWait
+#define SDL_CondWaitTimeout IGNORE_THIS_VERSION_OF_SDL_CondWaitTimeout
+#define SDL_PumpEvents IGNORE_THIS_VERSION_OF_SDL_PumpEvents
+#define SDL_PeepEvents IGNORE_THIS_VERSION_OF_SDL_PeepEvents
+#define SDL_HasEvent IGNORE_THIS_VERSION_OF_SDL_HasEvent
+#define SDL_HasEvents IGNORE_THIS_VERSION_OF_SDL_HasEvents
+#define SDL_FlushEvent IGNORE_THIS_VERSION_OF_SDL_FlushEvent
+#define SDL_FlushEvents IGNORE_THIS_VERSION_OF_SDL_FlushEvents
+#define SDL_PollEvent IGNORE_THIS_VERSION_OF_SDL_PollEvent
+#define SDL_WaitEvent IGNORE_THIS_VERSION_OF_SDL_WaitEvent
+#define SDL_WaitEventTimeout IGNORE_THIS_VERSION_OF_SDL_WaitEventTimeout
+#define SDL_PushEvent IGNORE_THIS_VERSION_OF_SDL_PushEvent
+#define SDL_SetEventFilter IGNORE_THIS_VERSION_OF_SDL_SetEventFilter
+#define SDL_GetEventFilter IGNORE_THIS_VERSION_OF_SDL_GetEventFilter
+#define SDL_AddEventWatch IGNORE_THIS_VERSION_OF_SDL_AddEventWatch
+#define SDL_DelEventWatch IGNORE_THIS_VERSION_OF_SDL_DelEventWatch
+#define SDL_FilterEvents IGNORE_THIS_VERSION_OF_SDL_FilterEvents
+#define SDL_EventState IGNORE_THIS_VERSION_OF_SDL_EventState
+#define SDL_GetEventState IGNORE_THIS_VERSION_OF_SDL_GetEventState
+#define SDL_RegisterEvents IGNORE_THIS_VERSION_OF_SDL_RegisterEvents
+#define SDL_ShowMessageBox IGNORE_THIS_VERSION_OF_SDL_ShowMessageBox
+#define SDL_ShowSimpleMessageBox IGNORE_THIS_VERSION_OF_SDL_ShowSimpleMessageBox
+#define SDL_SetWindowsMessageHook IGNORE_THIS_VERSION_OF_SDL_SetWindowsMessageHook
+#define SDL_Direct3D9GetAdapterIndex IGNORE_THIS_VERSION_OF_SDL_Direct3D9GetAdapterIndex
+#define SDL_RenderGetD3D9Device IGNORE_THIS_VERSION_OF_SDL_RenderGetD3D9Device
+#define SDL_RenderGetD3D11Device IGNORE_THIS_VERSION_OF_SDL_RenderGetD3D11Device
+#define SDL_RenderGetD3D12Device IGNORE_THIS_VERSION_OF_SDL_RenderGetD3D12Device
+#define SDL_DXGIGetOutputInfo IGNORE_THIS_VERSION_OF_SDL_DXGIGetOutputInfo
+#define SDL_LinuxSetThreadPriority IGNORE_THIS_VERSION_OF_SDL_LinuxSetThreadPriority
+#define SDL_LinuxSetThreadPriorityAndPolicy IGNORE_THIS_VERSION_OF_SDL_LinuxSetThreadPriorityAndPolicy
+#define SDL_iPhoneSetAnimationCallback IGNORE_THIS_VERSION_OF_SDL_iPhoneSetAnimationCallback
+#define SDL_iPhoneSetEventPump IGNORE_THIS_VERSION_OF_SDL_iPhoneSetEventPump
+#define SDL_AndroidGetJNIEnv IGNORE_THIS_VERSION_OF_SDL_AndroidGetJNIEnv
+#define SDL_AndroidGetActivity IGNORE_THIS_VERSION_OF_SDL_AndroidGetActivity
+#define SDL_GetAndroidSDKVersion IGNORE_THIS_VERSION_OF_SDL_GetAndroidSDKVersion
+#define SDL_IsAndroidTV IGNORE_THIS_VERSION_OF_SDL_IsAndroidTV
+#define SDL_IsChromebook IGNORE_THIS_VERSION_OF_SDL_IsChromebook
+#define SDL_IsDeXMode IGNORE_THIS_VERSION_OF_SDL_IsDeXMode
+#define SDL_AndroidBackButton IGNORE_THIS_VERSION_OF_SDL_AndroidBackButton
+#define SDL_AndroidGetInternalStoragePath IGNORE_THIS_VERSION_OF_SDL_AndroidGetInternalStoragePath
+#define SDL_AndroidGetExternalStorageState IGNORE_THIS_VERSION_OF_SDL_AndroidGetExternalStorageState
+#define SDL_AndroidGetExternalStoragePath IGNORE_THIS_VERSION_OF_SDL_AndroidGetExternalStoragePath
+#define SDL_AndroidRequestPermission IGNORE_THIS_VERSION_OF_SDL_AndroidRequestPermission
+#define SDL_AndroidShowToast IGNORE_THIS_VERSION_OF_SDL_AndroidShowToast
+#define SDL_AndroidSendMessage IGNORE_THIS_VERSION_OF_SDL_AndroidSendMessage
+#define SDL_WinRTGetFSPathUNICODE IGNORE_THIS_VERSION_OF_SDL_WinRTGetFSPathUNICODE
+#define SDL_WinRTGetFSPathUTF8 IGNORE_THIS_VERSION_OF_SDL_WinRTGetFSPathUTF8
+#define SDL_WinRTGetDeviceFamily IGNORE_THIS_VERSION_OF_SDL_WinRTGetDeviceFamily
+#define SDL_IsTablet IGNORE_THIS_VERSION_OF_SDL_IsTablet
+#define SDL_OnApplicationWillTerminate IGNORE_THIS_VERSION_OF_SDL_OnApplicationWillTerminate
+#define SDL_OnApplicationDidReceiveMemoryWarning IGNORE_THIS_VERSION_OF_SDL_OnApplicationDidReceiveMemoryWarning
+#define SDL_OnApplicationWillResignActive IGNORE_THIS_VERSION_OF_SDL_OnApplicationWillResignActive
+#define SDL_OnApplicationDidEnterBackground IGNORE_THIS_VERSION_OF_SDL_OnApplicationDidEnterBackground
+#define SDL_OnApplicationWillEnterForeground IGNORE_THIS_VERSION_OF_SDL_OnApplicationWillEnterForeground
+#define SDL_OnApplicationDidBecomeActive IGNORE_THIS_VERSION_OF_SDL_OnApplicationDidBecomeActive
+#define SDL_OnApplicationDidChangeStatusBarOrientation IGNORE_THIS_VERSION_OF_SDL_OnApplicationDidChangeStatusBarOrientation
+#define SDL_GDKGetTaskQueue IGNORE_THIS_VERSION_OF_SDL_GDKGetTaskQueue
+#define SDL_CreateSurface IGNORE_THIS_VERSION_OF_SDL_CreateSurface
+#define SDL_CreateSurfaceFrom IGNORE_THIS_VERSION_OF_SDL_CreateSurfaceFrom
+#define SDL_DestroySurface IGNORE_THIS_VERSION_OF_SDL_DestroySurface
+#define SDL_SetSurfacePalette IGNORE_THIS_VERSION_OF_SDL_SetSurfacePalette
+#define SDL_LockSurface IGNORE_THIS_VERSION_OF_SDL_LockSurface
+#define SDL_UnlockSurface IGNORE_THIS_VERSION_OF_SDL_UnlockSurface
+#define SDL_LoadBMP_RW IGNORE_THIS_VERSION_OF_SDL_LoadBMP_RW
+#define SDL_SaveBMP_RW IGNORE_THIS_VERSION_OF_SDL_SaveBMP_RW
+#define SDL_SetSurfaceRLE IGNORE_THIS_VERSION_OF_SDL_SetSurfaceRLE
+#define SDL_SurfaceHasRLE IGNORE_THIS_VERSION_OF_SDL_SurfaceHasRLE
+#define SDL_SetSurfaceColorKey IGNORE_THIS_VERSION_OF_SDL_SetSurfaceColorKey
+#define SDL_SurfaceHasColorKey IGNORE_THIS_VERSION_OF_SDL_SurfaceHasColorKey
+#define SDL_GetSurfaceColorKey IGNORE_THIS_VERSION_OF_SDL_GetSurfaceColorKey
+#define SDL_SetSurfaceColorMod IGNORE_THIS_VERSION_OF_SDL_SetSurfaceColorMod
+#define SDL_GetSurfaceColorMod IGNORE_THIS_VERSION_OF_SDL_GetSurfaceColorMod
+#define SDL_SetSurfaceAlphaMod IGNORE_THIS_VERSION_OF_SDL_SetSurfaceAlphaMod
+#define SDL_GetSurfaceAlphaMod IGNORE_THIS_VERSION_OF_SDL_GetSurfaceAlphaMod
+#define SDL_SetSurfaceBlendMode IGNORE_THIS_VERSION_OF_SDL_SetSurfaceBlendMode
+#define SDL_GetSurfaceBlendMode IGNORE_THIS_VERSION_OF_SDL_GetSurfaceBlendMode
+#define SDL_SetSurfaceClipRect IGNORE_THIS_VERSION_OF_SDL_SetSurfaceClipRect
+#define SDL_GetSurfaceClipRect IGNORE_THIS_VERSION_OF_SDL_GetSurfaceClipRect
+#define SDL_DuplicateSurface IGNORE_THIS_VERSION_OF_SDL_DuplicateSurface
+#define SDL_ConvertSurface IGNORE_THIS_VERSION_OF_SDL_ConvertSurface
+#define SDL_ConvertSurfaceFormat IGNORE_THIS_VERSION_OF_SDL_ConvertSurfaceFormat
+#define SDL_ConvertPixels IGNORE_THIS_VERSION_OF_SDL_ConvertPixels
+#define SDL_PremultiplyAlpha IGNORE_THIS_VERSION_OF_SDL_PremultiplyAlpha
+#define SDL_FillSurfaceRect IGNORE_THIS_VERSION_OF_SDL_FillSurfaceRect
+#define SDL_FillSurfaceRects IGNORE_THIS_VERSION_OF_SDL_FillSurfaceRects
+#define SDL_BlitSurface IGNORE_THIS_VERSION_OF_SDL_BlitSurface
+#define SDL_BlitSurfaceUnchecked IGNORE_THIS_VERSION_OF_SDL_BlitSurfaceUnchecked
+#define SDL_SoftStretch IGNORE_THIS_VERSION_OF_SDL_SoftStretch
+#define SDL_SoftStretchLinear IGNORE_THIS_VERSION_OF_SDL_SoftStretchLinear
+#define SDL_BlitSurfaceScaled IGNORE_THIS_VERSION_OF_SDL_BlitSurfaceScaled
+#define SDL_BlitSurfaceUncheckedScaled IGNORE_THIS_VERSION_OF_SDL_BlitSurfaceUncheckedScaled
+#define SDL_SetYUVConversionMode IGNORE_THIS_VERSION_OF_SDL_SetYUVConversionMode
+#define SDL_GetYUVConversionMode IGNORE_THIS_VERSION_OF_SDL_GetYUVConversionMode
+#define SDL_GetYUVConversionModeForResolution IGNORE_THIS_VERSION_OF_SDL_GetYUVConversionModeForResolution
+#define SDL_NumHaptics IGNORE_THIS_VERSION_OF_SDL_NumHaptics
+#define SDL_HapticName IGNORE_THIS_VERSION_OF_SDL_HapticName
+#define SDL_HapticOpen IGNORE_THIS_VERSION_OF_SDL_HapticOpen
+#define SDL_HapticOpened IGNORE_THIS_VERSION_OF_SDL_HapticOpened
+#define SDL_HapticIndex IGNORE_THIS_VERSION_OF_SDL_HapticIndex
+#define SDL_MouseIsHaptic IGNORE_THIS_VERSION_OF_SDL_MouseIsHaptic
+#define SDL_HapticOpenFromMouse IGNORE_THIS_VERSION_OF_SDL_HapticOpenFromMouse
+#define SDL_JoystickIsHaptic IGNORE_THIS_VERSION_OF_SDL_JoystickIsHaptic
+#define SDL_HapticOpenFromJoystick IGNORE_THIS_VERSION_OF_SDL_HapticOpenFromJoystick
+#define SDL_HapticClose IGNORE_THIS_VERSION_OF_SDL_HapticClose
+#define SDL_HapticNumEffects IGNORE_THIS_VERSION_OF_SDL_HapticNumEffects
+#define SDL_HapticNumEffectsPlaying IGNORE_THIS_VERSION_OF_SDL_HapticNumEffectsPlaying
+#define SDL_HapticQuery IGNORE_THIS_VERSION_OF_SDL_HapticQuery
+#define SDL_HapticNumAxes IGNORE_THIS_VERSION_OF_SDL_HapticNumAxes
+#define SDL_HapticEffectSupported IGNORE_THIS_VERSION_OF_SDL_HapticEffectSupported
+#define SDL_HapticNewEffect IGNORE_THIS_VERSION_OF_SDL_HapticNewEffect
+#define SDL_HapticUpdateEffect IGNORE_THIS_VERSION_OF_SDL_HapticUpdateEffect
+#define SDL_HapticRunEffect IGNORE_THIS_VERSION_OF_SDL_HapticRunEffect
+#define SDL_HapticStopEffect IGNORE_THIS_VERSION_OF_SDL_HapticStopEffect
+#define SDL_HapticDestroyEffect IGNORE_THIS_VERSION_OF_SDL_HapticDestroyEffect
+#define SDL_HapticGetEffectStatus IGNORE_THIS_VERSION_OF_SDL_HapticGetEffectStatus
+#define SDL_HapticSetGain IGNORE_THIS_VERSION_OF_SDL_HapticSetGain
+#define SDL_HapticSetAutocenter IGNORE_THIS_VERSION_OF_SDL_HapticSetAutocenter
+#define SDL_HapticPause IGNORE_THIS_VERSION_OF_SDL_HapticPause
+#define SDL_HapticUnpause IGNORE_THIS_VERSION_OF_SDL_HapticUnpause
+#define SDL_HapticStopAll IGNORE_THIS_VERSION_OF_SDL_HapticStopAll
+#define SDL_HapticRumbleSupported IGNORE_THIS_VERSION_OF_SDL_HapticRumbleSupported
+#define SDL_HapticRumbleInit IGNORE_THIS_VERSION_OF_SDL_HapticRumbleInit
+#define SDL_HapticRumblePlay IGNORE_THIS_VERSION_OF_SDL_HapticRumblePlay
+#define SDL_HapticRumbleStop IGNORE_THIS_VERSION_OF_SDL_HapticRumbleStop
+#define SDL_GetPreferredLocales IGNORE_THIS_VERSION_OF_SDL_GetPreferredLocales
+#define SDL_GetBasePath IGNORE_THIS_VERSION_OF_SDL_GetBasePath
+#define SDL_GetPrefPath

(Patch may be truncated, please check the link at the top of this post.)