Un giorno alle corse

Non mi riferisco all’album dei Queen A day at the Races o al film dei Fratelli Marx, ma a VIP Animal Race. Si tratta di un divertentissimo gioco per CHIP-8, programmato da Brian Hastle. Cinque animali diversi gareggiano l’uno contro l’altro e devi scommettere su quello vincente. Di solito non mi piace giocare d’azzardo, ma oggi ho fatto un’eccezione 🙂

VIP Animal Race in esecuzione su CHIP-OTTO
VIP Animal Race in esecuzione su CHIP-OTTO (ZX Spectrum Next)

Quando, all’inizio degli anni ’90, furono realizzati gli interpreti CHIP-48 e SUPER-CHIP per la calcolatrice grafica HP 48SX, furono introdotte alcune incompatibilità (spesso indicate come quirks) rispetto all’interprete originale CHIP-8. Quindi, alcuni giochi non girano correttamente su molti interpreti moderni, la cui implementazione è basata sulla documentazione di SCHIP. VIP Animal Race è uno di questi. Puoi trovare maggiori dettagli in alcune discussioni online (vedi ad esempio questa issue di Kiwi8).

Oggi, ho finalmente superato questo problema in CHIP-OTTO, il mio interprete CHIP-8 / SCHIP per ZX Spectrum Next, introducendo una nuova configurazione chiamata Legacy compatibility flags. Impostando alcuni flag nell’apposita maschera di bit nel file di configurazione del gioco, è possibile modificare il modo in cui l’interprete esegue alcuni opcode; in particolare:

  • Bit 0: operazioni di shift (codici operativi 8xy6, 8xyE):
    • 0: Vx è shiftato
    • 1: Vy è shiftato e il risultato viene memorizzato in Vx
  • Bit 1: operazioni di caricamento / memorizzazione (codici operativi Fx55, Fx65):
    • 0: I è incrementato (I = I + x + 1)
    • 1: I non è incrementato
  • Bit 2: overflow della memoria nel codice operativo Fx1E
    • 0: se I > 0xFFF, VF è impostato a 1; altrimenti a 0
    • 1: VF non viene alterato

Quindi, oggi sono stato finalmente in grado di eseguire VIP Animal Race in CHIP-OTTO, come puoi vedere in questo video :

Una partita a VIP Animal Race con CHIP-OTTO (ZX Spectrum Next, emulatore #CSpect)

Puoi scaricare liberamente la tua copia di CHIP-OTTO aggiornata, che include la configurazione per VIP Animal Race, dalla pagina del progetto su itch.io: retrobits.itch.io/chip-otto.

Gioca responsabilmente!

Read in English

Il cerchio in BASIC (C64 vs. ZX Spectrum)

Mi scuso anticipatamente con gli amici Commodoriani e preciso che non ho alcuna intenzione di soffiare sul fuoco della quarantennale flame war che vede contrapposti i fan di Commodore 64 e ZX Spectrum, ma solo di strappare una risata a tutti gli appassionati di retrocomputing! 😄

Non appena ho visto questo meme, che ha come protagonista il simpaticissimo Khaby Lame, mi è immediatamente sovvenuta l’ispirazione per questa idea, che ironizza sulla difficoltà di disegnare un cerchio con il Commodore 64 utilizzando il BASIC, mentre sullo ZX Spectrum è sufficiente una sola istruzione (circle).

A parte lo scherzo, consiglio caldamente la lettura dell’articolo Very basic BASIC: drawing circles the old way (C64), da cui è tratto il listato raffigurato nell’immagine.

E, comunque, è meglio lo Spectrum! 😜

Rilasciato Project: RE.VE.LA.TION (ZX Spectrum)

Project: RE.VE.LA.TION: schermata di caricamento.
Project: RE.VE.LA.TION: schermata di caricamento.
Immagine adattata da “Earthrise” (Apollo 8). Font: Nasalization by Typodermic.

Pochi giorni fa, la NASA ha annunciato la sua partnership con SpaceX per far atterrare i prossimi astronauti sulla Luna. Dato che avranno sicuramente bisogno di un sistema di controllo dell’atterraggio e di un simulatore, quale momento migliore per riprendere in mano Project: RE.VE.LA.TION! 😉

Project: RE.VE.LA.TION: razzo atterrato in sicurezza.
Project: RE.VE.LA.TION: razzo atterrato in sicurezza.

Project: RE.VE.LA.TION (REmote VErtical LAnding rocket control staTION) è un videogioco in stile Lunar Lander per Sinclair ZX Spectrum. Lo scopo del gioco è controllare la discesa del razzo, modificandone spinta e orientamento, per consentirgli di raggiungere in sicurezza la piattaforma di atterraggio, evitando di sbattere contro gli ostacoli e di posarsi sula piattaforma stessa a una velocità troppo elevata. La quantità disponibile di carburante è limitata, per cui è essenziale evitare gli sprechi!

Project: RE.VE.LA.TION: video del gameplay

Inizialmente ho realizzato Project: RE.VE.LA.TION per il Lander Challenge, organizzato dal gruppo RetroProgramming Italia. Il gioco è stato sviluppato principalmente in linguaggio C e compilato con z88dk, utilizzando la libreria sprite software SP1 e gli effetti sonori BeepFX. Purtroppo, per mancanza di tempo la versione presentata al concorso aveva solo due livelli e mancava la configurazione dei controlli.

Project: RE.VE.LA.TION: uno dei nuovi livelli.
Project: RE.VE.LA.TION: uno dei nuovi livelli.

Finalmente, dopo più di un anno, ho ripreso il progetto e, dopo alcune prime rielaborazioni, ho aggiunto il menu con le opzioni ed alcuni livelli. Per velocizzare lo sviluppo, per il design dei nuovi livelli ho fatto ricorso a Tiled; anche se non l’avevo mai utilizzato prima, ho apprezzato molto la sua facilità d’uso e immediatezza, almeno per le mie esigenze.
Quindi, ho rapidamente programmato un tool .NET a riga di comando per convertire le mappe create con Tiled in un file di codice sorgente assembly, da incorporare nel progetto. Il parser fornito dalla libreria NTiled ha reso questa operazione estremamente semplice.

Project: RE.VE.LA.TION: editing dei livelli con Tiled.
Project: RE.VE.LA.TION: editing dei livelli con Tiled.

Sebbene ci sia ancora molto margine di miglioramento (ad esempio, vorrei introdurre un formato compresso per consentire di memorizzare più mappe di livello e aggiungere musica di sottofondo), penso che il risultato ottenuto fino ad ora sia piacevole; è quindi giunto il momento di rilasciare la prima la versione!

Come al solito, il progetto è ospitato su itch.io e puoi sia scaricare Project: RE.VE.LA.TION che giocare online nel tuo browser web. Ogni feedback è benvenuto!

Buon allunaggio!

English version

Project: RE.VE.LA.TION: una curiosa coincidenza

Qualche giorno fa, ho finalmente deciso di darmi da fare per portare a termine lo sviluppo di Project: RE.VE.LA.TION (REmote VErtical LAnding rocket control staTION), un videogioco in stile Lunar Lander per ZX Spectrum.

Project: RE.VE.LA.TION: Schermata di caricamento
Project: RE.VE.LA.TION: Schermata di caricamento

Avevo originariamente ideato questo gioco per il Lunar Lander Challenge, organizzato dal gruppo RETROPROGRAMMING ITALIA. Purtroppo nel Dicembre 2019, poco dopo la fine del contest, ho dovuto accantonare lo sviluppo. Tuttavia, dato che mi spiacerebbe vanificare il lavoro precedentemente svolto, cercherò, compatibilmente con gli altri progetti in cantiere, di realizzarne una versione completa.

Immediatamente dopo aver preso questa decisione, con grande sorpresa mi sono imbattuto nella notizia degli accordi tra NASA e SpaceX per il nuovo lander lunare, nell’ambito del programma Artemis… quale tempismo migliore!

Rappresentazione artistica del lander lunare Starship della SpaceX per il programma Artemis (fonte: SpaceX)
Rappresentazione artistica del lander lunare Starship della SpaceX per il programma Artemis (fonte: SpaceX)