about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-09-30 16:35:11 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-09-30 16:35:11 +0200
commit28dedd66b3fa3bc5e9b4669f3f627888fc9ad195 (patch)
tree3d23cfb78eeb1f400f6c0fec0fa50fd4445f892b
parentf26146bc231885e8996ccc1fb10808226fd35260 (diff)
downloadbox64-28dedd66b3fa3bc5e9b4669f3f627888fc9ad195.tar.gz
box64-28dedd66b3fa3bc5e9b4669f3f627888fc9ad195.zip
[BOX32][WRAPPER] Added a few more wrapped functions to libGL, libasound and libX11
-rw-r--r--src/wrapped32/generated/functions_list.txt14
-rw-r--r--src/wrapped32/generated/wrappedlibasoundtypes32.h4
-rw-r--r--src/wrapped32/generated/wrapper32.c20
-rw-r--r--src/wrapped32/generated/wrapper32.h10
-rw-r--r--src/wrapped32/wrappedlibasound.c25
-rw-r--r--src/wrapped32/wrappedlibasound_private.h6
-rw-r--r--src/wrapped32/wrappedlibgl_private.h38
-rw-r--r--src/wrapped32/wrappedlibx11_private.h2
8 files changed, 96 insertions, 23 deletions
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt
index f0cd5dba..b9cd8580 100644
--- a/src/wrapped32/generated/functions_list.txt
+++ b/src/wrapped32/generated/functions_list.txt
@@ -215,6 +215,7 @@
 #() pFpL -> pFpL
 #() pFpp -> pFpp
 #() pFXi -> pFXi
+#() pFXu -> pFXu
 #() hFpa -> hFpa
 #() SFip -> SFip
 #() SFpp -> SFpp
@@ -362,6 +363,7 @@
 #() iFXii -> iFXii
 #() iFXip -> iFXip
 #() iFXuu -> iFXuu
+#() iFXup -> iFXup
 #() iFXLl -> iFXLl
 #() iFXLL -> iFXLL
 #() iFXLp -> iFXLp
@@ -432,6 +434,7 @@
 #() iFpbL_p -> iFpBp
 #() iFBp_LL -> iFBLL
 #() iFBp_pi -> iFBpi
+#() iFXBL_p -> iFXBp
 #() IFpBp_i -> IFpBi
 #() UFpBp_i -> UFpBi
 #() fFpBp_p -> fFpBp
@@ -579,10 +582,13 @@
 #() iFpppi -> iFpppi
 #() iFpppp -> iFpppp
 #() iFSpiL -> iFSpiL
+#() iFXiip -> iFXiip
 #() iFXipi -> iFXipi
 #() iFXipp -> iFXipp
+#() iFXuup -> iFXuup
 #() iFXLii -> iFXLii
 #() iFXpip -> iFXpip
+#() iFXppi -> iFXppi
 #() iFXppp -> iFXppp
 #() IFEpIi -> IFEpIi
 #() CFuuff -> CFuuff
@@ -746,6 +752,7 @@
 #() iFiLLLL -> iFiLLLL
 #() iFipLLi -> iFipLLi
 #() iFuiuup -> iFuiuup
+#() iFpippp -> iFpippp
 #() iFpCCCC -> iFpCCCC
 #() iFpLuLi -> iFpLuLi
 #() iFppiUi -> iFppiUi
@@ -753,6 +760,7 @@
 #() iFpppLp -> iFpppLp
 #() iFppppp -> iFppppp
 #() iFXiiip -> iFXiiip
+#() iFXpipi -> iFXpipi
 #() iFXpppp -> iFXpppp
 #() IFXpIII -> IFXpIII
 #() uFpLLLS -> uFpLLLS
@@ -771,6 +779,7 @@
 #() pFppuup -> pFppuup
 #() pFppupp -> pFppupp
 #() pFXpipi -> pFXpipi
+#() pFXppip -> pFXppip
 #() iFEBh_ppp -> iFEBppp
 #() LFpbp_LLp -> LFpBLLp
 #() LFpBp_LLp -> LFpBLLp
@@ -1072,6 +1081,7 @@
 #() vFuuiiiiuuiiiiiii -> vFuuiiiiuuiiiiiii
 #() vFfffffffffffffff -> vFfffffffffffffff
 #() vFuuuuiiiiuuiiiiiii -> vFuuuuiiiiuuiiiiiii
+#() vFXpuiiiiipuiiiiiiii -> vFXpuiiiiipuiiiiiiii
 #() uFippuuuuiiiiuuiiiiiiiipp -> uFippuuuuiiiiuuiiiiiiiipp
 #defined(HAVE_LD80BITS) DFD -> DFD
 #defined(HAVE_LD80BITS) DFDD -> DFDD
@@ -1160,6 +1170,10 @@ wrappedldlinux:
 - pFp:
   - __tls_get_addr
 wrappedlibasound:
+- iFp:
+  - snd_device_name_free_hint
+- iFipp:
+  - snd_device_name_hint
 - iFpppp:
   - snd_pcm_mmap_begin
 wrappedlibc:
diff --git a/src/wrapped32/generated/wrappedlibasoundtypes32.h b/src/wrapped32/generated/wrappedlibasoundtypes32.h
index 270de6b5..298952d0 100644
--- a/src/wrapped32/generated/wrappedlibasoundtypes32.h
+++ b/src/wrapped32/generated/wrappedlibasoundtypes32.h
@@ -11,9 +11,13 @@
 #define ADDED_FUNCTIONS() 
 #endif
 
+typedef int32_t (*iFp_t)(void*);
+typedef int32_t (*iFipp_t)(int32_t, void*, void*);
 typedef int32_t (*iFpppp_t)(void*, void*, void*, void*);
 
 #define SUPER() ADDED_FUNCTIONS() \
+	GO(snd_device_name_free_hint, iFp_t) \
+	GO(snd_device_name_hint, iFipp_t) \
 	GO(snd_pcm_mmap_begin, iFpppp_t)
 
 #endif // __wrappedlibasoundTYPES32_H_
diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c
index 11a1dad4..aa531484 100644
--- a/src/wrapped32/generated/wrapper32.c
+++ b/src/wrapped32/generated/wrapper32.c
@@ -305,6 +305,7 @@ typedef void* (*pFpu_t)(void*, uint32_t);
 typedef void* (*pFpL_t)(void*, uintptr_t);
 typedef void* (*pFpp_t)(void*, void*);
 typedef void* (*pFXi_t)(void*, int32_t);
+typedef void* (*pFXu_t)(void*, uint32_t);
 typedef uintptr_t (*hFpa_t)(void*, void*);
 typedef void* (*SFip_t)(int32_t, void*);
 typedef void* (*SFpp_t)(void*, void*);
@@ -452,6 +453,7 @@ typedef int32_t (*iFSli_t)(void*, intptr_t, int32_t);
 typedef int32_t (*iFXii_t)(void*, int32_t, int32_t);
 typedef int32_t (*iFXip_t)(void*, int32_t, void*);
 typedef int32_t (*iFXuu_t)(void*, uint32_t, uint32_t);
+typedef int32_t (*iFXup_t)(void*, uint32_t, void*);
 typedef int32_t (*iFXLl_t)(void*, uintptr_t, intptr_t);
 typedef int32_t (*iFXLL_t)(void*, uintptr_t, uintptr_t);
 typedef int32_t (*iFXLp_t)(void*, uintptr_t, void*);
@@ -522,6 +524,7 @@ 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);
 typedef int32_t (*iFBp_pi_t)(struct_p_t*, void*, int32_t);
+typedef int32_t (*iFXBL_p_t)(void*, struct_L_t*, void*);
 typedef int64_t (*IFpBp_i_t)(void*, struct_p_t*, int32_t);
 typedef uint64_t (*UFpBp_i_t)(void*, struct_p_t*, int32_t);
 typedef float (*fFpBp_p_t)(void*, struct_p_t*, void*);
@@ -669,10 +672,13 @@ typedef int32_t (*iFppLi_t)(void*, void*, uintptr_t, int32_t);
 typedef int32_t (*iFpppi_t)(void*, void*, void*, int32_t);
 typedef int32_t (*iFpppp_t)(void*, void*, void*, void*);
 typedef int32_t (*iFSpiL_t)(void*, void*, int32_t, uintptr_t);
+typedef int32_t (*iFXiip_t)(void*, int32_t, int32_t, void*);
 typedef int32_t (*iFXipi_t)(void*, int32_t, void*, int32_t);
 typedef int32_t (*iFXipp_t)(void*, int32_t, void*, void*);
+typedef int32_t (*iFXuup_t)(void*, uint32_t, uint32_t, void*);
 typedef int32_t (*iFXLii_t)(void*, uintptr_t, int32_t, int32_t);
 typedef int32_t (*iFXpip_t)(void*, void*, int32_t, void*);
+typedef int32_t (*iFXppi_t)(void*, void*, void*, int32_t);
 typedef int32_t (*iFXppp_t)(void*, void*, void*, void*);
 typedef int64_t (*IFEpIi_t)(x64emu_t*, void*, int64_t, int32_t);
 typedef uint8_t (*CFuuff_t)(uint32_t, uint32_t, float, float);
@@ -836,6 +842,7 @@ typedef int32_t (*iFiiipp_t)(int32_t, int32_t, int32_t, void*, void*);
 typedef int32_t (*iFiLLLL_t)(int32_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
 typedef int32_t (*iFipLLi_t)(int32_t, void*, uintptr_t, uintptr_t, int32_t);
 typedef int32_t (*iFuiuup_t)(uint32_t, int32_t, uint32_t, uint32_t, void*);
+typedef int32_t (*iFpippp_t)(void*, int32_t, void*, void*, void*);
 typedef int32_t (*iFpCCCC_t)(void*, uint8_t, uint8_t, uint8_t, uint8_t);
 typedef int32_t (*iFpLuLi_t)(void*, uintptr_t, uint32_t, uintptr_t, int32_t);
 typedef int32_t (*iFppiUi_t)(void*, void*, int32_t, uint64_t, int32_t);
@@ -843,6 +850,7 @@ typedef int32_t (*iFpppip_t)(void*, void*, void*, int32_t, void*);
 typedef int32_t (*iFpppLp_t)(void*, void*, void*, uintptr_t, void*);
 typedef int32_t (*iFppppp_t)(void*, void*, void*, void*, void*);
 typedef int32_t (*iFXiiip_t)(void*, int32_t, int32_t, int32_t, void*);
+typedef int32_t (*iFXpipi_t)(void*, void*, int32_t, void*, int32_t);
 typedef int32_t (*iFXpppp_t)(void*, void*, void*, void*, void*);
 typedef int64_t (*IFXpIII_t)(void*, void*, int64_t, int64_t, int64_t);
 typedef uint32_t (*uFpLLLS_t)(void*, uintptr_t, uintptr_t, uintptr_t, void*);
@@ -861,6 +869,7 @@ typedef void* (*pFpuuip_t)(void*, uint32_t, uint32_t, int32_t, void*);
 typedef void* (*pFppuup_t)(void*, void*, uint32_t, uint32_t, void*);
 typedef void* (*pFppupp_t)(void*, void*, uint32_t, void*, void*);
 typedef void* (*pFXpipi_t)(void*, void*, int32_t, void*, int32_t);
+typedef void* (*pFXppip_t)(void*, void*, void*, int32_t, void*);
 typedef int32_t (*iFEBh_ppp_t)(x64emu_t*, struct_h_t*, void*, void*, void*);
 typedef uintptr_t (*LFpbp_LLp_t)(void*, struct_p_t*, uintptr_t, uintptr_t, void*);
 typedef uintptr_t (*LFpBp_LLp_t)(void*, struct_p_t*, uintptr_t, uintptr_t, void*);
@@ -1162,6 +1171,7 @@ typedef void (*vFuiiiiiuiiiiilll_t)(uint32_t, int32_t, int32_t, int32_t, int32_t
 typedef void (*vFuuiiiiuuiiiiiii_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
 typedef void (*vFfffffffffffffff_t)(float, float, float, float, float, float, float, float, float, float, float, float, float, float, float);
 typedef void (*vFuuuuiiiiuuiiiiiii_t)(uint32_t, uint32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFXpuiiiiipuiiiiiiii_t)(void*, void*, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
 typedef uint32_t (*uFippuuuuiiiiuuiiiiiiiipp_t)(int32_t, void*, void*, uint32_t, uint32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*, void*);
 
 #if defined(HAVE_LD80BITS)
@@ -1395,6 +1405,7 @@ void pFpu_32(x64emu_t *emu, uintptr_t fcn) { pFpu_t fn = (pFpu_t)fcn; R_EAX = to
 void pFpL_32(x64emu_t *emu, uintptr_t fcn) { pFpL_t fn = (pFpL_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)))); }
 void pFpp_32(x64emu_t *emu, uintptr_t fcn) { pFpp_t fn = (pFpp_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8))); }
 void pFXi_32(x64emu_t *emu, uintptr_t fcn) { pFXi_t fn = (pFXi_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8))); }
+void pFXu_32(x64emu_t *emu, uintptr_t fcn) { pFXu_t fn = (pFXu_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint32_t, R_ESP + 8))); }
 void hFpa_32(x64emu_t *emu, uintptr_t fcn) { hFpa_t fn = (hFpa_t)fcn; R_EAX = to_hash(fn(from_ptriv(R_ESP + 4), from_locale(from_ptri(ptr_t, R_ESP + 8)))); }
 void SFip_32(x64emu_t *emu, uintptr_t fcn) { SFip_t fn = (SFip_t)fcn; R_EAX = to_ptrv(io_convert_from(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8)))); }
 void SFpp_32(x64emu_t *emu, uintptr_t fcn) { SFpp_t fn = (SFpp_t)fcn; R_EAX = to_ptrv(io_convert_from(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8)))); }
@@ -1542,6 +1553,7 @@ void iFSli_32(x64emu_t *emu, uintptr_t fcn) { iFSli_t fn = (iFSli_t)fcn; R_EAX =
 void iFXii_32(x64emu_t *emu, uintptr_t fcn) { iFXii_t fn = (iFXii_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); }
 void iFXip_32(x64emu_t *emu, uintptr_t fcn) { iFXip_t fn = (iFXip_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
 void iFXuu_32(x64emu_t *emu, uintptr_t fcn) { iFXuu_t fn = (iFXuu_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); }
+void iFXup_32(x64emu_t *emu, uintptr_t fcn) { iFXup_t fn = (iFXup_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
 void iFXLl_32(x64emu_t *emu, uintptr_t fcn) { iFXLl_t fn = (iFXLl_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_long(from_ptri(long_t, R_ESP + 12))); }
 void iFXLL_32(x64emu_t *emu, uintptr_t fcn) { iFXLL_t fn = (iFXLL_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_ulong(from_ptri(ulong_t, R_ESP + 12))); }
 void iFXLp_32(x64emu_t *emu, uintptr_t fcn) { iFXLp_t fn = (iFXLp_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12)); }
@@ -1612,6 +1624,7 @@ void iFppbL__32(x64emu_t *emu, uintptr_t fcn) { iFppbL__t fn = (iFppbL__t)fcn; s
 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); }
 void iFBp_pi_32(x64emu_t *emu, uintptr_t fcn) { iFBp_pi_t fn = (iFBp_pi_t)fcn; struct_p_t arg_4={0}; R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
+void iFXBL_p_32(x64emu_t *emu, uintptr_t fcn) { iFXBL_p_t fn = (iFXBL_p_t)fcn; struct_L_t arg_8={0}; R_EAX = fn(getDisplay(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 IFpBp_i_32(x64emu_t *emu, uintptr_t fcn) { IFpBp_i_t fn = (IFpBp_i_t)fcn; struct_p_t arg_8={0}; ui64_t r; r.i = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12)); R_EAX = r.d[0]; R_EDX = r.d[1]; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
 void UFpBp_i_32(x64emu_t *emu, uintptr_t fcn) { UFpBp_i_t fn = (UFpBp_i_t)fcn; struct_p_t arg_8={0}; ui64_t r; r.u = (uint64_t)fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12)); R_EAX = r.d[0]; R_EDX = r.d[1]; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
 void fFpBp_p_32(x64emu_t *emu, uintptr_t fcn) { fFpBp_p_t fn = (fFpBp_p_t)fcn; struct_p_t arg_8={0}; float fl = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptriv(R_ESP + 12)); fpu_do_push(emu); ST0val = fl; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
@@ -1759,10 +1772,13 @@ void iFppLi_32(x64emu_t *emu, uintptr_t fcn) { iFppLi_t fn = (iFppLi_t)fcn; R_EA
 void iFpppi_32(x64emu_t *emu, uintptr_t fcn) { iFpppi_t fn = (iFpppi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
 void iFpppp_32(x64emu_t *emu, uintptr_t fcn) { iFpppp_t fn = (iFpppp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void iFSpiL_32(x64emu_t *emu, uintptr_t fcn) { iFSpiL_t fn = (iFSpiL_t)fcn; R_EAX = fn(io_convert32(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), to_ulong(from_ptri(ulong_t, R_ESP + 16))); }
+void iFXiip_32(x64emu_t *emu, uintptr_t fcn) { iFXiip_t fn = (iFXiip_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void iFXipi_32(x64emu_t *emu, uintptr_t fcn) { iFXipi_t fn = (iFXipi_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
 void iFXipp_32(x64emu_t *emu, uintptr_t fcn) { iFXipp_t fn = (iFXipp_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
+void iFXuup_32(x64emu_t *emu, uintptr_t fcn) { iFXuup_t fn = (iFXuup_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void iFXLii_32(x64emu_t *emu, uintptr_t fcn) { iFXLii_t fn = (iFXLii_t)fcn; R_EAX = fn(getDisplay(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)); }
 void iFXpip_32(x64emu_t *emu, uintptr_t fcn) { iFXpip_t fn = (iFXpip_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); }
+void iFXppi_32(x64emu_t *emu, uintptr_t fcn) { iFXppi_t fn = (iFXppi_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
 void iFXppp_32(x64emu_t *emu, uintptr_t fcn) { iFXppp_t fn = (iFXppp_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void IFEpIi_32(x64emu_t *emu, uintptr_t fcn) { IFEpIi_t fn = (IFEpIi_t)fcn; ui64_t r; r.i = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int64_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 16)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
 void CFuuff_32(x64emu_t *emu, uintptr_t fcn) { CFuuff_t fn = (CFuuff_t)fcn; R_EAX = (unsigned char)fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16)); }
@@ -1926,6 +1942,7 @@ void iFiiipp_32(x64emu_t *emu, uintptr_t fcn) { iFiiipp_t fn = (iFiiipp_t)fcn; R
 void iFiLLLL_32(x64emu_t *emu, uintptr_t fcn) { iFiLLLL_t fn = (iFiLLLL_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_ulong(from_ptri(ulong_t, R_ESP + 12)), to_ulong(from_ptri(ulong_t, R_ESP + 16)), to_ulong(from_ptri(ulong_t, R_ESP + 20))); }
 void iFipLLi_32(x64emu_t *emu, uintptr_t fcn) { iFipLLi_t fn = (iFipLLi_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12)), to_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptri(int32_t, R_ESP + 20)); }
 void iFuiuup_32(x64emu_t *emu, uintptr_t fcn) { iFuiuup_t fn = (iFuiuup_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptriv(R_ESP + 20)); }
+void iFpippp_32(x64emu_t *emu, uintptr_t fcn) { iFpippp_t fn = (iFpippp_t)fcn; R_EAX = fn(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)); }
 void iFpCCCC_32(x64emu_t *emu, uintptr_t fcn) { iFpCCCC_t fn = (iFpCCCC_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(uint8_t, R_ESP + 8), from_ptri(uint8_t, R_ESP + 12), from_ptri(uint8_t, R_ESP + 16), from_ptri(uint8_t, R_ESP + 20)); }
 void iFpLuLi_32(x64emu_t *emu, uintptr_t fcn) { iFpLuLi_t fn = (iFpLuLi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(uint32_t, R_ESP + 12), to_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptri(int32_t, R_ESP + 20)); }
 void iFppiUi_32(x64emu_t *emu, uintptr_t fcn) { iFppiUi_t fn = (iFppiUi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint64_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 24)); }
@@ -1933,6 +1950,7 @@ void iFpppip_32(x64emu_t *emu, uintptr_t fcn) { iFpppip_t fn = (iFpppip_t)fcn; R
 void iFpppLp_32(x64emu_t *emu, uintptr_t fcn) { iFpppLp_t fn = (iFpppLp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), to_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20)); }
 void iFppppp_32(x64emu_t *emu, uintptr_t fcn) { iFppppp_t fn = (iFppppp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); }
 void iFXiiip_32(x64emu_t *emu, uintptr_t fcn) { iFXiiip_t fn = (iFXiiip_t)fcn; R_EAX = fn(getDisplay(from_ptriv(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_ptriv(R_ESP + 20)); }
+void iFXpipi_32(x64emu_t *emu, uintptr_t fcn) { iFXpipi_t fn = (iFXpipi_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20)); }
 void iFXpppp_32(x64emu_t *emu, uintptr_t fcn) { iFXpppp_t fn = (iFXpppp_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); }
 void IFXpIII_32(x64emu_t *emu, uintptr_t fcn) { IFXpIII_t fn = (IFXpIII_t)fcn; ui64_t r; r.i = 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)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
 void uFpLLLS_32(x64emu_t *emu, uintptr_t fcn) { uFpLLLS_t fn = (uFpLLLS_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_ulong(from_ptri(ulong_t, R_ESP + 12)), to_ulong(from_ptri(ulong_t, R_ESP + 16)), io_convert32(from_ptriv(R_ESP + 20))); }
@@ -1951,6 +1969,7 @@ void pFpuuip_32(x64emu_t *emu, uintptr_t fcn) { pFpuuip_t fn = (pFpuuip_t)fcn; R
 void pFppuup_32(x64emu_t *emu, uintptr_t fcn) { pFppuup_t fn = (pFppuup_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptriv(R_ESP + 20))); }
 void pFppupp_32(x64emu_t *emu, uintptr_t fcn) { pFppupp_t fn = (pFppupp_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20))); }
 void pFXpipi_32(x64emu_t *emu, uintptr_t fcn) { pFXpipi_t fn = (pFXpipi_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20))); }
+void pFXppip_32(x64emu_t *emu, uintptr_t fcn) { pFXppip_t fn = (pFXppip_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20))); }
 void iFEBh_ppp_32(x64emu_t *emu, uintptr_t fcn) { iFEBh_ppp_t fn = (iFEBh_ppp_t)fcn; struct_h_t arg_4={0}; R_EAX = fn(emu, *(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_h(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void LFpbp_LLp_32(x64emu_t *emu, uintptr_t fcn) { LFpbp_LLp_t fn = (LFpbp_LLp_t)fcn; struct_p_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_p(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, to_ulong(from_ptri(ulong_t, R_ESP + 12)), to_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
 void LFpBp_LLp_32(x64emu_t *emu, uintptr_t fcn) { LFpBp_LLp_t fn = (LFpBp_LLp_t)fcn; struct_p_t arg_8={0}; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, to_ulong(from_ptri(ulong_t, R_ESP + 12)), to_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
@@ -2252,6 +2271,7 @@ void vFuiiiiiuiiiiilll_32(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiuiiiiilll_t fn
 void vFuuiiiiuuiiiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiuuiiiiiii_t fn = (vFuuiiiiuuiiiiiii_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_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_ptri(uint32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40), from_ptri(int32_t, R_ESP + 44), from_ptri(int32_t, R_ESP + 48), from_ptri(int32_t, R_ESP + 52), from_ptri(int32_t, R_ESP + 56), from_ptri(int32_t, R_ESP + 60)); }
 void vFfffffffffffffff_32(x64emu_t *emu, uintptr_t fcn) { vFfffffffffffffff_t fn = (vFfffffffffffffff_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), from_ptri(float, R_ESP + 36), from_ptri(float, R_ESP + 40), from_ptri(float, R_ESP + 44), from_ptri(float, R_ESP + 48), from_ptri(float, R_ESP + 52), from_ptri(float, R_ESP + 56), from_ptri(float, R_ESP + 60)); }
 void vFuuuuiiiiuuiiiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFuuuuiiiiuuiiiiiii_t fn = (vFuuuuiiiiuuiiiiiii_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(uint32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(uint32_t, R_ESP + 36), from_ptri(uint32_t, R_ESP + 40), from_ptri(int32_t, R_ESP + 44), from_ptri(int32_t, R_ESP + 48), from_ptri(int32_t, R_ESP + 52), from_ptri(int32_t, R_ESP + 56), from_ptri(int32_t, R_ESP + 60), from_ptri(int32_t, R_ESP + 64), from_ptri(int32_t, R_ESP + 68)); }
+void vFXpuiiiiipuiiiiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFXpuiiiiipuiiiiiiii_t fn = (vFXpuiiiiipuiiiiiiii_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(uint32_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_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptriv(R_ESP + 36), from_ptri(uint32_t, R_ESP + 40), from_ptri(int32_t, R_ESP + 44), from_ptri(int32_t, R_ESP + 48), from_ptri(int32_t, R_ESP + 52), from_ptri(int32_t, R_ESP + 56), from_ptri(int32_t, R_ESP + 60), from_ptri(int32_t, R_ESP + 64), from_ptri(int32_t, R_ESP + 68), from_ptri(int32_t, R_ESP + 72)); }
 void uFippuuuuiiiiuuiiiiiiiipp_32(x64emu_t *emu, uintptr_t fcn) { uFippuuuuiiiiuuiiiiiiiipp_t fn = (uFippuuuuiiiiuuiiiiiiiipp_t)fcn; R_EAX = (uint32_t)fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40), from_ptri(int32_t, R_ESP + 44), from_ptri(uint32_t, R_ESP + 48), from_ptri(uint32_t, R_ESP + 52), from_ptri(int32_t, R_ESP + 56), from_ptri(int32_t, R_ESP + 60), from_ptri(int32_t, R_ESP + 64), from_ptri(int32_t, R_ESP + 68), from_ptri(int32_t, R_ESP + 72), from_ptri(int32_t, R_ESP + 76), from_ptri(int32_t, R_ESP + 80), from_ptri(int32_t, R_ESP + 84), from_ptriv(R_ESP + 88), from_ptriv(R_ESP + 92)); }
 
 #if defined(HAVE_LD80BITS)
diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h
index 410289d3..bce62343 100644
--- a/src/wrapped32/generated/wrapper32.h
+++ b/src/wrapped32/generated/wrapper32.h
@@ -256,6 +256,7 @@ void pFpu_32(x64emu_t *emu, uintptr_t fnc);
 void pFpL_32(x64emu_t *emu, uintptr_t fnc);
 void pFpp_32(x64emu_t *emu, uintptr_t fnc);
 void pFXi_32(x64emu_t *emu, uintptr_t fnc);
+void pFXu_32(x64emu_t *emu, uintptr_t fnc);
 void hFpa_32(x64emu_t *emu, uintptr_t fnc);
 void SFip_32(x64emu_t *emu, uintptr_t fnc);
 void SFpp_32(x64emu_t *emu, uintptr_t fnc);
@@ -403,6 +404,7 @@ void iFSli_32(x64emu_t *emu, uintptr_t fnc);
 void iFXii_32(x64emu_t *emu, uintptr_t fnc);
 void iFXip_32(x64emu_t *emu, uintptr_t fnc);
 void iFXuu_32(x64emu_t *emu, uintptr_t fnc);
+void iFXup_32(x64emu_t *emu, uintptr_t fnc);
 void iFXLl_32(x64emu_t *emu, uintptr_t fnc);
 void iFXLL_32(x64emu_t *emu, uintptr_t fnc);
 void iFXLp_32(x64emu_t *emu, uintptr_t fnc);
@@ -473,6 +475,7 @@ 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);
 void iFBp_pi_32(x64emu_t *emu, uintptr_t fnc);
+void iFXBL_p_32(x64emu_t *emu, uintptr_t fnc);
 void IFpBp_i_32(x64emu_t *emu, uintptr_t fnc);
 void UFpBp_i_32(x64emu_t *emu, uintptr_t fnc);
 void fFpBp_p_32(x64emu_t *emu, uintptr_t fnc);
@@ -620,10 +623,13 @@ void iFppLi_32(x64emu_t *emu, uintptr_t fnc);
 void iFpppi_32(x64emu_t *emu, uintptr_t fnc);
 void iFpppp_32(x64emu_t *emu, uintptr_t fnc);
 void iFSpiL_32(x64emu_t *emu, uintptr_t fnc);
+void iFXiip_32(x64emu_t *emu, uintptr_t fnc);
 void iFXipi_32(x64emu_t *emu, uintptr_t fnc);
 void iFXipp_32(x64emu_t *emu, uintptr_t fnc);
+void iFXuup_32(x64emu_t *emu, uintptr_t fnc);
 void iFXLii_32(x64emu_t *emu, uintptr_t fnc);
 void iFXpip_32(x64emu_t *emu, uintptr_t fnc);
+void iFXppi_32(x64emu_t *emu, uintptr_t fnc);
 void iFXppp_32(x64emu_t *emu, uintptr_t fnc);
 void IFEpIi_32(x64emu_t *emu, uintptr_t fnc);
 void CFuuff_32(x64emu_t *emu, uintptr_t fnc);
@@ -787,6 +793,7 @@ void iFiiipp_32(x64emu_t *emu, uintptr_t fnc);
 void iFiLLLL_32(x64emu_t *emu, uintptr_t fnc);
 void iFipLLi_32(x64emu_t *emu, uintptr_t fnc);
 void iFuiuup_32(x64emu_t *emu, uintptr_t fnc);
+void iFpippp_32(x64emu_t *emu, uintptr_t fnc);
 void iFpCCCC_32(x64emu_t *emu, uintptr_t fnc);
 void iFpLuLi_32(x64emu_t *emu, uintptr_t fnc);
 void iFppiUi_32(x64emu_t *emu, uintptr_t fnc);
@@ -794,6 +801,7 @@ void iFpppip_32(x64emu_t *emu, uintptr_t fnc);
 void iFpppLp_32(x64emu_t *emu, uintptr_t fnc);
 void iFppppp_32(x64emu_t *emu, uintptr_t fnc);
 void iFXiiip_32(x64emu_t *emu, uintptr_t fnc);
+void iFXpipi_32(x64emu_t *emu, uintptr_t fnc);
 void iFXpppp_32(x64emu_t *emu, uintptr_t fnc);
 void IFXpIII_32(x64emu_t *emu, uintptr_t fnc);
 void uFpLLLS_32(x64emu_t *emu, uintptr_t fnc);
@@ -812,6 +820,7 @@ void pFpuuip_32(x64emu_t *emu, uintptr_t fnc);
 void pFppuup_32(x64emu_t *emu, uintptr_t fnc);
 void pFppupp_32(x64emu_t *emu, uintptr_t fnc);
 void pFXpipi_32(x64emu_t *emu, uintptr_t fnc);
+void pFXppip_32(x64emu_t *emu, uintptr_t fnc);
 void iFEBh_ppp_32(x64emu_t *emu, uintptr_t fnc);
 void LFpbp_LLp_32(x64emu_t *emu, uintptr_t fnc);
 void LFpBp_LLp_32(x64emu_t *emu, uintptr_t fnc);
@@ -1113,6 +1122,7 @@ void vFuiiiiiuiiiiilll_32(x64emu_t *emu, uintptr_t fnc);
 void vFuuiiiiuuiiiiiii_32(x64emu_t *emu, uintptr_t fnc);
 void vFfffffffffffffff_32(x64emu_t *emu, uintptr_t fnc);
 void vFuuuuiiiiuuiiiiiii_32(x64emu_t *emu, uintptr_t fnc);
+void vFXpuiiiiipuiiiiiiii_32(x64emu_t *emu, uintptr_t fnc);
 void uFippuuuuiiiiuuiiiiiiiipp_32(x64emu_t *emu, uintptr_t fnc);
 
 #if defined(HAVE_LD80BITS)
diff --git a/src/wrapped32/wrappedlibasound.c b/src/wrapped32/wrappedlibasound.c
index 824364ff..1f3bf86f 100644
--- a/src/wrapped32/wrappedlibasound.c
+++ b/src/wrapped32/wrappedlibasound.c
@@ -321,6 +321,31 @@ EXPORT int my32_snd_pcm_mmap_begin(x64emu_t* emu, void* pcm, ptr_t* areas, ulong
     return ret;
 }
 
+EXPORT int my32_snd_device_name_hint(x64emu_t* emu, int card, void* iface, ptr_t* hints)
+{
+    void** hints_l = NULL;
+    int ret = my->snd_device_name_hint(card, iface, &hints_l);
+    if(ret) return ret;
+    *hints = to_ptrv(hints_l);
+    // inplace shrink
+    int n = 0;
+    while(hints_l[n]) ++n;
+    ++n;
+    for(int i=0; i<n; ++i)
+        ((ptr_t*)hints_l)[i] = to_ptrv(hints_l[i]);
+    return ret;
+}
+
+EXPORT int my32_snd_device_name_free_hint(x64emu_t* emu, ptr_t* hints)
+{
+    void** hints_l = (void**)hints;
+    int n=0;
+    while(hints[n]) ++n;
+    for(int i=n; i>=0; --i)
+        hints_l[i] = from_ptrv(hints[i]);
+    return my->snd_device_name_free_hint(hints_l);
+}
+
 void* my_dlopen(x64emu_t* emu, void *filename, int flag);   // defined in wrappedlibdl.c
 char* my_dlerror(x64emu_t* emu);
 int my_dlclose(x64emu_t* emu, void *handle);
diff --git a/src/wrapped32/wrappedlibasound_private.h b/src/wrapped32/wrappedlibasound_private.h
index be88a179..58f4198c 100644
--- a/src/wrapped32/wrappedlibasound_private.h
+++ b/src/wrapped32/wrappedlibasound_private.h
@@ -145,9 +145,9 @@ GO(snd_strerror, pFi)
 //GO(snd_config_get_bool, iFp)
 //GO(snd_config_get_ctl_iface_ascii, iFp)
 //GO(snd_config_get_ctl_iface, iFp)
-//GO(snd_device_name_free_hint, iFp)
-//GO(snd_device_name_get_hint, pFpp)
-//GO(snd_device_name_hint, iFipp)
+GOM(snd_device_name_free_hint, iFEp)
+GO(snd_device_name_get_hint, pFpp)
+GOM(snd_device_name_hint, iFEipp)
 //GO(snd_names_list, iFpp)
 //GO(snd_names_list_free, vFp)
 //GO(snd_pcm_format_mask_sizeof, LFv)
diff --git a/src/wrapped32/wrappedlibgl_private.h b/src/wrapped32/wrappedlibgl_private.h
index 8d221bcd..7ce29e7c 100644
--- a/src/wrapped32/wrappedlibgl_private.h
+++ b/src/wrapped32/wrappedlibgl_private.h
@@ -2930,9 +2930,9 @@ GO(glXBindHyperpipeSGIX, iFXi)
 GO(glXBindTexImageEXT, vFXpip)
 GO(glXBindSwapBarrierNV, iFXuu)
 GO(glXBindSwapBarrierSGIX,vFii)
-//GO(glXBindVideoCaptureDeviceNV, iFpup)
-//GO(glXBindVideoDeviceNV, iFpuup)
-//GO(glXBindVideoImageNV, iFpppi)
+GO(glXBindVideoCaptureDeviceNV, iFXup)
+GO(glXBindVideoDeviceNV, iFXuup)
+GO(glXBindVideoImageNV, iFXppi)
 //GO(glXChangeDrawableAttributes, vFp)
 //GO(glXChangeDrawableAttributesSGIX, vFp)
 GO(glXClientInfo, vFv)
@@ -2940,7 +2940,7 @@ GO(glXClientInfo, vFv)
 GOM(glXChooseFBConfig, pFEXipp)
 //GO(glXChooseFBConfigSGIX, pFpipp)
 GO(glXCreateContext,pFXppi)
-//GO(glXCreateContextAttribsARB, pFpppip)
+GO(glXCreateContextAttribsARB, pFXppip)
 //GO(glXCreateContextWithConfigSGIX, pFppipi)
 //GO(glXCreateGLXPbufferSGIX, pFppuup)
 //GO(glXCreateGLXPixmap, pFppp)
@@ -2951,7 +2951,7 @@ GO(glXCreatePbuffer, pFXpp)
 GO(glXCreatePixmap, pFXpp)
 GO(glXCreateWindow, pFXppp)
 GO(glXChooseVisual, pFXip)  // need to wrap XVisualInfo?
-//GO(glXCopyImageSubDataNV, vFppuiiiiipuiiiiiiii)
+GO(glXCopyImageSubDataNV, vFXpuiiiiipuiiiiiiii)
 //GO(glXCopySubBufferMESA, vFppiiii)
 GO(glXDestroyContext,vFXp)
 //GO(glXDestroyGLXPbufferSGIX,vFpp)
@@ -2961,12 +2961,12 @@ GO(glXDestroyContext,vFXp)
 GO(glXDestroyPbuffer,vFXp)
 GO(glXDestroyPixmap,vFXp)
 GO(glXDestroyWindow,vFXp)
-//GO(glXEnumerateVideoCaptureDevicesNV, pFpip)
-//GO(glXEnumerateVideoDevicesNV, pFpip)
-//GO(glXFreeContextEXT, vFpp)
+GO(glXEnumerateVideoCaptureDevicesNV, pFXip)
+GO(glXEnumerateVideoDevicesNV, pFXip)
+GO(glXFreeContextEXT, vFXp)
 GO(glXGetClientString, pFXi)
 //GO(glXGetConfig, iFppip)
-//GO(glXGetContextIDEXT, uFp)
+GO(glXGetContextIDEXT, uFp)
 GO(glXGetCurrentContext, pFv)
 GO(glXGetCurrentDisplay, XFv)
 GO(glXGetCurrentDrawable, pFv)
@@ -2980,23 +2980,23 @@ GO(glXGetFBConfigAttrib, iFXpip)
 //GO(glXGetFBConfigsSGIX,pFpip)
 GO(glXGetSelectedEvent, vFXpp)
 GO(glXGetSelectedEventSGIX, vFXpp)
-//GO(glXGetVideoDeviceNV, iFpiip)
-//GO(glXGetVideoInfoNV, iFpippp)
+GO(glXGetVideoDeviceNV, iFXiip)
+GO(glXGetVideoInfoNV, iFpippp)
 //GO(glXGetVideoSyncSGI, iFp)
 //GO(glXGetVisualConfigs,pFpp)
 GOM(glXGetVisualFromFBConfig, pFEXp)
 //GO(glXGetVisualFromFBConfigSGIX, pFpp)
 //GO(glXHyperpipeAttribSGIX,iFpiiip)
 //GO(glXHyperpipeConfigSGIX, iFpiipp)
-//GO(glXImportContextEXT, pFpu)
+GO(glXImportContextEXT, pFXu)
 //GO(glXIsDirect,iFpp)
 GO(glXJoinSwapGroupNV, iFXpu)
 //GO(glXJoinSwapGroupSGIX,vFpp)
-//GO(glXLockVideoCaptureDeviceNV, vFpp)
+GO(glXLockVideoCaptureDeviceNV, vFXp)
 GO(glXMakeContextCurrent,iFXppp)
 GO(glXMakeCurrent,iFXpp)
 GO(glXQueryContext,iFXpip)
-//GO(glXQueryContextInfoEXT,iFppip)
+GO(glXQueryContextInfoEXT,iFXpip)
 GO(glXQueryDrawable, iFXpip)
 GO(glXQueryExtension, iFXpp)
 GO(glXQueryExtensionsString,pFXi)
@@ -3011,17 +3011,17 @@ GO(glXQueryMaxSwapGroupsNV, iFXipp)
 //GO(glXQueryServerString,pFpii)
 GO(glXQuerySwapGroupNV, iFXipp)
 GO(glXQueryVersion,iFXpp)
-//GO(glXQueryVideoCaptureDeviceNV, iFppip)
+GO(glXQueryVideoCaptureDeviceNV, iFXpip)
 GO(glXReleaseTexImageEXT, vFXpi)
-//GO(glXReleaseVideoCaptureDeviceNV, vFpp)
-//GO(glXReleaseVideoDeviceNV, iFpip)
-//GO(glXReleaseVideoImageNV, iFpp)
+GO(glXReleaseVideoCaptureDeviceNV, vFXp)
+GO(glXReleaseVideoDeviceNV, iFXip)
+GO(glXReleaseVideoImageNV, iFXp)
 GO(glXRender, vFv)
 GO(glXRenderLarge, vFv)
 GO(glXResetFrameCountNV, iFXi)
 GO(glXSelectEvent, vFXpu)
 //GO(glXSelectEventSGIX, vFppu)
-//GO(glXSendPbufferToVideoNV, iFppipi)
+GO(glXSendPbufferToVideoNV, iFXpipi)
 GO(glXSwapBuffers,vFXp)
 //GO(glXUseXFont,vFpiii)
 GO(glXVendorPrivate, vFv)
diff --git a/src/wrapped32/wrappedlibx11_private.h b/src/wrapped32/wrappedlibx11_private.h
index 952eb355..3476bd14 100644
--- a/src/wrapped32/wrappedlibx11_private.h
+++ b/src/wrapped32/wrappedlibx11_private.h
@@ -387,7 +387,7 @@ GO(XGetErrorText, iFXipi)
 GO(XGetICValues, pFpppppppppp)      // use varargs...
 GOM(XGetImage, pFEXLiiuuLi)     // return an XImage with callbacks that needs wrapping
 //GO(XGetIMValues, pFppppppp)     // use varargs
-//GO(XGetInputFocus, iFppp)
+GO(XGetInputFocus, iFXBL_p)
 //GO(XGetKeyboardControl, iFpp)
 //GO(XGetKeyboardMapping, pFpCip)
 //GO(_XGetLCValues,