- Как я разработал самодельный девкит для Sega Mega Drive
- Введение
- Но для начала нужно убедиться в реалистичности задачи
- Как подойти к решению этой задачи?
- Картриджи
- Игровой разъём на консоли
- Как передать мой код на Mega Drive
- Плата памяти
- Плата логики
- Промежуточная логика
- Схемы
- Получилось ли у меня?
- Готовый результат
- Более мощная прошивка
- Об авторе
- Доработка Sega Mega Drive 2
Как я разработал самодельный девкит для Sega Mega Drive
Введение
Примерно тридцать лет назад (когда мне было около двадцати) я, как и многие другие разработчики, мечтал создавать игры. Однако оставался один нерешённый вопрос: для какой платформы их писать? Разумеется, я мог бы делать игры на Atari 1040 STE, который в то время у меня был, но мне хотелось достичь чего-то более крутого и сложного.
Позже я познакомился с Sega Mega Drive и меня сразу увлекла эта консоль, я играл в такие замечательные игры, как Sonic, Truxton, Revenge Of Shinobi и многие другие. Оборудование и графика консоли со встроенной программным параллаксным скроллингом были потрясающими.
У меня возникла безумная идея — я захотел разрабатывать игры для этой машины. Но ведь для этого наверняка для этого потребуется чудовищно дорогое оборудование, которое невозможно достать? У меня не было ни официального комплекта разработки, ни денег на его приобретение, ни документации, только сама Mega Drive.
Поэтому я подумал, а почему бы не собрать собственный девкит?
Но для начала нужно убедиться в реалистичности задачи
Неужели я сошёл с ума? Почему я решил, что смогу справиться с этим?
- Sega Mega Drive работает на процессоре Motorola MC68000, с которым я был близко знаком на самом низком уровне чипа. Также у консоли был отдельный сопроцессор Z80 для звука и других задач, который был поверхностно мне известен.
- Я хорошо знал язык ассемблера MC68000, потому что много лет программировал низкоуровневые ассемблерные демо на домашнем компьютере Atari ST. Я один из первых участников SYNC — шведской демо-группы Atari ST. Подробнее о SYNC можно прочитать здесь и здесь. В своё время мы творили на Atari ST довольно безумные вещи.
Мне нравилось экспериментировать с электроникой и я долгое время собирал небольшие компьютеры. На фотографии выше показана пара проектов того времени. Впрочем, я не помню, что они делают.
Как подойти к решению этой задачи?
Моя цель заключалась в проектировании и изготовлении комплекта, который без внесения модификаций в Sega Mega Drive позволил бы мне «симулировать» картридж при помощи статической ОЗУ. Комплект подключался бы к компьютеру Atari ST, на котором бы я писал программы. Общая структура комплекта:
Картриджи
Первая трудность заключалась в реверс-инжиниринге картриджа игры и в том, чтобы разобраться с расположением контактов в его разъёме. Печатная плата внутри картриджа выглядит вот так:
Проведя долгие исследования в различных справочниках по чипам, я наконец выяснил, что это обычный чип ROM. Благодаря этому знанию стало довольно легко разобраться с большинством контактов в разъёме картриджа.
Однако чтобы создать готовый комплект разработки, мне нужно было разобраться и остальными контактами.
Игровой разъём на консоли
Следующей трудностью стало то, что нужно было разораться со значением контактов на разъёме картриджа внутри Mega Drive. Внутри консоли разъём находится рядом с процессором 68K и выглядит вот так:
При помощи мультиметра мне удалось сопоставить большинство контактов с хорошо известной схемой контактов процессора.
Однако оставалось ещё один-два контакта, предназначение которых я не мог понять. И без настоящего логического анализатора мне бы довольно сложно было разобраться, что они делают. Так как мой бюджет был сильно ограничен, я решил изготовить анализатор самостоятельно. Насколько сложно это может быть? Поразмыслив, я понял, что мне достаточно только 8-битного чипа буфера FIFO на 2 КБ, который можно использовать для сэмплирования сигналов при запуске консоли после процесса сброса. Благодаря ему я мог изучить сигналы и расшифровать их связь с некоторыми другими хорошо известными контактами на шине процессора. Так как я хорошо разбирался в том, как работает шина MC68K, то был готов к этому испытанию.
По сути, мне нужно было следующее:
Но как мне раздобыть чип буфера FIFO? В то время я находился в Париже с другом, мы завершали создание аудиотрекера для Atari ST под названием Audio Sculpture, который затем продали французскому издателю.
Но вернёмся к приобретению чипа. Я каким-то образом узнал о ярмарке электроники в Париже, поэтому решил отправиться туда с целью попросить бесплатно опытный образец буфера FIFO. В результате мне удалось найти нужную компанию, и я получил бесплатный опытный образец чипа. Отлично!
Вот пара ссылок на опубликованные нами материалы об Audio Sculpture:
- Audio Sculpture Demo Disk by SYNC and Expose Software on Atari ST
- Audio Sculpture at Atari mania.
Но как извлечь данные из буфера FIFO? В моём Atari ST был разъём расширения, напрямую соединённый с шиной процессора внутри компьютера, поэтому добавив немного логики, я привязал буфер FIFO к этому разъёму. Я написал ПО для извлечения данных из буфера и отображения их на экране. При помощи этой методики мне наконец удалось разобраться с предназначением загадочных контактов.
И теперь у меня была полная схема разъёма для картриджей на консоли. Переходим к следующему испытанию!
Как передать мой код на Mega Drive
Разобравшись с оборудованием, мне нужно было понять, как записывать ПО на консоль.
Я решил, что стоит написать небольшую загрузочную прошивку, которая при запуске будет ждать дампа двоичных данных с Atari ST. Я подключу комплект к Atari при помощи самодельного протокола передачи, который будет передавать данные по 8-битному параллельному кабелю, похожему на параллельный кабель для принтеров, имевшийся в то время у большинства PC.
При запуске Mega Drive загружается с игрового картриджа, поэтому мне достаточно было просто добавить небольшую прошивку, которая в процессе запуска принимала бы дамп двоичных данных, а после получения дампа приступала к исполнению кода. Для хранения прошивки я использовал два 8-битных чипа EPROM.
Недавно мне удалось найти исходный код для прошивки и я опубликовал его в виде GitHub GIST (не уверен, что он окончательный) и в этом GIST.
Плата памяти
Моя конструкция состояла из двух плат: платы памяти, на которой находилась только статическая ОЗУ, и платы логики для всего остального.
Для хранения игры я изготовил плату памяти, состоявшую из десяти чипов статичной ОЗУ по 128 КБ (KM681000LP-8) общей ёмкостью 1280 КБ. В то время большинство игр на Mega Drive требовали 256–512 КБ ёмкости, а некоторым требовалось и больше.
Наряду с чипами памяти я добавил на плату памяти следующие буферы, чтобы не перегружать системную шину на Mega Drive:
- Два 74HC245 — 8-битных двунаправленных передатчика для шины данных
- Три HC541 – 8-битный драйвер для адресной шины
Позже я спроектировал для карты памяти качественные печатные платы и даже создал несколько разных версий платы. Вот некоторые из них:
При помощи эмулятора DOS DOSBox-X мне удалось извлечь файлы схем печатных плат из старого ПО для проектирования плат, работавшего в DOS. Вот результат:
Плата логики
Вторая плата этого комплекта состояла из следующих частей:
- Два чипа EPROM, на которой хранилась прошивка для запуска
- Промежуточная логика для соединения несовместимых компонентов (на схеме выше обозначена как Glue logic)
- Соединение с платой памяти
- Соединение с компьютером-хостом
Плата подвергалась множеству переделок, на фотографии в середине находится последний и работающий прототип:
Для быстроты прототипирования я выполнял монтаж плат скруткой:
Как видно из скриншотов ниже, я начал проектировать реальную печатную плату, но, к сожалению, так её и не собрал.
Промежуточная логика
Чтобы связать всю необходимую логику, я добавил небольшой чип PAL (Programmable Array Logic), содержавший промежуточную логику (glue logic), необходимую для объединения всей системы.
Мне удалось раскопать исходный код для этого чипа и я опубликовал его в виде GIST здесь, чтобы вы могли его изучить.
Схемы
Схема конструкции находится здесь. Однако поскольку в те времена систем контроля версий не существовало, я не уверен, окончательная ли это схема.
Получилось ли у меня?
Да, в конечном итоге мне удалось заставить всё это работать и я смог, например, писать простые приложения, загружать их напрямую Mega Drive и запускать их. Постепенно я накопил достаточно подробной информации, чтобы управлять спрайтами на экране и пользоваться джойстиком.
Для создания программ на Atari ST я использовал инструмент Turbo Assembler. Turbo Assembler был совершенно уникальной IDE языка ассемблера, потому что он предварительно генерировал двоичные данные прямо в процессе набора. Второе преимущество Turbo Assembler заключалось в том, что он позволял мне разрабатывать собственные драйверы/целевые платформы. Благодаря этому я мог отправлять готовый ассемблерный код непосредственно на свой аппаратный комплект. Потрясающе!
Писал ли я игры? К сожалению, нет. Начав учиться в университете, я больше не мог продолжать заниматься разработкой игр. Но это был очень интересный проект и я многому из него научился.
Готовый результат
Итак, как же выглядел готовый проект? Вот его фотографии:
Более мощная прошивка
В качестве хобби-проекта я занялся написанием более сложной прошивки с расширенными функциями отладки и опубликовал исходный код здесь.
В ней есть такие функции, как отладка, задание контрольных точек, скачивание двоичных данных и другие удобные инструменты. Понятия не имею, работает ли она.
Об авторе
Меня заинтересовали компьютеры с тех пор, как примерно в 1981 году мне достался первый Commodore VIC-20. После него я последовательно переходил на Commodore C64, Atari ST, Atari ATW (да, у меня действительно был в своё время Atari ATW с пятью транспьютерными чипами внутри) с операционной системой Helios, а сегодня на PC!
После этого проекта следующей большой работой стало создание Programmers Heaven; изначально это были два CD-ROM, которые я издавал, но постепенно превратилось в крупное сообщество разработчиков, активное с 1996 по 2008 годы. Надеюсь, в ближайшем будущем я смогу написать о нём пост.
Сегодня я работаю консультантом и преподавателем на фрилансе.
Источник
Доработка Sega Mega Drive 2
Как-то раз. Купил. На авито. И получил полудохлое состояние, но за 150р. Сега мегадрайв 2 включалась, но выдавала чёрно-белое изображение, которое иногда двоилось, а иногда троилось. Экстерьер консоли был под стать её электронному интерьеру = ПИ#ДЕЦ. Я поясню, как выглядело ЭТО. По всему корпусу были наляпаны наклейки терминатор 2 (из одноимённой жвачки 90-х годов) + наклейки с черепашками — ниндзя, тоже, по всей видимости, прямиком из славных 90х. И это не всё! В местах свободных от влияния бумажной субкультуры 90х, были засохшие следы, то ли от напитков, то ли. Затрудняюсь ответить/понять. К сожалению фоток «ДО» я не сохранил. И нет, это были не экскременты, как многие здесь подумали и не урина, как подумала другая половина! Чем у Вас здесь головы забиты? Всё это дело было очень липким! Работоспособность кнопок POWER и RESET была на уровне хорошего рандома! Что ни говори, но культура пользования вещами у нас в России (Москве?), отсутствует как явление. Разобрав всю эту «ЗАМАРАШЕЧКУ» я понял, что внутри, не лучше, чем снаружи. Вся плата была залита этими самыми, то ли напитками, то ли непонятно чем. + много волос (махнушек) домашних питомцев. «ПРЕКРАСНО!» — обрадовался я! «Мой вечер сегодня не будет таким одиноким и пустым! Он наполнится глубочайшим смыслом, отмывания всего этого дер. а!» Консоль эта прямиком из 2001 года (дата изготовления нарисована на плате), является клоном оригинальной европейской версии Sega Mega Drive 2 . А выпускало данное чудо, легендарная своим ужасным качеством ЗЕЛЕНОГРАДСКАЯ НАРОДНАЯ «КОРПОРАЦИЯ» NEWGAME, во главе со своим обдолбышем E.T. с планеты Меркурий . Справедливости ради, клон получился довольно качественный (всё-таки начало 2000х)! Базируется на процессоре SM 801-A1, выдаёт хорошую и чёткую картинку (c адекватными цветами, а не психоделикой), со звуком тоже всё в порядке (сравнивал с оригинальной SEGA MEGA DRIVE 2 PAL ASIA). Есть слот для Sega Mega CD! К тому же, имеется переключатель регионов (встроенный Мега Кей), под все типы картриджей (японка, европейка, американка и прочие страны), которые мне ну очень лень перечислять. Печатная плата практически полноразмерная, хотя до размеров оригинальных приставок, естественно не дотягивает, как и по кол-ву распаянных элементов. (Но буквально ЦЮТЬ ЦЮТЬ). В КОНЦЕ 90х начале 200х ещё не так экономили на кол-ве элементах, как делают это сейчас!
Что собственно хотелось мне в ней довести до ума? Да немногое, на самом деле. Для начала, я вымыл, всю эту «СРАНЬ» и высушил! Напоминаю. Многие боятся, но я уже не одну плату от игровых консолей мыл при помощи зубной щётки и мыла, а иногда и моющего средства! Потом протирал и сушил (можно вытяжкой воспользоваться)! Всё прекрасно работало (лично у меня). После высыхания, разумеется, я её ВКЛ и увидел, что у неё зачем-то был впаян кварц от другой приставки с другой частотой — 26Mhz, вместо положенных 17Mhz! На плате всё указано (все номиналы). В этом и была причина чёрно-белого двоящегося изображения! Я быстро перепаял на нужный кварц, благо есть чутка доноров. И всё сразу прекрасно заработало. + покрасил корпус обычной чёрной глянцевой аэрозолью (только переднюю крышку, заднюю не стал, всё равно не смотрю туда, да и она была/есть в нормальном состоянии), а кнопочки серебряным покрасил. Была замарашка, а стала няшка! Впаял ещё яркий светодиод синего цвета и сделал консоли PAL 60hz mod. Кто не знает, но большая часть современных клонов Сега (скорее вообще все) работают в формате PAL 50HZ, а из этого следует, что изображение не на весь экран как у пиндосовской Genesis (оно сплюснуто сверху и снизу) + музыка звучит медленнее + сам процесс игры менее динамичный, в отличии от NTSC 60Hz пиндосовских. Для прям точного NTSC нужно ещё и кварц перепаивать, но мне было лень! Оно и так всё прекрасно работает и ощущается — возросший драйв от экспириенса в любой хорошо знакомой за 20 лет игре! Особенно радуют бойцы в MK любой части — теперь они ЗДАРАВЕННЫЕ на весь экран!
ВСЁ ДАЛЬНЕЙШЕЕ ДЕЙСТВИЕ, ВЫПОЛНЯЕМ ИСКЛЮЧИТЕЛЬНО НА СВОЙ СТРАХ И РИСК! И В НАДЕЖДЕ НА СВОИ СТАЛЬНЫЕ ЯЙЦА И ПРЯМЫЕ РУКИ! Для того чтобы сделать этот мод, нужно найти 4 ногу у процессора SM 801-A1 (это очень просто, всё подписано, просто отсчитываем до 4), она отвечает за смену Pal/NTSC сигналов (VDP P/N 50/60) и проследить куда ведёт дорожка от этой самой 4 ноги, и собственно, где она заканчивается, в этом месте и резать. А можно смело и раньше резать, будет идентичный эффект. Даже если ошибётесь, то можете просто запаять обратно, то место, где неправильно перерезали! И учтите, что данный мод можно реализовать именно на приставках с процессорами SM 801-A1 или TCT 6005, на других процессорах, всё это делается совершенно иначе! S-video и RGB моды я не стал делать! Мне они вообще без надобности, ибо на мой субъективный взгляд, через эти виды подключений (пробовал, если что) картинка консоли выглядит уж слишком сильно перешарпленной и становятся чрезмерно видны пиксели! Это особенно заметно на ЖК ТВ! И боже Вас упаси сыграть «В ЭТО» на 50″ панели через этот «кровь из носа нужный RGB»! Поэтому, лично я, выбираю композит для старых консолей, как самый оптимальный способ подключения, на мой СУБЪЕКТИВНЫЙ ВЗГЛЯД. Например, для PS 2 или первой Xbox, S-video или RGB вполне себе имеет шанс на существование, но на sega и snes, ситуация обстоит иначе (на мой вкус). Если кто-то начнёт ныть, мол «ступид идиот» или «слепой», RGB — наше всё! Я отвечу так — ЭТО МОЁ СУБЪЕКТИВНОЕ МНЕНИЕ + ХОТИТЕ РАЗГЛЯДЫВТЬ КАЖДЫЙ ПИКСЕЛЬ НА СВОЁМ ЗДОРОВЕННОМ ЖК — ФЛАГ В РУКИ! Я НИКОМУ НИЧЕГО НЕ НАВЯЗЫВАЮ! Вы вообще можете идти в САД и там делать СЕЛФИ. Я лично Вас здесь не задерживаю. Да и потом, в старые консоли, играю я исключительно на ЭЛТ телевизоре, на котором есть МАГИЧЕСКИЙ ползунком sharpness, в случае чего. Могу сказать такое (из личного опыта), что некоторые новейшие клоны дают чудовищную картинку, как по чёткости, так и психодел по цветности (не все конечно), вот для них, НАВЕРНОЕ, не помешает S-video или RGB кабель прикупить, хотя. Подобным абсурдом заниматься. В этом случае кабель потянет на цену самой консоли! А что касается регионального мода, так он встроен на моей консоли, смотрите внизу фотки (да я и выше упомянул об этом) + там ещё СТРАННЫЙ ползунок переключения напряжения картриджей расположен (по логике это 5V всегда). Ах да, переключатель (как многие ретро-гики делают) между Pal 50HZ/NTSC 60Hz сигналами мне тоже не нужен! Я вообще сторонник не усложнять себе жизнь подобными изысками! У меня благо есть и MEGA KEY и SEGA GENESIS американского региона — 60HZ NTSC (и ещё несколько оригиналов и клонов), а эту приставку я решил просто так, от безделья немного «твикнуть». + По скольку это клон, мне его не особо жалко было (если бы даже и запорол). Вот оригиналы, тут я не сторонник переделывать что-либо, как внешность, так и электронную начинку! А вообще, эта консоль ещё не до конца «доведена». Нахватает финального штриха — лазерной гравировки логотипа SEGA на верхней части консоли, там где она и должна находиться по-умолчанию! Всё ноги никак не доедут до конторы, которая делает эту самую лазерную гравировку. Все фото ниже (яркость специально пересыщена, чтобы Вы видели разницу по краям ТВ между 50Hz и 60Hz). А полосы — это не глюки, или ещё какие-то прочие неполадки, так снимает цифровик 50HZ_овый ЭЛТ телевизор! На жк таких полос, Вы бы не наблюдали.
Вот так, она бы выглядела ДО! Если бы не была в ужасном состоянии!
А вот так выглядят внутренности и «заднести» этой сеги и как/чё/где резать, стрелки там. Дабы вышло трендовых Pal 60Hz! Ну, или вышла нерабочая приставка сега мегадрайв 2 . ))
Такая няшка получилось в итоге, но не хватает лазерной гравировки логотипа SEGA ( в сотый раз говорю) и вот тогда и вот тогда.
Спустя 2 года. Так я никуда и не поехал за гравировкой. Итак сойдёт! Но покрасил действительно хорошо без единого подтёка.
Источник