http://bugs.winehq.org/show_bug.cgi?id=10503
Jesse Allen the3dfxdude@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #10 from Jesse Allen the3dfxdude@gmail.com 2007-11-20 14:18:14 --- (In reply to comment #9)
Interestingly this piece of game code was produced by Microsoft Visual C++ 5.0 compiler ... Who else could produce such brain damaged code ... ok, I've seen several gcc brain damage as well ;-)
Well, the game actually has parts of the drawing code written in asm to speed the game up. This is how it achieved the "3d" voxels with ancient hardware :) It was probably good at the time, but we are suffering from it now. Whether this has anything to do with the problem it is a good chance. I don't think MSVC is at fault here.
There are 24 occurrences of this abusive (DIB) code. Whatever optimization was done ... the compiler simply ran out 8 GP registers and resorted to use ESP/EBP in favor of stack vars - leaving wine's DIB handling mechanism in distress.
I would vote for WONTFIX (until someone decides to change the way DIBs are handled) ;-)
Regards
Well since the report and since I have the game and I have not tried this game with wine for a while, I pulled the game out to try an experiment. Yes I can reproduce the bug, so I'll confirm it. Now I rebased my dib driver to current wine see what happens. And well, the city popup works now without crashing. Unfortunately my dib driver does not have the font support the game requires, so there is no text anywhere to be found ;)
This bug can be fixed with the dib engine, if we don't want to rework the fault handler. See my code at http://repo.or.cz/w/wine/dibdrv.git