Опорные изображения
Модели

Выпущен 29/11/1998 в Японии, 09/09/1999 в Америке и 14/10/1999 в Европе
Материнская плата

Ревизия 'VA1'
Официальная документация указывает что система включает в себя 128КБ флеш-памяти, однако на этой материнской плате вместо этого по неизвестной причине находится EEPROM чип на 256КБ
Батарейка и порты контроллеров находятся на дочерней плате под названием 'Front panel' ('Передняя панель')

Диаграмма

Для важных шин данных отмечены их ширина и скорость.
Введение
Sega Dreamcast представил множество новых возможностей, по сравнению со своим предшетственником (Saturn) чтобы привлечь к себе разработчиков и обычных игроков. Хоть это и была последняя попытка Sega завоевать консольный рынок, некоторые технологии, впервые появившиеся в Dreamcast, были развиты в последующих устройствах уже других компаний.
Процессор
Неудивительно, что Sega снова выбрала Hitachi для разработки своего CPU. Если вы читали предыдущую статью о Sega Saturn, то узрите! Я представляю вам следующее поколение процессоров SH: SH-4 работающем на космических 200 МГц. Итак, что в нём интересного?
- 5-ступенчатый конвейер: До 5 инструкций могут находиться на отдельных ступенях конвейера одновременно (более подробную информацию можно найти в предыдущей статье).
- Конвейер инструкций используется всюду в этом поколении консолей и отныне станет стандартом.
- 2-поточный суперскаляр: Новый тип параллелизма, при котором процессор может обрабатывать более одной инструкции (две в данном случае) на каждом этапе конвейера, в результате чего выполняется больше инструкций в секунду.
- Отдельный Floating-Point Unit или ‘FPU’: вычисляет 32-битные десятичные числа (плавающие) и 64-битные (двойной точности).
- 8 КБ кэша инструкций и 16 КБ кэша данных: Это соотношение выглядит любопытно, поскольку консоли обычно включают больше кэша инструкций, чем кэша данных. Однако SH-4 позволяет разделить кэш данных на два раздела: 8 КБ Scratchpad (быстрая ОЗУ) и 8 КБ кэша данных.
- 32-битная внутренняя архитектура при сохранении 16-битного набора инструкций (SuperH ISA): так же, как и SH-2, это увеличивает плотность кода и уменьшает нагрузку на шины, при этом пользуясь преимуществами 32-разрядной архитектуры.
- Внешняя 64-битная шина: Критична для манипуляции 64-битными значениями (например, числами с плавающей точкой двойной точности и 64-битными целыми) без потерь дополнительных циклов.
Дополнительная работа
Основными задачами процессора игровой консоли обычно является обработка логики игры, просчитывание ИИ противников и снабжение GPU инструкциями. В Dreamcast, SH-4 также принимает участие в большей части графического конвейера обрабатывая геометрические данные, например, вычисляя перспективные трансформации. Поэтому он включает в себя 128-битный SIMD (одиночный поток команд, множественный поток данных, ОКМД), который позволяет ускорять векторные операции.
Улучшение доступа к памяти
Процессор включает в себя Memory Management Unit (Блок Управления Памятью) или ‘MMU’ для виртуальной адресации, это полезно, так как ширина физического пространства адреса памяти составляет 29 бит. А благодаря четырём буферам ассоциативной трансляции (TLB) программисты могут использовать 32-битные адреса без снижения производительности.
Поскольку для адресации необходимы только 29 бит, три оставшиеся бита управляют защитой памяти, изменяя карту распределения памяти (memory map) и включая обход кэша соответственно.
Программист решает, использовать ли эти функции или нет. Играм для этой системы необязательно необходима защита памяти, так что MMU, если он нужен, должен быть включен вручную при загрузке системы.
Без UMA, но…
Несмотря на то, что эта система не основана на архитектуре единой памяти (Unified Memory Architecture), как делает её широко известный конкурент, она тем не менее делегирует ввод-вывод графическому чипу (GPU). Это означает что если процессору необходимо извлечь что-либо за пределами своей выделенной памяти или последовательного интерфейса (serial interface), он должен сделать запрос графическому чипу и, если требуется, подождать своей очереди.
Особые запросы
Процессор так же поддерживает уникальный функционал под названием Parallel I/O (параллельный ввод-вывод) или ‘PIO’, который используется для одновременных манипуляций над несколькими I/O адресами. Sega использовала PIO выводы процессора чтобы управлять видео режимом GPU (больше деталей об этом далее).
Графика
Графический процессор представляет собой кастомный чип под названием Holly работающий на частоте 100 МГц. Он был спроектирован VideoLogic (ныне известной как Imagination Technologies) и произведен компанией NEC. 3D ядром Holly стал PowerVR2 от VideoLogic (также известный как ‘PowerVR Series2’ или ‘CLX2’).

VideoLogic выбрала альтернативный подход к архитектуре своего 3D ядра под названием Tile-Based Deferred Rendering (TBDR, отложенная отрисовка основанная на тайлах).
Вместо отрисовки всего кадра за раз (как это делают традиционные Immediate Mode Renderers или ‘IMR’), TBDR нарезает область отрисовки на несколько секций называемых ‘тайлами’. Процесс отрисовки выполняется отдельно для каждого тайла, после чего результат комбинируется вместе для составления конечного кадра.
Этот инновационный дизайн привносит интересные преимущества:
- Он отлично параллелизуется, что существенно уменьшает необходимую пропускную способность и энергопотребление.
- Он реализует ловкое решение “проблемы видимости” (visibility problem), автоматически сортируя полигоны от самого близкого до самого дальнего, затем выполняя z-тесты на первых стадиях конвеера. Комбинация этих задач не только решает изначальную проблему, но и предотвращает “overdraw” (отрисовка полигонов полностью скрытых другими) который тратит ресурсы впустую и ухудшает производительность.
Неудивительно, что Imagination и далее использовала эту эффективную технологию в видео-ядрах Series 4 PowerVR, которые использовались на невероятном количестве устройств, включая первое поколение iPhone, iPhone 3G, Nokia N95 и Dell Axim x51.
Архитектура
Давайте рассмотрим два основных компонента графического чипа Dreamcast:
Tile Accelerator

Прежде чем начнется процесс отрисовки, компонент известный как Tile Accelerator (тайловый ускоритель) производит предварительную обработку. Сперва он аллоцирует несколько 32x32 групп тайлов в которые будет отрисовываться геометрия.
Затем ускоритель:
- Забирает (при помощи прямого доступа к памяти (DMA) или обычной передачи) геометрические данные и команды отрисовки (drawing commands) сгенерированные процессором.
- Конвертирует эти данные в свой внутренний формат.
- Распределяет геометрию в каждую из групп тайлов в зависимости от их координат. Геометрия вне поля видимости отбрасывается на этом этапе.
- Генерирует окончательные списки отрисовки (Display Lists).
Списки отрисовки затем интерпретируются 3D ядром: PowerVR2.
PowerVR2

Здесь графика начинает свою жизнь. Руководствуясь списками отрисовки полученными от Tile Accelerator, 3D ядро отрисовывает каждый тайл в свой внутренний кадровый буфер (framebuffer). Этот процесс выглядит так:
- Image Synthesis Processor (процессор синтеза изображения) или ‘ISP’ извлекает примитивы (треугольники либо четырехугольники) и выполняет удаление скрытых поверхностей (Hidden-Surface Removal) чтобы убрать скрытые полигоны. Затем, после рассчета их Z-буферов и трафаретных (stencil) буферов, данные проходят через тест глубины (Depth Testing) чтобы избежать отрисовки полигонов которые скрыты другими и трафаретный тест (Stencil Tests) чтобы отбросить геометрию которая не будет видна если расположена за двухмерными полигонами (так же называемыми масками).
- Обратите внимание, что эти тесты фактически выполняются в самом начале конвейера. Для сравнения, предыдущие консоли использующие поздний z-buffering отбрасывают скрытую геометрию в конце конвейера. Подход ISP предотвращает обработку геометрии которая в последствии будет отброшена, сохраняя ресурсы.
- Texture and Shading Processor (процессор текстурирования и шейдирования) или ‘TSP’ окрашивает и затеняет (shading) тайлы, а так же применяет к ним различные эффекты.
- Текстуры не применяются пока тайл не экспортирован. Это означает что накопленный overdraw (если он присутствует к этому этапу) не снизит скорость заполнения.
После завершения этого процесса, отрисованный тайл записывается в основной кадровый буфер находящийся в видео-памяти (VRAM). Этот процесс повторяется пока все тайлы не будут отрисованы. После завершения отрисовки, конечный кадр читается Video encoder -ом (кодировщиком видео) из кадрового буфера и отправляется на видеовыход.
Общая картина
Кроме очевидных архитектурных различий, у TSP есть еще много способностей, из которых ясно, насколько эта консоль далека от своего предшественника Saturn. Вот некоторые из его самых выдающихся возможностей:
- Альфа-смешение (Alpha blending): Смешивает цвета наложенных друг на друга слоев, чтобы добиться эффекта (полу-)прозрачности.
- Процесс для применения прозрачности в этой системе называется order-independent transparency (прозрачность, независящая от порядка). Алгоритм автоматически сортирует примитивы прежде чем смешивать их цвета. Это замедляет процесс отрисовки, но позволяет не полагаться на то что игра отсортирует примитивы сама. Именно по этой причине игры для Dreamcast отлично отображают объекты с прозрачностью.
- Вместе с отрисовкой основанной на тайлах, алгоритм order-independent transparency полностью решает прошлые неудачи.
- Mip-Mapping: Автоматически выбирает версию текстуры меньшего разрешения в зависимости от необходимого уровня детализации. Это нужно чтобы не обрабатывать большие текстуры которые находятся далеко от камеры (что тратит ресурсы и вызывает артефакты (aliasing)).
- Environment mapping: Применяет отражения к текстурам.
- Билинейная, трилинейная и анизотропная фильтрация: Это разные алгоритмы, применяемые, чтобы сгладить текстуры и снизить пикселизацию. Они расположены в порядке от худшего к лучшему, где качество результата прямо пропорционально необходимому количеству вычислений.
- Это огромный шаг вперед от Saturn, который вовсе не предоставлял никаких возможностей для фильтрации текстур.
- Bump mapping: Симулирует неровности на поверхностях не тратя лишние полигоны.
Больше деталей
Holly может отрисовать в ~10 раз больше полигонов чем его предшественник, вот примеры до и после, которые показывают насколько менее ограничен теперь дизайн моделей. Попробуйте поиграться с ними!



286 треугольников (или 185 четырёхугольников)



1001 треугольников
Видео режимы
Подсистема вывода видео была спроектирована с поддержкой нескольких типов экранов и выходных форматов, так video encoder выводит видео на единый выходной порт, который поддерживает следующие форматы:
- Композитный: Объединяет три сигнала, необходимые для отображения видео (chroma (цвет), luma (яркость) и sync (синхронизация)) в один, требуя только одну линию в кабеле.
- Этот формат используется в старых PAL и NTSC телевизорах с RCA портами.
- S-Video: Совмещает luma и sync, но отделяет chroma (всего требуя две линии).
- RGB: Передает отдельные сигналы для красного, зеленого и синего компонентов, и предоставляет на выбор разные варианты сигнала синхронизации (композитный или извлеченный из S-Video).
- SCART кабель использует этот формат.
- VGA: Совмещает RGB и два сигнала синхронизации (горизонтальный и вертикальный), всего используя 5 линий. Этот режим позволяет отобразить самое большое из возможных разрешений (720x480) в прогрессивном режиме (поэтому этот режим часто называют ‘480p’). VGA некоторое время был стандартным форматом/подключением, используемым компьютерными мониторами.
- Чтобы использовать этот режим, Sega выпустила VGA адаптер в качестве дополнительного аксессуара.
Dreamcast не может кодировать все эти форматы одновременно, поэтому у GPU и аудиопроцессора есть регистр Image Mode, который указывает какие аудио/видео шины должны быть активированы чтобы генерировать нужный сигнал. Процессор проверяет тип подключенного кабеля (проверяя какие “select bits” пины видео коннектора подключены) и записывает нужные значения в регистр GPU. Эти значения так же передаются аудиопроцессору.
Учитывая что VGA это исключительно прогрессивный формат (в противовес традиционному чересстрочному), у игр предполагавших использование только чересстрочной развертки проявились проблемы совместимости. Такие игры явно указывают в своем коде что не будут работать с VGA, чтобы процессор приостановил игру пока пользователь не сменит VGA кабель на другой.
Звук
Аудио обрабатывается кастомным чипом AICA от Yamaha, это улучшенная версия SCSP, использованного в Saturn. Он состоит из четырех компонентов:
- Sound Integrated Circuit или ‘IC’: Это набор модулей (синтезатор, DSP и микшер) который генерирует аудио сигнал и применяет к нему эффекты. Он поддерживает до 64 PCM каналов с разрешением 16 или 8 бит и частотой дискретизации 44.1 кГц. В основном это оптимальное качество для проигрывания аудио.
- Дополнительно, в него включен ADPCM декодер чтобы разгрузить часть работы у процессора.
- Занятно, что от него так же выведены два MIDI пина для подключения MIDI инструмента, впрочем, эту функцию предполагалось использовать только для разработки.
- 2 МБ SDRAM: Хранит аудио данные и программы. Он заполняется основным процессором при помощи DMA.
- ARM7DI работающий на ~2.82 МГц: Управляет Sound IC. Этот процессор программируется загрузкой небольшой программы (называемой драйвером) находящейся в SRAM, которая интерпретирует аудио данные и управляет Sound IC в соответствии с ними.
- Похожий процессор еще используется здесь.
- Контроллер памяти: Предоставляет интерфейс для 2 МБ SDRAM.
Для облегчения разработки, официальный SDK включал в себя несколько драйверов для разных задач (секвенсор, декодер и т.д.).
Эволюция
Чтобы показать, как сильно продвинулся прогресс в области синтеза звука со времен Mega Drive/Genesis, вот пример двух игр, одной для Mega Drive и другой для Dreamcast, использующих одну и ту же композицию:
Предшественник использует FM синтез для генерации звука на лету
Новая аудио подсистема без труда обрабатывает PCM семплы
Вместо программирования чипа FM модуляции, композиторы Sonic Adventure сыграли саундтрек сами и затем закодировали его в ‘ADX’, формат с потерей качества (lossy) разработанный CRI Middleware. Благодаря этому он использует только два из 64 PCM каналов (стерео).
Сжатие ADX позволяет игре декодировать аудио поток с GD-ROM прямо в Sound IC не тратя память и пропускную способность. Драйвер для этих целей может быть реализован множеством разных путей, так как существует несколько подходов к балансированию нагрузки между основным процессором и ARM7.
Оставаясь в живых
По какой-то причине, этот чип так же отвечает за часы реального времени (RTC) для BIOS. Он подключен к батарейке, чтобы продолжать работать без питания от сети.
Операционная система
2 МБ прошивки (System ROM) хранят BIOS, который отвечает за загрузку игры либо небольшой оболочки после включения консоли.
BIOS так же содержит готовые функции для упрощения использования I/O операций в играх, как например чтение с GD-ROM диска.
Оболочка
Если диск с игрой не вставлен, консоль загружает графическую оболочку.

В оболочке есть простой графический интерфейс для выполнения базовых, но необходимых задач:
- Запустить игру, если она еще не запущена.
- Управление сохранениями хранящимися на VMU (больше информации про это устройство далее!).
- Включить музыку, если вставлен аудио CD.
- Изменение настроек (дата, время, настройки звука, и т.д.).
Windows CE
С самого анонса Dreamcast говорилось, о том, что консоль сможет запускать Windows CE: урезанную версию Windows для встраиваемых устройств. Это немного вводило в заблуждение, ведь некоторые пользователи ожидали увидеть полную среду рабочего стола Windows CE на своей консоли.

На самом деле, предназначение этой ‘ОС’ было очень похоже на то, что Nintendo сделала с Nintendo 64: предоставление программистам более богатого слоя абстракций для упрощения определенных операций.
Microsoft работала вместе с Sega чтобы портировать Windows CE на Dreamcast. Результатом была еще более урезанная версия Windows CE с минимальным набором компонентов, необходимых для работы с графикой, звуком и отладкой. Это включало в себя использование для разработки звездной IDE от Microsoft, Visual Studio.
Часть разработчиков сочла эту возможность очень привлекательной. Так как аудиовизуальный фреймворк поставляемый вместе с Windows CE был ничем иным, как DirectX 6, тысячи игр для ПК той эры могли быть, в теории, легко портированы на Dreamcast…
Тем не менее различия в архитектуре между Dreamcast и обычными ПК были слишком велики чтобы их игнорировать. Кроме того, включение этой системы увеличивало время загрузки игр (ведь ‘ОС’ загружалась с диска) и Windows CE, в итоге, тратила на себя значительную часть ресурсов Dreamcast (не удивительно, ПК на тот момент уже страдали от этого).
В конечном итоге ‘Windows CE для Dreamcast’ просто был еще одним вариантом SDK на выбор разработчикам (который принято называть Dragon SDK). Тем не менее заметное количество игр для Dreamcast в итоге использовали API Windows CE и DirectX.
I/O
GPU включает в себя еще один модуль для выполнения большей части I/O: System Bus (системная шина). Он предоставляет следующие интерфейсы:
- G1: Через него доступны BIOS ROM вместе с его настройками и контент с GD-ROM диска.
- G2: Предоставляет доступ к модему и контроллеру звука.
- Maple: Передает пакеты данные между контроллерами (и аксессуарами подключенным к ним) и основным процессором. Это последовательная шина и она предоставляет отдельный DMA.
- Интерфейс SH-4: Подключает основной процессор для коммуникаций общего назначения.
- DDT: Забирает управление шиной основного процессора для получения доступа к его основной памяти во время передач через DMA.
- PVR: Подключает основной процессор к Tile Accelerator через отдельный DMA.
Игры
Игры в основном разрабатывались на языках C или C++. Первое время для разработки рекомендовался C, поскольку компиляторы C++ доступные на то время были сильно ограничены в функциональности.
Sega предоставляла станцию (девкит) для разработчиков в форме корпуса ПК под названием Sega Katana Development Box. Это был Dreamcast с дополнительными I/O интерфейсами необходимыми для разработки. В комплекте шел CD диск с официальным Katana SDK и другими инструментами для установки на ПК с Windows 98.
В случае если разработчики выбирали Dragon SDK, им так же были доступны DirectX 6.0 и Visual C++ 6.0.
Носитель
Игры распространялись на GD-ROM дисках, которые являются обычными CD-ROM дисками с большей плотностью записи (достигая 1 ГБ в объеме). Диски читаются со скоростью 12x, что не так плохо по сравнению с 2x CD дисководом в Saturn.
Онлайн-платформа
Dreamcast распространялся с модулем модема, который могли использовать игры чтобы “звонить” на dial-up сервисы для онлайн игры. Sega предоставляла два сервиса: SegaNet (для Америки и Японии) и Dreamarena (Европейский аналог).
Игроки регистрировались в сервисе при помощи DreamKey, дополнительного диска, шедшего в комплекте с некоторыми играми. DreamKey предоставлял веб браузер для регистрации аккаунта. Изначально, DreamKey шел с преднастроеным сервисом в зависимости от региона, но поздние ревизии добавили для пользователей возможность указать любого другого провайдера.
В продаже так же были клавиатуры и мыши специально для Dreamcast, на случай если пользователю хотелось использовать интернет в стиле ПК.
К сожалению, SegaNet и Dreamarena были отключены через два года после запуска. Из-за этого игры которые полагались исключительно на эти сервисы стали неиграбельны, если не эмулировать сервисы внешними средствами. (например, при помощи DreamPi - образа для Raspberry Pi который повторяет функционал этих сервисов с помощью серверов поддерживаемых сообществом).
Интерактивная карта памяти
Еще одним новшеством Dreamcast был Visual Memory Unit или ‘VMU’. Он подключался к контроллеру и, кроме того что работал как карта памяти для сохранений, был полностью автономным устройством, включавшим в себя:



- Sanyo LC86K87: 8-битный процессор с низким энергопотреблением.
- 32x48 Монохромный LCD с четыремя дополнительными иконками: Использующий 196 Байт XRAM (внешняя ОЗУ) в качестве кадрового буфера.
- Два последовательных коннектора: Один для IN (вход) и другой для OUT (выход).
- Шесть физических кнопок: Используются когда VMU не вставлен в контроллер.
- 16 КБ Mask-ROM: Хранит BIOS-IPL (загрузочную прошивку).
- 64 КБ Flash памяти: 32 КБ для хранения одной программы (полученной из консоли) и 32 КБ для игровых сохранений.
- 512 Байт ОЗУ: 256 Байт зарезервировано для системы, оставляя только 256 Байт для программ.
VMU имеет два режима работы:
- Подключен к контроллеру: У официального контроллера есть два слота для подключения VMU и других аксессуаров такой же формы. Если VMU подключен в первый слот (тот, что видно спереди контроллера), он может показывать изображения во время игры. Кроме того, Dreamcast может хранить на VMU сохранения и одну программу.
- Отключен от контроллера: VMU превращается в устройство, похожее на Тамагочи с часами, менеджером сохранений и возможностью запустить программу, ранее записанную на него с Dreamcast. Два VMU так же могут быть подключены, чтобы делиться между ними контентом.
Борьба с пиратством и хоумбрю
Использование проприетарного формата GD-ROM помогло предотвратить производство несанкционированных копий игр (и их запуск на других консолях). В добавок к этому, игры Dreamcast регионально заблокированы, что означает невозможность запуска игр на консоли, если их регионы не совпадают.
Победа пиратов
На практике меры против пиратства были совершенно бесполезны, так как Sega оставили огромную лазейку открытой: MIL-CD. Музыкальный Интерактивный Live-CD или ‘MIL-CD’ - это формат, созданный Sega для расширения Аудио-CD интерактивными программами… и Dreamcast совместим с ним.
Неавторизованные коммерческие диски (программы для загрузки читов, видео плееры, и т.д.) маскировались под MIL-CD чтобы те могли запускаться на консоли без разрешения Sega. Позднее, сообщества взломщиков изучили этот эксплоит и нашли обходной путь, чтобы запускать пиратские игры с обычных CD-ROM дисков. Это вызвало непреодолимую волну ISO образов игр выкладываемых в интернете.
Проблемы проявились позже: GD-ROM диски могли вмещать 1 ГБ данных, а обычные CD - только около 700 МБ, так каким же образом “рипперы” ужимали большие игры, чтобы вместить их на CD? Пережимая музыку и графику пока игра не влезет в рамки CD. Так же были попытки разделять игры на два диска. В конце концов, игры больше не представляют собой один большой пласт данных (как старые картриджи), а организованы в иерархию из файлов из директорий.
Вот и всё, ребята

Не так плох для своего возраста!
Надеюсь, вам понравилась эта статья. Я закончил писать её в начале моего последнего учебного года в университете.
Теперь я, скорее всего, буду очень занят, но мне нравится писать эти статьи, так что, надеюсь, вы увидите еще одну в течение нескольких недель!
До следующего раза!
Rodrigo