' TETRIS NX RANDOMIZE TIMER GAMEPAD 1 REM WAS8BIT DIM GLOBAL GETCHAR(7,7),TETSPIN(7),TETCHAR(7) FOR I=1 TO 7 READ TETCHAR(I),TETSPIN(I) NEXT I DATA 1,0, 2,3, 6,3, 10,1, 12,1, 14,1, 16,3 BG 1 BG FILL 0,0 TO 19,15 CHAR 20 GLOBAL XSPR,YSPR,ISPR,SPIN,CHADD,SPR,IPAL,ISET CHADD=$8000 SPR=64 GLOBAL IANI,ANIFROM,ANITO,ANIMAX,WANI IANI=0 ANIFROM=32 ANITO=20 ANIMAX=10 RESET: ISPR=RND(6)+1 XSPR=8*8 YSPR=0 SPRITE 0,XSPR,YSPR,SPR SPRITE 0 SIZE 3 SPIN=0 IPAL=0 ISET=0 REDO: CALL READCHAR(TETCHAR(ISPR)+SPIN) CALL PRINTCHAR WAIT 5 DO IF RIGHT(0) THEN CALL SPRMOVE(1,0) IF LEFT(0) THEN CALL SPRMOVE(-1,0) REM IF UP(0) THEN CALL SPRMOVE(0,-1) IF DOWN(0) THEN CALL SPRMOVE(0,1) IF BUTTON TAP(0,0) THEN PLAY 0,80,1 SOUND 0 CALL SPRSPIN GOTO REDO END IF IF ISET=1 THEN CALL CHECKREMOVE GOTO RESET END IF CALL DOANI WAIT VBL LOOP SUB DOANI WANI=(WANI+1) MOD 90 IF WANI=0 THEN COPY CHADD+16*(ANIFROM+IANI),16 TO CHADD+16*ANITO ADD IANI,1,0 TO ANIMAX END IF END SUB SUB SPRSPIN ADD SPIN,1,0 TO TETSPIN(ISPR) CALL READCHAR(TETCHAR(ISPR)+SPIN) CALL PRINTCHAR WAIT VBL II=1 CALL CHECKCHAR(II) IF II=0 THEN ADD SPIN,-1,0 TO TETSPIN(ISPR) CALL READCHAR(TETCHAR(ISPR)+SPIN) CALL PRINTCHAR END IF END SUB SUB CHECKREMOVE BG 1 RERE: FOR Y=15 TO 0 STEP -1 TALLY=0 FOR X=0 TO 19 IF CELL.C(X,Y)<>20 THEN INC TALLY NEXT X IF TALLY=20 THEN CALL REMOVE(Y) GOTO RERE END IF NEXT Y END SUB SUB REMOVE(YY) PAL 1 SPRITE 0,,,68 FOR X=0 TO 19 CELL X,YY,21 NEXT X FOR S=34 TO 49 PLAY 2,S,1 SOUND 2 WAIT VBL NEXT S WAIT 15 PAL 3 FOR Y=YY TO 0 STEP -1 FOR X=0 TO 19 C=CELL.C(X,Y-1) IF C<1 THEN C=20 CELL X,Y,C NEXT X NEXT Y END SUB SUB SPRMOVE(DX,DY) OX=XSPR OY=YSPR FOR I=1 TO 8 XSPR=XSPR+DX YSPR=YSPR+DY SPRITE 0,XSPR,YSPR, CALL DOANI WAIT VBL NEXT I II=1 CALL CHECKCHAR(II) IF II=0 THEN XSPR=OX YSPR=OY IF DY=1 THEN INC IPAL PLAY 1,80,1 SOUND 1 END IF SPRITE 0,XSPR,YSPR, SPRITE 0 PAL IPAL IF IPAL=3 THEN CALL SETCHAR ISET=1 PLAY 1,90,1 SOUND 1 END IF END IF END SUB SUB CHECKCHAR(II) XX=XSPR\8 YY=YSPR\8 FOR X=0 TO 3 FOR Y=0 TO 3 G=GETCHAR(X,Y) IX=XX+X IY=YY+Y BG 1 C=CELL.C(IX,IY) IF G>0 THEN IF C=21 THEN II=0 IF IX<0 OR IX>19 THEN II=0 IF IY>15 THEN II=0 END IF NEXT Y NEXT X END SUB SUB SETCHAR PAL 3 XX=XSPR\8 YY=YSPR\8 BG 1 FOR X=0 TO 3 FOR Y=0 TO 3 G=GETCHAR(X,Y) IX=XX+X IY=YY+Y IF G>0 THEN CELL IX,IY,21 NEXT Y NEXT X END SUB SUB PRINTCHAR FOR X=0 TO 3 FOR Y=0 TO 3 C=GETCHAR(X,Y) IF C=0 THEN SADD=0 ELSE SADD=21 COPY CHADD+SADD*16,16 TO CHADD+(SPR+X+Y*16)*16 NEXT Y NEXT X SPRITE 0 PAL IPAL END SUB SUB READCHAR(ICHAR) SELCHAR=ICHAR AD=$8000+SELCHAR*16 FOR IPY=0 TO 7 FOR IPX=0 TO 7 BV=2^(7-IPX) PV=0 IF PEEK(AD) AND BV THEN PV=1 IF PEEK(AD+8) AND BV THEN PV=PV+2 GETCHAR(IPX,IPY)=PV NEXT IPX AD=AD+1 NEXT IPY END SUB #1:MAIN PALETTES 00152A3F0004080C0014283C00102030 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 C0C00000000000000000000000000000 0080E000000000000000000000000000 C0808000000000000000000000000000 00E02000000000000000000000000000 4040C000000000000000000000000000 00E08000000000000000000000000000 C0404000000000000000000000000000 0020E000000000000000000000000000 8080C000000000000000000000000000 00C06000000000000000000000000000 40C08000000000000000000000000000 0060C000000000000000000000000000 80C04000000000000000000000000000 40404040000000000000000000000000 000000F0000000000000000000000000 0040E000000000000000000000000000 80C08000000000000000000000000000 00E04000000000000000000000000000 40C04000000000000000000000000000 00000018180000000000000000000000 FF81BDBDBDBD81FFFFFFC3C3C3C3FFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000010000000000000000000000000 00000000100000000000000000000000 00000000080000000000000000000000 00000008000000000000000000000000 00000010080000000000000000000000 00000008100000000000000000000000 00000018180000000000000000000000 00000018000000000000000000000000 00000010100000000000000000000000 00000000180000000000000000000000 00000008080000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000000007E424242427E00 0000000000000000007E424242427E00 0000000000000000007E424242427E00 0000000000000000007E424242427E00 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000000007E424242427E00 0000000000000000007E424242427E00 0000000000000000007E424242427E00 0000000000000000007E424242427E00 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000000007E424242427E00 0000000000000000007E424242427E00 0000000000000000007E424242427E00 0000000000000000007E424242427E00 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000000007E424242427E00 0000000000000000007E424242427E00 0000000000000000007E424242427E00 0000000000000000007E424242427E00 #15:MAIN SOUND 380002AA14F70000080002AA14F70000 280000CC00FF00002800303019FE0000 38002020000000003800505000000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000