Картридж для денди с usb своими руками

SiiiO › Блог › Самодельный картридж для 8 битной приставки типа денди

Помню в детстве всегда было интересно, как же эти картриджи работают, и можно ли самому записывать в них игры? А не так давно на ютубе увидел видео где рассказывалось о самодельном картридже. Меня это заинтересовало, почитал форумы, посмотрел схемы, вроде все понятно и платы не сложные, но не было чем программировать параллельные микросхемы памяти.

Через некоторое время я собрал программатор EzoFlash, который подключался к LPT порту и мог много чего программировать, это клон Willem-а и работает с его софтом. Но так и не успев ни чего запрограммировать и протестировать подвернулся по дешёвке сам Willem. Так эти прогеры скучали пока я не насобирал старых памятушек для проб и сборки картриджа.

И вот настал момент записать память 27С040, это 512кбайт память. И тут я выясняю, что программатор Willem, купленный за недорого, малость подпаленный :(. Благо при сборке EzoFlash я разобрался с тестированием данного программатора и быстро нашел выгоревший смд транзистор на плате, он коммутировал питание микросхемы памяти, после его замены все стало записывать нормально и можно было приступать к созданию платы картриджа.

Вот тут было немного сложно, дело в том, что игры для денди делятся на категории, каждая категория игр работает на картридже со своей схемой, а схема в свою очередь зависит от используемого маппера памяти. Маппер, это грубо говоря микросхема, которая делит память картриджа на страницы по 16кбайт, поскольку 8 ми битный процессор больше не в состоянии переварить в связи с нехваткой адресного пространства. Вот тут то маппер и помогает с расширением адресного пространства. Мапперов целое множество, некоторые специализированные и стоят дорого, но благо есть китайские клоны, некоторые могут заменить микросхемы обычной логики.

В моем случае я создавал картридж для игры Battletoads & Double Dragon, она в качестве маппера использует логику HC161, это бинарный счетчик. Игре необходимо 256кбайт памяти, но если мы берем ПЗУ на 512кбайт памяти и просто перемычкой переключаем старший бит адреса в 0 или 1, то получаем возможность выбрать с какой половиной памяти работать. Таким образом можно в одну ПЗУ записать 2 игры и выбирать в какую хотим играть. Также выбор игры можно сделать по нажатию на ресет, но эта опция требует одну дополнительную микросхему и не всегда корректно отрабатывает, на разных приставках может работать по разному.

Схему брал ТУТ, HC02 выкинул из схемы, и поставил перемычку на адрес А18, печатку перерисовывал сам, брал ТУТ.

Источник

Самодельные картриджи для Dendy/Famicom

После моей статьи про дампер картриджей (которую пока что оставили на Хабре почему-то), меня очень много раз просили рассказать, как собирать и записывать картриджи для Денди/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 он запоминает записанное значение и выдаёт его на те самые дополнительные выводы у памяти, он же переключает мирроринг.

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

Они, как правило, умеют уже переключать разные банки для разных областей памяти, управлять дополнительной памятью, генерировать прерывания, а иногда даже расширять вычислительные мощности консоли.

В качестве примера возьмём самый популярный маппер — MMC3. О нём во всех подробностях можно почитать тут: wiki.nesdev.com/w/index.php/MMC3

Первым делом читаем, как происходит взаимодействием с ним. А происходит оно через запись по определённым адресам, их 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. Там такая схема:

Где $8000 & #$40 — это chr_mode. Получается так:

Режим зеркалирования описывается всего одной строкой. В зависимости от него мы замыкаем вывод картриджа CIRAM A10 либо на A10, либо на A11:

Дальше сложнее. MMC3 умеет генерировать прерывания, когда на экране рисуется определённая строка. Это весьма полезно, и игры часто это используют. Строки на экране считаются с помощью обращений к A12 у PPU. При типичных настройках сигнал на A12 переходит из логического 0 в логическую 1 ровно один раз за строку, если не считать кратковременные переходы в 0. А их надо не считать, это всё немного усложняет:

Ах да, MMC3 поддерживает ещё подключение дополнительной оперативной памяти по адресу $6000-$7FFF! Надо не забыть и это описать:

Вот и всё, наш MMC3 готов! Полный код можно посмотреть тут: https://github.com/ClusterM/nes_mappers/blob/master/4%20(MMC3)/MMC3.v
В том же репозитории есть коды многих других мапперов.

На самом деле собрать картридж для какой-то одной определённой игры весьма просто, ведь нужно будет установить только необходимые компоненты. А вот сделать универсальный картридж гораздо сложнее.Если установить ПЛИС на 128 макроячеек, flash на 512 килобайт для PRG, flash на 512 килобайт для CHR, SRAM на 32 килобайта для CHR, SRAM на 32 килобайта в качестве дополнительной памяти, питание которой поддерживается батарейкой для игр, которые умеют сохраняться, то на нём пойдёт уже около 90%-95% игр. Схема получается весьма замороченная, я долго вручную рисовал плату под всё это дело. Кстати, при выборе компонентов не стоит забывать, что у Famicom/Dendy пятивольтовые уровни. Китайцы сейчас очень часто это игнорируют.

Первая ревизия моего универсального картриджа выглядела как-то так:

Ну и программу для записи игр написал конечно же:

Как видите, всё не так сложно, если немного посидеть и разобраться в принципах работы.

Источник

Делаем (очередной) самодельный картридж для Денди

Дело было вечером, делать было нечего. Решил запилить первый самодельный картридж на Денди (возможно, кто-то ещё помнит такую приставку).

Найдены дубликаты

TECHNO BROTHER

759 постов 7.4K подписчика

Правила сообщества

1-Мы А-политическое сообщество. 2-Запрещено оскорбление: Администрации Пикабу, сообщества, участников сообщества а также родных, близких выше указанных.

мда. не Кластер ты, сразу видно )

Теперь мы знаем как нарисовать сову :-/

Да, согласен, название не очень удачное.

верю что сзади монитора лежит андроид приставка с включённым хаппи чиком(эмулятор)

Поделитесь распайкой вывода с консоли?)

а как сама игруха заливается туда?

Хуй там. Китайцы шпарили в таких объёмах и по таким смешным ценам, что конкуренцию им хрен составишь.

Читайте также:  Оклейка антигравийной пленкой своими руками видео

зато сейчас есть тьма локализованных ромов, которые можно было бы продавать подороже 🙂

так это сейчас, а в ветке разговор о том чтобы отправить чувака в девяностые 🙂

Кстати тоже до сих пор пользуюсь ЛУТ-ом, с ним мороки меньше,чем с фоторезистом

Купил картридж и выложил типа «я сделяль», как же ещё))

Гугли ЛУТ. Видосов на эту тему на YT масса. Можно фоторезистом, но лично моё мнение, что с ним мороки больше. Разводка сделана в Sprint Layout.

Ну ЛУТ и софт-рисовалка это понятно. А как проектировал саму схему? Игру как туда запихивал? Вот это же интересно.

Советую взглянуть видео Кластера, о его самопальных картриджах. Там, конечно, не как тут, но принцип ясен.

Здравствуйте. Предыдущий пост автора был удалён ввиду некорректного оформления (видео ссылкой), потому этот пост допустим.

Да, можешь. Потому что в ленте удалённые посты не отображаются.

Задача не особо интересная, честно говоря. ATmega + VUSB, например.

Проблема поколений

Сложный выбор

Бабушка и картриджи

Сейчас читаю посты по тегу «родственники». И вспомнилась своя история из детства. Это очень длиннопост.

В те моменты когда денег хватало, мне давали деньги на карманные расходы. Помню как мне их первый раз дали в 7 лет и сказали «это твои деньги, трать как хочешь». Денег хватило на одну жвачку Turbo 🙂 Но по факту денег я этих почти не видел, далее будет понятно почему.

Была у меня Денди. Её привёз откуда то отец, который очень часто менял работу и где то сумел её взять, не успев пропить все деньги. Денди тогда была не очень, у многих уже была Сега, ну и у совсем избранных Нинтендо.

Если я вообще не тратил карманные деньги, то полгода накоплений позволяло купить один картридж. В начале учебного года, в 4 классе бабушка сказала:

— Ты эти игры любишь, копи, а потом в Москву поедем, там говорят много их и там купим.

Я копил год, хотел поехать в магазин Dendy который пиарили в одноимённой программе по телеку. Везде говорили, что там и только там можно купить настоящие лицензионные картриджи. В картонной коробочке, всё как положено. Это я когда вырос узнал, что всё это было китайскими подделками, но тогда. Эта была поездка в волшебный мир, настоящий диснеленд, зазеркалье малышни.

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

И вот проходит год, мы с бабушкой едем в Москву. Перед поездкой она, сказала, что бы деньги я ей отдал, а то украдут. Ну я и отдал, бабушка же, чего бы мне ей не доверять, так ведь? Сначала надо было заехать в книжный (там ещё и канц. товары были) прикупить всякого мне к школе. В книжном мы провели часа три, так как бабушка с восхищением бегала туда сюда выдавая что то вроде «Ой, посмотри какие тетрадочки, у нас то таких нет. Ой, а какие ручки!». Мне было пофиг, по моему мнению тетрадка должна открываться и быть из бумаги, ручка должна писать, это всё, что мне было нужно. В общем вышли мы из магазина и далее диалог:

Бабушка: Ну вот, видишь как хорошо съездили, поехали домой.

Я: Подожди подожди, а магазин в который я хотел?

Бабушка: Я устала, и накупили всего, очень тяжело (несли мы это пополам).

Я: Я у тебя всё сейчас заберу и понесу сам. Тут две остановки на метро и минута от метро. Я понимаю, что устала, но мы быстренько.

В общем едем мы туда, а там тьма народу, продавцы за прилавками носятся. Там была такая фича (она много где была), можно попросить, что бы тебе включили игру и посмотреть на неё, продавец там поиграет секунд 30. Народ выбирал 20 игр, собираясь купить одну, и по очереди продавец все включал, так что обслуживание одного покупателя занимало уйму времени. Но я знал, что я хочу купить и помня, что бабушке тяжело, не был готов стоять в очереди 2 часа. (сам был готов, бабушка не готова, я бы там вообще жить остался нафиг). Стал ходить и просить что бы меня пропустили, я просто назову игры, принесут картриджи я расплачусь и уйду, делов на минуту. Народ меня пожалел, и пропустил.

И вот тот самый момент: на кассе передо мной лежат две заветные коробочки, в них игры, в которые я не играл и все мои друзья не играли, я их видел по телевизору и они были очень крутые.

А далее диалог с бабушкой:

Я: У тебя же мои деньги, я тебе перед поездкой отдал, что бы не украли.

Она: Так вот же, мы же на них для школы купили всякое.

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

Потом таких случаев было много, например когда я дал бабушке в долг, а она купила мне фломастеры (они нафиг не нужны, я не люблю рисовать, а в школе ими запрещали рисовать) которые стоили в 5 раз меньше суммы долга и уверяла, что на это ушли все деньги. Но эти случаи уже не бесили так как тогда я для себя решил, что деньги которые мне запросто так кто то дал, нифига не мои, если я не успел их потратить. Это было такое детское бегство от осознания того, что меня обманывают самые близкие люди.

А знаете, что на самом деле бесило? Отношение к этим случаям. Если бабушка сказала бы мне в книжном что то вроде «Внук, нам очень тяжело сейчас, денег не хватает, а тебя надо к школе собрать, можно я потрачу твои карманные деньги?» я бы разрешил. Я был очень благодарен бабушке с дедушкой, что они забрали меня от родителей и разрешил бы им что угодно, несмотря на сильнейшее желание купить картриджы. Если бы вместо фломастеров, мне бы сказали «Сейчас очень трудно с деньгами, мы не можем тебе их отдать и не знаем когда сможем» я бы спокойно забил и всё. Понимаю, что это звучит как дартаньянство, но я действительно легко расставался с деньгами если делал это по своей воле или просьбе, а не по обману. Я угощал друзей, когда у них не было денег, покупал двоюродным сёстрам игрушки, когда только пошёл работать и одежды нормальной не было.

Читайте также:  Ремонт передней подвески шевроле круз своими руками

Мораль? Её нет, я стал подмечать отношение людей к деньгам и сделал вывод:

Всем добра, относитесь хорошо к тем, кто этого достоин 🙂

Диорама по игре Bucky o’hare / Center of Magma Tanker

Диорама по TMNT

Все детальки вырезанны вручную из пластика, подкрашены торцы и собранно в одно целое.

Рамка полностью сделана в ручную, покрашена в чёрный матовый цвет, в качестве стекла было использовано оргстекло.

Если вам интересные подобные работы то жду в своей мастерской:

группа в вк (rocket pixel)

Диорама по игре Contra.Final Stage/Final Boss

Запоздалая диорама

Итак, диорама по игре контра

Спасибо моим 6 подписчикам. Прошу прощения за затишье, работа, времени на создание практически нет😥 Из-за нехватки времени не успел наклеить волны на скалы и пули от винтовки. А какие ретро игры у вас самые любимые? Можете покидать идей, попробую сделать когда будет чуть-чуть времени 🙂

Диорама по Contra NES

«It was nice to work with you dear comrades marines Bill Rizer and Lance Bean»

Диорама по Оригинальному Mario и Contra

Диорамы выполнены из пластика, целиком и полностью ручная работа(^_^)

Каждая размером с лист А3

Больше моих работ в группе вк(RocketPixel)

И в инстограме (rocketpixelvk)

Диорама по TMNT(snes)

Данная работа выполнена из пластика, вырезана и собрана вручную)

Будут вопросы, пишите, постараюсь ответить всем)

Отдам в хорошие руки

Отдам в хорошие руки картриджи для Dendy. Королёв

Собрал джойстик из того, что было под рукой

Интересной особенностью старых ноутбуков является наличие LPT порта.

Он имеет входы и выходы которые мы и планируем использовать.

На выводах можно обнаружить питание 5 вольт.

Если закоротить вход на массу, то система воспримет это как сигнал. Соединял через резистор.

Утилита LPT Manager отображает состояние входов

и позволяет управлять выходами. Для теста подключил светодиод.

Драйвер XYZmodeB предназначен для работы c джойстиками от Сеги, но вполне подошел.

Заработали только четыре кнопки из пяти возможных.

Поэтому при подключении один из выводов пришлось перенести.

Я взял гребенки от Ардуино, которые нужно использовать по четыре иначе просто выпадают. Длины гребенок может не хватать. Лечится переносом пластикового элемента.

Плату и кнопки взял из испорченного принтера.Резисторы на 500 Ом. Кнопки пришлось перенести на обратную сторону платы,

чтобы не мешали лишние дорожки.

Так выглядит готовый результат.

Все делалось по принципу из того что есть под рукой.

Лучшая наглядная иллюстрация современной маркетинговой политики игровых издательств

‘Диорама’ Batman: The Video Game

Как своими руками сделать картридж Денди

Выкладывал как-то пост про самодельный картридж 2в1 с Батложабами, но не раскрыл секретов, как оное сотворить. Исправляю свою оплошность 🙂

«Кризис игровой индустрии»

Наверное, каждому знаком тот парадокс, когда ты хочешь прочесть на википедии про какой-нибудь фрактал Мандельброта, а через часа четыре, с первыми лучами солнца, ловишь себя на мысли, что по ссылкам в статьях дошёл уже до изучения причин Великой Французской Революции. Зачастую открывается много подобных интересных связей и оторваться просто невозможно. Так вышло у меня и на этот раз. Во все подробности вдаваться не стану, информация в открытом доступе, но просто поделюсь парой интересных фактов.

И тут меня заинтересовало, что же за обвал мог быть в те годы в США, когда в нашей стране об играх только где-то что-то слышали, представляя себе не более, чем Пэкмана, а бум Спектрума ещё и близко не начался. Оказалось, что тогда объём рынка компьютерных игр рухнул с 3 млрд долларов в 1983 году до 100 млн долларов в 1985 году, а весь кризис индустрии произошёл, грубо говоря, из-за одной игры, которая создала цепную реакцию.

Об этом массовом захоронении я слышал ещё давно, «до этих ваших интернетов» (с), хотя не знал ни причин его, ни игры, которую хоронили, ни даже того, кто хоронил. Некоторые журналы в начале нулевых писали, что это всё байки и просто метафора, а по факту никакого захоронения не было. Но В 2014 году факт захоронения игр получил подтверждение в ходе проводившихся раскопок на свалке близ города Аламогордо, что в штате Нью-Мексико. Были найдены именно картриджи с играми E.T. the Extra-Terrestrial и Pac-Man, которая хоть и была коммерчески успешной, но получила крайне негативные оценки критиков. И вот тут я (да и многие из вас, наверное) вспомнили эту пасхалку из Wasteland 2. Что примечательно, раскопки были начаты в конце апреля 14-го, а Wasteland 2 вышел в сентябре того же года. Брайн Фарго быстро среагировал на так называемый хайп 🙂

Вот, в принципе, и всё, что я хотел сказать. Я не претендую на истину и, быть может, где-то мои рассуждения не верны, но имею мнение, что некогда Нинтендо перезапустила рынок игр, выдав революционный продукт и я бы не прочь, чтобы современные гиганты, паразитирующие сугубо на чужом успехе, побывали на грани банкротства или на местной свалке, после выпуска всяких позорных Андромед, Фоллаутов 4 и Бэттлфронтов (ничего личного), ибо именно кризисные моменты в любой области невольно двигают её прогресс.

Источник

admin
Лайфхаки по дому и огороду