about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-09-30 21:06:56 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-09-30 21:06:56 +0200
commita188f4ebfe0fbf9f46601c683a686c23a1513ee7 (patch)
treeedc4af063c2c382a08c2c5ab42bd272ca7af5335 /src
parente59063a13c10e9c14f892a4b5cc01278565f86b7 (diff)
downloadbox64-a188f4ebfe0fbf9f46601c683a686c23a1513ee7.tar.gz
box64-a188f4ebfe0fbf9f46601c683a686c23a1513ee7.zip
[BOX32][WRAPPER] Added a bunch of wrapped 32bits functions, and fixed a few existing ones (Now Witcher 2 Linux boot and can enter tutorial, before crashing)
Diffstat (limited to 'src')
-rw-r--r--src/libtools/sdl2align32.c16
-rw-r--r--src/wrapped/wrappedsdl2.c4
-rw-r--r--src/wrapped32/generated/functions_list.txt7
-rw-r--r--src/wrapped32/generated/wrappedsdl2imagetypes32.h1
-rw-r--r--src/wrapped32/generated/wrappedsdl2types32.h4
-rw-r--r--src/wrapped32/generated/wrapper32.c8
-rw-r--r--src/wrapped32/generated/wrapper32.h2
-rw-r--r--src/wrapped32/wrappedlibasound.c27
-rw-r--r--src/wrapped32/wrappedlibasound_private.h12
-rwxr-xr-xsrc/wrapped32/wrappedlibc_private.h5
-rw-r--r--src/wrapped32/wrappedlibx11.c36
-rw-r--r--src/wrapped32/wrappedsdl2.c68
-rw-r--r--src/wrapped32/wrappedsdl2_private.h1008
-rw-r--r--src/wrapped32/wrappedsdl2image.c9
-rw-r--r--src/wrapped32/wrappedsdl2image_private.h2
15 files changed, 667 insertions, 542 deletions
diff --git a/src/libtools/sdl2align32.c b/src/libtools/sdl2align32.c
index 93da8c69..68c0540b 100644
--- a/src/libtools/sdl2align32.c
+++ b/src/libtools/sdl2align32.c
@@ -194,6 +194,14 @@ void convert_SDL2_Event_to_64(void* dst_, const void* src_)
             dst->caxis.timestamp = src->caxis.timestamp;
             dst->caxis.type = src->caxis.type;
             break;
+        case SDL2_QUIT:
+            dst->quit.timestamp = src->quit.timestamp;
+            dst->quit.type = src->quit.type;
+            break;
+        case SDL2_CLIPBOARDUPDATE:
+            dst->common.timestamp = src->common.timestamp;
+            dst->common.type = src->common.type;
+            break;
         default:
             printf_log(LOG_INFO, "Warning, unsuported SDL2 event %d\n", src->type);
             if(dst_!=src_)
@@ -339,6 +347,14 @@ void convert_SDL2_Event_to_32(void* dst_, const void* src_)
             dst->caxis.value = src->caxis.value;
             dst->caxis.padding4 = src->caxis.padding4;
             break;
+        case SDL2_QUIT:
+            dst->quit.type = src->quit.type;
+            dst->quit.timestamp = src->quit.timestamp;
+            break;
+        case SDL2_CLIPBOARDUPDATE:
+            dst->common.type = src->common.type;
+            dst->common.timestamp = src->common.timestamp;
+            break;
         default:
             printf_log(LOG_INFO, "Warning, unsuported SDL2 event %d\n", src->type);
             if(dst_!=src_)
diff --git a/src/wrapped/wrappedsdl2.c b/src/wrapped/wrappedsdl2.c
index 9bdeb3c0..5c3a8056 100644
--- a/src/wrapped/wrappedsdl2.c
+++ b/src/wrapped/wrappedsdl2.c
@@ -284,10 +284,10 @@ EXPORT void *my2_SDL_LoadWAV_RW(x64emu_t* emu, void* a, int b, void* c, void* d,
         RWNativeEnd2(rw);
     return r;
 }
-EXPORT int64_t my2_SDL_GameControllerAddMappingsFromRW(x64emu_t* emu, void* a, int b)
+EXPORT int my2_SDL_GameControllerAddMappingsFromRW(x64emu_t* emu, void* a, int b)
 {
     SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
-    int64_t r = my->SDL_GameControllerAddMappingsFromRW(rw, b);
+    int r = my->SDL_GameControllerAddMappingsFromRW(rw, b);
     if(b==0)
         RWNativeEnd2(rw);
     return r;
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt
index 09d29d0a..26eda5fb 100644
--- a/src/wrapped32/generated/functions_list.txt
+++ b/src/wrapped32/generated/functions_list.txt
@@ -164,6 +164,7 @@
 #() CFpi -> CFpi
 #() CFpp -> CFpp
 #() uFEp -> uFEp
+#() uFii -> uFii
 #() uFiS -> uFiS
 #() uFuu -> uFuu
 #() uFup -> uFup
@@ -430,6 +431,7 @@
 #() SFEpp -> SFEpp
 #() SFppS -> SFppS
 #() tFipu -> tFipu
+#() iFppBp_ -> iFppB
 #() iFppbL_ -> iFppB
 #() iFpbL_p -> iFpBp
 #() iFBp_LL -> iFBLL
@@ -1724,9 +1726,11 @@ wrappedsdl2:
   - SDL_GetCurrentDisplayMode
   - SDL_GetDesktopDisplayMode
 - iFpi:
+  - SDL_GameControllerAddMappingsFromRW
   - SDL_WaitEventTimeout
 - iFpp:
   - SDL_GetWindowDisplayMode
+  - SDL_GetWindowWMInfo
   - SDL_OpenAudio
   - SDL_SetWindowDisplayMode
 - pFpi:
@@ -1734,6 +1738,8 @@ wrappedsdl2:
   - SDL_notreal
 - pFpp:
   - SDL_RWFromFile
+- iFiip:
+  - SDL_GetDisplayMode
 - iFppu:
   - SDL_FillRect
 - iFppV:
@@ -1760,6 +1766,7 @@ wrappedsdl2:
 % JFEi -> pFEpi
 wrappedsdl2image:
 - pFp:
+  - IMG_Load
   - IMG_LoadBMP_RW
   - IMG_LoadCUR_RW
   - IMG_LoadGIF_RW
diff --git a/src/wrapped32/generated/wrappedsdl2imagetypes32.h b/src/wrapped32/generated/wrappedsdl2imagetypes32.h
index 630a8aee..74fe53d9 100644
--- a/src/wrapped32/generated/wrappedsdl2imagetypes32.h
+++ b/src/wrapped32/generated/wrappedsdl2imagetypes32.h
@@ -18,6 +18,7 @@ typedef void* (*pFppi_t)(void*, void*, int32_t);
 typedef void* (*pFppip_t)(void*, void*, int32_t, void*);
 
 #define SUPER() ADDED_FUNCTIONS() \
+	GO(IMG_Load, pFp_t) \
 	GO(IMG_LoadBMP_RW, pFp_t) \
 	GO(IMG_LoadCUR_RW, pFp_t) \
 	GO(IMG_LoadGIF_RW, pFp_t) \
diff --git a/src/wrapped32/generated/wrappedsdl2types32.h b/src/wrapped32/generated/wrappedsdl2types32.h
index 76272d87..6e5e276e 100644
--- a/src/wrapped32/generated/wrappedsdl2types32.h
+++ b/src/wrapped32/generated/wrappedsdl2types32.h
@@ -24,6 +24,7 @@ typedef int32_t (*iFpi_t)(void*, int32_t);
 typedef int32_t (*iFpp_t)(void*, void*);
 typedef void* (*pFpi_t)(void*, int32_t);
 typedef void* (*pFpp_t)(void*, void*);
+typedef int32_t (*iFiip_t)(int32_t, int32_t, void*);
 typedef int32_t (*iFppu_t)(void*, void*, uint32_t);
 typedef int32_t (*iFppV_t)(void*, void*, ...);
 typedef int64_t (*IFpIi_t)(void*, int64_t, int32_t);
@@ -52,13 +53,16 @@ typedef void* (*pFuiiiuuuu_t)(uint32_t, int32_t, int32_t, int32_t, uint32_t, uin
 	GO(SDL_Log, vFpV_t) \
 	GO(SDL_GetCurrentDisplayMode, iFip_t) \
 	GO(SDL_GetDesktopDisplayMode, iFip_t) \
+	GO(SDL_GameControllerAddMappingsFromRW, iFpi_t) \
 	GO(SDL_WaitEventTimeout, iFpi_t) \
 	GO(SDL_GetWindowDisplayMode, iFpp_t) \
+	GO(SDL_GetWindowWMInfo, iFpp_t) \
 	GO(SDL_OpenAudio, iFpp_t) \
 	GO(SDL_SetWindowDisplayMode, iFpp_t) \
 	GO(SDL_LoadBMP_RW, pFpi_t) \
 	GO(SDL_notreal, pFpi_t) \
 	GO(SDL_RWFromFile, pFpp_t) \
+	GO(SDL_GetDisplayMode, iFiip_t) \
 	GO(SDL_FillRect, iFppu_t) \
 	GO(SDL_sscanf, iFppV_t) \
 	GO(SDL_RWseek, IFpIi_t) \
diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c
index 33ed6591..ea72c2d4 100644
--- a/src/wrapped32/generated/wrapper32.c
+++ b/src/wrapped32/generated/wrapper32.c
@@ -86,7 +86,7 @@ void VulkanTox86(void* src, void* save);
 int of_convert32(int);
 
 void* getDisplay(void*);
-void* FindDisplay(void*);
+void* addDisplay(void*);
 
 typedef void (*vFv_t)(void);
 typedef void (*vFc_t)(int8_t);
@@ -254,6 +254,7 @@ typedef uint8_t (*CFuU_t)(uint32_t, uint64_t);
 typedef uint8_t (*CFpi_t)(void*, int32_t);
 typedef uint8_t (*CFpp_t)(void*, void*);
 typedef uint32_t (*uFEp_t)(x64emu_t*, void*);
+typedef uint32_t (*uFii_t)(int32_t, int32_t);
 typedef uint32_t (*uFiS_t)(int32_t, void*);
 typedef uint32_t (*uFuu_t)(uint32_t, uint32_t);
 typedef uint32_t (*uFup_t)(uint32_t, void*);
@@ -520,6 +521,7 @@ typedef void* (*aFipa_t)(int32_t, void*, void*);
 typedef void* (*SFEpp_t)(x64emu_t*, void*, void*);
 typedef void* (*SFppS_t)(void*, void*, void*);
 typedef char* (*tFipu_t)(int32_t, void*, uint32_t);
+typedef int32_t (*iFppBp__t)(void*, void*, struct_p_t*);
 typedef int32_t (*iFppbL__t)(void*, void*, struct_L_t*);
 typedef int32_t (*iFpbL_p_t)(void*, struct_L_t*, void*);
 typedef int32_t (*iFBp_LL_t)(struct_p_t*, uintptr_t, uintptr_t);
@@ -1266,7 +1268,7 @@ void aFa_32(x64emu_t *emu, uintptr_t fcn) { aFa_t fn = (aFa_t)fcn; R_EAX = to_lo
 void tFi_32(x64emu_t *emu, uintptr_t fcn) { tFi_t fn = (tFi_t)fcn; R_EAX = to_cstring(fn(from_ptri(int32_t, R_ESP + 4))); }
 void tFu_32(x64emu_t *emu, uintptr_t fcn) { tFu_t fn = (tFu_t)fcn; R_EAX = to_cstring(fn(from_ptri(uint32_t, R_ESP + 4))); }
 void tFp_32(x64emu_t *emu, uintptr_t fcn) { tFp_t fn = (tFp_t)fcn; R_EAX = to_cstring(fn(from_ptriv(R_ESP + 4))); }
-void XFv_32(x64emu_t *emu, uintptr_t fcn) { XFv_t fn = (XFv_t)fcn; R_EAX = to_ptrv(FindDisplay(fn())); }
+void XFv_32(x64emu_t *emu, uintptr_t fcn) { XFv_t fn = (XFv_t)fcn; R_EAX = to_ptrv(addDisplay(fn())); }
 void iFBp__32(x64emu_t *emu, uintptr_t fcn) { iFBp__t fn = (iFBp__t)fcn; struct_p_t arg_4={0}; R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void LFrl__32(x64emu_t *emu, uintptr_t fcn) { LFrl__t fn = (LFrl__t)fcn; struct_l_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_l(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = to_ulong(fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL)); }
 void pFrl__32(x64emu_t *emu, uintptr_t fcn) { pFrl__t fn = (pFrl__t)fcn; struct_l_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_l(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = to_ptrv(fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL)); }
@@ -1356,6 +1358,7 @@ void CFuU_32(x64emu_t *emu, uintptr_t fcn) { CFuU_t fn = (CFuU_t)fcn; R_EAX = (u
 void CFpi_32(x64emu_t *emu, uintptr_t fcn) { CFpi_t fn = (CFpi_t)fcn; R_EAX = (unsigned char)fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); }
 void CFpp_32(x64emu_t *emu, uintptr_t fcn) { CFpp_t fn = (CFpp_t)fcn; R_EAX = (unsigned char)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8)); }
 void uFEp_32(x64emu_t *emu, uintptr_t fcn) { uFEp_t fn = (uFEp_t)fcn; R_EAX = (uint32_t)fn(emu, from_ptriv(R_ESP + 4)); }
+void uFii_32(x64emu_t *emu, uintptr_t fcn) { uFii_t fn = (uFii_t)fcn; R_EAX = (uint32_t)fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); }
 void uFiS_32(x64emu_t *emu, uintptr_t fcn) { uFiS_t fn = (uFiS_t)fcn; R_EAX = (uint32_t)fn(from_ptri(int32_t, R_ESP + 4), io_convert32(from_ptriv(R_ESP + 8))); }
 void uFuu_32(x64emu_t *emu, uintptr_t fcn) { uFuu_t fn = (uFuu_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8)); }
 void uFup_32(x64emu_t *emu, uintptr_t fcn) { uFup_t fn = (uFup_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8)); }
@@ -1622,6 +1625,7 @@ void aFipa_32(x64emu_t *emu, uintptr_t fcn) { aFipa_t fn = (aFipa_t)fcn; R_EAX =
 void SFEpp_32(x64emu_t *emu, uintptr_t fcn) { SFEpp_t fn = (SFEpp_t)fcn; R_EAX = to_ptrv(io_convert_from(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8)))); }
 void SFppS_32(x64emu_t *emu, uintptr_t fcn) { SFppS_t fn = (SFppS_t)fcn; R_EAX = to_ptrv(io_convert_from(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), io_convert32(from_ptriv(R_ESP + 12))))); }
 void tFipu_32(x64emu_t *emu, uintptr_t fcn) { tFipu_t fn = (tFipu_t)fcn; R_EAX = to_cstring(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12))); }
+void iFppBp__32(x64emu_t *emu, uintptr_t fcn) { iFppBp__t fn = (iFppBp__t)fcn; struct_p_t arg_12={0}; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); }
 void iFppbL__32(x64emu_t *emu, uintptr_t fcn) { iFppbL__t fn = (iFppbL__t)fcn; struct_L_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_L(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); }
 void iFpbL_p_32(x64emu_t *emu, uintptr_t fcn) { iFpbL_p_t fn = (iFpbL_p_t)fcn; struct_L_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_L(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptriv(R_ESP + 12)); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
 void iFBp_LL_32(x64emu_t *emu, uintptr_t fcn) { iFBp_LL_t fn = (iFBp_LL_t)fcn; struct_p_t arg_4={0}; R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_ulong(from_ptri(ulong_t, R_ESP + 12))); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h
index b516845a..d9c16ddb 100644
--- a/src/wrapped32/generated/wrapper32.h
+++ b/src/wrapped32/generated/wrapper32.h
@@ -205,6 +205,7 @@ void CFuU_32(x64emu_t *emu, uintptr_t fnc);
 void CFpi_32(x64emu_t *emu, uintptr_t fnc);
 void CFpp_32(x64emu_t *emu, uintptr_t fnc);
 void uFEp_32(x64emu_t *emu, uintptr_t fnc);
+void uFii_32(x64emu_t *emu, uintptr_t fnc);
 void uFiS_32(x64emu_t *emu, uintptr_t fnc);
 void uFuu_32(x64emu_t *emu, uintptr_t fnc);
 void uFup_32(x64emu_t *emu, uintptr_t fnc);
@@ -471,6 +472,7 @@ void aFipa_32(x64emu_t *emu, uintptr_t fnc);
 void SFEpp_32(x64emu_t *emu, uintptr_t fnc);
 void SFppS_32(x64emu_t *emu, uintptr_t fnc);
 void tFipu_32(x64emu_t *emu, uintptr_t fnc);
+void iFppBp__32(x64emu_t *emu, uintptr_t fnc);
 void iFppbL__32(x64emu_t *emu, uintptr_t fnc);
 void iFpbL_p_32(x64emu_t *emu, uintptr_t fnc);
 void iFBp_LL_32(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped32/wrappedlibasound.c b/src/wrapped32/wrappedlibasound.c
index 1f3bf86f..02d1bebc 100644
--- a/src/wrapped32/wrappedlibasound.c
+++ b/src/wrapped32/wrappedlibasound.c
@@ -23,12 +23,13 @@
 #define LIBNAME libasound
 static const char* libasoundName = "libasound.so.2";
 
-typedef void  (*vFp_t)(void*);
-typedef void* (*pFp_t)(void*);
+typedef int (*iFpp_t)(void*, void*);
+typedef size_t(*LFv_t)();
 
 #define ADDED_FUNCTIONS() \
-    GO(snd_pcm_query_chmaps, pFp_t) \
-    GO(snd_pcm_free_chmaps, vFp_t) \
+    GO(snd_pcm_hw_params_current, iFpp_t) \
+    GO(snd_pcm_hw_params_get_channels, iFpp_t) \
+    GO(snd_pcm_hw_params_sizeof, LFv_t) \
 
 #include "generated/wrappedlibasoundtypes32.h"
 
@@ -304,13 +305,19 @@ EXPORT int my32_snd_pcm_mmap_begin(x64emu_t* emu, void* pcm, ptr_t* areas, ulong
     *offset = to_ulong(l_offset);
     *frames = to_ulong(l_frames);
     static my_snd_pcm_channel_area_32_t my_areas[15] = {0};
+    static void* last_pcm = NULL;
+    static int last_nch = 0;
     // get the number of channels
-    void** chmaps = my->snd_pcm_query_chmaps(pcm);
-    int nch = 1;
-    if(chmaps) {
-        while(chmaps[nch]) nch++;
-        my->snd_pcm_free_chmaps(chmaps);
-    } else printf_log(LOG_INFO, "Warning, could not get number of pcm channels in 32bits alsa for pcm_mmap_begin");
+    unsigned int nch = 0;
+    if(pcm==last_pcm)
+        nch = last_nch;
+    else {
+        void* hw=alloca(my->snd_pcm_hw_params_sizeof());
+        my->snd_pcm_hw_params_current(pcm, hw);
+        my->snd_pcm_hw_params_get_channels(hw, &nch);
+        last_pcm = pcm;
+        last_nch = nch;
+    }
     if(nch>15) {printf_log(LOG_INFO, "Warning, too many channels in pcm of 32bits alsa: %d\n", nch); nch=15; }
     for(int i=0; i<nch; ++i) {
         my_areas[i].addr = to_ptrv(l_areas[i].addr);
diff --git a/src/wrapped32/wrappedlibasound_private.h b/src/wrapped32/wrappedlibasound_private.h
index 58f4198c..b01a919e 100644
--- a/src/wrapped32/wrappedlibasound_private.h
+++ b/src/wrapped32/wrappedlibasound_private.h
@@ -98,7 +98,7 @@ GO(snd_strerror, pFi)
 //GO(snd_config_update, iFv)
 //GO(snd_config_update_r, iFppp)
 //GO(snd_config_update_free, iFp)
-//GO(snd_config_update_free_global, iFv)
+GO(snd_config_update_free_global, iFv)
 //GO(snd_config_search, iFppp)
 //GOM(snd_config_searchv, iFppV)
 //GO(snd_config_search_definition, iFpppp)
@@ -182,7 +182,7 @@ GO(snd_pcm_chmap_long_name, pFu)
 GO(snd_pcm_chmap_from_string, uFp)
 GO(snd_pcm_chmap_parse_string, pFp)
 GO(snd_pcm_close, iFp)
-//GO(snd_pcm_delay, iFpp)
+GO(snd_pcm_delay, iFpBL_)
 GO(snd_pcm_drain, iFp)
 GO(snd_pcm_drop, iFp)
 //GO(snd_pcm_dump, iFpp)
@@ -234,7 +234,7 @@ GO(snd_pcm_hw_params_any, iFpp)
 //GO(snd_pcm_hw_params_can_resume, iFp)
 //GO(snd_pcm_hw_params_can_sync_start, iFp)
 //GO(snd_pcm_hw_params_copy, vFpp)
-//GO(snd_pcm_hw_params_current, iFpp)
+GO(snd_pcm_hw_params_current, iFpp)
 //GO(snd_pcm_hw_params_dump, iFpp)
 GO(snd_pcm_hw_params_free, vFp)
 GO(snd_pcm_hw_params_get_access, iFpp)
@@ -410,7 +410,7 @@ GO(snd_pcm_prepare, iFp)
 GO(snd_pcm_readi, lFppL)
 //GO(snd_pcm_readn, lFppL)
 GO(snd_pcm_recover, iFpii)
-//GO(snd_pcm_reset, iFp)
+GO(snd_pcm_reset, iFp)
 GO(snd_pcm_resume, iFp)
 //GO(snd_pcm_rewind, lFpL)  
 //GO(snd_pcm_samples_to_bytes, lFpl)
@@ -482,7 +482,7 @@ GO(snd_pcm_sw_params_set_avail_min, iFppL)
 //GO(snd_pcm_sw_params_set_sleep_min, iFppu)
 //GO(snd_pcm_sw_params_set_start_mode, iFppu)
 //GO(snd_pcm_sw_params_set_start_threshold, iFppL)
-//GO(snd_pcm_sw_params_set_stop_threshold, iFppL)
+GO(snd_pcm_sw_params_set_stop_threshold, iFppL)
 //GO(snd_pcm_sw_params_set_tstamp_mode, iFppu)
 //GO(snd_pcm_sw_params_set_tstamp_type, iFppu)
 //GO(snd_pcm_sw_params_set_xfer_align, iFppL)
@@ -743,7 +743,7 @@ GO(snd_ctl_card_info_free, vFp)
 //GO(snd_ctl_card_info_clear, vFp)
 //GO(snd_ctl_card_info_copy, vFpp)
 //GO(snd_ctl_card_info_get_card, iFp)
-//GO(snd_ctl_card_info_get_id, pFp)
+GO(snd_ctl_card_info_get_id, pFp)
 //GO(snd_ctl_card_info_get_driver, pFp)
 GO(snd_ctl_card_info_get_name, pFp)
 GO(snd_ctl_card_info_get_longname, pFp)
diff --git a/src/wrapped32/wrappedlibc_private.h b/src/wrapped32/wrappedlibc_private.h
index cce8f7f7..73054d9d 100755
--- a/src/wrapped32/wrappedlibc_private.h
+++ b/src/wrapped32/wrappedlibc_private.h
@@ -1349,7 +1349,6 @@ GOM(read, lFipL) //%%,noE
 //GO(__read_chk, lFipLL)
 GOWM(readdir, pFEp)  //%%
 GO(readdir64, pFp)  // check if alignement is correct
-// readdir64_r
 //GOM(readdir_r, iFEppp)  //%% should also be weak
 GOM(readlink, lFEppL) //%%
 //GOM(readlinkat, iFEippL)
@@ -1410,7 +1409,7 @@ GO(rewind, vFS)
 // rexecoptions // type B
 //GOW(rindex, pFpi)
 GOW(rmdir, iFp)
-//GO(readdir64_r, iFppp)  // is this present?
+GO(readdir64_r, iFppBp_)
 // rpc_createerr    // type B
 // _rpc_dtablesize
 // __rpc_thread_createerr
@@ -1798,7 +1797,7 @@ GO(tcsetpgrp, iFii)
 // tdestroy // Weak
 // tee
 //GO(telldir, iFp)
-//GO(tempnam, pFpp)
+GO(tempnam, pFpp)
 //GOW(textdomain, pFp)
 // tfind    // Weak
 GO(time, LFrl_)
diff --git a/src/wrapped32/wrappedlibx11.c b/src/wrapped32/wrappedlibx11.c
index 7a36df96..b1078903 100644
--- a/src/wrapped32/wrappedlibx11.c
+++ b/src/wrapped32/wrappedlibx11.c
@@ -1574,7 +1574,7 @@ void* getDisplay(void* d)
 {
     if(!d) return d;
     for(int i=0; i<N_DISPLAY; ++i)
-        if(&my32_Displays_32[i]==d || my32_Displays_64[i]==d)
+        if(((&my32_Displays_32[i])==d) || (my32_Displays_64[i]==d))
             return my32_Displays_64[i];
         printf_log(LOG_INFO, "BOX32: Warning, 32bits Display %p not found\n", d);
     return d;
@@ -1584,7 +1584,7 @@ void* FindDisplay(void* d)
 {
     if(!d) return d;
     for(int i=0; i<N_DISPLAY; ++i)
-        if(my32_Displays_64[i]==d || &my32_Displays_32[i]==d)
+        if((my32_Displays_64[i]==d) || ((&my32_Displays_32[i])==d))
             return &my32_Displays_32[i];
     return d;
 }
@@ -1612,22 +1612,18 @@ void convert_Screen_to_32(void* d, void* s)
     dst->root_input_mask = to_long(src->root_input_mask);
 }
 
-EXPORT void* my32_XOpenDisplay(x64emu_t* emu, void* d)
+void* addDisplay(void* d)
 {
-    void* r = my->XOpenDisplay(d);
-    // Added automatic bridge because of thos macro from Xlibint.h
-    //#define LockDisplay(d)       if ((d)->lock_fns) (*(d)->lock_fns->lock_display)(d)
-    //#define UnlockDisplay(d)     if ((d)->lock_fns) (*(d)->lock_fns->unlock_display)(d)
-    if(!r)
-        return r;
-
-    my_XDisplay_t* dpy = (my_XDisplay_t*)r;
+    my_XDisplay_t* dpy = (my_XDisplay_t*)d;
     // look for a free slot, or a display already there
     my_XDisplay_32_t* ret = NULL;
     struct my_XFreeFuncs_32 *free_funcs = NULL;
     struct my_XLockPtrs_32 *lock_fns = NULL;
+    for(int i=0; i<N_DISPLAY && !ret; ++i)
+        if(my32_Displays_64[i]==dpy)
+            return &my32_Displays_32[i];
     for(int i=0; i<N_DISPLAY && !ret; ++i) {
-        if(my32_Displays_64[i]==dpy || !my32_Displays_64[i]) {
+        if(!my32_Displays_64[i]) {
             my32_Displays_64[i] = dpy;
             ret = &my32_Displays_32[i];
             free_funcs = &my32_free_funcs_32[i];
@@ -1638,7 +1634,7 @@ EXPORT void* my32_XOpenDisplay(x64emu_t* emu, void* d)
     }
     if(!ret) {
         printf_log(LOG_INFO, "BOX32: No more slot available for libX11 Display!");
-        return r;
+        return d;
     }
 
     bridge_t* system = my_lib->w.bridge;
@@ -1709,6 +1705,20 @@ EXPORT void* my32_XOpenDisplay(x64emu_t* emu, void* d)
     return ret;
 }
 
+EXPORT void* my32_XOpenDisplay(x64emu_t* emu, void* d)
+{
+    void* r = my->XOpenDisplay(d);
+    // Added automatic bridge because of thos macro from Xlibint.h
+    //#define LockDisplay(d)       if ((d)->lock_fns) (*(d)->lock_fns->lock_display)(d)
+    //#define UnlockDisplay(d)     if ((d)->lock_fns) (*(d)->lock_fns->unlock_display)(d)
+    if(!r)
+        return r;
+
+    void* ret = addDisplay(r);
+
+    return ret;
+}
+
 EXPORT int my32_XCloseDisplay(x64emu_t* emu, void* dpy)
 {
     int ret = my->XCloseDisplay(dpy);
diff --git a/src/wrapped32/wrappedsdl2.c b/src/wrapped32/wrappedsdl2.c
index f34cf732..2510a8ea 100644
--- a/src/wrapped32/wrappedsdl2.c
+++ b/src/wrapped32/wrappedsdl2.c
@@ -169,6 +169,14 @@ EXPORT int my32_2_SDL_GetWindowDisplayMode(void* window, void* mode)
     return ret;
 }
 
+EXPORT int my32_2_SDL_GetDisplayMode(int dispIndex, int modeIndex, void* mode)
+{
+    my_SDL2_DisplayMode_t mode_l = { 0 };
+    int ret = my->SDL_GetDisplayMode(dispIndex, modeIndex, &mode_l);
+    convert_SDL2_DisplayMode_to_32(mode, &mode_l);
+    return ret;
+}
+
 EXPORT int my32_2_SDL_SetWindowDisplayMode(void* window, void* mode)
 {
     my_SDL2_DisplayMode_t mode_l = { 0 };
@@ -391,6 +399,17 @@ EXPORT void *my32_2_SDL_LoadBMP_RW(x64emu_t* emu, void* a, int b)
     inplace_SDL2_Surface_to_32(r);
     return r;
 }
+EXPORT int my32_2_SDL_GameControllerAddMappingsFromRW(x64emu_t* emu, void* a, int b)
+{
+    inplace_SDL2_RWops_to_64(a);
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    int r = my->SDL_GameControllerAddMappingsFromRW(rw, b);
+    if(b==0) {
+        RWNativeEnd2(rw);
+        inplace_SDL2_RWops_to_32(a);
+    }
+    return r;
+}
 
 EXPORT int64_t my32_2_SDL_RWseek(x64emu_t* emu, void* a, int64_t offset, int whence)
 {
@@ -435,6 +454,55 @@ EXPORT int my32_2_SDL_RWclose(x64emu_t* emu, void* a)
     return RWNativeClose2(rw);
 }
 
+typedef struct SDL_version_s
+{
+    uint8_t major;
+    uint8_t minor;
+    uint8_t patch;
+} SDL_version_t;
+
+typedef struct SDL_SysWMinfo_s
+{
+    SDL_version_t version;
+    int subsystem;  // 1=Windows, 2 =X11, 6=Wayland
+    union
+    {
+        struct
+        {
+            void* display;  //Display
+            unsigned long window;   //Window
+        } x11;
+        uint8_t dummy[64];
+    } info;
+} SDL_SysWMinfo_t;
+
+typedef struct SDL_SysWMinfo_32_s
+{
+    SDL_version_t version;
+    int subsystem;  // 1=Windows, 2 =X11, 6=Wayland
+    union
+    {
+        struct
+        {
+            ptr_t display;  //Display*
+            ulong_t window;   //Window
+        } x11;
+        uint8_t dummy[64];
+    } info;
+} SDL_SysWMinfo_32_t;
+void* FindDisplay(void* d);
+EXPORT int my32_2_SDL_GetWindowWMInfo(void* w, SDL_SysWMinfo_32_t* i)
+{
+    // 32bits and  64bits have the same size...
+    int ret = my->SDL_GetWindowWMInfo(w, i);
+    if(i->subsystem==2) {
+        // inplace conversion
+        SDL_SysWMinfo_t* i_l = (SDL_SysWMinfo_t*) i;
+        i->info.x11.display = to_ptrv(FindDisplay(i_l->info.x11.display));
+        i->info.x11.window = to_ulong(i_l->info.x11.window);
+    }
+    return ret;
+}
 
 #define ALTMY my32_2_
 
diff --git a/src/wrapped32/wrappedsdl2_private.h b/src/wrapped32/wrappedsdl2_private.h
index 1304d05a..33dd356b 100644
--- a/src/wrapped32/wrappedsdl2_private.h
+++ b/src/wrapped32/wrappedsdl2_private.h
@@ -7,15 +7,15 @@
 
 // _fini
 // _init
-// GO(SDL_abs, iFi)
-// GO(SDL_acos, dFd)
-// GO(SDL_acosf, fFf)
+//GO(SDL_abs, iFi)
+//GO(SDL_acos, dFd)
+//GO(SDL_acosf, fFf)
 GOM(SDL_AddEventWatch, vFEpp)
 // SDL_AddHintCallback
-// GOM(SDL_AddTimer, pFEupp)
-// GO(SDL_AllocFormat, pFu)
-// GO(SDL_AllocPalette, pFi)
-// GO(SDL_AllocRW, pFv)    // no need to create a "my_" probably
+//GOM(SDL_AddTimer, pFEupp)
+//GO(SDL_AllocFormat, pFu)
+//GO(SDL_AllocPalette, pFi)
+//GO(SDL_AllocRW, pFv)    // no need to create a "my_" probably
 GO(SDL_asin, dFd)
 GO(SDL_asinf, fFf)
 GO(SDL_atan, dFd)
@@ -24,201 +24,201 @@ GO(SDL_atan2f, fFff)
 GO(SDL_atanf, fFf)
 GO(SDL_atof, dFp)
 GO(SDL_atoi, iFp)
-// GO(SDL_AtomicAdd, iFpi)
-// GO(SDL_AtomicCAS, uFpii)
-// GO(SDL_AtomicCASPtr, uFppp)
-// GO(SDL_AtomicGet, iFp)
-// GO(SDL_AtomicGetPtr, pFp)
-// GO(SDL_AtomicLock, vFp)
-// GO(SDL_AtomicSet, iFpi)
-// GO(SDL_AtomicSetPtr, pFpp)
-// GO(SDL_AtomicTryLock, uFp)
-// GO(SDL_AtomicUnlock, vFp)
-// GO(SDL_AudioInit, iFp)
+//GO(SDL_AtomicAdd, iFpi)
+//GO(SDL_AtomicCAS, uFpii)
+//GO(SDL_AtomicCASPtr, uFppp)
+//GO(SDL_AtomicGet, iFp)
+//GO(SDL_AtomicGetPtr, pFp)
+//GO(SDL_AtomicLock, vFp)
+//GO(SDL_AtomicSet, iFpi)
+//GO(SDL_AtomicSetPtr, pFpp)
+//GO(SDL_AtomicTryLock, uFp)
+//GO(SDL_AtomicUnlock, vFp)
+//GO(SDL_AudioInit, iFp)
 GO(SDL_AudioQuit, vFv)
-// GO(SDL_AudioStreamAvailable, iFp)
-// GO(SDL_AudioStreamClear, vFp)
+//GO(SDL_AudioStreamAvailable, iFp)
+//GO(SDL_AudioStreamClear, vFp)
 GO(SDL_AudioStreamFlush, iFp)
 GO(SDL_AudioStreamGet, iFppi)
 GO(SDL_AudioStreamPut, iFppi)
-// GO(SDL_BuildAudioCVT, iFpWCiWCi)
-// GO(SDL_CalculateGammaRamp, vFfp)
+//GO(SDL_BuildAudioCVT, iFpWCiWCi)
+//GO(SDL_CalculateGammaRamp, vFfp)
 GO(SDL_calloc, pFLL)
-// GO(SDL_CaptureMouse, iFu)
-// GO(SDL_ceil, dFd)
-// GO(SDL_ceilf, fFf)
-// GO(SDL_ClearError, vFv)
-// GO(SDL_ClearHints, vFv)
-// GO(SDL_ClearQueuedAudio, vFu)
+//GO(SDL_CaptureMouse, iFu)
+//GO(SDL_ceil, dFd)
+//GO(SDL_ceilf, fFf)
+//GO(SDL_ClearError, vFv)
+//GO(SDL_ClearHints, vFv)
+//GO(SDL_ClearQueuedAudio, vFu)
 GO(SDL_CloseAudio, vFv)
 GO(SDL_CloseAudioDevice, vFu)
-// GO(SDL_ComposeCustomBlendMode, uFuuuuuu)
-// GO(SDL_CondBroadcast, iFp)
-// GO(SDL_CondSignal, iFp)
-// GO(SDL_CondWait, iFpp)
-// GO(SDL_CondWaitTimeout, iFppu)
-// GO(SDL_ConvertAudio, iFp)
-// GO(SDL_ConvertPixels, iFiiupiupi)
-// GO(SDL_ConvertSurface, pFppu)
-// GO(SDL_ConvertSurfaceFormat, pFpuu)
-// GO(SDL_copysign, dFdd)
-// GO(SDL_copysignf, fFff)
-// GO(SDL_cos, dFd)
-// GO(SDL_cosf, fFf)
+//GO(SDL_ComposeCustomBlendMode, uFuuuuuu)
+//GO(SDL_CondBroadcast, iFp)
+//GO(SDL_CondSignal, iFp)
+//GO(SDL_CondWait, iFpp)
+//GO(SDL_CondWaitTimeout, iFppu)
+//GO(SDL_ConvertAudio, iFp)
+//GO(SDL_ConvertPixels, iFiiupiupi)
+//GO(SDL_ConvertSurface, pFppu)
+//GO(SDL_ConvertSurfaceFormat, pFpuu)
+//GO(SDL_copysign, dFdd)
+//GO(SDL_copysignf, fFff)
+//GO(SDL_cos, dFd)
+//GO(SDL_cosf, fFf)
 GOM(SDL_CreateColorCursor, pFpii)   //%noE
-// GO(SDL_CreateCond, pFv)
-// GO(SDL_CreateCursor, pFppiiii)
+//GO(SDL_CreateCond, pFv)
+//GO(SDL_CreateCursor, pFppiiii)
 GO(SDL_CreateMutex, pFv)
 GO(SDL_CreateRenderer, pFpiu)
 GOM(SDL_CreateRGBSurface, pFEuiiiuuuu)
-// GO(SDL_CreateRGBSurfaceFrom, pFpiiiiuuuu)
-// GO(SDL_CreateRGBSurfaceWithFormat, pFuiiiu)
+//GO(SDL_CreateRGBSurfaceFrom, pFpiiiiuuuu)
+//GO(SDL_CreateRGBSurfaceWithFormat, pFuiiiu)
 GOM(SDL_CreateRGBSurfaceWithFormatFrom, pFEpiiiiu)
-// GO(SDL_CreateSemaphore, pFu)
-// GO(SDL_CreateShapedWindow, pFpuuuuu)
-// GO(SDL_CreateSoftwareRenderer, pFp)
+//GO(SDL_CreateSemaphore, pFu)
+//GO(SDL_CreateShapedWindow, pFpuuuuu)
+//GO(SDL_CreateSoftwareRenderer, pFp)
 GO(SDL_CreateSystemCursor, pFu)
 GO(SDL_CreateTexture, pFpuiii)
-// GO(SDL_CreateTextureFromSurface, pFpp)
+//GO(SDL_CreateTextureFromSurface, pFpp)
 GOM(SDL_CreateThread, pFEppp)
 // SDL_CreateThreadWithStackSize
 GO(SDL_CreateWindow, pFpiiiiu)
-// GO(SDL_CreateWindowAndRenderer, iFiiupp)
-// GO(SDL_CreateWindowFrom, pFp)
+//GO(SDL_CreateWindowAndRenderer, iFiiupp)
+//GO(SDL_CreateWindowFrom, pFp)
 GO(SDL_Delay, vFu)
 GOM(SDL_DelEventWatch, vFEpp)
 // SDL_DelHintCallback
-// GO(SDL_DequeueAudio, uFupu)
-// GO(SDL_DestroyCond, vFp)
-// GO(SDL_DestroyMutex, vFp)
-// GO(SDL_DestroyRenderer, vFp)
-// GO(SDL_DestroySemaphore, vFp)
-// GO(SDL_DestroyTexture, vFp)
+//GO(SDL_DequeueAudio, uFupu)
+//GO(SDL_DestroyCond, vFp)
+//GO(SDL_DestroyMutex, vFp)
+//GO(SDL_DestroyRenderer, vFp)
+//GO(SDL_DestroySemaphore, vFp)
+//GO(SDL_DestroyTexture, vFp)
 GO(SDL_DestroyWindow, vFp)
-// GO(SDL_DestroyWindowSurface, iFp)
-// GO(SDL_DetachThread, vFp)
+//GO(SDL_DestroyWindowSurface, iFp)
+//GO(SDL_DetachThread, vFp)
 GO(SDL_DisableScreenSaver, vFv)
-// GO(SDL_DuplicateSurface, pFp)
-// GOM(SDL_DYNAPI_entry, iFEupu)
-// GO(SDL_EnableScreenSaver, vFv)
-// GO(SDL_EnclosePoints, uFpipp)
-// GO(SDL_Error, iFu)
-// GO(SDL_EventState, CFui)
-// GO(SDL_exp, dFd)
-// GO(SDL_expf, fFf)
-// GO(SDL_fabs, dFd)
-// GO(SDL_fabsf, fFf)
+//GO(SDL_DuplicateSurface, pFp)
+//GOM(SDL_DYNAPI_entry, iFEupu)
+//GO(SDL_EnableScreenSaver, vFv)
+//GO(SDL_EnclosePoints, uFpipp)
+//GO(SDL_Error, iFu)
+//GO(SDL_EventState, CFui)
+//GO(SDL_exp, dFd)
+//GO(SDL_expf, fFf)
+//GO(SDL_fabs, dFd)
+//GO(SDL_fabsf, fFf)
 GOM(SDL_FillRect, iFEppu)
-// GO(SDL_FillRects, iFppiu)
+//GO(SDL_FillRects, iFppiu)
 // SDL_FilterEvents
-// GO(SDL_floor, dFd)
-// GO(SDL_floorf,fFf)
-// GO(SDL_FlushEvent, vFu)
-// GO(SDL_FlushEvents, vFuu)
-// GO(SDL_fmod, dFdd)
-// GO(SDL_fmodf, fFff)
+//GO(SDL_floor, dFd)
+//GO(SDL_floorf,fFf)
+//GO(SDL_FlushEvent, vFu)
+//GO(SDL_FlushEvents, vFuu)
+//GO(SDL_fmod, dFdd)
+//GO(SDL_fmodf, fFff)
 GO(SDL_free, vFp)
 GO(SDL_FreeAudioStream, vFp)
 GO(SDL_FreeCursor, vFp)
-// GO(SDL_FreeFormat, vFp)
-// GO(SDL_FreePalette, vFp)
-// GO(SDL_FreeRW, vFp)
+//GO(SDL_FreeFormat, vFp)
+//GO(SDL_FreePalette, vFp)
+//GO(SDL_FreeRW, vFp)
 GOM(SDL_FreeSurface, vFEp)
-// GO(SDL_FreeWAV, vFp)
-// GO(SDL_GameControllerAddMapping, iFp)
-// GOM(SDL_GameControllerAddMappingsFromRW, iFEpi)
+//GO(SDL_FreeWAV, vFp)
+//GO(SDL_GameControllerAddMapping, iFp)
+GOM(SDL_GameControllerAddMappingsFromRW, iFEpi)
 GO(SDL_GameControllerClose, vFp)
 GO(SDL_GameControllerEventState, iFi)
-// GO(SDL_GameControllerFromInstanceID, pFi)
-// GO(SDL_GameControllerFromPlayerIndex, pFi)
-// GO(SDL_GameControllerGetAttached, iFp)
-// GO(SDL_GameControllerGetAxis, wFpi)
-// GO(SDL_GameControllerGetAxisFromString, iFp)
-// GO(SDL_GameControllerGetBindForAxis, HFpi)
-// GO(SDL_GameControllerGetBindForButton, HFpi)
-// GO(SDL_GameControllerGetButton, CFpi)
-// GO(SDL_GameControllerGetButtonFromString, iFp)
-// GO(SDL_GameControllerGetFirmwareVersion, WFp)
+//GO(SDL_GameControllerFromInstanceID, pFi)
+//GO(SDL_GameControllerFromPlayerIndex, pFi)
+//GO(SDL_GameControllerGetAttached, iFp)
+//GO(SDL_GameControllerGetAxis, wFpi)
+//GO(SDL_GameControllerGetAxisFromString, iFp)
+//GO(SDL_GameControllerGetBindForAxis, HFpi)
+//GO(SDL_GameControllerGetBindForButton, HFpi)
+//GO(SDL_GameControllerGetButton, CFpi)
+//GO(SDL_GameControllerGetButtonFromString, iFp)
+//GO(SDL_GameControllerGetFirmwareVersion, WFp)
 GO(SDL_GameControllerGetJoystick, pFp)
-// GO(SDL_GameControllerGetNumTouchpads, iFp)
-// GO(SDL_GameControllerGetNumTouchpadFingers, iFpi)
-// GO(SDL_GameControllerGetPlayerIndex, iFp)
-// GO(SDL_GameControllerGetProduct, WFp)
-// GO(SDL_GameControllerGetProductVersion, WFp)
-// GO(SDL_GameControllerGetSensorData, iFpipi)
-// GO(SDL_GameControllerGetSensorDataWithTimestamp, iFpippi)
-// GO(SDL_GameControllerGetSerial, pFp)
-// GO(SDL_GameControllerGetStringForAxis, pFi)
-// GO(SDL_GameControllerGetStringForButton, pFi)
-// GO(SDL_GameControllerGetTouchpadFinger, iFpiipppp)
-// GO(SDL_GameControllerGetType, uFp)
-// GO(SDL_GameControllerGetVendor, WFp)
-// GO(SDL_GameControllerHasButton, uFpi)
-// GO(SDL_GameControllerHasLED, iFp)
-// GO(SDL_GameControllerHasRumble, iFp)
-// GO(SDL_GameControllerHasSensor, iFpi)
-// GO(SDL_GameControllerIsSensorEnabled, uFpi)
-// GO(SDL_GameControllerMapping, pFp)
-// GO(SDL_GameControllerMappingForDeviceIndex, pFi)
-// GO(SDL_GameControllerMappingForGUID, pFpp)
-// GO(SDL_GameControllerMappingForIndex, pFi)
-// GO(SDL_GameControllerName, pFp)
-// GO(SDL_GameControllerNameForIndex, pFi)
-// GO(SDL_GameControllerNumMappings, iFv)
+//GO(SDL_GameControllerGetNumTouchpads, iFp)
+//GO(SDL_GameControllerGetNumTouchpadFingers, iFpi)
+//GO(SDL_GameControllerGetPlayerIndex, iFp)
+//GO(SDL_GameControllerGetProduct, WFp)
+//GO(SDL_GameControllerGetProductVersion, WFp)
+//GO(SDL_GameControllerGetSensorData, iFpipi)
+//GO(SDL_GameControllerGetSensorDataWithTimestamp, iFpippi)
+//GO(SDL_GameControllerGetSerial, pFp)
+//GO(SDL_GameControllerGetStringForAxis, pFi)
+//GO(SDL_GameControllerGetStringForButton, pFi)
+//GO(SDL_GameControllerGetTouchpadFinger, iFpiipppp)
+//GO(SDL_GameControllerGetType, uFp)
+//GO(SDL_GameControllerGetVendor, WFp)
+//GO(SDL_GameControllerHasButton, uFpi)
+//GO(SDL_GameControllerHasLED, iFp)
+//GO(SDL_GameControllerHasRumble, iFp)
+//GO(SDL_GameControllerHasSensor, iFpi)
+//GO(SDL_GameControllerIsSensorEnabled, uFpi)
+//GO(SDL_GameControllerMapping, pFp)
+//GO(SDL_GameControllerMappingForDeviceIndex, pFi)
+//GO(SDL_GameControllerMappingForGUID, pFpp)
+//GO(SDL_GameControllerMappingForIndex, pFi)
+//GO(SDL_GameControllerName, pFp)
+//GO(SDL_GameControllerNameForIndex, pFi)
+//GO(SDL_GameControllerNumMappings, iFv)
 GO(SDL_GameControllerOpen, pFi)
-// GO(SDL_GameControllerPath, pFp)
-// GO(SDL_GameControllerPathForIndex, pFi)
-// GO(SDL_GameControllerRumble, iFpWWu)
-// GO(SDL_GameControllerRumbleTriggers, iFpWWu)
-// GO(SDL_GameControllerSetLED, iFpCCC)
-// GO(SDL_GameControllerSetPlayerIndex, vFpi)
-// GO(SDL_GameControllerSetSensorEnabled, iFpiu)
-// GO(SDL_GameControllerTypeForIndex, uFi)
-// GO(SDL_GameControllerUpdate, vFv)
+//GO(SDL_GameControllerPath, pFp)
+//GO(SDL_GameControllerPathForIndex, pFi)
+//GO(SDL_GameControllerRumble, iFpWWu)
+//GO(SDL_GameControllerRumbleTriggers, iFpWWu)
+//GO(SDL_GameControllerSetLED, iFpCCC)
+//GO(SDL_GameControllerSetPlayerIndex, vFpi)
+//GO(SDL_GameControllerSetSensorEnabled, iFpiu)
+//GO(SDL_GameControllerTypeForIndex, uFi)
+//GO(SDL_GameControllerUpdate, vFv)
 // SDL_GetAssertionHandler
-// GO(SDL_GetAssertionReport, pFv)
-// GO(SDL_GetAudioDeviceName, pFii)
-// GO(SDL_GetAudioDeviceStatus, uFu)
-// GO(SDL_GetAudioDriver, pFi)
-// GO(SDL_GetAudioDeviceSpec, iFiip)
-// GO(SDL_GetAudioStatus, uFv)
+//GO(SDL_GetAssertionReport, pFv)
+//GO(SDL_GetAudioDeviceName, pFii)
+//GO(SDL_GetAudioDeviceStatus, uFu)
+//GO(SDL_GetAudioDriver, pFi)
+//GO(SDL_GetAudioDeviceSpec, iFiip)
+//GO(SDL_GetAudioStatus, uFv)
 GOM(SDL_GetBasePath, pFEv)
 GO(SDL_GetClipboardText, pFv)
-// GO(SDL_GetClipRect, vFpp)
-// GO(SDL_GetClosestDisplayMode, pFipp)
-// GO(SDL_GetColorKey, iFpp)
-// GO(SDL_GetCPUCacheLineSize, iFv)
-// GO(SDL_GetCPUCount, iFv)
+//GO(SDL_GetClipRect, vFpp)
+//GO(SDL_GetClosestDisplayMode, pFipp)
+//GO(SDL_GetColorKey, iFpp)
+//GO(SDL_GetCPUCacheLineSize, iFv)
+//GO(SDL_GetCPUCount, iFv)
 GO(SDL_GetCurrentAudioDriver, pFv)
 GOM(SDL_GetCurrentDisplayMode, iFip)    //%noE
 GO(SDL_GetCurrentVideoDriver, pFv)
-// GO(SDL_GetCursor, pFv)
+//GO(SDL_GetCursor, pFv)
 // SDL_GetDefaultAssertionHandler
-// GO(SDL_GetDefaultAudioInfo, iFppi)
-// GO(SDL_GetDefaultCursor, pFv)
+//GO(SDL_GetDefaultAudioInfo, iFppi)
+//GO(SDL_GetDefaultCursor, pFv)
 GOM(SDL_GetDesktopDisplayMode, iFEip)
 GO(SDL_GetDisplayBounds, iFip)
-// GO(SDL_GetDisplayDPI, iFippp)
-// GO(SDL_GetDisplayMode, iFiip)
-// GO(SDL_GetDisplayName, pFi)
-// GO(SDL_GetDisplayOrientation, uFi)
+//GO(SDL_GetDisplayDPI, iFippp)
+GOM(SDL_GetDisplayMode, iFiip)  //%noE
+GO(SDL_GetDisplayName, pFi)
+//GO(SDL_GetDisplayOrientation, uFi)
 GO(SDL_GetDisplayUsableBounds, iFip)
 GO(SDL_getenv, pFp)
 GO(SDL_GetError, pFv)
-// GOM(SDL_GetEventFilter, iFEpp)
-// GO(SDL_GetGlobalMouseState, uFpp)
-// GO(SDL_GetGrabbedWindow, pFv)
-// GO(SDL_GetHint, pFp)
+//GOM(SDL_GetEventFilter, iFEpp)
+//GO(SDL_GetGlobalMouseState, uFpp)
+//GO(SDL_GetGrabbedWindow, pFv)
+//GO(SDL_GetHint, pFp)
 GO(SDL_GetHintBoolean, uFpu)
-// GOM(SDL_GetJoystickGUIDInfo, vFGpppp)
-// GO(SDL_GetKeyboardFocus, pFv)
-// GO(SDL_GetKeyboardState, pFp)
-// GO(SDL_GetKeyFromName, iFp)
-// GO(SDL_GetKeyFromScancode, iFu)
-// GO(SDL_GetKeyName, pFi)
-// GO(SDL_GetMemoryFunctions, vFpppp)
+//GOM(SDL_GetJoystickGUIDInfo, vFGpppp)
+GO(SDL_GetKeyboardFocus, pFv)
+//GO(SDL_GetKeyboardState, pFp)
+//GO(SDL_GetKeyFromName, iFp)
+//GO(SDL_GetKeyFromScancode, iFu)
+//GO(SDL_GetKeyName, pFi)
+//GO(SDL_GetMemoryFunctions, vFpppp)
 GO(SDL_GetModState, uFv)
-// GO(SDL_GetMouseFocus, pFv)
+GO(SDL_GetMouseFocus, pFv)
 GO(SDL_GetMouseState, uFpp)
 GO(SDL_GetNumAllocations, iFv)
 GO(SDL_GetNumAudioDevices, iFi)
@@ -229,80 +229,80 @@ GO(SDL_GetNumTouchDevices, iFv)
 GO(SDL_GetNumTouchFingers, iFu)
 GO(SDL_GetNumVideoDisplays, iFv)
 GO(SDL_GetNumVideoDrivers, iFv)
-// GOM(SDL_GetOriginalMemoryFunctions,
-// GO(SDL_GetPerformanceCounter, UFv)
-// GO(SDL_GetPerformanceFrequency, LFv)
-// GO(SDL_GetPixelFormatName, pFu)
-// GO(SDL_GetPlatform, pFv)
-// GO(SDL_GetPointDisplayIndex, iFp)
-// GO(SDL_GetPowerInfo, uFpp)
-// GO(SDL_GetPreferredLocales, pFv)
-// GO(SDL_GetPrefPath, pFpp)
-// GO(SDL_GetPrimarySelectionText, pFv)
-// GO(SDL_GetQueuedAudioSize, uFu)
-// GO(SDL_GetRectDisplayIndex, iFp)
+//GOM(SDL_GetOriginalMemoryFunctions,
+//GO(SDL_GetPerformanceCounter, UFv)
+//GO(SDL_GetPerformanceFrequency, LFv)
+//GO(SDL_GetPixelFormatName, pFu)
+//GO(SDL_GetPlatform, pFv)
+//GO(SDL_GetPointDisplayIndex, iFp)
+//GO(SDL_GetPowerInfo, uFpp)
+//GO(SDL_GetPreferredLocales, pFv)
+//GO(SDL_GetPrefPath, pFpp)
+//GO(SDL_GetPrimarySelectionText, pFv)
+//GO(SDL_GetQueuedAudioSize, uFu)
+//GO(SDL_GetRectDisplayIndex, iFp)
 GO(SDL_GetRelativeMouseMode, iFv)
-// GO(SDL_GetRelativeMouseState, uFpp)
-// GO(SDL_GetRenderDrawBlendMode, iFpp)
-// GO(SDL_GetRenderDrawColor, iFppppp)
-// GO(SDL_GetRenderDriverInfo, iFip)
-// GO(SDL_GetRenderer, pFp)
-// GO(SDL_GetRendererInfo, iFpp)
-// GO(SDL_GetRendererOutputSize, iFppp)
-// GO(SDL_GetRenderTarget, pFp)
-// GO(SDL_GetRevision, pFv)
-// GO(SDL_GetRevisionNumber, iFv)
-// GO(SDL_GetRGB, vFupppp)
-// GO(SDL_GetRGBA, vFuppppp)
-// GO(SDL_GetScancodeFromKey, uFi)
-// GO(SDL_GetScancodeFromName, uFp)
-// GO(SDL_GetScancodeName, pFu)
-// GO(SDL_GetShapedWindowMode, iFpp)
-// GO(SDL_GetSurfaceAlphaMod, iFpp)
-// GO(SDL_GetSurfaceBlendMode, iFpp)
-// GO(SDL_GetSurfaceColorMod, iFpppp)
-// GO(SDL_GetSystemRAM, iFv)
-// GO(SDL_GetTextureAlphaMod, iFpp)
-// GO(SDL_GetTextureBlendMode, iFpp)
-// GO(SDL_GetTextureColorMod, iFpppp)
-// GOM(SDL_GetThreadID, LFEp)
-// GO(SDL_GetThreadName, pFp)
+//GO(SDL_GetRelativeMouseState, uFpp)
+//GO(SDL_GetRenderDrawBlendMode, iFpp)
+//GO(SDL_GetRenderDrawColor, iFppppp)
+//GO(SDL_GetRenderDriverInfo, iFip)
+//GO(SDL_GetRenderer, pFp)
+//GO(SDL_GetRendererInfo, iFpp)
+//GO(SDL_GetRendererOutputSize, iFppp)
+//GO(SDL_GetRenderTarget, pFp)
+//GO(SDL_GetRevision, pFv)
+//GO(SDL_GetRevisionNumber, iFv)
+//GO(SDL_GetRGB, vFupppp)
+//GO(SDL_GetRGBA, vFuppppp)
+//GO(SDL_GetScancodeFromKey, uFi)
+//GO(SDL_GetScancodeFromName, uFp)
+//GO(SDL_GetScancodeName, pFu)
+//GO(SDL_GetShapedWindowMode, iFpp)
+//GO(SDL_GetSurfaceAlphaMod, iFpp)
+//GO(SDL_GetSurfaceBlendMode, iFpp)
+//GO(SDL_GetSurfaceColorMod, iFpppp)
+//GO(SDL_GetSystemRAM, iFv)
+//GO(SDL_GetTextureAlphaMod, iFpp)
+//GO(SDL_GetTextureBlendMode, iFpp)
+//GO(SDL_GetTextureColorMod, iFpppp)
+//GOM(SDL_GetThreadID, LFEp)
+//GO(SDL_GetThreadName, pFp)
 GO(SDL_GetTicks, uFv)
-// GO(SDL_GetTicks64, UFv)
-// GO(SDL_GetTouchDevice, lFi)
-// GO(SDL_GetTouchDeviceType, iFl)
-// GO(SDL_GetTouchFinger, pFli)
-// GO(SDL_GetVersion, vFp)
-// GO(SDL_GetVideoDriver, pFi)
-// GO(SDL_GetWindowBordersSize, iFppppp)
-// GO(SDL_GetWindowBrightness, fFp)
-// GO(SDL_GetWindowData, pFpp)
+//GO(SDL_GetTicks64, UFv)
+//GO(SDL_GetTouchDevice, lFi)
+//GO(SDL_GetTouchDeviceType, iFl)
+//GO(SDL_GetTouchFinger, pFli)
+//GO(SDL_GetVersion, vFp)
+GO(SDL_GetVideoDriver, pFi)
+//GO(SDL_GetWindowBordersSize, iFppppp)
+//GO(SDL_GetWindowBrightness, fFp)
+GO(SDL_GetWindowData, pFpp)
 GO(SDL_GetWindowDisplayIndex, iFp)
 GOM(SDL_GetWindowDisplayMode, iFpp) //%noE
 GO(SDL_GetWindowFlags, uFp)
-// GO(SDL_GetWindowFromID, pFu)
-// GO(SDL_GetWindowGammaRamp, iFpppp)
+GO(SDL_GetWindowFromID, pFu)
+//GO(SDL_GetWindowGammaRamp, iFpppp)
 GO(SDL_GetWindowGrab, iFp)
 GO(SDL_GetWindowID, uFp)
-// GO(SDL_GetWindowMaximumSize, vFppp)
-// GO(SDL_GetWindowMinimumSize, vFppp)
-// GO(SDL_GetWindowOpacity, iFpp)
-// GO(SDL_GetWindowPixelFormat, uFp)
-// GO(SDL_GetWindowPosition, vFppp)
+GO(SDL_GetWindowMaximumSize, vFppp)
+GO(SDL_GetWindowMinimumSize, vFppp)
+//GO(SDL_GetWindowOpacity, iFpp)
+//GO(SDL_GetWindowPixelFormat, uFp)
+GO(SDL_GetWindowPosition, vFppp)
 GO(SDL_GetWindowSize, vFppp)
-// GO(SDL_GetWindowSizeInPixels, vFppp)
-// GO(SDL_GetWindowSurface, pFp)
-// GO(SDL_GetWindowTitle, pFp)
-// GO(SDL_GetWindowWMInfo, iFpp)
-// GO(SDL_GetYUVConversionMode, uFv)
-// GO(SDL_GetYUVConversionModeForResolution, uFii)
-// GO(SDL_GL_BindTexture, iFppp)
+//GO(SDL_GetWindowSizeInPixels, vFppp)
+//GO(SDL_GetWindowSurface, pFp)
+GO(SDL_GetWindowTitle, pFp)
+GOM(SDL_GetWindowWMInfo, iFpp)  //%noE
+GO(SDL_GetYUVConversionMode, uFv)
+GO(SDL_GetYUVConversionModeForResolution, uFii)
+//GO(SDL_GL_BindTexture, iFppp)
 GO(SDL_GL_CreateContext, pFp)
 GO(SDL_GL_DeleteContext, vFp)
-// GO(SDL_GL_ExtensionSupported, iFp)
-// GO(SDL_GL_GetAttribute, iFup)
-// GO(SDL_GL_GetCurrentContext, pFv)
-// GO(SDL_GL_GetCurrentWindow, pFv)
+//GO(SDL_GL_ExtensionSupported, iFp)
+//GO(SDL_GL_GetAttribute, iFup)
+GO(SDL_GL_GetCurrentContext, pFv)
+GO(SDL_GL_GetCurrentWindow, pFv)
 GO(SDL_GL_GetDrawableSize, vFppp)
 GOM(SDL_GL_GetProcAddress, pFEp)
 GO(SDL_GL_GetSwapInterval, iFv)
@@ -314,310 +314,310 @@ GO(SDL_GL_SetSwapInterval, iFi)
 GO(SDL_GL_SwapWindow, vFp)
 GO(SDL_GL_UnbindTexture, iFp)
 GO(SDL_GL_UnloadLibrary, vFv)
-// GO(SDL_GUIDToString, vFUUpi)
+//GO(SDL_GUIDToString, vFUUpi)
 GO(SDL_HapticClose, vFp)
-// GO(SDL_HapticDestroyEffect, vFpi)
-// GO(SDL_HapticEffectSupported, iFpp)
-// GO(SDL_HapticGetEffectStatus, iFpi)
-// GO(SDL_HapticIndex, iFp)
-// GO(SDL_HapticName, pFi)
-// GO(SDL_HapticNewEffect, iFpp)
-// GO(SDL_HapticNumAxes, iFp)
-// GO(SDL_HapticNumEffects, iFp)
-// GO(SDL_HapticNumEffectsPlaying, iFp)
-// GO(SDL_HapticOpen, pFi)
-// GO(SDL_HapticOpened, iFi)
+//GO(SDL_HapticDestroyEffect, vFpi)
+//GO(SDL_HapticEffectSupported, iFpp)
+//GO(SDL_HapticGetEffectStatus, iFpi)
+//GO(SDL_HapticIndex, iFp)
+//GO(SDL_HapticName, pFi)
+//GO(SDL_HapticNewEffect, iFpp)
+//GO(SDL_HapticNumAxes, iFp)
+//GO(SDL_HapticNumEffects, iFp)
+//GO(SDL_HapticNumEffectsPlaying, iFp)
+//GO(SDL_HapticOpen, pFi)
+//GO(SDL_HapticOpened, iFi)
 GO(SDL_HapticOpenFromJoystick, pFp)
-// GO(SDL_HapticOpenFromMouse, pFv)
-// GO(SDL_HapticPause, iFp)
-// GO(SDL_HapticQuery, uFp)
+//GO(SDL_HapticOpenFromMouse, pFv)
+GO(SDL_HapticPause, iFp)
+GO(SDL_HapticQuery, uFp)
 GO(SDL_HapticRumbleInit, iFp)
 GO(SDL_HapticRumblePlay, iFpfu)
-// GO(SDL_HapticRumbleStop, iFp)
-// GO(SDL_HapticRumbleSupported, iFp)
-// GO(SDL_HapticRunEffect, iFpiu)
-// GO(SDL_HapticSetAutocenter, iFpi)
-// GO(SDL_HapticSetGain, iFpi)
-// GO(SDL_HapticStopAll, iFp)
-// GO(SDL_HapticStopEffect, iFpi)
-// GO(SDL_HapticUnpause, iFp)
-// GO(SDL_HapticUpdateEffect, iFpip)
-// GOM(SDL_Has3DNow, iFv)
-// GOM(SDL_HasAltiVec, iFv)
-// GOM(SDL_HasAVX, iFv)
-// GOM(SDL_HasAVX2, iFv)
-// GOM(SDL_HasAVX512F, iFv)
+ GO(SDL_HapticRumbleStop, iFp)
+ GO(SDL_HapticRumbleSupported, iFp)
+//GO(SDL_HapticRunEffect, iFpiu)
+//GO(SDL_HapticSetAutocenter, iFpi)
+//GO(SDL_HapticSetGain, iFpi)
+//GO(SDL_HapticStopAll, iFp)
+//GO(SDL_HapticStopEffect, iFpi)
+//GO(SDL_HapticUnpause, iFp)
+//GO(SDL_HapticUpdateEffect, iFpip)
+//GOM(SDL_Has3DNow, iFv)
+//GOM(SDL_HasAltiVec, iFv)
+//GOM(SDL_HasAVX, iFv)
+//GOM(SDL_HasAVX2, iFv)
+//GOM(SDL_HasAVX512F, iFv)
 GO(SDL_HasClipboardText, iFv)
-// GO(SDL_HasColorKey, uFp)
-// GO(SDL_HasEvent, uFu)
-// GO(SDL_HasEvents, uFuu)
-// GO(SDL_HasIntersection, uFpp)
-// GO(SDL_HasLASX, iFv)
-// GO(SDL_HasLSX, iFv)
-// GOM(SDL_HasMMX, iFv)
-// GOM(SDL_HasNEON, iFv)
-// GOM(SDL_HasRDTSC, iFv)
-// GO(SDL_HasPrimarySelectionText, iFv)
-// GO(SDL_HasScreenKeyboardSupport, iFv)
-// GOM(SDL_HasSSE, iFv)
-// GOM(SDL_HasSSE2, iFv)
-// GOM(SDL_HasSSE3, iFv)
-// GOM(SDL_HasSSE41, iFv)
-// GOM(SDL_HasSSE42, iFv)
+//GO(SDL_HasColorKey, uFp)
+GO(SDL_HasEvent, uFu)
+GO(SDL_HasEvents, uFuu)
+//GO(SDL_HasIntersection, uFpp)
+//GO(SDL_HasLASX, iFv)
+//GO(SDL_HasLSX, iFv)
+//GOM(SDL_HasMMX, iFv)
+//GOM(SDL_HasNEON, iFv)
+//GOM(SDL_HasRDTSC, iFv)
+//GO(SDL_HasPrimarySelectionText, iFv)
+//GO(SDL_HasScreenKeyboardSupport, iFv)
+//GOM(SDL_HasSSE, iFv)
+//GOM(SDL_HasSSE2, iFv)
+//GOM(SDL_HasSSE3, iFv)
+//GOM(SDL_HasSSE41, iFv)
+//GOM(SDL_HasSSE42, iFv)
 GO(SDL_HideWindow, vFp)
-// GO(SDL_HasWindowSurface, iFp)
-// GO(SDL_iconv, LFppppp)
-// GO(SDL_iconv_close, iFp)
-// GO(SDL_iconv_open, pFpp)
-// GO(SDL_iconv_string, pFpppL)
+//GO(SDL_HasWindowSurface, iFp)
+//GO(SDL_iconv, LFppppp)
+//GO(SDL_iconv_close, iFp)
+//GO(SDL_iconv_open, pFpp)
+//GO(SDL_iconv_string, pFpppL)
 GO(SDL_Init, iFu)
 GO(SDL_InitSubSystem, iFu)
-// GO(SDL_IntersectRect, uFppp)
-// GO(SDL_IntersectRectAndLine, uFppppp)
-// GO(SDL_isdigit, iFi)
+//GO(SDL_IntersectRect, uFppp)
+//GO(SDL_IntersectRectAndLine, uFppppp)
+//GO(SDL_isdigit, iFi)
 GO(SDL_IsGameController, uFi)
-// GO(SDL_IsScreenKeyboardShown, uFp)
-// GO(SDL_IsScreenSaverEnabled, iFv)
-// GO(SDL_IsShapedWindow, uFp)
-// GO(SDL_isspace, iFi)
-// GO(SDL_IsTablet, uFv)
+//GO(SDL_IsScreenKeyboardShown, uFp)
+//GO(SDL_IsScreenSaverEnabled, iFv)
+//GO(SDL_IsShapedWindow, uFp)
+//GO(SDL_isspace, iFi)
+//GO(SDL_IsTablet, uFv)
 GO(SDL_IsTextInputActive, iFv)
-// GO(SDL_itoa, pFipi)
-// GO(SDL_JoystickAttachVirtualEx, iFp)
+//GO(SDL_itoa, pFipi)
+//GO(SDL_JoystickAttachVirtualEx, iFp)
 GO(SDL_JoystickClose, vFp)
-// GO(SDL_JoystickCurrentPowerLevel, iFp)
+//GO(SDL_JoystickCurrentPowerLevel, iFp)
 GO(SDL_JoystickEventState, iFi)
-// GO(SDL_JoystickFromInstanceID, pFi)
-// GO(SDL_JoystickGetAttached, iFp)
-// GO(SDL_JoystickGetAxis, wFpi)
-// GO(SDL_JoystickGetAxisInitialState, uFpip)
-// GO(SDL_JoystickGetBall, iFpipp)
-// GO(SDL_JoystickGetButton, CFpi)
+//GO(SDL_JoystickFromInstanceID, pFi)
+//GO(SDL_JoystickGetAttached, iFp)
+//GO(SDL_JoystickGetAxis, wFpi)
+//GO(SDL_JoystickGetAxisInitialState, uFpip)
+//GO(SDL_JoystickGetBall, iFpipp)
+//GO(SDL_JoystickGetButton, CFpi)
 GOS(SDL_JoystickGetDeviceGUID, JFEi)  // return a struct that is "uint8_t data[16]"
-// GO(SDL_JoystickGetDeviceInstanceID, iFi)
-// GO(SDL_JoystickGetDevicePlayerIndex, iFi)
-// GO(SDL_JoystickGetDeviceProduct, WFi)
-// GO(SDL_JoystickGetDeviceProductVersion, WFi)
-// GO(SDL_JoystickGetDeviceType, uFi)
-// GO(SDL_JoystickGetDeviceVendor, WFi)
-// GO(SDL_JoystickGetFirmwareVersion, WFp)
-// GO(SDL_JoystickGetGUID, HFp)
-// GO(SDL_JoystickGetGUIDFromString, HFp)
+//GO(SDL_JoystickGetDeviceInstanceID, iFi)
+//GO(SDL_JoystickGetDevicePlayerIndex, iFi)
+//GO(SDL_JoystickGetDeviceProduct, WFi)
+//GO(SDL_JoystickGetDeviceProductVersion, WFi)
+//GO(SDL_JoystickGetDeviceType, uFi)
+//GO(SDL_JoystickGetDeviceVendor, WFi)
+//GO(SDL_JoystickGetFirmwareVersion, WFp)
+//GO(SDL_JoystickGetGUID, HFp)
+//GO(SDL_JoystickGetGUIDFromString, HFp)
 GO(SDL_JoystickGetGUIDString, vFUUpi)   //uint8_t data[16] passed as 1st argument...
-// GO(SDL_JoystickGetHat, CFpi)
-// GO(SDL_JoystickGetPlayerIndex, iFp)
-// GO(SDL_JoystickGetProduct, WFp)
-// GO(SDL_JoystickGetProductVersion, WFp)
-// GO(SDL_JoystickGetSerial, pFp)
-// GO(SDL_JoystickGetType, uFp)
-// GO(SDL_JoystickGetVendor, WFp)
+//GO(SDL_JoystickGetHat, CFpi)
+//GO(SDL_JoystickGetPlayerIndex, iFp)
+//GO(SDL_JoystickGetProduct, WFp)
+//GO(SDL_JoystickGetProductVersion, WFp)
+//GO(SDL_JoystickGetSerial, pFp)
+//GO(SDL_JoystickGetType, uFp)
+//GO(SDL_JoystickGetVendor, WFp)
 GO(SDL_JoystickInstanceID, iFp)
-// GO(SDL_JoystickIsHaptic, iFp)
-// GO(SDL_JoystickName, pFp)
+GO(SDL_JoystickIsHaptic, iFp)
+GO(SDL_JoystickName, pFp)
 GO(SDL_JoystickNameForIndex, pFi)
-// GO(SDL_JoystickNumAxes, iFp)
-// GO(SDL_JoystickNumBalls, iFp)
-// GO(SDL_JoystickNumButtons, iFp)
-// GO(SDL_JoystickNumHats, iFp)
+GO(SDL_JoystickNumAxes, iFp)
+GO(SDL_JoystickNumBalls, iFp)
+GO(SDL_JoystickNumButtons, iFp)
+GO(SDL_JoystickNumHats, iFp)
 GO(SDL_JoystickOpen, pFi)
-// GO(SDL_JoystickPath, pFp)
-// GO(SDL_JoystickPathForIndex, pFi)
-// GO(SDL_JoystickRumble, iFpWWu)
-// GO(SDL_JoystickRumbleTriggers, iFpWWu)
-// GO(SDL_JoystickUpdate, vFv)
-// GO(SDL_LinuxSetThreadPriority, iFli)
-// GO(SDL_lltoa, pFlpi)
+//GO(SDL_JoystickPath, pFp)
+//GO(SDL_JoystickPathForIndex, pFi)
+//GO(SDL_JoystickRumble, iFpWWu)
+//GO(SDL_JoystickRumbleTriggers, iFpWWu)
+//GO(SDL_JoystickUpdate, vFv)
+//GO(SDL_LinuxSetThreadPriority, iFli)
+//GO(SDL_lltoa, pFlpi)
 GOM(SDL_LoadBMP_RW, pFEpi)
-// GO(SDL_LoadDollarTemplates, iFip)
-// GO(SDL_LoadFile, pFpp)
-// GOM(SDL_LoadFile_RW, pFEppi)
-// GOM(SDL_LoadFunction, pFEpp)
-// GOM(SDL_LoadObject, pFEp)
-// GOM(SDL_LoadWAV_RW, pFEpippp)
+//GO(SDL_LoadDollarTemplates, iFip)
+//GO(SDL_LoadFile, pFpp)
+//GOM(SDL_LoadFile_RW, pFEppi)
+//GOM(SDL_LoadFunction, pFEpp)
+//GOM(SDL_LoadObject, pFEp)
+//GOM(SDL_LoadWAV_RW, pFEpippp)
 GO(SDL_LockAudio, vFv)
 GO(SDL_LockAudioDevice, vFi)
-// GO(SDL_LockJoysticks, vFv)
+//GO(SDL_LockJoysticks, vFv)
 GO(SDL_LockMutex, iFp)
-// GO(SDL_LockSensors, vFv)
-// GO(SDL_LockSurface, iFp)
-// GO(SDL_LockTexture, iFpppp)
-// GO(SDL_log, dFd)
+//GO(SDL_LockSensors, vFv)
+//GO(SDL_LockSurface, iFp)
+//GO(SDL_LockTexture, iFpppp)
+//GO(SDL_log, dFd)
 GOM(SDL_Log, vFEpV)
-// GO(SDL_log10, dFd)
-// GO(SDL_log10f, fFf)
-// GOM(SDL_LogCritical, vFEipV)
-// GOM(SDL_LogDebug, vFEipV)
-// GOM(SDL_LogError, vFEipV)
-// GO(SDL_logf, fFf)
-// GOM(SDL_LogGetOutputFunction, vFEpp)
-// GO(SDL_LogGetPriority, uFi)
-// GOM(SDL_LogInfo, vFEipV)
-// GO2(SDL_LogMessage, vFiupV, SDL_LogMessageV)
+//GO(SDL_log10, dFd)
+//GO(SDL_log10f, fFf)
+//GOM(SDL_LogCritical, vFEipV)
+//GOM(SDL_LogDebug, vFEipV)
+//GOM(SDL_LogError, vFEipV)
+//GO(SDL_logf, fFf)
+//GOM(SDL_LogGetOutputFunction, vFEpp)
+//GO(SDL_LogGetPriority, uFi)
+//GOM(SDL_LogInfo, vFEipV)
+//GO2(SDL_LogMessage, vFiupV, SDL_LogMessageV)
 GO(SDL_LogMessageV, vFiupV)
-// GO(SDL_LogResetPriorities, vFv)
-// GO(SDL_LogSetAllPriority, vFu)
-// GOM(SDL_LogSetOutputFunction, vFEpp)
-// GO(SDL_LogSetPriority, vFiu)
-// GOM(SDL_LogVerbose, vFEipV)
-// GOM(SDL_LogWarn, vFEipV)
-// GO(SDL_LowerBlit, iFpppp)
-// GO(SDL_LowerBlitScaled, iFpppp)
-// GO(SDL_ltoa, pFlpi)
+//GO(SDL_LogResetPriorities, vFv)
+//GO(SDL_LogSetAllPriority, vFu)
+//GOM(SDL_LogSetOutputFunction, vFEpp)
+//GO(SDL_LogSetPriority, vFiu)
+//GOM(SDL_LogVerbose, vFEipV)
+//GOM(SDL_LogWarn, vFEipV)
+//GO(SDL_LowerBlit, iFpppp)
+//GO(SDL_LowerBlitScaled, iFpppp)
+//GO(SDL_ltoa, pFlpi)
 GO(SDL_malloc, pFL)
-// GO(SDL_MapRGB, uFpCCC)
-// GO(SDL_MapRGBA, uFpCCCC)
-// GO(SDL_MasksToPixelFormatEnum, uFiuuuu)
-// GO(SDL_MaximizeWindow, vFp)
+//GO(SDL_MapRGB, uFpCCC)
+//GO(SDL_MapRGBA, uFpCCCC)
+//GO(SDL_MasksToPixelFormatEnum, uFiuuuu)
+//GO(SDL_MaximizeWindow, vFp)
 GO(SDL_memcmp, iFppL)
 GO(SDL_memcpy, pFppu)
 GO(SDL_memmove, pFppu)
-// GO(SDL_MemoryBarrierAcquireFunction, vFv)
-// GO(SDL_MemoryBarrierReleaseFunction, vFv)
+//GO(SDL_MemoryBarrierAcquireFunction, vFv)
+//GO(SDL_MemoryBarrierReleaseFunction, vFv)
 GO(SDL_memset, pFpiL)
-// GO(SDL_MinimizeWindow, vFp)
-// GO(SDL_MixAudio, vFppui)
+//GO(SDL_MinimizeWindow, vFp)
+//GO(SDL_MixAudio, vFppui)
 GO(SDL_MixAudioFormat, vFppWui)
-// GO(SDL_MouseIsHaptic, iFv)
+GO(SDL_MouseIsHaptic, iFv)
 GO(SDL_NewAudioStream, pFWCiWCi)
-// GO(SDL_NumHaptics, iFv)
+GO(SDL_NumHaptics, iFv)
 GO(SDL_NumJoysticks, iFv)
-// GO(SDL_NumSensors, iFv)
+GO(SDL_NumSensors, iFv)
 GOM(SDL_OpenAudio, iFEpp)
 GOM(SDL_OpenAudioDevice, uFEpippi)
 GO(SDL_PauseAudio, vFi)
 GO(SDL_PauseAudioDevice, vFui)
-// GO(SDL_PeepEvents, iFpiuuu)
-// GO(SDL_PixelFormatEnumToMasks, uFuppppp)
+//GO(SDL_PeepEvents, iFpiuuu)
+//GO(SDL_PixelFormatEnumToMasks, uFuppppp)
 GOM(SDL_PollEvent, iFp) //%noE
-// GO(SDL_pow, dFdd)
-// GO(SDL_powf, fFff)
-// GO(SDL_PumpEvents, vFv)
+GO(SDL_pow, dFdd)
+GO(SDL_powf, fFff)
+GO(SDL_PumpEvents, vFv)
 GOM(SDL_PushEvent, iFp)     //%noE
-// GO2(SDL_qsort, vFEpuup, my_qsort)
-// GO(SDL_QueryTexture, iFppppp)
-// GO(SDL_QueueAudio, iFupu)
+//GO2(SDL_qsort, vFEpuup, my_qsort)
+//GO(SDL_QueryTexture, iFppppp)
+//GO(SDL_QueueAudio, iFupu)
 GO(SDL_Quit, vFv)
  GO(SDL_QuitSubSystem, vFu)
 GO(SDL_RaiseWindow, vFp)
-// GOM(SDL_ReadBE16, uFEp)
-// GOM(SDL_ReadBE32, uFEp)
-// GOM(SDL_ReadBE64, UFEp)
-// GOM(SDL_ReadLE16, uFEp)
-// GOM(SDL_ReadLE32, uFEp)
-// GOM(SDL_ReadLE64, UFEp)
-// GOM(SDL_ReadU8, uFEp)
+//GOM(SDL_ReadBE16, uFEp)
+//GOM(SDL_ReadBE32, uFEp)
+//GOM(SDL_ReadBE64, UFEp)
+//GOM(SDL_ReadLE16, uFEp)
+//GOM(SDL_ReadLE32, uFEp)
+//GOM(SDL_ReadLE64, UFEp)
+//GOM(SDL_ReadU8, uFEp)
 GO(SDL_realloc, pFpL)
-// GO(SDL_RecordGesture, iFl)
-// GO(SDL_RegisterEvents, uFi)
-// GOM(SDL_RemoveTimer, iFEp)
+//GO(SDL_RecordGesture, iFl)
+//GO(SDL_RegisterEvents, uFi)
+//GOM(SDL_RemoveTimer, iFEp)
 GO(SDL_RenderClear, iFp)
 GO(SDL_RenderCopy, iFpppp)
-// GO(SDL_RenderCopyEx, iFppppdpu)
+//GO(SDL_RenderCopyEx, iFppppdpu)
 // SDL_RenderCopyExF
 // SDL_RenderCopyF
-// GO(SDL_RenderDrawLine, iFpiiii)
+//GO(SDL_RenderDrawLine, iFpiiii)
 // SDL_RenderDrawLineF
-// GO(SDL_RenderDrawLines, iFppi)
+//GO(SDL_RenderDrawLines, iFppi)
 // SDL_RenderDrawLinesF
-// GO(SDL_RenderDrawPoint, iFpii)
+//GO(SDL_RenderDrawPoint, iFpii)
 // SDL_RenderDrawPointF
-// GO(SDL_RenderDrawPoints, iFppi)
+//GO(SDL_RenderDrawPoints, iFppi)
 // SDL_RenderDrawPointsF
-// GO(SDL_RenderDrawRect, iFpp)
+//GO(SDL_RenderDrawRect, iFpp)
 // SDL_RenderDrawRectF
-// GO(SDL_RenderDrawRects, iFppi)
+//GO(SDL_RenderDrawRects, iFppi)
 // SDL_RenderDrawRectsF
-// GO(SDL_RenderFillRect, iFpp)
+//GO(SDL_RenderFillRect, iFpp)
 // SDL_RenderFillRectF
-// GO(SDL_RenderFillRects, iFppi)
+//GO(SDL_RenderFillRects, iFppi)
 // SDL_RenderFillRectsF
 // SDL_RenderFlush
-// GO(SDL_RenderGetClipRect, vFpp)
-// GO(SDL_RenderGetIntegerScale, iFp)
-// GO(SDL_RenderGetLogicalSize, vFppp)
+//GO(SDL_RenderGetClipRect, vFpp)
+//GO(SDL_RenderGetIntegerScale, iFp)
+//GO(SDL_RenderGetLogicalSize, vFppp)
 // SDL_RenderGetMetalCommandEncoder
 // SDL_RenderGetMetalLayer
-// GO(SDL_RenderGetScale, vFppp)
-// GO(SDL_RenderGetViewport, vFpp)
-// GO(SDL_RenderIsClipEnabled, uFp)
+//GO(SDL_RenderGetScale, vFppp)
+//GO(SDL_RenderGetViewport, vFpp)
+//GO(SDL_RenderIsClipEnabled, uFp)
 GO(SDL_RenderPresent, vFp)
-// GO(SDL_RenderReadPixels, iFppupi)
-// GO(SDL_RenderSetClipRect, iFpp)
-// GO(SDL_RenderSetIntegerScale, iFpu)
+//GO(SDL_RenderReadPixels, iFppupi)
+//GO(SDL_RenderSetClipRect, iFpp)
+//GO(SDL_RenderSetIntegerScale, iFpu)
 GO(SDL_RenderSetLogicalSize, iFpii)
-// GO(SDL_RenderSetScale, iFpff)
-// GO(SDL_RenderSetViewport, iFpp)
-// GO(SDL_RenderTargetSupported, iFp)
-// GO(SDL_RenderSetVSync, iFpi)
-// GO(SDL_RenderWindowToLogical, vFpiipp)
-// GO(SDL_ReportAssertion, uFpppi)
-// GO(SDL_ResetAssertionReport, vFv)
-// GO(SDL_ResetHints, vFv)
-// GO(SDL_ResetKeyboard, vFv)
-// GO(SDL_RestoreWindow, vFp)
-// GOM(SDL_RWFromConstMem, pFEpi)
-// GOM(SDL_RWFromFP, pFEpi)
+//GO(SDL_RenderSetScale, iFpff)
+//GO(SDL_RenderSetViewport, iFpp)
+//GO(SDL_RenderTargetSupported, iFp)
+//GO(SDL_RenderSetVSync, iFpi)
+//GO(SDL_RenderWindowToLogical, vFpiipp)
+//GO(SDL_ReportAssertion, uFpppi)
+//GO(SDL_ResetAssertionReport, vFv)
+//GO(SDL_ResetHints, vFv)
+//GO(SDL_ResetKeyboard, vFv)
+//GO(SDL_RestoreWindow, vFp)
+//GOM(SDL_RWFromConstMem, pFEpi)
+//GOM(SDL_RWFromFP, pFEpi)
 GOM(SDL_RWFromFile, pFEpp)
-// GOM(SDL_RWFromMem, pFEpi)
-// GOM(SDL_SaveAllDollarTemplates, iFEp)
-// GOM(SDL_SaveBMP_RW, iFEppi)
-// GOM(SDL_SaveDollarTemplate, iFEip)
+//GOM(SDL_RWFromMem, pFEpi)
+//GOM(SDL_SaveAllDollarTemplates, iFEp)
+//GOM(SDL_SaveBMP_RW, iFEppi)
+//GOM(SDL_SaveDollarTemplate, iFEip)
 GO(SDL_scalbn, dFdi)
 GO(SDL_scalbnf, fFfi)
-// GO(SDL_SemPost, iFp)
-// GO(SDL_SemTryWait, iFp)
-// GO(SDL_SemValue, uFp)
-// GO(SDL_SemWait, iFp)
-// GO(SDL_SemWaitTimeout, iFpu)
-// GO(SDL_SensorClose, vFp)
-// GO(SDL_SensorFromInstanceID, pFi)
-// GO(SDL_SensorGetData, iFppi)
-// GO(SDL_SensorGetDataWithTimestamp, iFpppi)
-// GO(SDL_SensorGetDeviceInstanceID, iFi)
-// GO(SDL_SensorGetDeviceName, pFi)
-// GO(SDL_SensorGetDeviceNonPortableType, iFi)
-// GO(SDL_SensorGetDeviceType, iFi)
-// GO(SDL_SensorGetInstanceID, iFp)
-// GO(SDL_SensorGetName, pFp)
-// GO(SDL_SensorGetNonPortableType, iFp)
-// GO(SDL_SensorGetType, iFp)
-// GO(SDL_SensorOpen, pFi)
-// GO(SDL_SensorUpdate, vFv)
+//GO(SDL_SemPost, iFp)
+//GO(SDL_SemTryWait, iFp)
+//GO(SDL_SemValue, uFp)
+//GO(SDL_SemWait, iFp)
+//GO(SDL_SemWaitTimeout, iFpu)
+//GO(SDL_SensorClose, vFp)
+//GO(SDL_SensorFromInstanceID, pFi)
+//GO(SDL_SensorGetData, iFppi)
+//GO(SDL_SensorGetDataWithTimestamp, iFpppi)
+//GO(SDL_SensorGetDeviceInstanceID, iFi)
+//GO(SDL_SensorGetDeviceName, pFi)
+//GO(SDL_SensorGetDeviceNonPortableType, iFi)
+//GO(SDL_SensorGetDeviceType, iFi)
+//GO(SDL_SensorGetInstanceID, iFp)
+//GO(SDL_SensorGetName, pFp)
+//GO(SDL_SensorGetNonPortableType, iFp)
+//GO(SDL_SensorGetType, iFp)
+//GO(SDL_SensorOpen, pFi)
+//GO(SDL_SensorUpdate, vFv)
 // SDL_SetAssertionHandler
 GO(SDL_SetClipboardText, iFp)
-// GO(SDL_SetClipRect, uFpp)
-// GO(SDL_SetColorKey, iFpiu)
+//GO(SDL_SetClipRect, uFpp)
+//GO(SDL_SetColorKey, iFpiu)
 GO(SDL_SetCursor, vFp)
 GO(SDL_setenv, iFppi)
 GO(SDL_SetError, iFppppp)    // it use ..., so putarbitrary  4 args
-// GOM(SDL_SetEventFilter, vFEpp)
+//GOM(SDL_SetEventFilter, vFEpp)
 GO(SDL_SetHint, uFpp)
-// GO(SDL_SetHintWithPriority, uFppu)
+//GO(SDL_SetHintWithPriority, uFppu)
 GO(SDL_SetMainReady, vFv)
-// GOM(SDL_SetMemoryFunctions,
+//GOM(SDL_SetMemoryFunctions,
 GO(SDL_SetModState, vFu)
-// GO(SDL_SetPaletteColors, iFppii)
+//GO(SDL_SetPaletteColors, iFppii)
 // SDL_SetPixelFormatPalette
-// GO(SDL_SetPrimarySelectionText, iFp)
+//GO(SDL_SetPrimarySelectionText, iFp)
 GO(SDL_SetRelativeMouseMode, iFi)
-// GO(SDL_SetRenderDrawBlendMode, iFpu)
+//GO(SDL_SetRenderDrawBlendMode, iFpu)
 GO(SDL_SetRenderDrawColor, iFpCCCC)
-// GO(SDL_SetRenderTarget, iFpp)
-// GO(SDL_SetSurfaceAlphaMod, iFpC)
-// GO(SDL_SetSurfaceBlendMode, iFpu)
-// GO(SDL_SetSurfaceColorMod, iFpCCC)
+//GO(SDL_SetRenderTarget, iFpp)
+//GO(SDL_SetSurfaceAlphaMod, iFpC)
+//GO(SDL_SetSurfaceBlendMode, iFpu)
+//GO(SDL_SetSurfaceColorMod, iFpCCC)
 // SDL_SetSurfaceColorMod
-// GO(SDL_SetSurfacePalette, iFpp)
-// GO(SDL_SetSurfaceRLE, iFpi)
-// GO(SDL_SetTextInputRect, vFp)
-// GO(SDL_SetTextureAlphaMod, iFpC)
-// GO(SDL_SetTextureBlendMode, iFpu)
-// GO(SDL_SetTextureColorMod, iFpCCC)
-// GO(SDL_SetTextureScaleMode, iFpu)
+//GO(SDL_SetSurfacePalette, iFpp)
+//GO(SDL_SetSurfaceRLE, iFpi)
+//GO(SDL_SetTextInputRect, vFp)
+//GO(SDL_SetTextureAlphaMod, iFpC)
+//GO(SDL_SetTextureBlendMode, iFpu)
+//GO(SDL_SetTextureColorMod, iFpCCC)
+//GO(SDL_SetTextureScaleMode, iFpu)
 GO(SDL_SetThreadPriority, iFu)
 GO(SDL_SetWindowBordered, vFpi)
-// GO(SDL_SetWindowBrightness, iFpf)
-// GO(SDL_SetWindowData, pFppp)
+//GO(SDL_SetWindowBrightness, iFpf)
+GO(SDL_SetWindowData, pFppp)
 GOM(SDL_SetWindowDisplayMode, iFpp) //%noE
 GO(SDL_SetWindowFullscreen, iFpu)
 GO(SDL_SetWindowGammaRamp, iFpppp)
@@ -625,33 +625,33 @@ GO(SDL_SetWindowGrab, vFpi)
 // SDL_SetWindowHitTest
 GOM(SDL_SetWindowIcon, vFEpp)
 // SDL_SetWindowInputFocus
-// GO(SDL_SetWindowMaximumSize, vFpii)
+//GO(SDL_SetWindowMaximumSize, vFpii)
 GO(SDL_SetWindowMinimumSize, vFpii)
 // SDL_SetWindowModalFor
 // SDL_SetWindowOpacity
 GO(SDL_SetWindowPosition, vFpii)
 GO(SDL_SetWindowResizable, vFpi)
-// GO(SDL_SetWindowShape, iFppp)
+//GO(SDL_SetWindowShape, iFppp)
 GO(SDL_SetWindowSize, vFpii)
 GO(SDL_SetWindowTitle, vFpp)
 // SDL_SetYUVConversionMode
 GO(SDL_ShowCursor, iFi)
-// GO(SDL_ShowMessageBox, iFpp)
-// GO(SDL_ShowSimpleMessageBox, iFuppp)
+//GO(SDL_ShowMessageBox, iFpp)
+//GO(SDL_ShowSimpleMessageBox, iFuppp)
 GO(SDL_ShowWindow, vFp)
-// GO(SDL_SIMDAlloc, pFL)
-// GO(SDL_SIMDGetAlignment, LFv)
-// GO(SDL_SIMDRealloc, pFpL)
-// GO(SDL_SIMDFree, vFp)
+//GO(SDL_SIMDAlloc, pFL)
+//GO(SDL_SIMDGetAlignment, LFv)
+//GO(SDL_SIMDRealloc, pFpL)
+//GO(SDL_SIMDFree, vFp)
 GO(SDL_sin, dFd)
 GO(SDL_sinf, fFf)
 GOM(SDL_snprintf, iFEpLpV)
-// GO(SDL_SoftStretch, iFpppp)
+//GO(SDL_SoftStretch, iFpppp)
 GO(SDL_sqrt, dFd)
 GO(SDL_sqrtf, fFf)
 GO2(SDL_sscanf, iFEppV, my_sscanf)
-// GO(SDL_StartTextInput, vFv)
-// GO(SDL_StopTextInput, vFv)
+//GO(SDL_StartTextInput, vFv)
+//GO(SDL_StopTextInput, vFv)
 GO(SDL_strcasecmp, iFpp)
 GO(SDL_strchr, pFpi)
 GO(SDL_strcmp, iFpp)
@@ -673,46 +673,46 @@ GO(SDL_strtoull, LFppi)
 GO(SDL_strupr, pFp)
 GO(SDL_tan, dFd)
 GO(SDL_tanf, fFf)
-// GO(SDL_ThreadID, LFv)
-// GO(SDL_TLSCreate, uFv)
-// GO(SDL_TLSGet, pFu)
-// GOM(SDL_TLSSet, iFEupp)
+//GO(SDL_ThreadID, LFv)
+//GO(SDL_TLSCreate, uFv)
+//GO(SDL_TLSGet, pFu)
+//GOM(SDL_TLSSet, iFEupp)
 GO(SDL_tolower, iFi)
 GO(SDL_toupper, iFi)
-// GO(SDL_TryLockMutex, iFp)
+//GO(SDL_TryLockMutex, iFp)
 GO(SDL_uitoa, pFupi)
 GO(SDL_ulltoa, pFLpi)
 GO(SDL_ultoa, pFLpi)
-// GO(SDL_UnionRect, vFppp)
-// GOM(SDL_UnloadObject, vFEp)
+//GO(SDL_UnionRect, vFppp)
+//GOM(SDL_UnloadObject, vFEp)
 GO(SDL_UnlockAudio, vFv)
 GO(SDL_UnlockAudioDevice, vFi)
-// GO(SDL_UnlockJoysticks, vFv)
+//GO(SDL_UnlockJoysticks, vFv)
 GO(SDL_UnlockMutex, iFp)
-// GO(SDL_UnlockSensors, vFv)
-// GO(SDL_UnlockSurface, vFp)
-// GO(SDL_UnlockTexture, vFp)
+//GO(SDL_UnlockSensors, vFv)
+//GO(SDL_UnlockSurface, vFp)
+//GO(SDL_UnlockTexture, vFp)
 GO(SDL_UpdateTexture, iFpppi)
-// GO(SDL_UpdateWindowSurface, iFp)
-// GO(SDL_UpdateWindowSurfaceRects, iFppi)
-// GO(SDL_UpdateYUVTexture, iFpppipipi)
-// GO(SDL_UpperBlit, iFpppp)
-// GO(SDL_UpperBlitScaled, iFpppp)
-// GO(SDL_utf8strlcpy, uFppu)
+//GO(SDL_UpdateWindowSurface, iFp)
+//GO(SDL_UpdateWindowSurfaceRects, iFppi)
+//GO(SDL_UpdateYUVTexture, iFpppipipi)
+//GO(SDL_UpperBlit, iFpppp)
+//GO(SDL_UpperBlitScaled, iFpppp)
+//GO(SDL_utf8strlcpy, uFppu)
 // SDL_utf8strlen
-// GO(SDL_VideoInit, iFp)
-// GO(SDL_VideoQuit, vFv)
+//GO(SDL_VideoInit, iFp)
+//GO(SDL_VideoQuit, vFv)
 GOM(SDL_vsnprintf, iFEpLpp)
 // SDL_vsscanf
-// GO(SDL_Vulkan_CreateSurface, iFppp)
-// GO(SDL_Vulkan_GetDrawableSize, vFppp)
-// GO(SDL_Vulkan_GetInstanceExtensions, iFppp)
-// GOM(SDL_Vulkan_GetVkGetInstanceProcAddr, pFEv)
-// GO(SDL_Vulkan_LoadLibrary, iFp) //TODO: wrap to also call my_dlopen with path?
-// GO(SDL_Vulkan_UnloadLibrary, vFv)
-// GO(SDL_WaitEvent, iFp)
+//GO(SDL_Vulkan_CreateSurface, iFppp)
+//GO(SDL_Vulkan_GetDrawableSize, vFppp)
+//GO(SDL_Vulkan_GetInstanceExtensions, iFppp)
+//GOM(SDL_Vulkan_GetVkGetInstanceProcAddr, pFEv)
+//GO(SDL_Vulkan_LoadLibrary, iFp) //TODO: wrap to also call my_dlopen with path?
+//GO(SDL_Vulkan_UnloadLibrary, vFv)
+//GO(SDL_WaitEvent, iFp)
 GOM(SDL_WaitEventTimeout, iFpi) //%noE
-// GO(SDL_WaitThread, vFpp)
+//GO(SDL_WaitThread, vFpp)
 GO(SDL_WarpMouseGlobal, iFii)
 GO(SDL_WarpMouseInWindow, vFpii)
 GO(SDL_WasInit, uFu)
@@ -720,14 +720,14 @@ GO(SDL_WasInit, uFu)
 // SDL_wcsdup
 // SDL_wcslcat
 // SDL_wcslcpy
-// GO(SDL_wcslen, LFp)
-// GOM(SDL_WriteBE16, uFEpW)
-// GOM(SDL_WriteBE32, uFEpu)
-// GOM(SDL_WriteBE64, uFEpU)
-// GOM(SDL_WriteLE16, uFEpW)
-// GOM(SDL_WriteLE32, uFEpu)
-// GOM(SDL_WriteLE64, uFEpU)
-// GOM(SDL_WriteU8, uFEpu)
+//GO(SDL_wcslen, LFp)
+//GOM(SDL_WriteBE16, uFEpW)
+//GOM(SDL_WriteBE32, uFEpu)
+//GOM(SDL_WriteBE64, uFEpU)
+//GOM(SDL_WriteLE16, uFEpW)
+//GOM(SDL_WriteLE32, uFEpu)
+//GOM(SDL_WriteLE64, uFEpU)
+//GOM(SDL_WriteU8, uFEpu)
 
 GOM(SDL_RWseek, IFEpIi)
 GOM(SDL_RWtell, IFEp)
@@ -736,15 +736,15 @@ GOM(SDL_RWread, LFEppLL)
 GOM(SDL_RWwrite, LFEppLL)
 GOM(SDL_RWclose, iFEp)
 
-// GO2(SDL_mutexP, iFp, SDL_LockMutex)
-// GO2(SDL_mutexV, iFp, SDL_UnlockMutex)
+//GO2(SDL_mutexP, iFp, SDL_LockMutex)
+//GO2(SDL_mutexV, iFp, SDL_UnlockMutex)
 
 GO(SDL_doesntexist, IFpIi)
 GOM(SDL_notreal, pFEpi)
-// GOM(SDL_IsJoystickPS4, iFEWW)
-// GOM(SDL_IsJoystickNintendoSwitchPro, iFEWW)
-// GOM(SDL_IsJoystickSteamController, iFEWW)
-// GOM(SDL_IsJoystickXbox360, iFEWW)
-// GOM(SDL_IsJoystickXboxOne, iFEWW)
-// GOM(SDL_IsJoystickXInput, iFEUU)
-// GOM(SDL_IsJoystickHIDAPI, iFEUU)
+//GOM(SDL_IsJoystickPS4, iFEWW)
+//GOM(SDL_IsJoystickNintendoSwitchPro, iFEWW)
+//GOM(SDL_IsJoystickSteamController, iFEWW)
+//GOM(SDL_IsJoystickXbox360, iFEWW)
+//GOM(SDL_IsJoystickXboxOne, iFEWW)
+//GOM(SDL_IsJoystickXInput, iFEUU)
+//GOM(SDL_IsJoystickHIDAPI, iFEUU)
diff --git a/src/wrapped32/wrappedsdl2image.c b/src/wrapped32/wrappedsdl2image.c
index 29daec70..863618dd 100644
--- a/src/wrapped32/wrappedsdl2image.c
+++ b/src/wrapped32/wrappedsdl2image.c
@@ -53,7 +53,14 @@ GO(IMG_LoadXPM_RW)
 GO(IMG_LoadXV_RW)
 #undef GO
 
- EXPORT void *my32_2_IMG_LoadTyped_RW(x64emu_t* emu, void* a, int32_t b, void* c)
+EXPORT void *my32_2_IMG_Load(x64emu_t* emu, void* path)
+{
+    void* r = my->IMG_Load(path);
+    inplace_SDL2_Surface_to_32(r);
+    return r;
+}
+
+EXPORT void *my32_2_IMG_LoadTyped_RW(x64emu_t* emu, void* a, int32_t b, void* c)
 {
     inplace_SDL2_RWops_to_64(a);
     SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
diff --git a/src/wrapped32/wrappedsdl2image_private.h b/src/wrapped32/wrappedsdl2image_private.h
index 5e7dd7a2..e826c42b 100644
--- a/src/wrapped32/wrappedsdl2image_private.h
+++ b/src/wrapped32/wrappedsdl2image_private.h
@@ -6,7 +6,7 @@
 GO(IMG_Init,iFi)
 GO(IMG_InvertAlpha,iFi)
 GO(IMG_Linked_Version,pFv)
-//GO(IMG_Load,pFp)
+GOM(IMG_Load,pFEp)
 GOM(IMG_LoadBMP_RW,pFEp)
 GOM(IMG_LoadCUR_RW,pFEp)
 GOM(IMG_LoadGIF_RW,pFEp)