PhenomaLaserdisc Rom Atlas

Gli interruttori che nessuno doveva toccare

Otto programmi del roster, setacciati uno per uno

Gli interruttori che nessuno doveva toccare

In tre di queste macchine, tenendo premuti tre comandi insieme, le vite smettono di calare. Non è un difetto e non l’ha inventato un giocatore: è codice scritto in fabbrica, e si trova cercando la sua forma.

Dei trucchi dei giochi laserdisc si racconta molto, e quasi niente porta un indirizzo. Questa pagina non li raccoglie: li cerca nei byte, con un setaccio che riconosce il meccanismo. Quello che il setaccio non trova, qui non c’è.

La forma del trucco: sette istruzioni

Il meccanismo è sempre lo stesso, e sta tutto in un pugno di istruzioni. Questa è la versione di Dragon’s Lair, e le altre le riconoscerete:

16AD  21 0A A0  LD HL,A00A     la cella del flag
16B0  CB 86     RES 0,(HL)     di regola spento
16B2  3A 08 C0  LD A,(C008)    il byte GREZZO dei comandi
16B5  FE EA     CP EA          ★ la combinazione, in un confronto
16B7  20 0B     JR NZ,16C4     non è lei: si prosegue
16B9  CB C6     SET 0,(HL)     ★ è lei: alza il flag

E da un’altra parte, dove le vite calano, quel flag fa saltare il decremento. Tutto qui.

Non è una sequenza: è un confronto

Non c’è niente da imparare a memoria e niente da fare a tempo. La ROM guarda il byte grezzo dei comandi e lo confronta con un numero: o in quell’istante stai tenendo premuti esattamente quei tre, o non succede nulla. È per questo che un trucco così si può cercare: ha una forma, e la forma si setaccia.

Il setaccio, passato su tutto il roster

Otto programmi, cercati uno per uno con lo stesso filtro — senza sapere in anticipo né la cella, né la porta, né la combinazione: quelle si leggono da quello che si trova.

giocomacchinail setaccio trovache cosa tenere premuto
Dragon's LairF2 · Cinematronics 1983★ sìCP EA a 16B5su + sinistra + il pulsante
Dragon's Laireuropea · Atariniente
Dragon's Lairitaliana · Sidamniente
Space AceA3 · Cinematronics 1984★ sìCP E9 a 175Cgiù + sinistra + il pulsante
Space Aceeuropea · Atari★ sìCP E9 a 25A9giù + sinistra + il pulsante
Super Don Quix-oteUniversal 1984niente
Super Don Quix-otea scene corteniente
Esh's AurunmillaFunai 1984niente

Tre su otto. E sono tutti e tre lo stesso trucco: stessa forma, stessa cella del flag, stessa idea. Chi ha scritto Dragon’s Lair e chi ha scritto Space Ace, in quella stanza, facevano la stessa cosa.

Che cosa tenere premuto, e perché

Il byte dei comandi è attivo-basso: un comando premuto mette il suo bit a zero. Quindi la combinazione si legge dal numero del confronto, guardando dove sono gli zeri.

bit01234
comandosugiùsinistradestrail pulsante
EA01010
E910010

Dragon’s Lair: SU + SINISTRA + SPADA
Space Ace: GIÙ + SINISTRA + FUOCO

⇒ Fra le due cambia un gesto solo: su invece di giù. Stessa sinistra, stesso pulsante. Nel byte sono due i bit che si muovono, perché uno si alza e l’altro si abbassa.

⚠ Il cancello: il flag viene guardato solo se il nodo di scena corrente lo permette (BIT 6,(IY+00)). Non è un interruttore valido in ogni istante della partita.

E qui il trucco racconta una storia di geografia

Le due macchine europee sono state fatte in modo diverso, e il trucco lo dice meglio di qualunque confronto: Space Ace se lo è portato dietro, Dragon’s Lair l’ha perso per strada.

  SPACE ACE A3 (USA)            SPACE ACE EUROPEO
  1754  LD HL,A00A            25A1  LD HL,A20A    la RAM, traslata
  1757  RES 0,(HL)              25A4  RES 0,(HL)
  1759  LD A,(C008)            25A6  LD A,(E080)    altra porta
  175C  CP E9                  25A9  CP E9          ★ la stessa
  175E  JR NZ,176B              25AB  JR NZ,25B8
  1760  SET 0,(HL)              25AD  SET 0,(HL)
  1764  EXX                     25B1  EXX
  1765  BIT 6,(IY+00)           25B2  BIT 6,(IY+00)
  1769  JR NZ,1754              25B6  JR NZ,25A1

La stessa routine, istruzione per istruzione. Cambiano due cose e nessuna delle due è una scelta: l’indirizzo in memoria e la porta da cui si leggono i comandi — cioè il ferro, non il gioco.

Mentre in Dragon’s Lair non c’è

Nella ROM europea di Dragon’s Lair il confronto CP EA non compare nemmeno una volta. Né in quella italiana della Sidam.

⇒ È la stessa cosa che si legge dappertutto, quando si confrontano le due traversate: Space Ace in Europa è la macchina americana con la RAM spostata; Dragon’s Lair è un altro programma. Qui lo dice un trucco, che nessuno aveva motivo di riscrivere.

E poi ci sono le leve, che sono un’altra cosa

Il trucco sta nel programma. Le leve stanno sulla scheda, e l’operatore le poteva girare col cabinato aperto: sono documentate nei manuali, non sono un segreto. Ma una di quelle posizioni, nei manuali, di solito non si nomina.

macchinale vite, sulle leve
Dragon’s Lair F2tre / cinque / infinite
Space Ace A3tre / cinque / infinite
Dragon’s Lair europeotre / cinque
Space Ace europeotre / cinque
Super Don Quix-otetre / quattro / cinque / due, e una leva a parte per le infinite

⇒ Le schede americane hanno un interruttore che quelle europee non hanno. E in Super Don Quix-ote quella leva non conta le vite: salta proprio l’istruzione che le fa calare.

⚠ I valori di fabbrica delle leve, qui, vengono dai nostri file di configurazione — per le macchine americane da fonti di terzi, per le europee ricostruiti da noi. La fonte che conta sono i manuali originali, e su quelli il confronto è da fare.

E dove non c’è, ce lo siamo fatto noi

Sulla Dragon’s Lair europea non c’è né il trucco né la leva. Per studiare il mazzo ci servivano partite lunghissime, e allora le vite infinite ce le siamo fabbricate: novantanove, scritte a mano nella cella che le tiene.

E questa è roba nostra, non del 1983

Va detto forte, perché è la differenza fra un atlante e una collezione di voci: tutto quello che sta più in su in questa pagina lo ha messo la fabbrica; questo no. È una nostra addolcitura, dichiarata, e serve a guardare la macchina — non a giocarci meglio.

⇒ Un trucco del 1983 si trova. Il nostro si ammette.

Le carte in tavola

Il setaccio è tools/censimento_trucchi.py: cerca la sequenza LD HL,nn / RES 0,(HL) / LD A,(nn) / CP nn / JR NZ / SET 0,(HL) e riporta le tre parti variabili leggendole dai byte. Le macchine dove non trova niente sono Dragon's Lair (europea · Atari), Dragon's Lair (italiana · Sidam), Super Don Quix-ote (Universal 1984), Super Don Quix-ote (a scene corte), Esh's Aurunmilla (Funai 1984).

Il flag alzato fa saltare il decremento delle vite; il cancello per-nodo è BIT 6,(IY+00). Lo scavo originale, che cercava anche add-vite, add-credito, bonus-life e stringhe nascoste e non ne ha trovati, sta in SCAVO_TESORI.md.