[Bug 9191] New: Roller Coaster Tycoon Will not switch to fullscreen
(EnumDisplayModes bug?)
Wine Bugs
wine-bugs at winehq.org
Sun Aug 5 07:29:46 CDT 2007
http://bugs.winehq.org/show_bug.cgi?id=9191
Summary: Roller Coaster Tycoon Will not switch to fullscreen
(EnumDisplayModes bug?)
Product: Wine
Version: 0.9.42.
Platform: PC
OS/Version: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: wine-directx-ddraw
AssignedTo: wine-bugs at winehq.org
ReportedBy: phillipezolt at gmail.com
In roller coaster tycoon, when I try to switch to full-screen mode 640x480 (from
windowed), it won't work. The application stays in windowed mode and turns
black. (I can get the window back by moving various sub-windows around.)
'xrandr -s 640x480' works so it isn't a permission problem. Also, another
version of roller coaster tycoon (Rct2) works just fine.
This used to work with:
1) FC6
2) Wine (v.????)
3) Original Roller Coaster Tycoon
But then I upgraded to:
1) FC7,
2) wine 0.9.42,
3) RCT + Corkscreen Follies V. 1.20.013
And things don't work. I reverted to wine-0.9.36-2.fc7, and that also doesn't
work.
I traced the ddraw code, and I have a theory (which I can't yet prove) about why
it is failing:
On windows, EnumDisplayModes returns the lower bitdepth versions of a resolution
before the high bitdepth versions. When running on wine the 32-bit version is
returned first. On wine, the application sees that it has 32-bit bitdepth
version of the resolution and (erroneously) decides that means it already missed
the 8-bit version.
Here's why I say that:
Looking at the trace these are the last few lines after issuing the request, the
application terminates the enumeration after it sees a 640x480 at 32, and never
gets to the 640x480 at 8:
trace:ddraw:IDirectDrawImpl_EnumDisplayModes
(0x16e3e8)->((nil),0x32fd10,0x60fd5120): Relay
.....
trace:ddraw:IDirectDrawImpl_EnumDisplayModes Enumerating 800x600 at 32
trace:ddraw:PixelFormat_WineD3DtoDD Converting WINED3DFORMAT 22 to DDRAW
trace:ddraw:PixelFormat_WineD3DtoDD Returning: ( DDPF_RGB , RGB bits: 32, R
00ff0000 G 0000ff00 B 000000ff)
trace:ddraw:IDirectDrawImpl_EnumDisplayModes Enumerating 640x480 at 32
trace:ddraw:IDirectDrawImpl_EnumDisplayModes Application asked to terminate the
enumeration
....
If I look at the whole trace, EARLIER in the execution that application does
iterate through all of the modes, and the 640x480 at 8 modes show up. However,
every attempt at full screen stops with 640x480 at 32.
BTW. I looked at the wine code, and it wasn't immediately obvious how to
reorder things so that this is sorted. Suggestions welcome.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
More information about the wine-bugs
mailing list