diff --git a/game/Gamedatabin/tex16.raw b/game/Gamedatabin/tex16.raw deleted file mode 100644 index 4d3d52a4..00000000 Binary files a/game/Gamedatabin/tex16.raw and /dev/null differ diff --git a/game_re/gh_fix/Erm_fn_ucInitErrMsg.cxx b/game_re/gh_fix/Erm_fn_ucInitErrMsg.cxx index d0f0ff49..371ce5a4 100644 --- a/game_re/gh_fix/Erm_fn_ucInitErrMsg.cxx +++ b/game_re/gh_fix/Erm_fn_ucInitErrMsg.cxx @@ -1,4 +1,4 @@ -// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!! +// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!! #include #include @@ -8,23 +8,21 @@ extern "C" { // 0043e1d0 /* Allocate error manager system numbers */ -R3ModuleId Erm_fn_ucInitErrMsg(void) +byte Erm_fn_ucInitErrMsg(void) { - R3ModuleId RVar1; - tdstLastErrorInfo* pdVar2; + byte RVar1; + tdstLastErrorInfo *pdVar2; int iVar2; - + RVar1 = g_ucErmNbOfModule; - if (g_ucErmNbOfModule == R3ModId_unk) { - for(size_t i = 0; i < std::size(g_stErmTheLastErrorInfo); i++) { + if (g_ucErmNbOfModule == 0) { + 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); + g_ucErmNbOfModule = g_ucErmNbOfModule + 1; return RVar1; } - } - diff --git a/game_re/gh_fix/FUN_0046f240.cxx b/game_re/gh_fix/FUN_0046f240.cxx index 971231a6..08213bf4 100644 --- a/game_re/gh_fix/FUN_0046f240.cxx +++ b/game_re/gh_fix/FUN_0046f240.cxx @@ -4,7 +4,7 @@ #include extern "C" { -undefined FUN_0046ecc0(undefined2 param_1, undefined2 param_2); // 0046ecc0 // FUN_0046ecc0 +undefined4* FUN_0046ecc0(undefined2 param_1, undefined2 param_2); // 0046ecc0 // FUN_0046ecc0 // 0046f240 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ diff --git a/game_re/gh_fix/r3_main.cxx b/game_re/gh_fix/r3_main.cxx index 0f41bbe4..9169da2a 100644 --- a/game_re/gh_fix/r3_main.cxx +++ b/game_re/gh_fix/r3_main.cxx @@ -8,7 +8,7 @@ extern "C" { undefined FUN_00470db0(void); // 00470db0 // FUN_00470db0 undefined r3_checkDisc(void); // 004464f0 // r3_checkDisc undefined FUN_00503710(void); // 00503710 // FUN_00503710 -undefined r3_module0_init(void); // 00401000 // r3_module0_init +undefined r3_initAllModules(void); // 00401000 // r3_initAllModules 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 @@ -87,8 +87,8 @@ int r3_main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR *cmdline, R3Config &gameConfig = getDefaultConfig(); // Store and change to game directory - chdir(gameConfig.gameDataDir.c_str()); - strcpy(r3_main_data_005d28b6.gameDataDir, gameConfig.gameDataDir.c_str()); + chdir(gameConfig.gameRootDir.c_str()); + strcpy(r3_main_data_005d28b6.gameDataDir, gameConfig.gameRootDir.c_str()); strcpy(languageStr, gameConfig.language.c_str()); sprintf(g_mutexName_Rayman3, s_percents, lpAppName_005b68f0); @@ -357,91 +357,69 @@ int r3_main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR *cmdline, // } // FreeLibrary(hLibModule); - // Run only once - // CreateMutexA((LPSECURITY_ATTRIBUTES)0x0, 1, g_mutexName_Rayman3); - // DVar7 = GetLastError(); - // if (DVar7 == 0xb7) { - // /* Mutex already exists */ - // return -1; - // } + /* For GLIMode + 1 = maximize + 0 = windowed */ + g_runMaximized = (int)(acStack_200[0] != '0'); + // r3_checkDisc(); + dwOptions = 0; + BVar18 = 0; + lpTargetHandle = &pvStack_834; + DVar7 = 0x1f03ff; + g_hinstance = hInstance; + hTargetProcessHandle = GetCurrentProcess(); + hSourceHandle = GetCurrentThread(); + hSourceProcessHandle = GetCurrentProcess(); + DuplicateHandle(hSourceProcessHandle, hSourceHandle, hTargetProcessHandle, + lpTargetHandle, DVar7, BVar18, dwOptions); + g_mainThreadHandle = pvStack_834; + /* Copy cmdline */ + strcpy(g_appCmdLine, GetCommandLineA()); - /* Read graphics settings */ - strcpy(acStack_300, getDefaultConfig().gfxAdapter.c_str()); - strcpy(acStack_100, getDefaultConfig().gfxIdentifier.c_str()); - strcpy(acStack_200, getDefaultConfig().gfxGliMode.c_str()); + // SetErrorMode(1); - /* If they're all set */ - if (((acStack_300[0] != '\0') && (acStack_100[0] != '\0')) && - (acStack_200[0] != '\0')) { - /* For GLIMode - 1 = maximize - 0 = windowed */ - g_runMaximized = (int)(acStack_200[0] != '0'); - // r3_checkDisc(); - dwOptions = 0; - BVar18 = 0; - lpTargetHandle = &pvStack_834; - DVar7 = 0x1f03ff; - g_hinstance = hInstance; - hTargetProcessHandle = GetCurrentProcess(); - hSourceHandle = GetCurrentThread(); - hSourceProcessHandle = GetCurrentProcess(); - DuplicateHandle(hSourceProcessHandle, hSourceHandle, hTargetProcessHandle, - lpTargetHandle, DVar7, BVar18, dwOptions); - g_mainThreadHandle = pvStack_834; - /* Copy cmdline */ - strcpy(g_appCmdLine, GetCommandLineA()); - SetErrorMode(1); - char *ccArg = strstr(g_appCmdLine, s_dashCC); - if (ccArg == 0) { - r3_module0_init(); - iVar13 = r3_setupWindow(hInstance, showCmd, g_runMaximized); - if (iVar13 == 0) { - return -1; - } - g_setInitVar0(); - FUN_00401320(); - spawnThread(); - gfx_init2(); - lpRect = &tStack_820; - hWnd = GetDesktopWindow(); - GetWindowRect(hWnd, lpRect); - BVar18 = 1; - iVar13 = r3_get_gli_height1(); - iVar13 = iVar13 + 0x20; - iVar10 = r3_get_gli_width1(); - iVar10 = iVar10 + 0xc; - iVar11 = r3_get_gli_height1(); - iVar11 = (tStack_820.bottom - iVar11) / 2; - iVar12 = r3_get_gli_width1(); - MoveWindow(g_gameHWND, (tStack_820.right - iVar12) / 2, iVar11, iVar10, - iVar13, BVar18); - FUN_004010b0(); - SystemParametersInfoA(0x10, 0, &UStack_830, 0); - SystemParametersInfoA(0x11, 0, (PVOID)0x0, 0); - ShowCursor(0); - uStack_83c = 0; - SystemParametersInfoA(0x61, 1, &uStack_83c, 0); - g_engineRunning = 1; - r3_initEngine(); - FUN_004725a0(); - FUN_005038e0(); - FUN_00503710(); - FUN_004fb300(); - FUN_00472150(); - FUN_00470db0(); - uStack_83c = 0; - SystemParametersInfoA(0x61, 0, &uStack_83c, 0); - ShowCursor(1); - SystemParametersInfoA(0x11, UStack_830, (PVOID)0x0, 0); - CloseHandle(pvStack_834); - } - return 0; + r3_initAllModules(); + iVar13 = r3_setupWindow(hInstance, showCmd, g_runMaximized); + if (iVar13 == 0) { + return -1; } - sprintf(acStack_810, s_Please_run_the__s_setup__005b63f4, s_windowTitle); - sprintf(acStack_508, s__s_not_initialized__005b63e0, s_windowTitle); - r3_wait_for_dvd(acStack_810, acStack_508, 0); - /* WARNING: Subroutine does not return */ - exit(-1); + g_setInitVar0(); + FUN_00401320(); + spawnThread(); + gfx_init2(); + lpRect = &tStack_820; + hWnd = GetDesktopWindow(); + GetWindowRect(hWnd, lpRect); + BVar18 = 1; + iVar13 = r3_get_gli_height1(); + iVar13 = iVar13 + 0x20; + iVar10 = r3_get_gli_width1(); + iVar10 = iVar10 + 0xc; + iVar11 = r3_get_gli_height1(); + iVar11 = (tStack_820.bottom - iVar11) / 2; + iVar12 = r3_get_gli_width1(); + MoveWindow(g_gameHWND, (tStack_820.right - iVar12) / 2, iVar11, iVar10, + iVar13, BVar18); + FUN_004010b0(); + SystemParametersInfoA(0x10, 0, &UStack_830, 0); + SystemParametersInfoA(0x11, 0, (PVOID)0x0, 0); + ShowCursor(0); + uStack_83c = 0; + SystemParametersInfoA(0x61, 1, &uStack_83c, 0); + g_engineRunning = 1; + r3_initEngine(); + FUN_004725a0(); + FUN_005038e0(); + FUN_00503710(); + FUN_004fb300(); + FUN_00472150(); + FUN_00470db0(); + uStack_83c = 0; + SystemParametersInfoA(0x61, 0, &uStack_83c, 0); + ShowCursor(1); + SystemParametersInfoA(0x11, UStack_830, (PVOID)0x0, 0); + CloseHandle(pvStack_834); + + return 0; } } diff --git a/game_re/gh_fix/r3_module0_init.cxx b/game_re/gh_fix/r3_module0_init.cxx deleted file mode 100644 index 27a33837..00000000 --- a/game_re/gh_fix/r3_module0_init.cxx +++ /dev/null @@ -1,55 +0,0 @@ -// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!! - -#include -#include - -extern "C" { -undefined r3_module_big_init(void); // 00443f10 // r3_module_big_init -undefined FUN_0043f830(undefined4 param_1); // 0043f830 // FUN_0043f830 -undefined r3_module1_init(void); // 0043e630 // r3_module1_init -R3ModuleId Erm_fn_ucInitErrMsg(void); // 0043e1d0 // Erm_fn_ucInitErrMsg - -// 00401000 -void r3_module0_init(void) - -{ - char cVar1; - size_t sVar2; - size_t sVar3; - uint uVar4; - char *pcVar5; - CHAR local_200 [255]; - char acStack_101 [257]; - - if (DAT_005bd29c == R3ModId_not_initialized) { - DAT_005bd29c = Erm_fn_ucInitErrMsg(); - } - if (r3_module_id_ff == R3ModId_not_initialized) { - r3_module_id_ff = Erm_fn_ucInitErrMsg(); - } - FUN_0043f830(10); - GetModuleFileNameA((HMODULE)0x0,local_200,0xff); - uVar4 = 0xffffffff; - pcVar5 = local_200; - do { - if (uVar4 == 0) break; - uVar4 = uVar4 - 1; - cVar1 = *pcVar5; - pcVar5 = pcVar5 + 1; - } while (cVar1 != '\0'); - sVar2 = ~uVar4; - do { - sVar3 = sVar2; - sVar2 = sVar3 - 1; - if ((int)sVar2 < 0) break; - } while (local_200[sVar2] != '\\'); - strncpy(acStack_101 + 1,local_200,sVar2); - acStack_101[sVar3] = '\0'; - SetCurrentDirectoryA(acStack_101 + 1); - r3_module1_init(); - r3_module_big_init(); - return; -} - -} - diff --git a/game_re/gh_fix/r3_read_gli_config.cxx b/game_re/gh_fix/r3_read_gli_config.cxx new file mode 100644 index 00000000..bb8e5e6a --- /dev/null +++ b/game_re/gh_fix/r3_read_gli_config.cxx @@ -0,0 +1,65 @@ +// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!! + +#include +#include +#include + +extern "C" { +undefined r3_config_setIdentifier( + const char *param_1); // 00470570 // r3_config_setIdentifier +void r3_config_setTexturesMem( + const char *param_1); // 00470f30 // r3_config_setTexturesMem +void r3_noop(void *p_cTxt1, void *p_cTxt2); // 00401100 // r3_noop +undefined +r3_read_game_config_udp_port(void); // 00446040 // r3_read_game_config_udp_port +undefined +r3_config_setGLIMode(const char *param_1); // 004704e0 // r3_config_setGLIMode +undefined r3_set_GameDataBinPath( + const char *param_1); // 0055a8d0 // r3_set_GameDataBinPath +undefined r3_read_game_config_modem_quality( + void); // 00445fc0 // r3_read_game_config_modem_quality + +// 004460c0 +void r3_read_gli_config(void) { + R3Config &config = getDefaultConfig(); + r3_config_setGLIMode(config.gfxGliMode.c_str()); + r3_config_setIdentifier(config.gfxIdentifier.c_str()); + r3_config_setTexturesMem(config.gfxTexturesMem.c_str()); + g_GLI_adapter = config.gfxAdapter; + r3_config_setIdentifier(config.gfxIdentifier.c_str()); + g_config_tex_compressed = config.gfxTexturesCompressed; + g_GLI_tnl = config.gfxTnl; + g_GLI_trilinear = config.gfxTrilinear; + r3_config_setTexturesMem(config.gfxTexturesMem.c_str()); + g_config_unused0 = 0; + g_config_camera_hor_axis = config.cameraHorizontalAxis; + g_config_camera_ver_axis = config.cameraVerticalAxis; + r3_set_GameDataBinPath(config.gameDataBinPath.c_str()); + + // GetPrivateProfileStringA + // (sectionName,s_SingleProcessor_005be308,&lpDefault_005be318,stringBuffer,0x104,local_204 + // ); + // /* Set single processor mode */ + // iVar4 = strcmpi(stringBuffer,(char *)&s_Yes); + // if (iVar4 == 0) { + // sectionName[4] = '\x01'; + // sectionName[5] = '\0'; + // sectionName[6] = '\0'; + // sectionName[7] = '\0'; + // sectionName[0] = -0x1a; + // sectionName[1] = 'c'; + // sectionName[2] = 'D'; + // sectionName[3] = '\0'; + // sectionName + Field<0, 4>() = GetCurrentProcess(); + // SetProcessAffinityMask((HANDLE)sectionName + Field<0, 4>(),sectionName + + // Field<4, 4>()); + // } + // sectionName[4] = -0xe; + // sectionName[5] = 'c'; + // sectionName[6] = 'D'; + // sectionName[7] = '\0'; + // r3_read_game_config_modem_quality(); + // r3_read_game_config_udp_port(); + return; +} +} diff --git a/game_re/gh_global.cxx b/game_re/gh_global.cxx index 1504429c..debd6bd9 100644 --- a/game_re/gh_global.cxx +++ b/game_re/gh_global.cxx @@ -53,12 +53,25 @@ const char* fopen_mode_r_binary = "rb"; // 005b68cc const char* s__R3_Setup_DX8_exe_005b68d0 = "\\R3_Setup_DX8.exe"; // 005b68d0 const char* s_Adapter_005b68e4 = "Adapter"; // 005b68e4 const char* fopen_mode_r_text = "rt"; // 005b68ec -const char* lpAppName_005b68f0 = "Rayman3"; // 005b68f0 +char(&lpAppName_005b68f0)[8] = reinterpret_cast(GH_MEM(0x005b68f0)); const char* s_Directory_005b68f8 = "Directory"; // 005b68f8 const char* s_None = "None"; // 005b6904 const char* s_UbiSoft_Ubi_ini = "/UbiSoft/Ubi.ini"; // 005b690c -R3ModuleId& DAT_005bd29c= (R3ModuleId&) GH_MEM(0x005bd29c); -R3ModuleId& r3_module_id_ff= (R3ModuleId&) GH_MEM(0x005bd58c); +undefined& s_percent_d= (undefined&) GH_MEM(0x005bad58); +byte& g_errMod0= (byte&) GH_MEM(0x005bd29c); +byte& g_errMod1= (byte&) GH_MEM(0x005bd4cc); +byte& g_errModMmg= (byte&) GH_MEM(0x005bd58c); +const char* s_Videos_005bd72c = "Videos"; // 005bd72c +const char* s__World_Sound_005bd9e8 = "\\World\\Sound"; // 005bd9e8 +const char* s__Options_005bd9f8 = "\\Options"; // 005bd9f8 +const char* s__Vignette_005bda04 = "\\Vignette"; // 005bda04 +const char* s__sBIN__s_005bda10 = "%sBIN\\%s"; // 005bda10 +const char* s__SaveGame_005bda1c = "\\SaveGame"; // 005bda1c +const char* s__World_Levels_005bda28 = "\\World\\Levels"; // 005bda28 +undefined& s_World= (undefined&) GH_MEM(0x005bda38); +undefined& DAT_005bda3c= (undefined&) GH_MEM(0x005bda3c); +char& DAT_005bda3e= (char&) GH_MEM(0x005bda3e); +undefined& s_DLL= (undefined&) GH_MEM(0x005bda40); const char* s_UbiSoft_bmp_005bda4c = "UbiSoft.bmp"; // 005bda4c const char* s_R3_DVD_005bdfd8 = "R3_DVD"; // 005bdfd8 const char* s_R3_DVD_005be0ec = "R3_DVD"; // 005be0ec @@ -67,6 +80,27 @@ const char* s_Die__s_DVDROM_kann_nicht_gelesen_005be130 = "Die %s DVDROM kann ni const char* s_Impossibile_trovare_il_DVD____s_005be198 = "Impossibile trovare il DVD : %s"; // 005be198 undefined& DAT_005be1ec= (undefined&) GH_MEM(0x005be1ec); const char* s_Impossible_de_trouver_le_DVD_____005be238 = "Impossible de trouver le DVD : %s"; // 005be238 +pointer& s_Yes= (pointer&) GH_MEM(0x005be304); +const char* s_SingleProcessor_005be308 = "SingleProcessor"; // 005be308 +undefined& lpDefault_005be318= (undefined&) GH_MEM(0x005be318); +const char* s_StartDirectory_005be31c = "StartDirectory"; // 005be31c +const char* s_Gamedata_005be32c = "Gamedata"; // 005be32c +const char* s_Camera_VerticalAxis_005be338 = "Camera_VerticalAxis"; // 005be338 +const char* s_Camera_HorizontalAxis_005be34c = "Camera_HorizontalAxis"; // 005be34c +const char* s_Complete_005be364 = "Complete"; // 005be364 +undefined& lpDefault_005be370= (undefined&) GH_MEM(0x005be370); +const char* s_SoundOnHD_005be374 = "SoundOnHD"; // 005be374 +undefined& lpDefault_005be380= (undefined&) GH_MEM(0x005be380); +const char* s_TexturesMem_005be384 = "TexturesMem"; // 005be384 +pointer& s_Agp= (pointer&) GH_MEM(0x005be390); +const char* s_Outline_005be394 = "Outline"; // 005be394 +const char* s_StaticShadows_005be39c = "StaticShadows"; // 005be39c +const char* s_DynamicShadows_005be3ac = "DynamicShadows"; // 005be3ac +const char* s_TriLinear_005be3bc = "TriLinear"; // 005be3bc +pointer& s_Tnl= (pointer&) GH_MEM(0x005be3c8); +const char* s_TexturesCompressed_005be3cc = "TexturesCompressed"; // 005be3cc +const char* s_GLI_Mode_005be3e0 = "GLI_Mode"; // 005be3e0 +const char* g_default_display_mode = "1 - 640 x 480 x 16"; // 005be3ec const char* s_Please_insert_the_DVD_in_the_DVD_005be400 = "Please insert the DVD in the DVD-Rom drive."; // 005be400 const char* s_Bitte_legen_Sie_DVD_von_Rayman_3_005be438 = "Bitte legen Sie DVD von Rayman 3 in Ihr DVD-ROM Laufwerk ein."; // 005be438 const char* s_Inserisci_il_DVD_di_Rayman_3_nel_005be484 = "Inserisci il DVD di Rayman 3 nel lettore DVD-ROM."; // 005be484 @@ -75,18 +109,37 @@ undefined& DAT_005be500= (undefined&) GH_MEM(0x005be500); const char* s_fmt_c_colon_s = "%c:%s"; // 005be540 const char* s_r3_program_files = "\\program files\\Ubi Soft\\Rayman3"; // 005be548 undefined *& PTR_DAT_005be568= (undefined *&) GH_MEM(0x005be568); +byte& g_errModFirst= (byte&) GH_MEM(0x005be6f0); +word& DAT_005bf004= (word&) GH_MEM(0x005bf004); +word& DAT_005bf008= (word&) GH_MEM(0x005bf008); +const char* s__08X__04X__04X__02X_02X__02X_02X_005bf6d8 = "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X"; // 005bf6d8 +dword& r3_textureMemMode= (dword&) GH_MEM(0x005bf740); +const char* s_Agp8_005bf744 = "Agp8"; // 005bf744 +const char* s_Agp4_005bf74c = "Agp4"; // 005bf74c +const char* s_Vram8_005bf754 = "Vram8"; // 005bf754 +const char* s_Vram4_005bf75c = "Vram4"; // 005bf75c +const char* s_VramPlus_005bf764 = "Vram+"; // 005bf764 +const char* s_Vram = "Vram"; // 005bf76c +byte& g_errMod7= (byte&) GH_MEM(0x005c069c); undefined2& DAT_005c0f20= (undefined2&) GH_MEM(0x005c0f20); char& DAT_005c0f22= (char&) GH_MEM(0x005c0f22); +UINT& g_config_camera_hor_axis= (UINT&) GH_MEM(0x005c67c8); +UINT& g_config_camera_ver_axis= (UINT&) GH_MEM(0x005c67cc); HWND& g_gameHWND1= (HWND&) GH_MEM(0x005cf964); long& lpDefault_005cf96c= (long&) GH_MEM(0x005cf96c); -R3ModuleId& g_ucErmNbOfModule= (R3ModuleId&) GH_MEM(0x005d2638); +byte& g_ucErmNbOfModule= (byte&) GH_MEM(0x005d2638); +mod1_ptrs& g_mod1_ptrs= (mod1_ptrs&) GH_MEM(0x005d2644); undefined4& DAT_005d2660= (undefined4&) GH_MEM(0x005d2660); undefined1& DAT_005d26a8= (undefined1&) GH_MEM(0x005d26a8); undefined& lpVolumeNameBuffer_005d27b0= (undefined&) GH_MEM(0x005d27b0); r3_main_data& r3_main_data_005d28b6= (r3_main_data&) GH_MEM(0x005d28b6); +undefined& g_soundOnHD= (undefined&) GH_MEM(0x005d29bc); +undefined& g_complete= (undefined&) GH_MEM(0x005d29c0); int& DAT_005e6b00= (int&) GH_MEM(0x005e6b00); undefined& DAT_005e6b04= (undefined&) GH_MEM(0x005e6b04); int& DAT_005f5e24= (int&) GH_MEM(0x005f5e24); +byte& m7_unk1= (byte&) GH_MEM(0x0063bec0); +char& g_m7_criticalSectionInitialized= (char&) GH_MEM(0x0063bec4); int& INT_0077d0a4= (int&) GH_MEM(0x0077d0a4); int& g_runMaximized= (int&) GH_MEM(0x0077d0a8); WPARAM& g_engineShouldRun= (WPARAM&) GH_MEM(0x0077d0b0); @@ -105,13 +158,20 @@ word& WORD_0077d4d6= (word&) GH_MEM(0x0077d4d6); dword& DWORD_0077d4d8= (dword&) GH_MEM(0x0077d4d8); char(&g_appCmdLine)[256] = reinterpret_cast(GH_MEM(0x0077d4e0)); char(&s_wndStrRestoring)[256] = reinterpret_cast(GH_MEM(0x0077d5e0)); +char(&g_gameDataBinPath)[64] = reinterpret_cast(GH_MEM(0x00781660)); +undefined& DAT_00782086= (undefined&) GH_MEM(0x00782086); +char(&lpBuffer_00782088)[260] = reinterpret_cast(GH_MEM(0x00782088)); 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)); +undefined& g_MmgCriticalSection= (undefined&) GH_MEM(0x0078faa0); char(&g_a_ucBlocksNbInModule)[255] = reinterpret_cast(GH_MEM(0x0078fac0)); +tdstGeneralChannelsInfo_& g_stGeneralChannelInfo= (tdstGeneralChannelsInfo_&) GH_MEM(0x0078fbc0); +tdstCurrentModeInfo *& g_d_stCurrentModeInfo= (tdstCurrentModeInfo *&) GH_MEM(0x0078fbc8); undefined& DAT_007d7d84= (undefined&) GH_MEM(0x007d7d84); +GAM_tdstEngineStructure& g_r3_engine= (GAM_tdstEngineStructure&) GH_MEM(0x007d7dc0); undefined2& DAT_007d7ea8= (undefined2&) GH_MEM(0x007d7ea8); short& DAT_007d80f8= (short&) GH_MEM(0x007d80f8); undefined4& DAT_007d83a8= (undefined4&) GH_MEM(0x007d83a8); @@ -120,7 +180,28 @@ r3_TaggedFloatUnk& r3_TaggedFloatUnk_007d8434= (r3_TaggedFloatUnk&) GH_MEM(0x007 undefined& DAT_007d98fd= (undefined&) GH_MEM(0x007d98fd); undefined& DAT_007d9928= (undefined&) GH_MEM(0x007d9928); uint& DAT_007d9cc4= (uint&) GH_MEM(0x007d9cc4); +undefined& g_config_unused0= (undefined&) GH_MEM(0x007d9df0); undefined& lpSystemTime_007d9e40= (undefined&) GH_MEM(0x007d9e40); undefined4& DAT_007d9e60= (undefined4&) GH_MEM(0x007d9e60); +undefined2& DAT_007d9e68= (undefined2&) GH_MEM(0x007d9e68); +word& WORD_007d9e6a= (word&) GH_MEM(0x007d9e6a); +word& WORD_007d9e6c= (word&) GH_MEM(0x007d9e6c); +word& WORD_007d9e6e= (word&) GH_MEM(0x007d9e6e); undefined& lpRootPathName_007d9e70= (undefined&) GH_MEM(0x007d9e70); undefined3& UNK_007d9e71= (undefined3&) GH_MEM(0x007d9e71); +undefined& g_GLI_fullscreen= (undefined&) GH_MEM(0x007edd40); +int& g_GLI_width0= (int&) GH_MEM(0x007edd44); +int& g_GLI_height0= (int&) GH_MEM(0x007edd48); +int& g_GLI_bitdepth0= (int&) GH_MEM(0x007edd4c); +undefined1& g_GLI_fullscreen1= (undefined1&) GH_MEM(0x007edd50); +int& g_GLI_width1= (int&) GH_MEM(0x007edd54); +int& g_GLI_height1= (int&) GH_MEM(0x007edd58); +int& g_GLI_bitdepth1= (int&) GH_MEM(0x007edd5c); +UINT& g_GLI_adapter= (UINT&) GH_MEM(0x007edd60); +undefined1& g_GLI_tnl= (undefined1&) GH_MEM(0x007edd64); +undefined1& g_config_tex_compressed= (undefined1&) GH_MEM(0x007edd65); +undefined1& g_GLI_trilinear= (undefined1&) GH_MEM(0x007edd66); +GUID& g_GLI_identifier= (GUID&) GH_MEM(0x007edd70); +float& g_GLI_mode_float= (float&) GH_MEM(0x007edd80); +m7_init_struct& m7_init_struct_007edde0= (m7_init_struct&) GH_MEM(0x007edde0); +undefined& g_mod7CriticalSection= (undefined&) GH_MEM(0x007ede20); diff --git a/game_re/gh_global.h b/game_re/gh_global.h index 546143fc..89deedc2 100644 --- a/game_re/gh_global.h +++ b/game_re/gh_global.h @@ -58,12 +58,25 @@ extern const char* fopen_mode_r_binary; // 005b68cc extern const char* s__R3_Setup_DX8_exe_005b68d0; // 005b68d0 extern const char* s_Adapter_005b68e4; // 005b68e4 extern const char* fopen_mode_r_text; // 005b68ec -extern const char* lpAppName_005b68f0; // 005b68f0 +extern char(&lpAppName_005b68f0)[8]; // 005b68f0 extern const char* s_Directory_005b68f8; // 005b68f8 extern const char* s_None; // 005b6904 extern const char* s_UbiSoft_Ubi_ini; // 005b690c -extern R3ModuleId& DAT_005bd29c; // 005bd29c -extern R3ModuleId& r3_module_id_ff; // 005bd58c +extern undefined& s_percent_d; // 005bad58 +extern byte& g_errMod0; // 005bd29c +extern byte& g_errMod1; // 005bd4cc +extern byte& g_errModMmg; // 005bd58c +extern const char* s_Videos_005bd72c; // 005bd72c +extern const char* s__World_Sound_005bd9e8; // 005bd9e8 +extern const char* s__Options_005bd9f8; // 005bd9f8 +extern const char* s__Vignette_005bda04; // 005bda04 +extern const char* s__sBIN__s_005bda10; // 005bda10 +extern const char* s__SaveGame_005bda1c; // 005bda1c +extern const char* s__World_Levels_005bda28; // 005bda28 +extern undefined& s_World; // 005bda38 +extern undefined& DAT_005bda3c; // 005bda3c +extern char& DAT_005bda3e; // 005bda3e +extern undefined& s_DLL; // 005bda40 extern const char* s_UbiSoft_bmp_005bda4c; // 005bda4c extern const char* s_R3_DVD_005bdfd8; // 005bdfd8 extern const char* s_R3_DVD_005be0ec; // 005be0ec @@ -72,6 +85,27 @@ extern const char* s_Die__s_DVDROM_kann_nicht_gelesen_005be130; // 005be130 extern const char* s_Impossibile_trovare_il_DVD____s_005be198; // 005be198 extern undefined& DAT_005be1ec; // 005be1ec extern const char* s_Impossible_de_trouver_le_DVD_____005be238; // 005be238 +extern pointer& s_Yes; // 005be304 +extern const char* s_SingleProcessor_005be308; // 005be308 +extern undefined& lpDefault_005be318; // 005be318 +extern const char* s_StartDirectory_005be31c; // 005be31c +extern const char* s_Gamedata_005be32c; // 005be32c +extern const char* s_Camera_VerticalAxis_005be338; // 005be338 +extern const char* s_Camera_HorizontalAxis_005be34c; // 005be34c +extern const char* s_Complete_005be364; // 005be364 +extern undefined& lpDefault_005be370; // 005be370 +extern const char* s_SoundOnHD_005be374; // 005be374 +extern undefined& lpDefault_005be380; // 005be380 +extern const char* s_TexturesMem_005be384; // 005be384 +extern pointer& s_Agp; // 005be390 +extern const char* s_Outline_005be394; // 005be394 +extern const char* s_StaticShadows_005be39c; // 005be39c +extern const char* s_DynamicShadows_005be3ac; // 005be3ac +extern const char* s_TriLinear_005be3bc; // 005be3bc +extern pointer& s_Tnl; // 005be3c8 +extern const char* s_TexturesCompressed_005be3cc; // 005be3cc +extern const char* s_GLI_Mode_005be3e0; // 005be3e0 +extern const char* g_default_display_mode; // 005be3ec extern const char* s_Please_insert_the_DVD_in_the_DVD_005be400; // 005be400 extern const char* s_Bitte_legen_Sie_DVD_von_Rayman_3_005be438; // 005be438 extern const char* s_Inserisci_il_DVD_di_Rayman_3_nel_005be484; // 005be484 @@ -80,18 +114,37 @@ extern undefined& DAT_005be500; // 005be500 extern const char* s_fmt_c_colon_s; // 005be540 extern const char* s_r3_program_files; // 005be548 extern undefined *& PTR_DAT_005be568; // 005be568 +extern byte& g_errModFirst; // 005be6f0 +extern word& DAT_005bf004; // 005bf004 +extern word& DAT_005bf008; // 005bf008 +extern const char* s__08X__04X__04X__02X_02X__02X_02X_005bf6d8; // 005bf6d8 +extern dword& r3_textureMemMode; // 005bf740 +extern const char* s_Agp8_005bf744; // 005bf744 +extern const char* s_Agp4_005bf74c; // 005bf74c +extern const char* s_Vram8_005bf754; // 005bf754 +extern const char* s_Vram4_005bf75c; // 005bf75c +extern const char* s_VramPlus_005bf764; // 005bf764 +extern const char* s_Vram; // 005bf76c +extern byte& g_errMod7; // 005c069c extern undefined2& DAT_005c0f20; // 005c0f20 extern char& DAT_005c0f22; // 005c0f22 +extern UINT& g_config_camera_hor_axis; // 005c67c8 +extern UINT& g_config_camera_ver_axis; // 005c67cc extern HWND& g_gameHWND1; // 005cf964 extern long& lpDefault_005cf96c; // 005cf96c -extern R3ModuleId& g_ucErmNbOfModule; // 005d2638 +extern byte& g_ucErmNbOfModule; // 005d2638 +extern mod1_ptrs& g_mod1_ptrs; // 005d2644 extern undefined4& DAT_005d2660; // 005d2660 extern undefined1& DAT_005d26a8; // 005d26a8 extern undefined& lpVolumeNameBuffer_005d27b0; // 005d27b0 extern r3_main_data& r3_main_data_005d28b6; // 005d28b6 +extern undefined& g_soundOnHD; // 005d29bc +extern undefined& g_complete; // 005d29c0 extern int& DAT_005e6b00; // 005e6b00 extern undefined& DAT_005e6b04; // 005e6b04 extern int& DAT_005f5e24; // 005f5e24 +extern byte& m7_unk1; // 0063bec0 +extern char& g_m7_criticalSectionInitialized; // 0063bec4 extern int& INT_0077d0a4; // 0077d0a4 extern int& g_runMaximized; // 0077d0a8 extern WPARAM& g_engineShouldRun; // 0077d0b0 @@ -110,13 +163,20 @@ extern word& WORD_0077d4d6; // 0077d4d6 extern dword& DWORD_0077d4d8; // 0077d4d8 extern char(&g_appCmdLine)[256]; // 0077d4e0 extern char(&s_wndStrRestoring)[256]; // 0077d5e0 +extern char(&g_gameDataBinPath)[64]; // 00781660 +extern undefined& DAT_00782086; // 00782086 +extern char(&lpBuffer_00782088)[260]; // 00782088 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 undefined& g_MmgCriticalSection; // 0078faa0 extern char(&g_a_ucBlocksNbInModule)[255]; // 0078fac0 +extern tdstGeneralChannelsInfo_& g_stGeneralChannelInfo; // 0078fbc0 +extern tdstCurrentModeInfo *& g_d_stCurrentModeInfo; // 0078fbc8 extern undefined& DAT_007d7d84; // 007d7d84 +extern GAM_tdstEngineStructure& g_r3_engine; // 007d7dc0 extern undefined2& DAT_007d7ea8; // 007d7ea8 extern short& DAT_007d80f8; // 007d80f8 extern undefined4& DAT_007d83a8; // 007d83a8 @@ -125,8 +185,29 @@ extern r3_TaggedFloatUnk& r3_TaggedFloatUnk_007d8434; // 007d8434 extern undefined& DAT_007d98fd; // 007d98fd extern undefined& DAT_007d9928; // 007d9928 extern uint& DAT_007d9cc4; // 007d9cc4 +extern undefined& g_config_unused0; // 007d9df0 extern undefined& lpSystemTime_007d9e40; // 007d9e40 extern undefined4& DAT_007d9e60; // 007d9e60 +extern undefined2& DAT_007d9e68; // 007d9e68 +extern word& WORD_007d9e6a; // 007d9e6a +extern word& WORD_007d9e6c; // 007d9e6c +extern word& WORD_007d9e6e; // 007d9e6e extern undefined& lpRootPathName_007d9e70; // 007d9e70 extern undefined3& UNK_007d9e71; // 007d9e71 +extern undefined& g_GLI_fullscreen; // 007edd40 +extern int& g_GLI_width0; // 007edd44 +extern int& g_GLI_height0; // 007edd48 +extern int& g_GLI_bitdepth0; // 007edd4c +extern undefined1& g_GLI_fullscreen1; // 007edd50 +extern int& g_GLI_width1; // 007edd54 +extern int& g_GLI_height1; // 007edd58 +extern int& g_GLI_bitdepth1; // 007edd5c +extern UINT& g_GLI_adapter; // 007edd60 +extern undefined1& g_GLI_tnl; // 007edd64 +extern undefined1& g_config_tex_compressed; // 007edd65 +extern undefined1& g_GLI_trilinear; // 007edd66 +extern GUID& g_GLI_identifier; // 007edd70 +extern float& g_GLI_mode_float; // 007edd80 +extern m7_init_struct& m7_init_struct_007edde0; // 007edde0 +extern undefined& g_mod7CriticalSection; // 007ede20 #endif // GH_GENERATED_GLOBALS_H diff --git a/game_re/gh_stub/FUN_004010b0.cxx b/game_re/gh_stub/FUN_004010b0.cxx index 40cbaa1c..aa187862 100644 --- a/game_re/gh_stub/FUN_004010b0.cxx +++ b/game_re/gh_stub/FUN_004010b0.cxx @@ -10,5 +10,5 @@ // FUN_004010b0 extern "C" undefined FUN_004010b0(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_004010b0"); + throw GHStubException("Function not implemented: FUN_004010b0"); } diff --git a/game_re/gh_stub/FUN_00401320.cxx b/game_re/gh_stub/FUN_00401320.cxx index d21c60f6..ce42157d 100644 --- a/game_re/gh_stub/FUN_00401320.cxx +++ b/game_re/gh_stub/FUN_00401320.cxx @@ -10,5 +10,5 @@ // FUN_00401320 extern "C" undefined FUN_00401320(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_00401320"); + throw GHStubException("Function not implemented: FUN_00401320"); } diff --git a/game_re/gh_stub/FUN_004013a0.cxx b/game_re/gh_stub/FUN_004013a0.cxx index fb42562c..548d42c3 100644 --- a/game_re/gh_stub/FUN_004013a0.cxx +++ b/game_re/gh_stub/FUN_004013a0.cxx @@ -10,5 +10,5 @@ // FUN_004013a0 extern "C" undefined FUN_004013a0(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_004013a0"); + throw GHStubException("Function not implemented: FUN_004013a0"); } diff --git a/game_re/gh_stub/r3_module1_init.cxx b/game_re/gh_stub/FUN_0043e660.cxx similarity index 62% rename from game_re/gh_stub/r3_module1_init.cxx rename to game_re/gh_stub/FUN_0043e660.cxx index b6169047..72c49e08 100644 --- a/game_re/gh_stub/r3_module1_init.cxx +++ b/game_re/gh_stub/FUN_0043e660.cxx @@ -6,9 +6,9 @@ #include #include -// 0043e630 -// r3_module1_init -extern "C" undefined r3_module1_init(void) { +// 0043e660 +// FUN_0043e660 +extern "C" undefined FUN_0043e660(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: r3_module1_init"); + throw GHStubException("Function not implemented: FUN_0043e660"); } diff --git a/game_re/gh_stub/FUN_0043e690.cxx b/game_re/gh_stub/FUN_0043e690.cxx new file mode 100644 index 00000000..9f96bfff --- /dev/null +++ b/game_re/gh_stub/FUN_0043e690.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0043e690 +// FUN_0043e690 +extern "C" undefined FUN_0043e690(undefined4 param_1, undefined4 param_2) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_0043e690"); +} diff --git a/game_re/gh_stub/FUN_0043f830.cxx b/game_re/gh_stub/FUN_0043f830.cxx index e2402019..c9778afc 100644 --- a/game_re/gh_stub/FUN_0043f830.cxx +++ b/game_re/gh_stub/FUN_0043f830.cxx @@ -10,5 +10,5 @@ // FUN_0043f830 extern "C" undefined FUN_0043f830(undefined4 param_1) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_0043f830"); + throw GHStubException("Function not implemented: FUN_0043f830"); } diff --git a/game_re/gh_stub/r3_module_big_init.cxx b/game_re/gh_stub/FUN_00443730.cxx similarity index 61% rename from game_re/gh_stub/r3_module_big_init.cxx rename to game_re/gh_stub/FUN_00443730.cxx index 8306b4f0..157fe7a3 100644 --- a/game_re/gh_stub/r3_module_big_init.cxx +++ b/game_re/gh_stub/FUN_00443730.cxx @@ -6,9 +6,9 @@ #include #include -// 00443f10 -// r3_module_big_init -extern "C" undefined r3_module_big_init(void) { +// 00443730 +// FUN_00443730 +extern "C" undefined FUN_00443730(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: r3_module_big_init"); + throw GHStubException("Function not implemented: FUN_00443730"); } diff --git a/game_re/gh_stub/FUN_00445440.cxx b/game_re/gh_stub/FUN_00445440.cxx new file mode 100644 index 00000000..207464c8 --- /dev/null +++ b/game_re/gh_stub/FUN_00445440.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00445440 +// FUN_00445440 +extern "C" undefined FUN_00445440(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_00445440"); +} diff --git a/game_re/gh_stub/FUN_00445580.cxx b/game_re/gh_stub/FUN_00445580.cxx new file mode 100644 index 00000000..bd5bfa4e --- /dev/null +++ b/game_re/gh_stub/FUN_00445580.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00445580 +// FUN_00445580 +extern "C" undefined FUN_00445580(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_00445580"); +} diff --git a/game_re/gh_stub/FUN_00445db0.cxx b/game_re/gh_stub/FUN_00445db0.cxx new file mode 100644 index 00000000..8580e914 --- /dev/null +++ b/game_re/gh_stub/FUN_00445db0.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00445db0 +// FUN_00445db0 +extern "C" undefined FUN_00445db0(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_00445db0"); +} diff --git a/game_re/gh_stub/FUN_00445f20.cxx b/game_re/gh_stub/FUN_00445f20.cxx new file mode 100644 index 00000000..00d278b7 --- /dev/null +++ b/game_re/gh_stub/FUN_00445f20.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00445f20 +// FUN_00445f20 +extern "C" undefined FUN_00445f20(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_00445f20"); +} diff --git a/game_re/gh_stub/FUN_0046ecc0.cxx b/game_re/gh_stub/FUN_0046ecc0.cxx index e3f0d81e..32c060b9 100644 --- a/game_re/gh_stub/FUN_0046ecc0.cxx +++ b/game_re/gh_stub/FUN_0046ecc0.cxx @@ -10,5 +10,5 @@ // FUN_0046ecc0 extern "C" undefined FUN_0046ecc0(undefined2 param_1, undefined2 param_2) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_0046ecc0"); + throw GHStubException("Function not implemented: FUN_0046ecc0"); } diff --git a/game_re/gh_stub/FUN_0046ed70.cxx b/game_re/gh_stub/FUN_0046ed70.cxx index 50718d85..0baa6305 100644 --- a/game_re/gh_stub/FUN_0046ed70.cxx +++ b/game_re/gh_stub/FUN_0046ed70.cxx @@ -10,5 +10,5 @@ // FUN_0046ed70 extern "C" undefined4 FUN_0046ed70(char * param_1, short * param_2) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_0046ed70"); + throw GHStubException("Function not implemented: FUN_0046ed70"); } diff --git a/game_re/gh_stub/FUN_0046f060.cxx b/game_re/gh_stub/FUN_0046f060.cxx index dec99ef1..e2ebf081 100644 --- a/game_re/gh_stub/FUN_0046f060.cxx +++ b/game_re/gh_stub/FUN_0046f060.cxx @@ -10,5 +10,5 @@ // FUN_0046f060 extern "C" undefined FUN_0046f060(short param_1, undefined4 * param_2) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_0046f060"); + throw GHStubException("Function not implemented: FUN_0046f060"); } diff --git a/game_re/gh_stub/FUN_0046f0b0.cxx b/game_re/gh_stub/FUN_0046f0b0.cxx index b8bfbb39..32871a25 100644 --- a/game_re/gh_stub/FUN_0046f0b0.cxx +++ b/game_re/gh_stub/FUN_0046f0b0.cxx @@ -10,5 +10,5 @@ // FUN_0046f0b0 extern "C" undefined4 FUN_0046f0b0(short param_1, undefined4 * param_2, short * param_3) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_0046f0b0"); + throw GHStubException("Function not implemented: FUN_0046f0b0"); } diff --git a/game_re/gh_stub/FUN_0046f640.cxx b/game_re/gh_stub/FUN_0046f640.cxx index 6a14d41b..b2830ee0 100644 --- a/game_re/gh_stub/FUN_0046f640.cxx +++ b/game_re/gh_stub/FUN_0046f640.cxx @@ -10,5 +10,5 @@ // FUN_0046f640 extern "C" undefined FUN_0046f640(undefined param_1, short param_2, undefined4 * param_3) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_0046f640"); + throw GHStubException("Function not implemented: FUN_0046f640"); } diff --git a/game_re/gh_stub/FUN_00470650.cxx b/game_re/gh_stub/FUN_00470650.cxx new file mode 100644 index 00000000..836da554 --- /dev/null +++ b/game_re/gh_stub/FUN_00470650.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00470650 +// FUN_00470650 +extern "C" undefined FUN_00470650(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_00470650"); +} diff --git a/game_re/gh_stub/FUN_00470db0.cxx b/game_re/gh_stub/FUN_00470db0.cxx index c0924b82..7274e99f 100644 --- a/game_re/gh_stub/FUN_00470db0.cxx +++ b/game_re/gh_stub/FUN_00470db0.cxx @@ -10,5 +10,5 @@ // FUN_00470db0 extern "C" undefined FUN_00470db0(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_00470db0"); + throw GHStubException("Function not implemented: FUN_00470db0"); } diff --git a/game_re/gh_stub/FUN_00470ef0.cxx b/game_re/gh_stub/FUN_00470ef0.cxx new file mode 100644 index 00000000..1f3c33cc --- /dev/null +++ b/game_re/gh_stub/FUN_00470ef0.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00470ef0 +// FUN_00470ef0 +extern "C" undefined FUN_00470ef0(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_00470ef0"); +} diff --git a/game_re/gh_stub/FUN_00471110.cxx b/game_re/gh_stub/FUN_00471110.cxx new file mode 100644 index 00000000..8f303e51 --- /dev/null +++ b/game_re/gh_stub/FUN_00471110.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00471110 +// FUN_00471110 +extern "C" undefined FUN_00471110(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_00471110"); +} diff --git a/game_re/gh_stub/FUN_004711d0.cxx b/game_re/gh_stub/FUN_004711d0.cxx new file mode 100644 index 00000000..f3a6fcea --- /dev/null +++ b/game_re/gh_stub/FUN_004711d0.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 004711d0 +// FUN_004711d0 +extern "C" undefined FUN_004711d0(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_004711d0"); +} diff --git a/game_re/gh_stub/FUN_00472150.cxx b/game_re/gh_stub/FUN_00472150.cxx index a23c1230..9f8816fd 100644 --- a/game_re/gh_stub/FUN_00472150.cxx +++ b/game_re/gh_stub/FUN_00472150.cxx @@ -10,5 +10,5 @@ // FUN_00472150 extern "C" undefined FUN_00472150(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_00472150"); + throw GHStubException("Function not implemented: FUN_00472150"); } diff --git a/game_re/gh_stub/FUN_004725a0.cxx b/game_re/gh_stub/FUN_004725a0.cxx index ee25ebcc..7fcae195 100644 --- a/game_re/gh_stub/FUN_004725a0.cxx +++ b/game_re/gh_stub/FUN_004725a0.cxx @@ -10,5 +10,5 @@ // FUN_004725a0 extern "C" undefined FUN_004725a0(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_004725a0"); + throw GHStubException("Function not implemented: FUN_004725a0"); } diff --git a/game_re/gh_stub/FUN_0047c340.cxx b/game_re/gh_stub/FUN_0047c340.cxx index 5136be72..b2d67bc8 100644 --- a/game_re/gh_stub/FUN_0047c340.cxx +++ b/game_re/gh_stub/FUN_0047c340.cxx @@ -10,5 +10,5 @@ // FUN_0047c340 extern "C" undefined FUN_0047c340(undefined4 param_1, undefined4 param_2, undefined4 param_3) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_0047c340"); + throw GHStubException("Function not implemented: FUN_0047c340"); } diff --git a/game_re/gh_stub/FUN_004859f0.cxx b/game_re/gh_stub/FUN_004859f0.cxx new file mode 100644 index 00000000..c81d76ac --- /dev/null +++ b/game_re/gh_stub/FUN_004859f0.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 004859f0 +// FUN_004859f0 +extern "C" undefined FUN_004859f0(undefined1 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_004859f0"); +} diff --git a/game_re/gh_stub/FUN_0049b410.cxx b/game_re/gh_stub/FUN_0049b410.cxx new file mode 100644 index 00000000..ab3d2456 --- /dev/null +++ b/game_re/gh_stub/FUN_0049b410.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0049b410 +// FUN_0049b410 +extern "C" undefined FUN_0049b410(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_0049b410"); +} diff --git a/game_re/gh_stub/FUN_0049b460.cxx b/game_re/gh_stub/FUN_0049b460.cxx new file mode 100644 index 00000000..51d8a8f7 --- /dev/null +++ b/game_re/gh_stub/FUN_0049b460.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0049b460 +// FUN_0049b460 +extern "C" undefined FUN_0049b460(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_0049b460"); +} diff --git a/game_re/gh_stub/FUN_0049b5a0.cxx b/game_re/gh_stub/FUN_0049b5a0.cxx new file mode 100644 index 00000000..484d3031 --- /dev/null +++ b/game_re/gh_stub/FUN_0049b5a0.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0049b5a0 +// FUN_0049b5a0 +extern "C" undefined FUN_0049b5a0(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_0049b5a0"); +} diff --git a/game_re/gh_stub/FUN_0049b8c0.cxx b/game_re/gh_stub/FUN_0049b8c0.cxx new file mode 100644 index 00000000..4aad5908 --- /dev/null +++ b/game_re/gh_stub/FUN_0049b8c0.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0049b8c0 +// FUN_0049b8c0 +extern "C" undefined FUN_0049b8c0(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_0049b8c0"); +} diff --git a/game_re/gh_stub/FUN_004b9b10.cxx b/game_re/gh_stub/FUN_004b9b10.cxx new file mode 100644 index 00000000..108d7c34 --- /dev/null +++ b/game_re/gh_stub/FUN_004b9b10.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 004b9b10 +// FUN_004b9b10 +extern "C" undefined FUN_004b9b10(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_004b9b10"); +} diff --git a/game_re/gh_stub/FUN_004fa4a0.cxx b/game_re/gh_stub/FUN_004fa4a0.cxx new file mode 100644 index 00000000..18f88c8e --- /dev/null +++ b/game_re/gh_stub/FUN_004fa4a0.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 004fa4a0 +// FUN_004fa4a0 +extern "C" undefined FUN_004fa4a0(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_004fa4a0"); +} diff --git a/game_re/gh_stub/FUN_004fa610.cxx b/game_re/gh_stub/FUN_004fa610.cxx new file mode 100644 index 00000000..e825e428 --- /dev/null +++ b/game_re/gh_stub/FUN_004fa610.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 004fa610 +// FUN_004fa610 +extern "C" undefined FUN_004fa610(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_004fa610"); +} diff --git a/game_re/gh_stub/FUN_004fb300.cxx b/game_re/gh_stub/FUN_004fb300.cxx index 0db380a6..bff16eae 100644 --- a/game_re/gh_stub/FUN_004fb300.cxx +++ b/game_re/gh_stub/FUN_004fb300.cxx @@ -10,5 +10,5 @@ // FUN_004fb300 extern "C" undefined FUN_004fb300(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_004fb300"); + throw GHStubException("Function not implemented: FUN_004fb300"); } diff --git a/game_re/gh_stub/FUN_00503710.cxx b/game_re/gh_stub/FUN_00503710.cxx index 1615d54b..85b20e96 100644 --- a/game_re/gh_stub/FUN_00503710.cxx +++ b/game_re/gh_stub/FUN_00503710.cxx @@ -10,5 +10,5 @@ // FUN_00503710 extern "C" undefined FUN_00503710(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_00503710"); + throw GHStubException("Function not implemented: FUN_00503710"); } diff --git a/game_re/gh_stub/FUN_005038e0.cxx b/game_re/gh_stub/FUN_005038e0.cxx index 7de1c2bf..ec249ebf 100644 --- a/game_re/gh_stub/FUN_005038e0.cxx +++ b/game_re/gh_stub/FUN_005038e0.cxx @@ -10,5 +10,5 @@ // FUN_005038e0 extern "C" undefined FUN_005038e0(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: FUN_005038e0"); + throw GHStubException("Function not implemented: FUN_005038e0"); } diff --git a/game_re/gh_stub/FUN_0054c9ab.cxx b/game_re/gh_stub/FUN_0054c9ab.cxx new file mode 100644 index 00000000..a3326539 --- /dev/null +++ b/game_re/gh_stub/FUN_0054c9ab.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0054c9ab +// FUN_0054c9ab +extern "C" undefined FUN_0054c9ab(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_0054c9ab"); +} diff --git a/game_re/gh_stub/FUN_0055a900.cxx b/game_re/gh_stub/FUN_0055a900.cxx new file mode 100644 index 00000000..fa8ab6f3 --- /dev/null +++ b/game_re/gh_stub/FUN_0055a900.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0055a900 +// FUN_0055a900 +extern "C" undefined * FUN_0055a900(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_0055a900"); +} diff --git a/game_re/gh_stub/FUN_0055a910.cxx b/game_re/gh_stub/FUN_0055a910.cxx new file mode 100644 index 00000000..63ce6d78 --- /dev/null +++ b/game_re/gh_stub/FUN_0055a910.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0055a910 +// FUN_0055a910 +extern "C" undefined FUN_0055a910(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_0055a910"); +} diff --git a/game_re/gh_stub/FUN_0055aa10.cxx b/game_re/gh_stub/FUN_0055aa10.cxx new file mode 100644 index 00000000..90ca9f38 --- /dev/null +++ b/game_re/gh_stub/FUN_0055aa10.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0055aa10 +// FUN_0055aa10 +extern "C" undefined FUN_0055aa10(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_0055aa10"); +} diff --git a/game_re/gh_stub/FUN_0055aa60.cxx b/game_re/gh_stub/FUN_0055aa60.cxx new file mode 100644 index 00000000..8993f704 --- /dev/null +++ b/game_re/gh_stub/FUN_0055aa60.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0055aa60 +// FUN_0055aa60 +extern "C" undefined FUN_0055aa60(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_0055aa60"); +} diff --git a/game_re/gh_stub/FUN_0055aa80.cxx b/game_re/gh_stub/FUN_0055aa80.cxx new file mode 100644 index 00000000..6205d8e1 --- /dev/null +++ b/game_re/gh_stub/FUN_0055aa80.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0055aa80 +// FUN_0055aa80 +extern "C" undefined FUN_0055aa80(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_0055aa80"); +} diff --git a/game_re/gh_stub/FUN_0055aab0.cxx b/game_re/gh_stub/FUN_0055aab0.cxx new file mode 100644 index 00000000..b92536cd --- /dev/null +++ b/game_re/gh_stub/FUN_0055aab0.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0055aab0 +// FUN_0055aab0 +extern "C" undefined FUN_0055aab0(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: FUN_0055aab0"); +} diff --git a/game_re/gh_stub/aoti.cxx b/game_re/gh_stub/aoti.cxx new file mode 100644 index 00000000..8e41c75e --- /dev/null +++ b/game_re/gh_stub/aoti.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00408f8c +// aoti +extern "C" undefined aoti(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: aoti"); +} diff --git a/game_re/gh_stub/checkMask_5d29c4.cxx b/game_re/gh_stub/checkMask_5d29c4.cxx index 97071d28..21167be4 100644 --- a/game_re/gh_stub/checkMask_5d29c4.cxx +++ b/game_re/gh_stub/checkMask_5d29c4.cxx @@ -10,5 +10,5 @@ // checkMask_5d29c4 extern "C" bool checkMask_5d29c4(uint mask) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: checkMask_5d29c4"); + throw GHStubException("Function not implemented: checkMask_5d29c4"); } diff --git a/game_re/gh_stub/g_setInitVar0.cxx b/game_re/gh_stub/g_setInitVar0.cxx index 191ddbf5..35fdc4e9 100644 --- a/game_re/gh_stub/g_setInitVar0.cxx +++ b/game_re/gh_stub/g_setInitVar0.cxx @@ -10,5 +10,5 @@ // g_setInitVar0 extern "C" void g_setInitVar0(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: g_setInitVar0"); + throw GHStubException("Function not implemented: g_setInitVar0"); } diff --git a/game_re/gh_stub/get_one.cxx b/game_re/gh_stub/get_one.cxx index bd1862ee..202556ad 100644 --- a/game_re/gh_stub/get_one.cxx +++ b/game_re/gh_stub/get_one.cxx @@ -10,5 +10,5 @@ // get_one extern "C" undefined4 get_one(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: get_one"); + throw GHStubException("Function not implemented: get_one"); } diff --git a/game_re/gh_stub/gfx_init2.cxx b/game_re/gh_stub/gfx_init2.cxx index 24062683..bb7ddb99 100644 --- a/game_re/gh_stub/gfx_init2.cxx +++ b/game_re/gh_stub/gfx_init2.cxx @@ -10,5 +10,5 @@ // gfx_init2 extern "C" undefined gfx_init2(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: gfx_init2"); + throw GHStubException("Function not implemented: gfx_init2"); } diff --git a/game_re/gh_stub/m7_lock_unlock_noop.cxx b/game_re/gh_stub/m7_lock_unlock_noop.cxx new file mode 100644 index 00000000..2b78acdb --- /dev/null +++ b/game_re/gh_stub/m7_lock_unlock_noop.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0049b660 +// m7_lock_unlock_noop +extern "C" bool m7_lock_unlock_noop(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: m7_lock_unlock_noop"); +} diff --git a/game_re/gh_stub/r3_checkDisc.cxx b/game_re/gh_stub/r3_checkDisc.cxx index d37ade3b..32f42710 100644 --- a/game_re/gh_stub/r3_checkDisc.cxx +++ b/game_re/gh_stub/r3_checkDisc.cxx @@ -10,5 +10,5 @@ // r3_checkDisc extern "C" undefined r3_checkDisc(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: r3_checkDisc"); + throw GHStubException("Function not implemented: r3_checkDisc"); } diff --git a/game_re/gh_stub/r3_config_setTexturesCompressed.cxx b/game_re/gh_stub/r3_config_setTexturesCompressed.cxx new file mode 100644 index 00000000..8ba5ec62 --- /dev/null +++ b/game_re/gh_stub/r3_config_setTexturesCompressed.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00470660 +// r3_config_setTexturesCompressed +extern "C" undefined r3_config_setTexturesCompressed(undefined1 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_config_setTexturesCompressed"); +} diff --git a/game_re/gh_stub/r3_config_setTnl.cxx b/game_re/gh_stub/r3_config_setTnl.cxx new file mode 100644 index 00000000..6c749f1f --- /dev/null +++ b/game_re/gh_stub/r3_config_setTnl.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00470630 +// r3_config_setTnl +extern "C" undefined r3_config_setTnl(undefined1 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_config_setTnl"); +} diff --git a/game_re/gh_stub/r3_config_setTrilinearFiltering.cxx b/game_re/gh_stub/r3_config_setTrilinearFiltering.cxx new file mode 100644 index 00000000..15d3eb2d --- /dev/null +++ b/game_re/gh_stub/r3_config_setTrilinearFiltering.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00470640 +// r3_config_setTrilinearFiltering +extern "C" undefined r3_config_setTrilinearFiltering(undefined1 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_config_setTrilinearFiltering"); +} diff --git a/game_re/gh_stub/r3_get_gli_height0.cxx b/game_re/gh_stub/r3_get_gli_height0.cxx index 8cfc9346..72874898 100644 --- a/game_re/gh_stub/r3_get_gli_height0.cxx +++ b/game_re/gh_stub/r3_get_gli_height0.cxx @@ -10,5 +10,5 @@ // r3_get_gli_height0 extern "C" int r3_get_gli_height0(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: r3_get_gli_height0"); + throw GHStubException("Function not implemented: r3_get_gli_height0"); } diff --git a/game_re/gh_stub/r3_get_gli_height1.cxx b/game_re/gh_stub/r3_get_gli_height1.cxx index 848faeb9..f0cda7f8 100644 --- a/game_re/gh_stub/r3_get_gli_height1.cxx +++ b/game_re/gh_stub/r3_get_gli_height1.cxx @@ -10,5 +10,5 @@ // r3_get_gli_height1 extern "C" int r3_get_gli_height1(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: r3_get_gli_height1"); + throw GHStubException("Function not implemented: r3_get_gli_height1"); } diff --git a/game_re/gh_stub/r3_get_gli_width0.cxx b/game_re/gh_stub/r3_get_gli_width0.cxx index 1d89cd18..f110e570 100644 --- a/game_re/gh_stub/r3_get_gli_width0.cxx +++ b/game_re/gh_stub/r3_get_gli_width0.cxx @@ -10,5 +10,5 @@ // r3_get_gli_width0 extern "C" int r3_get_gli_width0(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: r3_get_gli_width0"); + throw GHStubException("Function not implemented: r3_get_gli_width0"); } diff --git a/game_re/gh_stub/r3_get_gli_width1.cxx b/game_re/gh_stub/r3_get_gli_width1.cxx index d3dd2b39..8c33e6a3 100644 --- a/game_re/gh_stub/r3_get_gli_width1.cxx +++ b/game_re/gh_stub/r3_get_gli_width1.cxx @@ -10,5 +10,5 @@ // r3_get_gli_width1 extern "C" int r3_get_gli_width1(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: r3_get_gli_width1"); + throw GHStubException("Function not implemented: r3_get_gli_width1"); } diff --git a/game_re/gh_stub/r3_initEngine.cxx b/game_re/gh_stub/r3_initEngine.cxx index 0d9939bd..bb649174 100644 --- a/game_re/gh_stub/r3_initEngine.cxx +++ b/game_re/gh_stub/r3_initEngine.cxx @@ -10,5 +10,5 @@ // r3_initEngine extern "C" undefined r3_initEngine(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: r3_initEngine"); + throw GHStubException("Function not implemented: r3_initEngine"); } diff --git a/game_re/gh_stub/r3_load_splash_bitmap.cxx b/game_re/gh_stub/r3_load_splash_bitmap.cxx index cea66eaa..816c59c3 100644 --- a/game_re/gh_stub/r3_load_splash_bitmap.cxx +++ b/game_re/gh_stub/r3_load_splash_bitmap.cxx @@ -10,5 +10,5 @@ // r3_load_splash_bitmap extern "C" void r3_load_splash_bitmap(HWND unused) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: r3_load_splash_bitmap"); + throw GHStubException("Function not implemented: r3_load_splash_bitmap"); } diff --git a/game_re/gh_stub/r3_module10input_init.cxx b/game_re/gh_stub/r3_module10input_init.cxx new file mode 100644 index 00000000..8249fac6 --- /dev/null +++ b/game_re/gh_stub/r3_module10input_init.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00504ef0 +// r3_module10input_init +extern "C" undefined r3_module10input_init(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_module10input_init"); +} diff --git a/game_re/gh_stub/r3_module11_init.cxx b/game_re/gh_stub/r3_module11_init.cxx new file mode 100644 index 00000000..6c73b869 --- /dev/null +++ b/game_re/gh_stub/r3_module11_init.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00554fc0 +// r3_module11_init +extern "C" undefined r3_module11_init(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_module11_init"); +} diff --git a/game_re/gh_stub/r3_module12_init.cxx b/game_re/gh_stub/r3_module12_init.cxx new file mode 100644 index 00000000..50c4e456 --- /dev/null +++ b/game_re/gh_stub/r3_module12_init.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0055ab30 +// r3_module12_init +extern "C" undefined r3_module12_init(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_module12_init"); +} diff --git a/game_re/gh_stub/r3_module14_init.cxx b/game_re/gh_stub/r3_module14_init.cxx new file mode 100644 index 00000000..5beff603 --- /dev/null +++ b/game_re/gh_stub/r3_module14_init.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00588120 +// r3_module14_init +extern "C" undefined r3_module14_init(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_module14_init"); +} diff --git a/game_re/gh_stub/r3_module15_init.cxx b/game_re/gh_stub/r3_module15_init.cxx new file mode 100644 index 00000000..99ed4792 --- /dev/null +++ b/game_re/gh_stub/r3_module15_init.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0058eb70 +// r3_module15_init +extern "C" undefined r3_module15_init(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_module15_init"); +} diff --git a/game_re/gh_stub/r3_module16_init.cxx b/game_re/gh_stub/r3_module16_init.cxx new file mode 100644 index 00000000..49609a29 --- /dev/null +++ b/game_re/gh_stub/r3_module16_init.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0058ee90 +// r3_module16_init +extern "C" undefined r3_module16_init(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_module16_init"); +} diff --git a/game_re/gh_stub/r3_module2_init.cxx b/game_re/gh_stub/r3_module2_init.cxx new file mode 100644 index 00000000..ccc7b189 --- /dev/null +++ b/game_re/gh_stub/r3_module2_init.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00442cc0 +// r3_module2_init +extern "C" undefined r3_module2_init(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_module2_init"); +} diff --git a/game_re/gh_stub/r3_module4_init.cxx b/game_re/gh_stub/r3_module4_init.cxx new file mode 100644 index 00000000..81804f03 --- /dev/null +++ b/game_re/gh_stub/r3_module4_init.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00449660 +// r3_module4_init +extern "C" undefined r3_module4_init(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_module4_init"); +} diff --git a/game_re/gh_stub/r3_module5_init.cxx b/game_re/gh_stub/r3_module5_init.cxx new file mode 100644 index 00000000..2d3d8aa7 --- /dev/null +++ b/game_re/gh_stub/r3_module5_init.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0045d2c0 +// r3_module5_init +extern "C" undefined r3_module5_init(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_module5_init"); +} diff --git a/game_re/gh_stub/r3_module8_init.cxx b/game_re/gh_stub/r3_module8_init.cxx new file mode 100644 index 00000000..b8791ad1 --- /dev/null +++ b/game_re/gh_stub/r3_module8_init.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 004fa430 +// r3_module8_init +extern "C" undefined r3_module8_init(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_module8_init"); +} diff --git a/game_re/gh_stub/r3_module9_init.cxx b/game_re/gh_stub/r3_module9_init.cxx new file mode 100644 index 00000000..3a616502 --- /dev/null +++ b/game_re/gh_stub/r3_module9_init.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00500570 +// r3_module9_init +extern "C" undefined r3_module9_init(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_module9_init"); +} diff --git a/game_re/gh_stub/r3_set_videos_path.cxx b/game_re/gh_stub/r3_set_videos_path.cxx new file mode 100644 index 00000000..b7f563ed --- /dev/null +++ b/game_re/gh_stub/r3_set_videos_path.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0055a9e0 +// r3_set_videos_path +extern "C" undefined r3_set_videos_path(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: r3_set_videos_path"); +} diff --git a/game_re/gh_stub/r3_set_window_wh.cxx b/game_re/gh_stub/r3_set_window_wh.cxx index 3f6e96fb..c65df4e8 100644 --- a/game_re/gh_stub/r3_set_window_wh.cxx +++ b/game_re/gh_stub/r3_set_window_wh.cxx @@ -10,5 +10,5 @@ // r3_set_window_wh extern "C" void r3_set_window_wh(undefined4 param_1, undefined4 param_2) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: r3_set_window_wh"); + throw GHStubException("Function not implemented: r3_set_window_wh"); } diff --git a/game_re/gh_stub/r3_wait_for_dvd.cxx b/game_re/gh_stub/r3_wait_for_dvd.cxx index 64295449..9285781a 100644 --- a/game_re/gh_stub/r3_wait_for_dvd.cxx +++ b/game_re/gh_stub/r3_wait_for_dvd.cxx @@ -10,5 +10,5 @@ // r3_wait_for_dvd extern "C" undefined r3_wait_for_dvd(char * param_1, char * param_2, undefined4 param_3) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: r3_wait_for_dvd"); + throw GHStubException("Function not implemented: r3_wait_for_dvd"); } diff --git a/game_re/gh_stub/set_DLL_string.cxx b/game_re/gh_stub/set_DLL_string.cxx new file mode 100644 index 00000000..0c01ad1f --- /dev/null +++ b/game_re/gh_stub/set_DLL_string.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0055a8a0 +// set_DLL_string +extern "C" undefined set_DLL_string(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: set_DLL_string"); +} diff --git a/game_re/gh_stub/set_unk.cxx b/game_re/gh_stub/set_unk.cxx index 09949ad8..fb64827c 100644 --- a/game_re/gh_stub/set_unk.cxx +++ b/game_re/gh_stub/set_unk.cxx @@ -10,5 +10,5 @@ // set_unk extern "C" void set_unk(HWND wnd) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: set_unk"); + throw GHStubException("Function not implemented: set_unk"); } diff --git a/game_re/gh_stub/set_world_levels_path.cxx b/game_re/gh_stub/set_world_levels_path.cxx new file mode 100644 index 00000000..02b22124 --- /dev/null +++ b/game_re/gh_stub/set_world_levels_path.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 0055aa30 +// set_world_levels_path +extern "C" undefined set_world_levels_path(undefined4 param_1) { + // TODO: Implement this function + throw GHStubException("Function not implemented: set_world_levels_path"); +} diff --git a/game_re/gh_stub/spawnThread.cxx b/game_re/gh_stub/spawnThread.cxx index 5e463a41..7bd38be7 100644 --- a/game_re/gh_stub/spawnThread.cxx +++ b/game_re/gh_stub/spawnThread.cxx @@ -10,5 +10,5 @@ // spawnThread extern "C" undefined spawnThread(void) { // TODO: Implement this function - throw std::runtime_error("Function not implemented: spawnThread"); + throw GHStubException("Function not implemented: spawnThread"); } diff --git a/game_re/gh_stub/thunk_FUN_00441e10.cxx b/game_re/gh_stub/thunk_FUN_00441e10.cxx new file mode 100644 index 00000000..5bc0d471 --- /dev/null +++ b/game_re/gh_stub/thunk_FUN_00441e10.cxx @@ -0,0 +1,14 @@ +// AUTO-GENERATED FILE!!!! +// This function has yet to be decompiled using 'Dump Current Function' in ghidra +// with possible manualy fixes + +#include +#include +#include + +// 00444e80 +// thunk_FUN_00441e10 +extern "C" undefined thunk_FUN_00441e10(void) { + // TODO: Implement this function + throw GHStubException("Function not implemented: thunk_FUN_00441e10"); +} diff --git a/game_re/gh_types.h b/game_re/gh_types.h index e127d2ee..af5c509f 100644 --- a/game_re/gh_types.h +++ b/game_re/gh_types.h @@ -629,7 +629,7 @@ typedef struct LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn LST2_tdstAnch typedef struct LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn, *PLST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn; -typedef struct HIE_tdstSuperObject HIE_tdstSuperObject, *PHIE_tdstSuperObject; +typedef struct HIE_tdstSuperObject_ HIE_tdstSuperObject_, *PHIE_tdstSuperObject_; typedef struct GAM_tdstLanguageStructure GAM_tdstLanguageStructure, *PGAM_tdstLanguageStructure; @@ -653,6 +653,10 @@ typedef struct tdstFamilyList_ tdstFamilyList_, *PtdstFamilyList_; typedef struct tdstFamilyList_ *tdxHandleToFamilyList; +typedef union HIE_tduLinkedObject HIE_tduLinkedObject, *PHIE_tduLinkedObject; + +typedef struct POS_stCompletePosition *POS_tdxHandleToPosition; + typedef struct MTH3D_tdstMatrix_ MTH3D_tdstMatrix_, *PMTH3D_tdstMatrix_; typedef struct MTH3D_tdstMatrix_ MTH3D_tdstMatrix; @@ -662,9 +666,6 @@ struct GLI_tdstSpecificAttributesFor3D { float xNear; }; -struct LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn { -}; - struct LST2_tdstAnchorTotdxHandleToFamilyListDyn { tdxHandleToFamilyList hFirstElementDyn; tdxHandleToFamilyList hLastElementDyn; @@ -677,25 +678,6 @@ struct LST2_tdstAnchorTotdxHandleToNodeCameraDyn { struct LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn { }; -struct MTH3D_tdstVector_ { - float xX; - float xY; - 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; @@ -747,6 +729,28 @@ struct GLD_tdstViewportAttributes { GLD_tdhViewport hViewport; }; +struct MTH3D_tdstVector_ { + float xX; + float xY; + 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 LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn { +}; + struct GAM_tdstEngineStructure { GAM_tdeEngineMode eEngineMode; char szLevelName[30]; @@ -770,9 +774,9 @@ struct GAM_tdstEngineStructure { 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 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; @@ -813,20 +817,41 @@ struct GLI_tdstCamera_ { float xRatio; }; +union HIE_tduLinkedObject { + struct HIE_tdstSuperObject_ *p_stSuperObject; + void *p_Void; +}; + +struct HIE_tdstSuperObject_ { + ulong ulTypeOfLinkedObject; + union HIE_tduLinkedObject hLinkedObject; + struct HIE_tdstSuperObject_ *hFirstElementDyn; + struct HIE_tdstSuperObject_ *hLastElementDyn; + long lNumberOfElementsDyn; + struct HIE_tdstSuperObject_ *hNextBrotherDyn; + struct HIE_tdstSuperObject_ *hPrevBrotherDyn; + struct HIE_tdstSuperObject_ *hFatherDyn; + POS_tdxHandleToPosition hLocalMatrix; + POS_tdxHandleToPosition hGlobalMatrix; + long lLastComputeFrame; + long lDrawModeMask; + ulong ulFlags; + void *hBoundingVolume; + float fTransparenceLevel; + MTH3D_tdstVector stSemiLookAtVector; +}; + 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; + struct HIE_tdstSuperObject_ *hCamera; + struct HIE_tdstSuperObject_ *hTempCamera; GLI_tdstCamera *p_stCamera; ACP_tdxBool bValid; }; @@ -991,36 +1016,6 @@ struct GMA_tdstEngineEndStructure { 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; - struct HIE_tdstSuperObject_ *hFirstElementDyn; - struct HIE_tdstSuperObject_ *hLastElementDyn; - long lNumberOfElementsDyn; - struct HIE_tdstSuperObject_ *hNextBrotherDyn; - struct HIE_tdstSuperObject_ *hPrevBrotherDyn; - struct HIE_tdstSuperObject_ *hFatherDyn; - POS_tdxHandleToPosition hLocalMatrix; - POS_tdxHandleToPosition hGlobalMatrix; - long lLastComputeFrame; - long lDrawModeMask; - ulong ulFlags; - void *hBoundingVolume; - float fTransparenceLevel; - MTH3D_tdstVector stSemiLookAtVector; -}; - typedef struct levelFixStruct levelFixStruct, *PlevelFixStruct; typedef unsigned char byte; @@ -1274,6 +1269,40 @@ struct LST2_tdstAnchorTotdxHandleToTransitionSLk { struct tdstTransition_ { }; +typedef struct m7_init_struct m7_init_struct, *Pm7_init_struct; + +typedef unsigned int dword; +typedef unsigned char undefined1; +struct m7_init_struct { + dword field0_0x0; + dword field1_0x4; + byte field2_0x8; + byte field3_0x9; + byte field4_0xa; + byte field5_0xb; + byte field6_0xc; + byte field7_0xd; + byte field8_0xe; + byte field9_0xf; + byte field10_0x10; + byte field11_0x11; + undefined1 field12_0x12; + byte field13_0x13; + byte field14_0x14; + byte field15_0x15; + byte field16_0x16; + byte field17_0x17; + byte field18_0x18; +}; + +typedef struct mod1_ptrs mod1_ptrs, *Pmod1_ptrs; + +struct mod1_ptrs { + pointer field0_0x0; + pointer field1_0x4; + pointer field2_0x8; +}; + typedef struct r3_astruct_2 r3_astruct_2, *Pr3_astruct_2; struct r3_astruct_2 { @@ -1695,9 +1724,9 @@ struct tdstBlockInfo_ { char *p_cMaxMem; }; -typedef struct tdstBlockInfoPriv_ tdstBlockInfoPriv_, *PtdstBlockInfoPriv_; +typedef struct tdstBlockInfoPriv tdstBlockInfoPriv, *PtdstBlockInfoPriv; -struct tdstBlockInfoPriv_ { +struct tdstBlockInfoPriv { char *p_cBeginBlock; char *p_cEndBlock; char *p_cFirstFree; @@ -1736,9 +1765,9 @@ typedef struct tdstCsaList_ tdstCsaList_, *PtdstCsaList_; struct tdstCsaList_ { }; -typedef struct tdstCurrentModeInfo_ tdstCurrentModeInfo_, *PtdstCurrentModeInfo_; +typedef struct tdstCurrentModeInfo tdstCurrentModeInfo, *PtdstCurrentModeInfo; -struct tdstCurrentModeInfo_ { +struct tdstCurrentModeInfo { uchar ucModuleId; uchar ucMode; void *p_vTdstBlockInfoOrTdstDynInfo; @@ -1822,7 +1851,6 @@ struct tdstInformationHeaderOfBlockWithoutFree_ { typedef struct tdstLastErrorInfo tdstLastErrorInfo, *PtdstLastErrorInfo; typedef unsigned short word; -typedef unsigned int dword; struct tdstLastErrorInfo { word lastErr; char ucLastFailedModuleId; diff --git a/game_re/globals.txt b/game_re/globals.txt index f596c6e4..8b4589f1 100644 --- a/game_re/globals.txt +++ b/game_re/globals.txt @@ -51,12 +51,25 @@ 005b68d0 || s__R3_Setup_DX8_exe_005b68d0 || / || string 005b68e4 || s_Adapter_005b68e4 || / || string 005b68ec || fopen_mode_r_text || / || TerminatedCString -005b68f0 || lpAppName_005b68f0 || / || TerminatedCString +005b68f0 || lpAppName_005b68f0 || / || char[8] 005b68f8 || s_Directory_005b68f8 || / || string 005b6904 || s_None || / || TerminatedCString 005b690c || s_UbiSoft_Ubi_ini || / || TerminatedCString -005bd29c || DAT_005bd29c || / || R3ModuleId -005bd58c || r3_module_id_ff || / || R3ModuleId +005bad58 || s_percent_d || / || undefined +005bd29c || g_errMod0 || / || byte +005bd4cc || g_errMod1 || / || byte +005bd58c || g_errModMmg || / || byte +005bd72c || s_Videos_005bd72c || / || string +005bd9e8 || s__World_Sound_005bd9e8 || / || string +005bd9f8 || s__Options_005bd9f8 || / || string +005bda04 || s__Vignette_005bda04 || / || string +005bda10 || s__sBIN__s_005bda10 || / || string +005bda1c || s__SaveGame_005bda1c || / || string +005bda28 || s__World_Levels_005bda28 || / || string +005bda38 || s_World || / || undefined +005bda3c || DAT_005bda3c || / || undefined +005bda3e || DAT_005bda3e || / || char +005bda40 || s_DLL || / || undefined 005bda4c || s_UbiSoft_bmp_005bda4c || / || string 005bdfd8 || s_R3_DVD_005bdfd8 || / || string 005be0ec || s_R3_DVD_005be0ec || / || string @@ -65,6 +78,27 @@ 005be198 || s_Impossibile_trovare_il_DVD____s_005be198 || / || string 005be1ec || DAT_005be1ec || / || undefined 005be238 || s_Impossible_de_trouver_le_DVD_____005be238 || / || string +005be304 || s_Yes || / || pointer +005be308 || s_SingleProcessor_005be308 || / || string +005be318 || lpDefault_005be318 || / || undefined +005be31c || s_StartDirectory_005be31c || / || string +005be32c || s_Gamedata_005be32c || / || string +005be338 || s_Camera_VerticalAxis_005be338 || / || string +005be34c || s_Camera_HorizontalAxis_005be34c || / || string +005be364 || s_Complete_005be364 || / || string +005be370 || lpDefault_005be370 || / || undefined +005be374 || s_SoundOnHD_005be374 || / || string +005be380 || lpDefault_005be380 || / || undefined +005be384 || s_TexturesMem_005be384 || / || string +005be390 || s_Agp || / || pointer +005be394 || s_Outline_005be394 || / || string +005be39c || s_StaticShadows_005be39c || / || string +005be3ac || s_DynamicShadows_005be3ac || / || string +005be3bc || s_TriLinear_005be3bc || / || string +005be3c8 || s_Tnl || / || pointer +005be3cc || s_TexturesCompressed_005be3cc || / || string +005be3e0 || s_GLI_Mode_005be3e0 || / || string +005be3ec || g_default_display_mode || / || string 005be400 || s_Please_insert_the_DVD_in_the_DVD_005be400 || / || string 005be438 || s_Bitte_legen_Sie_DVD_von_Rayman_3_005be438 || / || string 005be484 || s_Inserisci_il_DVD_di_Rayman_3_nel_005be484 || / || string @@ -73,18 +107,37 @@ 005be540 || s_fmt_c_colon_s || / || string 005be548 || s_r3_program_files || / || string 005be568 || PTR_DAT_005be568 || / || undefined * +005be6f0 || g_errModFirst || / || byte +005bf004 || DAT_005bf004 || / || word +005bf008 || DAT_005bf008 || / || word +005bf6d8 || s__08X__04X__04X__02X_02X__02X_02X_005bf6d8 || / || string +005bf740 || r3_textureMemMode || / || dword +005bf744 || s_Agp8_005bf744 || / || TerminatedCString +005bf74c || s_Agp4_005bf74c || / || TerminatedCString +005bf754 || s_Vram8_005bf754 || / || string +005bf75c || s_Vram4_005bf75c || / || string +005bf764 || s_VramPlus_005bf764 || / || string +005bf76c || s_Vram || / || TerminatedCString +005c069c || g_errMod7 || / || byte 005c0f20 || DAT_005c0f20 || / || undefined2 005c0f22 || DAT_005c0f22 || / || char +005c67c8 || g_config_camera_hor_axis || /windef.h || UINT +005c67cc || g_config_camera_ver_axis || /windef.h || UINT 005cf964 || g_gameHWND1 || /windef.h || HWND 005cf96c || lpDefault_005cf96c || / || long -005d2638 || g_ucErmNbOfModule || / || R3ModuleId +005d2638 || g_ucErmNbOfModule || / || byte +005d2644 || g_mod1_ptrs || / || mod1_ptrs 005d2660 || DAT_005d2660 || / || undefined4 005d26a8 || DAT_005d26a8 || / || undefined1 005d27b0 || lpVolumeNameBuffer_005d27b0 || / || undefined 005d28b6 || r3_main_data_005d28b6 || / || r3_main_data +005d29bc || g_soundOnHD || / || undefined +005d29c0 || g_complete || / || undefined 005e6b00 || DAT_005e6b00 || / || int 005e6b04 || DAT_005e6b04 || / || undefined 005f5e24 || DAT_005f5e24 || / || int +0063bec0 || m7_unk1 || / || byte +0063bec4 || g_m7_criticalSectionInitialized || / || char 0077d0a4 || INT_0077d0a4 || / || int 0077d0a8 || g_runMaximized || / || int 0077d0b0 || g_engineShouldRun || /WinDef.h || WPARAM @@ -103,13 +156,20 @@ 0077d4d8 || DWORD_0077d4d8 || / || dword 0077d4e0 || g_appCmdLine || / || char[256] 0077d5e0 || s_wndStrRestoring || / || char[256] +00781660 || g_gameDataBinPath || / || char[64] +00782086 || DAT_00782086 || / || undefined +00782088 || lpBuffer_00782088 || / || char[260] 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] +0078faa0 || g_MmgCriticalSection || / || undefined 0078fac0 || g_a_ucBlocksNbInModule || / || char[255] +0078fbc0 || g_stGeneralChannelInfo || /mmg.h || tdstGeneralChannelsInfo_ +0078fbc8 || g_d_stCurrentModeInfo || /mmg.h || tdstCurrentModeInfo * 007d7d84 || DAT_007d7d84 || / || undefined +007d7dc0 || g_r3_engine || /engine.h || GAM_tdstEngineStructure 007d7ea8 || DAT_007d7ea8 || / || undefined2 007d80f8 || DAT_007d80f8 || / || short 007d83a8 || DAT_007d83a8 || / || undefined4 @@ -118,7 +178,28 @@ 007d98fd || DAT_007d98fd || / || undefined 007d9928 || DAT_007d9928 || / || undefined 007d9cc4 || DAT_007d9cc4 || / || uint +007d9df0 || g_config_unused0 || / || undefined 007d9e40 || lpSystemTime_007d9e40 || / || undefined 007d9e60 || DAT_007d9e60 || / || undefined4 +007d9e68 || DAT_007d9e68 || / || undefined2 +007d9e6a || WORD_007d9e6a || / || word +007d9e6c || WORD_007d9e6c || / || word +007d9e6e || WORD_007d9e6e || / || word 007d9e70 || lpRootPathName_007d9e70 || / || undefined 007d9e71 || UNK_007d9e71 || / || undefined3 +007edd40 || g_GLI_fullscreen || / || undefined +007edd44 || g_GLI_width0 || / || int +007edd48 || g_GLI_height0 || / || int +007edd4c || g_GLI_bitdepth0 || / || int +007edd50 || g_GLI_fullscreen1 || / || undefined1 +007edd54 || g_GLI_width1 || / || int +007edd58 || g_GLI_height1 || / || int +007edd5c || g_GLI_bitdepth1 || / || int +007edd60 || g_GLI_adapter || /windef.h || UINT +007edd64 || g_GLI_tnl || / || undefined1 +007edd65 || g_config_tex_compressed || / || undefined1 +007edd66 || g_GLI_trilinear || / || undefined1 +007edd70 || g_GLI_identifier || /guiddef.h || GUID +007edd80 || g_GLI_mode_float || / || float +007edde0 || m7_init_struct_007edde0 || / || m7_init_struct +007ede20 || g_mod7CriticalSection || / || undefined diff --git a/game_re/r3/binders/auto.h b/game_re/r3/binders/auto.h index 4de69741..b0b3ec95 100644 --- a/game_re/r3/binders/auto.h +++ b/game_re/r3/binders/auto.h @@ -99,4 +99,8 @@ template inline constexpr uint16_t SUB42(T0 a, size_t b) { return cc_type_t(a) >> (b * 8); } +constexpr byte R3ModId_not_initialized = 0xff; + +#include "stubexcept.h" + #endif /* B8D59B54_1674_4C0F_AA2C_611385FF5D03 */ diff --git a/game_re/r3/binders/base.h b/game_re/r3/binders/base.h index 70289e0d..518500fc 100644 --- a/game_re/r3/binders/base.h +++ b/game_re/r3/binders/base.h @@ -36,12 +36,4 @@ typedef void *pointer; typedef char *TerminatedCString; typedef char *string; -// Can not export enums for some reason -enum R3ModuleId : uint8_t { - R3ModId_unk = 0x00, - R3ModId_not_initialized = 0xff, -}; - - - #endif /* A523F6DB_0645_4DEB_8AEB_3792CB732B49 */ diff --git a/game_re/r3/binders/stubexcept.h b/game_re/r3/binders/stubexcept.h new file mode 100644 index 00000000..c5793dd0 --- /dev/null +++ b/game_re/r3/binders/stubexcept.h @@ -0,0 +1,10 @@ +#ifndef AE625BF8_B0F9_452E_8772_8819F311CB57 +#define AE625BF8_B0F9_452E_8772_8819F311CB57 + +#include + +struct GHStubException : public std::exception { + GHStubException(const char *msg); +}; + +#endif /* AE625BF8_B0F9_452E_8772_8819F311CB57 */ diff --git a/game_re/r3/config/static.hpp b/game_re/r3/config/static.hpp index 898919c3..1c66f793 100644 --- a/game_re/r3/config/static.hpp +++ b/game_re/r3/config/static.hpp @@ -5,24 +5,52 @@ #include struct R3Config { - std::string gameDataDir; - std::string gfxAdapter; - std::string gfxIdentifier; - std::string gfxGliMode; + // The root directory of the game, containing the executable + std::string gameRootDir; + // Language code of the game "English", etc. std::string language; + // The adapter to use + int gfxAdapter{}; + // The UUID of the device to use + std::string gfxIdentifier; + // Game default is "1 - 640 x 480 x 16" + // first digit 1 is fullscreen, 0 is windowed + // second digit is width + // third digit is height + // fourth digit is bpp + std::string gfxGliMode; + // Any of: + // Agp8 + // Agp4 + // Vram8 + // Vram4 + // Vram+ + // Vram + std::string gfxTexturesMem; + bool gfxTexturesCompressed{}; + bool gfxTnl{}; + bool gfxTrilinear{}; + int cameraHorizontalAxis = 2; + int cameraVerticalAxis = 5; + std::string gameDataBinPath; }; inline R3Config createDefaultConfig() { R3Config config{}; #ifdef R3_GAME_DATA_DIR - config.gameDataDir = R3_GAME_DATA_DIR; + config.gameRootDir = R3_GAME_DATA_DIR; #endif // Windowed 720p - config.gfxGliMode = "0 - 1200 x 720 - 16"; - config.gfxAdapter = "D3D"; + config.gfxGliMode = "0 - 1200 x 720 x 16"; + config.gfxAdapter = 0; config.gfxIdentifier = "00000000-0000-0000-0000-000000000000"; config.language = s_English_005b684c; + config.gfxTexturesMem = "Vram+"; + config.gfxTrilinear = true; + config.gfxTnl = true; + config.gfxTexturesCompressed = false; + config.gameDataBinPath = "Gamedatabin"; return config; } diff --git a/game_re/r3/gfx.hpp b/game_re/r3/gfx.hpp new file mode 100644 index 00000000..f7ec196d --- /dev/null +++ b/game_re/r3/gfx.hpp @@ -0,0 +1,4 @@ +#ifndef E50D740C_6BA6_42B1_83FF_2D235ADFA276 +#define E50D740C_6BA6_42B1_83FF_2D235ADFA276 + +#endif /* E50D740C_6BA6_42B1_83FF_2D235ADFA276 */ diff --git a/game_re/r3/main.cpp b/game_re/r3/main.cpp index ba288042..4a54535d 100644 --- a/game_re/r3/main.cpp +++ b/game_re/r3/main.cpp @@ -3,10 +3,18 @@ #include #include #include +#include + +// Error reporting and such +extern "C" void r3_noop(void*, void*) {} extern "C" int r3_main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR *cmdline, int showCmd); +GHStubException::GHStubException(const char *msg) : std::exception(msg) { + SPDLOG_ERROR("{}", msg); +} + int main(int argc, char **argv) { try { gh_init_data_segment(); diff --git a/scripts/re3lib/FunctionDumper.java b/scripts/re3lib/FunctionDumper.java index ea109d68..b419b4f8 100644 --- a/scripts/re3lib/FunctionDumper.java +++ b/scripts/re3lib/FunctionDumper.java @@ -296,7 +296,7 @@ public class FunctionDumper { writer2.println("extern \"C\" " + externalFunction.getSignature().getPrototypeString(false) + " {"); writer2.println(" // TODO: Implement this function"); writer2 - .println(" throw std::runtime_error(\"Function not implemented: " + externalFunction.getName() + "\");"); + .println(" throw GHStubException(\"Function not implemented: " + externalFunction.getName() + "\");"); writer2.println("}"); } diff --git a/scripts/re3lib/TypeDumper.java b/scripts/re3lib/TypeDumper.java index f9d27d3a..6dc25fdf 100644 --- a/scripts/re3lib/TypeDumper.java +++ b/scripts/re3lib/TypeDumper.java @@ -22,7 +22,7 @@ public class TypeDumper { public TypeDumper(GhidraScript script) { this.script = script; currentProgram = script.getCurrentProgram(); - RecompileConfig.INSTANCE = new RecompileConfig(script); + RecompileConfig.INSTANCE = new RecompileConfig(script); } public void run() throws Exception { @@ -50,8 +50,9 @@ public class TypeDumper { if (dt instanceof Structure || dt instanceof TypedefDataType || dt instanceof EnumDataType) { if (typeBlacklist.contains(dt.getDisplayName())) continue; - // println("Adding: " + dt.getDisplayName() + " - " + - // dt.getClass().getSimpleName()); + script.println("Adding: " + dt.getDisplayName() + " - " + + dt.getClass().getSimpleName()); + filteredTypes.add(dt); } }