====== AERIAL ANTICS ====== {{:otros:Aerial_Antics_p1.jpg?690|}} ===== Info ===== ^ Author | ??????? | ^ Computer | Amstrad PCW 8256 / 8512 / 9512 | ^ Year | ???? | ^ Gender | Arcade | ^ Controls | Keyboard | ^ Languages | Spanish - English | ^ Status | [[preserved|Preserved]] | ===== Screenshots ===== {{:otros:Aerial_Antics_screenshot01.png?220}} {{:otros:Aerial_Antics_screenshot02.png?220}} {{:otros:Aerial_Antics_screenshot03.png?220}} {{:otros:Aerial_Antics_screenshot04.png?220}} ===== Description ===== Aerial Antics is an entertaining game in which we will spend a good time in front of the PCW screen. Its graphics are quite good and the handling through the keyboard is quite fast. Our mission will be to install television antennas in homes. For this we will have to get on the roofs trying not to fall as we will lose a life. To begin, we must go through the store where the antennas are piled up, which can only be picked up one by one. By this, we mean that every time we mount an antenna in the house, we must return to the store for the next one. But not everything is so easy, this is where our head comes into play, skill is essential to pass the phase, since we will have to move the stairs in the direction that suits us, remember that we have to install them in the houses and to get there To the roof we have to place the stairs strategically. If we place the stairs wrong, we will fall into the void losing a life, or falling from a certain height. The stairs can be mounted on top of each other to reach the top, but once they are mounted on top of each other they can no longer be moved, so think carefully about where you want to place them. The game will change level, when we mount all the television antennas. If we place the stairs wrong, we will not be able to pass the phase and we will have to play again from the beginning. Try to conserve as many lives as possible since every time we change levels, it will be more difficult. ===== Listing ===== * **__Listing - AERIALS.BAS__** 10 OPTION RUN:MEMORY &HCFFF:DEFINT a-z:e$=CHR$(27):cl$=e$+"E"+e$+"H 20 GOSUB 1120:play=-1:WHILE play:arl=0:IF del=0 THEN inst=-1 30 GOSUB 790:go=-1:WHILE go:GOSUB 170:WEND 40 IF del=hs THEN FOR a=1 TO 3000:NEXT:level=level+1:IF level=4 THEN level=1 50 IF del=hs THEN 150 60 POKE dbl,0:POKE ppr,85:x=20:a$=SPACE$(26) 70 FOR y=10 TO 20:CALL pr(x,y,a$):NEXT 80 a$="G A M E O V E R !":x=26:y=12:CALL pr(x,y,a$) 90 IF lives=0 THEN a$="No lives left!"ELSE a$=MID$(STR$(del),2)+" aerials delivered" 100 y=15:CALL pr(x,y,a$):a$="Play again? (Y/N)":y=18:CALL pr(x,y,a$) 110 i$=UPPER$(INKEY$):IF i$=""THEN 110 120 IF i$<>"Y"AND i$<>"N"THEN 110 130 IF i$="Y"THEN lives=11:del=0:hs=0:level=1 140 IF i$="N"THEN play=0 150 WEND:MEMORY 62981!:PRINT cl$e$"e"e$"1" 160 REM Play game 170 i$=UPPER$(INKEY$):IF i$="O"OR i$="P"THEN GOSUB 470 180 IF i$=CHR$(1)OR i$=CHR$(6)THEN GOSUB 250 190 IF i$=CHR$(31)OR i$=CHR$(30)THEN GOSUB 610 200 IF a(mx+j,my+1)=4 AND arl=0 AND lives>0 THEN GOSUB 670 210 IF a(mx+j,my+2)=6 AND arl=1 AND a(mx+j,my)=0 THEN GOSUB 720 220 IF i$=e$OR i$=CHR$(3)THEN go=0:GOSUB 410 230 i$="":RETURN 240 REM left and right 250 POKE dbl,1:IF i$=CHR$(6)AND m$=ml$THEN m$=mr$:CALL pr(mx,my,m$):j=2:RETURN 260 IF i$=CHR$(1)AND m$=mr$THEN m$=ml$:CALL pr(mx,my,m$):j=-2:RETURN 270 IF a(mx+j,my)>1 OR a(mx+j,my+1)>1 AND a(mx+j,my+1)<10 THEN RETURN 280 IF a(mx,my)=1 THEN s$=ld$ELSE s$=sp$ 290 IF a(mx,my+1)=10 AND a(mx,my)<>1 THEN POKE dbl,0:CALL pr(mx,my,sp$):y=my+1:CALL pr(mx,y,arl$):POKE dbl,1 ELSE CALL pr(mx,my,s$) 300 mx=mx+j:CALL pr(mx,my,m$):IF a(mx,my+2)=0 THEN GOSUB 330 310 RETURN 320 REM Fall 330 WHILE a(mx,my+2)=0:CALL pr(mx,my,sp$):my=my+2:CALL pr(mx,my,dn$) 340 FOR a=1 TO 200:NEXT:WEND:CALL pr(mx,my,hp$):PRINT CHR$(7); 350 IF a(mx,my+1)=10 THEN x=mx:y=my+1:GOSUB 430 360 GOSUB 410:PRINT FNat$(2,29)"Oh dear! You have fallen down! Try to be more careful next time! 370 lives=lives-1:IF lives=0 THEN PRINT FNat$(2,30)"You have run out of lives.";ELSE PRINT FNat$(2,30)"Never mind. You've got"lives"lives left."; 380 PRINT" Press a key."e$"H":WHILE INKEY$="":WEND 390 GOSUB 410:IF lives>0 THEN GOSUB 1060:POKE dbl,1:CALL pr(mx,my,m$) ELSE go=0 400 arl=0:RETURN 410 FOR y=29 TO 30:PRINT FNat$(2,y)SPC(86):NEXT:PRINT e$"H":RETURN 420 REM Fall on top of aerial 430 del=del-1:a(x,y)=0:y=y+1:a(x,y)=6:POKE pen,85:PRINT CHR$(7); 440 CALL pr(x,y,htr$):x=x-2:CALL pr(x,y,htl$):y=y+2:CALL pr(x,y,hbl$) 450 x=x+2:CALL pr(x,y,hbr$):POKE pen,255:RETURN 460 REM Move ladder 470 IF i$="O"AND mx=2 OR i$="P"AND mx=86 THEN RETURN 480 IF i$="O"THEN k=-2:ELSE k=2 490 IF a(mx+k,my)=1 AND a(mx+k,my-2)=1 AND a(mx+k,my-4)<>1 AND a(mx+k*2,my)=0 AND a(mx+k*2,my-2)=0 THEN GOSUB 510 500 RETURN 510 IF i$="O"THEN m$=ml$:j=-2:ELSE m$=mr$:j=2 520 IF a(mx,my+1)=10 THEN POKE dbl,0:CALL pr(mx,my,sp$):y=my+1:CALL pr(mx,y,arl$):POKE dbl,1 ELSE IF a(mx,my)=1 THEN CALL pr(mx,my,ld$)ELSE CALL pr(mx,my,sp$) 530 mx=mx+j:CALL pr(mx,my,m$):a(mx,my)=0:ly=my-2:CALL pr(mx,ly,sp$):a(mx,ly)=0 540 lx=mx+j:CALL pr(lx,my,ld$):a(lx,my)=1:CALL pr(lx,ly,ld$):a(lx,ly)=1 550 ly1=my:WHILE a(lx,ly1+2)=0:CALL pr(lx,ly,sp$):a(lx,ly)=0 560 ly=ly+4:CALL pr(lx,ly,ld$):a(lx,ly)=1:CALL pr(lx,ly1,sp$) 570 a(lx,ly1)=0:ly1=ly1+4:CALL pr(lx,ly1,ld$):a(lx,ly1)=1 580 IF a(lx,ly1+1)=10 THEN x=lx:y=ly1+1:GOSUB 430 590 WEND:RETURN 600 REM Up and down 610 POKE dbl,1:IF a(mx,my)<>1 AND(a(mx,my+2)<>1 OR i$<>CHR$(30)) THEN RETURN 620 IF i$=CHR$(31)THEN i=-2:ii=-1 ELSE i=2:ii=1 630 IF a(mx,my)=0 THEN s$=sp$ELSE s$=ld$ 640 IF a(mx,my+i)>1 OR a(mx,my+ii)>1 THEN RETURN ELSE CALL pr(mx,my,s$):my=my+i:IF a(mx,my)=1 THEN CALL pr(mx,my,mld$)ELSE CALL pr(mx,my,m$) 650 RETURN 660 REM Pick up aerial 670 arl=1:POKE dbl,0:ax=mx+j:ay=my+1:CALL pr(ax,ay,sp$):a(ax,ay)=0 680 PRINT CHR$(7);:CALL pr(arx,ary,arl$) 690 WHILE a(ax,ay-1)=4:CALL pr(ax,ay,arl$):a(ax,ay)=4:ay=ay-1:CALL pr(ax,ay,sp$):a(ax,ay)=0:WEND 700 RETURN 710 REM Deliver aerial 720 del=del+1:a(mx+j,my+2)=10:a(mx+j,my+1)=10:x=mx+j:y=my+1:POKE dbl,0 730 CALL pr(x,y,arl$):CALL pr(arx,ary,sp$):arl=0 740 PRINT CHR$(7);:POKE dbl,1:y=my+2:CALL pr(x,y,htr$) 750 x=x-2:CALL pr(x,y,htl$):y=y+2:CALL pr(x,y,hbl$) 760 x=x+2:CALL pr(x,y,hbr$):IF del=hs THEN go=0:GOSUB 410 770 RETURN 780 REM Draw screen 790 POKE dbl,0:POKE ppr,0:POKE pen,255 800 x=0:y=0:a$=CHR$(134)+STRING$(43,138)+CHR$(140):CALL pr(x,y,a$) 810 mx=88:a$=CHR$(133):FOR y=1 TO 2:CALL pr(x,y,a$):CALL pr(mx,y,a$):NEXT 820 a$=CHR$(135):y=3:CALL pr(x,y,a$):a(x,y)=2 830 a$=CHR$(138):FOR x=2 TO 86 STEP 2:CALL pr(x,y,a$):a(x,y)=2:NEXT 840 a$=CHR$(141):CALL pr(x,y,a$):a(x,y)=2 850 POKE dbl,1:POKE ppr,85:a$=SPACE$(43):x=2:y=1::CALL pr(x,y,a$) 860 a$="A E R I A L A N T I C S":x=20:y=1:CALL pr(x,y,a$):POKE dbl,0:POKE ppr,0 870 x=0:a$=CHR$(133)+SPACE$(43)+CHR$(133):FOR y=4 TO 30:CALL pr(x,y,a$):a(x,y)=2:a(88,y)=2:NEXT 880 a$=CHR$(131)+STRING$(43,138)+CHR$(137):CALL pr(x,y,a$) 890 IF inst THEN GOSUB 1210:inst=0:GOTO 870 900 IF level=1 THEN RESTORE 1440 910 IF level=3 THEN RESTORE 1700 920 IF level=2 THEN RESTORE 1960 930 FOR a=1 TO 25:READ b$:y=a+3 940 FOR b=1 TO 43:c=VAL(MID$(b$,b,1)) 950 IF c=1 THEN a$=ld$:POKE dbl,1:GOSUB 1100:POKE dbl,0:GOTO 1040 960 IF c=2 THEN a$=flr$:GOSUB 1100:GOTO 1040 970 IF c=3 THEN a$=wl$:GOSUB 1100:GOTO 1040 980 IF c=4 THEN a$=arl$:GOSUB 1100:GOTO 1040 990 IF c=5 THEN a$=htl$:POKE pen,85:POKE dbl,1:hs=hs+1:GOSUB 1100:POKE pen,255:POKE dbl,0:GOTO 1040 1000 IF c=6 THEN a$=htr$:POKE pen,85:POKE dbl,1:GOSUB 1100:POKE dbl,0:POKE pen,255:GOTO 1040 1010 IF c=7 THEN a$=hbl$:POKE pen,85:POKE dbl,1:GOSUB 1100:POKE dbl,0:POKE pen,255:GOTO 1040 1020 IF c=8 THEN a$=hbr$:POKE pen,85:POKE dbl,1:GOSUB 1100:POKE dbl,0:POKE pen,255:GOTO 1040 1030 GOSUB 1100 1040 NEXT b,a:GOSUB 1060 1050 POKE dbl,1:j=2:mx=2:my=26:m$=mr$:CALL pr(mx,my,m$):RETURN 1060 PRINT FNat$(2,29)"Use arrow keys for general movement. Use O and P to move ladder left and right. 1070 y=30:PRINT FNat$(2,y)"Remaining lives:":x=19:a$=STRING$(lives-1,mr$) 1080 IF lives=1 THEN a$="ZERO 1090 POKE dbl,0:CALL pr(x,y,a$):PRINT FNat$(46,y)"Aerial:"FNat$(61,y)"Press EXIT or STOP to quit."e$"H":RETURN 1100 x=b*2:a(x,y)=c:IF c>0 THEN CALL pr(x,y,a$):RETURN ELSE RETURN 1110 REM Set up machine code, etc 1120 RESTORE 2220:add=&HE000:READ code:WHILE code<256 1130 POKE add,code:add=add+1:READ code:WEND 1140 scrn=&HE000:pr=&HE003:udgs=&HD100:pen=&HD001:ppr=&HD000:dbl=&HD006 1150 RESTORE 1290:b=0:READ a:WHILE a<256:POKE udgs+b,a:b=b+1:READ a:WEND 1160 sp$=" ":ml$=CHR$(0):mr$=CHR$(1):ld$=CHR$(2):htl$=CHR$(3):htr$=CHR$(4):hbl$=CHR$(5) 1170 hbr$=CHR$(6):arl$=CHR$(7):mld$=CHR$(8):flr$=CHR$(9):wl$=CHR$(10) 1180 dn$=CHR$(11):hp$=CHR$(12):box$=CHR$(13) 1190 PRINT cl$e$"0"e$"f":CALL scrn:DEF FNat$(x,y)=e$+"Y"+CHR$(32+y)+CHR$(32+x) 1200 arx=54:ary=30:DIM a(89,30):lives=11:level=1:RETURN 1210 x=27:PRINT FNat$(x,12)"In this game you must manoevre 1220 PRINT FNat$(x,13)"ladders so that you can get all 1230 PRINT FNat$(x,14)"around the screen. You must also 1240 PRINT FNat$(x,15)"collect aerials from the store 1250 PRINT FNat$(x,16)"and fix them on the roofs. 1260 PRINT FNat$(x,18)"Be careful you don't fall off! 1270 PRINT FNat$(x,20)"Press a key.":WHILE INKEY$="":WEND:RETURN 1280 REM user-defined graphics 1290 DATA 24,24,8,28,58,24,20,52 1300 DATA 24,24,16,56,92,24,40,44 1310 DATA 66,126,66,66,66,126,66,66 1320 DATA 0,0,15,21,42,85,170,255 1330 DATA 192,192,240,88,172,86,171,255 1340 DATA 132,132,132,132,255,170,213,255 1350 DATA 33,33,33,45,225,161,97,255 1360 DATA 64,85,255,85,64,64,64,64 1370 DATA 90,126,126,90,90,126,102,66 1380 DATA 255,170,170,255,85,85,255,0 1390 DATA 254,138,138,138,254,162,162,162 1400 DATA 44,40,24,92,56,16,24,24 1410 DATA 0,0,3,4,56,248,62,57,256 1420 REM Screen data 1430 REM Level 1 1440 DATA 0111111001111000000000000000000000001010000 1450 DATA 0000000000000000000000000000000000000000000 1460 DATA 0111111001111000000000000000000000001010000 1470 DATA 0000000000000000000000000000000000000000000 1480 DATA 2222221022222356000000000111110000022222200 1490 DATA 0000000000000300000000000000000000000000300 1500 DATA 0000001000000378000000000111110000000000300 1510 DATA 0000000000000300000000000000000000000000300 1520 DATA 0156001000000222205603122222222220000000300 1530 DATA 0000000000000000300003000000000000000000300 1540 DATA 0178001000000000307803100000000000000000300 1550 DATA 0000000000000000300003000000000000000000300 1560 DATA 0122213015601000222222156561100000000156356 1570 DATA 0000003000000000000000000000000000000000300 1580 DATA 0100013017801000000000178781100000000178378 1590 DATA 0000003000000000000000000000000000000000300 1600 DATA 2201222022222000000312222222222222201222222 1610 DATA 0000000000000000000300000000000000000000000 1620 DATA 0001000000000000000310000000000000001000444 1630 DATA 0000000000000000000300000000000000000000444 1640 DATA 0102222222222222560356310000000000001310444 1650 DATA 0003000000000000000300300000000000000300444 1660 DATA 0103000000000000780378310000000000001310444 1670 DATA 0003000000000000000300300000000000000300444 1680 DATA 2222222222222222222222222222222222222222222 1690 REM Level 3 1700 DATA 4444440100001101101101101101101101101100011 1710 DATA 4444440000000000000000000000000000000000000 1720 DATA 4444440130001101101101101101101101101100011 1730 DATA 4444440030000000000000000000000000000000000 1740 DATA 2222222222005605635605635605635605635605631 1750 DATA 0000000000000000030000030000030000030000030 1760 DATA 0000000000007807837807837807837807837807831 1770 DATA 0000000000000000030000030000030000030000030 1780 DATA 1560000000002222222222222222222222222222231 1790 DATA 0000000000000000000000000000000000000000030 1800 DATA 1780000000000000000000000000000000000000031 1810 DATA 0000000000000000000000000000000000000000030 1820 DATA 1222222222000560011110000011000000005615631 1830 DATA 0000300000000000000000000000000000000000030 1840 DATA 1000300000000780011110000011000000007817831 1850 DATA 0000300000000000000000000000000000000000030 1860 DATA 2256356000000222222215603056302222222212231 1870 DATA 0000300000000000000000003000300000000000030 1880 DATA 0078378000000000000017803078300000000010031 1890 DATA 0000300000000000000000003000300000000000030 1900 DATA 0022222200001222222222222022356000000010031 1910 DATA 0000000000000000000000000000300000000000020 1920 DATA 0000000000001000000000000000378000000010001 1930 DATA 0000000000000000000000000000300000000000000 1940 DATA 2222222222222222222222222222222222222222222 1950 REM Level 2 1960 DATA 0010100101001111111110000000000000000000110 1970 DATA 0000000000000000000000000000000000000000000 1980 DATA 0013100131001111111110000000000000000000110 1990 DATA 0003000030000000000000000000000000000000000 2000 DATA 0122222222222222222223560225622563005600221 2010 DATA 0000000000000000000003000000000003000000000 2020 DATA 0100000000000000000003780007833783007800001 2030 DATA 0000000000000000000003000000033003000000000 2040 DATA 0111000563563111100002220222222223022300561 2050 DATA 0000000003003000000000000000000003000300000 2060 DATA 0111000783783111100000000000000003000300781 2070 DATA 0000000003003000000000000000000003000200000 2080 DATA 1222560222222222210000000325600002111012221 2090 DATA 0000000000000000300000000300000000000000000 2100 DATA 1000780000000000310000000307800000111010001 2110 DATA 0000000000000000300000000300000000000000000 2120 DATA 5600112001356356356056000222256222222022221 2130 DATA 0000000000300300300000000000000000000000000 2140 DATA 7800110001378378378078000000078000000000001 2150 DATA 0000000000300300300000000000000000000000000 2160 DATA 2210221322222222222022222222222222356000001 2170 DATA 0000000300000000000000000000000000300000000 2180 DATA 0010001300000000000000000000000000378000001 2190 DATA 0000000344444444440004444444444444300000000 2200 DATA 2222222222222222222222222222222222222222222 2210 REM Machine code 2220 DATA 195,6,224,195,91,224,205,41,224,17,152,44,33,0,182,1,104,1,62 2230 DATA 32,245,213,62,8,115,35,114,35,19,61,32,248,209,235,9,235,241,61 2240 DATA 32,236,201,193,205,90,252,233,0,201,102,26,111,34,2,208,10,50,16 2250 DATA 208,3,10,111,3,10,103,237,75,16,208,6,0,17,19,208,237,176,42 2260 DATA 2,208,205,252,224,34,4,208,33,19,208,34,17,208,201,205,48,224,205 2270 DATA 41,224,243,42,17,208,126,35,34,17,208,205,234,224,17,79,225,1,8 2280 DATA 0,237,176,221,42,4,208,14,8,253,33,79,225,42,0,208,125,6,8 2290 DATA 253,203,0,6,56,13,7,221,203,8,22,221,203,0,22,7,195,164,224 2300 DATA 203,4,221,203,8,22,221,203,0,22,203,4,221,203,8,22,221,203,0 2310 DATA 22,16,215,253,35,58,6,208,167,202,209,224,221,126,8,221,119,9,221 2320 DATA 126,0,221,119,1,221,35,121,254,5,194,209,224,1,200,2,221,9,79 2330 DATA 221,35,13,194,130,224,42,4,208,1,16,0,9,34,4,208,33,16,208 2340 DATA 53,194,98,224,251,201,17,0,184,254,32,48,3,17,0,209,111,38,0 2350 DATA 41,41,41,25,201,92,38,0,84,203,37,1,15,225,9,78,35,70,235 2360 DATA 41,41,41,9,201,48,89,0,92,208,94,160,97,112,100,64,103,16,106 2370 DATA 224,108,176,111,128,114,80,117,32,120,240,122,192,125,144,128,96,131,48 2380 DATA 134,0,137,208,139,160,142,112,145,64,148,16,151,224,153,176,156,128,159 2390 DATA 80,162,32,165,240,167,192,170,144,173,96,176,0,0,0,0,0,0,256 ===== Controls ===== ↑ = UP ↓ = DOWN → = RIGHT ← = LEFT O = MOVE LADDER LEFT P = MOVE LADDER TO THE RIGHT EXIT/STOP = EXIT THE GAME ===== Loading the program ===== 1.- Insert the CP/M disc on side 2 2.- Write BASIC and wait for it to load 3.- Remove the CP/M disk and insert the disk containing the Aerial Antics game 4.- Type run "Aerials" and press the "ENTER" key ===== Download ===== * {{:otros:Aerial Antics (en) (Basic).zip|Aerial Antics (English) }}(game in dsk format, compressed with zip) * {{:otros:Aerial Antics (sp) (Basic).zip|Aerial Antics (Spanish) }}(game in dsk format, compressed with zip)