fix(include): Ghidra can't figure out how to use enum values as array size parameters, so just use hardcoded numbers instead

This commit is contained in:
phaneron 2024-07-08 18:42:37 -04:00
parent e7bb9a818a
commit 0683e31289
7 changed files with 57 additions and 13 deletions

View file

@ -15,10 +15,14 @@ struct CGxCaps {
EGxColorFormat m_colorFormat; EGxColorFormat m_colorFormat;
uint32_t m_maxIndex; uint32_t m_maxIndex;
int32_t m_generateMipMaps; int32_t m_generateMipMaps;
int32_t m_texFmt[GxTexFormats_Last]; // int32_t m_texFmt[GxTexFormats_Last];
int32_t m_texTarget[GxTexTargets_Last]; int32_t m_texFmt[13];
uint32_t m_texMaxSize[GxTexTargets_Last]; // int32_t m_texTarget[GxTexTargets_Last];
int32_t m_shaderTargets[GxShTargets_Last]; int32_t m_texTarget[4];
// uint32_t m_texMaxSize[GxTexTargets_Last];
uint32_t m_texMaxSize[4];
// int32_t m_shaderTargets[GxShTargets_Last];
int32_t m_shaderTargets[6];
int32_t m_texFilterTrilinear; int32_t m_texFilterTrilinear;
int32_t m_texFilterAnisotropic; int32_t m_texFilterAnisotropic;
uint32_t m_maxTexAnisotropy; uint32_t m_maxTexAnisotropy;

View file

@ -19,6 +19,9 @@
#include "gx/matrix_stack.h" #include "gx/matrix_stack.h"
#include "gx/buffer.h" #include "gx/buffer.h"
typedef struct CGxAppRenderState CGxAppRenderState;
typedef struct CGxPushedRenderState CGxPushedRenderState;
typedef struct ShaderConstants ShaderConstants;
typedef struct CGxDevice CGxDevice; typedef struct CGxDevice CGxDevice;
struct CGxAppRenderState { struct CGxAppRenderState {
@ -41,7 +44,7 @@ struct ShaderConstants {
uint32_t unk2; uint32_t unk2;
}; };
// minimum size in binary: 3944 bytes // this class is at least 14688 bytes in size
struct CGxDevice { struct CGxDevice {
// TODO: pointer to struct CGxDevice__vtable // TODO: pointer to struct CGxDevice__vtable
void* v_vtable; void* v_vtable;
@ -53,7 +56,8 @@ struct CGxDevice {
EGxApi m_api; EGxApi m_api;
CGxFormat m_format; CGxFormat m_format;
CGxCaps m_caps; CGxCaps m_caps;
TSHashTable_CGxShader_HASHKEY_STRI m_shaderList[GxShTargets_Last]; // TSHashTable_CGxShader_HASHKEY_STRI m_shaderList[GxShTargets_Last];
TSHashTable_CGxShader_HASHKEY_STRI m_shaderList[6];
int32_t (*m_windowProc)(void* window, uint32_t message, uintptr_t wparam, intptr_t lparam); int32_t (*m_windowProc)(void* window, uint32_t message, uintptr_t wparam, intptr_t lparam);
int32_t m_context; int32_t m_context;
int32_t intF5C; int32_t intF5C;
@ -63,16 +67,21 @@ struct CGxDevice {
CBoundingBox m_viewport; CBoundingBox m_viewport;
C44Matrix m_projection; C44Matrix m_projection;
C44Matrix m_projNative; C44Matrix m_projNative;
CGxMatrixStack m_xforms[GxXforms_Last]; // CGxMatrixStack m_xforms[GxXforms_Last];
CGxMatrixStack m_xforms[11];
uint32_t m_appMasterEnables; uint32_t m_appMasterEnables;
uint32_t m_hwMasterEnables; uint32_t m_hwMasterEnables;
TSList_CGxPool m_poolList; TSList_CGxPool m_poolList;
CGxBuf* m_bufLocked[GxPoolTargets_Last]; // CGxBuf* m_bufLocked[GxPoolTargets_Last];
CGxBuf* m_bufLocked[2];
CGxPool* m_vertexPool; CGxPool* m_vertexPool;
CGxPool* m_indexPool; CGxPool* m_indexPool;
CGxBuf* m_streamBufs[GxPoolTargets_Last]; // CGxBuf* m_streamBufs[GxPoolTargets_Last];
CGxVertexAttrib m_primVertexFormatAttrib[GxVertexBufferFormats_Last]; CGxBuf* m_streamBufs[2];
CGxBuf* m_primVertexFormatBuf[GxVertexBufferFormats_Last]; // CGxVertexAttrib m_primVertexFormatAttrib[GxVertexBufferFormats_Last];
CGxVertexAttrib m_primVertexFormatAttrib[14];
// CGxBuf* m_primVertexFormatBuf[GxVertexBufferFormats_Last];
CGxBuf* m_primVertexFormatBuf[14];
uint32_t m_primVertexMask; uint32_t m_primVertexMask;
uint32_t m_primVertexDirty; uint32_t m_primVertexDirty;
EGxVertexBufferFormat m_primVertexFormat; EGxVertexBufferFormat m_primVertexFormat;

View file

@ -2,6 +2,8 @@
#define GX_FORMAT_H #define GX_FORMAT_H
#include <stdint.h> #include <stdint.h>
#include <stdbool.h>
#include "tempest/vector.h" #include "tempest/vector.h"
typedef enum CGxFormat__Format CGxFormat__Format; typedef enum CGxFormat__Format CGxFormat__Format;

View file

@ -5,6 +5,34 @@
#include "storm/array.h" #include "storm/array.h"
typedef enum BlitAlpha BlitAlpha;
typedef enum BlitFormat BlitFormat;
typedef enum EGxApi EGxApi;
typedef enum EGxBlend EGxBlend;
typedef enum EGxColorFormat EGxColorFormat;
typedef enum EGxFontHJusts EGxFontHJusts;
typedef enum EGxFontVJusts EGxFontVJusts;
typedef enum EGxMasterEnables EGxMasterEnables;
typedef enum EGxPrim EGxPrim;
typedef enum EGxPrimMask EGxPrimMask;
typedef enum EGxRenderState EGxRenderState;
typedef enum EGxShPS EGxShPS;
typedef enum EGxShTarget EGxShTarget;
typedef enum EGxShVS EGxShVS;
typedef enum EGxTexCommand EGxTexCommand;
typedef enum EGxTexFilter EGxTexFilter;
typedef enum EGxTexFormat EGxTexFormat;
typedef enum EGxTexTarget EGxTexTarget;
typedef enum EGxTexWrapMode EGxTexWrapMode;
typedef enum EGxXform EGxXform;
typedef enum EGxuDrawListCategory EGxuDrawListCategory;
typedef enum EGxWM EGxWM;
typedef enum COLOR_FILE_FORMAT COLOR_FILE_FORMAT;
typedef enum PIXEL_FORMAT PIXEL_FORMAT;
typedef struct C4Pixel C4Pixel;
typedef struct MipBits MipBits;
enum BlitAlpha { enum BlitAlpha {
BlitAlpha_0 = 0, BlitAlpha_0 = 0,
BlitAlpha_1 = 1, BlitAlpha_1 = 1,

View file

@ -13,7 +13,7 @@ typedef struct TSHashTable_##T##_##K TSHashTable_##T##_##K; \
typedef struct TSHashObject_##T##_##K TSHashObject_##T##_##K; \ typedef struct TSHashObject_##T##_##K TSHashObject_##T##_##K; \
struct TSHashTable_##T##_##K { \ struct TSHashTable_##T##_##K { \
TSList_##T m_fulllist; \ TSList_##T m_fulllist; \
uint32_t m_fulllist; \ uint32_t m_fullnessIndicator; \
TSGrowableArray_TSList_##T m_slotlistarray; \ TSGrowableArray_TSList_##T m_slotlistarray; \
uint32_t m_slotmask; \ uint32_t m_slotmask; \
}; \ }; \

View file

@ -18,7 +18,7 @@ struct TSLink_##T { \
// TSLinkedNode<T> // TSLinkedNode<T>
#define STORM_TS_LIST(T) \ #define STORM_TS_LIST(T) \
STORM_TS_LINK(T) \ STORM_TS_LINK(T) \
typedef struct TSList_##T TSList_##T##; \ typedef struct TSList_##T TSList_##T; \
typedef struct TSLinkedNode_##T TSLinkedNode_##T; \ typedef struct TSLinkedNode_##T TSLinkedNode_##T; \
struct TSList_##T { \ struct TSList_##T { \
ptrdiff_t m_linkoffset; \ ptrdiff_t m_linkoffset; \

View file

@ -4,6 +4,7 @@
#include <stdint.h> #include <stdint.h>
typedef struct C2Vector C2Vector; typedef struct C2Vector C2Vector;
typedef struct C2iVector C2iVector;
typedef struct C3Vector C3Vector; typedef struct C3Vector C3Vector;
typedef struct C4Vector C4Vector; typedef struct C4Vector C4Vector;
typedef struct CImVector CImVector; typedef struct CImVector CImVector;