http://bugs.winehq.org/show_bug.cgi?id=10503
--- Comment #11 from Anastasius Focht focht@gmx.net 2007-11-20 15:50:57 --- Hello,
--- quote --- 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. --- quote ---
Well that code chunks abusing ESP are actually part of very large functions with many branches and subroutine calls. These functions have ~2000 "flat" lines of code (without subs) and ~50 variables. That *really* doesn't look like hand optimized assembler code. Would be a nightmare to manage.
--- quote --- 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 --- quote ---
Very nice! I wasn't aware of that project. Looking forward to the day when your DIB driver gets included in official wine tree (getting rid of trouble making DIB fault handler) ;-)
Regards