Pinball by Kotai
A downloadable game
1 ' *** INICIALIZACIÓN GRÁFICOS 1 SCREEN 1,2,0:COLOR 15,1,1:KEYOFF:WIDTH 32:CLEAR 1500:DEFINT A-U:FOR I=0TO 3:S$="":FOR J=1TO 32:READ A$:S$=S$+CHR$(VAL("&h"+A$)):NEXT:SPRITE$(I)=S$:NEXT:FOR I=0TO 63:READ A$:FOR J=768TO 1024STEP 64:VPOKE J+I,VAL("&H"+A$):NEXT J,I:FOR I=0TO 4:READ A 2 ' *** PINTAR FONDO Y SPRITES (el SOUND 7 es para activar en todos los canales el tono sin ruido 10111000 = 184, el SOUND 12 es la duración de cada sonido y el SOUND 10 indicamos que el canal C usará el volumen de la envolvente 13 2 VPOKE8204+I,A:NEXT:FOR I=0TO22:READ A$:PRINT A$:NEXT:PUTSPRITE 1,(50,168),15,0:PUTSPRITE 2,(86,168),15,2:PUTSPRITE 0,(120,5),14,3:ON SPRITE GOSUB 6:SPRITE ON:H=4:Y=190:A$="PUSH SPACE":B$="GAME OVER":C$=A$:SOUND 7,184:SOUND 12,15:SOUND 10,16:GOTO5 3 ' *** MOVIMIENTO BOLA (en vez de un PUTSPRITE que escribe 4 registros de memoria hacemos 2 VPOKE, uno para la Y y otro para la X de la bola) 3 X=X+W:Y=Y+V:VPOKE 6912,Y:VPOKE 6913,X:E=6145+X\8+(Y\8)*32:A=VPEEK(E):B=VPEEK(E+31):C=VPEEK(E+33):D=VPEEK(E+64):Z=Z-(Y-V-1-Z)*(D>97):W=W+2*W*((B>97AND W<0)OR(C>97AND W>0)):V=V+1.5*V*((V>0 AND D>97)OR(A>97 AND V<0))-.5*((Y<Z AND V<1)OR(V>=0 AND V<8)) 4 ' *** MOVIMIENTO PALAS pintamos el nº de sprite y la posición Y con VPOKE así solo cambiamos 2 registros de memoria en vez de 4 que escribe PUT SPRITE 4 S=STICK(0):F=F-4*(F<8AND(S>4OR S=1))+4*(F>0AND(S=0OR(S>1AND S<5))):L=L-(F=8)+L*(F<>8):VPOKE 6918,F:VPOKE 6916,168-F:G=G+4*(G>0AND S>0AND S<6)-4*(G<8 AND(S=0OR S>5)):M=M-(G=0)+M*(G<>0):VPOKE 6922,G:VPOKE 6920,160+G:ON-(Y<168)GOTO 3 5 ' *** MUERTE (el SOUND 8,0 es para detener el sonido del canal A (altura/velocidad bola) y eñ SOUND 8,13 para volverlo a activar. El SOUND 5,1 es para el todo del sonido de soltar bola y el SOUND 13,1 para que suene) 5 Y=Y-(Y<188):VPOKE 6912,Y:LOCATE 21,11:PRINT C$:SOUND 8,0:S=STRIG(0):IF S=0 GOTO 5 ELSE SOUND 5,1:SOUND 13,1:SOUND 8,0:H=H-1:VPOKE 6717,48+H:LOCATE 21,11:PRINT" ":V=4:W=-1.4:X=136:Y=-4:Z=50:G=8:IF H=0 THEN C$=B$:H=4:GOTO 3 ELSE C$=A$:GOTO 3 6 ' *** COLISIÓN BOLA CON PALAS (movemos la Y y volvemos a pintar la bola con VPOKE para que deje de saltar el ON SPRITE GOSUB sin tener que hacer un SPRITE OFF y luego un SPRITE ON 6 Y=Y-2:VPOKE 6912,Y:V=V+1.1*V*(V>0 AND ((X>68 AND (G=8 OR M>2)) OR (X<68 AND (F=0 OR L>2))))+2.5*V*(V>0 AND ((X>68 AND (G=4 OR (G=0 AND M<3))) OR (X<68 AND (F=4 OR (F=8 AND L<3))))):Z=Y-V*2:SOUND 5,16+V:SOUND 13,1:RETURN 7 ' *** SPRITES PALAS 7 DATA 60,F8,FE,FF,7F,7F,1F,7,1,0,0,0,0,0,0,0, 0,0,0,80,E0,F8,FE,FE,FF,7F,1F,6,0,0,0,0 8 DATA 0,0,0,0,0,3F,7F,FF,FF,7F,3F,0,0,0,0,0, 0,0,0,0,0,FC,FE,FF,FF,FE,FC,0,0,0,0,0 9 DATA 0,0,0,1,7,1F,7F,7F,FF,FE,F8,60,0,0,0,0, 6,1F,7F,FF,FE,FE,F8,E0,80,0,0,0,0,0,0,0 10 ' *** SPRITE BOLA 10 DATA 0,0,0,3,7,E,1D,1B,1F,1B,1F,F,7,3,0,0, 0,0,0,E0,F0,F8,FC,FC,FC,FC,FC,F8,F0,E0,0,0 11 ' *** VPOKES 11 DATA 3C,7E,E7,C3,C3,E7,7E,3C 12 DATA 0,0,0,0,0,0,0,0 13 DATA 1,3,7,F,1F,3F,7F,FF 14 DATA FF,7F,3F,1F,F,7,3,1 15 DATA 1,1,3,3,7,F,3F,FF 16 DATA FF,3F,F,7,3,3,1,1 17 DATA FF,FC,F0,E0,C0,C0,80,80 18 DATA 80,80,C0,C0,E0,F0,FC,FF 19 ' *** COLORES 19 DATA 164,74,70,100,76 20 ' *** MAPA 20 DATA qiqiqiqi~eqiqiqita` 21 DATA ifaaaaa}g|faaaaaaaa 22 DATA qaaaaaaawlaaaaaaaav 23 DATA iaaaaaaaaaaa†…aaai 24 DATA qaavquaaaaaa€aaaq 25 DATA iaaqpqaaaaaa‡„aaai KOTAI 2021 26 DATA qaawqtaaaaaaaaaaaaq 27 DATA iaaaaaaaaaaaaaaaazi 28 DATA qkaaaaaaanimaaaaaiq 29 DATA iqaaaaaaaihiaaaaa{i 30 DATA qiaaaaaaaoilaaaaaaq 31 DATA iraaaaaaaaaaaaaaaai 32 DATA qaaaaaaaaaaaaaaxaaq 33 DATA iaaaaaaaaaaaaaaxaai 34 DATA qaa†…vuaaaaaaanmaaq 35 DATA iaa‡„wtaaaaaaaolaai 36 DATA qaaaaaaaaaaaaaaaaaq 37 DATA isaaaaaaaaaaaaaaazi BALLS 38 DATA qisaaaaaaaaaaaaaziq 39 DATA iqisaaaaaaaaaaaziqi 40 DATA qa}isaaaaaaaaazi~aq 41 DATA igaqixaaaaaaaxiqadi 42 DATA qiqiqlaaaaaaaoqiqiq 490 ' 500 ' *** VARIABLES 510 ' A = VPEEK arriba de la bola 520 ' B = VPEEK izquierda de la bola 530 ' C = VPEEK derecha de la bola 540 ' D = VPEEK abajo de la bola 550 ' E = dirección VPEEK 560 ' F = posición pala izquierda en 3 valores:(0= \; 4= -; 8= /;) 570 ' G = posición pala derecha en 3 valores: (0= \; 4= -; 8= /; 580 ' H = bolas/vidas 590 ' I = bucles nivel 1 600 ' J = bucles nivel 2 610 ' K = 620 ' L = tiempo que llevamos con la palanca izquierda levantada 630 ' M = tiempo que llevamos con la palanca derecha levantada 640 ' N = 650 ' O = 660 ' P = 670 ' Q = 680 ' R = 690 ' S = 700 ' T = 710 ' U = 720 ' V = velocidad del eje Y de la bola 730 ' W = velocidad del eje X de la bola 740 ' X = X de la bola 750 ' Y = Y de la bola 760 ' Z = altura del salto (Y en la que la bola empieza a perder velocidad)
Status | Released |
Author | BASIC 10Liner |
Genre | Action |
Tags | 8-Bit, basic, basic10liner, MSX |
Download
Development log
- Added gameplay video by The Foreseen Arcade34 days ago
Leave a comment
Log in with itch.io to leave a comment.