diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-09 16:18:38 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-09 16:18:38 +0100 |
| commit | b971a37ee30012a389c9d4689749e142b42afec9 (patch) | |
| tree | 6b24e4afa8fa4128b4d2acd31bd6cff3f33e4997 /src | |
| parent | 3ca6ac614528318d4f542443fabd50e0531d91a3 (diff) | |
| download | box64-b971a37ee30012a389c9d4689749e142b42afec9.tar.gz box64-b971a37ee30012a389c9d4689749e142b42afec9.zip | |
Added sdl1mixer, sdl1image, sdl1ttd, sdl1smpeg and libz wrapped libs
Diffstat (limited to 'src')
| -rwxr-xr-x | src/library_list.h | 18 | ||||
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 26 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 52 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 26 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibz.c | 210 | ||||
| -rw-r--r-- | src/wrapped/wrappedlibz_private.h | 105 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl1image.c | 130 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl1image_private.h | 41 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl1mixer.c | 264 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl1mixer_private.h | 77 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl1ttf.c | 70 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl1ttf_private.h | 49 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsmpeg.c | 106 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsmpeg_private.h | 34 |
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 |