'--------------------------- 'ۯ ޼ 2012.06.29 ' '[-] ' - ' ׯ޼Ŷ ݦ ż ޽ ' - ۯ ¹ ܽ ' - Ľ +10ޮ ' 10-ަ رֳ ' '[ۯ] ' E³ ۯ ' :³ (- ȶŲ) ' : (2 Ų ܾŲ) ' E (ܾŲ) ' '[ĸ ] ' +: ' ,:- ޽ ' (н ¶ +10ޮ ) ' ' - żĺ ȶ ' ޯ Ų ķ ' ճ ޹ ' ݸ ޳ ' ŵ  '--------------------------- ACLS:CLEAR 'L ÷ T=0 IF MID$(MEM$,0,8)!="BLOCK " THEN T=1 IF BUTTON() AND 256 THEN T=1 FOR I=1 TO T GOSUB @ALLINIT GOSUB @FONTSET I=1 NEXT FOR I=0 TO 15 T$=HEX$(I) CHRSET "BGU0U",I ,T$*64 CHRSET "BGU0U",I+16,((T$+"E")*4+("E"+T$)*4)*4 CHRSET "BGU0U",I+32,(T$*7+"E")*7+"E"*8 CHRSET "BGU0U",I+48,("E"+T$*8)*7+"E" NEXT I CHRSET "BGU0U",96,"100"*21+"1" CHRSET "BGU0L",96,"100"*21+"1" FOR I=0 TO 3 CHRREAD("SPU2",568%256+I),T$ CHRSET "SPU0",I,T$ CHRSET "SPS0L",I,T$ NEXT I PNLTYPE "OFF" GPAGE 1:GCLS 0:GBOX 0,-1,255,192,8:GPRIO 1 GPAGE 0:GCLS 0:GBOX 0,0,255,192,8:GPRIO 1 BGPAGE 1:BGFILL 1,0,0,32,24,96 BGPAGE 0:BGFILL 1,0,0,32,24,96 DIM MAP(8,12) DIM RECORD(20) DIM GCOUNT(20) YFIX=64 '· CR=8 'RECORD LOAD SYSBEEP=0 LOAD"MEM:"+PRGNAME$,FALSE SAVEFLAG=0 SYSBEEP=1 IF MID$(MEM$,0,8)!="BLOCK " THEN MEM$="BLOCK "+" "*248 FOR I=0 TO 10 RECORD(I)=VAL(MID$(MEM$,I*8+8,8)) NEXT MODESEL=0:MODEDISP=1 '0 @TITLE IF SAVEFLAG THEN SAVE"MEM:"+PRGNAME$ SAVEFLAG=0 TMODE=0:TCNT=0 GMODE=0 '1=1STAGE ONLY @TITLE0 SPPAGE 1:SPCLR SPPAGE 0:SPCLR BGCLR 0 CLS C=-1 COLOR 0:GOSUB @SCDISP VSYNC 1 @TITLELOOP C=(C+1)%15 IF TCHTIME==1 THEN @GAMESTART IF BUTTON(2) AND 4 THEN MODESEL=(MODESEL+10)%11 IF BUTTON(2) AND 8 THEN MODESEL=(MODESEL+1)%11 IF BUTTON() AND 64 THEN GOSUB @ALLINIT:END IF BUTTON() AND 128 THEN SAVEFLAG=1:GOTO @TITLE IF TMODE==0 THEN COLOR C:LOCATE 3,11:?" B L O C K K U Z U S H I " IF TMODE==1 THEN GOSUB @TITLE_RECDISP COLOR 0:LOCATE 8,21:?"(C) 2012 Zarala" COLOR C:PNLSTR 3,11, "T O U C H T O S T A R T" COLOR 0:PNLSTR 12,16, " : SAVE" COLOR 0:PNLSTR 12,18, " : QUIT" IF MODESEL!=0 THEN MODEDISP=1 FOR I=1 TO (MODEDISP==1) 'T$=" STAGE1 ONLY " T$=" NORMAL MODE " IF MODESEL!=0 THEN T$=" STAGE"+STR$(MODESEL)+" ONLY " COLOR 0:PNLSTR 9,14,T$+" " NEXT VSYNC 1 TCNT=TCNT+1 IF TCNT==300 THEN TMODE=1:GOTO @TITLE0 GOTO @TITLELOOP @TITLE_RECDISP T=0:_OPT=1 COLOR C:LOCATE 13,2:PRINT "RECORD" COLOR 0 FOR J=1 TO 10 _T=RECORD(J):GOSUB @TIMESTR LOCATE 7,J+4:PRINT "STAGE "+STR$(J) LOCATE 17,J+4:PRINT _RET$ T=T+_T NEXT _T=T:GOSUB @TIMESTR LOCATE 6,J+5:PRINT "(TOTAL" LOCATE 17,J+5:PRINT _RET$+")" COLOR C _T=RECORD(0):GOSUB @TIMESTR LOCATE 7,J+7:PRINT "ALL CLEAR" LOCATE 17,J+7:PRINT _RET$ RETURN @GAMESTART CLS:COLOR 0 BGPAGE 0 N=1 IF MODESEL==0 THEN GMODE=0:N=1 IF MODESEL!=0 THEN GMODE=1:N=MODESEL STAGE=N:GCNT=0 FOR I=0 TO 10 : GCOUNT(I)=0 : NEXT GOSUB @STAGEINIT GOTO @GAMELOOP @STAGEINIT SPPAGE 1:SPCLR SPPAGE 0:SPCLR GCNT0=GCNT:GOSUB @SCDISP BLKNUM=0 RESTORE "@STAGE"+STR$(STAGE) FOR Y=0 TO 11 READ T1$ FOR X=0 TO 7 T2$="&H"+MID$(T1$,X*2,2) CHIP=VAL(T2$) MAP(X,Y)=CHIP IF (CHIP!=0) AND (FLOOR(CHIP/16)!=2) THEN BLKNUM=BLKNUM+1 BGFILL 0,X*4,Y*2,X*4+3,Y*2+1,MAP(X,Y),0,0,0 NEXT VSYNC 1 NEXT MX=128:MY=192+96+YFIX MPX=0:MPY=0 GCNT0=GCNT:TSTOP=1 SPPAGE 0 SPSET 0,0,2,0,0,1,16,16 SPOFS 0,MX,MY SPHOME 0,8,8 SPSCALE 0,130 SPPAGE 1 SPSET 0,0,2,0,0,0,16,16 SPOFS 0,MX,MY-YFIX-192 SPHOME 0,8,8 SPSCALE 0,130 RETURN @GAMELOOP IF BLKNUM==0 THEN @STAGECLEAR IF (BUTTON() AND (256+512))==(256+512) THEN @TITLE IF (GMODE==1)AND(TSTOP==0) THEN IF (BUTTON() AND 65)==65 THEN GOSUB @STAGEINIT GOSUB @TCH GOSUB @BMOVE GOSUB @SCDISP_MINI SPPAGE 0:SPOFS 0,MX,MY SPPAGE 1:SPOFS 0,MX,MY-YFIX-192 OTX=TCHX:OTY=TCHY VSYNC 1 IF TSTOP==0 THEN GCNT=GCNT+1 GOTO @GAMELOOP @STAGECLEAR BEEP 43 GOSUB @SCDISP LOCATE 10,11:PRINT "STAGE CLEAR!" GCNT2=GCNT-GCNT0:GCOUNT(STAGE)=GCNT2 T= (RECORD(STAGE)==0) OR (RECORD(STAGE)>GCNT2) FOR I=1 TO T LOCATE 10,14:PRINT "NEW RECORD!!" RECORD(STAGE)=GCNT2 T1$=MID$(STR$(GCNT2)+" "*8,0,8) MEM$=SUBST$(MEM$,STAGE*8+8,8,T1$) SAVEFLAG=1 NEXT FOR Y=0 TO 22 STEP 2 BGFILL 0,0,Y,31,Y+1,0,0,0,0 VSYNC 1 NEXT VSYNC 60 CLS IF GMODE==1 THEN @TITLE IF STAGE==10 THEN @ENDING STAGE=STAGE+1 GOSUB @STAGEINIT GOTO @GAMELOOP @TCH IF (TCHFLAG==1) AND (TCHST==0) THEN BEEP 8 IF TCHST==0 THEN TCHFLAG=0:RETURN IF TCHFLAG==(-1) THEN RETURN IF (TCHFLAG==0) AND (TCHTIME>=8) THEN TCHFLAG=-1:RETURN TMP=POW(MX-TCHX,2)+POW(MY-(TCHY+192+YFIX),2) IF (TCHFLAG==0) AND (TMP>CR*CR*(CR/2)) THEN RETURN IF (TCHFLAG==0) THEN MPX=0:MPY=0:OTX=TCHX:OTY=TCHY:TCHFLAG=1:BEEP 0,-4096 MPX=TCHX-OTX:MPY=TCHY-OTY 'OTX=TCHX:OTY=TCHY IF (MPX*MPX+MPY*MPY)>225 THEN ANG=ATAN(MPY,MPX):MPX=COS(ANG)*15:MPY=SIN(ANG)*15 TSTOP=0 RETURN @BMOVE FLAG=0 _TX=MX+MPX:_TY=MY:GOSUB @BMOVE_CHK:IF STAT THEN FLAG=FLAG+1 _TX=MX:_TY=MY+MPY:GOSUB @BMOVE_CHK:IF STAT THEN FLAG=FLAG+2 IF FLAG==0 THEN _TX=MX+MPX:_TY=MY+MPY:GOSUB @BMOVE_CHK:IF STAT THEN FLAG=3 IF FLAG AND 1 THEN MPX=-MPX ELSE MX=MX+MPX IF FLAG AND 2 THEN MPY=-MPY ELSE MY=MY+MPY IF BUTTON(2) AND 34 THEN MPY=512 IF MX255 THEN MX=255-CR:MPX=-MPX IF MY(383+YFIX+CR*2) THEN MX=128:MY=192+96+YFIX:MPX=0:MPY=0:GCNT=GCNT+600:BEEP 6 RETURN @BMOVE_CHK STAT=0 'IF (_TX255) OR (_TY(383+YFIX)) THEN STAT=1:RETURN IF (_TX255) OR (_TY=191 THEN RETURN _TX2=FLOOR(_TX/32) _TY2=FLOOR(_TY/16) _TX3=_TX2*4:_TY3=_TY2*2 CHIP=MAP(_TX2,_TY2) CHIP1=FLOOR(CHIP/16) IF CHIP<=0 THEN RETURN STAT=1:CHIP2=0 IF CHIP1==2 AND (_TY!=MY) AND (MPY>0) AND (TCHTIME>1) THEN MPX=MPX+SGN(TCHX-OTX)/4 ' ޳ IF CHIP1==2 THEN BEEP 2:RETURN IF CHIP1==3 THEN CHIP2=CHIP-48 IF CHIP1==1 THEN STAT=0 MAP(_TX2,_TY2)=CHIP2 BGFILL 0,_TX3,_TY3,_TX3+3,_TY3+1,CHIP2,0,0,0 IF CHIP2!=0 THEN BEEP 2:RETURN SCORE=(ABS(MPX)+ABS(MPY))+10 BLKNUM=BLKNUM-1 BEEP 9,-4096:BEEP 0 RETURN @SCDISP PNLSTR 0,21," STAGE TOTAL" T1$=" "*64 _OPT=0 _T=GCNT-GCNT0:GOSUB @TIMESTR T2$=" TIME:"+_RET$ _T=GCNT:GOSUB @TIMESTR T2$=T2$+" / "+_RET$ T1$=SUBST$(T1$,0,LEN(T2$),T2$) T2$="STAGE" T1$=SUBST$(T1$,27,LEN(T2$),T2$) PNLSTR 0,22,T1$ _OPT=1 T1$=" "*64 _T=RECORD(STAGE):GOSUB @TIMESTR T2$="RECORD:"+_RET$ _T=RECORD(0):GOSUB @TIMESTR T2$=T2$+" / "+_RET$ T1$=SUBST$(T1$,0,LEN(T2$),T2$) T2$=STR$(STAGE) T1$=SUBST$(T1$,29,LEN(T2$),T2$) PNLSTR 0,23,T1$ RETURN @SCDISP_MINI _OPT=0 _T=GCNT-GCNT0:GOSUB @TIMESTR T2$=" TIME:"+_RET$ _T=GCNT:GOSUB @TIMESTR T2$=T2$+" / "+_RET$ T1$=SUBST$(T1$,0,LEN(T2$),T2$) PNLSTR 0,22,T1$ RETURN @TIMESTR IF (_OPT==1)AND(_T==0) THEN _RET$="--:--.--":RETURN _RET$="" _T0=FLOOR(_T/3600) _T1=FLOOR(_T/60)%60 _T2=FLOOR((_T%60)*100/60) _RET$=_RET$+RIGHT$("00"+STR$(_T0),2)+":" _RET$=_RET$+RIGHT$("00"+STR$(_T1),2)+"." _RET$=_RET$+RIGHT$("00"+STR$(_T2),2) RETURN @ENDING GOSUB @SCDISP SPPAGE 1:SPCLR SPPAGE 0:SPCLR BGCLR 0 BGMPLAY 0,5,70 LOCATE 8,11:PRINT "ALL STAGE CLEAR!" VSYNC 200 GCOUNT(0)=GCNT LOCATE 0,11:PRINT " "*32 BGMPLAY 0,18,70 FOR I=1 TO 10 _T=GCOUNT(I):GOSUB @TIMESTR LOCATE 7,I+2:PRINT "STAGE "+STR$(I) LOCATE 17,I+2:PRINT _RET$ VSYNC 10 NEXT VSYNC 30 _T=GCOUNT(0):GOSUB @TIMESTR LOCATE 7,14:PRINT "TOTAL" LOCATE 17,14:PRINT _RET$ _T=RECORD(0):GOSUB @TIMESTR LOCATE 7,16:PRINT "RECORD" LOCATE 17,16:PRINT _RET$ T= (RECORD(0)==0) OR (RECORD(0)>GCNT) FOR I=1 TO T RECORD(0)=GCNT T1$=MID$(STR$(GCNT)+" "*8,0,8) MEM$=SUBST$(MEM$,8,8,T1$) SAVEFLAG=1 BGMSTOP 0,1:VSYNC 60 COLOR 3:LOCATE 10,19:PRINT "NEW RECORD!!" COLOR 0 BGMPLAY 0,12,70 NEXT C=0 @ENDINGLOOP IF TCHTIME==1 THEN BGMSTOP 0,2:GOTO @TITLE C=(C+1)%15:COLOR C IF T THEN LOCATE 10,19:PRINT "NEW RECORD!!" PNLSTR 3,11, "T O U C H T O T I T L E" VSYNC 1 GOTO @ENDINGLOOP -------------------------- '00-0F - '10-1F ³ '20-2F (ʶ ɳ) '30-3F @STAGE0 ' **--**--**--**-- DATA "-0-0-0-0-0-0-0-0" DATA "0001020304050607" DATA "08090A0B0C0D0E0F" DATA "1011121314151617" DATA "18191A1B1C1D1E1F" DATA "2021222324252627" DATA "28292A2B2C2D2E2F" DATA "3031323334353637" DATA "38393A3B3C3D3E3F" DATA "-0-0-0-0-0-0-0-0" DATA "-0-0-0-0-0-0-0-0" DATA "-0-0-0-0-0-0-0-0" @STAGE1 ' **++**++**++**++ DATA "----------------" DATA "----------------" DATA "----------------" DATA "----0B020B02----" DATA "----040B040B----" DATA "----02040204----" DATA "----------------" DATA "----------------" DATA "----------------" DATA "----------------" DATA "----------------" DATA "----------------" @STAGE2 ' **++**++**++**++ DATA "----------------" DATA "0E0E0E0E0E0E0E0E" DATA "1E1E1E1E1E1E1E1E" DATA "1E1E1E1E1E1E1E1E" DATA "0909093D3D090909" DATA "15161718191A1B1C" DATA "1A1B1C1D1F121314" DATA "1213141516171819" DATA "0909090909090909" DATA "----------------" DATA "----------------" DATA "----------------" @STAGE3 ' **++**++**++**++ DATA "----------------" DATA "------------3D--" DATA "----------------" DATA "3D2F2F2F2F2F2F2F" DATA "1A1A1A1A1A1A1A1A" DATA "1A1A1A1A1A1A1A1A" DATA "1A1A1A1A1A1A1A1A" DATA "2F2F2F2F2F2F3D3D" DATA "----------------" DATA "----------------" DATA "----------------" DATA "----------------" @STAGE4 ' **++**++**++**++ DATA "----------------" DATA "2F09090909092F--" DATA "2F08080808082F--" DATA "2F08080808082F--" DATA "2F08080808082F--" DATA "2F08080808082F--" DATA "2F08080808082F--" DATA "2F08080808082F--" DATA "2F3D3D3D3D3D2F--" DATA "----------------" DATA "----------------" DATA "----------------" @STAGE5 ' **++**++**++**++ DATA "1E1E1E1E1E1E1E1E" DATA "0E0E0E0E0E0E0E0E" DATA "1E1E3E1E1E1E3E1E" DATA "0E0E1E0E0E1E0E1E" DATA "1E1E1E1E2E1E1E1E" DATA "2E0E0E0E1E0E2E3E" DATA "1E1E1E1E0E1E0E1E" DATA "----------------" DATA "----------------" DATA "----------------" DATA "----------------" DATA "----------------" @STAGE6 '141B12 ' **++**++**++**++ DATA "14141B1B12121B1B" DATA "14141B1B12121B1B" DATA "1B1B14141B1B1212" DATA "1B1B14141B1B1212" DATA "1414181812121818" DATA "1414181812121818" DATA "1818141418181212" DATA "1818141418181212" DATA "----------------" DATA "----------------" DATA "----------------" DATA "----------------" @STAGE7 ' **++**++**++**++ DATA "----------------" DATA "--3D3D3D3D3D3D--" DATA "--3D3D3D3D3D3D--" DATA "----------3D3D--" DATA "----------3D3D--" DATA "--------3D3D----" DATA "------3D3D------" DATA "------3D3D------" DATA "------3D3D------" DATA "------3D3D------" DATA "----------------" DATA "----------------" @STAGE8 ' **++**++**++**++ DATA "1F1F1F1F1F1F1F1F" DATA "1F0202020202021F" DATA "1F082F08082F081F" DATA "1F0C0C2F2F0C0C1F" DATA "1F0B0B2F2F0B0B1F" DATA "1F06062F2F06061F" DATA "1F042F04042F041F" DATA "1F0505050505051F" DATA "3D3D3D3D3D3D3D3D" DATA "----------------" DATA "----------------" DATA "----------------" @STAGE9 ' **++**++**++**++ DATA "0202020202020202" DATA "----------------" DATA "----------------" DATA "--2F----2F----2F" DATA "----------------" DATA "----------------" DATA "----------------" DATA "2F--2F2F--2F2F--" DATA "----------------" DATA "----------------" DATA "----------------" DATA "----------------" @STAGE10 ' **++**++**++**++ DATA "32------3B3B3B--" DATA "32------3B--3B--" DATA "32------3B3B3B--" DATA "223232--3B--3B--" DATA "----------------" DATA "--2C2C2C--343434" DATA "--3C--------24--" DATA "--2C2C2C----24--" DATA "------3C----24--" DATA "--2C2C2C----24--" DATA "----------------" DATA "----------------" '---------- 'APPEND PRG '---------- ' @ALLINIT ACLS:CLEAR BGMSTOP:BGMCLEAR MEM$="" ICONPUSE=0 ICONPAGE=0 ICONPMAX=0 GPAGE 0,2,0:GCLS GPAGE 0,3,0:GCLS CHRINIT "BGFU" CHRINIT "BGFL" T1$="BGU":T2=3:T3=1:GOSUB @_ALLINIT_SUB T1$="BGD":T2=1:T3=1:GOSUB @_ALLINIT_SUB T1$="SPU":T2=7:T3=0:GOSUB @_ALLINIT_SUB T1$="SPS":T2=1:T3=1:GOSUB @_ALLINIT_SUB T1$="SPD":T2=3:T3=0:GOSUB @_ALLINIT_SUB GPAGE 0,0,0 KEY 1,"FILES" KEY 2,"LOAD"+CHR$(34) KEY 3,"SAVE"+CHR$(34) KEY 4,"CONT" KEY 5,"RUN" ACLS:CLEAR RETURN END @_ALLINIT_SUB FOR I=0 TO T2 IF T3==0 THEN CHRINIT T1$+CHR$(48+I) IF T3!=0 THEN CHRINIT T1$+CHR$(48+I)+"U" IF T3!=0 THEN CHRINIT T1$+CHR$(48+I)+"L" NEXT RETURN 'FONTSET '̸ 'ACLS:CLEAR 'FOR I=0 TO 255:PRINT CHR$(I);:NEXT @FONTSET CHRINIT "BGFU" CHRINIT "BGFL" LOCATE 0,0:PRINT "PLEASE WAIT..." LOCATE 0,2 FOR I=0 TO 255:PRINT CHR$(I);:NEXT FOR CNO=32 TO 127:GOSUB @_FONTSET_SUB:NEXT CNO 'FOR CNO=160 TO 223:GOSUB @_FONTSET_SUB:NEXT CNO CLS RETURN @_FONTSET_SUB CHRREAD("BGF",CNO),C$ C2$=C$ FOR Y=0 TO 7 FOR X=0 TO 7 T=Y*8+X IF X<2 THEN NEXT X T0$=MID$(C$,T+1,1) T1$=MID$(C$,T,1) T2$=MID$(C$,T-1,1) T3$=MID$(C$,T-2,1) IF (T0$=="0")AND(T1$=="0")AND(T2$!="0") THEN C2$=SUBST$(C2$,T,1,T2$) NEXT NEXT Y CHRSET "BGFU",CNO,C2$ CHRSET "BGFL",CNO,C2$ RETURN