Barriers: un completo restyling di Shuttle Escape per C64

Introduzione

Ecco un altro dei miei vecchi programmi che, in tempi recenti, sono riuscito a recuperare e a divulgare tra gli appassionati del Commodore 64. Questa volta, però, la paternità del programma in questione non è esclusivamente mia: Barriers è basato sul codice di Shuttle Escape di Eric Brandon, un gioco molto semplice che, in Italia, apparve sotto forma di type-in su varie pubblicazioni del Gruppo Editoriale Jackson con i nomi di Shuttle In Fuga e Labirinto Rotante (il programma originale Shuttle Escape venne pubblicato nel 1983 da COMPUTE! Pubblications Inc. ed è facilmente reperibile su Gamebase64.com, per coloro che volessero fare un confronto diretto). Lo scopo del gioco è pilotare la vostra navicella dal margine sinistro dello schermo a quello destro, attraversando una serie di barriere nelle quali periodicamente si aprono dei varchi. L’energia a vostra disposizione diminuisce sia che la navicella si muova o no, e ogni volta che si raggiunge il margine destro dello schermo essa viene incrementata di un valore inversamente proporzionale al tempo impiegato ad effettuare la traversata. Se la navicella entra in collisione con le barriere o con i nemici che pattugliano i corridoi, l’energia diminuisce ad un ritmo drasticamente maggiore. È possibile aumentare la velocità di scorrimento dei varchi tenendo premuto il pulsante fire: questo è utile nel caso in cui uno dei nemici decida di posizionarsi troppo vicino ad un’apertura impedendovi di passare, ma al tempo stesso comporta un maggiore consumo di energia, per cui è una funzione da usare solo in caso di vera necessità, ovvero nei livelli avanzati, nei quali appaiono meno varchi.

Come ho già detto, il listato di Shuttle in Fuga/Labirinto Rotante apparve su più libri e riviste del Gruppo Editoriale Jackson. Nella fattispecie, lo trovai nel libro “Grafica e Suono per il C64, C128, C64 Personal Computer“, che acquistai nel 1990. A voler ben vedere, non era un libro vero e proprio, ma una raccolta di articoli e listati pubblicati negli Stati Uniti da COMPUTE! e tradotti in italiano. Il tomo era corredato anche da un floppy disk che però, crudelmente, conteneva solo i programmi relativi ai listati più corti, e Shuttle in Fuga non era certamente tra questi. Correva il 1992, e dopo aver digitato il lunghissimo listato in preda alla noia più assoluta (si trattava di uno di quei programmi composti per il 90% da interminabili linee DATA di linguaggio macchina) e aver constatato quanto il risultato finale fosse spartano, decisi di provare a migliorarlo. Purtroppo sarei potuto intervenire solo sulle parti scritte in BASIC, poiché ero totalmente ignorante in fatto di linguaggio macchina, ma feci del mio meglio per conferire al programma un aspetto più gradevole e funzionale, cercando di aumentare la sensazione che si avesse a che fare con un prodotto in stile arcade. Shuttle Escape era piuttosto grezzo nel comparto grafico, inoltre in caso di game over il programma terminava semplicemente con un’istruzione END, ma dobbiamo tener presente che si trattava di un programma concepito nel 1983, inoltre i type-in sono sempre stati ridotti all’osso al fine di risparmiare spazio, era poi compito dell’utente finale cercare di migliorarli secondo i propri gusti e le proprie esigenze.

Le modifiche

La prima modifica che andava necessariamente apportata era velocizzare il processo di lettura delle numerose linee DATA, che nel programma originale richiedeva addirittura 150 secondi, decisamente troppi per un gioco così semplice. Per prima cosa eliminai i vari checksum (che servivano a stabilire se l’utente aveva commesso degli errori in fase di digitazione), quindi utilizzai dei cicli FOR…NEXT ad hoc (molto più efficenti delle variabili ad incremento usate nel listato originale), infine feci ricorso al classico trucchetto di eliminare tutti gli 0, che nelle istruzioni DATA possono essere omessi. Con questi semplici accorgimenti, l’attesa prima di iniziare il gioco diminuì sensibilmente, passando da 150 a 16 secondi.

Un’altra cosa che ero in grado di migliorare era l’aspetto grafico. Shuttle Escape faceva uso di sprites monocromatici: la navicella del giocatore era lo Space Shuttle, e vi era un unico tipo di nemico, un oggetto simile ad una mina spaziale. Decisi di disegnare nuovi sprites in modalità multicolor, aggiungendo più tipi di alieni. Per creare gli sprites mi servii di Sprite Machine della Anirog, un editor eccellente per uno come me che aveva sempre operato solamente in BASIC, dato che mi permetteva di salvare direttamente le linee DATA da usare nei miei programmi, una caratteristica davvero unica nel suo genere. Per chi fosse interessato, Sprite Machine è contenuto nel numero 29 della rivista Commodisk, il cui dump è scaricabile dal sito Ready64.org nella sezione Download Riviste. Al momento in cui scrivo, purtroppo, le scansioni della relativa rivista (contenenti le indispensabili istruzioni d’uso) non sono ancora disponibili, ma potrebbero diventarlo in futuro. Mi piacerebbe poter essere d’aiuto in questo senso, ma il fascicolo che era in mio possesso è andato perso molti anni fa, tuttavia ricordo ancora la maggior parte dei comandi.

Infine, provai a modificare anche alcuni aspetti funzionali. Shuttle Escape proseguiva all’infinito sempre nel medesimo playfield, senza alcuna variazione, mentre io volevo quantomeno che il gioco fosse suddiviso in più livelli, possibilmente di difficoltà crescente. Il cambio di livello sarebbe avvenuto raggiungendo una determinata quota di energia. Come ho già detto, non potevo intervenire sul linguaggio macchina, ma solo sulle parti scritte in BASIC, e l’unico punto il cui la routine LM veniva interrotta era in caso di esaurimento dell’energia e conseguente game over, eseguendo un controllo sulla locazione di memoria 2. Manipolando opportunamente tale locazione, sfruttai quel punto di controllo sia per il game over che per il cambio di livello. Barriers conta 9 livelli, ognuno con un diverso schema cromatico e un diverso tipo di alieni e, a differenza di Shuttle Escape, può essere portato a termine. La difficoltà aumenta di livello in livello, dato che i varchi nelle barriere diventano sempre meno numerosi: fortunatamente, il meccanismo che determinava la frequenza dei varchi era regolato da istruzioni BASIC, altrimenti non avrei potuto modificare questo aspetto. La diminuzione del numero dei varchi comporta anche l’utile effetto collaterale dell’incremento della velocità del gioco, contribuendo ad aumentarne la difficoltà complessiva.

Ovviamente dotai Barriers di una nuova presentazione, termine con il quale non intendo solamente la schermata introduttiva, ma il modo in cui il programma è stato “confezionato”: dal titolo alla conclusione, passando per le istruzioni e le intermissioni tra un livello e l’altro. Mi sarebbe piaciuto inserire altre cose, come ad esempio degli sprites raffiguranti esplosioni, un maggior numero di effetti sonori e una schermata finale più elaborata, ma mi accorsi che ulteriori aggiunte andavano a sovrascrivere i dati degli sprites già utilizzati corrompendoli irrimediabilmente, per cui dovetti rinunciare. Infatti i dati degli sprites, il set di caratteri rilocato, le variabili e il programma BASIC devono risiedere in soli 16 Kb, dato che quella è la quantità massima di memoria che il chip VIC-II può indirizzare.

In conclusione

Per quanto Barriers abbia un aspetto più gradevole del suo progenitore, le dinamiche di gioco vere e proprie sono rimaste le stesse di Shuttle Escape, per cui la solfa, in definitiva, è sempre quella: un semplice gioco in cui bisogna evitare ostacoli e nulla più, nel quale la noia subentra abbastanza in fretta. Nonostante questo, e sebbene non si tratti di qualcosa che creai da zero con le mie sole forze, non posso negare che lavorare a Barriers fu una delle mie esperienze di programmazione più divertenti. In precedenza mi era già capitato di creare semplici giochi in BASIC che facevano uso di sprites, ma nessuno di essi aveva la velocità e la fluidità che solo delle routines in liguaggio macchina possono garantire.

Download del gioco

A questo link è possibile scaricare il file D64 zippato del gioco. Buon divertimento!

Andrea Rosa:
Related Post
Leave a Comment