http://bugs.winehq.org/show_bug.cgi?id=13198
Summary: Microsoft Pinball Arcade black/blank window in 24bpp mode Product: Wine Version: 1.0-rc1 Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: vanessaezekowitz@gmail.com
Created an attachment (id=13030) --> (http://bugs.winehq.org/attachment.cgi?id=13030) Screenshot of real 8bpp mode
Microsoft Pinball Arcade (commercial/full version) doesn't work properly in WINE if you're using a regular, standard-issue 24bpp X session. Intro/menu screens work, but the 3D content (direct3d? ddraw?) just produces a black screen.
Steps to reproduce:
0. Obtain a copy of the game (maybe the demo version will do?). cd into your 'drive c' directory and start the game: `wine Program\ Files/Microsoft\ Games/Pinball\ Arcade/Launcher.exe` 1. A movie displays showing a closeup of one of the game's tables. 2. Click on the movie to interrupt it. The title screen appears and looks fine. 3. Click again, table select menu appears and waits for input. 4. Click on any menu item at the bottom of the window - a dialog related to it appears as it should. 5. Double-click on one of the tables - the table selection screen gets blacked out, the window resizes, and the table's loading screen appears all in the same instant - without repainting the window - the loading screen only painted on the parts of the window that were already black. So we have a window half filled with the loading screen and half transparent, showing this browser and the controlling terminal through it. 6. The loading screen disappears and the window turns solid black. A windows pointer appears. On the console, the "Cannot change screen BPP" line appears. 7. Clicking around eventually causes the pointer to disappear, probably because I managed to trigger the insert-coin hot spot followed by the "1 player" hotspot, thus starting the actual game. Hitting Esc is supposed to bring up a graphical exit/no-exit dialog, but nothing appears. Blindly hitting "y" puts me back at the table-select screen as it should. So the actual game is accepting input, it just isn't showing me anything. 7a. If I try another table, I get the exact same result, including another "Cannot change screen BPP" line on the console. 8. Double-click the table-select menu's internal Exit button and Wine drops back to my shell after a couple of seconds.
Actual Results: Described above - I get a black window instead of a game table.
Expected Results: Wine should have displayed the table properly and let me play the game.
Notes: In order to run this game properly, the user *must* have a true 8bpp mode with StaticColor visual defined in their xorg.conf, and the user *must* manually run a second, separate X screen (e.g. one accessible with Ctrl-Alt-F8) in that more with that visual.
Desipte having a known, tested, working 8bpp mode in xorg.conf, Xorg does not have any kind of ability to switch away from the currently-running depth to some other mode (e.g. it cannot and never will be able to drop from 24bpp to 8bpp), and is not expected to ever have such a feature. Furthermore, some users' hardware does not have the ability to run in true 8bpp mode at all, so this game simply *will not work* on those systems. ply does not work on some hardware, despite having correct software settings.
The attached screenshot shows what the game looks like in reap 8bpp "StaticColor" mode, using twm as a window manager (it looks the same without a window manager).
Versions affected: All WINE versions from roughly 0.9.31 through the current 1.0 rc1 release.
http://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #1 from Vanessa Ezekowitz vanessaezekowitz@gmail.com 2008-05-13 16:13:18 --- Created an attachment (id=13038) --> (http://bugs.winehq.org/attachment.cgi?id=13038) Xorg.conf showing how StaticColor mode is configured.
http://bugs.winehq.org/show_bug.cgi?id=13198
Alexander Dorofeyev alexd4@inbox.lv changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |alexd4@inbox.lv
--- Comment #2 from Alexander Dorofeyev alexd4@inbox.lv 2008-05-14 02:32:31 --- Is this the same game here:
http://www.microsoft.com/games/pinball/downloads.htm ?
http://bugs.winehq.org/show_bug.cgi?id=13198
Alexander Dorofeyev alexd4@inbox.lv changed:
What |Removed |Added ---------------------------------------------------------------------------- URL| |http://www.microsoft.com/gam | |es/pinball/downloads.htm Status|UNCONFIRMED |NEW Component|-unknown |directx-ddraw Ever Confirmed|0 |1 Keywords| |download
--- Comment #3 from Alexander Dorofeyev alexd4@inbox.lv 2008-05-14 02:40:53 --- I guess it is. Black screen indeed. It uses ddraw. Confirming bug and updating component.
http://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #4 from Alexander Dorofeyev alexd4@inbox.lv 2008-05-14 04:49:21 --- Created an attachment (id=13048) --> (http://bugs.winehq.org/attachment.cgi?id=13048) hack to get past the black screen
The problem comes from the fact the game uses 8bpp surfaces, but doesn't set a palette using ddraw methods. There is an undocumented feature that it's possible to use such surfaces in ddraw, and palette is coming from somewhere else in the system (current windows system palette afaik). I hoped there is no stupid games that would use it but apparently I was wrong.
The attached proof of concept hack gets it (seemingly) working, but an actual right fix for this has to be more complex. For one thing, brokedness of {Get/Set}SystemPaletteEntries must be properly addressed in winex11.drv, and a right place(s) must be found in wined3d to put these changes into, so that it fixes both gdi and opengl renderers. This hack only fixes the DirectDrawnRenderer=gdi part.
http://bugs.winehq.org/show_bug.cgi?id=13198
Alexander Dorofeyev alexd4@inbox.lv changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #13048|0 |1 is obsolete| |
--- Comment #5 from Alexander Dorofeyev alexd4@inbox.lv 2008-06-10 03:02:26 --- Created an attachment (id=13867) --> (http://bugs.winehq.org/attachment.cgi?id=13867) illustrative hack in winex11
I investigated some more and discovered that not setting ddraw palettes is not really normal operation for the game. It appears what it actually needs is RC_PALETTE flag from GetDeviceCaps. Current implementation of winex11 doesn't normally set this flag because in non-paletted modes palette_size is 0.
With this flag, the game apparently takes a path it otherwise doesn't and properly sets palettes for ddraw. It then works happily in both gdi and opengl rendering.
http://bugs.winehq.org/show_bug.cgi?id=13198
Alexander Dorofeyev alexd4@inbox.lv changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|directx-ddraw |winex11.drv
--- Comment #6 from Alexander Dorofeyev alexd4@inbox.lv 2008-06-10 03:03:21 --- Changing component to winex11.
http://bugs.winehq.org/show_bug.cgi?id=13198
Dmitry Timoshkov dmitry@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|winex11.drv |directx-ddraw
--- Comment #7 from Dmitry Timoshkov dmitry@codeweavers.com 2008-06-10 03:17:59 --- (In reply to comment #5)
I investigated some more and discovered that not setting ddraw palettes is not really normal operation for the game. It appears what it actually needs is RC_PALETTE flag from GetDeviceCaps. Current implementation of winex11 doesn't normally set this flag because in non-paletted modes palette_size is 0.
That's correct behavior of GetDeviceCaps. What you have found may mean that ddraw should set/initialize default palette.
http://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #8 from Alexander Dorofeyev alexd4@inbox.lv 2008-06-10 13:25:09 --- (In reply to comment #7)
(In reply to comment #5) That's correct behavior of GetDeviceCaps. What you have found may mean that ddraw should set/initialize default palette.
I don't think so, I did quite extensive testing of that and saw no evidence ddraw sets any default palettes. There was evidence though that it falls back to current system palette in case primary surface palette is missing.
I looked into the game with IDA and it looks like there's only place it creates a ddraw palette, and it follows a GetDC(0), GetDeviceCaps() and check for RC_PALETTE. Unfortunately for us, in native RC_PALETTE is returned if ddraw changed mode (SetDisplayMode) to 8bpp prior to GetDeviceCaps (tested on real XP). But normally it isn't returned in normal desktop modes in XP, you are right about that. Without RC_PALETTE returned, a ddraw palette will never be created. And returning RC_PALETTE cap isn't going to happen, I guess.
If the "use system palette colors by default in ddraw if no ddraw palette available" logic would be implemented, this could also be a fix for this game, although technically this isn't how this game works on native. This pretty much gets back to the first hack I posted. But it won't work without working GetSystemPaletteEntries or some other way to get last realized gdi palette. Last time I checked GetSystemPaletteEntries definitely does return some meaningful results in native, even in 24bpp etc modes, but it just always returns 0 in Wine I think, except in the non-existant palettized X modes.
http://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #9 from Austin English austinenglish@gmail.com 2009-01-03 13:34:22 --- Still present in git.
http://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #10 from Vanessa Ezekowitz vanessaezekowitz@gmail.com 2009-05-18 17:43:19 --- As of today's install of 1.1.21, the game no longer runs at all in 24 bpp mode, i.e. from my usual display - it pops up the desktop window and then bombs, with the following error on the controlling terminal:
vanessa@rainbird:~/Drive-C$ wine Program\ Files/Microsoft\ Games/Pinball\ Arcade/Launcher.exe X Error of failed request: GLXBadDrawable Major opcode of failed request: 128 (GLX) Minor opcode of failed request: 5 (X_GLXMakeCurrent) Serial number of failed request: 284 Current serial number in output stream: 284
(Not sure what that's all about - GLX works perfectly fine in other places, i.e. OpenArena). The game still runs as usual in 8bpp mode, however.
http://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #11 from Austin English austinenglish@gmail.com 2009-05-18 21:02:42 --- (In reply to comment #10)
As of today's install of 1.1.21, the game no longer runs at all in 24 bpp mode, i.e. from my usual display - it pops up the desktop window and then bombs, with the following error on the controlling terminal:
vanessa@rainbird:~/Drive-C$ wine Program\ Files/Microsoft\ Games/Pinball\ Arcade/Launcher.exe
cd to the directory first.
Run a regression test and file a new bug for it failing from the beginning.
http://bugs.winehq.org/show_bug.cgi?id=13198
GyB gyebro69@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |gyebro69@gmail.com
--- Comment #12 from GyB gyebro69@gmail.com 2010-03-19 16:07:04 --- Still an issue with Wine-1.1.41.
http://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #13 from Vanessa Ezekowitz vanessaezekowitz@gmail.com 2010-05-19 18:03:25 --- Has there been any progress on this?
http://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #14 from Austin English austinenglish@gmail.com 2010-05-19 20:03:45 --- (In reply to comment #13)
Has there been any progress on this?
Still present in wine-1.1.44-245-g943eefc.
http://bugs.winehq.org/show_bug.cgi?id=13198
joaopa jeremielapuree@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremielapuree@yahoo.fr
--- Comment #15 from joaopa jeremielapuree@yahoo.fr 2011-08-06 04:55:56 CDT --- bug is still there in Wine-1.3.26
http://bugs.winehq.org/show_bug.cgi?id=13198
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|directx-ddraw |directx-d3d
http://bugs.winehq.org/show_bug.cgi?id=13198
Rafal Stanilewicz washuu@eastnews.com.pl changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |washuu@eastnews.com.pl
--- Comment #16 from Rafal Stanilewicz washuu@eastnews.com.pl 2012-02-11 08:49:07 CST --- wine 1.4-rc2 here.
Downloaded and installed demo version (the default table highlighted is the only one available).
When run, colors are completely garbled on 24-bit depth, intel i915 GPU.
http://bugs.winehq.org/show_bug.cgi?id=13198
Ronny Schmatzler schmatzler@googlemail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |schmatzler@googlemail.com
--- Comment #17 from Ronny Schmatzler schmatzler@googlemail.com 2012-04-01 09:36:19 CDT --- Same on Wine 1.5.1, Intel i965 GPU. Colors are garbled.
http://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #18 from Ronny Schmatzler schmatzler@googlemail.com 2012-04-01 09:37:49 CDT --- Created attachment 39633 --> http://bugs.winehq.org/attachment.cgi?id=39633 Game running on Wine 1.5.1, 24bpp
https://bugs.winehq.org/show_bug.cgi?id=13198
Luke gaming4jc2@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |gaming4jc2@yahoo.com
--- Comment #19 from Luke gaming4jc2@yahoo.com --- *** Bug 33968 has been marked as a duplicate of this bug. ***
https://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #20 from Luke gaming4jc2@yahoo.com --- Created attachment 51032 --> https://bugs.winehq.org/attachment.cgi?id=51032 log from wine 1.7.38
Still getting the black screen bug as of Wine 1.7.38.
Download/Demo link above appears broken, use this instead: http://web.archive.org/web/20020202164500/http://mssjus.www.conxion.com/down...
https://bugs.winehq.org/show_bug.cgi?id=13198
super_man@post.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |super_man@post.com
--- Comment #21 from super_man@post.com --- (In reply to Luke from comment #20)
Created attachment 51032 [details] log from wine 1.7.38
Still getting the black screen bug as of Wine 1.7.38.
Download/Demo link above appears broken, use this instead: http://web.archive.org/web/20020202164500/http://mssjus.www.conxion.com/ download/pinball/Trial/1.0/WIN98/EN-US/Mspinball.exe
Still the same 1.8.rc4
https://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #22 from super_man@post.com --- The issue could be related to this
fixme:d3d_shader:upload_palette P8 surface loaded without a palette.
It's spammed a lot.
Still an issue 1.9.7 and wine-staging 1.9.7
https://bugs.winehq.org/show_bug.cgi?id=13198
winetest@luukku.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |winetest@luukku.com
--- Comment #23 from winetest@luukku.com --- Still getting black screen.
wine 2.4 and staging 2.4.
https://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #24 from joaopa jeremielapuree@yahoo.fr --- Bug still there in current wine (3.11).
https://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #25 from joaopa jeremielapuree@yahoo.fr --- Bug still occurs with wine-4.20.
https://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #26 from joaopa jeremielapuree@yahoo.fr --- Bug still occurs with wine-6.5. Console is spammed with
0168:err:d3d:wined3d_texture_load_drawable Trying to load offscreen texture into WINED3D_LOCATION_DRAWABLE
https://bugs.winehq.org/show_bug.cgi?id=13198
--- Comment #27 from joaopa jeremielapuree@yahoo.fr --- No change with wine-9.7
Can an administrator put the working link at URL place?
http://web.archive.org/web/20020202164500/http://mssjus.www.conxion.com/down...
https://bugs.winehq.org/show_bug.cgi?id=13198
Ken Sharp imwellcushtymelike@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://www.microsoft.com/ga |http://web.archive.org/web/ |mes/pinball/downloads.htm |20020202164500/http://mssju | |s.www.conxion.com/download/ | |pinball/Trial/1.0/WIN98/EN- | |US/Mspinball.exe