Page 1 of 1

TTDPatch on Win xp x64

Posted: 29 May 2005 09:36
by Stan Kondak
Hi Josef,

just I wanted to test the TTDPatch on Win XP x64, but it crashes.
I adjusted the compatibility to windows 2000, XP and Win98, all the same - the game crashes every time :-(

Stan
--
Opera M2/8.01

Re: TTDPatch on Win xp x64

Posted: 29 May 2005 14:24
by Patchman
On Sun, 29 May 2005 11:36:30 +0200, Stan Kondak wrote:
Hi Josef,

just I wanted to test the TTDPatch on Win XP x64, but it crashes.
I adjusted the compatibility to windows 2000, XP and Win98, all the same - the game crashes every time :-(
At what point does it crash? Does it make a crash log?

--
Josef Drexler | http://jdrexler.com/home/
---------------------------------+---------------------------------------
Please help Conserve Gravity | Email address is *valid*.
Use tape&glue, no paperweights | Don't remove the "nospam" part.

Re: TTDPatch on Win xp x64

Posted: 29 May 2005 14:29
by orudge
just I wanted to test the TTDPatch on Win XP x64, but it crashes.
I adjusted the compatibility to windows 2000, XP and Win98, all the same -
the game crashes every time :-(
I tested it and I think it worked. Or maybe that was OpenTTD, I can't
remember for sure... will test it again later. ;-)

--
Owen Rudge
http://www.owenrudge.net/

Re: TTDPatch on Win xp x64

Posted: 29 May 2005 14:56
by Stan Kondak
Josef Drexler wrote on Sun, 29 May 2005 16:24:04 +0200:
On Sun, 29 May 2005 11:36:30 +0200, Stan Kondak wrote:
just I wanted to test the TTDPatch on Win XP x64, but it crashes.

At what point does it crash? Does it make a crash log?
It crashes just at the beginning. The CRASH000.TXT in attachment

Stan

--
Opera M2/8.01

Re: TTDPatch on Win xp x64

Posted: 29 May 2005 15:00
by Stan Kondak
Owen Rudge wrote on Sun, 29 May 2005 16:29:21 +0200:
just I wanted to test the TTDPatch on Win XP x64, but it crashes.

I tested it and I think it worked. Or maybe that was OpenTTD, I can't remember for sure... will test it again later. ;-)
OpenTTD works very well on win x64 :-)

Stan

--
Opera M2/8.01

Re: TTDPatch on Win xp x64

Posted: 29 May 2005 15:48
by Patchman
On Sun, 29 May 2005 16:56:18 +0200, Stan Kondak wrote:
Josef Drexler wrote on Sun, 29 May 2005 16:24:04 +0200:

On Sun, 29 May 2005 11:36:30 +0200, Stan Kondak wrote:
just I wanted to test the TTDPatch on Win XP x64, but it crashes.

At what point does it crash? Does it make a crash log?

It crashes just at the beginning. The CRASH000.TXT in attachment
Ah, that's actually a crash in TTD. Somehow XP64 doesn't seem to allow
setting the FS segment register, or it fails in other ways. TTD needs
this to display its graphics, however.

That's not something I can fix. Someone who has XP64 might be able to,
though.

--
Josef Drexler | http://jdrexler.com/home/
---------------------------------+---------------------------------------
Please help Conserve Gravity | Email address is *valid*.
Walk with a light step. | Don't remove the "nospam" part.

Re: TTDPatch on Win xp x64

Posted: 29 May 2005 17:23
by Patchman
On Sun, 29 May 2005 16:56:18 +0200, Stan Kondak wrote:
It crashes just at the beginning. The CRASH000.TXT in attachment
One possible way to fix this should be to remove all FS prefixes in the
game, they aren't really needed.

If you are comfortable using a hex editor, you can open gamegfx.exe (make
a backup first!), find all occurences of "64 8A 04 18" and change the "64"
into "90" for all of them (everything in hex here).

Then delete ttdloadw.ovl to make sure these changes get imported there.
That should theoretically fix the problem.

--
Josef Drexler | http://jdrexler.com/home/
---------------------------------+---------------------------------------
Please help Conserve Gravity | Email address is *valid*.
Play Chess, not Basketball. | Don't remove the "nospam" part.

Re: TTDPatch on Win xp x64

Posted: 29 May 2005 18:22
by Patchman
On Sun, 29 May 2005 13:22:25 -0400, I wrote:
On Sun, 29 May 2005 16:56:18 +0200, Stan Kondak wrote:

It crashes just at the beginning. The CRASH000.TXT in attachment

If you are comfortable using a hex editor, you can open gamegfx.exe (make
a backup first!), find all occurences of "64 8A 04 18" and change the "64"
into "90" for all of them (everything in hex here).
By the way, if you aren't comfortable with a hex editor, let me know and I
can easily do this and send you the modified file. I could add this to
the patch too, but first I'd need to confirm that it actually works, so
I'd appreciate if you could be the guinea pig :)

--
Josef Drexler | http://jdrexler.com/home/
---------------------------------+---------------------------------------
Please help Conserve Gravity | Email address is *valid*.
Give up downhill skiing. | Don't remove the "nospam" part.

Re: TTDPatch on Win xp x64

Posted: 29 May 2005 18:48
by Stan Kondak
Josef Drexler wrote on Sun, 29 May 2005 19:23:02 +0200:
If you are comfortable using a hex editor, you can open gamegfx.exe (make
a backup first!), find all occurences of "64 8A 04 18" and change the "64"
into "90" for all of them (everything in hex here).
done - 277 times replaced given String
That should theoretically fix the problem.
The Game works now - thanks ;-)

Stan

--
Opera M2/8.01

Re: TTDPatch on Win xp x64

Posted: 30 May 2005 14:21
by Marcin Grzegorczyk
Josef Drexler wrote:
[...]
Ah, that's actually a crash in TTD. Somehow XP64 doesn't seem to allow
setting the FS segment register, or it fails in other ways.
As you may know, under Win32 the FS register points to a special segment
which contains a structure called Thread Information Block. This is
used, among others, for structured exception handling.

AFAIK when a 64-bit processor is running in the IA-32e compatibility
mode, the FS and GS registers are treated somewhat different to the
other segment registers. Might have something to do with the crash.
(Perhaps XP64 somehow protects the FS register to ensure that IA-32
programs don't mess it up.)
--
Marcin Grzegorczyk

Re: TTDPatch on Win xp x64

Posted: 30 May 2005 22:43
by Patchman
On Mon, 30 May 2005 16:20:23 +0200, Marcin Grzegorczyk wrote:
Josef Drexler wrote:
[...]
Ah, that's actually a crash in TTD. Somehow XP64 doesn't seem to allow
setting the FS segment register, or it fails in other ways.

As you may know, under Win32 the FS register points to a special segment
which contains a structure called Thread Information Block. This is
used, among others, for structured exception handling.

AFAIK when a 64-bit processor is running in the IA-32e compatibility
mode, the FS and GS registers are treated somewhat different to the
other segment registers. Might have something to do with the crash.
(Perhaps XP64 somehow protects the FS register to ensure that IA-32
programs don't mess it up.)
It's either that, or it doesn't restore it properly after a mode switch
from 64 bit mode. Perhaps it always restores it to the TIB instead of the
value it had before.

Either way, just removing all FS prefix instructions fixed the problem, so
I've integrated that into alpha 51 (as part of the win2k switch).

--
Josef Drexler | http://jdrexler.com/home/
---------------------------------+---------------------------------------
Please help Conserve Gravity | Email address is *valid*.
Give up downhill skiing. | Don't remove the "nospam" part.