10 DIME$(2,5),V(5),C$(5),G$(5),BX(6),BY(6),BE(6),BG$(6),HX(6),HY(6),HE(6) 30 GOTO5000 50 GOSUB2000 ' Control de la nave 100 IFT=0THEN180 110 GETK$:X1=X 115 IFK$="Z"THENIFX>5ANDY>5THENX=X-1:M=M-1 120 IFK$="X"THENIFX<34ANDY>5THENX=X+1:M=M+1 125 IFT=2THEN150:ELSESOUND3,500,11 ' Descenso de la nave 130 IFK$=CHR$(13)THENIFC>0THENC=C-10:CHAR1,10,3," ":PRINTUSING"###";C:GOTO175 140 CHAR1,X1,Y," ":Y=Y+1:M=M+40:IFPEEK(M+40)+PEEK(M+41)<>64THEN400:ELSE175 ' Ascenso de la nave 150 SOUND3,800,12:CHAR1,X1,Y," " 155 K=-K:IFK=1THENY=Y-1:M=M-40:IFPEEK(M)+PEEK(M+1)<>64THEN400 ' Control del disparo de la nave 160 IFS>0THEN165 162 IFK$=CHR$(13)THENS=M:K=1:ELSE175 165 IFPEEK(S)=73THENPOKES,32 170 S=S-40:IFS<3232THENS=0:GOTO175:ELSEIFPEEK(S)<>32THEN450 175 POKES,73:CHAR1,X,Y," ":GOTO200 ' La nave esta ensamblada 180 XN=XN+D:IFXN<4ORXN>31THEND=-D 185 CHAR1,XN-1,4," ":CHAR1,XN-1,5," " 190 U=U-1:GETK$:IFK$=CHR$(13)THENU=0 195 IFU=0THENX=XN+2:Y=5:T=1:K=1:M=3072+Y*40+X:CHAR1,X,4," " ' Control de los enemigos 200 IFB=1THENE$(E,A)=RIGHT$(E$(E,A),1)+LEFT$(E$(E,A),33):GOTO220 210 E$(E,A)=RIGHT$(E$(E,A),33)+LEFT$(E$(E,A),1) 220 CHAR1,3,V(A),C$(A)+E$(E,A):IFA<5THENA=A+1:B=-B:ELSEA=1:B=1 ' La nave colisiona con un enemigo? 225 IFT=0THEN100 230 F=PEEK(M)+PEEK(M+1):IFF<>64ANDF<>229THEN500 235 F=PEEK(M+40)+PEEK(M+41):IFF<>64ANDF<>233THEN500 240 GOTO100 ' Rutina de deteccin de colisin 400 IFY>4ANDY<18THEN500 410 IFT=1THENF=PEEK(M+40):I=PEEK(M+41):IFF>85ANDF<98ANDI>85ANDI<98THEN600 415 IFT=2THENF=PEEK(M)+PEEK(M+1):IFF=205THEN700 420 GOTO500 ' Destruir una nave enemiga 450 J=PEEK(S):IFJ<67ORJ>72THEN475 455 F=INT((S-3072)/40):I=S-3072-F*40:IFJ=68ORJ=70ORJ=72THENI=I-1 460 SOUND3,400,15:CHAR1,I,F,"":IFJ>70THENP=P+50:ELSEP=P+30 470 GOSUB5900:F=(F-5)/2:E$(2,F)=LEFT$(E$(2,F),I-3)+" "+MID$(E$(2,F),I):A=F 475 S=0:GOTO175 ' Perdemos una vida / Final de partida 500 CHAR1,X,Y," ":FORF=500TO100STEP-25:SOUND3,F,2:NEXT:IFS>0THENPOKES,32 505 IFY<7ANDT=2THENCHAR1,31,6,"?AAA...":GOSUB580:CHAR1,31,6," " 510 GOSUB5500:CHAR1,X,Y," ":IFL=1THEN550:ELSEL=L-1 520 GOSUB2200:CHAR1,L*2+4,24," ":IFHP>0THEN100:ELSE730 550 CHAR1,15,10,"GAME OVER":J=3000:GOSUB 5500:IFR17THENF=18:I=4:P=P+100:J=3:GOTO625 615 IFY=19ANDX>6THENF=7:I=4:P=P+100:J=2 620 IFY=20THENF=X:I=2:P=P+150:J=(X-8)/11+4 625 BE(J)=0:CHAR1,HX(HP),HY(HP)," ":J=800:GOSUB5500:GOSUB5900 630 T=2:K=1:E=2:HE(HP)=0:HP=HP-1:GOSUB5600:J=800:GOSUB5500:CHAR1,F,Y+2,LEFT$(" ",I) 640 GOSUB5800:GOTO100 ' La nave ensambla con la nave nodriza / Pasar nivel 700 CHAR1,XN+2,4," ":T=0:U=120:J=800:GOSUB5500:HR=HR+1:CHAR1,34-HR*2,3," " 720 IFHP>0THENE=1:GOSUB5600:GOSUB5500:GOSUB5800:GOTO100 730 IFHR<6THEN740:ELSECHAR1,12,8,"?BONUS 500 POINTS":J=1500:GOSUB5500 740 P=P+500:GOSUB5900:CHAR1,12,8," ":J=1000:GOSUB5500 750 FORHR=HRTO1STEP-1:CHAR1,34-HR*2,3," ":P=P+O*50:GOSUB5900:J=250:GOSUB5500:NEXT 760 O=O+1:J=1000:GOSUB5500:GOSUB5400:GOSUB2170:GOTO100 ' Pantalla de presentacin 2000 SCNCLR:GOSUB5800:CHAR1,4,0,"SCORE-1 SCAINET SCORE-2" 2005 GOSUB5900:CHAR 1,17,1,"?":J=R:GOSUB5910 2010 CHAR1,26,24,"CREDIT 0":CHAR1,9,5,"*** LUNAR RESCUE ***" 2020 CHAR1,13,11," " 2030 CHAR1,18,17,"1979":CHAR1,10,19," TAITO CORPORATION" 2050 GETKEYA$:CHAR1,6,24,"":CHAR1,5,1,"00000":O=1:L=3:P=0 2170 GOSUB5400:CHAR1,13,11,"PLAY PLAYER<1>" ' Pantalla que indica los puntos por hombre rescatado 2180 CHAR1,14,13,"=":PRINTUSING"### POINTS";O*50:J=1500:GOSUB5500:GOSUB5400 ' Mostrar la zona de juego 2190 XN=17:D=.5:HP=6:HR=0:FORF=1TO6:BE(F)=1:HE(F)=1:NEXT:GOSUB5700 2200 CHAR 1,4,2," ? ˞ ":CHAR1,5,3," FUEL 800" 2210 CHAR1,3,18," ":CHAR1,3,19,"":CHAR1,36,18,"":CHAR1,36,19,"" 2220 CHAR 1,3,20,"":PRINTTAB(36);"" 2230 CHAR 1,3,21,"":PRINTTAB(35);"" " 2240 CHAR 1,3,22," " 2250 CHAR 1,3,23," ":PRINTUSING"#";O 2260 CHAR1,5,10,"":CHAR1,31,12,"":CHAR1,25,18,"" 2270 FOR F=1TO6 2280 IFF=1ORF=6THENA$=" ":ELSEA$="" 2290 IFHE(F)=1THENCHAR1,HX(F),HY(F),A$+"" 2295 IFBE(F)=1THENCHAR1,BX(F),BY(F),BG$(F) 2300 NEXT ' Reiniciar las variables del juego 2580 A=1:B=1:X=19:Y=4:T=0:E=1:Q=8:C=800:S=0:U=120:GOSUB5600:GOSUB5800 2590 RETURN ' RUTINA: Redefinir los UDG e inicializar matrices 5000 POKE56,59:POKE52,59:CLR 5010 FORA=1536TO1570:READB:POKEA,B:NEXT:SYS1536 5020 FORF=15880TO16359:READB:POKEF,B:NEXT:GOSUB5100 5030 COLOR0,1:COLOR1,2:COLOR4,1:VOL8:TRAP5300 5040 R=2013:A$="? ":FORF=1TO5:C$(F)=MID$(A$,F,1):READG$(F):V(F)=5+2*F:NEXT 5050 FORF=1TO6:READHX(F),HY(F):NEXT 5060 FORF=1TO6:READBY(F),BX(F),BG$(F):NEXT 5070 GOTO50 ' RUTINA: Habilitar los UDG definidos 5100 PRINTCHR$(8):POKE 65299,60:POKE 65298,PEEK(65298)AND251:RETURN ' RUTINA: Deshabilitar los UDG definidos 5200 POKE65299,208:POKE65298,PEEK(65298)OR4:RETURN ' RUTINA: Volver al BASIC y restablecer los colores 5300 GOSUB5200:COLOR0,2:COLOR1,1:COLOR4,7:SCNCLR:PRINTERR$(ER),EL:END ' RUTINA: Borrar parte de la pantalla 5400 FORF=3TO23:CHAR1,2,F," ":NEXT:RETURN ' RUTINA: Pausa. Valor en "J". 5500 FORFF=0TOJ:NEXT:RETURN ' RUTINA: Reimprimir la tira de enemigos 5600 FORFF=1TO5:CHAR1,3,V(FF),C$(FF)+E$(E,FF):NEXT:RETURN ' RUTINA: Generar las filas de enemigos 5700 IFO>5THENJ=5:ELSEJ=O 5710 FORF=1TO2:FORI=1TO5 5715 E$(F,I)="" 5720 IFF=1THENN=INT(RND(1)*2)+1:ELSEN=INT(RND(1)*3)+3 5730 E$(F,I)=E$(F,I)+G$(N)+LEFT$(" ",RND(1)*6+(8-J)) 5740 IFLEN(E$(F,I))<28THEN5720 5750 E$(F,I)=LEFT$(E$(F,I)+" ",34) 5760 NEXTI,F 5770 RETURN ' RUTINA: Rutina de vaciado del buffer del teclado 5800 GETK$:IFK$<>""THEN5800:ELSERETURN ' RUTINA: Imprimir el marcador en formato "00000" 5900 CHAR1,5,1,"":J=P 5910 A$=RIGHT$("0000"+MID$(STR$(J),2),5):PRINTA$:RETURN ' RUTINA: Cdigo de la rutina ensamblador para redefinir los UDG 8000 DATA 169,0,133,208,169,208,133,209,169,0,133,210,169,60,133,211,162,4,160 8010 DATA 0,177,208,145,210,200,208,249,230,209,230,211,202,208,240,96 ' RUTINA: Grficos del juego 9000 DATA 0,20,42,193,65,69,58,0,0,0,24,38,65,50,12,0 9010 DATA 7,1,15,63,246,63,31,12,224,128,240,252,111,252,248,48 9020 DATA 1,15,15,26,127,28,8,0,0,224,224,176,252,56,16,0 9030 DATA 7,1,3,15,26,31,12,0,192,0,128,224,176,240,96,0 9040 DATA 0,0,3,3,3,3,0,0,0,0,8,28,8,0,0,0,0,16,40,84,40,0,0,0 9050 DATA 0,0,0,0,16,48,49,123,178,251,255,255,255,255,255,255 9060 DATA 128,128,128,192,192,192,224,240,240,248,248,188,252,220,222,254 9070 DATA 174,246,215,255,255,215,223,251,254,255,223,191,222,92,254,255 9080 DATA 1,1,1,3,3,3,7,15,15,31,31,61,63,59,123,127 9090 DATA 117,111,235,255,255,235,251,223,127,255,243,253,123,58,127,255 9100 DATA 255,255,255,255,255,255,255,255,255,127,44,45,108,111,236,255 9110 DATA 255,255,70,214,84,84,70,255 9120 DATA 255,255,63,255,127,31,63,7,255,255,255,236,237,237,237,236 9130 DATA 255,255,255,99,107,107,107,99,254,252,248,248,252,224,240,128 9140 DATA 255,127,31,127,63,15,31,1,255,255,255,252,253,252,255,252 9150 DATA 255,255,255,99,235,107,107,99,0,0,0,0,0,0,0,0,255,255,255,254,254,255,252,254 9160 DATA 0,28,28,73,62,28,20,54,0,0,0,0,0,0,0,0 9170 DATA 0,15,0,0,3,15,31,63,0,252,32,252,255,255,51,255 9180 DATA 3,31,63,255,224,128,0,0,192,248,252,255,7,1,0,0 9190 DATA 0,63,4,63,255,255,204,255,0,240,0,0,192,240,248,252 9200 DATA 63,31,15,3,0,0,0,0,255,255,255,255,255,63,15,7 9210 DATA 255,255,255,255,255,252,240,224,252,248,240,192,0,0,0,0 9220 DATA 3,31,63,255,225,143,31,58,192,248,252,255,135,241,248,92 9230 DATA 31,15,15,21,21,17,56,255,248,240,240,168,168,136,28,255 9240 DATA 0,0,0,0,0,1,15,31,0,0,0,0,0,128,240,248 9250 DATA 58,31,15,15,21,21,17,56,92,248,240,240,168,168,136,28 9260 DATA 1,15,58,31,15,53,37,96,128,240,92,248,240,172,164,6 9270 DATA 130,8,35,7,139,28,8,67,80,2,104,225,216,232,145,4 9280 DATA 60,126,219,255,102,60,66,36,60,66,153,161,161,153,66,60 9290 DATA 99,20,28,252,62,9,29,28 ' RUTINA: Datos de los enemigos y posicin de plataformas y hombrecitos 9500 DATA "","","","","" 9510 DATA 35,20,34,21,33,22,6,22,5,21,4,20 9520 DATA 20,17," ߡ",21,7,"",21,18,"",22,8,"",22,19,"",22,30,""