From 6a6d154b0a736078e18e3f389774a7215da32ef2 Mon Sep 17 00:00:00 2001 From: superp00t Date: Tue, 29 Apr 2025 16:26:36 -0400 Subject: [PATCH] feat(gx): refresh CGxDevice studies --- .../ida/batch/import_data_types.idc | 51 +- .../ida/batch/import_symbols.idc | 64 +- .../3.3.5a-windows-386/include/common/array.h | 9 - .../include/common/datamanager.h | 3 +- .../3.3.5a-windows-386/include/event/timer.h | 3 +- .../include/external/d3d9/caps.h | 17 +- .../include/external/d3d9/colorvalue.h | 13 + .../include/external/d3d9/cubemapfaces.h | 17 + .../include/external/d3d9/cubetexture.h | 42 + .../include/external/d3d9/d3d9.h | 30 + .../include/external/d3d9/declusage.h | 23 + .../include/external/d3d9/device.h | 129 +- .../include/external/d3d9/devtype.h | 14 + .../include/external/d3d9/direct3d.h | 35 + .../include/external/d3d9/displaymode.h | 15 + .../include/external/d3d9/format.h | 94 + .../include/external/d3d9/indexbuffer.h | 33 + .../include/external/d3d9/light.h | 26 + .../include/external/d3d9/lighttype.h | 14 + .../include/external/d3d9/lockedrect.h | 11 + .../include/external/d3d9/multisampletype.h | 28 + .../include/external/d3d9/pixelshader.h | 19 + .../include/external/d3d9/pool.h | 15 + .../include/external/d3d9/presentparameters.h | 30 + .../include/external/d3d9/primitivetype.h | 17 + .../include/external/d3d9/query.h | 24 + .../include/external/d3d9/renderstatetype.h | 114 ++ .../include/external/d3d9/resourcetype.h | 18 + .../include/external/d3d9/surface.h | 36 + .../include/external/d3d9/surfacedesc.h | 22 + .../include/external/d3d9/swapeffect.h | 15 + .../include/external/d3d9/texture.h | 42 + .../include/external/d3d9/vector.h | 12 + .../include/external/d3d9/vertexbuffer.h | 32 + .../include/external/d3d9/vertexdeclaration.h | 23 + .../include/external/d3d9/vertexelement.h | 15 + .../include/external/d3d9/vertexshader.h | 21 + profile/3.3.5a-windows-386/include/gx/d3d9.h | 49 +- .../3.3.5a-windows-386/include/gx/device.h | 64 +- .../include/gx/emergencymem.h | 9 +- .../3.3.5a-windows-386/include/gx/format.h | 2 +- profile/3.3.5a-windows-386/include/gx/light.h | 2 +- .../3.3.5a-windows-386/include/gx/texture.h | 4 +- profile/3.3.5a-windows-386/include/main.h | 7 +- .../3.3.5a-windows-386/include/nvapi/nvapi.h | 184 ++ .../3.3.5a-windows-386/include/storm/array.h | 24 - .../include/storm/array/pointer_to_void.h | 4 +- .../include/ui/framestrata.h | 3 +- .../3.3.5a-windows-386/include/ui/simpletop.h | 3 +- .../symbol/emergencymem/func.sym | 3 +- profile/3.3.5a-windows-386/symbol/gx/func.sym | 3 +- .../symbol/gxdevice/func.sym | 9 + .../symbol/gxdevice/label.sym | 6 +- .../symbol/gxdeviced3d/func.sym | 10 + .../symbol/gxdeviced3d/label.sym | 21 +- .../symbol/gxdeviceopengl/label.sym | 2 +- .../symbol/gxlight/func.sym | 1 + .../symbol/gxtexture/func.sym | 4 + profile/3.3.5a-windows-386/symbol/main.sym | 64 +- .../3.3.5a-windows-386/symbol/nvapi/func.sym | 10 + .../3.3.5a-windows-386/symbol/nvapi/label.sym | 3 + profile/3.3.5a-windows-386/x64dbg/game.dd32 | Bin 149837 -> 151527 bytes profile/3.3.5a-windows-386/x64dbg/types.json | 1617 +++++++++++++---- 63 files changed, 2685 insertions(+), 549 deletions(-) create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/colorvalue.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/cubemapfaces.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/cubetexture.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/d3d9.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/declusage.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/devtype.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/direct3d.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/displaymode.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/format.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/indexbuffer.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/light.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/lighttype.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/lockedrect.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/multisampletype.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/pixelshader.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/pool.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/presentparameters.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/primitivetype.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/query.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/renderstatetype.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/resourcetype.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/surface.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/surfacedesc.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/swapeffect.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/texture.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/vector.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/vertexbuffer.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/vertexdeclaration.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/vertexelement.h create mode 100644 profile/3.3.5a-windows-386/include/external/d3d9/vertexshader.h create mode 100644 profile/3.3.5a-windows-386/include/nvapi/nvapi.h create mode 100644 profile/3.3.5a-windows-386/symbol/gxlight/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/nvapi/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/nvapi/label.sym diff --git a/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc b/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc index 93df4d9..63f4db1 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc @@ -181,6 +181,15 @@ static import_data_types() { apply_type(0x00683650, "uint32_t* __thiscall func(CGxDevice* this)"); apply_type(0x00683660, "void __thiscall func(CGxDevice* this, float depth)"); apply_type(0x00683670, "void __stdcall func()"); + apply_type(0x00683D60, "void __stdcall func(CiRect* windowRect)"); + apply_type(0x00683DB0, "void __stdcall func(CiRect* windowRect)"); + apply_type(0x00683E00, "void __stdcall func(CiRect* windowRect)"); + apply_type(0x00683E50, "void __stdcall func(CiRect* windowRect)"); + apply_type(0x00683EA0, "void __stdcall func(CiRect* windowRect)"); + apply_type(0x00683ED0, "void __stdcall func(CiRect* windowRect)"); + apply_type(0x00683F00, "void __stdcall func(CiRect* windowRect)"); + apply_type(0x00683F30, "void __stdcall func(CiRect* windowRect)"); + apply_type(0x00683FB0, "CGxLight* __thiscall func(CGxLight* this)"); apply_type(0x006840F0, "int32_t __thiscall func(CGxDevice* this, CGxFormat* format)"); apply_type(0x00684170, "void __thiscall func(CGxDevice* this, float gamma)"); apply_type(0x00684190, "int32_t __thiscall func(CGxDevice* this, CGxGammaRamp* ramp)"); @@ -287,6 +296,7 @@ static import_data_types() { apply_type(0x00690680, "int32_t __thiscall func(CGxDeviceD3d* this)"); apply_type(0x00690750, "void __thiscall func(CGxDeviceD3d* this, int32_t (*windowProc)(void*, uint32_t, uintptr_t, intptr_t), CGxFormat* format)"); apply_type(0x00690830, "void __thiscall func(CGxDeviceD3d* this, uintptr_t hwnd, CGxFormat* format)"); + apply_type(0x0069FAA0, "int32_t __thiscall func(CGxDeviceD3d* this, D3DFORMAT format)"); apply_type(0x0069FB00, "LPDIRECT3DVERTEXBUFFER9 __thiscall func(EGxPoolUsage usage, uint32_t size)"); apply_type(0x0069FB70, "int32_t __thiscall func(CGxDeviceD3d* this, CGxPool* pool)"); apply_type(0x0069FE10, "void __thiscall func(CGxDeviceD3d* this, int32_t a1)"); @@ -313,17 +323,22 @@ static import_data_types() { apply_type(0x006A3420, "void __thiscall func(CGxDeviceD3d* this)"); apply_type(0x006A3450, "void __thiscall func(CGxDeviceD3d* this, uint32_t mask)"); apply_type(0x006A3620, "void __thiscall func(CGxDeviceD3d* this, CGxBatch* batch)"); + apply_type(0x006A3720, "bool __thiscall func(CGxDeviceD3d__GxVertexDecl* this, D3DVERTEXELEMENT9* elements, uint32_t count)"); apply_type(0x006A3810, "void __thiscall func(CGxDeviceD3d* this)"); + apply_type(0x006A3870, "void __thiscall func(CGxDeviceD3d* this)"); + apply_type(0x006A38D0, "void __thiscall func(CGxDeviceD3d* this)"); apply_type(0x006A39E0, "void __thiscall func(CGxDeviceD3d* this, uint32_t stream, LPDIRECT3DVERTEXBUFFER9 buffer, uint32_t offset, uint32_t stride)"); apply_type(0x006A3A60, "void __thiscall func(CGxDeviceD3d* this)"); apply_type(0x006A3C40, "void __thiscall func(CGxDeviceD3d* this, CGxDeviceD3d__EDeviceState state, uint32_t val)"); apply_type(0x006A4190, "void __thiscall func(CGxDeviceD3d* this, uint32_t a1, uint32_t val)"); apply_type(0x006A41F0, "void __thiscall func(CGxDeviceD3d* this, uint32_t a1, uint32_t val)"); + apply_type(0x006A43D0, "void __thiscall func(CGxDeviceD3d* this)"); apply_type(0x006A4700, "void __thiscall func(CGxDeviceD3d* this)"); apply_type(0x006A4850, "void __thiscall func(CGxDeviceD3d* this)"); apply_type(0x006A4900, "void __thiscall func(CGxDeviceD3d* this, uint32_t tmu, CGxTex* texId)"); apply_type(0x006A4C30, "void __thiscall func(CGxDeviceD3d* this, EGxRenderState rs)"); apply_type(0x006A5540, "LPDIRECT3DVERTEXDECLARATION9 __thiscall func(CGxDeviceD3d* this, D3DVERTEXELEMENT9* elements, uint32_t count)"); + apply_type(0x006A5680, "void __thiscall func(CGxDeviceD3d* this)"); apply_type(0x006A5700, "void __thiscall func(CGxDeviceD3d* this)"); apply_type(0x006A5940, "void __thiscall func(CGxDeviceD3d* this)"); apply_type(0x006A5A00, "void __thiscall func(CGxDeviceD3d* this, CRect* dst)"); @@ -333,7 +348,9 @@ static import_data_types() { apply_type(0x006A5E10, "void __thiscall func(CGxDeviceD3d* this, CGxShader* shader)"); apply_type(0x006A5EF0, "void __thiscall func(CGxDevice* this, CGxTex* texId, uint32_t* width, uint32_t* height, uint32_t* baseMip, uint32_t* mipCount)"); apply_type(0x006A74B0, "void __thiscall func(CGxDeviceD3d* this, uint32_t mask, CImVector color)"); + apply_type(0x006A7940, "void __thiscall func(CGxDeviceD3d* this, uint32_t width, uint32_t height)"); apply_type(0x006A9920, "void __thiscall func(CGxDeviceD3d* this, CRect* dst)"); + apply_type(0x006A99E0, "void __thiscall func(CGxDeviceD3d* this)"); apply_type(0x006A9B40, "void __thiscall func(CGxDeviceD3d* this, C44Matrix* matrix)"); apply_type(0x006A9E00, "void __thiscall func(CGxDeviceD3d* this, C44Matrix* matrix)"); apply_type(0x006A9FE0, "void __thiscall func(CGxDeviceD3d* this)"); @@ -524,6 +541,15 @@ static import_data_types() { apply_type(0x0086BBA0, "uint64_t __stdcall func()"); apply_type(0x0086C6E0, "int32_t __stdcall func(void* parentWindow, int32_t style, const char* message, const char* title)"); apply_type(0x0086D430, "void __stdcall func(TimingMethod timingMethod)"); + apply_type(0x008A0A54, "NvAPI_Status __stdcall func(int32_t nr, char* szDesc)"); + apply_type(0x008A0F88, "NvAPI_Status __stdcall func(NV_StereoRegistryProfileType registryProfileType)"); + apply_type(0x008A0FA0, "NvAPI_Status __stdcall func()"); + apply_type(0x008A0FA6, "NvAPI_Status __stdcall func()"); + apply_type(0x008A0FAC, "NvAPI_Status __stdcall func(uint8_t* pIsStereoEnabled)"); + apply_type(0x008A0FB2, "NvAPI_Status __stdcall func(IUnknown* pDevice, StereoHandle* pStereoHandle)"); + apply_type(0x008A0FB8, "NvAPI_Status __stdcall func(StereoHandle stereoHandle)"); + apply_type(0x008A0FD6, "NvAPI_Status __stdcall func(StereoHandle stereoHandle, float newSeparationPercentage)"); + apply_type(0x008A0FEE, "NvAPI_Status __stdcall func(StereoHandle stereoHandle, float newConvergence)"); apply_type(0x008C8DE0, "int32_t __stdcall func()"); apply_type(0x0095BFB0, "int32_t __stdcall func()"); apply_type(0x0095F3A0, "void __thiscall func(CSimpleModel* this)"); @@ -579,7 +605,22 @@ static import_data_types() { apply_type(0x009E5630, "Blizzard__File__FileInfo"); apply_type(0x009E9EC8, "uint32_t[7]"); apply_type(0x009EA04C, "TInstanceId_EvtContext__v_table"); - apply_type(0x00A2DDC0, "CGxDevice__vtable"); + apply_type(0x00A2DDC0, "CGxDevice__v_table"); + apply_type(0x00A2E198, "CGxDevice__v_table"); + apply_type(0x00A2E4A8, "D3DFORMAT[8]"); + apply_type(0x00A2E4C8, "uint32_t[7]"); + apply_type(0x00A2E718, "CGxDevice__v_table"); + apply_type(0x00A2F7E8, "EGxTexFormat[13]"); + apply_type(0x00A2F81C, "D3DFORMAT[13]"); + apply_type(0x00A2F850, "D3DCUBEMAP_FACES[6]"); + apply_type(0x00A2F8D4, "D3DPRIMITIVETYPE[6]"); + apply_type(0x00A2F8EC, "D3DDECLUSAGE[14]"); + apply_type(0x00A2F924, "uint32_t[14]"); + apply_type(0x00A2F964, "D3DBLEND[12]"); + apply_type(0x00A2F994, "D3DBLEND[12]"); + apply_type(0x00A2F9C4, "D3DTEXTUREADDRESS[2]"); + apply_type(0x00A2FA14, "D3DCMPFUNC[4]"); + apply_type(0x00A2FA24, "D3DCULL[3]"); apply_type(0x00AB6350, "WowClientDB_Startup_StringsRec"); apply_type(0x00AB90AC, "Blizzard__File__Filesystem*"); apply_type(0x00AB91C0, "Blizzard__File__Filesystem"); @@ -822,6 +863,10 @@ static import_data_types() { apply_type(0x00AD5120, "WowClientDB_SoundFilterElemRec"); apply_type(0x00AD87C4, "char*[8]"); apply_type(0x00AD87E4, "char*[6]"); + apply_type(0x00AD8BC0, "C2iVector"); + apply_type(0x00AD8EF0, "EGxTexFormat[13]"); + apply_type(0x00AD8F24, "D3DDECLTYPE[7]"); + apply_type(0x00AD8F40, "D3DTEXTUREFILTERTYPE[6][3]"); apply_type(0x00AD90B0, "uint8_t[16]"); apply_type(0x00AD90C0, "uint8_t[2]"); apply_type(0x00ADBAB4, "RECTF"); @@ -847,6 +892,8 @@ static import_data_types() { apply_type(0x00AF4A04, "WowClientDB_LightParamsRec"); apply_type(0x00AF4A28, "WowClientDB_LightRec"); apply_type(0x00B1D2AC, "int32_t"); + apply_type(0x00B23770, "int32_t"); + apply_type(0x00B23778, "NvApi__InterfaceTable[253]"); apply_type(0x00B2F994, "HEVENTCONTEXT"); apply_type(0x00B38180, "bool"); apply_type(0x00B38181, "bool"); @@ -878,9 +925,11 @@ static import_data_types() { apply_type(0x00C5DF74, "uint32_t"); apply_type(0x00C5DF7C, "uint32_t"); apply_type(0x00C5DF88, "CGxDevice*"); + apply_type(0x00C5FFF0, "float"); apply_type(0x00C5FFF4, "uint32_t"); apply_type(0x00C5FFF8, "HSLOG"); apply_type(0x00C60300, "C2iVector"); + apply_type(0x00C606F8, "D3DLIGHT9"); apply_type(0x00CA1690, "float"); apply_type(0x00CA1694, "int32_t"); apply_type(0x00CA1718, "float"); diff --git a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc index 36eb1bb..29c6557 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc @@ -2677,6 +2677,8 @@ static import_symbols() { set_name(0x00681290, "GxDevCreate"); set_name(0x006813B0, "GxSceneClear"); set_name(0x006813D0, "GxTexUpdate"); + set_name(0x00681470, "GxTexDestroy"); + set_name(0x006814D0, "GxTexCopy"); set_name(0x00681630, "GxQueryCreate"); set_name(0x00681770, "GxSetMaxFPS"); set_name(0x00681780, "GxGetMaxFPS"); @@ -2691,6 +2693,7 @@ static import_symbols() { set_name(0x00681B00, "GxPrimVertexPtr"); set_name(0x00681BE0, "CGxTexFlags__CGxTexFlags"); set_name(0x00681CB0, "GxTexCreate"); + set_name(0x00681F20, "GxTexUpdate@2"); set_name(0x00681F60, "GxXformSetViewport"); set_name(0x00682340, "GxDrawLockedElements@2"); set_name(0x006823A0, "GxPrimLockIndexPtr"); @@ -2698,6 +2701,7 @@ static import_symbols() { set_name(0x006828C0, "GxPrimLockVertexPtrs"); set_name(0x00682A00, "GxScenePresent"); set_name(0x00682B80, "GxDevDestroy"); + set_name(0x00682C40, "EmergencyMem__Unlock"); set_name(0x00682CB0, "CGxDevice__DeviceCreate"); set_name(0x00682CD0, "CGxDevice__DeviceCreate@2"); set_name(0x00682CF0, "CGxDevice__DeviceDestroy"); @@ -2730,6 +2734,15 @@ static import_symbols() { set_name(0x00683660, "CGxDevice__CursorSetDepth"); set_name(0x00683670, "CGxDevice__LogOpen"); set_name(0x006836B0, "CGxDevice__LogClose"); + set_name(0x00683D60, "CGxDevice__WindowConstrainTopByAspect"); + set_name(0x00683DB0, "CGxDevice__WindowConstrainBottomByAspect"); + set_name(0x00683E00, "CGxDevice__WindowConstrainLeftByAspect"); + set_name(0x00683E50, "CGxDevice__WindowConstrainRightByAspect"); + set_name(0x00683EA0, "CGxDevice__WindowConstrainLeft"); + set_name(0x00683ED0, "CGxDevice__WindowConstrainRight"); + set_name(0x00683F00, "CGxDevice__WindowConstrainTop"); + set_name(0x00683F30, "CGxDevice__WindowConstrainBottom"); + set_name(0x00683FB0, "CGxLight__CGxLight"); set_name(0x006840F0, "CGxDevice__DeviceSetFormat"); set_name(0x00684170, "CGxDevice__DeviceSetGamma"); set_name(0x00684190, "CGxDevice__DeviceSetGamma@2"); @@ -2776,6 +2789,7 @@ static import_symbols() { set_name(0x006876D0, "CGxDevice__PoolCreate"); set_name(0x006877C0, "CGxDevice__QueryCreate"); set_name(0x00687820, "CGxDevice__ShaderDestroy"); + set_name(0x00687900, "CGxDevice__DeviceCreateStreamBufs"); set_name(0x00687940, "CGxDevice__DeviceCreatePools"); set_name(0x00687980, "CGxDevice__TexDestroy"); set_name(0x006879F0, "CGxDevice__QueryDestroy"); @@ -2835,11 +2849,13 @@ static import_symbols() { set_name(0x0068FED0, "CGxDeviceD3d__DeviceReadPixels"); set_name(0x00690150, "CGxDeviceD3d__IReleaseD3dResources"); set_name(0x00690230, "CGxDeviceD3d__DeviceWM"); + set_name(0x006903B0, "CGxDeviceD3d__IDestroyD3d"); set_name(0x006904D0, "CGxDeviceD3d__DeviceSetFormat"); set_name(0x006905F0, "CGxDeviceD3d__DeviceDestroy"); set_name(0x00690680, "CGxDeviceD3d__ICreateD3d"); set_name(0x00690750, "CGxDeviceD3d__DeviceCreate"); set_name(0x00690830, "CGxDeviceD3d__DeviceCreate@2"); + set_name(0x0069FAA0, "CGxDeviceD3d__Sub69FAA0"); set_name(0x0069FB00, "CGxDeviceD3d__ICreateD3dVB"); set_name(0x0069FB70, "CGxDeviceD3d__CreatePoolAPI"); set_name(0x0069FE10, "CGxDeviceD3d__ICursorClip"); @@ -2857,6 +2873,7 @@ static import_symbols() { set_name(0x006A0360, "CGxDeviceD3d__WindowProcD3d"); set_name(0x006A1950, "CGxDeviceD3d__DeviceReadDepths"); set_name(0x006A1A90, "CGxDeviceD3d9Ex__CGxDeviceD3d9Ex"); + set_name(0x006A2AA0, "CGxDeviceD3d__ITexForceRecreation"); set_name(0x006A2BB0, "CGxDeviceD3d__TexDestroy"); set_name(0x006A2C00, "CGxDeviceD3d__ITexCreate"); set_name(0x006A2D80, "CGxDeviceD3d__ITexUpload"); @@ -2867,17 +2884,22 @@ static import_symbols() { set_name(0x006A3420, "CGxDeviceD3d__ISceneEnd"); set_name(0x006A3450, "CGxDeviceD3d__ScenePresent"); set_name(0x006A3620, "CGxDeviceD3d__Draw"); + set_name(0x006A3720, "CGxDeviceD3d__GxVertexDecl__Compare"); set_name(0x006A3810, "CGxDeviceD3d__IStateSyncEnables"); + set_name(0x006A3870, "CGxDeviceD3d__IStateSyncClipPlanes"); + set_name(0x006A38D0, "CGxDeviceD3d__IStateSyncScissorRect"); set_name(0x006A39E0, "CGxDeviceD3d__ISetVertexBuffer"); set_name(0x006A3A60, "CGxDeviceD3d__IStateSetD3DDefaults"); set_name(0x006A3C40, "CGxDeviceD3d__DsSet"); set_name(0x006A4190, "CGxDeviceD3d__ISetColorOp"); set_name(0x006A41F0, "CGxDeviceD3d__ISetAlphaOp"); + set_name(0x006A43D0, "CGxDeviceD3d__IStateSyncLights"); set_name(0x006A4700, "CGxDeviceD3d__IStateSyncMaterial"); set_name(0x006A4850, "CGxDeviceD3d__IStateSyncXforms"); set_name(0x006A4900, "CGxDeviceD3d__ISetTexture"); set_name(0x006A4C30, "CGxDeviceD3d__IRsSendToHw"); set_name(0x006A5540, "CGxDeviceD3d__ICreateD3dVertexDecl"); + set_name(0x006A5680, "CGxDeviceD3d__IReleaseD3dVertexDecl"); set_name(0x006A5700, "CGxDeviceD3d__IStateSyncVertexPtrs"); set_name(0x006A5940, "CGxDeviceD3d__IStateSync"); set_name(0x006A5A00, "CGxDeviceD3d__CapsWindowSize"); @@ -2887,7 +2909,9 @@ static import_symbols() { set_name(0x006A5E10, "CGxDeviceD3d__IShaderCreate"); set_name(0x006A5EF0, "CGxDevice__ITexWHDStartEnd"); set_name(0x006A74B0, "CGxDeviceD3d__SceneClear"); + set_name(0x006A7940, "CGxDeviceD3d__Sub6A7940"); set_name(0x006A9920, "CGxDeviceD3d__CapsWindowSizeInScreenCoords"); + set_name(0x006A99E0, "CGxDeviceD3d__IXformSetViewport"); set_name(0x006A9B40, "CGxDeviceD3d__XformSetProjection"); set_name(0x006A9E00, "CGxDeviceD3d__XformSetView"); set_name(0x006A9FE0, "CGxDeviceD3d__IShaderConstantsFlush"); @@ -3691,6 +3715,16 @@ static import_symbols() { set_name(0x00877E10, "SI2__Log_Write"); set_name(0x00878010, "SI2__Log_Write@2"); set_name(0x0087E020, "SI2__InitCapture"); + set_name(0x008A09BA, "NvAPI_Initialize"); + set_name(0x008A0A54, "NvAPI_GetErrorMessage"); + set_name(0x008A0F88, "NvAPI_Stereo_CreateConfigurationProfileRegistryKey"); + set_name(0x008A0FA0, "NvAPI_Stereo_Enable"); + set_name(0x008A0FA6, "NvAPI_Stereo_Disable"); + set_name(0x008A0FAC, "NvAPI_Stereo_IsEnabled"); + set_name(0x008A0FB2, "NvAPI_Stereo_CreateHandleFromIUnknown"); + set_name(0x008A0FB8, "NvAPI_Stereo_DestroyHandle"); + set_name(0x008A0FD6, "NvAPI_Stereo_SetSeparation"); + set_name(0x008A0FEE, "NvAPI_Stereo_SetConvergence"); set_name(0x008A1420, "stub_return_one_byte"); set_name(0x008C0360, "FFX__Destroy"); set_name(0x008C8DE0, "stub_return_int32_one"); @@ -4079,10 +4113,23 @@ static import_symbols() { set_name(0x009E9EC8, "firstByteMark@2"); set_name(0x009EA04C, "TInstanceId_EvtContext__v_table"); set_name(0x009F1074, "s_pixelFormatToMipBitsCache"); - set_name(0x00A2DDC0, "CGxDevice__vtable"); - set_name(0x00A2E198, "CGxDeviceOpenGl__vtable"); - set_name(0x00A2E718, "CGxDeviceD3d__vtable"); + set_name(0x00A2DDC0, "CGxDevice__v_table"); + set_name(0x00A2E198, "CGxDeviceOpenGl__v_table"); + set_name(0x00A2E4A8, "CGxDeviceD3d__s_GxFormatToD3dFormat"); + set_name(0x00A2E4C8, "CGxDeviceD3d__s_gxAttribToD3dAttribSize"); + set_name(0x00A2E718, "CGxDeviceD3d__v_table"); set_name(0x00A2F500, "CGxDeviceD3d9Ex__vtable"); + set_name(0x00A2F7E8, "CGxDeviceD3d__s_tolerableTexFmtMapping"); + set_name(0x00A2F81C, "CGxDeviceD3d__s_GxTexFmtToD3dFmt"); + set_name(0x00A2F850, "CGxDeviceD3d__s_faceTypes"); + set_name(0x00A2F8D4, "CGxDeviceD3d__s_primitiveConversion"); + set_name(0x00A2F8EC, "CGxDeviceD3d__s_gxAttribToD3dAttribUsage"); + set_name(0x00A2F924, "CGxDeviceD3d__s_gxAttribToD3dAttribUsageIndex"); + set_name(0x00A2F964, "CGxDeviceD3d__s_srcBlend"); + set_name(0x00A2F994, "CGxDeviceD3d__s_dstBlend"); + set_name(0x00A2F9C4, "CGxDeviceD3d__s_wrapModes"); + set_name(0x00A2FA14, "CGxDeviceD3d__s_cmpFunc"); + set_name(0x00A2FA24, "CGxDeviceD3d__s_cullMode"); set_name(0x00AB6350, "g_startup_StringsDB"); set_name(0x00AB90AC, "System_File__Stacked__s_manager"); set_name(0x00AB912C, "System_File__read_func"); @@ -4329,6 +4376,10 @@ static import_symbols() { set_name(0x00AD5120, "g_soundFilterElemDB"); set_name(0x00AD87C4, "formatToInt"); set_name(0x00AD87E4, "g_gxApiNames"); + set_name(0x00AD8BC0, "CGxDevice__kWinMinSize"); + set_name(0x00AD8EF0, "CGxDeviceD3d__s_GxTexFormatToUse"); + set_name(0x00AD8F24, "CGxDeviceD3d__s_gxAttribToD3dAttribType"); + set_name(0x00AD8F40, "CGxDeviceD3d__s_filterModes"); set_name(0x00AD90B0, "CBLPFile__s_eightBitAlphaLookup"); set_name(0x00AD90C0, "CBLPFile__s_oneBitAlphaLookup"); set_name(0x00ADBAB4, "s_rect"); @@ -4354,6 +4405,9 @@ static import_symbols() { set_name(0x00AF4A04, "g_lightParamsDB"); set_name(0x00AF4A28, "g_lightDB"); set_name(0x00B1D2AC, "s_sleepInBackground"); + set_name(0x00B2376C, "NvApi__s_initialized"); + set_name(0x00B23770, "result"); + set_name(0x00B23778, "NvApi__s_interface_table"); set_name(0x00B2F050, "s_streamingdiag"); set_name(0x00B2F994, "g_clientEventContext"); set_name(0x00B38180, "Blizzard__Streaming__s_streamingReady"); @@ -4456,12 +4510,14 @@ static import_symbols() { set_name(0x00C5DF74, "s_maxFPSBk"); set_name(0x00C5DF7C, "s_maxFPS"); set_name(0x00C5DF88, "g_theGxDevicePtr"); - set_name(0x00C5DFDC, "CGxDevice__s_uiVertexShader"); + set_name(0x00C5DFD8, "CGxDevice__s_uiVertexShader"); set_name(0x00C5DFE0, "CGxDevice__s_shadowConstants"); + set_name(0x00C5FFF0, "CGxDevice__kWinAspect"); set_name(0x00C5FFF4, "CGxDevice__m_logBytes"); set_name(0x00C5FFF8, "CGxDevice__m_log"); set_name(0x00C5FFFC, "CGxDevice__s_uiPixelShader"); set_name(0x00C60300, "CGxDevice__s_clientAdjust"); + set_name(0x00C606F8, "d3dLight"); set_name(0x00C60760, "isIdent"); set_name(0x00C79CE4, "ClientServices__m_instance"); set_name(0x00C79CE9, "ClientServices__m_selectRealmInfoValid"); diff --git a/profile/3.3.5a-windows-386/include/common/array.h b/profile/3.3.5a-windows-386/include/common/array.h index 3db40a8..38b5f7a 100644 --- a/profile/3.3.5a-windows-386/include/common/array.h +++ b/profile/3.3.5a-windows-386/include/common/array.h @@ -12,13 +12,4 @@ struct CSimpleSortedArray_##T { \ uint32_t m_iterator; \ }; -#define COMMON_SIMPLE_SORTED_ARRAY_POINTER_TO(T) STORM_TS_GROWABLE_ARRAY_POINTER_TO(T); \ -typedef struct CSimpleSortedArray_pointer_to_##T CSimpleSortedArray_pointer_to_##T; \ -struct CSimpleSortedArray_pointer_to_##T { \ - TSGrowableArray_pointer_to_##T m_array; \ - uint32_t m_count; \ - uint32_t m_maxcount; \ - uint32_t m_iterator; \ -}; - #endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/common/datamanager.h b/profile/3.3.5a-windows-386/include/common/datamanager.h index 3e069cd..f75867a 100644 --- a/profile/3.3.5a-windows-386/include/common/datamanager.h +++ b/profile/3.3.5a-windows-386/include/common/datamanager.h @@ -14,8 +14,9 @@ DECLARE_ENUM(CBaseManaged__ManagedFlags); #include "tempest/vector.h" typedef HOBJECT HDATAMGR; +typedef CBaseManaged* pointer_to_CBaseManaged; -STORM_TS_FIXED_ARRAY_POINTER_TO(CBaseManaged); +STORM_TS_FIXED_ARRAY(pointer_to_CBaseManaged); STORM_TS_LIST(CBaseManaged); enum CBaseManaged__ManagedTypeIds { diff --git a/profile/3.3.5a-windows-386/include/event/timer.h b/profile/3.3.5a-windows-386/include/event/timer.h index 6bc891e..d9b3a20 100644 --- a/profile/3.3.5a-windows-386/include/event/timer.h +++ b/profile/3.3.5a-windows-386/include/event/timer.h @@ -20,9 +20,10 @@ struct EvtTimer { uint64_t guidParam; void* guidParam2; }; +typedef EvtTimer* pointer_to_EvtTimer; STORM_TS_PRIORITY_QUEUE(EvtTimer); -STORM_TS_GROWABLE_ARRAY_POINTER_TO(EvtTimer); +STORM_TS_GROWABLE_ARRAY(pointer_to_EvtTimer); // class EvtTimerQueue : public TSPriorityQueue struct EvtTimerQueue { diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/caps.h b/profile/3.3.5a-windows-386/include/external/d3d9/caps.h index becadc2..658e77f 100644 --- a/profile/3.3.5a-windows-386/include/external/d3d9/caps.h +++ b/profile/3.3.5a-windows-386/include/external/d3d9/caps.h @@ -2,20 +2,11 @@ #define D3D9_CAPS_H #include "system/types.h" +#include "external/d3d9/devtype.h" -typedef enum D3DDEVTYPE D3DDEVTYPE; -typedef struct D3DVSHADERCAPS2_0 D3DVSHADERCAPS2_0; -typedef struct D3DPSHADERCAPS2_0 D3DPSHADERCAPS2_0; -typedef struct D3DCAPS9 D3DCAPS9; - -enum D3DDEVTYPE { - D3DDEVTYPE_HAL = 1, - D3DDEVTYPE_REF = 2, - D3DDEVTYPE_SW = 3, - D3DDEVTYPE_NULLREF = 4, - - D3DDEVTYPE_FORCE_uint32_t = 0xffffffff -}; +DECLARE_STRUCT(D3DVSHADERCAPS2_0); +DECLARE_STRUCT(D3DPSHADERCAPS2_0); +DECLARE_STRUCT(D3DCAPS9); struct D3DVSHADERCAPS2_0 { uint32_t Caps; diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/colorvalue.h b/profile/3.3.5a-windows-386/include/external/d3d9/colorvalue.h new file mode 100644 index 0000000..10aa6ec --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/colorvalue.h @@ -0,0 +1,13 @@ +#ifndef D3D9_COLORVALUE_H +#define D3D9_COLORVALUE_H + +DECLARE_STRUCT(D3DCOLORVALUE); + +struct D3DCOLORVALUE { + float r; + float g; + float b; + float a; +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/cubemapfaces.h b/profile/3.3.5a-windows-386/include/external/d3d9/cubemapfaces.h new file mode 100644 index 0000000..4a68387 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/cubemapfaces.h @@ -0,0 +1,17 @@ +#ifndef D3D9_CUBEMAPFACES_H +#define D3D9_CUBEMAPFACES_H + +DECLARE_ENUM(D3DCUBEMAP_FACES); + +enum D3DCUBEMAP_FACES { + D3DCUBEMAP_FACE_POSITIVE_X = 0, + D3DCUBEMAP_FACE_NEGATIVE_X = 1, + D3DCUBEMAP_FACE_POSITIVE_Y = 2, + D3DCUBEMAP_FACE_NEGATIVE_Y = 3, + D3DCUBEMAP_FACE_POSITIVE_Z = 4, + D3DCUBEMAP_FACE_NEGATIVE_Z = 5, + + D3DCUBEMAP_FACE_FORCE_DWORD = 0xffffffff +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/cubetexture.h b/profile/3.3.5a-windows-386/include/external/d3d9/cubetexture.h new file mode 100644 index 0000000..43cb384 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/cubetexture.h @@ -0,0 +1,42 @@ +#ifndef D3D9_CUBETEXTURE_H +#define D3D9_CUBETEXTURE_H + +DECLARE_STRUCT(IDirect3DCubeTexture9__v_table); +DECLARE_STRUCT(IDirect3DCubeTexture9); + +struct IDirect3DCubeTexture9__v_table { + /*** IUnknown methods ***/ + void* v_fn_0_QueryInterface; + void* v_fn_1_AddRef; + void* v_fn_2_Release; + /*** IDirect3DResource9 methods ***/ + void* v_fn_3_GetDevice; + void* v_fn_4_SetPrivateData; + void* v_fn_5_GetPrivateData; + void* v_fn_6_FreePrivateData; + void* v_fn_7_SetPriority; + void* v_fn_8_GetPriority; + void* v_fn_9_PreLoad; + void* v_fn_10_GetType; + /*** IDirect3DBaseTexture9 methods ***/ + void* v_fn_11_SetLOD; + void* v_fn_12_GetLOD; + void* v_fn_13_GetLevelCount; + void* v_fn_14_SetAutoGenFilterType; + void* v_fn_15_GetAutoGenFilterType; + void* v_fn_16_GenerateMipSubLevels; + /*** IDirect3DCubeTexture9 methods ***/ + void* v_fn_17_GetLevelDesc; + void* v_fn_18_GetCubeMapSurface; + void* v_fn_19_LockRect; + void* v_fn_20_UnlockRect; + void* v_fn_21_AddDirtyRect; +}; + +struct IDirect3DCubeTexture9 { + IDirect3DCubeTexture9__v_table* v_table; +}; + +typedef IDirect3DCubeTexture9* LPDIRECT3DCUBETEXTURE9; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/d3d9.h b/profile/3.3.5a-windows-386/include/external/d3d9/d3d9.h new file mode 100644 index 0000000..b3db53d --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/d3d9.h @@ -0,0 +1,30 @@ +#include "external/d3d9/caps.h" +#include "external/d3d9/colorvalue.h" +#include "external/d3d9/cubemapfaces.h" +#include "external/d3d9/cubetexture.h" +#include "external/d3d9/declusage.h" +#include "external/d3d9/device.h" +#include "external/d3d9/devtype.h" +#include "external/d3d9/direct3d.h" +#include "external/d3d9/displaymode.h" +#include "external/d3d9/format.h" +#include "external/d3d9/indexbuffer.h" +#include "external/d3d9/light.h" +#include "external/d3d9/lighttype.h" +#include "external/d3d9/lockedrect.h" +#include "external/d3d9/pixelshader.h" +#include "external/d3d9/pool.h" +#include "external/d3d9/presentparameters.h" +#include "external/d3d9/primitivetype.h" +#include "external/d3d9/query.h" +#include "external/d3d9/renderstatetype.h" +#include "external/d3d9/resourcetype.h" +#include "external/d3d9/surface.h" +#include "external/d3d9/surfacedesc.h" +#include "external/d3d9/swapeffect.h" +#include "external/d3d9/texture.h" +#include "external/d3d9/vector.h" +#include "external/d3d9/vertexbuffer.h" +#include "external/d3d9/vertexdeclaration.h" +#include "external/d3d9/vertexelement.h" +#include "external/d3d9/vertexshader.h" diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/declusage.h b/profile/3.3.5a-windows-386/include/external/d3d9/declusage.h new file mode 100644 index 0000000..9394dba --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/declusage.h @@ -0,0 +1,23 @@ +#ifndef D3D9_DECLUSAGE_H +#define D3D9_DECLUSAGE_H + +DECLARE_ENUM(D3DDECLUSAGE); + +enum D3DDECLUSAGE { + D3DDECLUSAGE_POSITION = 0, + D3DDECLUSAGE_BLENDWEIGHT = 1, + D3DDECLUSAGE_BLENDINDICES = 2, + D3DDECLUSAGE_NORMAL = 3, + D3DDECLUSAGE_PSIZE = 4, + D3DDECLUSAGE_TEXCOORD = 5, + D3DDECLUSAGE_TANGENT = 6, + D3DDECLUSAGE_BINORMAL = 7, + D3DDECLUSAGE_TESSFACTOR = 8, + D3DDECLUSAGE_POSITIONT = 9, + D3DDECLUSAGE_COLOR = 10, + D3DDECLUSAGE_FOG = 11, + D3DDECLUSAGE_DEPTH = 12, + D3DDECLUSAGE_SAMPLE = 13 +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/device.h b/profile/3.3.5a-windows-386/include/external/d3d9/device.h index 34f3a6b..ec5b69f 100644 --- a/profile/3.3.5a-windows-386/include/external/d3d9/device.h +++ b/profile/3.3.5a-windows-386/include/external/d3d9/device.h @@ -3,60 +3,11 @@ #include "system/types.h" -#include "external/d3d9/caps.h" - -typedef int32_t D3DFORMAT; - -DECLARE_STRUCT(D3DDISPLAYMODE); -DECLARE_STRUCT(IDirect3D9_v_table); -DECLARE_STRUCT(IDirect3D9); +DECLARE_STRUCT(IDirect3DDevice9__v_table); DECLARE_STRUCT(IDirect3DDevice9); -DECLARE_STRUCT(IDirect3DDevice9_v_table); -DECLARE_STRUCT(IDirect3DVertexDeclaration9); -DECLARE_STRUCT(IDirect3DSurface9__v_table); -DECLARE_STRUCT(IDirect3DSurface9); -DECLARE_STRUCT(IDirect3DIndexBuffer9); -DECLARE_STRUCT(IDirect3DVertexBuffer9); -DECLARE_STRUCT(IDirect3DTexture9); -DECLARE_STRUCT(IDirect3DVertexShader9__v_table); -DECLARE_STRUCT(IDirect3DVertexShader9); -DECLARE_STRUCT(IDirect3DPixelShader9__v_table); -DECLARE_STRUCT(IDirect3DPixelShader9); -DECLARE_STRUCT(D3DLOCKED_RECT); - -struct D3DDISPLAYMODE { - uint32_t Width; - uint32_t Height; - uint32_t RefreshRate; - D3DFORMAT Format; -}; - -struct IDirect3D9_v_table { - void* v_fn_1_QueryInterface; - void* v_fn_2_AddRef; - void* v_fn_3_Release; - void* v_fn_4_RegisterSoftwareDevice; - void* v_fn_5_GetAdapterCount; - void* v_fn_6_GetAdapterIdentifier; - void* v_fn_7_GetAdapterModeCount; - void* v_fn_8_EnumAdapterModes; - void* v_fn_9_GetAdapterDisplayMode; - void* v_fn_10_CheckDeviceType; - void* v_fn_11_CheckDeviceFormat; - void* v_fn_12_CheckDeviceMultiSampleType; - void* v_fn_13_CheckDepthStencilMatch; - void* v_fn_14_CheckDeviceFormatConversion; - void* v_fn_15_GetDeviceCaps; - void* v_fn_16_GetAdapterMonitor; - void* v_fn_17_CreateDevice; -}; - -struct IDirect3D9 { - IDirect3D9_v_table* v_table; -}; - -struct IDirect3DDevice9_v_table { +struct IDirect3DDevice9__v_table { + /*** IUnknown methods ***/ void* v_fn_0_QueryInterface; void* v_fn_1_AddRef; void* v_fn_2_Release; @@ -180,79 +131,9 @@ struct IDirect3DDevice9_v_table { }; struct IDirect3DDevice9 { - IDirect3DDevice9_v_table* v_table; + IDirect3DDevice9__v_table* v_table; }; -struct IDirect3DVertexDeclaration9 { - void** v_table; -}; - -struct IDirect3DSurface9__v_table { - /*** IUnknown methods ***/ - void* v_fn_0_QueryInterface; - void* v_fn_1_AddRef; - void* v_fn_2_Release; - /*** IDirect3DResource9 methods ***/ - void* v_fn_3_GetDevice; - void* v_fn_4_SetPrivateData; - void* v_fn_5_GetPrivateData; - void* v_fn_6_FreePrivateData; - void* v_fn_7_SetPriority; - void* v_fn_8_GetPriority; - void* v_fn_9_PreLoad; - void* v_fn_10_GetType; - /*** IDirect3DSurface9 methods ***/ - void* v_fn_11_GetContainer; - void* v_fn_12_GetDesc; - void* v_fn_13_LockRect; - void* v_fn_14_UnlockRect; - void* v_fn_15_GetDC; - void* v_fn_16_ReleaseDC; -}; - -struct IDirect3DSurface9 { - IDirect3DSurface9__v_table* v_table; -}; - -struct IDirect3DIndexBuffer9 { - void** v_table; -}; - -struct IDirect3DVertexBuffer9 { - void** v_table; -}; - -struct IDirect3DTexture9 { - void** v_table; -}; - -struct D3DLOCKED_RECT { - int32_t Pitch; - void* pBits; -}; - -struct IDirect3DVertexShader9__v_table { - void* v_fn_0_QueryInterface; - void* v_fn_1_AddRef; - void* v_fn_2_Release; - void* v_fn_3_GetDevice; - void* v_fn_4_GetFunction; -}; - -struct IDirect3DVertexShader9 { - IDirect3DVertexShader9__v_table* v_table; -}; - -struct IDirect3DPixelShader9__v_table { - void* v_fn_0_QueryInterface; - void* v_fn_1_AddRef; - void* v_fn_2_Release; - void* v_fn_3_GetDevice; - void* v_fn_4_GetFunction; -}; - -struct IDirect3DPixelShader9 { - IDirect3DPixelShader9__v_table* v_v_table; -}; +typedef IDirect3DDevice9* LPDIRECT3DDEVICE9; #endif diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/devtype.h b/profile/3.3.5a-windows-386/include/external/d3d9/devtype.h new file mode 100644 index 0000000..6479f84 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/devtype.h @@ -0,0 +1,14 @@ +#ifndef D3D9_DEVTYPE_H +#define D3D9_DEVTYPE_H + +DECLARE_ENUM(D3DDEVTYPE); + +enum D3DDEVTYPE { + D3DDEVTYPE_HAL = 1, + D3DDEVTYPE_REF = 2, + D3DDEVTYPE_SW = 3, + + D3DDEVTYPE_FORCE_DWORD = 0xffffffff +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/direct3d.h b/profile/3.3.5a-windows-386/include/external/d3d9/direct3d.h new file mode 100644 index 0000000..a210993 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/direct3d.h @@ -0,0 +1,35 @@ +#ifndef D3D9_DIRECT3D_H +#define D3D9_DIRECT3D_H + +DECLARE_STRUCT(IDirect3D9__v_table); +DECLARE_STRUCT(IDirect3D9); + +struct IDirect3D9__v_table { + /*** IUnknown methods ***/ + void* v_fn_1_QueryInterface; + void* v_fn_2_AddRef; + void* v_fn_3_Release; + /*** IDirect3D9 methods ***/ + void* v_fn_4_RegisterSoftwareDevice; + void* v_fn_5_GetAdapterCount; + void* v_fn_6_GetAdapterIdentifier; + void* v_fn_7_GetAdapterModeCount; + void* v_fn_8_EnumAdapterModes; + void* v_fn_9_GetAdapterDisplayMode; + void* v_fn_10_CheckDeviceType; + void* v_fn_11_CheckDeviceFormat; + void* v_fn_12_CheckDeviceMultiSampleType; + void* v_fn_13_CheckDepthStencilMatch; + void* v_fn_14_CheckDeviceFormatConversion; + void* v_fn_15_GetDeviceCaps; + void* v_fn_16_GetAdapterMonitor; + void* v_fn_17_CreateDevice; +}; + +struct IDirect3D9 { + IDirect3D9__v_table* v_table; +}; + +typedef IDirect3D9* LPDIRECT3D9; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/displaymode.h b/profile/3.3.5a-windows-386/include/external/d3d9/displaymode.h new file mode 100644 index 0000000..befe0c9 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/displaymode.h @@ -0,0 +1,15 @@ +#ifndef D3D9_DISPLAYMODE_H +#define D3D9_DISPLAYMODE_H + +DECLARE_STRUCT(D3DDISPLAYMODE); + +#include "external/d3d9/format.h" + +struct D3DDISPLAYMODE { + uint32_t Width; + uint32_t Height; + uint32_t RefreshRate; + D3DFORMAT Format; +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/format.h b/profile/3.3.5a-windows-386/include/external/d3d9/format.h new file mode 100644 index 0000000..e4ae861 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/format.h @@ -0,0 +1,94 @@ +#ifndef D3D9_FORMAT_H +#define D3D9_FORMAT_H + +DECLARE_ENUM(D3DFORMAT); + +#ifndef MAKEFOURCC +#define MAKEFOURCC(ch0, ch1, ch2, ch3) \ + ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \ + ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 )) +#endif + +enum D3DFORMAT { + D3DFMT_UNKNOWN = 0, + + D3DFMT_R8G8B8 = 20, + D3DFMT_A8R8G8B8 = 21, + D3DFMT_X8R8G8B8 = 22, + D3DFMT_R5G6B5 = 23, + D3DFMT_X1R5G5B5 = 24, + D3DFMT_A1R5G5B5 = 25, + D3DFMT_A4R4G4B4 = 26, + D3DFMT_R3G3B2 = 27, + D3DFMT_A8 = 28, + D3DFMT_A8R3G3B2 = 29, + D3DFMT_X4R4G4B4 = 30, + D3DFMT_A2B10G10R10 = 31, + D3DFMT_A8B8G8R8 = 32, + D3DFMT_X8B8G8R8 = 33, + D3DFMT_G16R16 = 34, + D3DFMT_A2R10G10B10 = 35, + D3DFMT_A16B16G16R16 = 36, + + + D3DFMT_A8P8 = 40, + D3DFMT_P8 = 41, + + D3DFMT_L8 = 50, + D3DFMT_A8L8 = 51, + D3DFMT_A4L4 = 52, + + D3DFMT_V8U8 = 60, + D3DFMT_L6V5U5 = 61, + D3DFMT_X8L8V8U8 = 62, + D3DFMT_Q8W8V8U8 = 63, + D3DFMT_V16U16 = 64, + D3DFMT_A2W10V10U10 = 67, + + // D3DFMT_UYVY = MAKEFOURCC('U', 'Y', 'V', 'Y'), + // D3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', '2'), + // D3DFMT_DXT1 = MAKEFOURCC('D', 'X', 'T', '1'), + // D3DFMT_DXT2 = MAKEFOURCC('D', 'X', 'T', '2'), + // D3DFMT_DXT3 = MAKEFOURCC('D', 'X', 'T', '3'), + // D3DFMT_DXT4 = MAKEFOURCC('D', 'X', 'T', '4'), + // D3DFMT_DXT5 = MAKEFOURCC('D', 'X', 'T', '5'), + // D3DFMT_MULTI2_ARGB8 = MAKEFOURCC('M', 'E', 'T', '1'), + // D3DFMT_G8R8_G8B8 = MAKEFOURCC('G', 'R', 'G', 'B'), + // D3DFMT_R8G8_B8G8 = MAKEFOURCC('R', 'G', 'B', 'G'), + + D3DFMT_D16_LOCKABLE = 70, + D3DFMT_D32 = 71, + D3DFMT_D15S1 = 73, + D3DFMT_D24S8 = 75, + D3DFMT_D24X8 = 77, + D3DFMT_D24X4S4 = 79, + D3DFMT_D16 = 80, + D3DFMT_L16 = 81, + D3DFMT_D32F_LOCKABLE = 82, + D3DFMT_D24FS8 = 83, + D3DFMT_D32_LOCKABLE = 84, + D3DFMT_S8_LOCKABLE = 85, + + D3DFMT_VERTEXDATA = 100, + D3DFMT_INDEX16 = 101, + D3DFMT_INDEX32 = 102, + D3DFMT_Q16W16V16U16 = 110, + /* Floating point formats */ + D3DFMT_R16F = 111, + D3DFMT_G16R16F = 112, + D3DFMT_A16B16G16R16F = 113, + + /* IEEE formats */ + D3DFMT_R32F = 114, + D3DFMT_G32R32F = 115, + D3DFMT_A32B32G32R32F = 116, + + D3DFMT_CxV8U8 = 117, + D3DFMT_A1 = 118, + D3DFMT_A2B10G10R10_XR_BIAS = 119, + D3DFMT_BINARYBUFFER = 199, + + D3DFMT_FORCE_DWORD = 0xFFFFFFFF +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/indexbuffer.h b/profile/3.3.5a-windows-386/include/external/d3d9/indexbuffer.h new file mode 100644 index 0000000..45c3ecf --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/indexbuffer.h @@ -0,0 +1,33 @@ +#ifndef D3D9_INDEX_BUFFER_H +#define D3D9_INDEX_BUFFER_H + +DECLARE_STRUCT(IDirect3DIndexBuffer9__v_table); +DECLARE_STRUCT(IDirect3DIndexBuffer9); + +struct IDirect3DIndexBuffer9__v_table { + /*** IUnknown methods ***/ + void* v_fn_0_QueryInterface; + void* v_fn_1_AddRef; + void* v_fn_2_Release; + /*** IDirect3DResource9 methods ***/ + void* v_fn_3_GetDevice; + void* v_fn_4_SetPrivateData; + void* v_fn_5_GetPrivateData; + void* v_fn_6_FreePrivateData; + void* v_fn_7_SetPriority; + void* v_fn_8_GetPriority; + void* v_fn_9_PreLoad; + void* v_fn_10_GetType; + /*** IDirect3DIndexBuffer9 methods ***/ + void* v_fn_11_Lock; + void* v_fn_12_Unlock; + void* v_fn_13_GetDesc; +}; + +struct IDirect3DIndexBuffer9 { + IDirect3DIndexBuffer9__v_table* v_table; +}; + +typedef IDirect3DIndexBuffer9* LPDIRECT3DINDEXBUFFER9; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/light.h b/profile/3.3.5a-windows-386/include/external/d3d9/light.h new file mode 100644 index 0000000..866d929 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/light.h @@ -0,0 +1,26 @@ +#ifndef D3D9_LIGHT_H +#define D3D9_LIGHT_H + +DECLARE_STRUCT(D3DLIGHT9); + +#include "external/d3d9/lighttype.h" +#include "external/d3d9/colorvalue.h" +#include "external/d3d9/vector.h" + +struct D3DLIGHT9 { + D3DLIGHTTYPE Type; + D3DCOLORVALUE Diffuse; + D3DCOLORVALUE Specular; + D3DCOLORVALUE Ambient; + D3DVECTOR Position; + D3DVECTOR Direction; + float Range; + float Falloff; + float Attenuation0; + float Attenuation1; + float Attenuation2; + float Theta; + float Phi; +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/lighttype.h b/profile/3.3.5a-windows-386/include/external/d3d9/lighttype.h new file mode 100644 index 0000000..5957fc5 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/lighttype.h @@ -0,0 +1,14 @@ +#ifndef D3D9_LIGHTTYPE_H +#define D3D9_LIGHTTYPE_H + +DECLARE_ENUM(D3DLIGHTTYPE); + +enum D3DLIGHTTYPE { + D3DLIGHT_POINT = 1, + D3DLIGHT_SPOT = 2, + D3DLIGHT_DIRECTIONAL = 3, + + D3DLIGHT_FORCE_DWORD = 0x7fffffff +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/lockedrect.h b/profile/3.3.5a-windows-386/include/external/d3d9/lockedrect.h new file mode 100644 index 0000000..46284ee --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/lockedrect.h @@ -0,0 +1,11 @@ +#ifndef D3D9_LOCKEDRECT_H +#define D3D9_LOCKEDRECT_H + +DECLARE_STRUCT(D3DLOCKED_RECT); + +struct D3DLOCKED_RECT { + int32_t Pitch; + void* pBits; +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/multisampletype.h b/profile/3.3.5a-windows-386/include/external/d3d9/multisampletype.h new file mode 100644 index 0000000..a19be02 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/multisampletype.h @@ -0,0 +1,28 @@ +#ifndef D3D9_MULTISAMPLETYPE_H +#define D3D9_MULTISAMPLETYPE_H + +DECLARE_ENUM(D3DMULTISAMPLE_TYPE); + +enum D3DMULTISAMPLE_TYPE { + D3DMULTISAMPLE_NONE = 0, + D3DMULTISAMPLE_NONMASKABLE = 1, + D3DMULTISAMPLE_2_SAMPLES = 2, + D3DMULTISAMPLE_3_SAMPLES = 3, + D3DMULTISAMPLE_4_SAMPLES = 4, + D3DMULTISAMPLE_5_SAMPLES = 5, + D3DMULTISAMPLE_6_SAMPLES = 6, + D3DMULTISAMPLE_7_SAMPLES = 7, + D3DMULTISAMPLE_8_SAMPLES = 8, + D3DMULTISAMPLE_9_SAMPLES = 9, + D3DMULTISAMPLE_10_SAMPLES = 10, + D3DMULTISAMPLE_11_SAMPLES = 11, + D3DMULTISAMPLE_12_SAMPLES = 12, + D3DMULTISAMPLE_13_SAMPLES = 13, + D3DMULTISAMPLE_14_SAMPLES = 14, + D3DMULTISAMPLE_15_SAMPLES = 15, + D3DMULTISAMPLE_16_SAMPLES = 16, + + D3DMULTISAMPLE_FORCE_DWORD = 0x7fffffff +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/pixelshader.h b/profile/3.3.5a-windows-386/include/external/d3d9/pixelshader.h new file mode 100644 index 0000000..fd9baef --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/pixelshader.h @@ -0,0 +1,19 @@ +#ifndef D3D9_PIXELSHADER_H +#define D3D9_PIXELSHADER_H + +DECLARE_STRUCT(IDirect3DPixelShader9__v_table); +DECLARE_STRUCT(IDirect3DPixelShader9); + +struct IDirect3DPixelShader9__v_table { + void* v_fn_0_QueryInterface; + void* v_fn_1_AddRef; + void* v_fn_2_Release; + void* v_fn_3_GetDevice; + void* v_fn_4_GetFunction; +}; + +struct IDirect3DPixelShader9 { + IDirect3DPixelShader9__v_table* v_v_table; +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/pool.h b/profile/3.3.5a-windows-386/include/external/d3d9/pool.h new file mode 100644 index 0000000..7229108 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/pool.h @@ -0,0 +1,15 @@ +#ifndef D3D9_POOL_H +#define D3D9_POOL_H + +DECLARE_ENUM(D3DPOOL); + +enum D3DPOOL { + D3DPOOL_DEFAULT = 0, + D3DPOOL_MANAGED = 1, + D3DPOOL_SYSTEMMEM = 2, + D3DPOOL_SCRATCH = 3, + + D3DPOOL_FORCE_DWORD = 0x7fffffff +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/presentparameters.h b/profile/3.3.5a-windows-386/include/external/d3d9/presentparameters.h new file mode 100644 index 0000000..277ad89 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/presentparameters.h @@ -0,0 +1,30 @@ +#ifndef D3D9_PRESENTPARAMETERS_H +#define D3D9_PRESENTPARAMETERS_H + +DECLARE_STRUCT(D3DPRESENT_PARAMETERS); + +#include "external/d3d9/format.h" +#include "external/d3d9/multisampletype.h" +#include "external/d3d9/swapeffect.h" + +struct D3DPRESENT_PARAMETERS { + uint32_t BackBufferWidth; + uint32_t BackBufferHeight; + D3DFORMAT BackBufferFormat; + uint32_t BackBufferCount; + + D3DMULTISAMPLE_TYPE MultiSampleType; + uint32_t MultiSampleQuality; + + D3DSWAPEFFECT SwapEffect; + void* hDeviceWindow; + int32_t Windowed; + int32_t EnableAutoDepthStencil; + D3DFORMAT AutoDepthStencilFormat; + uint32_t Flags; + + uint32_t FullScreen_RefreshRateInHz; + uint32_t PresentationInterval; +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/primitivetype.h b/profile/3.3.5a-windows-386/include/external/d3d9/primitivetype.h new file mode 100644 index 0000000..9480d1a --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/primitivetype.h @@ -0,0 +1,17 @@ +#ifndef D3D9_PRIMITIVETYPE_H +#define D3D9_PRIMITIVETYPE_H + +DECLARE_ENUM(D3DPRIMITIVETYPE); + +enum D3DPRIMITIVETYPE { + D3DPT_POINTLIST = 1, + D3DPT_LINELIST = 2, + D3DPT_LINESTRIP = 3, + D3DPT_TRIANGLELIST = 4, + D3DPT_TRIANGLESTRIP = 5, + D3DPT_TRIANGLEFAN = 6, + + D3DPT_FORCE_DWORD = 0x7fffffff +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/query.h b/profile/3.3.5a-windows-386/include/external/d3d9/query.h new file mode 100644 index 0000000..3d5a654 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/query.h @@ -0,0 +1,24 @@ +#ifndef D3D9_QUERY_H +#define D3D9_QUERY_H + +DECLARE_STRUCT(IDirect3DQuery9__v_table); +DECLARE_STRUCT(IDirect3DQuery9); + +struct IDirect3DQuery9__v_table { + void* v_fn_0_QueryInterface; + void* v_fn_1_AddRef; + void* v_fn_2_Release; + void* v_fn_3_GetDevice; + void* v_fn_4_GetType; + void* v_fn_5_GetDataSize; + void* v_fn_6_Issue; + void* v_fn_7_GetData; +}; + +struct IDirect3DQuery9 { + IDirect3DQuery9__v_table* v_table; +}; + +typedef IDirect3DQuery9* LPDIRECT3DQUERY9; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/renderstatetype.h b/profile/3.3.5a-windows-386/include/external/d3d9/renderstatetype.h new file mode 100644 index 0000000..d318ac6 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/renderstatetype.h @@ -0,0 +1,114 @@ +#ifndef D3D9_RENDERSTATETYPE_H +#define D3D9_RENDERSTATETYPE_H + +DECLARE_ENUM(D3DRENDERSTATETYPE); + +enum D3DRENDERSTATETYPE { + D3DRS_ZENABLE = 7, + D3DRS_FILLMODE = 8, + D3DRS_SHADEMODE = 9, + D3DRS_ZWRITEENABLE = 14, + D3DRS_ALPHATESTENABLE = 15, + D3DRS_LASTPIXEL = 16, + D3DRS_SRCBLEND = 19, + D3DRS_DESTBLEND = 20, + D3DRS_CULLMODE = 22, + D3DRS_ZFUNC = 23, + D3DRS_ALPHAREF = 24, + D3DRS_ALPHAFUNC = 25, + D3DRS_DITHERENABLE = 26, + D3DRS_ALPHABLENDENABLE = 27, + D3DRS_FOGENABLE = 28, + D3DRS_SPECULARENABLE = 29, + D3DRS_FOGCOLOR = 34, + D3DRS_FOGTABLEMODE = 35, + D3DRS_FOGSTART = 36, + D3DRS_FOGEND = 37, + D3DRS_FOGDENSITY = 38, + D3DRS_RANGEFOGENABLE = 48, + D3DRS_STENCILENABLE = 52, + D3DRS_STENCILFAIL = 53, + D3DRS_STENCILZFAIL = 54, + D3DRS_STENCILPASS = 55, + D3DRS_STENCILFUNC = 56, + D3DRS_STENCILREF = 57, + D3DRS_STENCILMASK = 58, + D3DRS_STENCILWRITEMASK = 59, + D3DRS_TEXTUREFACTOR = 60, + D3DRS_WRAP0 = 128, + D3DRS_WRAP1 = 129, + D3DRS_WRAP2 = 130, + D3DRS_WRAP3 = 131, + D3DRS_WRAP4 = 132, + D3DRS_WRAP5 = 133, + D3DRS_WRAP6 = 134, + D3DRS_WRAP7 = 135, + D3DRS_CLIPPING = 136, + D3DRS_LIGHTING = 137, + D3DRS_AMBIENT = 139, + D3DRS_FOGVERTEXMODE = 140, + D3DRS_COLORVERTEX = 141, + D3DRS_LOCALVIEWER = 142, + D3DRS_NORMALIZENORMALS = 143, + D3DRS_DIFFUSEMATERIALSOURCE = 145, + D3DRS_SPECULARMATERIALSOURCE = 146, + D3DRS_AMBIENTMATERIALSOURCE = 147, + D3DRS_EMISSIVEMATERIALSOURCE = 148, + D3DRS_VERTEXBLEND = 151, + D3DRS_CLIPPLANEENABLE = 152, + D3DRS_POINTSIZE = 154, + D3DRS_POINTSIZE_MIN = 155, + D3DRS_POINTSPRITEENABLE = 156, + D3DRS_POINTSCALEENABLE = 157, + D3DRS_POINTSCALE_A = 158, + D3DRS_POINTSCALE_B = 159, + D3DRS_POINTSCALE_C = 160, + D3DRS_MULTISAMPLEANTIALIAS = 161, + D3DRS_MULTISAMPLEMASK = 162, + D3DRS_PATCHEDGESTYLE = 163, + D3DRS_DEBUGMONITORTOKEN = 165, + D3DRS_POINTSIZE_MAX = 166, + D3DRS_INDEXEDVERTEXBLENDENABLE = 167, + D3DRS_COLORWRITEENABLE = 168, + D3DRS_TWEENFACTOR = 170, + D3DRS_BLENDOP = 171, + D3DRS_POSITIONDEGREE = 172, + D3DRS_NORMALDEGREE = 173, + D3DRS_SCISSORTESTENABLE = 174, + D3DRS_SLOPESCALEDEPTHBIAS = 175, + D3DRS_ANTIALIASEDLINEENABLE = 176, + D3DRS_MINTESSELLATIONLEVEL = 178, + D3DRS_MAXTESSELLATIONLEVEL = 179, + D3DRS_ADAPTIVETESS_X = 180, + D3DRS_ADAPTIVETESS_Y = 181, + D3DRS_ADAPTIVETESS_Z = 182, + D3DRS_ADAPTIVETESS_W = 183, + D3DRS_ENABLEADAPTIVETESSELLATION= 184, + D3DRS_TWOSIDEDSTENCILMODE = 185, + D3DRS_CCW_STENCILFAIL = 186, + D3DRS_CCW_STENCILZFAIL = 187, + D3DRS_CCW_STENCILPASS = 188, + D3DRS_CCW_STENCILFUNC = 189, + D3DRS_COLORWRITEENABLE1 = 190, + D3DRS_COLORWRITEENABLE2 = 191, + D3DRS_COLORWRITEENABLE3 = 192, + D3DRS_BLENDFACTOR = 193, + D3DRS_SRGBWRITEENABLE = 194, + D3DRS_DEPTHBIAS = 195, + D3DRS_WRAP8 = 198, + D3DRS_WRAP9 = 199, + D3DRS_WRAP10 = 200, + D3DRS_WRAP11 = 201, + D3DRS_WRAP12 = 202, + D3DRS_WRAP13 = 203, + D3DRS_WRAP14 = 204, + D3DRS_WRAP15 = 205, + D3DRS_SEPARATEALPHABLENDENABLE = 206, + D3DRS_SRCBLENDALPHA = 207, + D3DRS_DESTBLENDALPHA = 208, + D3DRS_BLENDOPALPHA = 209, + + D3DRS_FORCE_DWORD = 0x7fffffff +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/resourcetype.h b/profile/3.3.5a-windows-386/include/external/d3d9/resourcetype.h new file mode 100644 index 0000000..aa341f5 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/resourcetype.h @@ -0,0 +1,18 @@ +#ifndef D3D9_RESOURCETYPE_H +#define D3D9_RESOURCETYPE_H + +DECLARE_ENUM(D3DRESOURCETYPE); + +enum D3DRESOURCETYPE { + D3DRTYPE_SURFACE = 1, + D3DRTYPE_VOLUME = 2, + D3DRTYPE_TEXTURE = 3, + D3DRTYPE_VOLUMETEXTURE = 4, + D3DRTYPE_CUBETEXTURE = 5, + D3DRTYPE_VERTEXBUFFER = 6, + D3DRTYPE_INDEXBUFFER = 7, + + D3DRTYPE_FORCE_DWORD = 0x7fffffff +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/surface.h b/profile/3.3.5a-windows-386/include/external/d3d9/surface.h new file mode 100644 index 0000000..ee3b068 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/surface.h @@ -0,0 +1,36 @@ +#ifndef D3D9_SURFACE_H +#define D3D9_SURFACE_H + +DECLARE_STRUCT(IDirect3DSurface9__v_table); +DECLARE_STRUCT(IDirect3DSurface9); + +struct IDirect3DSurface9__v_table { + /*** IUnknown methods ***/ + void* v_fn_0_QueryInterface; + void* v_fn_1_AddRef; + void* v_fn_2_Release; + /*** IDirect3DResource9 methods ***/ + void* v_fn_3_GetDevice; + void* v_fn_4_SetPrivateData; + void* v_fn_5_GetPrivateData; + void* v_fn_6_FreePrivateData; + void* v_fn_7_SetPriority; + void* v_fn_8_GetPriority; + void* v_fn_9_PreLoad; + void* v_fn_10_GetType; + /*** IDirect3DSurface9 methods ***/ + void* v_fn_11_GetContainer; + void* v_fn_12_GetDesc; + void* v_fn_13_LockRect; + void* v_fn_14_UnlockRect; + void* v_fn_15_GetDC; + void* v_fn_16_ReleaseDC; +}; + +struct IDirect3DSurface9 { + IDirect3DSurface9__v_table* v_table; +}; + +typedef IDirect3DSurface9* LPDIRECT3DSURFACE9; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/surfacedesc.h b/profile/3.3.5a-windows-386/include/external/d3d9/surfacedesc.h new file mode 100644 index 0000000..58bf09b --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/surfacedesc.h @@ -0,0 +1,22 @@ +#ifndef D3D9_SURFACEDESC_H +#define D3D9_SURFACEDESC_H + +DECLARE_STRUCT(D3DSURFACE_DESC); + +#include "external/d3d9/format.h" +#include "external/d3d9/resourcetype.h" +#include "external/d3d9/pool.h" +#include "external/d3d9/multisampletype.h" + +struct D3DSURFACE_DESC { + D3DFORMAT Format; + D3DRESOURCETYPE Type; + uint32_t Usage; + D3DPOOL Pool; + D3DMULTISAMPLE_TYPE MultiSampleType; + uint32_t MultiSampleQuality; + uint32_t Width; + uint32_t Height; +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/swapeffect.h b/profile/3.3.5a-windows-386/include/external/d3d9/swapeffect.h new file mode 100644 index 0000000..e22cba3 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/swapeffect.h @@ -0,0 +1,15 @@ +#ifndef D3D9_SWAPEFFECT_H +#define D3D9_SWAPEFFECT_H + +DECLARE_ENUM(D3DSWAPEFFECT); + +enum D3DSWAPEFFECT { + D3DSWAPEFFECT_DISCARD = 1, + D3DSWAPEFFECT_FLIP = 2, + D3DSWAPEFFECT_COPY = 3, + D3DSWAPEFFECT_OVERLAY = 4, + D3DSWAPEFFECT_FLIPEX = 5, + D3DSWAPEFFECT_FORCE_DWORD = 0xFFFFFFFF +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/texture.h b/profile/3.3.5a-windows-386/include/external/d3d9/texture.h new file mode 100644 index 0000000..1c58887 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/texture.h @@ -0,0 +1,42 @@ +#ifndef D3D9_TEXTURE_H +#define D3D9_TEXTURE_H + +DECLARE_STRUCT(IDirect3DTexture9__v_table); +DECLARE_STRUCT(IDirect3DTexture9); + +struct IDirect3DTexture9__v_table { + /*** IUnknown methods ***/ + void* v_fn_0_QueryInterface; + void* v_fn_1_AddRef; + void* v_fn_2_Release; + /*** IDirect3DResource9 methods ***/ + void* v_fn_3_GetDevice; + void* v_fn_4_SetPrivateData; + void* v_fn_5_GetPrivateData; + void* v_fn_6_FreePrivateData; + void* v_fn_7_SetPriority; + void* v_fn_8_GetPriority; + void* v_fn_9_PreLoad; + void* v_fn_10_GetType; + /*** IDirect3DBaseTexture9 methods ***/ + void* v_fn_11_SetLOD; + void* v_fn_12_GetLOD; + void* v_fn_13_GetLevelCount; + void* v_fn_14_SetAutoGenFilterType; + void* v_fn_15_GetAutoGenFilterType; + void* v_fn_16_GenerateMipSubLevels; + /*** IDirect3DTexture9 methods ***/ + void* v_fn_17_GetLevelDesc; + void* v_fn_18_GetSurfaceLevel; + void* v_fn_19_LockRect; + void* v_fn_20_UnlockRect; + void* v_fn_21_AddDirtyRect; +}; + +struct IDirect3DTexture9 { + IDirect3DTexture9__v_table* v_table; +}; + +typedef IDirect3DTexture9* LPDIRECT3DTEXTURE9; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/vector.h b/profile/3.3.5a-windows-386/include/external/d3d9/vector.h new file mode 100644 index 0000000..5e73b7c --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/vector.h @@ -0,0 +1,12 @@ +#ifndef D3D9_VECTOR_H +#define D3D9_VECTOR_H + +DECLARE_STRUCT(D3DVECTOR); + +struct D3DVECTOR { + float x; + float y; + float z; +}; + +#endif diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/vertexbuffer.h b/profile/3.3.5a-windows-386/include/external/d3d9/vertexbuffer.h new file mode 100644 index 0000000..d8047a5 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/vertexbuffer.h @@ -0,0 +1,32 @@ +#ifndef D3D9_VERTEXBUFFER_H + +DECLARE_STRUCT(IDirect3DVertexBuffer9__v_table); +DECLARE_STRUCT(IDirect3DVertexBuffer9); + +struct IDirect3DVertexBuffer9__v_table { + /*** IUnknown methods ***/ + void* v_fn_0_QueryInterface; + void* v_fn_1_AddRef; + void* v_fn_2_Release; + /*** IDirect3DResource9 methods ***/ + void* v_fn_3_GetDevice; + void* v_fn_4_SetPrivateData; + void* v_fn_5_GetPrivateData; + void* v_fn_6_FreePrivateData; + void* v_fn_7_SetPriority; + void* v_fn_8_GetPriority; + void* v_fn_9_PreLoad; + void* v_fn_10_GetType; + /*** IDirect3DVertexBuffer9 methods ***/ + void* v_fn_11_Lock; + void* v_fn_12_Unlock; + void* v_fn_13_GetDesc; +}; + +struct IDirect3DVertexBuffer9 { + IDirect3DVertexBuffer9__v_table* v_table; +}; + +typedef IDirect3DVertexBuffer9* LPDIRECT3DVERTEXBUFFER9; + +#endif diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/vertexdeclaration.h b/profile/3.3.5a-windows-386/include/external/d3d9/vertexdeclaration.h new file mode 100644 index 0000000..36cb0f1 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/vertexdeclaration.h @@ -0,0 +1,23 @@ +#ifndef D3D9_VERTEXDECLARATION_H +#define D3D9_VERTEXDECLARATION_H + +DECLARE_STRUCT(IDirect3DVertexDeclaration9__v_table); +DECLARE_STRUCT(IDirect3DVertexDeclaration9); + +struct IDirect3DVertexDeclaration9__v_table { + /*** IUnknown methods ***/ + void* v_fn_0_QueryInterface; + void* v_fn_1_AddRef; + void* v_fn_2_Release; + /*** IDirect3DVertexDeclaration9 methods ***/ + void* v_fn_3_GetDevice; + void* v_fn_4_GetDeclaration; +}; + +struct IDirect3DVertexDeclaration9 { + IDirect3DVertexDeclaration9__v_table* v_table; +}; + +typedef IDirect3DVertexDeclaration9* LPDIRECT3DVERTEXDECLARATION9; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/vertexelement.h b/profile/3.3.5a-windows-386/include/external/d3d9/vertexelement.h new file mode 100644 index 0000000..3b1162d --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/vertexelement.h @@ -0,0 +1,15 @@ +#ifndef D3D9_VERTEXELEMENT_H +#define D3D9_VERTEXELEMENT_H + +DECLARE_STRUCT(D3DVERTEXELEMENT9); + +struct D3DVERTEXELEMENT9 { + uint16_t Stream; + uint16_t Offset; + uint8_t Type; + uint8_t Method; + uint8_t Usage; + uint8_t UsageIndex; +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/external/d3d9/vertexshader.h b/profile/3.3.5a-windows-386/include/external/d3d9/vertexshader.h new file mode 100644 index 0000000..b343883 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/external/d3d9/vertexshader.h @@ -0,0 +1,21 @@ +#ifndef D3D9_VERTEXSHADER_H +#define D3D9_VERTEXSHADER_H + +DECLARE_STRUCT(IDirect3DVertexShader9__v_table); +DECLARE_STRUCT(IDirect3DVertexShader9); + +struct IDirect3DVertexShader9__v_table { + void* v_fn_0_QueryInterface; + void* v_fn_1_AddRef; + void* v_fn_2_Release; + void* v_fn_3_GetDevice; + void* v_fn_4_GetFunction; +}; + +struct IDirect3DVertexShader9 { + IDirect3DVertexShader9__v_table* v_table; +}; + +typedef IDirect3DVertexShader9* LPDIRECT3DVERTEXSHADER9; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/gx/d3d9.h b/profile/3.3.5a-windows-386/include/gx/d3d9.h index 285e099..e6741fc 100644 --- a/profile/3.3.5a-windows-386/include/gx/d3d9.h +++ b/profile/3.3.5a-windows-386/include/gx/d3d9.h @@ -3,7 +3,7 @@ #include "gx/device.h" -#include "external/d3d9/device.h" +#include "external/d3d9/d3d9.h" #include "storm/array.h" @@ -199,7 +199,9 @@ enum CGxDeviceD3d__EDeviceState { }; struct CGxDeviceD3d__GxVertexDecl { - uint32_t m_unk00; + uint32_t count; + D3DVERTEXELEMENT9 elements[15]; + IDirect3DVertexDeclaration9* d3dDecl; }; STORM_TS_GROWABLE_ARRAY(CGxDeviceD3d__GxVertexDecl); @@ -210,36 +212,41 @@ struct CGxDeviceD3d { uint16_t unk396E; int32_t m_ownhwnd; void* m_d3dLib; - IDirect3D9* m_d3d; - IDirect3DDevice9* m_d3dDevice; + LPDIRECT3D9 m_d3d; + LPDIRECT3DDEVICE9 m_d3dDevice; D3DCAPS9 m_d3dCaps; int32_t m_d3dIsHwDevice; int32_t m_d3dNVAPI; uint32_t m_d3dStereoEnabled; // UC - uint32_t unk3ABC; + uint32_t m_d3dStereoRestore; // m_d3dStereoRestore uint32_t m_d3dStereoHandle; // UC float m_d3dStereoConvergence; // UC float m_d3dStereoSeparation; // UC - int32_t unk3ACC; - TSGrowableArray_CGxDeviceD3d__GxVertexDecl m_vertexDecl; - IDirect3DVertexDeclaration9* m_d3dVertexDecl[14]; + int32_t m_d3dStereoDirty; // 3ACC, UC + TSGrowableArray_CGxDeviceD3d__GxVertexDecl m_gxVertexDecl; + LPDIRECT3DVERTEXDECLARATION9 m_d3dVertexDecl[14]; D3DDISPLAYMODE m_desktopDisplayMode; int32_t m_inScene; - uint32_t unk3B2C; + // set to zero by CGxDeviceD3d::IStateSetD3DDefaults + // checked in IStateSyncLights + int32_t int3B2C; D3DFORMAT m_devDepthFormat; D3DFORMAT m_devAdapterFormat; - uint32_t unk3B38; - IDirect3DSurface9* m_defColorSurface; - IDirect3DSurface9* m_defDepthSurface; - uint32_t unk3B44; - uint32_t unk3B48; - int32_t m_hwCursorNeedsUpdate; - IDirect3DTexture9* m_hwCursorTexture; - IDirect3DSurface9* m_hwCursorBitmap; - uint32_t unk3B58; - IDirect3DVertexDeclaration9* m_d3dCurrentVertexDecl; - IDirect3DIndexBuffer9* m_d3dCurrentIndexBuf; - IDirect3DVertexBuffer9* m_d3dVertexStreamBuf[8]; + // used by CGxDeviceD3d::DeviceSetRenderTarget + // IDirect3DSurface9* surface3B38; + LPDIRECT3DSURFACE9 m_defDepthStencilSurface; + LPDIRECT3DSURFACE9 m_defColorSurface; + LPDIRECT3DSURFACE9 m_defDepthSurface; + // used in DeviceReadPixels + LPDIRECT3DSURFACE9 surface3B44; // m_backBufferSurface? + LPDIRECT3DQUERY9 m_eventQuery; // m_queryEvent? m_eventQuery? + int32_t m_hwCursorDirty; + LPDIRECT3DTEXTURE9 m_hwCursorTexture; + LPDIRECT3DSURFACE9 m_hwCursorBitmap; + CGxTex* texture3B58; + LPDIRECT3DVERTEXDECLARATION9 m_d3dCurrentVertexDecl; + LPDIRECT3DINDEXBUFFER9 m_d3dCurrentIndexBuf; + LPDIRECT3DVERTEXBUFFER9 m_d3dVertexStreamBuf[8]; uint32_t m_d3dVertexStreamOfs[8]; uint32_t m_d3dVertexStreamStride[8]; uint32_t m_deviceStates[182]; diff --git a/profile/3.3.5a-windows-386/include/gx/device.h b/profile/3.3.5a-windows-386/include/gx/device.h index 5a884c2..2a379e1 100644 --- a/profile/3.3.5a-windows-386/include/gx/device.h +++ b/profile/3.3.5a-windows-386/include/gx/device.h @@ -13,11 +13,13 @@ #include "tempest/box.h" #include "tempest/matrix.h" #include "tempest/rect.h" +#include "tempest/plane.h" #include "tempest/vector.h" #include "gx/types.h" #include "gx/caps.h" #include "gx/format.h" +#include "gx/light.h" #include "gx/state_bom.h" #include "gx/shader.h" #include "gx/matrix_stack.h" @@ -31,7 +33,8 @@ DECLARE_STRUCT(CGxPushedRenderState); DECLARE_STRUCT(ShaderConstants); DECLARE_STRUCT(CGxDevice); DECLARE_STRUCT(CGxDevice__TextureTarget); -DECLARE_STRUCT(CGxDevice__vtable); +DECLARE_STRUCT(CGxDevice__v_table); +DECLARE_STRUCT(CGxDevice__GxLight); typedef void (*DEVICERESTOREDCALLBACK)(); STORM_TS_GROWABLE_ARRAY(DEVICERESTOREDCALLBACK); @@ -68,8 +71,15 @@ struct CGxDevice__TextureTarget { void* m_apiSpecific; }; +// GxLight? +struct CGxDevice__GxLight { + CGxLight light; + int32_t enable; + uint16_t flags; +}; + // 84 functions -struct CGxDevice__vtable { +struct CGxDevice__v_table { // void ITexMarkAsUpdated(CGxTex* texId); void* v_fn_0_ITexMarkAsUpdated; // void IRsSendToHw(EGxRenderState rs); @@ -146,7 +156,7 @@ struct CGxDevice__vtable { // } // void DeviceResolveDepthBuffer(CGxTex* texId); void* v_fn_26_DeviceResolveDepthBuffer; - // void DeviceCopyTex(CGxTex* a1, int32_t a2, CGxTex* a3, int32_t a4); + // void DeviceCopyTex(CGxTex* sourceTex, uint32_t sourcePlane, CGxTex* destTex, uint32_t destPlane); void* v_fn_27_DeviceCopyTex; // void DeviceOverride(EGxOverride override, uint32_t value); void* v_fn_28_DeviceOverride; @@ -164,11 +174,11 @@ struct CGxDevice__vtable { void* v_fn_34_RemoveStereoChangedCallback; // void CapsWindowSize(CRect& dst); void* v_fn_35_CapsWindowSize; - // void CapsWindowSize(CRect& dst); + // void CapsWindowSizeInScreenCoords(CRect& dst); void* v_fn_36_CapsWindowSizeInScreenCoords; - // void LogCrashInfo(char* buffer, uint32_t size); + // void LogCrashInfo(char* buffer, uint32_t buffersize); void* v_fn_37_LogCrashInfo; - // void ScenePresent(uint32_t mask); + // void ScenePresent(); void* v_fn_38_ScenePresent; // void SceneClear(uint32_t mask, CImVector color); void* v_fn_39_SceneClear; @@ -210,15 +220,15 @@ struct CGxDevice__vtable { void* v_fn_57_TexCreate; // void TexDestroy(CGxTex* texId); void* v_fn_58_TexDestroy; - // int32_t TexCopy(CGxTex* a1, CGxTex* a2, const C2iVector& a3, const C2iVector& a4, uint32_t a5, uint32_t a6); + // int32_t TexCopy(CGxTex* sourceTex, CGxTex* destTex, const C2iVector& pos, const C2iVector& size, uint32_t level, uint32_t plane); void* v_fn_59_TexCopy; - // bool TexStretch(CGxTex* a1, CGxTex* a2, const CiRect* a3, const CiRect* a4, uint32_t a5, uint32_t a6); + // bool TexStretch(CGxTex* sourceTex, CGxTex* destTex, const CiRect* destRect, const CiRect* sourceRect, uint32_t level, uint32_t plane); void* v_fn_60_TexStretch; // void TexSetCacheSize(int32_t cacheSize); void* v_fn_61_TexSetCacheSize; - // void QueryCreate(CGxQuery*& query, EGxQueryType queryType); + // void QueryCreate(CGxQuery*& query, EGxQueryType type); void* v_fn_62_QueryCreate; - // bool QueryDestroy(CGxQuery*& query); + // void QueryDestroy(CGxQuery*& query); void* v_fn_63_QueryDestroy; // bool QueryBegin(CGxQuery* query); void* v_fn_64_QueryBegin; @@ -228,7 +238,7 @@ struct CGxDevice__vtable { void* v_fn_66_QueryGetParam; // bool QueryGetData(CGxQuery* query, uint32_t* data); void* v_fn_67_QueryGetData; - // void ShaderCreate(CGxShader*[] shaders[], EGxShTarget target, const char* a3, const char* a4, int32_t permutations); + // void ShaderCreate(CGxShader* shaders[], EGxShTarget target, const char* a3, const char* a4, int32_t permutations); void* v_fn_68_ShaderCreate; // void ShaderDestroy(CGxShader*& shader); void* v_fn_69_ShaderDestroy; @@ -265,7 +275,7 @@ struct CGxDevice__vtable { // this class is 14692 bytes in size struct CGxDevice { // pointer to struct CGxDevice__vtable - CGxDevice__vtable* v_vtable; // 0x0 (size: 0x4) + CGxDevice__v_table* v_table; // 0x0 (size: 0x4) TSGrowableArray_CGxPushedRenderState m_pushedStates; // 0x4 (size: 0x14) TSGrowableArray_uint32_t m_stackOffsets; // 0x18 (size: 0x14) TSGrowableArray_EGxRenderState m_dirtyStates; // 0x2C (size: 0x14) @@ -299,19 +309,37 @@ struct CGxDevice { // 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_context; + // Set to zero by CGxDevice::ScenePresent + // prevents Draw from working if != 0 int32_t intF5C; int32_t m_windowVisible; + // set to 1 by ICursorClip int32_t intF64; - int32_t intF68; - // Invented name, though seems to have the same place as CGxDeviceD3d::m_d3dNeedsReset (Alpha) - int32_t m_needsReset; + // Incremented by CGxDevice::ScenePresent + int32_t m_frameCount; // m_perfCounter? + // seems to have the same place as CGxDeviceD3d::m_d3dNeedsReset (Alpha) + int32_t m_viewportDirty; // m_viewportDirty CBoundingBox m_viewport; C44Matrix m_projection; C44Matrix m_projNative; // CGxMatrixStack m_xforms[GxXforms_Last]; CGxMatrixStack m_xforms[11]; CGxMatrixStack m_texGen[8]; - uint32_t unk24D0[102]; + // used by CGxDevice::ClipPlaneSet + // seems to be a bitmask to note which clip planes are set + uint32_t m_clipPlaneMask; + // used by: + // CGxDevice::ClipPlaneSet + C4Plane m_clipPlane[6]; // m_clipPlanes? + // used by + // CGxDeviceD3d::DeviceSetRenderTarget + // set to 1 + // CGxDeviceD3d::IStateSyncScissorRect + int32_t m_scissorRectDirty; // m_scissorRectDirty? + CRect m_scissorRect; + // something to do with lighting? + // uint32_t unk2548[72]; + CGxDevice__GxLight m_lights[4]; // uint32_t unk2536[60]; TSHashTable_CGxShader_HASHKEY_STRI m_shaderList[6]; uint32_t m_appMasterEnables; @@ -339,7 +367,9 @@ struct CGxDevice { EmergencyMem m_emergencyMem[2]; // 0x28C4 TSFixedArray_CGxAppRenderState m_appRenderStates; TSFixedArray_CGxStateBom m_hwRenderStates; - uint32_t unk2904[3]; // 0x2904 (size 0xC) + // Accessed by ITexForceRecreation + // uint32_t unk2904[3]; // 0x2904 (size 0xC) // possibly: m_textures? TSList ? + TSExplicitList_CGxTex m_textures; CGxDevice__TextureTarget m_textureTarget[2]; TSExplicitList_CGxQuery m_queryList; // 0x2928 int32_t m_scrShotClick; // 0x2934 diff --git a/profile/3.3.5a-windows-386/include/gx/emergencymem.h b/profile/3.3.5a-windows-386/include/gx/emergencymem.h index 43c2c2b..4c515e2 100644 --- a/profile/3.3.5a-windows-386/include/gx/emergencymem.h +++ b/profile/3.3.5a-windows-386/include/gx/emergencymem.h @@ -1,14 +1,13 @@ #ifndef GX_EMERGENCY_MEM_H #define GX_EMERGENCY_MEM_H +#include "storm/array/uint8_t.h" + DECLARE_STRUCT(EmergencyMem); struct EmergencyMem { - uint32_t unk00; - uint32_t unk04; - uint32_t unk08; - uint32_t unk0C; - uint32_t unk10; + TSGrowableArray_uint8_t m_data; + }; #endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/gx/format.h b/profile/3.3.5a-windows-386/include/gx/format.h index ffae7b4..c0e1d37 100644 --- a/profile/3.3.5a-windows-386/include/gx/format.h +++ b/profile/3.3.5a-windows-386/include/gx/format.h @@ -31,7 +31,7 @@ struct CGxFormat { CGxFormat__Format depthFormat; C2iVector size; // set by CVGxTripleBufferCallback - uint32_t backbuffers; // buffering? buffer? framebufferCount? + uint32_t backBufferCount; // buffering? buffer? framebufferCount? uint32_t sampleCount; float multisampleQuality; // UC, write at 00769693 CGxFormat__Format colorFormat; diff --git a/profile/3.3.5a-windows-386/include/gx/light.h b/profile/3.3.5a-windows-386/include/gx/light.h index 8e1e997..50b8de1 100644 --- a/profile/3.3.5a-windows-386/include/gx/light.h +++ b/profile/3.3.5a-windows-386/include/gx/light.h @@ -8,7 +8,7 @@ DECLARE_STRUCT(CGxLight); struct CGxLight { // int32_t m_enabled : 1; // int32_t m_isOmni : 1; - int32_t m_flags; + int32_t f_flags; C3Vector m_dir; C3Vector m_ambColor; C3Vector m_dirColor; diff --git a/profile/3.3.5a-windows-386/include/gx/texture.h b/profile/3.3.5a-windows-386/include/gx/texture.h index 118702d..ba4e02e 100644 --- a/profile/3.3.5a-windows-386/include/gx/texture.h +++ b/profile/3.3.5a-windows-386/include/gx/texture.h @@ -23,6 +23,7 @@ struct CGxTexFlags { uint32_t f_flags; }; +STORM_TS_LIST(CGxTex); struct CGxTex { CiRect m_updateRect; int16_t m_updatePlaneMin; @@ -38,8 +39,7 @@ struct CGxTex { void* m_userFunc; void* m_apiSpecificData; void* m_apiSpecificData2; - uint32_t unk40; - uint32_t unk44; + TSLink_CGxTex m_link; uint32_t unk48; uint32_t unk4C; uint32_t unk50; diff --git a/profile/3.3.5a-windows-386/include/main.h b/profile/3.3.5a-windows-386/include/main.h index 578687e..9b040a6 100644 --- a/profile/3.3.5a-windows-386/include/main.h +++ b/profile/3.3.5a-windows-386/include/main.h @@ -5,9 +5,7 @@ // Types (include all files to expose them in the disassembler) // external types (c-ified) -#include "external/d3d9/caps.h" -#include "external/d3d9/device.h" - +#include "external/d3d9/d3d9.h" #include "external/lua/lua.h" #include "async/object.h" @@ -54,6 +52,7 @@ #include "gx/caps.h" #include "gx/device.h" #include "gx/format.h" +#include "gx/light.h" #include "gx/matrix_stack.h" #include "gx/monitor_mode.h" #include "gx/opengl.h" @@ -78,6 +77,8 @@ #include "m2/shared.h" #include "m2/types.h" +#include "nvapi/nvapi.h" + #include "os/processorfeatures.h" #include "os/timemanager.h" diff --git a/profile/3.3.5a-windows-386/include/nvapi/nvapi.h b/profile/3.3.5a-windows-386/include/nvapi/nvapi.h new file mode 100644 index 0000000..6fc5557 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/nvapi/nvapi.h @@ -0,0 +1,184 @@ +#ifndef NVAPI_NVAPI_H +#define NVAPI_NVAPI_H + +DECLARE_STRUCT(NvAPI_InterfaceTable); +DECLARE_ENUM(NvAPI_Status); +DECLARE_ENUM(NV_StereoRegistryProfileType); + +enum NvAPI_Status { + NVAPI_OK = 0, //!< Success. Request is completed. + NVAPI_ERROR = -1, //!< Generic error + NVAPI_LIBRARY_NOT_FOUND = -2, //!< NVAPI support library cannot be loaded. + NVAPI_NO_IMPLEMENTATION = -3, //!< not implemented in current driver installation + NVAPI_API_NOT_INITIALIZED = -4, //!< NvAPI_Initialize has not been called (successfully) + NVAPI_INVALID_ARGUMENT = -5, //!< The argument/parameter value is not valid or NULL. + NVAPI_NVIDIA_DEVICE_NOT_FOUND = -6, //!< No NVIDIA display driver, or NVIDIA GPU driving a display, was found. + NVAPI_END_ENUMERATION = -7, //!< No more items to enumerate + NVAPI_INVALID_HANDLE = -8, //!< Invalid handle + NVAPI_INCOMPATIBLE_STRUCT_VERSION = -9, //!< An argument's structure version is not supported + NVAPI_HANDLE_INVALIDATED = -10, //!< The handle is no longer valid (likely due to GPU or display re-configuration) + NVAPI_OPENGL_CONTEXT_NOT_CURRENT = -11, //!< No NVIDIA OpenGL context is current (but needs to be) + NVAPI_INVALID_POINTER = -14, //!< An invalid pointer, usually NULL, was passed as a parameter + NVAPI_NO_GL_EXPERT = -12, //!< OpenGL Expert is not supported by the current drivers + NVAPI_INSTRUMENTATION_DISABLED = -13, //!< OpenGL Expert is supported, but driver instrumentation is currently disabled + NVAPI_NO_GL_NSIGHT = -15, //!< OpenGL does not support Nsight + + NVAPI_EXPECTED_LOGICAL_GPU_HANDLE = -100, //!< Expected a logical GPU handle for one or more parameters + NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE = -101, //!< Expected a physical GPU handle for one or more parameters + NVAPI_EXPECTED_DISPLAY_HANDLE = -102, //!< Expected an NV display handle for one or more parameters + NVAPI_INVALID_COMBINATION = -103, //!< The combination of parameters is not valid. + NVAPI_NOT_SUPPORTED = -104, //!< Requested feature is not supported in the selected GPU + NVAPI_PORTID_NOT_FOUND = -105, //!< No port ID was found for the I2C transaction + NVAPI_EXPECTED_UNATTACHED_DISPLAY_HANDLE = -106, //!< Expected an unattached display handle as one of the input parameters. + NVAPI_INVALID_PERF_LEVEL = -107, //!< Invalid perf level + NVAPI_DEVICE_BUSY = -108, //!< Device is busy; request not fulfilled + NVAPI_NV_PERSIST_FILE_NOT_FOUND = -109, //!< NV persist file is not found + NVAPI_PERSIST_DATA_NOT_FOUND = -110, //!< NV persist data is not found + NVAPI_EXPECTED_TV_DISPLAY = -111, //!< Expected a TV output display + NVAPI_EXPECTED_TV_DISPLAY_ON_DCONNECTOR = -112, //!< Expected a TV output on the D Connector - HDTV_EIAJ4120. + NVAPI_NO_ACTIVE_SLI_TOPOLOGY = -113, //!< SLI is not active on this device. + NVAPI_SLI_RENDERING_MODE_NOTALLOWED = -114, //!< Setup of SLI rendering mode is not possible right now. + NVAPI_EXPECTED_DIGITAL_FLAT_PANEL = -115, //!< Expected a digital flat panel. + NVAPI_ARGUMENT_EXCEED_MAX_SIZE = -116, //!< Argument exceeds the expected size. + NVAPI_DEVICE_SWITCHING_NOT_ALLOWED = -117, //!< Inhibit is ON due to one of the flags in NV_GPU_DISPLAY_CHANGE_INHIBIT or SLI active. + NVAPI_TESTING_CLOCKS_NOT_SUPPORTED = -118, //!< Testing of clocks is not supported. + NVAPI_UNKNOWN_UNDERSCAN_CONFIG = -119, //!< The specified underscan config is from an unknown source (e.g. INF) + NVAPI_TIMEOUT_RECONFIGURING_GPU_TOPO = -120, //!< Timeout while reconfiguring GPUs + NVAPI_DATA_NOT_FOUND = -121, //!< Requested data was not found + NVAPI_EXPECTED_ANALOG_DISPLAY = -122, //!< Expected an analog display + NVAPI_NO_VIDLINK = -123, //!< No SLI video bridge is present + NVAPI_REQUIRES_REBOOT = -124, //!< NVAPI requires a reboot for the settings to take effect + NVAPI_INVALID_HYBRID_MODE = -125, //!< The function is not supported with the current Hybrid mode. + NVAPI_MIXED_TARGET_TYPES = -126, //!< The target types are not all the same + NVAPI_SYSWOW64_NOT_SUPPORTED = -127, //!< The function is not supported from 32-bit on a 64-bit system. + NVAPI_IMPLICIT_SET_GPU_TOPOLOGY_CHANGE_NOT_ALLOWED = -128, //!< There is no implicit GPU topology active. Use NVAPI_SetHybridMode to change topology. + NVAPI_REQUEST_USER_TO_CLOSE_NON_MIGRATABLE_APPS = -129, //!< Prompt the user to close all non-migratable applications. + NVAPI_OUT_OF_MEMORY = -130, //!< Could not allocate sufficient memory to complete the call. + NVAPI_WAS_STILL_DRAWING = -131, //!< The previous operation that is transferring information to or from this surface is incomplete. + NVAPI_FILE_NOT_FOUND = -132, //!< The file was not found. + NVAPI_TOO_MANY_UNIQUE_STATE_OBJECTS = -133, //!< There are too many unique instances of a particular type of state object. + NVAPI_INVALID_CALL = -134, //!< The method call is invalid. For example, a method's parameter may not be a valid pointer. + NVAPI_D3D10_1_LIBRARY_NOT_FOUND = -135, //!< d3d10_1.dll cannot be loaded. + NVAPI_FUNCTION_NOT_FOUND = -136, //!< Couldn't find the function in the loaded DLL. + NVAPI_INVALID_USER_PRIVILEGE = -137, //!< The application will require Administrator privileges to access this API. + //!< The application can be elevated to a higher permission level by selecting "Run as Administrator". + NVAPI_EXPECTED_NON_PRIMARY_DISPLAY_HANDLE = -138, //!< The handle corresponds to GDIPrimary. + NVAPI_EXPECTED_COMPUTE_GPU_HANDLE = -139, //!< Setting Physx GPU requires that the GPU is compute-capable. + NVAPI_STEREO_NOT_INITIALIZED = -140, //!< The Stereo part of NVAPI failed to initialize completely. Check if the stereo driver is installed. + NVAPI_STEREO_REGISTRY_ACCESS_FAILED = -141, //!< Access to stereo-related registry keys or values has failed. + NVAPI_STEREO_REGISTRY_PROFILE_TYPE_NOT_SUPPORTED = -142, //!< The given registry profile type is not supported. + NVAPI_STEREO_REGISTRY_VALUE_NOT_SUPPORTED = -143, //!< The given registry value is not supported. + NVAPI_STEREO_NOT_ENABLED = -144, //!< Stereo is not enabled and the function needed it to execute completely. + NVAPI_STEREO_NOT_TURNED_ON = -145, //!< Stereo is not turned on and the function needed it to execute completely. + NVAPI_STEREO_INVALID_DEVICE_INTERFACE = -146, //!< Invalid device interface. + NVAPI_STEREO_PARAMETER_OUT_OF_RANGE = -147, //!< Separation percentage or JPEG image capture quality is out of [0-100] range. + NVAPI_STEREO_FRUSTUM_ADJUST_MODE_NOT_SUPPORTED = -148, //!< The given frustum adjust mode is not supported. + NVAPI_TOPO_NOT_POSSIBLE = -149, //!< The mosaic topology is not possible given the current state of the hardware. + NVAPI_MODE_CHANGE_FAILED = -150, //!< An attempt to do a display resolution mode change has failed. + NVAPI_D3D11_LIBRARY_NOT_FOUND = -151, //!< d3d11.dll/d3d11_beta.dll cannot be loaded. + NVAPI_INVALID_ADDRESS = -152, //!< Address is outside of valid range. + NVAPI_STRING_TOO_SMALL = -153, //!< The pre-allocated string is too small to hold the result. + NVAPI_MATCHING_DEVICE_NOT_FOUND = -154, //!< The input does not match any of the available devices. + NVAPI_DRIVER_RUNNING = -155, //!< Driver is running. + NVAPI_DRIVER_NOTRUNNING = -156, //!< Driver is not running. + NVAPI_ERROR_DRIVER_RELOAD_REQUIRED = -157, //!< A driver reload is required to apply these settings. + NVAPI_SET_NOT_ALLOWED = -158, //!< Intended setting is not allowed. + NVAPI_ADVANCED_DISPLAY_TOPOLOGY_REQUIRED = -159, //!< Information can't be returned due to "advanced display topology". + NVAPI_SETTING_NOT_FOUND = -160, //!< Setting is not found. + NVAPI_SETTING_SIZE_TOO_LARGE = -161, //!< Setting size is too large. + NVAPI_TOO_MANY_SETTINGS_IN_PROFILE = -162, //!< There are too many settings for a profile. + NVAPI_PROFILE_NOT_FOUND = -163, //!< Profile is not found. + NVAPI_PROFILE_NAME_IN_USE = -164, //!< Profile name is duplicated. + NVAPI_PROFILE_NAME_EMPTY = -165, //!< Profile name is empty. + NVAPI_EXECUTABLE_NOT_FOUND = -166, //!< Application not found in the Profile. + NVAPI_EXECUTABLE_ALREADY_IN_USE = -167, //!< Application already exists in the other profile. + NVAPI_DATATYPE_MISMATCH = -168, //!< Data Type mismatch + NVAPI_PROFILE_REMOVED = -169, //!< The profile passed as parameter has been removed and is no longer valid. + NVAPI_UNREGISTERED_RESOURCE = -170, //!< An unregistered resource was passed as a parameter. + NVAPI_ID_OUT_OF_RANGE = -171, //!< The DisplayId corresponds to a display which is not within the normal outputId range. + NVAPI_DISPLAYCONFIG_VALIDATION_FAILED = -172, //!< Display topology is not valid so the driver cannot do a mode set on this configuration. + NVAPI_DPMST_CHANGED = -173, //!< Display Port Multi-Stream topology has been changed. + NVAPI_INSUFFICIENT_BUFFER = -174, //!< Input buffer is insufficient to hold the contents. + NVAPI_ACCESS_DENIED = -175, //!< No access to the caller. + NVAPI_MOSAIC_NOT_ACTIVE = -176, //!< The requested action cannot be performed without Mosaic being enabled. + NVAPI_SHARE_RESOURCE_RELOCATED = -177, //!< The surface is relocated away from video memory. + NVAPI_REQUEST_USER_TO_DISABLE_DWM = -178, //!< The user should disable DWM before calling NvAPI. + NVAPI_D3D_DEVICE_LOST = -179, //!< D3D device status is D3DERR_DEVICELOST or D3DERR_DEVICENOTRESET - the user has to reset the device. + NVAPI_INVALID_CONFIGURATION = -180, //!< The requested action cannot be performed in the current state. + NVAPI_STEREO_HANDSHAKE_NOT_DONE = -181, //!< Call failed as stereo handshake not completed. + NVAPI_EXECUTABLE_PATH_IS_AMBIGUOUS = -182, //!< The path provided was too short to determine the correct NVDRS_APPLICATION + NVAPI_DEFAULT_STEREO_PROFILE_IS_NOT_DEFINED = -183, //!< Default stereo profile is not currently defined + NVAPI_DEFAULT_STEREO_PROFILE_DOES_NOT_EXIST = -184, //!< Default stereo profile does not exist + NVAPI_CLUSTER_ALREADY_EXISTS = -185, //!< A cluster is already defined with the given configuration. + NVAPI_DPMST_DISPLAY_ID_EXPECTED = -186, //!< The input display id is not that of a multi stream enabled connector or a display device in a multi stream topology + NVAPI_INVALID_DISPLAY_ID = -187, //!< The input display id is not valid or the monitor associated to it does not support the current operation + NVAPI_STREAM_IS_OUT_OF_SYNC = -188, //!< While playing secure audio stream, stream goes out of sync + NVAPI_INCOMPATIBLE_AUDIO_DRIVER = -189, //!< Older audio driver version than required + NVAPI_VALUE_ALREADY_SET = -190, //!< Value already set, setting again not allowed. + NVAPI_TIMEOUT = -191, //!< Requested operation timed out + NVAPI_GPU_WORKSTATION_FEATURE_INCOMPLETE = -192, //!< The requested workstation feature set has incomplete driver internal allocation resources + NVAPI_STEREO_INIT_ACTIVATION_NOT_DONE = -193, //!< Call failed because InitActivation was not called. + NVAPI_SYNC_NOT_ACTIVE = -194, //!< The requested action cannot be performed without Sync being enabled. + NVAPI_SYNC_MASTER_NOT_FOUND = -195, //!< The requested action cannot be performed without Sync Master being enabled. + NVAPI_INVALID_SYNC_TOPOLOGY = -196, //!< Invalid displays passed in the NV_GSYNC_DISPLAY pointer. + NVAPI_ECID_SIGN_ALGO_UNSUPPORTED = -197, //!< The specified signing algorithm is not supported. Either an incorrect value was entered or the current installed driver/hardware does not support the input value. + NVAPI_ECID_KEY_VERIFICATION_FAILED = -198, //!< The encrypted public key verification has failed. + NVAPI_FIRMWARE_OUT_OF_DATE = -199, //!< The device's firmware is out of date. + NVAPI_FIRMWARE_REVISION_NOT_SUPPORTED = -200, //!< The device's firmware is not supported. + NVAPI_LICENSE_CALLER_AUTHENTICATION_FAILED = -201, //!< The caller is not authorized to modify the License. + NVAPI_D3D_DEVICE_NOT_REGISTERED = -202, //!< The user tried to use a deferred context without registering the device first + NVAPI_RESOURCE_NOT_ACQUIRED = -203, //!< Head or SourceId was not reserved for the VR Display before doing the Modeset or the dedicated display. + NVAPI_TIMING_NOT_SUPPORTED = -204, //!< Provided timing is not supported. + NVAPI_HDCP_ENCRYPTION_FAILED = -205, //!< HDCP Encryption Failed for the device. Would be applicable when the device is HDCP Capable. + NVAPI_PCLK_LIMITATION_FAILED = -206, //!< Provided mode is over sink device pclk limitation. + NVAPI_NO_CONNECTOR_FOUND = -207, //!< No connector on GPU found. + NVAPI_HDCP_DISABLED = -208, //!< When a non-HDCP capable HMD is connected, we would inform user by this code. + NVAPI_API_IN_USE = -209, //!< Atleast an API is still being called + NVAPI_NVIDIA_DISPLAY_NOT_FOUND = -210, //!< No display found on Nvidia GPU(s). + NVAPI_PRIV_SEC_VIOLATION = -211, //!< Priv security violation, improper access to a secured register. + NVAPI_INCORRECT_VENDOR = -212, //!< NVAPI cannot be called by this vendor + NVAPI_DISPLAY_IN_USE = -213, //!< DirectMode Display is already in use + NVAPI_UNSUPPORTED_CONFIG_NON_HDCP_HMD = -214, //!< The Config is having Non-NVidia GPU with Non-HDCP HMD connected + NVAPI_MAX_DISPLAY_LIMIT_REACHED = -215, //!< GPU's Max Display Limit has Reached + NVAPI_INVALID_DIRECT_MODE_DISPLAY = -216, //!< DirectMode not Enabled on the Display + NVAPI_GPU_IN_DEBUG_MODE = -217, //!< GPU is in debug mode, OC is NOT allowed. + NVAPI_D3D_CONTEXT_NOT_FOUND = -218, //!< No NvAPI context was found for this D3D object + NVAPI_STEREO_VERSION_MISMATCH = -219, //!< there is version mismatch between stereo driver and dx driver + NVAPI_GPU_NOT_POWERED = -220, //!< GPU is not powered and so the request cannot be completed. + NVAPI_ERROR_DRIVER_RELOAD_IN_PROGRESS = -221, //!< The display driver update in progress. + NVAPI_WAIT_FOR_HW_RESOURCE = -222, //!< Wait for HW resources allocation + NVAPI_REQUIRE_FURTHER_HDCP_ACTION = -223, //!< operation requires further HDCP action + NVAPI_DISPLAY_MUX_TRANSITION_FAILED = -224, //!< Dynamic Mux transition failure + NVAPI_INVALID_DSC_VERSION = -225, //!< Invalid DSC version + NVAPI_INVALID_DSC_SLICECOUNT = -226, //!< Invalid DSC slice count + NVAPI_INVALID_DSC_OUTPUT_BPP = -227, //!< Invalid DSC output BPP + NVAPI_FAILED_TO_LOAD_FROM_DRIVER_STORE = -228, //!< There was an error while loading nvapi.dll from the driver store. + NVAPI_NO_VULKAN = -229, //!< OpenGL does not export Vulkan fake extensions + NVAPI_REQUEST_PENDING = -230, //!< A request for NvTOPPs telemetry CData has already been made and is pending a response. + NVAPI_RESOURCE_IN_USE = -231, //!< Operation cannot be performed because the resource is in use. + NVAPI_INVALID_IMAGE = -232, //!< Device kernel image is invalid + NVAPI_INVALID_PTX = -233, //!< PTX JIT compilation failed + NVAPI_NVLINK_UNCORRECTABLE = -234, //!< Uncorrectable NVLink error was detected during the execution + NVAPI_JIT_COMPILER_NOT_FOUND = -235, //!< PTX JIT compiler library was not found. + NVAPI_INVALID_SOURCE = -236, //!< Device kernel source is invalid. + NVAPI_ILLEGAL_INSTRUCTION = -237, //!< While executing a kernel, the device encountered an illegal instruction. + NVAPI_INVALID_PC = -238, //!< While executing a kernel, the device program counter wrapped its address space + NVAPI_LAUNCH_FAILED = -239, //!< An exception occurred on the device while executing a kernel + NVAPI_NOT_PERMITTED = -240, //!< Attempted operation is not permitted. + NVAPI_CALLBACK_ALREADY_REGISTERED = -241, //!< The callback function has already been registered. + NVAPI_CALLBACK_NOT_FOUND = -242, //!< The callback function is not found or not registered. + NVAPI_INVALID_OUTPUT_WIRE_FORMAT = -243, //!< Invalid Wire Format for the VR HMD +}; + +enum NV_StereoRegistryProfileType { + NVAPI_STEREO_DEFAULT_REGISTRY_PROFILE, //!< Default registry configuration profile. + NVAPI_STEREO_DX9_REGISTRY_PROFILE, //!< Separate registry configuration profile for a DirectX 9 executable. + NVAPI_STEREO_DX10_REGISTRY_PROFILE //!< Separate registry configuration profile for a DirectX 10 executable. +}; + +struct NvAPI_InterfaceTable { + uintptr_t func; + uint32_t id; +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/storm/array.h b/profile/3.3.5a-windows-386/include/storm/array.h index 41e5e47..55a03d9 100644 --- a/profile/3.3.5a-windows-386/include/storm/array.h +++ b/profile/3.3.5a-windows-386/include/storm/array.h @@ -25,28 +25,4 @@ struct TSGrowableArray_##T { \ uint32_t m_chunk; \ }; -// "pointer-to" types hack - -#define STORM_TS_BASE_ARRAY_POINTER_TO(T) typedef struct TSBaseArray_pointer_to_##T TSBaseArray_pointer_to_##T; \ -struct TSBaseArray_pointer_to_##T { \ - uint32_t m_alloc; \ - uint32_t m_count; \ - T** m_data; \ -}; - -#define STORM_TS_FIXED_ARRAY_POINTER_TO(T) typedef struct TSFixedArray_pointer_to_##T TSFixedArray_pointer_to_##T; \ -struct TSFixedArray_pointer_to_##T { \ - uint32_t m_alloc; \ - uint32_t m_count; \ - T** m_data; \ -}; - -#define STORM_TS_GROWABLE_ARRAY_POINTER_TO(T) typedef struct TSGrowableArray_pointer_to_##T TSGrowableArray_pointer_to_##T; \ -struct TSGrowableArray_pointer_to_##T { \ - uint32_t m_alloc; \ - uint32_t m_count; \ - T** m_data; \ - uint32_t m_chunk; \ -}; - #endif diff --git a/profile/3.3.5a-windows-386/include/storm/array/pointer_to_void.h b/profile/3.3.5a-windows-386/include/storm/array/pointer_to_void.h index f07eedd..92ee6f4 100644 --- a/profile/3.3.5a-windows-386/include/storm/array/pointer_to_void.h +++ b/profile/3.3.5a-windows-386/include/storm/array/pointer_to_void.h @@ -5,6 +5,8 @@ #include "storm/array.h" -STORM_TS_GROWABLE_ARRAY_POINTER_TO(void); +typedef void* pointer_to_void; + +STORM_TS_GROWABLE_ARRAY(pointer_to_void); #endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/ui/framestrata.h b/profile/3.3.5a-windows-386/include/ui/framestrata.h index 0899ccc..3c98e1e 100644 --- a/profile/3.3.5a-windows-386/include/ui/framestrata.h +++ b/profile/3.3.5a-windows-386/include/ui/framestrata.h @@ -18,7 +18,8 @@ struct CFrameStrataNode { int32_t batchDirty; TSExplicitList_CRenderBatch renderList; }; -STORM_TS_FIXED_ARRAY_POINTER_TO(CFrameStrataNode); +typedef CFrameStrataNode* pointer_to_CFrameStrataNode; +STORM_TS_FIXED_ARRAY(pointer_to_CFrameStrataNode); struct CFrameStrata { int32_t batchDirty; diff --git a/profile/3.3.5a-windows-386/include/ui/simpletop.h b/profile/3.3.5a-windows-386/include/ui/simpletop.h index f524a74..caee2fb 100644 --- a/profile/3.3.5a-windows-386/include/ui/simpletop.h +++ b/profile/3.3.5a-windows-386/include/ui/simpletop.h @@ -38,7 +38,8 @@ struct FRAMEPRIORITY { CSimpleFrame* frame; uint32_t priority; }; -COMMON_SIMPLE_SORTED_ARRAY_POINTER_TO(FRAMEPRIORITY); +typedef FRAMEPRIORITY* pointer_to_FRAMEPRIORITY; +COMMON_SIMPLE_SORTED_ARRAY(pointer_to_FRAMEPRIORITY); struct CSimpleTop { CLayoutFrame b_base; diff --git a/profile/3.3.5a-windows-386/symbol/emergencymem/func.sym b/profile/3.3.5a-windows-386/symbol/emergencymem/func.sym index b46d84f..ab4b84c 100644 --- a/profile/3.3.5a-windows-386/symbol/emergencymem/func.sym +++ b/profile/3.3.5a-windows-386/symbol/emergencymem/func.sym @@ -1 +1,2 @@ -EmergencyMem__Lock 00685E90 f end=00685EB0 type="void* __thiscall func(EmergencyMem* this, uint32_t a1)" \ No newline at end of file +EmergencyMem__Lock 00685E90 f end=00685EB0 type="void* __thiscall func(EmergencyMem* this, uint32_t a1)" +EmergencyMem__Unlock 00682C40 f end=00682C45 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gx/func.sym b/profile/3.3.5a-windows-386/symbol/gx/func.sym index 45d61a3..51e67ac 100644 --- a/profile/3.3.5a-windows-386/symbol/gx/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gx/func.sym @@ -20,7 +20,6 @@ GxAdapterMonitorModes 00681210 f end=00681219 type="int32_t __stdcall func(TSGro GxAdapterDesktopMode 00681220 f type="int32_t __stdcall func(CGxMonitorMode* mode)" GxDevCreate 00681290 f end=00681301 GxSceneClear 006813B0 f end=006813CD -GxTexUpdate 006813D0 f end=006813EC GxQueryCreate 00681630 f end=0068165B type="void __stdcall func(CGxQuery** query, EGxQueryType type)" GxSetMaxFPS 00681770 f end=0068177D type="void __stdcall func(uint32_t maxFPS)" GxGetMaxFPS 00681780 f end=00681786 @@ -29,8 +28,8 @@ GxGetMaxFPSBk 006817A0 f end=006817A6 GxLogOpen 006817C0 f end=006817C5 type="void __stdcall func()" GxLogClose 006817D0 f end=006817D5 GxLog 006817E0 f end=006817F5 type="int __stdcall func(char* format, ...)" -GxTexCreate 00681CB0 f end=00681D87 GxXformSetViewport 00681F60 f end=00682124 type="void __stdcall func(float minX, float maxX, float minY, float maxY, float minZ, float maxZ)" GxScenePresent 00682A00 f end=00682A33 GxDevDestroy 00682B80 f end=00682C35 CGxMonitorModeSort 00689E80 f type="int32_t __stdcall func(void* a, void* b)" +GxTexCopy 006814D0 f end=00681524 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gxdevice/func.sym b/profile/3.3.5a-windows-386/symbol/gxdevice/func.sym index 0ac7fed..7955d81 100644 --- a/profile/3.3.5a-windows-386/symbol/gxdevice/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxdevice/func.sym @@ -33,6 +33,14 @@ CGxDevice__CursorLock 00683650 f end=00683657 type="uint32_t* __thiscall func(CG CGxDevice__CursorSetDepth 00683660 f end=00683670 type="void __thiscall func(CGxDevice* this, float depth)" CGxDevice__LogOpen 00683670 f end=006836A4 type="void __stdcall func()" ; static void CGxDevice::LogOpen(void) CGxDevice__LogClose 006836B0 f end=006836CA +CGxDevice__WindowConstrainTopByAspect 00683D60 f end=00683DB0 type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainBottomByAspect 00683DB0 f end=00683DFE type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainLeftByAspect 00683E00 f end=00683E50 type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainRightByAspect 00683E50 f end=00683E9E type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainLeft 00683EA0 f end=00683ECD type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainRight 00683ED0 f end=00683EFD type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainTop 00683F00 f end=00683F2B type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainBottom 00683F30 f end=00683F5C type="void __stdcall func(CiRect* windowRect)" CGxDevice__DeviceSetFormat 006840F0 f end=0068416C type="int32_t __thiscall func(CGxDevice* this, CGxFormat* format)" CGxDevice__DeviceSetGamma 00684170 f end=00684189 type="void __thiscall func(CGxDevice* this, float gamma)" CGxDevice__DeviceSetGamma 00684190 f end=006841AF type="int32_t __thiscall func(CGxDevice* this, CGxGammaRamp* ramp)" @@ -99,3 +107,4 @@ CGxDevice__AdapterMonitorModes 0068A4C0 f end=0068A589 type="void __stdcall func CGxDevice__NewOpenGl 0068BF20 f end=0068BF44 type="CGxDevice* __stdcall func()" CGxDevice__NewD3d9Ex 0068C220 f end=0068C244 type="CGxDevice* __stdcall func()" CGxDevice__ITexWHDStartEnd 006A5EF0 f end=006A5FDF type="void __thiscall func(CGxDevice* this, CGxTex* texId, uint32_t* width, uint32_t* height, uint32_t* baseMip, uint32_t* mipCount)" +CGxDevice__DeviceCreateStreamBufs 00687900 f end=00687937 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gxdevice/label.sym b/profile/3.3.5a-windows-386/symbol/gxdevice/label.sym index 3ef57ba..e04f994 100644 --- a/profile/3.3.5a-windows-386/symbol/gxdevice/label.sym +++ b/profile/3.3.5a-windows-386/symbol/gxdevice/label.sym @@ -1,8 +1,10 @@ -CGxDevice__vtable 00A2DDC0 l type="CGxDevice__vtable" +CGxDevice__v_table 00A2DDC0 l type="CGxDevice__v_table" g_theGxDevicePtr 00C5DF88 l type="CGxDevice*" -CGxDevice__s_uiVertexShader 00C5DFDC l +CGxDevice__s_uiVertexShader 00C5DFD8 l CGxDevice__s_shadowConstants 00C5DFE0 l CGxDevice__m_logBytes 00C5FFF4 l type="uint32_t" CGxDevice__m_log 00C5FFF8 l type="HSLOG" CGxDevice__s_uiPixelShader 00C5FFFC l CGxDevice__s_clientAdjust 00C60300 l type="C2iVector" +CGxDevice__kWinMinSize 00AD8BC0 l type="C2iVector" +CGxDevice__kWinAspect 00C5FFF0 l type="float" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gxdeviced3d/func.sym b/profile/3.3.5a-windows-386/symbol/gxdeviced3d/func.sym index e9b9475..b7bb67b 100644 --- a/profile/3.3.5a-windows-386/symbol/gxdeviced3d/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxdeviced3d/func.sym @@ -32,11 +32,13 @@ CGxDeviceD3d__scalar_deleting_destructor 0068FE80 f end=0068FEC8 type="void __th CGxDeviceD3d__DeviceReadPixels 0068FED0 f end=00690144 type="void __thiscall func(CGxDeviceD3d* this, CiRect* rect, TSGrowableArray_CImVector* pixels)" CGxDeviceD3d__IReleaseD3dResources 00690150 f end=00690223 type="void __thiscall func(CGxDeviceD3d* this, int32_t a2)" CGxDeviceD3d__DeviceWM 00690230 f end=0069038D type="void __thiscall func(CGxDeviceD3d* this, EGxWM wm, int32_t param1, int32_t param2)" +CGxDeviceD3d__IDestroyD3d 006903B0 f end=006904C4 CGxDeviceD3d__DeviceSetFormat 006904D0 f end=006905E8 type="int32_t __thiscall func(CGxDeviceD3d* this, CGxFormat* format)" CGxDeviceD3d__DeviceDestroy 006905F0 f end=00690679 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__ICreateD3d 00690680 f end=00690742 type="int32_t __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__DeviceCreate 00690750 f end=00690821 type="void __thiscall func(CGxDeviceD3d* this, int32_t (*windowProc)(void*, uint32_t, uintptr_t, intptr_t), CGxFormat* format)" CGxDeviceD3d__DeviceCreate 00690830 f end=00690897 type="void __thiscall func(CGxDeviceD3d* this, uintptr_t hwnd, CGxFormat* format)" +CGxDeviceD3d__Sub69FAA0 0069FAA0 f end=0069FAFE type="int32_t __thiscall func(CGxDeviceD3d* this, D3DFORMAT format)" CGxDeviceD3d__ICreateD3dVB 0069FB00 f end=0069FB68 type="LPDIRECT3DVERTEXBUFFER9 __thiscall func(EGxPoolUsage usage, uint32_t size)" CGxDeviceD3d__CreatePoolAPI 0069FB70 f end=0069FBB8 type="int32_t __thiscall func(CGxDeviceD3d* this, CGxPool* pool)" CGxDeviceD3d__ICursorClip 0069FE10 f end=0069FE57 type="void __thiscall func(CGxDeviceD3d* this, int32_t a1)" ; UC (invented name) @@ -53,6 +55,7 @@ CGxDeviceD3d__QueryEnd 006A0240 f end=006A0272 type="bool __thiscall func(CGxDev CGxDeviceD3d__QueryGetData 006A0310 f end=006A035F type="bool __thiscall func(CGxDeviceD3d* this, CGxQuery* query, uint32_t* data)" CGxDeviceD3d__WindowProcD3d 006A0360 f end=006A0834 type="LRESULT __stdcall func(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)" CGxDeviceD3d__DeviceReadDepths 006A1950 f end=006A19C4 type="void __thiscall func(CGxDeviceD3d* this, CiRect* rect, TSGrowableArray_float* depths)" +CGxDeviceD3d__ITexForceRecreation 006A2AA0 f end=006A2BA3 CGxDeviceD3d__TexDestroy 006A2BB0 f end=006A2BF1 type="void __thiscall func(CGxDeviceD3d* this, CGxTex* texId)" CGxDeviceD3d__ITexCreate 006A2C00 f end=006A2D7E type="void __thiscall func(CGxDeviceD3d* this, CGxTex* texId)" CGxDeviceD3d__ITexUpload 006A2D80 f end=006A3062 type="void __thiscall func(CGxDeviceD3d* this, CGxTex* texId)" @@ -63,17 +66,22 @@ CGxDeviceD3d__ISceneBegin 006A3350 f end=006A3417 type="void __thiscall func(CGx CGxDeviceD3d__ISceneEnd 006A3420 f end=006A3449 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__ScenePresent 006A3450 f end=006A3611 type="void __thiscall func(CGxDeviceD3d* this, uint32_t mask)" CGxDeviceD3d__Draw 006A3620 f end=006A3716 type="void __thiscall func(CGxDeviceD3d* this, CGxBatch* batch)" +CGxDeviceD3d__GxVertexDecl__Compare 006A3720 f end=006A3807 type="bool __thiscall func(CGxDeviceD3d__GxVertexDecl* this, D3DVERTEXELEMENT9* elements, uint32_t count)" CGxDeviceD3d__IStateSyncEnables 006A3810 f end=006A386E type="void __thiscall func(CGxDeviceD3d* this)" +CGxDeviceD3d__IStateSyncClipPlanes 006A3870 f end=006A38C3 type="void __thiscall func(CGxDeviceD3d* this)" +CGxDeviceD3d__IStateSyncScissorRect 006A38D0 f end=006A39D2 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__ISetVertexBuffer 006A39E0 f end=006A3A59 type="void __thiscall func(CGxDeviceD3d* this, uint32_t stream, LPDIRECT3DVERTEXBUFFER9 buffer, uint32_t offset, uint32_t stride)" CGxDeviceD3d__IStateSetD3DDefaults 006A3A60 f end=006A3C34 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__DsSet 006A3C40 f end=006A40F2 type="void __thiscall func(CGxDeviceD3d* this, CGxDeviceD3d__EDeviceState state, uint32_t val)" CGxDeviceD3d__ISetColorOp 006A4190 f end=006A41EC type="void __thiscall func(CGxDeviceD3d* this, uint32_t a1, uint32_t val)" CGxDeviceD3d__ISetAlphaOp 006A41F0 f end=006A424C type="void __thiscall func(CGxDeviceD3d* this, uint32_t a1, uint32_t val)" +CGxDeviceD3d__IStateSyncLights 006A43D0 f end=006A46F9 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__IStateSyncMaterial 006A4700 f end=006A4846 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__IStateSyncXforms 006A4850 f end=006A48FE type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__ISetTexture 006A4900 f end=006A4AB3 type="void __thiscall func(CGxDeviceD3d* this, uint32_t tmu, CGxTex* texId)" CGxDeviceD3d__IRsSendToHw 006A4C30 f end=006A5499 type="void __thiscall func(CGxDeviceD3d* this, EGxRenderState rs)" CGxDeviceD3d__ICreateD3dVertexDecl 006A5540 f end=006A5677 type="LPDIRECT3DVERTEXDECLARATION9 __thiscall func(CGxDeviceD3d* this, D3DVERTEXELEMENT9* elements, uint32_t count)" +CGxDeviceD3d__IReleaseD3dVertexDecl 006A5680 f end=006A56F2 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__IStateSyncVertexPtrs 006A5700 f end=006A5934 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__IStateSync 006A5940 f end=006A59f5 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__CapsWindowSize 006A5A00 f end=006A5A25 type="void __thiscall func(CGxDeviceD3d* this, CRect* dst)" @@ -82,7 +90,9 @@ CGxDeviceD3d__IBindPixelShader 006A5C70 f end=006A5D48 type="void __thiscall fun CGxDeviceD3d__IShaderReload 006A5D50 f end=006A5E07 type="void __thiscall func(CGxDeviceD3d* this, CGxShader* shader, const char* a2, const char* a3)" CGxDeviceD3d__IShaderCreate 006A5E10 f end=006A5E36 type="void __thiscall func(CGxDeviceD3d* this, CGxShader* shader)" CGxDeviceD3d__SceneClear 006A74B0 f end=006A7538 type="void __thiscall func(CGxDeviceD3d* this, uint32_t mask, CImVector color)" +CGxDeviceD3d__Sub6A7940 006A7940 f end=006A79F1 type="void __thiscall func(CGxDeviceD3d* this, uint32_t width, uint32_t height)" CGxDeviceD3d__CapsWindowSizeInScreenCoords 006A9920 f end=006A99D4 type="void __thiscall func(CGxDeviceD3d* this, CRect* dst)" +CGxDeviceD3d__IXformSetViewport 006A99E0 f end=006A9B35 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__XformSetProjection 006A9B40 f end=006A9D88 type="void __thiscall func(CGxDeviceD3d* this, C44Matrix* matrix)" CGxDeviceD3d__XformSetView 006A9E00 f end=006A9E09 type="void __thiscall func(CGxDeviceD3d* this, C44Matrix* matrix)" CGxDeviceD3d__IShaderConstantsFlush 006A9FE0 f end=006AA06D type="void __thiscall func(CGxDeviceD3d* this)" diff --git a/profile/3.3.5a-windows-386/symbol/gxdeviced3d/label.sym b/profile/3.3.5a-windows-386/symbol/gxdeviced3d/label.sym index 7764a36..bc33454 100644 --- a/profile/3.3.5a-windows-386/symbol/gxdeviced3d/label.sym +++ b/profile/3.3.5a-windows-386/symbol/gxdeviced3d/label.sym @@ -1,2 +1,19 @@ -CGxDeviceD3d__vtable 00A2E718 l -isIdent 00C60760 l \ No newline at end of file +CGxDeviceD3d__s_GxFormatToD3dFormat 00A2E4A8 l type="D3DFORMAT[8]" +CGxDeviceD3d__s_gxAttribToD3dAttribSize 00A2E4C8 l type="uint32_t[7]" +CGxDeviceD3d__v_table 00A2E718 l type="CGxDevice__v_table" +CGxDeviceD3d__s_tolerableTexFmtMapping 00A2F7E8 l type="EGxTexFormat[13]" +CGxDeviceD3d__s_GxTexFmtToD3dFmt 00A2F81C l type="D3DFORMAT[13]" +CGxDeviceD3d__s_faceTypes 00A2F850 l type="D3DCUBEMAP_FACES[6]" +CGxDeviceD3d__s_primitiveConversion 00A2F8D4 l type="D3DPRIMITIVETYPE[6]" +CGxDeviceD3d__s_gxAttribToD3dAttribUsage 00A2F8EC l type="D3DDECLUSAGE[14]" +CGxDeviceD3d__s_gxAttribToD3dAttribUsageIndex 00A2F924 l type="uint32_t[14]" +CGxDeviceD3d__s_srcBlend 00A2F964 l type="D3DBLEND[12]" +CGxDeviceD3d__s_dstBlend 00A2F994 l type="D3DBLEND[12]" +CGxDeviceD3d__s_wrapModes 00A2F9C4 l type="D3DTEXTUREADDRESS[2]" +CGxDeviceD3d__s_cmpFunc 00A2FA14 l type="D3DCMPFUNC[4]" +CGxDeviceD3d__s_cullMode 00A2FA24 l type="D3DCULL[3]" +CGxDeviceD3d__s_GxTexFormatToUse 00AD8EF0 l type="EGxTexFormat[13]" +CGxDeviceD3d__s_gxAttribToD3dAttribType 00AD8F24 l type="D3DDECLTYPE[7]" +CGxDeviceD3d__s_filterModes 00AD8F40 l type="D3DTEXTUREFILTERTYPE[6][3]" +isIdent 00C60760 l +d3dLight 00C606F8 l type="D3DLIGHT9" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gxdeviceopengl/label.sym b/profile/3.3.5a-windows-386/symbol/gxdeviceopengl/label.sym index 3480e64..e1fa559 100644 --- a/profile/3.3.5a-windows-386/symbol/gxdeviceopengl/label.sym +++ b/profile/3.3.5a-windows-386/symbol/gxdeviceopengl/label.sym @@ -1 +1 @@ -CGxDeviceOpenGl__vtable 00A2E198 l +CGxDeviceOpenGl__v_table 00A2E198 l type="CGxDevice__v_table" diff --git a/profile/3.3.5a-windows-386/symbol/gxlight/func.sym b/profile/3.3.5a-windows-386/symbol/gxlight/func.sym new file mode 100644 index 0000000..1c8313b --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/gxlight/func.sym @@ -0,0 +1 @@ +CGxLight__CGxLight 00683FB0 f end=0068406C type="CGxLight* __thiscall func(CGxLight* this)" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gxtexture/func.sym b/profile/3.3.5a-windows-386/symbol/gxtexture/func.sym index 558ed02..192c83d 100644 --- a/profile/3.3.5a-windows-386/symbol/gxtexture/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxtexture/func.sym @@ -1 +1,5 @@ CGxTexFlags__CGxTexFlags 00681BE0 f end=00681CAB ; UC +GxTexDestroy 00681470 f +GxTexUpdate 00681F20 f end=00681F59 +GxTexCreate 00681CB0 f end=00681D87 +GxTexUpdate 006813D0 f end=006813EC diff --git a/profile/3.3.5a-windows-386/symbol/main.sym b/profile/3.3.5a-windows-386/symbol/main.sym index fdd7776..74c2b11 100644 --- a/profile/3.3.5a-windows-386/symbol/main.sym +++ b/profile/3.3.5a-windows-386/symbol/main.sym @@ -2673,6 +2673,8 @@ GxAdapterDesktopMode 00681220 f type="int32_t __stdcall func(CGxMonitorMode* mod GxDevCreate 00681290 f end=00681301 GxSceneClear 006813B0 f end=006813CD GxTexUpdate 006813D0 f end=006813EC +GxTexDestroy 00681470 f +GxTexCopy 006814D0 f end=00681524 GxQueryCreate 00681630 f end=0068165B type="void __stdcall func(CGxQuery** query, EGxQueryType type)" GxSetMaxFPS 00681770 f end=0068177D type="void __stdcall func(uint32_t maxFPS)" GxGetMaxFPS 00681780 f end=00681786 @@ -2687,6 +2689,7 @@ GxPrimIndexPtr 00681AB0 f end=00681AFB type="void __stdcall func(uint32_t indexC GxPrimVertexPtr 00681B00 f end=00681B4B type="void __stdcall func(CGxBuf* buf, EGxVertexBufferFormat format)" CGxTexFlags__CGxTexFlags 00681BE0 f end=00681CAB ; UC GxTexCreate 00681CB0 f end=00681D87 +GxTexUpdate 00681F20 f end=00681F59 GxXformSetViewport 00681F60 f end=00682124 type="void __stdcall func(float minX, float maxX, float minY, float maxY, float minZ, float maxZ)" GxDrawLockedElements 00682340 f end=0068239E type="void __stdcall func(EGxPrim primType, uint32_t, uint16_t*)" GxPrimLockIndexPtr 006823A0 f end=006823F8 type="void __stdcall func(EGxPrim primType, uint32_t indexCount, uint16_t* indices)" @@ -2694,6 +2697,7 @@ GxPrimVertexPtr 00682400 f end=00682781 type="void __stdcall func(uint32_t verte GxPrimLockVertexPtrs 006828C0 f end=006828FE type="void __stdcall func(uint32_t vertexCount, C3Vector* pos, uint32_t posStride, C3Vector* normal, uint32_t normalStride, CImVector* color, uint32_t colorStride, uint8_t* bone, uint32_t boneStride, C2Vector* tex0, uint32_t tex0Stride, C2Vector* tex1, uint32_t tex1Stride)" GxScenePresent 00682A00 f end=00682A33 GxDevDestroy 00682B80 f end=00682C35 +EmergencyMem__Unlock 00682C40 f end=00682C45 CGxDevice__DeviceCreate 00682CB0 f end=00682CCB type="void __thiscall func(CGxDevice* this, int32_t (*windowProc)(void*, uint32_t, uintptr_t, intptr_t), CGxFormat* format)" CGxDevice__DeviceCreate 00682CD0 f end=00682CF0 type="void __thiscall func(CGxDevice* this, uintptr_t hwnd, CGxFormat* format)" CGxDevice__DeviceDestroy 00682CF0 f end=00682CFB type="void __thiscall func(CGxDevice* this)" @@ -2726,6 +2730,15 @@ CGxDevice__CursorLock 00683650 f end=00683657 type="uint32_t* __thiscall func(CG CGxDevice__CursorSetDepth 00683660 f end=00683670 type="void __thiscall func(CGxDevice* this, float depth)" CGxDevice__LogOpen 00683670 f end=006836A4 type="void __stdcall func()" ; static void CGxDevice::LogOpen(void) CGxDevice__LogClose 006836B0 f end=006836CA +CGxDevice__WindowConstrainTopByAspect 00683D60 f end=00683DB0 type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainBottomByAspect 00683DB0 f end=00683DFE type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainLeftByAspect 00683E00 f end=00683E50 type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainRightByAspect 00683E50 f end=00683E9E type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainLeft 00683EA0 f end=00683ECD type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainRight 00683ED0 f end=00683EFD type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainTop 00683F00 f end=00683F2B type="void __stdcall func(CiRect* windowRect)" +CGxDevice__WindowConstrainBottom 00683F30 f end=00683F5C type="void __stdcall func(CiRect* windowRect)" +CGxLight__CGxLight 00683FB0 f end=0068406C type="CGxLight* __thiscall func(CGxLight* this)" CGxDevice__DeviceSetFormat 006840F0 f end=0068416C type="int32_t __thiscall func(CGxDevice* this, CGxFormat* format)" CGxDevice__DeviceSetGamma 00684170 f end=00684189 type="void __thiscall func(CGxDevice* this, float gamma)" CGxDevice__DeviceSetGamma 00684190 f end=006841AF type="int32_t __thiscall func(CGxDevice* this, CGxGammaRamp* ramp)" @@ -2772,6 +2785,7 @@ CGxDevice__BufCreate 00687660 f end=006876C9 type="CGxBuf* __thiscall func(CGxDe CGxDevice__PoolCreate 006876D0 f end=0068773F type="CGxPool* __thiscall func(CGxDevice* this, EGxPoolTarget target, EGxPoolUsage usage, uint32_t size, EGxPoolHintBits hint, char* name)" CGxDevice__QueryCreate 006877C0 f end=00687811 type="void __thiscall func(CGxDevice* this, CGxQuery** query, EGxQueryType queryType)" CGxDevice__ShaderDestroy 00687820 f end=00687862 type="void __thiscall func(CGxDevice* this, CGxShader** shader)" +CGxDevice__DeviceCreateStreamBufs 00687900 f end=00687937 CGxDevice__DeviceCreatePools 00687940 f end=00687980 CGxDevice__TexDestroy 00687980 f end=006879E1 type="void __thiscall func(CGxDevice* this, CGxTex* texId)" CGxDevice__QueryDestroy 006879F0 f end=00687A8E type="void __thiscall func(CGxDevice* this, CGxQuery** query)" @@ -2831,11 +2845,13 @@ CGxDeviceD3d__scalar_deleting_destructor 0068FE80 f end=0068FEC8 type="void __th CGxDeviceD3d__DeviceReadPixels 0068FED0 f end=00690144 type="void __thiscall func(CGxDeviceD3d* this, CiRect* rect, TSGrowableArray_CImVector* pixels)" CGxDeviceD3d__IReleaseD3dResources 00690150 f end=00690223 type="void __thiscall func(CGxDeviceD3d* this, int32_t a2)" CGxDeviceD3d__DeviceWM 00690230 f end=0069038D type="void __thiscall func(CGxDeviceD3d* this, EGxWM wm, int32_t param1, int32_t param2)" +CGxDeviceD3d__IDestroyD3d 006903B0 f end=006904C4 CGxDeviceD3d__DeviceSetFormat 006904D0 f end=006905E8 type="int32_t __thiscall func(CGxDeviceD3d* this, CGxFormat* format)" CGxDeviceD3d__DeviceDestroy 006905F0 f end=00690679 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__ICreateD3d 00690680 f end=00690742 type="int32_t __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__DeviceCreate 00690750 f end=00690821 type="void __thiscall func(CGxDeviceD3d* this, int32_t (*windowProc)(void*, uint32_t, uintptr_t, intptr_t), CGxFormat* format)" CGxDeviceD3d__DeviceCreate 00690830 f end=00690897 type="void __thiscall func(CGxDeviceD3d* this, uintptr_t hwnd, CGxFormat* format)" +CGxDeviceD3d__Sub69FAA0 0069FAA0 f end=0069FAFE type="int32_t __thiscall func(CGxDeviceD3d* this, D3DFORMAT format)" CGxDeviceD3d__ICreateD3dVB 0069FB00 f end=0069FB68 type="LPDIRECT3DVERTEXBUFFER9 __thiscall func(EGxPoolUsage usage, uint32_t size)" CGxDeviceD3d__CreatePoolAPI 0069FB70 f end=0069FBB8 type="int32_t __thiscall func(CGxDeviceD3d* this, CGxPool* pool)" CGxDeviceD3d__ICursorClip 0069FE10 f end=0069FE57 type="void __thiscall func(CGxDeviceD3d* this, int32_t a1)" ; UC (invented name) @@ -2853,6 +2869,7 @@ CGxDeviceD3d__QueryGetData 006A0310 f end=006A035F type="bool __thiscall func(CG CGxDeviceD3d__WindowProcD3d 006A0360 f end=006A0834 type="LRESULT __stdcall func(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)" CGxDeviceD3d__DeviceReadDepths 006A1950 f end=006A19C4 type="void __thiscall func(CGxDeviceD3d* this, CiRect* rect, TSGrowableArray_float* depths)" CGxDeviceD3d9Ex__CGxDeviceD3d9Ex 006A1A90 f end=006A1C24 +CGxDeviceD3d__ITexForceRecreation 006A2AA0 f end=006A2BA3 CGxDeviceD3d__TexDestroy 006A2BB0 f end=006A2BF1 type="void __thiscall func(CGxDeviceD3d* this, CGxTex* texId)" CGxDeviceD3d__ITexCreate 006A2C00 f end=006A2D7E type="void __thiscall func(CGxDeviceD3d* this, CGxTex* texId)" CGxDeviceD3d__ITexUpload 006A2D80 f end=006A3062 type="void __thiscall func(CGxDeviceD3d* this, CGxTex* texId)" @@ -2863,17 +2880,22 @@ CGxDeviceD3d__ISceneBegin 006A3350 f end=006A3417 type="void __thiscall func(CGx CGxDeviceD3d__ISceneEnd 006A3420 f end=006A3449 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__ScenePresent 006A3450 f end=006A3611 type="void __thiscall func(CGxDeviceD3d* this, uint32_t mask)" CGxDeviceD3d__Draw 006A3620 f end=006A3716 type="void __thiscall func(CGxDeviceD3d* this, CGxBatch* batch)" +CGxDeviceD3d__GxVertexDecl__Compare 006A3720 f end=006A3807 type="bool __thiscall func(CGxDeviceD3d__GxVertexDecl* this, D3DVERTEXELEMENT9* elements, uint32_t count)" CGxDeviceD3d__IStateSyncEnables 006A3810 f end=006A386E type="void __thiscall func(CGxDeviceD3d* this)" +CGxDeviceD3d__IStateSyncClipPlanes 006A3870 f end=006A38C3 type="void __thiscall func(CGxDeviceD3d* this)" +CGxDeviceD3d__IStateSyncScissorRect 006A38D0 f end=006A39D2 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__ISetVertexBuffer 006A39E0 f end=006A3A59 type="void __thiscall func(CGxDeviceD3d* this, uint32_t stream, LPDIRECT3DVERTEXBUFFER9 buffer, uint32_t offset, uint32_t stride)" CGxDeviceD3d__IStateSetD3DDefaults 006A3A60 f end=006A3C34 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__DsSet 006A3C40 f end=006A40F2 type="void __thiscall func(CGxDeviceD3d* this, CGxDeviceD3d__EDeviceState state, uint32_t val)" CGxDeviceD3d__ISetColorOp 006A4190 f end=006A41EC type="void __thiscall func(CGxDeviceD3d* this, uint32_t a1, uint32_t val)" CGxDeviceD3d__ISetAlphaOp 006A41F0 f end=006A424C type="void __thiscall func(CGxDeviceD3d* this, uint32_t a1, uint32_t val)" +CGxDeviceD3d__IStateSyncLights 006A43D0 f end=006A46F9 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__IStateSyncMaterial 006A4700 f end=006A4846 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__IStateSyncXforms 006A4850 f end=006A48FE type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__ISetTexture 006A4900 f end=006A4AB3 type="void __thiscall func(CGxDeviceD3d* this, uint32_t tmu, CGxTex* texId)" CGxDeviceD3d__IRsSendToHw 006A4C30 f end=006A5499 type="void __thiscall func(CGxDeviceD3d* this, EGxRenderState rs)" CGxDeviceD3d__ICreateD3dVertexDecl 006A5540 f end=006A5677 type="LPDIRECT3DVERTEXDECLARATION9 __thiscall func(CGxDeviceD3d* this, D3DVERTEXELEMENT9* elements, uint32_t count)" +CGxDeviceD3d__IReleaseD3dVertexDecl 006A5680 f end=006A56F2 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__IStateSyncVertexPtrs 006A5700 f end=006A5934 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__IStateSync 006A5940 f end=006A59f5 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__CapsWindowSize 006A5A00 f end=006A5A25 type="void __thiscall func(CGxDeviceD3d* this, CRect* dst)" @@ -2883,7 +2905,9 @@ CGxDeviceD3d__IShaderReload 006A5D50 f end=006A5E07 type="void __thiscall func(C CGxDeviceD3d__IShaderCreate 006A5E10 f end=006A5E36 type="void __thiscall func(CGxDeviceD3d* this, CGxShader* shader)" CGxDevice__ITexWHDStartEnd 006A5EF0 f end=006A5FDF type="void __thiscall func(CGxDevice* this, CGxTex* texId, uint32_t* width, uint32_t* height, uint32_t* baseMip, uint32_t* mipCount)" CGxDeviceD3d__SceneClear 006A74B0 f end=006A7538 type="void __thiscall func(CGxDeviceD3d* this, uint32_t mask, CImVector color)" +CGxDeviceD3d__Sub6A7940 006A7940 f end=006A79F1 type="void __thiscall func(CGxDeviceD3d* this, uint32_t width, uint32_t height)" CGxDeviceD3d__CapsWindowSizeInScreenCoords 006A9920 f end=006A99D4 type="void __thiscall func(CGxDeviceD3d* this, CRect* dst)" +CGxDeviceD3d__IXformSetViewport 006A99E0 f end=006A9B35 type="void __thiscall func(CGxDeviceD3d* this)" CGxDeviceD3d__XformSetProjection 006A9B40 f end=006A9D88 type="void __thiscall func(CGxDeviceD3d* this, C44Matrix* matrix)" CGxDeviceD3d__XformSetView 006A9E00 f end=006A9E09 type="void __thiscall func(CGxDeviceD3d* this, C44Matrix* matrix)" CGxDeviceD3d__IShaderConstantsFlush 006A9FE0 f end=006AA06D type="void __thiscall func(CGxDeviceD3d* this)" @@ -3687,6 +3711,16 @@ CShaderEffectManager__AddEffectFile 00876D90 f end=00876E2C ; CShaderEffectManag SI2__Log_Write 00877E10 f end=00878005 SI2__Log_Write 00878010 f end=0087807E SI2__InitCapture 0087E020 f end=0087EBBD +NvAPI_Initialize 008A09BA f end=008A0A54 +NvAPI_GetErrorMessage 008A0A54 f end=008A0A5A type="NvAPI_Status __stdcall func(int32_t nr, char* szDesc)" +NvAPI_Stereo_CreateConfigurationProfileRegistryKey 008A0F88 f end=008A0F8E type="NvAPI_Status __stdcall func(NV_StereoRegistryProfileType registryProfileType)" +NvAPI_Stereo_Enable 008A0FA0 f end=008A0FA6 type="NvAPI_Status __stdcall func()" +NvAPI_Stereo_Disable 008A0FA6 f end=008A0FAC type="NvAPI_Status __stdcall func()" +NvAPI_Stereo_IsEnabled 008A0FAC f end=008A0FB2 type="NvAPI_Status __stdcall func(uint8_t* pIsStereoEnabled)" +NvAPI_Stereo_CreateHandleFromIUnknown 008A0FB2 f end=008A0FB8 type="NvAPI_Status __stdcall func(IUnknown* pDevice, StereoHandle* pStereoHandle)" +NvAPI_Stereo_DestroyHandle 008A0FB8 f end=008A0FBE type="NvAPI_Status __stdcall func(StereoHandle stereoHandle)" +NvAPI_Stereo_SetSeparation 008A0FD6 f end=008A0FDC type="NvAPI_Status __stdcall func(StereoHandle stereoHandle, float newSeparationPercentage)" +NvAPI_Stereo_SetConvergence 008A0FEE f end=008A0FF4 type="NvAPI_Status __stdcall func(StereoHandle stereoHandle, float newConvergence)" stub_return_one_byte 008A1420 f end=008A1423 ; known names: System_File::Shutdown, CVGxVideoOptionsVersionCallback FFX__Destroy 008C0360 f end=008C0589 stub_return_int32_one 008C8DE0 f type="int32_t __stdcall func()" ; Known names: GxDefaultApi, CCommand_Perf @@ -4075,10 +4109,23 @@ s_noinfo 009E5630 l type="Blizzard__File__FileInfo" firstByteMark 009E9EC8 l type="uint32_t[7]" TInstanceId_EvtContext__v_table 009EA04C l type="TInstanceId_EvtContext__v_table" s_pixelFormatToMipBitsCache 009F1074 l -CGxDevice__vtable 00A2DDC0 l type="CGxDevice__vtable" -CGxDeviceOpenGl__vtable 00A2E198 l -CGxDeviceD3d__vtable 00A2E718 l +CGxDevice__v_table 00A2DDC0 l type="CGxDevice__v_table" +CGxDeviceOpenGl__v_table 00A2E198 l type="CGxDevice__v_table" +CGxDeviceD3d__s_GxFormatToD3dFormat 00A2E4A8 l type="D3DFORMAT[8]" +CGxDeviceD3d__s_gxAttribToD3dAttribSize 00A2E4C8 l type="uint32_t[7]" +CGxDeviceD3d__v_table 00A2E718 l type="CGxDevice__v_table" CGxDeviceD3d9Ex__vtable 00A2F500 l +CGxDeviceD3d__s_tolerableTexFmtMapping 00A2F7E8 l type="EGxTexFormat[13]" +CGxDeviceD3d__s_GxTexFmtToD3dFmt 00A2F81C l type="D3DFORMAT[13]" +CGxDeviceD3d__s_faceTypes 00A2F850 l type="D3DCUBEMAP_FACES[6]" +CGxDeviceD3d__s_primitiveConversion 00A2F8D4 l type="D3DPRIMITIVETYPE[6]" +CGxDeviceD3d__s_gxAttribToD3dAttribUsage 00A2F8EC l type="D3DDECLUSAGE[14]" +CGxDeviceD3d__s_gxAttribToD3dAttribUsageIndex 00A2F924 l type="uint32_t[14]" +CGxDeviceD3d__s_srcBlend 00A2F964 l type="D3DBLEND[12]" +CGxDeviceD3d__s_dstBlend 00A2F994 l type="D3DBLEND[12]" +CGxDeviceD3d__s_wrapModes 00A2F9C4 l type="D3DTEXTUREADDRESS[2]" +CGxDeviceD3d__s_cmpFunc 00A2FA14 l type="D3DCMPFUNC[4]" +CGxDeviceD3d__s_cullMode 00A2FA24 l type="D3DCULL[3]" g_startup_StringsDB 00AB6350 l type="WowClientDB_Startup_StringsRec" System_File__Stacked__s_manager 00AB90AC l type="Blizzard__File__Filesystem*" System_File__read_func 00AB912C l ; type="int32_t (*)(Blizzard__File__Filesystem* fs, System_File__Stacked__FileParms* parms)" @@ -4325,6 +4372,10 @@ g_soundFilterDB 00AD50FC l type="WowClientDB_SoundFilterRec" ; 0x1D6 g_soundFilterElemDB 00AD5120 l type="WowClientDB_SoundFilterElemRec" ; 0x1D7 formatToInt 00AD87C4 l type="char*[8]" g_gxApiNames 00AD87E4 l type="char*[6]" +CGxDevice__kWinMinSize 00AD8BC0 l type="C2iVector" +CGxDeviceD3d__s_GxTexFormatToUse 00AD8EF0 l type="EGxTexFormat[13]" +CGxDeviceD3d__s_gxAttribToD3dAttribType 00AD8F24 l type="D3DDECLTYPE[7]" +CGxDeviceD3d__s_filterModes 00AD8F40 l type="D3DTEXTUREFILTERTYPE[6][3]" CBLPFile__s_eightBitAlphaLookup 00AD90B0 l type="uint8_t[16]" CBLPFile__s_oneBitAlphaLookup 00AD90C0 l type="uint8_t[2]" s_rect 00ADBAB4 l type="RECTF" ; RECTF @@ -4350,6 +4401,9 @@ g_lightFloatBandDB 00AF49E0 l type="WowClientDB_LightFloatBandRec" ; 0x15C g_lightParamsDB 00AF4A04 l type="WowClientDB_LightParamsRec" ; 0x15E g_lightDB 00AF4A28 l type="WowClientDB_LightRec" ; 0x15B s_sleepInBackground 00B1D2AC l type="int32_t" +NvApi__s_initialized 00B2376C l +result 00B23770 l type="int32_t" +NvApi__s_interface_table 00B23778 l type="NvApi__InterfaceTable[253]" s_streamingdiag 00B2F050 l g_clientEventContext 00B2F994 l type="HEVENTCONTEXT" Blizzard__Streaming__s_streamingReady 00B38180 l type="bool" @@ -4452,12 +4506,14 @@ _CURRENT_LANGUAGE 00C5DE9C l type="int32_t" s_maxFPSBk 00C5DF74 l type="uint32_t" s_maxFPS 00C5DF7C l type="uint32_t" g_theGxDevicePtr 00C5DF88 l type="CGxDevice*" -CGxDevice__s_uiVertexShader 00C5DFDC l +CGxDevice__s_uiVertexShader 00C5DFD8 l CGxDevice__s_shadowConstants 00C5DFE0 l +CGxDevice__kWinAspect 00C5FFF0 l type="float" CGxDevice__m_logBytes 00C5FFF4 l type="uint32_t" CGxDevice__m_log 00C5FFF8 l type="HSLOG" CGxDevice__s_uiPixelShader 00C5FFFC l CGxDevice__s_clientAdjust 00C60300 l type="C2iVector" +d3dLight 00C606F8 l type="D3DLIGHT9" isIdent 00C60760 l ClientServices__m_instance 00C79CE4 l ClientServices__m_selectRealmInfoValid 00C79CE9 l diff --git a/profile/3.3.5a-windows-386/symbol/nvapi/func.sym b/profile/3.3.5a-windows-386/symbol/nvapi/func.sym new file mode 100644 index 0000000..abb0e8a --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/nvapi/func.sym @@ -0,0 +1,10 @@ +NvAPI_Initialize 008A09BA f end=008A0A54 +NvAPI_Stereo_IsEnabled 008A0FAC f end=008A0FB2 type="NvAPI_Status __stdcall func(uint8_t* pIsStereoEnabled)" +NvAPI_Stereo_Enable 008A0FA0 f end=008A0FA6 type="NvAPI_Status __stdcall func()" +NvAPI_GetErrorMessage 008A0A54 f end=008A0A5A type="NvAPI_Status __stdcall func(int32_t nr, char* szDesc)" +NvAPI_Stereo_Disable 008A0FA6 f end=008A0FAC type="NvAPI_Status __stdcall func()" +NvAPI_Stereo_CreateConfigurationProfileRegistryKey 008A0F88 f end=008A0F8E type="NvAPI_Status __stdcall func(NV_StereoRegistryProfileType registryProfileType)" +NvAPI_Stereo_CreateHandleFromIUnknown 008A0FB2 f end=008A0FB8 type="NvAPI_Status __stdcall func(IUnknown* pDevice, StereoHandle* pStereoHandle)" +NvAPI_Stereo_SetConvergence 008A0FEE f end=008A0FF4 type="NvAPI_Status __stdcall func(StereoHandle stereoHandle, float newConvergence)" +NvAPI_Stereo_SetSeparation 008A0FD6 f end=008A0FDC type="NvAPI_Status __stdcall func(StereoHandle stereoHandle, float newSeparationPercentage)" +NvAPI_Stereo_DestroyHandle 008A0FB8 f end=008A0FBE type="NvAPI_Status __stdcall func(StereoHandle stereoHandle)" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/nvapi/label.sym b/profile/3.3.5a-windows-386/symbol/nvapi/label.sym new file mode 100644 index 0000000..f3a2ad7 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/nvapi/label.sym @@ -0,0 +1,3 @@ +result 00B23770 l type="int32_t" +NvApi__s_interface_table 00B23778 l type="NvApi__InterfaceTable[253]" +NvApi__s_initialized 00B2376C l \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/x64dbg/game.dd32 b/profile/3.3.5a-windows-386/x64dbg/game.dd32 index 5d9606b1700015f4689674b1d41b2701a90fde47..10bf3e87f4f3c2428814370253f7d07a621aa836 100644 GIT binary patch delta 34419 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 delta 32578 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 VoE zt3bSpIXyViK*vgOW9b`o!)iupcJG7y(OvF0E2IYWc)j~e3z%bYb}yt^^(^CFPHbaJ zcQMSjV?uC@^LH}IB-Sow3b1>-XM3se6IXA5BXaR+a6EAi!(Sqth zw|i4MVr^1YQq+ba%w z8vhGN99x5-CJ3o$sC|mFrlPF!-9#mAu!n13g6(*Y7|%MFNXI!zI^RVLoaFkV#2qR4 lQD#>6PX#a-L5{vUjfF1y(o`;<{Z@fAq2b~bdfZ8h{uf!q!Ds*g diff --git a/profile/3.3.5a-windows-386/x64dbg/types.json b/profile/3.3.5a-windows-386/x64dbg/types.json index 926627a..2635b80 100644 --- a/profile/3.3.5a-windows-386/x64dbg/types.json +++ b/profile/3.3.5a-windows-386/x64dbg/types.json @@ -36,6 +36,10 @@ "type": "int", "name": "CBaseManaged__ManagedTypeIds" }, + { + "type": "int", + "name": "CGxDeviceD3d__EDeviceState" + }, { "type": "int", "name": "CGxFormat__Format" @@ -84,14 +88,50 @@ "type": "int", "name": "CURSORMODE" }, + { + "type": "long long", + "name": "D3DCUBEMAP_FACES" + }, + { + "type": "int", + "name": "D3DDECLUSAGE" + }, { "type": "long long", "name": "D3DDEVTYPE" }, { - "type": "int32_t", + "type": "long long", "name": "D3DFORMAT" }, + { + "type": "int", + "name": "D3DLIGHTTYPE" + }, + { + "type": "int", + "name": "D3DMULTISAMPLE_TYPE" + }, + { + "type": "int", + "name": "D3DPOOL" + }, + { + "type": "int", + "name": "D3DPRIMITIVETYPE" + }, + { + "type": "int", + "name": "D3DRENDERSTATETYPE" + }, + { + "type": "int", + "name": "D3DRESOURCETYPE" + }, + { + "type": "long long", + "name": "D3DSWAPEFFECT" + }, { "type": "void**", "name": "DEVICERESTOREDCALLBACK" @@ -276,6 +316,46 @@ "type": "long long", "name": "KEY" }, + { + "type": "IDirect3D9*", + "name": "LPDIRECT3D9" + }, + { + "type": "IDirect3DCubeTexture9*", + "name": "LPDIRECT3DCUBETEXTURE9" + }, + { + "type": "IDirect3DDevice9*", + "name": "LPDIRECT3DDEVICE9" + }, + { + "type": "IDirect3DIndexBuffer9*", + "name": "LPDIRECT3DINDEXBUFFER9" + }, + { + "type": "IDirect3DQuery9*", + "name": "LPDIRECT3DQUERY9" + }, + { + "type": "IDirect3DSurface9*", + "name": "LPDIRECT3DSURFACE9" + }, + { + "type": "IDirect3DTexture9*", + "name": "LPDIRECT3DTEXTURE9" + }, + { + "type": "IDirect3DVertexBuffer9*", + "name": "LPDIRECT3DVERTEXBUFFER9" + }, + { + "type": "IDirect3DVertexDeclaration9*", + "name": "LPDIRECT3DVERTEXDECLARATION9" + }, + { + "type": "IDirect3DVertexShader9*", + "name": "LPDIRECT3DVERTEXSHADER9" + }, { "type": "int", "name": "M2BLEND" @@ -304,6 +384,14 @@ "type": "int", "name": "MipMapAlgorithm" }, + { + "type": "int", + "name": "NV_StereoRegistryProfileType" + }, + { + "type": "int", + "name": "NvAPI_Status" + }, { "type": "int", "name": "OSINPUT" @@ -364,6 +452,26 @@ "type": "void**", "name": "lua_Writer" }, + { + "type": "CBaseManaged*", + "name": "pointer_to_CBaseManaged" + }, + { + "type": "CFrameStrataNode*", + "name": "pointer_to_CFrameStrataNode" + }, + { + "type": "EvtTimer*", + "name": "pointer_to_EvtTimer" + }, + { + "type": "FRAMEPRIORITY*", + "name": "pointer_to_FRAMEPRIORITY" + }, + { + "type": "void*", + "name": "pointer_to_void" + }, { "type": "int32_t", "name": "ptrdiff_t" @@ -456,6 +564,10 @@ "type": "TSList_CLayoutFrame__FRAMENODE", "name": "TSExplicitList_CLayoutFrame__FRAMENODE" }, + { + "type": "TSList_CGxTex", + "name": "TSExplicitList_CGxTex" + }, { "type": "TSList_RENDERCALLBACKNODE", "name": "TSExplicitList_RENDERCALLBACKNODE" @@ -2384,17 +2496,6 @@ } ] }, - { - "name": "CGxDeviceD3d__GxVertexDecl", - "size": 4, - "members": [ - { - "type": "uint32_t", - "name": "m_unk00", - "offset": 0 - } - ] - }, { "name": "CGxDevice__TextureTarget", "size": 12, @@ -2417,7 +2518,7 @@ ] }, { - "name": "CGxDevice__vtable", + "name": "CGxDevice__v_table", "size": 336, "members": [ { @@ -9925,6 +10026,32 @@ } ] }, + { + "name": "D3DCOLORVALUE", + "size": 16, + "members": [ + { + "type": "float", + "name": "r", + "offset": 0 + }, + { + "type": "float", + "name": "g", + "offset": 4 + }, + { + "type": "float", + "name": "b", + "offset": 8 + }, + { + "type": "float", + "name": "a", + "offset": 12 + } + ] + }, { "name": "D3DLOCKED_RECT", "size": 8, @@ -9972,6 +10099,63 @@ } ] }, + { + "name": "D3DVECTOR", + "size": 12, + "members": [ + { + "type": "float", + "name": "x", + "offset": 0 + }, + { + "type": "float", + "name": "y", + "offset": 4 + }, + { + "type": "float", + "name": "z", + "offset": 8 + } + ] + }, + { + "name": "D3DVERTEXELEMENT9", + "size": 8, + "members": [ + { + "type": "uint16_t", + "name": "Stream", + "offset": 0 + }, + { + "type": "uint16_t", + "name": "Offset", + "offset": 2 + }, + { + "type": "uint8_t", + "name": "Type", + "offset": 4 + }, + { + "type": "uint8_t", + "name": "Method", + "offset": 5 + }, + { + "type": "uint8_t", + "name": "Usage", + "offset": 6 + }, + { + "type": "uint8_t", + "name": "UsageIndex", + "offset": 7 + } + ] + }, { "name": "D3DVSHADERCAPS2_0", "size": 16, @@ -10540,37 +10724,6 @@ } ] }, - { - "name": "EmergencyMem", - "size": 20, - "members": [ - { - "type": "uint32_t", - "name": "unk00", - "offset": 0 - }, - { - "type": "uint32_t", - "name": "unk04", - "offset": 4 - }, - { - "type": "uint32_t", - "name": "unk08", - "offset": 8 - }, - { - "type": "uint32_t", - "name": "unk0C", - "offset": 12 - }, - { - "type": "uint32_t", - "name": "unk10", - "offset": 16 - } - ] - }, { "name": "EmotesRec", "size": 28, @@ -18046,14 +18199,14 @@ "size": 4, "members": [ { - "type": "IDirect3D9_v_table*", + "type": "IDirect3D9__v_table*", "name": "v_table", "offset": 0 } ] }, { - "name": "IDirect3D9_v_table", + "name": "IDirect3D9__v_table", "size": 68, "members": [ { @@ -18144,18 +18297,145 @@ ] }, { - "name": "IDirect3DDevice9", + "name": "IDirect3DCubeTexture9", "size": 4, "members": [ { - "type": "IDirect3DDevice9_v_table*", + "type": "IDirect3DCubeTexture9__v_table*", "name": "v_table", "offset": 0 } ] }, { - "name": "IDirect3DDevice9_v_table", + "name": "IDirect3DCubeTexture9__v_table", + "size": 88, + "members": [ + { + "type": "void*", + "name": "v_fn_0_QueryInterface", + "offset": 0 + }, + { + "type": "void*", + "name": "v_fn_1_AddRef", + "offset": 4 + }, + { + "type": "void*", + "name": "v_fn_2_Release", + "offset": 8 + }, + { + "type": "void*", + "name": "v_fn_3_GetDevice", + "offset": 12 + }, + { + "type": "void*", + "name": "v_fn_4_SetPrivateData", + "offset": 16 + }, + { + "type": "void*", + "name": "v_fn_5_GetPrivateData", + "offset": 20 + }, + { + "type": "void*", + "name": "v_fn_6_FreePrivateData", + "offset": 24 + }, + { + "type": "void*", + "name": "v_fn_7_SetPriority", + "offset": 28 + }, + { + "type": "void*", + "name": "v_fn_8_GetPriority", + "offset": 32 + }, + { + "type": "void*", + "name": "v_fn_9_PreLoad", + "offset": 36 + }, + { + "type": "void*", + "name": "v_fn_10_GetType", + "offset": 40 + }, + { + "type": "void*", + "name": "v_fn_11_SetLOD", + "offset": 44 + }, + { + "type": "void*", + "name": "v_fn_12_GetLOD", + "offset": 48 + }, + { + "type": "void*", + "name": "v_fn_13_GetLevelCount", + "offset": 52 + }, + { + "type": "void*", + "name": "v_fn_14_SetAutoGenFilterType", + "offset": 56 + }, + { + "type": "void*", + "name": "v_fn_15_GetAutoGenFilterType", + "offset": 60 + }, + { + "type": "void*", + "name": "v_fn_16_GenerateMipSubLevels", + "offset": 64 + }, + { + "type": "void*", + "name": "v_fn_17_GetLevelDesc", + "offset": 68 + }, + { + "type": "void*", + "name": "v_fn_18_GetCubeMapSurface", + "offset": 72 + }, + { + "type": "void*", + "name": "v_fn_19_LockRect", + "offset": 76 + }, + { + "type": "void*", + "name": "v_fn_20_UnlockRect", + "offset": 80 + }, + { + "type": "void*", + "name": "v_fn_21_AddDirtyRect", + "offset": 84 + } + ] + }, + { + "name": "IDirect3DDevice9", + "size": 4, + "members": [ + { + "type": "IDirect3DDevice9__v_table*", + "name": "v_table", + "offset": 0 + } + ] + }, + { + "name": "IDirect3DDevice9__v_table", "size": 476, "members": [ { @@ -18760,12 +19040,88 @@ "size": 4, "members": [ { - "type": "void**", + "type": "IDirect3DIndexBuffer9__v_table*", "name": "v_table", "offset": 0 } ] }, + { + "name": "IDirect3DIndexBuffer9__v_table", + "size": 56, + "members": [ + { + "type": "void*", + "name": "v_fn_0_QueryInterface", + "offset": 0 + }, + { + "type": "void*", + "name": "v_fn_1_AddRef", + "offset": 4 + }, + { + "type": "void*", + "name": "v_fn_2_Release", + "offset": 8 + }, + { + "type": "void*", + "name": "v_fn_3_GetDevice", + "offset": 12 + }, + { + "type": "void*", + "name": "v_fn_4_SetPrivateData", + "offset": 16 + }, + { + "type": "void*", + "name": "v_fn_5_GetPrivateData", + "offset": 20 + }, + { + "type": "void*", + "name": "v_fn_6_FreePrivateData", + "offset": 24 + }, + { + "type": "void*", + "name": "v_fn_7_SetPriority", + "offset": 28 + }, + { + "type": "void*", + "name": "v_fn_8_GetPriority", + "offset": 32 + }, + { + "type": "void*", + "name": "v_fn_9_PreLoad", + "offset": 36 + }, + { + "type": "void*", + "name": "v_fn_10_GetType", + "offset": 40 + }, + { + "type": "void*", + "name": "v_fn_11_Lock", + "offset": 44 + }, + { + "type": "void*", + "name": "v_fn_12_Unlock", + "offset": 48 + }, + { + "type": "void*", + "name": "v_fn_13_GetDesc", + "offset": 52 + } + ] + }, { "name": "IDirect3DPixelShader9", "size": 4, @@ -18808,6 +19164,63 @@ } ] }, + { + "name": "IDirect3DQuery9", + "size": 4, + "members": [ + { + "type": "IDirect3DQuery9__v_table*", + "name": "v_table", + "offset": 0 + } + ] + }, + { + "name": "IDirect3DQuery9__v_table", + "size": 32, + "members": [ + { + "type": "void*", + "name": "v_fn_0_QueryInterface", + "offset": 0 + }, + { + "type": "void*", + "name": "v_fn_1_AddRef", + "offset": 4 + }, + { + "type": "void*", + "name": "v_fn_2_Release", + "offset": 8 + }, + { + "type": "void*", + "name": "v_fn_3_GetDevice", + "offset": 12 + }, + { + "type": "void*", + "name": "v_fn_4_GetType", + "offset": 16 + }, + { + "type": "void*", + "name": "v_fn_5_GetDataSize", + "offset": 20 + }, + { + "type": "void*", + "name": "v_fn_6_Issue", + "offset": 24 + }, + { + "type": "void*", + "name": "v_fn_7_GetData", + "offset": 28 + } + ] + }, { "name": "IDirect3DSurface9", "size": 4, @@ -18915,34 +19328,257 @@ "size": 4, "members": [ { - "type": "void**", + "type": "IDirect3DTexture9__v_table*", "name": "v_table", "offset": 0 } ] }, + { + "name": "IDirect3DTexture9__v_table", + "size": 88, + "members": [ + { + "type": "void*", + "name": "v_fn_0_QueryInterface", + "offset": 0 + }, + { + "type": "void*", + "name": "v_fn_1_AddRef", + "offset": 4 + }, + { + "type": "void*", + "name": "v_fn_2_Release", + "offset": 8 + }, + { + "type": "void*", + "name": "v_fn_3_GetDevice", + "offset": 12 + }, + { + "type": "void*", + "name": "v_fn_4_SetPrivateData", + "offset": 16 + }, + { + "type": "void*", + "name": "v_fn_5_GetPrivateData", + "offset": 20 + }, + { + "type": "void*", + "name": "v_fn_6_FreePrivateData", + "offset": 24 + }, + { + "type": "void*", + "name": "v_fn_7_SetPriority", + "offset": 28 + }, + { + "type": "void*", + "name": "v_fn_8_GetPriority", + "offset": 32 + }, + { + "type": "void*", + "name": "v_fn_9_PreLoad", + "offset": 36 + }, + { + "type": "void*", + "name": "v_fn_10_GetType", + "offset": 40 + }, + { + "type": "void*", + "name": "v_fn_11_SetLOD", + "offset": 44 + }, + { + "type": "void*", + "name": "v_fn_12_GetLOD", + "offset": 48 + }, + { + "type": "void*", + "name": "v_fn_13_GetLevelCount", + "offset": 52 + }, + { + "type": "void*", + "name": "v_fn_14_SetAutoGenFilterType", + "offset": 56 + }, + { + "type": "void*", + "name": "v_fn_15_GetAutoGenFilterType", + "offset": 60 + }, + { + "type": "void*", + "name": "v_fn_16_GenerateMipSubLevels", + "offset": 64 + }, + { + "type": "void*", + "name": "v_fn_17_GetLevelDesc", + "offset": 68 + }, + { + "type": "void*", + "name": "v_fn_18_GetSurfaceLevel", + "offset": 72 + }, + { + "type": "void*", + "name": "v_fn_19_LockRect", + "offset": 76 + }, + { + "type": "void*", + "name": "v_fn_20_UnlockRect", + "offset": 80 + }, + { + "type": "void*", + "name": "v_fn_21_AddDirtyRect", + "offset": 84 + } + ] + }, { "name": "IDirect3DVertexBuffer9", "size": 4, "members": [ { - "type": "void**", + "type": "IDirect3DVertexBuffer9__v_table*", "name": "v_table", "offset": 0 } ] }, + { + "name": "IDirect3DVertexBuffer9__v_table", + "size": 56, + "members": [ + { + "type": "void*", + "name": "v_fn_0_QueryInterface", + "offset": 0 + }, + { + "type": "void*", + "name": "v_fn_1_AddRef", + "offset": 4 + }, + { + "type": "void*", + "name": "v_fn_2_Release", + "offset": 8 + }, + { + "type": "void*", + "name": "v_fn_3_GetDevice", + "offset": 12 + }, + { + "type": "void*", + "name": "v_fn_4_SetPrivateData", + "offset": 16 + }, + { + "type": "void*", + "name": "v_fn_5_GetPrivateData", + "offset": 20 + }, + { + "type": "void*", + "name": "v_fn_6_FreePrivateData", + "offset": 24 + }, + { + "type": "void*", + "name": "v_fn_7_SetPriority", + "offset": 28 + }, + { + "type": "void*", + "name": "v_fn_8_GetPriority", + "offset": 32 + }, + { + "type": "void*", + "name": "v_fn_9_PreLoad", + "offset": 36 + }, + { + "type": "void*", + "name": "v_fn_10_GetType", + "offset": 40 + }, + { + "type": "void*", + "name": "v_fn_11_Lock", + "offset": 44 + }, + { + "type": "void*", + "name": "v_fn_12_Unlock", + "offset": 48 + }, + { + "type": "void*", + "name": "v_fn_13_GetDesc", + "offset": 52 + } + ] + }, { "name": "IDirect3DVertexDeclaration9", "size": 4, "members": [ { - "type": "void**", + "type": "IDirect3DVertexDeclaration9__v_table*", "name": "v_table", "offset": 0 } ] }, + { + "name": "IDirect3DVertexDeclaration9__v_table", + "size": 20, + "members": [ + { + "type": "void*", + "name": "v_fn_0_QueryInterface", + "offset": 0 + }, + { + "type": "void*", + "name": "v_fn_1_AddRef", + "offset": 4 + }, + { + "type": "void*", + "name": "v_fn_2_Release", + "offset": 8 + }, + { + "type": "void*", + "name": "v_fn_3_GetDevice", + "offset": 12 + }, + { + "type": "void*", + "name": "v_fn_4_GetDeclaration", + "offset": 16 + } + ] + }, { "name": "IDirect3DVertexShader9", "size": 4, @@ -26200,7 +26836,7 @@ "offset": 4 }, { - "type": "CBaseManaged**", + "type": "pointer_to_CBaseManaged*", "name": "m_data", "offset": 8 } @@ -26221,7 +26857,7 @@ "offset": 4 }, { - "type": "CFrameStrataNode**", + "type": "pointer_to_CFrameStrataNode*", "name": "m_data", "offset": 8 } @@ -26970,7 +27606,7 @@ "offset": 4 }, { - "type": "EvtTimer**", + "type": "pointer_to_EvtTimer*", "name": "m_data", "offset": 8 }, @@ -26996,7 +27632,7 @@ "offset": 4 }, { - "type": "FRAMEPRIORITY**", + "type": "pointer_to_FRAMEPRIORITY*", "name": "m_data", "offset": 8 }, @@ -27022,7 +27658,7 @@ "offset": 4 }, { - "type": "void**", + "type": "pointer_to_void*", "name": "m_data", "offset": 8 }, @@ -27287,6 +27923,22 @@ } ] }, + { + "name": "TSLink_CGxTex", + "size": 8, + "members": [ + { + "type": "TSLink_CGxTex*", + "name": "m_prevlink", + "offset": 0 + }, + { + "type": "CGxTex*", + "name": "m_next", + "offset": 4 + } + ] + }, { "name": "TSLink_CHARCODEDESC", "size": 8, @@ -29954,6 +30606,68 @@ } ] }, + { + "name": "CGxLight", + "size": 64, + "members": [ + { + "type": "int32_t", + "name": "f_flags", + "offset": 0 + }, + { + "type": "C3Vector", + "name": "m_dir", + "offset": 4 + }, + { + "type": "C3Vector", + "name": "m_ambColor", + "offset": 16 + }, + { + "type": "C3Vector", + "name": "m_dirColor", + "offset": 28 + }, + { + "type": "C3Vector", + "name": "m_specColor", + "offset": 40 + }, + { + "type": "float", + "name": "m_constantAttenuation", + "offset": 52 + }, + { + "type": "float", + "name": "m_linearAttenuation", + "offset": 56 + }, + { + "type": "float", + "name": "m_quadraticAttenuation", + "offset": 60 + } + ] + }, + { + "name": "C4Plane", + "size": 16, + "members": [ + { + "type": "C3Vector", + "name": "n", + "offset": 0 + }, + { + "type": "float", + "name": "d", + "offset": 12 + } + ] + }, { "name": "CAaBox", "size": 24, @@ -30185,22 +30899,6 @@ } ] }, - { - "name": "C4Plane", - "size": 16, - "members": [ - { - "type": "C3Vector", - "name": "n", - "offset": 0 - }, - { - "type": "float", - "name": "d", - "offset": 12 - } - ] - }, { "name": "CGxMatrixStack", "size": 280, @@ -30340,7 +31038,7 @@ }, { "type": "uint32_t", - "name": "backbuffers", + "name": "backBufferCount", "offset": 28 }, { @@ -30781,150 +31479,9 @@ } ] }, - { - "name": "CGxTex", - "size": 96, - "members": [ - { - "type": "CiRect", - "name": "m_updateRect", - "offset": 0 - }, - { - "type": "int16_t", - "name": "m_updatePlaneMin", - "offset": 16 - }, - { - "type": "int16_t", - "name": "m_updatePlaneMax", - "offset": 18 - }, - { - "type": "uint32_t", - "name": "m_width", - "offset": 20 - }, - { - "type": "uint32_t", - "name": "m_height", - "offset": 24 - }, - { - "type": "uint32_t", - "name": "m_depth", - "offset": 28 - }, - { - "type": "uint32_t", - "name": "m_target", - "offset": 32 - }, - { - "type": "uint32_t", - "name": "m_format", - "offset": 36 - }, - { - "type": "uint32_t", - "name": "m_dataFormat", - "offset": 40 - }, - { - "type": "CGxTexFlags", - "name": "m_flags", - "offset": 44 - }, - { - "type": "void*", - "name": "m_userArg", - "offset": 48 - }, - { - "type": "void*", - "name": "m_userFunc", - "offset": 52 - }, - { - "type": "void*", - "name": "m_apiSpecificData", - "offset": 56 - }, - { - "type": "void*", - "name": "m_apiSpecificData2", - "offset": 60 - }, - { - "type": "uint32_t", - "name": "unk40", - "offset": 64 - }, - { - "type": "uint32_t", - "name": "unk44", - "offset": 68 - }, - { - "type": "uint32_t", - "name": "unk48", - "offset": 72 - }, - { - "type": "uint32_t", - "name": "unk4C", - "offset": 76 - }, - { - "type": "uint32_t", - "name": "unk50", - "offset": 80 - }, - { - "type": "uint32_t", - "name": "unk54", - "offset": 84 - }, - { - "type": "int8_t", - "name": "char58", - "offset": 88 - }, - { - "type": "int8_t", - "name": "char59", - "offset": 89 - }, - { - "type": "int8_t", - "name": "m_needsUpdate", - "offset": 90 - }, - { - "type": "int8_t", - "name": "m_needsCreation", - "offset": 91 - }, - { - "type": "int8_t", - "name": "m_needsFlagUpdate", - "offset": 92 - }, - { - "type": "int8_t", - "name": "char5D", - "offset": 93 - }, - { - "type": "uint16_t", - "name": "m_pad", - "offset": 94 - } - ] - }, { "name": "D3DDISPLAYMODE", - "size": 16, + "size": 24, "members": [ { "type": "uint32_t", @@ -30944,7 +31501,222 @@ { "type": "D3DFORMAT", "name": "Format", + "offset": 16 + } + ] + }, + { + "name": "D3DSURFACE_DESC", + "size": 40, + "members": [ + { + "type": "D3DFORMAT", + "name": "Format", + "offset": 0 + }, + { + "type": "D3DRESOURCETYPE", + "name": "Type", + "offset": 8 + }, + { + "type": "uint32_t", + "name": "Usage", "offset": 12 + }, + { + "type": "D3DPOOL", + "name": "Pool", + "offset": 16 + }, + { + "type": "D3DMULTISAMPLE_TYPE", + "name": "MultiSampleType", + "offset": 20 + }, + { + "type": "uint32_t", + "name": "MultiSampleQuality", + "offset": 24 + }, + { + "type": "uint32_t", + "name": "Width", + "offset": 28 + }, + { + "type": "uint32_t", + "name": "Height", + "offset": 32 + } + ] + }, + { + "name": "D3DPRESENT_PARAMETERS", + "size": 80, + "members": [ + { + "type": "uint32_t", + "name": "BackBufferWidth", + "offset": 0 + }, + { + "type": "uint32_t", + "name": "BackBufferHeight", + "offset": 4 + }, + { + "type": "D3DFORMAT", + "name": "BackBufferFormat", + "offset": 8 + }, + { + "type": "uint32_t", + "name": "BackBufferCount", + "offset": 16 + }, + { + "type": "D3DMULTISAMPLE_TYPE", + "name": "MultiSampleType", + "offset": 20 + }, + { + "type": "uint32_t", + "name": "MultiSampleQuality", + "offset": 24 + }, + { + "type": "D3DSWAPEFFECT", + "name": "SwapEffect", + "offset": 32 + }, + { + "type": "void*", + "name": "hDeviceWindow", + "offset": 40 + }, + { + "type": "int32_t", + "name": "Windowed", + "offset": 44 + }, + { + "type": "int32_t", + "name": "EnableAutoDepthStencil", + "offset": 48 + }, + { + "type": "D3DFORMAT", + "name": "AutoDepthStencilFormat", + "offset": 56 + }, + { + "type": "uint32_t", + "name": "Flags", + "offset": 64 + }, + { + "type": "uint32_t", + "name": "FullScreen_RefreshRateInHz", + "offset": 68 + }, + { + "type": "uint32_t", + "name": "PresentationInterval", + "offset": 72 + } + ] + }, + { + "name": "D3DLIGHT9", + "size": 104, + "members": [ + { + "type": "D3DLIGHTTYPE", + "name": "Type", + "offset": 0 + }, + { + "type": "D3DCOLORVALUE", + "name": "Diffuse", + "offset": 4 + }, + { + "type": "D3DCOLORVALUE", + "name": "Specular", + "offset": 20 + }, + { + "type": "D3DCOLORVALUE", + "name": "Ambient", + "offset": 36 + }, + { + "type": "D3DVECTOR", + "name": "Position", + "offset": 52 + }, + { + "type": "D3DVECTOR", + "name": "Direction", + "offset": 64 + }, + { + "type": "float", + "name": "Range", + "offset": 76 + }, + { + "type": "float", + "name": "Falloff", + "offset": 80 + }, + { + "type": "float", + "name": "Attenuation0", + "offset": 84 + }, + { + "type": "float", + "name": "Attenuation1", + "offset": 88 + }, + { + "type": "float", + "name": "Attenuation2", + "offset": 92 + }, + { + "type": "float", + "name": "Theta", + "offset": 96 + }, + { + "type": "float", + "name": "Phi", + "offset": 100 + } + ] + }, + { + "name": "CGxDeviceD3d__GxVertexDecl", + "size": 128, + "members": [ + { + "type": "uint32_t", + "name": "count", + "offset": 0 + }, + { + "type": "D3DVERTEXELEMENT9", + "name": "elements", + "arrsize": 15, + "offset": 4 + }, + { + "type": "IDirect3DVertexDeclaration9*", + "name": "d3dDecl", + "offset": 124 } ] }, @@ -33312,6 +34084,17 @@ } ] }, + { + "name": "EmergencyMem", + "size": 16, + "members": [ + { + "type": "TSGrowableArray_uint8_t", + "name": "m_data", + "offset": 0 + } + ] + }, { "name": "TSHashObject_BATCHEDRENDERFONTDESC_HASHKEY_PTR", "size": 24, @@ -33633,6 +34416,153 @@ } ] }, + { + "name": "CGxTex", + "size": 96, + "members": [ + { + "type": "CiRect", + "name": "m_updateRect", + "offset": 0 + }, + { + "type": "int16_t", + "name": "m_updatePlaneMin", + "offset": 16 + }, + { + "type": "int16_t", + "name": "m_updatePlaneMax", + "offset": 18 + }, + { + "type": "uint32_t", + "name": "m_width", + "offset": 20 + }, + { + "type": "uint32_t", + "name": "m_height", + "offset": 24 + }, + { + "type": "uint32_t", + "name": "m_depth", + "offset": 28 + }, + { + "type": "uint32_t", + "name": "m_target", + "offset": 32 + }, + { + "type": "uint32_t", + "name": "m_format", + "offset": 36 + }, + { + "type": "uint32_t", + "name": "m_dataFormat", + "offset": 40 + }, + { + "type": "CGxTexFlags", + "name": "m_flags", + "offset": 44 + }, + { + "type": "void*", + "name": "m_userArg", + "offset": 48 + }, + { + "type": "void*", + "name": "m_userFunc", + "offset": 52 + }, + { + "type": "void*", + "name": "m_apiSpecificData", + "offset": 56 + }, + { + "type": "void*", + "name": "m_apiSpecificData2", + "offset": 60 + }, + { + "type": "TSLink_CGxTex", + "name": "m_link", + "offset": 64 + }, + { + "type": "uint32_t", + "name": "unk48", + "offset": 72 + }, + { + "type": "uint32_t", + "name": "unk4C", + "offset": 76 + }, + { + "type": "uint32_t", + "name": "unk50", + "offset": 80 + }, + { + "type": "uint32_t", + "name": "unk54", + "offset": 84 + }, + { + "type": "int8_t", + "name": "char58", + "offset": 88 + }, + { + "type": "int8_t", + "name": "char59", + "offset": 89 + }, + { + "type": "int8_t", + "name": "m_needsUpdate", + "offset": 90 + }, + { + "type": "int8_t", + "name": "m_needsCreation", + "offset": 91 + }, + { + "type": "int8_t", + "name": "m_needsFlagUpdate", + "offset": 92 + }, + { + "type": "int8_t", + "name": "char5D", + "offset": 93 + }, + { + "type": "uint16_t", + "name": "m_pad", + "offset": 94 + } + ] + }, + { + "name": "TSLinkedNode_CGxTex", + "size": 8, + "members": [ + { + "type": "TSLink_CGxTex", + "name": "m_link", + "offset": 0 + } + ] + }, { "name": "TSHashObject_CHARCODEDESC_HASHKEY_NONE", "size": 24, @@ -37747,6 +38677,22 @@ } ] }, + { + "name": "TSList_CGxTex", + "size": 12, + "members": [ + { + "type": "ptrdiff_t", + "name": "m_linkoffset", + "offset": 0 + }, + { + "type": "TSLink_CGxTex", + "name": "m_terminator", + "offset": 4 + } + ] + }, { "name": "TSList_RENDERCALLBACKNODE", "size": 12, @@ -38104,6 +39050,22 @@ } ] }, + { + "name": "NvAPI_InterfaceTable", + "size": 8, + "members": [ + { + "type": "uintptr_t", + "name": "func", + "offset": 0 + }, + { + "type": "uint32_t", + "name": "id", + "offset": 4 + } + ] + }, { "name": "System_File__Stacked__FileParms", "size": 144, @@ -38334,6 +39296,27 @@ } ] }, + { + "name": "CGxDevice__GxLight", + "size": 72, + "members": [ + { + "type": "CGxLight", + "name": "light", + "offset": 0 + }, + { + "type": "int32_t", + "name": "enable", + "offset": 64 + }, + { + "type": "uint16_t", + "name": "flags", + "offset": 68 + } + ] + }, { "name": "CM2Shared", "size": 424, @@ -46770,11 +47753,11 @@ }, { "name": "CGxDevice", - "size": 14696, + "size": 14688, "members": [ { - "type": "CGxDevice__vtable*", - "name": "v_vtable", + "type": "CGxDevice__v_table*", + "name": "v_table", "offset": 0 }, { @@ -46951,12 +47934,12 @@ }, { "type": "int32_t", - "name": "intF68", + "name": "m_frameCount", "offset": 3944 }, { "type": "int32_t", - "name": "m_needsReset", + "name": "m_viewportDirty", "offset": 3948 }, { @@ -46988,10 +47971,31 @@ }, { "type": "uint32_t", - "name": "unk24D0", - "arrsize": 102, + "name": "m_clipPlaneMask", "offset": 9424 }, + { + "type": "C4Plane", + "name": "m_clipPlane", + "arrsize": 6, + "offset": 9428 + }, + { + "type": "int32_t", + "name": "m_scissorRectDirty", + "offset": 9524 + }, + { + "type": "CRect", + "name": "m_scissorRect", + "offset": 9528 + }, + { + "type": "CGxDevice__GxLight", + "name": "m_lights", + "arrsize": 4, + "offset": 9544 + }, { "type": "TSHashTable_CGxShader_HASHKEY_STRI", "name": "m_shaderList", @@ -47097,85 +48101,84 @@ { "type": "TSFixedArray_CGxAppRenderState", "name": "m_appRenderStates", - "offset": 10476 + "offset": 10468 }, { "type": "TSFixedArray_CGxStateBom", "name": "m_hwRenderStates", - "offset": 10488 + "offset": 10480 }, { - "type": "uint32_t", - "name": "unk2904", - "arrsize": 3, - "offset": 10500 + "type": "TSExplicitList_CGxTex", + "name": "m_textures", + "offset": 10492 }, { "type": "CGxDevice__TextureTarget", "name": "m_textureTarget", "arrsize": 2, - "offset": 10512 + "offset": 10504 }, { "type": "TSExplicitList_CGxQuery", "name": "m_queryList", - "offset": 10536 + "offset": 10528 }, { "type": "int32_t", "name": "m_scrShotClick", - "offset": 10548 + "offset": 10540 }, { "type": "uint32_t", "name": "m_scrShotWidth", - "offset": 10552 + "offset": 10544 }, { "type": "uint32_t", "name": "m_scrShotHeight", - "offset": 10556 + "offset": 10548 }, { "type": "TSGrowableArray_CImVector", "name": "m_scrShotPixels", - "offset": 10560 + "offset": 10552 }, { "type": "int32_t", "name": "m_cursorVisible", - "offset": 10576 + "offset": 10568 }, { "type": "int32_t", "name": "m_hwCursor", - "offset": 10580 + "offset": 10572 }, { "type": "uint32_t", "name": "m_cursorHotspotX", - "offset": 10584 + "offset": 10576 }, { "type": "uint32_t", "name": "m_cursorHotspotY", - "offset": 10588 + "offset": 10580 }, { "type": "uint32_t", "name": "m_cursor", "arrsize": 1024, - "offset": 10592 + "offset": 10584 }, { "type": "CGxTex*", "name": "m_cursorTexture", - "offset": 14688 + "offset": 14680 }, { "type": "float", "name": "m_cursorDepth", - "offset": 14692 + "offset": 14684 } ] }, @@ -48423,7 +49426,7 @@ }, { "name": "CGxDeviceOpenGl", - "size": 15264, + "size": 15256, "members": [ { "type": "CGxDevice", @@ -48434,13 +49437,13 @@ "type": "uint32_t", "name": "unk3968", "arrsize": 142, - "offset": 14696 + "offset": 14688 } ] }, { "name": "CGxDeviceD3d", - "size": 16048, + "size": 16056, "members": [ { "type": "CGxDevice", @@ -48450,98 +49453,98 @@ { "type": "void*", "name": "m_hwnd", - "offset": 14696 + "offset": 14688 }, { "type": "uint16_t", "name": "m_hwndClass", - "offset": 14700 + "offset": 14692 }, { "type": "uint16_t", "name": "unk396E", - "offset": 14702 + "offset": 14694 }, { "type": "int32_t", "name": "m_ownhwnd", - "offset": 14704 + "offset": 14696 }, { "type": "void*", "name": "m_d3dLib", - "offset": 14708 + "offset": 14700 }, { - "type": "IDirect3D9*", + "type": "LPDIRECT3D9", "name": "m_d3d", - "offset": 14712 + "offset": 14704 }, { - "type": "IDirect3DDevice9*", + "type": "LPDIRECT3DDEVICE9", "name": "m_d3dDevice", - "offset": 14716 + "offset": 14708 }, { "type": "D3DCAPS9", "name": "m_d3dCaps", - "offset": 14720 + "offset": 14712 }, { "type": "int32_t", "name": "m_d3dIsHwDevice", - "offset": 15032 + "offset": 15024 }, { "type": "int32_t", "name": "m_d3dNVAPI", - "offset": 15036 + "offset": 15028 }, { "type": "uint32_t", "name": "m_d3dStereoEnabled", - "offset": 15040 + "offset": 15032 }, { "type": "uint32_t", - "name": "unk3ABC", - "offset": 15044 + "name": "m_d3dStereoRestore", + "offset": 15036 }, { "type": "uint32_t", "name": "m_d3dStereoHandle", - "offset": 15048 + "offset": 15040 }, { "type": "float", "name": "m_d3dStereoConvergence", - "offset": 15052 + "offset": 15044 }, { "type": "float", "name": "m_d3dStereoSeparation", - "offset": 15056 + "offset": 15048 }, { "type": "int32_t", - "name": "unk3ACC", - "offset": 15060 + "name": "m_d3dStereoDirty", + "offset": 15052 }, { "type": "TSGrowableArray_CGxDeviceD3d__GxVertexDecl", - "name": "m_vertexDecl", - "offset": 15064 + "name": "m_gxVertexDecl", + "offset": 15056 }, { - "type": "IDirect3DVertexDeclaration9*", + "type": "LPDIRECT3DVERTEXDECLARATION9", "name": "m_d3dVertexDecl", "arrsize": 14, - "offset": 15080 + "offset": 15072 }, { "type": "D3DDISPLAYMODE", "name": "m_desktopDisplayMode", - "offset": 15136 + "offset": 15128 }, { "type": "int32_t", @@ -48549,8 +49552,8 @@ "offset": 15152 }, { - "type": "uint32_t", - "name": "unk3B2C", + "type": "int32_t", + "name": "int3B2C", "offset": 15156 }, { @@ -48561,92 +49564,92 @@ { "type": "D3DFORMAT", "name": "m_devAdapterFormat", - "offset": 15164 - }, - { - "type": "uint32_t", - "name": "unk3B38", "offset": 15168 }, { - "type": "IDirect3DSurface9*", - "name": "m_defColorSurface", - "offset": 15172 - }, - { - "type": "IDirect3DSurface9*", - "name": "m_defDepthSurface", + "type": "LPDIRECT3DSURFACE9", + "name": "m_defDepthStencilSurface", "offset": 15176 }, { - "type": "uint32_t", - "name": "unk3B44", + "type": "LPDIRECT3DSURFACE9", + "name": "m_defColorSurface", "offset": 15180 }, { - "type": "uint32_t", - "name": "unk3B48", + "type": "LPDIRECT3DSURFACE9", + "name": "m_defDepthSurface", "offset": 15184 }, { - "type": "int32_t", - "name": "m_hwCursorNeedsUpdate", + "type": "LPDIRECT3DSURFACE9", + "name": "surface3B44", "offset": 15188 }, { - "type": "IDirect3DTexture9*", - "name": "m_hwCursorTexture", + "type": "LPDIRECT3DQUERY9", + "name": "m_eventQuery", "offset": 15192 }, { - "type": "IDirect3DSurface9*", - "name": "m_hwCursorBitmap", + "type": "int32_t", + "name": "m_hwCursorDirty", "offset": 15196 }, { - "type": "uint32_t", - "name": "unk3B58", + "type": "LPDIRECT3DTEXTURE9", + "name": "m_hwCursorTexture", "offset": 15200 }, { - "type": "IDirect3DVertexDeclaration9*", - "name": "m_d3dCurrentVertexDecl", + "type": "LPDIRECT3DSURFACE9", + "name": "m_hwCursorBitmap", "offset": 15204 }, { - "type": "IDirect3DIndexBuffer9*", - "name": "m_d3dCurrentIndexBuf", + "type": "CGxTex*", + "name": "texture3B58", "offset": 15208 }, { - "type": "IDirect3DVertexBuffer9*", + "type": "LPDIRECT3DVERTEXDECLARATION9", + "name": "m_d3dCurrentVertexDecl", + "offset": 15212 + }, + { + "type": "LPDIRECT3DINDEXBUFFER9", + "name": "m_d3dCurrentIndexBuf", + "offset": 15216 + }, + { + "type": "LPDIRECT3DVERTEXBUFFER9", "name": "m_d3dVertexStreamBuf", "arrsize": 8, - "offset": 15212 + "offset": 15220 }, { "type": "uint32_t", "name": "m_d3dVertexStreamOfs", "arrsize": 8, - "offset": 15244 + "offset": 15252 }, { "type": "uint32_t", "name": "m_d3dVertexStreamStride", "arrsize": 8, - "offset": 15276 + "offset": 15284 }, { "type": "uint32_t", "name": "m_deviceStates", "arrsize": 182, - "offset": 15308 + "offset": 15316 }, { "type": "bool", "name": "m_texEnabled", "arrsize": 8, - "offset": 16036 + "offset": 16044 } ] },