Программист, реверс-инженер
0,0
рейтинг
12 ноября 2013 в 20:36

Разработка → Как воплотить в жизнь мечту детства и запрограммировать что-нибудь для Dendy

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

Прошли годы. С некоторой периодичностью погружался в эму-тему, изучая всё новое на тематических сайтах, но я не решался окунуться в изучение ассемблера 6502 и архитектуры NES. Внутренний конфликт рационального и иррационального. Я долго убеждал себя, что мне не нужно тратить на это время, но… сорвался. Глядя на то, какие интересные вещи делают энтузиасты эму-сцены, я взялся за свою давнюю идею со светлой мыслью: «Я тоже смогу!». Две недели пролетели незаметно, я еле смог остановить себя. И да, теперь я знаком с ассемблером без команд умножения, о чём раньше только слышал в песне о программистской молодости.



Очень вероятно, что сейчас вы вспомнили свой первый картридж для Dendy и меню с романтическим сюжетом и приятной музыкой. На таких картриджах никогда не было «серьёзных» игр, и не глядя на громкие надписи типа 9999-in-1, их обычно было что-то около пяти. Но это меню… Разве это не шедевр китайской мысли? :) Мне с детства нравилась эта мелодия (Unchained Melody), а фоновые изображения сейчас навевают кучу ностальгических воспоминаний. Поэтому я взял IDA и дизассемблировал меню 300-in-1, вырезал всё лишнее, исправил ошибки, добавил фейдинг да немного приятных мелочей — и получилась демка Unchained Nostalgia (для запуска нужен эмулятор, например, Nestopia), есть запись на YouTube.

Хотите также окунуться в олдскульное программирование? Делюсь самым полезным и интересным, что я нашёл по теме.

Архитектура, программирование и отладка


Раньше для процессора 6502 писали только на ассемблере, выбор инструментов был маленьким, документации было немного и поведение железа было плохо изучено. Сегодня же таких проблем нет. В последние годы были даже разработаны библиотеки для C и полноценные игры на них, которые при этом быстро работают на скромном железе 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 версии, посмотреть обзор и скачать ROM можно здесь
  • Sir Ababol (2013 год) — платформер-лабиринт от испанской группы разработчиков игр Mojon Twins, написано на C
  • Dune Emperor (2013 год) — демка стратегии (!) под NES, к сожалению, пока что заброшена, автор — русский (Ti_)
  • Kira Kira Star Night (2013 год) — современная коммерческая (и не единственная!) игра для NES от японских разработчиков, цифровая копия для запуска в эмуляторе стоит ≈30$, настоящий картридж стоит ≈200$
  • RetroMiner (2013 год) — майним Bitcoin-ы на NES! :)
  • NES Audio (2011-2013 годы) — новые инструменты для написания музыки под NES на самой NES, от Neil Baldwin, который писал музыку для известных игр эпохи NES уже 20 лет назад


Тематические сайты


  • romhacking.net.ru — обзор свежих переводов на русский язык и хаков игр
  • cah4e3.shedevr.org.ru — проект по дампингу картриджей, в меню слева большой список страниц с дампами по годам
  • chief-net.ru, magicteam.net и shedevr.org.ru — команды, которые занимаются переводом приставочных игр
  • emu-russia.net и emu-land.net — активные русскоязычные эму-сообщества
  • romhacking.net — международное сообщество ромхакеров, переводы игр на английский язык, огромная база хаков
  • nesdev.com — международное сообщество разработчиков под NES


Зачем всё это?


Если вы задаётесь этим вопросом, может быть это и не для вас. Но на самом деле это очень интересное и увлекательное занятие. Если у вас любимой приставкой была не Dendy, то может быть вам будет интереснее сделать что-то, например, для Sega Mega Drive. Вперёд! И обязательно расскажите о том, что у вас получилось.

Спасибо за внимание


Если вы знаете что-то ещё полезное или интересное по теме — обязательно делитесь в комментариях.
Евгений Врублевский @VEG
карма
352,0
рейтинг 0,0
Программист, реверс-инженер
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (61)

  • +14
    Я смотрю на первые три картинки и у меня в ушах играет эта чёртова восьмибитная музыка.
    • +40
      • +5
        Есть трек отдельно :)
        soundcloud.com/mike-iceman-1/dendy-romantic-splash-screen
        • +7
          Без картинки воспоминания не полные, даже сказал бы — неполноценные :-)
          • +2
            Для полных ощущений это должен быть эмулятор и соответствующий ром! ;)
            • +11
              И теплый ламповый телевизор.

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

              Как-то так.
              • 0
                И блок питания обязательно проверять на работоспособность языком.
                • +1
                  И джойстики, постоянно разбираемые для «ремонта» джойстики.
                  • +3
                    Да, и пальцы обмотанные фольгой от шоколадки, для тыка прямо в контакты ))) Хардкор конечно и эксклюзив :)
                    • +1
                      А я втыкал в приставку ножницы :)

                      Со временем что-то там сломалось, и на экране были сплошные помехи, но стоило воткнуть в определённое место приставки ножницы, как картинка прояснялась, и можно было играть!
                      Сейчас даже не представляю, как это я смог опытным путём дойти до этого :)
                      • 0
                        Я тоже так делал: замыкал отверткой на картридже дорожки и иногда очень забавно спрайты корёжились: вместо марио бегала какая-нибудь мешанина из букв и пикселей.
                  • +1
                    … которые на самом деле — джойпеды )
                    • +2
                      Мы были детьми и сами давали названия вещам. :-)
              • 0
                А мне повезло. Несмотря на многочисленные истории и примеры плавления и выхода из строя блоков питания, мой прослужил от звонка до звонка.
              • 0
                Как-то решили вспомнить былое на даче и вытащили денди. Блок питания не нашли, но автомобильный аккумулятор вместо него отлично подошел.
        • 0
          Спасибо, прям как будто вчера было. Детство.
      • +1
        Где-то даже валяется этот картридж :)
      • +1
        Смотрю и чувствую запах нового картриджа… Денди, провода, телевизор. Очень сильная ностальгия, наверно)
      • +3
  • 0
    Спасибо за песню о программистской молодости.
    Да и за картинки с закатом )
  • 0
    У меня такой вопрос — можно сделать автоматическую конвертилку BMP в тайлы или спрайты NES, чтоб с возможностью показать на весь экран?
    • +1
      NES Screen Tool умеет загружать BMP файлы (соответствующие требованиям), разбивать их на тайлы и создавать из них тайловые карты. В архиве есть примеры отображения тайловых карт на C.
  • 0
    На таких картриджах никогда не было «серьёзных» игр, и не глядя на громкие надписи типа 9999-in-1, их обычно было что-то около пяти

    Разбита мечта детства :(
  • 0
    Для простоты добавил архив с моим окружением для быстрой и простой компиляции примеров от Shiru и blargg. Просто извлеките всё содержимое архива в любой каталог без пробелов в пути, запускайте make.bat для компиляции. Должно работать без дополнительных телодвижений. Останется только скормить полученные nes файлы вашему любимому эмулятору :)
  • +5
    А вы знаете, что среди игр с картриджа «9 999 999 in 1» есть почти все игры, только их трудно найти и они иногда скрываются за левыми названиями? :D

    Этот же текст с пояснениями
    А вы знаете, что среди игр с картриджа «9 999 999 in 1» есть почти все игры, например Черепашки или Черный плащ, только их трудно найти (читай пасхальные яйца) и они иногда скрываются за левыми названиями, например за Tank или Lunner Ball? :D
    • +2
      А вы знаете, что среди читателей этого комментария могут найтись доверчивые люди, которые всё ещё ждут, что в карманной «Ну погоди» после 999 очков покажут мультик?)
      • +8
        image
      • –1
        Шесть плюсов и один минус.
        Похоже один доверчивый искал-искал, но так и не нашел.
        Бедненький, не повезло ему :D
  • 0
    А для меня на таких картриджах было именно 9999, потому как я не в жисть не смог бы дойти сам до некоторых левелов из включённых игр, а так можно было посмотреть на крутые танки и на последние левелы Марио.
  • +1
    Любопытно, есть средства разработки для NES _под_NES_?
    • +3
      Есть :). Были версии с клавиатурой и, например, с портом для принтера. И картриджи для них были соотв.: с языками программирования, текстовыми редакторами, тренажерами клавиатуры.
      • +1
        Сюбор
        • 0
          Точнее Liko.
          Но были и другие, например комбат (или Kombat, или даже Combat — точно уже не помню). Там даже мышь в комплекте была
          • 0
            Может быть.
            У нас продавались только Сюбор. Да и гуглится так проще (другие не гуглятся что-то).
            И там есть basic'и какие-то
            Картинки
            image
            image
            • 0
              Не подгрузились картинки.
              Вот тут несколько фоток
              • 0
                Service Temporarily Unavailable
                Хабраэффект чтоли? Оо
        • 0
          Сюбор стоял включенным несколько дней, что бы код на basic заново не набивать… эх детство.
          • +1
            В оригинальном Famicom можно было сохранять труды на кассету. Китайцы решили, что нам это не нужно :)
    • +4
      Афаик есть — BASIC. Нам (русскоязычным пользователям) он известен по компьютеру-денди под названием Сюбор По информации от Сергея Фролова, F-BASIC на картридже соответствует бейсику компа Apple ][. А «у них» тоже была клава и такой картридж, который цеплялся к Famicon
      image

      Есть мнение, что Сюбор — есть простая копипаста Famicon+этот девайс на картинке+AT'шная клава -)
      • +5
        Не удержался, пошёл сфотографировал.
        • +1
          Оооо, у меня был именно такой :) Погиб в неравном бою с коротким замыканием. Зачем-то понадобилось соединять контакты на неработающем картридже.
      • +2
        В детстве имел сюбор с клавиатурой, картриджем с 2мя версиями BASIC и ТОЛСТЕННУЮ инструкцию по программированию на всём этом. F-BASIC расшифровывается, как float-basic, его предназначение — только расчёты. Там были вещественные числа и математическое функции типа ln, sin. Работа с графикой отсутствовала. G-BASIC — game basic — умел только в целые числа, но там была возможность работы со звуком, с джойстиком, с графикой. Причём графика ограничивалась заранее заданными спрайтами, что-то типа вывести спрайт номер такой-то таким-то цветом. Диалект предназначался только для обучения, марио на нём не написать (хотя все спрайты и были из super mario bros 1). Стандартные процедуры бейсика для работы с графикой там не работали.
  • 0
    9999-in-1
    это был обман всего детства.
    • 0
      Это был обман № 3:). Первым были 999 очков в «Ну погоди», вторым 99..-in-1 в портативном тетрисе (Brick Game).
      • 0
        Да, финальный мультик в «Ну погоди» это было сильно.
        • +7
          Вы про этот?

          Скрытый текст
          image
  • +1
    Помнится, были такие картриджи, в которых методом тыка можно было добавить или, наоборот, убавить количество игр с помощью перемычек. Тогда это была магия чистой воды, я демонстрировал это чудо друзьям, дымя паяльником и бормоча заклинания «ну пожалуйста-ну пожалуйста...». Хотя и была во всем этом и прямая выгода — ко мне таскали на шару разные игры…
    • 0
      Kinaman в выпуске про Алладинов (их было несколько) на NES про эти перемычки рассказывал) А ещё недавно статья была на хабре, про такую же операцию… с тетрисом. Тем, который BrickGame. :)
      • 0
        О, точно, давно не смотрел этого замечательного человека. А еще помню, что когда джойстики выходили из строя, их с небольшой вероятностью можно было воскресить, нагревая микросхему-ляпку паяльником с последующей отправкой в морозильник. Правда после воскрешения джойстик становился зачастую зомби и часто чудил.
  • +2
    Если кто-то считает, что NES — мёртвая платформа, тот ошибается :)

    На amiga, спектрумы или commodore 64 тоже всё-ещё пишутся демки, а иногда даже пишутся и портируются игры!
    Так что в таком качестве живы многие старые платформы.
  • 0
    Не сочтите за рекламу, Dendy и SEGA Megadrive сейчас продаются в Метро кэш энд кэрри. Удивительно но факт.
    • 0
      И не только там. У нас в Екатеринбурге можно купить в 4-5 различных сетях магазинов)
    • 0
      Я покупал в М-Видео в Москве.
      Хотел подарить друзьям на прошлый НГ.
      Перед тем, как подарил еще несколько часов резался в контру.
  • 0
    Раз уж затронули тему демок для NES, не могу не вспомнить NES-версию Bad Apple.
    youtu.be/ZMbAEjPPf7w
  • –1
    На случай, если кто-то не желает устанавливать эмулятор, я сделал запись ностальгической демки:
  • 0
    В посте картинки со звуком!
    • 0
      Поясните, что вы хотели этим сказать.
      • +2
        если смотреть на эти картинки — в голове начинает играть музыка
        • 0
          А, вы об этом… Для лучшего эффекта лучше смотреть и слушать это дело в эмуляторе :)
          • +1
            На живом железе совсем не работает? Попробовал с флешкартриджа запустить на Twin Famicom — вешается на загрузке.
            • 0
              Хм. Работало, правда на Dendy проверялось. Возможно, в последнем обновлении я что-то сломал. Попробуйте запустить разные версии: unchained-nostalgia-v1.0.zip, unchained-nostalgia-v1.1.zip и unchained-nostalgia.zip (это v1.2). Буду благодарен, если поможете выявить когда появилась проблема, а я проанализирую и постараюсь исправить (как раз сейчас к 8 марта делаю маленькое обновление).

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