I remember a long time ago trying to install some sound card drivers or utilities that refused to install on anything worse than a Pentium 90 MHz. I had an AMD K6-2 at 300 or 400, no utilities for me.
jfs - 18 04 08 - 05:22
Not to mention that equating clock-rate and CPU speed is silly. On my Core2Duo system I installed a game from a few years ago and it warned me that my CPU might not be fast enough, despite my CPU being faster than anything which was available when the game was made. :) (Since the C2D's clock-rate is lower than CPUs of the time the game was made, due to the C2D being far more efficient at calculations per clock tick.)
Leo Davidson (link) - 18 04 08 - 06:55
Oh yes, great. I have the game "Gunman Chronicles" which uses the HalfLife engine, which complains that I have -1000-something MB of RAM but it needs at least 16 (If you haven't guessed, I have 3 GB). And it does not have a "continue anyway" button. In addition there is an additional check so you can only use OpenGL when there is more than 32 MB RAM.
Now add to this a copy protection and you have a game that is unusable for 90% of users in the near future and unusable for 100% unless they take some laws not quite as seriously...
Reimar - 18 04 08 - 10:54
Its like people making their database columns like this:
they dont realize that they impose unnecessary restrictions on the user. a varchar only takes as much space as needed (plus an extra byte). the appropriate choice here would have been like varchar(50) and varchar(max). if performance would have been no concern of course nvarchar would be even better. i have also seen ridiculous restrictions on the size of textboxes or the maximum number of search results (desktop search, not websearch).
Tobias Rieper - 18 04 08 - 11:17
I have a vague memory of once having to, for similar reasons, patch an installshield script to get some program installed. I think I actually cheated and inverted the comparison because I didn't know the opcode for "NOP".
eloj - 18 04 08 - 14:46
There's a game from the Windows 98 era which on a full install required over 4GB of disk. Of course, back then the necessary APIs didn't tell you if you had over 4GB of space available (or InstallShield couldn't handle it - can't remember which). IIRC the installer put up a prompt which went something like "I can't actually work out if you've got enough space, so I'll trust you if you say Continue".
Torkell (link) - 18 04 08 - 15:28
I want a CPU with negative clock speeds, if it means it would start with a finished calculation and work backwards.
I remember a similar situation where Metal Gear Solid PC would check how much memory is available, and refuse to start if you didn't have enough. However, my running with a fixed size swapfile caused it to overflow for some reason, causing it to fail the check even when I had many times the amount it required.
StarCreator (link) - 18 04 08 - 19:12
For XP, there are boot.ini switches that tell the kernel to ignore memory in the system and can be used to work around some installation issues.
DirectX installation is also a bugfest -- I had one game that would not install on Windows 2000 because it said that I only had DirectX 0. Of course, thanks to the moronic D3DX versioning and redist scheme, we have a whole new class of DX installation problems right now....
Phaeron - 18 04 08 - 22:58
I wrote an article recently about Half-Life engine and memory size detection error:
You might want to read it, it is pretty easy to fix. Just make a mental note that it is not only Valve to blame but Microsoft as well.
Igor Levicki (link) - 20 04 08 - 20:55
You confused the names, the author is the one written below.
I know the solution, actually mine is easier (just do mov eax, 7fffffffh instead of replacing all comparisons, 2GB is sure enough for such an old game).
But that is the solution that as I said unfortunately has some legal problems. Not that I think it will cause anyone problems, but it is still an ugly solution.
Reimar - 21 04 08 - 10:09
Some of my CPU info tools return a 16GHz+ cpu... when I have a dual core 2.1GHz.
Sometime I wonder who code it and how he did it...
Simbou - 21 04 08 - 12:51
IANAL, but I doubt you'd have to worry about patching your local copy of Half-Life to run on your own system with 2GB+ of memory. Actually, I'm surprised that Microsoft hasn't done this already with an AppCompat shim -- there might be a flag you can set in the Registry to enable memory size clamping.
In any case, my preferred solution for a problem like this is a pre-loader that hot-patches GlobalMemoryStatus() instead. It won't work if there's something loaded that checksums process memory (PunkBuster), but in that event you're pretty much screwed and can't patch anything and would have to resort to boot.ini options instead.
If you haven't done so already, you might want to let the MSDN guys know about this discrepancy... I'm told that eventually they sometimes actually do update the docs based on feedback....
Phaeron - 21 04 08 - 15:11
Avery, sorry about that name mistake, I know it is below but sometimes I get confused.
I admit your solution is simpler but mine is technically correct -- the intent of my article was education.
As for reporting, I told Larry about it on January 27th, 2008. He agreed that documentation needs clarification and that it is an appcompat issue for Windows XP x64. What he did with that piece of info is another thing. Feel free to report it if you want.
As for legal issues -- AFAIK you have the right to reverse-engineer and fix something you own in case it ceases to work after the original vendor stops providing or refuses to provide support for it.
Igor Levicki (link) - 21 04 08 - 19:46
"Thereís a game from the Windows 98 era which on a full install required over 4GB of disk. Of course, back then the necessary APIs didnít tell you if you had over 4GB of space available (or InstallShield couldnít handle it Ė canít remember which)."
It is InstallShield, because by then GetDiskFreeSpaceEx existed. And even before GetDiskFreeSpaceEx, you can multiply the results to get the full 64-bit free space. Note that versions of Windows that have GetDiskFreeSpaceEx caps the results of this multiplication to 4 GB because of installers truncating the result to 32-bit.
Yuhong Bao - 22 04 08 - 11:33