Аппаратное обеспечение
CPU
Hitachi SH-4 — 200MHz 360MIPS 1.4GFlops
* 16 x 32-bit регистров общего назначения
* 32 x 32-bit регистров для операций с плавающей точкой одинарной точности или 16 x 64-bit регистров для операций с плавающей точкой двойной точности или 4 x 128-bit векторных регистров с одинарной точностью
* 16-bit фиксированная длина инструкций
GPU
NEC VideoLogic PowerVR CLX2 * 100MHz Clock * 3 миллиона полигонов/сек. Пиковая производительность * Perspective-Correct Texture Mapping * Point, Bilinear, Trilinear and Anisotropic Mip-map filtering * Gouraud shading * z-buffer * Colored light sourcing * Full scene anti-aliasing * Hardware-based Fog * Bump mapping * 16.77 million colors (глубина цвета 32 бита) * Hardware-based texture compression * Shadow and Light volumes * Super sampling.
Звук
45MHz Yamaha 32-bit RISC CPU @ 40MIPS основан на ARM7 Processor Core DSP. * Real-time effects (Reverb, delay, etc) * 64 sound channels * Surround Sound support * Full realtime 3D sound support * Hardware-based audio compression
RAM
- 16 MB main RAM (SDRAM)
- 8 MB video RAM
- 2 MB sound RAM
GamePad
С первого взгляда контроллер Sega Dreamcast выглядит весьма странно, со второго тоже — крупный, округлый контроллер с квадратным отверстием в верхней части, двумя слотами расширения спереди и проводом присоединенным к контроллеру со стороны игрока. На практике же контроллер оказывается весьма удобным и хорошо лежит в руках, провод закрепляется в специальном пазу и совершенно не мешает во время игры. В слоты расширения вставляются карта памяти — VMU (Visual Memory Unit, которая по совместительству является маленькой консолькой со своим экраном и кнопками управления) и Rumble Pack — модуль вибрации. В квадратном отверстии в верхней части контроллера, при подключенном VMU, виден экран, на котором отображается дополнительная информация — очки здоровья, патроны или просто логотип игры. Спустя несколько лет компания Microsoft выпустит собственную консоль XBox геймпады для которой отдаленно напоминают контроллеры Sega Dreamcast. Сходства добавляет тот факт, что Microsoft так же, как и Sega разместила разъемы для подключения карты памяти и модуля вибрации на геймпадах.
VMU
Visual Memory Unit — тип карт памяти для Sega Dreamcast, представлял собой отдельную мини-консоль чем-то напоминавшую “тамагочи”. Карта содержала монохромный дисплей разрешением 48 × 32 точек и размером 37 мм × 26 мм, 8-битный процессор, крестовину, 4 кнопки и 128 Кб флеш памяти из которых 28 Кб зарезервировано и 100 Кб доступно для записи сохранений и мини игр. На VMU можно было записывать мини-игры за прохождение которых в основной (большой) игре открывался доступ к какому-либо дополнительному контенту. Два VMU могли быть состыкованы вместе для обмена сохранениями. У VMU было две проблемы — высокая цена и маленький объем доступной для сохранений памяти. Позже для Dreamcast’а появились карты памяти без экрана и органов управления, но зато намного большего объема.
Используемые форматы дисков
GD-ROM
Sega Dreamcast использовал особый формат дисков высокой плотности — GD-ROM (Gigabyte Disk). GD-ROM в Dreamcast работает в режиме CAV — (постоянная угловая скорость), в отличие от обычного привода CD-ROM, который работает в режиме CLV — constant linear velocity (постоянной линейной скорости). Sega достигла более высокой плотности, уменьшив скорость вращения диска вдвое и используя стандартные компоненты CD-ROM для чтения с нормальной скоростью, таким образом почти удвоив плотность записи данных на диск. Этот метод позволил использовать более дешевые стандартные компоненты при производстве Dreamcast. Таким образом область высокой плотности GR-ROM диска может быть прочитана некоторыми обычными CD-ROM приводами.
Диск формата GD-ROM для Sega Dreamcast состоит из нескольких секций:
- область обычной плотности,
- кольцо защиты,
- область повышенной плотности.
Область обычной плотности, в свою очередь, разделена на две части:
- Дорожка с данными — текстовая информация об игре, иногда лицензия или дополнительные бонусы,
- Звуковая дорожка — содержит предупреждение о том, что диск является диском с программой для Sega Dreamcast.
Данные, содержащиеся в области обычной плотности, могут быть прочитаны любым CD-ROM приводом.
Кольцо защиты — специальный разделитель, служит защитой от нелегального копирования и помогает консоли убедиться, что вставлен лицензионный диск.
Область повышенной плотности — содержит около 1 Гб игровых данных. Данные могут быть представлены как в виде одной большой дорожки, так и в виде нескольких раздельных дорожек.
MIL-CD
MIL-CD — это много сессионный CD-ROM со специальной дорожкой данных которая содержит загрузочный сектор в последней сессии. Формат MIL-CD предназначался для музыкальных дисков и позволял помещать на диск дополнительную информацию, например фотоматериалы. Единственным лицензионным продуктом, использующим формат MIL-CD, были музыкальные диски японских поп-групп,которые продавались только в Японии. Не очень понятно почему SEGA создала этот формат, MIL-CD открыл дорогу пиратам и энтузиастам.
Процесс загрузки GD-ROM
При обнаружении нового диска в приводе Dreamcast сначала проверяет защитное кольцо (специальная область на диске), при успешной проверке консоль переходит на сектор номер 45000 и считывает следующие 16 секторов (32 Кб) в память. В этих секторах располагается загрузчик (Dreamcast bootloader) — IP.BIN. IP.BIN — содержит информацию об игре (разработчик, описание, регион, имя исполняемого файла — обычно 1ST_READ.BIN, кол-во дисков), три исполняемых области для загрузки игры:
- специальный код, показывающий заставку Sega,
- код, выполняющий инициализацию оборудования,
- код загрузки исполняемого файла игры в память и передачи управления.
Порядок запуска такой: сначала исполняемый файл игры загружается в память, потом показывается заставка Sega и выполняется инициализация оборудования после чего управление передается игре.
Процесс загрузки MIL-CD
При загрузке Dreamcast’а с установленным MIL-CD приставка сначала проверяет наличие мультимедиа данных на диске, затем считывает первые 16 секторов (32 кб) с последней дорожки на диске. В этих 16-ти секторах расположен загрузочный сектор Dreamcast’а, он же IP.BIN. Структура IP.BIN для MIL-CD аналогична таковой для GD-ROM, отличия заключаются в способе загрузки исполняемого файла игры (программы) в память консоли. Исполняемый файл не считывается в память напрямую, вместо этого Dreamcast считает, что файл зашифрован и перед загрузкой в память его надо расшифровать. Это значит, что исполняемый файл перед записью на диск должен быть предварительно зашифрован. Второе отличие — при загрузке с MIL-CD после того, как исполняемый файл игры будет успешно загружен в память Dreamcast выключит привод GD-ROM. Далее выполняются инструкции из IP.BIN (инициализация оборудования, отображается логотип SEGA), после чего управление будет передано исполняемому файлу. Чтобы программа могла продолжить загрузку необходимо вызвать аппаратную функцию сброса GD-ROM (GD-ROM reset). Библиотеки для домашней (homebrew) разработки под Dreamcast содержат реализацию вызова этой функции.
Системы защиты Sega Dreamcast
Сама по себе консоль Sega Dreamcast почти не содержала каких-либо функций защиты от взлома, вся основная защита была сосредоточена на дисках. GD-ROM, на самом деле, это обычный CD-ROM с блестящей полоской, которая разделяет зону обычной плотности (меньшую, расположенную ближе к середине диска), и зону высокой плотности (большую, расположенную ближе к краю диска). Впрочем, высокая плотность записи не мешает обыкновенному приводу прочесть данные, находящиеся в ней, мешает, скорее, именно эта блестящая полоска. Когда вы вставляете обыкновенный диск в дисковод, он начинает раскручиваться и привод считывает оглавление диска (TOC — Table of Contents), в котором записана информация о количестве дорожек, и где они расположены на диске. Считывание это происходит на уровне прошивки привода, и воспрепятствовать этому, мы не можем. Так вот, в GD-ROM таких оглавления два! И второе находится за пределами блестящей полоски с красующейся на ней надписью «PRODUCED BY OR UNDER LICENSE FROM SEGA ENTERPRISES, LTD.», до которого обычный привод никак не сможет добраться, т.к. считывает только первое оглавление, которое ограничивает «видимый» размер диска областью, находящейся ДО этой самой блестящей полоски. И ни одна существующая программа не сможет прочесть то, что находится ЗА пределами, описанными в этом оглавлении, т.к. отосланные приводу команды прочесть сектора за пределами первого оглавления будут напрочь отвергаться прошивкой, ибо она «видит», что размер диска меньше, и читать за его пределами вовсе бессмысленно и совсем не нужно. Прочесть второе оглавление можно используя “метод подмены” (swap trick), для этого придется обмануть прошивку привода, подсунув ей сначала диск с оглавлением, в котором указан настоящий размер диска, а потом поставив на его место нужный нам GD-ROM. Тогда привод соизволит прочесть нужные нам данные. Этот способ позволял создавать дампы оригинальных дисков для Dreamcast, но полученные образы не годились для изготовления пиратских дисков т.к. приставка проверяла наличие кольца защиты и, если его не было, прекращала чтение диска.
Взлом защиты Sega Dreamcast
Utopia CD
Группа хакеров под названием Utopia нашла способ использовать формат MIL-CD для запуска пиратских игр. Группой был выпущен специальный диск “Utopia boot CD” который выполнял сброс GD-ROM привода и позволял выполнить загрузку пиратских образов игр. Вскоре после релиза “Utopia boot CD” группа была арестована Германской полицией.
Загрузка пиратских дисков
Через некоторое время после появление “Utopia boot CD” пиратские группы разработали способ запуска игр без необходимости использования отдельного загрузочного диска. В загрузочный сектор — IP.BIN были внесены две дополнительные функции. Т.к. Dreamcast считал, что исполняемый файл игры зашифрован и перед загрузкой файла в память выполнял расшифровку то первой добавленной функцией стала функция расшифровки, а точнее шифрования ведь на пиратских дисках исполняемый файл игры не был зашифрован. Вторая добавленная функция — сброс GD-ROM, которая позволяла возобновить чтения данных с диска после того, как исполняемый файл игры загружен в память. С помощью нового IP.BIN пираты создавали мульти сессионные CD диски с копиями игр. Часто пиратские диски содержали аудио/видео материалы более низкого качества чем лицензионные диски, иногда вырезалось дополнительное содержимое или игра разбивалась на большее количество дисков. Все это приходилось делать из-за того, что формат CD-R вмещал гораздо меньше данных чем GD-ROM. В некоторых поздних версиях Dreamcast’а возможность запуска MIL-CD отсутствовала.
Dump GR-ROM дисков
Есть два основных способа скопировать данные с GD-ROM диска:
- использовать метод подмены и подходящий CD-привод для обычного ПК,
- с использованием Ethrenet-адартера для Dreamcast и диска со специальным ПО чтобы сделать копию GD-ROM по сети.
Источники
- http://fabiensanglard.net/dreamcast_hacking/index.html
- http://anticopyright.ru/wiki/GD-ROM
- http://www.dc-swat.ru/blog/hardware/24.html
- https://www.ixbt.com/video/pvr250_preview.html
- https://dcemulation.org/?title=A_History_of_Media_and_Booting_on_the_Sega_Dreamcast
- https://www.gametech.ru/results/1042/