Hi, Fallout 3 and maybe other games or D3D apps needs such special settings, this patch should be ok, it is well tested.
This patch is not hack! New wine registry settings: VideoDriver VideoDescription Patch is for current (14.03.2009) git. PS: For Fallout 3 you should use registry settings (or similar): "VideoDescription"="NVIDIA GeForce 9600 GT" "VideoDriver"="nv4_disp.dll" Mirek Slugen
diff -Naur wine.old/dlls/wined3d/directx.c wine/dlls/wined3d/directx.c --- wine.old/dlls/wined3d/directx.c 2008-11-07 18:01:46.000000000 +0100 +++ wine/dlls/wined3d/directx.c 2008-11-07 18:02:05.000000000 +0100 @@ -4247,8 +4247,19 @@ goto nogl_adapter; } - adapter->driver = "Display"; - adapter->description = "Direct3D HAL"; + /* Use VideoDriver registry setting when set */ + if(wined3d_settings.video_driver) { + adapter->driver = wined3d_settings.video_driver; + } else { + adapter->driver = "Display"; + } + + /* Use VideoDescription registry setting when set */ + if(wined3d_settings.video_description) { + adapter->description = wined3d_settings.video_description; + } else { + adapter->description = "Direct3D HAL"; + } /* Use the VideoRamSize registry setting when set */ if(wined3d_settings.emulated_textureram) @@ -4450,8 +4461,22 @@ This->adapters[0].monitorPoint.x = -1; This->adapters[0].monitorPoint.y = -1; - This->adapters[0].driver = "Display"; - This->adapters[0].description = "WineD3D DirectDraw Emulation"; + + /* Use VideoDriver registry setting when set */ + if(wined3d_settings.video_driver) { + This->adapters[0].driver = wined3d_settings.video_driver; + } else { + This->adapters[0].driver = "Display"; + } + + /* Use VideoDescription registry setting when set */ + if(wined3d_settings.video_description) { + This->adapters[0].description = wined3d_settings.video_description; + } else { + This->adapters[0].description = "WineD3D DirectDraw Emulation"; + } + + /* Use VideoRamSize registry setting when set */ if(wined3d_settings.emulated_textureram) { This->adapters[0].TextureRam = wined3d_settings.emulated_textureram; } else { diff -Naur wine.old/dlls/wined3d/wined3d_main.c wine/dlls/wined3d/wined3d_main.c --- wine.old/dlls/wined3d/wined3d_main.c 2008-10-24 15:13:40.000000000 +0200 +++ wine/dlls/wined3d/wined3d_main.c 2008-11-07 17:48:16.000000000 +0100 @@ -304,6 +304,18 @@ wined3d_settings.allow_multisampling = TRUE; } } + if ( !get_config_key( hkey, appkey, "VideoDriver", buffer, size) ) + { + TRACE("Video Driver name: %s\n",buffer); + wined3d_settings.video_driver = HeapAlloc(GetProcessHeap(), 0, strlen(buffer) + 1); + if(wined3d_settings.video_driver ) strcpy(wined3d_settings.video_driver, buffer); + } + if ( !get_config_key( hkey, appkey, "VideoDescription", buffer, size) ) + { + TRACE("Video Description: %s\n",buffer); + wined3d_settings.video_description = HeapAlloc(GetProcessHeap(), 0, strlen(buffer) + 1); + if(wined3d_settings.video_description ) strcpy(wined3d_settings.video_description, buffer); + } } if (wined3d_settings.vs_mode == VS_HW) TRACE("Allow HW vertex shaders\n"); diff -Naur wine.old/dlls/wined3d/wined3d_private.h wine/dlls/wined3d/wined3d_private.h --- wine.old/dlls/wined3d/wined3d_private.h 2008-10-28 16:02:51.000000000 +0100 +++ wine/dlls/wined3d/wined3d_private.h 2008-11-07 17:56:42.000000000 +0100 @@ -297,6 +297,8 @@ /* Memory tracking and object counting */ unsigned int emulated_textureram; char *logo; + char *video_driver; + char *video_description; int allow_multisampling; } wined3d_settings_t;