about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-09 16:18:38 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-09 16:18:38 +0100
commitb971a37ee30012a389c9d4689749e142b42afec9 (patch)
tree6b24e4afa8fa4128b4d2acd31bd6cff3f33e4997 /src
parent3ca6ac614528318d4f542443fabd50e0531d91a3 (diff)
downloadbox64-b971a37ee30012a389c9d4689749e142b42afec9.tar.gz
box64-b971a37ee30012a389c9d4689749e142b42afec9.zip
Added sdl1mixer, sdl1image, sdl1ttd, sdl1smpeg and libz wrapped libs
Diffstat (limited to 'src')
-rwxr-xr-xsrc/library_list.h18
-rw-r--r--src/wrapped/generated/functions_list.txt26
-rw-r--r--src/wrapped/generated/wrapper.c52
-rw-r--r--src/wrapped/generated/wrapper.h26
-rwxr-xr-xsrc/wrapped/wrappedlibz.c210
-rw-r--r--src/wrapped/wrappedlibz_private.h105
-rwxr-xr-xsrc/wrapped/wrappedsdl1image.c130
-rwxr-xr-xsrc/wrapped/wrappedsdl1image_private.h41
-rwxr-xr-xsrc/wrapped/wrappedsdl1mixer.c264
-rwxr-xr-xsrc/wrapped/wrappedsdl1mixer_private.h77
-rwxr-xr-xsrc/wrapped/wrappedsdl1ttf.c70
-rwxr-xr-xsrc/wrapped/wrappedsdl1ttf_private.h49
-rwxr-xr-xsrc/wrapped/wrappedsmpeg.c106
-rwxr-xr-xsrc/wrapped/wrappedsmpeg_private.h34
14 files changed, 1199 insertions, 9 deletions
diff --git a/src/library_list.h b/src/library_list.h
index 2f270f8b..9774cc10 100755
--- a/src/library_list.h
+++ b/src/library_list.h
@@ -20,10 +20,10 @@ GO("libsdl2-2.0.so.0", sdl2)
 //GO("libSDL2_image-2.0.so.0", sdl2image)
 //GO("libSDL2_ttf-2.0.so.0", sdl2ttf)
 GO("libSDL-1.2.so.0", sdl1)
-//GO("libSDL_mixer-1.2.so.0", sdl1mixer)
-//GO("libSDL_image-1.2.so.0", sdl1image)
-//GO("libSDL_ttf-2.0.so.0", sdl1ttf)
-//GO("libsmpeg-0.4.so.0", smpeg)
+GO("libSDL_mixer-1.2.so.0", sdl1mixer)
+GO("libSDL_image-1.2.so.0", sdl1image)
+GO("libSDL_ttf-2.0.so.0", sdl1ttf)
+GO("libsmpeg-0.4.so.0", smpeg)
 //GO("libsmpeg2-2.0.so.0", smpeg2)
 //GO("libvorbisfile.so.3", vorbisfile)
 //GO("libvorbis.so.0", libvorbis)
@@ -59,11 +59,11 @@ GO("libxcb.so.1", libxcb)
 //GO("libXcomposite.so.1", libxcomposite)
 //GO("libXdamage.so.1", libxdamage)
 //GO("libXmu.so.6", libxmu)
-//GO("libz.so.1", libz)
-//GO("libopenal.so.1", openal)
-//GO("libopenal.so.0", openal)
-//GO("libopenal.so", openal)
-//GO("openal.so", openal)
+GO("libz.so.1", libz)
+GO("libopenal.so.1", openal)
+GO("libopenal.so.0", openal)
+GO("libopenal.so", openal)
+GO("openal.so", openal)
 //GO("libalut.so.0", alut)
 //GO("libjpeg.so.8", libjpeg)
 //GO("libjpeg.so.62", libjpeg62)
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 71cbbff4..78dc9748 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -37,6 +37,7 @@
 #() lFi
 #() lFp
 #() LFv
+#() LFL
 #() LFp
 #() pFE
 #() pFv
@@ -64,11 +65,13 @@
 #() vFdd
 #() vFpi
 #() vFpu
+#() vFpf
 #() vFpL
 #() vFpp
 #() cFpp
 #() iFEp
 #() iFii
+#() iFiu
 #() iFip
 #() iFIi
 #() iFui
@@ -183,7 +186,9 @@
 #() iFEpp
 #() iFEpV
 #() iFiii
+#() iFiiu
 #() iFiip
+#() iFiuu
 #() iFipu
 #() iFipp
 #() iFuup
@@ -217,6 +222,7 @@
 #() uFEpU
 #() uFipu
 #() uFuip
+#() uFuui
 #() uFuuu
 #() uFuup
 #() uFupu
@@ -236,6 +242,10 @@
 #() dFppp
 #() lFipi
 #() lFipL
+#() LFLLi
+#() LFLLI
+#() LFLpu
+#() LFLpL
 #() LFpii
 #() LFppi
 #() pFEip
@@ -308,6 +318,7 @@
 #() vFpupp
 #() vFpdii
 #() vFpddd
+#() vFppii
 #() vFppip
 #() vFppui
 #() vFppup
@@ -325,6 +336,8 @@
 #() iFEpOu
 #() iFiiii
 #() iFiiiu
+#() iFiuii
+#() iFipii
 #() iFippi
 #() iFippp
 #() iFuipp
@@ -332,6 +345,7 @@
 #() iFuppp
 #() iFpiii
 #() iFpiiu
+#() iFpiid
 #() iFpiiL
 #() iFpiip
 #() iFpiup
@@ -375,6 +389,7 @@
 #() LFpLLp
 #() LFppii
 #() pFEupp
+#() pFEpii
 #() pFEpip
 #() pFEppi
 #() pFEppL
@@ -386,6 +401,7 @@
 #() pFpiii
 #() pFpiip
 #() pFpiuu
+#() pFpipi
 #() pFpipp
 #() pFpCWp
 #() pFpCuW
@@ -399,6 +415,7 @@
 #() pFppii
 #() pFppiL
 #() pFppip
+#() pFppuu
 #() pFppuL
 #() pFppup
 #() pFppLL
@@ -407,6 +424,7 @@
 #() pFpppL
 #() pFpppp
 #() vFEpuup
+#() vFEpppp
 #() vFiiiii
 #() vFiiiiu
 #() vFiiuup
@@ -468,11 +486,14 @@
 #() vFpppii
 #() vFppppi
 #() vFppppp
+#() iFEippp
+#() iFEpipi
 #() iFEpipp
 #() iFEppiV
 #() iFEpppp
 #() iFiiupp
 #() iFiippi
+#() iFipiii
 #() iFipppi
 #() iFpiiii
 #() iFpiiip
@@ -480,6 +501,7 @@
 #() iFpiipi
 #() iFpiipp
 #() iFpipii
+#() iFpippi
 #() iFpippp
 #() iFpCCCC
 #() iFpuuui
@@ -493,6 +515,7 @@
 #() iFpppii
 #() iFpppiL
 #() iFpppip
+#() iFpppLi
 #() iFppppi
 #() iFppppp
 #() IFppIII
@@ -504,6 +527,7 @@
 #() uFppiip
 #() uFppppp
 #() LFppppp
+#() pFEpiii
 #() pFEpipL
 #() pFuiiiu
 #() pFuiipp
@@ -709,6 +733,7 @@
 #() iFiiiiiiip
 #() iFiiupiupi
 #() iFuiifpppp
+#() iFpiiiiipi
 #() iFpuuiiiii
 #() iFpupppppp
 #() iFppIIIppp
@@ -741,6 +766,7 @@
 #() vFpipppiipi
 #() vFppiiipiii
 #() vFpppppippp
+#() iFEpiiiiipi
 #() iFiiiiiiiip
 #() iFiiiipiiip
 #() iFdddpppppp
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 1cb12e46..15668f43 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -70,6 +70,7 @@ typedef double (*dFp_t)(void*);
 typedef intptr_t (*lFi_t)(int32_t);
 typedef intptr_t (*lFp_t)(void*);
 typedef uintptr_t (*LFv_t)(void);
+typedef uintptr_t (*LFL_t)(uintptr_t);
 typedef uintptr_t (*LFp_t)(void*);
 typedef void* (*pFE_t)(x64emu_t*);
 typedef void* (*pFv_t)(void);
@@ -97,11 +98,13 @@ typedef void (*vFfp_t)(float, void*);
 typedef void (*vFdd_t)(double, double);
 typedef void (*vFpi_t)(void*, int32_t);
 typedef void (*vFpu_t)(void*, uint32_t);
+typedef void (*vFpf_t)(void*, float);
 typedef void (*vFpL_t)(void*, uintptr_t);
 typedef void (*vFpp_t)(void*, void*);
 typedef int8_t (*cFpp_t)(void*, void*);
 typedef int32_t (*iFEp_t)(x64emu_t*, void*);
 typedef int32_t (*iFii_t)(int32_t, int32_t);
+typedef int32_t (*iFiu_t)(int32_t, uint32_t);
 typedef int32_t (*iFip_t)(int32_t, void*);
 typedef int32_t (*iFIi_t)(int64_t, int32_t);
 typedef int32_t (*iFui_t)(uint32_t, int32_t);
@@ -216,7 +219,9 @@ typedef int32_t (*iFEpi_t)(x64emu_t*, void*, int32_t);
 typedef int32_t (*iFEpp_t)(x64emu_t*, void*, void*);
 typedef int32_t (*iFEpV_t)(x64emu_t*, void*, void*);
 typedef int32_t (*iFiii_t)(int32_t, int32_t, int32_t);
+typedef int32_t (*iFiiu_t)(int32_t, int32_t, uint32_t);
 typedef int32_t (*iFiip_t)(int32_t, int32_t, void*);
+typedef int32_t (*iFiuu_t)(int32_t, uint32_t, uint32_t);
 typedef int32_t (*iFipu_t)(int32_t, void*, uint32_t);
 typedef int32_t (*iFipp_t)(int32_t, void*, void*);
 typedef int32_t (*iFuup_t)(uint32_t, uint32_t, void*);
@@ -250,6 +255,7 @@ typedef uint32_t (*uFEpu_t)(x64emu_t*, void*, uint32_t);
 typedef uint32_t (*uFEpU_t)(x64emu_t*, void*, uint64_t);
 typedef uint32_t (*uFipu_t)(int32_t, void*, uint32_t);
 typedef uint32_t (*uFuip_t)(uint32_t, int32_t, void*);
+typedef uint32_t (*uFuui_t)(uint32_t, uint32_t, int32_t);
 typedef uint32_t (*uFuuu_t)(uint32_t, uint32_t, uint32_t);
 typedef uint32_t (*uFuup_t)(uint32_t, uint32_t, void*);
 typedef uint32_t (*uFupu_t)(uint32_t, void*, uint32_t);
@@ -269,6 +275,10 @@ typedef double (*dFppi_t)(void*, void*, int32_t);
 typedef double (*dFppp_t)(void*, void*, void*);
 typedef intptr_t (*lFipi_t)(int32_t, void*, int32_t);
 typedef intptr_t (*lFipL_t)(int32_t, void*, uintptr_t);
+typedef uintptr_t (*LFLLi_t)(uintptr_t, uintptr_t, int32_t);
+typedef uintptr_t (*LFLLI_t)(uintptr_t, uintptr_t, int64_t);
+typedef uintptr_t (*LFLpu_t)(uintptr_t, void*, uint32_t);
+typedef uintptr_t (*LFLpL_t)(uintptr_t, void*, uintptr_t);
 typedef uintptr_t (*LFpii_t)(void*, int32_t, int32_t);
 typedef uintptr_t (*LFppi_t)(void*, void*, int32_t);
 typedef void* (*pFEip_t)(x64emu_t*, int32_t, void*);
@@ -341,6 +351,7 @@ typedef void (*vFpipp_t)(void*, int32_t, void*, void*);
 typedef void (*vFpupp_t)(void*, uint32_t, void*, void*);
 typedef void (*vFpdii_t)(void*, double, int32_t, int32_t);
 typedef void (*vFpddd_t)(void*, double, double, double);
+typedef void (*vFppii_t)(void*, void*, int32_t, int32_t);
 typedef void (*vFppip_t)(void*, void*, int32_t, void*);
 typedef void (*vFppui_t)(void*, void*, uint32_t, int32_t);
 typedef void (*vFppup_t)(void*, void*, uint32_t, void*);
@@ -358,6 +369,8 @@ typedef int32_t (*iFEppV_t)(x64emu_t*, void*, void*, void*);
 typedef int32_t (*iFEpOu_t)(x64emu_t*, void*, int32_t, uint32_t);
 typedef int32_t (*iFiiii_t)(int32_t, int32_t, int32_t, int32_t);
 typedef int32_t (*iFiiiu_t)(int32_t, int32_t, int32_t, uint32_t);
+typedef int32_t (*iFiuii_t)(int32_t, uint32_t, int32_t, int32_t);
+typedef int32_t (*iFipii_t)(int32_t, void*, int32_t, int32_t);
 typedef int32_t (*iFippi_t)(int32_t, void*, void*, int32_t);
 typedef int32_t (*iFippp_t)(int32_t, void*, void*, void*);
 typedef int32_t (*iFuipp_t)(uint32_t, int32_t, void*, void*);
@@ -365,6 +378,7 @@ typedef int32_t (*iFuuff_t)(uint32_t, uint32_t, float, float);
 typedef int32_t (*iFuppp_t)(uint32_t, void*, void*, void*);
 typedef int32_t (*iFpiii_t)(void*, int32_t, int32_t, int32_t);
 typedef int32_t (*iFpiiu_t)(void*, int32_t, int32_t, uint32_t);
+typedef int32_t (*iFpiid_t)(void*, int32_t, int32_t, double);
 typedef int32_t (*iFpiiL_t)(void*, int32_t, int32_t, uintptr_t);
 typedef int32_t (*iFpiip_t)(void*, int32_t, int32_t, void*);
 typedef int32_t (*iFpiup_t)(void*, int32_t, uint32_t, void*);
@@ -408,6 +422,7 @@ typedef uintptr_t (*LFpuuu_t)(void*, uint32_t, uint32_t, uint32_t);
 typedef uintptr_t (*LFpLLp_t)(void*, uintptr_t, uintptr_t, void*);
 typedef uintptr_t (*LFppii_t)(void*, void*, int32_t, int32_t);
 typedef void* (*pFEupp_t)(x64emu_t*, uint32_t, void*, void*);
+typedef void* (*pFEpii_t)(x64emu_t*, void*, int32_t, int32_t);
 typedef void* (*pFEpip_t)(x64emu_t*, void*, int32_t, void*);
 typedef void* (*pFEppi_t)(x64emu_t*, void*, void*, int32_t);
 typedef void* (*pFEppL_t)(x64emu_t*, void*, void*, uintptr_t);
@@ -419,6 +434,7 @@ typedef void* (*pFuiii_t)(uint32_t, int32_t, int32_t, int32_t);
 typedef void* (*pFpiii_t)(void*, int32_t, int32_t, int32_t);
 typedef void* (*pFpiip_t)(void*, int32_t, int32_t, void*);
 typedef void* (*pFpiuu_t)(void*, int32_t, uint32_t, uint32_t);
+typedef void* (*pFpipi_t)(void*, int32_t, void*, int32_t);
 typedef void* (*pFpipp_t)(void*, int32_t, void*, void*);
 typedef void* (*pFpCWp_t)(void*, uint8_t, uint16_t, void*);
 typedef void* (*pFpCuW_t)(void*, uint8_t, uint32_t, uint16_t);
@@ -432,6 +448,7 @@ typedef void* (*pFplpp_t)(void*, intptr_t, void*, void*);
 typedef void* (*pFppii_t)(void*, void*, int32_t, int32_t);
 typedef void* (*pFppiL_t)(void*, void*, int32_t, uintptr_t);
 typedef void* (*pFppip_t)(void*, void*, int32_t, void*);
+typedef void* (*pFppuu_t)(void*, void*, uint32_t, uint32_t);
 typedef void* (*pFppuL_t)(void*, void*, uint32_t, uintptr_t);
 typedef void* (*pFppup_t)(void*, void*, uint32_t, void*);
 typedef void* (*pFppLL_t)(void*, void*, uintptr_t, uintptr_t);
@@ -440,6 +457,7 @@ typedef void* (*pFpppu_t)(void*, void*, void*, uint32_t);
 typedef void* (*pFpppL_t)(void*, void*, void*, uintptr_t);
 typedef void* (*pFpppp_t)(void*, void*, void*, void*);
 typedef void (*vFEpuup_t)(x64emu_t*, void*, uint32_t, uint32_t, void*);
+typedef void (*vFEpppp_t)(x64emu_t*, void*, void*, void*, void*);
 typedef void (*vFiiiii_t)(int32_t, int32_t, int32_t, int32_t, int32_t);
 typedef void (*vFiiiiu_t)(int32_t, int32_t, int32_t, int32_t, uint32_t);
 typedef void (*vFiiuup_t)(int32_t, int32_t, uint32_t, uint32_t, void*);
@@ -501,11 +519,14 @@ typedef void (*vFppWui_t)(void*, void*, uint16_t, uint32_t, int32_t);
 typedef void (*vFpppii_t)(void*, void*, void*, int32_t, int32_t);
 typedef void (*vFppppi_t)(void*, void*, void*, void*, int32_t);
 typedef void (*vFppppp_t)(void*, void*, void*, void*, void*);
+typedef int32_t (*iFEippp_t)(x64emu_t*, int32_t, void*, void*, void*);
+typedef int32_t (*iFEpipi_t)(x64emu_t*, void*, int32_t, void*, int32_t);
 typedef int32_t (*iFEpipp_t)(x64emu_t*, void*, int32_t, void*, void*);
 typedef int32_t (*iFEppiV_t)(x64emu_t*, void*, void*, int32_t, void*);
 typedef int32_t (*iFEpppp_t)(x64emu_t*, void*, void*, void*, void*);
 typedef int32_t (*iFiiupp_t)(int32_t, int32_t, uint32_t, void*, void*);
 typedef int32_t (*iFiippi_t)(int32_t, int32_t, void*, void*, int32_t);
+typedef int32_t (*iFipiii_t)(int32_t, void*, int32_t, int32_t, int32_t);
 typedef int32_t (*iFipppi_t)(int32_t, void*, void*, void*, int32_t);
 typedef int32_t (*iFpiiii_t)(void*, int32_t, int32_t, int32_t, int32_t);
 typedef int32_t (*iFpiiip_t)(void*, int32_t, int32_t, int32_t, void*);
@@ -513,6 +534,7 @@ typedef int32_t (*iFpiiuu_t)(void*, int32_t, int32_t, uint32_t, uint32_t);
 typedef int32_t (*iFpiipi_t)(void*, int32_t, int32_t, void*, int32_t);
 typedef int32_t (*iFpiipp_t)(void*, int32_t, int32_t, void*, void*);
 typedef int32_t (*iFpipii_t)(void*, int32_t, void*, int32_t, int32_t);
+typedef int32_t (*iFpippi_t)(void*, int32_t, void*, void*, int32_t);
 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 (*iFpuuui_t)(void*, uint32_t, uint32_t, uint32_t, int32_t);
@@ -526,6 +548,7 @@ typedef int32_t (*iFppupi_t)(void*, void*, uint32_t, void*, int32_t);
 typedef int32_t (*iFpppii_t)(void*, void*, void*, int32_t, int32_t);
 typedef int32_t (*iFpppiL_t)(void*, void*, void*, int32_t, uintptr_t);
 typedef int32_t (*iFpppip_t)(void*, void*, void*, int32_t, void*);
+typedef int32_t (*iFpppLi_t)(void*, void*, void*, uintptr_t, int32_t);
 typedef int32_t (*iFppppi_t)(void*, void*, void*, void*, int32_t);
 typedef int32_t (*iFppppp_t)(void*, void*, void*, void*, void*);
 typedef int64_t (*IFppIII_t)(void*, void*, int64_t, int64_t, int64_t);
@@ -537,6 +560,7 @@ typedef uint32_t (*uFpuuuu_t)(void*, uint32_t, uint32_t, uint32_t, uint32_t);
 typedef uint32_t (*uFppiip_t)(void*, void*, int32_t, int32_t, void*);
 typedef uint32_t (*uFppppp_t)(void*, void*, void*, void*, void*);
 typedef uintptr_t (*LFppppp_t)(void*, void*, void*, void*, void*);
+typedef void* (*pFEpiii_t)(x64emu_t*, void*, int32_t, int32_t, int32_t);
 typedef void* (*pFEpipL_t)(x64emu_t*, void*, int32_t, void*, uintptr_t);
 typedef void* (*pFuiiiu_t)(uint32_t, int32_t, int32_t, int32_t, uint32_t);
 typedef void* (*pFuiipp_t)(uint32_t, int32_t, int32_t, void*, void*);
@@ -742,6 +766,7 @@ typedef int32_t (*iFEpippppp_t)(x64emu_t*, void*, int32_t, void*, void*, void*,
 typedef int32_t (*iFiiiiiiip_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*);
 typedef int32_t (*iFiiupiupi_t)(int32_t, int32_t, uint32_t, void*, int32_t, uint32_t, void*, int32_t);
 typedef int32_t (*iFuiifpppp_t)(uint32_t, int32_t, int32_t, float, void*, void*, void*, void*);
+typedef int32_t (*iFpiiiiipi_t)(void*, int32_t, int32_t, int32_t, int32_t, int32_t, void*, int32_t);
 typedef int32_t (*iFpuuiiiii_t)(void*, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
 typedef int32_t (*iFpupppppp_t)(void*, uint32_t, void*, void*, void*, void*, void*, void*);
 typedef int32_t (*iFppIIIppp_t)(void*, void*, int64_t, int64_t, int64_t, void*, void*, void*);
@@ -774,6 +799,7 @@ typedef void (*vFddddddddd_t)(double, double, double, double, double, double, do
 typedef void (*vFpipppiipi_t)(void*, int32_t, void*, void*, void*, int32_t, int32_t, void*, int32_t);
 typedef void (*vFppiiipiii_t)(void*, void*, int32_t, int32_t, int32_t, void*, int32_t, int32_t, int32_t);
 typedef void (*vFpppppippp_t)(void*, void*, void*, void*, void*, int32_t, void*, void*, void*);
+typedef int32_t (*iFEpiiiiipi_t)(x64emu_t*, void*, int32_t, int32_t, int32_t, int32_t, int32_t, void*, int32_t);
 typedef int32_t (*iFiiiiiiiip_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*);
 typedef int32_t (*iFiiiipiiip_t)(int32_t, int32_t, int32_t, int32_t, void*, int32_t, int32_t, int32_t, void*);
 typedef int32_t (*iFdddpppppp_t)(double, double, double, void*, void*, void*, void*, void*, void*);
@@ -910,6 +936,7 @@ void dFp(x64emu_t *emu, uintptr_t fcn) { dFp_t fn = (dFp_t)fcn; emu->xmm[0].d[0]
 void lFi(x64emu_t *emu, uintptr_t fcn) { lFi_t fn = (lFi_t)fcn; R_RAX=(intptr_t)fn((int32_t)R_RDI); }
 void lFp(x64emu_t *emu, uintptr_t fcn) { lFp_t fn = (lFp_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI); }
 void LFv(x64emu_t *emu, uintptr_t fcn) { LFv_t fn = (LFv_t)fcn; R_RAX=(uintptr_t)fn(); }
+void LFL(x64emu_t *emu, uintptr_t fcn) { LFL_t fn = (LFL_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI); }
 void LFp(x64emu_t *emu, uintptr_t fcn) { LFp_t fn = (LFp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI); }
 void pFE(x64emu_t *emu, uintptr_t fcn) { pFE_t fn = (pFE_t)fcn; R_RAX=(uintptr_t)fn(emu); }
 void pFv(x64emu_t *emu, uintptr_t fcn) { pFv_t fn = (pFv_t)fcn; R_RAX=(uintptr_t)fn(); }
@@ -937,11 +964,13 @@ void vFfp(x64emu_t *emu, uintptr_t fcn) { vFfp_t fn = (vFfp_t)fcn; fn(emu->xmm[0
 void vFdd(x64emu_t *emu, uintptr_t fcn) { vFdd_t fn = (vFdd_t)fcn; fn(emu->xmm[0].d[0], emu->xmm[1].d[0]); }
 void vFpi(x64emu_t *emu, uintptr_t fcn) { vFpi_t fn = (vFpi_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI); }
 void vFpu(x64emu_t *emu, uintptr_t fcn) { vFpu_t fn = (vFpu_t)fcn; fn((void*)R_RDI, (uint32_t)R_RSI); }
+void vFpf(x64emu_t *emu, uintptr_t fcn) { vFpf_t fn = (vFpf_t)fcn; fn((void*)R_RDI, emu->xmm[0].f[0]); }
 void vFpL(x64emu_t *emu, uintptr_t fcn) { vFpL_t fn = (vFpL_t)fcn; fn((void*)R_RDI, (uintptr_t)R_RSI); }
 void vFpp(x64emu_t *emu, uintptr_t fcn) { vFpp_t fn = (vFpp_t)fcn; fn((void*)R_RDI, (void*)R_RSI); }
 void cFpp(x64emu_t *emu, uintptr_t fcn) { cFpp_t fn = (cFpp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI); }
 void iFEp(x64emu_t *emu, uintptr_t fcn) { iFEp_t fn = (iFEp_t)fcn; R_RAX=fn(emu, (void*)R_RDI); }
 void iFii(x64emu_t *emu, uintptr_t fcn) { iFii_t fn = (iFii_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI); }
+void iFiu(x64emu_t *emu, uintptr_t fcn) { iFiu_t fn = (iFiu_t)fcn; R_RAX=fn((int32_t)R_RDI, (uint32_t)R_RSI); }
 void iFip(x64emu_t *emu, uintptr_t fcn) { iFip_t fn = (iFip_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI); }
 void iFIi(x64emu_t *emu, uintptr_t fcn) { iFIi_t fn = (iFIi_t)fcn; R_RAX=fn((int64_t)R_RDI, (int32_t)R_RSI); }
 void iFui(x64emu_t *emu, uintptr_t fcn) { iFui_t fn = (iFui_t)fcn; R_RAX=fn((uint32_t)R_RDI, (int32_t)R_RSI); }
@@ -1056,7 +1085,9 @@ void iFEpi(x64emu_t *emu, uintptr_t fcn) { iFEpi_t fn = (iFEpi_t)fcn; R_RAX=fn(e
 void iFEpp(x64emu_t *emu, uintptr_t fcn) { iFEpp_t fn = (iFEpp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI); }
 void iFEpV(x64emu_t *emu, uintptr_t fcn) { iFEpV_t fn = (iFEpV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)(R_RSP + 8)); }
 void iFiii(x64emu_t *emu, uintptr_t fcn) { iFiii_t fn = (iFiii_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); }
+void iFiiu(x64emu_t *emu, uintptr_t fcn) { iFiiu_t fn = (iFiiu_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX); }
 void iFiip(x64emu_t *emu, uintptr_t fcn) { iFiip_t fn = (iFiip_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
+void iFiuu(x64emu_t *emu, uintptr_t fcn) { iFiuu_t fn = (iFiuu_t)fcn; R_RAX=fn((int32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX); }
 void iFipu(x64emu_t *emu, uintptr_t fcn) { iFipu_t fn = (iFipu_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
 void iFipp(x64emu_t *emu, uintptr_t fcn) { iFipp_t fn = (iFipp_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void iFuup(x64emu_t *emu, uintptr_t fcn) { iFuup_t fn = (iFuup_t)fcn; R_RAX=fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
@@ -1090,6 +1121,7 @@ void uFEpu(x64emu_t *emu, uintptr_t fcn) { uFEpu_t fn = (uFEpu_t)fcn; R_RAX=(uin
 void uFEpU(x64emu_t *emu, uintptr_t fcn) { uFEpU_t fn = (uFEpU_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI); }
 void uFipu(x64emu_t *emu, uintptr_t fcn) { uFipu_t fn = (uFipu_t)fcn; R_RAX=(uint32_t)fn((int32_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
 void uFuip(x64emu_t *emu, uintptr_t fcn) { uFuip_t fn = (uFuip_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
+void uFuui(x64emu_t *emu, uintptr_t fcn) { uFuui_t fn = (uFuui_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX); }
 void uFuuu(x64emu_t *emu, uintptr_t fcn) { uFuuu_t fn = (uFuuu_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX); }
 void uFuup(x64emu_t *emu, uintptr_t fcn) { uFuup_t fn = (uFuup_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
 void uFupu(x64emu_t *emu, uintptr_t fcn) { uFupu_t fn = (uFupu_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
@@ -1109,6 +1141,10 @@ void dFppi(x64emu_t *emu, uintptr_t fcn) { dFppi_t fn = (dFppi_t)fcn; emu->xmm[0
 void dFppp(x64emu_t *emu, uintptr_t fcn) { dFppp_t fn = (dFppp_t)fcn; emu->xmm[0].d[0]=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void lFipi(x64emu_t *emu, uintptr_t fcn) { lFipi_t fn = (lFipi_t)fcn; R_RAX=(intptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
 void lFipL(x64emu_t *emu, uintptr_t fcn) { lFipL_t fn = (lFipL_t)fcn; R_RAX=(intptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); }
+void LFLLi(x64emu_t *emu, uintptr_t fcn) { LFLLi_t fn = (LFLLi_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI, (uintptr_t)R_RSI, (int32_t)R_RDX); }
+void LFLLI(x64emu_t *emu, uintptr_t fcn) { LFLLI_t fn = (LFLLI_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX); }
+void LFLpu(x64emu_t *emu, uintptr_t fcn) { LFLpu_t fn = (LFLpu_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
+void LFLpL(x64emu_t *emu, uintptr_t fcn) { LFLpL_t fn = (LFLpL_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); }
 void LFpii(x64emu_t *emu, uintptr_t fcn) { LFpii_t fn = (LFpii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); }
 void LFppi(x64emu_t *emu, uintptr_t fcn) { LFppi_t fn = (LFppi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
 void pFEip(x64emu_t *emu, uintptr_t fcn) { pFEip_t fn = (pFEip_t)fcn; R_RAX=(uintptr_t)fn(emu, (int32_t)R_RDI, (void*)R_RSI); }
@@ -1181,6 +1217,7 @@ void vFpipp(x64emu_t *emu, uintptr_t fcn) { vFpipp_t fn = (vFpipp_t)fcn; fn((voi
 void vFpupp(x64emu_t *emu, uintptr_t fcn) { vFpupp_t fn = (vFpupp_t)fcn; fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void vFpdii(x64emu_t *emu, uintptr_t fcn) { vFpdii_t fn = (vFpdii_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], (int32_t)R_RSI, (int32_t)R_RDX); }
 void vFpddd(x64emu_t *emu, uintptr_t fcn) { vFpddd_t fn = (vFpddd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0]); }
+void vFppii(x64emu_t *emu, uintptr_t fcn) { vFppii_t fn = (vFppii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void vFppip(x64emu_t *emu, uintptr_t fcn) { vFppip_t fn = (vFppip_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
 void vFppui(x64emu_t *emu, uintptr_t fcn) { vFppui_t fn = (vFppui_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX); }
 void vFppup(x64emu_t *emu, uintptr_t fcn) { vFppup_t fn = (vFppup_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
@@ -1198,6 +1235,8 @@ void iFEppV(x64emu_t *emu, uintptr_t fcn) { iFEppV_t fn = (iFEppV_t)fcn; R_RAX=f
 void iFEpOu(x64emu_t *emu, uintptr_t fcn) { iFEpOu_t fn = (iFEpOu_t)fcn; R_RAX=fn(emu, (void*)R_RDI, of_convert((int32_t)R_RSI), (uint32_t)R_RDX); }
 void iFiiii(x64emu_t *emu, uintptr_t fcn) { iFiiii_t fn = (iFiiii_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void iFiiiu(x64emu_t *emu, uintptr_t fcn) { iFiiiu_t fn = (iFiiiu_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX); }
+void iFiuii(x64emu_t *emu, uintptr_t fcn) { iFiuii_t fn = (iFiuii_t)fcn; R_RAX=fn((int32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
+void iFipii(x64emu_t *emu, uintptr_t fcn) { iFipii_t fn = (iFipii_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void iFippi(x64emu_t *emu, uintptr_t fcn) { iFippi_t fn = (iFippi_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
 void iFippp(x64emu_t *emu, uintptr_t fcn) { iFippp_t fn = (iFippp_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void iFuipp(x64emu_t *emu, uintptr_t fcn) { iFuipp_t fn = (iFuipp_t)fcn; R_RAX=fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
@@ -1205,6 +1244,7 @@ void iFuuff(x64emu_t *emu, uintptr_t fcn) { iFuuff_t fn = (iFuuff_t)fcn; R_RAX=f
 void iFuppp(x64emu_t *emu, uintptr_t fcn) { iFuppp_t fn = (iFuppp_t)fcn; R_RAX=fn((uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void iFpiii(x64emu_t *emu, uintptr_t fcn) { iFpiii_t fn = (iFpiii_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void iFpiiu(x64emu_t *emu, uintptr_t fcn) { iFpiiu_t fn = (iFpiiu_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX); }
+void iFpiid(x64emu_t *emu, uintptr_t fcn) { iFpiid_t fn = (iFpiid_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, emu->xmm[0].d[0]); }
 void iFpiiL(x64emu_t *emu, uintptr_t fcn) { iFpiiL_t fn = (iFpiiL_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uintptr_t)R_RCX); }
 void iFpiip(x64emu_t *emu, uintptr_t fcn) { iFpiip_t fn = (iFpiip_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
 void iFpiup(x64emu_t *emu, uintptr_t fcn) { iFpiup_t fn = (iFpiup_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
@@ -1248,6 +1288,7 @@ void LFpuuu(x64emu_t *emu, uintptr_t fcn) { LFpuuu_t fn = (LFpuuu_t)fcn; R_RAX=(
 void LFpLLp(x64emu_t *emu, uintptr_t fcn) { LFpLLp_t fn = (LFpLLp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX); }
 void LFppii(x64emu_t *emu, uintptr_t fcn) { LFppii_t fn = (LFppii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void pFEupp(x64emu_t *emu, uintptr_t fcn) { pFEupp_t fn = (pFEupp_t)fcn; R_RAX=(uintptr_t)fn(emu, (uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void pFEpii(x64emu_t *emu, uintptr_t fcn) { pFEpii_t fn = (pFEpii_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); }
 void pFEpip(x64emu_t *emu, uintptr_t fcn) { pFEpip_t fn = (pFEpip_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
 void pFEppi(x64emu_t *emu, uintptr_t fcn) { pFEppi_t fn = (pFEppi_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
 void pFEppL(x64emu_t *emu, uintptr_t fcn) { pFEppL_t fn = (pFEppL_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); }
@@ -1259,6 +1300,7 @@ void pFuiii(x64emu_t *emu, uintptr_t fcn) { pFuiii_t fn = (pFuiii_t)fcn; R_RAX=(
 void pFpiii(x64emu_t *emu, uintptr_t fcn) { pFpiii_t fn = (pFpiii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void pFpiip(x64emu_t *emu, uintptr_t fcn) { pFpiip_t fn = (pFpiip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
 void pFpiuu(x64emu_t *emu, uintptr_t fcn) { pFpiuu_t fn = (pFpiuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX); }
+void pFpipi(x64emu_t *emu, uintptr_t fcn) { pFpipi_t fn = (pFpipi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
 void pFpipp(x64emu_t *emu, uintptr_t fcn) { pFpipp_t fn = (pFpipp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void pFpCWp(x64emu_t *emu, uintptr_t fcn) { pFpCWp_t fn = (pFpCWp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint8_t)R_RSI, (uint16_t)R_RDX, (void*)R_RCX); }
 void pFpCuW(x64emu_t *emu, uintptr_t fcn) { pFpCuW_t fn = (pFpCuW_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint8_t)R_RSI, (uint32_t)R_RDX, (uint16_t)R_RCX); }
@@ -1272,6 +1314,7 @@ void pFplpp(x64emu_t *emu, uintptr_t fcn) { pFplpp_t fn = (pFplpp_t)fcn; R_RAX=(
 void pFppii(x64emu_t *emu, uintptr_t fcn) { pFppii_t fn = (pFppii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void pFppiL(x64emu_t *emu, uintptr_t fcn) { pFppiL_t fn = (pFppiL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (uintptr_t)R_RCX); }
 void pFppip(x64emu_t *emu, uintptr_t fcn) { pFppip_t fn = (pFppip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
+void pFppuu(x64emu_t *emu, uintptr_t fcn) { pFppuu_t fn = (pFppuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX); }
 void pFppuL(x64emu_t *emu, uintptr_t fcn) { pFppuL_t fn = (pFppuL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uintptr_t)R_RCX); }
 void pFppup(x64emu_t *emu, uintptr_t fcn) { pFppup_t fn = (pFppup_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
 void pFppLL(x64emu_t *emu, uintptr_t fcn) { pFppLL_t fn = (pFppLL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX); }
@@ -1280,6 +1323,7 @@ void pFpppu(x64emu_t *emu, uintptr_t fcn) { pFpppu_t fn = (pFpppu_t)fcn; R_RAX=(
 void pFpppL(x64emu_t *emu, uintptr_t fcn) { pFpppL_t fn = (pFpppL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); }
 void pFpppp(x64emu_t *emu, uintptr_t fcn) { pFpppp_t fn = (pFpppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void vFEpuup(x64emu_t *emu, uintptr_t fcn) { vFEpuup_t fn = (vFEpuup_t)fcn; fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
+void vFEpppp(x64emu_t *emu, uintptr_t fcn) { vFEpppp_t fn = (vFEpppp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void vFiiiii(x64emu_t *emu, uintptr_t fcn) { vFiiiii_t fn = (vFiiiii_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
 void vFiiiiu(x64emu_t *emu, uintptr_t fcn) { vFiiiiu_t fn = (vFiiiiu_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8); }
 void vFiiuup(x64emu_t *emu, uintptr_t fcn) { vFiiuup_t fn = (vFiiuup_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8); }
@@ -1341,11 +1385,14 @@ void vFppWui(x64emu_t *emu, uintptr_t fcn) { vFppWui_t fn = (vFppWui_t)fcn; fn((
 void vFpppii(x64emu_t *emu, uintptr_t fcn) { vFpppii_t fn = (vFpppii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
 void vFppppi(x64emu_t *emu, uintptr_t fcn) { vFppppi_t fn = (vFppppi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
 void vFppppp(x64emu_t *emu, uintptr_t fcn) { vFppppp_t fn = (vFppppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void iFEippp(x64emu_t *emu, uintptr_t fcn) { iFEippp_t fn = (iFEippp_t)fcn; R_RAX=fn(emu, (int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void iFEpipi(x64emu_t *emu, uintptr_t fcn) { iFEpipi_t fn = (iFEpipi_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
 void iFEpipp(x64emu_t *emu, uintptr_t fcn) { iFEpipp_t fn = (iFEpipp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void iFEppiV(x64emu_t *emu, uintptr_t fcn) { iFEppiV_t fn = (iFEppiV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)(R_RSP + 8)); }
 void iFEpppp(x64emu_t *emu, uintptr_t fcn) { iFEpppp_t fn = (iFEpppp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void iFiiupp(x64emu_t *emu, uintptr_t fcn) { iFiiupp_t fn = (iFiiupp_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void iFiippi(x64emu_t *emu, uintptr_t fcn) { iFiippi_t fn = (iFiippi_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
+void iFipiii(x64emu_t *emu, uintptr_t fcn) { iFipiii_t fn = (iFipiii_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
 void iFipppi(x64emu_t *emu, uintptr_t fcn) { iFipppi_t fn = (iFipppi_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
 void iFpiiii(x64emu_t *emu, uintptr_t fcn) { iFpiiii_t fn = (iFpiiii_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
 void iFpiiip(x64emu_t *emu, uintptr_t fcn) { iFpiiip_t fn = (iFpiiip_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
@@ -1353,6 +1400,7 @@ void iFpiiuu(x64emu_t *emu, uintptr_t fcn) { iFpiiuu_t fn = (iFpiiuu_t)fcn; R_RA
 void iFpiipi(x64emu_t *emu, uintptr_t fcn) { iFpiipi_t fn = (iFpiipi_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
 void iFpiipp(x64emu_t *emu, uintptr_t fcn) { iFpiipp_t fn = (iFpiipp_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void iFpipii(x64emu_t *emu, uintptr_t fcn) { iFpipii_t fn = (iFpipii_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+void iFpippi(x64emu_t *emu, uintptr_t fcn) { iFpippi_t fn = (iFpippi_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
 void iFpippp(x64emu_t *emu, uintptr_t fcn) { iFpippp_t fn = (iFpippp_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void iFpCCCC(x64emu_t *emu, uintptr_t fcn) { iFpCCCC_t fn = (iFpCCCC_t)fcn; R_RAX=fn((void*)R_RDI, (uint8_t)R_RSI, (uint8_t)R_RDX, (uint8_t)R_RCX, (uint8_t)R_R8); }
 void iFpuuui(x64emu_t *emu, uintptr_t fcn) { iFpuuui_t fn = (iFpuuui_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8); }
@@ -1366,6 +1414,7 @@ void iFppupi(x64emu_t *emu, uintptr_t fcn) { iFppupi_t fn = (iFppupi_t)fcn; R_RA
 void iFpppii(x64emu_t *emu, uintptr_t fcn) { iFpppii_t fn = (iFpppii_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
 void iFpppiL(x64emu_t *emu, uintptr_t fcn) { iFpppiL_t fn = (iFpppiL_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (uintptr_t)R_R8); }
 void iFpppip(x64emu_t *emu, uintptr_t fcn) { iFpppip_t fn = (iFpppip_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
+void iFpppLi(x64emu_t *emu, uintptr_t fcn) { iFpppLi_t fn = (iFpppLi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (int32_t)R_R8); }
 void iFppppi(x64emu_t *emu, uintptr_t fcn) { iFppppi_t fn = (iFppppi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
 void iFppppp(x64emu_t *emu, uintptr_t fcn) { iFppppp_t fn = (iFppppp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void IFppIII(x64emu_t *emu, uintptr_t fcn) { IFppIII_t fn = (IFppIII_t)fcn; R_RAX=(uint64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8); }
@@ -1377,6 +1426,7 @@ void uFpuuuu(x64emu_t *emu, uintptr_t fcn) { uFpuuuu_t fn = (uFpuuuu_t)fcn; R_RA
 void uFppiip(x64emu_t *emu, uintptr_t fcn) { uFppiip_t fn = (uFppiip_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
 void uFppppp(x64emu_t *emu, uintptr_t fcn) { uFppppp_t fn = (uFppppp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void LFppppp(x64emu_t *emu, uintptr_t fcn) { LFppppp_t fn = (LFppppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void pFEpiii(x64emu_t *emu, uintptr_t fcn) { pFEpiii_t fn = (pFEpiii_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void pFEpipL(x64emu_t *emu, uintptr_t fcn) { pFEpipL_t fn = (pFEpipL_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); }
 void pFuiiiu(x64emu_t *emu, uintptr_t fcn) { pFuiiiu_t fn = (pFuiiiu_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8); }
 void pFuiipp(x64emu_t *emu, uintptr_t fcn) { pFuiipp_t fn = (pFuiipp_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
@@ -1582,6 +1632,7 @@ void iFEpippppp(x64emu_t *emu, uintptr_t fcn) { iFEpippppp_t fn = (iFEpippppp_t)
 void iFiiiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiiiip_t fn = (iFiiiiiiip_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
 void iFiiupiupi(x64emu_t *emu, uintptr_t fcn) { iFiiupiupi_t fn = (iFiiupiupi_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
 void iFuiifpppp(x64emu_t *emu, uintptr_t fcn) { iFuiifpppp_t fn = (iFuiifpppp_t)fcn; R_RAX=fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, emu->xmm[0].f[0], (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
+void iFpiiiiipi(x64emu_t *emu, uintptr_t fcn) { iFpiiiiipi_t fn = (iFpiiiiipi_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
 void iFpuuiiiii(x64emu_t *emu, uintptr_t fcn) { iFpuuiiiii_t fn = (iFpuuiiiii_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
 void iFpupppppp(x64emu_t *emu, uintptr_t fcn) { iFpupppppp_t fn = (iFpupppppp_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
 void iFppIIIppp(x64emu_t *emu, uintptr_t fcn) { iFppIIIppp_t fn = (iFppIIIppp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
@@ -1614,6 +1665,7 @@ void vFddddddddd(x64emu_t *emu, uintptr_t fcn) { vFddddddddd_t fn = (vFddddddddd
 void vFpipppiipi(x64emu_t *emu, uintptr_t fcn) { vFpipppiipi_t fn = (vFpipppiipi_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(void**)(R_RSP + 16), *(int32_t*)(R_RSP + 24)); }
 void vFppiiipiii(x64emu_t *emu, uintptr_t fcn) { vFppiiipiii_t fn = (vFppiiipiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24)); }
 void vFpppppippp(x64emu_t *emu, uintptr_t fcn) { vFpppppippp_t fn = (vFpppppippp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24)); }
+void iFEpiiiiipi(x64emu_t *emu, uintptr_t fcn) { iFEpiiiiipi_t fn = (iFEpiiiiipi_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
 void iFiiiiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiiiiip_t fn = (iFiiiiiiiip_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); }
 void iFiiiipiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiipiiip_t fn = (iFiiiipiiip_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); }
 void iFdddpppppp(x64emu_t *emu, uintptr_t fcn) { iFdddpppppp_t fn = (iFdddpppppp_t)fcn; R_RAX=fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 4c7900a9..13f0525c 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -67,6 +67,7 @@ void dFp(x64emu_t *emu, uintptr_t fnc);
 void lFi(x64emu_t *emu, uintptr_t fnc);
 void lFp(x64emu_t *emu, uintptr_t fnc);
 void LFv(x64emu_t *emu, uintptr_t fnc);
+void LFL(x64emu_t *emu, uintptr_t fnc);
 void LFp(x64emu_t *emu, uintptr_t fnc);
 void pFE(x64emu_t *emu, uintptr_t fnc);
 void pFv(x64emu_t *emu, uintptr_t fnc);
@@ -94,11 +95,13 @@ void vFfp(x64emu_t *emu, uintptr_t fnc);
 void vFdd(x64emu_t *emu, uintptr_t fnc);
 void vFpi(x64emu_t *emu, uintptr_t fnc);
 void vFpu(x64emu_t *emu, uintptr_t fnc);
+void vFpf(x64emu_t *emu, uintptr_t fnc);
 void vFpL(x64emu_t *emu, uintptr_t fnc);
 void vFpp(x64emu_t *emu, uintptr_t fnc);
 void cFpp(x64emu_t *emu, uintptr_t fnc);
 void iFEp(x64emu_t *emu, uintptr_t fnc);
 void iFii(x64emu_t *emu, uintptr_t fnc);
+void iFiu(x64emu_t *emu, uintptr_t fnc);
 void iFip(x64emu_t *emu, uintptr_t fnc);
 void iFIi(x64emu_t *emu, uintptr_t fnc);
 void iFui(x64emu_t *emu, uintptr_t fnc);
@@ -213,7 +216,9 @@ void iFEpi(x64emu_t *emu, uintptr_t fnc);
 void iFEpp(x64emu_t *emu, uintptr_t fnc);
 void iFEpV(x64emu_t *emu, uintptr_t fnc);
 void iFiii(x64emu_t *emu, uintptr_t fnc);
+void iFiiu(x64emu_t *emu, uintptr_t fnc);
 void iFiip(x64emu_t *emu, uintptr_t fnc);
+void iFiuu(x64emu_t *emu, uintptr_t fnc);
 void iFipu(x64emu_t *emu, uintptr_t fnc);
 void iFipp(x64emu_t *emu, uintptr_t fnc);
 void iFuup(x64emu_t *emu, uintptr_t fnc);
@@ -247,6 +252,7 @@ void uFEpu(x64emu_t *emu, uintptr_t fnc);
 void uFEpU(x64emu_t *emu, uintptr_t fnc);
 void uFipu(x64emu_t *emu, uintptr_t fnc);
 void uFuip(x64emu_t *emu, uintptr_t fnc);
+void uFuui(x64emu_t *emu, uintptr_t fnc);
 void uFuuu(x64emu_t *emu, uintptr_t fnc);
 void uFuup(x64emu_t *emu, uintptr_t fnc);
 void uFupu(x64emu_t *emu, uintptr_t fnc);
@@ -266,6 +272,10 @@ void dFppi(x64emu_t *emu, uintptr_t fnc);
 void dFppp(x64emu_t *emu, uintptr_t fnc);
 void lFipi(x64emu_t *emu, uintptr_t fnc);
 void lFipL(x64emu_t *emu, uintptr_t fnc);
+void LFLLi(x64emu_t *emu, uintptr_t fnc);
+void LFLLI(x64emu_t *emu, uintptr_t fnc);
+void LFLpu(x64emu_t *emu, uintptr_t fnc);
+void LFLpL(x64emu_t *emu, uintptr_t fnc);
 void LFpii(x64emu_t *emu, uintptr_t fnc);
 void LFppi(x64emu_t *emu, uintptr_t fnc);
 void pFEip(x64emu_t *emu, uintptr_t fnc);
@@ -338,6 +348,7 @@ void vFpipp(x64emu_t *emu, uintptr_t fnc);
 void vFpupp(x64emu_t *emu, uintptr_t fnc);
 void vFpdii(x64emu_t *emu, uintptr_t fnc);
 void vFpddd(x64emu_t *emu, uintptr_t fnc);
+void vFppii(x64emu_t *emu, uintptr_t fnc);
 void vFppip(x64emu_t *emu, uintptr_t fnc);
 void vFppui(x64emu_t *emu, uintptr_t fnc);
 void vFppup(x64emu_t *emu, uintptr_t fnc);
@@ -355,6 +366,8 @@ void iFEppV(x64emu_t *emu, uintptr_t fnc);
 void iFEpOu(x64emu_t *emu, uintptr_t fnc);
 void iFiiii(x64emu_t *emu, uintptr_t fnc);
 void iFiiiu(x64emu_t *emu, uintptr_t fnc);
+void iFiuii(x64emu_t *emu, uintptr_t fnc);
+void iFipii(x64emu_t *emu, uintptr_t fnc);
 void iFippi(x64emu_t *emu, uintptr_t fnc);
 void iFippp(x64emu_t *emu, uintptr_t fnc);
 void iFuipp(x64emu_t *emu, uintptr_t fnc);
@@ -362,6 +375,7 @@ void iFuuff(x64emu_t *emu, uintptr_t fnc);
 void iFuppp(x64emu_t *emu, uintptr_t fnc);
 void iFpiii(x64emu_t *emu, uintptr_t fnc);
 void iFpiiu(x64emu_t *emu, uintptr_t fnc);
+void iFpiid(x64emu_t *emu, uintptr_t fnc);
 void iFpiiL(x64emu_t *emu, uintptr_t fnc);
 void iFpiip(x64emu_t *emu, uintptr_t fnc);
 void iFpiup(x64emu_t *emu, uintptr_t fnc);
@@ -405,6 +419,7 @@ void LFpuuu(x64emu_t *emu, uintptr_t fnc);
 void LFpLLp(x64emu_t *emu, uintptr_t fnc);
 void LFppii(x64emu_t *emu, uintptr_t fnc);
 void pFEupp(x64emu_t *emu, uintptr_t fnc);
+void pFEpii(x64emu_t *emu, uintptr_t fnc);
 void pFEpip(x64emu_t *emu, uintptr_t fnc);
 void pFEppi(x64emu_t *emu, uintptr_t fnc);
 void pFEppL(x64emu_t *emu, uintptr_t fnc);
@@ -416,6 +431,7 @@ void pFuiii(x64emu_t *emu, uintptr_t fnc);
 void pFpiii(x64emu_t *emu, uintptr_t fnc);
 void pFpiip(x64emu_t *emu, uintptr_t fnc);
 void pFpiuu(x64emu_t *emu, uintptr_t fnc);
+void pFpipi(x64emu_t *emu, uintptr_t fnc);
 void pFpipp(x64emu_t *emu, uintptr_t fnc);
 void pFpCWp(x64emu_t *emu, uintptr_t fnc);
 void pFpCuW(x64emu_t *emu, uintptr_t fnc);
@@ -429,6 +445,7 @@ void pFplpp(x64emu_t *emu, uintptr_t fnc);
 void pFppii(x64emu_t *emu, uintptr_t fnc);
 void pFppiL(x64emu_t *emu, uintptr_t fnc);
 void pFppip(x64emu_t *emu, uintptr_t fnc);
+void pFppuu(x64emu_t *emu, uintptr_t fnc);
 void pFppuL(x64emu_t *emu, uintptr_t fnc);
 void pFppup(x64emu_t *emu, uintptr_t fnc);
 void pFppLL(x64emu_t *emu, uintptr_t fnc);
@@ -437,6 +454,7 @@ void pFpppu(x64emu_t *emu, uintptr_t fnc);
 void pFpppL(x64emu_t *emu, uintptr_t fnc);
 void pFpppp(x64emu_t *emu, uintptr_t fnc);
 void vFEpuup(x64emu_t *emu, uintptr_t fnc);
+void vFEpppp(x64emu_t *emu, uintptr_t fnc);
 void vFiiiii(x64emu_t *emu, uintptr_t fnc);
 void vFiiiiu(x64emu_t *emu, uintptr_t fnc);
 void vFiiuup(x64emu_t *emu, uintptr_t fnc);
@@ -498,11 +516,14 @@ void vFppWui(x64emu_t *emu, uintptr_t fnc);
 void vFpppii(x64emu_t *emu, uintptr_t fnc);
 void vFppppi(x64emu_t *emu, uintptr_t fnc);
 void vFppppp(x64emu_t *emu, uintptr_t fnc);
+void iFEippp(x64emu_t *emu, uintptr_t fnc);
+void iFEpipi(x64emu_t *emu, uintptr_t fnc);
 void iFEpipp(x64emu_t *emu, uintptr_t fnc);
 void iFEppiV(x64emu_t *emu, uintptr_t fnc);
 void iFEpppp(x64emu_t *emu, uintptr_t fnc);
 void iFiiupp(x64emu_t *emu, uintptr_t fnc);
 void iFiippi(x64emu_t *emu, uintptr_t fnc);
+void iFipiii(x64emu_t *emu, uintptr_t fnc);
 void iFipppi(x64emu_t *emu, uintptr_t fnc);
 void iFpiiii(x64emu_t *emu, uintptr_t fnc);
 void iFpiiip(x64emu_t *emu, uintptr_t fnc);
@@ -510,6 +531,7 @@ void iFpiiuu(x64emu_t *emu, uintptr_t fnc);
 void iFpiipi(x64emu_t *emu, uintptr_t fnc);
 void iFpiipp(x64emu_t *emu, uintptr_t fnc);
 void iFpipii(x64emu_t *emu, uintptr_t fnc);
+void iFpippi(x64emu_t *emu, uintptr_t fnc);
 void iFpippp(x64emu_t *emu, uintptr_t fnc);
 void iFpCCCC(x64emu_t *emu, uintptr_t fnc);
 void iFpuuui(x64emu_t *emu, uintptr_t fnc);
@@ -523,6 +545,7 @@ void iFppupi(x64emu_t *emu, uintptr_t fnc);
 void iFpppii(x64emu_t *emu, uintptr_t fnc);
 void iFpppiL(x64emu_t *emu, uintptr_t fnc);
 void iFpppip(x64emu_t *emu, uintptr_t fnc);
+void iFpppLi(x64emu_t *emu, uintptr_t fnc);
 void iFppppi(x64emu_t *emu, uintptr_t fnc);
 void iFppppp(x64emu_t *emu, uintptr_t fnc);
 void IFppIII(x64emu_t *emu, uintptr_t fnc);
@@ -534,6 +557,7 @@ void uFpuuuu(x64emu_t *emu, uintptr_t fnc);
 void uFppiip(x64emu_t *emu, uintptr_t fnc);
 void uFppppp(x64emu_t *emu, uintptr_t fnc);
 void LFppppp(x64emu_t *emu, uintptr_t fnc);
+void pFEpiii(x64emu_t *emu, uintptr_t fnc);
 void pFEpipL(x64emu_t *emu, uintptr_t fnc);
 void pFuiiiu(x64emu_t *emu, uintptr_t fnc);
 void pFuiipp(x64emu_t *emu, uintptr_t fnc);
@@ -739,6 +763,7 @@ void iFEpippppp(x64emu_t *emu, uintptr_t fnc);
 void iFiiiiiiip(x64emu_t *emu, uintptr_t fnc);
 void iFiiupiupi(x64emu_t *emu, uintptr_t fnc);
 void iFuiifpppp(x64emu_t *emu, uintptr_t fnc);
+void iFpiiiiipi(x64emu_t *emu, uintptr_t fnc);
 void iFpuuiiiii(x64emu_t *emu, uintptr_t fnc);
 void iFpupppppp(x64emu_t *emu, uintptr_t fnc);
 void iFppIIIppp(x64emu_t *emu, uintptr_t fnc);
@@ -771,6 +796,7 @@ void vFddddddddd(x64emu_t *emu, uintptr_t fnc);
 void vFpipppiipi(x64emu_t *emu, uintptr_t fnc);
 void vFppiiipiii(x64emu_t *emu, uintptr_t fnc);
 void vFpppppippp(x64emu_t *emu, uintptr_t fnc);
+void iFEpiiiiipi(x64emu_t *emu, uintptr_t fnc);
 void iFiiiiiiiip(x64emu_t *emu, uintptr_t fnc);
 void iFiiiipiiip(x64emu_t *emu, uintptr_t fnc);
 void iFdddpppppp(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedlibz.c b/src/wrapped/wrappedlibz.c
new file mode 100755
index 00000000..c84bfb8b
--- /dev/null
+++ b/src/wrapped/wrappedlibz.c
@@ -0,0 +1,210 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "debug.h"
+#include "callback.h"
+#include "emu/x64emu_private.h"
+#include "box64context.h"
+
+const char* libzName = "libz.so.1";
+#define LIBNAME libz
+
+// TODO: put the wrapper type in a dedicate include
+typedef void* (*pFpi_t)(void*, int32_t);
+typedef void* (*pFp_t)(void*);
+typedef void* (*pFpp_t)(void*, void*);
+typedef int32_t (*iFp_t)(void*);
+typedef int32_t (*iFppi_t)(void*, void*, int32_t);
+typedef int32_t (*iFpipi_t)(void*, int, void*, int);
+typedef void* (*pFpippp_t)(void*, int32_t, void*, void*, void*);
+typedef void  (*vFp_t)(void*);
+typedef void* (*pFpp_t)(void*, void*);
+typedef uint32_t (*uFp_t)(void*);
+typedef uint64_t (*UFp_t)(void*);
+typedef uint32_t (*uFu_t)(uint32_t);
+typedef int32_t (*iFpp_t)(void*, void*);
+typedef uint32_t (*uFpW_t)(void*, uint16_t);
+typedef uint32_t (*uFpu_t)(void*, uint32_t);
+typedef uint32_t (*uFpU_t)(void*, uint64_t);
+typedef uint32_t (*uFupp_t)(uint32_t, void*, void*);
+typedef int     (*iFpiiiiipi_t)(void*, int, int, int, int, int, void*, int);
+
+#define SUPER() \
+    GO(inflateInit_, iFppi_t)           \
+    GO(inflateInit, iFp_t)              \
+    GO(inflateEnd, iFp_t)               \
+    GO(deflateEnd, iFp_t)               \
+    GO(inflateInit2_, iFpipi_t)         \
+    GO(deflateInit_, iFpipi_t)          \
+    GO(deflateInit2_, iFpiiiiipi_t)
+
+typedef struct libz_my_s {
+    // functions
+    #define GO(A, B)    B   A;
+    SUPER()
+    #undef GO
+} libz_my_t;
+
+
+void* getZMy(library_t* lib)
+{
+    libz_my_t* my = (libz_my_t*)calloc(1, sizeof(libz_my_t));
+    #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A);
+    SUPER()
+    #undef GO
+    return my;
+}
+#undef SUPER
+
+void freeZMy(void* lib)
+{
+    //libz_my_t *my = (libz_my_t *)lib;
+}
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)
+
+// alloc ...
+#define GO(A)   \
+static uintptr_t my_alloc_fct_##A = 0;                                          \
+static void* my_alloc_##A(void* opaque, uint32_t items, uint32_t size)                  \
+{                                                                                       \
+    return (void*)RunFunction(my_context, my_alloc_fct_##A, 3, opaque, items, size);    \
+}
+SUPER()
+#undef GO
+static void* find_alloc_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_alloc_fct_##A == (uintptr_t)fct) return my_alloc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_alloc_fct_##A == 0) {my_alloc_fct_##A = (uintptr_t)fct; return my_alloc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for zlib alloc callback\n");
+    return NULL;
+}
+// free ...
+#define GO(A)   \
+static uintptr_t my_free_fct_##A = 0;                               \
+static void my_free_##A(void* opaque, void* address)                \
+{                                                                   \
+    RunFunction(my_context, my_free_fct_##A, 2, opaque, address);   \
+}
+SUPER()
+#undef GO
+static void* find_free_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_free_fct_##A == (uintptr_t)fct) return my_free_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_free_fct_##A == 0) {my_free_fct_##A = (uintptr_t)fct; return my_free_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for zlib free callback\n");
+    return NULL;
+}
+#undef SUPER
+
+typedef struct z_stream_s {
+    void *next_in;   
+    uint32_t     avail_in;
+    uintptr_t    total_in;
+    void    *next_out;
+    uint32_t     avail_out;
+    uintptr_t    total_out;
+    char *msg;
+    void *state;
+    void* zalloc;
+    void*  zfree; 
+    void*     opaque;
+    int32_t     data_type;
+    uintptr_t   adler;    
+    uintptr_t   reserved; 
+} z_stream;
+
+static void wrapper_stream_z(x64emu_t* emu, void* str)
+{
+    z_stream *stream = (z_stream*)str;
+    stream->zalloc = find_alloc_Fct(stream->zalloc);
+    stream->zfree = find_free_Fct(stream->zfree);
+}
+
+EXPORT int32_t my_inflateInit_(x64emu_t* emu, void* str, void* version, int32_t size)
+{
+    libz_my_t *my = (libz_my_t *)emu->context->zlib->priv.w.p2;
+    wrapper_stream_z(emu, str);
+    return my->inflateInit_(str, version, size);
+}
+
+EXPORT int32_t my_inflateInit(x64emu_t* emu, void* str)
+{
+    libz_my_t *my = (libz_my_t *)emu->context->zlib->priv.w.p2;
+    wrapper_stream_z(emu, str);
+    return my->inflateInit(str);
+}
+
+EXPORT int32_t my_inflateInit2_(x64emu_t* emu, void* str, int windowBits, void* version, int stream_size)
+{
+    libz_my_t *my = (libz_my_t *)emu->context->zlib->priv.w.p2;
+    wrapper_stream_z(emu, str);
+    return my->inflateInit2_(str, windowBits, version, stream_size);
+}
+
+EXPORT int32_t my_inflateEnd(x64emu_t* emu, void* str)
+{
+    libz_my_t *my = (libz_my_t *)emu->context->zlib->priv.w.p2;
+    int32_t r = my->inflateEnd(str);
+    return r;
+}
+
+EXPORT int32_t my_deflateInit_(x64emu_t* emu, void* str, int level, void* version, int stream_size)
+{
+    libz_my_t *my = (libz_my_t *)emu->context->zlib->priv.w.p2;
+    wrapper_stream_z(emu, str);
+    return my->deflateInit_(str, level, version, stream_size);
+}
+
+EXPORT int32_t my_deflateInit2_(x64emu_t* emu, void* str, int level, int method, int windowBits, int memLevel, int strategy, void* version, int stream_size)
+{
+    libz_my_t *my = (libz_my_t *)emu->context->zlib->priv.w.p2;
+    wrapper_stream_z(emu, str);
+    return my->deflateInit2_(str, level, method, windowBits, memLevel, strategy, version, stream_size);
+}
+
+EXPORT int32_t my_deflateEnd(x64emu_t* emu, void* str)
+{
+    libz_my_t *my = (libz_my_t *)emu->context->zlib->priv.w.p2;
+    int32_t r = my->deflateEnd(str);
+    return r;
+}
+
+
+#define CUSTOM_INIT \
+    box64->zlib = lib; \
+    lib->priv.w.p2 = getZMy(lib);
+
+#define CUSTOM_FINI \
+    freeZMy(lib->priv.w.p2); \
+    free(lib->priv.w.p2); \
+    ((box64context_t*)(lib->context))->zlib = NULL;
+
+#include "wrappedlib_init.h"
+
diff --git a/src/wrapped/wrappedlibz_private.h b/src/wrapped/wrappedlibz_private.h
new file mode 100644
index 00000000..de9428fb
--- /dev/null
+++ b/src/wrapped/wrappedlibz_private.h
@@ -0,0 +1,105 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error Meh
+#endif
+
+GO(zlibVersion, pFv)
+GO(deflateInit, iFpi)
+GO(deflate, iFpi)
+GO(deflateEnd, iFp)
+GOM(inflateInit, iFEp)
+GO(inflate, iFpi)
+GOM(inflateEnd, iFEp)
+GO(deflateInit2, iFpiiiiipi)
+GO(deflateSetDictionary, iFppu)
+GO(deflateGetDictionary, iFppp)
+GO(deflateCopy, iFpp)
+GO(deflateReset, iFp)
+GO(deflateParams, iFpii)
+GO(deflateTune, iFpiiii)
+GO(deflateBound, LFpL)
+GO(deflatePending, iFppp)
+GO(deflatePrime, iFpii)
+GO(deflateSetHeader, iFpp)
+GO(inflateInit2, iFpi)
+GO(inflateSetDictionary, iFppu)
+GO(inflateGetDictionary, iFppp)
+GO(inflateSync, iFp)
+GO(inflateCopy, iFpp)
+GO(inflateReset, iFp)
+GO(inflateReset2, iFpi)
+GO(inflatePrime, iFpii)
+GO(inflateMark, iFp)
+GO(inflateGetHeader, iFpp)
+GO(inflateBackInit, iFpip)
+//GOM(inflateBack, iFpBpBp)  // callbacks...
+GO(inflateBackEnd, iFp)
+GO(zlibCompileFlags, LFv)
+GO(compress, iFpppL)
+GO(compress2, iFpppLi)
+GO(compressBound, LFL)
+GO(uncompress, iFpppL)
+GO(uncompress2, iFpppp)
+GO(gzopen, pFpp)
+GO(gzdopen, pFip)
+GO(gzbuffer, iFpu)
+GO(gzsetparams, iFpii)
+GO(gzread, iFppu)
+GO(gzfread, LFpLLp)
+GO(gzwrite, iFppu)
+GO(gzfwrite, LFpLLp)
+//GOM(gzprintf, iFEppVV)
+GO(gzputs, iFpp)
+GO(gzgets, pFppi)
+GO(gzputc, iFpi)
+GO(gzgetc, iFp)
+GO(gzungetc, iFip)
+GO(gzflush, iFpi)
+GO(gzseek, iFpii)
+GO(gzrewind, iFp)
+GO(gztell, iFp)
+GO(gzoffset, iFp)
+GO(gzeof, iFp)
+GO(gzdirect, iFp)
+GO(gzclose, iFp)
+GO(gzclose_r, iFp)
+GO(gzclose_w, iFp)
+GO(gzerror, pFpp)
+GO(gzclearerr, vFp)
+GO(adler32, LFLpu)
+GO(adler32_z, LFLpL)
+GO(adler32_combine, uFuui)
+GO(crc32, LFLpu)
+GO(crc32_z, LFLpL)
+GO(crc32_combine, uFuui)
+GOM(deflateInit_, iFEpipi)
+GOM(inflateInit_, iFEppi)
+GOM(deflateInit2_, iFEpiiiiipi)
+GOM(inflateInit2_, iFEpipi)
+GO(inflateBackInit_, iFpippi)
+GO(gzgetc_, iFp)
+GO(gzopen64, pFpp)
+GO(gzseek64, IFpIi)
+GO(gztell64, IFp)
+GO(gzoffset64, IFp)
+GO(adler32_combine64, LFLLI)
+GO(crc32_combine64, LFLLI)
+GO(gzopen64, pFpp)
+GO(gzseek64, iFpii)
+GO(gztell64, iFp)
+GO(gzoffset64, iFp)
+GO(gzopen, pFpp)
+GO(gzseek, iFpii)
+GO(gztell, iFp)
+GO(gzoffset, iFp)
+GO(adler32_combine, LFLLi)
+GO(crc32_combine, LFLLi)
+GO(zError, pFi)
+GO(inflateSyncPoint, iFp)
+GO(get_crc_table, pFv)
+GO(inflateUndermine, iFpi)
+GO(inflateValidate, iFpi)
+GO(inflateCodesUsed, uFp)
+GO(inflateResetKeep, iFp)
+GO(deflateResetKeep, iFp)
+GO(gzopen_w, pFpp)  // Win32 only?
+//GOM(gzvprintf iFEppVV);
diff --git a/src/wrapped/wrappedsdl1image.c b/src/wrapped/wrappedsdl1image.c
new file mode 100755
index 00000000..34d240c6
--- /dev/null
+++ b/src/wrapped/wrappedsdl1image.c
@@ -0,0 +1,130 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "box64context.h"
+#include "sdl1rwops.h"
+
+typedef void* (*pFpi_t)(void*, int32_t);
+typedef void* (*pFp_t)(void*);
+typedef void* (*pFpip_t)(void*, int32_t, void*);
+
+typedef struct sdl1image_my_s {
+    pFp_t       IMG_LoadBMP_RW;
+    pFp_t       IMG_LoadCUR_RW;
+    pFp_t       IMG_LoadGIF_RW;
+    pFp_t       IMG_LoadICO_RW;
+    pFp_t       IMG_LoadJPG_RW;
+    pFp_t       IMG_LoadLBM_RW;
+    pFp_t       IMG_LoadPCX_RW;
+    pFp_t       IMG_LoadPNG_RW;
+    pFp_t       IMG_LoadPNM_RW;
+    pFp_t       IMG_LoadTGA_RW;
+    pFp_t       IMG_LoadTIF_RW;
+    pFpip_t     IMG_LoadTyped_RW;
+    pFp_t       IMG_LoadWEBP_RW;
+    pFp_t       IMG_LoadXCF_RW;
+    pFp_t       IMG_LoadXPM_RW;
+    pFp_t       IMG_LoadXV_RW;
+    pFpi_t      IMG_Load_RW;
+} sdl1image_my_t;
+
+static library_t* my_lib = NULL;
+
+static void* getSDL1ImageMy(library_t* lib)
+{
+    sdl1image_my_t* my = (sdl1image_my_t*)calloc(1, sizeof(sdl1image_my_t));
+    #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A);
+    GO(IMG_LoadBMP_RW,pFp_t)
+    GO(IMG_LoadCUR_RW,pFp_t)
+    GO(IMG_LoadGIF_RW,pFp_t)
+    GO(IMG_LoadICO_RW,pFp_t)
+    GO(IMG_LoadJPG_RW,pFp_t)
+    GO(IMG_LoadLBM_RW,pFp_t)
+    GO(IMG_LoadPCX_RW,pFp_t)
+    GO(IMG_LoadPNG_RW,pFp_t)
+    GO(IMG_LoadPNM_RW,pFp_t)
+    GO(IMG_LoadTGA_RW,pFp_t)
+    GO(IMG_LoadTIF_RW,pFp_t)
+    GO(IMG_LoadTyped_RW,pFpip_t)
+    GO(IMG_LoadWEBP_RW,pFp_t)
+    GO(IMG_LoadXCF_RW,pFp_t)
+    GO(IMG_LoadXPM_RW,pFp_t)
+    GO(IMG_LoadXV_RW,pFp_t)
+    GO(IMG_Load_RW,pFpi_t)
+    #undef GO
+    return my;
+}
+
+#define GO(A) \
+void EXPORT *my_##A(x64emu_t* emu, void* a) \
+{ \
+    sdl1image_my_t *my = (sdl1image_my_t *)my_lib->priv.w.p2; \
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a); \
+    void* r = my->A(rw); \
+    RWNativeEnd(rw); \
+    return r; \
+}
+GO(IMG_LoadBMP_RW)
+GO(IMG_LoadCUR_RW)
+GO(IMG_LoadGIF_RW)
+GO(IMG_LoadICO_RW)
+GO(IMG_LoadJPG_RW)
+GO(IMG_LoadLBM_RW)
+GO(IMG_LoadPCX_RW)
+GO(IMG_LoadPNG_RW)
+GO(IMG_LoadPNM_RW)
+GO(IMG_LoadTGA_RW)
+GO(IMG_LoadTIF_RW)
+GO(IMG_LoadWEBP_RW)
+GO(IMG_LoadXCF_RW)
+GO(IMG_LoadXPM_RW)
+GO(IMG_LoadXV_RW)
+#undef GO
+
+void EXPORT *my_IMG_LoadTyped_RW(x64emu_t* emu, void* a, int32_t b, void* c)
+{
+    sdl1image_my_t *my = (sdl1image_my_t *)my_lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    void* r = my->IMG_LoadTyped_RW(rw, b, c);
+    if(b==0)
+        RWNativeEnd(rw);
+    return r;
+}
+void EXPORT *my_IMG_Load_RW(x64emu_t* emu, void* a, int32_t b)
+{
+    sdl1image_my_t *my = (sdl1image_my_t *)my_lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    void* r = my->IMG_Load_RW(rw, b);
+    if(b==0)
+        RWNativeEnd(rw);
+    return r;
+}
+
+const char* sdl1imageName = "libSDL_image-1.2.so.0";
+#define LIBNAME sdl1image
+
+#define CUSTOM_INIT \
+    my_lib = lib; \
+    lib->priv.w.p2 = getSDL1ImageMy(lib);   \
+    lib->priv.w.needed = 2; \
+    lib->priv.w.neededlibs = (char**)calloc(lib->priv.w.needed, sizeof(char*)); \
+    lib->priv.w.neededlibs[0] = strdup("libSDL-1.2.so.0");                      \
+    lib->priv.w.neededlibs[1] = strdup("libz.so.1");
+
+#define CUSTOM_FINI \
+    free(lib->priv.w.p2); \
+    my_lib = NULL;
+
+#include "wrappedlib_init.h"
+
diff --git a/src/wrapped/wrappedsdl1image_private.h b/src/wrapped/wrappedsdl1image_private.h
new file mode 100755
index 00000000..8617d69f
--- /dev/null
+++ b/src/wrapped/wrappedsdl1image_private.h
@@ -0,0 +1,41 @@
+#if defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)
+
+GO(IMG_Init,iFi)
+GO(IMG_InvertAlpha,iFi)
+GO(IMG_Linked_Version,pFv)
+GO(IMG_Load,pFp)
+GOM(IMG_LoadBMP_RW,pFEp)
+GOM(IMG_LoadCUR_RW,pFEp)
+GOM(IMG_LoadGIF_RW,pFEp)
+GOM(IMG_LoadICO_RW,pFEp)
+GOM(IMG_LoadJPG_RW,pFEp)
+GOM(IMG_LoadLBM_RW,pFEp)
+GOM(IMG_LoadPCX_RW,pFEp)
+GOM(IMG_LoadPNG_RW,pFEp)
+GOM(IMG_LoadPNM_RW,pFEp)
+GOM(IMG_LoadTGA_RW,pFEp)
+GOM(IMG_LoadTIF_RW,pFEp)
+GOM(IMG_LoadTyped_RW,pFEpip)
+GOM(IMG_LoadWEBP_RW,pFEp)
+GOM(IMG_LoadXCF_RW,pFEp)
+GOM(IMG_LoadXPM_RW,pFEp)
+GOM(IMG_LoadXV_RW,pFEp)
+GOM(IMG_Load_RW,pFEpi)
+GO(IMG_Quit,vFv)
+GO(IMG_ReadXPMFromArray,pFp)
+GO(IMG_isBMP,iFp)
+GO(IMG_isCUR,iFp)
+GO(IMG_isGIF,iFp)
+GO(IMG_isICO,iFp)
+GO(IMG_isJPG,iFp)
+GO(IMG_isLBM,iFp)
+GO(IMG_isPCX,iFp)
+GO(IMG_isPNG,iFp)
+GO(IMG_isPNM,iFp)
+GO(IMG_isTIF,iFp)
+GO(IMG_isWEBP,iFp)
+GO(IMG_isXCF,iFp)
+GO(IMG_isXPM,iFp)
+GO(IMG_isXV,iFp)
+
+#endif
\ No newline at end of file
diff --git a/src/wrapped/wrappedsdl1mixer.c b/src/wrapped/wrappedsdl1mixer.c
new file mode 100755
index 00000000..b7933ecb
--- /dev/null
+++ b/src/wrapped/wrappedsdl1mixer.c
@@ -0,0 +1,264 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "box64context.h"
+#include "sdl1rwops.h"
+#include "callback.h"
+
+typedef void* (*pFpi_t)(void*, int32_t);
+typedef void* (*pFp_t)(void*);
+typedef int   (*iFip_t)(int, void*);
+typedef void* (*pFpii_t)(void*, int32_t, int32_t);
+typedef void  (*vFp_t)(void*);
+typedef void  (*vFpp_t)(void*, void*);
+typedef int   (*iFippp_t)(int, void*, void*, void*);
+
+#define SUPER() \
+    GO(Mix_LoadMUSType_RW,pFpii_t)      \
+    GO(Mix_LoadMUS_RW,pFp_t)            \
+    GO(Mix_LoadWAV_RW,pFpi_t)           \
+    GO(Mix_SetPostMix,vFpp_t)           \
+    GO(Mix_ChannelFinished,vFp_t)       \
+    GO(Mix_HookMusic, vFpp_t)           \
+    GO(Mix_HookMusicFinished, vFp_t)    \
+    GO(Mix_RegisterEffect, iFippp_t)    \
+    GO(Mix_UnregisterEffect, iFip_t)    \
+
+typedef struct sdl1mixer_my_s {
+    #define GO(A, B)    B   A;
+    SUPER()
+    #undef GO
+} sdl1mixer_my_t;
+
+static void* getSDL1MixerMy(library_t* lib)
+{
+    sdl1mixer_my_t* my = (sdl1mixer_my_t*)calloc(1, sizeof(sdl1mixer_my_t));
+    #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A);
+    SUPER()
+    #undef GO
+    return my;
+}
+#undef SUPER
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)
+
+// EffectFunc
+#define GO(A)   \
+static uintptr_t my_EffectFunc_fct_##A = 0;                                         \
+static void my_EffectFunc_##A(int chan, void *stream, int len, void *udata)         \
+{                                                                                   \
+    RunFunction(my_context, my_EffectFunc_fct_##A, 4, chan, stream, len, udata);    \
+}
+SUPER()
+#undef GO
+static void* find_EffectFunc_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_EffectFunc_fct_##A == (uintptr_t)fct) return my_EffectFunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_EffectFunc_fct_##A == 0) {my_EffectFunc_fct_##A = (uintptr_t)fct; return my_EffectFunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for SDL1Mixer EffectFunc callback\n");
+    return NULL;
+}
+
+// EffectDone
+#define GO(A)   \
+static uintptr_t my_EffectDone_fct_##A = 0;                         \
+static void my_EffectDone_##A(int chan, void *udata)                \
+{                                                                   \
+    RunFunction(my_context, my_EffectDone_fct_##A, 2, chan, udata); \
+}
+SUPER()
+#undef GO
+static void* find_EffectDone_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_EffectDone_fct_##A == (uintptr_t)fct) return my_EffectDone_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_EffectDone_fct_##A == 0) {my_EffectDone_fct_##A = (uintptr_t)fct; return my_EffectDone_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for SDL1Mixer EffectDone callback\n");
+    return NULL;
+}
+
+// MixFunc
+#define GO(A)   \
+static uintptr_t my_MixFunc_fct_##A = 0;                                \
+static void my_MixFunc_##A(void *udata, uint8_t *stream, int len)       \
+{                                                                       \
+    RunFunction(my_context, my_MixFunc_fct_##A, 3, udata, stream, len); \
+}
+SUPER()
+#undef GO
+static void* find_MixFunc_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_MixFunc_fct_##A == (uintptr_t)fct) return my_MixFunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_MixFunc_fct_##A == 0) {my_MixFunc_fct_##A = (uintptr_t)fct; return my_MixFunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for SDL1Mixer MixFunc callback\n");
+    return NULL;
+}
+
+// ChannelFinished
+#define GO(A)   \
+static uintptr_t my_ChannelFinished_fct_##A = 0;                        \
+static void my_ChannelFinished_##A(int channel)                         \
+{                                                                       \
+    RunFunction(my_context, my_ChannelFinished_fct_##A, 1, channel);    \
+}
+SUPER()
+#undef GO
+static void* find_ChannelFinished_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_ChannelFinished_fct_##A == (uintptr_t)fct) return my_ChannelFinished_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_ChannelFinished_fct_##A == 0) {my_ChannelFinished_fct_##A = (uintptr_t)fct; return my_ChannelFinished_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for SDL1Mixer ChannelFinished callback\n");
+    return NULL;
+}
+
+// MusicFinished
+#define GO(A)   \
+static uintptr_t my_MusicFinished_fct_##A = 0;              \
+static void my_MusicFinished_##A()                          \
+{                                                           \
+    RunFunction(my_context, my_MusicFinished_fct_##A, 0);   \
+}
+SUPER()
+#undef GO
+static void* find_MusicFinished_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_MusicFinished_fct_##A == (uintptr_t)fct) return my_MusicFinished_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_MusicFinished_fct_##A == 0) {my_MusicFinished_fct_##A = (uintptr_t)fct; return my_MusicFinished_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for SDL1Mixer MusicFinished callback\n");
+    return NULL;
+}
+
+#undef SUPER
+
+static void freeSDL1MixerMy(library_t* lib)
+{
+    //sdl1mixer_my_t *my = lib->priv.w.p2;
+}
+
+EXPORT void* my_Mix_LoadMUSType_RW(x64emu_t* emu, void* a, int32_t b, int32_t c)
+{
+    sdl1mixer_my_t *my = (sdl1mixer_my_t *)emu->context->sdl1mixerlib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    void* r = my->Mix_LoadMUSType_RW(rw, b, c);
+    if(c==0)
+        RWNativeEnd(rw);
+    return r;
+}
+EXPORT void* my_Mix_LoadMUS_RW(x64emu_t* emu, void* a)
+{
+    sdl1mixer_my_t *my = (sdl1mixer_my_t *)emu->context->sdl1mixerlib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    void* r = my->Mix_LoadMUS_RW(rw);
+    RWNativeEnd(rw);  // this one never free the RWops
+    return r;
+}
+EXPORT void* my_Mix_LoadWAV_RW(x64emu_t* emu, void* a, int32_t b)
+{
+    sdl1mixer_my_t *my = (sdl1mixer_my_t *)emu->context->sdl1mixerlib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    void* r = my->Mix_LoadWAV_RW(rw, b);
+    if(b==0)
+        RWNativeEnd(rw);
+    return r;
+}
+
+EXPORT void my_Mix_SetPostMix(x64emu_t* emu, void* a, void* b)
+{
+    sdl1mixer_my_t *my = (sdl1mixer_my_t *)emu->context->sdl1mixerlib->priv.w.p2;
+    my->Mix_SetPostMix(find_MixFunc_Fct(a), b);
+}
+
+EXPORT void my_Mix_ChannelFinished(x64emu_t* emu, void* cb)
+{
+    sdl1mixer_my_t *my = (sdl1mixer_my_t *)emu->context->sdl1mixerlib->priv.w.p2;
+    my->Mix_ChannelFinished(find_ChannelFinished_Fct(cb));
+}
+
+EXPORT void my_Mix_HookMusic(x64emu_t* emu, void* f, void* arg)
+{
+    sdl1mixer_my_t *my = (sdl1mixer_my_t *)emu->context->sdl1mixerlib->priv.w.p2;
+    my->Mix_HookMusic(find_MixFunc_Fct(f), arg);
+}
+
+EXPORT void my_Mix_HookMusicFinished(x64emu_t* emu, void* f)
+{
+    sdl1mixer_my_t *my = (sdl1mixer_my_t *)emu->context->sdl1mixerlib->priv.w.p2;
+    my->Mix_HookMusicFinished(find_MusicFinished_Fct(f));
+}
+
+EXPORT int my_Mix_RegisterEffect(x64emu_t* emu, int chan, void* f, void* d, void *arg)
+{
+    sdl1mixer_my_t *my = (sdl1mixer_my_t *)emu->context->sdl1mixerlib->priv.w.p2;
+    return my->Mix_RegisterEffect(chan, find_EffectFunc_Fct(f), find_EffectDone_Fct(d), arg);
+}
+
+EXPORT int my_Mix_UnregisterEffect(x64emu_t* emu, int channel, void* f)
+{
+    sdl1mixer_my_t *my = (sdl1mixer_my_t *)emu->context->sdl1mixerlib->priv.w.p2;
+    return my->Mix_UnregisterEffect(channel, find_EffectFunc_Fct(f));
+}
+
+const char* sdl1mixerName = "libSDL_mixer-1.2.so.0";
+#define LIBNAME sdl1mixer
+
+#define CUSTOM_INIT \
+    box64->sdl1mixerlib = lib; \
+    lib->priv.w.p2 = getSDL1MixerMy(lib);
+
+#define CUSTOM_FINI \
+    freeSDL1MixerMy(lib); \
+    free(lib->priv.w.p2); \
+    ((box64context_t*)(lib->context))->sdl1mixerlib = NULL;
+
+#include "wrappedlib_init.h"
+
diff --git a/src/wrapped/wrappedsdl1mixer_private.h b/src/wrapped/wrappedsdl1mixer_private.h
new file mode 100755
index 00000000..3cca15a2
--- /dev/null
+++ b/src/wrapped/wrappedsdl1mixer_private.h
@@ -0,0 +1,77 @@
+#if defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)
+
+GO(Mix_AllocateChannels,iFi)
+GOM(Mix_ChannelFinished,vFEp)
+GO(Mix_CloseAudio,vFv)
+//GO(Mix_EachSoundFont,iFBp)
+GO(Mix_ExpireChannel,iFii)
+GO(Mix_FadeInChannelTimed,iFipiii)
+GO(Mix_FadeInMusic,iFpii)
+GO(Mix_FadeInMusicPos,iFpiid)
+GO(Mix_FadeOutChannel,iFii)
+GO(Mix_FadeOutGroup,iFii)
+GO(Mix_FadeOutMusic,iFi)
+GO(Mix_FadingChannel,iFi)
+GO(Mix_FadingMusic,iFv)
+GO(Mix_FreeChunk,vFp)
+GO(Mix_FreeMusic,vFp)
+GO(Mix_GetChunk,pFi)
+GO(Mix_GetChunkDecoder,pFi)
+GO(Mix_GetMusicDecoder,pFi)
+GO(Mix_GetMusicHookData,pFv)
+GO(Mix_GetMusicType,iFp)
+GO(Mix_GetNumChunkDecoders,iFv)
+GO(Mix_GetNumMusicDecoders,iFv)
+GO(Mix_GetSoundFonts,pFv)
+GO(Mix_GetSynchroValue,iFv)
+GO(Mix_GroupAvailable,iFi)
+GO(Mix_GroupChannel,iFii)
+GO(Mix_GroupChannels,iFiii)
+GO(Mix_GroupCount,iFi)
+GO(Mix_GroupNewer,iFi)
+GO(Mix_GroupOldest,iFi)
+GO(Mix_HaltChannel,iFi)
+GO(Mix_HaltGroup,iFi)
+GO(Mix_HaltMusic,iFv)
+GOM(Mix_HookMusic,vFEpp)
+GOM(Mix_HookMusicFinished,vFEp)
+GO(Mix_Init,iFi)
+GO(Mix_Linked_Version,pFv)
+GO(Mix_LoadMUS,pFp)
+GOM(Mix_LoadMUSType_RW,pFEpii)
+GOM(Mix_LoadMUS_RW,pFEp)
+GOM(Mix_LoadWAV_RW,pFEpi)
+GO(Mix_OpenAudio,iFiuii)
+GO(Mix_Pause,vFi)
+GO(Mix_PauseMusic,vFv)
+GO(Mix_Paused,iFi)
+GO(Mix_PausedMusic,iFv)
+GO(Mix_PlayChannelTimed,iFipii)
+GO(Mix_PlayMusic,iFpi)
+GO(Mix_Playing,iFi)
+GO(Mix_PlayingMusic,iFv)
+GO(Mix_QuerySpec,iFppp)
+GO(Mix_QuickLoad_RAW,pFpu)
+GO(Mix_QuickLoad_WAV,pFp)
+GO(Mix_Quit,vFv)
+GOM(Mix_RegisterEffect,iFEippp)
+GO(Mix_ReserveChannels,iFi)
+GO(Mix_Resume,vFi)
+GO(Mix_ResumeMusic,vFv)
+GO(Mix_RewindMusic,vFv)
+GO(Mix_SetDistance,iFiu)
+GO(Mix_SetMusicCMD,iFp)
+GO(Mix_SetMusicPosition,iFd)
+GO(Mix_SetPanning,iFiuu)
+GO(Mix_SetPosition,iFiiu)
+GOM(Mix_SetPostMix,vFEpp)
+GO(Mix_SetReverseStereo,iFii)
+GO(Mix_SetSoundFonts,iFp)
+GO(Mix_SetSynchroValue,iFi)
+GO(Mix_UnregisterAllEffects,iFi)
+GOM(Mix_UnregisterEffect,iFEip)
+GO(Mix_Volume,iFii)
+GO(Mix_VolumeChunk,iFpi)
+GO(Mix_VolumeMusic,iFi)
+
+#endif
\ No newline at end of file
diff --git a/src/wrapped/wrappedsdl1ttf.c b/src/wrapped/wrappedsdl1ttf.c
new file mode 100755
index 00000000..721fac9b
--- /dev/null
+++ b/src/wrapped/wrappedsdl1ttf.c
@@ -0,0 +1,70 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "box64context.h"
+#include "sdl1rwops.h"
+
+typedef void* (*pFpii_t)(void*, int32_t, int32_t);
+typedef void* (*pFpiii_t)(void*, int32_t, int32_t, int32_t);
+
+typedef struct sdl1ttf_my_s {
+    pFpii_t     TTF_OpenFontRW;
+    pFpiii_t    TTF_OpenFontIndexRW;
+} sdl1ttf_my_t;
+
+static library_t* my_lib = NULL;
+
+static void* getSDL1TTFMy(library_t* lib)
+{
+    sdl1ttf_my_t* my = (sdl1ttf_my_t*)calloc(1, sizeof(sdl1ttf_my_t));
+    #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A);
+    GO(TTF_OpenFontIndexRW,pFpiii_t)
+    GO(TTF_OpenFontRW, pFpii_t)
+    #undef GO
+    return my;
+}
+
+void EXPORT *my_TTF_OpenFontIndexRW(x64emu_t* emu, void* a, int32_t b, int32_t c, int32_t d)
+{
+    sdl1ttf_my_t *my = (sdl1ttf_my_t *)my_lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    void* r = my->TTF_OpenFontIndexRW(rw, b, c, d);
+    if(b==0)
+        RWNativeEnd(rw);
+    return r;
+}
+
+void EXPORT *my_TTF_OpenFontRW(x64emu_t* emu, void* a, int32_t b, int32_t c)
+{
+    sdl1ttf_my_t *my = (sdl1ttf_my_t *)my_lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    void* r = my->TTF_OpenFontRW(rw, b, c);
+    if(b==0)
+        RWNativeEnd(rw);
+    return r;
+}
+
+const char* sdl1ttfName = "libSDL_ttf-2.0.so.0";
+#define LIBNAME sdl1ttf
+
+#define CUSTOM_INIT \
+    my_lib = lib; \
+    lib->priv.w.p2 = getSDL1TTFMy(lib);
+
+#define CUSTOM_FINI \
+    free(lib->priv.w.p2); \
+    my_lib = NULL;
+
+#include "wrappedlib_init.h"
+
diff --git a/src/wrapped/wrappedsdl1ttf_private.h b/src/wrapped/wrappedsdl1ttf_private.h
new file mode 100755
index 00000000..a115d99f
--- /dev/null
+++ b/src/wrapped/wrappedsdl1ttf_private.h
@@ -0,0 +1,49 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error Meh!
+#endif
+
+GO(TTF_ByteSwappedUNICODE, vFi)
+GO(TTF_CloseFont, vFp)
+GO(TTF_FontAscent, iFp)
+GO(TTF_FontDescent, iFp)
+GO(TTF_FontFaceFamilyName, pFp)
+GO(TTF_FontFaceIsFixedWidth, iFp)
+GO(TTF_FontFaces, iFp)
+GO(TTF_FontFaceStyleName, pFp)
+GO(TTF_FontHeight, iFp)
+GO(TTF_FontLineSkip, iFp)
+GO(TTF_GetFontHinting, iFp)
+GO(TTF_GetFontKerning, iFp)
+GO(TTF_GetFontKerningSize, iFp)
+GO(TTF_GetFontOutline, iFp)
+GO(TTF_GetFontStyle, iFp)
+GO(TTF_GlyphIsProvided, iFpu)
+GO(TTF_GlyphMetrics, iFpuppppp)
+GO(TTF_Init, iFv)
+GO(TTF_Linked_Version, pFv)
+GO(TTF_OpenFont, pFpi)
+GO(TTF_OpenFontIndex, pFpii)
+GOM(TTF_OpenFontIndexRW, pFEpiii)
+GOM(TTF_OpenFontRW, pFEpii)
+GO(TTF_Quit, vFv)
+GO(TTF_RenderGlyph_Blended, pFpuu)
+GO(TTF_RenderGlyph_Shaded, pFpuuu)
+GO(TTF_RenderGlyph_Solid, pFpuu)
+GO(TTF_RenderText_Blended, pFppu)
+GO(TTF_RenderText_Shaded, pFppuu)
+GO(TTF_RenderText_Solid, pFppu)
+GO(TTF_RenderUNICODE_Blended, pFppu)
+GO(TTF_RenderUNICODE_Shaded, pFppuu)
+GO(TTF_RenderUNICODE_Solid, pFppu)
+GO(TTF_RenderUTF8_Blended, pFppu)
+GO(TTF_RenderUTF8_Shaded, pFppuu)
+GO(TTF_RenderUTF8_Solid, pFppu)
+GO(TTF_SetFontHinting, vFpi)
+GO(TTF_SetFontKerning, vFpi)
+GO(TTF_SetFontOutline, vFpi)
+GO(TTF_SetFontStyle, vFpi)
+GO(TTF_SizeText, iFpppp)
+GO(TTF_SizeUNICODE, iFpppp)
+GO(TTF_SizeUTF8, iFpppp)
+GO(TTF_WasInit, iFv)
+
diff --git a/src/wrapped/wrappedsmpeg.c b/src/wrapped/wrappedsmpeg.c
new file mode 100755
index 00000000..47700059
--- /dev/null
+++ b/src/wrapped/wrappedsmpeg.c
@@ -0,0 +1,106 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "librarian.h"
+#include "x64emu.h"
+#include "callback.h"
+#include "box64context.h"
+#include "sdl1rwops.h"
+#include "myalign.h"
+
+const char* smpegName = "libsmpeg-0.4.so.0";
+#define LIBNAME smpeg
+
+typedef void (*vFpp_t)(void*, void*);
+typedef void (*vFpppp_t)(void*, void*, void*, void*);
+typedef void* (*pFppi_t)(void*, void*, int32_t);
+typedef void* (*pFipi_t)(int32_t, void*, int32_t);
+typedef void* (*pFpipi_t)(void*, int32_t, void*, int32_t);
+
+typedef struct smpeg_my_s {
+    // functions
+    vFpppp_t    SMPEG_setdisplay;
+    pFppi_t     SMPEG_new_rwops;
+} smpeg_my_t;
+
+static void* getSMPEGMy(library_t* lib)
+{
+    smpeg_my_t* my = (smpeg_my_t*)calloc(1, sizeof(smpeg_my_t));
+    #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A);
+    GO(SMPEG_setdisplay, vFpppp_t)
+    GO(SMPEG_new_rwops, pFppi_t)
+    #undef GO
+    return my;
+}
+
+static void freeSMPEGMy(void* lib)
+{
+    //smpeg_my_t *my = (smpeg_my_t *)lib;
+}
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)
+
+// dispcallback ...
+#define GO(A)   \
+static uintptr_t my_dispcallback_fct_##A = 0;                                                   \
+static void my_dispcallback_##A(void* dst, int32_t x, int32_t y, unsigned int w, unsigned int h)\
+{                                                                                               \
+    RunFunction(my_context, my_dispcallback_fct_##A, 5, dst, x, y, w, h);                       \
+}
+SUPER()
+#undef GO
+static void* find_dispcallback_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_dispcallback_fct_##A == (uintptr_t)fct) return my_dispcallback_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_dispcallback_fct_##A == 0) {my_dispcallback_fct_##A = (uintptr_t)fct; return my_dispcallback_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libsmpeg dispcallback callback\n");
+    return NULL;
+}
+#undef SUPER
+
+EXPORT void my_SMPEG_setdisplay(x64emu_t* emu, void* mpeg, void* surf, void* lock, void* cb)
+{
+    library_t* lib = GetLibInternal(smpegName);
+    smpeg_my_t* my = (smpeg_my_t*)lib->priv.w.p2;
+    my->SMPEG_setdisplay(mpeg, surf, lock, find_dispcallback_Fct(cb));
+}
+
+EXPORT void* my_SMPEG_new_rwops(x64emu_t* emu, void* src, void* info, int32_t sdl_audio)
+{
+    library_t* lib = GetLibInternal(smpegName);
+    smpeg_my_t* my = (smpeg_my_t*)lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)src);
+    void* ret = my->SMPEG_new_rwops(rw, info, sdl_audio);
+    RWNativeEnd(rw);
+    return ret;
+}
+
+#define CUSTOM_INIT \
+    lib->priv.w.p2 = getSMPEGMy(lib);
+
+#define CUSTOM_FINI \
+    freeSMPEGMy(lib->priv.w.p2); \
+    free(lib->priv.w.p2); \
+
+#include "wrappedlib_init.h"
+
diff --git a/src/wrapped/wrappedsmpeg_private.h b/src/wrapped/wrappedsmpeg_private.h
new file mode 100755
index 00000000..b06b9581
--- /dev/null
+++ b/src/wrapped/wrappedsmpeg_private.h
@@ -0,0 +1,34 @@
+#if defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)
+
+GO(SMPEG_actualSpec,vFpp)
+GO(SMPEG_delete,vFp)
+GO(SMPEG_enableaudio,vFpi)
+GO(SMPEG_enablevideo,vFpi)
+GO(SMPEG_error,pFp)
+GO(SMPEG_filter, pFpp)
+GO(SMPEG_getinfo,vFpp)
+GO(SMPEG_loop,vFpi)
+GO(SMPEG_move, vFpii)
+GO(SMPEG_new,pFppi)
+GO(SMPEG_new_data,pFpipi)
+GO(SMPEG_new_descr,pFipi)
+GOM(SMPEG_new_rwops,pFEppi)
+GO(SMPEG_pause,vFp)
+GO(SMPEG_play,vFp)
+GO(SMPEG_playAudio,iFppi)
+GO(SMPEG_playAudioSDL,vFppi)
+GO(SMPEG_renderFinal,vFppii)
+GO(SMPEG_renderFrame,vFpi)
+GO(SMPEG_rewind,vFp)
+GO(SMPEG_scale, vFpi)
+GO(SMPEG_scaleXY, vFpii)
+GO(SMPEG_seek,vFpi)
+GOM(SMPEG_setdisplay,vFEpppp)
+GO(SMPEG_setdisplayregion, vFpiiii)
+GO(SMPEG_setvolume,vFpi)
+GO(SMPEG_skip,vFpf)
+GO(SMPEG_status,iFp)
+GO(SMPEG_stop,vFp)
+GO(SMPEG_wantedSpec,iFpp)
+
+#endif
\ No newline at end of file