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. :)