Chicken – Atari 8bit – Basic

Antic – Anno 1982 – Numero: 01 – Trascrizione: Francesco Fiorentini

A distanza di qualche settimana dall’ultima nostra fatica, siamo a presentarvi questo ennesimo listato preservato dall’oblio. Si tratta di un gioco di un gioco in Basic per Atari 8bit, basato su un concept classico: attraversare la strada senza esser schiacciati dalle macchine.

Il listato originale é apparso sulla rivista americana Antic Numero 1 Volume 1 del 1982.

Titolo: Chicken
Piattaforma: Atari 8bit
Linguaggio: Basic
Versione originale: Stan Ockers – ACE Newsletter
Pubblicazione: Antic numero 1 volume 1
Anno: 1982
Trascrizione: Francesco Fiorentini
Anno: 2022
Download: N/A
Note: Versione funzionante su tutte le macchine Atari 8bit.

Scopo del gioco
Sei una ruspante gallina che, per qualche ragione non ben specificata, deve attraversare una strada incredibilmente trafficata. Probabilmente la gallina si é smarrita e l’unico modo che ha a disposizione per tornare al pollaio é quello di attraversare un’autostrada a 3 corsie per marcia. Le auto sfrecciano incuranti e non si faranno problemi a schiacciare il pollo se questi non si sposta in fretta. Qualcuna suonerá il clacson, ma solo per avvertimento. Effetti sonori carini e un’ambulanza che raccoglierá il cadavere del nostro eroe una volta schiacciato. Si muore una volta che il punteggio scende sotto i 20 punti.
Tasti: freccia sú e giú e CTRL per il FIRE button.

Qui di seguito trovate il codice da copiare sul vostro computer Atari ad 8 bit.
Il codice é pronto per essere copiato su un emulatore, consigliamo Altirra.

Di seguito riportiamo le istruzioni per copiare il listato sull’emulatore Altirra ed eseguire il gioco:
– lanciare l’emulatore Altirra
– avviare il Basic: File -> Boot Image... e selezionare ATARIBAS.ROM (se non l’avete potete cercarla qui)
– copiate il codice sotto riportato
– incollatelo nell’emulatore tramite la funzione: View -> Paste Text
– per velocizzare l’operazione di copia del codice potete usare la funzione: System -> Warp Speed
– terminata l’operazione di copia (disattivate il Warp nel caso, System -> Warp Speed)
– digitare RUN
– il gioco supporta i tasti freccia sú e giú e CTRL per il FIRE button.
– Buon divertimento!

Attenzione – Ci siamo resi conto che nel listato i caratteri ‘>’ e ‘<‘ potrebbero venir sostituiti dai rispettivi encoding html ‘&gt’ e ‘&lt’. Nel caso, sostituite questi valori nel listato prima di copiarlo sull’emulatore.

Listato: Chicken – Atari 8bit – Basic


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
0 REM **ACE NEWSLETTER 3662 VINE MAPLE DRIVE EUGENE, OR 97450**
1 REM **FEB 1982 ISSUE** $10 YEAR**
2 REM *******************
4 REM ** CHICKEN **
6 REM ** S.O. 12-81 **
8 REM *******************
10 OPEN #1,4,0,"K:":DIM L$(20),S$(20),C$(20)
15 ? "INITIALIZING..."
20 REM ** PAGE 6 ROUTINES AND DATA **
40 FOR I=1536 TO 1587:READ A:POKE I,A:NEXT I
41 REM ** VERTICAL BLANK ROUTINE 41*
42 DIM VB$(210):FOR I=1 TO 210:READ A:VB$(I)=CHR$(A):NEXT I
43 REM ** LOAD PLAYER ROUTINE **
45 DIM LD$(73):FOR I=1 TO 73:READ A:LD$(I)=CHR$(A):NEXT I
47 REM ** INSERT ADDRESS OF ROUT. IN PAGE 6 **
48 A=ADR(VB$):B=INT(A/256):POKE 1540,B:POKE 1538,A-256*B
50 DATA 104,160,52,162,6,169,7,76,92,228,104,160,98,162,228,169,7,76,92,228
52 DATA 120,120,120,120,30,57,81,105,15,15,15,15,0,0,0,0,52,53,54,55,2,2,3,4,12,0,0,0,15,11,11,11
54 REM ** LINE 56 - CHANGE 24 TO 56 TO SKIP ORTHO. **
55 REM ** LINE 56 - CHANGE 28 TO 34 FOR CONT. MOV. **
56 DATA 72,138,72,152,72,162,0,189,120,2,29,44,6,160,15,24,176,32,201,15,240,28,201,14,208,2,160,13,201,13
57 DATA 208,2,160,14,201,11,208,2,160,7,201,7,208,2,160,11,192,15,240,6,61,48,6,157,28,6,152,61,44,6,157,44,6
58 DATA 232,224,4,144,195
60 DATA 162,0,189,32,6,133,203,189,36,6,133,204,189,40,6,133,209,198,209,16,7,232,224,4
65 DATA 144,232,176,91,189,28,6,133,207
70 DATA 70,207,176,26,188,24,6,192,1,240,19,208,1,200,177
75 DATA 203,240,6,136,145,203,200,208,245,136,145,203,222,24,6,70,207,176,29,188,24,6,200,192,254,176,21
80 DATA 177,203,208,247,136,177,203,240,6,200,145,203,136,208,245,200,145,203,254,24,6,70,207,176,3,222,20
85 DATA 6,70,207,176,3,254,20,6,189,20,6,157,0,208
90 DATA 24,144,154,162,4,189,11,208,240,5,169,0,157,39,6,202,208,243,104,168,104,170,104,76,98,228
100 DATA 234,234,234,104,104,104,170,189,32,6,133,186,189,36,6,133,187,104,133,213,104,133,212
110 DATA 189,24,6,133,195,169,0,168,192,255,176,35,196,195,240,5,145,186,200,208,243,162,0,161,212,240,11
120 DATA 145,186,230,212,200,192,255,176,11,208,241,169,0,145,186,200,192,255,144,249,96,234,234
150 REM ** CAR COLOR DATA **
160 FOR I=1 TO 20:READ A:C$(I)=CHR$(A):NEXT I
170 DATA 24,60,218,68,90,186,70,150,54,232,74,168,88,154,21,252,200,76,228,28
190 REM ** DEFINE PM AREA - SINGLE LINE RESOL. **
200 A=PEEK(106)-16:POKE 54279,A:PM=256*A
205 REM ** PLAYER MISSILE POINTERS **
210 FOR I=4 TO 7:POKE 1568+I,A+I:NEXT I
212 FOR I=1568 TO 1571:POKE I,0:NEXT I
218 REM ** DATA FOR PLAYER IMAGES **
220 FOR I=PM TO PM+121:READ A:POKE I,A:NEXT I
230 DATA 16,56,16,56,40,16,16,16,146,254,254,124,56,56,40,40,40,40,40,108,0
232 DATA 126,195,219,219,91,219,219,219,219,91,219,219,195,126,0
234 DATA 126,195,219,219,218,219,219,219,219,218,219,219,195,126,0
236 DATA 33,34,150,84,57,30,60,123,159,30,52,86,151,36,194,193,0
238 DATA 16,56,16,56,40,16,16,56,124,254,186,56,56,40,40,40,44,32,96,0
240 DATA 16,56,16,56,40,16,16,146,214,124,56,56,40,40,40,104,8,12,0
242 DATA 126,255,173,173,239,199,199,199,199,239,173,173,255,126,0
270 REM ** INIT. HORIZ. AND VERT. POS. **
280 RESTORE 282:FOR I=1556 TO 1563:READ A:POKE I,A:NEXT I
282 DATA 120,120,120,120,30,57,81,105
288 REM ** INIT COLORS **
290 DIF=3:BONUS=300:POKE 704,40:CP=0:FOR I=1 TO 3:POKE 704+I,ASC(C$(CP+I)):NEXT I:CP=3:BPOS=5
295 REM ** DRAW ROADS - SET PRIORITY **
300 GRAPHICS 17:FOR I=1 TO 20:L$(I)="_":NEXT I
305 FOR I=2 TO 20 STEP 2:S$(I)="-":S$(I-1)=" ":NEXT I
310 POSITION 0,2:? #6;L$:POSITION 0,11:? #6;L$:POSITION 0,13:? #6;L$:POSITION 0,22:? #6;L$
312 POSITION 0,5:? #6;S$:POSITION 0,8:? #6;S$:POSITION 0,16:? #6;S$:POSITION 0,19:? #6;S$:POKE 710,90
340 REM ** INIT. AND PRINT INFO. - RESET TIMER **
350 SCORE=50:POSITION 0,1:? #6;"score         time ":POSITION 0,23:? #6;"dif           high ";
360 POSITION 0,0:? #6;SCORE:POSITION 15,22:? #6;HIGH:POKE 77,0:POKE 19,0:POKE 20,0
365 REM ** INIT. PM GR. - FLAGS **
370 POKE 559,62:POKE 53277,3:I1=68:I2=88:FL=I1
375 REM ** LOAD PLAYERS - SET COLORS - PLAYER SIZES **
380 LD=ADR(LD$):A=USR(LD,0,PM):A=USR(LD,1,PM+21):A=USR(LD,2,PM+21):A=USR(LD,3,PM+21)
385 A=USR(1536):REM * INSERT VBI ROUTINE
390 POKE 53257,1:POKE 53258,1:POKE 53259,1:POKE 623,1
393 REM *4 INIT. SPEEDS **
395 POKE 1576,2:FOR I=1577 TO 1579:POKE I,RND(0)*DIF+1:NEXT I
398 POSITION 1,22:? #6;DIF
400 REM ** IF CARS OFF SCREEN, CHANGE LANES **
410 IF PEEK(1557)<15 AND PEEK(1561)=57 THEN POKE 1561,193:A=USR(LD,1,PM+36):POKE 1585,7:GOSUB 1000:POKE 705,C
420 IF PEEK(1557)>240 AND PEEK(1561)=193 THEN POKE 1561,57:A=USR(LD,1,PM+21):POKE 1585,11:GOSUB 1000:POKE 705,C
430 IF PEEK(1558)<15 AND PEEK(1562)=81 THEN POKE 1562,169:A=USR(LD,2,PM+36):POKE 1586,7:GOSUB 1000:POKE 706,C
440 IF PEEK(1558)>240 AND PEEK(1562)=169 THEN POKE 1562,81:A=USR(LD,2,PM+21):POKE 1586,11:GOSUB 1000:POKE 706,C
450 IF PEEK(1559)<15 AND PEEK(1563)=105 THEN POKE 1563,145:A=USR(LD,3,PM+36):POKE 1587,7:GOSUB 1000:POKE 707,C
460 IF PEEK(1559)>240 AND PEEK(1563)=145 THEN POKE 1563,105:A=USR(LD,3,PM+21):POKE 1587,11:GOSUB 1000:POKE 707,C
465 REM ** PRINT TIME - CK. FOR TIME UP **
470 TIME=30-PEEK(19):POSITION 16,0:? #6;TIME;" ":IF TIME<=0 THEN 910
472 REM ** RESET SOU. - HORN ROUT. **
473 SOUND 0,0,0,0
475 IF RND(0)>0.5 THEN SOUND 1,0,0,0
480 IF RND(0)<0.05  THEN SOUND 1,7,12,10
482 REM ** CHICKEN STOMP **
485 P=PEEK(1564):IF P>15 OR P<13 THEN 500
490 IF P=15 THEN A=USR(LD,O,PM):GOTO 500
492 IF FL=I1 THEN FL=I2:SOUND 0,16,6,8:GOTO 496
494 IF FL=I2 THEN FL=Il:SOUND 0,22,6,8
495 REM ** CK. FOR REACHING BOTTOM **
496 A=USR(LD,0,PM+FL)
500 IF PEEK(1560)>230 THEN 810
505 REM ** CK. FOR COLLISION **
510 IF PEEK(53260)=0 THEN 410
515 REM ** SPLAT **
520 A=USR(LD,0,PM+51):FOR J=1 TO 3:SOUND 0,RND(0)*255,8,8:SOUND 1,RND(0)*255,8,8
525 POKE 704,PEEK(704)+8:FOR I=1 TO 30:NEXT I:NEXT J:SOUND 0,0,0,0:SOUND 1,0,0,0:POKE 704,40
527 REM ** DECREASE SCORE - CK FOR 0 **
530 SCORE=SCORE-20:POSITION 0,0:? #6;SCORE;" ":IF SCORE<=20 THEN 702
533 REM ** MOVE UP - RELOAD BIRD - RESET COLL. **
535 POKE 1560,PEEK(1560)-24:A=USR(LD,0,PM):IF DIF>1 THEN DIF=DIF-1
590 POKE 53278,0:GOTO 395
700 REM ** SCORE = ZERO **
702 POSITION 3,2:? #6;"CHICKEN'S DEAD"
704 REM ** AMBULANCE **
705 C=1
706 IF PEEK(1576+C)=0 THEN C=C+1:GOTO 706
707 IF C>3 THEN C=1
713 POKE 1576+C,1:POKE 1560+C,PEEK(1560):POKE 1556+C,220:A=USR(LD,C,PM+107)
715 FOR J=1 TO 6:FOR P=60 TO 40 STEP -2:SOUND 0,P,10,8:FOR I=1 TO 6:NEXT I
716 NEXT P:FOR P=40 TO 60 STEP 2:SOUND 0,P,10,8:FOR I=1 TO 6:NEXT I:NEXT P:NEXT J:SOUND 0,0,0,0
718 REM ** NEW HIGH SCORE? **
720 A=USR(1546):IF SCORE>HIGH THEN HIGH=SCORE:POSITION 15,22:? #6;HIGH
730 POSITION 2,6:? #6;"press FIRE button":POSITION 4,7:? #6;"to play again"
732 FOR I=53248 TO 53251:POKE I,0:NEXT I:SOUND 0,0,0,0:SOUND 1,0,0,0
735 REM ** WAIT FOR BUTTON **
740 IF STRIG(0)=1 THEN 740
745 REM ** PM GRAPHICS OFF **
750 POKE 53278,0:POKE 53277,0:A=USR(1546):GOTO 280
800 REM ** BK TO TOP - STOP MOVEMENT OF BIRD **
810 POKE 1560,30:A=USR(LD,0,PM):POKE 1576,0
815 REM ** SIGNAL AND INCREMENT SCORE **
820 FOR I=1 TO 5:FOR J=10 TO 5 STEP -1:SOUND 0,J,14,8:SOUND 1,J,2,8:NEXT J:SOUND 0,0,0,0:SOUND 1,0,0,0
825 A=USR(LD,0,PM+68):FOR J=1 TO RND(0)*30:NEXT J:A=USR(LD,0,PM+88)
830 SCORE=SCORE+DIF*2:POSITION 0,0:? #6;SCORE;" ":NEXT I
840 IF DIM<9 THEN DIF=DIF+1
841 REM ** CH FOR BONUS **
842 IF SCORE<BONUS THEN 850
844 SOUND 0,25,10,10:BONUS=BONUS+300:P=PEEK(19):IF P<11 THEN POKE 19,0:GOTO 848
846 POKE 19,P-l0
848 POSITION BPOS,13:? #6;"*":BPOS=BPOS+1
850 GOTO 390
900 REM ** TIME'S UP ROUTINE **
910 POSITION 5,2:? #6;"TIME'S UP"
920 GOTO 720
990 REM ** CHANGE CAR COLOR SUB.**
1000 CP=CP+1:IF CP=20 THEN CP=1
1010 C=ASC(C$(CP)):RETURN

Share

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.