diff --git a/3.3.5a/include/gx/caps.h b/3.3.5a/include/gx/caps.h index 7a35a8d..6e571aa 100644 --- a/3.3.5a/include/gx/caps.h +++ b/3.3.5a/include/gx/caps.h @@ -40,14 +40,17 @@ struct CGxCaps { uint32_t unkB0; // int32_t m_shaderTargets[GxShTargets_Last]; int32_t m_shaderTargets[6]; - uint32_t m_unkCC[6]; + // Evidence for this: go to 0x00684CD8 + uint32_t m_shaderConstants[6]; int32_t m_texFilterTrilinear; int32_t m_texFilterAnisotropic; uint32_t m_maxTexAnisotropy; int32_t m_depthBias; uint32_t unkF4; int32_t m_maxClipPlanes; - uint32_t unkFC[6]; + // CGxDeviceD3d::ISetCaps + int32_t m_hardwareCursor; + uint32_t unk100[5]; uint32_t unk114[6]; int32_t m_stereoAvailable; int32_t int130; diff --git a/3.3.5a/include/gx/device.h b/3.3.5a/include/gx/device.h index 65c0292..f9e67f8 100644 --- a/3.3.5a/include/gx/device.h +++ b/3.3.5a/include/gx/device.h @@ -18,6 +18,7 @@ #include "gx/shader.h" #include "gx/matrix_stack.h" #include "gx/buffer.h" +#include "gx/texture.h" typedef struct CGxAppRenderState CGxAppRenderState; typedef struct CGxPushedRenderState CGxPushedRenderState; @@ -229,7 +230,11 @@ struct CGxDevice { uint32_t unk28E8; TSFixedArray_CGxAppRenderState m_appRenderStates; TSFixedArray_CGxStateBom m_hwRenderStates; - uint32_t unk2904[1049]; + uint32_t unk2904[20]; // 0x2904 (size 0x50) + int32_t m_hardwareCursor; // 0x2954 (size 0x4) + uint32_t unk2958[1026]; // 0x2958 (size 0x1008) + CGxTex* m_cursorTexture; // 0x3960 (size 0x4) + // 0x3964 == 14688 (the complete size of CGxDevice) }; #endif \ No newline at end of file diff --git a/3.3.5a/include/gx/texture.h b/3.3.5a/include/gx/texture.h new file mode 100644 index 0000000..39c93b4 --- /dev/null +++ b/3.3.5a/include/gx/texture.h @@ -0,0 +1,50 @@ +#ifndef GX_TEXTURE_H +#define GX_TEXTURE_H + +#include "tempest/rect.h" + +typedef struct CGxTexFlags CGxTexFlags; +typedef struct CGxTex CGxTex; + +struct CGxTexFlags { + // unsigned __int32 m_filter : 3; + // unsigned __int32 m_wrapU : 1; + // unsigned __int32 m_wrapV : 1; + // unsigned __int32 m_forceMipTracking : 1; + // unsigned __int32 m_generateMipMaps : 1; + // unsigned __int32 m_renderTarget : 1; + // unsigned __int32 m_maxAnisotropy : 5; + uint32_t m_flags; +}; + +struct CGxTex { + CiRect m_updateRect; + int16_t m_updatePlaneMin; + int16_t m_updatePlaneMax; + uint32_t m_width; + uint32_t m_height; + uint32_t m_depth; + uint32_t m_target; + uint32_t m_format; + uint32_t m_dataFormat; + CGxTexFlags m_flags; + void* m_userArg; + void* m_userFunc; + void* m_apiSpecificData; + void* m_apiSpecificData2; + uint32_t unk40; + uint32_t unk44; + uint32_t unk48; + uint32_t unk4C; + uint32_t unk50; + uint32_t unk54; + int8_t char58; + int8_t char59; + int8_t m_needsUpdate; + int8_t m_needsCreation; + int8_t m_needsFlagUpdate; + int8_t char5D; + uint16_t m_pad; +}; + +#endif \ No newline at end of file diff --git a/3.3.5a/include/gx/types.h b/3.3.5a/include/gx/types.h index 1cac223..a7d8a7e 100644 --- a/3.3.5a/include/gx/types.h +++ b/3.3.5a/include/gx/types.h @@ -66,8 +66,7 @@ enum EGxApi { GxApi_D3d10 = 3, GxApi_D3d11 = 4, GxApi_GLL = 5, - GxApi_GLSDL = 6, - GxApis_Last = 7 + GxApis_Last = 6 }; enum EGxBlend {