Схема приставки денди

Обновлено: 05.07.2024

Для меня 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. Вперёд! И обязательно расскажите о том, что у вас получилось.

Схемотехника Денди по большей степени классична для любой ЭВМ: содержит микросхему процессора, видеопроцессора, оперативной памяти и прочей сопрягающей "рассыпухи". В 80-х годах прошлого столетия консоли Famicom и их «клоны» изготавливались именно в «многокорпусном варианте». Один из типовых вариантов принципиальной схемы приведен ниже (при клике на картинку открывается полномасштабный вариант - чуть более 100кб.)

Несмотря на то, что документ явно «китайского» происхождения, на нем «один-в-один» изображена схема японского Famicom редакции HVC - CPU -07 (проверено). По-сему схему можно использовать не только в целях ремонта и т.п. но и сконструировать по ней систему «с нуля».

Массовую популярность на российском рынке Денди приобрела в большей степени (чем китайцам) благодаря компании "Стиплер", - которая, по всей видимости, имела "пиратские" корни. Лично я очень сильно сомневаюсь в том, что Стиплер делала лицензионные отчисления в пользу Nintendo. Потому что как тогда, для примера, объяснить само возникновение брэнда "Денди"? - а имя оригинального разработчика, кстати, всеми усилиями скрывалось. Или, например то, что в один прекрасный момент эта фирма (казалось бы так раскрученная) внезапно исчезла? (Можете попробовать поискать на гугле . ) Ну да разговор не об том. Внезависимости, занималась ли реально Стиплер работой над схемотехнической архитектурой консолей, либо же просто заказывала OEM-партии клона Famicom под своим логотипом - продукция была действительно высокого качества, не в сравнение морю явных "китайских" подделок (скупаемых "там" за копейки и мешками завозимыми к нам). Наиболее известными "ремэйками" консоли NES в исполнении Стиплер были модели "Dendy Junior" и "Dendy Classic" отличались они лишь дизайном (ну и некоторыми малосущественными нюансами), хотя "классик" стоила несколько дороже. Кстати именно дизайн Dendy Junior являлся точной копией японского Famicom , а дизайн Dendy Classic повторял дизайн «китайских» клонов (или наоборот?).

В месте с тем, за весь период своего производства "начинка" консолей (как стиплеровских так и «китайских») претерпела определенные изменения (не заметные для рядового пользователя, не отразившиеся на внешнем виде изделия и базовых функциях). Интеграция и миниатюризация в электронном мире идет огромными шагами. Первые редакции консоли были «многокорпусными» (см. схему выше) – это и все японские Famicom `ы, и первые Dendy от Стиплера, и даже китайщина концов 80-х начала 90-х годов прошлого века. Но уже к середине 90-х годов купить новую «многокорпусную» Денди было почти не реально. Первая Денди (" J unior") которую я увидел изнутри (не моя – отдали на ремонт) уже была собрана в соответствии с концепцией System-on-a-Chip (система на одном кристалле) - лишь микросхемы памяти были "внешними" - сейчас есть в моей коллекции подобная система, но в исполнении " Classic " (система PAL - на чипе 1818).

Пару слов (и картинок) о моей первой дендюшке (" J unior II "), той самой - купленной в 1995 году. Это последняя вариация консоли в исполнении " J unior" (внешний вид как у Famicom , см. картинку в уголке) - абсолютно все компоненты системы находятся в едином чипе (включая память). Фотографии обоих сторон платы приведены ниже (плата однослойная, с лицевой стороны есть лишь отдельные проволочные перемычки).



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

Устройство предельно простО. Микро-ЭВМ с необходимой аналоговой обвязкой плюс разъемы - ничего лишнего. Когда зарисовывал схему, складывалось впечатление, что распиновка чипа специально создавалась под конкретную топологию печатной платы, с целью минимизации всех возможных переходов и соединений. Что лишний раз наталкивает на мысль - микросхема UM6561 - есть изделие заказное (а не универсальное, массового производства). В эту пользу говорит и факт отсутствия какой-либо технической документации на данную микросхему, как у самого разработчика - UMC (кстати, достаточно крупного), так и во всевозможных информационных базах. Интересен еще и другой вопрос - "под чей заказ" делалась эта Микро-ЭВМ. Уж не сами ли Стиплер ее заказывали? ;-) С другой стороны - маловероятным кажется и то, что такой крупный мировой производитель электронной базы как UMC приняли заказ на изготовление "чипа" - клона консоли NES (разумеется, при полном отсутствие у заказчика каких любо прав на эту консоль). Тогда под какое применение (официально) был этот чип заказан? - и сколько у него "недокументированных" возможностей? Ладно, оставим мистику в стороне ;-) Хотя о какой "документированности" можно говорить при полном отсутствие какой бы то ни было документации . Все что можно однозначно сказать о Микро-ЭВМ UM6561 - так это то, что в приведенном на схеме включении она полностью (нареканий вроде пока нет) эмулирует работу игровой консоли NES.

Уже в те годы китайцы жмотились на текстолит (хотя и использовали более качественный, нежели в Денди), а также имели неуемную тягу к бескорпусным микросхемам («кляксам»). Почти любая китайская консоль заката эпохи Денди – вторая половина 90-х годов века двадцатого, была сконструирована в виде однокристаллки подобной приведенной выше Dendy Junior II, но в бескорпусном варианте.


На картинке выше фотка центральной платы одной из китайских консолей, внезапно приказавшей долго жить (в далеком 1995-ом) и после почти 20-летнего ожидания в закромах – восстановленной и в настоящий момент вполне себе работоспособной ;-) Трабл был в отказавшем кварце, под замену которого был специально приобретен десяток идентичных ;-) Для удобства тестирования впаяны штыревые гребенки, поменяны резисторы, установлен транзистор …

Расскажу еще о более интересном - о многокорпусных консолях. В 2014 году вновь вспомнилась уже порядком подзабытая тематика о Денди и были куплены у япошек несколько б/у Фамикомов (обзорные материалы о данных консолях размещены отдельно). Здесь же коснемся архитектурной части. Логично, что Фамиком – т.е. NES , рассчитанная на японского потребителя, формирует сигнал в формате NTSC , а радиочастотный модулятор настроен на тамошюю частотную сетку (90 или 96 MHz ). Формат формируемого видео-сигнала определяется вариантом (экземпляром) видеопроцессора ( PPU ). Т.к. схемотехнически различные варианты микросхем PPU идентичны, есть возможность заменить PPU (в случае «многокорпусной» консоли) и тем самым изменить стандарт формируемого видео-сигнала. Так например можно за PAL ить Фамиком … Вместе с процессором нужно будет поменять и «кварц», а в ряде случаев и сам процессор ( CPU ). Варианты «наборов», позволяющих реализовать получение выходного сигнала того или иного формата представим в виде таблицы.

Денди спроектирована так, что вся программа и все данные хранятся исключительно на картридже. Сама приставка не содержит никакой постоянной памяти. Картридж устанавливается в разъём, на который выведены как шины CPU, так и PPU (см. приложение 4). До сих пор мы, для простоты и наглядности, ссылались на модель картриджа, содержащую 32k PRG-ROM и 8k CHR-ROM без наличия маппера. Такие картриджи подходят для хранения небольших игр - их память полностью адресуется CPU и PPU. Для большинства же игр такой объём явно недостаточен – поэтому большинство картриджей имеют значительно больший объём памяти (до 1024k PRG-ROM и 1024k CHR-ROM). Понятно, что непосредственно процессор не может адресовать такой объём памяти. В Денди применяется метод «страничной адресации» памяти картриджа. Картриджи большого объёма содержат, помимо микросхем памяти, еще и переключатель страниц (маппер). Маппер («mapper») – комбинационная схема (или контроллер), состояние которого однозначно определяет блоки ПЗУ картриджа, отображаемые в данный момент в адресное пространство процессора, или знакогенератор PPU. Размер переключаемых окон адресного пространства CPU зависит от типа маппера, а с некоторыми мапперами может даже варьироваться, типичные конфигурации - 2*16k, 2*8k+16k, 4*8 k (возможны и иные конфигурации - причем, как правило, последнее окно непереключаемое).

Видов мапперов существует очень много (наиболее распространены около десяти) – каждый из них имеет свой функционал по управлению аппаратной частью картриджа: поддержка того или иного вида и объёма используемых в картридже микросхем памяти, возможность использования дополнительной памяти (ОЗУ), наличие других дополнительных функций (звукового процессора, таймеров и пр.). Мапперы имеют свои (отличные от других) «системы команды» управления их состоянием. Большим количеством модификаций «классических» мапперов мы обязаны «пиратам» - стремящимся либо с сэкономить на железе, любо запихнуть на один картридж много всего разного, а зачастую - и то и другое сразу ;-) Несмотря на все разнообразие (см. перечень мапперов), базовый функционал всех без исключения мапперов по большому счету идентичен – состояние регистров маппера определяет (управляет) старшими линиями адреса микросхем PRG-ROM и/или CHR-ROM (для которых не хватает адресных линий в разъеме картриджа).

И так, при наличии маппера, картридж Денди содержит:

PRG-ROM – микросхема ПЗУ, хранящая программу и данные (неотъемлемая часть любого картриджа). Подключается к шинам процессора. Старшие линии адреса микросхемы ПЗУ, а также управляющие входы подключаются к мапперу (если маппер предусматривает переключение страниц PRG-ROM).

CHR-ROM/ CHR -RAM – микросхема памяти, подключаемая к шинам PPU - возможен один из двух вариантов:

  • ПЗУ (CHR -ROM) – хранит заранее «прошитые» знакогенераторы PPU, которые могут переключаться, если это предусматривает маппер. Подключается к шинам PPU и мапперу (если маппер предусматривает переключение страниц знакогенератора).
  • ОЗУ (CHR -RAM) – статическая память, размером 8k (два знакогенератора). В этом случае «иконки» знакогенераторов должны храниться в PRG-ROM (или генерироваться алгоритмически) и программно (через регистры управления PPU) загружаться в CHR-RAM . Преимуществом такой организации является то, что есть возможность изменения одной иконки знакогенератора (или даже ее части), при сохранении всех остальных иконок неизменными. В предыдущем случае (CHR -ROM ) имелась возможность только выбирать заранее созданные и прошитые в ПЗУ пресеты знакогенераторов (если их несколько) – зато путем переключения можно намного быстрее изменить группу иконок, чем поштучно их подгружать.

Mapper – комбинационная схема (или контроллер), осуществляющие коммутацию блоков микросхем ПЗУ в адресные пространства CPU и/или PPU – т.е. фактически управляет старшими линиями адреса микросхем ПЗУ, для которых «не хватает» адресных линий в слоте картриджа и/или адресном пространстве процессора. Маппер находится на картридже и подключается к шинам CPU и/или PPU и соответствующим микросхемам памяти. Некоторые мапперы состоят из нескольких микросхем. Любая программа (игра) пишется под определенный тип маппера. Т.е., говоря современным языком: драйвер маппера «вшивается» в код программы, более того – он зачастую «размазан» по всему коду … Возможность адаптировать (модифицировать) программу (дамп игры) под другой маппер – задача довольно рутинная – нужно найти и откорректировать все места, где происходит управление маппером.

Также картридж (в редких случаях) может содержать:

SRAM (она же WRAM) - (Адресное пространство CPU $6000-$7FFF) – Статическое ОЗУ, может питаться от компактной батарейки, располагающейся на картридже. Предназначено для «сохранения» игр (если есть батарейка), или просто служит дополнительным ОЗУ (хорошее дополнение). Для него зарезервировано «окно» в адресном пространстве CPU размером 8k (в 4 раза больше встроенного в приставку ОЗУ, а скорость таже и прямая адресация) - существуют картриджи, несущие на борту до 32k ОЗУ (т.е. 4 страницы, переключаемые маппером в этом окне).

Expansion ROM\RAM - (Адресное пространство CPU $5000-$5FFF) – Дополнительные 4k памяти (для CPU). В целом аналогично SRAM (используется, как правило, с маппером MMC5).

VRAM - (Адресное пространство PPU $2800-$2FFF) – «Недостающие» 2k VRAM для двух экранных страниц PPU (3 и 4). Редкая фишка - используется очень немногими играми.

Звуковой процессор - предназначен для более качественного синтеза звука, нежели это реализуется встроенным pAPU (например, в мапперах VRC6, VRC7 и других).

Большинство аппаратных возможностей Денди могут быть использованы (дополнены), например, маппером MMC5 или MMC3 (большинство технологичных игр используют именно их). Разумеется, ничто не мешает разработать новый маппер самому (в архитектуре приставки ничего менять не придется! - всю логику управления маппером содержит программа на картридже), чем китайские разработчики («пираты») увлекаются больше других, а вместе с этим производят и совместимые аналоги «официальных» микросхем мапперов – наиболее популярные из которых следующие:

Программирование мапперов.

В адресном пространстве CPU - адреса $8000-$FFFF выделены для отражения на них памяти картриджа - PRG-ROM. Логически может быть организовано несколько окон, управляемых маппером. Размер и количество окон определяется архитектурой маппера, некоторые типы предусматривают переменный размер переключаемого окна (например, MMC 3). Наиболее распространенный вариант 2*16k, 2*8k+16k или 4*8k - в последнее окно ($xxxx-$FFFF) позиционируется или «хвост» ПЗУ, или его начало. Также, зачастую, последнее окно переключению не подлежит (в нем находятся вектора прерываний).

Каждый маппер имеет определенное количество регистров управления, доступных только для записи. Адресуются они через области, отведенные для PRG-ROM. То есть – чтение из памяти по адресам $8000-$FFFF приводит к чтению ПЗУ (PRG-ROM), а запись, по некоторым адресам из этого диапазона, приводит к записи управляющих слов в соответствующие регистры маппера.

Подробное описание разных мапперов – не цель данного материала, однако некоторые из них рассмотрим подробнее.

Маппер UNROM.

Для примера рассмотрим маппер UNROM – один из самых простейших мапперов, но весьма удобный для знакомства с программированием Денди и написания несложных программ. Он предусматривает работу с PRG-ROM объёмом 128k (17 линий адреса, 3-мя старшими линиями управляет маппер), в качестве CHR используется непосредственно ОЗУ размером 8k (без участия маппера). Маппер строится на базе двух микросхем (74HC161 и 74 HC 32) и программно представлен как один регистр, который отражается на всё пространство PRG - ROM ($8000-$ F FFF). То есть запись по любому адресу из этого диапазона приведет к записи в регистр маппера. Записываемый байт (а вернее 3 младших его бита) определяет блок микросхемы ПЗУ (16k), подключаемый в окно $8000-$BFFF (т.е. при A 14=0) - блоки нумеруются с нуля и с начала адресации микросхемы ПЗУ. В окно $C000-$FFFF (т.е. при A 14=1, вне зависимости от содержимого регистра маппера) всегда подключен последний блок (последние 16k) ПЗУ ( A 14= A 15= A 16=1 на адресных входах ПЗУ). Таким образом, возможен вариант (при « xxxxx 111» в регистре маппера) когда последний блок ПЗУ будет последовательно продублирован в адресном пространстве.

Знакогенератор CHR - RAM - заполняется программно, через регистры PPU ($2006,$2007) – запись должна производиться в адресное пространство PPU, отведенное под знакогенератор ($0000-$1FFF). Вид отражения экранных страниц определяется распайкой (коммутацией) перемычки на плате картриджа.

Принципиальная схема маппера UNROM такова:


Разумеется, на схеме выбор (из двух) логических входов элементов 2-ИЛИ может быть произвольным, как и выбор используемых 3 из 4 таких элементов 2-ИЛИ из микросхемы 74HC32 (аналог «ЛЛ1») – на рисунке изображен один из множества возможных вариантов (точная копия коммутации на примере реализации в картридже на плате HVC-UNROM-03). Счетчик 74HC161 (аналог «ИЕ10») в данной схеме используется фактически как регистр (а не счетчик).

Super Hik.

Маппер 49 (Super Hik 4-in-1).

Многие игры используют далеко не весь функционал, предоставляемый маппером MMC3, и в первую очередь в части размера PRG и CHR. Таким образом, выглядит вполне логичным (с технической точки зрения) создание мульти-игрового картриджа без микросхемы ОЗУ ( WRAM ), где под каждую из игр зарезервирован слот размером 128k (и в PRG и в CHR) – т.е. применение микросхем емкостью 4 мегабита (19 адресных линий). Игр, которым такой объем ресурсов совместно с маппером MMC3 (его аналогом AX5202) достаточен - предостаточно!

Рассмотрим механизм переключения слотов с играми такого мульти-игрового картриджа с точки зрения схемотехники и управления ей. Фактически мульти-игровой картридж « Super Hik» содержит в себе два маппера! ММС3 (полноценный, аппаратный) – именно с ним работают игры (выбранная в данный момент игра), и «маппер верхнего уровня» (этакий «гипервизор») – который обеспечивает выбор слота с игрой, которая и будет запущена … А так как для каждой из игр маппер верхнего уровня прозрачен (что логично), рассмотрим именное его принцип работы.

Маппер верхнего уровня представляет собой регистр «только для записи», доступный в диапазоне $6000-$7FFF. Т.к. за доступ к данному диапазону адресов отвечает MMC3, то необходимо сначала разрешить такой доступ (управляющая команда к MMC3). Конечно жаль, что из-за такого способа обращения к регистру маппера теряется возможность установки на картридж WRAM и стало быть запуска игр, требующих дополнительное ОЗУ по этим адресам, но сейчас не об этом.

Общая цель маппера верхнего уровня проста – обеспечить выбор (адресацию) старших адресных линий микросхем ПЗУ (PRG и CHR) за пределами 128 k , которыми управляет MMC 3. Т.е. должна быть возможность управления линиями A17 и A18 у обоих микросхем ПЗУ, хотя и изменять состояние этих линий предстоит вобщем то не часто: при включении/сбросе приставе на этапе выбора игры (слота с игрой внутри микросхем памяти).

Принципиальная схема «маппера верхнего уровня» внутри «маппера 49» такова:


Таким образом, в регистре маппера присутствуют только 5 бит. С программной точки зрения возможны два режима работы маппера (выбираемые битом D0) в части переключения страниц PRG-ROM.

«Основной режим» ( D 0=1) – в этом режиме слот с игрой (один из четырех) выбирается битами D6 и D7 (выполняют роль сигналов адресных линий A17 и A18 физических ПЗУ как PRG-ROM, так и CHR- ROM ); значение бит D4 и D5 в регистре - безразлично; адресными линиями A13-A16 PRG- ROM и A10-A16 CHR- ROM управляет маппер MMC 3. Игра не выходит за пределы своего слота и управляет только маппером MMC3.

«Альтернативный режим» ( D 0=0) – именно этот режим активируется при загрузке (сбросе), т.к. аналоговая часть схемотехники маппера верхнего уровня (RC-цепочка) сбрасывает весь регистр маппера в ноль. В этом режиме MMC3 не управляет адресными линиями PRG-ROM – ими управляет исключительно маппер верхнего уровня. Биты D6 и D7, как и прежде, подключены к линиям A17 и A18 как и PRG-ROM, так и CHR- ROM (т.е. для CHR-ROM оба режима абсолютно одинаковы) – а вот биты регистра маппера D4 и D5 теперь задают значения адресных линий A15 и A16 PRG-ROM соответственно, а линии A13 и A14 берутся непосредственно со слота картриджа. В этом режиме получается программная модель переключения страниц PRG-ROM, в некоторой степени, аналогичная мапперу UNROM – в данном случае 4 старших бита регистра маппера выбирают одну из 16 страниц размером 32k микросхемы PRG-ROM, подключаемую в окно $8000-$ FFFF (после сброса – самое начало ПЗУ). Повторюсь: переключение страниц CHR - ROM в «альтернативном режиме» происходит аналогично «основному режиму» - линии A 17 и A 18 выбираются маппером верхнего уровня (биты D6 и D7), более младшими битами CHR-ROM всегда управляет маппер MMC3.

В целом, для использования такого симбиоза мапперов в конечном решении, необходимо как минимум вносить изменение в дамп игры, помещаемый в первый слот. Т.е. искать игру у которой, хотя бы, хвост первых 32k дапма свободен для размещения векторов прерываний, а также в этом блоке есть место для размещения их обработчиков (в лучшем случае - кода для реализации меню выбора игр, или накрайняк – для переключения банков «альтернативным способом» на более свободный, где уже и разместить код меню). Не забываем, что картинку меню придется складывать из иконок выбранного блока CHR-ROM (что возможно повлечет необходимость или выбора одной из игр с подходящими символами в одной из страниц, которую нужно будет выбрать двумя мапперами, или поиск игры с неиспользуемыми ячейками CHR-ROM, в которые можно разместить нужные символы).


На мой взгляд, вся суть сборки приставки заключается в 3 этапах.

Найти сбалансированную плату для монтажа Dendy своими руками.

Так выглядит готовая плата. Заказывал я её у китайских друзей с АЛИ. Приехала она в течении 2 недель. Заказывал 10 штук, приехало 11. За что им и спасибо. По Москве сделать такую плату предлагали в 4 раза дороже. Она полностью подходит под стандартный корпус, имеет стереовыход аудио. Микросхемы выставлены оптимально для распайки и уменьшения длины дорожек.

плата для монтажа Dendy

Сами граберы для вытравливания, версия платы 01. Есть более новая, в ней отличается только расположение одного конденсатора. Считаю такую доработку не новой версией. Выкладывать её не буду. Собирал по версии 01, всё отлично, рабочая и отлично встаёт в стандартный корпус.

Полный комплект деталей для спайки Dendy своими руками.

Вот тут возникают сложности. Процессоры и сопроцессоры уже не выпускают, и найти можно либо старые запасы, либо через китайских друзей.

Процессоры и сопроцессоры. Для заказа через АЛИ обязательно вступать в переговоры о том, что будет высылать китайский друг. Короче капец) Но рано или поздно приезжают рабочие микросхемы и даже с небитыми пикселями. Последний, у которого заказывал, вот этот. От него приехали UA6527p, но они оказались обычными UA6527 и работали на частоте 21.47, пришлось собрать 2 генератор и проверять работоспособность процессора и сопроцессора на разной частоте. Будьте внимательны.

Самих систем может быть 2 варианта: PAL и NTSC версии.

Для выбора системы передачи видео сигнала, не забываем про основной генератор приставки. Разница в выдаваемой частоте генерации, на которых работают эти разные системы.

PAL работает на частоте 26.6
NTSC работает на частоте 21.47

Это все отличия в деталях при сборе PAL или NTSC систем.

По задумке ребят, которые делали данную плату, все CMD компоненты размера 0805, но это большие по 2 мм детали я рекомендую впаивать размер 0603. Они более подходят для монтажа на данную плату.

Перед закупкой рекомендую посмотреть компоненты на старых платах модемов, материнках, роутерах и подобном хламе. Я выпаял от туда порядка 60% всех CMD компонентов.

После того, как у нас есть все компоненты, осталось найти 60-пиновый разъём для картриджа)


Или мы его выпаиваем со старой приставки, или опять на АЛИ. Я заказывал вот тут, и у меня в запасе ещё остались, могу вручить по себестоимости закупки.

Ну и заключительный поиск упрётся в разъёмы для джойстиков. Тут, к сожалению, альтернатив мало: либо снимать со старой, либо лепить ляпуху из вот такой альтернативы: D-Sub DB15 Вилка должна быть угловая. Она отлично входит в плату и отлично держит джойстик.

Некоторые ссылки на детали:

И сама плата в сборе со всеми деталями.


Дорожная карта при сборке Dendy своими руками

Dendy своими руками

Первым делом
Вторым делом

Собираем схему питания. Разъём питания, диодный мост, стабилизатор с радиатором, конденсаторы до стабилизатора и после, кнопка включения и кнопка resset. Подаём питание и проверяем все последние ножки на всех микросхемах на наличие стабильного питания в +5 вольт. Последняя нога микросхемы +, минус находится на противоположной стороне в конце микросхемы.

Третьим делом

Собираем схему усилителя звука и вывода изображения. После сборки можно проверить работоспособность каскада касаниями к выходам левого и правого каналов с CPU, ножки 1 и 2. При касании к ним рукой должен появляться тихий шум на выходе усилителя звука. На вашем телевизоре, если вы подключили красный и белый выход ко входу аудио)

Касаниями к выходам с PPU ножка 21 на телевизоре при подключенном желтом кабеле к входу видео будет появляться мелкая рябь.

Четвёртым делом

Паяем все детали и каретки для микросхем на плату. Проверяем каждую припаянную деталь трижды: номинал, как припаяли, прозвонили её по месту.

Пятым делом

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

Вставляем картридж и включаем.

Долгие мучения с бубном и тщательная проверка пайки ведёт к запуску данного аппарата)


Напоследок опишу основные проблемы, которые почерпнул на форуме и с которыми сталкивался сам:



Вторая причина

Питание есть, ничего не запускается вообще HELP.

Причин море)

Первое и главное: ПАЙКА. Проверяйте 10 раз все детали на работоспособность перед пайкой.

Второе: микросхемы. Очень часто купленные микры не совместимы с китайскими катриками на 400 игр. Не хватает скорости обработки. Проверяйте работоспособность на старых картриджах, которые ещё на капле. У них микры на 5 вольт и там скорость медленнее, чем на новый китайских многоигровках. В моём случае причина незапуска картриджа Кулбой была в микросхеме SN74HC139N. На каплях все катрики работали , а новый 400 в 1 не запускался, пока я её не поменял.



Третья причина:

Криво спаянный генератор частоты. Проверяйте, есть ли генерация на ножках: PPU нога 18 и на CPU нога 29.

На них и проверяем осцилографом наличие генерации с нашего генератора частоты сигнала.

Если чего еще вспомню, добавлю)

За некоторыми деталями можно обращаться ко мне.

На основании всего вышеизложенного можно самому вполне быстро и с удовольствием собрать Dendy своими руками.

Читайте также: