From dad0913dcbe7fd754b7d48dd06af8b93b78e95d1 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Tue, 24 Sep 2024 21:04:50 +0200 Subject: [BOX32][WRAPPER] Added some more 32bits wrapped function, and fixed a few x11/glX ones too --- src/libtools/my_x11_defs.h | 52 +++++++-- src/libtools/my_x11_defs_32.h | 38 +++++++ src/wrapped32/generated/converter32.c | 15 +++ src/wrapped32/generated/converter32.h | 8 ++ src/wrapped32/generated/functions_list.txt | 22 +++- src/wrapped32/generated/wrappedlibgltypes32.h | 6 +- src/wrapped32/generated/wrappedlibx11types32.h | 6 + src/wrapped32/generated/wrapper32.c | 24 +++- src/wrapped32/generated/wrapper32.h | 12 +- src/wrapped32/wrappedlibc_private.h | 4 +- src/wrapped32/wrappedlibgl.c | 101 +++++++++++++++++ src/wrapped32/wrappedlibgl_private.h | 8 +- src/wrapped32/wrappedlibx11.c | 147 ++++++++++++++++++++++--- src/wrapped32/wrappedlibx11_private.h | 23 ++-- 14 files changed, 420 insertions(+), 46 deletions(-) (limited to 'src') diff --git a/src/libtools/my_x11_defs.h b/src/libtools/my_x11_defs.h index 1c935a31..d03afbb3 100644 --- a/src/libtools/my_x11_defs.h +++ b/src/libtools/my_x11_defs.h @@ -624,13 +624,13 @@ typedef struct my_XMappingEvent_s typedef struct my_XErrorEvent_s { - int type; - my_XDisplay_t *display; - XID resourceid; - unsigned long serial; - unsigned char error_code; - unsigned char request_code; - unsigned char minor_code; + int type; + my_XDisplay_t *display; + XID resourceid; + unsigned long serial; + unsigned char error_code; + unsigned char request_code; + unsigned char minor_code; } my_XErrorEvent_t; typedef struct my_XAnyEvent_s @@ -820,5 +820,43 @@ typedef struct my_XRROutputInfo_s { XID *modes; } my_XRROutputInfo_t; +// Window Attribute +typedef struct my_XWindowAttributes_s { + int x, y; + int width, height; + int border_width; + int depth; + void* visual; //Visual* + XID root; + int c_class; + int bit_gravity; + int win_gravity; + int backing_store; + unsigned long backing_planes; + unsigned long backing_pixel; + int save_under; + XID colormap; + int map_installed; + int map_state; + long all_event_masks; + long your_event_mask; + long do_not_propagate_mask; + int override_redirect; + void* screen; //Screen* +} my_XWindowAttributes_t; + +typedef struct my_XVisualInfo_s { + void* visual; //Visual* + unsigned long visualid; + int screen; + int depth; + int c_class; + unsigned long red_mask; + unsigned long green_mask; + unsigned long blue_mask; + int colormap_size; + int bits_per_rgb; +} my_XVisualInfo_t; + #endif//MY_X11_DEFS \ No newline at end of file diff --git a/src/libtools/my_x11_defs_32.h b/src/libtools/my_x11_defs_32.h index c0fda3f6..f4d93084 100644 --- a/src/libtools/my_x11_defs_32.h +++ b/src/libtools/my_x11_defs_32.h @@ -755,4 +755,42 @@ typedef struct my_XRROutputInfo_32_s { ptr_t modes; //XID_32* } my_XRROutputInfo_32_t; +typedef struct my_XWindowAttributes_32_s { + int x, y; + int width, height; + int border_width; + int depth; + ptr_t visual; //Visual* + XID_32 root; + int c_class; + int bit_gravity; + int win_gravity; + int backing_store; + ulong_t backing_planes; + ulong_t backing_pixel; + int save_under; + XID_32 colormap; + int map_installed; + int map_state; + long_t all_event_masks; + long_t your_event_mask; + long_t do_not_propagate_mask; + int override_redirect; + ptr_t screen; //Screen* +} my_XWindowAttributes_32_t; + +typedef struct my_XVisualInfo_32_s { + ptr_t visual; //Visual* + ulong_t visualid; + int screen; + int depth; + int c_class; + ulong_t red_mask; + ulong_t green_mask; + ulong_t blue_mask; + int colormap_size; + int bits_per_rgb; +} my_XVisualInfo_32_t; + + #endif//MY_X11_DEFS_32 \ No newline at end of file diff --git a/src/wrapped32/generated/converter32.c b/src/wrapped32/generated/converter32.c index 08395ec3..f00294df 100644 --- a/src/wrapped32/generated/converter32.c +++ b/src/wrapped32/generated/converter32.c @@ -194,3 +194,18 @@ void to_struct_LWWWcc(ptr_t d, const struct_LWWWcc_t *src) { *(char*)dest = src->c4; dest += 1; *(char*)dest = src->c5; dest += 1; } +void from_struct_pLiL(struct_pLiL_t *dest, ptr_t s) { + uint8_t* src = (uint8_t*)from_ptrv(s); + dest->p0 = *(void**)src; src += 4; + dest->L1 = from_ulong(*(ulong_t*)src); src += 4; + dest->i2 = *(int*)src; src += 4; + dest->L3 = from_ulong(*(ulong_t*)src); src += 4; +} +void to_struct_pLiL(ptr_t d, const struct_pLiL_t *src) { + if (!src) return; + uint8_t* dest = (uint8_t*)from_ptrv(d); + *(ptr_t*)dest = to_ptrv(src->p0); dest += 4; + *(ulong_t*)dest = to_ulong(src->L1); dest += 4; + *(int*)dest = src->i2; dest += 4; + *(ulong_t*)dest = to_ulong(src->L3); dest += 4; +} diff --git a/src/wrapped32/generated/converter32.h b/src/wrapped32/generated/converter32.h index c643afc3..7260ab01 100644 --- a/src/wrapped32/generated/converter32.h +++ b/src/wrapped32/generated/converter32.h @@ -100,5 +100,13 @@ typedef struct struct_LWWWcc_s { } struct_LWWWcc_t; void from_struct_LWWWcc(struct_LWWWcc_t *dest, ptr_t src); void to_struct_LWWWcc(ptr_t dest, const struct_LWWWcc_t *src); +typedef struct struct_pLiL_s { + void* p0; + unsigned long L1; + int i2; + unsigned long L3; +} struct_pLiL_t; +void from_struct_pLiL(struct_pLiL_t *dest, ptr_t src); +void to_struct_pLiL(ptr_t dest, const struct_pLiL_t *src); #endif // __CONVERTER_H_ diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt index 2c2cee32..9f7e013c 100644 --- a/src/wrapped32/generated/functions_list.txt +++ b/src/wrapped32/generated/functions_list.txt @@ -142,6 +142,7 @@ #() iFhi -> iFhi #() iFhp -> iFhp #() iFhh -> iFhh +#() iFSp -> iFSp #() iFXi -> iFXi #() iFXL -> iFXL #() iFXp -> iFXp @@ -280,7 +281,6 @@ #() vFppi -> vFppi #() vFppu -> vFppu #() vFppp -> vFppp -#() vFXLp -> vFXLp #() vFXpi -> vFXpi #() iFEip -> iFEip #() iFEup -> iFEup @@ -367,6 +367,7 @@ #() pFEpp -> pFEpp #() pFEpV -> pFEpV #() pFEXL -> pFEXL +#() pFEXp -> pFEXp #() pFipi -> pFipi #() pFulu -> pFulu #() pFpii -> pFpii @@ -395,6 +396,7 @@ #() lFpBp_i -> lFpBi #() LFpBp_i -> LFpBi #() pFppbp_ -> pFppB +#() vFXLrpLiL_ -> vFXLB #() iFXLbLWWWcc_ -> iFXLB #() iFirLLLL_BLLLL_ -> iFiBB #() pFppriiiiiiiiilt_ -> pFppB @@ -485,7 +487,6 @@ #() vFppui -> vFppui #() vFpppp -> vFpppp #() vFXiiL -> vFXiiL -#() vFXLpL -> vFXLpL #() vFXpip -> vFXpip #() cFpiii -> cFpiii #() iFEiip -> iFEiip @@ -525,8 +526,10 @@ #() iFpppi -> iFpppi #() iFpppp -> iFpppp #() iFhpiL -> iFhpiL +#() iFXipi -> iFXipi #() iFXipp -> iFXipp #() iFXLii -> iFXLii +#() iFXpip -> iFXpip #() iFXppp -> iFXppp #() CFuuff -> CFuuff #() uFuuuu -> uFuuuu @@ -566,6 +569,7 @@ #() lFiibp_L -> lFiiBL #() LFpbp_Lp -> LFpBLp #() iFEpprLL_ -> iFEppB +#() vFXLrpLiL_L -> vFXLBL #() iFXLpBLWWWcc_ -> iFXLpB #() LFpLpriiiiiiiiilt_ -> LFpLpB #() vFEuipp -> vFEuipp @@ -688,6 +692,8 @@ #() lFpuipC -> lFpuipC #() LFpLppa -> LFpLppa #() LFXLuuu -> LFXLuuu +#() LFXLpuu -> LFXLpuu +#() pFEXipp -> pFEXipp #() pFuiupp -> pFuiupp #() pFpiiuu -> pFpiiuu #() pFpippp -> pFpippp @@ -903,6 +909,7 @@ #() vFuffffffff -> vFuffffffff #() vFffCCCCfff -> vFffCCCCfff #() vFddddddddd -> vFddddddddd +#() iFEXLLLiipi -> iFEXLLLiipi #() iFuiiuuiiip -> iFuiiuuiiip #() iFuiiupiiup -> iFuiiupiiup #() iFdddpppppp -> iFdddpppppp @@ -910,6 +917,7 @@ #() iFXLLiiuuii -> iFXLLiiuuii #() uFuulpiuiuf -> uFuulpiuiuf #() pFEXLiiuuLi -> pFEXLiiuuLi +#() vFEXLpppippp -> vFEXLpppippp #() vFiiiiiiiiii -> vFiiiiiiiiii #() vFiiiiiiiiui -> vFiiiiiiiiui #() vFiiiiiiiiuu -> vFiiiiiiiiuu @@ -1174,6 +1182,8 @@ wrappedlibgl: - glDebugMessageCallbackKHR - iFpp: - eglDebugMessageControlKHR +- pFXp: + - glXGetVisualFromFBConfig - vFipp: - glProgramCallbackMESA - vFppp: @@ -1182,6 +1192,8 @@ wrappedlibgl: - glXSwapIntervalEXT - vFuipp: - glShaderSource +- pFXipp: + - glXChooseFBConfig wrappedlibglu: - vFpup: - gluNurbsCallback @@ -1373,6 +1385,7 @@ wrappedlibx11: - XCloseDisplay - pFp: - XOpenDisplay + - XSetErrorHandler - iFXp: - XNextEvent - pFpV: @@ -1384,6 +1397,7 @@ wrappedlibx11: - iFXip: - XCheckTypedEvent - iFXLp: + - XGetWindowAttributes - XSetWMHints - LFXii: - XGetPixel @@ -1395,8 +1409,12 @@ wrappedlibx11: - Xutf8TextListToTextProperty - pFpiiuu: - XSubImage +- iFXLLLiipi: + - XChangeProperty - pFXLiiuuLi: - XGetImage +- vFXLpppippp: + - XSetWMProperties - iFXLppiiiiuu: - XPutImage - pFXpuiipuuii: diff --git a/src/wrapped32/generated/wrappedlibgltypes32.h b/src/wrapped32/generated/wrappedlibgltypes32.h index 4c614ddb..64d8a9ea 100644 --- a/src/wrapped32/generated/wrappedlibgltypes32.h +++ b/src/wrapped32/generated/wrappedlibgltypes32.h @@ -15,10 +15,12 @@ typedef int32_t (*iFi_t)(int32_t); typedef void* (*pFp_t)(void*); typedef void (*vFpp_t)(void*, void*); typedef int32_t (*iFpp_t)(void*, void*); +typedef void* (*pFXp_t)(void*, void*); typedef void (*vFipp_t)(int32_t, void*, void*); typedef void (*vFppp_t)(void*, void*, void*); typedef void (*vFXpi_t)(void*, void*, int32_t); typedef void (*vFuipp_t)(uint32_t, int32_t, void*, void*); +typedef void* (*pFXipp_t)(void*, int32_t, void*, void*); #define SUPER() ADDED_FUNCTIONS() \ GO(glXSwapIntervalMESA, iFi_t) \ @@ -30,9 +32,11 @@ typedef void (*vFuipp_t)(uint32_t, int32_t, void*, void*); GO(glDebugMessageCallbackARB, vFpp_t) \ GO(glDebugMessageCallbackKHR, vFpp_t) \ GO(eglDebugMessageControlKHR, iFpp_t) \ + GO(glXGetVisualFromFBConfig, pFXp_t) \ GO(glProgramCallbackMESA, vFipp_t) \ GO(eglSetBlobCacheFuncsANDROID, vFppp_t) \ GO(glXSwapIntervalEXT, vFXpi_t) \ - GO(glShaderSource, vFuipp_t) + GO(glShaderSource, vFuipp_t) \ + GO(glXChooseFBConfig, pFXipp_t) #endif // __wrappedlibglTYPES32_H_ diff --git a/src/wrapped32/generated/wrappedlibx11types32.h b/src/wrapped32/generated/wrappedlibx11types32.h index a292f24c..37fd4e52 100644 --- a/src/wrapped32/generated/wrappedlibx11types32.h +++ b/src/wrapped32/generated/wrappedlibx11types32.h @@ -25,7 +25,9 @@ typedef int32_t (*iFXLpi_t)(void*, uintptr_t, void*, int32_t); typedef int32_t (*iFXLilp_t)(void*, uintptr_t, int32_t, intptr_t, void*); typedef int32_t (*iFXpiup_t)(void*, void*, int32_t, uint32_t, void*); typedef void* (*pFpiiuu_t)(void*, int32_t, int32_t, uint32_t, uint32_t); +typedef int32_t (*iFXLLLiipi_t)(void*, uintptr_t, uintptr_t, uintptr_t, int32_t, int32_t, void*, int32_t); typedef void* (*pFXLiiuuLi_t)(void*, uintptr_t, int32_t, int32_t, uint32_t, uint32_t, uintptr_t, int32_t); +typedef void (*vFXLpppippp_t)(void*, uintptr_t, void*, void*, void*, int32_t, void*, void*, void*); typedef int32_t (*iFXLppiiiiuu_t)(void*, uintptr_t, void*, void*, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t); typedef void* (*pFXpuiipuuii_t)(void*, void*, uint32_t, int32_t, int32_t, void*, uint32_t, uint32_t, int32_t, int32_t); typedef void* (*pFXLiiuuLipii_t)(void*, uintptr_t, int32_t, int32_t, uint32_t, uint32_t, uintptr_t, int32_t, void*, int32_t, int32_t); @@ -37,18 +39,22 @@ typedef uintptr_t (*LFXLiiuuuiupLp_t)(void*, uintptr_t, int32_t, int32_t, uint32 GO(_XInitImageFuncPtrs, iFp_t) \ GO(XCloseDisplay, iFX_t) \ GO(XOpenDisplay, pFp_t) \ + GO(XSetErrorHandler, pFp_t) \ GO(XNextEvent, iFXp_t) \ GO(XCreateIC, pFpV_t) \ GO(XSetWMNormalHints, vFXLp_t) \ GO(XStringListToTextProperty, iFpip_t) \ GO(XCheckTypedEvent, iFXip_t) \ + GO(XGetWindowAttributes, iFXLp_t) \ GO(XSetWMHints, iFXLp_t) \ GO(XGetPixel, LFXii_t) \ GO(XSetWMProtocols, iFXLpi_t) \ GO(XSendEvent, iFXLilp_t) \ GO(Xutf8TextListToTextProperty, iFXpiup_t) \ GO(XSubImage, pFpiiuu_t) \ + GO(XChangeProperty, iFXLLLiipi_t) \ GO(XGetImage, pFXLiiuuLi_t) \ + GO(XSetWMProperties, vFXLpppippp_t) \ GO(XPutImage, iFXLppiiiiuu_t) \ GO(XCreateImage, pFXpuiipuuii_t) \ GO(XGetSubImage, pFXLiiuuLipii_t) \ diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c index 4343715d..8aa8885c 100644 --- a/src/wrapped32/generated/wrapper32.c +++ b/src/wrapped32/generated/wrapper32.c @@ -231,6 +231,7 @@ typedef int32_t (*iFpS_t)(void*, void*); typedef int32_t (*iFhi_t)(uintptr_t, int32_t); typedef int32_t (*iFhp_t)(uintptr_t, void*); typedef int32_t (*iFhh_t)(uintptr_t, uintptr_t); +typedef int32_t (*iFSp_t)(void*, void*); typedef int32_t (*iFXi_t)(void*, int32_t); typedef int32_t (*iFXL_t)(void*, uintptr_t); typedef int32_t (*iFXp_t)(void*, void*); @@ -369,7 +370,6 @@ typedef void (*vFplp_t)(void*, intptr_t, void*); typedef void (*vFppi_t)(void*, void*, int32_t); typedef void (*vFppu_t)(void*, void*, uint32_t); typedef void (*vFppp_t)(void*, void*, void*); -typedef void (*vFXLp_t)(void*, uintptr_t, void*); typedef void (*vFXpi_t)(void*, void*, int32_t); typedef int32_t (*iFEip_t)(x64emu_t*, int32_t, void*); typedef int32_t (*iFEup_t)(x64emu_t*, uint32_t, void*); @@ -456,6 +456,7 @@ typedef void* (*pFEpi_t)(x64emu_t*, void*, int32_t); typedef void* (*pFEpp_t)(x64emu_t*, void*, void*); typedef void* (*pFEpV_t)(x64emu_t*, void*, void*); typedef void* (*pFEXL_t)(x64emu_t*, void*, uintptr_t); +typedef void* (*pFEXp_t)(x64emu_t*, void*, void*); typedef void* (*pFipi_t)(int32_t, void*, int32_t); typedef void* (*pFulu_t)(uint32_t, intptr_t, uint32_t); typedef void* (*pFpii_t)(void*, int32_t, int32_t); @@ -484,6 +485,7 @@ typedef double (*dFpBp_a_t)(void*, struct_p_t*, void*); typedef intptr_t (*lFpBp_i_t)(void*, struct_p_t*, int32_t); typedef uintptr_t (*LFpBp_i_t)(void*, struct_p_t*, int32_t); typedef void* (*pFppbp__t)(void*, void*, struct_p_t*); +typedef void (*vFXLrpLiL__t)(void*, uintptr_t, struct_pLiL_t*); typedef int32_t (*iFXLbLWWWcc__t)(void*, uintptr_t, struct_LWWWcc_t*); typedef int32_t (*iFirLLLL_BLLLL__t)(int32_t, struct_LLLL_t*, struct_LLLL_t*); typedef void* (*pFppriiiiiiiiilt__t)(void*, void*, struct_iiiiiiiiilt_t*); @@ -574,7 +576,6 @@ typedef void (*vFppip_t)(void*, void*, int32_t, void*); typedef void (*vFppui_t)(void*, void*, uint32_t, int32_t); typedef void (*vFpppp_t)(void*, void*, void*, void*); typedef void (*vFXiiL_t)(void*, int32_t, int32_t, uintptr_t); -typedef void (*vFXLpL_t)(void*, uintptr_t, void*, 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*); @@ -614,8 +615,10 @@ typedef int32_t (*iFppLi_t)(void*, void*, uintptr_t, int32_t); typedef int32_t (*iFpppi_t)(void*, void*, void*, int32_t); typedef int32_t (*iFpppp_t)(void*, void*, void*, void*); typedef int32_t (*iFhpiL_t)(uintptr_t, void*, int32_t, uintptr_t); +typedef int32_t (*iFXipi_t)(void*, int32_t, void*, int32_t); typedef int32_t (*iFXipp_t)(void*, int32_t, void*, void*); typedef int32_t (*iFXLii_t)(void*, uintptr_t, int32_t, int32_t); +typedef int32_t (*iFXpip_t)(void*, void*, int32_t, void*); typedef int32_t (*iFXppp_t)(void*, void*, void*, void*); typedef uint8_t (*CFuuff_t)(uint32_t, uint32_t, float, float); typedef uint32_t (*uFuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t); @@ -655,6 +658,7 @@ typedef uint64_t (*UFpBp_ii_t)(void*, struct_p_t*, int32_t, int32_t); typedef intptr_t (*lFiibp_L_t)(int32_t, int32_t, struct_p_t*, uintptr_t); typedef uintptr_t (*LFpbp_Lp_t)(void*, struct_p_t*, uintptr_t, void*); typedef int32_t (*iFEpprLL__t)(x64emu_t*, void*, void*, struct_LL_t*); +typedef void (*vFXLrpLiL_L_t)(void*, uintptr_t, struct_pLiL_t*, uintptr_t); typedef int32_t (*iFXLpBLWWWcc__t)(void*, uintptr_t, void*, struct_LWWWcc_t*); typedef uintptr_t (*LFpLpriiiiiiiiilt__t)(void*, uintptr_t, void*, struct_iiiiiiiiilt_t*); typedef void (*vFEuipp_t)(x64emu_t*, uint32_t, int32_t, void*, void*); @@ -777,6 +781,8 @@ typedef uint64_t (*UFuiCiu_t)(uint32_t, int32_t, uint8_t, int32_t, uint32_t); typedef intptr_t (*lFpuipC_t)(void*, uint32_t, int32_t, void*, uint8_t); typedef uintptr_t (*LFpLppa_t)(void*, uintptr_t, void*, void*, void*); typedef uintptr_t (*LFXLuuu_t)(void*, uintptr_t, uint32_t, uint32_t, uint32_t); +typedef uintptr_t (*LFXLpuu_t)(void*, uintptr_t, void*, uint32_t, uint32_t); +typedef void* (*pFEXipp_t)(x64emu_t*, void*, int32_t, void*, void*); typedef void* (*pFuiupp_t)(uint32_t, int32_t, uint32_t, void*, void*); typedef void* (*pFpiiuu_t)(void*, int32_t, int32_t, uint32_t, uint32_t); typedef void* (*pFpippp_t)(void*, int32_t, void*, void*, void*); @@ -992,6 +998,7 @@ typedef void (*vFuupuuiuuf_t)(uint32_t, uint32_t, void*, uint32_t, uint32_t, int typedef void (*vFuffffffff_t)(uint32_t, float, float, float, float, float, float, float, float); typedef void (*vFffCCCCfff_t)(float, float, uint8_t, uint8_t, uint8_t, uint8_t, float, float, float); typedef void (*vFddddddddd_t)(double, double, double, double, double, double, double, double, double); +typedef int32_t (*iFEXLLLiipi_t)(x64emu_t*, void*, uintptr_t, uintptr_t, uintptr_t, int32_t, int32_t, void*, int32_t); typedef int32_t (*iFuiiuuiiip_t)(uint32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, void*); typedef int32_t (*iFuiiupiiup_t)(uint32_t, int32_t, int32_t, uint32_t, void*, int32_t, int32_t, uint32_t, void*); typedef int32_t (*iFdddpppppp_t)(double, double, double, void*, void*, void*, void*, void*, void*); @@ -999,6 +1006,7 @@ typedef int32_t (*iFXLiuiiLLL_t)(void*, uintptr_t, int32_t, uint32_t, int32_t, i typedef int32_t (*iFXLLiiuuii_t)(void*, uintptr_t, uintptr_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t); typedef uint32_t (*uFuulpiuiuf_t)(uint32_t, uint32_t, intptr_t, void*, int32_t, uint32_t, int32_t, uint32_t, float); typedef void* (*pFEXLiiuuLi_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, uint32_t, uint32_t, uintptr_t, int32_t); +typedef void (*vFEXLpppippp_t)(x64emu_t*, void*, uintptr_t, void*, void*, void*, int32_t, void*, void*, void*); typedef void (*vFiiiiiiiiii_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); typedef void (*vFiiiiiiiiui_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, int32_t); typedef void (*vFiiiiiiiiuu_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t); @@ -1223,6 +1231,7 @@ void iFpS_32(x64emu_t *emu, uintptr_t fcn) { iFpS_t fn = (iFpS_t)fcn; R_EAX = fn void iFhi_32(x64emu_t *emu, uintptr_t fcn) { iFhi_t fn = (iFhi_t)fcn; R_EAX = fn(from_hash(from_ptri(ptr_t, R_ESP + 4)), from_ptri(int32_t, R_ESP + 8)); } void iFhp_32(x64emu_t *emu, uintptr_t fcn) { iFhp_t fn = (iFhp_t)fcn; R_EAX = fn(from_hash(from_ptri(ptr_t, R_ESP + 4)), from_ptriv(R_ESP + 8)); } void iFhh_32(x64emu_t *emu, uintptr_t fcn) { iFhh_t fn = (iFhh_t)fcn; R_EAX = fn(from_hash(from_ptri(ptr_t, R_ESP + 4)), from_hash(from_ptri(ptr_t, R_ESP + 8))); } +void iFSp_32(x64emu_t *emu, uintptr_t fcn) { iFSp_t fn = (iFSp_t)fcn; R_EAX = fn(io_convert32(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8)); } void iFXi_32(x64emu_t *emu, uintptr_t fcn) { iFXi_t fn = (iFXi_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8)); } void iFXL_32(x64emu_t *emu, uintptr_t fcn) { iFXL_t fn = (iFXL_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8))); } void iFXp_32(x64emu_t *emu, uintptr_t fcn) { iFXp_t fn = (iFXp_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8)); } @@ -1361,7 +1370,6 @@ void vFplp_32(x64emu_t *emu, uintptr_t fcn) { vFplp_t fn = (vFplp_t)fcn; fn(from void vFppi_32(x64emu_t *emu, uintptr_t fcn) { vFppi_t fn = (vFppi_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); } void vFppu_32(x64emu_t *emu, uintptr_t fcn) { vFppu_t fn = (vFppu_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); } void vFppp_32(x64emu_t *emu, uintptr_t fcn) { vFppp_t fn = (vFppp_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); } -void vFXLp_32(x64emu_t *emu, uintptr_t fcn) { vFXLp_t fn = (vFXLp_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12)); } void vFXpi_32(x64emu_t *emu, uintptr_t fcn) { vFXpi_t fn = (vFXpi_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); } void iFEip_32(x64emu_t *emu, uintptr_t fcn) { iFEip_t fn = (iFEip_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8)); } void iFEup_32(x64emu_t *emu, uintptr_t fcn) { iFEup_t fn = (iFEup_t)fcn; R_EAX = fn(emu, from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8)); } @@ -1448,6 +1456,7 @@ void pFEpi_32(x64emu_t *emu, uintptr_t fcn) { pFEpi_t fn = (pFEpi_t)fcn; R_EAX = void pFEpp_32(x64emu_t *emu, uintptr_t fcn) { pFEpp_t fn = (pFEpp_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8))); } void pFEpV_32(x64emu_t *emu, uintptr_t fcn) { pFEpV_t fn = (pFEpV_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptrv(R_ESP + 8))); } void pFEXL_32(x64emu_t *emu, uintptr_t fcn) { pFEXL_t fn = (pFEXL_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)))); } +void pFEXp_32(x64emu_t *emu, uintptr_t fcn) { pFEXp_t fn = (pFEXp_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8))); } void pFipi_32(x64emu_t *emu, uintptr_t fcn) { pFipi_t fn = (pFipi_t)fcn; R_EAX = to_ptrv(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); } void pFulu_32(x64emu_t *emu, uintptr_t fcn) { pFulu_t fn = (pFulu_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4), to_long(from_ptri(long_t, R_ESP + 8)), from_ptri(uint32_t, R_ESP + 12))); } void pFpii_32(x64emu_t *emu, uintptr_t fcn) { pFpii_t fn = (pFpii_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); } @@ -1476,6 +1485,7 @@ void dFpBp_a_32(x64emu_t *emu, uintptr_t fcn) { dFpBp_a_t fn = (dFpBp_a_t)fcn; s void lFpBp_i_32(x64emu_t *emu, uintptr_t fcn) { lFpBp_i_t fn = (lFpBp_i_t)fcn; struct_p_t arg_8={0}; R_EAX = to_long(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); } void LFpBp_i_32(x64emu_t *emu, uintptr_t fcn) { LFpBp_i_t fn = (LFpBp_i_t)fcn; struct_p_t arg_8={0}; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); } void pFppbp__32(x64emu_t *emu, uintptr_t fcn) { pFppbp__t fn = (pFppbp__t)fcn; struct_p_t arg_12={0}; from_struct_p(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } +void vFXLrpLiL__32(x64emu_t *emu, uintptr_t fcn) { vFXLrpLiL__t fn = (vFXLrpLiL__t)fcn; struct_pLiL_t arg_12={0}; from_struct_pLiL(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL); } void iFXLbLWWWcc__32(x64emu_t *emu, uintptr_t fcn) { iFXLbLWWWcc__t fn = (iFXLbLWWWcc__t)fcn; struct_LWWWcc_t arg_12={0}; from_struct_LWWWcc(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_LWWWcc(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void iFirLLLL_BLLLL__32(x64emu_t *emu, uintptr_t fcn) { iFirLLLL_BLLLL__t fn = (iFirLLLL_BLLLL__t)fcn; struct_LLLL_t arg_8={0}; from_struct_LLLL(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); struct_LLLL_t arg_12={0}; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_LLLL(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void pFppriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fcn) { pFppriiiiiiiiilt__t fn = (pFppriiiiiiiiilt__t)fcn; struct_iiiiiiiiilt_t arg_12={0}; from_struct_iiiiiiiiilt(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL)); } @@ -1566,7 +1576,6 @@ void vFppip_32(x64emu_t *emu, uintptr_t fcn) { vFppip_t fn = (vFppip_t)fcn; fn(f void vFppui_32(x64emu_t *emu, uintptr_t fcn) { vFppui_t fn = (vFppui_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } 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 vFXLpL_32(x64emu_t *emu, uintptr_t fcn) { vFXLpL_t fn = (vFXLpL_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(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)); } @@ -1606,8 +1615,10 @@ void iFppLi_32(x64emu_t *emu, uintptr_t fcn) { iFppLi_t fn = (iFppLi_t)fcn; R_EA void iFpppi_32(x64emu_t *emu, uintptr_t fcn) { iFpppi_t fn = (iFpppi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } void iFpppp_32(x64emu_t *emu, uintptr_t fcn) { iFpppp_t fn = (iFpppp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } void iFhpiL_32(x64emu_t *emu, uintptr_t fcn) { iFhpiL_t fn = (iFhpiL_t)fcn; R_EAX = fn(from_hash(from_ptri(ptr_t, R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), to_ulong(from_ptri(ulong_t, R_ESP + 16))); } +void iFXipi_32(x64emu_t *emu, uintptr_t fcn) { iFXipi_t fn = (iFXipi_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } void iFXipp_32(x64emu_t *emu, uintptr_t fcn) { iFXipp_t fn = (iFXipp_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } void iFXLii_32(x64emu_t *emu, uintptr_t fcn) { iFXLii_t fn = (iFXLii_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } +void iFXpip_32(x64emu_t *emu, uintptr_t fcn) { iFXpip_t fn = (iFXpip_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); } void iFXppp_32(x64emu_t *emu, uintptr_t fcn) { iFXppp_t fn = (iFXppp_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } void CFuuff_32(x64emu_t *emu, uintptr_t fcn) { CFuuff_t fn = (CFuuff_t)fcn; R_EAX = (unsigned char)fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16)); } void uFuuuu_32(x64emu_t *emu, uintptr_t fcn) { uFuuuu_t fn = (uFuuuu_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); } @@ -1647,6 +1658,7 @@ void UFpBp_ii_32(x64emu_t *emu, uintptr_t fcn) { UFpBp_ii_t fn = (UFpBp_ii_t)fcn void lFiibp_L_32(x64emu_t *emu, uintptr_t fcn) { lFiibp_L_t fn = (lFiibp_L_t)fcn; struct_p_t arg_12={0}; from_struct_p(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, to_ulong(from_ptri(ulong_t, R_ESP + 16)))); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void LFpbp_Lp_32(x64emu_t *emu, uintptr_t fcn) { LFpbp_Lp_t fn = (LFpbp_Lp_t)fcn; struct_p_t arg_8={0}; from_struct_p(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, to_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); } void iFEpprLL__32(x64emu_t *emu, uintptr_t fcn) { iFEpprLL__t fn = (iFEpprLL__t)fcn; struct_LL_t arg_12={0}; from_struct_LL(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL); } +void vFXLrpLiL_L_32(x64emu_t *emu, uintptr_t fcn) { vFXLrpLiL_L_t fn = (vFXLrpLiL_L_t)fcn; struct_pLiL_t arg_12={0}; from_struct_pLiL(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, to_ulong(from_ptri(ulong_t, R_ESP + 16))); } void iFXLpBLWWWcc__32(x64emu_t *emu, uintptr_t fcn) { iFXLpBLWWWcc__t fn = (iFXLpBLWWWcc__t)fcn; struct_LWWWcc_t arg_16={0}; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_LWWWcc(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } void LFpLpriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fcn) { LFpLpriiiiiiiiilt__t fn = (LFpLpriiiiiiiiilt__t)fcn; struct_iiiiiiiiilt_t arg_16={0}; from_struct_iiiiiiiiilt(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL)); } void vFEuipp_32(x64emu_t *emu, uintptr_t fcn) { vFEuipp_t fn = (vFEuipp_t)fcn; fn(emu, from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } @@ -1769,6 +1781,8 @@ void UFuiCiu_32(x64emu_t *emu, uintptr_t fcn) { UFuiCiu_t fn = (UFuiCiu_t)fcn; u void lFpuipC_32(x64emu_t *emu, uintptr_t fcn) { lFpuipC_t fn = (lFpuipC_t)fcn; R_EAX = to_long(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(uint8_t, R_ESP + 20))); } void LFpLppa_32(x64emu_t *emu, uintptr_t fcn) { LFpLppa_t fn = (LFpLppa_t)fcn; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_locale(from_ptri(ptr_t, R_ESP + 20)))); } void LFXLuuu_32(x64emu_t *emu, uintptr_t fcn) { LFXLuuu_t fn = (LFXLuuu_t)fcn; R_EAX = to_ulong(fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20))); } +void LFXLpuu_32(x64emu_t *emu, uintptr_t fcn) { LFXLpuu_t fn = (LFXLpuu_t)fcn; R_EAX = to_ulong(fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20))); } +void pFEXipp_32(x64emu_t *emu, uintptr_t fcn) { pFEXipp_t fn = (pFEXipp_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16))); } void pFuiupp_32(x64emu_t *emu, uintptr_t fcn) { pFuiupp_t fn = (pFuiupp_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20))); } void pFpiiuu_32(x64emu_t *emu, uintptr_t fcn) { pFpiiuu_t fn = (pFpiiuu_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(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))); } void pFpippp_32(x64emu_t *emu, uintptr_t fcn) { pFpippp_t fn = (pFpippp_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20))); } @@ -1984,6 +1998,7 @@ void vFuupuuiuuf_32(x64emu_t *emu, uintptr_t fcn) { vFuupuuiuuf_t fn = (vFuupuui void vFuffffffff_32(x64emu_t *emu, uintptr_t fcn) { vFuffffffff_t fn = (vFuffffffff_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16), from_ptri(float, R_ESP + 20), from_ptri(float, R_ESP + 24), from_ptri(float, R_ESP + 28), from_ptri(float, R_ESP + 32), from_ptri(float, R_ESP + 36)); } void vFffCCCCfff_32(x64emu_t *emu, uintptr_t fcn) { vFffCCCCfff_t fn = (vFffCCCCfff_t)fcn; fn(from_ptri(float, R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(uint8_t, R_ESP + 12), from_ptri(uint8_t, R_ESP + 16), from_ptri(uint8_t, R_ESP + 20), from_ptri(uint8_t, R_ESP + 24), from_ptri(float, R_ESP + 28), from_ptri(float, R_ESP + 32), from_ptri(float, R_ESP + 36)); } void vFddddddddd_32(x64emu_t *emu, uintptr_t fcn) { vFddddddddd_t fn = (vFddddddddd_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), from_ptri(double, R_ESP + 36), from_ptri(double, R_ESP + 44), from_ptri(double, R_ESP + 52), from_ptri(double, R_ESP + 60), from_ptri(double, R_ESP + 68)); } +void iFEXLLLiipi_32(x64emu_t *emu, uintptr_t fcn) { iFEXLLLiipi_t fn = (iFEXLLLiipi_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_ulong(from_ptri(ulong_t, R_ESP + 12)), to_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptriv(R_ESP + 28), from_ptri(int32_t, R_ESP + 32)); } void iFuiiuuiiip_32(x64emu_t *emu, uintptr_t fcn) { iFuiiuuiiip_t fn = (iFuiiuuiiip_t)fcn; R_EAX = 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_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptriv(R_ESP + 36)); } void iFuiiupiiup_32(x64emu_t *emu, uintptr_t fcn) { iFuiiupiiup_t fn = (iFuiiupiiup_t)fcn; R_EAX = 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_ptriv(R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32), from_ptriv(R_ESP + 36)); } void iFdddpppppp_32(x64emu_t *emu, uintptr_t fcn) { iFdddpppppp_t fn = (iFdddpppppp_t)fcn; R_EAX = fn(from_ptri(double, R_ESP + 4), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20), from_ptriv(R_ESP + 28), from_ptriv(R_ESP + 32), from_ptriv(R_ESP + 36), from_ptriv(R_ESP + 40), from_ptriv(R_ESP + 44), from_ptriv(R_ESP + 48)); } @@ -1991,6 +2006,7 @@ void iFXLiuiiLLL_32(x64emu_t *emu, uintptr_t fcn) { iFXLiuiiLLL_t fn = (iFXLiuii void iFXLLiiuuii_32(x64emu_t *emu, uintptr_t fcn) { iFXLLiiuuii_t fn = (iFXLLiiuuii_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int32_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), from_ptri(int32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36)); } void uFuulpiuiuf_32(x64emu_t *emu, uintptr_t fcn) { uFuulpiuiuf_t fn = (uFuulpiuiuf_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), to_long(from_ptri(long_t, R_ESP + 12)), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32), from_ptri(float, R_ESP + 36)); } void pFEXLiiuuLi_32(x64emu_t *emu, uintptr_t fcn) { pFEXLiiuuLi_t fn = (pFEXLiiuuLi_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), to_ulong(from_ptri(ulong_t, R_ESP + 28)), from_ptri(int32_t, R_ESP + 32))); } +void vFEXLpppippp_32(x64emu_t *emu, uintptr_t fcn) { vFEXLpppippp_t fn = (vFEXLpppippp_t)fcn; fn(emu, getDisplay(from_ptriv(R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptriv(R_ESP + 28), from_ptriv(R_ESP + 32), from_ptriv(R_ESP + 36)); } void vFiiiiiiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFiiiiiiiiii_t fn = (vFiiiiiiiiii_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), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40)); } void vFiiiiiiiiui_32(x64emu_t *emu, uintptr_t fcn) { vFiiiiiiiiui_t fn = (vFiiiiiiiiui_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), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(uint32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40)); } void vFiiiiiiiiuu_32(x64emu_t *emu, uintptr_t fcn) { vFiiiiiiiiuu_t fn = (vFiiiiiiiiuu_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), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(uint32_t, R_ESP + 36), from_ptri(uint32_t, R_ESP + 40)); } diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h index a4bfbba9..909963a8 100644 --- a/src/wrapped32/generated/wrapper32.h +++ b/src/wrapped32/generated/wrapper32.h @@ -183,6 +183,7 @@ void iFpS_32(x64emu_t *emu, uintptr_t fnc); void iFhi_32(x64emu_t *emu, uintptr_t fnc); void iFhp_32(x64emu_t *emu, uintptr_t fnc); void iFhh_32(x64emu_t *emu, uintptr_t fnc); +void iFSp_32(x64emu_t *emu, uintptr_t fnc); void iFXi_32(x64emu_t *emu, uintptr_t fnc); void iFXL_32(x64emu_t *emu, uintptr_t fnc); void iFXp_32(x64emu_t *emu, uintptr_t fnc); @@ -321,7 +322,6 @@ void vFplp_32(x64emu_t *emu, uintptr_t fnc); void vFppi_32(x64emu_t *emu, uintptr_t fnc); void vFppu_32(x64emu_t *emu, uintptr_t fnc); void vFppp_32(x64emu_t *emu, uintptr_t fnc); -void vFXLp_32(x64emu_t *emu, uintptr_t fnc); void vFXpi_32(x64emu_t *emu, uintptr_t fnc); void iFEip_32(x64emu_t *emu, uintptr_t fnc); void iFEup_32(x64emu_t *emu, uintptr_t fnc); @@ -408,6 +408,7 @@ void pFEpi_32(x64emu_t *emu, uintptr_t fnc); void pFEpp_32(x64emu_t *emu, uintptr_t fnc); void pFEpV_32(x64emu_t *emu, uintptr_t fnc); void pFEXL_32(x64emu_t *emu, uintptr_t fnc); +void pFEXp_32(x64emu_t *emu, uintptr_t fnc); void pFipi_32(x64emu_t *emu, uintptr_t fnc); void pFulu_32(x64emu_t *emu, uintptr_t fnc); void pFpii_32(x64emu_t *emu, uintptr_t fnc); @@ -436,6 +437,7 @@ void dFpBp_a_32(x64emu_t *emu, uintptr_t fnc); void lFpBp_i_32(x64emu_t *emu, uintptr_t fnc); void LFpBp_i_32(x64emu_t *emu, uintptr_t fnc); void pFppbp__32(x64emu_t *emu, uintptr_t fnc); +void vFXLrpLiL__32(x64emu_t *emu, uintptr_t fnc); void iFXLbLWWWcc__32(x64emu_t *emu, uintptr_t fnc); void iFirLLLL_BLLLL__32(x64emu_t *emu, uintptr_t fnc); void pFppriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fnc); @@ -526,7 +528,6 @@ void vFppip_32(x64emu_t *emu, uintptr_t fnc); void vFppui_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 vFXLpL_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); @@ -566,8 +567,10 @@ void iFppLi_32(x64emu_t *emu, uintptr_t fnc); void iFpppi_32(x64emu_t *emu, uintptr_t fnc); void iFpppp_32(x64emu_t *emu, uintptr_t fnc); void iFhpiL_32(x64emu_t *emu, uintptr_t fnc); +void iFXipi_32(x64emu_t *emu, uintptr_t fnc); void iFXipp_32(x64emu_t *emu, uintptr_t fnc); void iFXLii_32(x64emu_t *emu, uintptr_t fnc); +void iFXpip_32(x64emu_t *emu, uintptr_t fnc); void iFXppp_32(x64emu_t *emu, uintptr_t fnc); void CFuuff_32(x64emu_t *emu, uintptr_t fnc); void uFuuuu_32(x64emu_t *emu, uintptr_t fnc); @@ -607,6 +610,7 @@ void UFpBp_ii_32(x64emu_t *emu, uintptr_t fnc); void lFiibp_L_32(x64emu_t *emu, uintptr_t fnc); void LFpbp_Lp_32(x64emu_t *emu, uintptr_t fnc); void iFEpprLL__32(x64emu_t *emu, uintptr_t fnc); +void vFXLrpLiL_L_32(x64emu_t *emu, uintptr_t fnc); void iFXLpBLWWWcc__32(x64emu_t *emu, uintptr_t fnc); void LFpLpriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fnc); void vFEuipp_32(x64emu_t *emu, uintptr_t fnc); @@ -729,6 +733,8 @@ void UFuiCiu_32(x64emu_t *emu, uintptr_t fnc); void lFpuipC_32(x64emu_t *emu, uintptr_t fnc); void LFpLppa_32(x64emu_t *emu, uintptr_t fnc); void LFXLuuu_32(x64emu_t *emu, uintptr_t fnc); +void LFXLpuu_32(x64emu_t *emu, uintptr_t fnc); +void pFEXipp_32(x64emu_t *emu, uintptr_t fnc); void pFuiupp_32(x64emu_t *emu, uintptr_t fnc); void pFpiiuu_32(x64emu_t *emu, uintptr_t fnc); void pFpippp_32(x64emu_t *emu, uintptr_t fnc); @@ -944,6 +950,7 @@ void vFuupuuiuuf_32(x64emu_t *emu, uintptr_t fnc); void vFuffffffff_32(x64emu_t *emu, uintptr_t fnc); void vFffCCCCfff_32(x64emu_t *emu, uintptr_t fnc); void vFddddddddd_32(x64emu_t *emu, uintptr_t fnc); +void iFEXLLLiipi_32(x64emu_t *emu, uintptr_t fnc); void iFuiiuuiiip_32(x64emu_t *emu, uintptr_t fnc); void iFuiiupiiup_32(x64emu_t *emu, uintptr_t fnc); void iFdddpppppp_32(x64emu_t *emu, uintptr_t fnc); @@ -951,6 +958,7 @@ void iFXLiuiiLLL_32(x64emu_t *emu, uintptr_t fnc); void iFXLLiiuuii_32(x64emu_t *emu, uintptr_t fnc); void uFuulpiuiuf_32(x64emu_t *emu, uintptr_t fnc); void pFEXLiiuuLi_32(x64emu_t *emu, uintptr_t fnc); +void vFEXLpppippp_32(x64emu_t *emu, uintptr_t fnc); void vFiiiiiiiiii_32(x64emu_t *emu, uintptr_t fnc); void vFiiiiiiiiui_32(x64emu_t *emu, uintptr_t fnc); void vFiiiiiiiiuu_32(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped32/wrappedlibc_private.h b/src/wrapped32/wrappedlibc_private.h index 7935b250..57d51eeb 100755 --- a/src/wrapped32/wrappedlibc_private.h +++ b/src/wrapped32/wrappedlibc_private.h @@ -331,8 +331,8 @@ GOW(fgetc, iFS) GOW(fgetc_unlocked, iFS) // fgetgrent // fgetgrent_r // Weak -//GO(fgetpos, iFpp) -//GO(fgetpos64, iFpp) +//GO(fgetpos, iFSBLii_) +GO(fgetpos64, iFSp) // fgetpwent // fgetpwent_r // Weak GOW(fgets, pFpiS) diff --git a/src/wrapped32/wrappedlibgl.c b/src/wrapped32/wrappedlibgl.c index d0599197..fe714635 100644 --- a/src/wrapped32/wrappedlibgl.c +++ b/src/wrapped32/wrappedlibgl.c @@ -16,6 +16,8 @@ #include "librarian.h" #include "callback.h" #include "gltools.h" +#include "libtools/my_x11_defs.h" +#include "libtools/my_x11_defs_32.h" extern const char* libglName; #define LIBNAME libgl @@ -24,6 +26,24 @@ extern const char* libglName; #include "wrappercallback32.h" +void* getDisplay(void* d); // define in 32bits wrappedx11.c + +void convert_XVisualInfo_to_32(void* d, void* s) +{ + my_XVisualInfo_t* src = s; + my_XVisualInfo_32_t* dst = d; + dst->visual = to_ptrv(src->visual); + dst->visualid = to_ulong(src->visualid); + dst->screen = src->screen; + dst->depth = src->depth; + dst->c_class = src->c_class; + dst->red_mask = to_ulong(src->red_mask); + dst->green_mask = to_ulong(src->green_mask); + dst->blue_mask = to_ulong(src->blue_mask); + dst->colormap_size = src->colormap_size; + dst->bits_per_rgb = src->bits_per_rgb; +} + // FIXME: old wrapped* type of file, cannot use generated/wrappedlibgltypes.h void* getGLProcAddress32(x64emu_t* emu, glprocaddress_t procaddr, const char* rname); EXPORT void* my32_glXGetProcAddress(x64emu_t* emu, void* name) @@ -36,10 +56,12 @@ EXPORT void* my32_glXGetProcAddressARB(x64emu_t* emu, void* name) __attribute__( typedef int (*iFi_t)(int); typedef void (*vFpp_t)(void*, void*); +typedef void*(*pFpp_t)(void*, void*); typedef void (*vFppp_t)(void*, void*, void*); typedef void (*vFppi_t)(void*, void*, int); typedef void*(*pFp_t)(void*); typedef void (*vFuipp_t)(uint32_t, int, void*, void*); +typedef void*(*pFpipp_t)(void*, int, void*, void*); typedef void (*debugProc_t)(int32_t, int32_t, uint32_t, int32_t, int32_t, void*, void*); typedef struct gl_wrappers_s { @@ -437,6 +459,63 @@ static void* find_glShaderSource_Fct(void* fct) printf_log(LOG_NONE, "Warning, no more slot for libGL glShaderSource callback\n"); return NULL; } +// glXChooseFBConfig ... +#define GO(A) \ +static pFpipp_t my32_glXChooseFBConfig_fct_##A = NULL; \ +static void* my32_glXChooseFBConfig_##A(x64emu_t* emu, void* dpy, int screen, int* list, int* nelement) \ +{ \ + if(!my32_glXChooseFBConfig_fct_##A) \ + return NULL; \ + static ptr_t fbconfig[1024]; \ + void** res = my32_glXChooseFBConfig_fct_##A (dpy, screen, list, nelement); \ + if(!res) \ + return NULL; \ + for(int i=0; i<*nelement; ++i) \ + fbconfig[i] = to_ptrv(res[i]); \ + return &fbconfig; \ +} +SUPER() +#undef GO +static void* find_glXChooseFBConfig_Fct(void* fct) +{ + if(!fct) return fct; + #define GO(A) if(my32_glXChooseFBConfig_fct_##A == (pFpipp_t)fct) return my32_glXChooseFBConfig_##A; + SUPER() + #undef GO + #define GO(A) if(my32_glXChooseFBConfig_fct_##A == 0) {my32_glXChooseFBConfig_fct_##A = (pFpipp_t)fct; return my32_glXChooseFBConfig_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for libGL glXChooseFBConfig callback\n"); + return NULL; +} +// glXGetVisualFromFBConfig ... +#define GO(A) \ +static pFpp_t my32_glXGetVisualFromFBConfig_fct_##A = NULL; \ +static void* my32_glXGetVisualFromFBConfig_##A(x64emu_t* emu, void* dpy, void* config) \ +{ \ + if(!my32_glXGetVisualFromFBConfig_fct_##A) \ + return NULL; \ + static my_XVisualInfo_32_t vinfo = {0}; \ + void* res = my32_glXGetVisualFromFBConfig_fct_##A (dpy, config); \ + if(!res) \ + return NULL; \ + convert_XVisualInfo_to_32(&vinfo, res); \ + return &vinfo; \ +} +SUPER() +#undef GO +static void* find_glXGetVisualFromFBConfig_Fct(void* fct) +{ + if(!fct) return fct; + #define GO(A) if(my32_glXGetVisualFromFBConfig_fct_##A == (pFpp_t)fct) return my32_glXGetVisualFromFBConfig_##A; + SUPER() + #undef GO + #define GO(A) if(my32_glXGetVisualFromFBConfig_fct_##A == 0) {my32_glXGetVisualFromFBConfig_fct_##A = (pFpp_t)fct; return my32_glXGetVisualFromFBConfig_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for libGL glXGetVisualFromFBConfig callback\n"); + return NULL; +} #undef SUPER #define PRE_INIT if(box64_libGL) {lib->w.lib = dlopen(box64_libGL, RTLD_LAZY | RTLD_GLOBAL); lib->path = strdup(box64_libGL);} else @@ -473,6 +552,26 @@ EXPORT void my32_glShaderSource(x64emu_t* emu, uint32_t shader, int count, ptr_ my->glShaderSource(shader, count, string?str:NULL, length); } +EXPORT void* my32_glXChooseFBConfig(x64emu_t* emu, void* dpy, int screen, int* list, int* nelement) +{ + static ptr_t fbconfig[1024]; + void** res = my->glXChooseFBConfig(dpy, screen, list, nelement); + if(!res) + return NULL; + for(int i=0; i<*nelement; ++i) + fbconfig[i] = to_ptrv(res[i]); + return &fbconfig; +} + +EXPORT void* my32_glXGetVisualFromFBConfig(x64emu_t* emu, void* dpy, void* config) +{ + static my_XVisualInfo_32_t vinfo = {0}; + void* res = my->glXGetVisualFromFBConfig(dpy, config); + if(!res) return NULL; + convert_XVisualInfo_to_32(&vinfo, res); + return &vinfo; +} + #include "wrappedlib_init32.h" #define SUPER() \ @@ -487,6 +586,8 @@ EXPORT void my32_glShaderSource(x64emu_t* emu, uint32_t shader, int count, ptr_ GO(pFp_t, glGetVkProcAddrNV) \ GO(vFppp_t, eglSetBlobCacheFuncsANDROID) \ GO(vFuipp_t, glShaderSource) \ + GO(pFpipp_t, glXChooseFBConfig) \ + GO(pFpp_t, glXGetVisualFromFBConfig) \ gl_wrappers_t* getGLProcWrapper32(box64context_t* context, glprocaddress_t procaddress) diff --git a/src/wrapped32/wrappedlibgl_private.h b/src/wrapped32/wrappedlibgl_private.h index 95f9f30e..6306f1c9 100644 --- a/src/wrapped32/wrappedlibgl_private.h +++ b/src/wrapped32/wrappedlibgl_private.h @@ -2937,7 +2937,7 @@ GO(glXBindSwapBarrierSGIX,vFii) //GO(glXChangeDrawableAttributesSGIX, vFp) GO(glXClientInfo, vFv) //GO(glXCopyContext, vFppp) -//GO(glXChooseFBConfig, pFpipp) +GOM(glXChooseFBConfig, pFEXipp) //GO(glXChooseFBConfigSGIX, pFpipp) GO(glXCreateContext,pFXppi) //GO(glXCreateContextAttribsARB, pFpppip) @@ -2974,7 +2974,7 @@ GO(glXGetClientString, pFXi) //GO(glXGetDrawableAttributes,vFi) //GO(glXGetDrawableAttributesSGIX,vFi) //GO(glXGetFBConfigs,pFpip) -//GO(glXGetFBConfigAttrib, iFppip) +GO(glXGetFBConfigAttrib, iFXpip) //GO(glXGetFBConfigAttribSGIX, iFppip) //GO(glXGetFBConfigFromVisualSGIX, pFpp) //GO(glXGetFBConfigsSGIX,pFpip) @@ -2984,7 +2984,7 @@ GO(glXGetClientString, pFXi) //GO(glXGetVideoInfoNV, iFpippp) //GO(glXGetVideoSyncSGI, iFp) //GO(glXGetVisualConfigs,pFpp) -//GO(glXGetVisualFromFBConfig, pFpp) +GOM(glXGetVisualFromFBConfig, pFEXp) //GO(glXGetVisualFromFBConfigSGIX, pFpp) //GO(glXHyperpipeAttribSGIX,iFpiiip) //GO(glXHyperpipeConfigSGIX, iFpiipp) @@ -3010,7 +3010,7 @@ GO(glXQueryFrameCountNV, iFXip) GO(glXQueryMaxSwapGroupsNV, iFXipp) //GO(glXQueryServerString,pFpii) GO(glXQuerySwapGroupNV, iFXipp) -//GO(glXQueryVersion,iFppp) +GO(glXQueryVersion,iFXpp) //GO(glXQueryVideoCaptureDeviceNV, iFppip) GO(glXReleaseTexImageEXT, vFXpi) //GO(glXReleaseVideoCaptureDeviceNV, vFpp) diff --git a/src/wrapped32/wrappedlibx11.c b/src/wrapped32/wrappedlibx11.c index d493f502..2024e5b3 100644 --- a/src/wrapped32/wrappedlibx11.c +++ b/src/wrapped32/wrappedlibx11.c @@ -17,6 +17,7 @@ #include "emu/x64emu_private.h" #include "myalign32.h" #include "elfloader.h" +#include "converter32.h" #ifdef ANDROID static const char* libx11Name = "libX11.so"; @@ -25,9 +26,10 @@ #endif #define LIBNAME libx11 -#if 0 + typedef int (*XErrorHandler)(void *, void *); void* my32_XSetErrorHandler(x64emu_t* t, XErrorHandler handler); +#if 0 typedef int (*XIOErrorHandler)(void *); void* my32_XSetIOErrorHandler(x64emu_t* t, XIOErrorHandler handler); void* my32_XESetCloseDisplay(x64emu_t* emu, void* display, int32_t extension, void* handler); @@ -58,7 +60,21 @@ typedef void* (*pFpiiuu_t)(void*, int32_t, int32_t, uint32_t, uint32_t); #include "wrappercallback32.h" +void convert_Screen_to_32(void* d, void* s); void* FindDisplay(void* d); +void* getDisplay(void* d); +void convert_XErrorEvent_to_32(void* d, void* s) +{ + my_XErrorEvent_t* src = s; + my_XErrorEvent_32_t* dst = d; + dst->type = src->type; + dst->display = to_ptrv(FindDisplay(src->display)); + dst->resourceid = to_ulong(src->resourceid); + dst->serial = to_ulong(src->serial); + dst->error_code = src->error_code; + dst->request_code = src->request_code; + dst->minor_code = src->minor_code; +} #define SUPER() \ GO(0) \ @@ -143,13 +159,15 @@ static void* reverse_event_to_wireFct(library_t* lib, void* fct) #undef GO return (void*)AddBridge(lib->w.bridge, iFppp, fct, 0, NULL); } - +#endif // error_handler #define GO(A) \ -static uintptr_t my32_error_handler_fct_##A = 0; \ -static int my32_error_handler_##A(void* dpy, void* error) \ -{ \ - return (int)RunFunctionFmt(my32_error_handler_fct_##A, "pp", dpy, error);\ +static uintptr_t my32_error_handler_fct_##A = 0; \ +static int my32_error_handler_##A(void* dpy, void* error) \ +{ \ + static my_XErrorEvent_32_t evt = {0}; \ + convert_XErrorEvent_to_32(&evt, error); \ + return (int)RunFunctionFmt(my32_error_handler_fct_##A, "pp", getDisplay(dpy), &evt); \ } SUPER() #undef GO @@ -174,9 +192,9 @@ static void* reverse_error_handlerFct(library_t* lib, void* fct) #define GO(A) if(my32_error_handler_##A == fct) return (void*)my32_error_handler_fct_##A; SUPER() #undef GO - return (void*)AddBridge(lib->w.bridge, iFpp, fct, 0, NULL); + return (void*)AddBridge(lib->w.bridge, iFpp_32, fct, 0, NULL); } - +#if 0 // ioerror_handler #define GO(A) \ static uintptr_t my32_ioerror_handler_fct_##A = 0; \ @@ -1262,12 +1280,12 @@ EXPORT void* my32_XSetIMValues(x64emu_t* emu, void* xim, uintptr_t* va) { #endif #undef VA_CALL #undef SUPER -#if 0 EXPORT void* my32_XSetErrorHandler(x64emu_t* emu, XErrorHandler handler) { void* ret = my->XSetErrorHandler(finderror_handlerFct(handler)); return reverse_error_handlerFct(my_lib, ret); } +#if 0 EXPORT void* my32_XSetIOErrorHandler(x64emu_t* emu, XIOErrorHandler handler) { @@ -1541,7 +1559,7 @@ void* getDisplay(void* d) { if(!d) return d; for(int i=0; iscreens[i]); + convert_Screen_to_32(&my32_screens[n_screeens++], &dpy->screens[i]); } } else ret->screens = 0; @@ -2167,6 +2185,22 @@ EXPORT int my32_XSetWMProtocols(x64emu_t* emu, void* dpy, XID window, XID_32* pr return my->XSetWMProtocols(dpy, window, protocol?list:NULL, count); } +void convert_XWMints_to_64(void* d, void* s) +{ + my_XWMHints_t* dst = d; + my_XWMHints_32_t* src = s; + long flags = from_long(src->flags); + // reverse order + if(flags&XWMHint_WindowGroupHint) dst->window_group = from_ulong(src->window_group); + if(flags&XWMHint_IconMaskHint) dst->icon_mask = from_ulong(src->icon_mask); + if(flags&XWMHint_IconPositionHint) {dst->icon_y = src->icon_y; dst->icon_x = src->icon_x;} + if(flags&XWMHint_IconWindowHint) dst->icon_window = from_ulong(src->icon_window); + if(flags&XWMHint_IconPixmapHint) dst->icon_pixmap = from_ulong(src->icon_pixmap); + if(flags&XWMHint_StateHint) dst->initial_state = src->initial_state; + if(flags&XWMHint_InputHint) dst->input = src->input; + + dst->flags = flags; +} void inplace_enlarge_wmhints(void* hints) { if(!hints) return; @@ -2202,6 +2236,13 @@ void inplace_shrink_wmhints(void* hints) dst->flags = flags; } +void convert_XSizeHints_to_64(void* d, void *s) +{ + //XSizeHints is a long flag and 17*int... + long flags = to_long(*(long_t*)s); + memcpy(d+8, s+4, 17*4); + *(long*)d = flags; +} void inplace_enlarge_wmsizehints(void* hints) { //XSizeHints is a long flag and 17*int... @@ -2270,6 +2311,86 @@ EXPORT int my32_Xutf8TextListToTextProperty(x64emu_t* emu, void* dpy, ptr_t* lis return my->Xutf8TextListToTextProperty(dpy, list?(&l_list):NULL, count, style, text); } +void convert_XWindowAttributes_to_32(void* d, void* s) +{ + my_XWindowAttributes_t* src = s; + my_XWindowAttributes_32_t* dst = d; + dst->x = src->x; + dst->y = src->y; + dst->width = src->width; + dst->height = src->height; + dst->border_width = src->border_width; + dst->depth = src->depth; + dst->visual = to_ptrv(src->visual); + dst->root = to_ulong(src->root); + dst->c_class = src->c_class; + dst->bit_gravity = src->bit_gravity; + dst->win_gravity = src->win_gravity; + dst->backing_store = src->backing_store; + dst->backing_planes = to_ulong(src->backing_planes); + dst->backing_pixel = to_ulong(src->backing_pixel); + dst->save_under = src->save_under; + dst->colormap = to_ulong(src->colormap); + dst->map_installed = src->map_installed; + dst->map_state = src->map_state; + dst->all_event_masks = to_long(src->all_event_masks); + dst->your_event_mask = to_long(src->your_event_mask); + dst->do_not_propagate_mask = to_long(src->do_not_propagate_mask); + dst->override_redirect = src->override_redirect; + dst->screen = to_ptrv(src->screen); +} + +EXPORT int my32_XGetWindowAttributes(x64emu_t* emu, void* dpy, XID window, my_XWindowAttributes_32_t* attr) +{ + static my_Screen_32_t screen32 = {0}; + my_XWindowAttributes_t l_attr = {0}; + int ret = my->XGetWindowAttributes(dpy, window, &l_attr); + convert_XWindowAttributes_to_32(attr, &l_attr); + attr->screen = to_ptrv(&screen32); + convert_Screen_to_32(&screen32, l_attr.screen); + return ret; +} + +EXPORT int my32_XChangeProperty(x64emu_t* emu, void* dpy, XID window, XID prop, XID type, int fmt, int mode, void* data, int n) +{ + unsigned long data_l[n]; + if(fmt==32) { + for(int i=0; iXChangeProperty(dpy, window, prop, type, fmt, mode, data, n); +} + +EXPORT void my32_XSetWMProperties(x64emu_t* emu, void* dpy, XID window, void* window_name, void* icon_name, ptr_t* argv, int argc, void* normal_hints, my_XWMHints_32_t* wm_hints, ptr_t* class_hints) +{ + struct_pLiL_t window_name_l; + struct_pLiL_t icon_name_l; + int wm_size_l[17+2] = {0}; + my_XWMHints_t wm_hints_l = {0}; + char* class_hints_l[2] = {0}; + char* argv_l[argc+1]; + + if(window_name) + from_struct_pLiL(&window_name_l, to_ptrv(window_name)); + if(icon_name) + from_struct_pLiL(&icon_name_l, to_ptrv(icon_name)); + if(normal_hints) + convert_XSizeHints_to_64(&wm_size_l, normal_hints); + if(wm_hints) + convert_XWMints_to_64(&wm_hints_l, wm_hints); + if(class_hints) { + class_hints_l[0] = from_ptrv(class_hints[0]); + class_hints_l[1] = from_ptrv(class_hints[1]); + } + if(argv) { + memset(argv_l, 0, sizeof(argv_l)); + for(int i=0; iXSetWMProperties(dpy, window, window_name?(&window_name_l):NULL, icon_name?(&icon_name_l):NULL, argv?argv_l:NULL, argc, normal_hints?(&wm_size_l):NULL, wm_hints?(&wm_hints_l):NULL, class_hints?(&class_hints_l):NULL); +} + #define CUSTOM_INIT \ AddAutomaticBridge(lib->w.bridge, vFp_32, *(void**)dlsym(lib->w.lib, "_XLockMutex_fn"), 0, "_XLockMutex_fn"); \ AddAutomaticBridge(lib->w.bridge, vFp_32, *(void**)dlsym(lib->w.lib, "_XUnlockMutex_fn"), 0, "_XUnlockMutex_fn"); \ diff --git a/src/wrapped32/wrappedlibx11_private.h b/src/wrapped32/wrappedlibx11_private.h index b3e0f665..6e000423 100644 --- a/src/wrapped32/wrappedlibx11_private.h +++ b/src/wrapped32/wrappedlibx11_private.h @@ -3,6 +3,7 @@ #endif //XColor is a struct: LWWWcc +//XTextProperty is a struct: pLiL DATAB(_qfree, 4) // Warning: failed to confirm @@ -45,7 +46,7 @@ GO(XAllocWMHints, pFv) //GO(XChangeKeyboardControl, iFpLp) //GO(XChangeKeyboardMapping, iFpiipi) //GO(XChangePointerControl, iFpiiiii) -//GO(XChangeProperty, iFpLLLiipi) +GOM(XChangeProperty, iFEXLLLiipi) //GO(XChangeSaveSet, iFpLi) //GO(XChangeWindowAttributes, iFpLLp) //GOM(XCheckIfEvent, iFEpppp) @@ -207,7 +208,7 @@ GO(XcmsFreeCCC, vFp) //GO(XCopyGC, iFppLp) //GO(XCopyPlane, iFpLLpiiuuiiL) //GO(_XCopyToArg, -//GO(XCreateBitmapFromData, LFpLpuu) +GO(XCreateBitmapFromData, LFXLpuu) GO(XCreateColormap, LFXLpi) //GO(XCreateFontCursor, LFpu) //GO(XCreateFontSet, pFppppp) @@ -333,8 +334,8 @@ GO(XEventsQueued, iFXi) //GO(XFilterEvent, iFpL) //GO(XFindContext, iFpLip) //GO(XFindOnExtensionList, pFpi) -//GO(_XFlush, vFp) -//GO(XFlush, iFp) +GO(_XFlush, vFX) +GO(XFlush, iFX) //GO(XFlushGC, vFpp) //GO(_XFlushGCCache, vFpp) //GO(XFontsOfFontSet, iFppp) @@ -374,7 +375,7 @@ GO(XFreePixmap, iFXL) //GO(XGetCommand, iFpLpp) //GO(XGetDefault, pFppp) //GO(XGetErrorDatabaseText, iFpppppi) -//GO(XGetErrorText, iFpipi) +GO(XGetErrorText, iFXipi) //GO(XGetEventData, iFpp) //GO(XGetFontPath, pFpp) //GO(XGetFontProperty, iFpLp) @@ -411,7 +412,7 @@ GOM(XGetSubImage, pFEXLiiuuLipii) //GO(XGetTransientForHint, iFpLp) //GO(XGetVisualInfo, pFplpp) //GO(_XGetWindowAttributes, iFpLp) -//GO(XGetWindowAttributes, iFpLp) +GOM(XGetWindowAttributes, iFEXLp) //GO(XGetWindowProperty, iFpLLlliLppppp) //GO(XGetWMClientMachine, iFpLp) //GO(XGetWMColormapWindows, iFpLpp) @@ -1059,7 +1060,7 @@ GOM(XSendEvent, iFEXLilp) //GO(XSetCloseDownMode, iFpi) //GO(XSetCommand, iFpLpi) //GO(XSetDashes, iFppipi) -//GOM(XSetErrorHandler, pFEp) +GOM(XSetErrorHandler, pFEp) //GO(XSetFillRule, iFppi) //GO(XSetFillStyle, iFppi) //GO(XSetFont, iFppL) @@ -1095,7 +1096,7 @@ GOM(XSendEvent, iFEXLilp) //GO(XSetState, iFppLLiL) //GO(XSetStipple, iFppL) //GO(XSetSubwindowMode, iFppi) -GO(XSetTextProperty, vFXLpL) // use XTextProperty as last arg +GO(XSetTextProperty, vFXLrpLiL_L) //GO(XSetTile, iFppL) //GO(XSetTransientForHint, iFpLL) //GO(XSetTSOrigin, iFppii) @@ -1108,10 +1109,10 @@ GO(XSetTextProperty, vFXLpL) // use XTextProperty as last arg //GO(XSetWMClientMachine, vFpLp) //GO(XSetWMColormapWindows, iFpLpi) GOM(XSetWMHints, iFEXLp) -GO(XSetWMIconName, vFXLp) // use XTextProperty as last arg -GO(XSetWMName, vFXLp) // use XTextProperty as last arg +GO(XSetWMIconName, vFXLrpLiL_) +GO(XSetWMName, vFXLrpLiL_) GOM(XSetWMNormalHints, vFEXLp) -//GO(XSetWMProperties, vFpLpppippp) +GOM(XSetWMProperties, vFEXLpppippp) GOM(XSetWMProtocols, iFEXLpi) //GO(XSetWMSizeHints, vFpLpL) //GO(XSetZoomHints, iFpLp) -- cgit 1.4.1