BooMfire: il mio programma per il 13° BASIC 10Liner Contest

Quest’anno non sono riuscito a trovare il tempo per realizzare nuovi giochi per il BASIC 10 Liner Contest, così ho ripreso e completato una vecchia idea, su cui avevo iniziato a lavorare qualche tempo fa: ispirato dal programma per MSX sviluppato da Roberto Capuano per l’11a edizione del contest, ho implementato una mia versione del noto effetto DOOM Fire, per ZX Spectrum. Per ottenere un’animazione fluida, ho abbandonato l’interprete Sinclair BASIC dello ZX Spectrum e mi sono affidato al compilatore ugBASIC di Marco Spedaletti. Il risultato è BooMfire, una demo realizzata in 9 linee di codice e candidata per la categoria SCHAU.

Penso che il risultato, che puoi osservare nel seguente video, non sia male:

Video che mostra BooMfire in azione (emulatore Fuse)

All’avvio del programma, viede disegnato il logo “BOOM“, per mezzo un algoritmo simile a quello utilizzato dal Kickstart dei computer Amiga per visualizzare l’immagine di richiesta inserimento floppy disk. Per lo riempimento, non ho utilizzato l’isitruzione PAINT di ugBASIC, ma ho implementato una subroutine che permettesse anche la riproduzione di una musica di sottofondo, per rendere meno noiosa l’attesa. Tale subroutine è basata sulla tecnica ricorsiva descritta nell’articolo A Fast Well-Behaved Pattern Flood Fill di Alvin Albrecht. A proposito di musica, il suono è riprodotto tramite chip AY-3-8912, per cui per apprezzare appieno la demo, non è sufficiente lo ZX Spectrum 48K, ma è necessario un modello avanzato (128K, +2, +3, Next, …).

L’animazione delle fiamme è la mia implementazione dell’effetto originariamente introdotto sulla versione di Final DOOM per Playstation, ovviamente riadattata per il computer Sinclair. L’animazione non lavora a livello di pixel, ma di carattere (8×8 pixel) e, mediante la pressione dei tasti 1, 2, o 3, è possibile simulare tre diversi livelli di sovrapposizione tra le fiamme e la scritta “BOOM“. Questo è stato possibile scegliendo opportunamente i colori di carta e inchiostro nelle tre corrispondenti “tavolozze”.

Puoi provare BooMfire utilizzando l’emulatore online oppure scaricarlo per eseguirlo su un emulatore o su un vero ZX Spectrum semplicemente accedendo alla pagina del progetto su retrobits.itch.io. Se sei interessato ad approfondire il funzionamento di BooMfire, puoi dare un’occhiata alla documentazione, corredata di codice sorgente commentato e inclusa nel download.

Enjoy the SCHAU!

Link e riferimenti

Read in English

Risultati del BASIC 10Liner Contest 2023

Sabato scorso sono stati pubblicati i risultati dell’undicesima edizione del BASIC 10Liner contest, tradizionale competizione a cui si può partecipare realizzando giochi e programmi per computer a 8 bit in sole 10 righe di codice in linguaggio BASIC.

Classifica BASIC 10Liners 2023

Purtroppo quest’anno, a differenza delle passate edizioni, non sono riuscito a entrare nella TOP 10. Infatti, i miei due giochi in gara per la categoria PUR-80, A Day At The Animal Races (ZX Spectrum) e Squash Trainer (ZX81), si sono classificati 16esimo e 27esimo rispettivamente, su 37 concorrenti.

Complimenti in particolare a RAX, che con Thrust 10 e Pacman 10, entrambi per Oric Atmos, si è aggiudicato sia la prima sia la seconda posizione della stessa categoria.

Thrust10 di RAX, per Oric Atmos
Pacman10 di RAX, per Oric Atmos

Sperando di fare meglio il prossimo anno, mi divertirò provando gli altri giochi e in particolare i vincitori!

Versione in Inglese

Un giorno alle corse degli animali

A Day At The Animal Races è una versione per Sinclair ZX Spectrum 16/48K del videogioco di scommesse su corse di animali VIP Animal Race.

A Day At The Animal Races in esecuzione a 14 MHz sullo ZX Spectrum Next (emulato con #CSpect)

Il gioco originale fu sviluppato da Brian Astle per l’interprete CHIP-8 fornito con il computer COSMAC VIP e pubblicato nel RCA COSMAC VIP Game Manual nel 1978. Nel video seguente, puoi osservare il gioco in azione sullo ZX Spectrum Next, grazie a CHIP-OTTO, la macchina virtuale CHIP-8 di mia realizzazione.

VIP Animal Race in esecuzione su CHIP-OTTO per ZX Spectrum Next (emulato con #CSpect)

A Day At The Animal Races è il mio secondo gioco (il primo è Squash Trainer) in gara per la 12a edizione (2023) del BASIC 10 Liner Contest, categoria PUR-80. Puoi scaricarlo o giocare online accedendo alla pagina retrobits.itch.io/animalrace10l. Il download include il listato del programma e la documentazione dettagliata.

Come giocare

Cinque diversi animali gareggiano l’uno contro l’altro e tu hai la possibilità di mettere alla prova la tua abilità nel scegliere il vincitore.

Aspetta che gli animali siano pronti per partire, quindi seleziona un animale e decidi quanto vuoi scommettere (fino a un limite di $9). Al termine della gara, le tue vincite o perdite verranno calcolate e verrà visualizzato il nuovo totale. Puoi vincere il gioco accumulando $256 o più.

Tutti gli animali si muovono all’incirca alla stessa velocità, ma partono da posizioni diverse. Le probabilità di vincita per ogni animale sono correlate alla posizione di partenza ma includono un elemento casuale. Alcune corse favoriscono il giocatore e dovresti scommettere fino al limite. Altre sono sfavorevoli e dovresti scommettere con attenzione.

Gameplay di A Day At The Animal Races
Gameplay di A Day At The Animal Races

Link e riferimenti

Schermata di A Day At The Animal Races
Ho vinto! 🙂
English version

Squash Trainer: BASIC 10 Liner per ZX81

Squash Trainer è un nuovo videogioco di sport/azione per Sinclair ZX81, realizzato per la dodicesima edizione del BASIC 10 Liner Contest. Si tratta di una versione minimale di Pong per un giocatore; puoi vederlo in azione in questo video:

Squash Trainer gameplay video

In base a quanto stabilito dalle regole del contest per la categoria PUR-80, il programma è stato implementato in linguaggio BASIC, in 10 linee di codice, lunghe al massimo 80 caratteri.

Dato che l’interprete BASIC integrato nel computer permette l’utilizzo di una sola istruzione per linea, il programma è costituito da 10 istruzioni. Per aggirare in parte questa limitazione, il programma si avvale di un “trucco”, che consiste nel codificare più variabili all’interno di un’unica stringa. In questo modo, è possibile alterare il valore di più variabili in una singola istruzione.

Il listato BASIC è riportato di seguito; per una spiegazione dettagliata del codice, rimando alla documentazione dettagliata inclusa nell’archivio scaricabile dalla homepage del gioco.

1LET M$="?(X "+CHR$(4*(RND<.5))+"0 ?"
2LET C=(M$(1)="$")*(M$(2)>=M$(8))*(CODE M$(2)-CODE M$(8)<3)
3IF C THEN LET M$(4 TO 7)=" "+CHR$((RND<.5)*4)+STR$(1+VAL M$(6 TO 7))
4LET M$(4)=CHR$((M$(1)>"▀")*CODE M$(4)+4*(M$(1)="▀"))
5LET M$(5)=CHR$((M$(2)>" ")*(M$(2)<"0")*CODE M$(5)+4*(M$(2)=" "))
6PRINT AT CODE M$(1),CODE M$(2);" ";AT14,CODE M$(8);"   "
7LET M$(TO3)=CHR$(CODE M$(1)+CODE M$(4)-2)+CHR$(CODE M$(2)+CODE M$(5)-2)+INKEY$
8LET M$(8)=CHR$(CODE M$(8)+3*(M$(3)="P")*(M$(8)<".")-3*(M$(3)="O")*(M$(8)>" "))
9PRINT AT0,0;M$(6TO7);AT CODE M$(1),CODE M$(2);"▇";AT14,CODE M$(8);"░░░"
10GOTO 2*(M$(1)<"?")+20*((M$(1)="?")+(M$(6TO7)="99")>0)

Sempre sulla pagina dedicata al gioco, è possibile giocare online a Squash Trainer, grazie all’emulatore per browser web (i dispositivi mobili non sono supportati).

Buon allenamento!

Link e riferimenti

English version

Risultati del BASIC 10Liner Contest 2022

Sabato scorso sono stati pubblicati i risultati dell’undicesima edizione del BASIC 10Liner contest, tradizionale competizione a cui si può partecipare realizzando giochi e programmi per computer a 8 bit in sole 10 righe di codice in linguaggio BASIC.

BASIC 10Liner Contest: “volantino” del concorso
BASIC 10Liner Contest: “volantino” del concorso

Analogamente allo scorso anno, ho partecipato per la categoria PUR-80 (massimo 80 caratteri per linea; abbreviazioni consentite) realizzando tre giochi, di cui due per ZX Spectrum (Bastilude, Fishie – Keep the sea plastic free!) e uno per ZX81 (JAMGame – Just Another Memory Game).

Fishie – Keep the sea plastic free! è entrato nella TOP 10, classificandosi 7° su 38 giochi in gara nella categoria PUR-80. Bastilude, nonostante la 25esima posizione, è stato particolarmente apprezzatto dal pubblico, che gli ha accordato il 2° posto nella classifica speciale Public’s Choice. JAMGame, infine, con la sua 18esima posizione si è assestato nella parte media della graduatoria.

Risultati del BASIC 10Liner Contest 2022.
Risultati del BASIC 10Liner Contest 2022 (grazie a Filippo Santellocco per l’immagine con tutti i risultati).
Nella classifica originale, Fishie è erroneamente associato al C64.

Nonostante sperassi in un posizionamento migliore di Bastilude, anche quest’anno posso ritenermi più che soddisfatto dei risultati raggiunti e come al solito ho già qualche idea che spero di poter sviluppare per la prossima edizione.

Ho avuto modo di esaminare o provare pochissimi dei giochi e programmi realizzati dagli altri concorrenti; tra questi ritengo particolarmente degni di nota 8-bit Sunset (vincitore della categoria SCHAU) e STOP THE micro EXPRESS (vincitore della categoria EXTREM-256). Quest’ultimo si avvale di una tecnica molto interessante di utilizzo dell’istruzione LPRINT, che ha consentito all’autore di rendere eccezionalmente fluide le animazioni.

Concludo con un ringraziamento a Gunnar, organizzatore del contest, ai giudici e a tutti i partecipanti!

Link e riferimenti

Read in English