Установка DirectX 9.0c в Wine

Перевод статьи twickline, опубликованной в блоге http://wine-review.blogspot.com/2007/11/directx-90c-on-linux-with-wine.html.

Статья рассказывает об установке DirectX9.0c в wine. Возможно кому-нибудь будет интересно.
Замечания и предложения приветствуются.

ЗЫ Простите за мой английский... и за русский тоже :)

Microsoft DirectX это коллекция API для выполнения задач, связанных с мультимедиа, особенно программирования игр и видео на платформе Microsoft. Названия этих API начинается со слова Direct. Например: Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound и так далее. DirectX это общий термин, обозначающий все эти Directчтонибудь API. И этот термин дал название коллекции. За прошедшие годы многие API были изменены и перемещены, так что это соглашение о наименовании больше не действительно. К примеру X заменил Direct в первых частях названий некоторых новых DirectX технологий, таких как XAct, Xinput и т. д.

Direct3D (графический API в составе DirectX) широко используется в разработке компьютерных игр для Microsoft Windows, Microsoft Xbox и Microsoft Xbox 360. Direct3D так-же используется другими приложениями для визуализации и обработки графики, что особенно заметно в инженерных приложениях CAD/CAM, потому что они способны быстро обрабатывать высококачественную 3D графику, используя DirectX-совместимое аппаратное обеспечение. Так как Direct3D это широкоизвестный API в составе DirectX, нередко название DirectX используется вместо Direct3D.

Настройка Wine.

Действия производились с чистой конфигурационной директорией Wine на виртуальном рабочем столе 1024x768

$ winecfg

Как только директория .wine будет создана, запуститься конфигурационная утилита, в которой вы сможете установить параметры виртуального рабочего стола на вкладке Видео. Так-же хорошей идеей будет выбрать Ваш аудио драйвер на вкладке Аудио.

Следующий шаг это установка родной mscoree.dll и streamci.dll в директорию /system32
из установленной Windows.
Перейдите в ~/.wine/drive_c/windows/system32 и переименуйте d3d8, d3d9, ddraw, dsound, dsound.vxd, quartz dlls в *.bak.

Вам будет необходимо поставить большое количество dll, для корректной работы инсталлятора. Ниже приведен полный список dll, которые должны быть установлены.

   "d3d8"="nat ive" 
"d3d9"="native"
"d3dim"="native"
"d3drm"="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"

 Установка Directx

Скачайте DirectX 9.0c November release.

directx_nov2007_redist.exe Извлечет файлы инсталлятора в выбранную Вами директорию.

tom@tuxonfire ~ $ wine directx_nov2007_redist.exe
fixme:advapi:DecryptFileA "z:\\home\\tom\\directx-9\\" 00000000
fixme:midi:OSS_MidiInit Synthesizer supports MIDI in. Not yet supported.
tom@tuxonfire ~ $

Теперь перейдите в директорию, в которую Вы распаковали DirectX и запустите DXSETUP.EXE.

tom@tuxonfire ~ $ cd /home/tom/directx-9
tom@tuxonfire ~/directx-9 $ wine DXSETUP.EXE
fixme:midi:OSS_MidiInit Synthesizer supports MIDI in. Not yet supported.

Запустите winecfg снова и установите d3d8, d3d9, ddrawex, dinut, dinput8 как встроенные wine.

Теперь запустите dxdiag.exe

tom@tuxonfire ~/directx-9 $ cd /home/tom/.wine/drive_c/windows/system32
tom@tuxonfire ~/.wine/drive_c/windows/system32 $ wine dxdiag.exe
fixme:ole:CoInitializeSecurity ((nil),-1,(nil),(nil),1,3,(nil),0,(nil)) - stub!

Теперь мы можем протестировать ddraw, ddraw 3D, D3D8 и D3D9

После удачного тестирования необходимо установить gm.dls для теста Direct Music, этот драйвер поместите в ~/.wine/drive_c/windows/system32/drivers

Вы получите уведомление в system32 d3dx9_24.dll до d3dx9_36.dll установлены, это поможет Вам при запуске игр, которые требуют дополнительных библиотек DirectX.

Теперь Вы имеете возможность запускать многие библиотеки DirectX в режиме native или builtin. К примеру, если игра падает со встроенной библиотекой Wine quartz.dll, Вы можете попробовать запустить ее с оригинальной Windows dll и посмотреть как это улучшит ситуацию.

Не забывайте, что d3d8, d3d9, ddraw будут работать толька как builtin, и во многих случаях Вы должны будете попробовать использовать встроенные dsound и dinput. Кстати, у меня были некоторые успешные попытки запуска (dsound and dinput) в оригинальном режиме Windows... Причина для использования встроенных библиотек это необходимость прямого доступа к Вашему железу. direct music и direct play могут быть использованы в native windows mode в большинстве случаев.