' TETRIS NX RANDOMIZE TIMER REM WAS8BIT MUSIC BG COPY 0,0,20,16 TO 0,0 WAIT 240 GAMEPAD 1 GLOBAL TETMAX TETMAX=20 DIM GLOBAL GETCHAR(7,7),TETSPIN(TETMAX),TETCHAR(TETMAX) FOR I=1 TO TETMAX READ TETCHAR(I),TETSPIN(I) NEXT I DATA 1,0, 2,3, 6,3, 10,1, 12,1, 14,1, 16,3 DATA 20,3, 24,1, 26,1, 28,3, 32,3, 36,3 DATA 40,0, 41,3, 45,3, 49,1, 51,1, 53,0, 54,1 BG 1 BG FILL 0,0 TO 19,15 CHAR 148 GLOBAL XSPR,YSPR,ISPR,SPIN,CHADD,SPR,IPAL,ISET,ISCORE,IPIECE,IROUND CHADD=$8000 SPR=140 GLOBAL IANI,ANIFROM,ANITO,ANIMAX,WANI,CELLEMPTY,CELLBLOCK IANI=0 ANIFROM=160 ANITO=148 ANIMAX=10 CELLEMPTY=148 CELLBLOCK=149 CALL DOSCORE(0) ISCORE=0 IPIECE=0 IROUND=0 RESET: INC IPIECE ISPR=RND((TETMAX-1))+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 R=RIGHT(0) L=LEFT(0) D=DOWN(0) RR=R AND NOT D LL=L AND NOT D DD=D AND NOT L AND NOT R DL=D AND L DR=D AND R IF RR THEN CALL SPRMOVE(1,0) IF LL THEN CALL SPRMOVE(-1,0) IF DD THEN CALL SPRMOVE(0,1) IF DL THEN CALL SPRMOVE(-1,1) IF DR THEN CALL SPRMOVE(1,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 DOSCORE(I) ISCORE=ISCORE+I BG 0 CLS 0 PAL 4 T$=STR$(ISCORE) WHILE LEN(T$)<9 T$="0"+T$ WEND S$=LEFT$(T$,3)+","+MID$(T$,4,3)+","+RIGHT$(T$,3) TEXT 0,0,S$ BG 1 END SUB 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)<>CELLEMPTY THEN INC TALLY NEXT X IF TALLY=20 THEN CALL REMOVE(Y) GOTO RERE END IF NEXT Y END SUB SUB REMOVE(YY) INC IROUND PAL 1 SPRITE 0,,,68 FOR X=0 TO 19 CELL X,YY,CELLBLOCK 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=CELLEMPTY CELL X,Y,C NEXT X NEXT Y CALL DOSCORE(IROUND*100) WAIT 15 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 AND DX=0 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=CELLBLOCK 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 WAIT 30 CALL DOSCORE(IPIECE) 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,CELLBLOCK 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=CELLBLOCK 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 001B1B07003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 C0C00000000000000000000000000000 0080E000000000000000000000000000 C0808000000000000000000000000000 00E02000000000000000000000000000 4040C000000000000000000000000000 00E08000000000000000000000000000 C0404000000000000000000000000000 0020E000000000000000000000000000 8080C000000000000000000000000000 00C06000000000000000000000000000 40C08000000000000000000000000000 0060C000000000000000000000000000 80C04000000000000000000000000000 40404040000000000000000000000000 000000F0000000000000000000000000 0040E000000000000000000000000000 80C08000000000000000000000000000 00E04000000000000000000000000000 40C04000000000000000000000000000 80C06000000000000000000000000000 2060C000000000000000000000000000 C0602000000000000000000000000000 60C08000000000000000000000000000 C0406000000000000000000000000000 20E08000000000000000000000000000 6040C000000000000000000000000000 80E02000000000000000000000000000 C040C000000000000000000000000000 E0A00000000000000000000000000000 C080C000000000000000000000000000 A0E00000000000000000000000000000 E0202000000000000000000000000000 2020E000000000000000000000000000 8080E000000000000000000000000000 E0808000000000000000000000000000 20E02000000000000000000000000000 4040E000000000000000000000000000 80E08000000000000000000000000000 E0404000000000000000000000000000 40E04000000000000000000000000000 C060C000000000000000000000000000 A0E04000000000000000000000000000 60C06000000000000000000000000000 40E0A000000000000000000000000000 C0800000000000000000000000000000 C0400000000000000000000000000000 40C00000000000000000000000000000 80C00000000000000000000000000000 80800000000000000000000000000000 C0000000000000000000000000000000 40404000000000000000000000000000 0000E000000000000000000000000000 80000000000000000000000000000000 80400000000000000000000000000000 40800000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FFFFC3C3C3C3FFFF0000000000000000 0000000000000000FFFFC3C3C3C3FFFF FFFFC3C3C3C3FFFFFFFFC3C3C3C3FFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 C0C00000000000000000000000000000 0080E000000000000000000000000000 C0808000000000000000000000000000 00E02000000000000000000000000000 4040C000000000000000000000000000 00E08000000000000000000000000000 C0404000000000000000000000000000 0020E000000000000000000000000000 8080C000000000000000000000000000 00C06000000000000000000000000000 40C08000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 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 #3:MAIN BG 00001410420442044204420442044204 42044204420442044204420442044204 42044204420442044204420495009500 95004001950095004001950095009500 40019500950040014001950040019500 95009500410195004101410195004101 41014101950041014101950041019500 41019500410195004101410141019500 41014101950095004101410195004101 41019500950041014101950041019500 95009500420195004201420195004201 42014201950042014201950042019500 42019500420142014201950042019500 42014201950095004201420195004201 42019500420195004201950042019500 95009500400240024002400240024002 40024002400240024002400240024002 40024002400240024002400241024102 41024102410241024102410241024102 41024102410241024102410241024102 41024102410241024102410241024102 41024102410241024102410241024102 41024102410241024102410242024202 42024202420242024202420242024202 42024202420242024202420242024202 42024202420242024202420242024202 42024202420242024202420242024202 42024202420242024202420240034003 40039500400340034003950040034003 40034003950040034003400395004003 40034003410341034103950095004103 41039500410341034103410341039500 41039500410341034103410341034103 41039500410395004103950041034103 41034103410341039500410341034103 41034103420342034203950042034203 95009500420342034203420342039500 42039500420342034203420342034203 42039500420342034203950042034203 42034203950042034203420395004203 42034203 #15:MAIN SOUND 380002AA14F70000080002AA14F70000 280000CC00FF000008003000190B0000 38002020000000003800505000000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 81054040020640400307404004884040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 1D3FD2293F001D3F00293F001D3F0029 3F001D3F00293F00223F002E3F00223F 002E3F00223F002E3F00223F002E3F00 213F00293F00213F00293F00213F0029 3F00213F00293F00223F002E3F00223F 002E3F00223F00223F00243F00253F00 273F00333F00273F00333F00273F0033 3F00273F00333F00223F002E3F00223F 002E3F00223F002E3F00223F002E3F00 213F00293F00213F00293F00213F0029 3F00213F00293F00223F002E3F00223F 002E3F002E3F00000000000000000000 223F002E3F00223F002E3F00223F002E 3F00223F002E3F00213F00293F00213F 00293F00213F00293F00213F00293F00 223F002E3F00223F002E3F00223F002E 3F00223F002E3F00213F00293F00213F 00293F00213F00000000000000000000 223F002E3F00223F002E3F00223F002E 3F00223F002E3F00213F00293F00213F 00293F00213F00293F00213F00293F00 223F002E3F00223F002E3F00223F002E 3F00223F002E3F00213F00293F00213F 00293F00213F00000000000000000000 353F00000000303F00313F00333F0000 0000313F00303F002E3F000000002E3F 00313F00353F00000000333F00313F00 303F00000000000000313F00333F0000 0000353F00000000313F000000002E3F 000000002E3F00000000000000000000 000000333F00000000363F003A3F0000 0000383F00363F00353F000000000000 00313F00353F00000000333F00313F00 303F00000000303F00313F00333F0000 0000353F00000000313F000000002E3F 000000002E3F00000000000000000000 353F00000000000000000000313F0000 0000000000000000333F000000000000 00000000303F00000000000000000000 313F000000000000000000002E3F0000 00000000000000002D3F000000000000 000000002D3F00000000000000000000 353F00000000000000000000313F0000 0000000000000000333F000000000000 00000000303F00000000000000000000 313F00000000353F000000003A3F0000 00003A3F00000000393F000000000000 00000000000000000000000000000000