Как прошить sega mega drive
Эмуляторы и утилиты » Приставки » Sega » Sega MegaDrive / 32x
Утилиты для Sega MegaDrive/CD/32x
Следующие утилиты помогут распознать ROM'ы, отредактировать их или прослушать музыку из игр MegaDrive.
Манипуляции с ROM'ами
GoodGen v3.00 (523 Кб) - утилита для опознавания ROM'ов от Sega Genesis/MegaDrive/32X. Знает 5871 ROM’ов. В своё время я накачал кучу игр с различных сайтов, GoodGen очень помогла разбрать их.
SCDToolz v2.15 (85 Кб) - первая в своём роде утилита для приведения в порядок ваших ISO для Sega CD. Распознаёт 342 образов. SCDToolZ не идеальна, но в своё время мне очень помогла. Сейчас образы Sega CD выходят в другом формате и для их опознавания лучше использовать ClrMamePro.
GenRomSuite v.2.8.2 (325 Кб) - Со времён SegaTools для DOS для для операционной среды Windows не было выпущено ни одной серьёзной утилиты, позволяющей работать с РОМами от Sega MegaDrive. Ucon64 всё-таки работает из коммандной строки. Теперь этот пробел заполнен и заполнен профессионально. GenRomSuite позволяет проделывать с РОМом всевозможные вещи, менять их формат или просто их патчить, а так же она является оболочкой для запуска игр на всех эмуляторах Сеги.
Проигрыватели музыки и редакторы
IN-VGM v0.34 (72 Кб) - Плагин для WinAMP. Проигрыватель VGM файлов (платформы Sega Genesis/Mega Drive, CPS1, Sega Master System, ColecoVision, BBC Micro и другие)
YMAMP v2.0 (55 Кб) - Плагин для WinAMP. Проигрыватель музыки Sega Genesis, Callus (GYM, CYM)
in_gym v0.1.6.4 (66 Кб) - Плагин для WinAMP. Проигрыватель музыки Sega MegaDrive (GYM, VGM)
Gym2Mid v0.8 (49 Кб) - Перекодировщик мелодий, записанных эмулятором Genesyst (GYM) или другими современными эмуляторами в формат MIDI.
VGM2MID v0.5 (114 Кб) - Эта программа позволяет перекодировать музыку от игрушек Sega (VGM, GYM) в MIDI.
Ассемблеры
Sega-asm.rar - Этот архив содержит как ассемблер, так и дизассемблер для процесора 68000 (Центральный процессор Sega Genesis, Amiga, . ). Работает всё в коммандной строке.
Несмотря на мой большой опыт в реверсе игр под Sega Mega Drive , крякмисов под неё я никогда не решал, да и не попадались они мне на просторах интернета. Но, на днях появился забавный крэкми, который захотелось решить. Делюсь с вами решением.
Описание
Описание задания и сам ром можно скачать здесь.
Несмотря на то, что в списке ресурсов там говорится про Гидру, стандартом де-факто среди инструментов для отладки и реверса игр на Сегу является Smd Ida Tools. В нём есть всё необходимое для решения данного крекми:
- Загрузчик ромов для Иды
- Отладчик
- Просмотр и изменение памяти RAM/VDP
- Отображение практически полной информации по VDP
Закидываем в плагины к Иде последний релиз, и начинаем смотреть, что у нас имеется.
Решение
Запуск любой игры на Сегу начинается с выполнения вектора Reset . Указатель на него можно найти во втором DWORD-е от начала рома.
Видим парочку неопознанных функций начиная с адреса 0x27A . Давайте взглянем что там.
sub_2EA()
По своему опыту скажу, что так обычно выглядит функция ожидания завершения VBLANK -прерывания. Посмотрим, где ещё есть обращения к переменной byte_FF0026 :
Видим, что нулевой бит как раз устанавливается в прерывании VBLANK . Значит переменную назовём vblank_ready , а функцию, где она проверяется — wait_for_vblank .
sub_60E()
Далее по коду вызывается функция sub_60E . Посмотрим, что там:
То, что записывается первой командой в адрес VDP_CTRL — это команда управления VDP . Чтобы узнать, что же она делает, становимся на эту команду, и нажимаем клавишу J :
Видим, что инициализируется запись в CRAM (место, где хранятся палитры). Значит, весь последующий код функции просто задаёт какую-то начальную палитру. Соответственно, функцию можно назвать init_cram .
sub_71A()
Видим, что снова передаётся какая-то команда в VDP_CTRL , значит снова жмём J и узнаём, что это команда инициализирует запись в видеопамять:
Далее разбираться, что же там передаётся в видео-память, смысла нет. Поэтому просто обзываем функцию load_vdp_data .
sub_C60()
Здесь происходит практически то же самое, что и в предыдущей функции, поэтому, не вдаваясь в подробности, просто назовём функцию load_vdp_data2 .
sub_8DA()
Тут уже кода побольше. И, к тому же, в этой функции вызывается ещё одна. Заглянем сразу туда — в sub_D08 .
Видим, что в регистре D0 приходит команда для VDP_CTRL , в D1 — значение, которым будет заполняться VRAM , а в D2 и D3 — ширина и высота заполнения (т.к. получается два цикла: внутренний и внешний). Обзываем функцию fill_vram_by_addr .
sub_8DA()
Возвращаемся в предыдущую функцию. Раз значение в регистре D0 передаётся как команда для VDP_CTRL , нажмём на значении клавишу J . Получим:
Опять же, из опыта реверса игр на Сегу могу сказать, что эта команда инициализирует запись маппинга тайлов. Адреса, которые начинаются на $Fxxx , $Exxx , $Dxxx , $Cxxx в 90% случаев будут адресами регионов с этими самыми маппингами. Что такое маппинги:
это такие значения, которыми можно указывать, куда выводить тот или иной тайл на экране (тайл — это квадрат из пикселей размером 8x8 ).
Значит функцию можно назвать как init_tile_mappings .
sub_CDC()
Первая же команда инициализирует запись по адресу $F000 . Одно замечание: среди адресов "маппингов", есть ещё регион, где хранится таблица спрайтов (это их позиции, тайлы, на которые они указывают и т.д.) Узнать, какой регион за что отвечает можно будет под отладкой. Но пока нам это не нужно, поэтому назовём функцию просто init_other_mappings .
VBLANK
Так как дальше по коду идёт цикл, то можно предположить, что основную инициализацию мы закончили. Теперь можно посмотреть на VBLANK -прерывание.
Видим, что инкрементируются две переменные (что странно, в списке ссылок на каждую из них абсолютно пусто). Но, раз они обновляются раз в кадр, можно назвать их timer1 и timer2 .
Далее вызывается функция sub_2FE . Посмотрим, что там:
sub_2FE()
А там — работа с IO_CT1_DATA портом (отвечает за первый джойстик). В регистр A0 грузится адрес порта, и передаётся в функцию sub_310 . Переходим туда:
sub_310()
Мой опыт снова мне помогает. Если вы видите код, который работает с джойстиком, и две переменные в памяти, значит одна хранит pressed keys , а вторая — held keys , т.е. нажатые только что и удерживаемые клавиши. Так и обзовём эти переменные: pressed_keys и held_keys . А функцию тогда можно назвать как update_joypad_state .
sub_2FE()
Обзываем функцию как read_joypad .
Цикл обработчика
Теперь всё выглядит куда понятнее:
Значит этот цикл реагирует на нажатые клавиши, и выполняет соответствующие им действия. Пройдёмся по каждой из вызываемых в цикле функций.
sub_4D4()
Кода здесь много. Начнём с первой вызываемой функции: sub_60C .
sub_60C()
Она ничего не делает — так может показаться сначала. Просто возврат из текущей функции — rts . Но, т.к. на неё происходят только прыжки ( bsr ), значит rts вернёт нас обратно в цикл обработчика. Я бы назвал эту функцию как retn_to_loop .
sub_4D4()
Далее видим обращение к переменной word_FF000E . Она нигде, кроме текущей функции не используется и, поначалу, назначение мне её было не понятно. Но, если присмотреться, можно предположить, что эта переменная нужна лишь для небольшой задержки между обработкой нажатых клавиш. (Она и так плохо реализована в этом роме, но, думаю, без этой переменной было бы куда хуже).
Далее у нас идёт большое количество кода, который как-то обрабатывает переменные sprite_pos_x и sprite_pos_y , что может говорить только об одном — это нужно для отображения спрайта выделения вокруг выделенного в алфавите символа.
Значит теперь можно смело назвать функцию как update_selection . Идём дальше.
Код проверяет, установлены ли биты каких-то нажатых клавиш, и вызывает определённые функции. Посмотрим на них.
Какая-то шаманская магия. Сначала из переменной word_FF0018 берётся WORD , затем происходит выполнение одной интересной инструкции:
Эта команда просто прыгает на следующую за ней инструкцию.
Далее — ещё одна магия:
Значение в регистре D0 кладётся на вершину стека. Тут стоит отметить, что у Сеги, как и у какого-нибудь x86 , адрес возврата из функции при её вызове кладётся на вершину стека. Соответственно, первая инструкция кладёт на вершину какой-то адрес, а вторая — поднимает его со стека и совершает по нему переход. Хороший трюк.
Теперь нужно понять, что это за значение в переменной, по которому потом происходит переход. Но, для начала назовём эту переменную как jmp_addr .
А функции назовём так:
- sub_D38 : goto_to_d0
- sub_D28 : jump_to_var_addr
jmp_addr
Выясним, где эта переменная заполняется. Смотрим список референсов:
Существует лишь одно место записи в эту переменную. Посмотрим на него.
sub_3A4()
Здесь, в зависимости от координаты спрайта (помним, что это скорее всего адрес выделенного символа), заносится то или иное значение. Видим следующий участок кода:
Имеющееся значение сдвигается вправо на 4 бита, в младший байт помещается новое значение, и результат заносится в переменную снова. В теории, наша переменная jmp_addr хранит те символы, которые мы можем вводить на экране ввода ключа. Заметим также, что размер переменной — WORD .
По сути, функцию sub_3A4 можно назвать как update_jmp_addr .
sub_414()
Теперь у нас осталась всего одна функция в цикле, которая не распознана. И называется она sub_414 .
Код её напоминает код функции update_jmp_addr , только в конце у нас происходит вызов функции sub_45E . Заглянем туда.
sub_45E()
Далее по коду происходит работа с переменной byte_FF0014 , которая нигде, кроме текущей функции не используется. Если присмотреться, как она используется, можно заметить, что максимальное число, которое в ней может установиться, это 4 . У меня такое предположение, что эта текущая длина введённого ключа. Давайте это проверим.
Запускаем отладчик
Я воспользуюсь отладчиком из Smd Ida Tools , но, по сути, достаточно будет и какого-нибудь Gens KMod, или Gens ReRecording. Главное, чтобы была фича с отображением адресов в памяти.
Моя теория подтвердилась. Значит переменную byte_FF0014 теперь можно обозвать key_length .
Так что же делает эта функция? У меня есть предположение, что она отрисовывает введённый символ. Проверить это просто — запустив отладчик, и сравнив состояние до вызова функции sub_45E и после:
Я был прав — эта функция отрисовывает введённый символ. Назовём её do_draw_input_char , а функцию, которая её вызывает ( sub_414 ) — draw_input_char .
Что теперь?
Давайте пока проверим, что переменная, которую мы назвали jmp_addr действительно хранит введённый ключ. Воспользуемся теми же Memory Watch :
Как видим, догадка была верна. Что нам это даёт? Мы можем прыгать на любой адрес. Только на какой? В списке функций все разобраны ведь:
Тогда я начал просто прокручивать код, пока не обнаружил вот такое:
Намётанный глаз увидел в конце неразмеченных байт последовательность $4E, $75 . Это опкод инструкции rts , т.е. возврата из функции. Значит эти неразмеченные байтики могут быть кодом какой-то функции. Попробуем их обозначить как код, жмём C :
Очевидно, это код функции. Можно также нажать на нём P , чтобы код стал функцией. Запомним это имя: sub_D3C .
Тут возникает мысль: а что если прыгнуть на sub_D3C ? Звучит неплохо, правда одного прыжка сюда явно будет недостаточно, т.к. на переменную word_FF0020 ссылок больше не нашлось.
Тогда меня посетила ещё одна мысль: а что если поискать другой такой неразмеченный код? Открываем диалог Binary search (Alt+B), вводим в нём последовательность 4E 75 , ставим галку Find all occurrences :
Жмём ОК , чтобы начать поиск, получаем следующие результаты.
Как минимум ещё два места в роме могут содержать код функции, нужно их проверить. Кликаем по первому из вариантов, прокручиваем чуть вверх, и снова видим последовательность неопределённых байт. Обозначим их как функция? Да! Жмём P там, где начинаются байты:
Круто! Теперь у нас есть функция sub_34C . Пробуем повторить то же самое ещё и с последним из найденных вариантов, и… получаем облом. Там такое большое количество байт перед 4E 75 , что не понятно, где начинается функция. И, явно, не всех из этих байт выше являются кодом, т.к. очень много повторяющихся байт.
Определяем начало функции
Нам будет проще всего найти начало функции, если мы найдём, где заканчиваются именно данные. Как это сделать? На самом деле совершенно не сложно:
- Крутим до начала данных (там будет ссылка на них из кода)
- Переходим по ссылке и ищем цикл, в котором должен будет фигурировать размер этих самых данных
- Размечаем массив
Итак, выполняем первый пункт.
… и сразу видим, что в цикле из нашего массива копируется по 4 байта данных за раз (потому что move.l ) в VDP_DATA . Рядом видим число 2047 . Может сначала показаться, что итоговый размер массива 2047 * 4 , но цикл на основе dbf выполняется на +1 итерацию больше, т.к. последнее сравниваемое значение не 0 , а -1 .
Итого: размер массива равен 2048 * 4 = 8192 . Обозначим байты как массив. Для этого жмём * и указываем размер:
Крутим в конец массива, и видим там байты, которые являются именно байтами кода:
Теперь у нас появилась функция sub_2D86 , и у нас есть всё, чтобы решить этот крекми! Посмотрим, что делает новоиспечённая функция.
sub_2D86()
sub_34C()
Видим, что здесь вычитывается значение переменной word_FF0020 . Если посмотреть ссылки на неё, то увидим ещё одно место, где как раз происходит запись в эту переменную, и это будет как раз то место, куда я хотел прыгать через переменную jmp_addr . Это подтверждает догадку, что прыгать на sub_D3C точно нужно.
А вот происходящее далее мне стало лень понимать, поэтому я закинул ром в GHIDRA, нашёл эту функцию, и посмотрел декомпилированный код:
Видим, что используется переменная со странным именем in_D1w , а ещё переменная DAT_00ff0020 , которая адресом своим напоминает упомянутую ранее word_FF0020 .
Для этого в окне с декомпилированным кодом жмём правой кнопкой мыши на имени функции, и выбираем пункт меню Edit Function Signature :
Для того, чтобы указать, что функция принимает аргумент через конкретный регистр, а именно не стандартным для текущей конвенции вызовов способом, нужно поставить галку Use Custom Storage и нажать на иконку с зелёным плюсом:
Появится позиция для нового входного аргумента. Кликаем по ней два раза, и получаем диалог указания типа и носителя аргумента:
В декомпилированном коде видим, что in_D1w имеет тип ushort , значит его и укажем в поле с типом. Затем нажмём кнопку Add :
Появится позиция для указания носителя аргумента, нам нужно указать в Location регистр D1w , и нажать OK :
Декомпилированный код примет вид:
Т.к. xor — операция обратимая, можно все константные числа поксорить между собой и получить искомое значение переменной DAT_00ff0020 .
Выходит, что значение переменной должно быть равно 0x4553 . Кажется, я уже видел место, где такое значение устанавливается.
Выводы и решение
Приходим к следующим результатам:
Экспериментальным путём выясняем клавишу, которую нужно нажать, чтобы проверить введённый ключ: B . Пробуем:
Флеш картридж представляет собой плату(могут предоставляться в корпусе)с перезаписывающей внешней или встроенной памятью.
Основное назначение данного устройства,является возможность запускать ROM"ы на оригинальных консолях или клонах(если он хорошо реализован к работе с клонами).
Приведу пример функций и возможностей:
1)Работоспособность с клонами оригинальных консолей Mega Drive и Genesis и их новоделом.
2)Правильная работа сохранений и их загрузка поддерживающие игрой.
3)Быстрые сохранения и загрузка(как на эмуляторе)
4)Моментальная или ускоренная скорость запуска игры(в некоторых нужно сначала загружать в родную
память картриджа,после чего идет моментальный запуск игры до следующей перезаписи на другую игру.
6)Перераспределение слотов памяти для "горячей загрузки"рома.
5)Запуск и работа,хаков,сложных и тяжелых хаков(к примеру хак Кабала на UMK3)
7)Поддержка запуска Sega Master System.
8)Запуск ROM"ов для Sega 32X(при его наличии).
9)Прошивка BIOS"а для Sega CD
10)Использование памяти как дополнительной для сохранений Sega CD игр.
11)Корректная работа с "переведенными" ромами на русский или другой язык.
Также у картриджей различается интерфейс и его управление.Он может быть разный и иметь даже графическую составляющую(неподвижную картинку или анимацию).
Функционал, ПО и его обновление зависит от его разработчика. Всё уточнять у них или их представителей.
InDrive V3 (128MXSPI v. 3.00)В техническом плане заменен слот для SD под MicroSD.
С одной стороны не придется пилить копус,с другой каждый раз его раскрывать не очень удобно.
1. 16 Мегабайт встроенный ром, не требует подключения к ПК.
2. В картридже 2 модуля SPI которые позволяют работать с картами памяти SD/SDHC/MMC/MMCmobile/microSD.
3. 32Килобайта - память поддерживаемая батареей, автоматическое храниение/восстановление памяти.
4. Семь типов встроенных маперов, в том числе реализован мапер для хаков Мортал Комбат объемом до 10-ти мегабайт, реализован мапер Super Street Fighter II, поддержка сохранений в EEPROM (до 1Кб), к примеру можно сохраняться в NBA JAM.
5. Поддержка файловых систем FAT12/FAT16/FAT32.
6. Поддержка SEGA MASTER SYSTEM игр (реализован стандартный мапер SEGA 315-5365).
7. Поддержка обновлений Операционной системы с карты памяти.
8. Поддержка длинных имен файлов.
9. Сортировка по именам файлов и по размеру.
CDX Pro BIOS V1.8I (Unl)
CDX Pro BIOS V1.8I (Unl) [o1]
Mega-CD Model 1 BIOS V1.00 (E) [!]
Mega-CD Model 1 BIOS V1.00 (J) [!]
Mega-CD Model 1 BIOS V1.01 (J)
Mega-CD Model 2 BIOS V2.00 (E) (Jun 1993) [!]
Mega-CD Model 2 BIOS V2.00 (E) (Jun 1993) [b1]
Mega-CD Model 2 BIOS V2.00 (E) (Mar 1993) [!]
Mega-CD Model 2 BIOS V2.00 (E) (Mar 1993) [b1]
Sega-CD 68K BIOS (Hack)
Sega-CD Model 1 BIOS V1.10 (U)
Sega-CD Model 2 BIOS V2.00 (U) [!]
Sega-CD Model 2 BIOS V2.00W (U)
Sega-CD Model 2 BIOS V2.11 (U) [!]
Sega-CD Model 2 BIOS V2.11 (U) [b1]
Sega-CDX BIOS V2.21 (U) [b1]
Процессор
Центральный процессор: 16-битный Motorola 68000 (или полностью совместимый)
Тактовая частота: 7,61 МГц в PAL-приставках, 7,67 МГц в NTSC-приставках.
Память
Загрузочное ПЗУ: 2 Кбайт
Известно как «Trademark Security System» (TMSS)
Проверяет наличие лицензии игры, пиратские игры не запускает
Загрузочное ПЗУ отсутствует в ранних версиях приставки
Некоторые ранние игры, разработанные без учёта TMSS, могут не запускаться в поздних версиях
Основное ОЗУ: 64 Кбайт
Часть адресного пространства M68000
Видеопамять: 64 Кбайт
Центральный процессор может обращаться к ней только посредством VDP
Дополнительное ОЗУ: 8 Кбайт
Часть адресного пространства Z80
Используется как основное ОЗУ в режиме совместимости с Sega Master System
Область памяти картриджа: до 4 Мбайт (32 Мбит)
Игровые картриджи объёмом более 4 Мбайт должны использовать переключение банков памяти
Графика
Видеоконтроллер Sega Mega Drive (VDP, Video Display Processor)
Слои: 4 (2 прокручиваемых слоя графики фона, 1 слой спрайтов, 1 слой 'окна')
Спрайты: До 80 одновременно отображаемых, в зависимости от экранного режима (до 20 на одной горизонтальной строке)
Палитра: 512 цветов
Одновременно отображаемые цвета: для палитры выделены 64 девятиразрядных слова ОЗУ. Всего доступно 4 палитры по 16 цветов, при этом один цвет в каждой палитре всегда прозрачен, а также присутствует общий цвет фона. Это позволяет отображать до 61 цвета одновременно (и до 1536 с использованием растровых эффектов или затенения/высветления).
Разрешение экрана: До 320Ч240 (40Ч30 ячеек) для PAL-версии, и до 320Ч224 (40Ч28 ячеек) для NTSC-версии
Чересстрочные режимы могут обеспечивать удвоение разрешения экрана по вертикали.
Четырёхканальный PSG (Programmable Sound Generator, Программируемый Звуковой Генератор)
Три канала с прямоугольной формой сигнала, один шумовой канал
Программируемые тон/шум и затухание
Используется в режиме совместимости с Sega Master System
Выходы
Антенный выход
Аудиовидеовыход (звуковой стерео, композитный и RGB)
Разъем для блока питания.
Два гнезда для контроллеров (используя адаптер «4 Way Play» можно играть вчетвером).
Адаптер 10 В, 1.2 А, более поздних версий 9 В, 850 мА
В 1987 году персональные 16-битные компьютеры показывали себя не с лучшей стороны. В тоже время Nintendo имела 95% процентов рынка США и 92 % в Японии со своим NES. Sega осознала что дальнейшее борьба Master System с NES бесполезна… Использование 16-битных технологий со своих игровых автоматов для Sega подходило как нельзя кстати. И тогда же руководство компании решает, что настала пора внедрить эти технологии и в домашние приставки…Компания решила разработать новую 16-битную консоль на основе System-16 позаимствованную у игровых автоматов. Рабочее название консоли было MK 1601, но это название быстро отклонили, так как для грамотного маркетинга оно абсолютно не подходило. Тогда же было придумано новое название хорошо знакомое нам, а именно Mega Drive. В США консоль не смогли назвать тем же именем, так как посторонняя, не имеющая к играм компания зарегистрировала это название. И поэтому в штатах консоль назвали Genesis.
Sega Mega DriveТакже в то время к выходу готовился конкурент Mega Drive – PC Engine, и Sega было чего опасаться так как за этой приставкой стояла довольно крупная и богатая компания NEC. Запуск PC Engine состоялся 30 октября 1987 года в Японии и не произвёл особого фурора, также как и запуск Mega Drive годом позже 29 октября 1988 года… Но это только поначалу.
Вскоре, 9 января 1989 года Sega объявила дату американского релиза первой по настоящему 16-битной системы, так как другие 16-битки до этого официально в штаты не поставлялись. Дата была назначена на 14 августа 1989 (только в Лос-Анджелесе и Нью-Йорке) года и цена на консоль составляла 190$, в остальные города США консоль поступила месяцем позже, 15 сентября. Европейский релиз произошёл как всегда в последнюю очередь 30 ноября 1990 года. Первым делом консоль поступила в продажу в Великобритании (так как в этой стране был популярен Master System) по цене в 190 фунтов. Также в 1990 году консоль поступила в продажу в Австралии.
Вскоре геймеры стали замечать, что на их новую консоль выходит слишком много портов с игровых автоматов и ни одного по настоящему убойного хита они не наблюдают. Несмотря ни на что к середине 1990 года продажи приставки в одной только Северной Америке достигли 1.000.000 экземпляров. Тем временем Nintendo стала понимать, что Sega стала отбирать у них клиентов и Nintendo зашевелилась. Она также стала разрабатывать новую 16-битную консоль (кстати их Famicom (NES) изначально тоже планировался 16-битным, но для 1983 года это было бы безумно дорого и от этой затеи отказались) Super Famicom и уже 21 ноября 1990 года новая консоль появляется в Японии. В США она выходит, под названием Super Nintendo, 1 сентября 1991 года. Война 16-битных приставок началась!
Чтобы дать отпор Nintendo, Sega должна была срочно изобрести какой-нибудь нестандартный ход и этот ход был найден в лице всем нам известного синего ежика. Это был гениальнейшая идея, просто поразительная графика, бешеный темп игры, запоминающийся герой все это вкупе с прекраснейшим маркетингом приставки просто вознесли Sega на пьедестал почёта. Продажи взлетели. 1992-1993 годы были лучшими в истории компании. Все усилия потраченные на рекламу, продвижение окупились сполна, каждый ребёнок мечтал иметь дома консоль от Sega. Выходило множество хитов, сторонние разработчики игр также охотно поддерживали Mega Drive. Особенно высока была популярность в Бразилии, где позиции Sega были традиционно сильны благодаря компании Tectoy.
В тоже время было выпущено дополнение к Mega Drive, приставка с CD-приводом которая носила название Mega CD. В 1993 году выходит видоизменённый Mega Drive имевший более стильный дизайн, и отсутствие входа для наушников. В то время Sega лидировала на рынке Северной Америке и могла позволить себе такие эксперименты. Все эти дополнения, в лице Mega CD, уже не были так уж хороши для стоящего на дворе 1994 года, также сказалась скупость на их рекламном бюджете, и вследствие этого продажи Mega CD оставались удручающе малыми. Далее сомнительные эксперименты были продолжены новым подопытным стал 32-X, расширение для оригинального Mega Drive позволяющее сделать её 32-х битной. Также постоянно возникали споры и разногласия между Японским и Американским отделением компании, всё это не могло не сказаться на имидже компании.
И ко всему прочему по Америке развернулась борьба с насилием, которое присутствовало на консолях от Sega, и если Nintendo как-то ограждала детей от жестких сцен, то Sega из игр абсолютно ничего не вырезала. Вспомнить хотя бы историю с выходом Mortal Combat который был выпущен на Mega Drive в оригинальном варианте, то есть с морем крови и кровавыми Fatality, а на Super Nintendo вышел вариант игры для детей “дошкольного” возраста без малейшего намека на какую-то там либо кровь в игре. Чтобы попытаться восстановить уважение к компании ввела VRC (некий совет по оценке игр который присваивал игре определённый ценз возраста играющего) и это несколько разрядило ситуацию с общественностью. Но доля рынка, занимаемого компанией, продолжала падать, всего лишь за год Sega упала с 65% занятости рынка до 35%. Также в это время заявляют о выходе своих новых консолей такие гиганты как Sony и Nintendo. Sega крайне нуждалась в новой консоли, чтобы остаться на рынке консолей и им стал Saturn, который прославился шикарной рекламной компанией и персонажем Segata Sanshiro, который и был главным героем видеоролика. В 1996 году Sega объявила, что прекратит поддержку Mega Drive, для того чтобы полностью сконцентрироваться на разработке новой консоли Saturn.
Продукция компании DVTech
Российская компания DVTech выпускает приставки семейства Magistr Drive. Отличаются они низкой ценой, посредственным качеством и широким ассортиментом спецверсий, ориентированных на тот или иной жанр игр. Такие версии различаются лишь коробкой и вшитыми в память играми. Свои игры записать невозможно. Пару лат назад приставки активно рекламировались в детских журналах. Производство приставок осуществляется, что странно, в России.
Китайские нонейм-устройства
Самые разные приставки, разный дизайн, память, жанры, качество. Называться могут Mega Genesis, Seda, SegaDrive, Super Drive. Да как угодно. Продаются как в наших магазинах, так и на всяких там алиэкспрессах. Производятся в любом китайском подвале, качество, как правило, имеют низкое. Но бывают и исключения.
Sega Nomad
Эта приставка является второй портативкой Sega. Она появилась в 1995 году, имела довольно неплохой экран 3.5" и могла запускать оригинальные картриджи, причём без региональных ограничений. Её можно было подключить к телевизору и использовать как контроллер, наблюдая за игрой на большом экране. Питание обеспечивали 6 батареек. Сама приставка была очень громоздкой и тяжёлой, продано было около миллиона штук.
Sega Gopher
Третья по счёту портативная приставка Sega была выпущена в 2007 году и производится до сих пор на Тайване на предприятии AtGames под контролем Sega. Да, это не подделка, а оригинальная приставка Sega. На её основе появилось множество клонов.
Tectoy Megadrive Portable
Компания Tectoy долгие годы была популяризатором Сеги в Бразилии, именно её стараниями в этой стране всегда были популярны приставки Sega. Бразилия была запасным аэродромом Сеги благодаря Tectoy. И в 2007 году по лицензии была выпущена приставка Tectoy Megadrive Portable (Megadrive в одно слово). Запуск игр осуществляется только через собственные картриджи, электрическая схема которых идентична оригинальным, а размеры меньше.
Продукция Zoga
Zoga-небольшая китайская компания, выпускающая разнообразные модификации портативок. Разные дизайны, цвета, но невысокое качество.
Читайте также: