ZX - Mega Drive

SEGA Mega Drive в качестве видео контроллера для ZX-Spectrum .
(Или ZX-Spectrum в качестве загрузчика бинарников для SEGA ;)

 

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

Конечно приставку можно будет использовать не только как видео сопр., но и как звуковую карту аля GS/TS FM . А так же по прямому назначению , т.е. для запуска чисто приставочного контента . Что можно считать большим плюсом , т.к. это позволит опробовать девайс сразу во всей красе , не дожидаясь когда кто то что то начнёт под него делать .

Сам картридж можно использовать независимо от спектрума . Допустим подключив к картриджу микроконтроллер с картой памяти можно получить флэш картридж для сеги . Так же в принципе возможно сделать устройство по типу программатора для заливки игры с ПК (не вынимая картриджа из приставки).

 

Принцип работы

У обычного видео контроллера доступ к регистрам осуществляется через порты , но в данном варианте такой доступ к ним невозможен . Поэтому приходится использовать програмно/железную прослойку ввиде картриджа со статической памятью (SRAM) (доступ к которому поочерёдно будут иметь как спектрум так и сега) и загружаемой в приставку управляющей программы - драйвером .

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

Доступ к картриджу со стороны спектрума осуществляется через окно ПЗУ страницами по 16килобайт . Для управления используются два порта . Один системный (отключение ПЗУ/подключение страницы картриджа в окно ПЗУ , управление сбросом сеги , передача сеге доступа к картриджу , выбор прерывания для спектрума - ZX/SEGA , ...). Другой для выбора страницы картриджа .

После включения связки ZX-SEGA , доступ к картриджу имеет только спектрум . После загрузки драйвера в картридж , доступ к картриджу передаётся приставке , и генерируется сброс для приставки . Тип используемого прерывания переключается на приставочное . Драйвер переносится из картриджа во внутреннюю память приставки после чего начинает свой цикл работы .

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

Прервать или изменить цикл драйвера можно только программно (способ завит от конкретного драйвера).

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

 

Компоненты

Бесчисленная армия китайских клонов SEGA Mega Drive выпускается и по сей день (есть даже проэкт на FPGA), так что с их поиском проблем быть не должно . Цена на новую китайскую приставку менее 600р (с.м. на "вместе дешевле") примерно столько же стоит и фирменная старая сега (на "молотке" и т.п.). Старая китайская стоит ~300рэ . По возможности лучше брать фирменную , т.к. она имеет очень качественное видео и звук . Делее древнекитайскую с большой кучей дискретных элементов (сновное отличие от новых - наличие слота для MEGA-CD). И в последнюю очередь стоит брать новую китайскую , которые делаются практически на одном чипе . Главное чтоб это был какойнить более менее известный чип , а не безкорпусная микросхема "капля" . Тогда хотя бы можно будет исправить некоторые явные глюки и сделать выход на RGB монитор (если плата на SM801-A1/TCT6005/ATT6005/SEGA 315-5960/SEGA 315-6123). Единственное преимущество новодельных китайских клонов - маленькие размеры платки (парой меньше кредитной карты), которую вполне можно уместить в большинстве корпусов . На различные варианты плат можно посмотреть в этой галерее - Clones .

С поиском статической памяти проблемм возникнуть не должно . Её можно заказать через все возможные интернет магазины . Либо взять со старых материнских плат и прочей древней электроники . Легче всего будет найти SRAM 62256 (32Kx8) , для конструирования картриджа в 128к их понадобится всего четыре штуки .

Необходимый минимум памяти которым можно обойтись для эксперементов - 128к (с ШД 16бит). Этого хватит для нескольких игр ( FATALL LABYRINTH , BLOCKOUT , COLUMNS , ISHIDO , SHOVE IT! , Flicky , ... ) которыми можно протестировать картридж . Но лучше конечно остановиться хотя бы на 512к (ШД 16бит). Это позволит хранить много тайлов (и прочие данные) не засоряя и без того не большую память спектрума . И главное это позволит видео контроллеру на максимальной скорости (7380байт за вертикальное гашение) набивать себе видео память более разнообразными тайлами при скроле и анамации , так что эти 512к можно считать чем то вроде расширения видео памяти . Сеговских игр которые можно будет загрузить станет на пару сотен больше ( SONIC , GOLDEN AXE , GOLDEN AXE 2 , AFTER BURNER II , ALIEN3 , BONANZA BROZ. , DOUBLE DRAGON , ELEMENTAL MASTER , FORGOTTEN WORLDS , FANTASTIC DIZZY (!!!), BATTLE TOADS , HARD DRIVIN , ROBOCOD , THE REVENGE SHINOBI , SPACE HARRIER II , TURRICAN , ... ).

 

Схема

На данный момент схема и дизайн платки немного изменились (не причёсанный вариант - ZX-SEGAMONTv2.png ZX-SEGASCHv2.png ), в часности можно использовать всего один восьмибитный чип SRAM (аналогично флэш картриджу , старший байт защёлкивается в отдельном регистре), можно для тестов установить флэш чип (предусмотрены перемычки / ША & ЩД распутаны), вся рассыпуха в дип корпусах , часть рассыпухи заменена на матрицу (на ebay стоит меньше шести баксов). Платка стала более ЛУТово пригодна (в отверстиях под ножки чипов нет переходов). Далее идёт описание схемы первоначального варианта .

 


Click to enlarge.

 

Со стороны приставки память используется как 16 битная ва чипа статики по 64 килобайт с ШД 8бит , дадут 128к с ШД 16 бит). Используется только первая четверь адресного пространства приставки (4 мегабайта). Со стороны спектрума память используется как 8 битная , 16 битные данные автоматически распределяются на чётные и не чётные байты . За это отвечает элемент IC21A/B/C , который управляет дешифраторами IC18 и IC19 . Низкий уровень сигналала ZX_/OE-T (с прямого выхода IC20A) на входах IC21A/C переводит режим работы памяти в восьмибитный , по состоянию младшего адресного бита ZA0 (с шины данных спектрума) происходит распределение байтов данных на четные и не чётные .

Группа регистров со стороны приставки IC1 - IC5 и группа регистров со стороны спектрума IC6 - IC10 под управлением триггера IC20A играют роль гигантского мультиплексора , что позволяет предоставлять доступ к памяти в один момент времени либо приставке либо спектруму . Дать доступ приставке может только спектрум , а спектруму только приставка .

Предоставление доступа спектруму делается путём записи любых данных во вторую четверть адресного пространства приставки (которое не используется) и автоматически заканчивается прерыванием со стороны приставки . Начало отрицательного импулься формируется триггером IC20B по положительному перепаду сигнала SEGA/OE . Возврат в исходное состояние триггера IC20B (завершение преревания) происходит по комбинации сигналов /M1=0 и /IORQ=0 от процессора спектрума . Выбор какой вариант прерывания использовать ZX / SEGA , осуществляется битом 2 (INT SEGA /ZX) системного регистра .

Картридж управляется через два порта двумя регистрами доступными только на запись (их значение нужно дублировать в памяти спектрума). Один регистр предназначен для выбора 16к страниц картриджа (подключаемых в окно ПЗУ) . Другой для управления . Значение битов системного порта -

0 - ROM / CART - отключение ПЗУ спектрума и подключение страницы картриджа в окно ПЗУ .
1 - SEGA /RESET - формирует сброс после загрузки/смены управляющей программы и передачи управления приставке .
2 - INT SEGA /ZX - выбор типа прерывания для спектрума - SEGA / ZX .
3 - SEGA_CTRL - передача управления картриджем приставке (возврат упраавления только со стороны приставки).
4 - VIDEO OUT SELECT - выбор видео сигнала SEGA / ZX (идет либо на свитч , либо на конструкцию его заменяющую).
5 -
SEGA LOCK - блокировка передачи управления от приставки к спектруму .
6 -
SEGA 50/60 Hz - выбор частоты кадров (если позволяет приставка).
7 -
SEGA PAL/NTSC - выбор видео стандарта (если позволяет приставка).

Значение битов порта выбора страниц по 16к -

0 - A14 CART 16 Kword - 32 Kbyte --- ( Some INTROs )
1 - A15 CART 32 Kword - 64 Kbyte --- ( Some INTROs & DEMOs )
2 - A16 CART 64 Kword - 128 Kbyte --- ( FATALL LABYRINTH , ... )
3 - A17 CART 128 Kword - 256 Kbyte --- ( HARD DRIVIN , CHAMPIONSHIP PRO-AM , Prince of Persia (Beta 1) )
4 - A18 CART 256 Kword - 512 Kbyte --- ( SONIC , ... )
5 - A19 CART 512 Kword - 1024 Kbyte --- ( Ecco the Dolphin , R_RASH2 , R_RASH (768 КБ)
, Mega Turrican (aka Turrican 3) )
6 - A20 CART 1024 Kword - 2048 Kbyte --- ( Alien Soldier , R_RASH3 , WORMS , SYNDICATE , Mortal Kombat , SUBTERRANIA )
7 - A21 CART 2048 Kword - 4096 Kbyte --- ( WWF Wrestlemania Arcade , MK3 , MK2 (3,00 МБ), SF2TURBO (3,00 МБ) )

From Speccy (Data bus of RAM is 16bit , A0 used for H / L byte switching )
A_1 CART - 2 word
A_2 CART - 4 word
A_3 CART - 8 word
A_4 CART - 16 word
A_5 CART - 32 word
A_6 CART - 64 word
A_7 CART - 128 word
A_8 CART - 256 word
A_9 CART - 512 word
A10 CART - 1 Kword (1024 word)
A11 CART - 2 Kword (2048 word)
A12 CART - 4 Kword (4096 word)
A13 CART - 8 Kword (8192 word) - 16 Kbyte

Плата


Click to enlarge.

Дизайн платы специально затачивался под домашние технологии - ЛУТ & фоторезист . Толщина дорожек и диаметр пятаков сделаны как можно больше , типы корпусов подбирались более удобные для данного варианта разводки , поэтому размер платы получился относительно большой ~8,9x16,7см . Плату картриджа в принципе можно устанвить в приставку , спектрум подключить через шлейф , но длинные провода скорей всего не лучшим образом повлияют на стабильность работы . Такой вариан скорее актуален при использовании старой приставки с большой платой . Лучше конечно установить плату в спектрум (через райзер ака "ёлка"), а плату приставки пристроить вторым этажём на картридже .

ZX-SEGAPCBTop1200dpi.tif , ZX-SEGAPCBBottom1200dpi.tif - Верхний и нижний слои . Отверстия уменьшены до 0,3мм .

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

Платка расчитана на установку до четырёх чипов SRAM одинакового объёма . Для минимального объёма картриджа в 128К , нужно установить 4шт 62256 (32K x8bit) или 2шт 62512 (64K x8bit) . Без дополнительных изменений на плате можно получить такие комбинации памяти - 4шт 32K = 128К / 4шт 64K = 256К / 4шт 128K = 512К / 4шт 256K = 1024К . Если у вас чипы памяти только маленького объема (допустим штук восемь 62256) то дополнительные чипы можно будет подключить вторым этажём , подпаяв отдельно сигналы /CS* с дешифраторов .

 

Мануалы с распиновкой корпусов DIP и TSOP
SRAM *256 (32K x8) - http://www.winbond-usa.com/products/winbond_products/pdfs/Memory/w24256.pdf
SRAM *512 (64K x8) - http://www.winbond-usa.com/products/winbond_products/pdfs/Memory/w24512a.pdf
SRAM *1024 (128K x8) - http://www.datasheetarchive.com/W241024AJ-15-datasheet.html
SRAM *2048 (256K x8) - http://www.alliancememory.com/pdf/AS6C2008%20feb%202007.pdf

Распиновки слотов

Часть схемы фирменного спектрума . Синалы /ROM CS и /INT идут с чипсета через резистор . Это позволяет их легко "задавить" внишми источниками . Если в вашем комьютере нет ничего подобного , то вам придётся сделать такую доработку .

 


Распиновка слота для картриджа (вид сверху , названи приставки спереди).

 

Линки

http://tv-games.narod.ru/hard/Sega_Tech_Rus_1_5b.rar

http://tv-games.ru/up/down/file/hard/smd.rar

www.romhacking.net - Documents - документация по Genesis / Mega Drive .

http://nemesis.hacking-cult.org/MegaDrive/Documentation/GenesisSoftwareManual.pdf

http://segasecret.narod.ru/ - сайт Романыча по сеге (переделка в PAL60). Локальная копия тут .

TPWPSMDIIdjvu.rar , TPWPSMDIItif.rar - С. Рюмик " Третье поколение видеоприставок SEGA MEGA DRIVE II " ( схема и описание приставок на чипе - SM801-A1 / TCT6005 / ATT6005 ). Пригодится для вывода стерео звука (если его нет).

RGB в Sega Megadrive на чипе SM801-A1(TCT6005 / ATT6005) - то чего нет в статье Рюмика (пины RGB даже не отмечены).

segaflashcart8bitchip.png - .....

http://www.planetemu.net/index.php?section=roms&dat=317 - можно скачивать бинарники по одному файлу .
Мелкие интрушки и дёмки - All Your Base Demo by Fonzie - 23,2 КБ ; Alpha Flight Intro 1 (gensKMod_07c) - 68,0 КБ ; ; Censor Intro (Nice Scrol & Flaying Logo) - 48,0 КБ ; Censor Rip Intro 1 (gensKMod_07c) (Color Logo & Text Scroll & Music) - 48,5 КБ ; Censor Rip Intro 2 (gensKMod_07c) - 16,5 КБ ; Censor Rip Intro 3 - 64,0 КБ ; Censor Smiley Face Demo - 256 КБ ; Chuchu Rocket Demo by Fonzie (Game) - 256 КБ ; Elite Rip Intro 1 (Intro with Music) - 12,0 КБ ; Fairlight Rip Intro 1 - 32,0 КБ ; Fairlight Rip Intro 2 (Intro with Music) - 16,0 КБ ; Magical Rip Intro 1 (Intro with Music) - 12,5 КБ ; Magical Rip Intro 2 (Intro with Music & Logo) - 15,0 КБ ; Magical Rip Intro 3 - 40,0 КБ ; Magical Rip Intro 4 (Intro with Music & Logo) - 28,0 КБ ; Magical Rip Intro 5 (Intro with Music) - 16,0 КБ ; Magical Rip Intro 6 (Intro with Music & Logo) - 16,0 КБ ;Paradox Intro 1 - 32,0 КБ ; Pong Masters Intro 1 - 68,0 КБ ; Premiere Rip Intro 1 (gensKMod_07c) (Color Logo & Text Scroll) - 16,5 КБ ; Scoopex Rip Intro 1 (Color Logo & BG Scroll) - 20,0 КБ ; ...

Дёмки - Censor C64 Picture Demo (Hi Res) - 576 КБ ; Censor Movie Trailer Demo (Nice Movie DEMO winh sound) - 480 КБ ; Matrix Movie Intro (Nice Movie DEMO - 256 КБ ; ...

 


НОМЕ


Опубликовывать материалы этого сайта в каких либо других СМИ допустимо только с разрешения автора.

© 2001 - 2010 Z.A.N.


Rambler's Top100