Cimiterius (C64 Milano Club, 1984)

di Andrea Pachetti



Abbiamo parlato brevemente dei listati in linguaggio Basic quando abbiamo analizzato la rivista Special Program e alcuni esempi di pirateria: in questo periodo vorrei estendere un po' il tema, presentando un piccolo videogioco "scritto" dal Commodore 64 Milano Club, un gruppo di utenti che fu molto attivo su questa macchina, riuscendo a pubblicare parecchi listati su varie riviste di settore.

Cimiterius, il gioco in questione, andò a inaugurare la rubrica dei programmi inviati dai lettori di Electronic Games della JCE, che proprio nel numero 9 (settembre 1984) aveva cambiato nome in EG Computer; la rivista andò dunque ad abbracciare il crescente successo degli home computer, dopo essersi occupata esclusivamente di videogiochi per console.

Una delle novità fu appunto la rubrica Listando si impara, che venne introdotta in questo modo: «Listare significa imparare i termini e i metodi di programmazione. Listare è bello perché il risultato è immediato e spesso mostra doti inaspettate del vostro computer di cui forse qualche volta avete messo in discussione la validità».

Il gioco, come si vedrà, è una versione "pirata" di Goodbye Charlie, un type-in per Vic 20, Atari 800 e Commodore 64 scritto da Norman Overpeck e pubblicato sulla rivista americana Compute! nel novembre del 1983; il programma di Overpeck peraltro aveva già avuto anche una pubblicazione ufficiale in Italia, precisamente su Papersoft n. 7 della JSoft, nel luglio del 1984 (due mesi prima dell'uscita su EG Computer).


L'atto di pirateria del C64 Club in questo caso andò a danneggiare addirittura tre soggetti contemporaneamente: 1) la rivista americana Compute!; 2) la JSoft che aveva acquistato legalmente i diritti del listato; 3) la JCE che aveva pubblicato Cimiterius come prodotto originale. Un fatto sicuramente non raro in quegli anni: il numero dei programmi che uscivano sulle varie pubblicazioni era notevole e risultava impossibile controllare tutto. Archiviamo dunque Cimiterius (e il suo divertente nome) come un caso tipico della situazione italiana nei primi anni Ottanta.

In questa scheda viene fornito un link Dropbox al file da usare con emulatore, la descrizione pubblicata sulla rivista e il listato completo, da poter utilizzare con CBM Prg Studio. Addio Charlie! (la versione autorizzata di Goodbye Charlie) è scaricabile da Ready64Cimiterius è stato digitalizzato grazie alle scansioni di alta qualità presenti su Retroedicola Videoludica.


Non è certo cosa di tutti i giorni dover attraversare nel buio più profondo un vecchio cimitero di campagna mentre lampi e tuoni scuotono e illuminano a tratti il cielo. Ma è proprio quello che dovrete fare per poter tornare a casa vostra, con la massima attenzione a tutte le tombe ancora scoperte disseminate per tutto il cimitero, pronte a divenire vostra dimora stabile al primo piede in fallo.

Dopo la consueta pagina grafica di presentazione, compariranno le istruzioni, e vi sarà chiesto il grado di difficoltà con cui vorrete giocare.

Un enorme lampo, seguito dal relativo tuono, scuoterà il vostro schermo e segnerà l'inizio del gioco. Grazie al joystick, nel buio più completo, vi muoverete all'interno del cimitero con non poche difficoltà; sarete aiutati dal fuoco del joystick che provocherà a vostro piacimento dei flash sullo schermo permettendovi di controllare la vostra posizione (e soprattutto quella delle tombe).

Unico inconveniente: il vostro punteggio diminuirà in proporzione al numero di volte che avrete usufruito di questa opportunità.


1 rem**********************************
2 rem***         cimiterius         ***
3 rem**********************************
4 poke53281,12:poke53280,13
5 cl=54272
6 print"{clear}"
7 printtab(10)"{down*10}{black}{reverse on}{space*3}cimiterius{space*3}{reverse off}"
9 rem           c=64 milano club
10 fora=1024to1063:pokea,43:pokea+cl,1:next
15 fora=1063to2023step40:pokea,43:pokea+cl,1:next
25 fora=2023to1984step-1:pokea,43:pokea+cl,1:next
30 fora=1984to1024step-40:pokea,43:pokea+cl,1:next
32 fori=1to2800:next
34 poke53281,0:poke53280,0
35 print"{cyan}{clear}{down*2}{space*2}e' una tetra, fredda e buia notte."
36 print"voi, per tornare a casa, dovete at-"
37 print"traversare il cimitero del paese men-"
38 print"tre un violento temporale con i suoi"
39 print"lampi illumina a tratti la strada"
40 print"che state percorrendo."
42 print"per non cadere nelle tombe scoperte"
43 print"voi dovrete sfruttare i lampi"
44 print"{down*3}{gray}{space*2}istruzioni ? s/n"
45 geta$:ifa$=""then45
46 ifa$="n"then90
48 print"{clear}{down*2}"
50 print"{down*2}{gray} posizionate il joystick nella porta 2"
65 print"{down*3}{space*4}premi il bottone {red}fire button{gray}";
70 print"{right}per{space*7}{down}un lampo";
72 print" per illuminare la strada, "
75 print"ma bada che ogni volta calera' il pun-"
77 print"teggio!!!"
80 print"{down*2}{white}{space*5}premi {reverse on}return{reverse off} per continuare"
85 geta$:ifa$<>chr$(13)then85
90 print"{white}{clear}{down*3}{space*8}grado di difficolta'?":sc=0:c=30720
91 printtab(12)"{down*2}{yellow}1 {purple}2 {light green}3 {light blue}4 {cyan}5"
92 geta$:ifa$<"1"ora$>"5"then92
93 ifa$="1"thenz=55:cu=2012:df=.2
94 ifa$="2"thenz=80:cu=2016:df=.25
95 ifa$="3"thenz=110:cu=2006:df=.3
96 ifa$="4"thenz=130:cu=2019:df=.35
97 ifa$="5"thenz=160:cu=2002:df=.4
98 gosub200:gosub5000:gosub200:gosub5000:print"{clear}":goto410
100 print"{clear}"
105 printtab(25)"NN"
110 printtab(23)"NZNN"
115 printtab(22)"NNMN"
120 printtab(19)"NZNN"
125 printtab(18)"NNMN"
130 printtab(17)"NN"
135 printtab(16)"NN"
140 printtab(16)"z"
145 printtab(15)"N"
146 print"{clear}":return
148 print"{clear}":printtab(25)"NN"
150 printtab(23)"NzNN"
152 printtab(22)"NNMN"
155 printtab(19)"NzNN"
160 printtab(19)"NMN"
162 return
165 print"{clear}":printtab(25)"NN"
170 printtab(23)"NzNN"
175 printtab(23)"NMN"
178 return
180 print"{white}"
200 print"{white}":fort=1to3:gosub165:forr=1to30:nextr,t
205 fort=1to3:gosub148:forr=1to30:nextr,t
210 fort=1to9:gosub100:next
222 poke649,1
225 fort=1to9:poke53281,3:poke53281,1
227 poke53281,0:next
230 rem rumore
238 return
410 fork=1toz
415 x=int(rnd(1)*880)+1144
420 pokex,97:pokex+cl,0:next
425 pokecu,15:pokecu+cl,1:pokecu-40,32:pokecu+1,40:pokecu-1,40
430 fort=1024to1184:poket,32:next
435 fort=1024to1062:poket,35:poket+cl,3:next
440 poke1044,32
442 gosub800:sc=sc+(int(sc/10))
445 ifpeek(56320)=127then445
446 ifpeek(1044)=15then700
447 poke649,1
450 if(peek(56320)and1)=0then500
455 if(peek(56320)and4)=0then520
460 if(peek(56320)and8)=0then540
465 if(peek(56320)and2)=0then560
470 if(peek(56320)and16)=0thengosub800
475 goto445
500 ifpeek(cu-40)=97then600
505 ifpeek(cu-40)=35thencu=cu+40
515 pokecu,32:cu=cu-40:pokecu+cl,1:pokecu,15:sc=sc+10:goto445
520 ifpeek(cu-1)=97then600
525 pokecu,32:cu=cu-1:pokecu+cl,1:pokecu,15:sc=sc+10:goto445
540 ifpeek(cu+1)=97then600
545 pokecu,32:cu=cu+1:pokecu+cl,1:pokecu,15:sc=sc+10:goto445
560 ifpeek(cu+40)=97then600
565 pokecu,32:cu=cu+40:pokecu+cl,1:pokecu,15:sc=sc-10:goto445
600 print"{clear}{down*2}{red}"
605 printtab(15)"{down*4}r.i.p."
610 gosub230
615 printtab(11)"{purple}{space*8}amico frettoloso!"
620 fort=1to2500:next:print"{down*2}{right*11}giochi ancora? s/n"
625 geta$:ifa$=""then625
628 ifa$<>"s"anda$<>"n"then625
630 ifa$="s"then90
640 print"{clear}"
645 printtab(13)"{red}{down*3}{space*2}cimiterius{space*3}"
650 end
700 print"{clear}{down*2}score=";int(sc*df)*10
710 poke53281,12:print"{down*7}{right*12}sei a casa !!!"
720 print:print"{right*13}sei prudente!"
730 fort=1to2500:next:print"{down*4}{right*13}un nuovo gioco? s/n"
735 geta$:ifa$=""then735
740 ifa$="s"thenpoke53281,0:goto90
745 goto640
800 sc=sc-(int(sc/10))
805 fort=1to4:poke53281,7:ford=1to70:nextd:poke53281,0:next:gosub225:goto5000
5000 s=13*4096+4*256
5010 fort=stos+24:poket,0:next
5020 pokes+24,15
5030 pokes+5,16*1+10:pokes+6,16*5+11
5040 pokes+1,80:pokes,80
5050 pokes+4,129:fort=1to300:next:pokes+4,128
5060 return

Commenti

  1. http://ready64.org/giochi/scheda_gioco/id/5452/guerra-nella-foresta
    Sono recidivi

    RispondiElimina

Posta un commento