diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-09-23 10:19:42 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-09-23 10:19:42 +0200 |
| commit | 4c0a213840d4ea746f8ab1dfd12315a5df101207 (patch) | |
| tree | d68cb16e104b374c30d5bd4e32f489eeeb63298c /src | |
| parent | aa65bad62b458acf790666d996cae72ab96881be (diff) | |
| download | box64-4c0a213840d4ea746f8ab1dfd12315a5df101207.tar.gz box64-4c0a213840d4ea746f8ab1dfd12315a5df101207.zip | |
[BOX32][WRAPPER] Added 32bits wrapped openal
Diffstat (limited to 'src')
| -rw-r--r-- | src/box64context.c | 2 | ||||
| -rw-r--r-- | src/library_list_32.h | 5 | ||||
| -rw-r--r-- | src/wrapped32/generated/functions_list.txt | 24 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedopenaldefs32.h | 8 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedopenaltypes32.h | 25 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedopenalundefs32.h | 8 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.c | 32 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.h | 15 | ||||
| -rw-r--r-- | src/wrapped32/wrappedopenal.c | 180 | ||||
| -rw-r--r-- | src/wrapped32/wrappedopenal_private.h | 167 |
10 files changed, 466 insertions, 0 deletions
diff --git a/src/box64context.c b/src/box64context.c index 27da6aca..928357f4 100644 --- a/src/box64context.c +++ b/src/box64context.c @@ -363,6 +363,8 @@ void FreeBox64Context(box64context_t** context) #ifndef STATICBUILD freeGLProcWrapper(ctx); freeALProcWrapper(ctx); + #ifdef BOX32 + #endif #endif if(ctx->stack_clone) diff --git a/src/library_list_32.h b/src/library_list_32.h index d6046166..9e0a036a 100644 --- a/src/library_list_32.h +++ b/src/library_list_32.h @@ -22,4 +22,9 @@ GO("libXcursor.so.1", libxcursor) GO("libXrandr.so.2", libxrandr) GO("libxrandr.so.2", libxrandr) +GO("libopenal.so.1", openal) +GO("libopenal.so.0", openal) +GO("libopenal.so", openal) +GO("openal.so", openal) + GO("crashhandler.so", crashhandler) diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt index d93a3c92..786c1b0b 100644 --- a/src/wrapped32/generated/functions_list.txt +++ b/src/wrapped32/generated/functions_list.txt @@ -13,6 +13,9 @@ #() vFA -> vFA #() vFS -> vFS #() vFX -> vFX +#() cFi -> cFi +#() cFu -> cFu +#() cFp -> cFp #() iFv -> iFv #() iFi -> iFi #() iFI -> iFI @@ -42,8 +45,10 @@ #() UFu -> UFu #() UFp -> UFp #() UFs -> UFs +#() fFi -> fFi #() fFf -> fFf #() dFv -> dFv +#() dFi -> dFi #() dFd -> dFd #() dFp -> dFp #() lFi -> lFi @@ -107,6 +112,7 @@ #() vFpp -> vFpp #() vFSp -> vFSp #() vFXp -> vFXp +#() cFpp -> cFpp #() wFpi -> wFpi #() iFEv -> iFEv #() iFEi -> iFEi @@ -176,6 +182,7 @@ #() pFEu -> pFEu #() pFEp -> pFEp #() pFES -> pFES +#() pFii -> pFii #() pFiu -> pFiu #() pFia -> pFia #() pFuu -> pFuu @@ -398,6 +405,7 @@ #() vFilpp -> vFilpp #() vFipup -> vFipup #() vFipll -> vFipll +#() vFippp -> vFippp #() vFCCCC -> vFCCCC #() vFWWWW -> vFWWWW #() vFuccc -> vFuccc @@ -452,6 +460,7 @@ #() vFffff -> vFffff #() vFdddd -> vFdddd #() vFllii -> vFllii +#() vFpiip -> vFpiip #() vFpipp -> vFpipp #() vFpdii -> vFpdii #() vFpddd -> vFpddd @@ -460,6 +469,7 @@ #() vFpppp -> vFpppp #() vFXiiL -> vFXiiL #() vFXpip -> vFXpip +#() cFpiii -> cFpiii #() iFEiip -> iFEiip #() iFEiiN -> iFEiiN #() iFEipp -> iFEipp @@ -515,6 +525,7 @@ #() pFullu -> pFullu #() pFlfff -> pFlfff #() pFpiLL -> pFpiLL +#() pFpuii -> pFpuii #() pFppLL -> pFppLL #() pFpppp -> pFpppp #() pFXiii -> pFXiii @@ -572,6 +583,7 @@ #() vFuiUUU -> vFuiUUU #() vFuifff -> vFuifff #() vFuiddd -> vFuiddd +#() vFuipii -> vFuipii #() vFuipip -> vFuipip #() vFuipup -> vFuipup #() vFuippp -> vFuippp @@ -658,6 +670,7 @@ #() iFippprLL_ -> iFipppB #() LFLbp_bL_Bp_BL_ -> LFLBBBB #() LFpLpriiiiiiiiilt_a -> LFpLpBa +#() vFEiiipp -> vFEiiipp #() vFiiiiii -> vFiiiiii #() vFiiiuil -> vFiiiuil #() vFiiilpi -> vFiiilpi @@ -669,6 +682,7 @@ #() vFipiplp -> vFipiplp #() vFCCCCff -> vFCCCCff #() vFuiiiii -> vFuiiiii +#() vFuiiiip -> vFuiiiip #() vFuiiuii -> vFuiiuii #() vFuiiuup -> vFuiiuup #() vFuiIIII -> vFuiIIII @@ -757,6 +771,7 @@ #() vFuuiiiii -> vFuuiiiii #() vFuuiiiiC -> vFuuiiiiC #() vFuuiiiiu -> vFuuiiiiu +#() vFuuiiiip -> vFuuiiiip #() vFuuiiuup -> vFuuiiuup #() vFuuiCiui -> vFuuiCiui #() vFuuiCiuu -> vFuuiCiuu @@ -1321,6 +1336,15 @@ wrappedlibxcursor: wrappedlibxfixes: wrappedlibxrandr: wrappedlibxrender: +wrappedopenal: +- vFv: + - alRequestFoldbackStop +- pFp: + - alGetProcAddress +- pFpp: + - alcGetProcAddress +- vFiiipp: + - alRequestFoldbackStart wrappedsdl1: - vFv: - SDL_Quit diff --git a/src/wrapped32/generated/wrappedopenaldefs32.h b/src/wrapped32/generated/wrappedopenaldefs32.h new file mode 100644 index 00000000..980abd98 --- /dev/null +++ b/src/wrapped32/generated/wrappedopenaldefs32.h @@ -0,0 +1,8 @@ +/****************************************************************** + * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) * + ******************************************************************/ +#ifndef __wrappedopenalDEFS32_H_ +#define __wrappedopenalDEFS32_H_ + + +#endif // __wrappedopenalDEFS32_H_ diff --git a/src/wrapped32/generated/wrappedopenaltypes32.h b/src/wrapped32/generated/wrappedopenaltypes32.h new file mode 100644 index 00000000..f93c2d8e --- /dev/null +++ b/src/wrapped32/generated/wrappedopenaltypes32.h @@ -0,0 +1,25 @@ +/****************************************************************** + * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) * + ******************************************************************/ +#ifndef __wrappedopenalTYPES32_H_ +#define __wrappedopenalTYPES32_H_ + +#ifndef LIBNAME +#error You should only #include this file inside a wrapped*.c file +#endif +#ifndef ADDED_FUNCTIONS +#define ADDED_FUNCTIONS() +#endif + +typedef void (*vFv_t)(void); +typedef void* (*pFp_t)(void*); +typedef void* (*pFpp_t)(void*, void*); +typedef void (*vFiiipp_t)(int32_t, int32_t, int32_t, void*, void*); + +#define SUPER() ADDED_FUNCTIONS() \ + GO(alRequestFoldbackStop, vFv_t) \ + GO(alGetProcAddress, pFp_t) \ + GO(alcGetProcAddress, pFpp_t) \ + GO(alRequestFoldbackStart, vFiiipp_t) + +#endif // __wrappedopenalTYPES32_H_ diff --git a/src/wrapped32/generated/wrappedopenalundefs32.h b/src/wrapped32/generated/wrappedopenalundefs32.h new file mode 100644 index 00000000..600e6f9b --- /dev/null +++ b/src/wrapped32/generated/wrappedopenalundefs32.h @@ -0,0 +1,8 @@ +/****************************************************************** + * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) * + ******************************************************************/ +#ifndef __wrappedopenalUNDEFS32_H_ +#define __wrappedopenalUNDEFS32_H_ + + +#endif // __wrappedopenalUNDEFS32_H_ diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c index a272598e..ae316b31 100644 --- a/src/wrapped32/generated/wrapper32.c +++ b/src/wrapped32/generated/wrapper32.c @@ -102,6 +102,9 @@ typedef void (*vFp_t)(void*); typedef void (*vFA_t)(void*); typedef void (*vFS_t)(void*); typedef void (*vFX_t)(void*); +typedef int8_t (*cFi_t)(int32_t); +typedef int8_t (*cFu_t)(uint32_t); +typedef int8_t (*cFp_t)(void*); typedef int32_t (*iFv_t)(void); typedef int32_t (*iFi_t)(int32_t); typedef int32_t (*iFI_t)(int64_t); @@ -131,8 +134,10 @@ typedef uint32_t (*uFp_t)(void*); typedef uint64_t (*UFu_t)(uint32_t); typedef uint64_t (*UFp_t)(void*); typedef uint64_t (*UFs_t)(void*); +typedef float (*fFi_t)(int32_t); typedef float (*fFf_t)(float); typedef double (*dFv_t)(void); +typedef double (*dFi_t)(int32_t); typedef double (*dFd_t)(double); typedef double (*dFp_t)(void*); typedef intptr_t (*lFi_t)(int32_t); @@ -196,6 +201,7 @@ typedef void (*vFpL_t)(void*, uintptr_t); typedef void (*vFpp_t)(void*, void*); typedef void (*vFSp_t)(void*, void*); typedef void (*vFXp_t)(void*, void*); +typedef int8_t (*cFpp_t)(void*, void*); typedef int16_t (*wFpi_t)(void*, int32_t); typedef int32_t (*iFEv_t)(x64emu_t*); typedef int32_t (*iFEi_t)(x64emu_t*, int32_t); @@ -265,6 +271,7 @@ typedef void* (*pFEv_t)(x64emu_t*); typedef void* (*pFEu_t)(x64emu_t*, uint32_t); typedef void* (*pFEp_t)(x64emu_t*, void*); typedef void* (*pFES_t)(x64emu_t*, void*); +typedef void* (*pFii_t)(int32_t, int32_t); typedef void* (*pFiu_t)(int32_t, uint32_t); typedef void* (*pFia_t)(int32_t, void*); typedef void* (*pFuu_t)(uint32_t, uint32_t); @@ -487,6 +494,7 @@ typedef void (*vFilpu_t)(int32_t, intptr_t, void*, uint32_t); typedef void (*vFilpp_t)(int32_t, intptr_t, void*, void*); typedef void (*vFipup_t)(int32_t, void*, uint32_t, void*); typedef void (*vFipll_t)(int32_t, void*, intptr_t, intptr_t); +typedef void (*vFippp_t)(int32_t, void*, void*, void*); typedef void (*vFCCCC_t)(uint8_t, uint8_t, uint8_t, uint8_t); typedef void (*vFWWWW_t)(uint16_t, uint16_t, uint16_t, uint16_t); typedef void (*vFuccc_t)(uint32_t, int8_t, int8_t, int8_t); @@ -541,6 +549,7 @@ typedef void (*vFuppu_t)(uint32_t, void*, void*, uint32_t); typedef void (*vFffff_t)(float, float, float, float); typedef void (*vFdddd_t)(double, double, double, double); typedef void (*vFllii_t)(intptr_t, intptr_t, int32_t, int32_t); +typedef void (*vFpiip_t)(void*, int32_t, int32_t, void*); typedef void (*vFpipp_t)(void*, int32_t, void*, void*); typedef void (*vFpdii_t)(void*, double, int32_t, int32_t); typedef void (*vFpddd_t)(void*, double, double, double); @@ -549,6 +558,7 @@ typedef void (*vFppip_t)(void*, void*, int32_t, void*); typedef void (*vFpppp_t)(void*, void*, void*, void*); typedef void (*vFXiiL_t)(void*, int32_t, int32_t, uintptr_t); typedef void (*vFXpip_t)(void*, void*, int32_t, void*); +typedef int8_t (*cFpiii_t)(void*, int32_t, int32_t, int32_t); typedef int32_t (*iFEiip_t)(x64emu_t*, int32_t, int32_t, void*); typedef int32_t (*iFEiiN_t)(x64emu_t*, int32_t, int32_t, ...); typedef int32_t (*iFEipp_t)(x64emu_t*, int32_t, void*, void*); @@ -604,6 +614,7 @@ typedef void* (*pFillu_t)(int32_t, intptr_t, intptr_t, uint32_t); typedef void* (*pFullu_t)(uint32_t, intptr_t, intptr_t, uint32_t); typedef void* (*pFlfff_t)(intptr_t, float, float, float); typedef void* (*pFpiLL_t)(void*, int32_t, uintptr_t, uintptr_t); +typedef void* (*pFpuii_t)(void*, uint32_t, int32_t, int32_t); typedef void* (*pFppLL_t)(void*, void*, uintptr_t, uintptr_t); typedef void* (*pFpppp_t)(void*, void*, void*, void*); typedef void* (*pFXiii_t)(void*, int32_t, int32_t, int32_t); @@ -661,6 +672,7 @@ typedef void (*vFuiupi_t)(uint32_t, int32_t, uint32_t, void*, int32_t); typedef void (*vFuiUUU_t)(uint32_t, int32_t, uint64_t, uint64_t, uint64_t); typedef void (*vFuifff_t)(uint32_t, int32_t, float, float, float); typedef void (*vFuiddd_t)(uint32_t, int32_t, double, double, double); +typedef void (*vFuipii_t)(uint32_t, int32_t, void*, int32_t, int32_t); typedef void (*vFuipip_t)(uint32_t, int32_t, void*, int32_t, void*); typedef void (*vFuipup_t)(uint32_t, int32_t, void*, uint32_t, void*); typedef void (*vFuippp_t)(uint32_t, int32_t, void*, void*, void*); @@ -747,6 +759,7 @@ typedef uintptr_t (*LFpBp_LLp_t)(void*, struct_p_t*, uintptr_t, uintptr_t, void* typedef int32_t (*iFippprLL__t)(int32_t, void*, void*, void*, struct_LL_t*); typedef uintptr_t (*LFLbp_bL_Bp_BL__t)(uintptr_t, struct_p_t*, struct_L_t*, struct_p_t*, struct_L_t*); typedef uintptr_t (*LFpLpriiiiiiiiilt_a_t)(void*, uintptr_t, void*, struct_iiiiiiiiilt_t*, void*); +typedef void (*vFEiiipp_t)(x64emu_t*, int32_t, int32_t, int32_t, void*, void*); typedef void (*vFiiiiii_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); typedef void (*vFiiiuil_t)(int32_t, int32_t, int32_t, uint32_t, int32_t, intptr_t); typedef void (*vFiiilpi_t)(int32_t, int32_t, int32_t, intptr_t, void*, int32_t); @@ -758,6 +771,7 @@ typedef void (*vFiliplu_t)(int32_t, intptr_t, int32_t, void*, intptr_t, uint32_t typedef void (*vFipiplp_t)(int32_t, void*, int32_t, void*, intptr_t, void*); typedef void (*vFCCCCff_t)(uint8_t, uint8_t, uint8_t, uint8_t, float, float); typedef void (*vFuiiiii_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t); +typedef void (*vFuiiiip_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, void*); typedef void (*vFuiiuii_t)(uint32_t, int32_t, int32_t, uint32_t, int32_t, int32_t); typedef void (*vFuiiuup_t)(uint32_t, int32_t, int32_t, uint32_t, uint32_t, void*); typedef void (*vFuiIIII_t)(uint32_t, int32_t, int64_t, int64_t, int64_t, int64_t); @@ -846,6 +860,7 @@ typedef void (*vFuipdddd_t)(uint32_t, int32_t, void*, double, double, double, do typedef void (*vFuuiiiii_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t); typedef void (*vFuuiiiiC_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, uint8_t); typedef void (*vFuuiiiiu_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t); +typedef void (*vFuuiiiip_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, void*); typedef void (*vFuuiiuup_t)(uint32_t, uint32_t, int32_t, int32_t, uint32_t, uint32_t, void*); typedef void (*vFuuiCiui_t)(uint32_t, uint32_t, int32_t, uint8_t, int32_t, uint32_t, int32_t); typedef void (*vFuuiCiuu_t)(uint32_t, uint32_t, int32_t, uint8_t, int32_t, uint32_t, uint32_t); @@ -1039,6 +1054,9 @@ void vFp_32(x64emu_t *emu, uintptr_t fcn) { vFp_t fn = (vFp_t)fcn; fn(from_ptriv void vFA_32(x64emu_t *emu, uintptr_t fcn) { vFA_t fn = (vFA_t)fcn; fn(from_locale_d(from_ptri(ptr_t, R_ESP + 4))); } void vFS_32(x64emu_t *emu, uintptr_t fcn) { vFS_t fn = (vFS_t)fcn; fn(io_convert32(from_ptriv(R_ESP + 4))); } void vFX_32(x64emu_t *emu, uintptr_t fcn) { vFX_t fn = (vFX_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4))); } +void cFi_32(x64emu_t *emu, uintptr_t fcn) { cFi_t fn = (cFi_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4)); } +void cFu_32(x64emu_t *emu, uintptr_t fcn) { cFu_t fn = (cFu_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4)); } +void cFp_32(x64emu_t *emu, uintptr_t fcn) { cFp_t fn = (cFp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4)); } void iFv_32(x64emu_t *emu, uintptr_t fcn) { iFv_t fn = (iFv_t)fcn; R_EAX = fn(); } void iFi_32(x64emu_t *emu, uintptr_t fcn) { iFi_t fn = (iFi_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4)); } void iFI_32(x64emu_t *emu, uintptr_t fcn) { iFI_t fn = (iFI_t)fcn; R_EAX = fn(from_ptri(int64_t, R_ESP + 4)); } @@ -1068,8 +1086,10 @@ void uFp_32(x64emu_t *emu, uintptr_t fcn) { uFp_t fn = (uFp_t)fcn; R_EAX = (uint void UFu_32(x64emu_t *emu, uintptr_t fcn) { UFu_t fn = (UFu_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptri(uint32_t, R_ESP + 4)); R_EAX = r.d[0]; R_EDX = r.d[1]; } void UFp_32(x64emu_t *emu, uintptr_t fcn) { UFp_t fn = (UFp_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptriv(R_ESP + 4)); R_EAX = r.d[0]; R_EDX = r.d[1]; } void UFs_32(x64emu_t *emu, uintptr_t fcn) { UFs_t fn = (UFs_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptrv(R_ESP + 4)); R_EAX = r.d[0]; R_EDX = r.d[1]; } +void fFi_32(x64emu_t *emu, uintptr_t fcn) { fFi_t fn = (fFi_t)fcn; float fl = fn(from_ptri(int32_t, R_ESP + 4)); fpu_do_push(emu); ST0val = fl; } void fFf_32(x64emu_t *emu, uintptr_t fcn) { fFf_t fn = (fFf_t)fcn; float fl = fn(from_ptri(float, R_ESP + 4)); fpu_do_push(emu); ST0val = fl; } void dFv_32(x64emu_t *emu, uintptr_t fcn) { dFv_t fn = (dFv_t)fcn; double db = fn(); fpu_do_push(emu); ST0val = db; } +void dFi_32(x64emu_t *emu, uintptr_t fcn) { dFi_t fn = (dFi_t)fcn; double db = fn(from_ptri(int32_t, R_ESP + 4)); fpu_do_push(emu); ST0val = db; } void dFd_32(x64emu_t *emu, uintptr_t fcn) { dFd_t fn = (dFd_t)fcn; double db = fn(from_ptri(double, R_ESP + 4)); fpu_do_push(emu); ST0val = db; } void dFp_32(x64emu_t *emu, uintptr_t fcn) { dFp_t fn = (dFp_t)fcn; double db = fn(from_ptriv(R_ESP + 4)); fpu_do_push(emu); ST0val = db; } void lFi_32(x64emu_t *emu, uintptr_t fcn) { lFi_t fn = (lFi_t)fcn; R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4))); } @@ -1133,6 +1153,7 @@ void vFpL_32(x64emu_t *emu, uintptr_t fcn) { vFpL_t fn = (vFpL_t)fcn; fn(from_pt void vFpp_32(x64emu_t *emu, uintptr_t fcn) { vFpp_t fn = (vFpp_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8)); } void vFSp_32(x64emu_t *emu, uintptr_t fcn) { vFSp_t fn = (vFSp_t)fcn; fn(io_convert32(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8)); } void vFXp_32(x64emu_t *emu, uintptr_t fcn) { vFXp_t fn = (vFXp_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8)); } +void cFpp_32(x64emu_t *emu, uintptr_t fcn) { cFpp_t fn = (cFpp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8)); } void wFpi_32(x64emu_t *emu, uintptr_t fcn) { wFpi_t fn = (wFpi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); } void iFEv_32(x64emu_t *emu, uintptr_t fcn) { iFEv_t fn = (iFEv_t)fcn; R_EAX = fn(emu); } void iFEi_32(x64emu_t *emu, uintptr_t fcn) { iFEi_t fn = (iFEi_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4)); } @@ -1202,6 +1223,7 @@ void pFEv_32(x64emu_t *emu, uintptr_t fcn) { pFEv_t fn = (pFEv_t)fcn; R_EAX = to void pFEu_32(x64emu_t *emu, uintptr_t fcn) { pFEu_t fn = (pFEu_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptri(uint32_t, R_ESP + 4))); } void pFEp_32(x64emu_t *emu, uintptr_t fcn) { pFEp_t fn = (pFEp_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4))); } void pFES_32(x64emu_t *emu, uintptr_t fcn) { pFES_t fn = (pFES_t)fcn; R_EAX = to_ptrv(fn(emu, io_convert32(from_ptriv(R_ESP + 4)))); } +void pFii_32(x64emu_t *emu, uintptr_t fcn) { pFii_t fn = (pFii_t)fcn; R_EAX = to_ptrv(fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8))); } void pFiu_32(x64emu_t *emu, uintptr_t fcn) { pFiu_t fn = (pFiu_t)fcn; R_EAX = to_ptrv(fn(from_ptri(int32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8))); } void pFia_32(x64emu_t *emu, uintptr_t fcn) { pFia_t fn = (pFia_t)fcn; R_EAX = to_ptrv(fn(from_ptri(int32_t, R_ESP + 4), from_locale(from_ptri(ptr_t, R_ESP + 8)))); } void pFuu_32(x64emu_t *emu, uintptr_t fcn) { pFuu_t fn = (pFuu_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8))); } @@ -1424,6 +1446,7 @@ void vFilpu_32(x64emu_t *emu, uintptr_t fcn) { vFilpu_t fn = (vFilpu_t)fcn; fn(f void vFilpp_32(x64emu_t *emu, uintptr_t fcn) { vFilpp_t fn = (vFilpp_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), to_long(from_ptri(long_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } void vFipup_32(x64emu_t *emu, uintptr_t fcn) { vFipup_t fn = (vFipup_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); } void vFipll_32(x64emu_t *emu, uintptr_t fcn) { vFipll_t fn = (vFipll_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), to_long(from_ptri(long_t, R_ESP + 12)), to_long(from_ptri(long_t, R_ESP + 16))); } +void vFippp_32(x64emu_t *emu, uintptr_t fcn) { vFippp_t fn = (vFippp_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } void vFCCCC_32(x64emu_t *emu, uintptr_t fcn) { vFCCCC_t fn = (vFCCCC_t)fcn; fn(from_ptri(uint8_t, R_ESP + 4), from_ptri(uint8_t, R_ESP + 8), from_ptri(uint8_t, R_ESP + 12), from_ptri(uint8_t, R_ESP + 16)); } void vFWWWW_32(x64emu_t *emu, uintptr_t fcn) { vFWWWW_t fn = (vFWWWW_t)fcn; fn(from_ptri(uint16_t, R_ESP + 4), from_ptri(uint16_t, R_ESP + 8), from_ptri(uint16_t, R_ESP + 12), from_ptri(uint16_t, R_ESP + 16)); } void vFuccc_32(x64emu_t *emu, uintptr_t fcn) { vFuccc_t fn = (vFuccc_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int8_t, R_ESP + 8), from_ptri(int8_t, R_ESP + 12), from_ptri(int8_t, R_ESP + 16)); } @@ -1478,6 +1501,7 @@ void vFuppu_32(x64emu_t *emu, uintptr_t fcn) { vFuppu_t fn = (vFuppu_t)fcn; fn(f void vFffff_32(x64emu_t *emu, uintptr_t fcn) { vFffff_t fn = (vFffff_t)fcn; fn(from_ptri(float, R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16)); } void vFdddd_32(x64emu_t *emu, uintptr_t fcn) { vFdddd_t fn = (vFdddd_t)fcn; fn(from_ptri(double, R_ESP + 4), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20), from_ptri(double, R_ESP + 28)); } void vFllii_32(x64emu_t *emu, uintptr_t fcn) { vFllii_t fn = (vFllii_t)fcn; fn(to_long(from_ptri(long_t, R_ESP + 4)), to_long(from_ptri(long_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } +void vFpiip_32(x64emu_t *emu, uintptr_t fcn) { vFpiip_t fn = (vFpiip_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); } void vFpipp_32(x64emu_t *emu, uintptr_t fcn) { vFpipp_t fn = (vFpipp_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } void vFpdii_32(x64emu_t *emu, uintptr_t fcn) { vFpdii_t fn = (vFpdii_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20)); } void vFpddd_32(x64emu_t *emu, uintptr_t fcn) { vFpddd_t fn = (vFpddd_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(double, R_ESP + 16), from_ptri(double, R_ESP + 24)); } @@ -1486,6 +1510,7 @@ void vFppip_32(x64emu_t *emu, uintptr_t fcn) { vFppip_t fn = (vFppip_t)fcn; fn(f void vFpppp_32(x64emu_t *emu, uintptr_t fcn) { vFpppp_t fn = (vFpppp_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } void vFXiiL_32(x64emu_t *emu, uintptr_t fcn) { vFXiiL_t fn = (vFXiiL_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), to_ulong(from_ptri(ulong_t, R_ESP + 16))); } void vFXpip_32(x64emu_t *emu, uintptr_t fcn) { vFXpip_t fn = (vFXpip_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); } +void cFpiii_32(x64emu_t *emu, uintptr_t fcn) { cFpiii_t fn = (cFpiii_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } void iFEiip_32(x64emu_t *emu, uintptr_t fcn) { iFEiip_t fn = (iFEiip_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } void iFEiiN_32(x64emu_t *emu, uintptr_t fcn) { iFEiiN_t fn = (iFEiiN_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } void iFEipp_32(x64emu_t *emu, uintptr_t fcn) { iFEipp_t fn = (iFEipp_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); } @@ -1541,6 +1566,7 @@ void pFillu_32(x64emu_t *emu, uintptr_t fcn) { pFillu_t fn = (pFillu_t)fcn; R_EA void pFullu_32(x64emu_t *emu, uintptr_t fcn) { pFullu_t fn = (pFullu_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4), to_long(from_ptri(long_t, R_ESP + 8)), to_long(from_ptri(long_t, R_ESP + 12)), from_ptri(uint32_t, R_ESP + 16))); } void pFlfff_32(x64emu_t *emu, uintptr_t fcn) { pFlfff_t fn = (pFlfff_t)fcn; R_EAX = to_ptrv(fn(to_long(from_ptri(long_t, R_ESP + 4)), from_ptri(float, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16))); } void pFpiLL_32(x64emu_t *emu, uintptr_t fcn) { pFpiLL_t fn = (pFpiLL_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12)), to_ulong(from_ptri(ulong_t, R_ESP + 16)))); } +void pFpuii_32(x64emu_t *emu, uintptr_t fcn) { pFpuii_t fn = (pFpuii_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16))); } void pFppLL_32(x64emu_t *emu, uintptr_t fcn) { pFppLL_t fn = (pFppLL_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12)), to_ulong(from_ptri(ulong_t, R_ESP + 16)))); } void pFpppp_32(x64emu_t *emu, uintptr_t fcn) { pFpppp_t fn = (pFpppp_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16))); } void pFXiii_32(x64emu_t *emu, uintptr_t fcn) { pFXiii_t fn = (pFXiii_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16))); } @@ -1598,6 +1624,7 @@ void vFuiupi_32(x64emu_t *emu, uintptr_t fcn) { vFuiupi_t fn = (vFuiupi_t)fcn; f void vFuiUUU_32(x64emu_t *emu, uintptr_t fcn) { vFuiUUU_t fn = (vFuiUUU_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(uint64_t, R_ESP + 12), from_ptri(uint64_t, R_ESP + 20), from_ptri(uint64_t, R_ESP + 28)); } void vFuifff_32(x64emu_t *emu, uintptr_t fcn) { vFuifff_t fn = (vFuifff_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16), from_ptri(float, R_ESP + 20)); } void vFuiddd_32(x64emu_t *emu, uintptr_t fcn) { vFuiddd_t fn = (vFuiddd_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20), from_ptri(double, R_ESP + 28)); } +void vFuipii_32(x64emu_t *emu, uintptr_t fcn) { vFuipii_t fn = (vFuipii_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20)); } void vFuipip_32(x64emu_t *emu, uintptr_t fcn) { vFuipip_t fn = (vFuipip_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20)); } void vFuipup_32(x64emu_t *emu, uintptr_t fcn) { vFuipup_t fn = (vFuipup_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptriv(R_ESP + 20)); } void vFuippp_32(x64emu_t *emu, uintptr_t fcn) { vFuippp_t fn = (vFuippp_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); } @@ -1684,6 +1711,7 @@ void LFpBp_LLp_32(x64emu_t *emu, uintptr_t fcn) { LFpBp_LLp_t fn = (LFpBp_LLp_t) void iFippprLL__32(x64emu_t *emu, uintptr_t fcn) { iFippprLL__t fn = (iFippprLL__t)fcn; struct_LL_t arg_20; from_struct_LL(&arg_20, *(ptr_t*)(from_ptr((R_ESP + 20)))); R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), *(ptr_t*)(from_ptr((R_ESP + 20))) ? &arg_20 : NULL); } void LFLbp_bL_Bp_BL__32(x64emu_t *emu, uintptr_t fcn) { LFLbp_bL_Bp_BL__t fn = (LFLbp_bL_Bp_BL__t)fcn; struct_p_t arg_8; from_struct_p(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); struct_L_t arg_12; from_struct_L(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); struct_p_t arg_16; struct_L_t arg_20; R_EAX = to_ulong(fn(to_ulong(from_ptri(ulong_t, R_ESP + 4)), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL, *(ptr_t*)(from_ptr((R_ESP + 20))) ? &arg_20 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); if (*(ptr_t*)(from_ptr((R_ESP + 20)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 20))), &arg_20); } void LFpLpriiiiiiiiilt_a_32(x64emu_t *emu, uintptr_t fcn) { LFpLpriiiiiiiiilt_a_t fn = (LFpLpriiiiiiiiilt_a_t)fcn; struct_iiiiiiiiilt_t arg_16; from_struct_iiiiiiiiilt(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL, from_locale(from_ptri(ptr_t, R_ESP + 20)))); } +void vFEiiipp_32(x64emu_t *emu, uintptr_t fcn) { vFEiiipp_t fn = (vFEiiipp_t)fcn; fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); } void vFiiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFiiiiii_t fn = (vFiiiiii_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24)); } void vFiiiuil_32(x64emu_t *emu, uintptr_t fcn) { vFiiiuil_t fn = (vFiiiuil_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), to_long(from_ptri(long_t, R_ESP + 24))); } void vFiiilpi_32(x64emu_t *emu, uintptr_t fcn) { vFiiilpi_t fn = (vFiiilpi_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), to_long(from_ptri(long_t, R_ESP + 16)), from_ptriv(R_ESP + 20), from_ptri(int32_t, R_ESP + 24)); } @@ -1695,6 +1723,7 @@ void vFiliplu_32(x64emu_t *emu, uintptr_t fcn) { vFiliplu_t fn = (vFiliplu_t)fcn void vFipiplp_32(x64emu_t *emu, uintptr_t fcn) { vFipiplp_t fn = (vFipiplp_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), to_long(from_ptri(long_t, R_ESP + 20)), from_ptriv(R_ESP + 24)); } void vFCCCCff_32(x64emu_t *emu, uintptr_t fcn) { vFCCCCff_t fn = (vFCCCCff_t)fcn; fn(from_ptri(uint8_t, R_ESP + 4), from_ptri(uint8_t, R_ESP + 8), from_ptri(uint8_t, R_ESP + 12), from_ptri(uint8_t, R_ESP + 16), from_ptri(float, R_ESP + 20), from_ptri(float, R_ESP + 24)); } void vFuiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFuiiiii_t fn = (vFuiiiii_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24)); } +void vFuiiiip_32(x64emu_t *emu, uintptr_t fcn) { vFuiiiip_t fn = (vFuiiiip_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptriv(R_ESP + 24)); } void vFuiiuii_32(x64emu_t *emu, uintptr_t fcn) { vFuiiuii_t fn = (vFuiiuii_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24)); } void vFuiiuup_32(x64emu_t *emu, uintptr_t fcn) { vFuiiuup_t fn = (vFuiiuup_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptriv(R_ESP + 24)); } void vFuiIIII_32(x64emu_t *emu, uintptr_t fcn) { vFuiIIII_t fn = (vFuiIIII_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int64_t, R_ESP + 12), from_ptri(int64_t, R_ESP + 20), from_ptri(int64_t, R_ESP + 28), from_ptri(int64_t, R_ESP + 36)); } @@ -1783,6 +1812,7 @@ void vFuipdddd_32(x64emu_t *emu, uintptr_t fcn) { vFuipdddd_t fn = (vFuipdddd_t) void vFuuiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFuuiiiii_t fn = (vFuuiiiii_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28)); } void vFuuiiiiC_32(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiC_t fn = (vFuuiiiiC_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(uint8_t, R_ESP + 28)); } void vFuuiiiiu_32(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiu_t fn = (vFuuiiiiu_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28)); } +void vFuuiiiip_32(x64emu_t *emu, uintptr_t fcn) { vFuuiiiip_t fn = (vFuuiiiip_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptriv(R_ESP + 28)); } void vFuuiiuup_32(x64emu_t *emu, uintptr_t fcn) { vFuuiiuup_t fn = (vFuuiiuup_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptriv(R_ESP + 28)); } void vFuuiCiui_32(x64emu_t *emu, uintptr_t fcn) { vFuuiCiui_t fn = (vFuuiCiui_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint8_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28)); } void vFuuiCiuu_32(x64emu_t *emu, uintptr_t fcn) { vFuuiCiuu_t fn = (vFuuiCiuu_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint8_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28)); } @@ -1972,8 +2002,10 @@ void iFEpvvpV_32(x64emu_t *emu, uintptr_t fcn) { iFEppV_t fn = (iFEppV_t)fcn; R_ void iFEpLvvpp_32(x64emu_t *emu, uintptr_t fcn) { iFEpLpp_t fn = (iFEpLpp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24)); } int isRetX87Wrapper32(wrapper_t fun) { + if (fun == &fFi_32) return 1; if (fun == &fFf_32) return 1; if (fun == &dFv_32) return 1; + if (fun == &dFi_32) return 1; if (fun == &dFd_32) return 1; if (fun == &dFp_32) return 1; if (fun == &fFif_32) return 1; diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h index 28d3260d..43f17687 100644 --- a/src/wrapped32/generated/wrapper32.h +++ b/src/wrapped32/generated/wrapper32.h @@ -54,6 +54,9 @@ void vFp_32(x64emu_t *emu, uintptr_t fnc); void vFA_32(x64emu_t *emu, uintptr_t fnc); void vFS_32(x64emu_t *emu, uintptr_t fnc); void vFX_32(x64emu_t *emu, uintptr_t fnc); +void cFi_32(x64emu_t *emu, uintptr_t fnc); +void cFu_32(x64emu_t *emu, uintptr_t fnc); +void cFp_32(x64emu_t *emu, uintptr_t fnc); void iFv_32(x64emu_t *emu, uintptr_t fnc); void iFi_32(x64emu_t *emu, uintptr_t fnc); void iFI_32(x64emu_t *emu, uintptr_t fnc); @@ -83,8 +86,10 @@ void uFp_32(x64emu_t *emu, uintptr_t fnc); void UFu_32(x64emu_t *emu, uintptr_t fnc); void UFp_32(x64emu_t *emu, uintptr_t fnc); void UFs_32(x64emu_t *emu, uintptr_t fnc); +void fFi_32(x64emu_t *emu, uintptr_t fnc); void fFf_32(x64emu_t *emu, uintptr_t fnc); void dFv_32(x64emu_t *emu, uintptr_t fnc); +void dFi_32(x64emu_t *emu, uintptr_t fnc); void dFd_32(x64emu_t *emu, uintptr_t fnc); void dFp_32(x64emu_t *emu, uintptr_t fnc); void lFi_32(x64emu_t *emu, uintptr_t fnc); @@ -148,6 +153,7 @@ void vFpL_32(x64emu_t *emu, uintptr_t fnc); void vFpp_32(x64emu_t *emu, uintptr_t fnc); void vFSp_32(x64emu_t *emu, uintptr_t fnc); void vFXp_32(x64emu_t *emu, uintptr_t fnc); +void cFpp_32(x64emu_t *emu, uintptr_t fnc); void wFpi_32(x64emu_t *emu, uintptr_t fnc); void iFEv_32(x64emu_t *emu, uintptr_t fnc); void iFEi_32(x64emu_t *emu, uintptr_t fnc); @@ -217,6 +223,7 @@ void pFEv_32(x64emu_t *emu, uintptr_t fnc); void pFEu_32(x64emu_t *emu, uintptr_t fnc); void pFEp_32(x64emu_t *emu, uintptr_t fnc); void pFES_32(x64emu_t *emu, uintptr_t fnc); +void pFii_32(x64emu_t *emu, uintptr_t fnc); void pFiu_32(x64emu_t *emu, uintptr_t fnc); void pFia_32(x64emu_t *emu, uintptr_t fnc); void pFuu_32(x64emu_t *emu, uintptr_t fnc); @@ -439,6 +446,7 @@ void vFilpu_32(x64emu_t *emu, uintptr_t fnc); void vFilpp_32(x64emu_t *emu, uintptr_t fnc); void vFipup_32(x64emu_t *emu, uintptr_t fnc); void vFipll_32(x64emu_t *emu, uintptr_t fnc); +void vFippp_32(x64emu_t *emu, uintptr_t fnc); void vFCCCC_32(x64emu_t *emu, uintptr_t fnc); void vFWWWW_32(x64emu_t *emu, uintptr_t fnc); void vFuccc_32(x64emu_t *emu, uintptr_t fnc); @@ -493,6 +501,7 @@ void vFuppu_32(x64emu_t *emu, uintptr_t fnc); void vFffff_32(x64emu_t *emu, uintptr_t fnc); void vFdddd_32(x64emu_t *emu, uintptr_t fnc); void vFllii_32(x64emu_t *emu, uintptr_t fnc); +void vFpiip_32(x64emu_t *emu, uintptr_t fnc); void vFpipp_32(x64emu_t *emu, uintptr_t fnc); void vFpdii_32(x64emu_t *emu, uintptr_t fnc); void vFpddd_32(x64emu_t *emu, uintptr_t fnc); @@ -501,6 +510,7 @@ void vFppip_32(x64emu_t *emu, uintptr_t fnc); void vFpppp_32(x64emu_t *emu, uintptr_t fnc); void vFXiiL_32(x64emu_t *emu, uintptr_t fnc); void vFXpip_32(x64emu_t *emu, uintptr_t fnc); +void cFpiii_32(x64emu_t *emu, uintptr_t fnc); void iFEiip_32(x64emu_t *emu, uintptr_t fnc); void iFEiiN_32(x64emu_t *emu, uintptr_t fnc); void iFEipp_32(x64emu_t *emu, uintptr_t fnc); @@ -556,6 +566,7 @@ void pFillu_32(x64emu_t *emu, uintptr_t fnc); void pFullu_32(x64emu_t *emu, uintptr_t fnc); void pFlfff_32(x64emu_t *emu, uintptr_t fnc); void pFpiLL_32(x64emu_t *emu, uintptr_t fnc); +void pFpuii_32(x64emu_t *emu, uintptr_t fnc); void pFppLL_32(x64emu_t *emu, uintptr_t fnc); void pFpppp_32(x64emu_t *emu, uintptr_t fnc); void pFXiii_32(x64emu_t *emu, uintptr_t fnc); @@ -613,6 +624,7 @@ void vFuiupi_32(x64emu_t *emu, uintptr_t fnc); void vFuiUUU_32(x64emu_t *emu, uintptr_t fnc); void vFuifff_32(x64emu_t *emu, uintptr_t fnc); void vFuiddd_32(x64emu_t *emu, uintptr_t fnc); +void vFuipii_32(x64emu_t *emu, uintptr_t fnc); void vFuipip_32(x64emu_t *emu, uintptr_t fnc); void vFuipup_32(x64emu_t *emu, uintptr_t fnc); void vFuippp_32(x64emu_t *emu, uintptr_t fnc); @@ -699,6 +711,7 @@ void LFpBp_LLp_32(x64emu_t *emu, uintptr_t fnc); void iFippprLL__32(x64emu_t *emu, uintptr_t fnc); void LFLbp_bL_Bp_BL__32(x64emu_t *emu, uintptr_t fnc); void LFpLpriiiiiiiiilt_a_32(x64emu_t *emu, uintptr_t fnc); +void vFEiiipp_32(x64emu_t *emu, uintptr_t fnc); void vFiiiiii_32(x64emu_t *emu, uintptr_t fnc); void vFiiiuil_32(x64emu_t *emu, uintptr_t fnc); void vFiiilpi_32(x64emu_t *emu, uintptr_t fnc); @@ -710,6 +723,7 @@ void vFiliplu_32(x64emu_t *emu, uintptr_t fnc); void vFipiplp_32(x64emu_t *emu, uintptr_t fnc); void vFCCCCff_32(x64emu_t *emu, uintptr_t fnc); void vFuiiiii_32(x64emu_t *emu, uintptr_t fnc); +void vFuiiiip_32(x64emu_t *emu, uintptr_t fnc); void vFuiiuii_32(x64emu_t *emu, uintptr_t fnc); void vFuiiuup_32(x64emu_t *emu, uintptr_t fnc); void vFuiIIII_32(x64emu_t *emu, uintptr_t fnc); @@ -798,6 +812,7 @@ void vFuipdddd_32(x64emu_t *emu, uintptr_t fnc); void vFuuiiiii_32(x64emu_t *emu, uintptr_t fnc); void vFuuiiiiC_32(x64emu_t *emu, uintptr_t fnc); void vFuuiiiiu_32(x64emu_t *emu, uintptr_t fnc); +void vFuuiiiip_32(x64emu_t *emu, uintptr_t fnc); void vFuuiiuup_32(x64emu_t *emu, uintptr_t fnc); void vFuuiCiui_32(x64emu_t *emu, uintptr_t fnc); void vFuuiCiuu_32(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped32/wrappedopenal.c b/src/wrapped32/wrappedopenal.c new file mode 100644 index 00000000..1d53b894 --- /dev/null +++ b/src/wrapped32/wrappedopenal.c @@ -0,0 +1,180 @@ +#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 "wrapper32.h" +#include "bridge.h" +#include "librarian/library_private.h" +#include "x64emu.h" +#include "emu/x64emu_private.h" +#include "callback.h" +#include "box32context.h" +#include "librarian.h" +#include "myalign32.h" + +static const char* openalName = "libopenal.so.1"; +#define LIBNAME openal + +#include "generated/wrappedopenaltypes32.h" + +#include "wrappercallback32.h" + +#define SUPER() \ +GO(0) \ +GO(1) \ +GO(2) \ +GO(3) \ +GO(4) + +// Request ... +#define GO(A) \ +static uintptr_t my32_Request_fct_##A = 0; \ +static void my32_Request_##A(int32_t a, int32_t b) \ +{ \ + RunFunctionFmt(my32_Request_fct_##A, "ii", a, b); \ +} +SUPER() +#undef GO +static void* find_Request_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my32_Request_fct_##A == (uintptr_t)fct) return my32_Request_##A; + SUPER() + #undef GO + #define GO(A) if(my32_Request_fct_##A == 0) {my32_Request_fct_##A = (uintptr_t)fct; return my32_Request_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for openal Request callback\n"); + return NULL; +} + +#undef SUPER + +void* my32_alGetProcAddress(x64emu_t* emu, void* name); +void* my32_alcGetProcAddress(x64emu_t* emu, void* device, void* name); +void my32_alRequestFoldbackStart(x64emu_t *emu, int32_t mode, int32_t count, int32_t length, void* mem, void* cb); +void my32_alRequestFoldbackStop(x64emu_t* emu); + +#include "wrappedlib_init32.h" + + +void fillALProcWrapper32() +{ + int cnt, ret; + khint_t k; + kh_symbolmap_t * symbolmap = kh_init(symbolmap); + // populates maps... + cnt = sizeof(openalsymbolmap)/sizeof(map_onesymbol_t); + for (int i=0; i<cnt; ++i) { + k = kh_put(symbolmap, symbolmap, openalsymbolmap[i].name, &ret); + kh_value(symbolmap, k).w = openalsymbolmap[i].w; + kh_value(symbolmap, k).resolved = 0; + } + // and the my32_ symbols map + cnt = sizeof(MAPNAME(mysymbolmap))/sizeof(map_onesymbol_t); + for (int i=0; i<cnt; ++i) { + k = kh_put(symbolmap, symbolmap, openalmysymbolmap[i].name, &ret); + kh_value(symbolmap, k).w = openalmysymbolmap[i].w; + kh_value(symbolmap, k).resolved = 0; + } + my_context->alwrappers = symbolmap; + // fill my32_* map + symbolmap = kh_init(symbolmap); + cnt = sizeof(MAPNAME(mysymbolmap))/sizeof(map_onesymbol_t); + for (int i=0; i<cnt; ++i) { + k = kh_put(symbolmap, symbolmap, openalmysymbolmap[i].name, &ret); + kh_value(symbolmap, k).w = openalmysymbolmap[i].w; + kh_value(symbolmap, k).resolved = 0; + } + my_context->almymap = symbolmap; +} + +EXPORT void* my32_alGetProcAddress(x64emu_t* emu, void* name) +{ + khint_t k; + const char* rname = (const char*)name; + printf_log(LOG_DEBUG, "Calling 32bits alGetProcAddress(%s)\n", rname); + if(!emu->context->alwrappers) // could be moved in "my" structure... + fillALProcWrapper32(emu->context); + // get proc adress using actual alGetProcAddress + k = kh_get(symbolmap, emu->context->almymap, rname); + int is_my = (k==kh_end(emu->context->almymap))?0:1; + void* symbol; + if(is_my) { + // try again, by using custom "my32_" now... + char tmp[200]; + strcpy(tmp, "my32_"); + strcat(tmp, rname); + symbol = dlsym(emu->context->box64lib, tmp); + } else + symbol = my->alGetProcAddress(name); + if(!symbol) + return NULL; // easy + // get wrapper + k = kh_get(symbolmap, emu->context->alwrappers, rname); + if(k==kh_end(emu->context->alwrappers)) { + printf_log(LOG_INFO, "Warning, no wrapper for %s\n", rname); + return NULL; + } + symbol1_t *s = &kh_value(emu->context->alwrappers, k); + if(!s->resolved) { + const char* constname = kh_key(emu->context->alwrappers, k); + s->addr = AddCheckBridge(emu->context->system, s->w, symbol, 0, constname); + s->resolved = 1; + } + return (void*)s->addr; +} + +EXPORT void* my32_alcGetProcAddress(x64emu_t* emu, void* device, void* name) +{ + khint_t k; + const char* rname = (const char*)name; + printf_log(LOG_DEBUG, "Calling 32bits alcGetProcAddress(%p, %s)\n", device, rname); + if(!emu->context->alwrappers) // could be moved in "my" structure... + fillALProcWrapper32(); + // get proc adress using actual alGetProcAddress + k = kh_get(symbolmap, emu->context->almymap, rname); + int is_my = (k==kh_end(emu->context->almymap))?0:1; + void* symbol; + if(is_my) { + // try again, by using custom "my32_" now... + char tmp[200]; + strcpy(tmp, "my32_"); + strcat(tmp, rname); + symbol = dlsym(emu->context->box64lib, tmp); + } else + symbol = my->alcGetProcAddress(device, name); + if(!symbol) + return NULL; // easy + // get wrapper + k = kh_get(symbolmap, emu->context->alwrappers, rname); + if(k==kh_end(emu->context->alwrappers)) { + printf_log(LOG_INFO, "Warning, no wrapper for %s\n", rname); + return NULL; + } + symbol1_t *s = &kh_value(emu->context->alwrappers, k); + if(!s->resolved) { + const char* constname = kh_key(emu->context->alwrappers, k); + s->addr = AddCheckBridge(emu->context->system, s->w, symbol, 0, constname); + s->resolved = 1; + } + return (void*)s->addr; +} + +EXPORT void my32_alRequestFoldbackStart(x64emu_t *emu, int32_t mode, int32_t count, int32_t length, void* mem, void* cb) +{ + (void)emu; + my->alRequestFoldbackStart(mode, count, length, mem, find_Request_Fct(cb)); +} + +EXPORT void my32_alRequestFoldbackStop(x64emu_t* emu) +{ + (void)emu; + my->alRequestFoldbackStop(); +} diff --git a/src/wrapped32/wrappedopenal_private.h b/src/wrapped32/wrappedopenal_private.h new file mode 100644 index 00000000..60aa4c0d --- /dev/null +++ b/src/wrapped32/wrappedopenal_private.h @@ -0,0 +1,167 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error Meh... +#endif + +GO(alDopplerFactor, vFf) +GO(alDopplerVelocity, vFf) +GO(alSpeedOfSound, vFf) +GO(alDistanceModel, vFi) +GO(alEnable, vFi) +GO(alDisable, vFi) +GO(alIsEnabled, cFi) +GO(alGetString, pFi) +GO(alGetBooleanv, vFip) +GO(alGetIntegerv, vFip) +GO(alGetFloatv, vFip) +GO(alGetDoublev, vFip) +GO(alGetBoolean, cFi) +GO(alGetInteger, iFi) +GO(alGetFloat, fFi) +GO(alGetDouble, dFi) +GO(alGetError, iFv) +GO(alIsExtensionPresent, cFp) +GOM(alGetProcAddress, pFEp) +GO(alGetEnumValue, iFp) +GO(alListenerf, vFif) +GO(alListener3f, vFifff) +GO(alListenerfv, vFip) +GO(alListeneri, vFii) +GO(alListener3i, vFiiii) +GO(alListeneriv, vFip) +GO(alGetListenerf, vFip) +GO(alGetListener3f, vFippp) +GO(alGetListenerfv, vFip) +GO(alGetListeneri, vFip) +GO(alGetListener3i, vFippp) +GO(alGetListeneriv, vFip) +GO(alGenSources, vFip) +GO(alDeleteSources, vFip) +GO(alIsSource, cFu) +GO(alSourcef, vFuif) +GO(alSource3f, vFuifff) +GO(alSourcefv, vFuip) +GO(alSourcei, vFuii) +GO(alSource3i, vFuiiii) +GO(alSourceiv, vFuip) +GO(alGetSourcef, vFuip) +GO(alGetSource3f, vFuippp) +GO(alGetSourcefv, vFuip) +GO(alGetSourcei, vFuip) +GO(alGetSource3i, vFuippp) +GO(alGetSourceiv, vFuip) +GO(alSourcePlayv, vFip) +GO(alSourceStopv, vFip) +GO(alSourceRewindv, vFip) +GO(alSourcePausev, vFip) +GO(alSourcePlay, vFu) +GO(alSourceStop, vFu) +GO(alSourceRewind, vFu) +GO(alSourcePause, vFu) +GO(alSourceQueueBuffers, vFuip) +GO(alSourceUnqueueBuffers, vFuip) +GO(alGenBuffers, vFip) +GO(alDeleteBuffers, vFip) +GO(alIsBuffer, cFu) +GO(alBufferData, vFuipii) +GO(alBufferf, vFuif) +GO(alBuffer3f, vFuifff) +GO(alBufferfv, vFuip) +GO(alBufferi, vFuii) +GO(alBuffer3i, vFuiiii) +GO(alBufferiv, vFuip) +GO(alGetBufferf, vFuip) +GO(alGetBuffer3f, vFuippp) +GO(alGetBufferfv, vFuip) +GO(alGetBufferi, vFuip) +GO(alGetBuffer3i, vFuippp) +GO(alGetBufferiv, vFuip) + +GO(alcCreateContext, pFpp) +GO(alcMakeContextCurrent, cFp) +GO(alcProcessContext, vFp) +GO(alcSuspendContext, vFp) +GO(alcDestroyContext, vFp) +GO(alcGetCurrentContext, pFv) +GO(alcGetContextsDevice, pFp) +GO(alcOpenDevice, pFp) +GO(alcCloseDevice, cFp) +GO(alcGetError, iFp) +GO(alcIsExtensionPresent, cFpp) +GOM(alcGetProcAddress, pFEpp) +GO(alcGetEnumValue, iFpp) +GO(alcGetString, pFpi) +GO(alcGetIntegerv, vFpiip) +GO(alcCaptureOpenDevice, pFpuii) +GO(alcCaptureCloseDevice, cFp) +GO(alcCaptureStart, vFp) +GO(alcCaptureStop, vFp) +GO(alcCaptureSamples, vFppi) + +GO(alcGetThreadContext, pFv) +GO(alcSetThreadContext, cFp) +GO(alcLoopbackOpenDeviceSOFT, pFp) +GO(alcIsRenderFormatSupportedSOFT, cFpiii) +GO(alcRenderSamplesSOFT, vFppi) +GO(alcDevicePauseSOFT, vFp) +GO(alcDeviceResumeSOFT, vFp) +GO(alcGetStringiSOFT, pFpii) +GO(alcResetDeviceSOFT, cFpp) +GO(alcGetInteger64vSOFT, vFpiip) + +GO(alBufferDataStatic, vFuipii) +GO(alBufferSubDataSOFT, vFuipii) +GOM(alRequestFoldbackStart, vFEiiipp) +GOM(alRequestFoldbackStop, vFEv) +GO(alBufferSamplesSOFT, vFuuiiiip) +GO(alBufferSubSamplesSOFT, vFuiiiip) +GO(alGetBufferSamplesSOFT, vFuiiiip) +GO(alIsBufferFormatSupportedSOFT, cFi) +GO(alSourcedSOFT, vFuid) +GO(alSource3dSOFT, vFuiddd) +GO(alSourcedvSOFT, vFuip) +GO(alGetSourcedSOFT, vFuip) +GO(alGetSource3dSOFT, vFuippp) +GO(alGetSourcedvSOFT, vFuip) +GO(alSourcei64SOFT, vFuiI) +GO(alSource3i64SOFT, vFuiIII) +GO(alSourcei64vSOFT, vFuip) +GO(alGetSourcei64SOFT, vFuip) +GO(alGetSource3i64SOFT, vFuippp) +GO(alGetSourcei64vSOFT, vFuip) +GO(alDeferUpdatesSOFT, vFv) +GO(alProcessUpdatesSOFT, vFv) +GO(alGetStringiSOFT, pFii) + +GO(alGenEffects, vFip) +GO(alDeleteEffects, vFip) +GO(alIsEffect, cFu) +GO(alEffecti, vFuii) +GO(alEffectiv, vFuip) +GO(alEffectf, vFuif) +GO(alEffectfv, vFuip) +GO(alGetEffecti, vFuip) +GO(alGetEffectiv, vFuip) +GO(alGetEffectf, vFuip) +GO(alGetEffectfv, vFuip) +GO(alGenFilters, vFip) +GO(alDeleteFilters, vFip) +GO(alIsFilter, cFu) +GO(alFilteri, vFuii) +GO(alFilteriv, vFuip) +GO(alFilterf, vFuif) +GO(alFilterfv, vFuip) +GO(alGetFilteri, vFuip) +GO(alGetFilteriv, vFuip) +GO(alGetFilterf, vFuip) +GO(alGetFilterfv, vFuip) +GO(alGenAuxiliaryEffectSlots, vFip) +GO(alDeleteAuxiliaryEffectSlots, vFip) +GO(alIsAuxiliaryEffectSlot, cFu) +GO(alAuxiliaryEffectSloti, vFuii) +GO(alAuxiliaryEffectSlotiv, vFuip) +GO(alAuxiliaryEffectSlotf, vFuif) +GO(alAuxiliaryEffectSlotfv, vFuip) +GO(alGetAuxiliaryEffectSloti, vFuip) +GO(alGetAuxiliaryEffectSlotiv, vFuip) +GO(alGetAuxiliaryEffectSlotf, vFuip) +GO(alGetAuxiliaryEffectSlotfv, vFuip) |