Как изменить старую школьную игру NES?
Я иногда вижу модифицированные игры NES, и я хотел бы попробовать свои силы. Какие инструменты используются для этого? Есть ли какое-то волшебное хранилище исходного кода где-то рядом, о котором я не знаю? У меня вопрос, каков первый шаг к изменению любой произвольной игры NES? (Если первый шаг - это что-то вроде "встряхнись головой", то, пожалуйста, дайте мне шаги с первого по третий.)
Спасибо
4 ответа
Вам понадобится образ ПЗУ и дизассемблер или просто старый добрый шестнадцатеричный редактор. Это будет ТРУДНО, если вы хорошо не знаете целевую архитектуру. Много раз на этих старых системах они закодировали углы, чтобы все поместилось в крошечном доступном хранилище. Это приведет к некоторому очень странному "побочному эффекту" кода, который вам может показаться сложным для понимания.
Мой совет, создавайте игру с нуля как "кавер-версию" на современном языке, используя современное оборудование, вам не придется беспокоиться о наличии только 4 КБ ОЗУ!
То, о чем вы говорите, называется "взломом ROM".
Теперь вам нужно быть осторожным, потому что здесь есть серьезные юридические проблемы (обратите внимание, я не юрист): например, чтобы взломать игру, вам нужно найти образ ROM игры, которую вы пытаетесь взломать. Есть сайты, которые предоставляют загрузки для них, но я не буду ссылаться на один. Вы здесь сами по себе. Другая проблема заключается в том, что взломанная игра считается нарушающей производную работу. Однако на практике игровые компании в основном игнорируют сцену взлома ПЗУ.
За исключением юридических вопросов, вот что необходимо для взлома ROM:
- Образ ROM игры, которую вы хотите взломать (см. Предупреждение выше).
- Эмулятор Теоретически вы могли бы записать свой хак на картридж и воспроизвести его на NES, но это предполагает, что у вас все еще есть NES, поэтому эмуляторы - это следующая лучшая вещь. Обратите внимание, что эмуляторы абсолютно легальны (это не ПЗУ); для взлома NES ROM и разработки homebrew я бы порекомендовал FCEUX. Он имеет встроенный просмотрщик памяти и отличный отладчик.
- Шестнадцатеричный редактор. Я рекомендую HexEdit. На данный момент это бесплатное программное обеспечение. Извините, это только для Windows.
- Редактор плиток, для редактирования графики. Я рекомендую YY-CHR. Опять же, это только Windows.
http://www.romhacking.net/ содержит и другие полезные инструменты.
Это то же самое, что модификация любой другой скомпилированной программы; на высоком уровне вам нужно:
- Разберите образ ROM существующей игры из двоичного кода на язык более высокого уровня (например, сборку)
- Изменить сборку
- Соберите измененный исходный язык ассемблера в Nintendo ROM
Как говорит Джефф Уоткинс в своем ответе, вы также можете изменить ПЗУ напрямую, используя шестнадцатеричный редактор, не разбирая его в первую очередь, но задача примерно эквивалентна, просто если вы делаете это вместо компьютера.
Существует множество проблем более низкого уровня в отношении извлечения блоков данных (спрайтов и т. Д.) И понимания фактического хода выполнения программы. Это определенно не даст вам большой дамп кода, за которым легко следить и который комментирует.
Взгляните на этот другой вопрос о разборке и модификации 16-битных игр.
И вы должны знать оборудование очень хорошо. Есть интернет-ресурсы, которые предоставляют довольно хорошую документацию, такую как эта вики
Удачи!