Фанат Super Mario 64 смог портировать игру на ПК без эмуляции. Реверс-инженеры два года работали с кодом

    image

    Поклонник Super Mario 64 смог портировать проект на компьютер спустя 24 года после его выхода, не прибегая к эмуляции Nintendo 64. Портированная игра поддерживает DirectX 12 и совместима с трассировкой лучей.

    Пользователям продемонстрировали трассировку лучей Паскаля Гилчера, с помощью алгоритма фонового затенения, с помощью эффекта отражения на поверхности объектов и расширенными эффектами глубины резкости.


    С поддержкой DirectX удалось реализовать широкоформатный режим игры и увеличить разрешение. Автор эксперимента смог запустить Super Mario 64 в разрешении 4K при 550 кадрах/с на ПК с процессором Intel Core i7-7700K 4,5 ГГц и видеокартой NVIDIA GeForce GTX 1080 8 Гбайт. Он порекомендовал установить ограничение частоты на 30 кадров/с.


    Как отмечается, выход порта для ПК не имеет ничего общего с недавней утечкой внутренних файлов Nintendo, относящихся ко временам Gamecube. Он стал прямым результатом усилий команды Zelda по декомпиляции ПЗУ Super Mario 64 в разборный код C — реверс-инжиниринга от простого двоичного до легко читаемого кода. На эти попытки ушло два года.

    Первый шаг в реверс-инжиниринге ПЗУ N64 предполагает установление версии IDO-компилятора Silicon Graphics, которая была использована для создания ПЗУ. Затем нужно выяснить, как организовано ПЗУ, говорят энтузиасты. В играх N64 файлы упорядочены в 16-байтовые блоки, что облегчает просмотр «отступов», отмечающих конец файла. Отладочные сборки игры могут также помочь инженерам задокументировать ее структуру благодаря наличию несжатых файлов и макросов C, таких как __FILE__ и __LINE__, которые показывают внутренние имена, используемые Nintendo.

    Чтобы получить пригодный для использования C-код, нужно вручную сопоставить побайтовый код с исходным кодом сборки всех функций в игре после выполнения через компилятор. Однако отдельные функции N64 могут выполняться с тысячами инструкций, и в одной игре N64 может быть несколько тысяч таких функций.

    Сложность также варьируется в зависимости от игры. Для Super Mario 64 Nintendo скомпилировала исходный код без каких-либо необычных опций, и это означает, что декомпилированный язык ассемблера было проще преобразовать обратно в C-код. А, к примеру, в случае с Ocarina of Time Nintendo использовала флаги оптимизации для генерации более быстрого кода, и полученное ПЗУ намного сложнее превратить обратно в исходный код. После нескольких месяцев работы Zelda включила в С-код только около 15% функций Ocarina of Time.
    См. также:

    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 26

      +13
      А теперь придет (как обычно) Nintendo, выдвинет иск против фаната, потребует закрытие проекта и удаление всех исходников со всех ресурсов.
        0
        Кхм… А где Вы видели сырцы, стесняюсь спросить?
        Без сырцов-то я тоже могу заявить, что люблю по 10 женщин за ночь, как сосед портировал Супер Марио.
          0
          www.patreon.com/unrealyoutube -
          There i will share:
          The download link of the games ( demos or incompleted games ) i used for my videos if they aren't available on my channel, you can ask for a missing download link
        0
        И самое главное: в этом случае стандартный аргумент копирастов не работает, потому что попросту нет никакой недополученной прибыли. Ведь Nintendo и не собирались продавать эту игру пользователям PC! Они в принципе не рассматривали этот сегмент рынка, поэтому недополученная прибыль очевидно равна нулю, и никаких проблем подобное портирование копирасту не создаёт. Просто иррациональная, ничем не мотивированная жадность.
          0
          Ну как же. Использование чужой торговой марки. Чужих персонажей и тд и тп. Без Марио и мира, его поделка никому нафиг была бы не нужна.
            0
            Так а ущерб-то в чём заключается? Копираст же ничего не теряет. Вот если бы создатель начал продавать этот порт, тут ещё можно было бы прикопаться. А так — от его работы никому не стало хуже, но многим станет лучше. Поэтому подавать на него в суд с моральной точки зрения — свинство. Это всё равно что судить авторов youtube-роликов с прохождениями игр: это явно производное произведение, но ущерба не наносит и на «интеллектуальную собственность» не покушается.
              0
              А почему обязательно ущерб? получение выгодны используя чужой тм и образы персонажей. AM2R даже не портом было, а по мотивам разработаная игра, и ресурсы не распространялись. И всё равно огребли.
                0
                И какую же выгоду он получил, если он не продаёт эту игру?
                  0
                  Получить ссылку на скачивание игры официально можно только после «пожертвования». Привлечение к пожертвованиям используя чужой торговый знак и т.д. и т.п.И даже это всё необязательно. Отреверсеный код с минимум адаптаций к запуску тоже нелегален. кто то должен отреверсить и создать документацию, а он на основе этой доки написать новый код — тогда можно. Можете почитать про Atrac3 как реверсили. Но вопрос с ресурсами от игры тоже остается нерешенным.
                  Фанаты обычно с такими поделями огребают)
                0

                Вы не поверите, но Nintendo периодически так и развлекаются — кидают страйки на прохождения некоторых своих игр на ютубе.

            0

            А толку, скомпилированные версии и исходный код уже попали в интернет. Тут как с AM2R — вроде C&D и проект убит, но и найти рабочую версию не особо сложно.

            –1

            Эх, эти бы усилия да в нужное русло…
            Я просто завидую людям способным делать такие вещи в качестве хобби.

              +5
              Эх, эти бы усилия да в нужное русло…
              Сосредоточенные размышления
              Зарядку себе придумали, лишь бы не работать! Лишь бы дурака валять! Здоровый бугай поднимает гири впустую – воздух перемешивает. Пускай камни таскает или вагонетки с углем. И платить ему не надо: он же за гири денег не берет!

              Если весь народ по утрам вместо гирь будет яму копать, знаете, какая колоссальная экономия будет?!

              А если другие туда воды накачают и гусей пустят… На каждого получится по два гуся.

              Я ж не один день думал!

              А этот футбол – двадцать два бугая мяч перекатывают. А если им вместо мяча дать каток, они ж за полтора часа все поле заасфальтируют. А зрители еще по рублю дадут. Бешеные деньги пойдут.

              А марафонца видали? Страус. Сорок километров дает бегом. Его кто-нибудь использует? Он же бежит пустой! А если он почту захватит или мешок крупы в область? У нас же составы освободятся. Я уже не говорю про штангистов. Человек полтонны железа поднимает и обратно кладет. Так дайте ему груз, чтоб он его наверх подавал. Бочки с селедкой, раствор, ящики с кирпичом пусть выталкивает. И рекорды ставь: ты – две бочки, я – четыре, чемпион мира – шесть!

              Кто у нас остается? Артисты, художники, ревматики, склеротики и прочий боевой отряд физически недоразвитых людей. Их надо использовать на тонких работах. Вот балерина – крутится. Крутится, крутится, аж в глазах рябит. Прицепить ее к динамо – пусть ток дает в недоразвитые районы. А ты, иллюзионист, у тебя из пустого ведра курица вылетает. Иди, обеспечивай народ курями. Ведра у всех есть, куры не у всех. Тебе каждый спасибо скажет, если честно будешь работать. А писатель пишет. Ходит туда-сюда, обдумывает. Что он там напишет, никому не известно, а пока ходит – прицепить к нему рычаг, пускай воду качает. Хоть какая польза будет…

              Вот так каждого использовать. Такое будет! Такое состояние благо. Такой прогресс. Такой урожай. Вместо голубей этих дурных на крышах индюки будут сидеть, и тогда сразу вперед скакнем. Я ж не один день думал, что я, дурак?!

              М.М. Жванецкий.

                0
                www.youtube.com/watch?v=WVMolYlx-h8
                Мне в молодости тоже смешно было. А с возрастом поменял риторику на противоположную и принял точку зрения, которая этим монологом высмеивается.
                0
                Эх, эти бы усилия да в нужное русло…

                Эти слова больше относятся к самой Nintendo с ее cease-and-desist'ами.

                  +1
                  А я завидую наличию такого количества свободного времени. Тут даже просто поиграться раз в неделю удается часик.
                    0

                    О, том и говорю.

                    0
                    Благодаря таким хобби люди и учатся реверсить. Из старых игр можно много чего интересного почерпнуть при этом.
                      0
                      Эх, эти бы усилия да в нужное русло…
                      Я просто завидую людям способным делать такие вещи в качестве хобби.

                      если вы хотели сказать, что:


                      • завидуете людям, которые умеют делать такое;
                      • считаете, что вы правильнее их умеете распределять свои силы,

                      то могу заметить, что вы неправы.
                      эти люди умеют такое просто потому, что они вместо лежания на печи и возгласов «эх» тратят своё время на проекты, которые может быть и не приносят прямых дивидендов, но весьма и весьма «прокачивают скиллы».

                        0

                        Нет, я не это хотел сказать. На ваши пункты я отвечу:


                        • Да, я искренне завидую им.
                        • Наоборот, я никак не могу распределить свои силы. Потому и завидую.
                        0

                        А нужное русло — это какое?

                        0
                        Портированная игра поддерживает DirectX 12 и совместима с трассировкой лучей.
                        А там есть что трассировать? Графика выглядит так, словно её можно даже на i386 обсчитывать, вообще безо всякого GPU.
                          0
                          Есть источники света и поверхности => есть, что трассировать.
                            0
                            Там можно отражения в полу включить/увидеть

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое