This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page,
please contact me immediatelly so I can remove it!
|
-
Entry name:Nessie
-
Category:Games
-
Publisher/Developer:Compute! Publications, Inc., Flop 5
-
Year:1989









Listing 1
100 REM 110 REM | NESSIE | 120 REM 130 REM - for all ATARI XL/XE 140 REM - BASIC & ML mix 150 REM (c) 1985 160 REM by Tom R. Halhill 170 REM COMPUTE! Publications 180 REM (p) 1989 190 REM by GIA Software 200 GOSUB 11000:REM Initialize 210 GOSUB 12000:REM Redefine characters 215 GOTO 13000:REM Setups 220 GOTO 10000:REM Main loop 1000 REM Move Nessie & decoys 1020 POKE SCREEN+COORD(OBJECT),0:NOOCOORD=COORD(OBJECT)+MOVE(INT(RND(0)*9)+1) 1040 IF NOOCOORD<40 OR NOOCOORD>239 THEN COORD(OBJECT)=INT(RND(0)*200)+40:RETURN 1060 POKE SCREEN+NOOCOORD,CHAR(OBJECT):COORD(OBJECT)=NOOCOORD:RETURN 2000 REM Snap photo 2020 POKE 77,0:FILM=FILM-1:POSITION 15,0:? #6;" ":POSITION 15,0:? #6;FILM:SOUND 0,0,0,0 2040 FRAME(PHOTO)=PEEK(53252):HAIR(PHOTO)=PEEK(53253):BLUR(PHOTO)=STICK(0):PHOTO=PHOTO+1 2060 SETCOLOR 4,9,4:IF FILM<6 THEN POKE 704,28 2080 IF FILM=0 THEN SOUND 0,240,10,15:POP:TIME=INT((PEEK(18)*65536+PEEK(19)*256+PEEK(20))/60):GOTO 2200 2100 BUTTON=STRIG(0):RETURN 2200 A=USR(ADR(VBOFF$)):SOUND 0,0,0,0:FOR I=1 TO 1000:NEXT I:GOTO 14000 10000 REM Main loop 10020 POKE HITCLR,0 10040 IF STRIG(0)=1 THEN BUTTON=1 10340 IF STRIG(0)=0 AND BUTTON=1 THEN POKE 712,14:SOUND 0,4,8,15:GOSUB 2000 10380 OBJECT=OBJECT+1:IF OBJECT>6 THEN OBJECT=1 10400 GOSUB 1000:REM Move objects 10420 GOTO 10000 11000 REM Init P/M & ML 11060 GRAPHICS 2+16:SETCOLOR 2,0,0:? #6;" nessie":? #6:? #6;" PLEASE WAIT":? #6;" 21 SECONDS" 11080 PM=PEEK(106)-8:PMBASE=256*PM:HITCLR=53278 11100 FOR I=PMBASE+512 TO PMBASE+768:POKE I,0:NEXT I 11120 RESTORE 11280:DIM WIDEFRAME$(20):FOR I=1 TO 20:READ A:WIDEFRAME$(I,I)=CHR$(A):NEXT I:REM Wide viewfinder 11140 RESTORE 11300:DIM TELEFRAME$(20):FOR I=1 TO 20:READ A:TELEFRAME$(I,I)=CHR$(A):NEXT I:REM Tele viewfinder 11160 RESTORE 11340:DIM WIDEHAIR$(20):FOR I=1 TO 20:READ A:WIDEHAIR$(I,I)=CHR$(A):NEXT I:REM Wide crosshair 11180 RESTORE 11360:DIM TELEHAIR$(20):FOR I=1 TO 20:READ A:TELEHAIR$(I,I)=CHR$(A):NEXT I:REM Tele crosshair 11200 POKE 704,130:POKE 705,198:REM Blue viewfinder & green crosshair 11220 POKE 559,46:POKE 623,1:POKE 53277,3:POKE 54279,PM:POKE 53256,3:POKE 53257,3:REM P/M setup 11240 HORIZ0=116:VERT0=PMBASE+512+61:HORIZ1=118:VERT1=PMBASE+640+66:REM Initial positions 11245 FOR I=1 TO 20:POKE VERT0+I,ASC(WIDEFRAME$(I)):NEXT I:POKE 53248,HORIZ0:REM Draw viewfinder 11250 FOR I=1 TO 20:POKE VERT1+I,ASC(WIDEHAIR$(I)):NEXT I:POKE 53249,HORIZ1:REM Draw crosshair 11260 REM Viewfinder shapes 11280 DATA 255,255,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,255,255,0 11300 DATA 255,129,129,129,129,129,129,129,129,255,0,0,0,0,0,0,0,0,0,0 11320 REM Crosshair shapes 11340 DATA 16,16,16,16,124,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0 11360 DATA 16,16,124,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 11380 REM Flip shape routine 11400 DIM FLIP$(25):RESTORE 11420:FOR I=1 TO 25:READ A:FLIP$(I,I)=CHR$(A):NEXT I 11420 DATA 104,104,133,204,104,133,203,104,133,207,104,133,206,160,0,177,206,145,203,200,192,20,208,247,96 11440 REM Read joymove routine 11460 RESTORE 11480:FOR I=0 TO 204:READ A:POKE 1536+I,A:NEXT I 11480 DATA 174,120,2,224,14,208 11490 DATA 3,32,172,6,224,6 11500 DATA 208,6,32,172,6,32 11510 DATA 107,6,224,7,208,3 11520 DATA 32,107,6,224,5,208 11530 DATA 6,32,140,6,32,107 11540 DATA 6,224,13,208,3,32 11550 DATA 140,6,224,9,208,6 11560 DATA 32,140,6,32,74,6 11570 DATA 224,11,208,3,32,74 11580 DATA 6,224,10,208,6,32 11590 DATA 172,6,32,74,6,76 11600 DATA 98,228,173,253,6,201 11610 DATA 48,240,25,206,253,6 11620 DATA 206,253,6,173,253,6 11630 DATA 141,0,208,206,251,6 11640 DATA 206,251,6,173,251,6 11650 DATA 141,1,208,96,96,173 11660 DATA 253,6,201,176,240,25 11670 DATA 238,253,6,238,253,6 11680 DATA 173,253,6,141,0,208 11690 DATA 238,251,6,238,251,6 11700 DATA 173,251,6,141,1,208 11710 DATA 96,96,172,252,6,192 11720 DATA 96,176,24,160,0,177 11730 DATA 203,145,205,136,192,0 11740 DATA 208,247,238,252,6,238 11750 DATA 252,6,238,250,6,238 11760 DATA 250,6,96,96,172,252 11770 DATA 6,192,28,144,24,160 11780 DATA 0,177,205,145,203,200 11790 DATA 192,255,208,247,206,252 11800 DATA 6,206,252,6,206,250 11810 DATA 6,206,250,6,96,96 11820 REM Set up vblank 11900 DIM VBSETUP$(11):RESTORE 11920:FOR I=1 TO 11:READ A:VBSETUP$(I)=CHR$(A):NEXT I 11920 DATA 104,162,6,160,0,169,7,32,92,228,96 11940 DIM VBOFF$(11):FOR I=1 TO 11:READ A:VBOFF$(I)=CHR$(A):NEXT I 11960 DATA 104,162,228,160,98,169,7,32,92,228,96 11980 DIM LENS$(18):DIM MOVE(9),CHAR(6),COORD(6),FRAME(20),HAIR(20),BLUR(20),PICTURE(20),CAPTION(30):RETURN 12000 REM Redefine characters 12020 CHSET=(PEEK(106)-8)*256:FOR I=0 TO 512:POKE CHSET+I,PEEK(57344+I):NEXT I 12021 RESTORE 12025 12022 READ A:IF A=-1 THEN RETURN 12023 FOR J=0 TO 7:READ B:POKE CHSET+A*8+J,B:NEXT J 12024 GOTO 12022 12025 DATA 1,255,255,192,192,192,192,129,192 12026 DATA 3,255,255,3,3,3,3,3,3 12027 DATA 4,3,3,3,3,3,3,3,3 12028 DATA 5,3,3,3,3,3,3,255,255 12029 DATA 6,0,0,0,0,0,0,255,255 12030 DATA 7,192,192,192,192,192,192,255,255 12031 DATA 8,192,192,192,192,192,192,192,192 12032 DATA 9,0,0,0,0,0,0,213,127 12033 DATA 10,0,0,64,192,85,127,126,0 12034 DATA 11,0,0,2,3,170,254,126,0 12035 DATA 12,0,0,0,0,0,0,171,254 12036 DATA 13,0,0,56,125,222,125,56,0 12037 DATA 14,0,0,28,190,123,190,28,0 12038 DATA 26,5,10,21,42,84,168,80,128 12039 DATA 27,255,255,0,0,0,0,0,0 12040 DATA 32,0,32,48,32,224,224,0,0 12041 DATA -1 13000 REM Set up screen 13020 SETCOLOR 4,9,4:POKE 756,CHSET/256:? #6;CHR$(125):SETCOLOR 3,12,2:SETCOLOR 0,4,8:SETCOLOR 2,0,0 13040 FILM=20:LENS=1:LENS$="wideangletelephoto":SCREEN=PEEK(88)+PEEK(89)*256 13060 ? #6;" ":? #6:? #6;" <select> ";LENS$(LENS,LENS+8):? #6;" <start> game" 13062 POSITION 0,8:? #6;CHR$(171);" NESSIE=2000/20000":POSITION 0,9:? #6;CHR$(192);" CROP = 100/ 1000" 13064 POSITION 0,10:? #6;CHR$(174);CHR$(172);" FOOLED= 50/ 500":POSITION 0,11:? #6;CHR$(186);" BLUR = 0" 13070 POSITION 10,7:? #6;CHR$(171) 13080 SOUND 0,0,0,0:POSITION 10,3:? #6;LENS$(LENS,LENS+8):IF PEEK(53279)=6 THEN 13160 13100 IF PEEK(53279)<>5 THEN 13080 13110 LENS=LENS+9:IF LENS>10 THEN LENS=1 13115 IF LENS=1 THEN 13125 13120 IF LENS>1 THEN 13140 13125 A=USR(ADR(FLIP$),VERT0,ADR(WIDEFRAME$)):POKE 53256,3:SOUND 0,160,10,15 13128 FOR I=VERT1 TO VERT1+2:POKE I,0:NEXT I:VERT1=VERT1+3:A=USR(ADR(FLIP$),VERT1,ADR(WIDEHAIR$)):POKE 53257,3 13130 POSITION 9,6:? #6;" ":POSITION 10,7:? #6;CHR$(171):HORIZ1=118:POKE 53249,HORIZ1:GOTO 13080 13140 A=USR(ADR(FLIP$),VERT0,ADR(TELEFRAME$)):POKE 53256,1:SOUND 0,80,10,15 13145 VERT1=VERT1-3:A=USR(ADR(FLIP$),VERT1,ADR(TELEHAIR$)):POKE 53257,1 13150 POSITION 10,7:? #6;" ":POSITION 9,6:? #6;"":HORIZ1=117:POKE 53249,HORIZ1:GOTO 13080 13160 SOUND 0,120,10,15:? #6;CHR$(125):POSITION 0,0:? #6;"nessie FILM=";FILM;"" 13180 COLOR ASC(""):PLOT 0,1:DRAWTO 19,1 13200 MOVE(1)=-20:MOVE(2)=-19:MOVE(3)=1:MOVE(4)=21:MOVE(5)=20:MOVE(6)=19 13220 MOVE(7)=-1:MOVE(8)=-21:MOVE(9)=250:CHAR(1)=9:CHAR(2)=139:CHAR(3)=77:CHAR(4)=201:CHAR(5)=14:CHAR(6)=204 13240 FOR OBJECT=1 TO 6:COORD(OBJECT)=INT(RND(0)*200)+40:POKE SCREEN+COORD(OBJECT),CHAR(OBJECT):NEXT OBJECT 13250 PHOTO=1 13260 POKE 1789,HORIZ0:POKE 1787,HORIZ1 13270 POKE 1788,61:POKE 203,0:REM VERT0 lo byte 13280 POKE 204,(PMBASE+512)/256:REM VERT0 hi byte 13290 POKE 1786,194:POKE 207,128:REM VERT1 lo byte 13300 POKE 208,(PMBASE+512)/256:REM VERT1 hi byte 13310 POKE 205,2:REM Lo byte for vert memory shift 13320 POKE 206,(PMBASE+512)/256:REM Hi byte for vert memory shift 13330 IF LENS>1 THEN POKE 1647,192:POKE 1680,106:REM Reset range check for telephoto 13340 A=USR(ADR(VBSETUP$)):POKE 18,0:POKE 19,0:POKE 20,0:SOUND 0,0,0,0:GOTO 220 14000 REM Develop film 14050 POKE 53277,0:POKE 53261,0:POKE 53262,0 14060 GRAPHICS 0:SETCOLOR 2,0,0:DLIST=PEEK(560)+256*PEEK(561):SCREEN=PEEK(88)+256*PEEK(89):REM P/M off 14070 POKE 756,CHSET/256:POKE 752,1:? CHR$(125);:POSITION 0,16:POKE 82,0 14080 RESTORE 14100:FOR I=6 TO 26:READ A:POKE DLIST+I,A:NEXT I 14100 DATA 6,6,6,2,2,6,6,6,2,2,6,6,6,2,2,6,6,6,2,2,6 14110 FOR I=1 TO 15:READ A:POKE SCREEN+672+I,A:NEXT I 14112 FOR I=PMBASE+512 TO PMBASE+768:POKE I,0:NEXT I 14115 DATA 36,37,54,37,44,47,48,41,46,39,0,38,41,44,45 14120 FOR II=1 TO 4 14140 FOR I=0 TO 19:READ A:POKE SCREEN+40+I,A:NEXT I 14160 DATA 1,27,3,0,1,27,3,0,1,27,3,0,1,27,3,0,1,27,3,0 14180 FOR I=0 TO 19:READ A:POKE SCREEN+60+I,A:NEXT I 14200 DATA 8,0,4,0,8,0,4,0,8,0,4,0,8,0,4,0,8,0,4,0 14220 FOR I=0 TO 19:READ A:POKE SCREEN+80+I,A:NEXT I 14240 DATA 7,6,5,0,7,6,5,0,7,6,5,0,7,6,5,0,7,6,5,0 14260 RESTORE 14160:SCREEN=SCREEN+140:NEXT II 14280 RESTORE 14300:SCREEN=PEEK(88)+256*PEEK(89):FOR I=0 TO 5:READ A:POKE SCREEN+606+I,A:NEXT I 14300 DATA 46,37,51,51,41,37 14350 FOR I=1 TO 20:READ A:PICTURE(I)=A:NEXT I 14355 DATA 61,65,69,73,77,201,205,209,213,217,341,345,349,353,357,481,485,489,493,497 14356 FOR I=1 TO 30:READ A:CAPTION(I)=A:NEXT I 14357 DATA 34,44,53,50,0,0,35,50,47,48,0,0,38,47,47,44,37,36,46,37,51,51,41,37,0,0,0,0,0,0 14360 RESTORE 14510:SCORE=0:SETCOLOR 1,0,0:FOR I=1 TO 21 14365 IF I=21 THEN 14520 14370 IF BLUR(I)<>15 THEN POKE SCREEN+PICTURE(I),90:X=0:GOSUB 14500:NEXT I 14380 IF HAIR(I)=4 AND FRAME(I)<>4 THEN SCORE=SCORE+2000:POKE SCREEN+PICTURE(I),203:X=18:GOSUB 14500:NEXT I 14390 F=FRAME(I):H=HAIR(I) 14400 IF F>3 AND F<>8 AND F<>9 AND F<>10 THEN SCORE=SCORE+100:POKE SCREEN+PICTURE(I),96:X=6:GOSUB 14500:NEXT I 14420 IF HAIR(I)>0 THEN SCORE=SCORE+50:POKE SCREEN+PICTURE(I),76:X=12:GOSUB 14500:NEXT I 14440 X=24:GOSUB 14500:NEXT I 14500 SOUND 0,12*I,10,7:READ A:FOR II=1 TO 6:POKE SCREEN+PICTURE(I)+A+II,CAPTION(II+X):NEXT II 14505 SOUND 0,0,0,0:RETURN:REM Print captions 14510 DATA 38,42,46,50,54,38,42,46,50,54,38,42,46,50,54,38,42,46,50,54,54:REM Caption locations 14520 FOR I=0 TO 6:SETCOLOR 0,5,I:FOR II=1 TO 8:NEXT II:NEXT I 14540 FOR I=0 TO 8:SETCOLOR 3,15,I:FOR II=1 TO 8:NEXT II:NEXT I 14550 FOR I=0 TO 10:SETCOLOR 1,12,I:FOR II=1 TO 8:NEXT II:NEXT I 14560 RESTORE 14570:FOR I=0 TO 6:READ A:POKE SCREEN+632+I,A:NEXT I 14570 DATA 51,35,47,50,37,0,29 14620 RESTORE 14640:FOR I=1 TO 22:READ A:POKE SCREEN+666+I,A:NEXT I 14640 DATA 52,47,0,50,37,48,44,33,57,0,51,46,33,48,0,51,40,53,52,52,37,50 14650 IF LENS>1 THEN SCORE=SCORE*10 14660 ? INT((4/TIME)*SCORE); 14680 IF STRIG(0)=1 THEN 14680 14700 SOUND 0,4,8,15:FOR I=1 TO 3:NEXT I:SOUND 0,0,0,0:POKE 53248,0:POKE 53249,0:POKE 704,130 14720 GRAPHICS 2+16:HORIZ0=116:VERT0=PMBASE+512+61:HORIZ1=118:VERT1=PMBASE+640+66:POKE 53277,3:POKE 559,46 14740 POKE 53256,3:POKE 53257,3:FOR I=1 TO 20:POKE VERT0+I,ASC(WIDEFRAME$(I)):NEXT I:POKE 53248,HORIZ0 14760 FOR I=1 TO 20:POKE VERT1+I,ASC(WIDEHAIR$(I)):NEXT I:POKE 53249,HORIZ1:GOTO 13000
References
Listing downloads
Copyright holder