Ubuntu下wine玩Worms World Party

1 篇文章 0 订阅
1 篇文章 0 订阅

http://smilesword.com/
一直很喜欢玩百战天虫之世界大战,但是自从换了Ubuntu之后就木有玩过,后来尝试过wine但是失败了,在网上找了很久终于找到了解决的办法。

so,Follow me.

1.安装wine:sudo apt-get install wine  (注意只能装wine 1.2版本,最新的1.3不支持,暂未找到解决办法)

2.安装百战天虫之世界大战,如果安装时有乱码的话可以使用以下命令:env LANG=zh_CN.UTF-8 wine wwp.exe(如果已经安装过百战天虫之世界大战可以不用重新安装,直接看下一步吧^^)

3.下载wine代码:sudo apt-get source wine1.2 

4.用gedit或vim将以下脚本保存,文件名任意,如wwp_wine.patch

--- dlls/wined3d/swapchain_gdi.c.1.2	2010-07-16 17:05:45.000000000 +0200
+++ dlls/wined3d/swapchain_gdi.c	2010-10-27 19:39:04.000000000 +0200
@@ -101,7 +101,7 @@ void x11_copy_to_screen(IWineD3DSwapChai
 
         hSurfaceDC = front->hDC;
 
-        hDisplayWnd = This->win_handle;
+        hDisplayWnd = GetDesktopWindow();
         hDisplayDC = GetDCEx(hDisplayWnd, 0, DCX_CLIPSIBLINGS|DCX_CACHE);
         if(rc) {
             TRACE(" copying rect (%d,%d)->(%d,%d), offset (%d,%d)\n",
--- dlls/ddraw/main.c.1.2	2010-07-16 17:05:45.000000000 +0200
+++ dlls/ddraw/main.c	2010-10-27 19:46:22.000000000 +0200
@@ -53,7 +53,7 @@ static typeof(WineDirect3DCreate) *pWine
 WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
 
 /* The configured default surface */
-WINED3DSURFTYPE DefaultSurfaceType = SURFACE_UNKNOWN;
+WINED3DSURFTYPE DefaultSurfaceType = SURFACE_GDI;
 
 /* DDraw list and critical section */
 static struct list global_ddraw_list = LIST_INIT(global_ddraw_list);
@@ -766,6 +766,13 @@ static inline DWORD get_config_key(HKEY 
     return ERROR_FILE_NOT_FOUND;
 }
 
+void print_gdi_surface_warning()
+{
+    FIXME("This is a hacked ddraw defaulting to GDI even when opengl surfaces would be used!\n");
+    FIXME("The normal way to default to GDI surfaces is to set \"HKEY_CURRENT_USER\\Software\\Wine\\Direct3D\" to \"gdi\"\n");
+    FIXME("If that works for you then you shouldn't use this hack.\n");
+}
+
 /***********************************************************************
  * DllMain (DDRAW.0)
  *
@@ -839,14 +846,16 @@ DllMain(HINSTANCE hInstDLL,
                 }
                 else if (!strcmp(buffer,"opengl"))
                 {
-                    TRACE("Defaulting to opengl surfaces\n");
-                    DefaultSurfaceType = SURFACE_OPENGL;
+                    TRACE("Not defaulting to opengl surfaces, in spite of the registry setting\n");
+                    print_gdi_surface_warning();
                 }
                 else
                 {
                     ERR("Unknown default surface type. Supported are:\n gdi, opengl\n");
+                    print_gdi_surface_warning();
                 }
             }
+            print_gdi_surface_warning();
         }
 
         /* On Windows one can force the refresh rate that DirectDraw uses by
--- dlls/ddraw/ddraw.c.1.2	2010-07-16 17:05:45.000000000 +0200
+++ dlls/ddraw/ddraw.c	2010-10-27 19:48:54.000000000 +0200
@@ -479,7 +479,8 @@ IDirectDrawImpl_SetCooperativeLevel(IDir
             !(This->devicewindow) &&
             (hwnd != window) )
         {
-            HRESULT hr = IWineD3DDevice_AcquireFocusWindow(This->wineD3DDevice, hwnd);
+            HRESULT hr = IWineD3DDevice_AcquireFocusWindow(This->wineD3DDevice, GetDesktopWindow());
+            FIXME("This is a hacked ddraw drawing to the desktop window instead of the window the app requested!\n");
             if (FAILED(hr))
             {
                 ERR("Failed to acquire focus window, hr %#x.\n", hr);

5.将wwp_wine.patch文件copy如刚才下载的wine1.2的文件夹

6.进入源代码文件夹并执行以下命令:

  

  patch -p0 < wwp_wine.patch
  ./configure 
  make dlls/ddraw dlls/wined3d 
  strip dlls/ddraw/ddraw.dll.so 
  strip dlls/wined3d/wined3d.dll.so 
7.将当前文件夹下的 dlls/ddraw/ddraw.dll.so拷贝到百战天虫之世界大战的安装目录,并重命名为ddraw.dll

   将当前文件夹下的dlls/wined3d/wined3d.dll.so拷贝到百战天虫之世界大战的安装目录,并重命名为wined3d.dll

8. OK,Enjoy the Game!!!O(∩_∩)O~


P.S. 

1.如果遇到声音问题的话(一般都会遇到-_-!),尝试用winetricks安装 devenum.dll和quartz.dll

2.千万不要全屏玩,全屏无法选择武器,玩前请用winecfg将分辨率调到800*600或者你认为合适的~~

3.每玩完一局都要退出一次....呃....你玩了就知道了--

4.不能玩的话再试试用winetricks安装msvcp60.dll

5.再不能玩我也不知道了~~(╯﹏╰)b


解决方法来自http://appdb.winehq.org/objectManager.php?bShowAll=true&bIsQueue=false&bIsRejected=false&sClass=version&sTitle=&sReturnTo=&iId=3905

我加了一点经验和自己的想法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值