Data East, 1985
Road Blaster non mescola le scene: ne tiene sedici partite già scritte nella ROM e ne pesca una con un dado. È la terza filosofia del caso che troviamo in casa, e la più avara di tutte — per una ragione di ferro: sedici kilobyte di programma.
Road Blaster ha nove livelli per partita e non li mette in fila a caso uno per uno. Nella ROM ci sono 16 partite già scritte, ognuna di nove voci, e la macchina ne pesca una sola. Gli otto livelli centrali cambiano ordine; il nono — il finale — è sempre ultimo, in tutte e sedici.
| il dado | la partita che tocca | il finale |
|---|---|---|
| 0 | 1 2 3 4 5 6 7 8 | 9 |
| 1 | 2 3 1 5 4 8 7 6 | 9 |
| 2 | 3 8 7 6 2 4 1 5 | 9 |
| 3 | 7 6 3 2 1 5 8 4 | 9 |
| 4 | 8 7 6 1 4 2 5 3 | 9 |
| 5 | 7 1 2 4 3 8 6 5 | 9 |
| 6 | 7 3 8 5 6 1 2 4 | 9 |
| 7 | 8 6 1 4 2 3 5 7 | 9 |
| 8 | 1 2 7 5 3 6 4 8 | 9 |
| 9 | 2 7 3 6 4 5 1 8 | 9 |
| 10 | 3 8 1 7 5 4 2 6 | 9 |
| 11 | 6 1 2 3 4 7 8 5 | 9 |
| 12 | 2 6 7 8 5 1 3 4 | 9 |
| 13 | 1 3 2 7 8 4 5 6 | 9 |
| 14 | 3 7 6 8 5 1 4 2 | 9 |
| 15 | 8 6 3 5 2 4 7 1 | 9 |
⚠ Sono permutazioni vere: in ognuna delle sedici i numeri da 1 a 8 ci sono tutti e una volta sola. Non è un elenco scritto a occhio — è un mazzo mescolato in fabbrica, sedici volte, e poi congelato.
Il sorteggio è sotto un dipswitch che il libretto chiama Random scenes. Spento, il numero resta 0 e la partita è sempre 1 2 3 4 5 6 7 8 9.
LDA $1002 / AND #$40 / BNE salta ; il dip e’ spento? il dado resta 0
JSR $ED25 ; il generatore
LDA $82 / AND #$0F ; un numero da 0 a 15
LDA $EC75,X ; una delle sedici scalette
Il generatore a 0x ED25 non è un orologio né un contatore di monete: è un registro a scorrimento — tre celle che ruotano e si sommano. Gira sempre, e quando serve si guarda dove è arrivato.
È la terza macchina del roster che affronta questo problema, e le tre lo risolvono in tre modi che non si somigliano:
| la macchina | che cosa fa | quanto caso |
|---|---|---|
| Dragon’s Lair europeo (Atari, 1983) | mescola trentasei carte, una per una, mentre sei in attrazione | tantissimo |
| la Sidam (1983) | dello stesso mazzo ne distribuisce diciotto | molto |
| Road Blaster (Data East, 1985) | non mescola: sceglie fra sedici mazzi già fatti | sedici |
⇒ Road Blaster è il più avaro dei tre, e per una ragione di ferro: sedici kilobyte di programma. Mescolare costa codice; scegliere fra sedici liste costa trentadue byte di puntatori.
Nella ROM i copioni sono 10, non nove. Quello numerato 0 ha 18 eventi e 8 mosse, e non compare in nessuna delle sedici partite.
Ma non è codice morto: un JSR $C1B1 a $C036 gli mette il livello a zero e lo fa girare una volta sola, prima del dado. È l’apertura. E nel registro del Campione si vede: il primo salto va al fotogramma 301, il secondo parte dal 644. Undici secondi, e via al primo livello.
⇒ Le sue otto mosse stanno ai fotogrammi 2986–4118, molto oltre il punto in cui la macchina se ne va. Sono scritte, hanno le loro finestre e le loro direzioni, e non le gioca nessuno. → le mosse che invece si giocano stanno qui.
Il dip: bank B bit 6. Il generatore: 0x ED25, rotazioni concatenate di $7F/$80/$81 sommate in $82. La tavola delle sedici scalette: 0x EC75, sedici puntatori a liste di nove voci. La tavola dei copioni: 0x ED54, dieci puntatori — e dal decimo in poi quella tavola è già codice, quindi dieci sono tutti.