Как сделать денди с флешкой
Smart TV и Android TV Box это удивительные устройства, которое дают практически неограниченные возможности. В этот раз, я вам покажу как из любого Smart TV/TV Box сделать игровую приставку (Sega, Sega Dreamcast, Dandy, NES, Sony PlayStation, и пр.) без дополнительного оборудования.
Для того, чтоб получить игровую приставку на обычном железе от ТВ нам не нужно менять прошивки, танцевать с бубном… На самом деле всё намного проще! Эта инструкция подходит для всех устройств и неважно какая у вас модель телевизора или приставки.
Устанавливаем Kodi
Тем, кто знаком с медиацентром Kodi будет немного проще, а остальные, кто еще не знает, это универсальное кроссплатформенное приложение, которое дает возможность смотреть IPTV, фильмы, видеохостинг и все остальное.
Для начала установите приложение и для удобства включите русский язык. Как это сделать, я подробно показывал тут:
Устанавливаем эмуляторы
Спешу обрадовать, установить эмулятор так же просто и быстро как установить сам «Коди», кроме того, не нужно даже ничего скачивать, всё уже встроено. Давайте перейдем:
- Откройте настройки.
- Нажмите дополнения и перейдите в раздел «Установить из репозитория».
- Выберите «Игровые дополнения»
затем раздел «Эмуляторы»:
- Выберите нужный Вам эмулятор и установите его. Рассмотрим на примере «Sega» Вы можете установить любой другой.
Устанавливаем игры
После того, как мы все настроили и подготовили, распакуйте архив с играми и загрузите его к вам на Smart TV или TV Box при помощи флешки. Теперь откройте главный экран «Kodi» и выберите раздел «Игры» нажав на него:
Нужно выбрать нашу папку с играми, поэтому нажимаем «Добавить игру…». В открывшемся окне нажмите обзор, затем найдите вашу папку с играми. Когда вы откроете папку, она окажется пустая, и это нормально. Нажмите «OK», после чего ещё раз «OK». Готово, по завершению вас перебросит назад в меню, в котором будет ваша папка с играми.
Запускаем игру
Чтоб запустить установленную игру, вам достаточно нажать на неё после чего, приложение спросит при помощи какого эмулятора открыть. Выберите тот, который установили:
Так же, «Коди» предложит вам другой эмулятор, который тоже может открыть этот файл. Если ваш некорректно открывает файл, установите другой, который предлагает система.
Готово, играем, наслаждаемся!
Настройка геймпада (джойстика)
Геймпад нужно настраивать только после того, как Вы установили нужный вам эмулятор. Медиацентр имеет встроенные драйвера и умеет работать практически со всеми известными джойстиками.
Чтоб настроить геймпад, откройте «Настройки», затем «Система». Подключите ваше устройство и перейдите в раздел «Ввод», после «Настройка подключенных контроллеров»:
Выберите тип вашего джойстика и настройте значения кнопок:
На этом всё. Как видите, всё просто до безобразия. А Вы думали, что ваш Smart TV способен быть игровой приставкой?
Если у Вас остались какие-то вопросы, пишите в комментарии и вместе мы всё решим.
После моей статьи про дампер картриджей (которую пока что оставили на Хабре почему-то), меня очень много раз просили рассказать, как собирать и записывать картриджи для Денди/Famicom самому. Да, это очень избитая тема, даже в древних номерах журнала «Радио» про это можно было почитать, но прогресс не стоит на месте. Рассмотрим эту тему с точки зрения современных компонентов. Тем более, по-моему, она идеально подходит для изучения азов работы с ПЛИС, именно на этом я и сам учился.
Как и в прошлый раз, эта публикация в двух форматах: развлекательное видео попроще (да, уже третья серия) и обычная статья с более детальной информацией. Кому как больше нравится, но лучше посмотрите и то, и другое.
Начать, наверное, нужно с того что, картриджи, которые продавались и продолжают продаваться в наших магазинах, перезаписать, увы, не получится (на самом деле некоторые можно, но об этом в другой раз). Связано это с тем, что в них установлена обычная EPROM память, которую можно записать только один раз. Однако, ничто не мешает собрать свой собственный картридж с нуля.
Напомню, что картридж включается прямо в шину CPU и в шину PPU, а соответственно в первую очередь содержит две микросхемы памяти с параллельным доступом: PRG — к ней обращается процессор, и она содержит непосредственно код игры, и CHR — с ней работает PPU (графический процессор), и она содержит изображения. При чём последняя запросто может быть не ПЗУ, а оперативной памятью, куда уже в процессе игры записываются данные.
Таким образом, самый простой картридж можно сделать из любых двух микросхем памяти с параллельным доступом, будь то хоть EPROM, хоть flash. При этом больше ничего из обвязки не нужно. Например, вот так выглядел мой первый самодельный картридж:
Микросхемы просто подключаются напрямую к соответствующим выводам на разъёме картриджа. Ноги /RD можно припаять напрямую к земле, ведь консоль всегда будет только читать данные, но я записывал данные уже после сборки картриджа, с помощью всё того же дампера, поэтому подключил все выводы как положено. Биты адреса и данных при этом перепутаны местами, но это абсолютно не имеет значения. Внизу можно увидеть перемычку, которая определяет «mirroring» — как будет зеркалироваться видеопамять: горизонтально или вертикально. Это зависит от игры, и в простейших играх определялось именно перемычкой на картридже.
И ещё очень важный момент — активировать нашу память нужно только тогда, когда консоль обращается к картриджу, иначе будет возникать конфликт на шине. Для этого у микросхем есть вывод /CE (chip enable), который включает память. Тут в ход идёт достаточно простая математика. Программная (PRG) память картриджа начинается с адреса $8000 и заканчивается $FFFF, это два в пятнадцатой степени. Графическая (CHR) память картриджа начинается с адреса $0000 и заканчивается $1FFF, имея объём в 8 килобайт, а это два в тринадцатой степени. Соответственно включать нашу память надо пятнадцатым и тринадцатым контактом на адресной шине. На разъёме картриджа уже есть специальные выводы, которые выдают необходимый нам сигнал. Более того, в случае с PRG памятью нужный нам контакт так и называется — /ROMSEL — сокращённо от ROM Select. Туда консоль выдаёт 0 вольт, когда обращается к памяти картриджа в районе между $8000 и $FFFF. Всё проще некуда.
Однако, на такой картридж можно будет записать только самые простейшие игры. Более серьёзные уже используют картриджи с мапперами, чтобы увеличить максимальный объём игры. Попробую объяснить, как они работали.
У памяти с параллельным доступом каждый бит адреса задаётся отдельным выводом у микросхемы. В разъёме для картриджа есть выводы A0-A14 (15 выводов) для PRG памяти. Это соответственно 15 бит адреса, которые дают 32768 комбинаций единиц и нолей, т.е. позволяют адресовать 32 килобайта. Для CHR памяти там соответственно выводы A0-A13, это 16384 комбинаций, т.е. 16 килобайт, но половина из них отдана памяти внутри консоли.
Уже в восьмидесятые годы таких объёмов стало не хватать. Конечно ничто не мешает поставить в картридж память бОльшего объёма, но у такой памяти и адресных выводов больше. Не трудно посчитать, что каждый дополнительный вывод увеличивает количество возможных адресов ровно в два раза. Но куда их подключать, если количество контактов в разъёме картриджа ограничено? Вот тут на помощь и приходят мапперы, именно они управляют дополнительными выводами в зависимости от различных условий. Почти всегда такими условиями является попытка запись в PRG-область памяти картриджа. Да, в ту, куда нельзя ничего записать.
Многие игры используют для этих целей простейшие логические микросхемы. Например, в картридже у Battletoads стоит четырёхбитный счётчик 74161, который используется как триггер. При записи по любому адресу от $8000 до $FFFF он запоминает записанное значение и выдаёт его на те самые дополнительные выводы у памяти, он же переключает мирроринг.
Но большинство игр использует для этого более сложные микросхемы, которые разработаны специально для этих целей.
Они, как правило, умеют уже переключать разные банки для разных областей памяти, управлять дополнительной памятью, генерировать прерывания, а иногда даже расширять вычислительные мощности консоли.
Первым делом читаем, как происходит взаимодействием с ним. А происходит оно через запись по определённым адресам, их 8 групп: $8000-$9FFE (чётные), $8001-$9FFF (нечётные), $A000-$BFFE (чётные), $A001-$BFFF (нечётные), $C000-$DFFE (чётные), $C001-$DFFF (нечётные), $E000-$FFFE (чётные) и $E001-$FFFF (нечётные). Запись по любому адресу внутри группы равнозначна. Видите закономерность? Регистр выбирается с помощью трёх адресных бит: A0, A13 и A14, остальные же значения не имеют.
Попробуем же имитировать работу маппера с помощью ПЛИС. Код я пишу на языке Verilog. Он тут не подсвечивается, прошу прощения за это.
Сначала описываем наши регистры, которые хранят текущее состояние:
Описываем реакцию на запись по соответствующим адресам. Возрастающий сигнал /ROMSEL говорим о том что было обращение к памяти картриджа, т.е. по адресам $8000-$FFFF, нам надо реагировать именно в этот момент.
Теперь же опишем, какой должен выбираться банк при обращении к соответствующей части памяти в зависимости от наших регистров.
Переключаются они в соответствии с такой таблицей:
Теперь CHR. Там такая схема:
Режим зеркалирования описывается всего одной строкой. В зависимости от него мы замыкаем вывод картриджа CIRAM A10 либо на A10, либо на A11:
Дальше сложнее. MMC3 умеет генерировать прерывания, когда на экране рисуется определённая строка. Это весьма полезно, и игры часто это используют. Строки на экране считаются с помощью обращений к A12 у PPU. При типичных настройках сигнал на A12 переходит из логического 0 в логическую 1 ровно один раз за строку, если не считать кратковременные переходы в 0. А их надо не считать, это всё немного усложняет:
Ах да, MMC3 поддерживает ещё подключение дополнительной оперативной памяти по адресу $6000-$7FFF! Надо не забыть и это описать:
На самом деле собрать картридж для какой-то одной определённой игры весьма просто, ведь нужно будет установить только необходимые компоненты. А вот сделать универсальный картридж гораздо сложнее.Если установить ПЛИС на 128 макроячеек, flash на 512 килобайт для PRG, flash на 512 килобайт для CHR, SRAM на 32 килобайта для CHR, SRAM на 32 килобайта в качестве дополнительной памяти, питание которой поддерживается батарейкой для игр, которые умеют сохраняться, то на нём пойдёт уже около 90%-95% игр. Схема получается весьма замороченная, я долго вручную рисовал плату под всё это дело. Кстати, при выборе компонентов не стоит забывать, что у Famicom/Dendy пятивольтовые уровни. Китайцы сейчас очень часто это игнорируют.
Первая ревизия моего универсального картриджа выглядела как-то так:
Ну и программу для записи игр написал конечно же:
Как видите, всё не так сложно, если немного посидеть и разобраться в принципах работы.
Помню в детстве всегда было интересно, как же эти картриджи работают, и можно ли самому записывать в них игры? А не так давно на ютубе увидел видео где рассказывалось о самодельном картридже. Меня это заинтересовало, почитал форумы, посмотрел схемы, вроде все понятно и платы не сложные, но не было чем программировать параллельные микросхемы памяти.
Через некоторое время я собрал программатор EzoFlash, который подключался к LPT порту и мог много чего программировать, это клон Willem-а и работает с его софтом. Но так и не успев ни чего запрограммировать и протестировать подвернулся по дешёвке сам Willem. Так эти прогеры скучали пока я не насобирал старых памятушек для проб и сборки картриджа.
И вот настал момент записать память 27С040, это 512кбайт память. И тут я выясняю, что программатор Willem, купленный за недорого, малость подпаленный :(. Благо при сборке EzoFlash я разобрался с тестированием данного программатора и быстро нашел выгоревший смд транзистор на плате, он коммутировал питание микросхемы памяти, после его замены все стало записывать нормально и можно было приступать к созданию платы картриджа.
Вот тут было немного сложно, дело в том, что игры для денди делятся на категории, каждая категория игр работает на картридже со своей схемой, а схема в свою очередь зависит от используемого маппера памяти. Маппер, это грубо говоря микросхема, которая делит память картриджа на страницы по 16кбайт, поскольку 8 ми битный процессор больше не в состоянии переварить в связи с нехваткой адресного пространства. Вот тут то маппер и помогает с расширением адресного пространства. Мапперов целое множество, некоторые специализированные и стоят дорого, но благо есть китайские клоны, некоторые могут заменить микросхемы обычной логики.
В моем случае я создавал картридж для игры Battletoads & Double Dragon, она в качестве маппера использует логику HC161, это бинарный счетчик. Игре необходимо 256кбайт памяти, но если мы берем ПЗУ на 512кбайт памяти и просто перемычкой переключаем старший бит адреса в 0 или 1, то получаем возможность выбрать с какой половиной памяти работать. Таким образом можно в одну ПЗУ записать 2 игры и выбирать в какую хотим играть. Также выбор игры можно сделать по нажатию на ресет, но эта опция требует одну дополнительную микросхему и не всегда корректно отрабатывает, на разных приставках может работать по разному.
Схему брал ТУТ, HC02 выкинул из схемы, и поставил перемычку на адрес А18, печатку перерисовывал сам, брал ТУТ.
Картридж заработал практически сразу, ну как бы одна игра сразу заработала, а вторая не заработала, т.к. я напутал с перемычкой адреса А18 и она не включалась. Для подстраховки напаял панельки, чтоб микрухи перекидывать, в идеале паять микруху, а то с панелькой в притирочку влазит и сложно припаять к двум слоям, нужно паять на расстояние от платы.
Денди у меня 2018 года выпуска, видео показывает плохо, вертикальные линии ломанные, и цвета перенасыщены, видимо нужно дорабатывать. Лучше искать старые консоли, их проще дорабатывать.
Часто вижу просьбы выложить в доступ файлы с встроенного накопителя для игровой ретро-консоли DataFrog Y2-HD (HDMI-версия). Это на самом деле полезно, иногда проще один раз обновить файлы на карте памяти, чем терпеть постоянные проблемы. Причины возникновения сбоев могут быть самые разные: сбои электропитания, перегрев консоли, заводской брак и так далее.
Ретро-консоль DataFrog Y2-HD оказалась популярна — я заказал уже несколько штук в качестве подарка знакомым и друзьям. Да и проблем (у меня лично) с ней нет. Игровая приставка комплектуется двумя беспроводными джойстиками, работает напрямую с HDMI портом телевизора или монитора, а карманный форм-фактор позволяет её элементарно взять на работу или к друзьям для того, чтобы развлечься в свободное время ретро играми. Ссылка на обзор консоли DataFrog Y2-HD. Выбрать или сравнить ретро-консоли можно в статье: Лучшие ретро-консоли с Алиэкспресс.
Для того, чтобы получить доступ к накопителю необходимо разобрать корпус консоли. Для того нужно поддеть угол чем-то острым/тонким/плоским.
Аккуратно раскрываем корпус, старайтесь отжимать защелки по-очереди. Внутри установлена карта памяти, небольшой радиатор для чипа, сам главный чип. Если вы замечаете перегрев консоли, то есть смысл усилить охлаждение, заменив радиатор на более массивный.
Кардридер расположен с обратной стороны платы. А вот карта памяти — самая обычная MicroSD, для надежности можно установить свою в формате FAT32. Не выбирайте большие или быстрые карты — достаточно 2-4 Гб простой Class6 или Class10 карты памяти.
Просто берем новую карту памяти (можно и старую, но предварительно отформатируйте). И копируем на нее файлы образа. Вот примерный список файлов на накопителе.
В корне находятся файлы меню (основное меню, шрифты и так далее), и шесть папок с играми.
Есть и бинарники, и *.ASD файлы. Сложилось впечатление, что это компилированные эмуляторы с встроенными играми (rom). Если закинуть в папку *.nes — не читает. Да и прописаны названия и адреса в файлах меню.
А вот для версии DataFrog Y2-Pro с AV-выходом все печально. Карты памяти как таковой нет, стоит пустышка. Скопировать или что-то записать у меня не получилось, так как присутствует ограничение таковой возможности в прошивке. Подробнее про консоль с AV-выходом в обзоре по ссылке.
Так что берегите приставку DataFrog Y2-Pro. С другой стороны, это компенсируется низкой стоимостью (около $10, да еще с парой джойстиков).
А вот для настоящих ретро-геймеров будет интересна топовая консоль DataFrog Y3. Эта версия имеет как AV-выход, так и HDMI, пару отличных геймпадов, а самое главное — это возможность добавлять свои ROM'ы игр, просто записывая их на карту памяти. На эту модель, кстати, также есть подробный обзор.
В случае с топовой приставкой DataFrog все гораздо удобнее. Не нужно искать образы или программатор. Просто скачиваем любимые олдскульные ROM'ы с ретро-сайтов. На карте памяти (подойдет комплектная или любая SD-карточка) создаем папки на карте памяти: обязательно корневой каталог «GAME», затем подпапки «NES», «GBA», «MAME», «SEGA», «SNES», в соответствии с встроенным каталогом игр.
Затем загружаем распакованные ROM'ы в соответствующие папки. Есть нюансы. Если вы желаете видеть изображение рядом с названием игры в меню приставки, потрудитесь положить рядом с ROM'ом картинку в формате JPEG. На скриншоте у меня есть PNG картинки — так вот PNG не читается. Только JPEG. Старайтесь удалять из названия спецсимволы (апострофы, восклицательные знаки и так далее). Они могут вызвать сбой чтения файловой системы.
Устанавливаем карту памяти в работающую приставку, происходит процесс считывания каталога. Игры появляются на экране и доступны для пользователя.
Часто встречаю комментарии про подвисания и фризы консоли. Так вот, самое главное, что необходимо проверить в таком случае — это качество питания. Родной адаптер в топку — это недорогое устройство с рандомными характеристиками. Постарайтесь найти любой другой зарядник от смартфона. Подойдут простые источники питания на 5 Вольт и 1,5. 2 Ампера (без быстрой зарядки). С комплектным или другим качественным проводом приставка будет работать без глюков. Про перегрев и радиатор я написал выше, но подобных жалоб мало, примерно 1 на 100.
У всех консолей в комплекте есть универсальные беспроводные джойстики. Все перечисленные консоли есть в наличии в РФ. По крайней мере, были на момент публикации обзора. Для получения скидки можно воспользоваться купонами летней распродажи Алиэкспресс.
Пока компактная ретро-консоль DataFrog Y2-HD с HDMI выходом — это самый лучший вариант по соотношению цена и качество. C другой стороны стационарная ретро-консоль DataFrog Y3 с SD-картой имеет возможность сохранения прогресса игр в ячейку энергонезависимой памяти и последующей загрузки сохранений. А самое главное — можно записать свои скаченные ROM'ы игры, в том числе хаки.
Игры того времени были довольно сложными и увлекательными, не то что современные донатные помойки или простые аркады по подписке Apple.
Сыграть в любимые игры детства и немного поностальгировать можно практически на любой современной ТВ-приставке и некоторых моделях Smart TV. Сейчас расскажем, что скачать и как настроить.
Что для этого нужно
🕹 геймпад для удобного управления. Здесь упираемся исключительно в возможности подключения к вашей приставке. Для бокса со свободным USB-портом подойдет любой проводной USB-джойстик, приставка с Bluetooth справится с беспроводным геймпадом. Практически любая ТВ-приставка на Android сможет работать с радиоджойстиком через внешний приемник.
⌚ 15 минут на настройку и загрузку игр.
Как все настроить
1. Устанавливаем на приставку приложение KODI. Это бесплатный многофункциональный медиакомбайн, который работает практически на любой платформе. Он пригодится для удобной каталогизации фильмов и сериалов, просмотра контента с сетевого накопителя, трансляции IPTV и, разумеется, для запуска ретро игр.
На чистом Android или Android TV достаточно загрузить приложение из Google Play Store, при использовании Raspberry Pi или Windows-компьютера нужно скачать соответствующую версию с сайта разработчиков.
Вот способ установки KODI на Apple TV 4:
Есть и другой вариант установки с использованием Xcode и аккаунтом разработчика.
2. Запускаем KODI и производим процедуру первоначальной настройки. Потребуется выбрать часовой пояс, язык интерфейса и еще несколько опций.
5. Соглашаемся на установку выбранного эмулятора и необходимых для его работы дополнений.
7. Файлы с расширением *.nes или *.gen извлекаем из архива и копируем на приставку любым удобным способом. Это можно сделать через сетевую папку, SMB-протокол или флешку.
8. Запускаем установленный на приставке эмулятор и указываем путь к скопированным на нее играм.
9. Остается лишь настроить подключенный геймпад в параметрах эмулятора. Это будет предложено сделать при первом запуске либо можно будет сделать в настройках.
10. Теперь можете играть в старые игры из детства на большом экране телевизора.
Разумеется, таким способом можно запускать игры с других консолей и игровых платформ. Для этого придется подобрать подходящий эмулятор и соответствующие ромы.
Данный способ является наиболее удобным, ведь для игры не требуется установка отдельных приложений (KODI чаще всего и так используется на тв-боксе). Кроме этого данный медиакомбайн поддерживает практически все современные геймпады и позволяет переназначить любые клавиши на них.
Пишите, какие игры вы первым делом протестировали на своей ТВ-приставке.
(26 голосов, общий рейтинг: 4.58 из 5)Артём Суровцев
Люблю технологии и все, что с ними связано. Верю, что величайшие открытия человечества еще впереди!
Читайте также: