Hello!
I'm trying to run the old game Command & Conquer - Red Alert in wine (20050211), I read on the net it would run perfectly on Linux, but I'm having a little bit of a problem; it uses 100% of my CPU, and apparently, it wants even more (=lags)!
I think it lags because the graphics isn't using hardware acceleration (or is it?), because if I use the lower resolution setting in RA (from 640x480->640x400), it gets slightly better.
I've enabled DGA on my system, I thought that would make the game run smoothly...
My system (short version):
AMD Athlon XP 2500+
1GB of RAM
Geforce 5600 (don't remember the full name)
I'm using an up-to-date Gentoo with the binary drivers from nvidia.
This is the output from WINEDEBUG=+x11drv wine ra95.exe
Please use the registry key HKEY_CURRENT_CONFIG\Software\Fonts\LogPixels
to set the screen resolution and remove the "Resolution" entry in the config file
trace:x11drv:X11DRV_XF86DGA2_Init
trace:x11drv:X11DRV_CreateBitmap (0x54) 32x32 1 bpp
trace:x11drv:X11DRV_CreateBitmap (0x58) 32x32 1 bpp
trace:x11drv:X11DRV_GetBitmapBits (bmp=0x40387a18, buffer=0x40387a6c, count=0x80)
trace:x11drv:X11DRV_GetBitmapBits (bmp=0x403879d0, buffer=0x40387aec, count=0x80)
trace:x11drv:X11DRV_CreateBitmap (0x5c) 32x32 1 bpp
trace:x11drv:X11DRV_CreateBitmap (0x60) 32x32 1 bpp
trace:x11drv:X11DRV_GetBitmapBits (bmp=0x40387cf8, buffer=0x4038864c, count=0x80)
trace:x11drv:X11DRV_GetBitmapBits (bmp=0x40387cb0, buffer=0x403886cc, count=0x80)
trace:x11drv:X11DRV_CreateBitmap (0x64) 7x11 1 bpp
trace:x11drv:X11DRV_CreateBitmap (0x68) 36x18 24 bpp
trace:x11drv:X11DRV_SetupXIM X display of IM = 0x7814a6f0
trace:x11drv:X11DRV_SetupXIM Using C locale of Input Method
trace:x11drv:X11DRV_SetupXIM ximStyles->count_styles = 2
trace:x11drv:X11DRV_SetupXIM ximStyles[0] = XIMPreeditNone
trace:x11drv:X11DRV_SetupXIM ximStyles[1] = XIMPreeditNothing
trace:x11drv:X11DRV_SetupXIM Setting Style: ximStyleRoot = STYLE_ROOT
trace:x11drv:X11DRV_SetupXIM No callback style avalable
trace:x11drv:X11DRV_set_window_pos win 0x10020 window (0,0)-(1280,1024) client (0,0)-(1280,1024) style 96000000
trace:x11drv:X11DRV_DCICommand (20,(12,1083745220,2014679968),(nil))
trace:x11drv:X11DRV_DCICommand (20,(13,1792,2014679968),0x4098aca0)
trace:x11drv:X11DRV_DCICommand (20,(11,1792,2014679968),0x4098acc0)
trace:x11drv:X11DRV_DCICommand (20,(10,1792,2014679968),0x4098ae08)
trace:x11drv:X11DRV_set_window_pos win 0x10022 window (0,0)-(0,0) client (0,0)-(0,0) style 84000000
trace:x11drv:X11DRV_CreateWindow hwnd 0x10022 cs 0,0 0x0
trace:x11drv:X11DRV_set_window_pos win 0x10022 window (0,0)-(0,0) client (0,0)-(0,0) style 84000000
trace:x11drv:X11DRV_sync_window_position setting win 2600001 pos 0,0,0x0 after 3 changes=40
trace:x11drv:X11DRV_CreateWindow win 0x10022 window 0,0,0,0 client 0,0,0,0 whole 0,0,0,0 X client 0,0,0,0 xwin 2600001
trace:x11drv:X11DRV_set_window_pos win 0x10024 window (0,0)-(0,0) client (0,0)-(0,0) style 84000000
trace:x11drv:X11DRV_CreateWindow hwnd 0x10024 cs 0,0 0x0
trace:x11drv:X11DRV_set_window_pos win 0x10024 window (0,0)-(0,0) client (0,0)-(0,0) style 84000000
trace:x11drv:X11DRV_sync_window_position setting win 2600002 pos 0,0,0x0 after 3 changes=40
trace:x11drv:X11DRV_CreateWindow win 0x10024 window 0,0,0,0 client 0,0,0,0 whole 0,0,0,0 X client 0,0,0,0 xwin 2600002
err:ddeml
deConnect Done with INITIATE, but no Server window available
trace:x11drv:X11DRV_set_window_pos win 0x10026 window (0,0)-(0,0) client (0,0)-(0,0) style 84000000
trace:x11drv:X11DRV_CreateWindow hwnd 0x10026 cs 0,0 0x0
trace:x11drv:X11DRV_set_window_pos win 0x10026 window (0,0)-(0,0) client (0,0)-(0,0) style 84000000
trace:x11drv:X11DRV_sync_window_position setting win 2600003 pos 0,0,0x0 after 3 changes=40
trace:x11drv:X11DRV_CreateWindow win 0x10026 window 0,0,0,0 client 0,0,0,0 whole 0,0,0,0 X client 0,0,0,0 xwin 2600003
fixme:mmtime:timeBeginPeriod Stub; we set our timer resolution at minimum
trace:x11drv:X11DRV_CreateBitmap (0x84) 32x32 24 bpp
trace:x11drv:X11DRV_CreateBitmap (0x88) 32x32 1 bpp
trace:x11drv:X11DRV_GetBitmapBits (bmp=0x4038da10, buffer=0x4039db64, count=0x80)
trace:x11drv:X11DRV_GetBitmapBits (bmp=0x4038d9c8, buffer=0x4039dbe4, count=0xc00)
trace:x11drv:X11DRV_set_window_pos win 0x10028 window (0,0)-(640,480) client (0,0)-(640,480) style 85000000
trace:x11drv:X11DRV_CreateWindow hwnd 0x10028 cs 0,0 640x480
trace:x11drv:X11DRV_set_window_pos win 0x10028 window (0,0)-(640,480) client (0,0)-(640,480) style 85000000
trace:x11drv:X11DRV_sync_window_position setting win 2600004 pos 0,0,640x480 after 3 changes=40
trace:x11drv:X11DRV_CreateWindow win 0x10028 window 0,0,640,480 client 0,0,640,480 whole 0,0,640,480 X client 0,0,640,480 xwin 2600004
trace:x11drv:WINPOS_MinMaximize 0x10028 3
trace:x11drv:X11DRV_SetWindowPos hwnd 0x10028, after (nil), swp 0,0 1280x1024 flags 00000024
trace:x11drv:SWP_DoWinPosChanging hwnd 0x10028, after (nil), swp 0,0 1280x1024 flags 00001824
trace:x11drv:SWP_DoWinPosChanging current (0,0)-(640,480) style 85000000 new (0,0)-(1280,1024)
trace:x11drv:SWP_DoNCCalcSize (0,0)-(1280,1024)
trace:x11drv:X11DRV_set_window_pos win 0x10028 window (0,0)-(1280,1024) client (0,0)-(1280,1024) style 85000000
trace:x11drv:X11DRV_sync_window_position setting win 2600004 pos 0,0,1280x1024 after 3 changes=c
trace:x11drv:X11DRV_SetWindowPos hwnd 0x10028, after (nil), swp 0,0 0x0 flags 00000013
trace:x11drv:SWP_DoWinPosChanging hwnd 0x10028, after (nil), swp 0,0 0x0 flags 00001813
trace:x11drv:SWP_DoWinPosChanging current (0,0)-(1280,1024) style 85000000 new (0,0)-(1280,1024)
trace:x11drv:X11DRV_set_window_pos win 0x10028 window (0,0)-(1280,1024) client (0,0)-(1280,1024) style 85000000
trace:x11drv:X11DRV_sync_window_position setting win 2600004 pos 0,0,1280x1024 after 3 changes=40
trace:x11drv:X11DRV_SetWindowPos status flags = 1807
trace:x11drv:X11DRV_SetWindowPos status flags = 1026
trace:x11drv:X11DRV_ShowWindow hwnd=0x10028, cmd=10, wasVisible 0
trace:x11drv:WINPOS_MinMaximize 0x10028 9
trace:x11drv:X11DRV_SetWindowPos hwnd 0x10028, after (nil), swp 0,0 640x480 flags 00000040
trace:x11drv:SWP_DoWinPosChanging hwnd 0x10028, after (nil), swp 0,0 640x480 flags 00001840
trace:x11drv:SWP_DoWinPosChanging current (0,0)-(1280,1024) style 84000000 new (0,0)-(640,480)
warn:x11drv:SWP_DoOwnedPopups (0x10028) hInsertAfter = (nil)
trace:x11drv:SWP_DoNCCalcSize (0,0)-(640,480)
trace:x11drv:X11DRV_set_window_pos win 0x10028 window (0,0)-(640,480) client (0,0)-(640,480) style 94000000
trace:x11drv:X11DRV_sync_window_position setting win 2600004 pos 0,0,640x480 after 3 changes=4c
trace:x11drv:X11DRV_set_window_pos mapping win 0x10028
trace:x11drv:X11DRV_SetWindowPos status flags = 1046
trace:x11drv:X11DRV_ConfigureNotify win 0x10028 new X rect 0,0,1280x1024 (event 0,0,1280x1024)
trace:x11drv:X11DRV_ConfigureNotify 0x10028 resizing from (640x480) to (1280x1024)
trace:x11drv:X11DRV_SetWindowPos hwnd 0x10028, after (nil), swp 0,0 1280x1024 flags 80000016
trace:x11drv:SWP_DoWinPosChanging hwnd 0x10028, after (nil), swp 0,0 1280x1024 flags 00001816
trace:x11drv:SWP_DoWinPosChanging current (0,0)-(640,480) style 94000000 new (0,0)-(1280,1024)
trace:x11drv:SWP_DoNCCalcSize (0,0)-(1280,1024)
trace:x11drv:X11DRV_set_window_pos win 0x10028 window (0,0)-(1280,1024) client (0,0)-(1280,1024) style 94000000
trace:x11drv:X11DRV_set_window_pos mapping non zero size or off-screen win 0x10028
trace:x11drv:X11DRV_SetWindowPos status flags = 1006
trace:x11drv:X11DRV_ConfigureNotify win 0x10028 new X rect 0,0,640x480 (event 0,0,640x480)
trace:x11drv:X11DRV_ConfigureNotify 0x10028 resizing from (1280x1024) to (640x480)
trace:x11drv:X11DRV_SetWindowPos hwnd 0x10028, after (nil), swp 0,0 640x480 flags 80000016
trace:x11drv:SWP_DoWinPosChanging hwnd 0x10028, after (nil), swp 0,0 640x480 flags 00001816
trace:x11drv:SWP_DoWinPosChanging current (0,0)-(1280,1024) style 94000000 new (0,0)-(640,480)
trace:x11drv:SWP_DoNCCalcSize (0,0)-(640,480)
trace:x11drv:X11DRV_set_window_pos win 0x10028 window (0,0)-(640,480) client (0,0)-(640,480) style 94000000
trace:x11drv:X11DRV_set_window_pos mapping non zero size or off-screen win 0x10028
trace:x11drv:X11DRV_SetWindowPos status flags = 1006
trace:x11drv:X11DRV_Expose win 0x10028 (2600004) 0,0 640x480
fixme:mmtime:timeBeginPeriod Stub; we set our timer resolution at minimum
fixme:dsound:IDirectSoundImpl_SetCooperativeLevel level=DSSCL_PRIORITY not fully supported
fixme:ddraw:Main_DirectDraw_SetCooperativeLevel (0x403d7cb8)->(00010028,00000011)
trace:x11drv:X11DRV_ShowWindow hwnd=0x10028, cmd=5, wasVisible 1
fixme:xrandr:X11DRV_XRandR_SetCurrentMode Cannot change screen BPP from 32 to 8
trace:x11drv:X11DRV_handle_desktop_resize desktop 0x10020 change to (640x480)
trace:x11drv:X11DRV_set_window_pos win 0x10020 window (0,0)-(640,480) client (0,0)-(640,480) style 96000000
trace:x11drv:X11DRV_set_window_pos mapping non zero size or off-screen win 0x10020
trace:x11drv:X11DRV_SetWindowPos hwnd 0x10028, after (nil), swp 0,0 640x480 flags 00000014
trace:x11drv:SWP_DoWinPosChanging hwnd 0x10028, after (nil), swp 0,0 640x480 flags 00001814
trace:x11drv:SWP_DoWinPosChanging current (0,0)-(640,480) style 94000000 new (0,0)-(640,480)
trace:x11drv:X11DRV_set_window_pos win 0x10028 window (0,0)-(640,480) client (0,0)-(640,480) style 94000000
trace:x11drv:X11DRV_set_window_pos mapping non zero size or off-screen win 0x10028
trace:x11drv:X11DRV_SetWindowPos status flags = 1807
fixme:xrandr:X11DRV_XRandR_SetCurrentMode Cannot change screen BPP from 32 to 8
trace:x11drv:X11DRV_handle_desktop_resize desktop 0x10020 change to (640x480)
trace:x11drv:X11DRV_set_window_pos win 0x10020 window (0,0)-(640,480) client (0,0)-(640,480) style 96000000
trace:x11drv:X11DRV_set_window_pos mapping non zero size or off-screen win 0x10020
fixme:x11drv:X11DRV_DDHAL_CreatePalette stub
fixme:ddraw
IB_DirectDrawSurface_Blt dwFlags DDBLT_WAIT and/or DDBLT_ASYNC: can't handle right now.
trace:x11drv:X11DRV_CreateBitmap (0xa8) 640x480 24 bpp
trace:x11drv:GrabWndProc hwnd=0x10028, grab=1
trace:x11drv:GrabWndProc X11 window: 39845892
fixme:mmtime:timeBeginPeriod Stub; we set our timer resolution at minimum
trace:x11drv:X11DRV_Expose win 0x10028 (2600004) 0,0 640x480
trace:x11drv:X11DRV_Expose win 0x10028 (2600004) 0,0 640x480
trace:x11drv:X11DRV_SetupXIM X display of IM = 0x780de978
trace:x11drv:X11DRV_SetupXIM Using C locale of Input Method
trace:x11drv:X11DRV_SetupXIM ximStyles->count_styles = 2
trace:x11drv:X11DRV_SetupXIM ximStyles[0] = XIMPreeditNone
trace:x11drv:X11DRV_SetupXIM ximStyles[1] = XIMPreeditNothing
trace:x11drv:X11DRV_SetupXIM Setting Style: ximStyleRoot = STYLE_ROOT
trace:x11drv:X11DRV_SetupXIM No callback style avalable
trace:x11drv:X11DRV_SetupXIM X display of IM = 0x780f6cc0
trace:x11drv:X11DRV_SetupXIM Using C locale of Input Method
trace:x11drv:X11DRV_SetupXIM ximStyles->count_styles = 2
trace:x11drv:X11DRV_SetupXIM ximStyles[0] = XIMPreeditNone
trace:x11drv:X11DRV_SetupXIM ximStyles[1] = XIMPreeditNothing
trace:x11drv:X11DRV_SetupXIM Setting Style: ximStyleRoot = STYLE_ROOT
trace:x11drv:X11DRV_SetupXIM No callback style avalable
fixme:mmtime:timeBeginPeriod Stub; we set our timer resolution at minimum
fixme:mmtime:timeEndPeriod Stub; we set our timer resolution at minimum
err:dsound
SOUND_MixOne underrun on sound buffer 0x403c78d8
fixme:mmtime:timeEndPeriod Stub; we set our timer resolution at minimum
fixme:mmtime:timeEndPeriod Stub; we set our timer resolution at minimum
fixme:mmtime:timeEndPeriod Stub; we set our timer resolution at minimum
trace:x11drv:GrabWndProc hwnd=0x10028, grab=0
trace:x11drv:X11DRV_handle_desktop_resize desktop 0x10020 change to (1280x1024)
trace:x11drv:X11DRV_set_window_pos win 0x10020 window (0,0)-(1280,1024) client (0,0)-(1280,1024) style 96000000
trace:x11drv:X11DRV_set_window_pos mapping non zero size or off-screen win 0x10020
trace:x11drv:X11DRV_Expose win 0x10028 (2600004) 0,0 640x480
trace:x11drv:X11DRV_SetWindowPos hwnd 0x10026, after (nil), swp 0,0 0x0 flags 00000097
trace:x11drv:SWP_DoWinPosChanging hwnd 0x10026, after (nil), swp 0,0 0x0 flags 00001897
trace:x11drv:SWP_DoWinPosChanging current (0,0)-(0,0) style 84000000 new (0,0)-(0,0)
trace:x11drv:X11DRV_set_window_pos win 0x10026 window (0,0)-(0,0) client (0,0)-(0,0) style 84000000
trace:x11drv:X11DRV_SetWindowPos status flags = 1807
trace:x11drv:destroy_whole_window win 0x10026 xwin 2600003
trace:x11drv:X11DRV_SetWindowPos hwnd 0x10022, after (nil), swp 0,0 0x0 flags 00000097
trace:x11drv:SWP_DoWinPosChanging hwnd 0x10022, after (nil), swp 0,0 0x0 flags 00001897
trace:x11drv:SWP_DoWinPosChanging current (0,0)-(0,0) style 84000000 new (0,0)-(0,0)
trace:x11drv:X11DRV_set_window_pos win 0x10022 window (0,0)-(0,0) client (0,0)-(0,0) style 84000000
trace:x11drv:X11DRV_SetWindowPos status flags = 1807
trace:x11drv:destroy_whole_window win 0x10022 xwin 2600001
I've got nothing fancy in my wine-config, except maybe
[AppDefaults\\ra95.exe\\x11drv]
"DXGrab" = "Y"
The above is for making the keyboard work in the game.
I can post the whole file if needed.
Tips for making this great game run more smoothly is greatly appreciated!
If nothing else works, I'll guess I'll give freecnc or cedega a try.
Thanks!
Tomas412