Data East, 1985
Le due frecce, il freno, la turbina e il cruscotto intero, ricostruiti dai tre chip grafici tessera per tessera. Più la schermata che la macchina stampa all’accensione, dove c’è il nome di chi l’ha scritta.
Road Blaster tiene i suoi disegni in tre chip da otto kilobyte, e non sono tre disegni diversi: sono tre piani della stessa immagine. Sovrapposti danno, per ogni pixel, un numero da 0 a 7. In tutto fanno 1024 tessere da 8×8, e lo schermo è una griglia di 32×32 caselle con due mappe sovrapposte.
Road Blaster non disegna i suoi cartelli con del codice: li tiene come tavole di sedici tessere, una per cartello, e le copia a schermo con quattro istruzioni. Trovare le tavole vuol dire avere i disegni.




| il cartello | la tavola | la pagina | dove appare |
|---|---|---|---|
| la freccia a sinistra | $C717 | 2 | riga 12, colonna 10 |
| la freccia a destra | $C707 | 2 | riga 12, colonna 18 |
| il freno | $CBB5 / $CBC5 | 1 | righe 25-28, colonna 12 |
| il turbo | $C900 / $C910 | 1 | righe 25-28, colonna 16 |
Le due frecce stanno una per parte del centro e alla stessa altezza: quella a sinistra si accende a sinistra, quella a destra a destra. A sceglierle è il bit 0 del record — lo stesso bit che dice al giudice quale direzione aspettarsi.
Tutti e tre battono sullo stesso orologio (LDA $B4 / AND #$08) e hanno due tavole a testa. Ma le due tavole non fanno la stessa cosa:




Il freno disegna il pedale in tutt’e due: a lampeggiare è solo la parola BRAKE. Il turbo ha la seconda tavola che punta a sedici tessere vuote: appare e sparisce tutto intero.
Non lo disegna il codice pezzo per pezzo: 256 byte a 0x CEC2 sono otto righe per trentadue colonne, più una riga a 0x CFC2. Si rimonta identico — INDICATER scritto male compreso, che è come sta nella ROM.

I due aghi vengono dalla velocità ($4E), la barra in alto è il fiato del turbo ($50, ventitré stati già disegnati: tieni il turbo troppo e si esaurisce), e il riquadro INDICATER è dove compaiono il freno e la turbina.
Cinque righe in chiaro nella ROM, a 0x C14B, stampate sul percorso diretto del reset ($C000 → … → JSR $C11D):
LX5 ROAD BLASTER
VERSION 2.0
COPYRIGHT C 1985 7.13
DATE EAST COPORATION
BY SHINTARO.KUMAGAI
LX5 è la sigla di progetto della Data East. 7.13 è la data in cui il programma è stato chiuso: 13 luglio 1985. E Shintaro Kumagai è chi l’ha scritto — un nome, non una sigla di studio. I due refusi (DATE East, COPORATION) sono suoi.
Nei tre chip c’è solo la forma: per ogni pixel un numero da 0 a 7. Il colore lo mette una tavolozza che sta altrove — e per un pezzo abbiamo creduto che fosse in una pastiglia di memoria che a noi mancava. Non manca: non esiste. Chi ha salvato la scheda nel 2002 ha elencato ogni chip delle due piastre, e una pastiglia di colori non c’è proprio.
La tavolozza è memoria viva, e la riempie il programma: diciassette byte di codice che copiano otto colori da una tavola in ROM — uno per ciascuno degli otto valori che i tre piani sanno comporre.
Subito prima di copiare gli otto, lo stesso pezzo di programma ne riscrive tre pescandoli da tre tavolette di quattro voci. E l’indice non lo sceglie il gioco: lo dà l’orologio — i bit 4 e 5 del contatore dei fotogrammi, quello che si alza di uno a ogni ritorno di quadro.
⇒ I cartelli non lampeggiano soltanto: cambiano tinta. Il lampeggio è il bit 3 dello stesso contatore — ogni otto fotogrammi — e il colore cambia ogni sedici, con un giro completo di sessantaquattro fotogrammi, poco più di due secondi.
Il giorno prima, guardando il suo cabinato, Alan aveva detto due cose che noi non potevamo leggere da nessuna parte: che la freccia è verde, e che il mirino è giallo.
⇒ Verde pieno e giallo pieno sono esattamente le prime voci di due di quelle tre tavolette. Non è una conferma da poco: se avessimo sbagliato a leggere il formato dei colori — che è compresso in un byte, coi bit rovesciati — da lì non sarebbero usciti proprio quei due.
Le immagini di questa pagina restano in scala di grigi, e adesso per un motivo diverso da prima: la tavolozza la sappiamo, ma quale tinta tocchi a quale casella lo decide il gioco mentre corre, scrivendolo in una parte dello schermo che nella ROM non c’è. Per colorarle come le vede chi gioca servirebbe una fotografia della memoria video, non un altro raschio.
Il primo montaggio veniva specchiato, e ce ne siamo accorti solo perché nel cruscotto c’è scritto INDICATER e si leggeva al contrario. Corretto l’asse orizzontale, SPEED veniva 2bEED: mancava ancora il capovolgimento verticale (una S capovolta è un 2, una P è una b).
⇒ Le lettere sono il collaudo della lettura grafica. Una freccia specchiata sembra giusta lo stesso, e ci avremmo creduto. Solo una parola dentro il disegno dice se stai leggendo i bit dal verso giusto. Quando si raschia una grafica, la prima cosa da cercare è un pezzo che contenga del testo.
I tre chip: 05-08.bin, 04-07.bin, 03-06.bin, otto kilobyte ciascuno, pesati 4 / 2 / 1. La regola di lettura è quella che esegue LGL in bega::draw_8x8: bit 0 = pixel più a sinistra, e le righe capovolte (7−y). Le mappe dello schermo: $2800 e $3800, coi due bit alti in $2C00 e $3C00. Le immagini di questa pagina le rifa’ tools/grafica_roadblaster.py, e pesano 1,9 KB in tutto.