Mode 7

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Снимок экрана демонстрации на SNES, показывающий графический эффект режима 7

Mode 7 (с англ. — «режим 7») — графический режим, появившийся на игровой приставке Super Nintendo Entertainment System. В этом режиме возможно осуществлять масштабирование и поворот слоя заднего плана перед генерацией каждой отдельной строки развёртки[1], что позволяет при определенной квалификации программиста создавать разнообразные графические эффекты. Самый примечательный из эффектов, которые можно при этом достичь, является эффект перспективы, придаваемый этому слою в результате одновременного масштабирования и поворота. Этот эффект получается за счёт преобразования слоя заднего фона в двухмерную текстурированную горизонтальную плоскость, то есть в результате преобразования её высоты в глубину. Таким образом достигается визуальный эффект трёхмерности пространства.

Интересно, что конкурирующая со SNES приставка Sega Mega Drive изначально не имела таких возможностей, однако с дополнением Sega Mega-CD подобный режим становится доступным и на этой системе. Этот эффект был использован в игре Sonic the Hedgehog CD на уровнях Special Stages. Также подобным режимом обладала портативная система Atari Lynx и Game Boy Advance[2].

Применение[править | править код]

Игра F-Zero, работающая в режиме 7

Рендеринг наподобие режима 7 довольно часто использовался на системах, обладавших значительными мощностями работы с двухмерной графикой, и не имевших специальной поддержки трёхмерной графики. Среди классических игр на игровых приставках, использующих преимущества режима 7: F-Zero, Teenage Mutant Ninja Turtles: Turtles in Time, Super Castlevania IV, Secret of Mana, Secret of Evermore, Final Fantasy IV, Final Fantasy V, Final Fantasy VI, Super Mario RPG: Legend of the Seven Stars, Super Mario Kart, Super Mario World, Super Star Wars, Chrono Trigger, ActRaiser, Kirby Super Star, Axelay и The Legend of Zelda: A Link to the Past. Многие из этих игр были позднее портированы на Game Boy Advance с использованием схожего графического приёма. Также с использованием режимов, аналогичных режиму 7, было создано множество эксклюзивных для GBA игр.

Описание[править | править код]

Приставка SNES имеет восемь различных графических режимов, нумерованных от 0 до 7[1]. Последний из них (режим заднего плана 7) позволяет использовать всего один слой, который возможно масштабировать и вращать. Портативные системы Game Boy Advance и Nintendo DS поддерживают поворот и масштабирование традиционных для приставок Nintendo плиточных задних фонов под номерами 1 и 2, а также поворот и масштабирование растра в режимах с 3 по 5. Однако, последние редко использовались в GBA ввиду технических ограничений[3]. На каждом устройстве, поддерживающим режим 7, возможно производить операции вращения и/или масштабирования во время гашения обратного хода строчной развёртки, что позволяло отображать горизонтальную плоскость с эффектом перспективы. Именно эта особенность стала «визитной карточкой» режима 7. Возможно достижение более сложных эффектов типа полупрозрачности/затуманивания в результате применения других уравнений для вычислений положения, масштабирования и поворота для каждой строки развёртки. Неверно представление о режиме 7 как о подходящем только для гоночных игр, так как он также широко использовался для отображения «небесных» сцен в ролевых играх, подобных Final Fantasy VI от Square. Режим 7 позволял разработчикам достичь эффекта бесконечно растягивающегося мира.

На SNES при определенной параметризации режима 7 возможно расположение пикселей заднего фона поверх спрайтов. Это использовалось, например, в уровне 2 игры Contra III: The Alien Wars (персонажи и иные объекты проходили под мостами), а также в Super Mario Kart при ситуации, когда персонаж падает за границы уровня. На GBA подобный эффект может быть достигнуть в режиме 2, который поддерживает две масштабируемые и вращаемые плоскости: для достижения подобного эффекта достаточно поместить спрайт между этими плоскостями.

Многие игры на ПК, самые известные из которых Wacky Wheels и Skunny Kart, используют программную реализацию режима 7, что объясняет их визуальное подобие. Также существует программное обеспечение Multimedia Fusion от Clickteam, для которого существует расширение «Mode 7», позволяющее разработчикам использовать эту технологию.

Во время популярности SNES, режим 7 часто использовался как средство повышения продаж приставки (Nintendo Power, SNES Player’s Guide). Так в Teenage Mutant Ninja Turtles: Turtles in Time, портированной с аркадных автоматов, один из уровней был изменен с традиционного скроллинга на использование режима 7.

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

Математической основой режима 7 является преобразование экранных координат в координаты заднего фона с использованием двумерных матриц перехода[4]:

где  — координаты текстуры заднего фона;  — экранные координаты;  — горизонтальное и вертикальное смещение соответственно;  — координаты положения наблюдателя относительно текстуры.

Коэффициенты перехода выбираются таким образом[5]:

где  — угол поворота;  — коэффициент масштабирования по оси ;  — коэффициент масштабирования по оси . В данном случае вращение будет осуществляться против часовой стрелки. Для вращения по часовой стрелке следует взять коэффициенты и с противоположным знаком.

Все операции выполняются в 16-битных числах с признаком знака с фиксированным положением точки, однако смещения ограничены до 13 бит. Положение точки — между 7 и 8 битами[6].

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

Ограничения[править | править код]

Режим 7 распространяется только на задний фон и не распространяется на спрайты. По этой причине любой объект, который не должен вращаться одновременно с задним фоном, должен быть спрайтом, даже если такой объект должен номинально рассматриваться как элемента заднего фона, например, неподвижные платформы. Разработчики игры должны предусматривать спрайты для подобных объектов. Например, в Super Castlevania IV некоторые боссы (такие как большой голем Koranot) вращаются. Технически эти боссы выполнены в виде вращающегося заднего фона, тогда как платформы, на которых может стоять протагонист являются спрайтами. Этот метод, за исключением очевидных улучшений, во многом аналогичен способу отображения боссов крупных размеров на NES, который позволял достичь этого без уменьшения быстродействия игры и без графического артефакта мигания посредством помещения босса на задний фон, где он перемещался и действовал. Оба примера с обеих систем работоспособны только при помещении объектов в ту же горизонтальную плоскость, что и движущийся объект. Например в обеих системах пол, потолок и область вывода набранных очков и т. п. могут технически являться частью заднего фона, несмотря на их номинальное расположение вне области протекания непосредственно игрового процесса. Если игре требуется полный экран, эти области могут быть выполнены в виде спрайтов, однако это может приводить к снижению быстродействия игры.

Так как режим 7 не распространяется на спрайты, то каждый «размер» данного спрайта на определенном удалении от наблюдателя должен быть предварительно нарисован. Из-за этого можно наблюдать скачкообразное изменение размеров спрайта, например, при приближении или удалении от наблюдателя. Эффект можно наблюдать, например, в Super Mario Kart или F-Zero на любых объектах в процессе игры или в Final Fantasy VI при перемещении вертикально по карте при наличии воздушного корабля в зоне видимости.

Для того, чтобы избежать ручного рисования каждого спрайта, в некоторые картриджи, например Super Mario World 2: Yoshi’s Island, устанавливался специализированный процессор Super FX 2, который делал это на аппаратном уровне. Значительная работа для обхода данного ограничения проведена Contra III: The Alien Wars в сцене битвы со вторым боссом, а также в битве против Reznor (платформы и стены), Iggy (боевая платформа), Larry (платформа) Morton, Ludwig, Roy и Bowser в игре Super Mario World. В этих примерах босс — задний фон и поэтому вращается посредством режима 7, область подсчета очков также является задним фоном, однако пол боевой сцены, равно как протагонист и пули, является спрайтом и перерисовывается под разными углами соответственно вращению игрока. Однако, ограничением является то, что за один раз возможна работа лишь с одним спрайтом.

Однако есть и исключения из эффектов, подобных режиму 7, относительно спрайтов, нарисованных вручную или внешними процессорами. В играх Tales of Phantasia и Star Ocean частично рендеринг спрайтов происходит в реальном времени полностью программно. Так в Tales of Phantasia это — эффект вертикального масштабирования спрайта, когда он «входит» в слот для записи. В Star Ocean это — эффект «раздавливания» при извлечении предметов из открытого ящика с сокровищами. Поскольку для отображения таких эффектов требуются дополнительные плитки, а также ввиду других ресурсоемких особенностей данных игр (обе используют вариант потокового воспроизведения звука для обхода ограничений микросхемы SPC700, а также, как и другие RPG высшей категории на SNES, используют пропорциональный шрифт), применение этих эффектов возможно лишь в нескольких ситуациях.

Аппаратная реализация[править | править код]

Две микросхемы PPU (picture-processing unit, англ. блок обработки изображения) приставки SNES используют по 8-битной микросхеме ОЗУ объёмом 32 Кб. В ходе одного цикла один PPU имеет доступ к массиву тайлов (тайлы 128х128), второй PPU имеет доступ к сетке тайлов (256 тайлов, каждый 8х8 пикселов по 256 цветов).

Другие реализации[править | править код]

Приставка Sega Mega Drive/Genesis не имеет аналогичных режиму 7 аппаратных возможностей. Однако подобный режим стал доступен с дополнением Sega Mega-CD, который использован на уровнях Special Stages игры Sonic the Hedgehog CD. Однако, как и в случае с Tales of Phantasia и Star Ocean, некоторые эффекты со спрайтами также могут быть полностью реализованы разработчиком игры программно. В результате некоторые подобные эффекты использовались в играх типа Castlevania: Bloodlines, The Adventures of Batman and Robin, Mickey Mania: The Timeless Adventures of Mickey Mouse, Alien Soldier, Red Zone, Contra: Hard Corps и на других играх Sega Mega Drive. В дополнении Sega 32X были реализованы не только возможности двумерной графики, но и базовые возможности трёхмерной графики. Как следствие, использование эффектов типа масштабирования и поворота стало вполне типичным в играх типа Knuckles’ Chaotix, которая, помимо прочего, стала первой в серии игр Sonic the Hedgehog с реализацией полигональных уровней Special Stages.

См. также[править | править код]

Ссылки[править | править код]

Примечания[править | править код]

  1. 1 2 Backgrounds in SNES Development. Дата обращения 28 января 2013. Архивировано 2 февраля 2013 года.
  2. TwoHeaded Software. Дата обращения 28 января 2013. Архивировано 2 февраля 2013 года.
  3. Specifications. Дата обращения 28 января 2013. Архивировано 21 июня 2009 года.
  4. SNES Development
  5. Mode 7 - Scaling in SNES Development. Дата обращения 28 января 2013. Архивировано 2 февраля 2013 года.
  6. Tonc: Mode 7 Part 1. Дата обращения 28 января 2013. Архивировано 2 февраля 2013 года.