# Mode 7

Screenshot of a basic Super NES demo using this graphical effect

Mode 7 is a graphics mode on the Super NES video game console that allows a background layer to be rotated and scaled on a scanline-by-scanline basis to create many different effects.[1] The most famous of these effects is the application of a perspective effect on a background layer by scaling and rotating the background layer in this manner. This transforms the background layer into a two-dimensional horizontal texture-mapped plane that trades height for depth. Thus, an impression of three-dimensional graphics is achieved.

Mode 7 was one of Nintendo's prominent selling points for the Super NES platform in publications such as Nintendo Power and Super NES Player's Guide.[citation needed] Similar faux 3D techniques have been presented on a few 2D systems other than the Super NES, in select peripherals and games.

## FunctionEdit

The Super NES console has eight graphics modes, numbered from 0 to 7, for displaying background layers. The last one (background mode 7) has a single layer that can be scaled and rotated. This graphical method is suited to racing games, and is used extensively for the overworld sections of role-playing games such as Square's popular 1994 game Final Fantasy VI. The effect enables developers to create the impression of sprawling worlds that continue toward the horizon.

A particular utilization technique with Mode 7 allows pixels of the background layer to be in front of sprites. Examples include the second and fifth stage of Contra III: The Alien Wars, the second and fifth stage of Jim Power: The Lost Dimension in 3-D, the introduction screen of Tiny Toon Adventures: Buster Busts Loose, when a player falls off the stage in Super Mario Kart, some cinematics in Super Metroid, and in some boss battles in Super Mario World. The Game Boy Advance can make the same effect by using mode 2 which provides two layers, and by putting the sprites between the layers.

### FormulaEdit

Mode 7 graphics are generated for each pixel by mapping screen coordinate ${\displaystyle {\mathbf {r}}}$  to background coordinate ${\displaystyle {\mathbf {r}}^{\prime }}$ using an affine transformation and sampling the corresponding background color. The 2D affine transformation is specified for each scanline by 6 parameters; ${\displaystyle a}$ , ${\displaystyle b}$ , ${\displaystyle c}$ , and ${\displaystyle d}$  define the matrix ${\displaystyle {\mathbf {M}}}$ , while ${\displaystyle x_{0}}$  and ${\displaystyle y_{0}}$  define the vector ${\displaystyle {\mathbf {r}}_{0}}$  locates the origin of the matrix transformation and is related to a translation vector. Specifically, screen coordinate ${\displaystyle {\mathbf {r}}}$  is translated to the origin coordinate system, the matrix is applied, and the result is translated back to the original coordinate system to obtain ${\displaystyle {\mathbf {r}}^{\prime }}$ . In 2D matrix notation, this is written as

${\displaystyle {\mathbf {r}}^{\prime }={\mathbf {M}}({\mathbf {r}}-{\mathbf {r}}_{0})+{\mathbf {r}}_{0}}$

${\displaystyle {\begin{bmatrix}x'\\y'\end{bmatrix}}={\begin{bmatrix}a&b\\c&d\end{bmatrix}}\left({\begin{bmatrix}x\\y\end{bmatrix}}-{\begin{bmatrix}x_{0}\\y_{0}\end{bmatrix}}\right)+{\begin{bmatrix}x_{0}\\y_{0}\end{bmatrix}}}$ .

All arithmetic is carried out on 16-bit signed fixed point numbers, while all offsets are limited to 13 bits. The radix point is between bits 7 and 8.

Two-dimensional affine transformations can produce any combination of translation, scaling, reflection, rotation, and shearing—and nothing else. However, many games create additional effects by setting a different transformation matrix for each scanline. In this way, pseudo-perspective, curved surface, and distortion effects can be achieved.

## LimitsEdit

Mode 7 can only work on backgrounds, not sprites; therefore, any object that does not rotate or scale with the background must be a sprite, even items that would normally be thought of as part of the background, such as fixed platforms. The game developer must create a sprite with the same appearance as that object. For instance, in Super Castlevania IV, battles in which a large boss such as Koranot rotates, have the mobile boss implemented as the background, while the blocks on which the protagonist stands are sprites. With the obvious enhancements, this is similar to how some NES games feature battles against a giant movable boss without the slowdown and flicker inherent in a large sprite set—by making the boss the background, and then moving and animating it. Both systems' examples can only apply to objects in the horizontal plane of the moving object. For instance, a floor, ceiling, or scoreboard can remain part of a background in both the NES and SNES examples as long as they are completely "above" or "below" the field of gameplay. They can also be turned into sprites if the whole screen is needed, but this can cause slowdown.

That Mode 7 cannot be used on sprites means that each "size" of an "approaching" sprite for a given distance has to be pre-drawn, meaning that one would see sprites "jump" between a limited number of sizes when "approaching" them. This can be seen in Super Mario Kart and HyperZone whenever an object approaches, or when walking vertically on the Final Fantasy VI map with an airship in view.

Similarly, the appearance of sprite rotations must be handled through pre-drawing unless they are done with hardware included in the game cartridge such as the Super FX 2 chip, as with Super Mario World 2: Yoshi's Island. A notable workaround does exist and can be seen in Contra III: The Alien Wars in the second boss battle, and in Super Mario World in the battles against Reznor (platform wall support), Iggy (battle platform), Larry (also the platform), Morton, Ludwig, Roy, and Bowser. In these examples, the boss is a "background" and therefore rotates through Mode 7, and the scoreboard, which is "above" the field of play, is also a background, but the floor of battle's cracks are, as with the players and gunfire, "sprites" that are redrawn under various rotations as the player rotates. However, this only allows one "sprite" to be manipulated at once.

One exception to Mode 7-like effects on sprites handled neither by pre-drawing nor by external chips occurs in Tales of Phantasia and Star Ocean, where re-rendering of sprites on the fly is done entirely by the software. In Tales of Phantasia, the player sprite vertically stretches upon walking onto a save spot, and in Star Ocean, items are squashed when popping out of an open treasure chest. Due to the extra tiles needed[citation needed] for such rendering and the other high system demands throughout those games (both using a form of streaming audio to circumvent the SPC700's limited capacity, and as with most high-end SNES RPGs, using a variable width font), such rendering was limited to those few scenes.

The Mega Drive/Genesis has no hardware-native feature comparable to Mode 7,[2] though the Mega CD/Sega CD and 32X peripherals add such a feature.[citation needed] However, as in Tales of Phantasia and Star Ocean's sprite effect add-ins, some comparable technical feats were programmed entirely in software, seen in games such as Dick Vitale's "Awesome Baby" College Hoops and Zero Tolerance.[2]

Although there is no hardware-native feature comparable to Mode 7 in the Amiga, some of its games use programming tricks that resemble the effects of Mode 7—for example in Mr. Nutz: Hoppin' Mad, Lionheart, Obitus, and Brian the Lion.

## HardwareEdit

The two PPU (picture-processing unit) chips of the SNES use two 8-bit 32-kilobyte RAM chips. One PPU can access the tile map (128×128 tiles), and the other PPU can access the tile set (256 tiles, 8×8 pixels in 256 colors) in a single cycle.