Автор Тема: Как собрать Super Mario 64 для WIN32?  (Прочитано 1275 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 913
  • Happy Games Only!
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« : 09 Январь 2022, 01:21:03 »
Скачал sm64pcBuilder2 отсюда, также установил MSYS2 (32-разрядную). При попытке скачать репозиторий получаю ошибку:


Попробовал установить 64-разрядную версию MSYS2 - все получилось, но игра 64-разрядная. А как все-таки собрать 32-разрядную версию игры? В конце-концов зачем-то дали же на странице загрузки sm64pcBuilder2 ссылку на 32-разрядную версию MSYS2, значит, по идее с ней тоже должно работать? Или как-то можно собрать 32-разрядную версию игры с 64-разрядную версией MSYS2?

UPD: Оказывается, я не тот лог приложил, нужный сейчас уже удалился. Попытался сейчас снова повторно вызвать ошибку - установил 32-разрядную версию MSYS2 (оказывается можно установить 32 и 64-разрядную версию одновременно), сменил папку с MSYS2, попробовал скачать другой репозиторий - все прошло без ошибок. Вообщем, не знаю, что это было, сейчас, получается все само исправилось.

UPD2: Все-таки не получается. Репозиторий-то скачался, но вот когда запустил процесс сборки, то все равно выходит ошибка:


Под 64-битной MSYS2 получается собрать, а под 32-битной - нет.
« Последнее редактирование: 09 Январь 2022, 02:52:18 от Talking_Sword »

Оффлайн cptPauer

  • Пользователь
  • Сообщений: 4178
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #1 : 09 Январь 2022, 08:26:41 »
Я раньше пытался скомпилить под 32бита, но они, видимо, давно это дело тестировали. Мало ли что там лежит, там даже половина сборок из репозиториев не компилится. Видимо, когда-то оно собиралось, но теперь другие зависимости, которых нет для 32бит или другие версии.
В итоге, закончилось тем, что скомпилил под 64 бита какую хотел, а 32 бит нашёл готовую сборку (для WinXP), но старой версии, без HD-моделей и прочего.
Так что, советую скачать скомпиленную и не заморачиваться, слишком много времени уйдёт разобраться, что там сломали и как это провернуть для 32бит.
Цитата
Под 64-битной MSYS2 получается собрать, а под 32-битной - нет.
Это нормально, так у всех.
Но, удачи, если решишь разгрести эту линуксовую мумбу-юмбу. Я когда-то потратил пол дня на это и решил, что не стоит оно того, сгодится и несвежий билд под OpenGL. Без поддержки HD-текстур и моделей, да и чёрт с ними.
« Последнее редактирование: 09 Январь 2022, 08:51:55 от cptPauer »

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 913
  • Happy Games Only!
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #2 : 09 Январь 2022, 16:25:29 »
Я раньше пытался скомпилить под 32бита, но они, видимо, давно это дело тестировали. Мало ли что там лежит, там даже половина сборок из репозиториев не компилится. Видимо, когда-то оно собиралось, но теперь другие зависимости, которых нет для 32бит или другие версии.
Это нормально, так у всех.
Ясно.
Так что, советую скачать скомпиленную и не заморачиваться, слишком много времени уйдёт разобраться, что там сломали и как это провернуть для 32бит.
Да, я такую уже нашел. Там даже есть адаптированая версия для Windows XP. Но это похоже какая-то старая версия - на заставке, например, нет головы Марио, просто текст и демонстрашка на фоне. Нет и дополнительных настроек. Плюс ко всему, на эту игру, на сколько я знаю, есть моды, улучшающие графику. Данная версия собрана без них. А мне бы хотелось их установить.

В принципе, я нашел репозиторий sm64ex на GitHub. Там есть инструкция по сборке для Windows. Но я уже несколько раз раньше пытался собирать кое-какое ПО с открытым кодом, и ни разу ничего не получалось. Тем не менее, попробую в ближайшее время.

Но даже если мне удастся собрать игру, то там еще по идее нужен будет DynOS. Если я правильно понял, то моды работают через него. Судя по сообщениям на экране при сборке 64-разрядной версии игры, этот DynOS устанавливается в виде патча. Я так понимаю, при "самостоятельной" сборке мне придется установить его отдельно?

Кстати, вы не знаете, а есть какие-то моды, ради которых нужно пересобирать игру? Как я прочитал в подсказках в sm64pcBuilder2, моды, работающие через DynOS не требуют пересборки игры для установки. Но может существуют какие-то моды, которые работают не через DynOS и требуют пересборки игры?

Добавлено позже:
Все, кажется я его победил. Сначала попробовал сделать по инструкции, не получилось. Потом, в попытках найти причину, догадался перекачать репозиторий из MSYS2 (до этого использовал репозиторий, скаченный из sm64pcBuilder2) - все заработало сразу и без проблем. После этого решил все-таки постараться установить DynOS. Честно говоря, не имел понятия, как его устанавливать, тем не менее, подсмотрел в sm64pcBuilder2 при сборке 64-разрядной версии игры - DynOS устанавливается коммандой "git apply DynOS.1.1.patch --whitespace=nowarn", файл "DynOS.1.1.patch" нужно предварительно закинуть в скаченный репозиторий. Правда я забыл про "--whitespace=nowarn", была ругань на какие-то пробелы (честно говоря, не в курсе для чего это нужно), но DynOS вроде как установился, попробовал установить улучшенную модель Марио - работает.
« Последнее редактирование: 09 Январь 2022, 19:25:57 от Talking_Sword »

Оффлайн cptPauer

  • Пользователь
  • Сообщений: 4178
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #3 : 10 Январь 2022, 10:02:28 »
@Talking_Sword, можешь поделится готовым билдом? У меня не хватит терпения опять это компилить. В личку, что бы Нинтендо не докапывалась.

Цитата
а есть какие-то моды, ради которых нужно пересобирать игру? Как я прочитал в подсказках в sm64pcBuilder2
Я уже не помню как компилил, но ради модов пересобирать не нужно было, вроде.
HD текстуры неплохие были, которые под оригинал.
Кажется, моды можно было скачать прямо из их билдера.

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 913
  • Happy Games Only!
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #4 : 10 Январь 2022, 15:07:54 »
cptPauer, это оказалось не так уж и трудно сделать, как могло показаться на первый взгляд. Нужно просто все делать по инструкции, четко следуя указаниям. Мне кажется, если следовать указаниям в инструкции, то должно получится с первого раза.

Единственное что, могу дать от себя пару советов:

1. 32-разрядную версию игры можно собрать даже из 64-разрядной версии MSYS2, нужно просто в меню Пуск выбрать ярлык "MSYS2 MinGW x86".
2. Перед выполнением программы make желательно установить DynOS для поддержки модов. Сделать это можно так: скачайте отсюда файл "DynOS.X.X.patch", где "X.X" - номер версии, я взял самую свежую на данный момент версию - 1.1. Закинте в папку со скаченным репозиторием (появится после выполнения "git clone"). Далее, когда дойдете по инструкции до сборки (make), не выполняйте сразу комманду make, сначала введите "git apply DynOS.X.X.patch --whitespace=nowarn" (естественно, без кавычек). После этого уже запускайте make.
3. Если у вас многоядерный процессор, в параметры make желательно написать -j<число> - где <число>, количество ядер вашего процессора умноженное на два, например make -j8 [всякие параметры сборки]. Так мощность вашего процессора будет использоваться более рационально, процесс будет идти гораздо быстрее.
4. Для запуска в Windows XP нужен небольшой костыль. Для начала скачайте этот архив. Откройте исполняемый файл игры каким-нибудь HEX-редактором. Найдите текст "KERNEL32.DLL" с учетом регистра. Замените первую букву на "Z", чтобы получилось "ZERNEL32.DLL". Важно, чтобы в HEX-редакторе был включен режим "overwrite", а не "insert", называться может и по другому, переключается клавишей "Insert". Это нужно для того, чтобы HEX-редактор не вставлял новые символы, увеличивая размер файла, а "забивал" уже существующие.

P.S.: Сразу говорю, я не отказываюсь делиться готовой собраной игрой. Если у вас ничего не получится или вы не захотите разбираться, то отпишитесь прямо здесь, обязательно скину игру. Если получится самостоятельно, то тоже отпишитесь. Просто та игра, которую я сейчас собрал, меня сейчас не совсем устраивает. Во первых, она использует инструкции SSE2, во-вторых, не понимает DirectInput. Я хочу спросить на другом форуме, есть ли легкий способ это исправить.

Оффлайн cptPauer

  • Пользователь
  • Сообщений: 4178
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #5 : 11 Январь 2022, 11:14:52 »
Окей, собралось. С первого раза, на этот раз.
Видимо, раньше дело было в версии MSYS2. 32бит версией криво, но 64битной компилится под 32бит платформу норм.
За советы спасибо, сэкономило время.
Цитата
Во первых, она использует инструкции SSE2, во-вторых, не понимает DirectInput.
Странно, у меня работает DirectInput.
Rumblepad2, например, распознает сразу.
« Последнее редактирование: 10 Февраль 2022, 00:20:15 от cptPauer »

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 913
  • Happy Games Only!
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #6 : 11 Январь 2022, 16:58:58 »
Странно, у меня работает DirectInput.
Rumblepad2, например, распознает сразу.

1. DynOS устанавливали?
2. С какими параметрами собирали? После "make -j<число>" было что-нибудь вроде "WINDOW_API=SDL1 AUDIO_API=SDL1 CONTROLLER_API=SDL1"?
3. У вас в фоне точно не стоит какого-нибудь эмулятора XInput?

Просто я тут немного поэксперементировал, оказалось, что если собрать игру с SDL1, то она начинает поддерживать DirectInput, но устанавка DynOS ломает поддержку SDL1 - игра больше не собирается с параметрами "WINDOW_API=SDL1 AUDIO_API=SDL1 CONTROLLER_API=SDL1".
« Последнее редактирование: 11 Январь 2022, 17:28:56 от Talking_Sword »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5144
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #7 : 11 Январь 2022, 19:04:29 »
устанавка DynOS ломает поддержку SDL1
Потому что они используют SDL2 для контроллера, что видно по патчу. При желании можно переписать под SDL1.
SDL1 древность и лучше не использовать. SDL2 поддерживать DirectInput. У вас не работает контроллер на XP и на системе где компилируете?
UPD: Если речь только об XP, возможна несовместимость с новыми версиями SDL2. Если на Win7 и Win10 тоже не работает, то можете прислать в ЛС вашу неработающую сборку с SDL2 и я проверю совместимость DirectInput на Win10.
« Последнее редактирование: 11 Январь 2022, 19:14:36 от Sharpnull »

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 913
  • Happy Games Only!
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #8 : 11 Январь 2022, 21:38:53 »
У вас не работает контроллер на XP и на системе где компилируете?
UPD: Если речь только об XP, возможна несовместимость с новыми версиями SDL2. Если на Win7 и Win10 тоже не работает, то можете прислать в ЛС вашу неработающую сборку с SDL2 и я проверю совместимость DirectInput на Win10.
У меня на компьютере две системы - Windows 2003 и Windows 7. DirectInput в Super Mario 64 не работает и там и там. В Windows 7, если включить эмулятор джойстика от Xbox 360, то управление джойстиком в игре работает. Но единственный вариант эмуляции, который работает - через драйвер виртуального джойстика (у меня используется ViGEm и программа XOutput). Эмуляция через библиотеку не работает (у игры даже нет зависимости от dll xinput). Под Windows XP не видел эмуляторов джойстика от Xbox 360, которые бы работали через драйвер виртуального джойстика.

Мне кажется, от операционной системы тут ничего не зависит. Игра просто отказвыается принимать ввод от DirectInput-джойстика, если собрана с SDL2. Тем не менее, можете попробовать на своей системе. Ссылку отправил в ЛС.
« Последнее редактирование: 11 Январь 2022, 21:53:08 от Talking_Sword »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5144
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #9 : 12 Январь 2022, 01:31:56 »
Игра просто отказвыается принимать ввод от DirectInput-джойстика, если собрана с SDL2. Тем не менее, можете попробовать на своей системе.
В Win10 x64 работает в режиме DirectInput и XInput. Попробовал на плохом дешёвом геймпаде без XInput и на котором можно выбирать DirectInput/XInput. Я не ставил программ связанных с контроллерами, конечно кроме DirectX.
UPD: Проверил в Win7 SP1 x86, работает также.
« Последнее редактирование: 12 Январь 2022, 02:47:08 от Sharpnull »

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 913
  • Happy Games Only!
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #10 : 12 Январь 2022, 07:47:56 »
Sharpnull, вы проверяли именно ту игру, которую я вам прислал?
UPD: Проверил в Win7 SP1 x86, работает также.
Это максимально странно. Как я уже писал, у меня она на Windows 7 работать с DirectInput отказывается.

Оффлайн cptPauer

  • Пользователь
  • Сообщений: 4178
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #11 : 12 Январь 2022, 11:45:54 »
1. DynOS устанавливали?
Да. Он установился нормально.

2. С какими параметрами собирали?
Без параметров, по-дефолту, ничего не менял. Просто "make"

3. У вас в фоне точно не стоит какого-нибудь эмулятора XInput?
Точно нет.
У меня такого нету, если речь о Xoutput. Если нужно, то в играх пользуюсь x360ce (но тут он не совместим).
И Rumblepad2 не поддерживает xinput сам, значит поддержка DirectInput точно есть.
Игру скомпилил и проверял на Win7 х64.

Скорее всего, у тебя как раз из-за Xoutput проблема. Из-за него бывают косяки, насколько я слышал.

Могу на других ОС проверить и джойстиках, но мне кажется, работать DirectInput будет.

UPD:
« Последнее редактирование: 12 Январь 2022, 15:44:08 от cptPauer »

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 913
  • Happy Games Only!
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #12 : 12 Январь 2022, 19:10:30 »
Скорее всего, у тебя как раз из-за Xoutput проблема. Из-за него бывают косяки, насколько я слышал.
Мне кажется наоборот, чего-то в моей системе не хватает. Я сейчас проверил на двух других компьютерах (не своих) - один с Windows 7, другой с Windows 8.1. Ни на том, ни на другом не работает. Джойстик подключал свой. Но на тех компьютерах особо ни во что не играют, так что там тоже чего-то может не хватать.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5144
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #13 : 12 Январь 2022, 20:39:04 »
вы проверяли именно ту игру, которую я вам прислал?
Да. Вряд ли это влияет, но можно попробовать установить Microsoft Visual C++ 2005-2008-2010-2012-2013-2019-2022 Redistributable Package Hybrid (хотя для MinGW это вроде не нужно) и оффлайн версию DirectX End-User Runtimes (June 2010).
Джойстик подключал свой
Стоит попробовать другой. Это невероятно, но вдруг дело в нём.

Оффлайн cptPauer

  • Пользователь
  • Сообщений: 4178
    • Просмотр профиля
Как собрать Super Mario 64 для WIN32?
« Ответ #14 : 12 Январь 2022, 20:58:40 »
Мне кажется наоборот, чего-то в моей системе не хватает.
Замечу, что везде где я проверял, система была со всеми установленными обновлениями, которые доступны (кроме патчей на Meltdown и Spectre). Последний DirectX и все Visual C++ Redistributable, тоже установлены.

Если ОС не обновлялась, может на что-то влиять. Возможно, какой-нибудь баг раньше был, который позже пофиксили.
« Последнее редактирование: 12 Январь 2022, 21:13:39 от cptPauer »