Richard Corden
2007-Mar-19 18:43 UTC
[Wine] Re: Screen not changing from 640x480 to 800x600 - "Shogun - Total War"
Richard Corden wrote:> Can someone suggest the trace options that might help me track down the > problem?I used +all, ran until it reached the main menu (which must be in 800x600) and then filtered out for 800x600 and 640x480. As I said previously, the game is not switching from the 640x480 mode to the 800x600 mode at all, except for a brief flicker. Do these sequence of events look correct? 0009:trace:win:SetWindowPos hwnd 0x10024, after (nil), 0,0 (800x600), flags 00000016 0009:trace:win:SWP_DoWinPosChanging hwnd 0x10024, after (nil), swp 0,0 800x600 flags 00001816 0009:Call user32.SetRect(0033e72c,00000000,00000000,00000280,000001e0) ret=7e4cd1eb 0009:trace:x11drv:X11DRV_ConfigureNotify 0x10024 resizing from (800x600) to (640x480) 0009:Call user32.SetWindowPos(00010024,00000000,00000000,00000000,00000280,000001e0,00000016) ret=7e4fbe86 0009:Call user32.SetRect(0033e72c,00000000,00000000,00000280,000001e0) ret=7e4cd1eb 0009:Call gdi32.CombineRgn(0000031c,00000320,00000000,00000005) ret=7e4cbc83 0009:trace:d3d:IWineD3DDeviceImpl_EnumDisplayModes Enumerating 800x600@WINED3DFMT_X8R8G8B8 0009:trace:d3d:IWineD3DDeviceImpl_EnumDisplayModes Enumerating 800x600@WINED3DFMT_P8 0009:trace:d3d:IWineD3DDeviceImpl_EnumDisplayModes Enumerating 800x600@WINED3DFMT_R5G6B5 0009:trace:d3d:IWineD3DDeviceImpl_SetDisplayMode (0x17dba0)->(0,0x33f730) Mode=800x600x@0, WINED3DFMT_R8G8B8 0009:trace:x11drv:X11DRV_desktop_SetCurrentMode Resizing Wine desktop window to 800x600 0009:Call user32.SetRect(0033f210,00000000,00000000,00000280,000001e0) ret=7e4fbc4e 0009:Call user32.SetRect(7e52bd48,00000000,00000000,00000320,00000258) ret=7e509e9f 0009:trace:x11drv:xinerama_init virtual size: (0,0)-(800,600) primary size: 800x600 0009:trace:x11drv:X11DRV_handle_desktop_resize desktop 0x10020 change to (800x600) 000b:trace:bitblt:PatBlt 0x1fc 0,0 800x600 f00021 0009:trace:win:SWP_DoWinPosChanging hwnd 0x10024, after (nil), swp 0,0 800x600 flags 00001814 0009:trace:x11drv:X11DRV_sync_window_position setting win 3000001 pos 0,0,800x600 after 7effed1c changes=c 0009:Call user32.SetRect(0033f240,00000000,00000000,00000320,00000258) ret=7e4faa18 000b:trace:bitblt:PatBlt 0x1fc 0,0 800x600 f00021 0009:Call user32.SetRect(0033f610,00000000,00000000,00000320,00000258) ret=7c5613dd 0009:Call user32.SetRect(0033f28c,00000000,00000000,00000320,00000258) ret=7e4cd1eb 0009:Call user32.SetRect(0033f3f0,00000000,00000000,00000320,00000258) ret=7e4faa18 0009:Call gdi32.CombineRgn(0000031c,00000320,00000000,00000005) ret=7e4cbc83 0009:Ret user32.GetSystemMetrics() retval=00000320 ret=7ecd73d7 0009:Call gdi32.CombineRgn(0000031c,00000320,00000000,00000005) ret=7e4cbc83 0009:Ret user32.GetSystemMetrics() retval=00000320 ret=7c575888 0009:Call gdi32.CombineRgn(0000031c,00000320,00000000,00000005) ret=7e4cbc83 0009:Call user32.SetWindowPos(00010024,00000000,00000000,00000000,00000320,00000258,00000020) ret=7c55e642 0009:trace:win:SetWindowPos hwnd 0x10024, after (nil), 0,0 (800x600), flags 00000020 0009:trace:win:SWP_DoWinPosChanging hwnd 0x10024, after (nil), swp 0,0 800x600 flags 00001820 0009:Call user32.SetRect(0033f24c,00000000,00000000,00000320,00000258) ret=7e4cd1eb 0009:trace:x11drv:X11DRV_sync_window_position setting win 3000001 pos 0,0,800x600 after 7effee57 changes=40 0009:Call user32.SetRect(0033f3b0,00000000,00000000,00000320,00000258) ret=7e4faa18 0009:Call user32.MoveWindow(00010024,00000000,00000000,00000280,000001e0,00000000) ret=00592ac6 0009:Call user32.SetRect(0033efbc,00000000,00000000,00000320,00000258) ret=7e4cd1eb 0009:Call user32.SetRect(0033f120,00000000,00000000,00000320,00000258) ret=7e4faa18 0009:Call user32.SetRect(0033ef40,00000000,00000000,00000320,00000258) ret=7e4fbc4e 0009:Call user32.SetRect(7e52bd48,00000000,00000000,00000280,000001e0) ret=7e509e9f 0009:Call user32.MoveWindow(00010024,00000000,00000000,00000280,000001e0,00000001) ret=7c561490 0009:Call user32.SetRect(0033ef70,00000000,00000000,00000280,000001e0) ret=7e4faa18 0009:Call user32.SetRect(0033f33c,00000000,00000000,00000280,000001e0) ret=7c5613dd 0009:Ret user32.GetSystemMetrics() retval=00000280 ret=7c55e8fe 0009:Call gdi32.CombineRgn(0000031c,00000320,00000000,00000005) ret=7e4cbc83 0009:Call user32.SetRect(0033ed20,00000000,00000000,00000280,000001e0) ret=7e4fbc4e 0009:Call user32.SetRect(7e52bd48,00000000,00000000,00000280,000001e0) ret=7e509e9f 0009:Call user32.SetWindowPos(00010024,00000000,00000000,00000000,00000280,000001e0,00000020) ret=7c55e642 0009:Call user32.SetRect(0033ebec,00000000,00000000,00000280,000001e0) ret=7e4cd1eb 0009:Call user32.SetRect(0033ed50,00000000,00000000,00000280,000001e0) ret=7e4faa18 0009:Call user32.SetRect(0033f154,00000000,00000000,00000280,000001e0) ret=7c55f618 0009:trace:x11drv:X11DRV_ConfigureNotify win 0x10024 new X rect 0,0,800x600 (event 0,0,800x600) 0009:trace:x11drv:X11DRV_ConfigureNotify 0x10024 resizing from (640x480) to (800x600) 0009:Call user32.SetWindowPos(00010024,00000000,00000000,00000000,00000320,00000258,00000016) ret=7e4fbe86 0009:trace:win:SetWindowPos hwnd 0x10024, after (nil), 0,0 (800x600), flags 00000016 0009:trace:win:SWP_DoWinPosChanging hwnd 0x10024, after (nil), swp 0,0 800x600 flags 00001816 0009:Call user32.SetRect(0033eedc,00000000,00000000,00000280,000001e0) ret=7e4cd1eb 0009:trace:x11drv:X11DRV_ConfigureNotify 0x10024 resizing from (800x600) to (640x480) 0009:Call user32.SetWindowPos(00010024,00000000,00000000,00000000,00000280,000001e0,00000016) ret=7e4fbe86 0009:Call user32.SetRect(0033eedc,00000000,00000000,00000280,000001e0) ret=7e4cd1eb 000d:trace:xrandr:X11DRV_XRandR_Init - at 6: 800x600 (1 rates): 60 Hz 000d:Call user32.SetRect(7eb00d48,00000000,00000000,00000280,000001e0) ret=7eadee9f Regards, richard -- Richard Corden
Richard Corden
2007-Mar-19 19:16 UTC
[Wine] Screen not changing from 640x480 to 800x600 - "Shogun - Total War"
Wine 9.30 Slackware 11 ATI FireGL 5200 (Propriatory drivers) I found Shogun in a shop as a 'Classic' game and I've been trying to get it to work using Wine. Shogun uses Safedisc and so does not work in it's, ahem, original form. However it can, shall we say, be persuaded to get over it's difficulties and at least run. This is where I am now. I have the game running and I have navigated through the menu options etc. I was also able to get to the strategy area of the game using an old saved game. Unfortunately, it is still not possible to play the game due to a strange problem with the resolution. During startup, the splash screens etc. are displayed in 640x480. Just before it switches to the game menu, the screen appears to switch to 800x600 and then immediately back to 640x480. I've also tested with a Wine desktop set to 800x600 with the same result; after the splash screen the desktop jumps to 800x600 briefly and then back to 640x480, I've tested using different X screen modes, using the VESA driver, and all the combinations of registry settings I could (such as UseXRandR), all without success. Finally, I even tried hacking the code, and set 'mode' so that the display screen was always 800x600 no matter what was called (winex11.drv/settings.c), however, this just resulted in my display (and the Wine desktop) remaining at 800x600 and an inner 640x480 with the same problem. To clarify exactly what I can see. The static images on the screen appear offset down and to the right, ie. centred for an 800x600 display. IMHO, the 800 pixel rows are being written out starting at column 0, but as there are only 640 columns available the last few pixels are then written into the next column down. Something like this: 1111111111 1122222222 2233333333 3344444444 4455555555 55 This is what makes the game unplayable, as buttons etc are hidden by these extra pixels. Can someone suggest the trace options that might help me track down the problem? Is there anything else that people normally do to track this type of problem down? Is there a chance that a specific source file (or set of source files) would be at fault - I could potentially debug them? "Fingers crossed": Has someone already come up with a solution to the problem? Kind Regards, Richard -- Richard Corden