La sorpresa di settembre: una macchina nuova, e VECTOR
A luglio avevo scritto che bolliva in pentola qualcosa di grosso e che non dicevo su quale macchina. Eccola: Game Boy Advance. E non a mani vuote, perché intanto è venuto fuori un gioco: VECTOR, un omaggio a Portal, scritto da zero per quell'hardware.

L'illustrazione di copertina. Non è una schermata di gioco: il GBA ha sedici colori per tavolozza e 240×160 punti, e le schermate vere sono qui sotto.

Le camere costruite finora, tutte insieme. Ognuna insegna una cosa sola e la chiede una volta sola: camminare e saltare, i varchi, il cubo sul pulsante, la torretta, il raggio, le macchine che si muovono.
Diciamolo subito: è una demo. Le camere fatte finora servivano a fare amicizia con il processore e a vedere cosa saltava fuori: sono un inizio, non un traguardo, e ne arriveranno altre. Non è un gioco finito e non finge di esserlo. Però gira, si gioca, e la cartuccia sta in centoseimila byte.
L'idea è quella di Portal, e nient'altro: 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 dentro un varco e dall'altro ne esci sparato. Niente dell'originale è stato usato, nessun disegno e nessun suono: l'omaggio è dichiarato dentro il gioco, nella pagina INFO, col nome dell'originale e di chi l'ha fatto, perché un omaggio che non nomina l'originale non è un omaggio.
Il raggio uccide, si ferma sul primo ostacolo, e si tappa col cubo. L'ascensore non ha bottoni: sale mentre ci stai sopra e scende quando lo lasci.
La macchina. Dopo il 6502 a 8 bit e il 68000 a 16, qui sotto c'è un ARM a 32 bit a 16,8 MHz, e per la prima volta la potenza non è il vincolo principale. Il vincolo è altrove: 240 punti per 160, sedici colori per tavolozza, e soprattutto quanti colori riesci a mettere dentro una tessera di otto punti per otto. Il mestiere sta tutto lì. E il processore non sa dividere, quindi ogni ciclo e ogni rampa è una potenza di due: non è un vezzo, è che una divisione qualunque diventa una chiamata a una libreria che qui non c'è, e il programma non si collega più.
Niente bitmap, come sempre. La grafica non è disegnata in un programma di disegno: è generata. Trentadue attrezzi in JavaScript producono tessere, tavolozze, mappe e tabelle come file C, e le camere stanno in un file di testo con un editore che le fa vedere disegnate mentre le modifichi e che al salvataggio ricompila la cartuccia. Anche il personaggio è generato parte per parte, e le pose del passo nascono da una curva invece che da numeri messi a occhio.
I due muri più istruttivi li ho raccontati per esteso, perché sono la parte che vale davvero: la luce che faceva ombra, cioè come questa macchina fonde i colori e perché un cono marrone scurisce il muro invece di illuminarlo; e compila, gira, e non funziona, cinque guasti che non danno nessun errore, a partire da una variabile che viveva in ROM e non cambiava mai.
La ROM di questa build era la 0.25.0, e girava su emulatore e su hardware vero con una flashcart.
Aggiornamento: da qui il gioco è andato avanti parecchio, e la versione che si scarica è sempre l'ultima. Sono arrivate le dodici camere e la telecamera che scorre, e poi la camminata rifatta. Questo pezzo resta com'era, perché è il racconto di quel giorno.