' MIRACULOUS ' BY NEBYOOLAE ' NEBYOOLAE@GMAIL.COM 'GAMEPAD 1 TOUCHSCREEN 'MAIN VARS GLOBAL INPUT_TYPE GLOBAL SX,SY GLOBAL MONEY GLOBAL MONEY_MAX GLOBAL DF GLOBAL HEALTH GLOBAL TICK GLOBAL LEVEL GLOBAL S_MRNT,S_TRE,S_LBUG,S_HART,S_MONY GLOBAL S_AKMA,S_AKMA2 INPUT_TYPE=0 TICK=0 LEVEL=1 'SPRITES ' 0 MARINETTE ' 1-10 LADYBUGS '11-20 AKUMAS '21-29 RESTART BUTTON '30-31 UI 'CHARACTERS '1-5 MARINETTE '17 TREE '18 LADYBUG '33-34 AKUMA '40-47 RESTART '49 HEART '50 MONEY S_MRNT=1 S_TREE=17 S_LBUG=18 S_AKMA=33 S_AKMA2=34 S_HART=49 S_MONY=50 TITLE: TRACK 6,0 DO SPRITE 0,40,25,S_MRNT SPRITE 1,76,25,S_AKMA SPRITE 2,112,25,S_LBUG LOCATE 5,5 PRINT "MIRACULOUS" LOCATE 6,6 PRINT "CATCHER" LOCATE 2,9 PRINT "CATCH LADYBUGS!" LOCATE 3,10 PRINT "AVOID AKUMAS!" LOCATE 4,13 PRINT "TAP TO START" IF TAP THEN CALL GAME_INIT END IF LOOP SUB GAME_INIT 'CLEAR SCREEN CLS CLW SPRITE OFF 0 TO 63 'SET MAIN VARS SX=72 SY=60 MONEY=0 MONEY_MAX=6+((LEVEL-1)*2) HEALTH=2.0 DF=1.00 'DISPLAY BG BG SOURCE ROM(3) BG 0 BG COPY 0,0,24,24 TO 0,0 'DISPLAY MAIN CHAR SPRITE 0 PAL 0 SPRITE 0,SX,SY,S_MRNT 'CREATE LADYBUGS AND AKUMAS CALL SPAWN_LADYBUGS CALL SPAWN_AKUMAS 'START MUSIC MUSIC 'START GAMELOOP GOTO GAMELOOP END SUB SUB SPAWN_LADYBUGS RANDOMIZE TIMER 'S=1 'SMAX=LEVEL+2 FOR S=1 TO 3 'WHILE 1<=3 'WHILE S1<=S1MAX '020-144 X=20+RND(124) '008+024 Y=8+RND(16) SPRITE S PAL 0 SPRITE S,X,Y,S_LBUG 'INC S 'WEND NEXT S 'S=SMAX+1 'SMAX=S+LEVEL+2 FOR S=4 TO 6 'WHILE 4<=6 'WHILE S2<=S2MAX '020-144 X=20+RND(124) '096-112 Y=96+RND(16) SPRITE S PAL 0 SPRITE S,X,Y,S_LBUG 'INC S 'WEND NEXT S END SUB SUB SPAWN_AKUMAS RANDOMIZE TIMER 'S1=11 'S1MAX=LEVEL+2 FOR S=11 TO 13 'WHILE S1<=S1MAX '000-152 X=RND(152) '32-48 Y=32+RND(16) SPRITE S PAL 1 SPRITE S,X,Y,S_AKMA 'S1=S1+1 'WEND NEXT S 'S2=S1MAX+1 'S2MAX=S2+LEVEL+2 FOR S=14 TO 16 'WHILE S2<=S2MAX '000-152 X=RND(152) '080-096 Y=80+RND(16) SPRITE S PAL 1 SPRITE S,X,Y,S_AKMA 'S2=S2+1 'WEND NEXT S END SUB SUB UPD_MARINETTE DF=DF+0.025 IF DF>4.000 THEN DF=1.000 END IF IF (DF MOD 1.000)=0 THEN SPRITE 0,,,DF END IF END SUB SUB UPD_AKUMAS FOR S=11 TO 20 X=SPRITE.X(S) MOD 160 Y=SPRITE.Y(S) C=S_AKMA+INT((TICK MOD 16)/8) SPRITE S,X+1,Y,C NEXT S END SUB SUB TOUCH_MOVE IF TOUCH THEN TX=TOUCH.X TY=TOUCH.Y C=1 'COLLISION BOX BOX=1 IF SX<(TX+BOX) THEN SX=SX+C IF SX>152 THEN SX=152 END IF END IF IF SX>(TX+BOX) THEN SX=SX-C IF SX<0 THEN SX=0 END IF END IF IF SY<(TY) THEN SY=SY+C IF SY>112 THEN SY=112 END IF END IF IF SY>(TY) THEN SY=SY-C IF SY<8 THEN SY=8 END IF END IF SPRITE 0,SX,SY,S_MRNT END IF END SUB SUB GAMEPAD_MOVE IF UP(0) AND SY>0 THEN DEC SY IF DOWN(0) AND SY<120 THEN INC SY IF LEFT(0) AND SX>0 THEN DEC SX IF RIGHT(0) AND SX<152 THEN INC SX END SUB SUB DRAW_UI 'DRAW LEVEL IN TOP LEFT LOCATE 0,0 PRINT LEVEL 'DRAW HEALTH IN LOWER LEFT SPRITE 62,0,120,S_HART LOCATE 1,15 PRINT INT(HEALTH)+1 'DRAW MONEY IN LOWER RIGHT SPRITE 63,136,120,S_MONY LOCATE 18,15 PRINT MONEY END SUB SUB CHECK_COLLISION IF SPRITE HIT(0) THEN SPR_ID=HIT 'LADYBUG HIT IF SPRITE.C(SPR_ID)=S_LBUG THEN SPRITE OFF SPR_ID INC MONEY TRACK 8,2 IF MONEY=MONEY_MAX THEN 'INC LEVEL 'CALL GAME_INIT 'IF LEVEL=3 THEN GOTO GAMEWIN 'ELSE TRACK 11,1 'END IF END IF END IF 'AKUMA HIT HITSPR=SPRITE.C(SPR_ID) IF HITSPR=S_AKMA THEN HEALTH=HEALTH-0.1 SPRITE 0 PAL 1 SPRITE 0,,SPRITE.Y(0)-3, SPRITE 0 PAL 0 TRACK 7,3 END IF END IF END SUB GAMELOOP: DO INC TICK IF HEALTH>0 THEN IF INPUT_TYPE=1 THEN CALL GAMEPAD_MOVE ELSE CALL TOUCH_MOVE END IF CALL DRAW_UI CALL CHECK_COLLISION CALL UPD_MARINETTE CALL UPD_AKUMAS WAIT VBL ELSE GOTO GAMEOVER END IF LOOP GAMEOVER: STOP TRACK 9,0 DO CLW SPRITE OFF 1 TO 63 LOCATE 1,5 PRINT "OH NO! YOU'VE BEEN" LOCATE 3,6 PRINT "AKUMATIZED :-(" LOCATE 4,8 PRINT "TAP TO RETRY" IF TAP THEN CALL GAME_INIT END IF WAIT VBL LOOP GAMEWIN: STOP TRACK 10,0 DO CLW CLS SPRITE 0,,,5 SPRITE OFF 0 TO 63 LOCATE 5,3 PRINT "HAWK MOTH" LOCATE 4,4 PRINT "IS DEFEATED" LOCATE 2,6 PRINT "YOU SAVED PARIS!" CNT=1 FOR I=40 TO 43 SPRITE I+13 PAL 0 SIZE 0 SPRITE I+13,CNT*8+55,88,I INC CNT NEXT I CNT=1 FOR I=44 TO 47 SPRITE I+13 PAL 0 SIZE 0 SPRITE I+13,CNT*8+55,96,I INC CNT NEXT I IF TAP OR TOUCH THEN IF TOUCH.X>=60 AND TOUCH.X<100 AND TOUCH.Y>=88 AND TOUCH.Y<102 THEN CALL GAME_INIT END IF END IF WAIT VBL LOOP #1:MAIN PALETTES 3A300300001D1201000C1000003F3C00 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 0066FF9999DBFF7E7EBD01A43D980124 000066FF9999DB7E007E9900243C1800 66FF9999D9FF7E009900243C18002400 0066FF9999FFFF7E7E9925E667981900 0066FF99DBFFFF7E7EBD01E619982518 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 3C7EFFFFFF7E18180000000000001818 007EFFFFFFFFFF7E00185A1899185A18 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 002418181818180000A5DBFFFF7EFFC3 2418181818180000241818FFFFFFC381 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FFFFFFFFFFFFFFFF0000F090173565D7 FFFFFFFFFFFFFFFF0000304242221217 FFFFFFFFFFFFFFFF0000000705255557 FFFFFFFFFFFFFFFF0000000002020207 FFFFFFFFFFFFFFFFE4F4949791888888 FFFFFFFFFFFFFFFF3212121A1A72C203 FFFFFFFFFFFFFFFF7454545454545454 FFFFFFFFFFFFFFFFC2C2C24262222222 00000000000000000000000000000000 66FFFFFFFF7E3C180000000000000000 003C7E7E7E3C18000000240024000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FFFFFFFFFFFFFFFFE4F4949791888888 FFFFFFFFFFFFFFFF3212121A1A72C203 FFFFFFFFFFFFFFFF7454545454545454 FFFFFFFFFFFFFFFFC2C2C24262222222 #3:MAIN BG 00001410000011001100110011001100 11001100110011001100110011001100 11001100110011001100110013001300 13001300130013001300130013001300 13001300130013001300000000000000 00000000130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300130013001300130013001300 13001300000000000000000000000000 00000000000000000000000000001300 13001300130013001300130013001300 00001300130013001300130013000000 00000000130013000000130000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000 #15:MAIN SOUND 2800303A000000001800846C003A0000 08006060000000002800303019FE0000 38002020000000003800505000000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 00010240800102400384054006404040 0A0B404009404040400B404040404040 40404040404040400640080740404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 3C06003B050037040039030000000000 0000FF00000000003C26003B25003724 00392300000000000000FF0000000000 3C06003B0500370400390300FF000039 0500FF0F00390500FF0F00402600FF0F 003E2500FF0F00402600000000FF0000 00000000000000000021680000000000 0000FF00000000000000000000000000 001D6800000000000000FF0000000000 0000000000000000001F690000000000 0000FF00001F6600FF00001F6600FF00 00246A00000000246A00000000FF0000 0000000000000000061D3F0000000000 00001D4F000000000000000000001D3F 000000000000000000001D4F00000000 0000000000001D3F0000000000000000 00001D4F000000000000000000001D3F 000000000000001D4F001D4D001D4C00 3C06003B0500370400390300000000FF 0F003C26003B2500FF0000370400FF0F 00390300000000000000FF0000000000 3C06003B050037040039030000000039 0500FF0000390500FF0000400500FF00 003E0500FF00004005000000003B0400 00000000000000000021680000000000 0000FF00000000000000000000000000 001D6800000000000000000000000000 FF00000000000000001F680000000000 00000000000000000000000000000000 00246A00000000246A00000000236F00 0000000000000000001D5F0000000000 00001D4F000000000000000000001D4F 000000000000000000001D4F00000000 0000000000001D4F0000000000000000 00001D4F00000000000000000000204F 00000000000000243F00243F00193F00 2408002305001F030021050000000000 0000000000FF00000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 180F00170F00FF000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 3B2F003C2F00FF000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 5406004705003904002A030000000000 0000000000FF00000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 2B0F002D0F002F0F00370F00390F003B 0F003C0F00000000000000000000FF00 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 370F00370F00FF0600390F00390800FF 06003C0F00000000FF00000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000