Oggi sulle pagine di Retro Village parliamo di Cross Chase, il progetto multipiattaforma retrò. Si tratta di una idea innovativa, con una formula molto particolare mai vista prima. Il concetto più importante del gioco è uno: lo stesso codice riproduce il gioco per tutte le macchine ad otto bit. Come è possibile tutto questo? Grazie ai cross compilatori ed allo speciale framework ideato dall’autore del gioco che astrae l’hardware.
Non si tratta dunque di un centinaio di port di un gioco ma tutte le versioni generate contemporaneamente. Il progetto è quindi ben diverso da quelli delle scene perché non si studia solo l’hardware specifico ma si cerca in ogni modo di astrarre l’hardware.

CROSS CHASE
Un gioco ed un progetto multi-sistema estremo di Fabrizio Caruso
L’AUTORE
Fabrizio Caruso è uno sviluppatore software ed entusiasta collezionista di retrocomputer. Ne possiede circa ottanta di svariate marche dai più comuni Commodore 64, Vic 20, Commodore 16 o Sinclair ZX Spectrum ad alcuni modelli meno comuni come il Mattel Aquarius, il Commodore 116, Matra-Hachette Alice, etc.
Fabrizio è particolarmente interessato all’era 8-bit, cioè il periodo che va dalla fine degli anni 70 e l’inizio degli anni 90.
IL PROGETTO
CROSS CHASE è il progetto personale di Fabrizio il cui scopo è creare un gioco con grafica e sonoro semplice ma anche divertente da giocare e che possa girare su “tutti” i computer 8-bit e buona parte delle console, console-computer ibridi e handheld ad 8 bit dell’epoca 8-bit. Qui “tutti” significa letteralmente qualunque home computer 8-bit tra la fine degli anni 70 e fine anni 80 con abbastanza memoria RAM e per il quale esista un cross compilatore ANSI C.
Il progetto è open source e può essere seguito sulla pagina ufficiale GitHub al seguente LINK. L’autore mette a disposizione anche i binari già pronti per più di 60 computer (nella sezione release).
LA NASCITA DEL PROGETTO NEL 2017
L’idea nacque nove mesi fa, nel mese di aprile 2017, con la scoperta del toolkit di sviluppo CC65 ( che trovate al LINK ) per sistemi basati su CPU 6502 e suoi derivati, tra questi ad esempio Commodore 64, Commodore 16, Commodore Vic 20, Atari 400/800 e NES. Questo toolkit mette a disposizione un linguaggio comune (ANSI C) e alcune API per diversi computer e console. L’autore ha cominciato modificando il classico esempio “hello world” che viene fornito e dopo più di 1200 commits (modifiche) si è ritrovato con un gioco arcade completo che gira si un centinaio di sistemi totalmente diversi e incompatibili tra loro. Chiaramente CC65 non sarebbe bastato per coprire tutti i sistemi 8 bit. Fabrizio Caruso ha quindi dovuto usare altri toolkit simili come Z88DK (che trovate al LINK ) per i sistemi basati su CPU Z80 (come il Sinclair Spectrum, lo standerd MSX, Amstrad CPC, etc.) e WinCMOC e CMOC (visibile al LINK per i sistemi basati su CPU 6809 (come Dragon 32/64 e CoCo 1/2/ 3).
IL GIOCO
L’idea del gioco è totalmente originale: sei inseguito da dei nemici che puoi fare fuori facendoli schiantare contro delle mine che vede solo il giocatore o sparando contro loro se riesci ad ottenere una pistola. Esistono 10 diversi power-up che danno poteri speciali. Alcuni dei quali sono nascosti e vanno scoperti compiente specifiche operazioni (esempio: colpire o uccidere il teschio, etc.). L’autore non si è ispirato a nulla ma ha scoperto in seguito che esistono giochi simili. Il più simile è Robots, che è incluso in Gnome. La differenza maggiore sta nel fatto che Robots è turn-based mentre il suo gioco è un titolo d’azione. Altra differenza importante è l’uso della pistola nel gioco che serve a distruggere alcuni ostali e nemici speciali.

SISTEMI SUPPORTATI
Il gioco supporta in principio tutti i sistemi a 8 bit comprese svariate configurazioni di memoria e video. Per il momento l’autore può confermare il funzionamento per una settantina di sistemi. Aggiungendo in continuazione nuovi sistemi di cui, in seguito, forniamo una lista parziale.
TRE VERSIONI
Lo stesso codice del gioco produce tre diverse varianti del gioco che sono più o meno complete in maniera tale da poter girare su hardware anche molto limitati (anche soli 8k di RAM).
Versione FULL (versione completa del gioco)
– Luxor ABC80 32k
– Jupiter Ace 16k
– Apple //c
– Apple ][e
– Mattel Aquarius 16k
– Atari 5200 (console)
– Atari 400/800 (color low resolution)
– Atari 400/800 (high resolution)
– Tangerine Atmos and Oric 1 48K
– Commodore 128 (native 40 column mode)
– Commodore 128 (native 80 column mode)
– Commodore 16/116/+4 (32k min)
– Commodore 64
– Commodore CBM 510
– Commodore CBM 610
– CoCo 1/2/3 and Dragon 32/64 (multiple versions)
– Amstrad CPC
– Galaksija 22k
– Gamate (console)
– Lambda 8300 16k
– CCE MC-1000 48k
– MicroBee
– MSX 32K (cassette and rom version)
– MTX
– Nascom computer series 32k
– NES (console)
– Ohio Scientific 1P 32k
– Philips P2000
– PC-6001 32K
– Commodore PET 16k
– Sam Coupe
– Sharp MZ series
– Sinclair Spectrum 48K
– Spectravideo SVI 328
– VG-5000 with 16k expansion
– Vic 20 with 16k expansion
– VZ 200 family (Vtech Laser 200/310 and VZ 200/300) with 32K
– Robotron Z 9001 32k
– Sinclair ZX80 with 16k expansion
– Sinclair ZX81 with 16k expansion
Versione LIGHT (aggiunta di power-up ed il teschio, da uccidere con pistola)
– Luxor ABC80 16k
– Atari 400/800 (high resolution)
– Commodore 16/116 (unexpanded)
– CCE MC-1000 16k (unexpanded)
– MSX 16k
– Nascom computer series 16k
– Oric 1 16k (unexpanded)
– Philips P2000 16k (unexpanded)
– Spectravideo 318 16k (unexpanded)
– VG-5000 16k (unexpanded)
– Vic 20 with 8k expansion
– VZ 200 family (Vtech Laser 200/310 and VZ 200/300) with 16K
– Robotron Z 9001 16k
Versione TINY (nemici semplice e mine)
– Creativision (computer/console hybrid) 8k ROM version
– Ohio Scientific 1P 8k
– Commodore PET 8k
– Sinclair Spectrum 16k (unexpanded)
– Commodore Vic 20 with 3k expansion
Come è possibile con lo stesso codice? Si chiederanno i lettori. Questo è possibile per tre motivi:
1. Utilizzo di ANSI C che è un linguaggio universale che è ricompilato da vari cross-compilatori per produrre lo stesso gioco su sistemi diversi.
2. La creazione dei livelli di astrazione nel codice così da poter inserire del codice specifico per vari hardware senza modificare il codice del gioco.
3. Uso di meta-codice per selezionare le porzioni di codice che servono per ogni sistema.
I COLLABORATORI DEL PROGETTO
Per essendo un progetto personale, Fabrizio Caruso è stato aiutato da diverse persone.
In particolare da Stefano Bodrato che è uno dei principali sviluppatori di Z88DK.
Fabrizio Caruso è anche stato aiutato da alcuni membri di varie “scene” 8-bit, in particolare da Simon Jonassen che sviluppa per CoCo e Dragon. Il progetto vede partecipare anche Christian Groessler, sviluppatore CC65, per aver dato alcuni consigli sui sistemi Atari.