Теперь игры загружаются в обход привода CD-ROMОпытные геймеры наверняка помнят Sega Saturn — 32-битную игровую приставку от компании Sega. Она начала продаваться 22 ноября 1994 года, на две недели раньше главного конкурента — первой модели Sony Playstation. Это была настоящая бомба. В первый же день фанаты выкупили 170 000 экземпляров новой «Сеги». В 1995 году приставка появилась в продаже в Европе и США, где её тоже ждал успех: на неё портировали Quake, C&C, Tomb Raider, Duke Nukem 3D и другие игры.
На момент выхода архитектура Sega Saturn была гораздо более продвинутой, чем у любой другой игровой приставки. Saturn была очень мощной системой для своего времени: два центральных RISC-процессора (Hitachi SuperH-2 7604), два видеопроцессора (собственной разработки), 32-битный звук (звуковой DSP-процессор Yamaha FH1), CD-привод двойной скорости.
Впрочем, довольно быстро Sega Saturn уступила позиции Sony Playstation.
Забавно, что архитектура Saturn была во многом более продвинутой, чем у конкурента. В отличие от Playstation, оперирующей треугольниками в качестве базовых геометрических примитивов, Saturn отрисовывал четырёхугольники. При правильном использовании, такой рендеринг давал меньше искажений текстур, чем в играх Playstation. Аппаратная часть, нацеленная на четырёхугольники, и на 50% больший объём видеопамяти также давали Saturn преимущество в 2D-играх. Но в итоге более «продвинутая» архитектура Saturn стала препятствием для портирования многих игр, потому что основные инструменты разработчиков основывались на треугольниках, как и многоплатформенные игры. Поэтому победила Playstation.
Материнская плата Sega Saturn
На сегодняшний день обе эти приставки — и Sega Saturn, и первую Sony Playstation — можно найти разве что на полках коллекционеров. Но самое интересное, что DRM-защиту игр для Saturn так и не удалось взломать. Проблема в то, что трудно было создать нормальное окружение для обратной разработки. К примеру, в старых игровых приставках применялись картриджи с флэш-памятью, а в более поздних консолях есть возможность перепрошить непосредственно флэш-память на плате. В случае с Sega Saturn проблема в том, что практически невозможно найти древнюю приставку с рабочим приводом для компакт-дисков. Операционная система зашита в миросхему контроллера привода CD на материнской плате, а защита от копирования выполнена в форме физических отметок по краю компакт-дисков — сделать копии дисков с подобной защитой оказалось очень трудно.
Защита от копирования компакт-дисков
Как же осуществить обратную разработку и взломать диски в такой сверх-закрытой системе?
Выход нашёлся. Энтузиаст jhl (Dr Abrasive) из хакерского сообщества Assembler Games сделал практически невероятную вещь —
эмулятор оптического привода Sega Saturn! На эту работу у него ушло около двух лет.
Dr Abrasive в своей лаборатории, где он за два года сумел разработать эмулятор оптического привода Sega Saturn. На столе лежит разобранная консоль
По словам jhl, японская игровая приставка очень замысловато устроена. Он называет это «овер-инжиниринг», говоря о таком количестве процессоров, среди них два центральных, два графических, один звуковой и так далее.
Приводом компакт-дисков управляет отдельный контроллер: 32-битный RISC-процессор SH-1. Хакеру пришлось немало потрудиться, чтобы разобраться с микросхемой этого контроллера.
Микросхема в контроллере привода компакт-дисков
В игровой приставке есть внутренний порт расширения, куда вставляется карта декодирования MPEG, чтобы просматривать компакт-диски с видео.
Внутренний порт расширения Saturn
Этот порт расширения подключается к контроллеру компакт-дисков и пропускает данные через него, с использованием шифрования.
Для начала, хакер придумал способ, как добраться до прошивки контроллера. Он изъял плату с контроллером из игровой приставки и подсоединил его к перепрошитому картриджу Game Boy. В этом картридже ROM была перепрошита таким образом, что считывать ROM из контроллера через NVRAM и далее по USB. Таким образом, jhl сумел сделать
дамп памяти ROM из контроллера.
Плата с контроллером из приставки Saturn подключена к перепрошитому картриджу Game Boy
64 килобайта памяти этого процессора плотно упакованы инструкциями, в которых пришлось долго разбираться. Dr Abrasive говорит, что изучение этого кода открывает очень много информации об истории разработки Sega Saturn, но в целом он был очень впечатлён открывшейся картиной.
Изучив содержимое ROM, удалось понять, каким образом код для SH-1 загружается из карты-декодера MPEG. Dr Abrasive говорит, что он нашёл своеобразный «бэкдор» во встроенной операционной системе, который позволяет загружать диски без защиты от копирования.
Так получилось сделать USB-интерфейс, чтобы загрузить также содержимое микросхемы YGR022 (через разъём карты MPEG). Это был первый и самый важный шаг к созданию полноценного эмулятора оптического привода Saturn.
В результате этой работы Dr. Abrasive сумел сделать адаптер, через который данные загружаются в приставку в обход штатного CD-привода, то есть через внутренний порт расширения! То есть игры в приставку теперь можно загружать даже с обычной USB-флэшки, не нужны оригинальные компакт-диски.
Титанический объём работы, который проделал Dr. Abrasive за два года, не может не вызвать уважения. Обо всём процессе реверс-инжиниринга автор подробно рассказывает в любительском документальном фильме. Это действительно великолепный фильм.
Код для взлома Saturn и эмулятор привода автор в ближайшее время выложит в открытый доступ.
Во-первых, эмулятор нужен энтузиастам, которые занимаются копированием дисков для Saturn и портированием игр под эту приставку. Во-вторых, владельцы игровых приставок теперь могут снова использовать их даже в том случае, если штатный CD-привод вышел из строя, а ведь это самая распространённая поломка Saturn. Кроме того, наличие эмулятора позволит сделать копии многочисленных дисков для Saturn и сохранить их для истории.
Источник:
https://geektimes.ru/post/278364/