Запуск Touhou в Linux

Материал из Touhou Wiki
Перейти к навигации Перейти к поиску

Почти все части Touhou достаточно неплохо идут под знаменитым «неэмулятором» wine, начиная с версии 1.0.1.

Обязательная часть

Как запускать Touhou

Сперва необходимо войти в каталог, где находится исполняемый файл. В отличии от wine, в ОС Windows этот пункт выполнялся по умолчанию. Что-то вроде:

% cd ~/.wine/drive_c/thXX

Ну и потом запускаем саму игру.

% LANG=ja_JP.UTF-8 WINEDEBUG=-all wine thXX.exe
  • LANG ставить не обязательно, просто на всякий случай что бы не было проблем с локалью, кодировкой и т. д. Так же советуем поставить японские шрифты.
  • WINEDEBUG — управляет выводом дебаггера. В нашем случае «=-all» отключает дебаггер, но если у вас что-то пошло не так (не запускается игра, не работает звук, etc.), советуем не упоминать о дебаггере при запуске, возможно у вас будет шанс найти нечто полезное в логе, что приведёт к решению возникшей проблемы.

Звук

Wave-звуки в Touhou звучат и без «танцев с бубном», а вот с MIDI не все так гладко. Приведенный рецепт основан на информации с winehq.org и был опробован под Ubuntu 10.10 и wine 1.2 для игры EoSD.
Необходимо поставить пакет fluidsynth. С ним вместе ставится графический фронтенд Qsynth (если не поставился автоматически, ничто не мешает сделать это вручную), с помощью которого следует настроить fluidsynth на взаимодействие с alsa вместо jack:

  • во вкладке MIDI в опции «Драйвер MIDI» выбираете «alsa_seq»;
  • во вкладке «Звук» в пункте «Звуковой драйвер» ставите «alsa»;
  • во вкладке «Файлы SF2» жмете «Открыть…» и выбираете файл /usr/share/sounds/sf2/FluidR3_GM.sf2 (поиск начинается сразу с этой папки, так что не промахнетесь).

Всё, жмете «Ок», дожидаетесь, пока запустится движок и можно запускать игру.

У данного способа есть один минус - он довольно требователен к железу. Можно попробовать вместо fluidsynth поставить движок timidity. К сожалению, штука эта малость устаревшая (что не мешает ей справляться с возложенными задачами), поэтому запускать придется в консоли (из-под рута), командой timidity -iA -B2,8 -Os, а после выхода из игры - убивать через всё ту же консоль или диспетчер процессов.

Видео

  • Возможны проблемы с прозрачностью/отображением текстур. Автор статьи в английской Touhou Wiki советует почитать bug 10408
  • Могут возникнуть проблемы с полноэкранным режимом. Это зависит от вашего оконного менеджера, DE, настроек wine, настроек видео-драйвера и его версии.

Проблемы с конкретными частями

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

Прежде чем применять данные рекомендации, обновите Wine и видеодрайвер до самой свежей версии: скорее всего ваша проблема там уже исправлена.

Immaterial and Missing Power

Нерабочий config.exe, который впринципе и под ОС windows не работает как надо. Советуем взять эту версию конфига. Кроме того, автор английской статьи советует проследовать по следующей ссылке: bug 13554

В полноэкранном режиме изображение «мигает», а сама игра работает крайне медленно. Проблема может быть исправлена в конфигураторе (config_e.exe):

  • либо используйте оконный режим, т.е. выключите опцию Fullscreen,
  • или включите опцию 16bit color.

The Embodiment of Scarlet Devil

В полноэкранном режиме не достигается или игнорируется лимит в 60 FPS (bug 13085). Проблема решается за счёт изменения разрешения рабочего пространства до 640х480 и запуска игры в оконном режиме. Советуем пользоваться xrandr -s 640x480, а после выхода из игры xrandr -s <ваше стандартное разрешение>.

Как вариант, если вы пользуетесь проприетарным драйвером от nvidia, то можно попробовать установить для __GL_SYNC_TO_VBLANK значение 1.

Если же используется драйвер ATI fglrx, в Catalyst Control Center жмём в 3D — More Settings и у параметра «Wait for vertical refresh» перемещаем ползунок в право до конца, тем самым применяя значение «Always On».

Perfect Cherry Blossom

  • Во время паузы изображение на экране портится.
  • Также в начале каждого уровня при полноэкранном режиме лазеры МарисыБ при движении «разрываются», и точка «разрыва» передвигается вверх экрана. Если это сильно мешает, можно включить вертикальную синхронизацию, как указано выше.
  • Управление либо не работает совсем, или залипает на какой-то из кнопок (wine 1.7.x).
    • В конфигураторе (custome.exe) включите опцию Don't use DirectInput for pad input.
    • Если доступен только японский конфигуратор (custom.exe), отметьте там опцию со словами DirectInput (она должна быть 4-ой сверху в левой колонке).

Mountain of Faith, Subterranean Animism

Для запуска в стабильной версии wine вам потребуется родная виндовая библиотека d3dx9_36.dll. Найти её можно в Гугле или у себя в ОС Windows, если имеется. Для дополнительных сведений см. bug 13297. Текущая нестабильная версия wine (на момент написания статьи — 1.1.10) позволяет запускать MoF и SA без установки дополнительных библиотек.

Scarlet Weather Rhapsody

Так же как Mountain of Faith и Subterranean Animism, Scarlet Weather Rhapsody ранее падала при запуске без d3dx9_36.dll. Но даже не смотря на наличие этой библиотеки, жила не на много дольше чем без неё. Поподробней можно почитать здесь bug 13490

Однако на данный момент уже существует патч для SWR и Hisotensoku, исправляющий эту ошибку: http://hisouten.koumakan.jp/wiki/Linux_support

С английским патчем (SWREnglishTranslation-v1_1.exe) игра вылетает при запуске с ошибкой

Could not hook into th105.exe

Do you have GameGuard or something running?

Текст ошибки в консоле:

err:module:import_dll Loading library d3dx9_33.dll (which is needed by L"Z:\\home\\games\\th\\th105\\th105.exe") failed (error c000007b).

err:module:LdrInitializeThunk Main exe initialization for L"Z:\\home\\games\\th\\th105\\th105.exe" failed, status c0000135

Как и намекает консоль, бинарник падает из-за библиотеки d3dx9_33.dll. По-умолчанию Wine использует свою собственную реализацию DirectX, которая явно не дружит с патчем. Проблему можно решить с помощью аналогичной библиотеки из оригинального DirectX. Для этого достаточно скачать установщик с официального сайта, распаковать его, вытащить d3dx9_33.dll из архива APR2007_d3dx9_33_x86.cab и скопировать файл в каталог с игрой.

Phantasmagoria of Flower View

  • испорченное изображение в концовке или
  • вылет с ошибкой после финального уровня.

Проблема наблюдается с проприетарным драйвером NVidia и Wine 1.6.x/1.7.x.

К сожалению, окончательное решение неизвестно, однако вероятность вылета можно значительно уменьшить, включив в конфигураторе (custome.exe) опцию Load BGM into memory. Однако с этой опцией выбор композиции в Музыкальной комнате (Music Room) становится невозможным.

PC-98

Под Linux, BSD и другие UNIX-подобные семейства, использующие X-сервер, а также macOS, много лет существует свободный порт эмулятора Neko Project II, xnp2. Он позволяет эмулировать PC-98 непосредственно на Linux/BSD, без wine, избегая ситуации «эмулирования» эмулятора.

xnp2 не предоставляет готовые к запуску бинарники или пакеты[1], но имеет мало зависимостей и легко собирается из исходников на машинах любого возраста.
Приводимая ниже инструкция актуальна для Ubuntu 18.04.

Подготовка к сборке

Для сборки xnp2 необходимы следующие компоненты:

Установите их с помощью пакетного менеджера своей системы. Для Ubuntu установить все зависимости можно с помощью следующей команды:

sudo apt install build-essential nasm checkinstall libsdl1.2-dev libsdl-mixer1.2-dev libgtk2.0-dev libxxf86vm-dev

Установка

xnp2 имеет GitHub-репозиторий и сайт со стабильными релизами; однако, на момент написания статьи, последний стабильный релиз может не работать с gcc6.1+ на новых системах, поэтому рекомендуется скачать код с GitHub:

git clone https://github.com/nonakap/xnp2.git


после чего перейти в каталог x11 и запустить конфигуратор с флагом --enable-ia32 (это строго обязательно для Touhou-конфигурации):

cd xnp2/x11
./autogen.sh
./configure --enable-ia32

Конфигуратор проверит, всё ли готово для сборки, укажет, каких программ или библиотек в системе не хватает. Если он закончил работу без ошибок, введите в том же каталоге:

make

после чего эмулятор будет установлен в систему и доступен по команде xnp2

Конфигурация

Рекомендуемые настройки для xnp2

Обратите внимание, что для применения настроек нужно перегружать эмулятор через меню Emulator>Reset
При первом запуске нужно установить шрифт через меню Emulator>Font.... Подойдёт BMP-шрифт от эмулятора Anex86, вкладываемый во многие сборники игр Touhou, в крайнем случае можно получить его здесь.
Загрузить образ жёсткого диска можно через меню HardDisk>IDE0-0>Open...
Набор настроек для эмулятора во многом зависит от особенностей Вашего компьютера, и наиболее подходящию конфигурацию нужно подобрать.
Наиболее универсальное решение (меню Emulator>Configure):

  • увеличить количество ядер CPU хотя бы до 10 (лучше 20, если у вас не слабая машина)
  • увеличить частоту дискредитации до 44 кГц
  • установить буфер в 1000 мс
  • оставить галочку на Disable MMX
  1. Пакет xnp2 есть в AUR, но его конфигурация не подходит для Touhou ввиду отсутствия поддержки IA-32, которая задаётся при ручной сборке

Полезные приёмы

Переназначение клавиш

Если игра не позволяет переназначить кнопки, это можно сделать и средствами системы. Самый простой способ — воспользоваться командой xmodmap (эта утилита уже не является стандартной, но её всегда можно поставить отдельно).

Переназначение делается простой командой

xmodmap -e "keycode {код_кнопки} = {новое_значение}"

или

xmodmap -e "keysym {название_кнопки} = {новое_значение}"

Например, чтобы подменить кнопку «x» кнопкой «a», достаточно сказать:

xmodmap -e "keysym a = x"

Код и название любой кнопки можно узнать с помощью утилиты xev: запустите её и в появившимся окне нажмите интересующую вас клавишу. Подробная информация о клавише печатается в терминале, например, для левого Alt'а будет выведено:

KeyPress event, serial 34, synthetic NO, window 0x3a00001,
    root 0x26e, subw 0x0, time 12483658, (-491,-225), root:(60,188),
    state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

Т.е. у левого Alt'а keycode равен 64, а keysym — «Alt_L». Чтобы подменить его, введите команду

xmodmap -e "keysym Alt_L = x"

или

xmodmap -e "keycode 64 = x"

Теперь в игре можно активировать бомбу левой кнопкой Alt.

Обратите внимание, что подмена действует на все приложения в текущей сессии. Сбросить подмену можно утилитой setxkbmap (может быть, придётся её ставить отдельно):

$ xmodmap -e "<ваша подмена>"
$ <запуск игры>
$ setxkbmap

или просто восстанавливать конфигурацию по выходу из игры:

$ temp_file=`mktemp`
$ xmodmap -pke > $temp_file
$ xmodmap -e "<ваша подмена>"
$ <запуск игры>
$ xmodmap $temp_file
$ rm $temp_file

AutoFire

Во многих играх серии клавиша «огонь» является кнопкой, а не переключателем, поэтому приходится зажимать её всё время. С помощью xdotool можно сделать это и программно.

Поставьте утилиту средствами вашего дистрибутива. На всякий случай проверим её командой

xdotool keydown z

Эта команда должна послать событие «KeyPress z», т.е. напечатать в терминале бесконечную строчку из букв «z». Нажмите любую клавишу, чтобы остановить вывод.

Теперь надо повесить вызов этой команды на какую-нибудь клавишу.

Самый быстрый способ — через настройку клавиатурных сочетаний вашего DE. Такая настройка находится, обычно, в Settings -> Keyboard -> Shortcuts. Точный способ настройки должен быть описан в документации по вашему DE.

Но можно воспользоваться и универсальной утилитой xbindkeys. Установите её, создайте конфигурационный файл и запишите туда:

"xdotool keydown z"
   a

после чего скажите

xbindkeys -f <конфигурационный файл>

Теперь в игре достаточно один раз нажать кнопку «a», и огонь будет постоянным.

После игры не забудьте прибить xbindkeys командой

killall xbindkeys