Trooper Posted April 11, 2007 Share Posted April 11, 2007 I've typed this game in for use on Atarimania.com. As you can see when you try to run it it hangs when you get caught by a "demon". I can't find the problem in the code so I thought I'd ask you guys to take a look at it: I suspect the problem should be somewhere around here since line 3200 is where it jumps when you get snapped by a demon. I decided to include the rest for you also if I should be wrong and also attached a disk image for you to try it out and see the crap-out for yourselves Thanks in advance for any assistance!! /T 3200 LVS=LVS-1:IF Z=BANK OR Z=BANK+128 THEN 3500 3220 FOR Q=1 TO 10:SOUND 0,150,10,10:POSITION MX,MY:? CHR$(DEMON):POSITION MNX,MNY:? CHR$(MAN) 3230 FOR W=1 TO 10:NEXT W:SOUND 0,250,10,10:POSITION MX,MY:? CHR$(MAN):POSITION MNX,MNY:? CHR$(DEMON) 3240 FOR W=1 TO 10:NEXT W:NEXT Q:SOUND 0,0,0,0:GOTO 3050 3500 FOR Q=1 TO 10:SOUND 0,50,10,10:POSITION DX,DY:? CHR$(DEMON):POSITION DX(A),DY(A):? CHR$(BANK) 3510 FOR W=1 TO 10:NEXT W:SOUND 0,150,10,10:POSITION DX,DY:? CHR$(BANK):POSITION DX(A),DY(A):? CHR$(DEMON) 3520 FOR W=1 TO 10:NEXT W:NEXT Q:SOUND 0,0,0,0 0 REM ****************** 1 REM ** ** 2 REM ** THE GOLD RUN ** 3 REM ** -by- ** 4 REM ** David Ryan ** 5 REM ** ** 6 REM ** N. IRELAND ** 7 REM ** 20/08/83 ** 8 REM ** ** 9 REM ****************** 10 GRAPHICS 0:TOT=0:LVS=3:GOSUB 32000:POKE 752,1:SETCOLOR 3,0,15 20 SETCOLOR 0,2,10:SETCOLOR 1,12,14:SETCOLOR 2,8,2:SETCOLOR 4,2,6 100 REM SET UP VARIABLES 110 DIM DX(3),DY(3):L=1:HOME=0:BARS=5 120 MAN=33:CACTUS=34:DEMON=35:BANK=36:GOLD=37:HI=0 200 REM SET UP DISPLAY 210 FOR A=1 TO 3:DX(A)=0:DY(A)=0:NEXT A 220 REM CACTUS 230 FOR A=1 TO 225-L*25:CX=INT(RND(0)*38)+1:CY=INT(RND(0)*21)+1:LOCATE CX,CY,Z:IF Z<>32 THEN 250 240 SOUND 0,100,10,10:POSITION CX,CY:? CHR$(CACTUS):SOUND 0,0,0,0 250 NEXT A 260 REM BANK 270 BX=INT(RND(0)*38)+1:BY=INT(RND(0)*2)+19:LOCATE BX,BY,Z:IF Z<>32 THEN 270 280 FOR E=1 TO 200 STEP 10:SOUND 0,E,10,10:POSITION BX,BY:? CHR$(BANK):NEXT E:SOUND 0,0,0,0 290 REM MAN 300 MX=INT(RND(0)*38)+1:MY=INT(RND(0)*6)+1:LOCATE MX,MY,Z:IF Z<>32 THEN 300 310 FOR E=200 TO 1 STEP -10:SOUND 0,E,10,10:POSITION MX,MY:? CHR$(MAN):NEXT E:SOUND 0,0,0,0 320 REM DEMONS 330 MAX=2-INT(L/4):IF MAX<1 THEN MAX=1 340 FOR A=1 TO MAX 350 DX(A)=INT(RND(0)*38)+1:DY(A)=INT(RND(0)*11)+10:LOCATE DX(A),DY(A),Z:IF Z<>32 THEN 350 360 POSITION DX(A),DY(A):? CHR$(DEMON) 370 FOR Q=15 TO 0 STEP -1:SOUND 0,Q,10,Q:SOUND 0,Q,8,Q:NEXT Q:SOUND 0,0,0,0 380 POSITION DX(A),DY(A):? CHR$(DEMON):SOUND 0,0,0,0:NEXT A 390 REM GOLD 400 FOR A=1 TO BARS 410 GX=INT(RND(0)*38)+1:GY=INT(RND(0)*21)+1:LOCATE GX,GY,Z:IF Z<>32 THEN 410 420 FOR E=1 TO 250 STEP 20:SOUND 0,E,12,10:POSITION GX,GY:? CHR$(GOLD):NEXT E:SOUND 0,0,0,0:NEXT A 430 POKE 87,1:POSITION 0,1:? #6;CHR$(156):POSITION 0,1:? #6;"_PRESS_FIRE___HI: ":POSITION 17,1:? #6;HI 440 IF STRIG(0)=0 THEN POSITION 0,1:? #6;CHR$(156):GOSUB 32540:GOTO 500 450 GOTO 440 500 REM MAN MOVEMENT 510 POKE 77,0:POKE 764,255:GOSUB 1000:IF STRIG(0)=0 THEN 7000 515 IF PEEK(764)<>255 THEN POKE 764,255:GOTO 6000 520 JS=STICK(0):IF JS<>14 AND JS<>11 AND JS<>13 AND JS<>7 THEN 500 530 MNX=MX+(JS=7)-(JS=11):MNY=MY+(JS=13)-(JS=14) 532 IF MNX<1 THEN MNX=38 534 IF MNX>38 THEN MNX=1 536 IF MNY>21 THEN MNY=1 538 IF MNY<1 THEN MNY=21 540 LOCATE MNX,MNY,Z 550 IF Z=DEMON OR Z=DEMON+128 THEN 3200:REM END OF GAME 560 IF Z=CACTUR OR Z=CACTUS+128 THEN 4000:REM REM MOVE CACTUS 570 IF Z=BANK OR Z=BANK+128 THEN FOR E=15 TO 0 STEP -1:SOUND 0,10,8,E:MNX=MX:MNY=MY:NEXT E:SOUND 0,0,0,0:GOTO 500 580 IF Z=GOLD OR Z=GOLD+128 THEN 5000:REM MOVE GOLD 590 SOUND 0,10,10,10:POSITION MNX,MNY:? CHR$(MAN):POSITION MX,MY:? " ":MX=MNX:MY=MNY:SOUND 0,0,0,0 600 POSITION BX,BY:? CHR$(BANK):GOTO 500 1000 REM DEMON MOVEMENT 1010 FOR A=1 TO MAX 1020 IF DX(A)>MX THEN DX=DX(A)-1 1030 IF DX(A)<MX THEN DX=DX(A)+1 1040 IF DY(A)<MY THEN DY=DY(A)+1 1050 IF DY(A)>MY THEN DY=DY(A)-1 1060 LOCATE DX,DY,Z 1070 IF Z=CACTUS OR Z=CACTUS+128 THEN 2000 1080 IF Z=BANK OR Z=BANK+128 THEN 3000:REM END OF GAME 1090 IF Z=GOLD OR Z=GOLD+128 THEN DX=DX(A):DY=DY(A) 1100 IF Z=MAN OR Z=MAN+128 THEN 3000:REM END OF GAME 1110 IF Z=DEMON OR Z=DEMON+128 THEN 2000 1120 IF DX(A)=DX AND DY(A)=DY THEN 1140 1130 POSITION DX,DY:? CHR$(DEMON):POSITION DX(A),DY(A):? " ":DX(A)=DX:DY(A)=DY 1140 NEXT A:RETURN 2000 REM DEMON BUMPS INTO CACTII 2010 RESTORE 2990:FOR W=1 TO INT(RND(0)*8)+1:READ QX,QY:NEXT W 2020 DQX=DX(A)+QX:DQY=DY(A)+QY 2030 IF DQX<1 THEN DQX=1 2040 IF DQX>38 THEN DQX=38 2050 IF DQY<1 THEN DQY=1 2060 IF DQY>21 THEN DQY=21 2070 LOCATE DQX,DQY,Z 2080 IF Z=BANK OR Z=BANK+128 THEN 3000:REM END OF GAME 2090 IF Z=GOLD OR Z=GOLD+128 OR Z=DEMON OR Z=DEMON+128 THEN 1140 2100 IF Z=MAN OR Z=MAN+128 THEN 3000:REM END OF GAME 2110 IF Z=CACTUS OR Z=CACTUS+128 THEN 1140 2120 DX=DQX:DY=DQY:GOTO 1130 2990 DATA -1,-1,0,-1,1,-1,-1,0,1,0,-1,1,0,1,1,1 3000 REM END OF GAME 3010 LVS=LVS-1:IF Z=BANK OR Z=BANK+128 THEN 3500 3020 FOR Q=1 TO 10:SOUND 0,150,10,10:POSITION DX,DY:? CHR$(DEMON):POSITION DX(A),DY(A):? CHR$(MAN) 3030 FOR W=1 TO 10:NEXT W:SOUND 0,250,10,10:POSITION DX,DY:? CHR$(MAN):POSITION DX(A),DY(A):? CHR$(DEMON) 3040 FOR W=1 TO 10:NEXT W:NEXT Q:SOUND 0,0,0,0 3050 FOR Q=250 TO 0 STEP -10:POKE 87,1:POSITION 13,1:? #6;"lives:";LVS:SOUND 0,Q,10,10:SOUND 1,Q,8,10 3060 POSITION 13,1:? #6;" ":SOUND 0,Q,10,10:SOUND 1,0,0,0 3070 IF LVS=0 THEN 3750 3080 BARS=BARS-HOME:POSITION 0,0:GOSUB 32540:POSITION MX,MY:? " " 3090 MX=INT(RND(0)*38)+1:MY=INT(RND(0)*6)+1:LOCATE MX,MY,X:IF Z<>32 THEN 3090 3100 FOR E=200 TO 1 STEP -10:SOUND 0,E,10,10:POSITION MX,MY:? CHR$(MAN):NEXT E:SOUND 0,0,0,0 3110 POSITION MNX,MNY:? " ":POSITION DX,DY:? " ":POSITION BX,BY:? CHR$(BANK):GOTO 430 3200 LVS=LVS-1:IF Z=BANK OR Z=BANK+128 THEN 3500 3220 FOR Q=1 TO 10:SOUND 0,150,10,10:POSITION MX,MY:? CHR$(DEMON):POSITION MNX,MNY:? CHR$(MAN) 3230 FOR W=1 TO 10:NEXT W:SOUND 0,250,10,10:POSITION MX,MY:? CHR$(MAN):POSITION MNX,MNY:? CHR$(DEMON) 3240 FOR W=1 TO 10:NEXT W:NEXT Q:SOUND 0,0,0,0:GOTO 3050 3500 FOR Q=1 TO 10:SOUND 0,50,10,10:POSITION DX,DY:? CHR$(DEMON):POSITION DX(A),DY(A):? CHR$(BANK) 3510 FOR W=1 TO 10:NEXT W:SOUND 0,150,10,10:POSITION DX,DY:? CHR$(BANK):POSITION DX(A),DY(A):? CHR$(DEMON) 3520 FOR W=1 TO 10:NEXT W:NEXT Q:SOUND 0,0,0,0 3530 GOTO 3050 3750 REM NEW GAME ? 3760 POKE 87,1:POSITION 0,0:? #6;" game over ":POSITION 0,1:? #6;" ANOTHER GO ? (Y/N)" 3770 POKE 764,255 3780 PZ=PEEK(764) 3790 IF PZ=43 THEN 3820 3800 IF PZ=35 THEN NEW 3810 GOTO 3780 3820 LVS=3:L=1:HOME=0:BARS=5:POKE 764,255:? #6;CHR$(125):POKE 559,0:GOSUB 32400 3830 SETCOLOR 0,2,10:SETCOLOR 1,12,14:SETCOLOR 2,8,2:SETCOLOR 4,2,6 3840 IF TOT>HI THEN HI=TOT 3850 TOT=0:GOTO 200 4000 REM MOVE CACTUS 4010 CX=MNX:CY=MNY 4020 CNY=CY-(JS=14)+(JS=13):CNX=CX+(JS=7)-(JS=11) 4030 IF CNX<1 THEN CNX=38 4040 IF CNX>38 THEN CNX=1 4050 IF CNY<1 THEN CNY=21 4060 IF CNY>21 THEN CNY=1 4070 LOCATE CNX,CNY,Z 4080 IF Z<>32 THEN MNX=MX:MNY=MY:FOR E=15 TO 0 STEP -1:SOUND 0,150,10,E:SOUND 1,10,8,E:NEXT E:GOTO 500 4090 POSITION CNX,CNY:? CHR$(CACTUS):GOTO 590 5000 REM MOVE GOLD 5010 GX=MNX:GY=MNY 5020 GNY=GY-(JS=14)+(JS=13):GNX=GX+(JS=7)-(JS=11) 5030 IF GNX<1 THEN GNX=38 5040 IF GNX>38 THEN GNX=1 5050 IF GNY<1 THEN GNY=21 5060 IF GNY>21 THEN GNY=1 5070 LOCATE GNX,GNY,Z 5080 IF Z=BANK OR Z=BAN+128 THEN 5200 5090 IF Z<>32 THEN MNX=MX:MNY=MY:FOR E=15 TO 0 STEP -1:SOUND 0,150,10,E:SOUND 1,10,8,E:NEXT E:GOTO 500 5100 POSITION GNX,GNY:? CHR$(GOLD):GOTO 590 5200 FOR Q=1 TO 3:FOR W=1 TO 250 STEP 20:SOUND 0,W,10,10:SOUND 1,W,8,10:NEXT W:NEXT Q 5210 FOR W=15 TO 0 STEP -1:SOUND 0,50,10,W:SOUND 1,50,12,W:NEXT W:SOUND 0,0,0,0:SOUND 1,0,0,0:HOME=HOME+1 5220 TOT=TOT+1:IF HOME=5 THEN HOME=0:GOTO 6000:REM NEW LEVEL 5230 POKE 87,1:POSITION 0,1:? #6;"bars home:";TOT:POKE 87,0 5240 GNX=GX:GNY=GY:GOTO 590 6000 REM NEW LEVEL 6010 FOR R=1 TO 2:FOR S=1 TO 4:FOR E=15 TO 0 STEP -2:SOUND 0,(250/R)/S,10,E:SOUND 1,(50)*S,10,E-1 6020 NEXT E:NEXT S:NEXT R:SOUND 0,0,0,0:SOUND 1,0,0,0 6030 POKE 87,1:POSITION 0,0:? #6;CHR$(156):POSITION 0,0:? #6;" A NEW LEVEL":FOR Q=1 TO 1000:NEXT Q 6040 L=L+1:BARS=5 6050 ? #6;CH$(125):GOSUB 32540 6060 SETCOLOR 0,2,10:SETCOLOR 1,12,14:SETCOLOR 2,8,2:SETCOLOR 4,2,6:GOTO 200 7000 REM CUT DOWN CACTUS 7010 RESTORE 2990:FOR Q=1 TO INT(RND(0)*8)+1:READ CX,CY:NEXT Q:CX=MX+CX:CY=MY+CY 7015 IF CX<1 OR CX>38 OR CY<1 OR CY>21 THEN 500 7020 LOCATE CX,CY,Z 7030 IF Z=CACTUS OR Z=CACTUS=128 THEN 7050 7040 FOR E=15 TO 0 STEP -1:SOUND 0,100,12,E:NEXT E:SOUND 0,0,0,0:GOTO 500 7050 FOR Q=100 TO 0 STEP -5:SOUND 0,Q,6,10:SOUND 1,Q,8,10:POSITION CX,CY:? " ":POSITION CX,CY:? CHR$(CACTUS) 7060 NEXT Q:POSITION CX,CY:? " ":SOUND 0,0,0,0:SOUND 1,0,0,0:GOTO 500 31999 REM REDEFINE CHARACTER SET 32000 POKE 106,PEEK(106)-5:GRAPHICS 0:ST=(PEEK(106)+1)*256:POKE 751,1:POKE 756,ST/256 32010 DIM XFR$(38):RESTORE 32050:FOR A=1 TO 38:READ C:XFR$(A,A)=CHR$(C):NEXT A 32020 Z=USR(ADR(XFR$)):RESTORE 32100 32030 READ X:IF X=-1 THEN RESTORE :GOTO 32400 32040 FOR Y=0 TO 7:READ Z:POKE Y+X+ST,Z:NEXT Y:GOTO 32030 32050 DATA 104,169,0,133,203,133,205,169,224,133,206,165,106,24,105,1,133,204,160,0,177,205,145,203,200,208,249 32060 DATA 230,204,230,206,165,206,201,228,208,237,96 32090 REM MAN 32100 DATA 8,48,32,48,48,184,48,48,204 32110 REM CACTUS 32120 DATA 16,0,32,34,34,42,32,32,32 32130 REM DEMON 32140 DATA 24,0,60,235,215,215,60,0,0 32150 REM BANK 32160 DATA 32,0,64,255,255,150,150,150,150 32170 REM GOLD 32180 DATA 40,102,102,102,102,102,102,102,102,-1 32400 REM SET UP KEY DISPLAY LIST 32410 RESTORE 32495 32420 FOR A=1536 TO 2000:READ D:IF D=-1 THEN 32435 32430 POKE A,D:NEXT A 32435 POKE 559,0:POKE 1540,PEEK(88):POKE 1541,PEEK(89):POKE 560,0:POKE 561,6:POKE 559,34 32440 SETCOLOR 0,2,10:SETCOLOR 1,12,14:SETCOLOR 2,8,2:SETCOLOR 4,2,6 32442 POKE 87,2:POSITION 5,0:? #6;"THE KEY":POSITION 5,1:? #6;"--- ---" 32444 POKE 87,1:POSITION 4,3:? #6;"the MAN is":POKE 87,0:POSITION 19,2:? CHR$(33) 32446 POKE 87,1:POSITION 4,7:? #6;"a DEMON is":POKE 87,0:POSITION 19,4:? CHR$(35) 32448 POKE 87,1:POSITION 4,11:? #6;"a CACTUS is":POKE 87,0:POSITION 19,6:? CHR$(34) 32450 POKE 87,1:POSITION 4,15:? #6;"the BANK is":POKE 87,0:POSITION 19,8:? CHR$(36) 32452 POKE 87,1:POSITION 3,19:? #6;"a GOLD BAR is":POKE 87,0:POSITION 19,10:? CHR$(37) 32460 POSITION 0,0:FOR A=1 TO 11:? #6;" ":NEXT A 32470 ? #6;" HIT any KEY":POKE 764,255 32480 FOR A=1 TO 255:SOUND 0,A,10,10:SOUND 1,255-A,12,10:SOUND 2,A/10,8,10 32485 SETCOLOR 4,INT(RND(0)*16),INT(RND(0)*16)+1:IF PEEK(764)=255 THEN NEXT A:GOTO 32480 32490 SOUND 0,0,0,0:SOUND 1,0,0,0:SOUND 2,0,0,0:POKE 764,255:? CHR$(125):POKE 559,0 32495 DATA 112,112,112,71,0,0,7,6,6,4,6,6,4,6,6,4,6,6,4,6,6,4,7,7,4,65,0,0,-1 32500 REM SET UP GAME DISPLAY LIST 32510 RESTORE 32600:FOR A=1536 TO 2000:READ D:IF D=-1 THEN 32530 32520 POKE A,D:NEXT A 32530 POKE 559,0:POKE 1540,PEEK(88):POKE 1541,PEEK(89):POKE 560,0:POKE 561,6:POKE 559,34 32540 POKE 87,1:POSITION 4,0:? #6;"the gold run":POSITION 0,1:? #6;"bars home";TOT 32550 POSITION 13,1:? #6;"lives:";LVS:POKE 87,0:RETURN 32600 DATA 112,112,112,70,0,0,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,65,0,6,-1 goldrun.zip Quote Link to comment Share on other sites More sharing options...
Wrathchild Posted April 11, 2007 Share Posted April 11, 2007 Line 3090, the check to see if a random position is free. The variable in the LOCATE statement should match that of the check. E.g. both X or both Z 3090 MX=INT(RND(0)*38)+1:MY=INT(RND(0)*6)+1:LOCATE MX,MY,Z:IF Z<>32 THEN 3090 Quote Link to comment Share on other sites More sharing options...
+bf2k+ Posted April 11, 2007 Share Posted April 11, 2007 hehehehe... Looking at this reminds me just how long it has been since I have written any Atari 8 BASIC code. Quote Link to comment Share on other sites More sharing options...
www.atarimania.com Posted April 11, 2007 Share Posted April 11, 2007 (edited) Trooper, many thanks for the hard work -- Atari Frog http://www.atarimania.com Edited April 11, 2007 by www.atarimania.com Quote Link to comment Share on other sites More sharing options...
Wrathchild Posted April 11, 2007 Share Posted April 11, 2007 With an avatar like that I just had to help out... Quote Link to comment Share on other sites More sharing options...
Goochman Posted April 11, 2007 Share Posted April 11, 2007 This brings back happy and frustrating memories - it was so cool to be able to type something in and have a new game! However, 90% of the time there was always a typo! Esp with those data statements! Quote Link to comment Share on other sites More sharing options...
Trooper Posted April 12, 2007 Author Share Posted April 12, 2007 Wrathchild: Thanks a lot!! After a while of staring at the listings one goes totally blind Atarimania: My pleasure! /T Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.