LINUX.ORG.RU
ФорумGames

La2 c4 в wine


0

0

игра(не wine, а именно игра) выдаёт ошибку: You have triggered a bug in the DirectX 9.0 runtime. Please install DirectX 8.1b (or later) for a fix. See Release Notes for instructions on how to obtain it.

в упор не представляю, чё за нафиг, и как с ним бороться... не подскажете?

Ответ на: комментарий от vovic

нет... по этой мануалке собственно и ставил...

Buregon
() автор топика

Для весии 0.9.35.
I. Исправляет указанный тобой баг. Нашёл этот патч на просторах инета.

--- ./dlls/wined3d/device.c    2007-03-17 04:01:28.000000000 +0300
+++ ./dlls/wined3d/device.c    2007-03-17 04:02:17.000000000 +0300
@@ -4305,6 +4305,7 @@
          This->stateBlock->streamIsUP = FALSE;
     }
     pIB = This->stateBlock->pIndexData;
+    if (!pIB) return WINED3D_OK;
     vbo = ((IWineD3DIndexBufferImpl *) pIB)->vbo;
     TRACE("(%p) : Type=(%d,%s), min=%d, CountV=%d, startIdx=%d, countP=%d\n", This,

II. Исправляет баг с мышкой: при вращении камеры, курсор не
возвращался в центр и упирался в границы экрана. Написал я.
Это аццкий хак и может "поломать" поддежку других игр, так
что для активации хака создайте ключик
HKEY_CURRENT_USER\Software\Wine\DirectInput\lineage2_mousewarp_hack
с любым значением.

*** ./dlls/dinput/dinput_main.c	2007-04-14 20:08:04.000000000 +0600
--- ./dlls/dinput/dinput_main.c	2007-04-16 08:33:35.000000000 +0600
***************
*** 42,47 ****
--- 42,48 ----
  #include "winbase.h"
  #include "winuser.h"
  #include "winerror.h"
+ #include "winreg.h"
  #include "dinput_private.h"
  
  WINE_DEFAULT_DEBUG_CHANNEL(dinput);
***************
*** 62,74 ****
--- 63,86 ----
  
  HINSTANCE DINPUT_instance = NULL;
  
+ BOOL lineage2_mousewarp_hack = FALSE;
+ 
  BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserv)
  {
+     HKEY  reg_key = 0;
+     DWORD key_size;
+ 
      switch(reason)
      {
        case DLL_PROCESS_ATTACH:
          DisableThreadLibraryCalls(inst);
          DINPUT_instance = inst;
+ 
+         if (!RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\DirectInput", &reg_key))
+         {
+             if (!RegQueryValueExA(reg_key, "lineage2_mousewarp_hack", 0, NULL, NULL, &key_size))
+                 lineage2_mousewarp_hack = TRUE;
+         }
          break;
        case DLL_PROCESS_DETACH:
          break;
*** ./dlls/dinput/dinput_private.h	2007-04-14 20:08:04.000000000 +0600
--- ./dlls/dinput/dinput_private.h	2007-04-16 08:00:17.000000000 +0600
***************
*** 54,59 ****
--- 54,61 ----
  
  extern HINSTANCE DINPUT_instance;
  
+ extern BOOL lineage2_mousewarp_hack;
+ 
  extern HHOOK set_dinput_hook(int hook_id, LPVOID proc);
  
  #endif /* __WINE_DLLS_DINPUT_DINPUT_PRIVATE_H */
*** ./dlls/dinput/mouse.c	2007-04-14 20:08:04.000000000 +0600
--- ./dlls/dinput/mouse.c	2007-04-16 08:16:19.000000000 +0600
***************
*** 324,330 ****
                  wdata = pt1.y;
              }
  
!             This->need_warp = (pt.x || pt.y) && dwCoop & DISCL_EXCLUSIVE;
              break;
          }
          case WM_MOUSEWHEEL:
--- 324,337 ----
                  wdata = pt1.y;
              }
  
!             if (lineage2_mousewarp_hack)
!             {
!                 if (This->m_state.rgbButtons[1])
!                     This->need_warp = TRUE;
!                 else
!                     This->need_warp = (pt.x || pt.y) && dwCoop & DISCL_EXCLUSIVE;
!             } else
!                 This->need_warp = (pt.x || pt.y) && dwCoop & DISCL_EXCLUSIVE;
              break;
          }
          case WM_MOUSEWHEEL:

Deleted
()
Ответ на: комментарий от Deleted

Для свежевышедшего Wine v0.9.36 работают эти же патчи.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.