Civilization2 segment register troubles

Jukka Heinonen jhei at
Tue Nov 20 14:19:54 CST 2001

> It doesn't really *want* to, but there's some bug or unimplemented feature
> in Wine that causes it to fail to initialize a certain pointer. From what
> I recall, this pointer would be stored as extra window data using
> Get/SetWindowLong, but I didn't find out why it didn't get initialized.

I guess you mean the place where the program wants to call GetWindowLong16
using offset value 10 even though there are only 12 bytes of data available?
If I convert offset to 8 in this case, I get rid of a single memory fault.
Unfortunately, this does not have any impact at all to the rest of 
the about dozen memory faults... Looking at relay traces, I see no indication
that the program gets other invalid pointers from GetWindowLong.

It would be possible to trace the program execution backward from the faulting
instruction and find out the exact place where the illegal segment value gets defined.
I'm not sure that I want to do something that boring and tidious, though.
I just wish that I didn't have a handful of other games that need to be played using
hacked Wine versions because I haven't found out what the real problem is :(

Oh, DeusEx, Pharaoh, Colonization and Civilization 2 do work under Wine after some
hacks, but I feel a bit depressed that I have no idea what the real problem with those
games is. And I have utterly failed to get half a dozen other games work.

Jukka Heinonen <>

More information about the wine-devel mailing list