ROM Computer Magazine Archive ROM MAGAZINE ISSUE 6 — JUNE/JULY 1984 / PAGE 42

ROBOT HUNT
by Tom Tuong Tran

    The year is 2016 and earth has been taken over by robots due to an evil ruler name Zorek. Because Zorek was very powerful, the robots would listen to his every command. You take on the role of Bacork, leader of the rebellion, in order to stop the robots. Since Zorek had taken away any weapons that could be used against himself, the Rebels had to use their brains to defeat the fiendish ruler. This plan entailed you luring Zorek's robots into the death traps that are located in the forest of Nune.

    These traps have to be set first before the robots can be imprisoned. Each trap appears randomly on the screen after each robot is caught. They are set by moving your hero into the box with a question mark inside. After grabbing the question mark, one of six things will appear inside the trap. It will be either a Dollar sign(12 points), Medal(10 points), Vase(8 points), Fish(6 points), Bomb(4 points), or a magic circle. This magic circle will allow you to kill the robots. To activate the trap you must grab whatever is inside the box. The trap will then be activated. Once you have done this, a key will appear on the screen. With your hero, pick up the key. This is the key that you'll use to lock in the robot.
    Push your joystick in any one of eight directions to move Bacork around the screen in order to lure the robots into the traps. The robots will go in only through the space where you picked up the object. Once the robot is inside the trap go to one of the three remaining doors. Move your joystick to lock the robot inside. This will imprison the robot for good. Once you have imprisoned five robots, the level will end and a new screen will appear. Bonus points will then be added to your score.
    Each level consists of: From one to ten robots(depending on level), randomly placed poisonous vegetation(one touch and you lose a life), and holes where Bacork can fall in. This game, written in graphics mode zero, uses a redefined character set to draw all of the graphics. Different colors are made by turning on every second pixel. Have fun entrapping Zorek's robots. This game requires 32K and one joystick .


1 REM -------------------
2 REM -ROBOT HUNT
3 REM -BY:Tom Tuong Tran
4 REM -ROM MAGAZINE ISSUE 6
5 REM -------------------
6 DIM Xl(10),Yl(10),P(10),X(10),Y(10),Q$(40):LEVEL=1:Cl=1
7 FOR Q=8+16 TO 2+16 STEP -1:GRAPHICS Q:? #6:? #6:? #6;"    ROBOT HUNT":? #6:? #6;" BY: TOM TUONG TRAN":POKE 77,0
8 FOR W=1 TO 100:NEXT W:NEXT Q
9 ? #6:? #6:? #6;"    PLEASE WAIT..."
10 GOSUB 1000
11 FAST=0:GRAPHICS 0:SETCOLOR 2,0,0
12 LBYTE=PEEK(560):HBYTE=PEEK(561):SC=LBYTE+HBYTE*256+4:POKE SC-1,64+7
13 FOR Q=1 TO 3:POKE SC+Q+1,6:NEXT Q
14 FOR Q=1 TO 15:POKE SC+Q+4,2:NEXT Q
15 FOR Q=1 TO 4:POKE SC+Q+19,6:NEXT Q
16 POKE 82,1:POKE 752,1:POSITION 5,0:? "robot hunt":? "BY: TOM TUONG TRAN"
18 POSITION 3,17:? "OPTION=LEVEL=1":? " START=BEGIN":POKE 756,CHSET/256
20 K=2:V=1:E=1
40 K=2:Q$="!- THE MAGIC POWER THAT WILL HELP YOU":GOSUB 70
41 V=2:Q$="    DESTROY THE EVIL ROBOTS":GOSUB 70
42 Q$="#- THE KEY TO THE TRAP":GOSUB 70:E=6
43 Q$="$=12 POINTS    %=10 POINTS":GOSUB 70
45 Q$="&=08 POINTS    '=06 POINTS":GOSUB 70
47 Q$="(=04 POINTS    r=05 POINTS":GOSUB 70
50 GOSUB 75:GOTO 20
70 FOR Q=1 TO LEN(Q$):POSITION Q+E,K:? Q$(Q,Q):FOR S=1 TO 5:GOSUB 80:NEXT S:NEXT Q:K=K+V:RETURN
75 POSITION 1,2:FOR Q=1 TO 15:? "                                      ":NEXT Q:RETURN
80 IF PEEK(53279)=3 THEN LEVEL=LEVEL+1:IF LEVEL>10 THEN LEVEL=1
81 POSITION 16,17:? "    ";CHR$(30);CHR$(30);LEVEL:IF PEEK(53279)=6 THEN 90
83 RETURN
90 REM -ACTION START FROM HERE ON
95 GRAPHICS 0:POKE 756,CHSET/256:ROBOT=3:CL=80:SETCOLOR 2,(LEVEL-1)*2,0:CASE=0:FLAG=0:Z=0:COUNT=0:SCORE=0
99 SCREEN=PEEK(88)+256*PEEK(89):MOVE=SCREEN+40*Y+X:P(1)=SCREEN+40*Y(1)+X(1)
110 ? :FOR Q=1 TO 22:? "    ":NEXT Q:POKE 752,1
115 POSITION 2,1:? "ROBOT":? " HUNT";CHR$(29)
117 ? " HI    ":FOR Q=1 TO 2:? " SCORE ":? CHR$(12);CHR$(18);CHR$(18);CHR$(18);CHR$(18);CHR$(18);CHR$(123)
135 ? CHR$(124);"00000";CHR$(124):? CHR$(26);CHR$(19);CHR$(19);CHR$(19);CHR$(19);CHR$(19);CHR$(11):NEXT Q
140 POSITION 7-Cl,7:? HI
150 FOR Q=SCREEN TO SCREEN+39 STEP 2:POKE Q,85:POKE Q+1,86:POKE Q+40*23,86:POKE Q+40*23+1,85:NEXT Q
160 FOR Q=SCREEN TO SCREEN+40*23 STEP 80:POKE Q,87:POKE Q+8,87:POKE Q+39,87:POKE Q+40,88:POKE Q+48,88
170 POKE Q+79,88:NEXT Q
180 ? CHR$(29);CHR$(29);CHR$(29);CHR$(29);CHR$(29);" $..12 ":? " %..10 ": ? " &...8 ":? " '...6 "
190 ? " (...4":? " !...";CHR$(16):? " ";CHR$(16);"...5 "
200 FOR Q=1 TO LEVEL*5
210 GOSUB 950
220 POKE A,65+RND(0)*4
230 NEXT Q
250 FOR PO=SCREEN+21*40+2 TO SCREEN+40*21+ROBOT*2 STEP 2:POKE PO,79+128:NEXT PO
265 FOR Q=0 TO l0:GOSUB 950:X(Q)=Xl:Y(Q)=Yl:P(Q)=A:NEXT Q
270 RESTORE 4000
280 GOSUB 3500:GOSUB 591
310 IF STICK(0)<>15 THEN GOSUB 500
315 IF FLAG=1 THEN Z=Z+1:IF Z>=100 THEN Z=0:FLAG=0:CL=80
320 IF CASE<l AND INT(RND(0)*20)=0 THEN GOSUB 950:POKE A,31:GOSUB 896:CASE=1:X2=Xl:Y2=Yl:U=A
340 FOR M=0 TO FAST:GOSUB 700:NEXT M
410 GOTO 310
450 IF L=3 THEN SOUND 0,45,10,10:POKE MOVE,0:KEY=2:SOUND 0,0,0,0:RETURN
455 IF L=67 THEN FOR Q=10 TO 70:SOUND 0,Q,14,7-Q/10:NEXT Q:FOR S=1 TO 10:SOUND 0,120,8,10-S:NEXT S:GOTO 485
460 A=SCREEN+40*(Y+DY)+(X+DX):IF PEEK(A)=80 AND L=212 AND KEY=2 THEN 490
465 IF L=212 AND PEEK(A)=31 THEN GOSUB 600:GOSUB 950:POKE A,3:RETURN
470 IF L=1 THEN CL=81:FLAG=1:RETURN
471 IF L=81 THEN GOSUB 680:RETURN
472 IF L<=9 AND L>=4 THEN POKE MOVE,0:GOSUB 2000:RETURN
485 GOSUB 800:RETURN
490 SOUND 0,45,10,10:FOR Q=1 TO 10:IF P(Q)=A THEN W=Q
491 NEXT Q:SOUND 0,0,0,0
492 GOSUB 896:KEY=0:CASE=0:Y=Y-(DY):X=X-DX):MOVE=SCREEN+40*Y+X:COUNT=COUNT+1
493 GOSUB 950:X(W)=Xl:Y(W)=Yl:P(W=A:FLAG=1:IF COUNT<=4 THEN RETURN
494 POKE SCREEN+40*21+ROBOT*2,207:FOR Q=1 TO 22:FOR W=9 TO 38:SOUND 0,W,10,ABS(16-Q)
495 IF PEEK(SCREEN+40*Q+W)<>0 THEN SCORE=SCORE+1:GOSUB 2010
496 POKE SCREEN+40*Q+W,0:NEXT W:NEXT Q
497 IF LEVEL<10 AND FAST=2 THEN LEVEL=LEVEL+1:FAST=0:GOTO 499
498 FAST=FAST+1
499 SOUND 0,0,0,0:COUNT=0:SETCOLOR 2,(LEVEL-1)*2,0:GOTO 200
500 SOUND 0,200,10,10:ST=STICK(0)
510 DY=(ST=13 OR ST=9 OR ST=5)-(ST=14 OR ST=10 OR ST=6)
520 DX=(ST=7 OR ST=6 OR ST=5)-(ST=11 OR ST=10 OR ST=9)
530 SOUND 0,0,0,0:X=X+DX:Y=Y+DY:POKE MOVE,0:MOVE=SCREEN+40*Y+X:L=PEEK(MOVE)
545 IF L<>0 THEN GOSUB 450
550 POKE MOVE,79:RETURN
591 GOSUB 950:X=Xl:Y=YI:MOVE=A
592 POKE SCREEN+40*21+ROBOT*2,128:FOR Q=5 TO l0:POKE MOVE,79+128:FOR S=1 TO 5:SOUND 0,Q*S,10,10:NEXT S
593 POKE MOVE,79:FOR S=1 TO 10:SOUND 1,Q+S+100,10,10:NEXT S:NEXT Q
594 SOUND 0,0,0,0:SOUND 1,0,0,0:RETURN
600 POKE MOVE,0
610 A=SCREEN+40*(Y+DY)+(X+DX)
620 B=4+INT(RND(0)*4):POKE A,B:D=INT(RND(0)*20)
630 IF D=18 THEN POKE P(W),0:X(W)=X2:Y(W)=Y2:P(W)=U:FOR Q=1 TO 40:POKE U,128+80:POKE U,80:SOUND 0,Q,10,10:NEXT Q
640 SOUND 0,0,0,0:IF D=10 THEN POKE A,1
670 RETURN
680 SCORE=SCORE+5:GOSUB 2010
681 FOR Q=1 TO l0:IF P(Q)=MOVE THEN W=Q
682 NEXT Q
683 GOSUB 950:X(W)=Xl:Y(W)=Yl:P(W=A:RETURN
700 A=INT(RND(0)*(10-LEVEL)):IF A=0 THEN 705
701 RETURN
705 W=1+INT(RND(0)*LEVEL):POKE P(W),0:Xl(W)=X(W):Yl(W)=Y(W)
710 IF X(W)>X THEN X(W)=X(W)-1
720 IF X(W)<X THEN X(W)=X(W)+1
730 IF Y(W)>Y THEN Y(W)=Y(W)-1
740 IF Y(W)<Y THEN Y(W)=Y(W)+1
750 P(W)=SCREEN+40*Y(W)+X(W)
751 IF PEEK(P(W))=79 AND CL=80 THEN POKE MOVE,0:GOSUB 800
752 IF PEEK(P(W))<>0 THEN Y(W)=Y1(W):X(W)=Xl(W):P(W)=SCREEN+40*Y1(W)+Xl(W)
760 POKE P(W),CL:RETURN
800 Al=PEEK(MOVE):A2=PEEK(MOVE+40):POKE MOVE,32:POKE MOVE+40,64
805 FOR Q=1 TO 200:NEXT Q
806 RESTORE 3000
807 GOSUB 3500
812 ROBOT=ROBOT-1:IF ROBOT<=0 THEN 2050
820 POKE MOVE,AI:POKE MOVE+40,A2:GOSUB 591:RETURN
896 SOUND 0,100,10,10:POKE A+1,212:POKE A-1,212:POKE A+40,212:POKE A-40,212
897 POKE A+39,128:POKE A+41,128:POKE A-41,128:POKE A-39,128:SOUND 0,0,0,0:RETURN
950 Xl=9+INT(RND(0)*38)
960 Yl=3+INT(RND(0)*19)
970 A=SCREEN+40*Y1+Xl:B=PEEK(A):B1=PEEK(A+1):B2=PEEK(A-1):B3=PEEK(A+40):B4=PEEK(A-40):B5=PEEK(A+41):B6=PEEK(A+39)
971 B7=PEEK(A-39):B8=PEEK(A-41)
975 IF B=0 AND Bl=0 AND B2=0 AND B3=0 AND B4=0 AND B5=0 AND B6=0 AND B7=0 AND B8=0 THEN RETURN
980 GOTO 950
1000 CHSET=(PEEK(106)-8)*256:FOR I=0 TO 1023:POKE CHSET+I,PEEK(57344+I):NEXT I:POKE 756,209
1001 RESTORE 1005
1002 READ A:IF A=-1 THEN POKE 756,CHSET/256:SOUND 0,0,0,0:RETURN
1003 SOUND 0,A,10,10:FOR J=0 TO 7:READ B:POKE CHSET+A*8+J,B:NEXT J
1004 GOTO 1002
1005 DATA 1,0,0,60,66,90,66,60,0
1006 DATA 2,54,54,54,0,0,0,0,0
1007 DATA 3,60,102,102,60,24,24,120,120
1008 DATA 5,0,0,68,84,84,16,124,0
1009 DATA 6,123,30,27,31,124,254,254,124
1010 DATA 7,0,140,222,251,255,222,152,0
1011 DATA 8,2,10,8,20,85,85,85,20
1012 DATA 32,60,126,255,219,255,126,102,60
1013 DATA 64,195,102,60,102,195,0,0,0
1014 DATA 65,137,217,219,243,103,102,60,24
1015 DATA 66,27,219,219,251,255,63,24,24
1016 DATA 67,0,126,195,129,129,195,126,0
1017 DATA 68,24,60,126,110,243,255,24,60
1018 DATA 69,99,102,198,198,108,108,120,24
1019 DATA 75,25,25,25,249,249,85,85,85
1020 DATA 76,85,85,85,95,95,88,88,88
1021 DATA 79,126,255,219,255,255,255,60,231
1022 DATA 80,20,85,65,85,85,85,20,85
1023 DATA 81,40,170,130,170,170,170,40,170
1024 DATA 83,0,0,0,255,255,85,85,85
1025 DATA 85,162,162,162,0,170,170,170,170
1026 DATA 86,170,170,170,0,138,138,138,138
1027 DATA 87,162,162,162,162,160,162,162,162
1028 DATA 88,162,162,162,2,162,162,162,162
1029 DATA 89,85,85,85,255,255,0,0,0
1030 DATA 90,88,88,88,95,95,85,85,85
1031 DATA 123,85,85,85,249,249,25,25,25
1032 DATA -1
1033 DATA -1
2000 SCORE=SCORE+2*(10-L)
2010 SOUND 1,100,10,10:G=SCORE:C=0
2020 IF G>0.99 THEN G=G/10:C=C+1:GOTO 2020
2030 POSITION 7-C,11:? SCORE
2040 SOUND 1,0,0,0:RETURN
2050 POSITION 13,9:? " G A M E - 0 V E R ":IF SCORE>HI THEN HI=SCORE:CI=C
2051 POSITION 10,11:? " PRESS START TO CONTINUE "
2052 POSITION 13,13:? " OR OPTION FOR MENU "
2060 IF PEEK(53279)=6 THEN 90
2080 IF PEEK(53279)=3 THEN 10
2090 GOTO 2060
3000 DATA 121,30,0,0,121,10,91,80,121,30,91,10,72,80,121,30,91,10,72,40,121,30,91,10
3010 DATA 72,10,121,30,91,10,72,80,91,30,72,10,60,40,72,30,91,30,121,10,0,0,121,80,121,30,0,0,121,10,91,80,-1,0
3500 READ NO,SP:IF NO=-1 THEN SOUND 0,0,0,0:RETURN
3510 SOUND 0,NO,10,10:POKE 540,SP
3520 IF PEEK(540)<>0 THEN 3520
3530 GOTO 3500
4000 DATA 121,10,91,10,72,5,91,5,121,10,72,10,91,10,72,5,91,5,121,10,72,10
4010 DATA 91,10,72,5,91,5,121,10,91,10,72,20,91,10,-1,0

0 REM * CHECK DATA *
1 DATA 6867,351,283,54,913,355,259,757,61,56,893,370,544,366,417,426,58,704
20 DATA 9916,962,798,114,751,682,698,704,313,302,437,111,440,806,326,876,750,846
115 DATA 10014,861,909,934,610,202,327,556,858,793,485,908,380,768,34,683,116,590
310 DATA 8146,177,579,796,427,829,549,610,422,370,399,271,642,486,281,584,217,507
494 DATA 6321,207,861,607,57,109,749,78,492,444,38,702,713,105,385,223,476,75
610 DATA 14245,878,896,988,409,856,931,567,779,950,708,851,769,954,951,960,957,841
751 DATA 10255,628,637,684,107,661,120,962,635,354,376,896,465,460,870,948,601,851
1000 DATA 6308,567,159,80,157,924,769,657,100,831,175,107,830,275,14,275,194,194
1017 DATA 6175,180,306,118,40,346,2,264,942,277,292,388,289,953,37,154,793,794
2000 DATA 10197,636,131,557,887,705,571,303,912,789,780,935,270,561,298,97,830,935
4000 DATA 1674,800,874