пятница, 11 декабря 2009 г.

Мышь в 3D приложениях под wine.

Сейчас многие не очень новые игры с легкостью запускается под wine, но в трехмерных их представителях бывают проблемы с мышью, из-за которых играть становится невозможно.
Я это починил и делюсь как

Я пробовал это решение на двух играх: Aliens versus Predator(3D action) и Clusterball(аркадная леталка)
Проблема примерно в следующем: мышь перемещается только в пределах разрешения экрана, из-за этого нельзя развернуться больше чем на 180 градусов в AvP, а в леталке поворачивать можно только короткими рывками.
Ход действий таков:
Надо скачать архив с исходниками, например так:

wget http://downloads.sourceforge.net/project/wine/Source/wine-1.1.33.tar.bz2?use_mirror=sunet

Потом распаковываем их

tar xf wine-1.1.33.tar.bz2

Переходим в папку с нужном файлом

cd ./wine-1.1.33/dlls/dinput

Создаем здесь файл mouse.patch со следующим содержанием(взят отсюда, там много других еще есть, для определенных игр и т.д.)

--- dlls/dinput/mouse.c_old 2008-03-03 11:14:47.000000000 +0100
+++ dlls/dinput/mouse.c 2008-03-10 19:23:21.000000000 +0100
@@ -306,7 +306,7 @@
wdata = pt1.y;
}

- This->need_warp = (pt.x || pt.y) && dwCoop & DISCL_EXCLUSIVE;
+ This->need_warp = (hook->pt.x<2 || hook->pt.y<2 || hook->pt.x>((2 * This->win_centerX)-2) || hook->pt.y>((2 * This->win_centerY)-2) );
break;
}
case WM_MOUSEWHEEL:

и накладываем патч

patch -p1 mouse.c mouse.patch

Потом переходим в папку с исходниками, и командуем обычные:

./configure
make
sudo make install

Перед make install желательно убедиться, чтобы в системе не был установлен пакет родной wine, если установлен - удалить.
Должно собраться и поставиться без ошибок.
Потом идем в папку с игрой и запускаем как обычно

wine AvP.exe

У меня главное меню запускается в окне, но потом разворачивается на весь экран и работает нормально.

Решение конечно не лучшее, как минимум потому, что не рекомендуется ставить софт из исходников в пакетных дистрибутивах без сборки пакета. Но зато работает.

5 комментариев:

Конкере комментирует...

А если дебку собрать, checkinstall?

triklozoid комментирует...

Идея хорошая, но я не пробовал никогда. Надо попробовать, если получится, то допишу.

braintorch комментирует...

Могу посоветовать вам перед запуском игр под wine заходить на appdb. Это уже давний глюк, лечится путём добавления в ветку реестра "HKCU/Software/Wine/DirectInput" ключа "MouseWarpOverride" со значением "force". Об этом написано здесь: http://appdb.winehq.org/objectManager.php?sClass=version&iId=1183&sAllBugs

aady комментирует...
Этот комментарий был удален автором.
aady комментирует...

MouseWarpOverride - force, не во всех играх помогает. Только патч на wine помогает.