https://bugs.winehq.org/show_bug.cgi?id=46923
Bug ID: 46923 Summary: X-Tension, X-Beyond The Frontier: Dynamic light breaks after opening up a menu Product: Wine Version: 4.4 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-d3d Assignee: wine-bugs@winehq.org Reporter: 19non91@gmail.com Distribution: ---
Created attachment 64026 --> https://bugs.winehq.org/attachment.cgi?id=64026 lspci | grep VGA and Xorg gpu config
In place of thousand words: https://imgur.com/a/7oQESA1
https://bugs.winehq.org/show_bug.cgi?id=46923
--- Comment #1 from Non 19non91@gmail.com --- Comment on attachment 64026 --> https://bugs.winehq.org/attachment.cgi?id=64026 lspci | grep VGA and Xorg gpu config
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09) 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Mars [Radeon HD 8670A/8670M/8750M]
Section "Device" Identifier "Intel Graphics" Driver "intel" Option "AccelMethod" "sna" Option "TearFree" "true" EndSection
Section "Device" Identifier "Radeon" Driver "radeon" Option "AccelMethod" "exa" Option "DRI" "3" Option "TearFree" "on" Option "ColorTiling" "on" Option "ColorTiling2D" "on" Option "EXAVSync" "yes" EndSection
Linux mbs 5.0.4-arch1-1-ARCH #1 SMP PREEMPT Sat Mar 23 21:00:33 UTC 2019 x86_64 GNU/Linux
https://bugs.winehq.org/show_bug.cgi?id=46923
--- Comment #2 from Non 19non91@gmail.com --- I've found older bugreport on Steam version https://bugs.winehq.org/show_bug.cgi?id=34611
And also reference video from Snowdrake: https://youtu.be/EX5CdUYiYp4
Possible errors, which I also get on the recent 4.4 wine version:
0031:fixme:d3d:state_flushbatch Render state WINED3D_RS_FLUSHBATCH not implemented yet. 0031:fixme:d3d:state_subpixel Render state WINED3D_RS_SUBPIXEL not implemented yet.
However now dynamic lights work, but only until you open up a menu. And then only with menu opened or until you reload save / land on a station.
So I guess it could be fixed without too much effort?
https://bugs.winehq.org/show_bug.cgi?id=46923
Paul Gofman gofmanp@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |gofmanp@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=46923
--- Comment #3 from Paul Gofman gofmanp@gmail.com --- I tested "X-Beyond The Frontier", steam version, and could reproduce the problem.
Should be fixed now by commit addc611b2ac56d4fc59a9df8f129f96ea4105773.
https://bugs.winehq.org/show_bug.cgi?id=46923
--- Comment #4 from Non 19non91@gmail.com --- In short: After commit addc611b2ac56d4fc59a9df8f129f96ea4105773 I couldn't reproduce the bug.
I've built wine from git, commit 56404595d5c42168d4fd4c1ec3a1b802a6aab5c1 and it indeed got fixed. That was really fast.
In the modding community few smart minds created tools to disassemble some of the game code and translate it to the C equivalent.
I thought I could check what causes the problem in the menu function, and found this game code, which strangely runs two times in a row:
TMENU.me_Inst3D[TMENU.me_NumInst3D] = B3D_LightAlloc(); if(TMENU.me_Inst3D) { B3D_LightSetColor(TMENU.me_Inst3D[TMENU.me_NumInst3D], 175, 175, 175); B3D_InstSetPos(TMENU.me_Inst3D[TMENU.me_NumInst3D], -1100000000, 330000000, -330000000); B3D_InstAddToScene(TMENU.me_Inst3D[TMENU.me_NumInst3D], TMENU.me_CompScene3D); TMENU.me_Path[TMENU.me_NumInst3D] = -1; TMENU.me_NumInst3D = TMENU.me_NumInst3D + 1; }
I don't know how this B3D functions implemented in exe file, but I thought I should try to skip this code altogether. So I've made JUMP in asm, which skips this code and after that menus started to work fine without breaking dynamic lights. Although light colors in the game gone a little odd.
Was working on workaround scripts for posting in WineDB (extract game files, patch binary file, pack them back), and you fixed it for good before I could finish.
Thanks, Paul. :)
https://bugs.winehq.org/show_bug.cgi?id=46923
Józef Kucia joseph.kucia@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |addc611b2ac56d4fc59a9df8f12 | |9f96ea4105773 Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED CC| |joseph.kucia@gmail.com
--- Comment #5 from Józef Kucia joseph.kucia@gmail.com ---
Should be fixed now by commit addc611b2ac56d4fc59a9df8f129f96ea4105773.
https://bugs.winehq.org/show_bug.cgi?id=46923
--- Comment #6 from Paul Gofman gofmanp@gmail.com --- (In reply to Non from comment #4)
I thought I could check what causes the problem in the menu function, and found this game code, which strangely runs two times in a row:
...
So I've made JUMP in asm, which skips this code and after that menus started to > work fine without breaking dynamic lights.
I don't think there is something particularly special or wrong in respect to the light management in this game's code, apart from the fact it is Directx 4 game and the lights were attached to viewports in Directx X < 7. I came across some problems managing that in Wine while testing the other bug related to lighting in some other ddraw4 games. Now they are hopefully fixed and it might fix a number of ddraw2-4 titles. Just to note, lighting in ddraw1 still does not fully work for completely different reasons.
https://bugs.winehq.org/show_bug.cgi?id=46923
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #7 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 4.6.
https://bugs.winehq.org/show_bug.cgi?id=46923
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |4.0.x
https://bugs.winehq.org/show_bug.cgi?id=46923
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|4.0.x |---
--- Comment #8 from Michael Stefaniuc mstefani@winehq.org --- Removing the 4.0.x milestone from bug fixes included in 4.0.2.