- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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

Раньше для процессора 6502 писали только на ассемблере, выбор инструментов был маленьким, документации было немного и поведение железа было плохо изучено. Сегодня же таких проблем нет. В последние годы были даже разработаны библиотеки для C и полноценные игры на них, которые при этом быстро работают на скромном железе NES.

Современные разработки для NES

Если кто-то считает, что NES — мёртвая платформа, тот ошибается :) Достаточно регулярно выпускаются новые игры и демки. Понятно, что это не массовый рынок, и здесь крутятся, в основном, энтузиасты, но тем не менее… Различных релизов выходит достаточно много, я поделюсь самым интересным и забавным из того, что нашёл сам.

  • CMC 80's [22] (2000 год) — старая демка, с длинным ностальгическим текстом и даже скрытым посланием
  • High Hopes [23] (2007 год) — наверное, лучшая демка для NES, стоит посмотреть
  • D-Pad Hero [24] (две части, 2009 и 2010 годы) — Guitar Hero для NES :)
  • Zooming Secretary [25] (2011 год) — симулятор секретарши, выполненный с хорошей долей чувства юмора (чего только стоит отвлекающий шеф!), написано отечественным разработчиком (Shiru [26]) и имеются исходные коды [27] на C
  • Lan Master [28] (2011 год) — головоломка на сисадминскую тематику с атмосферным звуком, от Shiru, исходные коды [29]
  • Lawn Mower [30] (2011 год) — симулятор газонокосильщика, также от Shiru (талантливый разработчик, да), исходные коды [31]
  • Alter Ego [32] (2011 год) — логический платформер, порт с ZX Spectrum от Shiru, исходные коды [33] на C
  • Chase [34] (2012 год) — это пример простой игры на C к соответствующей статье от Shiru, но вышло так хорошо, что даже жалко, что в игре всего пять уровней (обратите внимание на классные огромные надписи, нехарактерные для NES)
  • Driar [35] (2012 год) — просто приятно выполненная игрушка
  • Retro City Rampage [36] (2012 год) — коммерческая игра для современных консолей, но внутри есть маленький секрет в виде небольшой игры для NES с соответствующим сюжетом, посмотрите это видео [37] о создании NES версии
  • Sir Ababol [38] (2013 год) — платформер-лабиринт от испанской группы разработчиков игр Mojon Twins, написано на C
  • Dune Emperor [39] (2013 год) — демка стратегии (!) под NES, к сожалению, пока что заброшена [40], автор — русский (Ti_)
  • Kira Kira Star Night [41] (2013 год) — современная коммерческая (и не единственная [42]!) игра для NES от японских разработчиков, цифровая копия для запуска в эмуляторе стоит ≈30$, настоящий картридж стоит ≈200$
  • RetroMiner [43] (2013 год) — майним Bitcoin-ы на NES! :)

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

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

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

Если вы знаете что-то ещё полезное или интересное по теме — обязательно делитесь в комментариях.

Автор: VEG

Источник [44]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/staroe-zhelezo/48170

Ссылки в тексте:

[1] песне о программистской молодости: http://pleer.com/tracks/1967590QII9

[2] 300-in-1: http://veg.by/nes/unchained-melody-300-in-1.zip

[3] Unchained Nostalgia: http://veg.by/nes/unchained-nostalgia.zip

[4] Nestopia: http://veg.by/nes/nestopia.zip

[5] FCEUX: http://www.fceux.com/

[6] IDA Pro iNES loader: http://forum.emu-russia.net/viewtopic.php?f=13&t=457

[7] лучшего дизассемблера: http://ru.wikipedia.org/wiki/IDA

[8] Архитектура и программирование Dendy: http://dendy.migera.ru/nes/

[9] Система команд процессора 6502: http://www.emuverse.ru/wiki/MOS_Technology_6502/%D1%E8%F1%F2%E5%EC%E0_%EA%EE%EC%E0%ED%E4

[10] NesDev Wiki: http://wiki.nesdev.com/w/index.php/Programming_guide

[11] Документация по cc65, ca65 и смежным инструментам: http://www.cc65.org/doc/

[12] Программирование для NES на C: http://shiru.untergrund.net/articles/programming_nes_games_in_c.htm

[13] NES Screen Tool: http://shiru.untergrund.net/files/nesst.zip

[14] NESHLA: http://neshla.sourceforge.net/

[15] Nesicide: http://www.nesicide.com/

[16] pyNES: http://gutomaia.net/pyNES/

[17] BreakNES: http://breaknes.com/

[18] Visual6502: http://visual6502.org/JSSim/index.html

[19] Everdrive N8: http://krikzz.com/index.php?route=product/product&product_id=59

[20] Коллекция: http://gilgalad.arc-nova.org/vgscr/nes.html

[21] и ещё: http://www.romhacking.net/?page=documents&category=13&platform=&game=&author=&perpage=20&level=&title=&desc=&docsearch=Go

[22] CMC 80's: http://www.chrismcovell.com/data/cmc80s.zip

[23] High Hopes: http://kkfos.aspekt.fi/projects/nes/demos/high-hopes/

[24] D-Pad Hero: http://dpadhero.com/

[25] Zooming Secretary: http://shiru.untergrund.net/files/nes/zooming_secretary.zip

[26] Shiru: http://shiru.untergrund.net/

[27] исходные коды: http://shiru.untergrund.net/files/src/zooming_secretary_src.zip

[28] Lan Master: http://shiru.untergrund.net/files/nes/lan_master.zip

[29] исходные коды: http://shiru.untergrund.net/files/src/lan_master_src.zip

[30] Lawn Mower: http://shiru.untergrund.net/files/nes/lawn_mower.zip

[31] исходные коды: http://shiru.untergrund.net/files/src/lawn_mower_src.zip

[32] Alter Ego: http://shiru.untergrund.net/files/nes/alter_ego.zip

[33] исходные коды: http://shiru.untergrund.net/files/src/alter_ego_src.zip

[34] Chase: http://shiru.untergrund.net/files/nes/chase.zip

[35] Driar: http://driar.se/

[36] Retro City Rampage: http://www.retrocityrampage.com/

[37] это видео: http://www.youtube.com/watch?v=Hvx4xXhZMrU

[38] Sir Ababol: http://www.mojontwins.com/juegos_mojonos/sir-ababol-nes/

[39] Dune Emperor: http://homepage.corbina.net/~lich/rrr/DuneEmperor_Demo2_by_Ti_HomeBrew.rar

[40] заброшена: http://forums.nesdev.com/viewtopic.php?f=19&t=4659&start=15#p117731

[41] Kira Kira Star Night: http://kirakira-star-night.riki2riki.com/en/index.html

[42] не единственная: http://sivak.nintendoage.com/BK.html

[43] RetroMiner: http://retrominer.com/

[44] Источник: http://habrahabr.ru/post/201864/