Показать сообщение отдельно
Старый 06.01.2025, 20:28   #4
PSX Planet Elite Supporter
 
Аватар для steeldragon
 
Регистрация: 19.03.2024
Пол: Мужской Мужской
Сообщений: 191
steeldragon репутация неоспоримаsteeldragon репутация неоспоримаsteeldragon репутация неоспоримаsteeldragon репутация неоспоримаsteeldragon репутация неоспоримаsteeldragon репутация неоспоримаsteeldragon репутация неоспоримаsteeldragon репутация неоспоримаsteeldragon репутация неоспоримаsteeldragon репутация неоспоримаsteeldragon репутация неоспорима
По умолчанию Re: Ответ: Heavy Metal F.A.K.K.2 / Тяжёлый металл 2000 (Лицензия)             

А я вот пытаюсь запустить нативную Linux-версию. И она даже работает*!
Так что, возможно, единственный во всём интернете работающий гайд по запуску Linux-игр от Loki Entertainment! (и прочих похожих).
Уточняю: Этим играм не нравятся современные "mesa Gallium3D" драйверы.

1) Все игры 32-x битные, и библиотеки, нам нужные, тоже такие же. Я не буду рассказывать, как устанавливается поддержка 32-х битности и все необходимые библиотеки...

2) Вам нужна старая libX11, иначе игра выпадет в SIGSEGV при запуске. У меня работают версии 1.6.2 и 1.6.3. Скомпилируйте сами и укажите на нее через LD_LIBRARY_PATH.

3) Вам придётся компилировать отдельные пропатченные библиотеки mesa:
- Нужна версия 24.2.6 или выше

4) Во-первых, нужно убрать LDFLAGS, если они выставлены, иначе игра выпадет в SIGSEGV при запуске. По-моему, виноваты "-z,relro,-z,now" но я могу быть неправ.
До компиляции: export LDFLAGS=""

5) Во-вторых, нужно коммпилировать clang-ом и выставить флаг -stdlib=libc++ (не забываем, нужна 32-х битная версия этой libc++. У меня заработала версия 17.0.6), иначе игра выпадет в SIGSEGV при запуске.
До компиляции:
export CC="clang -m32"
export CXX="clang++ -m32"
export CXXFLAGS+="-stdlib=libc++"

6) В-третьих, нужно отключить LLVM, иначе mesa не скомпилируется.
В "meson setup":
-D llvm=disabled

7) В-четвёртых, найдите файл src/mesa/main/teximage.c в исходниках mesa и поправьте его. Иначе (хором) игра выпадет в SIGSEGV при запуске.
Нам нужна функция _mesa_TexImage2D. В ней нужно изменить вызов teximage_err на teximage_no_error.
В версии 24.2.6 это строка 3413:
teximage_no_error(ctx, GL_FALSE, 2, target, level, internalFormat, width, height, 1,

8) Компилируем. Загружаем через LD_LIBRARY_PATH и LIBGL_DRIVERS_PATH.
Пример:
export LD_LIBRARY_PATH="/opt/lib32-libx11-1.6.2/lib32:/opt/lib32-mesa-lokicompat/lib32"
export LIBGL_DRIVERS_PATH="/opt/lib32-mesa-lokicompat/lib32/dri"

9) Игра запускается! Правда, нет звука. Вам понадобится совместимость с OSS.
Если у вас идёт звук через ALSA (скорее всего нет, но чего только не бывает), то загрузите libaoss.so через LD_PRELOAD (сначала, конечно, нужен установленный 32-х битный alsa-oss):
Пример:
LD_PRELOAD="/usr/lib32/libaoss.so" ./fakk2

10) Всё?

*после всего вышеперечисленного, правда, играть уже как-то не особенно хочется...

P.S. Linux-версия FAKK2 выложена в отдельной теме.

Последний раз редактировалось steeldragon; 03.07.2025 в 22:38.
steeldragon вне форума  
Ответить с цитированием