Hvordan Ocarina of Time speedrunners bryter spillet på nye måter

respek dt utvalgt bilde 2
Denne historien er en del av Jacob Roachs ReSpec-serie, som dekker verden av PC-spilling og maskinvare.

ReSpec er vanligvis en spalte om PC-spillingens fantastiske, tekniske verden, men av og til er det temaer som er for gode til å la være. Legenden om Zelda:Ocarina av tiden er universelt hyllet som en av beste Nintendo 64-spill noensinne laget, og selv om det ikke er en PC-tittel, avslører spillets høyeste nivå og mest tekniske speedruns hvordan spill fungerer på et grunnleggende nivå. Enda viktigere, disse utrolige bragdene er bare mulige med mye samfunnsinnsats.

Innhold

  • Langt fra vilkårlig
  • Hacking i farten

Anbefalte videoer

Ocarina av tiden er et spill som vil ta en normal spiller rundt 30 timer å slå; de mest dyktige speedrunners, som har som mål å spille spillet så fort som mulig, kan slå det på rundt tre timer og 40 minutter uten feil. Men kategorien Any% i spillet, som gir spillere i oppgave å fullføre spillet uavhengig av metodene som brukes, er nede på tre minutter, 54 sekunder og 566 millisekunder. Og ja, disse millisekundene betyr noe. Andreplassrekordholderen er mindre enn et helt sekund bak verdensrekorden.

Ocarina of Time-spill for Nintendo 64.

Selv om det er en så bemerkelsesverdig bragd, er det ikke alt Ocarina av tiden speedruns bringer til bordet. På Summer Games Done Quick 2022, et halvårlig hurtigløpsmaraton for veldedighet, var det et utstillingsvindu som fremhevet en gruppe speedrunners som omprogrammerer spillet på farten for å vise ny grafikk, spille ny musikk og til og med kjøre en Twitch-chat overlegg. Og alt dette ble gjort på en lagerkopi av spillet uten forhåndsprogrammering.

De Ocarina av tiden speedrunning-fellesskapet har fortsatt å bryte spillet på tilsynelatende umulige måter. Jeg tok kontakt med to av de ledende hjernene i samfunnet for å finne ut hva som får det klassiske Nintendo 64-spillet til å tikke, og det hele kommer ned til én utnyttelse: vilkårlig kodeutførelse.

Langt fra vilkårlig

Nintendo 64-konsoll og spill.
Rob Tek/Shutterstock

Arbitrary Code Execution, eller ACE, høres mye mer skremmende ut enn det faktisk er. Det er et begrep som kastes rundt i cybersikkerhet som i utgangspunktet betyr å kjøre kode (eller et program) som ikke bør kjøres. Det er slik dannyb, en speedrunner for Ocarina av tiden som har andreplassrekorden i kategorien Any%, beskrevet ACE i Ocarina of Time: «Vilkårlig kodeutførelse i OoT er en utnyttelse der en spiller kan bruke handlinger i spillet for å ordne en haug med data i minnet for å etterligne spillkode, og manipuler deretter stedet der spillet er ute etter å kjøre kode for å være stedet der vi nettopp gjorde det arrangere.»

Med de riktige handlingene sier dannyb at spillere er i stand til å "i hovedsak kjøre hvilken som helst kode vi liker fra spillet, og få spillet til å gjøre ting den ikke var programmert til å gjøre." Disse handlingene inkluderer ting så tilsynelatende ubrukelige som navnet du skriver inn når du starter spill. Det er akkurat handlingen som har tillatt Ocarina av tiden å bli slått så fort.

I et spill som Ocarina of Time, spillet sjekker minnet for et visst krav som skal oppfylles for å slå spillet. Målet i en Any% speedrun er å omorganisere minnet for å se på karakterens navn i stedet for hvor det vanligvis ser ut. Dette kalles Stale Reference Manipulation, eller SRM, og dannyb sier at utnyttelsen er det som sprakk Ocarina av tiden speedruns åpne på en stor måte.

[Tidligere verdensrekord] OoT Any% Speedrun på 3:55.300!

"ACE i ethvert videospill trenger alltid disse to tingene: finjustert kontroll over et område av minnet slik at spilleren kan få dataene der til å etterligne kode, og muligheten til å endre plasseringen av kodeutførelsen til å være stedet der den tilpassede koden ligger. I 2019 ble en feil kalt Stale Reference Manipulation oppdaget i OoT, som åpnet opp det andre kravet på en stor måte, sa dannyb.

I tilfelle av en normal Ocarina av tiden kjører, tilsynelatende tilfeldige handlinger legger seg til for å lure spillet til å sjekke områder (som karakterens navn) for fullføringskrav når de ikke burde. Det er en todelt prosess. Lag en datanyttelast, for eksempel karakterens navn, og manipuler minnet med SRM for å peke mot den nyttelasten.

Hacking i farten

OoT Triforce Percent ACE Showcase: TASBot bringer oss hit sammen på SGDQ 2022! (Beta + nytt innhold)

Det var slik speedrunners slo Ocarina av tiden på bare noen få minutter, men det forklarer ikke helt hvordan det kjærlig navngitte Triforce%-utstillingsvinduet var i stand til å legge til ny tekstur, modeller, musikk, kode og til og med et Twitch-overlegg til spillet uten endringer i patron. Savestate, en av hodene bak dette årelange prosjektet, forklarte at det handler om å forberede Nintendo 64-konsollen til å forstå kontrollerdata som spilldata.

Det er et utstillingsvindu som bare er mulig på grunn av TASBot, som er i stand til å utføre inndata i umenneskelige hastigheter. Som Savestate forklarer, "Vi endrer en instruksjon i minnet for å begynne å lese kontrollerdata som N64-instruksjoner. Normalt ville dette krasje, men takket være TASBot er han i stand til å simulere kontrollere og manipulere dem på umenneskelig vis. hastigheter for å se ut som N64-instruksjoner slik at spillet kjører kontrollerdataene som et sett med forhåndsbestemt bruksanvisning."

Løperne er i stand til å legge til hvilken som helst kode de vil til spillet bare gjennom kontrollerinnganger.

Kort sagt, Triforce%-utstillingsvinduet bruker ACE og SRM som en vanlig Ocarina av tiden speedrun, men det endrer spesifikt hvordan Nintendo 64-konsollen forstår instruksjoner. Med det oppsettet er løperne i stand til å legge til hvilken som helst kode de vil til spillet bare gjennom kontrollerinnganger. Savestate fortsatte: "Det er ingen modifikasjon av spillkassetten. For å få tilpassede data inn i minnet bruker vi en feil som lar oss begynne å legge til og endre ting i minne ved hjelp av TASBot mens den bare kommuniserer med N64-konsollen gjennom kontrolleren havner."

Kontrollport på Nintendo 64.

Disse utnyttelsene blir heller ikke bare tilfeldig oppdaget. Savestate forklarte at Ocarina av tiden community har utviklet verktøy for å se på hvordan minne er ordnet i spillet, samt programmer for å simulere forskjellige minnearrangementer. Emulatorer som Project64 hjelper mye, og lar løpere og verktøyutviklere gå gjennom hvordan spillet kjører kode trinn for trinn.

Ocarina av tiden er et av de mest ikoniske spillene som noen gang er laget, og det robuste, dedikerte speedrunning-fellesskapet har latt spillet trives med nye utviklinger i flere tiår etter at det opprinnelig ble utgitt. Utnyttelser som den som driver raskest Ocarina av tiden speedruns bagatelliserer utfordringen som vanligvis er forbundet med å slå et spill så fort som mulig, men de også fremheve den utrolige tekniske ekspertisen og samfunnsinnsatsen som går med til å dissekere og analysere elskede spill.

Samfunnet er også klar over denne balansen, ifølge dannyb: "OoTs Any% speedrun-kategori er den eneste på våre hovedpoengoversikter som tillater ACE som en gyldig måte å fullføre målet. For alt annet forbyr vi ACE for å bevare det unike som brakte disse kategoriene til live i utgangspunktet.»

Denne artikkelen er en del av ReSpec – en pågående toukentlig spalte som inkluderer diskusjoner, råd og dybderapportering om teknologien bak PC-spilling.

Redaktørenes anbefalinger

  • Zelda: Ocarina of Time blir med i Video Game Hall of Fame
  • Switch Onlines N64-utvidelse vil ikke være komplett uten gjennomsiktige kontrollere