User panel stuff on forum
  3 posts on 1 page  1
Client Talk
2008-10-23, 12:39
Member
45 posts

Registered:
Aug 2007
Hi,

Just thought, it might be worth noting that all current ezquake (1.9) versions no longer work with older windows versions (like windows me, windows 98...). This is true for the binaries one can officially download, but also if you compile the source code with e.g. Visual Studio 2005 (which in contrast to VS 2008 normally still supports older windows versions).

By digging around in ezquake's SVN sources I found that since February 1 2008 support for older windows versions is broken!

And this is what the info about revision 3427 of host.c tells us:
"Revision 3427 - (view) (download) - [selected]
Modified Fri Feb 1 23:36:29 2008 UTC (8 months, 3 weeks ago) by cokeman1982
File length: 20062 byte(s)
Diff to previous 3224
BUGFIX: Support showing more than 4Gb of memory (Thanks phrosty)"

This support for memory above 4GB is responsible for the failure to run under older windows versions!

By now calling "GlobalMemoryStatusEx" instead of the former "GlobalMemoryStatus" the ezquake application can no longer run under e.g. Windows Millennium (error message (roughly, don't remember the exact wording): The exe file is linked to missing export KERNEL32.DLL:GlobalMemoryStatusEx).


Workaround:
I hexedited the binary I had compiled when under Windows XP (with Visual Studio 2005) and zeroed out the letters EX in GlobalMemoryStatusEx; I would not have expected such a simple workaround, but hey, it works!
The hacked binary DOES run under Windows ME, and so far, after longer testing, no problems!

The cleaner solution, of course, would be to edit host.c in the source code and then compile a new binary with VS 2005.


Hopefully, all those who find this boring just skip this post - but I suppose, there are still some folks around with older windows versions and for whom this might be interesting. Personally, I mostly use Linux, but sometimes, and when time is scarce, a super quick bootup of windows ME is a nice option, and it only takes very little time to run ezquake this way.


cheers
sempron


P.S.
Why not just build in a simple OS check which determines the choice between GlobalMemoryStatusEx and GlobalMemoryStatus?
Another solution might be: using the linker option /LARGEADDRESSAWARE
2008-10-23, 14:33
Member
75 posts

Registered:
May 2006
Windows ME? Really?.......

Anyway, I made a fix for this by first checking if GlobalMemoryStatusEx exists and otherwise using GlobalMemoryStatus. I have no way of testing this on Win9x myself though.

The code:
http://ezquake.svn.sourceforge.net/viewvc/ezquake?view=rev&revision=3804
2008-10-23, 16:31
Member
45 posts

Registered:
Aug 2007
Cokeman wrote:
I have no way of testing this on Win9x myself though.[/url]

Revision 3804 (and now also 3805) of host.c compile okay.

I just did some preliminary testing under Windows ME, and the program appears to work fine.


sempron
  3 posts on 1 page  1