![]() Here's a snippet of how this installer script looks like - it has to be decompiled from the setup.inx file using an InstallShield script decompiler tool, I've used SID ( sexy installshield decompiler by sn00pee): InstallScript) file, which can be found on the disc as a file called setup.inx. The installer is instructed to do these checks via its compiled InstallShield script (aka. And even if they did - and could have used the more future-proof API ( GlobalMemoryStatusEx) which at the time was already available - they most probably opted for this one instead, because the newer API is not supported on Windows 95 and 98. The game developers most probably didn't expect that the game would be run on systems using more than 4GiB of memory. ![]() The installer script was coded in a way that it unfortunately doesn't recognize when it has received an obviously bogus negative number for the available RAM. ![]() In turn, when the installer script receives this negative number from Windows and then compares it to 64MB (as that is the minimum memory requirement for the game), it will find that this negative amount of memory is less than that and will abort installation with the "There is not enough memory available to install this application. So if you have more RAM than 4GiB, this API will return a negative number due to integer overflow, as even Microsoft mentions in their API docs. When the game installer queries your system for how much physical RAM it has, it uses an ancient, long deprecated Windows API called GlobalMemoryStatus that basically cannot count above 4GiB due to storing the result in a 32-bit integer. Here are the technical details for anyone interested: Mine can be downloaded from the attachments or from here: (edit by Dominus: removed warez site links) Just use a modern fixed EXE to run the game.īeha_r's can be downloaded from any of these links: The corrupted memory leads to an unrecoverable crash. When the game is checking how much usable video memory you have, it corrupts the program stack due to a bug that is only triggered if you have "too much" (more than what the game devs anticipated) VRAM. You can also get my modified setup.inx from here: The installer won't care that it's not running from a disc. If you don't have the US build or insist on wanting to go through the installer procedure and allowing long-deprecated vulnerable drivers onto your system, you can just fix the installer script file ( setup.inx) itself to not abort the installation for you.įor this, I've attached the fixed setup.inx below - just copy all files from the disc to a local directory on your hard drive, replace setup.inx with the one I've provided and run the installer from there. If you have the US build of the game like I do, I recommend replacing the SafeDisc-protected SaltLake2002.exe with beha_r's or my fixed EXE so that you won't have to install the SafeDisc driver (which doesn't work on newer systems anyway and is a massive security hole) and you won't have to mount the disc to run the game. The necessary directories are Movies/, Music/, SOUNDS/, and the necessary files are FILES.IMG, COMM.OGG and SaltLake2002.exe. You can just copy the game files to your hard drive, without having to run the installer at all. Here's the very short explanation of the two problems with their quick solutions, basically TL DR:ĭue to the installer calling a very old Windows function, on systems where you have "too much" RAM (more than 4GiB), it thinks you have a negative amount of physical memory available, which is less than the minimum required 64MB, so the installer will abort. While I'm there, I figured I'd also make a post about it here for anyone who ever runs into these exact problems in the future and is interested about their root cause. When I tried installing and running the game now, I encountered exactly the same issues as you did.Īs someone who's interested in old software, disassembly and reverse engineering, I've decided to embark on a bit of a journey and try to debug and find out exactly what causes these errors on modern systems. ![]() I own an original, US copy of this game and while looking through my old CDs a few weeks ago, I wanted to take it for a spin, having played this game the last time many-many years ago. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |