From 648d8256adace7d88c5eaf6505aaa9e04951f134 Mon Sep 17 00:00:00 2001 From: Guus Waals <_@guusw.nl> Date: Tue, 24 Sep 2024 21:46:10 +0800 Subject: [PATCH] WIP --- game_re/gh_fix/Erm_fn_ucInitErrMsg.cxx | 30 + game_re/gh_fix/FUN_0046f240.cxx | 2 +- game_re/gh_fix/r3_main.cxx | 37 +- game_re/gh_global.cxx | 5 + game_re/gh_global.h | 5 + game_re/gh_stub/Erm_fn_ucInitErrMsg.cxx | 14 - game_re/gh_types.h | 913 ++++++++++++++++++++++-- game_re/globals.txt | 5 + game_re/r3/binders/auto.h | 19 +- game_re/r3/main.cpp | 5 +- 10 files changed, 922 insertions(+), 113 deletions(-) create mode 100644 game_re/gh_fix/Erm_fn_ucInitErrMsg.cxx delete mode 100644 game_re/gh_stub/Erm_fn_ucInitErrMsg.cxx diff --git a/game_re/gh_fix/Erm_fn_ucInitErrMsg.cxx b/game_re/gh_fix/Erm_fn_ucInitErrMsg.cxx new file mode 100644 index 00000000..d0f0ff49 --- /dev/null +++ b/game_re/gh_fix/Erm_fn_ucInitErrMsg.cxx @@ -0,0 +1,30 @@ +// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!! + +#include +#include + +extern "C" { + +// 0043e1d0 +/* Allocate error manager system numbers */ + +R3ModuleId Erm_fn_ucInitErrMsg(void) + +{ + R3ModuleId RVar1; + tdstLastErrorInfo* pdVar2; + int iVar2; + + RVar1 = g_ucErmNbOfModule; + if (g_ucErmNbOfModule == R3ModId_unk) { + for(size_t i = 0; i < std::size(g_stErmTheLastErrorInfo); i++) { + g_stErmTheLastErrorInfo[i].lastErr = 0; + g_stErmTheLastErrorInfo[i].ulChannelId = 0; + } + } + g_ucErmNbOfModule = R3ModuleId(g_ucErmNbOfModule + 1); + return RVar1; +} + +} + diff --git a/game_re/gh_fix/FUN_0046f240.cxx b/game_re/gh_fix/FUN_0046f240.cxx index c9affc31..971231a6 100644 --- a/game_re/gh_fix/FUN_0046f240.cxx +++ b/game_re/gh_fix/FUN_0046f240.cxx @@ -9,7 +9,7 @@ undefined FUN_0046ecc0(undefined2 param_1, undefined2 param_2); // 0046ecc0 // F // 0046f240 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ -undefined4 __cdecl FUN_0046f240(short param_1,short param_2,undefined4 *param_3) +undefined4 FUN_0046f240(short param_1,short param_2,undefined4 *param_3) { uint uVar1; diff --git a/game_re/gh_fix/r3_main.cxx b/game_re/gh_fix/r3_main.cxx index db284e85..0f41bbe4 100644 --- a/game_re/gh_fix/r3_main.cxx +++ b/game_re/gh_fix/r3_main.cxx @@ -13,19 +13,17 @@ undefined FUN_00472150(void); // 00472150 // FUN_00472150 undefined r3_wait_for_dvd(char *param_1, char *param_2, undefined4 param_3); // 0043e540 // r3_wait_for_dvd undefined FUN_004725a0(void); // 004725a0 // FUN_004725a0 -uint32_t r3_containsCmdLine(uint *param_1, - char *param_2); // 004028e0 // r3_containsCmdLine -int r3_get_gli_width1(void); // 0047baf0 // r3_get_gli_width1 -undefined gfx_init2(void); // 00470be0 // gfx_init2 -void g_setInitVar0(void); // 00401310 // g_setInitVar0 -int r3_get_gli_height1(void); // 0047bb00 // r3_get_gli_height1 -undefined FUN_004010b0(void); // 004010b0 // FUN_004010b0 -undefined FUN_00401320(void); // 00401320 // FUN_00401320 -void r3_noop(void *p_cTxt1, void *p_cTxt2); // 00401100 // r3_noop -undefined r3_initEngine(void); // 00401220 // r3_initEngine -undefined FUN_005038e0(void); // 005038e0 // FUN_005038e0 -undefined FUN_004fb300(void); // 004fb300 // FUN_004fb300 -undefined spawnThread(void); // 004477d0 // spawnThread +int r3_get_gli_width1(void); // 0047baf0 // r3_get_gli_width1 +undefined gfx_init2(void); // 00470be0 // gfx_init2 +void g_setInitVar0(void); // 00401310 // g_setInitVar0 +int r3_get_gli_height1(void); // 0047bb00 // r3_get_gli_height1 +undefined FUN_004010b0(void); // 004010b0 // FUN_004010b0 +undefined FUN_00401320(void); // 00401320 // FUN_00401320 +void r3_noop(void *p_cTxt1, void *p_cTxt2); // 00401100 // r3_noop +undefined r3_initEngine(void); // 00401220 // r3_initEngine +undefined FUN_005038e0(void); // 005038e0 // FUN_005038e0 +undefined FUN_004fb300(void); // 004fb300 // FUN_004fb300 +undefined spawnThread(void); // 004477d0 // spawnThread undefined r3_setupWindow(HINSTANCE hInstance, undefined4 param_2, undefined4 maximizeWindow); // 00402140 // r3_setupWindow @@ -379,7 +377,7 @@ int r3_main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR *cmdline, 1 = maximize 0 = windowed */ g_runMaximized = (int)(acStack_200[0] != '0'); - r3_checkDisc(); + // r3_checkDisc(); dwOptions = 0; BVar18 = 0; lpTargetHandle = &pvStack_834; @@ -392,15 +390,10 @@ int r3_main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR *cmdline, lpTargetHandle, DVar7, BVar18, dwOptions); g_mainThreadHandle = pvStack_834; /* Copy cmdline */ - ppCVar8 = cmdline; - do { - cVar1 = *(char *)ppCVar8; - *(char *)(((int)g_appCmdLine - (int)cmdline) + (int)ppCVar8) = cVar1; - ppCVar8 = (LPSTR *)((int)ppCVar8 + 1); - } while (cVar1 != '\0'); + strcpy(g_appCmdLine, GetCommandLineA()); SetErrorMode(1); - uVar9 = r3_containsCmdLine((uint *)cmdline, s_dashCC); - if (uVar9 == 0) { + char *ccArg = strstr(g_appCmdLine, s_dashCC); + if (ccArg == 0) { r3_module0_init(); iVar13 = r3_setupWindow(hInstance, showCmd, g_runMaximized); if (iVar13 == 0) { diff --git a/game_re/gh_global.cxx b/game_re/gh_global.cxx index b99c478f..1504429c 100644 --- a/game_re/gh_global.cxx +++ b/game_re/gh_global.cxx @@ -79,6 +79,7 @@ undefined2& DAT_005c0f20= (undefined2&) GH_MEM(0x005c0f20); char& DAT_005c0f22= (char&) GH_MEM(0x005c0f22); HWND& g_gameHWND1= (HWND&) GH_MEM(0x005cf964); long& lpDefault_005cf96c= (long&) GH_MEM(0x005cf96c); +R3ModuleId& g_ucErmNbOfModule= (R3ModuleId&) GH_MEM(0x005d2638); undefined4& DAT_005d2660= (undefined4&) GH_MEM(0x005d2660); undefined1& DAT_005d26a8= (undefined1&) GH_MEM(0x005d26a8); undefined& lpVolumeNameBuffer_005d27b0= (undefined&) GH_MEM(0x005d27b0); @@ -106,6 +107,10 @@ char(&g_appCmdLine)[256] = reinterpret_cast(GH_MEM(0x0077d4e0)); char(&s_wndStrRestoring)[256] = reinterpret_cast(GH_MEM(0x0077d5e0)); char(&s_quitting1)[64] = reinterpret_cast(GH_MEM(0x007825c0)); char(&s_wndStrQuiting)[56] = reinterpret_cast(GH_MEM(0x00782600)); +tdstLastErrorInfo(&g_stErmTheLastErrorInfo)[3] = reinterpret_cast(GH_MEM(0x00782640)); +pointer& g_errDat4= (pointer&) GH_MEM(0x00782644); +tdstBlockInfoPriv *(&g_a_p_stMmgModuleBlocksInfo)[255] = reinterpret_cast(GH_MEM(0x0078f6a0)); +char(&g_a_ucBlocksNbInModule)[255] = reinterpret_cast(GH_MEM(0x0078fac0)); undefined& DAT_007d7d84= (undefined&) GH_MEM(0x007d7d84); undefined2& DAT_007d7ea8= (undefined2&) GH_MEM(0x007d7ea8); short& DAT_007d80f8= (short&) GH_MEM(0x007d80f8); diff --git a/game_re/gh_global.h b/game_re/gh_global.h index d1c75bda..546143fc 100644 --- a/game_re/gh_global.h +++ b/game_re/gh_global.h @@ -84,6 +84,7 @@ extern undefined2& DAT_005c0f20; // 005c0f20 extern char& DAT_005c0f22; // 005c0f22 extern HWND& g_gameHWND1; // 005cf964 extern long& lpDefault_005cf96c; // 005cf96c +extern R3ModuleId& g_ucErmNbOfModule; // 005d2638 extern undefined4& DAT_005d2660; // 005d2660 extern undefined1& DAT_005d26a8; // 005d26a8 extern undefined& lpVolumeNameBuffer_005d27b0; // 005d27b0 @@ -111,6 +112,10 @@ extern char(&g_appCmdLine)[256]; // 0077d4e0 extern char(&s_wndStrRestoring)[256]; // 0077d5e0 extern char(&s_quitting1)[64]; // 007825c0 extern char(&s_wndStrQuiting)[56]; // 00782600 +extern tdstLastErrorInfo(&g_stErmTheLastErrorInfo)[3]; // 00782640 +extern pointer& g_errDat4; // 00782644 +extern tdstBlockInfoPriv *(&g_a_p_stMmgModuleBlocksInfo)[255]; // 0078f6a0 +extern char(&g_a_ucBlocksNbInModule)[255]; // 0078fac0 extern undefined& DAT_007d7d84; // 007d7d84 extern undefined2& DAT_007d7ea8; // 007d7ea8 extern short& DAT_007d80f8; // 007d80f8 diff --git a/game_re/gh_stub/Erm_fn_ucInitErrMsg.cxx b/game_re/gh_stub/Erm_fn_ucInitErrMsg.cxx deleted file mode 100644 index 61055723..00000000 --- a/game_re/gh_stub/Erm_fn_ucInitErrMsg.cxx +++ /dev/null @@ -1,14 +0,0 @@ -// AUTO-GENERATED FILE!!!! -// This function has yet to be decompiled using 'Dump Current Function' in ghidra -// with possible manualy fixes - -#include -#include -#include - -// 0043e1d0 -// Erm_fn_ucInitErrMsg -extern "C" R3ModuleId Erm_fn_ucInitErrMsg(void) { - // TODO: Implement this function - throw std::runtime_error("Function not implemented: Erm_fn_ucInitErrMsg"); -} diff --git a/game_re/gh_types.h b/game_re/gh_types.h index fe30c6b6..e127d2ee 100644 --- a/game_re/gh_types.h +++ b/game_re/gh_types.h @@ -403,6 +403,29 @@ typedef struct _tdstThemePartOutro _tdstThemePartOutro, *P_tdstThemePartOutro; struct _tdstThemePartOutro { }; +typedef struct _tdstTimer _tdstTimer, *P_tdstTimer; + +typedef struct tdstTimerCount tdstTimerCount, *PtdstTimerCount; + +typedef void (td_fn_vTimerEventCallback)(void); + +typedef td_fn_vTimerEventCallback *td_p_fn_vTimerEventCallback; + +struct tdstTimerCount { + ulong ulLowPart; + ulong ulHighPart; +}; + +struct _tdstTimer { + short m_wTimerType; + short m_wTimerState; + struct tdstTimerCount m_stTimerCount_InitValue; + struct tdstTimerCount m_stTimerCount_LastValue; + struct tdstTimerCount m_stTimerCount_TotalValue; + ulong m_ulEventId; + td_p_fn_vTimerEventCallback m_p_fn_vEventCallback; +}; + typedef struct _tdstTypeCD _tdstTypeCD, *P_tdstTypeCD; struct _tdstTypeCD { @@ -483,6 +506,46 @@ typedef struct AI_tdstMind_ AI_tdstMind_, *PAI_tdstMind_; struct AI_tdstMind_ { }; +typedef struct FIL_tdstConcatFile_ FIL_tdstConcatFile_, *PFIL_tdstConcatFile_; + +struct FIL_tdstConcatFile_ { +}; + +typedef struct FIL_tdstConcatFileElement_ FIL_tdstConcatFileElement_, *PFIL_tdstConcatFileElement_; + +struct FIL_tdstConcatFileElement_ { +}; + +typedef struct FIL_tdstFileInConcatFile_ FIL_tdstFileInConcatFile_, *PFIL_tdstFileInConcatFile_; + +struct FIL_tdstFileInConcatFile_ { +}; + +typedef struct FIL_tdstFileNameList_ FIL_tdstFileNameList_, *PFIL_tdstFileNameList_; + +typedef struct LST2_tdstAnchorToFIL_tdxHandleToFileNameListElementDyn LST2_tdstAnchorToFIL_tdxHandleToFileNameListElementDyn, *PLST2_tdstAnchorToFIL_tdxHandleToFileNameListElementDyn; + +typedef struct FIL_tdstFileNameListElement_ FIL_tdstFileNameListElement_, *PFIL_tdstFileNameListElement_; + +typedef struct FIL_tdstFileNameListElement_ *FIL_tdxHandleToFileNameListElement; + +struct LST2_tdstAnchorToFIL_tdxHandleToFileNameListElementDyn { + FIL_tdxHandleToFileNameListElement hFirstElementDyn; + FIL_tdxHandleToFileNameListElement hLastElementDyn; + long lNumberOfElementsDyn; +}; + +struct FIL_tdstFileNameList_ { + struct LST2_tdstAnchorToFIL_tdxHandleToFileNameListElementDyn hFileNameListAnchor; +}; + +struct FIL_tdstFileNameListElement_ { + FIL_tdxHandleToFileNameListElement hNextBrotherDyn; + FIL_tdxHandleToFileNameListElement hPrevBrotherDyn; + struct LST2_tdstAnchorToFIL_tdxHandleToFileNameListElementDyn *hFatherDyn; + char *szFileName; +}; + typedef struct Float2 Float2, *PFloat2; struct Float2 { /* Vector (r3) */ @@ -516,30 +579,102 @@ struct Float4x4 { /* Matrix (row major?) math type */ struct Float4 w; }; -typedef struct HIE_tdstSuperObject HIE_tdstSuperObject, *PHIE_tdstSuperObject; +typedef struct GAM_tdstEngineOuter GAM_tdstEngineOuter, *PGAM_tdstEngineOuter; -struct HIE_tdstSuperObject { +typedef uchar ACP_tdxBool; + +struct GAM_tdstEngineOuter { + uchar ucNumberOfLevels; + uchar ucCurrentLevel; + uchar ucPreviousLevel; + uchar ucExitIdToQuitPrevLevel; + uchar ucLevelGlobalCounter; + ACP_tdxBool xDemoMode; + uchar ucCurrentLanguage; + uchar ucNbLanguages; + ACP_tdxBool bEngineFrozen; + ACP_tdxBool bResurrection; + char cCameraMode; }; -typedef struct HIE_tdstSuperObject_ HIE_tdstSuperObject_, *PHIE_tdstSuperObject_; +typedef struct GAM_tdstEngineStructure GAM_tdstEngineStructure, *PGAM_tdstEngineStructure; -typedef union HIE_tduLinkedObject HIE_tduLinkedObject, *PHIE_tduLinkedObject; +typedef uchar GAM_tdeEngineMode; + +typedef uchar GAM_tdeInputMode; + +typedef uchar GAM_tdeDisplayFixMode; + +typedef struct TMR_tdstEngineTimerStructure TMR_tdstEngineTimerStructure, *PTMR_tdstEngineTimerStructure; + +typedef short GLD_tdhDevice; + +typedef short GLD_tdhViewport; + +typedef struct GLD_tdstViewportAttributes GLD_tdstViewportAttributes, *PGLD_tdstViewportAttributes; + +typedef struct GLI_tdstCamera_ GLI_tdstCamera_, *PGLI_tdstCamera_; + +typedef struct GLI_tdstCamera_ GLI_tdstCamera; + +typedef struct GLI_tdstSpecificAttributesFor3D GLI_tdstSpecificAttributesFor3D, *PGLI_tdstSpecificAttributesFor3D; + +typedef struct GLI_tdstViewportManagement GLI_tdstViewportManagement, *PGLI_tdstViewportManagement; + +typedef struct LST2_tdstAnchorTotdxHandleToNodeCameraDyn LST2_tdstAnchorTotdxHandleToNodeCameraDyn, *PLST2_tdstAnchorTotdxHandleToNodeCameraDyn; + +typedef struct LST2_tdstAnchorTotdxHandleToFamilyListDyn LST2_tdstAnchorTotdxHandleToFamilyListDyn, *PLST2_tdstAnchorTotdxHandleToFamilyListDyn; + +typedef struct LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn, *PLST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn; + +typedef struct LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn, *PLST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn; + +typedef struct HIE_tdstSuperObject HIE_tdstSuperObject, *PHIE_tdstSuperObject; + +typedef struct GAM_tdstLanguageStructure GAM_tdstLanguageStructure, *PGAM_tdstLanguageStructure; + +typedef struct FIL_tdstFileNameList_ *FIL_tdxHandleToFileNameList; typedef struct POS_stCompletePosition POS_stCompletePosition, *PPOS_stCompletePosition; -typedef struct POS_stCompletePosition *POS_tdxHandleToPosition; +typedef struct POS_stCompletePosition POS_tdstCompletePosition; + +typedef struct TMR_tdstTimerCount TMR_tdstTimerCount, *PTMR_tdstTimerCount; + +typedef float GLI_tdxValue; + +typedef struct GLI_tdst2DVertex GLI_tdst2DVertex, *PGLI_tdst2DVertex; typedef struct MTH3D_tdstVector_ MTH3D_tdstVector_, *PMTH3D_tdstVector_; typedef struct MTH3D_tdstVector_ MTH3D_tdstVector; +typedef struct tdstFamilyList_ tdstFamilyList_, *PtdstFamilyList_; + +typedef struct tdstFamilyList_ *tdxHandleToFamilyList; + typedef struct MTH3D_tdstMatrix_ MTH3D_tdstMatrix_, *PMTH3D_tdstMatrix_; typedef struct MTH3D_tdstMatrix_ MTH3D_tdstMatrix; -union HIE_tduLinkedObject { - struct HIE_tdstSuperObject *p_stSuperObject; - void *p_Void; +struct GLI_tdstSpecificAttributesFor3D { + struct GLI_tdstCamera_ *p_stCam; + float xNear; +}; + +struct LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn { +}; + +struct LST2_tdstAnchorTotdxHandleToFamilyListDyn { + tdxHandleToFamilyList hFirstElementDyn; + tdxHandleToFamilyList hLastElementDyn; + long lNumberOfElementsDyn; +}; + +struct LST2_tdstAnchorTotdxHandleToNodeCameraDyn { +}; + +struct LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn { }; struct MTH3D_tdstVector_ { @@ -548,6 +683,325 @@ struct MTH3D_tdstVector_ { float xZ; }; +struct MTH3D_tdstMatrix_ { + MTH3D_tdstVector stCol_0; + MTH3D_tdstVector stCol_1; + MTH3D_tdstVector stCol_2; +}; + +struct POS_stCompletePosition { + ulong ulType; + MTH3D_tdstVector stTranslationVector; + MTH3D_tdstMatrix stRotationMatrix; + MTH3D_tdstMatrix stTransformMatrix; +}; + +struct TMR_tdstTimerCount { + ulong ulLowPart; + ulong ulHighPart; +}; + +struct TMR_tdstEngineTimerStructure { + ulong ulFrameNumber; + ushort wTimerHandle; + ulong ulCurrentTimerCount; + ulong ulDeltaTimerCount; + ulong a_ulCounter[16]; + ulong ulUsefulDeltaTime; + ulong ulPauseTime; + float xFrameLength; + struct TMR_tdstTimerCount stRealTimeCount; + struct TMR_tdstTimerCount stPauseTime; + ulong ulTickPerMs; +}; + +struct GLD_tdstViewportAttributes { + ulong dwInitialHeight; + ulong dwInitialWidth; + ulong dwHeight; + ulong dwWidth; + ulong dwTopInPix; + ulong dwBottomInPix; + ulong dwLeftInPix; + ulong dwRightInPix; + ulong dwTopInPixForClip; + ulong dwBottomInPixForClip; + ulong dwLeftInPixForClip; + ulong dwRightInPixForClip; + ulong dwWidthInPercent; + ulong dwHeightInPercent; + ulong dwClipTopInPix; + ulong dwClipBottomInPix; + ulong dwClipLeftInPix; + ulong dwClipRightInPix; + ulong dwClipTopInPerMille; + ulong dwClipBottomInPerMille; + ulong dwClipLeftInPerMille; + ulong dwClipRightInPerMille; + long lOffsetPosX; + long lOffsetPosY; + char *p_cVirtualScreen; + long lPitch; + void *p_vSpecificToXD; + GLD_tdhDevice hDevice; + GLD_tdhViewport hViewport; +}; + +struct GAM_tdstEngineStructure { + GAM_tdeEngineMode eEngineMode; + char szLevelName[30]; + char szNextLevelName[30]; + char szFirstLevelName[30]; + GAM_tdeInputMode eInputMode; + GAM_tdeDisplayFixMode eDisplayFixMode; + ulong ulDisplayMode; + struct TMR_tdstEngineTimerStructure stEngineTimer; + GLD_tdhDevice hGLDDevice; + GLD_tdhViewport hGLDViewport; + struct GLD_tdstViewportAttributes stViewportAttr; + GLI_tdstCamera *p_stGameViewportCamera; + void *hDrawSem; + GLD_tdhViewport hGLDFixViewport; + struct GLD_tdstViewportAttributes stFixViewportAttr; + struct GLI_tdstSpecificAttributesFor3D stFixAttributes3D; + GLI_tdstCamera *p_stFixCamera; + struct GLI_tdstViewportManagement *a_hViewportArray; + struct LST2_tdstAnchorTotdxHandleToNodeCameraDyn hCameraList; + struct LST2_tdstAnchorTotdxHandleToFamilyListDyn hFamilyList; + struct LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn hMainCharacterList; + struct LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn hAlwaysActiveCharactersList; + struct HIE_tdstSuperObject *g_hMainActor; + struct HIE_tdstSuperObject *g_hNextMainActor; + struct HIE_tdstSuperObject *g_hStdCamCharacter; + struct GAM_tdstLanguageStructure *p_stLanguageTable; + FIL_tdxHandleToFileNameList hLevelNameList; + POS_tdstCompletePosition stMainCharacterPosition; + POS_tdstCompletePosition stMainCameraPosition; + long lSubMapNumber; + ACP_tdxBool bEngineIsInPaused; + ACP_tdxBool bEngineHasInPaused; +}; + +struct GLI_tdst2DVertex { + float xX; + float xY; + float xOoZ; +}; + +struct GLI_tdstCamera_ { + long lSizeOfThis; + long lTypeOfThis; + long lCameraMode; + POS_tdstCompletePosition stMatrix; + float xAlphaX; + float xAlphaY; + GLI_tdxValue xNear; + GLI_tdxValue xFar; + GLI_tdxValue xScreen; + struct GLI_tdst2DVertex stScale; + struct GLI_tdst2DVertex stTrans; + long lVptInitialHeight; + long lVptInitialWidth; + MTH3D_tdstVector stNormPlaneLeft; + float xDistPlaneLeft; + MTH3D_tdstVector stNormPlaneRight; + float xDistPlaneRight; + MTH3D_tdstVector stNormPlaneUp; + float xDistPlaneUp; + MTH3D_tdstVector stNormPlaneDown; + float xDistPlaneDown; + float xRatio; +}; + +struct GAM_tdstLanguageStructure { + char szLanguageCode[20]; + char szLanguageText[20]; +}; + +struct HIE_tdstSuperObject { +}; + +struct tdstFamilyList_ { +}; + +struct GLI_tdstViewportManagement { + struct HIE_tdstSuperObject *hCamera; + struct HIE_tdstSuperObject *hTempCamera; + GLI_tdstCamera *p_stCamera; + ACP_tdxBool bValid; +}; + +typedef struct GEO_tdstBoundingSphere GEO_tdstBoundingSphere, *PGEO_tdstBoundingSphere; + +struct GEO_tdstBoundingSphere { +}; + +typedef struct GEO_tdstColor GEO_tdstColor, *PGEO_tdstColor; + +typedef float GEO_tdxColorValue; + +struct GEO_tdstColor { + GEO_tdxColorValue xR; + GEO_tdxColorValue xG; + GEO_tdxColorValue xB; + GEO_tdxColorValue xA; +}; + +typedef struct GEO_tdstDoubledIndex GEO_tdstDoubledIndex, *PGEO_tdstDoubledIndex; + +typedef short ACP_tdxIndex; + +struct GEO_tdstDoubledIndex { + ACP_tdxIndex a2_xIndex[2]; +}; + +typedef struct GEO_tdstGeometricObject GEO_tdstGeometricObject, *PGEO_tdstGeometricObject; + +struct GEO_tdstGeometricObject { +}; + +typedef struct GEO_tdstParallelBox GEO_tdstParallelBox, *PGEO_tdstParallelBox; + +struct GEO_tdstParallelBox { +}; + +typedef struct GEO_tdstTripledIndex GEO_tdstTripledIndex, *PGEO_tdstTripledIndex; + +struct GEO_tdstTripledIndex { + ACP_tdxIndex a3_xIndex[3]; +}; + +typedef struct GEO_tdstVisualSet GEO_tdstVisualSet, *PGEO_tdstVisualSet; + +struct GEO_tdstVisualSet { +}; + +typedef struct GLI_tdstAnimatedTextureNode GLI_tdstAnimatedTextureNode, *PGLI_tdstAnimatedTextureNode; + +typedef struct GLI_tdstTexture GLI_tdstTexture, *PGLI_tdstTexture; + +struct GLI_tdstTexture { + uchar bIsAvailable; + long lTextureQuality; + void *p_vBitMap; + void *p_vColorTable; + void *p_stSpecParam; + ulong ulTextureCaps; + ushort uwHeight; + ushort uwWidth; + ushort uwRealHeight; + ushort uwRealWidth; + float xAddU; + float xAddV; + uchar lIncrementIsEnable; + ulong ulChromakeyColorRGBA; + long lNumberOfLod; + ulong ulCompressionCounter; + ulong ulTypeOfCompression; + ulong ulTypeOfMipMapping; + struct GLI_tdstTexture *p_TextureOfSubstitution; + uchar ucBilinearMode; + uchar ucCyclingMode; + char szFileName[128]; +}; + +struct GLI_tdstAnimatedTextureNode { + struct GLI_tdstTexture *p_stTexture; + float xDisplayTime; + struct GLI_tdstAnimatedTextureNode *p_stNextDisplayNode; +}; + +typedef struct GLI_tdstLight GLI_tdstLight, *PGLI_tdstLight; + +typedef struct GLI_tdstZBufferForLight GLI_tdstZBufferForLight, *PGLI_tdstZBufferForLight; + +struct GLI_tdstZBufferForLight { + long lSizeX; + long lSizeY; + float xCoefX; + float xCoefY; + float *p_xZBufferMap; + float *p_xMiddleZBufferMap; +}; + +struct GLI_tdstLight { + uchar bOnOff; + uchar bThisLightIsZBuffered; + long lTypeOfLight; + float xFar; + float xNear; + float xLittleAlpha; + float xBigAlpha; + float xLittleTangent; + float xBigTangent; + POS_tdstCompletePosition stMatrix; + struct GLI_tdstZBufferForLight stZBuffer; + struct GEO_tdstColor stColor; + ACP_tdxBool bValid; + uchar ucObjectPainted; + ACP_tdxBool bIsPainting; + uchar ucIsAlpha; + MTH3D_tdstVector stInter_Min_Pos; + MTH3D_tdstVector stExter_Min_Pos; + MTH3D_tdstVector stInter_Max_Pos; + MTH3D_tdstVector stExter_Max_Pos; + MTH3D_tdstVector stCenterBox; + float xRadius; + float xIntensity_Min; + float xIntensity_Max; + struct GEO_tdstColor stBackgroundColor; +}; + +typedef struct GLI_tdstMaterial GLI_tdstMaterial, *PGLI_tdstMaterial; + +struct GLI_tdstMaterial { + ulong ulMaterialType; + struct GEO_tdstColor stAmbient; + struct GEO_tdstColor stDiffuse; + struct GEO_tdstColor stSpecular; + struct GEO_tdstColor stColor; + long lSpecularExponent; + struct GLI_tdstTexture *p_stTexture; + float xAddU; + float xAddV; + float xConstantAddU; + float xConstantAddV; + long lIncrementIsEnable; + ulong dwActualRefreshNumber; + struct GLI_tdstAnimatedTextureNode *p_stFirstAnimatedTextureNode; + struct GLI_tdstAnimatedTextureNode *p_stActualAnimatedTextureNode; + long lNumberOfDisplayNode; + float xActualDisplayTimeSinceStartOfLastTexture; + ACP_tdxBool xIsLocked; +}; + +typedef struct GMA_tdstEngineEndStructure GMA_tdstEngineEndStructure, *PGMA_tdstEngineEndStructure; + +struct GMA_tdstEngineEndStructure { + uchar ucNumberOfLevels; + uchar ucCurrentLevel; + uchar ucPreviousLevel; + uchar ucExitIdToQuitPrevLevel; + uchar ucLevelGlobalCounter; + ACP_tdxBool xDemoMode; + uchar ucCurrentLanguage; + uchar ucNbLanguages; + ACP_tdxBool bEngineFrozen; + ACP_tdxBool bResurrection; + char cCameraMode; +}; + +typedef struct HIE_tdstSuperObject_ HIE_tdstSuperObject_, *PHIE_tdstSuperObject_; + +typedef union HIE_tduLinkedObject HIE_tduLinkedObject, *PHIE_tduLinkedObject; + +typedef struct POS_stCompletePosition *POS_tdxHandleToPosition; + +union HIE_tduLinkedObject { + struct HIE_tdstSuperObject *p_stSuperObject; + void *p_Void; +}; + struct HIE_tdstSuperObject_ { ulong ulTypeOfLinkedObject; union HIE_tduLinkedObject hLinkedObject; @@ -567,37 +1021,94 @@ struct HIE_tdstSuperObject_ { MTH3D_tdstVector stSemiLookAtVector; }; -struct MTH3D_tdstMatrix_ { - MTH3D_tdstVector stCol_0; - MTH3D_tdstVector stCol_1; - MTH3D_tdstVector stCol_2; +typedef struct levelFixStruct levelFixStruct, *PlevelFixStruct; + +typedef unsigned char byte; +typedef unsigned int undefined4; +struct levelFixStruct { + byte field0_0x0; /* stripped of usually */ + undefined field1_0x1; + undefined field2_0x2; + undefined field3_0x3; + undefined field4_0x4; + undefined field5_0x5; + undefined field6_0x6; + undefined field7_0x7; + undefined field8_0x8; + undefined field9_0x9; + undefined field10_0xa; + undefined field11_0xb; + int fixClass; + undefined field13_0x10; + undefined field14_0x11; + undefined field15_0x12; + undefined field16_0x13; + undefined field17_0x14; + undefined field18_0x15; + undefined field19_0x16; + undefined field20_0x17; + undefined field21_0x18; + undefined field22_0x19; + undefined field23_0x1a; + undefined field24_0x1b; + undefined field25_0x1c; + undefined field26_0x1d; + undefined field27_0x1e; + undefined field28_0x1f; + undefined field29_0x20; + undefined field30_0x21; + undefined field31_0x22; + undefined field32_0x23; + undefined field33_0x24; + undefined field34_0x25; + undefined field35_0x26; + undefined field36_0x27; + undefined field37_0x28; + undefined field38_0x29; + undefined field39_0x2a; + undefined field40_0x2b; + undefined field41_0x2c; + undefined field42_0x2d; + undefined field43_0x2e; + undefined field44_0x2f; + undefined field45_0x30; + undefined field46_0x31; + undefined field47_0x32; + undefined field48_0x33; + undefined field49_0x34; + undefined field50_0x35; + undefined field51_0x36; + undefined field52_0x37; + undefined field53_0x38; + undefined field54_0x39; + undefined field55_0x3a; + undefined field56_0x3b; + undefined field57_0x3c; + undefined field58_0x3d; + undefined field59_0x3e; + undefined field60_0x3f; + undefined field61_0x40; + undefined field62_0x41; + undefined field63_0x42; + undefined field64_0x43; + undefined4 field65_0x44; }; -struct POS_stCompletePosition { - ulong ulType; - MTH3D_tdstVector stTranslationVector; - MTH3D_tdstMatrix stRotationMatrix; - MTH3D_tdstMatrix stTransformMatrix; -}; +typedef struct levelFixStructInner levelFixStructInner, *PlevelFixStructInner; -typedef struct r3_engine r3_engine, *Pr3_engine; - -typedef unsigned int uint; -typedef uint uint32_t; - -struct r3_engine { - uint32_t initMask; /* isRunning? */ - undefined field1_0x4; - undefined field2_0x5; - undefined field3_0x6; - undefined field4_0x7; - undefined field5_0x8; - undefined field6_0x9; - undefined field7_0xa; - undefined field8_0xb; - undefined field9_0xc; - undefined field10_0xd; - undefined field11_0xe; +struct levelFixStructInner { + undefined field0_0x0; + undefined field1_0x1; + undefined field2_0x2; + undefined field3_0x3; + undefined field4_0x4; + undefined field5_0x5; + undefined field6_0x6; + undefined field7_0x7; + undefined field8_0x8; + undefined field9_0x9; + undefined field10_0xa; + int fixClass; undefined field12_0xf; undefined field13_0x10; undefined field14_0x11; @@ -614,14 +1125,169 @@ struct r3_engine { undefined field25_0x1c; undefined field26_0x1d; undefined field27_0x1e; - char levelName[30]; - char prevLevelName[30]; - bool inputSuspended; - uint32_t field31_0x5c; + undefined field28_0x1f; + undefined field29_0x20; + undefined field30_0x21; + undefined field31_0x22; + undefined field32_0x23; + undefined field33_0x24; + undefined field34_0x25; + undefined field35_0x26; + undefined field36_0x27; + undefined field37_0x28; + undefined field38_0x29; + undefined field39_0x2a; + undefined field40_0x2b; + undefined field41_0x2c; + undefined field42_0x2d; + undefined field43_0x2e; + undefined field44_0x2f; + undefined field45_0x30; + undefined field46_0x31; + undefined field47_0x32; + undefined field48_0x33; + undefined field49_0x34; + undefined field50_0x35; + undefined field51_0x36; + undefined field52_0x37; + undefined field53_0x38; + undefined field54_0x39; + undefined field55_0x3a; + undefined field56_0x3b; + undefined field57_0x3c; + undefined field58_0x3d; + undefined field59_0x3e; + undefined field60_0x3f; + undefined field61_0x40; + undefined field62_0x41; + undefined field63_0x42; + undefined4 field64_0x43; +}; + +typedef struct LST2_tdstAnchorToGLI_tdstNodeCameraDyn LST2_tdstAnchorToGLI_tdstNodeCameraDyn, *PLST2_tdstAnchorToGLI_tdstNodeCameraDyn; + +struct LST2_tdstAnchorToGLI_tdstNodeCameraDyn { +}; + +typedef struct LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeSLk LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeSLk, *PLST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeSLk; + +typedef struct tdstNodeMainCharacter_ tdstNodeMainCharacter_, *PtdstNodeMainCharacter_; + +typedef struct tdstNodeMainCharacter_ *MC_tdxHandleToMainCharacterNode; + +struct LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeSLk { + MC_tdxHandleToMainCharacterNode hFirstElementSLk; + MC_tdxHandleToMainCharacterNode hLastElementSLk; + long lNumberOfElementsSLk; +}; + +struct tdstNodeMainCharacter_ { +}; + +typedef struct LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeSLk LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeSLk, *PLST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeSLk; + +typedef struct tdstAlwaysActiveCharacter_ tdstAlwaysActiveCharacter_, *PtdstAlwaysActiveCharacter_; + +typedef struct tdstAlwaysActiveCharacter_ *tdxHandleToAlwaysActiveCharacterNode; + +struct tdstAlwaysActiveCharacter_ { +}; + +struct LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeSLk { + tdxHandleToAlwaysActiveCharacterNode hFirstElementSLk; + tdxHandleToAlwaysActiveCharacterNode hLastElementSLk; + long lNumberOfElementsSLk; +}; + +typedef struct LST2_tdstAnchorTotdxHandleToNodeCameraSLk LST2_tdstAnchorTotdxHandleToNodeCameraSLk, *PLST2_tdstAnchorTotdxHandleToNodeCameraSLk; + +typedef struct tdstNodeCamera_ tdstNodeCamera_, *PtdstNodeCamera_; + +typedef struct tdstNodeCamera_ *tdxHandleToNodeCamera; + +struct LST2_tdstAnchorTotdxHandleToNodeCameraSLk { + tdxHandleToNodeCamera hFirstElementSLk; + tdxHandleToNodeCamera hLastElementSLk; + long lNumberOfElementsSLk; +}; + +struct tdstNodeCamera_ { +}; + +typedef struct LST2_tdstAnchorTotdxHandleToObjectsTablesListSLk LST2_tdstAnchorTotdxHandleToObjectsTablesListSLk, *PLST2_tdstAnchorTotdxHandleToObjectsTablesListSLk; + +typedef struct tdstObjectsTablesList_ tdstObjectsTablesList_, *PtdstObjectsTablesList_; + +typedef struct tdstObjectsTablesList_ *tdxHandleToObjectsTablesList; + +struct LST2_tdstAnchorTotdxHandleToObjectsTablesListSLk { + tdxHandleToObjectsTablesList hFirstElementSLk; + tdxHandleToObjectsTablesList hLastElementSLk; + long lNumberOfElementsSLk; +}; + +struct tdstObjectsTablesList_ { +}; + +typedef struct LST2_tdstAnchorTotdxHandleToProhibitSLk LST2_tdstAnchorTotdxHandleToProhibitSLk, *PLST2_tdstAnchorTotdxHandleToProhibitSLk; + +typedef struct tdstProhibit_ tdstProhibit_, *PtdstProhibit_; + +typedef struct tdstProhibit_ *tdxHandleToProhibit; + +struct LST2_tdstAnchorTotdxHandleToProhibitSLk { + tdxHandleToProhibit hFirstElementSLk; + tdxHandleToProhibit hLastElementSLk; + long lNumberOfElementsSLk; +}; + +struct tdstProhibit_ { +}; + +typedef struct LST2_tdstAnchorTotdxHandleToStateSLk LST2_tdstAnchorTotdxHandleToStateSLk, *PLST2_tdstAnchorTotdxHandleToStateSLk; + +typedef struct tdstState_ tdstState_, *PtdstState_; + +typedef struct tdstState_ *tdxHandleToState; + +struct tdstState_ { +}; + +struct LST2_tdstAnchorTotdxHandleToStateSLk { + tdxHandleToState hFirstElementSLk; + tdxHandleToState hLastElementSLk; + long lNumberOfElementsSLk; +}; + +typedef struct LST2_tdstAnchorTotdxHandleToTransitionSLk LST2_tdstAnchorTotdxHandleToTransitionSLk, *PLST2_tdstAnchorTotdxHandleToTransitionSLk; + +typedef struct tdstTransition_ tdstTransition_, *PtdstTransition_; + +typedef struct tdstTransition_ *tdxHandleToTransition; + +struct LST2_tdstAnchorTotdxHandleToTransitionSLk { + tdxHandleToTransition hFirstElementSLk; + tdxHandleToTransition hLastElementSLk; + long lNumberOfElementsSLk; +}; + +struct tdstTransition_ { +}; + +typedef struct r3_astruct_2 r3_astruct_2, *Pr3_astruct_2; + +struct r3_astruct_2 { + float f0; + float f1; + float f2; + float f3; + struct IDirect3DSurface8 *d3dSurface; + float field5_0x14[32]; }; typedef struct r3_graphics_data r3_graphics_data, *Pr3_graphics_data; +typedef unsigned int uint; struct r3_graphics_data { int field0_0x0; int field1_0x4; @@ -917,20 +1583,30 @@ struct r3_math_interface { typedef struct r3_TaggedFloatUnk r3_TaggedFloatUnk, *Pr3_TaggedFloatUnk; +typedef uint uint32_t; + struct r3_TaggedFloatUnk { uint32_t type; struct Float4x4 mat0; struct Float4 unk; }; +typedef struct tdstAChannel_ tdstAChannel_, *PtdstAChannel_; + +struct tdstAChannel_ { +}; + +typedef struct tdstAlwaysModelList_ tdstAlwaysModelList_, *PtdstAlwaysModelList_; + +struct tdstAlwaysModelList_ { +}; + typedef struct tdstAnim3d_ tdstAnim3d_, *PtdstAnim3d_; typedef struct tdstFrame3d_ tdstFrame3d_, *PtdstFrame3d_; typedef struct tdstEvent_ tdstEvent_, *PtdstEvent_; -typedef struct POS_stCompletePosition POS_tdstCompletePosition; - typedef struct tdstAnimLights_ tdstAnimLights_, *PtdstAnimLights_; typedef struct tdstAnimLights_ tdstAnimLights; @@ -949,13 +1625,6 @@ typedef struct tdstCouple_ tdstCouple_, *PtdstCouple_; typedef struct tdstCouple_ tdstCouple; -struct tdstFrame3d_ { - struct tdstElement3d_ *p_stArrayOfElts3d; - struct MTH3D_tdstMatrix_ *p_stAngularSpeedMatrix; - struct MTH3D_tdstVector_ *p_stLinearSpeedVector; - tdstPLA_Hierarchy *p_stHierarchy; -}; - struct tdstElement3d_ { POS_tdxHandleToPosition stMatrix; uchar ucElement; @@ -964,16 +1633,23 @@ struct tdstElement3d_ { ulong eTypeOfElement; }; -struct tdstPLA_Hierarchy_ { - ulong ulNbOfCouples; - tdstCouple *d_stCouples; -}; - struct tdstCouple_ { ushort wChild; ushort wFather; }; +struct tdstFrame3d_ { + struct tdstElement3d_ *p_stArrayOfElts3d; + struct MTH3D_tdstMatrix_ *p_stAngularSpeedMatrix; + struct MTH3D_tdstVector_ *p_stLinearSpeedVector; + tdstPLA_Hierarchy *p_stHierarchy; +}; + +struct tdstPLA_Hierarchy_ { + ulong ulNbOfCouples; + tdstCouple *d_stCouples; +}; + struct tdstAnim3d_ { struct tdstFrame3d_ *d_stFrame3d; uchar ucNumberOfFrames; @@ -1010,6 +1686,24 @@ struct tdstEvent_ { ushort uwChannelNumber; }; +typedef struct tdstBlockInfo_ tdstBlockInfo_, *PtdstBlockInfo_; + +struct tdstBlockInfo_ { + char *p_cBeginBlock; + char *p_cEndBlock; + char *p_cFirstFree; + char *p_cMaxMem; +}; + +typedef struct tdstBlockInfoPriv_ tdstBlockInfoPriv_, *PtdstBlockInfoPriv_; + +struct tdstBlockInfoPriv_ { + char *p_cBeginBlock; + char *p_cEndBlock; + char *p_cFirstFree; + char *p_cMaxMem; +}; + typedef struct tdstBrain_ tdstBrain_, *PtdstBrain_; typedef void *GMT_tdxHandleToGameMaterial; @@ -1020,6 +1714,36 @@ struct tdstBrain_ { bool bWarnMechanicsFlag; }; +typedef struct tdstBubbleEffect_ tdstBubbleEffect_, *PtdstBubbleEffect_; + +struct tdstBubbleEffect_ { +}; + +typedef struct tdstChannelActivationStateList_ tdstChannelActivationStateList_, *PtdstChannelActivationStateList_; + +struct tdstChannelActivationStateList_ { +}; + +typedef struct tdstChannelInfo_ tdstChannelInfo_, *PtdstChannelInfo_; + +struct tdstChannelInfo_ { + ulong ulThreadId; + uchar ucGroupId; +}; + +typedef struct tdstCsaList_ tdstCsaList_, *PtdstCsaList_; + +struct tdstCsaList_ { +}; + +typedef struct tdstCurrentModeInfo_ tdstCurrentModeInfo_, *PtdstCurrentModeInfo_; + +struct tdstCurrentModeInfo_ { + uchar ucModuleId; + uchar ucMode; + void *p_vTdstBlockInfoOrTdstDynInfo; +}; + typedef struct tdstEngineObject_ tdstEngineObject_, *PtdstEngineObject_; struct tdstEngineObject_ { @@ -1072,13 +1796,57 @@ struct tdstEngineObject_ { /* WARNING! conflicting data type names: /tdstEngineObject.h/tdstEngineObject_ - /tdstEngineObject_ */ -typedef struct tdstLastErrorInfo_ tdstLastErrorInfo_, *PtdstLastErrorInfo_; +typedef struct tdstFootPath_ tdstFootPath_, *PtdstFootPath_; -struct tdstLastErrorInfo_ { - ushort uwLastErr; - uchar ucLastFailedModuleId; - undefined field2_0x3; - ulong ulChannelId; +struct tdstFootPath_ { +}; + +typedef struct tdstGeneralChannelsInfo_ tdstGeneralChannelsInfo_, *PtdstGeneralChannelsInfo_; + +typedef struct tdstChannelInfo_ tdstChannelInfo; + +struct tdstGeneralChannelsInfo_ { + uchar ucNbchannelUsed; + uchar ucMAxNbChannel; + tdstChannelInfo *d_stTabChannelInfo; +}; + +typedef struct tdstInformationHeaderOfBlockWithoutFree_ tdstInformationHeaderOfBlockWithoutFree_, *PtdstInformationHeaderOfBlockWithoutFree_; + +struct tdstInformationHeaderOfBlockWithoutFree_ { + uchar ucBoundededHeaderSize; + uchar ucAlignment; + uchar ucMode; +}; + +typedef struct tdstLastErrorInfo tdstLastErrorInfo, *PtdstLastErrorInfo; + +typedef unsigned short word; +typedef unsigned int dword; +struct tdstLastErrorInfo { + word lastErr; + char ucLastFailedModuleId; + dword ulChannelId; +}; + +typedef struct tdstLipsSynchroTable_ tdstLipsSynchroTable_, *PtdstLipsSynchroTable_; + +struct tdstLipsSynchroTable_ { +}; + +typedef struct tdstMorphChannelList_ tdstMorphChannelList_, *PtdstMorphChannelList_; + +struct tdstMorphChannelList_ { +}; + +typedef struct tdstObjectsTableElement_ tdstObjectsTableElement_, *PtdstObjectsTableElement_; + +struct tdstObjectsTableElement_ { +}; + +typedef struct tdstParticleGenerator_ tdstParticleGenerator_, *PtdstParticleGenerator_; + +struct tdstParticleGenerator_ { }; typedef struct tdstSndBankDescriptorList_ tdstSndBankDescriptorList_, *PtdstSndBankDescriptorList_; @@ -1086,11 +1854,6 @@ typedef struct tdstSndBankDescriptorList_ tdstSndBankDescriptorList_, *PtdstSndB struct tdstSndBankDescriptorList_ { }; -typedef struct tdstState_ tdstState_, *PtdstState_; - -struct tdstState_ { -}; - typedef struct tdstSubAnim3d_ tdstSubAnim3d_, *PtdstSubAnim3d_; struct tdstSubAnim3d_ { @@ -1100,4 +1863,24 @@ struct tdstSubAnim3d_ { struct tdstState_ *p_stCurrentState; }; +typedef struct tdstViewportManagement_ tdstViewportManagement_, *PtdstViewportManagement_; + +struct tdstViewportManagement_ { +}; + +typedef struct tdstWaterStreakEffect_ tdstWaterStreakEffect_, *PtdstWaterStreakEffect_; + +struct tdstWaterStreakEffect_ { +}; + +typedef struct tdstZdxList_ tdstZdxList_, *PtdstZdxList_; + +struct tdstZdxList_ { +}; + +typedef struct tdstZoneSetList_ tdstZoneSetList_, *PtdstZoneSetList_; + +struct tdstZoneSetList_ { +}; + #endif // GH_GENERATED_STRUCTS_H diff --git a/game_re/globals.txt b/game_re/globals.txt index 34016f95..f596c6e4 100644 --- a/game_re/globals.txt +++ b/game_re/globals.txt @@ -77,6 +77,7 @@ 005c0f22 || DAT_005c0f22 || / || char 005cf964 || g_gameHWND1 || /windef.h || HWND 005cf96c || lpDefault_005cf96c || / || long +005d2638 || g_ucErmNbOfModule || / || R3ModuleId 005d2660 || DAT_005d2660 || / || undefined4 005d26a8 || DAT_005d26a8 || / || undefined1 005d27b0 || lpVolumeNameBuffer_005d27b0 || / || undefined @@ -104,6 +105,10 @@ 0077d5e0 || s_wndStrRestoring || / || char[256] 007825c0 || s_quitting1 || / || char[64] 00782600 || s_wndStrQuiting || / || char[56] +00782640 || g_stErmTheLastErrorInfo || / || tdstLastErrorInfo[3] +00782644 || g_errDat4 || / || pointer +0078f6a0 || g_a_p_stMmgModuleBlocksInfo || /mmg.h || tdstBlockInfoPriv *[255] +0078fac0 || g_a_ucBlocksNbInModule || / || char[255] 007d7d84 || DAT_007d7d84 || / || undefined 007d7ea8 || DAT_007d7ea8 || / || undefined2 007d80f8 || DAT_007d80f8 || / || short diff --git a/game_re/r3/binders/auto.h b/game_re/r3/binders/auto.h index f06927db..4de69741 100644 --- a/game_re/r3/binders/auto.h +++ b/game_re/r3/binders/auto.h @@ -42,14 +42,18 @@ template struct FieldBinder { template T *operator=(T *src) { union V { T *a; - void* b; + void *b; }; - V* trick = reinterpret_cast(this); + V *trick = reinterpret_cast(this); return trick->a = src; } - ExpectedType& operator=(ExpectedType src) { + ExpectedType &operator=(ExpectedType src) { return *reinterpret_cast(dst) = src; } + ExpectedType &operator=(FieldBinder &other) { + return *reinterpret_cast(dst) = + *reinterpret_cast(other.dst); + } }; template @@ -83,18 +87,15 @@ inline constexpr cc_type_t CONCAT23(T0 a, T1 b) { return cc_type_t(a) << 24 | cc_type_t(b); } -template -inline constexpr char SUB21(T0 a, size_t b) { +template inline constexpr char SUB21(T0 a, size_t b) { return cc_type_t(a) >> (b * 8); } -template -inline constexpr char SUB41(T0 a, size_t b) { +template inline constexpr char SUB41(T0 a, size_t b) { return cc_type_t(a) >> (b * 8); } -template -inline constexpr uint16_t SUB42(T0 a, size_t b) { +template inline constexpr uint16_t SUB42(T0 a, size_t b) { return cc_type_t(a) >> (b * 8); } diff --git a/game_re/r3/main.cpp b/game_re/r3/main.cpp index d1765d9e..ba288042 100644 --- a/game_re/r3/main.cpp +++ b/game_re/r3/main.cpp @@ -7,10 +7,11 @@ extern "C" int r3_main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR *cmdline, int showCmd); -int main() { +int main(int argc, char **argv) { try { gh_init_data_segment(); - r3_main(GetModuleHandle(NULL), NULL, NULL, SW_SHOW); + + r3_main(GetModuleHandle(NULL), NULL, argv, SW_SHOW); } catch (const std::exception &e) { SPDLOG_ERROR("Unhandled exception: {}", e.what()); }