about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-09-28 12:27:00 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-09-28 12:27:00 +0200
commit578bae3c37269d2db3f202d761a09e95ee35bff7 (patch)
treebbac7daa53da8295a7a0663bd622026836625b51 /src
parent37490d1a44d0182b8c1079162e727038688db0c4 (diff)
downloadbox64-578bae3c37269d2db3f202d761a09e95ee35bff7.tar.gz
box64-578bae3c37269d2db3f202d761a09e95ee35bff7.zip
[BOX32][WRAPPER] Added some more 32bits wrapped function, and fixed one from SDL2
Diffstat (limited to 'src')
-rw-r--r--src/wrapped32/generated/converter32.c23
-rw-r--r--src/wrapped32/generated/converter32.h12
-rw-r--r--src/wrapped32/generated/functions_list.txt7
-rw-r--r--src/wrapped32/generated/wrappedfreetypetypes32.h3
-rw-r--r--src/wrapped32/generated/wrapper32.c8
-rw-r--r--src/wrapped32/generated/wrapper32.h4
-rw-r--r--src/wrapped32/wrappedfreetype.c51
-rw-r--r--src/wrapped32/wrappedfreetype_private.h14
-rw-r--r--src/wrapped32/wrappedsdl2.c6
-rw-r--r--src/wrapped32/wrappedsdl2_private.h6
10 files changed, 122 insertions, 12 deletions
diff --git a/src/wrapped32/generated/converter32.c b/src/wrapped32/generated/converter32.c
index 7bed63d4..861db942 100644
--- a/src/wrapped32/generated/converter32.c
+++ b/src/wrapped32/generated/converter32.c
@@ -209,3 +209,26 @@ void to_struct_pLiL(ptr_t d, const struct_pLiL_t *src) {
 	*(int*)dest = src->i2; dest += 4;
 	*(ulong_t*)dest = to_ulong(src->L3); dest += 4;
 }
+void from_struct_uuipWCCp(struct_uuipWCCp_t *dest, ptr_t s) {
+	uint8_t* src = (uint8_t*)from_ptrv(s);
+	dest->u0 = *(uint32_t*)src; src += 4;
+	dest->u1 = *(uint32_t*)src; src += 4;
+	dest->i2 = *(int*)src; src += 4;
+	dest->p3 = from_ptrv(*(ptr_t*)src); src += 4;
+	dest->u4 = *(uint16_t*)src; src += 2;
+	dest->u5 = *(uint8_t*)src; src += 1;
+	dest->u6 = *(uint8_t*)src; src += 1;
+	dest->p7 = from_ptrv(*(ptr_t*)src); src += 4;
+}
+void to_struct_uuipWCCp(ptr_t d, const struct_uuipWCCp_t *src) {
+	if (!src) return;
+	uint8_t* dest = (uint8_t*)from_ptrv(d);
+	*(uint32_t*)dest = src->u0; dest += 4;
+	*(uint32_t*)dest = src->u1; dest += 4;
+	*(int*)dest = src->i2; dest += 4;
+	*(ptr_t*)dest = to_ptrv(src->p3); dest += 4;
+	*(uint16_t*)dest = src->u4; dest += 2;
+	*(uint8_t*)dest = src->u5; dest += 1;
+	*(uint8_t*)dest = src->u6; dest += 1;
+	*(ptr_t*)dest = to_ptrv(src->p7); dest += 4;
+}
diff --git a/src/wrapped32/generated/converter32.h b/src/wrapped32/generated/converter32.h
index 7260ab01..d404397c 100644
--- a/src/wrapped32/generated/converter32.h
+++ b/src/wrapped32/generated/converter32.h
@@ -108,5 +108,17 @@ typedef struct struct_pLiL_s {
 } struct_pLiL_t;
 void from_struct_pLiL(struct_pLiL_t *dest, ptr_t src);
 void to_struct_pLiL(ptr_t dest, const struct_pLiL_t *src);
+typedef struct struct_uuipWCCp_s {
+	uint32_t u0;
+	uint32_t u1;
+	int i2;
+	void* p3;
+	uint16_t u4;
+	uint8_t u5;
+	uint8_t u6;
+	void* p7;
+} struct_uuipWCCp_t;
+void from_struct_uuipWCCp(struct_uuipWCCp_t *dest, ptr_t src);
+void to_struct_uuipWCCp(ptr_t dest, const struct_uuipWCCp_t *src);
 
 #endif // __CONVERTER_H_
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt
index 19cf1462..b2e74f4d 100644
--- a/src/wrapped32/generated/functions_list.txt
+++ b/src/wrapped32/generated/functions_list.txt
@@ -75,6 +75,7 @@
 #() iFBp_ -> iFB
 #() LFrL_ -> LFB
 #() pFrL_ -> pFB
+#() vFbuuipWCCp_ -> vFB
 #() LFriiiiiiiiilt_ -> LFB
 #() pFriiiiiiiiilt_ -> pFB
 #() vFEv -> vFEv
@@ -220,6 +221,7 @@
 #() iFpbup_ -> iFpB
 #() iFBLL_p -> iFBp
 #() iFrLL_BLL_ -> iFBB
+#() iFpruuipWCCp_ -> iFpB
 #() pFriiiiiiiiilt_p -> pFBp
 #() iFiBLLLLLLLLLLLLLLLLLL_ -> iFiB
 #() vFEip -> vFEip
@@ -608,6 +610,7 @@
 #() iFuirLL_BLL_ -> iFuiBB
 #() iFXLpBLWWWcc_ -> iFXLpB
 #() LFpLpriiiiiiiiilt_ -> LFpLpB
+#() iFpruuipWCCp_buuipWCCp_i -> iFpBBi
 #() vFEuipp -> vFEuipp
 #() vFEpLLp -> vFEpLLp
 #() vFiiiii -> vFiiiii
@@ -820,6 +823,7 @@
 #() iFEuppup -> iFEuppup
 #() iFEuppLp -> iFEuppLp
 #() iFEpiLpp -> iFEpiLpp
+#() iFEpuuup -> iFEpuuup
 #() iFEplluu -> iFEplluu
 #() iFEpLlpp -> iFEpLlpp
 #() iFEppipp -> iFEppipp
@@ -1087,6 +1091,7 @@ wrappedfreetype:
   - FT_Render_Glyph
 - iFpp:
   - FT_Get_PS_Font_Info
+  - FT_Request_Size
 - uFpL:
   - FT_Get_Char_Index
 - LFpp:
@@ -1109,6 +1114,8 @@ wrappedfreetype:
   - FT_Get_Glyph_Name
 - iFpplp:
   - FT_New_Face
+- iFpuuup:
+  - FT_Get_Kerning
 - iFplluu:
   - FT_Set_Char_Size
 - iFpLlpp:
diff --git a/src/wrapped32/generated/wrappedfreetypetypes32.h b/src/wrapped32/generated/wrappedfreetypetypes32.h
index eea13522..363e3d72 100644
--- a/src/wrapped32/generated/wrappedfreetypetypes32.h
+++ b/src/wrapped32/generated/wrappedfreetypetypes32.h
@@ -29,6 +29,7 @@ typedef int32_t (*iFppp_t)(void*, void*, void*);
 typedef uintptr_t (*LFpLp_t)(void*, uintptr_t, void*);
 typedef int32_t (*iFpupu_t)(void*, uint32_t, void*, uint32_t);
 typedef int32_t (*iFpplp_t)(void*, void*, intptr_t, void*);
+typedef int32_t (*iFpuuup_t)(void*, uint32_t, uint32_t, uint32_t, void*);
 typedef int32_t (*iFplluu_t)(void*, intptr_t, intptr_t, uint32_t, uint32_t);
 typedef int32_t (*iFpLlpp_t)(void*, uintptr_t, intptr_t, void*, void*);
 typedef int32_t (*iFppllp_t)(void*, void*, intptr_t, intptr_t, void*);
@@ -44,6 +45,7 @@ typedef int32_t (*iFppllp_t)(void*, void*, intptr_t, intptr_t, void*);
 	GO(FT_Select_Size, iFpi_t) \
 	GO(FT_Render_Glyph, iFpu_t) \
 	GO(FT_Get_PS_Font_Info, iFpp_t) \
+	GO(FT_Request_Size, iFpp_t) \
 	GO(FT_Get_Char_Index, uFpL_t) \
 	GO(FT_Get_First_Char, LFpp_t) \
 	GO(FT_Get_Sfnt_Table, pFpi_t) \
@@ -55,6 +57,7 @@ typedef int32_t (*iFppllp_t)(void*, void*, intptr_t, intptr_t, void*);
 	GO(FT_Get_Next_Char, LFpLp_t) \
 	GO(FT_Get_Glyph_Name, iFpupu_t) \
 	GO(FT_New_Face, iFpplp_t) \
+	GO(FT_Get_Kerning, iFpuuup_t) \
 	GO(FT_Set_Char_Size, iFplluu_t) \
 	GO(FT_Load_Sfnt_Table, iFpLlpp_t) \
 	GO(FT_New_Memory_Face, iFppllp_t)
diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c
index 3546f5f3..060788e5 100644
--- a/src/wrapped32/generated/wrapper32.c
+++ b/src/wrapped32/generated/wrapper32.c
@@ -165,6 +165,7 @@ typedef void* (*XFv_t)(void);
 typedef int32_t (*iFBp__t)(struct_p_t*);
 typedef uintptr_t (*LFrL__t)(struct_L_t*);
 typedef void* (*pFrL__t)(struct_L_t*);
+typedef void (*vFbuuipWCCp__t)(struct_uuipWCCp_t*);
 typedef uintptr_t (*LFriiiiiiiiilt__t)(struct_iiiiiiiiilt_t*);
 typedef void* (*pFriiiiiiiiilt__t)(struct_iiiiiiiiilt_t*);
 typedef void (*vFEv_t)(x64emu_t*);
@@ -310,6 +311,7 @@ typedef int32_t (*iFprLL__t)(void*, struct_LL_t*);
 typedef int32_t (*iFpbup__t)(void*, struct_up_t*);
 typedef int32_t (*iFBLL_p_t)(struct_LL_t*, void*);
 typedef int32_t (*iFrLL_BLL__t)(struct_LL_t*, struct_LL_t*);
+typedef int32_t (*iFpruuipWCCp__t)(void*, struct_uuipWCCp_t*);
 typedef void* (*pFriiiiiiiiilt_p_t)(struct_iiiiiiiiilt_t*, void*);
 typedef int32_t (*iFiBLLLLLLLLLLLLLLLLLL__t)(int32_t, struct_LLLLLLLLLLLLLLLLLL_t*);
 typedef void (*vFEip_t)(x64emu_t*, int32_t, void*);
@@ -698,6 +700,7 @@ typedef void (*vFXLrpLiL_L_t)(void*, uintptr_t, struct_pLiL_t*, uintptr_t);
 typedef int32_t (*iFuirLL_BLL__t)(uint32_t, int32_t, struct_LL_t*, struct_LL_t*);
 typedef int32_t (*iFXLpBLWWWcc__t)(void*, uintptr_t, void*, struct_LWWWcc_t*);
 typedef uintptr_t (*LFpLpriiiiiiiiilt__t)(void*, uintptr_t, void*, struct_iiiiiiiiilt_t*);
+typedef int32_t (*iFpruuipWCCp_buuipWCCp_i_t)(void*, struct_uuipWCCp_t*, struct_uuipWCCp_t*, int32_t);
 typedef void (*vFEuipp_t)(x64emu_t*, uint32_t, int32_t, void*, void*);
 typedef void (*vFEpLLp_t)(x64emu_t*, void*, uintptr_t, uintptr_t, void*);
 typedef void (*vFiiiii_t)(int32_t, int32_t, int32_t, int32_t, int32_t);
@@ -910,6 +913,7 @@ typedef void (*vFXLiiii_t)(void*, uintptr_t, int32_t, int32_t, int32_t, int32_t)
 typedef int32_t (*iFEuppup_t)(x64emu_t*, uint32_t, void*, void*, uint32_t, void*);
 typedef int32_t (*iFEuppLp_t)(x64emu_t*, uint32_t, void*, void*, uintptr_t, void*);
 typedef int32_t (*iFEpiLpp_t)(x64emu_t*, void*, int32_t, uintptr_t, void*, void*);
+typedef int32_t (*iFEpuuup_t)(x64emu_t*, void*, uint32_t, uint32_t, uint32_t, void*);
 typedef int32_t (*iFEplluu_t)(x64emu_t*, void*, intptr_t, intptr_t, uint32_t, uint32_t);
 typedef int32_t (*iFEpLlpp_t)(x64emu_t*, void*, uintptr_t, intptr_t, void*, void*);
 typedef int32_t (*iFEppipp_t)(x64emu_t*, void*, void*, int32_t, void*, void*);
@@ -1229,6 +1233,7 @@ void XFv_32(x64emu_t *emu, uintptr_t fcn) { XFv_t fn = (XFv_t)fcn; R_EAX = to_pt
 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}; 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}; 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)); }
+void vFbuuipWCCp__32(x64emu_t *emu, uintptr_t fcn) { vFbuuipWCCp__t fn = (vFbuuipWCCp__t)fcn; struct_uuipWCCp_t arg_4={0}; from_struct_uuipWCCp(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_uuipWCCp(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void LFriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fcn) { LFriiiiiiiiilt__t fn = (LFriiiiiiiiilt__t)fcn; struct_iiiiiiiiilt_t arg_4={0}; from_struct_iiiiiiiiilt(&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 pFriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fcn) { pFriiiiiiiiilt__t fn = (pFriiiiiiiiilt__t)fcn; struct_iiiiiiiiilt_t arg_4={0}; from_struct_iiiiiiiiilt(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = to_ptrv(fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL)); }
 void vFEv_32(x64emu_t *emu, uintptr_t fcn) { vFEv_t fn = (vFEv_t)fcn; fn(emu); }
@@ -1374,6 +1379,7 @@ void iFprLL__32(x64emu_t *emu, uintptr_t fcn) { iFprLL__t fn = (iFprLL__t)fcn; s
 void iFpbup__32(x64emu_t *emu, uintptr_t fcn) { iFpbup__t fn = (iFpbup__t)fcn; struct_up_t arg_8={0}; from_struct_up(&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); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_up(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
 void iFBLL_p_32(x64emu_t *emu, uintptr_t fcn) { iFBLL_p_t fn = (iFBLL_p_t)fcn; struct_LL_t arg_4={0}; R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ptriv(R_ESP + 8)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_LL(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void iFrLL_BLL__32(x64emu_t *emu, uintptr_t fcn) { iFrLL_BLL__t fn = (iFrLL_BLL__t)fcn; struct_LL_t arg_4={0}; from_struct_LL(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); struct_LL_t arg_8={0}; R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_LL(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
+void iFpruuipWCCp__32(x64emu_t *emu, uintptr_t fcn) { iFpruuipWCCp__t fn = (iFpruuipWCCp__t)fcn; struct_uuipWCCp_t arg_8={0}; from_struct_uuipWCCp(&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); }
 void pFriiiiiiiiilt_p_32(x64emu_t *emu, uintptr_t fcn) { pFriiiiiiiiilt_p_t fn = (pFriiiiiiiiilt_p_t)fcn; struct_iiiiiiiiilt_t arg_4={0}; from_struct_iiiiiiiiilt(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = to_ptrv(fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ptriv(R_ESP + 8))); }
 void iFiBLLLLLLLLLLLLLLLLLL__32(x64emu_t *emu, uintptr_t fcn) { iFiBLLLLLLLLLLLLLLLLLL__t fn = (iFiBLLLLLLLLLLLLLLLLLL__t)fcn; struct_LLLLLLLLLLLLLLLLLL_t arg_8={0}; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_LLLLLLLLLLLLLLLLLL(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
 void vFEip_32(x64emu_t *emu, uintptr_t fcn) { vFEip_t fn = (vFEip_t)fcn; fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8)); }
@@ -1762,6 +1768,7 @@ void vFXLrpLiL_L_32(x64emu_t *emu, uintptr_t fcn) { vFXLrpLiL_L_t fn = (vFXLrpLi
 void iFuirLL_BLL__32(x64emu_t *emu, uintptr_t fcn) { iFuirLL_BLL__t fn = (iFuirLL_BLL__t)fcn; struct_LL_t arg_12={0}; from_struct_LL(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); struct_LL_t arg_16={0}; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_LL(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); }
 void iFXLpBLWWWcc__32(x64emu_t *emu, uintptr_t fcn) { iFXLpBLWWWcc__t fn = (iFXLpBLWWWcc__t)fcn; struct_LWWWcc_t arg_16={0}; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_LWWWcc(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); }
 void LFpLpriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fcn) { LFpLpriiiiiiiiilt__t fn = (LFpLpriiiiiiiiilt__t)fcn; struct_iiiiiiiiilt_t arg_16={0}; from_struct_iiiiiiiiilt(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL)); }
+void iFpruuipWCCp_buuipWCCp_i_32(x64emu_t *emu, uintptr_t fcn) { iFpruuipWCCp_buuipWCCp_i_t fn = (iFpruuipWCCp_buuipWCCp_i_t)fcn; struct_uuipWCCp_t arg_8={0}; from_struct_uuipWCCp(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); struct_uuipWCCp_t arg_12={0}; from_struct_uuipWCCp(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, from_ptri(int32_t, R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_uuipWCCp(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); }
 void vFEuipp_32(x64emu_t *emu, uintptr_t fcn) { vFEuipp_t fn = (vFEuipp_t)fcn; fn(emu, from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void vFEpLLp_32(x64emu_t *emu, uintptr_t fcn) { vFEpLLp_t fn = (vFEpLLp_t)fcn; fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16)); }
 void vFiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFiiiii_t fn = (vFiiiii_t)fcn; fn(from_ptri(int32_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)); }
@@ -1974,6 +1981,7 @@ void vFXLiiii_32(x64emu_t *emu, uintptr_t fcn) { vFXLiiii_t fn = (vFXLiiii_t)fcn
 void iFEuppup_32(x64emu_t *emu, uintptr_t fcn) { iFEuppup_t fn = (iFEuppup_t)fcn; R_EAX = fn(emu, from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptriv(R_ESP + 20)); }
 void iFEuppLp_32(x64emu_t *emu, uintptr_t fcn) { iFEuppLp_t fn = (iFEuppLp_t)fcn; R_EAX = fn(emu, from_ptri(uint32_t, 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 iFEpiLpp_32(x64emu_t *emu, uintptr_t fcn) { iFEpiLpp_t fn = (iFEpiLpp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); }
+void iFEpuuup_32(x64emu_t *emu, uintptr_t fcn) { iFEpuuup_t fn = (iFEpuuup_t)fcn; R_EAX = fn(emu, from_ptriv(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_ptriv(R_ESP + 20)); }
 void iFEplluu_32(x64emu_t *emu, uintptr_t fcn) { iFEplluu_t fn = (iFEplluu_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_long(from_ptri(long_t, R_ESP + 8)), to_long(from_ptri(long_t, R_ESP + 12)), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20)); }
 void iFEpLlpp_32(x64emu_t *emu, uintptr_t fcn) { iFEpLlpp_t fn = (iFEpLlpp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_long(from_ptri(long_t, R_ESP + 12)), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); }
 void iFEppipp_32(x64emu_t *emu, uintptr_t fcn) { iFEppipp_t fn = (iFEppipp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); }
diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h
index 1b16db48..1ef62f5c 100644
--- a/src/wrapped32/generated/wrapper32.h
+++ b/src/wrapped32/generated/wrapper32.h
@@ -116,6 +116,7 @@ void XFv_32(x64emu_t *emu, uintptr_t fnc);
 void iFBp__32(x64emu_t *emu, uintptr_t fnc);
 void LFrL__32(x64emu_t *emu, uintptr_t fnc);
 void pFrL__32(x64emu_t *emu, uintptr_t fnc);
+void vFbuuipWCCp__32(x64emu_t *emu, uintptr_t fnc);
 void LFriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fnc);
 void pFriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fnc);
 void vFEv_32(x64emu_t *emu, uintptr_t fnc);
@@ -261,6 +262,7 @@ void iFprLL__32(x64emu_t *emu, uintptr_t fnc);
 void iFpbup__32(x64emu_t *emu, uintptr_t fnc);
 void iFBLL_p_32(x64emu_t *emu, uintptr_t fnc);
 void iFrLL_BLL__32(x64emu_t *emu, uintptr_t fnc);
+void iFpruuipWCCp__32(x64emu_t *emu, uintptr_t fnc);
 void pFriiiiiiiiilt_p_32(x64emu_t *emu, uintptr_t fnc);
 void iFiBLLLLLLLLLLLLLLLLLL__32(x64emu_t *emu, uintptr_t fnc);
 void vFEip_32(x64emu_t *emu, uintptr_t fnc);
@@ -649,6 +651,7 @@ void vFXLrpLiL_L_32(x64emu_t *emu, uintptr_t fnc);
 void iFuirLL_BLL__32(x64emu_t *emu, uintptr_t fnc);
 void iFXLpBLWWWcc__32(x64emu_t *emu, uintptr_t fnc);
 void LFpLpriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fnc);
+void iFpruuipWCCp_buuipWCCp_i_32(x64emu_t *emu, uintptr_t fnc);
 void vFEuipp_32(x64emu_t *emu, uintptr_t fnc);
 void vFEpLLp_32(x64emu_t *emu, uintptr_t fnc);
 void vFiiiii_32(x64emu_t *emu, uintptr_t fnc);
@@ -861,6 +864,7 @@ void vFXLiiii_32(x64emu_t *emu, uintptr_t fnc);
 void iFEuppup_32(x64emu_t *emu, uintptr_t fnc);
 void iFEuppLp_32(x64emu_t *emu, uintptr_t fnc);
 void iFEpiLpp_32(x64emu_t *emu, uintptr_t fnc);
+void iFEpuuup_32(x64emu_t *emu, uintptr_t fnc);
 void iFEplluu_32(x64emu_t *emu, uintptr_t fnc);
 void iFEpLlpp_32(x64emu_t *emu, uintptr_t fnc);
 void iFEppipp_32(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped32/wrappedfreetype.c b/src/wrapped32/wrappedfreetype.c
index 685ad760..df091d9c 100644
--- a/src/wrapped32/wrappedfreetype.c
+++ b/src/wrapped32/wrappedfreetype.c
@@ -241,6 +241,15 @@ typedef struct  BDF_PropertyRec_s
     } u;
 } BDF_PropertyRec_t;
 
+typedef struct  FT_Size_RequestRec_s
+{
+    int         type;
+    long        width;
+    long        height;
+    uint32_t    horiResolution;
+    uint32_t    vertResolution;
+} FT_Size_RequestRec_t;
+
 // 32bits FreeType structures
 typedef union  FT_StreamDesc_32_s
 {
@@ -452,6 +461,15 @@ typedef struct  BDF_PropertyRec_32_s
     } u;
 } BDF_PropertyRec_32_t;
 
+typedef struct  FT_Size_RequestRec_32_s
+{
+    int         type;
+    long_t      width;
+    long_t      height;
+    uint32_t    horiResolution;
+    uint32_t    vertResolution;
+} FT_Size_RequestRec_32_t;
+
 
 void inplace_FT_GlyphSlot_shrink(void* a)
 {
@@ -737,6 +755,18 @@ void convert_BDF_PropertyRec_to_32(void* d, void* s)
     }
 }
 
+void convert_FT_Size_RequestRec_to_64(void* d, void* s)
+{
+    FT_Size_RequestRec_t* src = s;
+    FT_Size_RequestRec_32_t* dst = d;
+
+    dst->type = src->type;
+    dst->width = from_long(src->width);
+    dst->height = from_long(src->height);
+    dst->horiResolution = src->horiResolution;
+    dst->vertResolution = src->vertResolution;
+}
+
 #define ADDED_FUNCTIONS()                   \
 
 #include "generated/wrappedfreetypetypes32.h"
@@ -1207,6 +1237,17 @@ EXPORT int my32_FT_Done_Face(x64emu_t* emu, void* face)
     return my->FT_Done_Face(face);
 }
 
+EXPORT int my32_FT_Get_Kerning(x64emu_t* emu, void* face, uint32_t left, uint32_t right, uint32_t kern, FT_Vector_32_t* kerning)
+{
+    FT_Vector_t kerning_l = {0};
+    inplace_FT_FaceRec_enlarge(face);
+    int ret = my->FT_Get_Kerning(face, left, right, kern, &kerning_l);
+    inplace_FT_FaceRec_shrink(face);
+    kerning->x = kerning_l.x;
+    kerning->y = kerning_l.y;
+    return ret;
+}
+
 EXPORT int my32_FT_Set_Char_Size(x64emu_t* emu, void* face, long char_width, long char_height, uint32_t horz, uint32_t vert)
 {
     inplace_FT_FaceRec_enlarge(face);
@@ -1223,6 +1264,16 @@ EXPORT int my32_FT_Set_Pixel_Sizes(x64emu_t* emu, void* face, uint32_t width, ui
     return ret;
 }
 
+EXPORT int my32_FT_Request_Size(x64emu_t* emu, void* face, FT_Size_RequestRec_32_t* req)
+{
+    FT_Size_RequestRec_t req_l = {0};
+    convert_FT_Size_RequestRec_to_64(&req_l, req);
+    inplace_FT_FaceRec_enlarge(face);
+    int ret = my->FT_Request_Size(face, &req_l);
+    inplace_FT_FaceRec_enlarge(face);
+    return ret;
+}
+
 EXPORT uint32_t my32_FT_Get_Char_Index(x64emu_t* emu, void* face, unsigned long code)
 {
     inplace_FT_FaceRec_enlarge(face);
diff --git a/src/wrapped32/wrappedfreetype_private.h b/src/wrapped32/wrappedfreetype_private.h
index cb2ca559..683fb531 100644
--- a/src/wrapped32/wrappedfreetype_private.h
+++ b/src/wrapped32/wrappedfreetype_private.h
@@ -2,6 +2,8 @@
 #error meh!
 #endif
 
+// FT_Bitmap is struct uuipWCCp
+
 //GO(FT_Activate_Size, iFp)
 //GO(FT_Add_Default_Modules, vFp)
 //GO(FT_Add_Module, 
@@ -9,12 +11,12 @@
 //GO(FT_Atan2, lFll)
 //GO(FT_Attach_File, iFpp)
 //GO(FT_Attach_Stream, iFpp)
-//GO(FT_Bitmap_Convert, iFpppi)
+GO(FT_Bitmap_Convert, iFpruuipWCCp_buuipWCCp_i)
 //GO(FT_Bitmap_Copy, iFppp)
-//GO(FT_Bitmap_Done, iFpp)
+GO(FT_Bitmap_Done, iFpruuipWCCp_)
 //GO(FT_Bitmap_Embolden, iFppll)
-//GO(FT_Bitmap_Init, vFp)
-//GO(FT_Bitmap_New, vFp)
+GO(FT_Bitmap_Init, vFbuuipWCCp_)
+GO(FT_Bitmap_New, vFbuuipWCCp_)
 //GO(FT_CeilFix, 
 //GO(FT_ClassicKern_Free, 
 //GO(FT_ClassicKern_Validate, 
@@ -56,7 +58,7 @@ GOM(FT_Get_First_Char, LFEpp)
 //GO(FT_Get_Gasp, 
 //GO(FT_Get_Glyph, iFpp)
 GOM(FT_Get_Glyph_Name, iFEpupu)
-//GO(FT_Get_Kerning, iFpuuup)
+GOM(FT_Get_Kerning, iFEpuuup)
 //GO(FT_Get_MM_Blend_Coordinates, 
 //GO(FT_Get_MM_Var, iFpp)
 //GO(FT_Get_Module, pFpp)
@@ -147,7 +149,7 @@ GOM(FT_Outline_Get_CBox, vFEpp)
 //GO(FT_Reference_Library, 
 //GO(FT_Remove_Module, iFpp)
 GOM(FT_Render_Glyph, iFEpu)
-//GO(FT_Request_Size, iFpp)
+GOM(FT_Request_Size, iFEpp)
 //GO(FT_RoundFix, 
 GOM(FT_Select_Charmap, iFEpi)
 GOM(FT_Select_Size, iFEpi)
diff --git a/src/wrapped32/wrappedsdl2.c b/src/wrapped32/wrappedsdl2.c
index 2c355306..6b5d9b15 100644
--- a/src/wrapped32/wrappedsdl2.c
+++ b/src/wrapped32/wrappedsdl2.c
@@ -4,7 +4,7 @@
 #include <string.h>
 #define _GNU_SOURCE /* See feature_test_macros(7) */
 #include <dlfcn.h>
-
+#include <sys/mman.h>
 #include "wrappedlibs.h"
 
 #include "debug.h"
@@ -84,7 +84,7 @@ typedef void (*vFiupV_t)(int, uint32_t, void*, va_list);
 static uintptr_t my_eventfilter_fct_##A = 0;                                    \
 static int my_eventfilter_##A(void* userdata, void* event)                      \
 {                                                                               \
-    my_SDL2_Event_32_t evt = {0};                                               \
+    static my_SDL2_Event_32_t evt = {0};                                        \
     convert_SDL2_Event_to_32(&evt, event);                                      \
     return (int)RunFunctionFmt(my_eventfilter_fct_##A, "pp", userdata, &evt);   \
 }
@@ -170,7 +170,7 @@ EXPORT int my32_2_SDL_GetWindowDisplayMode(void* window, void* mode)
 
 EXPORT int my32_2_SDL_SetWindowDisplayMode(void* window, void* mode)
 {
-    my_SDL2_DisplayMode_t* mode_l = { 0 };
+    my_SDL2_DisplayMode_t mode_l = { 0 };
     convert_SDL2_DisplayMode_to_64(&mode_l, mode);
     return my->SDL_SetWindowDisplayMode(window, &mode_l);
 }
diff --git a/src/wrapped32/wrappedsdl2_private.h b/src/wrapped32/wrappedsdl2_private.h
index c00e8cfb..33c08739 100644
--- a/src/wrapped32/wrappedsdl2_private.h
+++ b/src/wrapped32/wrappedsdl2_private.h
@@ -183,7 +183,7 @@ GO(SDL_GameControllerOpen, pFi)
 // GO(SDL_GetAudioDeviceSpec, iFiip)
 // GO(SDL_GetAudioStatus, uFv)
 GOM(SDL_GetBasePath, pFEv)
-// GO(SDL_GetClipboardText, pFv)
+GO(SDL_GetClipboardText, pFv)
 // GO(SDL_GetClipRect, vFpp)
 // GO(SDL_GetClosestDisplayMode, pFipp)
 // GO(SDL_GetColorKey, iFpp)
@@ -347,7 +347,7 @@ GO(SDL_HapticRumblePlay, iFpfu)
 // GOM(SDL_HasAVX, iFv)
 // GOM(SDL_HasAVX2, iFv)
 // GOM(SDL_HasAVX512F, iFv)
-// GO(SDL_HasClipboardText, iFv)
+GO(SDL_HasClipboardText, iFv)
 // GO(SDL_HasColorKey, uFp)
 // GO(SDL_HasEvent, uFu)
 // GO(SDL_HasEvents, uFuu)
@@ -584,7 +584,7 @@ GO(SDL_scalbnf, fFfi)
 // GO(SDL_SensorOpen, pFi)
 // GO(SDL_SensorUpdate, vFv)
 // SDL_SetAssertionHandler
-// GO(SDL_SetClipboardText, iFp)
+GO(SDL_SetClipboardText, iFp)
 // GO(SDL_SetClipRect, uFpp)
 // GO(SDL_SetColorKey, iFpiu)
 GO(SDL_SetCursor, vFp)