Hur Ocarina of Time speedrunners bryter spelet på nya sätt

respek dt utvald bild 2
Den här historien är en del av Jacob Roachs ReSpec-serie, som täcker en värld av PC-spel och hårdvara.

ReSpec är normalt en krönika om den underbara tekniska världen av PC-spel, men ibland finns det ämnen som är för bra för att missa. Legenden om Zelda:Ocarina av tiden är allmänt hyllad som en av dem bästa Nintendo 64-spel någonsin gjorts, och även om det inte är en PC-titel, avslöjar spelets högsta nivå, mest tekniska speedruns hur spel fungerar på en grundläggande nivå. Ännu viktigare är att dessa otroliga bedrifter bara är möjliga med mycket samhällsansträngning.

Innehåll

  • Långt ifrån godtyckligt
  • Hacka i farten

Rekommenderade videor

Ocarina av tiden är ett spel som skulle ta en normal spelare cirka 30 timmar att slå; de skickligaste speedrunners, som strävar efter att spela spelet så snabbt som möjligt, kan slå det på cirka tre timmar och 40 minuter utan problem. Men kategorin Any% i spelet, som ger spelare i uppdrag att slutföra spelet oavsett vilka metoder som används, är nere på tre minuter, 54 sekunder och 566 millisekunder. Och ja, dessa millisekunder spelar roll. Andraplatsens rekordhållare är mindre än en hel sekund bakom världsrekordet.

Ocarina of Time-spel för Nintendo 64.

Även om det är en så anmärkningsvärd bedrift, är det inte allt Ocarina av tiden speedruns ger bordet. På Summer Games Done Quick 2022, ett halvårligt speedrunning-maraton för välgörenhet, fanns det en showcase som lyfte fram en grupp av speedrunners som programmerar om spelet i farten för att visa ny grafik, spela ny musik och till och med köra en Twitch-chatt täcka över. Och allt detta gjordes på en standardkopia av spelet utan förprogrammering.

De Ocarina av tiden speedrunning community har fortsatt att bryta spelet på till synes omöjliga sätt. Jag nådde ut till två av de ledande hjärnorna i samhället för att ta reda på vad som får det klassiska Nintendo 64-spelet att ticka, och allt handlar om en exploatering: godtycklig kodexekvering.

Långt ifrån godtyckligt

Nintendo 64-konsol och spel.
Rob Tek/Shutterstock

Arbitrary Code Execution, eller ACE, låter mycket mer skrämmande än vad det faktiskt är. Det är en term som kastas runt inom cybersäkerhet som i grunden betyder att köra kod (eller ett program) som inte bör köras. Det är så dannyb, en speedrunner för Ocarina av tiden som innehar andraplatsens rekord i kategorin Any%, beskrivet ACE i Ocarina of Time: Godtycklig kodexekvering i OoT är ett utnyttjande där en spelare kan använda åtgärder i spelet för att ordna ett gäng data i minnet för att härma spelkod och manipulera sedan platsen där spelet vill köra kod för att vara platsen där vi precis gjorde det arrangera.”

Med rätt åtgärder säger dannyb att spelare kan "i princip köra vilken kod vi vill inifrån spelet och få spelet att göra saker som den inte var programmerad att göra." Dessa åtgärder inkluderar saker så till synes värdelösa som namnet du anger när du startar spel. Det är precis den handling som har tillåtit Ocarina av tiden att bli slagen så snabbt.

I ett spel som Ocarina of Time, spelet kontrollerar sitt minne för att ett visst krav ska uppfyllas för att slå spelet. Målet i en Any% speedrun är att ordna om minnet för att titta på din karaktärs namn istället för där det vanligtvis skulle se ut. Detta kallas Stale Reference Manipulation, eller SRM, och dannyb säger att exploateringen är det som sprack Ocarina av tiden speedruns öppna på ett stort sätt.

[Tidigare världsrekord] OoT Any% Speedrun på 3:55.300!

"ACE i vilket videospel som helst behöver alltid dessa två saker: finjusterad kontroll över någon minnesregion så att spelaren kan få data där att efterlikna kod, och möjligheten att ändra platsen för kodexekveringen till att vara platsen där den anpassade koden lögner. Under 2019 upptäcktes en glitch som heter Stale Reference Manipulation i OoT, vilket öppnade upp det andra kravet på ett stort sätt, sa dannyb.

I fallet med en normal Ocarina av tiden kör, till synes slumpmässiga åtgärder läggs till för att lura spelet att kontrollera områden (som din karaktärs namn) för slutförandekrav när de inte borde. Det är en tvådelad process. Skapa en datanyttolast, till exempel din karaktärs namn, och manipulera minnet med SRM för att peka mot den nyttolasten.

Hacka i farten

OoT Triforce Percent ACE Showcase: TASBot tar oss hit tillsammans på SGDQ 2022! (Beta + nytt innehåll)

Det är så speedrunners slår Ocarina av tiden på bara några minuter, men det förklarar inte helt hur den kärleksfullt namngivna Triforce%-showcasen kunde lägga till ny textur, modeller, musik, kod och till och med en Twitch-överlagring till spelet utan någon modifiering av patron. Savestate, en av hjärnorna bakom detta årslånga projekt, förklarade att det handlar om att förbereda Nintendo 64-konsolen för att förstå kontrollerdata som speldata.

Det är en utställning som bara är möjlig tack vare TASBot, som kan utföra indata i omänskliga hastigheter. Som Savestate förklarar, "Vi modifierar en instruktion i minnet för att börja läsa styrenhetsdata som N64-instruktioner. Normalt skulle detta krascha, men tack vare TASBot kan han simulera kontroller och manipulera dem på omänskliga hastigheter för att se ut som N64-instruktioner så att spelet exekverar styrenhetsdata som en uppsättning förutbestämda instruktioner."

Löparna kan lägga till vilken kod de vill till spelet bara genom kontrollingångar.

Kort sagt, Triforce%-showcasen använder ACE och SRM som vanligt Ocarina av tiden speedrun, men det förändrar specifikt hur Nintendo 64-konsolen förstår instruktionerna. Med den inställningen kan löparna lägga till vilken kod de vill till spelet bara genom kontrollingångar. Savestate fortsatte: "Det finns ingen modifiering av spelkassetten. För att få anpassad data till minnet använder vi en glitch som gör att vi kan börja lägga till och ändra saker i minne med hjälp av TASBot medan endast gränssnitt med N64-konsolen via dess kontroller hamnar."

Kontrollport på Nintendo 64.

Dessa bedrifter upptäcks inte bara slumpmässigt heller. Savestate förklarade att Ocarina av tiden community har utvecklat verktyg för att titta på hur minnet är ordnat i spelet, samt program för att simulera olika minnesarrangemang. Emulatorer som Project64 hjälper mycket och låter löpare och verktygsutvecklare gå igenom hur spelet exekverar kod steg för steg.

Ocarina av tiden är ett av de mest ikoniska spelen som någonsin gjorts, och det robusta, dedikerade speedrunning-communityt har låtit spelet frodas med nya utvecklingar i årtionden efter att det ursprungligen släpptes. Exploater som den som driver snabbast Ocarina av tiden speedruns trivialiserar utmaningen som normalt är förknippad med att slå ett spel så snabbt som möjligt, men de också lyft fram den otroliga tekniska expertis och samhällsansträngning som går ut på att dissekera och analysera älskade spel.

Gemenskapen är också medveten om denna balans, enligt dannyb: "OoTs Any% speedrun-kategori är den enda på våra huvudtavlor som tillåter ACE som ett giltigt sätt att slutföra målet. För allt annat förbjuder vi ACE för att bevara det unika som gjorde dessa kategorier till liv i första hand."

Denna artikel är en del av ReSpec – en pågående kolumn varannan vecka som innehåller diskussioner, råd och djupgående rapportering om tekniken bakom PC-spel.

Redaktörens rekommendationer

  • Zelda: Ocarina of Time går med i Video Game Hall of Fame
  • Switch Onlines N64-expansion kommer inte att vara komplett utan genomskinliga kontroller