Frog from Antic Vol. 6 #10 February 1988#

Frog is a game from the Antic magazine, published in February 1988

ATR Image#

Reference#

Source Code#

Listing
; FROG\\
; BY GREG KNAUSS\\
; (c)1987, ANTIC PUBLISHING\\
\\
BYTE TIME,SEC,PIC,JMP,SCR,DEL,FLY,FS,\\
     PM,DX,DY,EX,EY,OY,S,T,W,U,D,M\\
BYTE ARRAY FY(4)\\
INT  DIR,TN,OX\\
INT  ARRAY FD(4)\\
CARD DRB,CH,DL,X,Y,I,J,K\\
CARD ARRAY FX(4)\\
\\
PROC PLRVBI()\\
[162 3 189 244 6 240 89 56 221 240 6\\
240 83 141 254 6 106 141 255 6 142\\
253 6 24 169 0 109 253 6 24 109 252\\
6 133 204 133 206 189 240 6 133 203\\
173 254 6 133 205 189 248 6 170 232\\
46 255 6 144 16 168 177 203 145 205\\
169 0 145 203 136 202 208 244 76 87\\
6 160 0 177 203 145 205 169 0 145\\
203 200 202 208 244 174 253 6 173\\
254 6 157 240 6 189 236 6 240 48 133\\
203 24 138 141 253 6 109 235 6 133\\
204 24 173 253 6 109 252 6 133 206\\
189 240 6 133 205 189 248 6 170 160\\
0 177 203 145 205 200 202 208 248 \\
174 253 6 169 0 157 236 6 202 48 3\\
76 2 6 76 98 228 0 0]\\
\\
PROC MYVBI()\\
TIME==+1 [76 $E45F]\\
\\
PROC DLI()\\
[72 238 0 5 173 0 5 141 10 212 201 1\\
208 12 169 99 141 9 212 169 198 141 23\\
208 104 64 201 2 208 7 169 40 141 26\\
208 104 64 201 3 208 15 169 130 141\\
26 208 141 24 208 169 9 141 25 208\\
104 64 169 224 141 9 212 169 15 141\\
23 208 169 0 141 0 5 104 64]\\
\\
PROC DLIST()\\
[112 112 112 66 0 0 5 5 7 6 130 5\\
5 5 132 132 5 5 4 132 2 65]\\
\\
PROC FROG1()\\
[0 0 0 0 0 0 0 0\\
0 0 0 0 0 0 0 0\\
0 0 0 0 54 108 255 227\\
126 128 252 252 238 118 54 59\\
108 216 254 130 198 252 0 252\\
220 204 238 102 116 160 208 240\\
240 240 240 224 224 224 224 192\\
128 192 224 192 128 0 0 0\\
0 128 192 192 192 224 224 224\\
224 240 240 240 240 240 240 240\\
248 248 248 248 192 54 108 255\\
193 99 190 128 206 198 231 198\\
0 0 0 0 0 0 0 0\\
0 0 0 0 0 0 0 0 \\
0 0 0 0 0 240 124 126 \\
255 199 187 127 127 119 250 124 \\
0 0 128 128 128 64 224 224\\
224 96 96 240 240 240 240 240 \\
240 240 120 120 120 56 188 188 \\
140 156 188 156 8 0 0 0 \\
128 196 238 223 158 188 184 184\\
56 120 120 248 240 240 240 240\\
240 224 224 224 224 224 192 64\\
64 192 128 128 128 0 0 0]\\
\\
PROC FROG2()\\
[0 0 0 0 0 0 0 0\\
0 0 0 0 0 0 0 0\\
0 0 0 0 0 15 62 126\\
255 227 221 254 254 238 95 62\\
0 0 1 1 1 2 7 7\\
7 6 6 15 15 15 15 15\\
15 15 30 30 30 28 61 61\\
49 57 61 57 16 0 0 0\\
1 35 119 251 121 61 29 29\\
28 30 30 31 15 15 15 15\\
15 7 7 7 7 7 3 2\\
2 3 1 1 1 0 0 0\\
0 0 0 0 0 0 0 0 \\
0 0 0 0 0 0 0 0 \\
0 0 0 0 108 54 255 199 \\
126 1 63 63 119 110 108 220 \\
54 27 127 65 99 63 0 63 \\
59 51 119 102 46 5 11 15\\
15 15 15 7 7 7 7 3 \\
1 3 7 3 1 0 0 0 \\
0 1 3 3 3 7 7 7 \\
7 15 15 15 15 15 15 15 \\
31 31 31 31 3 108 54 255 \\
131 198 125 1 115 99 231 99]\\
\\
PROC TOUNGE()\\
[0 255 127 63 31 15 7 3 1 0\\
128 192 224 240 248 252 254 255]\\
\\
PROC DRAGON()\\
[66 165 153 126 24 0 0 0\\
0 0 0 24 126 153 165 66]\\
\\
PROC CHRS()\\
[0 0 0 0 0 0 0 0\\
0 0 10 42 10 0 0 0\\
0 0 0 0 0 0 0 0\\
0 42 170 170 170 170 0 0\\
2 170 85 170 170 170 170 0\\
170 165 90 170 170 170 170 0\\
170 85 170 170 170 169 170 170\\
170 85 170 169 150 106 170 170\\
165 90 165 90 170 170 170 170\\
85 89 169 169 170 170 170 170\\
85 165 170 170 106 106 106 170\\
90 85 165 170 170 170 170 170\\
170 85 90 165 170 170 170 170\\
170 85 170 90 165 170 170 170\\
170 170 85 170 90 165 170 170\\
170 170 85 170 170 106 170 170\\
170 170 90 165 170 170 170 170\\
170 170 170 85 170 170 170 170\\
170 170 170 85 170 170 170 170\\
170 170 170 170 85 170 170 170\\
170 170 170 170 85 170 170 170\\
170 170 170 170 90 170 170 160\\
170 170 170 170 170 170 170 0\\
0 170 170 170 170 170 160 0\\
0 0 170 170 170 160 0 0\\
0 0 0 128 0 0 0 0\\
16 156 216 156 216 156 16 16\\
16 16 16 16 0 0 0 0\\
16 16 16 16 16 16 0 0\\
16 16 16 16 16 16 16 16]\\
\\
PROC FLIES()\\
[3 12 48 192]\\
\\
PROC CLRS()\\
[66 202 202 4 196 15 134 0 134]\\
\\
PROC PAUSE()\\
SNDRST() POSITION(15,0)\\
PRINT("* Paused *") POKE(764,255)\\
WHILE PEEK(764)=255 DO OD\\
POSITION(15,0) PRINT("          ")\\
POKE(764,255) RETURN\\
\\
PROC SHOOT()\\
T==+TN IF T=10 OR T=95 THEN TN=-TN FI\\
IF T=50 THEN TN=0 FI POKE(53248,X+OX)\\
POKE(1780,Y+OY) POKE(1772,T/5)\\
IF TN<>0 THEN FOR M=0 TO 3 DO\\
IF PEEK(53256+M)=1 THEN FX(M)=3000\\
SOUND(1,50,10,10) SCR==+1\\
POSITION(9,14) PRINTC(SCR)\\
SOUND(1,0,0,0) FI OD IF PEEK(53263)=1\\
THEN SOUND(1,100,10,10) DY=0SEC==+30\\
SCR==+5 POKE(53251,0) POSITION(9,14)\\
PRINTC(SCR) SOUND(1,0,0,0) FI FI\\
POKE(53278,0) RETURN\\
\\
PROC PLACE()\\
SHOOT() OX=-28 IF DIR=1 THEN OX=11 FI\\
OY=23 IF PIC MOD 3=1 THEN OY=4 FI\\
IF PIC MOD 3=2 THEN OY=25 FI RETURN\\
\\
PROC MOVE()\\
POKE(16,112) POKE(53774,112)\\
IF PEEK(764)=33 THEN PAUSE() FI\\
POKE(53250,X) POKE(53249,X+8)\\
POKE(1782,Y) POKE(1781,Y)\\
IF STRIG(0)=0 AND TN=0 AND JMP=2\\
THEN TN=DIR T=50 PLACE() FI\\
IF DY<4 THEN FOR DEL=1 TO 50 DO OD FI\\
IF DX>3 AND DY>3 THEN DX==+1\\
IF DX>EX THEN DX==-2 FI DY==+1\\
IF DY>EY THEN DY==-2 FI\\
IF EX=DX OR EY=DY THEN\\
EX=RAND(240)+10 EY=RAND(70)+20 FI\\
POKE(53251,DX) POKE(1783,DY)\\
POKE(1775,(DX MOD 2)*8+1) FI\\
IF SEC MOD 20=0 THEN DX=250+RAND(2)*10\\
DY=5 EX=RAND(255) EY=RAND(100)+50 FI\\
IF SEC MOD 20=15 AND DX>3 AND DY>3\\
THEN EX=125+RAND(10) EY=0 FI\\
IF TIME>58 AND SEC>0 THEN TIME=0\\
SEC==-1 POSITION(35,14) PRINTB(SEC)\\
PRINT(" ") FI\\
SHOOT() FLY==+1 IF FLY=4 THEN FLY=0\\
FI FX(FLY)==+FD(FLY)*FS\\
IF FX(FLY)>2450 OR FD(FLY)=0 THEN\\
FOR M=0 TO 1 DO U=PEEK(FLIES+FLY)\\
D=FY(FLY) W=PEEK(DRB+768+D+M)-U\\
POKE(DRB+768+D+M,W) OD FD(FLY)=1\\
IF RAND(10)>5 THEN FD(FLY)=-1 FI\\
FX(FLY)=RAND(400) IF FD(FLY)=-1 THEN\\
FX(FLY)=2150+RAND(400) FI\\
FY(FLY)=50+RAND(100) FOR M=0 TO 1 DO\\
U=PEEK(FLIES+FLY) D=FY(FLY)\\
W=PEEK(DRB+768+D+M)+U\\
POKE(DRB+768+D+M,W) OD FI\\
D=FX(FLY)/10 POKE(53252+FLY,D)\\
RETURN\\
\\
PROC ANIMATE()\\
POKE(1773,PIC*32+1)\\
POKE(1774,PIC*32+1) RETURN\\
\\
PROC SPLASH()\\
T=50 TN=0 FOR I=0 TO 31 DO Y==+1\\
POKE(1785,32-I) POKE(1786,32-I)\\
MOVE() OD X=0 MOVE() POKEC(548,$E462)\\
I=SEC DO SEC==-1 POSITION(35,14)\\
PRINTB(SEC) PRINT(" ")\\
SOUND(0,200,10,10) FOR DEL=1 TO 5 DO\\
MOVE() OD SOUND(0,0,0,0)\\
FOR DEL=1 TO 5 DO MOVE() OD\\
IF SEC=I-30 OR SEC=0 THEN EXIT FI OD\\
POKEC(548,PLRVBI) PIC=1 X=50 DIR=1\\
JMP=2 FOR I=1 TO 32 DO Y==-1\\
POKE(1785,I) POKE(1786,I) ANIMATE()\\
MOVE() OD PIC=0 RETURN\\
\\
PROC SETUP()\\
DO GRAPHICS(0) POKE(559,0)\\
POKE(752,1) DL=PEEKC(88)\\
POKE(16,112) POKE(53774,112) \\
POKEC(DLIST+4,DL) FOR I=0 TO 1 DO\\
POKE(82,I*34+1) POSITION(I*34+1,5)\\
PRINTE(":  :") PRINTE("= :=")\\
PRINTE("=:==") PRINTE("====")\\
PRINTE("====") PRINTE("====")\\
PRINTE("<=;<") OD POSITION(8,11)\\
PRINT("!#$%&'()*+,-./0123456789")\\
POSITION(2,14) PRINT("Score: 0")\\
POSITION(29,14) PRINT("Time: 120")\\
CH=(PEEK(106)-8)*256\\
MOVEBLOCK(CH,CHRS,1024)\\
POKE(DLI+15,CH/256)\\
MOVEBLOCK(1536,PLRVBI,160)\\
PM=PEEK(106)-24 DRB=PM*256+1\\
POKE(1788,PM+4) POKE(53277,3)\\
POKE(54279,PM) POKE(1771,PM-1)\\
POKE(53256,3) POKE(623,17)\\
MOVEBLOCK(DRB-256,TOUNGE,20)\\
MOVEBLOCK(DRB,FROG1,192)\\
MOVEBLOCK(DRB+256,FROG2,192)\\
MOVEBLOCK(DRB+512,DRAGON,16)\\
ZERO(DRB+768,1280)\\
MOVEBLOCK(704,CLRS,9)\\
T=50 SETBLOCK(1773,3,1)\\
POKE(1784,1) POKE(1785,32)\\
POKE(1786,32) POKE(1787,8)\\
POKE(1280,0) POKEC(548,PLRVBI)\\
POKEC(546,MYVBI) POKEC(560,DLIST)\\
POKEC(512,DLI) POKE(54286,192)\\
\\
FOR I=0 TO 3 DO FX(I)=0 FY(I)=0\\
FD(I)=0 OD SEC=121 SCR=0 FS=5 FLY=0\\
DY=0 X=120 Y=160 DIR=1 PIC=0 TN=0\\
ANIMATE() MOVE() POSITION(8,3)\\
PRINT("FROG") POSITION(13,4)\\
PRINT("By Greg Knauss") POSITION(7,0)\\
PRINT("(c)1987 Antic Publishing")\\
POKE(559,62) WHILE PEEK(53279)<>6 AND\\
STRIG(0)=1 DO OD POSITION(8,3)\\
PRINT("    ") POSITION(13,4)\\
PRINT("              ") POSITION(7,0)\\
PRINT("                          ")\\
\\
DO IF SEC=0 THEN EXIT FI\\
JMP=0 S=STICK(0)\\
IF S=7 THEN PIC=1 DIR=1 JMP=1 FI\\
IF S=11 THEN PIC=4 DIR=-1 JMP=1 FI\\
IF S=14 THEN JMP=2 FI\\
IF S=13 THEN DIR=-DIR PIC=3-PIC FI\\
IF X<80 OR X>167 THEN SPLASH() FI\\
IF JMP=1 THEN ANIMATE() PLACE()\\
FOR I=0 TO 9 DO X==+DIR Y==-1 MOVE()\\
SOUND(0,Y-90,10,4) OD FOR I=0 TO 9 DO\\
X==+DIR Y==+1 MOVE()\\
SOUND(0,Y-90,10,4) OD PIC==-1 PLACE()\\
SOUND(0,0,0,0) FI\\
IF JMP=2 THEN PIC==+1 ANIMATE()\\
PLACE() FOR I=0 TO 126 DO\\
SOUND(0,Y,10,6-I/20) IF I MOD 9=0 THEN\\
X==+DIR FI Y==-1 MOVE() OD PIC==+1\\
ANIMATE() PLACE() SOUND(0,0,0,0)\\
FOR I=0 TO 126 DO IF I MOD 9=0 THEN\\
X==+DIR FI Y==+1 MOVE() OD PIC==-2\\
PLACE() FI IF S<>15 AND X>79\\
AND X<168 THEN FOR I=1 TO 70 DO\\
ANIMATE() MOVE() OD FI IF S=15 THEN\\
ANIMATE() MOVE() FI FS=SCR/2+5\\
POKE(77,0) FOR DEL=1 TO 20 DO OD OD\\
\\
POSITION(5,3) PRINT("GAME OVER!")\\
POSITION(9,14) PRINTB(SCR)\\
FOR I=1 TO 500 DO MOVE() OD\\
POSITION(10,0)\\
PRINT("Press the trigger...")\\
WHILE STRIG(0)=1 DO MOVE() OD OD\\
\\