Прошли годы. С некоторой периодичностью погружался в эму-тему, изучая всё новое на тематических сайтах, но я не решался окунуться в изучение ассемблера 6502 и архитектуры NES. Внутренний конфликт рационального и иррационального. Я долго убеждал себя, что мне не нужно тратить на это время, но… сорвался. Глядя на то, какие интересные вещи делают энтузиасты эму-сцены, я взялся за свою давнюю идею со светлой мыслью: «Я тоже смогу!». Две недели пролетели незаметно, я еле смог остановить себя. И да, теперь я знаком с ассемблером без команд умножения, о чём раньше только слышал в песне о программистской молодости.
Очень вероятно, что сейчас вы вспомнили свой первый картридж для Dendy и меню с романтическим сюжетом и приятной музыкой. На таких картриджах никогда не было «серьёзных» игр, и не глядя на громкие надписи типа 9999-in-1, их обычно было что-то около пяти. Но это меню… Разве это не шедевр китайской мысли? 🙂 Мне с детства нравилась эта мелодия (Unchained Melody), а фоновые изображения сейчас навевают кучу ностальгических воспоминаний. Поэтому я взял IDA и дизассемблировал меню 300-in-1, вырезал всё лишнее, исправил ошибки, добавил фейдинг да немного приятных мелочей — и получилась ностальгическая демка Unchained Nostalgia (для запуска нужен эмулятор, например, Nestopia).
Хотите также окунуться в олдскульное программирование? Делюсь самым полезным и интересным, что я нашёл по теме.
Архитектура, программирование и отладка
Раньше для процессора 6502 писали только на ассемблере, выбор инструментов был маленьким, документации было немного и поведение железа было плохо изучено. Сегодня же таких проблем нет. В последние годы были даже разработаны библиотеки для C и полноценные игры на них, которые при этом быстро работают на скромном железе NES.
- FCEUX — популярный эмулятор с отличными отладочными функциями
- IDA Pro iNES loader — для лучшего дизассемблера
- Архитектура и программирование Dendy — руководство для начинающих, на русском языке
- Система команд процессора 6502 — справочник на русском языке
- NesDev Wiki — главный англоязычный источник информации по внутренностям и программированию NES
- Документация по cc65, ca65 и смежным инструментам — компилятор на C и макроассемблер для процессора 6502
- Программирование для NES на C — хорошая статья на английском языке
- NES Screen Tool — отличный инструмент для редактирования тайлов и тайловых карт
- NESHLA — интересная попытка создания «высокоуровневого» ассемблера для 6502
- Nesicide — полноценная среда разработки для NES
- pyNES — подмножество Python для NES (интересно, реально ли написать что-то серьёзное на этом?)
- BreakNES — чумовой проект по детальнейшему изучению процессора 6502 по фотографиям под микроскопом
- Visual6502 — визуализатор работы процессора 6502
- Everdrive N8 — флэш-картридж для тестирования ромов на реальном железе (есть и другие подобные проекты)
- Коллекция исходных кодов различных игр для NES, и ещё
Современные разработки для NES
Если кто-то считает, что NES — мёртвая платформа, тот ошибается 🙂 Достаточно регулярно выпускаются новые игры и демки. Понятно, что это не массовый рынок, и здесь крутятся, в основном, энтузиасты, но тем не менее… Различных релизов выходит достаточно много, я поделюсь самым интересным и забавным из того, что нашёл сам.
- CMC 80’s (2000 год) — старая демка, с длинным ностальгическим текстом и даже скрытым посланием
- High Hopes (2007 год) — наверное, лучшая демка для NES, стоит посмотреть
- D-Pad Hero (две части, 2009 и 2010 годы) — Guitar Hero для NES 🙂
- Zooming Secretary (2011 год) — симулятор секретарши, выполненный с хорошей долей чувства юмора (чего только стоит отвлекающий шеф!), написано отечественным разработчиком (Shiru) и имеются исходные коды на C
- Lan Master (2011 год) — головоломка на сисадминскую тематику с атмосферным звуком, от Shiru, исходные коды
- Lawn Mower (2011 год) — симулятор газонокосильщика, также от Shiru (талантливый разработчик, да), исходные коды
- Alter Ego (2011 год) — логический платформер, порт с ZX Spectrum от Shiru, исходные коды на C
- Chase (2012 год) — это пример простой игры на C к соответствующей статье от Shiru, но вышло так хорошо, что даже жалко, что в игре всего пять уровней (обратите внимание на классные огромные надписи, нехарактерные для NES)
- Driar (2012 год) — просто приятно выполненная игрушка
- Retro City Rampage (2012 год) — коммерческая игра для современных консолей, но внутри есть маленький секрет в виде небольшой игры для NES с соответствующим сюжетом, посмотрите это видео о создании NES версии
- Sir Ababol (2013 год) — платформер-лабиринт от испанской группы разработчиков игр Mojon Twins, написано на C
- Dune Emperor (2013 год) — демка стратегии (!) под NES, к сожалению, пока что заброшена, автор — русский (Ti_)
- Kira Kira Star Night (2013 год) — современная коммерческая (и не единственная!) игра для NES от японских разработчиков, цифровая копия для запуска в эмуляторе стоит ≈30$, настоящий картридж стоит ≈200$
- RetroMiner (2013 год) — майним Bitcoin-ы на NES! 🙂
Зачем всё это?
Если вы задаётесь этим вопросом, может быть это и не для вас. Но на самом деле это очень интересное и увлекательное занятие. Если у вас любимой приставкой была не Dendy, то может быть вам будет интереснее сделать что-то, например, для Sega Mega Drive. Вперёд! И обязательно расскажите о том, что у вас получилось.
Спасибо за внимание
Если вы знаете что-то ещё полезное или интересное по теме — обязательно делитесь в комментариях.
ссылка на оригинал статьи http://habrahabr.ru/post/201864/
Добавить комментарий