diff --git a/Core/GameEngineDevice/Source/StdDevice/Common/StdBIGFileSystem.cpp b/Core/GameEngineDevice/Source/StdDevice/Common/StdBIGFileSystem.cpp index 2470d66912..abbcfc9295 100644 --- a/Core/GameEngineDevice/Source/StdDevice/Common/StdBIGFileSystem.cpp +++ b/Core/GameEngineDevice/Source/StdDevice/Common/StdBIGFileSystem.cpp @@ -215,6 +215,16 @@ Bool StdBIGFileSystem::loadBigFilesFromDirectory(AsciiString dir, AsciiString fi Bool actuallyAdded = FALSE; FilenameListIter it = filenameList.begin(); while (it != filenameList.end()) { +#if RTS_ZEROHOUR + // TheSuperHackers @bugfix bobtista 18/11/2025 Skip duplicate INIZH.big in Data\INI to prevent CRC mismatches. + // English, Chinese, and Korean SKUs shipped with two INIZH.big files (one in Run directory, one in Run\Data\INI). + // The DeleteFile cleanup doesn't work on EA App/Origin installs because the folder is not writable, so we skip loading it instead. + if (it->endsWithNoCase("Data\\INI\\INIZH.big") || it->endsWithNoCase("Data/INI/INIZH.big")) { + it++; + continue; + } +#endif + ArchiveFile *archiveFile = openArchiveFile((*it).str()); if (archiveFile != NULL) { diff --git a/Core/GameEngineDevice/Source/Win32Device/Common/Win32BIGFileSystem.cpp b/Core/GameEngineDevice/Source/Win32Device/Common/Win32BIGFileSystem.cpp index 95f9e7ef0e..b62fd5253f 100644 --- a/Core/GameEngineDevice/Source/Win32Device/Common/Win32BIGFileSystem.cpp +++ b/Core/GameEngineDevice/Source/Win32Device/Common/Win32BIGFileSystem.cpp @@ -216,6 +216,16 @@ Bool Win32BIGFileSystem::loadBigFilesFromDirectory(AsciiString dir, AsciiString Bool actuallyAdded = FALSE; FilenameListIter it = filenameList.begin(); while (it != filenameList.end()) { +#if RTS_ZEROHOUR + // TheSuperHackers @bugfix bobtista 18/11/2025 Skip duplicate INIZH.big in Data\INI to prevent CRC mismatches. + // English, Chinese, and Korean SKUs shipped with two INIZH.big files (one in Run directory, one in Run\Data\INI). + // The DeleteFile cleanup doesn't work on EA App/Origin installs because the folder is not writable, so we skip loading it instead. + if (it->endsWithNoCase("Data\\INI\\INIZH.big") || it->endsWithNoCase("Data/INI/INIZH.big")) { + it++; + continue; + } +#endif + ArchiveFile *archiveFile = openArchiveFile((*it).str()); if (archiveFile != NULL) { diff --git a/GeneralsMD/Code/GameEngine/Source/Common/GameEngine.cpp b/GeneralsMD/Code/GameEngine/Source/Common/GameEngine.cpp index 7c7418a6a5..db78d7c55e 100644 --- a/GeneralsMD/Code/GameEngine/Source/Common/GameEngine.cpp +++ b/GeneralsMD/Code/GameEngine/Source/Common/GameEngine.cpp @@ -395,12 +395,6 @@ void GameEngine::init() // Create the low-level file system interface TheFileSystem = createFileSystem(); - //Kris: Patch 1.01 - November 17, 2003 - //I was unable to resolve the RTPatch method of deleting a shipped file. English, Chinese, and Korean - //SKU's shipped with two INIZH.big files. One properly in the Run directory and the other in Run\INI\Data. - //We need to toast the latter in order for the game to patch properly. - DeleteFile( "Data\\INI\\INIZH.big" ); - // not part of the subsystem list, because it should normally never be reset! TheNameKeyGenerator = MSGNEW("GameEngineSubsystem") NameKeyGenerator; TheNameKeyGenerator->init();