[Bug 27594] Indiana Jones and the Emperor's Tomb: error message "invalid floating point camera matrix" (SSE2 control word handling in msvcrt __control87)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun May 6 15:43:43 CDT 2012


http://bugs.winehq.org/show_bug.cgi?id=27594

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
                 CC|                            |focht at gmx.net
            Summary|Indiana Jones and the       |Indiana Jones and the
                   |emperor's tomb opens a      |Emperor's Tomb: error
                   |message error box           |message "invalid floating
                   |                            |point camera matrix" (SSE2
                   |                            |control word handling in
                   |                            |msvcrt __control87)
     Ever Confirmed|0                           |1

--- Comment #12 from Anastasius Focht <focht at gmx.net> 2012-05-06 15:43:43 CDT ---
Hello,

confirming.

--- snip ---
0024:Call msvcrt._control87(00000100,00000300) ret=004012a3
0024:trace:msvcrt:__control87_2 x86 flags=000a011f newval=00000100
mask=00000300
0024:trace:msvcrt:__control87_2 sse2 flags=0008011f newval=00000100
mask=00000300
0024:Ret  msvcrt._control87() retval=000a011f ret=004012a3
0024:Call msvcrt._control87(00000000,00000000) ret=004012a9
0024:trace:msvcrt:__control87_2 x86 flags=000a011f newval=00000000
mask=00000000
0024:trace:msvcrt:__control87_2 sse2 flags=0008011f newval=00000000
mask=00000000
0024:Ret  msvcrt._control87() retval=000a011f ret=004012a9 
...
0024:Call msvcrt._vsnprintf(0032f120,000003e8,1001cef0 "An invalid floating
point camera matrix was passed to the D3D driver!",0032f52c) ret=10017b37
0024:trace:msvcrt:pf_printf_a Format is: "An invalid floating point camera
matrix was passed to the D3D driver!"
0024:Ret  msvcrt._vsnprintf() retval=00000045 ret=10017b37 
...
0024:Call user32.MessageBoxA(00020028,0561e7bc "(Render) An invalid floating
point camera matrix was passed to the D3D driver!",004aa434 "ABORT",00000110)
ret=00401ade 
--- snip ---

It is as Henri said in comment #5 -> the addition of SSE2 control word handling
(MXCSR manipulation) breaks the thing here.
If you disable it the app works (msvcrt_init_math -> sse2_supported = 0).
Of course native 'msvcrt' override works too.

Source:
http://source.winehq.org/git/wine.git/blob/7bfe648666355585b74e1f31c286ddd1d86aa894:/dlls/msvcrt/math.c#l1022

$ du -sh indyetdemo_JeuxVideo.com_5589.exe 
225M    indyetdemo_JeuxVideo.com_5589.exe

$ sha1sum indyetdemo_JeuxVideo.com_5589.exe 
wd9c8b61616e29ef8ab75d1c72c55d30cf923471e  indyetdemo_JeuxVideo.com_5589.exe

$ wine --version
wine-1.5.3-164-gdec3d50

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list