game boy advance · demo · v0.44.0
VECTOR
Un omaggio a Portal per Game Boy Advance, scritto da zero. La pistola non spara colpi ma varchi, due, uno caldo e uno freddo, e si aprono solo sui pannelli chiari. Entri in uno, esci dall'altro, e la velocità non si perde: cadi da in alto e ne esci sparato. Dodici camere in due metà, e la seconda è lo stesso impianto anni dopo.

illustrazione di copertina, non una schermata
Cos'è
È una demo, e mi interessa dirlo prima di tutto il resto: le camere fatte finora servivano a fare amicizia con il processore di questa macchina e a vedere cosa saltava fuori. Non è un gioco finito e non finge di esserlo, e alla fine c'è una schermata che lo dice: le camere cresceranno, quelle che ci sono adesso sono l'inizio.
Non è un porting e non usa niente dell'originale: è la stessa idea, due varchi collegati e la velocità che ci passa attraverso senza perdersi, portata dentro i vincoli di una macchina del 2001. Duecentoquaranta punti per centosessanta, sedici colori per tavolozza, e tutto quello che si vede disegnato punto per punto: le pareti, il vapore che esce dalle prese d'aria, i coni di luce delle lampade, i tubi al neon attorno alle soglie.
niente bitmap. solo codice
Le camere
Ognuna insegna una cosa sola, e la chiede una volta sola. Poi si apre sulla successiva. Il gioco è diviso in due metà, e la seconda è lo stesso posto, anni dopo. Queste sono le camere costruite finora: ne arriveranno altre, e il numero non è il punto.

Qui funziona ancora tutto
Le porte si aprono, l'acqua scorre, le macchine aspettano ordini. Sei camere per imparare le regole: camminare, i varchi, il cubo sul pulsante, la torretta, il raggio, le macchine.

Lo stesso posto, anni dopo
Muri crollati, muschio ed edera sopra il cemento, luce del giorno dai buchi. Si riconosce, ed è questo il punto: non è un mondo nuovo, è quello di prima lasciato andare.
Nella seconda metà ci sono tre cose che nella prima non esistono.
- il vetro ferma te, non i tuoi varchi
- le sentinelle da parete si abbattono solo tirandogli un cubo
- le consolle guidi una macchina che vedi solo attraverso il vetro

LA TORRE, l'ultima camera: 30 blocchi per 20, la prima del gioco più alta dello schermo. Uno scarico in cima versa una cascata che attraversa tutti e due i piani, e per gran parte della stanza è l'unica cosa che si veda da entrambi.

ogni camera è larga due schermi, quindi entrando metà stanza ti resta dietro. Prima di restituirti i comandi la telecamera va a vedere il fondo e torna: due secondi scarsi, e non si ripete quando muori.
I comandi
- D-PAD cammina
- SU salta
- A / B varco arancione / varco blu
- R prendi o posa il cubo
- SIN o DES + R lancia il cubo
- L tenuto premuto mira a otto direzioni
- SIN o DES sulla consolle guida la macchina
Come è fatto
Niente libreria standard e niente motore: il gioco scrive direttamente nei registri della macchina. memset è scritto a mano, tre righe, perché il compilatore ne ha bisogno e la libreria non c'è. E il processore non sa dividere, quindi ogni ciclo, ogni cadenza e ogni rampa è una potenza di due o un contatore che si riavvolge: una divisione con un numero qualunque diventerebbe una chiamata a una libreria che non esiste, e il programma non si collegherebbe più.
La grafica non è disegnata in un programma di disegno: è generata. Un gruppo di attrezzi in JavaScript produce le tessere, le tavolozze, le mappe e le tabelle come file C, che poi vengono compilati dentro la cartuccia. Le camere stanno in un file di testo, e c'è un editore che le fa vedere disegnate coi pezzi veri, con i coni di luce, la corsa dei raggi, il tragitto degli ascensori e l'arco del salto, e che al salvataggio ricompila la cartuccia.

i sedici quadri del personaggio: otto di passo, tre di salto, cinque di mira. Le pose del passo non sono disegnate a mano, nascono da una curva.
- versione 0.44.0
- macchina Game Boy Advance · ARM7TDMI, 16,8 MHz
- schermo 240 × 160, 15 bit di colore
- cartuccia 293 KB
- camere 12 finora, in due metà
- una corsa pulita circa 2 minuti e 50
- quadri del personaggio 16
- scritto con C · devkitARM · niente motore, niente librerie
Dietro le quinte
La luce che faceva ombra
Il GBA non ha un motore di luci: ha un sommatore. Come fonde due strati, perché un cono marrone scurisce il muro invece di illuminarlo, e perché mettere gli sprite fra i bersagli li fonde tutti.
leggi →Compila, gira, e non funziona
Una variabile che viveva in ROM, un ramo di codice scritto due volte, tessere che si pestano i piedi, edera che cresce dove non deve e memoria video che finisce senza avvisare. Cinque guasti che non danno nessun errore.
leggi →L'omaggio, e cosa non è
VECTOR è un omaggio a Portal, della Valve. L'omaggio è dichiarato dentro al gioco stesso, nella pagina INFO, col nome dell'originale e di chi l'ha fatto: un omaggio che non nomina l'originale non è un omaggio.
Da Portal prende l'idea: due varchi collegati, la velocità che si conserva, le camere che insegnano una cosa per volta. Non prende niente di materiale: nessun disegno, nessun suono, nessuna musica, nessun testo, nessun personaggio, nessun nome. Non si chiama Portal, non usa il marchio, non usa i personaggi e non pretende di essere collegato alla Valve.
Portal e Valve sono marchi dei rispettivi proprietari. Game Boy Advance è un marchio Nintendo: VECTOR è un programma indipendente per quella macchina, non contiene codice Nintendo e non è approvato né sponsorizzato da Nintendo.
