Что можно сделать с денди
Года полтора проходя мимо ретро игровых приставок в магазинах, аналогов Денди и Сеги, я думал прикупить и поиграть с детьми. Но останавливало то, что покупать в совокупности все приставки дорого, игр на них не так много, а картриджи не то чтобы массово продаются. Поэтому решил сделать приставку своими руками и чтобы была возможность запускать игры от любых приставок.
Сразу скажу способ полу-пиратский, поскольку на игры распространяется закон об авторском праве и вот это все. Но тем не менее образы игр свободно можно скачать на сотнях сайтов в интернете. Используйте на свой страх и риск.
Сборку приставки я решил делать на одноплатном компьютере Raspbery Pi 3. Немного покопавшись в недрах AliExpress нашел комплект специально для сборки игровой ретро консоли. Заказал с доставкой из России и уже через 5 дней получил вот такую радость. Ссылка на магазин в котором покупал будет в конце статьи.
Установка RetroPie
В качестве операционной системы я использовал готовый образ RetroPie, который уже заточен для работы в качестве игровой приставки. Подробных инструкций в интернете полно, поэтому я расскажу по основным пунктам, а в конце вставлю видео с наглядной инструкцией по которой собирал сам. Если вам что-то будет не понятно то либо напишите в комментариях.
2. Распаковываем образ в папку RetroPie. У вас должен появится файл с расширением img.
3. Записываем файл образа на флэшку с помощью программы Win32 Disk Imager.
4. Вставляем флэшку в консоль и включаем. При первом запуске вам будет предложено настроить кнопки джойстика. Обычно RetroPie самостоятельно определяет джойстик, просто следуйте инструкциям на экране (к сожалению на английском). Тем не менее вы можете переназначить кнопки при необходимости в настройках. Подключить можно практически любые джойстики, в том числе от XBox например.
5. Установка игр. Игры можно установить в консоль с любой флэшки или по сети. При втором варианте сеть предварительно нужно настроить (смотрите видео). Чтобы скопировать с флэшки достаточно вставить ее в один из портов консоли. Затем выбрать раздел Configuration и затем File Manager. В файловом менеджере в одной панели выбрать /mnt/usb - это флэшка, во второй панели выбрать /home/pi/RetroPie/roms . Скопировать из первой панели во вторую выбрав файлы rom-ов и нажав F5.
Для того чтобы скопировать по сети необходим ее сначала настроить, а затем подключится к адресу консоли с помощью файлового менеджера по FTP.
6. Когда скопировали файлы rom перезапустите консоль и в соответствующем разделе эмулятора, например NES увидите список игр. Запускаем и наслаждаемся ретро играми.
Приобретал комплект тут на Алиэкспресс . Ссылка партнерская буду благодарен, если приобретете по моей ссылке. Вам хороший набор, а мне лишняя копеечка для ремонта дома в деревне.
Как воплотить в жизнь мечту детства и запрограммировать что-нибудь для Dendy
Для меня Dendy всегда была чем-то большим, чем просто приставкой. Я не только играл в неё, но и значительное время провёл внутри неё с паяльником в руках для некоторых простых модификаций. По дороге куда-нибудь я часто размышлял о том, как же создаются эти игры и как это работает внутри. Наверняка, многие из вас когда-то задавались подобными вопросами, такова уж натура будущих IT-шников.
Прошли годы. С некоторой периодичностью погружался в эму-тему, изучая всё новое на тематических сайтах, но я не решался окунуться в изучение ассемблера 6502 и архитектуры NES. Внутренний конфликт рационального и иррационального. Я долго убеждал себя, что мне не нужно тратить на это время, но… сорвался. Глядя на то, какие интересные вещи делают энтузиасты эму-сцены, я взялся за свою давнюю идею со светлой мыслью: «Я тоже смогу!». Две недели пролетели незаметно, я еле смог остановить себя. И да, теперь я знаком с ассемблером без команд умножения, о чём раньше только слышал в песне о программистской молодости.
Очень вероятно, что сейчас вы вспомнили свой первый картридж для Dendy и меню с романтическим сюжетом и приятной музыкой. На таких картриджах никогда не было «серьёзных» игр, и не глядя на громкие надписи типа 9999-in-1, их обычно было что-то около пяти. Но это меню… Разве это не шедевр китайской мысли? :) Мне с детства нравилась эта мелодия (Unchained Melody), а фоновые изображения сейчас навевают кучу ностальгических воспоминаний. Поэтому я взял IDA и дизассемблировал меню 300-in-1, вырезал всё лишнее, исправил ошибки, добавил фейдинг да немного приятных мелочей — и получилась демка Unchained Nostalgia (для запуска нужен эмулятор, например, Nestopia), есть запись на YouTube.
Хотите также окунуться в олдскульное программирование? Делюсь самым полезным и интересным, что я нашёл по теме.
Архитектура, программирование и отладка
Раньше для процессора 6502 писали только на ассемблере, выбор инструментов был маленьким, документации было немного и поведение железа было плохо изучено. Сегодня же таких проблем нет. В последние годы были даже разработаны библиотеки для C и полноценные игры на них, которые при этом быстро работают на скромном железе NES.
-
— популярный эмулятор с отличными отладочными функциями — руководство для начинающих, на русском языке — справочник на русском языке — главный англоязычный источник информации по внутренностям и программированию NES — компилятор на C и макроассемблер для процессора 6502 — хорошая статья на английском языке — моё окружение для компиляции примеров на C от Shiru и на ASM от blargg (извлеките всё содержимое в любой каталог без пробелов в пути, запускайте make.bat для компиляции) — для лучшего дизассемблера — отличный инструмент для редактирования тайлов и тайловых карт — интересная попытка создания «высокоуровневого» ассемблера для 6502 — полноценная среда разработки для NES — подмножество Python для NES (интересно, реально ли написать что-то серьёзное на этом?) — чумовой проект по детальнейшему изучению процессора 6502 по фотографиям под микроскопом — визуализатор работы процессора 6502 — флэш-картридж для тестирования ромов на реальном железе (есть и другие подобные проекты) исходных кодов различных игр для NES, и ещё
Современные разработки для NES
Если кто-то считает, что NES — мёртвая платформа, тот ошибается :) Достаточно регулярно выпускаются новые игры и демки. Понятно, что это не массовый рынок, и здесь крутятся, в основном, энтузиасты, но тем не менее… Различных релизов выходит достаточно много, я поделюсь самым интересным и забавным из того, что нашёл сам.
-
(2000 год) — старая демка, с длинным ностальгическим текстом и даже скрытым посланием (2007 год) — наверное, лучшая демка для NES, стоит посмотреть (две части, 2009 и 2010 годы) — Guitar Hero для NES :) (2011 год) — симулятор секретарши, выполненный с хорошей долей чувства юмора (чего только стоит отвлекающий шеф!), написано отечественным разработчиком (Shiru) и имеются исходные коды на C (2011 год) — головоломка на сисадминскую тематику с атмосферным звуком, от Shiru, исходные коды (2011 год) — симулятор газонокосильщика, также от Shiru (талантливый разработчик, да), исходные коды (2011 год) — логический платформер, порт с ZX Spectrum от Shiru, исходные коды на C (2012 год) — это пример простой игры на C к соответствующей статье от Shiru, но вышло так хорошо, что даже жалко, что в игре всего пять уровней (обратите внимание на классные огромные надписи, нехарактерные для NES) (2012 год) — просто приятно выполненная игрушка (2012 год) — коммерческая игра для современных консолей, но внутри есть маленький секрет в виде игры для NES, посмотрите это видео о создании NES версии, посмотреть обзор и скачать ROM можно здесь (2013 год) — платформер-лабиринт от испанской группы разработчиков игр Mojon Twins, написано на C (2013 год) — демка стратегии (!) под NES, к сожалению, пока что заброшена, автор — русский (Ti_) (2013 год) — современная коммерческая (и не единственная!) игра для NES от японских разработчиков, цифровая копия для запуска в эмуляторе стоит ?30$, настоящий картридж стоит ?200$ (2013 год) — майним Bitcoin-ы на NES! :) (2011-2013 годы) — новые инструменты для написания музыки под NES на самой NES, от Neil Baldwin, который писал музыку для известных игр эпохи NES уже 20 лет назад
Тематические сайты
Зачем всё это?
Если вы задаётесь этим вопросом, может быть это и не для вас. Но на самом деле это очень интересное и увлекательное занятие. Если у вас любимой приставкой была не Dendy, то может быть вам будет интереснее сделать что-то, например, для Sega Mega Drive. Вперёд! И обязательно расскажите о том, что у вас получилось.
Как писались игры на Dendy
Этой статьей я хотел бы немного пролить свет на то, как создавались игры на Dendy. Причем речь пойдет не о том, как это можно делать сейчас, а как это происходило тогда — в 80-е и 90-е годы, и о том, с какими проблемами сталкивались разработчики в то время. Если вам наскучило читать очередные воспоминания менеджеров, дизайнеров, или программистов, переквалифицировавшихся в менеджеров, которые раскрывают техническую сторону дела чуть менее чем никак, то добро пожаловать под кат.
Тогда и сейчас
В наше время разработка для игровых приставок все больше напоминает написание программ для обычных компьютеров, разница между тем что творилось тогда и тем, что имеет сегодняшний разработчик колоссальна. С одной стороны, сегодня, технологии и культура разработки шагнули далеко вперед, позволив вести разработку на языках высокого уровня, с другой — в 80-е фирмы, выпускающие приставки, еще не до конца понимали что следует дать сторонним разработчикам для создания игр. И поэтому если сейчас для очередной playstation можно получить документацию, пяток демо-дисков, а также мощную девелоперскую станцию, по сути гибрид самой приставки и компьютера общего назначения, пригодного для непосредственной разработки, то например в 80-е многие разработчики довольствовались книжечкой со спецификацией консоли. А вот за аппаратной частью приходилось идти на радиорынок (или что там было в штатах вместо них?).
Немного истории
Принято считать, что изначально была создана Nintendo Entertainment System (NES), с которой уже была спирачена наша Dendy и десятки других клонов по всему миру.
После взгляда на картинку видно, что это, возможно, не совсем так. Изначально, в Японии в 1983 году, все-таки была выпущена консоль Famicom. В любом случае существовало 2 незначительно отличавшихся консоли — NES и Famicom. И разработка для них тоже велась разными инструментами, хотя программный код игр в картриджах для обеих был одинаков. Несколько различались сами картриджи. В случае NES на картридже присутствовало несколько дополнительных контактов, которые вели к чипу, который в теории должен был быть только на лицензионных картриджах…
В далеком 1983 году Nintendo могла только мечтать о сторонних разработчиках для новоиспеченной консоли. Так что первые несколько игр были созданы самими авторами консоли. Некоторые из них были портами игр, уже существовавших на аркадных автоматах. Эти игры отличались примитивностью даже по меркам NES, не используя всех возможностей ее аппаратной начинки. Все игры того стартового периода умещались на один экран и не занимали более 32 килобайт данных на картридже. Наиболее известные игры того периода: Donkey Kong, Balloon Fighter, Mario Bros. Ирония заключалась в том, что NES имела специальную аппаратную поддержку для скроллинга уровней, но самые первые игры сайд-скроллерами не являлись, хотя и были выпущены компанией, которой сам бог велел, зная все особенности их консоли, выпускать игры, максимально подчеркивающие преимущества новой приставки.
Ограничение для размера NES-игр в 32 кб имело место только первые пару лет. Потом сторонние разработчики более-менее приноровились к консоли и поняли, что 32 кб хватит далеко не всем. Видя эту ситуацию, Nintendo решила сделать для всех новых картриджей маппер, позволявший создавать игры на порядок большего размера. Тут надо заметить, что сама архитектура NES не менялась, но менялись картриджи, расширяя возможности самой NES.
На картридж можно было засунуть все что угодно — любые чипы, которые душа пожелает: оперативную память, видеопамять, сопроцессор, энергонезависимую память для сохранений. Теоретически в картридж можно добавить такие вещи как модем или raspberry pi. Другое дело что для реализации этого потребуются титанические усилия, а также несколько свободных выходных.
Картриджи
Спецификации NES-картриджа до сих пор могут быть найдены в интернете, и, вообще, довольно подробно разобраны сообществом. Но сам процесс производства картриджей — это тайна покрытая мраком. Более менее достоверно известно что на территории Европы и США выпуском картриджей занималась исключительно Nintendo. В смысле, самих коробочек с микросхемами.
Набор микросхем увеличивался с годами, так что можно сказать, что с точки зрения разработчика спецификация самой консоли менялась, хотя менялись на самом деле картриджи. Эта особенность позволила NES быть популярной столь долгое время, конкурируя с другими игровыми приставками.
Каждый разработчик должен был явно указывать в заголовке скомпилированной игры(ROMа) перечень функций NES, которые будут использованы игрой. Некоторые функции поддерживались «обычными» картриджами — например маппер памяти, а вот за наличие сохранения или лишней оперативной памяти приходилось доплачивать Nintendo, чтобы та включила заветные чипы в ваш будущий картридж.
В Японии были компании, которые сами занимались изготовлением картриджей, попутно добавляя в них собственные уникальные чипы, создававшиеся под одну конкретную игру. Впоследствии подобные вещи в себе съели немало нервных клеток у тех, кто создавал эмуляторы NES, пытаясь заставить работать в своем детище и такие игры.
Архитектура картриджей подразумевала что сама программа и графические спрайты находятся в разных чипах. Вот например фотография картриджа Super Mario Bros.
В тех картриджах, что продавались у нас, подобные чипы использовались обычно только в тех, что шли вместе с консолью, и то не всегда. В пиратских картриджах использовались черные кляксы вместо чипов, скорее всего это были те же схемы, но изготовленные по другой технологии. По какой? Думаю в комментариях вы найдете ответ на этот вопрос.
Оборудование для разработки
Сведения об официальном SDK от Nintendo весьма скудны, настолько, что я уже склонен считать, что его просто не было. Т.е. в сети есть пара фотографий подобных юнитов, но нигде не сказано что они были выпущены Nintendo, более того — их вид говорит о том, что это были скорее всего поделки конечных разработчиков. Так что все, что было доступно — спецификации, а дальше каждый разработчик крутился как мог. Самодельное же оборудование для разработки делилось на 2 класса: видоизмененные картриджи с перезаписываемыми банками данных и отладочные станции.
В первом случае все относительно просто — в обычном картридже банки данных и графики заменялись на схожие чипы с возможностью многоразовой перезаписи. Нельзя сказать, что разработка с таким инструментом радовала — после каждой перекомпиляции картридж приходилось прошивать заново. И да, несмотря на малый объем программ, скорость прошивки была невелика, учитывая оборудование и мощность компьютеров того времени. Тем не менее этот девайс в нескольких экземплярах был неизменным и часто единственным орудием программиста.
В случае RAM-картриджей разработка шла гораздо быстрее. Можно было редактировать память прямо в процессе игры, используя для этого компьютер, на котором, собственно, и велась разработка. Чип EEPROM заменялся на банки оперативной памяти, которые с одной стороны виделись консолью как обычный картридж, а с другой стороны подключались к компьютеру разработчика и были для него обычной оперативной памятью… или диском… или устройством — все зависело от того, какой именно драйвер программист писал для своего детища.
Наиболее упорные или удачливые разработчики могли похвастаться отладочными станциями — модифицированными NES, которые вдобавок ко всем плюсам RAM-картриджей давали еще и возможность проводить глубокую отладку, просматривая содержимое видеопамяти, регистров процессора и т.п. Вот например одна такая станция.
На каких компьютерах проходила разработка — неизвестно, но, учитывая тот уровень возни с радиодеталями, который требовался чтобы запустить отладочную версию игры на приставке, особого значения модель компьютера не имела. Точно известно, что японские разработчики применяли компьютеры MSX. С большой долей вероятности можно сказать, что в США применялись компьютеры Apple 2, ввиду того, что они были довольно распространены, а также имели процессор, аналогичный используемому в NES.
Программное обеспечение
Основной и практически единственный язык программирования использовавшийся для разработки игр — ассемблер, некоторые счастливчики писали на С, если могли достать компилятор. Но даже в этом случае, некоторые фирмы не покупали у Nintendo ассемблер а писали свой собственный. Чем это было вызвано сказать тяжело, но многие источники говорят о том, что в первые годы существования NES Nintendo не делилась своими инструментами со сторонними разработчиками.
Процессор, который использовался в NES, также имелся и в компьютерах вроде Apple 2 или Commodore 64, для которых были и свои ассемблеры и даже компиляторы С. Но архитектура NES все же имела некоторые отличия, а дикие системные ограничения и наличие банкинга(необходимости выгружать старые и загружать новые куски программного кода в область доступную процессору) не давали возможности писать на С игры, которые бы использовали максимум возможностей консоли.
Ассемблер — далеко не единственная вещь, которую приходилось писать вручную: редакторы графики, программаторы, отладчики: все это было написано по несколько раз заботливыми руками программистов. Отдельной статьей можно считать редакторы карт — следует помнить, что компьютеры были слабы и малопамятны, так что, например, вся карта для Metroid была нарисована вручную на бумаге, а потом уже кусками кодировалась в игру.
Процесс разработки
В разработчики часто набирали вчерашних студентов, не видевших NES в глаза. Для львиной доли мелких компаний создававших игры как нельзя лучше подходил термин «шарашкина контора». Типовая игра занимала 3-6 месяцев времени на разработку. Команды чаще всего были небольшими — 3-10 человек. Было много контор, которые выпускали 1 игру и потом исчезали без следа.
Процесс разработки обычно начинался с создания инструментов для разработки. Хотя концепт игры к тому времени был уже готов. И вообще, в первые годы многие игры для NES были портами с аркадных автоматов. Даже если к программированию самой игры еще не приступали, за дело брались композитор и художник. Практически вся музыка и вся графика для дендивских игр были сделаны не на компьютере.
Сперва дизайнер рисовал эскизы бэкграундов и персонажей, затем, после отбора подходящих рисунков, начиналась так называемая пикселизация — палитра NES поддерживала только 14 цветов на экране одновременно, так что приходилось перераскрашивать рисунки с учетом этого ограничения. Затем рисунок расчерчивался по сетке, и при необходимости растягивался или сжимался — NES аппаратно поддерживала спрайты размером 8x8 пикселей. Персонаж Марио рисовался в 4 прохода, после съедания гриба — в 8 проходов. Мелочь, но иногда из-за ее игнорирования мы видели в некоторых играх пропадающие спрайты, когда на экране становилось очень много врагов, так что программистам приходилось экономить и на спичках. Кстати видеопамяти было 2 вида — одна, в которой обычно хранились спрайты персонажей и прочая мелочевка, вторая, побольше в которой хранились карты уровней. Последняя находилась в отдельном адресном пространстве и поддерживала аппаратно ускоренные операции по скроллингу.
Работа композитора плавно перетекала в работу программиста — написать музыку это только часть дела, закодировать ее в игру — тоже дело наживное, а вот затем начиналось самое интересное. Как было сказано выше, иногда игра подтормаживала, так что если в предрелизе такие тормоза достигали небывалых показателей, то композитору давали задачу «оптимизировать» музыку — убрать лишние опкоды, чтобы ускорить работу игры в целом. Тут-то и выяснялось истинное мастерство композитора. Лишнюю монетку в копилку позора композитора добавлял тот факт, что далеко не всегда разработчик игр по фильму получал лицензию на… использование музыки из фильма. Таким образом композиторам приходилось писать что-то оригинальное, и далеко не всегда хорошее.
Среди игр для NES был распространен так называемый репэкедж — это когда на базе одной игры делают другую меняя спрайты и уровни, иногда немного меняя сам игровой процесс. Например Castlevania и Ninja Gaiden сделаны на одном движке, также как и Darkwing Duck был сделан на базе движка для серии игр Megaman(Rockman). Каковы были истинные масштабы репэкджа мы можем только догадываться, особенно учитывая тот факт, что огромный процент игр на денди — однотипные сайд-скроллеры.
Разработчики
Меня конечно интересовало что же именно разработчики творили в те дни, но увы, именно этот вопрос так и остался без ответа. Программисты ни черта не помнят о том периоде. Т.е. они помнят какие-то организационные моменты, сложности возникавшие в команде, как они ели пиццу по выходным, как спешно искали работу программистом для NES, чтобы расплатиться с долгами, но не могут назвать марку компьютера за которым проводили бессонные ночи. И в целом можно сказать что их работа воспринималась как рутина, у них не было чувства, что они создают великие вещи, которые останутся в памяти многомиллионного поколения на всю жизнь.
Только потом, годы спустя они стали понимать значимость того, что они писали. И тогда им стало по-настоящему стыдно. Их можно было понять — зоопарк консолей того времени, невнятность их будущего, микроменеджмент в разработке — все это создавало впечатление того, что ты пишешь нечто непонятное, непонятно для чего, и непонятно с какими перспективами.
Среди компаний, как уже было выше сказано, было много однодневок — вроде тех, что сейчас пишут игры для айфонов, которые пробовали себя на этом рынке, разорялись, уходили в забвение. Огромное количество дендивских ромов вообще не содержит никакой информации о разработчиках, что говорит о весьма низкой оценке результатов своей работы со стороны программистов.
Удивительно, но остались и такие, что до сих пор продолжают разрабатывать игры, даже спустя 30 лет. Их можно найти в соцсетях, но после того как второй десяток попыток достучаться хоть до одного из них провалился, я бросил это бесполезное занятие. Впрочем список имен разработчиков, которые мне удалось выдрать из наиболее обширной коллекции ромов находится здесь.
Сегодня
Так что сегодня создать игру для Денди может любой студент, написавший, а не купивший код к своей лабораторной по предмету, посвященному программированию микроконтроллеров.
Сборка ретро консоли на Raspbery Pi 3
В комплекте шел собственно сам микрокомпьютер Raspbery Pi 3, корпус стилизованный под приставку, кулер с радиаторами, microSD карточка на 32GB 10class, 2 джойстика и блок питания. Первым делом собрал все это в корпус.
Как видите в корпусе размещен хаб с USB портами для подключения джойстиков. Хаб подключается напрямую к одному из портов Raspbery Pi. Так же на корпус выведен разъем RJ45 для подключения к локальной сети, но можно использовать и WiFi.
Подключение внешних USB портов и порта LAN на корпус Подключение внешних USB портов и порта LAN на корпусС помощью пин конекторов на шину микрокомпьютера подключаются кнопка управления питанием и кнопка Reset, а так же питание для кулера, который подсоединяется к разъему на плате в корпусе.
Приклеиваем на плату радиаторы идущими в комплекте термопроводящим скотчем. Сам кулер крепится на крышку в пластиковый зажим. Но лучше всего прикрутить его парой саморезов из комплекта, чтобы не гремел во время раоты.
Удобно, что разъемы HDMI, MicroUSB для блока питания, а так же слот для карты памяти доступны снаружи при собранном корпусе, поэтому я все скрутил и перешёл к следующему этапу - установке операционной системы и закачке игр.
Все компоненты собраны в корпус можно закрывать крышку Все компоненты собраны в корпус можно закрывать крышкуВ собранном виде приставка очень компактная и практически бесшумная. Для настройки нам так же понадобятся клавиатура с USB разъемом и компьютерная мышь.
Хочу сделать компьютер из Dandy
С другой стороны ответит технологиями они не смогут, даже Китай сильно зависим от США. Рано или поздно придётся смирится с тем что спутники такие какие есть, а отказаться от них значит остановить прогресс.
Эти злобные американские и британские спутники, которые так боятся адепты режима, прежде всего новый уровень технологий и соответственно жизни. Но наша власть избавит нас от этого.
Всем привет! Подскажите кто как решает вопрос с радиаторами для выходных диодов? Моя проблема в том что на плате диоды должны быть параллельно в 2 ряда, значит радиатор нужен "Т" образный. Лично я замахался такой искать. Найти нерабочий инвертор как донор то же не выходит. Максимум что смог найти это игольчатый радиатор и распилить его пополам. Проблема только в том что основание где будут диоды тонкова-то е 4мм всего а нужно думаю 10мм иначе выводы диодов( а я собираюсь ставить 150EBU04) придется подогнуть ступенькой, но не знаю можно ли так делать. Может кто что умного подскажет?
Это всегда можно оспорить и "объяснить", но достаточно и того, что делается "на кинокамеру". Задумаешься, что опаснее - Covid или вот такие решения: В Калининградской области приостановят оказание плановой медпомощи.
Будет будет, МБМ отлично наращивают ESR с годами, я лично выкинул не один десяток МБМ с ESR >=40 ом
Читайте также: