# Mode 7

Mode 7 is een spelmodus en techniek in computergraphics waarmee een dynamisch driedimensionaal effect kan worden gecreëerd. Het gaat hierbij om een textuurmappingtechniek die door fabrikant Nintendo werd ontwikkeld voor de Super NES-spelcomputer en die later ook voor de Game Boy Advance werd gebruikt.

## Gebruik

Mode 7-rendering wordt over het algemeen gebruikt op systemen met sterke 2D-mogelijkheden maar zonder 3D-ondersteuning. Enkele Mode 7-spellen zijn de SNES-spellen Terranigma, Starfox, Pilotwings, Super Castlevania IV, Secret of Mana, Final Fantasy VI, F-Zero, Super Mario Kart, Super Mario RPG, Super Star Wars en Chrono Trigger. Het effect werd later gebruikt in Game Boy Advance-versies van deze spellen, waaronder F-Zero, Super Mario Kart en Final Fantasy VI.

## Functie

De SNES heeft acht modi, genummerd van 0 tot 7, om achtergrondlagen te tonen. De laatste (achtergrondmodus 7) heeft een enkele laag die geschaald en gedraaid kan worden. De 2D-graphics-hardware van de Game Boy Advance en Nintendo DS kan betegelde achtergronden (waarbij de achtergrond zich herhaald als bij een tegelwand) schalen en draaien in modi 1 en 2, en kan bitmaps schalen en draaien in modi 3 tot 5. Dit wordt minder vaak gebruikt op de GBA vanwege technische beperkingen. Op elke machine met ondersteuning voor dit effect kunnen de schaling en draaiing veranderd worden tijdens het horizontale blanking interval (de tijd tussen de laatste pixel op een rij en de eerste pixel op de volgende rij) om een plat vlak in perspectief te tonen. Dit werd bekend als het karakteristieke "Mode 7"-effect. Complexe effecten zijn mogelijk door andere vergelijkingen te gebruiken voor de positie, schaling en draaiing van elke pixelrij. Deze grafische methode is niet alleen geschikt voor racespellen, maar het is ook veelvuldig gebruikt in de wereld van Square's Final Fantasy VI. Het effect werd gebruikt om de indruk te geven van een oneindige stad. Mode 7 wordt ook gebruikt in andere RPG's van Square voor magische spreuken.
Op de SuperNES was een variatie van Mode 7 mogelijk, waardoor pixels van de achtergrondlaag vóór de sprites getekend werden. Voorbeelden hiervan zijn Contra III: The Alien Wars (stage 2) en Tiny Toon Adventures (introscherm). De GBA kan hetzelfde effect maken door Mode 2 te gebruiken, die twee "Mode 7"-lagen biedt, en de sprites tussen de lagen te zetten.
Veel pc-spellen, waarbij Wacky Wheels het bekendste is, hebben een Mode 7-effect via een softwarematige methode. Ook is het mogelijk om in een Mode 7-uitbreiding van Multimedia Fusion een semi-3D-spel te maken.
Tijdens de SNES-periode was Mode 7 een van Nintendo's favoriete verkooppunten (Nintendo Power, SNES Player's Guide). Toen bijvoorbeeld het spel Teenage Mutant Ninja Turtles: Turtles in Time van de arcade werd overgezet naar de SNES werd een level veranderd van een zijaanzicht naar een Mode 7-level.

## Beperkingen

Een belangrijke beperking van Mode 7 is dat het alleen werkt op achtergronden, niet op sprites. Daarom moet elk object dat niet draait/schaalt met de achtergrond een sprite zijn - zelfs objecten die normaal deel uitmaken van de achtergrond, zoals vaste platforms. De spelontwikkelaar moet een sprite maken met hetzelfde uiterlijk als dat object. Bijvoorbeeld in Super Castlevania IV waar een baas zoals Koranot draait, is de baas - die normaal gezien zou worden als een sprite - als de achtergrond, en de blokken om op te staan zijn sprites. Dit is vergelijkbaar met hoe sommige NES-spellen gevechten met grote bazen hadden zonder de vertraging en flikker die men bij veel sprites kreeg - door de baas de achtergrond te maken en deze te animeren en bewegen. Beide voorbeelden gaan over objecten binnen het horizontale vlak van het bewegende voorwerp. Een vloer, plafond of scorebord bijvoorbeeld kunnen deel blijven uitmaken van de achtergrond zowel op de NES als de SNES, als ze volledig onder of boven het speelveld liggen. Er kunnen ook sprites van gemaakt worden als het hele scherm nodig is, maar dit kan vertraging veroorzaken.
Het feit dat Mode 7 niet gebruikt kan worden op sprites betekent dat elke grootte van een "aankomende" sprite voor een gegeven afstand van tevoren getekend moet worden, wat betekent dat de sprites "verspringen" tussen een aantal vaste groottes. Dit is te zien in Super Mario Kart en HyperZone wanneer een object aankomt, of wanneer men verticaal loopt op de kaart van Final Fantasy VI met een luchtschip in beeld.
Sprite-draaiingen moeten om dezelfde reden ook van tevoren getekend worden, tenzij de Super FX 2-chip gebruikt wordt zoals in Yoshi's Island. Een oplossing hiervoor bestaat en is te zien tijdens de tweede baas in Contra 3 en de gevechten tegen Morton, Ludwig, Roy en Bowser in Super Mario World. In deze voorbeelden is de baas de "achtergrond" die via Mode 7 draait, en het scorebord, dat boven het speelveld is, is ook een achtergrond, maar de vloer is net als de spelers een sprite, die opnieuw getekend wordt als de speler draait. Met deze methode kan echter maar één sprite tegelijkertijd behandeld worden.
Een uitzondering op Mode 7-effecten op sprites die noch van tevoren getekend zijn noch door externe chips gedaan worden is te zien in Tales of Phantasia en Star Ocean, waar de sprites volledig door de software opnieuw getekend worden. In ToP wordt de speler-sprite verticaal uitgerekt bij een opsla-punt, en in Star Ocean krimpen objecten wanneer ze uit een schatkist tevoorschijn komen. Vanwege de extra tiles die hiervoor nodig zijn en andere hoge systeemeisen in deze spellen (beide gebruiken een vorm van gestreamde audio om de beperkte capaciteit van de SPC700 te omzeilen en hadden een lettertype met een variabele breedte) werd dit slechts in enkele scènes gebruikt.
De Sega Mega Drive had geen vergelijkbare hardware voor Mode 7, hoewel de Sega CD-uitbreiding wel iets dergelijks had dat veelvuldig gebruikt werd in de speciale levels van Sonic CD. Effecten zoals in Tales of Phantasia en Star Ocean konden echter rechtstreeks geprogrammeerd worden, wat vergelijkbare effecten gaf in spellen als Castlevania: Bloodlines, Adventures of Batman and Robin en Contra: Hard Corps. De Sega 32X had 2D- en eenvoudige 3D-mogelijkheden, dus schaal- en draai-effecten kwamen veel voor in 2D-spellen zoals Knuckles' Chaotix, dat het eerste Sonic-spel was met een polygonaal bonuslevel.
De Mode 7-formule is gepoort naar Adobe Flash en wordt momenteel gebruikt om de eerste Flash 3D-spellen te maken. Het eerste volledig speelbare spel is 3D Rally Racing uit 2007. Deze nieuwe 3D-omgeving wordt gezien als de volgende stap voor Flashspellen. Het effect is ook toegevoegd aan de Wii Opera SDK voor JavaScript-spelontwikkeling voor het internetkanaal van de Nintendo Wii.

## Hardware

De twee PPU-chips (picture-processing unit; afbeelding-verwerkingseenheid) van de SNES gebruiken twee 8-bit 64-kilobyte-RAM-chips. Een PPU kan de tilemap (128 × 128 tiles) benaderen en de andere PPU kan de tile set (256 tiles, 8×8 pixel in 256 kleuren) benaderen in een enkele cyclus.