Двопроцесорний лабіринт: як складна архітектура Sega Saturn погубила консоль

Вісім спеціалізованих процесорів, квадратні полігони замість трикутників та кошмар програмістів середини 90-х. Детальний розбір того, чому інженерний шедевр Sega виявився неприступною фортецею для розробників.

FactBox: Технічні характеристики Sega Saturn

Підсистема

Компоненти та специфікації

Центральні CPU

2 × Hitachi SH-2 @ 28.6 MHz (32-бітні RISC-процесори, ~25 MIPS кожен)

Графічна підсистема

VDP1: рендеринг спрайтів, полігонів (квадратів), заливка, геометрія 3D. VDP2: 4 незалежних площини 2D-фонів, апаратний розрахунок горизонту та прозорості

Звуковий процесор

Motorola 68EC000 @ 11.3 MHz + SCSP (Sega Custom Sound Processor / Yamaha YMF292, 32 канали)

Допоміжні контролери

SCU (System Control Unit / DSP), CD-ROM MCU (Hitachi SH-1)

Загальний об'єм RAM

2 MB Work RAM (1 MB High RAM + 1 MB Low RAM) + 1.5 MB VRAM + 512 KB Sound RAM

Пропускна здатність шини

Пікові 28.6 MB/s

01. Відповідь Sony: панічне перероблення архітектури перед релізом

На початку 1990-х років компанія Sega перебувала на піку своєї могутності. Домінування консолі Sega Mega Drive (Genesis) у Північній Америці та Європі давало керівництву впевненість у завтрашньому дні. Конструкторський відділ на чолі з Хідекі Сато розпочав розробку платформи наступного покоління під кодовою назвою «Project Gigadrive», яка згодом переросла у Sega Saturn.

Первісний проєкт Saturn створювався як абсолютний король 2D-графіки. Інженери орієнтувалися на найбагатшу аркадну спадщину Sega і вважали, що тривимірна графіка залишиться нішевим атракціоном ще довгий час. Консоль проєктувалася під бездоганну роботу з сотнями спрайтів, глибокою палітрою кольорів і багатошаровим скролінгом.

Однак восени 1993 року на виставці Shoshinkai стався тектонічний зсув: Sony вперше продемонструвала публіці та партнерам технологічне демо своєї майбутньої консолі PlayStation. Показ інтерактивної 3D-моделі голови динозавра T-Rex та гоночного симулятора в реальному часі поверг керівництво Sega в стан шоку. З'ясувалося, що чип Sony PlayStation, розроблений за участю LSI Logic, здатен без труднощів прораховувати сотні тисяч затінених і текстурованих трикутників на секунду.

Зрозумівши, що поточний варіант Saturn поступиться конкуренту на старті 3D-епохи, керівництво Sega віддало наказ екстрено переробити архітектуру. Але часу на створення нового графічного процесора «з нуля» вже не залишалося. Було прийнято рокове рішення: додати в архітектуру другий центральний процесор Hitachi SH-2 і спробувати розпаралелити графічні та геометричні обчислення.

Цей поспіх призвів до того, що система не отримала єдиної ефективної шини з кеш-когерентністю. Другий процесор був буквально «припаяний» паралельно до існуючої інфраструктури, перетворивши материнську плату Saturn на хаотичний лабіринт із восьми мікросхем, що конкурують за доступ до розділеної пам'яті.

02. Два SH-2 та відеочипи VDP1/VDP2: геній 2D проти неминучого 3D

Щоб зрозуміти складність Sega Saturn, достатньо поглянути на склад її чипсета. На материнській платі консолі розташовувалися:

• Master CPU: Hitachi SH-2 (Основна логіка, геометрія)

• Slave CPU: Hitachi SH-2 (Допоміжні обчислення)

• VDP1: Відеопроцесор геометрії, спрайтів і квадів

• VDP2: Відеопроцесор фонових площин і спецефектів

• SCU: Системний контролер управління з вбудованим DSP

• Sound CPU: Motorola 68EC000

• SCSP: Звуковий чип Yamaha YMF292

• CD-ROM Controller: Hitachi SH-1

Двопроцесорний лабіринт: як складна архітектура Sega Saturn погубила консоль 2
Двопроцесорний лабіринт: як складна архітектура Sega Saturn погубила консоль 2

Розподіл праці: VDP1 та VDP2

Графічна система була розділена між двома вузькоспеціалізованими процесорами:

• VDP1 відповідав за рендеринг об'єктів: персонажів, машин, елементів оточення. Він працював зі спрайтами та полігонами, розраховуючи їх трансформи, накладення текстур і прості ефекти затемнення.

• VDP2 являв собою монструозний 2D-сопроцесор. Він міг одночасно виводити до чотирьох незалежних прокручуваних фонових шарів з роздільною здатністю до 704×480 пікселів, виконувати апаратне обертання площини підлоги та неба, а також обчислювати ефект гарячого повітря і прозорості.

Коли розробники вчилися грамотно комбінувати обидва чипи (як це зробила студія AM2 у Virtua Fighter 2 або Sega Rally Championship), Saturn видавала картинку приголомшливої якості: VDP2 повністю бере на себе рендеринг горизонту, траси та неба без витрат ресурсів CPU, а VDP1 фокусує всі потужності на високодеталізованих тривимірних моделях бійців чи автомобілів.

Двопроцесорний лабіринт: як складна архітектура Sega Saturn погубила консоль 3
Двопроцесорний лабіринт: як складна архітектура Sega Saturn погубила консоль 3

Пляшкове горлечко пам'яті та шин

Головна біда системи полягала в розділенні оперативної пам'яті. Замість єдиного масиву RAM, Saturn мала:

• 1 MB High-speed Work RAM (32-бітна шина)

• 1 MB Low-speed Work RAM (16-бітна шина)

• 512 KB Framebuffer VRAM для VDP1

• 512 KB Texture VRAM для VDP1

• 512 KB Background VRAM для VDP2

Якщо обидва процесори SH-2 намагалися одночасно звернутися до однієї і тієї ж області пам'яті, виникала апаратна блокування шини (bus contention), і один із CPU просто завмирав в очікуванні. Без використання асемблера та ювелірної синхронізації тактів другий процесор SH-2 часто простаював, виконував марні цикли або зовсім заважав роботі основного CPU.

03. Квадрати проти трикутників: чому портувати з PS1 було пеклом

Індустрія тривимірної графіки будувалася на де-факто стандарті — трикутній сітці (Triangular Polygons). Трикутник — це найпростіша плоска геометрична фігура, що визначається трьома точками в просторі. PlayStation, Nintendo 64 і графічні прискорювачі для ПК (3dfx Voodoo, Direct3D, OpenGL) спочатку створювалися для роботи з трикутниками.

Sega Saturn пішла всупереч усьому світу: її графічний чип VDP1 не вмів растеризувати трикутники. Основним примітивом Saturn був спотворений чотирикутник (Quadrilateral / Quad), по суті який представляє собою деформований текстурований спрайт.

Двопроцесорний лабіринт: як складна архітектура Sega Saturn погубила консоль 4
Двопроцесорний лабіринт: як складна архітектура Sega Saturn погубила консоль 4

Параметр рендерингу

Sony PlayStation (Triangles)

Sega Saturn (Quads)

Базовий примітив

Трикутник (3 вершини)

Чотирикутник / Квад (4 вершини)

Стиковка полігонів

Точний збіг граней

Ризик утворення щілин і дір (Gaps)

Корекція перспективи

Апаратна афінна текстуризація

Деформація спрайта за 4 точками

Емуляція чужого формату

Рідний стандарт індустрії

Вимагає «вироджених» квадів (2 співпадаючі точки)

Проблеми при портуванні мультиплатформи:

• Відсутність апаратного склеювання (Gaps & Overlapping): При спробі побудувати складну 3D-модель з чотирикутників, при повороті камери вершини квадів неминуче розходилися, утворюючи видимі діри та щілини, крізь які просвічував фон.

• Нульові координати: Щоб намалювати трикутник на Saturn, програмістам доводилося задавати чотирикутник, у якого дві вершини збігалися в одній точці. VDP1 витрачав ресурси на обробку виродженої грані, що знижувало швидкість рендерингу.

• Текстурні спотворення: Спроба натягнути двовимірну текстуру на деформований чотирикутник без корекції перспективи виводила п'яні, «пливучі» текстури.

• Переписування рушіїв: Компанії-розробники (включаючи EA, Capcom і Konami) відмовлялися переписувати геометрію своїх ігор під квади. Прості порти з PlayStation на Saturn виходили з жахливою частотою кадрів, відсутніми ефектами та графічними багами.

04. Ю Судзукі та Shenmue: як вичавити з Saturn неможливе

Незважаючи на архітектурне пекло, внутрішня команда Sega AM2 під керівництвом геніального геймдизайнера та інженера Ю Судзукі (Yu Suzuki) здійснювала справжні технологічні чудеса.

Судзукі та його команда напряму писали код на асемблері, минаючи недосконалі компілятори від Sega. Вони навчилися вручну розподіляти завдання між двома SH-2: один процесор повністю віддавали під прорахунок геометрії та колізій, а другий — під обробку анімації, вводу та логіки ШІ.

Двопроцесорний лабіринт: як складна архітектура Sega Saturn погубила консоль 5
Двопроцесорний лабіринт: як складна архітектура Sega Saturn погубила консоль 5

Легенда про Saturn Shenmue (Project Berkeley)

Найамбітнішим проєктом для Saturn стала розробка Shenmue (тоді відомої під кодовою назвою Project Berkeley). Студія AM2 створила повністю робочу тривимірну RPG з відкритим світом, зміною часу доби, сотнями унікальних NPC та деталізованим древнім Китаєм.

Коли кадри прототипу Shenmue для Sega Saturn потрапили в мережу роки по тому, публіка була вражена: платформа, яку вважали непридатною для чесного 3D, видавала рівень графіки, порівнянний з ранніми іграми епохи Dreamcast і PlayStation 2! Однак ціна цього успіху була занадто високою: на створення такого рушія пішли роки і мільйони доларів, доступні тільки ключовій студії Sega.

Двопроцесорний лабіринт: як складна архітектура Sega Saturn погубила консоль 6
Двопроцесорний лабіринт: як складна архітектура Sega Saturn погубила консоль 6

Підсумковий висновок

Sega Saturn залишається в історії як величний і трагічний пам'ятник інженерної думки. Консоль випередила свій час у питаннях багатоядерності, але виявилася занадто складною для епохи, коли інструментарій розробки перебував у зародковому стані. Незаслужено забута широким загалом, Saturn подарувала світу незгасній шедеври і преподала всій ігровій індустрії важливий урок: баланс і зручність розробки завжди важливіші за сиру і неортогональну потужність.