From e58f774d829ee10eada38797659624e6a7f4ea74 Mon Sep 17 00:00:00 2001 From: KeybadeBlox Date: Fri, 20 Mar 2026 23:29:02 -0400 Subject: [PATCH] Add various data structures Stuff needed to get Core.obj delinking again. --- decompile/src/JSRF/Core.hpp | 186 +++++++++++++++++++++++++++++++++ decompile/src/XDK/D3D.h | 11 ++ decompile/src/XDK/Win32.h | 4 +- decompile/src/XDK/Xapi/xapi0.c | 12 +-- 4 files changed, 206 insertions(+), 7 deletions(-) diff --git a/decompile/src/JSRF/Core.hpp b/decompile/src/JSRF/Core.hpp index f77395e..718536d 100644 --- a/decompile/src/JSRF/Core.hpp +++ b/decompile/src/JSRF/Core.hpp @@ -21,6 +21,185 @@ struct GraphicsPerformanceCounters { unsigned unknown0x14; }; +// TODO: Just here to get delinking working until we make dedicated source +// files for these classes +struct CollisionManager { + CollisionManager(); + virtual ~CollisionManager(); +}; +struct UnknownGlobal { + UnknownGlobal(); + virtual ~UnknownGlobal(); +}; +struct UnknownStatic02 { + UnknownStatic02(); + virtual ~UnknownStatic02(); +}; +struct UnknownStatic04 { + UnknownStatic04(); + virtual ~UnknownStatic04(); +}; +struct UnknownStatic05 { + UnknownStatic05(); + virtual ~UnknownStatic05(); +}; +struct UnknownStatic06 { + UnknownStatic06(); + virtual ~UnknownStatic06(); +}; +struct UnknownStatic07 { + UnknownStatic07(); + virtual ~UnknownStatic07(); +}; +struct UnknownStatic09 { + UnknownStatic09(); + virtual ~UnknownStatic09(); +}; +struct UnknownStatic13 { + char unknown1[0x274]; + void * unknown2; + void * unknown3; +}; +struct UnknownStatic16 { + UnknownStatic16(); + virtual ~UnknownStatic16(); +}; +struct UnknownStatic17 { + UnknownStatic17(); + virtual ~UnknownStatic17(); +}; +struct UnknownStatic18 { + UnknownStatic18(); + virtual ~UnknownStatic18(); +}; +struct UnknownStatic19 { + UnknownStatic19(); + virtual ~UnknownStatic19(); +}; +struct UnknownStatic24 { + UnknownStatic24(); + virtual ~UnknownStatic19(); +}; +struct UnknownStatic27 { + UnknownStatic27(); + virtual ~UnknownStatic27(); + void * unknown[3]; +}; +struct GraphicsSetting { + unsigned countedIfZero; + char * name; + D3DVECTOR unknown; + float value; + unsigned index; +}; +struct GraphicsSettings { + float * settings; + unsigned settingsArrSizeInBytes; + unsigned unknown1; + unsigned unknown2; + unsigned srcArrZeroCnt; + GraphicsSetting * srcItemsMarked0; + unsigned * offsetsFromPrevSrcItemMarked0; +}; +enum GraphicsSettingType { + GST_WARP = 0x0, + GST_WARP_X = 0x1, + GST_WARP_Y = 0x2, + GST_WARP_Z = 0x3, + GST_GO = 0x4, + GST_MEMORY = 0x5, + GST_DRAW = 0x6, + GST_COLOR = 0x7, + GST_COLOR_R = 0x8, + GST_COLOR_G = 0x9, + GST_COLOR_B = 0xa, + GST_AMBIENT = 0xb, + GST_AMBIENT_R = 0xc, + GST_AMBIENT_G = 0xd, + GST_AMBIENT_B = 0xe, + GST_SHADOWCOLOR = 0xf, + GST_SHADOWCOLOR_A = 0x10, + GST_SHADOWCOLOR_R = 0x11, + GST_SHADOWCOLOR_G = 0x12, + GST_SHADOWCOLOR_B = 0x13, + GST_BGCOLOR = 0x14, + GST_BGCOLOR_R = 0x15, + GST_BGCOLOR_G = 0x16, + GST_BGCOLOR_B = 0x17, + GST_MIPMAPLOD = 0x18, + GST_MIPMAPLOD_BIAS = 0x19, + GST_G_CONTRAST = 0x1a, + GST_G_CONTRAST_R = 0x1b, + GST_G_CONTRAST_G = 0x1c, + GST_G_CONTRAST_B = 0x1d, + GST_G_LUMINANCE = 0x1e, + GST_G_LUMINANCE_R = 0x1f, + GST_G_LUMINANCE_G = 0x20, + GST_G_LUMINANCE_B = 0x21, + GST_GRIND = 0x22, + GST_GRIND_NS = 0x23, + GST_GRIND_XS = 0x24, + GST_GRIND_NR = 0x25, + GST_GRIND_XR = 0x26, + GST_GIZA_NO = 0x27, + GST_GIZA_NO_T = 0x28, + GST_GIZA_SPEED = 0x29, + GST_GIZA_SPEED_R = 0x2a, + GST_GIZA_SPEED_T = 0x2b, + GST_GIZA_SPEED_S = 0x2c, + GST_GIZA_GRIND = 0x2d, + GST_GIZA_GRIND_R = 0x2e, + GST_GIZA_GRIND_T = 0x2f, + GST_GIZA_GRIND_S = 0x30, + GST_GIZA_NORMAL = 0x31, + GST_GIZA_NORMAL_R = 0x32, + GST_GIZA_NORMAL_T = 0x33, + GST_GIZA_NORMAL_S = 0x34, + GST_GIZA_SDASH = 0x35, + GST_GIZA_SDASH_R = 0x36, + GST_GIZA_SDASH_T = 0x37, + GST_GIZA_SDASH_S = 0x38, + GST_GIZA_CAMZ = 0x39, + GST_GIZA_CAMZ_ND = 0x3a, + GST_GIZA_CAMZ_XD = 0x3b, + GST_GIZA_CAMZ_NR = 0x3c, + GST_GIZA_CAMZ_XR = 0x3d, + GST_GIZA_CAMTRT = 0x3e, + GST_GIZA_CAMTRT_ND = 0x3f, + GST_GIZA_CAMTRT_XD = 0x40, + GST_GIZA_CAMTRT_NR = 0x41, + GST_GIZA_CAMTRT_XR = 0x42, + GST_GIZA_CAMANG_NA = 0x43, + GST_GIZA_CAMANG_XA = 0x44, + GST_GIZA_CAMANG_NR = 0x45, + GST_GIZA_CAMANG_XR = 0x46, + GST_GIZA_MESH = 0x47, + GST_GIZA_MESH_IP = 0x48, + GST_GIZA_MESH_AP = 0x49, + GST_GIZA_MESH_BA = 0x4a, + GST_GIZA_CAMALPHA = 0x4b, + GST_GIZA_CAMALPHA_ENABLE = 0x4c, + GST_DIST = 0x4d, + GST_FOG = 0x4e, + GST_FOG_ENABLE = 0x4f, + GST_FOG_R = 0x50, + GST_FOG_G = 0x51, + GST_FOG_B = 0x52, + GST_FOG_RANGE = 0x53, + GST_FOG_RANGE_NEAR = 0x54, + GST_FOG_RANGE_FAR = 0x55, + GST_POWER = 0x56, + GST_WIRE_FRAME = 0x57, + GST_WIRE_FRAME_ENABLE = 0x58, + GST_TEXTURE = 0x59, + GST_TEXTURE_NO = 0x5a, + GST_SCREENGAUGE = 0x5b, + GST_SCREENGAUGE_ENABLE = 0x5c, + GST_OWARI = 0x5d, + GST_COUNT = 0x5e, +}; + + enum GameObjFlags { GOF_DRAWTREEHEAD = 1 << 0, GOF_SKIPDRAWINGSOMETHING = 1 << 1, @@ -175,6 +354,13 @@ struct GameObj { GameObj(GameObj * parent, GameObjIndex index, GameObjFlags flags); }; +// There's a big array of possible arguments for draw methods with these +struct DrawFuncArgs { + GameObjFlags flagFilterAny; + int arg1; + int arg2; +}; + // Base class of objects serving as the head of a tree of objects to draw // recursively struct DrawTree : GameObj { diff --git a/decompile/src/XDK/D3D.h b/decompile/src/XDK/D3D.h index 325035f..2a776ea 100644 --- a/decompile/src/XDK/D3D.h +++ b/decompile/src/XDK/D3D.h @@ -15,9 +15,11 @@ extern "C" { typedef DWORD D3DCOLOR; + struct D3DVECTOR { float x, y, z ; }; + struct D3DVECTOR4 { float x, y, z, w; }; @@ -26,6 +28,15 @@ struct D3DRECT { LONG x1, y1, x2, y2; }; +struct D3DVBLANKDATA { + DWORD VBlank; + DWORD Swap; + DWORD Flags; +}; + + +typedef void (*D3DVBLANKCALLBACK)(D3DVBLANKDATA * pData); + #ifdef __cplusplus } diff --git a/decompile/src/XDK/Win32.h b/decompile/src/XDK/Win32.h index d6192d7..324e71a 100644 --- a/decompile/src/XDK/Win32.h +++ b/decompile/src/XDK/Win32.h @@ -25,7 +25,7 @@ typedef __int64 LONGLONG; typedef unsigned char BYTE; typedef unsigned short WORD; -typedef unsigned long DWORD, * PDWORD; +typedef unsigned long DWORD; typedef void VOID; typedef void * LPVOID; @@ -33,6 +33,8 @@ typedef unsigned long SIZE_T; typedef float FLOAT; typedef int BOOL; +typedef char * LPCSTR; + #define TRUE 1 #define FALSE 0 diff --git a/decompile/src/XDK/Xapi/xapi0.c b/decompile/src/XDK/Xapi/xapi0.c index ae97f97..d8a059f 100644 --- a/decompile/src/XDK/Xapi/xapi0.c +++ b/decompile/src/XDK/Xapi/xapi0.c @@ -32,12 +32,12 @@ BOOL __stdcall CloseHandle (HANDLE hHandle); typedef DWORD (__stdcall * LPTHREAD_START_ROUTINE)(LPVOID lpThreadParameter); HANDLE __stdcall CreateThread( - void * lpThreadAttributes, - DWORD dwStackSize, - LPTHREAD_START_ROUTINE lpStartAddress, - LPVOID lpParameter, - DWORD dwCreationFlags, - PDWORD lpThreadId + void * lpThreadAttributes, + DWORD dwStackSize, + LPTHREAD_START_ROUTINE lpStartAddress, + LPVOID lpParameter, + DWORD dwCreationFlags, + DWORD * lpThreadId ); void __stdcall XapiBootToDash(