Как на Super Nintendo появились 3D-игры: история сопроцессора Super FX

da2cb40a505f4d85beb500548adef663.png

Начало 90-х — это время войн консолей четвёртого поколения. Основными конкурентами за рынок и кошельки фанатов игр стали Nintendo и Sega с приставками Super NES (Super Famicom) и Sega Mega Drive (Genesis). Обе компании пытались привлекать игроков зрелищными спецэффектами, но вычислительные мощности приставок были ограничены. Они физически не способны самостоятельно обеспечить расчёт трёхмерной графики.

Однако выход был найден, и заключался он в самой концепции картриджей, которые были не только накопителями с играми, но и могли использоваться как платы расширения. В марте 1993 года появился первый картридж SNES с космическим симулятором Starfox. Внутри него был установлен сопроцессор Super FX, обеспечивший долгожданный прорыв в 3D. Разработку сопроцессора Nintendo поручила британскому разработчику игр Argonaut Software. Что же это за компания, и как её пути пересеклись с Nintendo? Чтобы ответить на этот вопрос, нужно вернуться ещё на десять лет назад.


d2e129de471a4eefa93e0d16be7e806c.jpg
Джереми Сэн

В 1982 году 16-летний британский хакер Джереми «Джез» Сэн (Jeremy «Jez» San) основал свою компанию Argonaut Software, предоставляющую крупным корпорациям услуги консалтинга в области IT-безопасности. Название компании появилось из игры слов: J.San произносится очень похоже на Jason (Ясон), а где Ясон, там и аргонавты. Джереми был вундеркиндом, в 13 лет он изучил ассемблерный язык нескольких компьютерных архитектур. В дальнейшем он воспользовался этими знаниями для устранения «дырок» в безопасности коммерческих компьютерных систем.

Чуть позже Джереми со своим другом Фуадом «Фу» Катаном (Fouad «Foo» Katan) занялись разработкой игр, и в 1984 году выпустили горизонтальный shoot’em-up Skyline Attack для Commodore 64, но настоящая слава пришла к ним после выпуска Starglider. Это был трёхмерный FPS на космическую тематику для 16-битных компьютеров Commodore Amiga и Atari ST. Он считается первой популярной 3D-игрой, его портировали на другие платформы и продали несколько сотен тысяч копий.

dc5e1f6bf68a4c43a17786ccc876fe13.jpg
37cca58a7fc54b92a96ac92fe4dd24f9.gif
Skyline Attack

26ecc109a1d0469fab505c9d0c3a0e9e.png
92827b30b2a7418282e8cf58c050f1e8.png
4c35f6becd234fcaad2ffbccce802594.png
Starglider

В 1988 году «аргонавты» выпустили вторую часть Starglider. В это же время в компанию пришёл 16-летний разработчик Дилан Катберт (Dylan Cuthbert). Годом позже Nintendo выпустила японскую версию первой 8-битной портативной консоли GameBoy. Джереми Сэна заинтересовала консоль, он заказал её из Японии и создал для неё экспериментальный комплект разработки. В то время, как GameBoy был всё ещё недоступен остальному миру, с помощью этого комплекта Катберту удалось выжать из его скудных ресурсов максимум и написать демку векторного 3D-движка!

7f889ee504f94cb5b0ae327d6ae4ef49.jpg
Дилан Катберт

Слово «векторный», а не «полигональный» использовано не зря — движок мог отрисовывать только отрезки, соединяющие точки, но не закрашивать полигоны. Все объекты в демо состояли из просвечивающих насквозь «проволочных» (wireframe) каркасов.

f9ebf50908f2420f86a5223661284e92.png
Игра 1980 года Battlezone с векторной wireframe-графикой

Джез с гордостью продемонстрировал демо на Consumer Electronic Show. Больше всех им были потрясены представители Nintendo.

Дилан Катберт вспоминает:

«В Nintendo осознали, что никто до нас не пытался реализовать 3D на GameBoy, никто даже не думал, что это возможно, и сама Nintendo в особенности. Они считали, что это просто 2D-система и она не предназначена ни для чего другого.»

Две недели спустя «аргонавтов» пригласили в японский офис компании и предложили использовать их технологию в будущей продукции Nintendo. В этот раз они показали 3D-движок всему руководству, и сам Сигэру Миямото благословил Дилана на совместную работу вместе с директором серии Metroid Ёсио Сакамото над полной версией движка.

В 1992 году работа над проектом была закончена, и анонс игры под коротким названием «X» уже был размещён в собственном журнале компании Nintendo Power. Однако Nintendo внезапно поменяла планы и отказалась от распространения игры на мировом рынке, ограничившись Японией. Так первый 3D-шутер для GameBoy не стал мировой классикой.

bcaf09607c124f2d9bbeda99c10f8f49.jpg
В графике X чётко видно влияние Starglider

Самым большим успехом Argonaut по-прежнему оставался Starglider. И чтобы поднять планку, им недостаточно было усовершенствованных программных техник…

Вернёмся к первой встрече Argonaut с Миямото и представителями Nintendo в Японии. На ней Джереми продемонстрировал ещё один пример игры, созданный на основе Starglider и предназначенный для работы на NES (он имел соответствующее название NESglider). В свою очередь, Nintendo решила, что настало время познакомить Джеза и Дилана с новейшим проектом компании: очень грубым прототипом тогда ещё никому не известной системы Super Famicom с ранней версией игры Pilotwings. Руководство заявило, что это первая попытка Nintendo реализовать 3D в будущей консоли, которая может сильно выиграть от использования знаний молодых программистов.

d0675661d73d4a0f8225406684ec30f9.jpg
Прототип Super Famicom


Следующим шагом Argonaut стала работа над портированием демки NESglider на незавершённый прототип приставки Миямото. Годы спустя Джез рассказывал в интервью:

«Я сказал им, что будет гораздо лучше, если они дадут нам разработать оборудование, чтобы SNES уверенно чувствовала себя в 3D. К удивлению, несмотря на отсутствие у меня опыта, они согласились и дали мне миллион долларов на реализацию.»

Argonaut Software наняла команду опытных разработчиков чипов из Кембриджа, чтобы создать первый в мире 3D-акселератор на основе одного из первых RISC-процессоров.

«Мы были первыми на рынке ускорения 3D, который теперь поделили NVidia и ATI… и у нас есть патенты, доказывающие это.»

Прототип Super Famicom был плохо документирован, поэтому для более полной интеграции чипа с 16-битной аппаратурой и улучшения производительности всей системы пришлось выполнять реверс-инжиниринг. «Аргонавтам» это удалось, но им пришлось смириться с вынесением сопроцессора в игровой картридж (это повысило стоимость картриджей, а не самой приставки). Результатом стал чип «MARIO» («Mathematical, Argonaut, Rotation & Input/Output»), позже переименованный Nintendo в «Super FX».

«Это был не просто графический чип, а микропроцессор, предназначенный для работы с графическим ПО, но он выполнял и другие функции (например, быстрые математические вычисления)».

f4c5bc37285d4c88ab19bc6c461dfbf1.jpg
Первая версия графического ускорителя Argonaut с сохранившейся маркировкой MARIO CHIP 1.

157f9bc8d26242d68dce2af4528b9093.JPG
Финальная версия процессора, используемая в Starfox, Stunt Race FX, Vortex и Dirt Trax FX

Сама по себе Super NES имела ограниченные математические возможности, за исключением знаменитого режима «Mode 7», который мог только масштабировать и вращать одиночный 2D-фон. Более того, центральный процессор SNES даже не содержал команды умножения!

Технические характеристики процессора перечислены в Приложении A.


Работа Дилана над X совпала по времени с разработкой Super FX (примерно в 1990–1992 годах). В 1992 году оба проекта почти одновременно были завершены. После выхода ставшей в Японии хитом единственной монохромной игры Argonaut, Дилан присоединился к Джайлсу Годдарду (Giles Goddard) и Кристеру Вомбеллу (Krister Wombell) в новом совместном проекте Argonaut и Nintendo: создании первой игры, использующей только что разработанный 3D-акселератор.

64d1a3402d924120a0f9798e66cc619b.jpg
Американская обложка игры Starfox

Знаменитая теперь серия игр Nintendo под названием Starfox начиналась как Starglider 3, продолжение популярного космического шутера с Amiga. Поэтому, Argonaut снова использовала так полюбившуюся ей тему межзвёздных боевых действий. Задачей Nintendo на этот раз стала работа над более «аркадным» стилем игры, более лёгким по сравнению с симулятором X.

Создание милых персонажей и простого сценария было только половиной работы. Им также пришлось упростить управление и перейти от свободных полётов, характерных для предыдущих игр Argonaut, к более удобному для пользователя «рельсовому» аркадному игровому процессу, вдохновлённому играми Starblade и Solvalou компании Namco. Такие изменения огорчили некоторых фанатов Argonaut (сам Дилан хотел, чтобы уровни Starfox не были линейными), но, как мы знаем, игровой процесс финального продукта оказался близким к идеалу.

eba99dbffdc2445283e1485e14f9f8e3.png
Starfox

Сюжет игры — борьба элитного отряда наёмников Starfox (состоящего из ястреба Falco, кролика Peppy, жабы Slippy и лидера команды лиса Fox) против зловещего учёного Andross. Команда Фокса должна защищить родную планету Corneria и остальную часть системы Lylat с помощью своих космических кораблей (Arwing), нанеся контрудар и пройдя по одному из трёх маршрутов на выбор, чтобы в конце добраться до источника зла — планеты Venom. Каждый маршрут (называемый в игре уровнем) отличается сложностью и этапами. Он проходит через различные планеты системы, поля астероидов, сектора в глубоком космосе, и даже таинственную чёрную дыру и скрытое альтернативное измерение.

Как уже сказано, свобода передвижения, доступная в Starglider и X, не была перенесена в Starfox. Вместо него Arwing игрока автоматически следует по заданному пути на каждом из этапов, отстреливая врагов и уклоняясь от препятствий, а потом достигает конца этапа и босса. Похоже, что это сильно урезало возможности игрока по сравнению с предыдущими играми Argonaut, но 3D-движок всё равно оставляет достаточно способов для уворотов и перемещений. Камера при этом следует за ним вверх, вниз и в стороны.

Игра начинается с полной линейкой энергии и тремя жизнями. Корабль игрока оснащён улучшаемым основным лазером, ограниченным количеством бомб, уничтожающих всех врагов на экране, умеет делать «бочку», чтобы избежать выстрелов, а также ускоряться на несколько секунд для пролёта через ворота и узкие места.

Враги представлены не только типичным ассортиментом из космических опер в виде маленьких истребителей и огромных крейсеров, встречаются также насекомые-переростки, драконы, водные змеи и роботы поддержки. Самыми впечатляющими, конечно же, стали гигантские боссы конца уровня, победа над которыми требует быстрых рефлексов и тактики.

6f2d7ef914564e4b8683da32c3e39101.gif
Карта уровней Starfox

Этапы более уникальны, чем в обычных играх жанра shoot’em-up, в некоторых из них можно даже выбирать до трёх точек обзора камеры (самая интересная — прямо внутри кокпита Arwing). Игровой процесс Starfox состоит постоянно изменяющемся балансе между мастерским управлением и быстрой стрельбой. Игрок занят проникновением во вражеские туннели, уворачиванием от астероидов и безопасным прохождением через космические станции противника, в то же время стремясь расстрелять как можно больше врагов.

Игрок проходит игру не в одиночку. Наверно, лучшая из идей Nintendo в Starfox — добавление трёх напарников Фокса, постоянно защищающих «тылы» его Arwing и следующих за игроком в тесном боевом порядке. Они общаются глуповатыми, искажёнными голосовыми сэмплами (над этой деталью игроки больше всего смеялись), и даже могут спасаться бегством, запрашивая помощи у Фокса, когда их линейки энергии снижаются при атаках врагов. Такое взаимодействие с командой, даже очень ограниченное, сильно повышало ощущение принадлежности к отряду, заставляя игрока заботиться о напарниках. Если же они покидали поле боя, игрок сразу же замечал недостаток огневой поддержки.

0cacddc461b64173b56bbf97796ec506.png
Slippy благодарит игрока за помощь

Скромные возможности 10,5-мегагерцового чипа Super FX были в то время впечатляющими, хотя они и не соответствуют современным стандартам. Самым заметным недостатком была невероятно «рваная» частота кадров (в эмуляторах она не так очевидна) и низкое разрешение вывода видео с чёрной рамкой вокруг экрана (Super FX мог отрисовывать не более 192 строк по высоте). К счастью, эти проблемы не повлияли серьёзно на игровой процесс.

Интересно, что мир Starfox состоял не из одних полигонов. Фонами служили красивые неподвижные и анимированные изображения, а процессор Super FX не только занимался вычислением векторов, но и масштабировал и поворачивал 2D-спрайты, такие как круговые лазеры, астероиды и сама финальная форма босса Andross.

Успех Starfox стал результатом отличного баланса между инновационной технологией Argonaut и внимательной работой с деталями Nintendo. Разрушаемые крылья Arwing, сменяемые камеры и короткое интро «Scramble», ставшее классическим — результат работы Argonaut; дизайн игры, упрощённое управление, взаимодействие с напарниками и превосходный саундтрек — заслуга Nintendo.

362f9d1ce953406aa5f956aeb64c9d51.gif


После огромного успеха Starfox Дилан начал работать над созданием его продолжения для SNES. Starfox 2 уже находился в состоянии финальной бета-версии, но Nintendo решила полностью отказаться от него в пользу улучшенных 3D-возможностей новой N64. После этого Катберт ушёл из Argonaut в Sony Computer Entertainment America, где работал над разработкой игры Blasto для Playstation. Несколько лет спустя он был переведён в токийский офис Sony, разрабатывал Ape Escape и в 2001 году покинул компанию, основав собственную студию разработки «Q-Games». Он продолжает жить в Японии, его компания создавала различные проекты для Nintendo DS, Playstation 3 и Playstation 4.

f214026ccf234354ba381b505a9d550c.png
Титульный экран невыпущенной Starfox 2

Успех Starfox и чипа Super FX привели к расширению работы Argonaut. Джез и его команда разрабатывала процессоры для других игровых консолей: «GreenPiece» Philips, «VeggieMagic» Apple и «MatriArc» Hasbro; ни одна из них не была выпущена. Огорчённая этим команда Argonaut наконец создала собственный микропроцессор («Argonaut RISC Core») и продала его дизайн с неисключительными правами.

В 2002 году Джез получил Орден Британской империи, который был впервые вручён за достижения в индустрии компьютерных игр. К сожалению, через два года Argonaut Software Ltd была ликвидирована из-за значительных убытков. Сейчас Джез работает президентом компании, занимающейся онлайн-покером, основанной им в 2005 году.


Дизайном аппаратной части чипа занималась британская компания Ben Cheese Electronic Design.

63d89f7fb01e4203a816656c0fc46b2d.jpg
Бен Чиз, разработчик Super FX

Первая версия Super FX (GSU-1) имела частоту 21,477 МГц, но внутренний делитель тактовой частоты уменьшал её до 10,74 МГц. Процессор имел 100 контактов. Super FX 2 (GSU-2), работал на полной частоте 21,477 МГц, у него было 112 контактов и он имел доступ к большему объёму SRAM.

Игровые картриджи с чипами Super FX имеют дополнительные контакты, соединяемые с дополнительными контактами в разъёме картриджа, которые обычно не использовались. Адаптеры картриджей, такие как Game Genie, не имели соединений с этими ранее неиспользованными контактами, поэтому игры с Super FX невозможно было использовать в таких устройствах.

Кроме рендеринга полигонов, чип часто использовался для помощи SNES / Super Famicom со сложными 2D-эффектами.

Для разработчиков игр чип стоил 10 долларов.

Super FX (GSU-1) Super FX 2 (GSU-2)
Частота 10,74 МГц 21,477 МГц
Количество контактов 100 112
SRAM 32 КБ 64 КБ (поддерживает до 128 КБ)


Super FX (GSU-1)
StarFox (8 Мбит ROM, 1993, Nintendo/Argonaut) 1acbe353c8cd47e69c3227d9a1f59b9e.png
Super StarFox Weekend (8 Мбит, 1993, Nintendo/Argonaut) bb7227994af84881b872e0b1531c8b84.png
Stunt Race FX (8 Мбит, Nintendo/Argonaut) 86c30d95544445668ff3c5f90c5b8320.png
Vortex (4 Мбита, Electrobrain/Argonaut) 2d8f915a04654a3ba1efff7c1b228897.png
Dirt Racer (4 Мбита, 1995, Elite Systems/MotiveTime) c4af8fd0e54c4b41b52c564b87d5ab72.png
Dirt Trax FX (4 Мбита, 1995, Acclaim/Sculptured Software) 60f9a249444a4e52a38d0859ac501492.png
Super FX 2 (GSU-2)
DOOM (16 Мбит, 1995, Williams) 189e2c1cc85c4b9c99e94aa71603979c.png
Winter Gold (16 Мбит, 1996, Nintendo/Funcom) 8a9d604862174683bf2f00f6329a14a7.png
Super Mario World 2: Yoshi«s Island (16 Мбит, 1995, Nintendo) 4335cca6be4446e38f8fa446d544b951.gif

© Geektimes