суббота, 22 августа 2009 г.

Linux, Настройка DirectX под wine

Скажу сразу - у меня так и не заработало :(
Как сказал yaleks с linuxforum: "D3D нормально работает только с драйверами nVidia". Не знаю - прав он или нет, но у меня на встроенной Intel GMA 950 явные проблемы с Direct3D.

Хочу похвалиться - моё руководство, наверное, одно из полных в интернете =D
Ну, это я для виду, конечно. На самом деле тут фактически текст любого стандартного руководства установки DirectX в wine, но с парой моих замечаний.
Руководств в интернете много, в том числе и на blogspot.com, так что не буду цитировать что откуда взял - надеюсь они GNU GPL ^_^

Итак, поехали.

Способ 1, Простой
Подсказал yaleks с linuxforum. Заключается он в общем-то в двух командах:

wget http://www.kegel.com/wine/winetricks
sh winetricks d3dx9

Первая - скачивает на ваш компьютер свежую версию файла winetricks. Вторая запускает его с параметром установки DirectX. Можно запустить без параметра - тогда вам будет список приложений на выбор. Кроме d3dx9 советую ещё выбрать Gecko.

* для работы скрипта нужны такие утилиты как unzip и ещё парочка - при запуске скрипта он вам напишет об отсутствующих

Вот и всё - теперь осталось подождать, пока скрипт скачает свежий DirectX и установит его. А дальше проверяйте на работоспособность в играх :)

Способ 2, Ручками, ручками, ручками...
Ну тут всё понятно. Когда автоматика подводит - переходим в ручной режим управления :)
Все команды выполняются от имени пользователя, который будет работать с wine. Никаких sudo и прочих консолей из под root'a.

а) Для надёжности часто рекомендуют удалить все ваши текущие настройки wine. Что ж - давайте сделаем это:
rm -dr ~/.wine

б) Запустите из консоли WineConfigurator:
winecfg
Закройте его :)

* если у вас проблемы со шрифтами не забудьте скопировать их из "/windows/fonts" вашей Windows в папку "~/.wine/drive_c/windows/fonts", а лучше в "/usr/share/wine/fonts"

в) Заходим в "~/.wine/drive_c/windows/system32"
Туда, во-первых, копируем из папки Windows два файла:
mscoree.dll и streamci.dll
Во-вторых, удаляем оттуда такие файлы:
d3d8.dll d3d9.dll ddraw.dll dsound.dll dsound.vxd quartz.dll dxdiagn.dll

г) Снова запустите из консоли WineConfigurator:
winecfg
Откройте вкладку "Библиотеки" (Librares). В списке найдите (впишите) файл d3d8 и нажмите "Добавить". После чего выделите файл в списке и нажмите редактировать. В открывшемся окне выберите "Сторонняя (Windows)" (native).

После чего вы должны проделать это с этими библиотеками:
d3d9, d3dim, d3drm, d3dx8, d3dxof, dciman32, ddrawex, devenum, dinput, dinput8, dmband, dmcompos, dmime, dmloader, dmscript, dmstyle, dmsynth, dmusic, dplay, dplayx, dpnaddr, dpnet, dpnhpast, dswave, dxdiagn, mscoree, quartz и streamci

Страшно? :)
Тогда можно попробовать обойтись без этой ручной работы. Закройте конфигуратор. Откройте файл:
~/.wine/user.reg
И в конец файла добавьте такой кусок:

[Software\\Wine\\DllOverrides] 1196330736
"d3d8"="native"
"d3d9"="native"
"d3dim"="native"
"d3dx8"="native"
"d3dxof"="native"
"dciman32"="native"
"ddrawex"="native"
"devenum"="native"
"dinput"="native"
"dinput8"="native"
"dmband"="native"
"dmcompos"="native"
"dmime"="native"
"dmloader"="native"
"dmscript"="native"
"dmstyle"="native"
"dmsynth"="native"
"dmusic"="native"
"dplay"="native"
"dplayx"="native"
"dpnaddr"="native"
"dpnet"="native"
"dpnhpast"="native"
"dswave"="native"
"dxdiagn"="native"
"mscoree"="native"
"quartz"="native"
"streamci"="native"

д) Снова запустите из консоли WineConfigurator (если добавляли список через файл user.reg):
winecfg

Запустите установщик DirectX. Внимание! Он должен лишь распаковать файлы DirectX в нужную папку для последующей установки. Т.е. файл "directx_***200*_redist.exe".

Теперь в конфигураторе wine на вкладке "Приложения" выберите файл DXSETUP.exe из папки, в которую вы распаковали. И укажите внизу в качестве системы Windows2000.

е) Далее, собственно, надо запустить установщик DirectX из консоли:
wine DXSETUP.exe

Но! Тут у многих возникает ошибка - вы нажимаете Установить, Далее и установщик пишет что-то типа "Не могу найти файл mscorees.dll, переустановите framework". Файла такого, к слову, в Windows не существует вовсе.
Решается это проблема запуском файла DXSETUP.exe из консоли вот таким образом:
WINEDLLOVERRIDES=mscoree="" wine dxsetup.exe

Так что если у кого появилась ошибка - переустановите ещё раз.

ж) Снова запустите из консоли WineConfigurator:
winecfg

Снова перейдите на вкладку библиотеки и выставьте вот этим пяти файлам статус "Встроенная (Wine)" (builtin):
d3d8, d3d9, ddrawex, dinput, dinput8

з) Собственно всё. Если всё встало правильно - у вас должен появиться файл
~/.wine/drive_c/windows/system32/dxdiag.exe
Запустите его из консоли. И попробуйте пройти тесты на DirectDraw и Direct3D.

Ещё диагностика DirectX у многих пишет нет файла "ddrawex.dll". Скачать его можно отсюда: www.dlldump.com
Поместить нужно сюда:
~/.wine/drive_c/windows/system32/

Разные советы:
а) Запускать игры лучше всего с "диска С:". Т.е. из вашей папки "~/.wine/drive_c".
Поэтому если вы хотите запустить уже установленную игру на ваш NTFS-диск, надо примонтировать каталог игр на NTFS-диске в папку wine, такой командой:
mount -o bind /games/on/ntfs/disk ~/.wine/drive_c/Games

б) DaemonTools'a в Линуксе наверное нет (без понятия), но если вам надо виртуальный CD - зайдите в winecfg, там в раздел Дисков и создайте новый диск. В расширенных свойствах укажите тип CD-ROM и выберите любую папку, например "/media/virtual-cd". После чего останется примонтировать в неё ваш iso-образ с игрой:
mount -t iso9660 /your/cd/image.iso /media/virtual-cd -o loop


Если что-то так и не получилось или что-то не работает - не пишите мне в комментариях. Обратитесь на linuxforum.ru - вам там наверняка помогут ;)

Если вам помогла эта статья - оставьте комментарий! Они доступны даже не зарегистрированным пользователям.

За совет по быстрой установке спасибо yaleks.

Комментариев нет: