Ромхакинг NES. Учебник

Вернуться на главную страницу

Welcome! You can switch to english version of this guide in the upper left corner at the main page.

Уважаемый читатель! Написание качественного контента затрачивает кучу времени, нервов и сигарет. Мне взамен от тебя ничего не нужно. Просто обмазывайся моими классными статьями и хакай свои любимые игры профессионально и с удовольствием ツ

Вступление

Ромхакинг NES (Nintendo Entertainment System) является моим хобби с мая 2014-го. Я начал заниматься этим исключительно ради создания турнирных соревновательных хаков для нашего комьюнити, и с тех пор моя специализация практически не изменилась. От меня требуется модифицировать игру под нужды турнира, чтобы участники могли сыграть друг против друга за призовые места. Такие хаки популярны только в нашем узком кругу людей.

За все это время у меня накопилось достаточно опыта и знаний, и меня просто распирает ими поделиться. Хоть ромхакинг NES считается относительно простым, и для него есть множество удобных инструментов, в интернете редко можно натолкнуться на хорошую и понятную новичку статью, по большей части попадаются лишь технические мануалы для продвинутых пользователей. Существует куча отличных хаков, но никто не хочет научить тебя как делать такие же.

Статьи по ромхакингу я пишу в том числе и для себя самого. Во-первых, мне нравится писать мануалы, и у меня это хорошо получается. Во-вторых, я сам начинаю лучше разбираться в теме, и я действительно узнал довольно много нового и интересного. Это уже моя третья попытка написать достойный учебник, и она просто не может получиться хуже предыдущих двух, не так ли? Моя конечная цель - создать самый лучший обучающий материал по ромхакингу NES.

Как проходит обучение

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

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

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

Оглавление составлено по нарастающему уровню сложности на мое усмотрение. Меню разделено на 2 части. Слева находится программа обучения, это минимальный необходимый курс чтобы стать неплохим ромхакером. Меню справа - статьи на различные тематики, которые не вписываются в основную программу. Из них ты сможешь подчерпнуть идеи для своих хаков и повысить квалификацию, или просто почитать что-то на досуге для общего развития.

Требуемые навыки

Как и при изучении любого другого языка программирования, в ромхакинге NES (а точнее в языке ассемблера для процессора 6502) в первую очередь приветствуется логическое мышление. Необходимо уметь быстро и эффективно находить искомые данные при помощи тех инструментов, которые имеются в наличии. Нужно понимать к каким возможным и невозможным последствиям приведет редактирование кода игры. Мое дело это предоставить тебе всю требуемую информацию по устройству NES игр и как продуктивно их взламывать, но только ты сможешь применить эти знания на практике к своему конкретному случаю.

Что касается математики, то знание сложных математических формул совсем не обязательно. Достаточно понимать как работает обычное сложение и вычитание чисел из школьной программы, а также умножение и деление на степень двойки. С возможностями NES в плане работы с числами разгуляться особо негде.

Это сложно назвать навыком, скорее условием. Тебе обязательно нужно у себя на компьютере выполнять те же действия, которые описаны в статьях, ведь они разработаны с учетом этого. Будет гораздо проще усвоить материал, заодно набьешь себе руку и самостоятельно рассмотришь альтернативные возможности. Если даже после этого у тебя останутся вопросы по статье, ты сможешь задать их в комментариях или спросить меня лично.

Основной рабочий инструмент

Основным инструментом для меня является эмулятор FCEUX. Как эмулятор для игр меня он не сильно впечатляет (я предпочитаю эмуляторы Nestopia и Mednafen), но как рабочий инструмент он потрясающий, в нем есть практически все что нужно. Я регулярно обновляюсь на самые свежие сборки эмулятора. Это вовсе не те, которые можно скачать с официальной страницы. Иногда я сам отправляю багрепорты разработчику, поэтому такие обновления для меня критичны. В моих статьях все приведенные примеры, изображения и видео будут в основном с последних обновлений. Если у тебя уже есть FCEUX, тебе достаточно закачать обновление, забрать из архива файл fceux.exe и заменить его у себя в корневой папке эмулятора.

Альтернативой FCEUX могу порекомендовать эмулятор Mesen, можно сказать что это его современная версия. Но несмотря на расширенные возможности, некоторые моменты мне в нем все же не понравились, и я решил на него не переходить. Может быть по нему будет написан отдельный раздел, но учебник рассчитан на работу с FCEUX.

На моем ноутбуке стоит Windows 7 x64. Если у тебя другая версия Windows, возможно (но маловероятно) некоторые приведенные в статьях примеры или действия тебе не подойдут. А с Linux я тебе никак не помогу, иди устанавливай себе Wine или типа того.

Чем ты можешь помочь

Меня очень волнует качество написанного здесь материала. С моей опытной точки зрения он выглядит достаточно понятным, но я могу и ошибаться, ведь я сам все это уже знаю и некоторые моменты мне могут казаться слишком очевидными чтобы о них не писать. Если у тебя есть уточняющие вопросы, задавай их в комментариях к конкретной статье. Твои вопросы помогают мне улучшить мои статьи, чтобы у других читателей подобных не возникало. Возможно ты считаешь что где-то не хватает наглядной картинки/видео, или что можно подать информацию как-то иначе. Выскажи свое мнение.

Хоть я и пишу достаточно грамотно, в статьях могут встречаться орфографические ошибки. Могут быть и пунктационные, в основном с запятыми, я их ставлю меньше чем нужно, считай это моими авторскими знаками (точнее пробелами). Сообщи если найдешь ошибку.

Буду признателен любой помощи по проверке моего перевода статей на английский (язык переключается слева вверху). Исправления по переводу оставляй в комментариях к сооветствующей статье на английской версии сайта.

Об этом сайте

Я не HTML и не CSS программист, это вообще мой первый сайт. Делал его вручную с нуля по шаблону другого сайта, мне понравился метод загрузки статей без обновления всей страницы. Кое-какие плагины нашел в интернете. Для меня важнее содержимое сайта, нежели его оформление. Конечно хотелось бы и посимпатичнее, но вряд ли я стану тратить время на изучение верстки в обозримом будущем. Сайт не оптимизирован под мобильные устройства, с телефона лучше открывать ссылки из меню в новой вкладке, тогда страница загружается без меню. Время от времени внешний вид может меняться когда я решу поэксперементировать. Все ссылки на внешние ресурсы автоматически октрываются в новой вкладке.

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

Заключение

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

В качестве альтернативы этому гайду ты можешь задать свой вопрос на специализированном ромхакерском форуме, таком как Emu-Land.net (русский) или Romhacking.net (английский). Существует также NesDev.com (английский), но этот форум посвященный в основном кодированию и техническим аспектам ромхакинга. Даже раздел для новичков выглядит каким-то слишком продвинутым.

Кстати, если любишь слушать NES музыку, рекомендую FUZZNEC.




Система комментирования SigComments