Una scoperta sorprendente ha colpito la community di Tetris, celebre gioco nato negli anni '80 e ancora oggi estremamente in voga. Alcuni giocatori di Tetris per la console NES sono, infatti, riusciti a utilizzare un particolare tipo di crash del gioco, noto come "kill screen", per inserire nuovi comportamenti nel software.
Questa tecnicità, denominata "esecuzione di codice arbitrario", è stata già osservata in altri titoli come Super Mario World e The Legend of Zelda: Ocarina of Time, ma suscita particolare interesse nella sua applicazione a Tetris per un motivo preciso.
Il "kill screen" di Tetris si verifica superando il livello 155, quando il gestore del punteggio impiega troppo tempo per calcolare un nuovo punteggio tra i frame, causando un'interruzione del codice di controllo. Solitamente, questa situazione porta a leggere dati casuali come istruzioni di codice, provocando il crash del gioco. Tuttavia, grazie all'utilizzo di una particolarità dei controller sulla versione giapponese del NES, la Famicom, i giocatori possono influenzare con precisione dove il codice riprende dopo il crash.
A differenza della versione americana del Nintendo Entertainment System, la Famicom includeva due controller cablati fisicamente e una porta di espansione che permette l'uso di controller di terze parti. Tetris raccoglie gli input da questa porta "extra", che insieme a un adattatore consente l'uso di due controller aggiuntivi. Questa caratteristica unica apre una serie di possibilità poiché l'area di RAM che elabora questi input extra è la stessa che viene utilizzata nella sequenza di salto del codice durante un crash.
Come funziona la riscrittura di codice su Tetris?
Il metodo impiegato dai giocatori prevede, dunque, un controllo manuale specifico sui controller connessi alla porta di espansione, direzionando il salto del codice verso l'area di RAM che contiene la classifica dei punteggi più alti. Sfruttando una combinazione molto particolare di nomi e punteggi inseriti nella classifica, è possibile iniziare a leggere queste informazioni come istruzioni di codice machine eseguibili dal processore della console.
Nonostante ci siano limitazioni su quali simboli e numeri possano essere utilizzati per codificare istruzioni a causa della limitata selezione disponibile per i nomi nella classifica, sono già stati dimostrati esempi concreti di come manipolare il gioco. Ad esempio, è stato prodotto un frammento di codice sperimentale che, inserito correttamente nella classifica dei punteggi, previene il calcolo del punteggio che causerebbe il crash del gioco.
Questa metodologia apre scenari fino a ora inimmaginabili per Tetris su NES, permettendo ai giocatori più esperti di aggirare i bug che portano al crash del gioco e persino di modificarne il comportamento a proprio vantaggio. Anche se l'assenza di un sistema di salvataggio permanente implica la necessità di ripetere queste operazioni a ogni avvio del gioco, l'implicazione di poter avere "il pieno controllo sulla RAM" introduce la possibilità di riprogrammare Tetris per estenderne la giocabilità oltre i limiti originariamente pensati dai suoi creatori.