about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-09-28 10:15:55 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-09-28 10:15:55 +0200
commit97a1983c59152372dfdcd4ef5277d91382b6ade3 (patch)
tree1e7c027d9cac6a38173bed433830883f16c9ebe4 /src
parent42e60bc7c52d49805a74d19745574e28d76ab46f (diff)
downloadbox64-97a1983c59152372dfdcd4ef5277d91382b6ade3.tar.gz
box64-97a1983c59152372dfdcd4ef5277d91382b6ade3.zip
[BOX32][WRAPPER] Added a bunch of 32bits functions to SDL2 and libc
Diffstat (limited to 'src')
-rw-r--r--src/include/sdl2align32.h2
-rw-r--r--src/libtools/sdl2align32.c110
-rw-r--r--src/wrapped32/generated/functions_list.txt25
-rw-r--r--src/wrapped32/generated/wrappedlibctypes32.h2
-rw-r--r--src/wrapped32/generated/wrappedsdl2defs32.h2
-rw-r--r--src/wrapped32/generated/wrappedsdl2types32.h15
-rw-r--r--src/wrapped32/generated/wrappedsdl2undefs32.h2
-rw-r--r--src/wrapped32/generated/wrapper32.c10
-rw-r--r--src/wrapped32/generated/wrapper32.h5
-rwxr-xr-xsrc/wrapped32/wrappedlibc.c30
-rwxr-xr-xsrc/wrapped32/wrappedlibc_private.h32
-rw-r--r--src/wrapped32/wrappedsdl2.c117
-rw-r--r--src/wrapped32/wrappedsdl2_private.h126
13 files changed, 375 insertions, 103 deletions
diff --git a/src/include/sdl2align32.h b/src/include/sdl2align32.h
index 4e0e97b5..6cca070b 100644
--- a/src/include/sdl2align32.h
+++ b/src/include/sdl2align32.h
@@ -880,8 +880,10 @@ typedef struct __attribute__((packed)) my_SDL2_RWops_32_s {
 
 void inplace_SDL2_DisplayMode_to_64(void* a);
 void inplace_SDL2_DisplayMode_to_32(void* a);
+void convert_SDL2_DisplayMode_to_64(void* dst_, void* src_);
 void convert_SDL2_DisplayMode_to_32(void* dst_, void* src_);
 
+void convert_SDL2_Event_to_64(void* dst_, const void* src_);
 void convert_SDL2_Event_to_32(void* dst_, const void* src_);
 
 void inplace_SDL2_Palette_to_32(void* a);
diff --git a/src/libtools/sdl2align32.c b/src/libtools/sdl2align32.c
index dbef7722..7c417869 100644
--- a/src/libtools/sdl2align32.c
+++ b/src/libtools/sdl2align32.c
@@ -43,6 +43,116 @@ void convert_SDL2_DisplayMode_to_32(void* dst_, void* src_)
     dst->driverdata = to_ptrv(src->driverdata);
 }
 
+void convert_SDL2_DisplayMode_to_64(void* dst_, void* src_)
+{
+    if (!src_ || !dst_) return;
+    my_SDL2_DisplayMode_32_t* src = src_;
+    my_SDL2_DisplayMode_t* dst = dst_;
+    dst->format = src->format;
+    dst->w = src->w;
+    dst->h = src->h;
+    dst->refresh_rate = src->refresh_rate;
+    dst->driverdata = from_ptrv(src->driverdata);
+}
+
+void convert_SDL2_Event_to_64(void* dst_, const void* src_)
+{
+    if (!src_ || !dst_) return;
+    const my_SDL2_Event_32_t* src = src_;
+    my_SDL2_Event_t* dst = dst_;
+    dst->type = src->type;
+    switch (src->type) {
+        case SDL2_WINDOWEVENT:
+            dst->window.type = src->window.type;
+            dst->window.timestamp = src->window.timestamp;
+            dst->window.windowID = src->window.windowID;
+            dst->window.event = src->window.event;
+            dst->window.padding1 = src->window.padding1;
+            dst->window.padding2 = src->window.padding2;
+            dst->window.padding3 = src->window.padding3;
+            dst->window.data1 = src->window.data1;
+            dst->window.data2 = src->window.data2;
+            break;
+        case SDL2_MOUSEMOTION:
+            dst->motion.type = src->motion.type;
+            dst->motion.timestamp = src->motion.timestamp;
+            dst->motion.windowID = src->motion.windowID;
+            dst->motion.which = src->motion.which;
+            dst->motion.state = src->motion.state;
+            dst->motion.x = src->motion.x;
+            dst->motion.y = src->motion.y;
+            dst->motion.xrel = src->motion.xrel;
+            dst->motion.yrel = src->motion.yrel;
+            break;
+        case SDL2_MOUSEBUTTONDOWN:
+        case SDL2_MOUSEBUTTONUP:
+            dst->button.type = src->button.type;
+            dst->button.timestamp = src->button.timestamp;
+            dst->button.windowID = src->button.windowID;
+            dst->button.which = src->button.which;
+            dst->button.button = src->button.button;
+            dst->button.state = src->button.state;
+            dst->button.clicks = src->button.clicks;
+            dst->button.padding1 = src->button.padding1;
+            dst->button.x = src->button.x;
+            dst->button.y = src->button.y;
+            break;
+        case SDL2_AUDIODEVICEADDED:
+        case SDL2_AUDIODEVICEREMOVED:
+            dst->adevice.type = src->adevice.type;
+            dst->adevice.timestamp = src->adevice.timestamp;
+            dst->adevice.which = src->adevice.which;
+            dst->adevice.iscapture = src->adevice.iscapture;
+            dst->adevice.padding1 = src->adevice.padding1;
+            dst->adevice.padding2 = src->adevice.padding2;
+            dst->adevice.padding3 = src->adevice.padding3;
+            break;
+        case SDL2_KEYDOWN:
+        case SDL2_KEYUP:
+            dst->key.type = src->key.type;
+            dst->key.timestamp = src->key.timestamp;
+            dst->key.windowID = src->key.windowID;
+            dst->key.state = src->key.state;
+            dst->key.repeat = src->key.repeat;
+            dst->key.padding2 = src->key.padding2;
+            dst->key.padding3 = src->key.padding3;
+            dst->key.keysym.scancode = src->key.keysym.scancode;
+            dst->key.keysym.sym = src->key.keysym.sym;
+            dst->key.keysym.mod = src->key.keysym.mod;
+            dst->key.keysym.unused = src->key.keysym.unused;
+            break;
+        case SDL2_TEXTEDITING:
+            dst->edit.type = src->edit.type;
+            dst->edit.timestamp = src->edit.timestamp;
+            dst->edit.windowID = src->edit.windowID;
+            memcpy(dst->edit.text, src->edit.text, 32);
+            dst->edit.start = src->edit.start;
+            dst->edit.length = src->edit.length;
+            break;
+        case SDL2_TEXTINPUT:
+            dst->text.type = src->text.type;
+            dst->text.timestamp = src->text.timestamp;
+            dst->text.windowID = src->text.windowID;
+            memcpy(dst->text.text, src->text.text, 32);
+            break;
+        case SDL2_MOUSEWHEEL:
+            dst->wheel.type = src->wheel.type;
+            dst->wheel.timestamp = src->wheel.timestamp;
+            dst->wheel.windowID = src->wheel.windowID;
+            dst->wheel.which = src->wheel.which;
+            dst->wheel.x = src->wheel.x;
+            dst->wheel.y = src->wheel.y;
+            dst->wheel.direction = src->wheel.direction;
+            dst->wheel.preciseX = src->wheel.preciseX;
+            dst->wheel.preciseY = src->wheel.preciseY;
+            dst->wheel.mouseX = src->wheel.mouseX;
+            dst->wheel.mouseY = src->wheel.mouseY;
+            break;
+        default:
+            printf_log(LOG_INFO, "Warning, unsuported SDL2 event %d\n", src->type);
+            memcpy(dst, src, sizeof(my_SDL2_Event_32_t));
+    }
+}
 void convert_SDL2_Event_to_32(void* dst_, const void* src_)
 {
     if (!src_ || !dst_) return;
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt
index de40c7fd..f43b5f14 100644
--- a/src/wrapped32/generated/functions_list.txt
+++ b/src/wrapped32/generated/functions_list.txt
@@ -62,6 +62,7 @@
 #() pFv -> pFv
 #() pFi -> pFi
 #() pFu -> pFu
+#() pFl -> pFl
 #() pFL -> pFL
 #() pFp -> pFp
 #() pFX -> pFX
@@ -327,6 +328,7 @@
 #() iFpuC -> iFpuC
 #() iFpuu -> iFpuu
 #() iFpuU -> iFpuU
+#() iFpfu -> iFpfu
 #() iFpLi -> iFpLi
 #() iFpLp -> iFpLp
 #() iFppi -> iFppi
@@ -501,6 +503,7 @@
 #() vFupii -> vFupii
 #() vFuppi -> vFuppi
 #() vFuppu -> vFuppu
+#() vFUUpi -> vFUUpi
 #() vFffff -> vFffff
 #() vFdddd -> vFdddd
 #() vFllii -> vFllii
@@ -888,6 +891,7 @@
 #() vFlliiiip -> vFlliiiip
 #() vFpipipiu -> vFpipipiu
 #() vFpddiidd -> vFpddiidd
+#() iFEpuiupV -> iFEpuiupV
 #() iFEpLiipV -> iFEpLiipV
 #() iFEXLpppp -> iFEXLpppp
 #() iFuiiiuup -> iFuiiiuup
@@ -927,6 +931,7 @@
 #() vFuuufffff -> vFuuufffff
 #() vFffffffff -> vFffffffff
 #() iFEpippppp -> iFEpippppp
+#() iFEpLiLppp -> iFEpLiLppp
 #() iFuiiiiuup -> iFuiiiiuup
 #() iFXpIIIppp -> iFXpIIIppp
 #() CFuiifpppp -> CFuiifpppp
@@ -1216,11 +1221,13 @@ wrappedlibc:
   - getpwnam_r
 - pFpLLiN:
 - pFppLLp:
+- iFpuiupV:
 - iFpLvvpp:
 - iFpLiipV:
 - pFpLiiii:
 - pFpLiiiI:
 - iFpippppp:
+- iFpLiLppp:
 - pFiiiiiiiiilt:
   - asctime
 wrappedlibdl:
@@ -1598,27 +1605,42 @@ wrappedsdl1:
 - iFpWCiWCi:
   - SDL_BuildAudioCVT
 wrappedsdl2:
-% G SDL_JoystickGUID UU
+% J SDL2_GUID_t uuuu
 - vFp:
   - SDL_FreeSurface
 - iFp:
   - SDL_PollEvent
+  - SDL_PushEvent
 - pFv:
   - SDL_GetBasePath
 - pFp:
   - SDL_GL_GetProcAddress
+- JFi:
+  - SDL_JoystickGetDeviceGUID
 - vFpp:
+  - SDL_AddEventWatch
+  - SDL_DelEventWatch
   - SDL_SetWindowIcon
 - vFpV:
   - SDL_Log
 - iFip:
+  - SDL_GetCurrentDisplayMode
   - SDL_GetDesktopDisplayMode
+- iFpi:
+  - SDL_WaitEventTimeout
 - iFpp:
+  - SDL_GetWindowDisplayMode
   - SDL_OpenAudio
+  - SDL_SetWindowDisplayMode
+- pFpi:
+  - SDL_LoadBMP_RW
+  - SDL_notreal
 - pFpp:
   - SDL_RWFromFile
 - iFppV:
   - SDL_sscanf
+- pFpii:
+  - SDL_CreateColorCursor
 - pFppp:
   - SDL_CreateThread
 - iFpLpp:
@@ -1629,3 +1651,4 @@ wrappedsdl2:
   - SDL_OpenAudioDevice
 - pFpiiiiu:
   - SDL_CreateRGBSurfaceWithFormatFrom
+% JFEi -> pFEpi
diff --git a/src/wrapped32/generated/wrappedlibctypes32.h b/src/wrapped32/generated/wrappedlibctypes32.h
index 5e517840..2c18f2a7 100644
--- a/src/wrapped32/generated/wrappedlibctypes32.h
+++ b/src/wrapped32/generated/wrappedlibctypes32.h
@@ -91,11 +91,13 @@ typedef int32_t (*iFpiLpp_t)(void*, int32_t, uintptr_t, void*, void*);
 typedef int32_t (*iFpppup_t)(void*, void*, void*, uint32_t, void*);
 typedef void* (*pFpLLiN_t)(void*, uintptr_t, uintptr_t, int32_t, ...);
 typedef void* (*pFppLLp_t)(void*, void*, uintptr_t, uintptr_t, void*);
+typedef int32_t (*iFpuiupV_t)(void*, uint32_t, int32_t, uint32_t, void*, ...);
 typedef int32_t (*iFpLvvpp_t)(void*, uintptr_t, void, void, void*, void*);
 typedef int32_t (*iFpLiipV_t)(void*, uintptr_t, int32_t, int32_t, void*, ...);
 typedef void* (*pFpLiiii_t)(void*, uintptr_t, int32_t, int32_t, int32_t, int32_t);
 typedef void* (*pFpLiiiI_t)(void*, uintptr_t, int32_t, int32_t, int32_t, int64_t);
 typedef int32_t (*iFpippppp_t)(void*, int32_t, void*, void*, void*, void*, void*);
+typedef int32_t (*iFpLiLppp_t)(void*, uintptr_t, int32_t, uintptr_t, void*, void*, void*);
 typedef void* (*pFiiiiiiiiilt_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, intptr_t, char*);
 
 #define SUPER() ADDED_FUNCTIONS() \
diff --git a/src/wrapped32/generated/wrappedsdl2defs32.h b/src/wrapped32/generated/wrappedsdl2defs32.h
index 239a09b9..b0899840 100644
--- a/src/wrapped32/generated/wrappedsdl2defs32.h
+++ b/src/wrapped32/generated/wrappedsdl2defs32.h
@@ -4,5 +4,7 @@
 #ifndef __wrappedsdl2DEFS32_H_
 #define __wrappedsdl2DEFS32_H_
 
+#define JFEi pFEpi
+#define JFEi_32 pFEpi_32
 
 #endif // __wrappedsdl2DEFS32_H_
diff --git a/src/wrapped32/generated/wrappedsdl2types32.h b/src/wrapped32/generated/wrappedsdl2types32.h
index ec19e213..badbbc81 100644
--- a/src/wrapped32/generated/wrappedsdl2types32.h
+++ b/src/wrapped32/generated/wrappedsdl2types32.h
@@ -15,12 +15,16 @@ typedef void (*vFp_t)(void*);
 typedef int32_t (*iFp_t)(void*);
 typedef void* (*pFv_t)(void);
 typedef void* (*pFp_t)(void*);
+typedef SDL2_GUID_t (*JFi_t)(int32_t);
 typedef void (*vFpp_t)(void*, void*);
 typedef void (*vFpV_t)(void*, ...);
 typedef int32_t (*iFip_t)(int32_t, void*);
+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 (*iFppV_t)(void*, void*, ...);
+typedef void* (*pFpii_t)(void*, int32_t, int32_t);
 typedef void* (*pFppp_t)(void*, void*, void*);
 typedef int32_t (*iFpLpp_t)(void*, uintptr_t, void*, void*);
 typedef int32_t (*iFpLpV_t)(void*, uintptr_t, void*, ...);
@@ -30,14 +34,25 @@ typedef void* (*pFpiiiiu_t)(void*, int32_t, int32_t, int32_t, int32_t, uint32_t)
 #define SUPER() ADDED_FUNCTIONS() \
 	GO(SDL_FreeSurface, vFp_t) \
 	GO(SDL_PollEvent, iFp_t) \
+	GO(SDL_PushEvent, iFp_t) \
 	GO(SDL_GetBasePath, pFv_t) \
 	GO(SDL_GL_GetProcAddress, pFp_t) \
+	GO(SDL_JoystickGetDeviceGUID, JFi_t) \
+	GO(SDL_AddEventWatch, vFpp_t) \
+	GO(SDL_DelEventWatch, vFpp_t) \
 	GO(SDL_SetWindowIcon, vFpp_t) \
 	GO(SDL_Log, vFpV_t) \
+	GO(SDL_GetCurrentDisplayMode, iFip_t) \
 	GO(SDL_GetDesktopDisplayMode, iFip_t) \
+	GO(SDL_WaitEventTimeout, iFpi_t) \
+	GO(SDL_GetWindowDisplayMode, 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_sscanf, iFppV_t) \
+	GO(SDL_CreateColorCursor, pFpii_t) \
 	GO(SDL_CreateThread, pFppp_t) \
 	GO(SDL_vsnprintf, iFpLpp_t) \
 	GO(SDL_snprintf, iFpLpV_t) \
diff --git a/src/wrapped32/generated/wrappedsdl2undefs32.h b/src/wrapped32/generated/wrappedsdl2undefs32.h
index 71be2e55..3bacf653 100644
--- a/src/wrapped32/generated/wrappedsdl2undefs32.h
+++ b/src/wrapped32/generated/wrappedsdl2undefs32.h
@@ -4,5 +4,7 @@
 #ifndef __wrappedsdl2UNDEFS32_H_
 #define __wrappedsdl2UNDEFS32_H_
 
+#undef JFEi
+#undef JFEi_32
 
 #endif // __wrappedsdl2UNDEFS32_H_
diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c
index bef6ca09..de01ca30 100644
--- a/src/wrapped32/generated/wrapper32.c
+++ b/src/wrapped32/generated/wrapper32.c
@@ -152,6 +152,7 @@ typedef uintptr_t (*LFp_t)(void*);
 typedef void* (*pFv_t)(void);
 typedef void* (*pFi_t)(int32_t);
 typedef void* (*pFu_t)(uint32_t);
+typedef void* (*pFl_t)(intptr_t);
 typedef void* (*pFL_t)(uintptr_t);
 typedef void* (*pFp_t)(void*);
 typedef void* (*pFX_t)(void*);
@@ -417,6 +418,7 @@ typedef int32_t (*iFpip_t)(void*, int32_t, void*);
 typedef int32_t (*iFpuC_t)(void*, uint32_t, uint8_t);
 typedef int32_t (*iFpuu_t)(void*, uint32_t, uint32_t);
 typedef int32_t (*iFpuU_t)(void*, uint32_t, uint64_t);
+typedef int32_t (*iFpfu_t)(void*, float, uint32_t);
 typedef int32_t (*iFpLi_t)(void*, uintptr_t, int32_t);
 typedef int32_t (*iFpLp_t)(void*, uintptr_t, void*);
 typedef int32_t (*iFppi_t)(void*, void*, int32_t);
@@ -591,6 +593,7 @@ typedef void (*vFulpp_t)(uint32_t, intptr_t, void*, void*);
 typedef void (*vFupii_t)(uint32_t, void*, int32_t, int32_t);
 typedef void (*vFuppi_t)(uint32_t, void*, void*, int32_t);
 typedef void (*vFuppu_t)(uint32_t, void*, void*, uint32_t);
+typedef void (*vFUUpi_t)(uint64_t, uint64_t, void*, int32_t);
 typedef void (*vFffff_t)(float, float, float, float);
 typedef void (*vFdddd_t)(double, double, double, double);
 typedef void (*vFllii_t)(intptr_t, intptr_t, int32_t, int32_t);
@@ -978,6 +981,7 @@ typedef void (*vFudddddd_t)(uint32_t, double, double, double, double, double, do
 typedef void (*vFlliiiip_t)(intptr_t, intptr_t, int32_t, int32_t, int32_t, int32_t, void*);
 typedef void (*vFpipipiu_t)(void*, int32_t, void*, int32_t, void*, int32_t, uint32_t);
 typedef void (*vFpddiidd_t)(void*, double, double, int32_t, int32_t, double, double);
+typedef int32_t (*iFEpuiupV_t)(x64emu_t*, void*, uint32_t, int32_t, uint32_t, void*, void*);
 typedef int32_t (*iFEpLiipV_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, void*, void*);
 typedef int32_t (*iFEXLpppp_t)(x64emu_t*, void*, uintptr_t, void*, void*, void*, void*);
 typedef int32_t (*iFuiiiuup_t)(uint32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
@@ -1017,6 +1021,7 @@ typedef void (*vFuuuuuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, u
 typedef void (*vFuuufffff_t)(uint32_t, uint32_t, uint32_t, float, float, float, float, float);
 typedef void (*vFffffffff_t)(float, float, float, float, float, float, float, float);
 typedef int32_t (*iFEpippppp_t)(x64emu_t*, void*, int32_t, void*, void*, void*, void*, void*);
+typedef int32_t (*iFEpLiLppp_t)(x64emu_t*, void*, uintptr_t, int32_t, uintptr_t, void*, void*, void*);
 typedef int32_t (*iFuiiiiuup_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
 typedef int32_t (*iFXpIIIppp_t)(void*, void*, int64_t, int64_t, int64_t, void*, void*, void*);
 typedef uint8_t (*CFuiifpppp_t)(uint32_t, int32_t, int32_t, float, void*, void*, void*, void*);
@@ -1206,6 +1211,7 @@ void LFp_32(x64emu_t *emu, uintptr_t fcn) { LFp_t fn = (LFp_t)fcn; R_EAX = to_ul
 void pFv_32(x64emu_t *emu, uintptr_t fcn) { pFv_t fn = (pFv_t)fcn; R_EAX = to_ptrv(fn()); }
 void pFi_32(x64emu_t *emu, uintptr_t fcn) { pFi_t fn = (pFi_t)fcn; R_EAX = to_ptrv(fn(from_ptri(int32_t, R_ESP + 4))); }
 void pFu_32(x64emu_t *emu, uintptr_t fcn) { pFu_t fn = (pFu_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4))); }
+void pFl_32(x64emu_t *emu, uintptr_t fcn) { pFl_t fn = (pFl_t)fcn; R_EAX = to_ptrv(fn(to_long(from_ptri(long_t, R_ESP + 4)))); }
 void pFL_32(x64emu_t *emu, uintptr_t fcn) { pFL_t fn = (pFL_t)fcn; R_EAX = to_ptrv(fn(to_ulong(from_ptri(ulong_t, R_ESP + 4)))); }
 void pFp_32(x64emu_t *emu, uintptr_t fcn) { pFp_t fn = (pFp_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4))); }
 void pFX_32(x64emu_t *emu, uintptr_t fcn) { pFX_t fn = (pFX_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)))); }
@@ -1471,6 +1477,7 @@ void iFpip_32(x64emu_t *emu, uintptr_t fcn) { iFpip_t fn = (iFpip_t)fcn; R_EAX =
 void iFpuC_32(x64emu_t *emu, uintptr_t fcn) { iFpuC_t fn = (iFpuC_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint8_t, R_ESP + 12)); }
 void iFpuu_32(x64emu_t *emu, uintptr_t fcn) { iFpuu_t fn = (iFpuu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); }
 void iFpuU_32(x64emu_t *emu, uintptr_t fcn) { iFpuU_t fn = (iFpuU_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint64_t, R_ESP + 12)); }
+void iFpfu_32(x64emu_t *emu, uintptr_t fcn) { iFpfu_t fn = (iFpfu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); }
 void iFpLi_32(x64emu_t *emu, uintptr_t fcn) { iFpLi_t fn = (iFpLi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12)); }
 void iFpLp_32(x64emu_t *emu, uintptr_t fcn) { iFpLp_t fn = (iFpLp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12)); }
 void iFppi_32(x64emu_t *emu, uintptr_t fcn) { iFppi_t fn = (iFppi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); }
@@ -1645,6 +1652,7 @@ void vFulpp_32(x64emu_t *emu, uintptr_t fcn) { vFulpp_t fn = (vFulpp_t)fcn; fn(f
 void vFupii_32(x64emu_t *emu, uintptr_t fcn) { vFupii_t fn = (vFupii_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
 void vFuppi_32(x64emu_t *emu, uintptr_t fcn) { vFuppi_t fn = (vFuppi_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
 void vFuppu_32(x64emu_t *emu, uintptr_t fcn) { vFuppu_t fn = (vFuppu_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); }
+void vFUUpi_32(x64emu_t *emu, uintptr_t fcn) { vFUUpi_t fn = (vFUUpi_t)fcn; fn(from_ptri(uint64_t, R_ESP + 4), from_ptri(uint64_t, R_ESP + 12), from_ptriv(R_ESP + 20), from_ptri(int32_t, R_ESP + 24)); }
 void vFffff_32(x64emu_t *emu, uintptr_t fcn) { vFffff_t fn = (vFffff_t)fcn; fn(from_ptri(float, R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16)); }
 void vFdddd_32(x64emu_t *emu, uintptr_t fcn) { vFdddd_t fn = (vFdddd_t)fcn; fn(from_ptri(double, R_ESP + 4), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20), from_ptri(double, R_ESP + 28)); }
 void vFllii_32(x64emu_t *emu, uintptr_t fcn) { vFllii_t fn = (vFllii_t)fcn; fn(to_long(from_ptri(long_t, R_ESP + 4)), to_long(from_ptri(long_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
@@ -2032,6 +2040,7 @@ void vFudddddd_32(x64emu_t *emu, uintptr_t fcn) { vFudddddd_t fn = (vFudddddd_t)
 void vFlliiiip_32(x64emu_t *emu, uintptr_t fcn) { vFlliiiip_t fn = (vFlliiiip_t)fcn; fn(to_long(from_ptri(long_t, R_ESP + 4)), to_long(from_ptri(long_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptriv(R_ESP + 28)); }
 void vFpipipiu_32(x64emu_t *emu, uintptr_t fcn) { vFpipipiu_t fn = (vFpipipiu_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28)); }
 void vFpddiidd_32(x64emu_t *emu, uintptr_t fcn) { vFpddiidd_t fn = (vFpddiidd_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(double, R_ESP + 16), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(double, R_ESP + 32), from_ptri(double, R_ESP + 40)); }
+void iFEpuiupV_32(x64emu_t *emu, uintptr_t fcn) { iFEpuiupV_t fn = (iFEpuiupV_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptriv(R_ESP + 20), from_ptrv(R_ESP + 24)); }
 void iFEpLiipV_32(x64emu_t *emu, uintptr_t fcn) { iFEpLiipV_t fn = (iFEpLiipV_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20), from_ptrv(R_ESP + 24)); }
 void iFEXLpppp_32(x64emu_t *emu, uintptr_t fcn) { iFEXLpppp_t fn = (iFEXLpppp_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24)); }
 void iFuiiiuup_32(x64emu_t *emu, uintptr_t fcn) { iFuiiiuup_t fn = (iFuiiiuup_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptriv(R_ESP + 28)); }
@@ -2071,6 +2080,7 @@ void vFuuuuuuuu_32(x64emu_t *emu, uintptr_t fcn) { vFuuuuuuuu_t fn = (vFuuuuuuuu
 void vFuuufffff_32(x64emu_t *emu, uintptr_t fcn) { vFuuufffff_t fn = (vFuuufffff_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(float, R_ESP + 16), from_ptri(float, R_ESP + 20), from_ptri(float, R_ESP + 24), from_ptri(float, R_ESP + 28), from_ptri(float, R_ESP + 32)); }
 void vFffffffff_32(x64emu_t *emu, uintptr_t fcn) { vFffffffff_t fn = (vFffffffff_t)fcn; fn(from_ptri(float, R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16), from_ptri(float, R_ESP + 20), from_ptri(float, R_ESP + 24), from_ptri(float, R_ESP + 28), from_ptri(float, R_ESP + 32)); }
 void iFEpippppp_32(x64emu_t *emu, uintptr_t fcn) { iFEpippppp_t fn = (iFEpippppp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28)); }
+void iFEpLiLppp_32(x64emu_t *emu, uintptr_t fcn) { iFEpLiLppp_t fn = (iFEpLiLppp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), to_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28)); }
 void iFuiiiiuup_32(x64emu_t *emu, uintptr_t fcn) { iFuiiiiuup_t fn = (iFuiiiiuup_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptriv(R_ESP + 32)); }
 void iFXpIIIppp_32(x64emu_t *emu, uintptr_t fcn) { iFXpIIIppp_t fn = (iFXpIIIppp_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int64_t, R_ESP + 12), from_ptri(int64_t, R_ESP + 20), from_ptri(int64_t, R_ESP + 28), from_ptriv(R_ESP + 36), from_ptriv(R_ESP + 40), from_ptriv(R_ESP + 44)); }
 void CFuiifpppp_32(x64emu_t *emu, uintptr_t fcn) { CFuiifpppp_t fn = (CFuiifpppp_t)fcn; R_EAX = (unsigned char)fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(float, R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28), from_ptriv(R_ESP + 32)); }
diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h
index c040c523..118dc064 100644
--- a/src/wrapped32/generated/wrapper32.h
+++ b/src/wrapped32/generated/wrapper32.h
@@ -103,6 +103,7 @@ void LFp_32(x64emu_t *emu, uintptr_t fnc);
 void pFv_32(x64emu_t *emu, uintptr_t fnc);
 void pFi_32(x64emu_t *emu, uintptr_t fnc);
 void pFu_32(x64emu_t *emu, uintptr_t fnc);
+void pFl_32(x64emu_t *emu, uintptr_t fnc);
 void pFL_32(x64emu_t *emu, uintptr_t fnc);
 void pFp_32(x64emu_t *emu, uintptr_t fnc);
 void pFX_32(x64emu_t *emu, uintptr_t fnc);
@@ -368,6 +369,7 @@ void iFpip_32(x64emu_t *emu, uintptr_t fnc);
 void iFpuC_32(x64emu_t *emu, uintptr_t fnc);
 void iFpuu_32(x64emu_t *emu, uintptr_t fnc);
 void iFpuU_32(x64emu_t *emu, uintptr_t fnc);
+void iFpfu_32(x64emu_t *emu, uintptr_t fnc);
 void iFpLi_32(x64emu_t *emu, uintptr_t fnc);
 void iFpLp_32(x64emu_t *emu, uintptr_t fnc);
 void iFppi_32(x64emu_t *emu, uintptr_t fnc);
@@ -542,6 +544,7 @@ void vFulpp_32(x64emu_t *emu, uintptr_t fnc);
 void vFupii_32(x64emu_t *emu, uintptr_t fnc);
 void vFuppi_32(x64emu_t *emu, uintptr_t fnc);
 void vFuppu_32(x64emu_t *emu, uintptr_t fnc);
+void vFUUpi_32(x64emu_t *emu, uintptr_t fnc);
 void vFffff_32(x64emu_t *emu, uintptr_t fnc);
 void vFdddd_32(x64emu_t *emu, uintptr_t fnc);
 void vFllii_32(x64emu_t *emu, uintptr_t fnc);
@@ -929,6 +932,7 @@ void vFudddddd_32(x64emu_t *emu, uintptr_t fnc);
 void vFlliiiip_32(x64emu_t *emu, uintptr_t fnc);
 void vFpipipiu_32(x64emu_t *emu, uintptr_t fnc);
 void vFpddiidd_32(x64emu_t *emu, uintptr_t fnc);
+void iFEpuiupV_32(x64emu_t *emu, uintptr_t fnc);
 void iFEpLiipV_32(x64emu_t *emu, uintptr_t fnc);
 void iFEXLpppp_32(x64emu_t *emu, uintptr_t fnc);
 void iFuiiiuup_32(x64emu_t *emu, uintptr_t fnc);
@@ -968,6 +972,7 @@ void vFuuuuuuuu_32(x64emu_t *emu, uintptr_t fnc);
 void vFuuufffff_32(x64emu_t *emu, uintptr_t fnc);
 void vFffffffff_32(x64emu_t *emu, uintptr_t fnc);
 void iFEpippppp_32(x64emu_t *emu, uintptr_t fnc);
+void iFEpLiLppp_32(x64emu_t *emu, uintptr_t fnc);
 void iFuiiiiuup_32(x64emu_t *emu, uintptr_t fnc);
 void iFXpIIIppp_32(x64emu_t *emu, uintptr_t fnc);
 void CFuiifpppp_32(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped32/wrappedlibc.c b/src/wrapped32/wrappedlibc.c
index f4a0dff7..21381bd8 100755
--- a/src/wrapped32/wrappedlibc.c
+++ b/src/wrapped32/wrappedlibc.c
@@ -915,22 +915,14 @@ EXPORT int my32_vswprintf(x64emu_t* emu, void* buff, size_t s, void * fmt, uint3
     return r;
 }
 EXPORT int my32___vswprintf(x64emu_t* emu, void* buff, size_t s, void * fmt, uint32_t* b) __attribute__((alias("my32_vswprintf")));
-#if 0
+
 EXPORT int my32___vswprintf_chk(x64emu_t* emu, void* buff, size_t s, int flags, size_t m, void * fmt, void * b, va_list V) {
-    #ifndef NOALIGN
     // need to align on arm
-    myStackAlignW((const char*)fmt, (uint32_t*)b, emu->scratch);
+    myStackAlignW32((const char*)fmt, (uint32_t*)b, emu->scratch);
     PREPARE_VALIST_32;
-    void* f = vswprintf;
-    int r = ((iFpupp_t)f)(buff, s, fmt, VARARGS_32);
-    return r;
-    #else
-    void* f = vswprintf;
-    int r = ((iFpupp_t)f)(buff, s, fmt, (uint32_t*)b);
-    return r;
-    #endif
+    return vswprintf(buff, s, fmt, VARARGS_32);
 }
-#endif
+
 EXPORT int my32_vswscanf(x64emu_t* emu, void* buff, void* fmt, void* b)
 {
     myStackAlignScanfW32((const char*)fmt, (uint32_t*)b, emu->scratch);
@@ -966,21 +958,13 @@ EXPORT void my32_vwarn(x64emu_t* emu, void* fmt, void* b) {
     #endif
 }
 
+#endif
 EXPORT int my32___swprintf_chk(x64emu_t* emu, void* s, uint32_t n, int32_t flag, uint32_t slen, void* fmt, void * b)
 {
-    #ifndef NOALIGN
-    myStackAlignW((const char*)fmt, b, emu->scratch);
+    myStackAlignW32((const char*)fmt, b, emu->scratch);
     PREPARE_VALIST_32;
-    void* f = vswprintf;
-    int r = ((iFpupp_t)f)(s, n, fmt, VARARGS_32);
-    return r;
-    #else
-    void* f = vswprintf;
-    int r = ((iFpupp_t)f)(s, n, fmt, b);
-    return r;
-    #endif
+    return vswprintf(s, n, fmt, VARARGS_32);
 }
-#endif
 EXPORT int my32_swprintf(x64emu_t* emu, void* s, uint32_t n, void* fmt, void *b)
 {
     myStackAlignW32((const char*)fmt, b, emu->scratch);
diff --git a/src/wrapped32/wrappedlibc_private.h b/src/wrapped32/wrappedlibc_private.h
index 1c6e5efb..05fc21e1 100755
--- a/src/wrapped32/wrappedlibc_private.h
+++ b/src/wrapped32/wrappedlibc_private.h
@@ -47,7 +47,7 @@ GOW(access, iFpi)
 //DATAV(__after_morecore_hook, 4)
 GO(alarm, iFu)
 //GO2(aligned_alloc, pFuu, memalign)
-//GO(alphasort, iFpp)
+GO(alphasort, iFpp)
 GOM(alphasort64, iFEpp)
 //DATA(argp_err_exit_status, 4)
 // argp_error   // Weak
@@ -349,7 +349,7 @@ GO(__fgets_chk, pFpLiS)
 // __fgetws_unlocked_chk
 //GO(fgetxattr, iFippu)
 GO(fileno, iFS)
-//GOW(fileno_unlocked, iFp)
+GOW(fileno_unlocked, iFS)
 GOW(finite, iFd)
 GO(__finite, iFd)
 GOW(finitef, iFf)
@@ -508,7 +508,7 @@ GOM(getifaddrs, iFEbp_)
 //GOW(getitimer, iFip)
 // get_kernel_syms  // Weak
 //GOW(getline, iFppp)
-//GO(getloadavg, iFpi)
+GO(getloadavg, iFpi)
 GO(getlogin, pFv)
 GO(getlogin_r, iFpu)
 // __getlogin_r_chk
@@ -767,7 +767,7 @@ GO(ioctl, iFiLN)   //the vararg is just to have optional arg of various type, bu
 // _IO_ftrylockfile
 //GO(_IO_funlockfile, vFS)
 // _IO_fwrite
-//GO(_IO_getc, iFS)
+GO(_IO_getc, iFS)
 // _IO_getline
 //GO(_IO_getline_info, LFSpLiip)
 // _IO_gets
@@ -794,7 +794,7 @@ GOW(iopl, iFi)
 // _IO_printf
 //GO(_IO_proc_close, iFS)
 //GO(_IO_proc_open, pFSpp)
-//GO(_IO_putc, iFip)
+GO(_IO_putc, iFiS)
 // _IO_puts
 //GO(_IO_remove_marker, vFp)
 //GO(_IO_seekmark, iFSpi)
@@ -955,7 +955,7 @@ GO(isxdigit, iFi)
 // isxdigit_l   // Weak
 // _itoa_lower_digits   // type R
 // __ivaliduser
-//GO(jrand48, iFp)
+GO(jrand48, lFp)
 // jrand48_r    // Weak
 // key_decryptsession
 // key_decryptsession_pk
@@ -1284,8 +1284,8 @@ GOM(__printf_chk, iFEvpV) //%%
 // __profile_frequency
 //DATAM(__progname, 4)
 //DATAM(__progname_full, 4)
-//DATAM(program_invocation_name, 4)
-//DATAM(program_invocation_short_name, 4)
+DATAM(program_invocation_name, 4)
+DATAM(program_invocation_short_name, 4)
 //GOW(pselect, iFippppp)
 // psignal
 //GO(ptrace, iFiupp)  // will that work???
@@ -1423,8 +1423,8 @@ GOW(rmdir, iFp)
 // ruserok
 // ruserok_af
 // ruserpass
-//GOW(sbrk, pFl)
-//GO(__sbrk, pFl)
+GOW(sbrk, pFl)
+GO(__sbrk, pFl)
 // scalbn   // Weak
 // scalbnf  // Weak
 // scalbnl  // Weak
@@ -1759,7 +1759,7 @@ GOM(swapcontext, iFEpp) //%%
 // swapoff  // Weak
 // swapon   // Weak
 GOM(swprintf, iFEpupV) //%%
-//GOM(__swprintf_chk, iFEpuiupV) //%%
+GOM(__swprintf_chk, iFEpuiupV) //%%
 GOM(swscanf, iFEppV)
 GOW(symlink, iFpp)
 //GO(symlinkat, iFpip)
@@ -1809,9 +1809,9 @@ GO(timerfd_create, iFii)
 //GOW(times, iFp)
 DATAM(timezone, 4)
 //DATAB(__timezone, 4)   // type B
-//GO(tmpfile, pFv)
+GO(tmpfile, pFv)
 //GO(tmpfile64, pFv)
-//GO(tmpnam, pFp)
+GO(tmpnam, pFp)
 //GO(tmpnam_r, pFp)
 GO(toascii, iFi)
 // __toascii_l  // Weak
@@ -1907,7 +1907,7 @@ GOM(__vsprintf_chk, iFEpiLpp)     //%%
 // __vsscanf    // Weak
 GOWM(vswprintf, iFEpLpp)         //%%
 GOWM(__vswprintf, iFEpLpp)         //%%
-//GOWM(__vswprintf_chk, iFEpLiLppp) //%%
+GOWM(__vswprintf_chk, iFEpLiLppp) //%%
 GOM(vswscanf, iFEppp)
 //GO(vsyslog, vFipp)
 //GO(__vsyslog_chk, vFiipp)
@@ -1917,7 +1917,7 @@ GOM(vswscanf, iFEppp)
 //GOM(vwprintf, iFEpp) //%%
 //GO2(__vwprintf_chk, iFEvpp, my_vwprintf)
 //GO(vwscanf, iFpp)
-//GOW(wait, iFp)
+GOW(wait, iFp)
 //GOW(__wait, iFp)
 //GOW(wait3, iFpip)
 //GOW(wait4, iFipip)
@@ -1972,7 +1972,7 @@ GO(wcsstr, pFpp)
 //GO(__wcstod_internal, dFppi)
 // __wcstod_l
 // wcstod_l // Weak
-//GO(wcstof, fFpp)
+GO(wcstof, fFpBp_)
 // __wcstof_internal
 // __wcstof_l
 // wcstof_l // Weak
diff --git a/src/wrapped32/wrappedsdl2.c b/src/wrapped32/wrappedsdl2.c
index bf444cff..2c355306 100644
--- a/src/wrapped32/wrappedsdl2.c
+++ b/src/wrapped32/wrappedsdl2.c
@@ -26,10 +26,17 @@
 
 #include "sdl2align32.h"
 
+#include "generated/wrappedsdl2defs32.h"
+#define JFEi_32 pFEpi_32
+
 extern const char* sdl2Name;
 #define LIBNAME sdl2
 
 typedef struct {
+    uint8_t data[16];
+} SDL2_GUID_t;
+
+typedef struct {
     int32_t freq;
     uint16_t format;
     uint8_t channels;
@@ -72,6 +79,42 @@ typedef void (*vFiupV_t)(int, uint32_t, void*, va_list);
     GO(4)
 
 
+// eventfilter
+#define GO(A)   \
+static uintptr_t my_eventfilter_fct_##A = 0;                                    \
+static int my_eventfilter_##A(void* userdata, void* event)                      \
+{                                                                               \
+    my_SDL2_Event_32_t evt = {0};                                               \
+    convert_SDL2_Event_to_32(&evt, event);                                      \
+    return (int)RunFunctionFmt(my_eventfilter_fct_##A, "pp", userdata, &evt);   \
+}
+SUPER()
+#undef GO
+static void* find_eventfilter_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_eventfilter_fct_##A == (uintptr_t)fct) return my_eventfilter_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_eventfilter_fct_##A == 0) {my_eventfilter_fct_##A = (uintptr_t)fct; return my_eventfilter_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for 32bits SDL2 eventfilter callback\n");
+    return NULL;
+
+}
+static void* reverse_eventfilter_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(CheckBridged(my_lib->w.bridge, fct))
+        return (void*)CheckBridged(my_lib->w.bridge, fct);
+    #define GO(A) if(my_eventfilter_##A == fct) return (void*)my_eventfilter_fct_##A;
+    SUPER()
+    #undef GO
+    return (void*)AddBridge(my_lib->w.bridge, iFpp_32, fct, 0, NULL);
+}
 // AudioCallback
 #define GO(A)                                                         \
     static uintptr_t my32_2_AudioCallback_fct_##A = 0;                \
@@ -109,6 +152,35 @@ EXPORT int my32_2_SDL_GetDesktopDisplayMode(int displayIndex, void* mode)
     return ret;
 }
 
+EXPORT int my32_2_SDL_GetCurrentDisplayMode(int displayIndex, void* mode)
+{
+    my_SDL2_DisplayMode_t my_mode = { 0 };
+    int ret = my->SDL_GetCurrentDisplayMode(displayIndex, &my_mode);
+    convert_SDL2_DisplayMode_to_32(mode, &my_mode);
+    return ret;
+}
+
+EXPORT int my32_2_SDL_GetWindowDisplayMode(void* window, void* mode)
+{
+    my_SDL2_DisplayMode_t my_mode = { 0 };
+    int ret = my->SDL_GetWindowDisplayMode(window, &my_mode);
+    convert_SDL2_DisplayMode_to_32(mode, &my_mode);
+    return ret;
+}
+
+EXPORT int my32_2_SDL_SetWindowDisplayMode(void* window, void* mode)
+{
+    my_SDL2_DisplayMode_t* mode_l = { 0 };
+    convert_SDL2_DisplayMode_to_64(&mode_l, mode);
+    return my->SDL_SetWindowDisplayMode(window, &mode_l);
+}
+
+EXPORT void* my32_2_SDL_JoystickGetDeviceGUID(void* ret, int index)
+{
+   *(SDL2_GUID_t*)ret = my->SDL_JoystickGetDeviceGUID(index);
+   return ret;
+}
+
 EXPORT int my32_2_SDL_OpenAudio(x64emu_t* emu, void* d, void* o)
 {
     SDL2_AudioSpec desired = { 0 };
@@ -237,6 +309,14 @@ EXPORT void my32_2_SDL_SetWindowIcon(x64emu_t* emu, void* window, void* icon)
     inplace_SDL2_Surface_to_32(icon);
 }
 
+EXPORT void* my32_2_SDL_CreateColorCursor(void* s, int x, int y)
+{
+    inplace_SDL2_Surface_to_64(s);
+    void* ret = my->SDL_CreateColorCursor(s, x, y);
+    inplace_SDL2_Surface_to_32(s);
+    return ret;
+}
+
 EXPORT void my32_2_SDL_FreeSurface(x64emu_t* emu, void* surface)
 {
     inplace_SDL2_Surface_to_64(surface);
@@ -251,6 +331,30 @@ EXPORT void* my32_2_SDL_CreateThread(x64emu_t* emu, void* f, void* n, void* p)
     return my->SDL_CreateThread(fnc, n, et);
 }
 
+EXPORT int my32_2_SDL_WaitEventTimeout(my_SDL2_Event_32_t* evt, int timeout)
+{
+    my_SDL2_Event_t event = {0};
+    int ret = my->SDL_WaitEventTimeout(evt?(&event):NULL, timeout);
+    convert_SDL2_Event_to_32(evt, &event);
+    return ret;
+}
+
+EXPORT int my32_2_SDL_PushEvent(my_SDL2_Event_32_t* evt)
+{
+    my_SDL2_Event_t event = {0};
+    convert_SDL2_Event_to_64(&event, evt);
+    return my->SDL_PushEvent(&event);
+}
+
+EXPORT void my32_2_SDL_AddEventWatch(x64emu_t* emu, void* p, void* userdata)
+{
+    my->SDL_AddEventWatch(find_eventfilter_Fct(p), userdata);
+}
+EXPORT void my32_2_SDL_DelEventWatch(x64emu_t* emu, void* p, void* userdata)
+{
+    my->SDL_DelEventWatch(find_eventfilter_Fct(p), userdata);
+}
+
 EXPORT void* my32_2_SDL_RWFromFile(x64emu_t* emu, void* a, void* b)
 {
     SDL2_RWops_t* r = (SDL2_RWops_t*)my->SDL_RWFromFile(a, b);
@@ -259,6 +363,19 @@ EXPORT void* my32_2_SDL_RWFromFile(x64emu_t* emu, void* a, void* b)
     return ret;
 }
 
+EXPORT void *my32_2_SDL_LoadBMP_RW(x64emu_t* emu, void* a, int b)
+{
+    inplace_SDL2_RWops_to_64(a);
+    SDL2_RWops_t* rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    void* r = my->SDL_LoadBMP_RW(rw, b);
+    if(b==0) {
+        RWNativeEnd2(rw);
+        inplace_SDL2_RWops_to_32(a);
+    }
+    inplace_SDL2_Surface_to_32(r);
+    return r;
+}
+
 #define ALTMY my32_2_
 
 #define CUSTOM_INIT                       \
diff --git a/src/wrapped32/wrappedsdl2_private.h b/src/wrapped32/wrappedsdl2_private.h
index 684141b4..c3b4906c 100644
--- a/src/wrapped32/wrappedsdl2_private.h
+++ b/src/wrapped32/wrappedsdl2_private.h
@@ -2,7 +2,7 @@
 #error Meh!
 #endif
 
-//%S G SDL_JoystickGUID UU
+//%S J SDL2_GUID_t uuuu
 // SDL_GUID is struct uin8_t data[16] => UU when in args, H when is return
 
 // _fini
@@ -10,7 +10,7 @@
 // GO(SDL_abs, iFi)
 // GO(SDL_acos, dFd)
 // GO(SDL_acosf, fFf)
-// GOM(SDL_AddEventWatch, vFEpp)
+GOM(SDL_AddEventWatch, vFEpp)
 // SDL_AddHintCallback
 // GOM(SDL_AddTimer, pFEupp)
 // GO(SDL_AllocFormat, pFu)
@@ -51,7 +51,7 @@ GO(SDL_calloc, pFLL)
 // GO(SDL_ClearHints, vFv)
 // GO(SDL_ClearQueuedAudio, vFu)
 GO(SDL_CloseAudio, vFv)
-// GO(SDL_CloseAudioDevice, vFu)
+GO(SDL_CloseAudioDevice, vFu)
 // GO(SDL_ComposeCustomBlendMode, uFuuuuuu)
 // GO(SDL_CondBroadcast, iFp)
 // GO(SDL_CondSignal, iFp)
@@ -65,7 +65,7 @@ GO(SDL_CloseAudio, vFv)
 // GO(SDL_copysignf, fFff)
 // GO(SDL_cos, dFd)
 // GO(SDL_cosf, fFf)
-// GO(SDL_CreateColorCursor, pFpii)
+GOM(SDL_CreateColorCursor, pFpii)   //%noE
 // GO(SDL_CreateCond, pFv)
 // GO(SDL_CreateCursor, pFppiiii)
 GO(SDL_CreateMutex, pFv)
@@ -86,7 +86,7 @@ GO(SDL_CreateWindow, pFpiiiiu)
 // GO(SDL_CreateWindowAndRenderer, iFiiupp)
 // GO(SDL_CreateWindowFrom, pFp)
 GO(SDL_Delay, vFu)
-// GOM(SDL_DelEventWatch, vFEpp)
+GOM(SDL_DelEventWatch, vFEpp)
 // SDL_DelHintCallback
 // GO(SDL_DequeueAudio, uFupu)
 // GO(SDL_DestroyCond, vFp)
@@ -94,7 +94,7 @@ GO(SDL_Delay, vFu)
 // GO(SDL_DestroyRenderer, vFp)
 // GO(SDL_DestroySemaphore, vFp)
 // GO(SDL_DestroyTexture, vFp)
-// GO(SDL_DestroyWindow, vFp)
+GO(SDL_DestroyWindow, vFp)
 // GO(SDL_DestroyWindowSurface, iFp)
 // GO(SDL_DetachThread, vFp)
 GO(SDL_DisableScreenSaver, vFv)
@@ -119,7 +119,7 @@ GO(SDL_DisableScreenSaver, vFv)
 // GO(SDL_fmodf, fFff)
 GO(SDL_free, vFp)
 GO(SDL_FreeAudioStream, vFp)
-// GO(SDL_FreeCursor, vFp)
+GO(SDL_FreeCursor, vFp)
 // GO(SDL_FreeFormat, vFp)
 // GO(SDL_FreePalette, vFp)
 // GO(SDL_FreeRW, vFp)
@@ -127,7 +127,7 @@ GOM(SDL_FreeSurface, vFEp)
 // GO(SDL_FreeWAV, vFp)
 // GO(SDL_GameControllerAddMapping, iFp)
 // GOM(SDL_GameControllerAddMappingsFromRW, iFEpi)
-// GO(SDL_GameControllerClose, vFp)
+GO(SDL_GameControllerClose, vFp)
 GO(SDL_GameControllerEventState, iFi)
 // GO(SDL_GameControllerFromInstanceID, pFi)
 // GO(SDL_GameControllerFromPlayerIndex, pFi)
@@ -139,7 +139,7 @@ GO(SDL_GameControllerEventState, iFi)
 // GO(SDL_GameControllerGetButton, CFpi)
 // GO(SDL_GameControllerGetButtonFromString, iFp)
 // GO(SDL_GameControllerGetFirmwareVersion, WFp)
-// GO(SDL_GameControllerGetJoystick, pFp)
+GO(SDL_GameControllerGetJoystick, pFp)
 // GO(SDL_GameControllerGetNumTouchpads, iFp)
 // GO(SDL_GameControllerGetNumTouchpadFingers, iFpi)
 // GO(SDL_GameControllerGetPlayerIndex, iFp)
@@ -165,7 +165,7 @@ GO(SDL_GameControllerEventState, iFi)
 // GO(SDL_GameControllerName, pFp)
 // GO(SDL_GameControllerNameForIndex, pFi)
 // GO(SDL_GameControllerNumMappings, iFv)
-// GO(SDL_GameControllerOpen, pFi)
+GO(SDL_GameControllerOpen, pFi)
 // GO(SDL_GameControllerPath, pFp)
 // GO(SDL_GameControllerPathForIndex, pFi)
 // GO(SDL_GameControllerRumble, iFpWWu)
@@ -189,22 +189,22 @@ GOM(SDL_GetBasePath, pFEv)
 // GO(SDL_GetColorKey, iFpp)
 // GO(SDL_GetCPUCacheLineSize, iFv)
 // GO(SDL_GetCPUCount, iFv)
-// GO(SDL_GetCurrentAudioDriver, pFv)
-// GO(SDL_GetCurrentDisplayMode, iFip)
-// GO(SDL_GetCurrentVideoDriver, pFv)
+GO(SDL_GetCurrentAudioDriver, pFv)
+GOM(SDL_GetCurrentDisplayMode, iFip)    //%noE
+GO(SDL_GetCurrentVideoDriver, pFv)
 // GO(SDL_GetCursor, pFv)
 // SDL_GetDefaultAssertionHandler
 // GO(SDL_GetDefaultAudioInfo, iFppi)
 // GO(SDL_GetDefaultCursor, pFv)
 GOM(SDL_GetDesktopDisplayMode, iFEip)
-// GO(SDL_GetDisplayBounds, iFip)
+GO(SDL_GetDisplayBounds, iFip)
 // GO(SDL_GetDisplayDPI, iFippp)
 // GO(SDL_GetDisplayMode, iFiip)
 // GO(SDL_GetDisplayName, pFi)
 // GO(SDL_GetDisplayOrientation, uFi)
 GO(SDL_GetDisplayUsableBounds, iFip)
 GO(SDL_getenv, pFp)
-// GO(SDL_GetError, pFv)
+GO(SDL_GetError, pFv)
 // GOM(SDL_GetEventFilter, iFEpp)
 // GO(SDL_GetGlobalMouseState, uFpp)
 // GO(SDL_GetGrabbedWindow, pFv)
@@ -217,18 +217,18 @@ GO(SDL_GetHintBoolean, uFpu)
 // GO(SDL_GetKeyFromScancode, iFu)
 // GO(SDL_GetKeyName, pFi)
 // GO(SDL_GetMemoryFunctions, vFpppp)
-// GO(SDL_GetModState, uFv)
+GO(SDL_GetModState, uFv)
 // GO(SDL_GetMouseFocus, pFv)
 GO(SDL_GetMouseState, uFpp)
-// GO(SDL_GetNumAllocations, iFv)
-// GO(SDL_GetNumAudioDevices, iFi)
-// GO(SDL_GetNumAudioDrivers, iFv)
-// GO(SDL_GetNumDisplayModes, iFi)
-// GO(SDL_GetNumRenderDrivers, iFv)
-// GO(SDL_GetNumTouchDevices, iFv)
-// GO(SDL_GetNumTouchFingers, iFu)
-// GO(SDL_GetNumVideoDisplays, iFv)
-// GO(SDL_GetNumVideoDrivers, iFv)
+GO(SDL_GetNumAllocations, iFv)
+GO(SDL_GetNumAudioDevices, iFi)
+GO(SDL_GetNumAudioDrivers, iFv)
+GO(SDL_GetNumDisplayModes, iFi)
+GO(SDL_GetNumRenderDrivers, iFv)
+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)
@@ -277,13 +277,13 @@ GO(SDL_GetTicks, uFv)
 // GO(SDL_GetWindowBordersSize, iFppppp)
 // GO(SDL_GetWindowBrightness, fFp)
 // GO(SDL_GetWindowData, pFpp)
-// GO(SDL_GetWindowDisplayIndex, iFp)
-// GO(SDL_GetWindowDisplayMode, iFpp)
+GO(SDL_GetWindowDisplayIndex, iFp)
+GOM(SDL_GetWindowDisplayMode, iFpp) //%noE
 GO(SDL_GetWindowFlags, uFp)
 // GO(SDL_GetWindowFromID, pFu)
 // GO(SDL_GetWindowGammaRamp, iFpppp)
-// GO(SDL_GetWindowGrab, iFp)
-// GO(SDL_GetWindowID, uFp)
+GO(SDL_GetWindowGrab, iFp)
+GO(SDL_GetWindowID, uFp)
 // GO(SDL_GetWindowMaximumSize, vFppp)
 // GO(SDL_GetWindowMinimumSize, vFppp)
 // GO(SDL_GetWindowOpacity, iFpp)
@@ -298,7 +298,7 @@ GO(SDL_GetWindowSize, vFppp)
 // GO(SDL_GetYUVConversionModeForResolution, uFii)
 // GO(SDL_GL_BindTexture, iFppp)
 GO(SDL_GL_CreateContext, pFp)
-// GO(SDL_GL_DeleteContext, vFp)
+GO(SDL_GL_DeleteContext, vFp)
 // GO(SDL_GL_ExtensionSupported, iFp)
 // GO(SDL_GL_GetAttribute, iFup)
 // GO(SDL_GL_GetCurrentContext, pFv)
@@ -306,8 +306,8 @@ GO(SDL_GL_CreateContext, pFp)
 GO(SDL_GL_GetDrawableSize, vFppp)
 GOM(SDL_GL_GetProcAddress, pFEp)
 GO(SDL_GL_GetSwapInterval, iFv)
-// GO(SDL_GL_LoadLibrary, iFp)
-// GO(SDL_GL_MakeCurrent, iFpp)
+GO(SDL_GL_LoadLibrary, iFp)
+GO(SDL_GL_MakeCurrent, iFpp)
 GO(SDL_GL_ResetAttributes, vFv)
 GO(SDL_GL_SetAttribute, iFui)
 GO(SDL_GL_SetSwapInterval, iFi)
@@ -315,7 +315,7 @@ GO(SDL_GL_SwapWindow, vFp)
 GO(SDL_GL_UnbindTexture, iFp)
 GO(SDL_GL_UnloadLibrary, vFv)
 // GO(SDL_GUIDToString, vFUUpi)
-// GO(SDL_HapticClose, vFp)
+GO(SDL_HapticClose, vFp)
 // GO(SDL_HapticDestroyEffect, vFpi)
 // GO(SDL_HapticEffectSupported, iFpp)
 // GO(SDL_HapticGetEffectStatus, iFpi)
@@ -327,12 +327,12 @@ GO(SDL_GL_UnloadLibrary, vFv)
 // GO(SDL_HapticNumEffectsPlaying, iFp)
 // GO(SDL_HapticOpen, pFi)
 // GO(SDL_HapticOpened, iFi)
-// GO(SDL_HapticOpenFromJoystick, pFp)
+GO(SDL_HapticOpenFromJoystick, pFp)
 // GO(SDL_HapticOpenFromMouse, pFv)
 // GO(SDL_HapticPause, iFp)
 // GO(SDL_HapticQuery, uFp)
-// GO(SDL_HapticRumbleInit, iFp)
-// GO(SDL_HapticRumblePlay, iFpfu)
+GO(SDL_HapticRumbleInit, iFp)
+GO(SDL_HapticRumblePlay, iFpfu)
 // GO(SDL_HapticRumbleStop, iFp)
 // GO(SDL_HapticRumbleSupported, iFp)
 // GO(SDL_HapticRunEffect, iFpiu)
@@ -364,7 +364,7 @@ GO(SDL_GL_UnloadLibrary, vFv)
 // GOM(SDL_HasSSE3, iFv)
 // GOM(SDL_HasSSE41, iFv)
 // GOM(SDL_HasSSE42, iFv)
-// GO(SDL_HideWindow, vFp)
+GO(SDL_HideWindow, vFp)
 // GO(SDL_HasWindowSurface, iFp)
 // GO(SDL_iconv, LFppppp)
 // GO(SDL_iconv_close, iFp)
@@ -375,7 +375,7 @@ GO(SDL_InitSubSystem, iFu)
 // GO(SDL_IntersectRect, uFppp)
 // GO(SDL_IntersectRectAndLine, uFppppp)
 // GO(SDL_isdigit, iFi)
-// GO(SDL_IsGameController, uFi)
+GO(SDL_IsGameController, uFi)
 // GO(SDL_IsScreenKeyboardShown, uFp)
 // GO(SDL_IsScreenSaverEnabled, iFv)
 // GO(SDL_IsShapedWindow, uFp)
@@ -384,7 +384,7 @@ GO(SDL_InitSubSystem, iFu)
 GO(SDL_IsTextInputActive, iFv)
 // GO(SDL_itoa, pFipi)
 // GO(SDL_JoystickAttachVirtualEx, iFp)
-// GO(SDL_JoystickClose, vFp)
+GO(SDL_JoystickClose, vFp)
 // GO(SDL_JoystickCurrentPowerLevel, iFp)
 GO(SDL_JoystickEventState, iFi)
 // GO(SDL_JoystickFromInstanceID, pFi)
@@ -393,7 +393,7 @@ GO(SDL_JoystickEventState, iFi)
 // GO(SDL_JoystickGetAxisInitialState, uFpip)
 // GO(SDL_JoystickGetBall, iFpipp)
 // GO(SDL_JoystickGetButton, CFpi)
-// GO(SDL_JoystickGetDeviceGUID, HFi)  // return a struct that is "uint8_t data[16]"
+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)
@@ -403,7 +403,7 @@ GO(SDL_JoystickEventState, iFi)
 // 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_JoystickGetGUIDString, vFUUpi)   //uint8_t data[16] passed as 1st argument...
 // GO(SDL_JoystickGetHat, CFpi)
 // GO(SDL_JoystickGetPlayerIndex, iFp)
 // GO(SDL_JoystickGetProduct, WFp)
@@ -411,15 +411,15 @@ GO(SDL_JoystickEventState, iFi)
 // GO(SDL_JoystickGetSerial, pFp)
 // GO(SDL_JoystickGetType, uFp)
 // GO(SDL_JoystickGetVendor, WFp)
-// GO(SDL_JoystickInstanceID, iFp)
+GO(SDL_JoystickInstanceID, iFp)
 // GO(SDL_JoystickIsHaptic, iFp)
 // GO(SDL_JoystickName, pFp)
-// GO(SDL_JoystickNameForIndex, pFi)
+GO(SDL_JoystickNameForIndex, pFi)
 // GO(SDL_JoystickNumAxes, iFp)
 // GO(SDL_JoystickNumBalls, iFp)
 // GO(SDL_JoystickNumButtons, iFp)
 // GO(SDL_JoystickNumHats, iFp)
-// GO(SDL_JoystickOpen, pFi)
+GO(SDL_JoystickOpen, pFi)
 // GO(SDL_JoystickPath, pFp)
 // GO(SDL_JoystickPathForIndex, pFi)
 // GO(SDL_JoystickRumble, iFpWWu)
@@ -427,7 +427,7 @@ GO(SDL_JoystickEventState, iFi)
 // GO(SDL_JoystickUpdate, vFv)
 // GO(SDL_LinuxSetThreadPriority, iFli)
 // GO(SDL_lltoa, pFlpi)
-// GOM(SDL_LoadBMP_RW, pFEpi)
+GOM(SDL_LoadBMP_RW, pFEpi)
 // GO(SDL_LoadDollarTemplates, iFip)
 // GO(SDL_LoadFile, pFpp)
 // GOM(SDL_LoadFile_RW, pFEppi)
@@ -492,13 +492,13 @@ GOM(SDL_PollEvent, iFp) //%noE
 // GO(SDL_pow, dFdd)
 // GO(SDL_powf, fFff)
 // GO(SDL_PumpEvents, vFv)
-// GO(SDL_PushEvent, iFp)
+GOM(SDL_PushEvent, iFp)     //%noE
 // 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)
+ GO(SDL_QuitSubSystem, vFu)
+GO(SDL_RaiseWindow, vFp)
 // GOM(SDL_ReadBE16, uFEp)
 // GOM(SDL_ReadBE32, uFEp)
 // GOM(SDL_ReadBE64, UFEp)
@@ -562,8 +562,8 @@ GOM(SDL_RWFromFile, pFEpp)
 // GOM(SDL_SaveAllDollarTemplates, iFEp)
 // GOM(SDL_SaveBMP_RW, iFEppi)
 // GOM(SDL_SaveDollarTemplate, iFEip)
-// GO(SDL_scalbn, dFdi)
-// GO(SDL_scalbnf, fFfi)
+GO(SDL_scalbn, dFdi)
+GO(SDL_scalbnf, fFfi)
 // GO(SDL_SemPost, iFp)
 // GO(SDL_SemTryWait, iFp)
 // GO(SDL_SemValue, uFp)
@@ -587,19 +587,19 @@ GOM(SDL_RWFromFile, pFEpp)
 // GO(SDL_SetClipboardText, iFp)
 // GO(SDL_SetClipRect, uFpp)
 // GO(SDL_SetColorKey, iFpiu)
-// GO(SDL_SetCursor, vFp)
+GO(SDL_SetCursor, vFp)
 GO(SDL_setenv, iFppi)
 // GO(SDL_SetError, iFppppp)    // it use ..., so putarbitrary  4 args
 // GOM(SDL_SetEventFilter, vFEpp)
 GO(SDL_SetHint, uFpp)
 // GO(SDL_SetHintWithPriority, uFppu)
-// GO(SDL_SetMainReady, vFv)
+GO(SDL_SetMainReady, vFv)
 // GOM(SDL_SetMemoryFunctions,
-// GO(SDL_SetModState, vFu)
+GO(SDL_SetModState, vFu)
 // GO(SDL_SetPaletteColors, iFppii)
 // SDL_SetPixelFormatPalette
 // GO(SDL_SetPrimarySelectionText, iFp)
-// GO(SDL_SetRelativeMouseMode, iFi)
+GO(SDL_SetRelativeMouseMode, iFi)
 // GO(SDL_SetRenderDrawBlendMode, iFpu)
 GO(SDL_SetRenderDrawColor, iFpCCCC)
 // GO(SDL_SetRenderTarget, iFpp)
@@ -615,12 +615,12 @@ GO(SDL_SetRenderDrawColor, iFpCCCC)
 // GO(SDL_SetTextureColorMod, iFpCCC)
 // GO(SDL_SetTextureScaleMode, iFpu)
 GO(SDL_SetThreadPriority, iFu)
-// GO(SDL_SetWindowBordered, vFpi)
+GO(SDL_SetWindowBordered, vFpi)
 // GO(SDL_SetWindowBrightness, iFpf)
 // GO(SDL_SetWindowData, pFppp)
-// GO(SDL_SetWindowDisplayMode, iFpp)
+GOM(SDL_SetWindowDisplayMode, iFpp) //%noE
 GO(SDL_SetWindowFullscreen, iFpu)
-// GO(SDL_SetWindowGammaRamp, iFpppp)
+GO(SDL_SetWindowGammaRamp, iFpppp)
 GO(SDL_SetWindowGrab, vFpi)
 // SDL_SetWindowHitTest
 GOM(SDL_SetWindowIcon, vFEpp)
@@ -629,11 +629,11 @@ GOM(SDL_SetWindowIcon, vFEpp)
 GO(SDL_SetWindowMinimumSize, vFpii)
 // SDL_SetWindowModalFor
 // SDL_SetWindowOpacity
-// GO(SDL_SetWindowPosition, vFpii)
-// GO(SDL_SetWindowResizable, vFpi)
+GO(SDL_SetWindowPosition, vFpii)
+GO(SDL_SetWindowResizable, vFpi)
 // GO(SDL_SetWindowShape, iFppp)
-// GO(SDL_SetWindowSize, vFpii)
-// GO(SDL_SetWindowTitle, vFpp)
+GO(SDL_SetWindowSize, vFpii)
+GO(SDL_SetWindowTitle, vFpp)
 // SDL_SetYUVConversionMode
 GO(SDL_ShowCursor, iFi)
 // GO(SDL_ShowMessageBox, iFpp)
@@ -711,7 +711,7 @@ GOM(SDL_vsnprintf, iFEpLpp)
 // 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_WaitEventTimeout, iFpi)
+GOM(SDL_WaitEventTimeout, iFpi) //%noE
 // GO(SDL_WaitThread, vFpp)
 GO(SDL_WarpMouseGlobal, iFii)
 GO(SDL_WarpMouseInWindow, vFpii)
@@ -739,7 +739,7 @@ GO(SDL_WasInit, uFu)
 // 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)