За порчу оборудования автор ответственности НЕ несет.
Жалобы/вопросы/предложения приветствуются.
Вот компания SEGA создала такую прекрасную приставку MegaDrive. Но прежде чем ее выпустить на рынок, подумала: “Если приставка будет популярной, как обеспечить ее работоспособность на разных странах, где действуют разные стандарты на телевидение? И, что важнее, как защитить ПО (т.е. игры) от нелегального тиражирования и копирования в разных странах?”. Оказалось проще простого: надо в схему внедрить регистр, чтение из которого выдаст программе информацию о стране/стандарте. Но фирма задумалась: “Это что, для каждой страны делать свой завод и техпроцесс изготовления микросхем? Нет, так дело не пойдет!”. И вот решение – были введены перемычки на плате, которые и задавали режим и стандарт работы приставки. Эти перемычки выставлялись один раз на заводе. Пользователь о них не должен был знать.
И на первых приставках была ОС. Она считывала состояние регистра и узнавала, для какой страны сделана приставка и какой версии она, отказываясь запускать “чужие” игры. Игроки стали разочаровываться, а компания, спохватившись, стала думать: “Если процесс нелегального копирования нельзя полностью прекратить, то, может быть, взять его в свои руки?” И вот появился “MegaKey” – специальный картридж, который включался между приставкой и картриджем. Он говорил ОС другую информацию и игра запускалась. Позже ОС убрали, упростив еще и схему самой приставки (убрали RF конвертер и стерео выход для наушников).
Но некоторые производители игрушек, сильно нагружая ресурсы приставки, привязывали ее к одному из стандартов – это PAL с частотой развертки 50Гц и NTSC с частотой развертки 60Гц. В чем разница? Дело в том, что данные в видеоконтроллере (VDP) необходимо обновлять каждый кадр. Это накладывает определенные ограничения на программу. Так, как VDP генерирует прерывания каждый кадр, при разной частоте кадров меняется и их период. А значит если программа очень “громоздкая”, и успевает все сделать в режиме PAL, то она может не успеть что-то сделать в режиме NTSC потому, что время, отведенное на обработку кадра, в этом режиме меньше. Например: в игре “Red Zone”, если включить режим информации (в игре “Start”, “Вправо”, выбрать пункт “Info”) об объекте и навести на “Rocket Pad”, то видео (в верхнем левом углу) в режиме PAL (50Hz) будет подпорчено. А если включить режим NTSC (60Hz) то все нормально.
Что же представляет собой MegaKey? Оказывается, просто микросхему, которая выставляет на шину данных процессора информацию с DIP-переключателей, при чтении с определенного адреса. После изучения оказалось, что адрес равен 0A10000h. Но этот адрес соответствует тому самому регистру, который встроен в саму приставку. Получается более “сильный” сигнал с “MegaKey”я просто в наглую “забивал” слабый сигнал внутреннего регистра. Это опасный режим! Но, к счастью, обращение к регистру происходит только один раз, при первом старте программы, поэтому ничего разрушительного не происходит :)
Итак, ясно, что сам ключ уже присутствует в приставке. И его можно задействовать. А вот как это сделать, будет сказано ниже. Сначала разберем приставку:
Все схемы будут рассмотрены относительно "микросхемной" версии приставки Sega MegaDrive, т.е. со стандартным набором микросхем: TA04 - арбитр шин, TA05 – порты ввода/вывода, ТА06 – видеоконтроллер (VDP) и ТА07 – звук, полная копия чипа Yamaha YM2612. А так же M68000 - главный CPU.
Слева: TA06 (большой чип) – видеоконтроллер “VDP”;
TA04 (средний чип посередине) – арбитр шин. Кстати, я его менял, поэтому на нем нет маркировки “SEGA”. Именно он и послужил причиной того, что у меня появилась эта приставка. Взамен нее, я отдал обычную MegaDrive 2, и сказал хозяину, что ремонт невозможен :). А ниже сфотографирован сам звуковой чип Yamaha YM2612. А так же Z80 и его ОЗУ.
Физически, регистр режима входит в состав микросхемы TA05. Это микросхема портов ввода/вывода. Переключается сигналами на ножках 25 и 26. На плате присутствуют специальные перемычки, перерезая или соединяя которые можно выбрать необходимую комбинацию. Ножка 26 выбирает режим PAL/NTSC и соединена с ножкой 46 видеоконтроллера ТА06. Ножка 25 выбирает страны либо USA в режиме NTSC или Brazil в режиме PAL, либо Japan в режиме NTSC или Other в режиме PAL. Всего 4 комбинации. На фотографии это два красных провода. Ножку 26 лучше отключить от ножки 46 микросхемы VDP ТА06. Это даст возможность выбирать режим 50Hz/60Hz независимо от страны. На фотографии это голубой провод рядом с красными. Схема проста: разрываем контакт ножек со схемой и соединяем через DIP переключатель на "землю" (минус).. Я использовал счетверенный DIP: 1 и 2 переключали страну, 3 переключал режим 50Hz/60Hz. Его нужно подключить к 46 ножке ТА06, отключив ее от остальной схемы. Подсказка: ножка 46 TA06 соединена с видеокодером CXA1145 для переключения режима кодирования видеосигнала в PAL/NTSC. Кодер тоже желательно отключить от ТА06. Это даст возможность иметь всегда сигнал PAL, а значит и цвет на телевизорах отечественного производства. Кстати, SONY PlayStation тоже можно доработать по тому же принципу, так как там применяется полный аналог CXA1145. Правда нужно будет установить кварц на 4.43МГц.
Теперь о самом интересном. Остается еще один DIP №4. И чтобы он не пропадал зря, я его использую для одной “фишки”. Я ее назвал “универсальная пауза”. Смысл ее в том, что она “тормозит” главный CPU (M68000). Z80 при этом продолжает работать. Для этого используется сигнал “BR” или “BusReq”. Его назначение это захват шин процессора. Т.е. пока процессор “переваривает” очередную команду, он не использует внешних (по отношению к нему) ресурсов. В это время их можно использовать другим устройствам, минуя процессор. Этим занимается контроллер DMA (Direct Memory Access – Прямой Доступ к Памяти или ПДП).
Для чего это нужно? Например, чтобы “разгрузить” процессор, если контроллер DMA организовывает пересылку одной порции данных 8 или 16 бит за один машинный цикл CPU. В приставке этот режим не используется, зато можно пересылать данные со скоростью 2х и иногда даже выше, чем это сделает CPU с самой оптимизированной программой. Это потому, что пересылка будет происходить каждый такт синхронизирующей частоты, тогда как CPU на исполнение одной команды затратит несколько тактов. Держать CPU в режиме захвата шин можно столько, сколько угодно. После поступления сигнала, CPU освобождает шины сразу, как только завершит выполнение текущей команды.
Вывод подключен к ТА06, что не удивительно, ведь BR использует контроллер DMA и Z80 при обращении к ресурсам 68K. Выход ТА06 выполнен по технологии ОК, поэтому мы можем подключить его к нашему переключателю DIP через диод. Анод диода к процессору (ножка
13 для корпуса DIP64 и ножка 13 для корпуса SMD (четырехугольного)) а катод
к переключателю. При замыкании переключателя DIP произойдет генерация сигнала захвата шин. CPU остановится. После выключения CPU продолжит работу. На рисунке – это голубой провод. Диод любой, например КД522 (как в джойстиках).
Плюсы: неограниченная пауза в любой игре (Mortal Kombat, например).
Противопоказания: в "тяжелых" игрушках, которые используют все возможности аппаратуры или привязаны ко времени, может произойти зависание. На время останова, динамически изменяемое изображение может быть испорчено, после пуска восстановится. Если музыку играет 68К, то будет тишина... Все проблемы связанны с тем, что сигнал BR, из-за простоты схемы, может прийти в любой момент. Например, во время отработки прерывания – в самый важный момент для VDP.
Конструктивно, это выглядит так: снята крышка разъема SegaCD. Для паузы несколько
не удобно, зато внешний вид не портится.
Данные "фишки" применяются с 1994 года на всех приставках, которые прошли через меня. И на моей лично. Каких то неполадок замечено не было.
Если есть в наличии приставка, которая уже выполнена на других микросхемах (как правило, это либо две большие квадратные (TA06 и комплексная, объединяющая TA04, TA05, TA07, M68000, Z80) и несколько мелких (памятюшки), либо один большой чип на 208 ножек). Можно иногда тоже подключить DIP при условии, что на плате имеются соответствующие пины. Для этого можно прислать мне фотографию (желательно с цифрового фотоаппарата) и я попробую определить возможность подключения DIP’ов.
HardWareMan
|