'============================================= ' KISS LIGHTS THETA / AUG 9 2022 / ERICISONIT '--------------------------------------------- ' INFO ' ' - 3 DIFFERENT RASTER EFFECTS ' - EVERY OTHER FX CYCLE, THE GENERATION ' STOPS SO THE LIGHTS WILL EVENTUALLY GO ' OUT BASED ON WHAT THEIR MAXAGE IS SET TO ' - *NEW* EDIT MODE LETS YOU MAKE YOUR OWN ' LIGHTS AND COLORS (RUN TO GET HELP) '============================================= '============================================= ' INIT '============================================= TOUCHSCREEN COPY ROM(8),$1000 TO $8000 COPY ROM(7),32 TO $FF00 CI=0 FOR Y=0 TO 15 FOR X=0 TO 15 CELL X+2,Y,CI INC CI NEXT X NEXT Y WHILE NOT TOUCH WAIT VBL WEND FILL $8000,$2000 COPY ROM(2),SIZE(2) TO $8000 COPY ROM(4),SIZE(4) TO $FF00 RANDOMIZE TIMER DIM GLOBAL RRR(127),ONPATS(8,1),OFFPATS(8,1),INFO(39,31,4),PXL(7,3,3,3) GLOBAL MAXAGE,MAXWIDTH,MAXSEGMENTS,MAXTIME,PERF,MODE,ANIMATE,SPEED GLOBAL PALSEL,CLRSEL,LIGHTSEL,CFRAME,DFRAME,EFRAME,SPD EFRAME=0 SPD=5 DFRAME=1 CFRAME=0 MODE=0 PERF=0 RRT=0 VIRG=-1 ANIMATE=-1 DUR=0 FOR I=0 TO 127 RRR(I)=(RND(1)*2)-1 NEXT I RESTORE PATDATA FOR I=0 TO 8 READ EOFF,EON,OOFF,OON ONPATS(I,0)=EON OFFPATS(I,0)=EOFF ONPATS(I,1)=OON OFFPATS(I,1)=OOFF NEXT I HASCUSTOM=0 FOR I=$E000 TO $EFFF IF PEEK(I)<>0 THEN HASCUSTOM=-1 EXIT END IF NEXT I IF HASCUSTOM THEN COPY $E400,$400 TO $8400 COPY $E000,32 TO $FF00 ELSE COPY ROM(4),SIZE(4) TO $FF00 END IF '--------------------------------------------- ' SETTINGS '--------------------------------------------- ' [1..*] THE NUMBER OF CYCLES PER NEW ' CREATION BEING DRAWN ' (DEFAULT 5) SPEED=4 ' [1..*] THE MAXIMUM NUMBER OF LIGHTS THICK ' THAT THE LINE OF A NEW CREATION CAN ' BE (DEFAULT 2) MAXWIDTH=2 ' [1..*] THE MAXIMUM NUMBER OF LINE SEGMENTS ' A NEW CREATION CAN HAVE (DEFAULT 3) MAXSEGMENTS=3 ' [1..*] THE MAXIMUM NUMER OF FRAMES FOR ' WHICH A LIGHT CAN BE SET TO STAY LIT ' (DEFAULT 3) MAXTIME=1 ' [1..*] THE MAXIMUM NUMBER OF CYCLES A GROUP ' OF LIGHTS WILL KEEP BLINKING (DEFAULT ' 10) MAXAGE=20 '--------------------------------------------- ON RASTER CALL RAST ON VBL CALL VB KEYBOARD ON '============================================= ' MAIN '============================================= DO CALL ADVANCEALL K$=INKEY$ IF K$<>"" THEN IF K$="Q" THEN DEC MAXAGE IF MAXAGE=0 THEN MAXAGE=1 ELSE IF K$="W" THEN DEC MAXTIME IF MAXTIME=0 THEN MAXTIME=1 ELSE IF K$="E" THEN DEC SPEED IF SPEED=0 THEN SPEED=1 ELSE IF K$="A" THEN INC MAXAGE IF MAXAGE>=100 THEN MAXAGE=99 ELSE IF K$="S" THEN INC MAXTIME IF MAXTIME>=50 THEN MAXTIME=49 ELSE IF K$="D" THEN INC SPEED IF SPEED>=30 THEN SPEED=29 ELSE IF K$="R" THEN INC MAXWIDTH IF MAXWIDTH>=8 THEN MAXWIDTH=7 ELSE IF K$="T" THEN INC MAXSEGMENTS IF MAXSEGMENTS>=20 THEN MAXSEGMENTS=19 ELSE IF K$="F" THEN DEC MAXWIDTH IF MAXWIDTH=0 THEN MAXWIDTH=1 ELSE IF K$="G" THEN DEC MAXSEGMENTS IF MAXSEGMENTS=0 THEN MAXSEGMENTS=1 ELSE IF K$="Y" THEN CALL SHUFFLE ELSE IF K$=" " THEN ON RASTER OFF INC RRT IF RRT=2 THEN RRT=-1 IF RRT=0 THEN ON RASTER CALL RAST ELSE IF RRT=-1 THEN ON RASTER CALL RAST3 ELSE IF RRT=1 THEN ON RASTER CALL RAST2 END IF ELSE IF K$="M" THEN CALL CREATIONMENU END IF END IF IF ANIMATE THEN IF DUR=0 THEN DUR=SPEED CALL DRAWPATH ELSE DEC DUR END IF END IF LOOP '============================================= ' SUBS '============================================= SUB CREATIONMENU ON RASTER CALL CREATIONRAST ON VBL CALL CREATIONVB COPY $9000,$1000 TO $A000 'COPY $FF00,32 TO $B000 CLS 'COPY ROM(4),32 TO $FF00 BG 0 BG COPY 0,0,20,32 TO 0,0 PALSEL=0 CLRSEL=1 LIGHTSEL=0 CALL UPDATESELS CALL DRAWBIGLIGHTS CALL DRAWLIGHTS PAL PALSEL CALL UPDATESLIDERS ISDRAG=0 DO IF TOUCH THEN CX=TOUCH.X\8 CY=TOUCH.Y\8 IF ISDRAG THEN IF ISDRAG=3 THEN HX=CX-2 MUL=16 MSK=$CF ELSE IF ISDRAG=4 THEN HX=CX-8 MUL=4 MSK=$F3 ELSE IF ISDRAG=5 THEN HX=CX-14 MUL=1 MSK=$FC END IF IF HX>=0 AND HX<=3 THEN CLRMSK=PEEK($FF00+(4*PALSEL)+CLRSEL) AND MSK POKE $FF00+(4*PALSEL)+CLRSEL,CLRMSK OR (HX * MUL) END IF ELSE IF CX>=16 AND CY>=3 AND CX<=19 AND CY<=6 THEN CLRSEL=(((CY-3)\2)*2)+((CX-16)\2) ELSE IF CX>=2 AND CY>=0 AND CX<=17 AND CY<=1 THEN PALSEL=(CX-2)\2 FOR I=0 TO 3 FOR J=0 TO 3 FOR K=0 TO 3 A=((3+K)*64)+((1+(I*5)+J)*2)+1 ATT=PEEK($9000+A) AND $F8 POKE $9000+A,ATT OR PALSEL NEXT K NEXT J NEXT I PAL PALSEL FOR J=2 TO 17 FOR K=9 TO 12 FOR B=0 TO 1 BG B CELL J,K,CELL.C(J,K) NEXT B NEXT K NEXT J BG 0 ELSE IF CX>=2 AND CY>=9 AND CX<=17 AND CY<=10 THEN LIGHTSEL=(CX-2)\2 CALL DRAWLIGHTS ELSE DRAWX=-1 DRAWY=CY-3 DRAWBOX=-1 IF CX>=1 AND CY>=3 AND CX<=4 AND CY<=6 THEN DRAWX=CX-1 DRAWBOX=1 ELSE IF CX>=6 AND CY>=3 AND CX<=9 AND CY<=6 THEN DRAWX=CX-6 DRAWBOX=2 ELSE IF CX>=11 AND CY>=3 AND CX<=14 AND CY<=6 THEN DRAWX=CX-11 DRAWBOX=3 END IF IF DRAWX>=0 THEN CH1=CLRSEL MOD 2 CH2=CLRSEL \ 2 FOR I=0 TO 1 LIGHTCI=64+((LIGHTSEL\4)*32)+((LIGHTSEL MOD 4)*4)+(I*16)+DRAWBOX B=2^(7-(I*4)-DRAWX) BI=B XOR $FF AD1=$8000+(LIGHTCI*16)+DRAWY AD2=$8000+(LIGHTCI*16)+DRAWY+8 P1=PEEK(AD1) AND BI P2=PEEK(AD2) AND BI IF CH1 THEN P1=(P1 OR B) IF CH2 THEN P2=(P2 OR B) POKE AD1,P1 POKE AD2,P2 NEXT I PXL(LIGHTSEL,DRAWBOX,DRAWX,DRAWY)=CLRSEL BG 0 PAL PALSEL CELL CX,CY,CLRSEL ELSE SPRITE 63,TOUCH.X,TOUCH.Y,32 IF SPRITE HIT(63) THEN SHIT=HIT SPRITE OFF 63 IF SHIT=3 THEN ISDRAG=3 ELSE IF SHIT=4 THEN ISDRAG=4 ELSE IF SHIT=5 THEN ISDRAG=5 ELSE ISDRAG=0 END IF END IF END IF END IF END IF CALL UPDATESLIDERS CALL UPDATESELS ELSE ISDRAG=0 END IF K$=INKEY$ IF K$<>"" THEN IF K$="Q" THEN SPRITE OFF 0 TO 2 EXIT END IF END IF 'IF TIMER MOD SPD=0 THEN CALL UPDATELIGHTS CALL UPDATELIGHTS WAIT VBL LOOP COPY $FF00,32 TO $E000 COPY $8400,$400 TO $E400 'COPY ROM(1),32 TO $FF00 CLS COPY $A000,$1000 TO $9000 'COPY $B000,32 TO $FF00 SPRITE OFF ON RASTER CALL RAST ON VBL CALL VB END SUB SUB UPDATESLIDERS CC_RGB=PEEK($FF00+(4*PALSEL)+CLRSEL) CC_R=(CC_RGB AND $30)\16 CC_G=(CC_RGB AND $0C)\4 CC_B=(CC_RGB AND $03) SPRITE 3 SIZE 1 PAL 7 PRIO 1 SPRITE 4 SIZE 1 PAL 7 PRIO 1 SPRITE 5 SIZE 1 PAL 7 PRIO 1 SPRITE 3,(2+CC_R)*8,100,128 SPRITE 4,(8+CC_G)*8,100,128 SPRITE 5,(14+CC_B)*8,100,128 END SUB SUB DRAWBIGLIGHTS FOR L=0 TO 7 CALL DRAWBIGLIGHT(L,64+((L\4)*32)+((L MOD 4)*4)) NEXT L END SUB SUB DRAWBIGLIGHT(L,CI) FOR F=0 TO 3 A=$8000+((CI+F)*16) FOR Y=0 TO 3 R1=PEEK(A+Y) R2=PEEK(A+Y+8) FOR X=0 TO 3 B=2^(7-X) IF (R1 AND B)=0 THEN P=0 ELSE P=1 IF (R2 AND B)=0 THEN P=P ELSE P=P OR 2 PXL(L,F,X,Y)=P NEXT X NEXT Y NEXT F END SUB SUB UPDATELIGHTS PAL PALSEL FOR L=0 TO 7 FOR Y=0 TO 3 FOR X=0 TO 3 B=X MOD 2 BG B CELL 2+(2*L)+(X\2),9+Y,43+(16*B)+PXL(L,CFRAME,X,Y) NEXT X NEXT Y NEXT L BG 0 END SUB SUB DRAWLIGHTS LIGHTCI=64+((LIGHTSEL\4)*32)+((LIGHTSEL MOD 4)*4) FOR I=0 TO 2 CALL DRAWLIGHT(LIGHTCI+I+1,1+(I*5),3) NEXT I END SUB SUB DRAWLIGHT(L,CX,CY) PAL PALSEL A=$8000+(L*16) FOR Y=0 TO 3 FOR X=0 TO 3 B=2^(7-X) IF (PEEK(A+Y) AND B)=0 THEN P1=0 ELSE P1=1 IF (PEEK(A+Y+8) AND B)=0 THEN P2=0 ELSE P2=2 P=P1 OR P2 CELL CX+X,CY+Y,P NEXT X NEXT Y END SUB SUB UPDATESELS SPRITE 0 SIZE 1 PAL 4 PRIO 1 SPRITE 1 SIZE 1 PAL 4 PRIO 1 SPRITE 2 SIZE 1 PAL 4 PRIO 1 SPRITE 0,16+(PALSEL*16),0,25 R=CLRSEL\2 C=CLRSEL MOD 2 SPRITE 1,128+(C*16),24+(R*16),25 SPRITE 2,16+(LIGHTSEL*16),72,25 END SUB SUB CREATIONVB IF EFRAME>0 THEN DEC EFRAME ELSE ADD CFRAME,DFRAME IF CFRAME=4 THEN CFRAME=3 DFRAME=-1 EFRAME=20 ELSE IF CFRAME=-1 THEN CFRAME=0 DFRAME=1 EFRAME=10 END IF END IF END SUB SUB CREATIONRAST IF RASTER >= 72 AND RASTER < 88 THEN X=4*((RASTER-72)\4) SCROLL 0,0,X SCROLL 1,0,X ELSE IF RASTER >= 88 THEN SCROLL 0,0,16 SCROLL 1,0,16 ELSE SCROLL 0,0,0 SCROLL 1,0,0 END IF END SUB SUB SHUFFLE SPEED=RND(10)+1 MAXWIDTH=RND(7)+1 MAXSEGMENTS=RND(20)+1 MAXTIME=RND(20)+1 MAXAGE=RND(50)+1 END SUB SUB ADVANCEALL FOR Y=0 TO 31 FOR X=0 TO 39 CALL ADVANCESAFE(X,Y) NEXT X NEXT Y 'BG 0 'BG SOURCE $C000,20,32 'BG COPY 0,0,20,32 TO 0,0 'BG 1 'BG SOURCE $D000,20,32 'BG COPY 0,0,20,32 TO 0,0 END SUB SUB DRAWPATH SIDES=RND(MAXSEGMENTS-1)+1 W=RND(MAXWIDTH-1)+1 PT=RND(7)+1 P=RND(7) R=RND(1) T=RND(MAXTIME-1)+1 LX=RND(19) LY=RND(15) TX=RND(19) TY=RND(15) V=RND(MAXAGE)+1 FOR I=0 TO SIDES-1 CALL DRAWLINE(LX,LY,TX,TY,W,PT,P,T,R,V) LX=TX LY=TY TX=RND(19) TY=RND(15) NEXT I END SUB SUB DRAWLINE(X1,Y1,X2,Y2,W,PT,P,T,R,V) ADDR=$A000 CALL CONNECT(X1,Y1,X2,Y2,ADDR) IF ADDR=$A000 THEN EXIT SUB WHILE ADDR>$A000 FOR I=0 TO 3 ADD ADDR,-2 X=PEEK(ADDR) Y=PEEK(ADDR+1) FOR CX=0 TO W-1 FOR CY=0 TO W-1 IF I=0 THEN CALL INSTALL(X+CX,Y+CY,PT,P,T,R,V) ELSE IF I=1 THEN CALL INSTALL(X-CX,Y+CY,PT,P,T,R,V) ELSE IF I=2 THEN CALL INSTALL(X+CX,Y-CY,PT,P,T,R,V) ELSE CALL INSTALL(X-CX,Y-CY,PT,P,T,R,V) END IF NEXT CY NEXT CX NEXT I WEND END SUB SUB INSTALL(X,Y,PT,P,T,R,V) IF X>39 OR Y>31 OR X<0 OR Y<0 THEN EXIT SUB CX=X\2 ODD=X MOD 2 PB=OFFPATS(PT,ODD) INFO(X,Y,0)=PB INFO(X,Y,1)=T INFO(X,Y,2)=0 INFO(X,Y,3)=1 INFO(X,Y,4)=V BG ODD 'BG SOURCE $C000+($1000*ODD),20,32 'FLIP FX,FY PAL P PRIO R CELL CX,Y,PB END SUB SUB MIRROR FOR Y=0 TO 15 FOR CX=0 TO 9 X=CX*2 FOR B=0 TO 1 BG B ATTR CELL.A(CX,Y) C=CELL.C(CX,Y) CELL 19-CX,Y,C CELL CX,31-Y,C CELL 19-CX,31-Y,C NEXT B CALL MIRRORINFO(X,Y) CALL MIRRORINFO(X+1,Y) NEXT CX NEXT Y END SUB SUB MIRRORINFO(X,Y) FOR I=0 TO 3 INFO(39-X,Y,0)=INFO(X,Y,I) INFO(X,31-Y,0)=INFO(X,Y,I) INFO(39-X,31-Y,0)=INFO(X,Y,I) NEXT I END SUB SUB MIRROR2 ADDR=$9000 Q1=$9026 Q2=$97C0 Q3=$97E6 FOR Y=0 TO 15 FOR X=0 TO 9 IF MODE=2 THEN TRACE HEX$(ADDR),HEX$(Q1),HEX$(Q2),HEX$(Q3) WHILE INKEY$="" WEND END IF P0=PEEKW(ADDR) P1=PEEKW(ADDR+$800) POKEW Q1,P0 POKEW Q1+$800,P1 POKEW Q2,P0 POKEW Q2+$800,P1 POKEW Q3,P0 POKEW Q3+$800,P1 ADD ADDR,2 ADD Q1,-2 ADD Q2,2 ADD Q3,-2 NEXT X ADD ADDR,24 ADD Q1,64 ADD Q2,-64 ADD Q3,-24 NEXT Y END SUB SUB ADVANCESAFE(X,Y) IF INFO(X,Y,3)=0 THEN EXIT SUB ODD=X MOD 2 BG ODD 'BG SOURCE $C000+($1000*ODD),20,32 C=CELL.C(X\2,Y) P=CELL.A(X\2,Y) OFFS=C-INFO(X,Y,0) IF INFO(X,Y,3)=1 THEN IF OFFS=3 THEN INC INFO(X,Y,3) INFO(X,Y,2)=INFO(X,Y,1) ELSE ATTR P CELL X\2,Y,C+1 END IF ELSE IF INFO(X,Y,3)=2 THEN IF INFO(X,Y,2)=0 THEN INC INFO(X,Y,3) ELSE DEC INFO(X,Y,2) END IF ELSE IF INFO(X,Y,3)=3 THEN IF OFFS=0 THEN INC INFO(X,Y,3) INFO(X,Y,2)=INFO(X,Y,1) ELSE ATTR P CELL X\2,Y,C-1 END IF ELSE IF INFO(X,Y,2)=0 THEN INFO(X,Y,3)=1 DEC INFO(X,Y,4) IF INFO(X,Y,4)=0 THEN INFO(X,Y,0)=0 INFO(X,Y,1)=0 INFO(X,Y,2)=0 INFO(X,Y,3)=0 CELL X\2,Y,0 END IF ELSE DEC INFO(X,Y,2) END IF END IF END SUB SUB ADVANCE(X,Y) IF INFO(X,Y,3)=0 THEN EXIT SUB ODD=X MOD 2 CX=(ODD*$800)+$9000+(Y*64)+(X\2)*2 C=PEEK(CX) OFFS=C-INFO(X,Y,0) IF INFO(X,Y,3)=1 THEN IF OFFS=3 THEN INC INFO(X,Y,3) INFO(X,Y,2)=INFO(X,Y,1) ELSE POKE CX,C+1 END IF ELSE IF INFO(X,Y,3)=2 THEN IF INFO(X,Y,2)=0 THEN INC INFO(X,Y,3) ELSE DEC INFO(X,Y,2) END IF ELSE IF INFO(X,Y,3)=3 THEN IF OFFS=0 THEN INC INFO(X,Y,3) INFO(X,Y,2)=INFO(X,Y,1) ELSE POKE CX,C-1 END IF ELSE IF INFO(X,Y,2)=0 THEN INFO(X,Y,3)=1 ELSE DEC INFO(X,Y,2) END IF END IF END SUB SUB CONNECT(LASTX,LASTY,TX,TY,ADDR) IF LASTX<0 THEN CT=1 FX=TX FY=TY HY=0 HX=0 ELSE DX=TX-LASTX DY=TY-LASTY IF DX=0 AND DY=0 THEN EXIT SUB IF DX=0 THEN IF DY=0 THEN CT=0 HX=0 HY=0 ELSE CT=ABS(DY) HX=0 HY=SGN(DY) END IF ELSE IF DY=0 THEN CT=ABS(DX) HX=SGN(DX) HY=0 ELSE IF ABS(DX)>ABS(DY) THEN CT=ABS(DX) HX=SGN(DX) HY=ABS(DY/DX)*SGN(DY) ELSE CT=ABS(DY) HY=SGN(DY) HX=ABS(DX/DY)*SGN(DX) END IF FX=LASTX FY=LASTY END IF FOR I=0 TO CT-1 ADD FX,HX ADD FY,HY IF FX>=40 OR FY>=32 OR FX<0 OR FY<0 THEN EXIT SUB LX=INT(FX) LY=INT(FY) POKE ADDR,LX POKE ADDR+1,LY ADD ADDR,2 POKE ADDR,39-LX POKE ADDR+1,LY ADD ADDR,2 POKE ADDR,LX POKE ADDR+1,31-LY ADD ADDR,2 POKE ADDR,39-LX POKE ADDR+1,31-LY ADD ADDR,2 NEXT I END SUB '============================================= ' INTERRUPTS '============================================= SUB RAST3 IF RASTER MOD 4=0 THEN SP=((ABS(15-((TIMER) MOD 30)))/15)*(64-((RASTER+1))) IF ABS(RASTER-64)>=ABS((120-(TIMER MOD 240))/120)*63 THEN SCROLL 0,-SP,RASTER SCROLL 1,SP,RASTER ELSE SCROLL 0,0,RASTER SCROLL 1,0,RASTER END IF END IF END SUB SUB RAST2 IF RASTER MOD 4=0 THEN SP=((SIN(PI*2*((TIMER MOD 400)-200)/1000)*40+40)\4)*4 'SP=(SP\4)*4 'SP2=COS(PI*2*((TIMER MOD 100)-200)/200)*32+64 'SP2=(SP\4)*4 SCROLL 0,40-SP,RASTER SCROLL 1,-40+SP,RASTER END IF END SUB SUB RAST IF RASTER MOD 4=0 THEN SCROLL 0,0,RASTER SCROLL 1,0,RASTER END IF END SUB SUB VB TRACE "SPEED",SPEED TRACE "MAXAGE",MAXAGE TRACE "MAXWIDTH", MAXWIDTH TRACE "MAXSEGMENTS",MAXSEGMENTS TRACE "MAXTIME",MAXTIME FOR I=5 TO 15 TRACE "" NEXT I END SUB '============================================= ' DATA '============================================= PATDATA: DATA 0,0,0,0,64,67,80,83,68,71,84,87,72,75,88,91,76,79,92,95 DATA 96,99,112,115,100,103,116,119,104,107,120,123,108,111,124,127 '============================================= ' ROMS '============================================= '_BEGIN_METADATA________________________________ ' 01020100030301020306010201080100 '_END_METADATA__________________________________ #1:MAIN PALETTES 003E2814002F0A05003B2211003F1B03 003A2010003C0804001F0601003E3211 #2:MAIN CHARACTERS 00000000000000000000000000000000 FFFFFFFFFFFFFFFF0000000000000000 0000000000000000FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF000000000000FF00FFFFFFFFFFFFFF FF80808080808080007F7F7F7F7F7F7F FF0000000000000000FFFFFFFFFFFFFF FE0101010101010101FFFFFFFFFFFFFF FE81818181818181017F7F7F7F7F7F7F FF8080808080807F007F7F7F7F7F7FFF FE010101010101FF01FFFFFFFFFFFFFF FF8080808183878F007F7F7F7F7F7F7F FE01010181C1E1F101FFFFFFFFFFFFFF FF80808080BFBF9F007F7F7F7F7F7F7F FE01010101FDFDF901FFFFFFFFFFFFFF 000808FF807F0808FFF7F7FF8080F7F7 0E0F0F0F0F0F0F0E00000000FFFFFF7E 002A0000000000000000400040004000 00FCFEFEFEFEFEFE0000000000000000 00000000000000000000000000000000 81818181818181817F7F7F7F7F7F7F7F 80808080808080807F7F7F7F7F7F7F7F FE8181818181817F017F7F7F7F7F7FFF 0101010101010101FFFFFFFFFFFFFFFF 818181818181817F7F7F7F7F7F7F7FFF 0000000000000000FF80808080808080 0000000000000000FF01010101010101 9FBFBF808080807F7F7F7F7F7F7F7FFF F9FDFD01010101FFFFFFFFFFFFFFFFFF 8F8783818080807F7F7F7F7F7F7F7FFF F1E1C181010101FFFFFFFFFFFFFFFFFF 000808FF00FF0808FFF7F7FF0000F7F7 80000000000000008000000000000000 00000000000000007F7F7F7F7F7F3F00 FEFEFEFEFEFEFC00FEFEFEFEFEFEFC00 00000000000000000000000000000000 00000000000000000000000000000000 808080808080807F7F7F7F7F7F7F7FFF 00000000000000FFFFFFFFFFFFFFFFFF 01010101010101FFFFFFFFFFFFFFFFFF 00000000000000000000000000000000 000000000000000080808080808080FF 000000000000000001010101010101FF 00000000000000000000000000000000 F0F0F0F0000000000000000000000000 0000000000000000F0F0F0F000000000 F0F0F0F000000000F0F0F0F000000000 000808FE01FF0808FFF7F7FF0000F7F7 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0F0F0F0F000000000000000000000000 00000000000000000F0F0F0F00000000 0F0F0F0F000000000F0F0F0F00000000 00000000000000000000000000000000 00000000000000000000000000000000 80E020200000000080E0202000000000 000000000000000080E0202000000000 80E02020000000000000000000000000 00000000000000000000000000000000 40404040000000006060606000000000 B0B0B0B000000000D0D0D0D000000000 60606060000000009090909000000000 00000000000000000000000000000000 20705020000000002070705000000000 20502070000000002070500000000000 20707070000000000000000000000000 00000000000000000000000000000000 40404040000000004040404000000000 00000000000000004040404000000000 40404040000000000000000000000000 00000000000000000000000000000000 080E020200000000080E020200000000 0000000000000000080E020200000000 080E0202000000000000000000000000 00000000000000000000000000000000 04040404000000000606060600000000 0B0B0B0B000000000D0D0D0D00000000 06060606000000000909090900000000 00000000000000000000000000000000 02070502000000000207070500000000 02050207000000000207050000000000 02070707000000000000000000000000 00000000000000000000000000000000 04040404000000000404040400000000 00000000000000000404040400000000 04040404000000000000000000000000 00000000000000000000000000000000 00606000000000000060600000000000 609090600000000060F0F06000000000 9060609000000000F09090F000000000 00000000000000000000000000000000 50A050A00000000050A050A000000000 A050A05000000000F0F0F0F000000000 50A050A000000000A050A05000000000 00000000000000000000000000000000 0000F0F0000000000000F0F000000000 000000F00000000000F0F0F000000000 F0F000F0000000000000F0F000000000 00000000000000000000000000000000 A0C0A0A000000000A0C0A0A000000000 0000000000000000A0C0A0A000000000 A0C0A0A0000000000000000000000000 00000000000000000000000000000000 00060600000000000006060000000000 0609090600000000060F0F0600000000 09060609000000000F09090F00000000 00000000000000000000000000000000 050A050A00000000050A050A00000000 0A050A05000000000F0F0F0F00000000 050A050A000000000A050A0500000000 00000000000000000000000000000000 00000F0F0000000000000F0F00000000 0000000F00000000000F0F0F00000000 0F0F000F0000000000000F0F00000000 00000000000000000000000000000000 0A0C0A0A000000000A0C0A0A00000000 00000000000000000A0C0A0A00000000 0A0C0A0A000000000000000000000000 3C4081A9BDBDBDBD003E7F5757575757 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 BDBDBD9581023C005757577F7F7E3C00 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 0000000000000000FFFFFFFFFFFFFFFF 0018181818001800FFE7E7E7E7FFE7FF 006C6C2400000000FF9393DBFFFFFFFF 00247E24247E2400FFDB81DBDB81DBFF 00083E380E3E0800FFF7C1C7F1C1F7FF 0062640810264600FF9D9BF7EFD9B9FF 001C34386E643A00FFE3CBC7919BC5FF 0018183000000000FFE7E7CFFFFFFFFF 000C183030180C00FFF3E7CFCFE7F3FF 0030180C0C183000FFCFE7F3F3E7CFFF 000024187E182400FFFFDBE781E7DBFF 000018187E181800FFFFE7E781E7E7FF 0000000018183000FFFFFFFFE7E7CFFF 000000007E000000FFFFFFFF81FFFFFF 0000000000181800FFFFFFFFFFE7E7FF 00060C1830604000FFF9F3E7CF9FBFFF 003C666E76663C00FFC399918999C3FF 0018381818187E00FFE7C7E7E7E781FF 003C660C18307E00FFC399F3E7CF81FF 003C660C06663C00FFC399F3F999C3FF 0066667E06060600FF999981F9F9F9FF 007E607C06067C00FF819F83F9F983FF 001C307C66663C00FFE3CF839999C3FF 007E060C18303000FF81F9F3E7CFCFFF 003C663C66663C00FFC399C39999C3FF 003C663E06663C00FFC399C1F999C3FF 0000001800180000FFFFFFE7FFE7FFFF 0000001800183000FFFFFFE7FFE7CFFF 00000C1830180C00FFFFF3E7CFE7F3FF 0000007E007E0000FFFFFF81FF81FFFF 000030180C183000FFFFCFE7F3E7CFFF 003C660C18001800FFC399F3E7FFE7FF 003C666E6E603C00FFC39991919FC3FF 00183C667E666600FFE7C399819999FF 007C667C66667C00FF839983999983FF 003C666060663C00FFC3999F9F99C3FF 00786C66666C7800FF879399999387FF 007E607860607E00FF819F879F9F81FF 007E607860606000FF819F879F9F9FFF 003C606E66663C00FFC39F919999C3FF 0066667E66666600FF999981999999FF 003C181818183C00FFC3E7E7E7E7C3FF 001E060606663C00FFE1F9F9F999C3FF 00666C78786C6600FF999387879399FF 0060606060607E00FF9F9F9F9F9F81FF 0042667E7E666600FFBD9981819999FF 0066767E6E666600FF998981919999FF 003C666666663C00FFC399999999C3FF 007C667C60606000FF8399839F9F9FFF 003C66666A6C3E00FFC399999593C1FF 007C667C786C6600FF839983879399FF 003E603C06067C00FFC19FC3F9F983FF 007E181818181800FF81E7E7E7E7E7FF 0066666666663C00FF9999999999C3FF 00666666663C1800FF99999999C3E7FF 0066667E7E664200FF9999818199BDFF 00663C183C666600FF99C3E7C39999FF 0066663C18181800FF9999C3E7E7E7FF 007E0C1830607E00FF81F3E7CF9F81FF 003C303030303C00FFC3CFCFCFCFC3FF 006030180C060200FF9FCFE7F3F9FDFF 003C0C0C0C0C3C00FFC3F3F3F3F3C3FF 00183C6600000000FFE7C399FFFFFFFF 0000000000007E00FFFFFFFFFFFF81FF #3:MAIN BG 00001420020717071100120011011201 11021202110312031104120411051205 11061206110712071507020702071707 21002200210122012102220221032203 21042204210522052106220621072207 15070207020726070407040704070607 04070407040704070607040704070407 04070607040704072607260717070000 00000000000014070000000000000000 14070000000000000000140700000007 01000100170700000000000000071407 00000000000000001407000000000000 00001407000000070100010017070007 00070000000714070000000000000007 14070007000700000007140702000200 03000300170700000007000000001407 00000000000000071407000000070000 00071407020002000300030002070607 06070607060702070607060706070607 02070607060706070607020706070607 06070607020702072607260726072607 26072607260726072607260726072607 26072607260726070207020702071707 00070007000700070007000700070007 880789078A0700078C078D078E070007 15070207020717070007000700070007 00070007000700070007000700070007 00070007000700071507020702071707 00070007000700070007000700070007 00070007000700070007000700070007 15070207020717070007000700070007 00070007000700070007000700070007 00070007000700071507020702070207 06070607060706070607060706070607 06070607060706070607060706070607 02070207020702070207020702070207 02070207020702070207020702070207 0207020702070207020702070207F207 0F071F071F072F070207E7070F071F07 1F072F070207E2070F071F071F072F07 02070207020702070207020702070207 02070207020702070207020702070207 02070207020702070207020702070207 02070207020702070207020702070207 02070207020702070207020702070207 02070207000000000000000700070007 00070007000700070007000000000000 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 00000000 #4:PALETTES 003C2814000F0A0500332211000B0702 00382010003D0804003E3211003F2A15 #5:PALETTES 003E2814002F0A05003B2211000F0702 003A2010002E080400392410003F2A15 #6:BACKGROUND 00001410000000000000010002000300 0400050006000700080009000A000B00 0C000D000E000F000000000000000000 10001100120013001400150016001700 180019001A001B001C001D001E001F00 00000000000000002000210022002300 2400250026002700280029002A002B00 2C002D002E002F000000000000000000 30003100320033003400350036003700 380039003A003B003C003D003E003F00 00000000000000004000410042004300 4400450046004700480049004A004B00 4C004D004E004F000000000000000000 50005100520053005400550056005700 580059005A005B005C005D005E005F00 00000000000000006000610062006300 6400650066006700680069006A006B00 6C006D006E006F000000000000000000 70007100720073007400750076007700 780079007A007B007C007D007E007F00 00000000000000008000810082008300 8400850086008700880089008A008B00 8C008D008E008F000000000000000000 90009100920093009400950096009700 980099009A009B009C009D009E009F00 0000000000000000A000A100A200A300 A400A500A600A700A800A900AA00AB00 AC00AD00AE00AF000000000000000000 B000B100B200B300B400B500B600B700 B800B900BA00BB00BC00BD00BE00BF00 0000000000000000C000C100C200C300 C400C500C600C700C800C900CA00CB00 CC00CD00CE00CF000000000000000000 D000D100D200D300D400D500D600D700 D800D900DA00DB00DC00DD00DE00DF00 0000000000000000E000E100E200E300 E400E500E600E700E800E900EA00EB00 EC00ED00EE00EF000000000000000000 F000F100F200F300F400F500F600F700 F800F900FA00FB00FC00FD00FE00FF00 00000000 #7:PALLETTES 003F2A15003F2A15003F2A15003F2A15 003F2A15003F2A15003F2A15003F2A15 #8:CHARACTERS 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000030000000000000003 00000000000000800000000000000080 00000000000000000000000000000000 00000000000000000000000000000000 06060606060707060609090909080809 0E0F0F0FFFFFFFFF0E010101F10101F1 000000070F1F3A780000000710200740 00000006CEE7E7E30000000649200004 00000039397D29690000003900445414 000000C0C0C0C080000000C000404000 60616361636163636091929294929292 00C0C0E0E0E0C0C00000002010200000 38783C3C1D381D1D3840040425250000 7079F1F9D9DBFFD97088080020226646 C0E0C0C183C78E9EC020000144480110 000000C1F1F9B939000000C11008C000 030303CBFBFBFBE3000000C820001820 C0C0C0DEDEFCFCF84040405E42604400 000000187CFCF0F80000001800181004 00000040F0F040000000004010104000 06060606060000000909090906000000 0F0F0F0F0E000000010101010E000000 783A1F0F070000004007201007000000 E7E3E3C1010000000400204201000000 5F6DEFCFCF00000032A22000CF000000 80800000000000000080000000000000 63636161600000009292909160000000 C0E0E0E0600000000020101060000000 1D1F1F0F0F000000021010000F000000 990F9F0F0E000000069090000E000000 1E8E0703010000009081080401000000 39B9F9F1C100000000C00810C1000000 E3E3E3E3C300000020202020C3000000 F8D8DCDC8E000000406440428E000000 3E0CEEF8700000004212720470000000 0040F0F0400000000040101040000000 00000000000000000000000000000000 00000000000000000000000000000000 00000003010101010000000300000001 000000113333A2A60000000022118006 0000000F888888CF00000000800000C0 00000090919191930000008001000083 00000087C4C444670000000040800060 000000C8484848C80000004000000040 0000003E2020203E0000000000000002 00000008090B0F0F0000000000020500 0000009F9010101F0000000080000001 00000046642C38180000000240042008 00000078C880F3780000000848003260 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000006040000000000000000 E7C4CC000000037120008C0000000000 C94968000000302C0001400000000004 1392D6000000068A0000460000000000 E42437000000604F0000200000000000 4868CF00000033920020400000000000 2020BE000000017C0000000000000004 0D080800000098970400000000000000 9090DF00000030F08000000000000020 18181800000000000808080000000001 0888F3000000008000808200000080C0 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 04040404040404040000000000000000 D989898999D97D015000000000400800 2C252527272322200801000204010000 DADAD252723232025018800040101000 4848484F48484F400000000000000000 12121292121292120000008000000000 4444447C484C46000000000400080200 91919191919191900000000000000000 10101010101010100000000000000000 010300000000000003070F0101010101 C0E0808080808000E0F0F8C0C0C0C0C0 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 06000003020202020000000000000000 03000001103838280000000000281000 30000098919392930000000000010000 0600000CE42404C400000000202000C0 600000C09E9191910000000000000000 330000662424A4A40000000000008080 01000006FA8282820000000000000000 98000060474D48480000000000050000 30000030109010100000000000000000 00000000000000000000000101010101 0000000080808080000000C0C0C0C0C0 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 02020202020300000000000000000000 6C7C44C6000100006C0000C400000000 91909293909800000100020200000000 E42424C4040C00008000000000000000 9191919E80C000000000000000000000 A4A42424246600008080000000000000 F2828282020600000000000000000000 49484C47406000000000040000000000 90909010103000000000000000000000 00030100000000000F07030100000000 80E0C08000000000F8F0E0C080000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000006050504040000000000010000 000000060A1292A200000000188030C0 000000000F0808080000000000000000 00000000848E868A00000000800A0C00 0000000032322A2A0000000013031B03 00000000382221210000000004000303 00000000106C44440000000028280000 00000000C4C48CEC0000000042024A66 000000004F4142460000000000000104 00000000BE2020200000000080000000 00000000020703050000000000050600 00000000101010100000000000000000 00000000404040400000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 04040404040600000000000000000000 62626262020600002020202000000000 0F090908000000000000010000000000 9B1F11F1000000009B00807100000000 2A242620000000000F03058300000000 21212238000000000303000400000000 44446C10000000000000282800000000 BC949484000000001E26060600000000 464C4C5F000000000208041000000000 3E2020BE000000000200008000000000 0D0F0818000000000D00001800000000 9090909F00000000800000C000000000 4040407C000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 000000C08599908E000000000B090016 000000003E2222220000000002000000 00000000103818280000000000283000 0000000021D189810000000050580000 00000006F20202020000000000000000 00000000020D08080000000005050000 00000000212292140000000003B00618 000000001068444000000000282C0000 00000000838282820000000000000000 00000000E00000000000000000000000 00000000FC8281800000000006000001 0000000040404080000000006000C000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 8D81919C80C000000E00101200000000 3E202020000000000200000000000000 6C7C44C4000000006C0000C600000000 8189D121000000000000585000000000 F20202F2020600001000000000000000 08080D02000000000000050500000000 0C8C0C0C000000000404840400000000 404468100000000000002C2800000000 838282FB000000000000000000000000 E00000E0000000002000000000000000 F0828284000000000103000600000000 808040400000000000C0006000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00003026262427250000000200020300 00000622226262E200000010105030F0 0000000F0808080F0000000000000000 0000009C111010900000000200010181 0000002F22A2A2A20000000000808080 000000C6060407050000004200020300 00000020236262E200000011115030F0 00000087642424240000004040000000 0000000F4828282F0000008000606060 00000080000000800000000000000080 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 24242420300000000100000000000000 A2A22202060000003030300000000000 08080F00000000000000000000000000 10119C00000000000100020000000000 A2222200000000008000000000000000 04040400000000000100000000000000 A2A32000000000003031310000000000 24648700000000000040400000000000 28480F00000000006000800000000000 00008000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 30212624242424260002020000000002 1808C848484848480080800000008080 00202020202020200000000000000000 00F8808080F981810000000000090000 0046E262A1B2F1100006A0C003B30001 002F4828480F4888000060600040C000 00830202028302020000000000800000 00E7040404E404040000000000200000 000B4828282828480080006060606000 00F18181818181810010000000000000 00888818D878282800840494CC3C4C0C 0021D989898989D90050500000000050 00C3120A0A0B0A120020001818181800 00E0000000E000000000000000200000 00000000000000000000000000000000 00000000000000000000000000000000 21203000000000000200000000000000 4808180000000000E000000000000000 3E000000000000000000000000000000 FB000000000000000300000000000000 11000000000000001900000000000000 8F000000000000000000000000000000 83000000000000000000000000000000 E7000000000000000000000000000000 08000000000000008000000000000000 81000000000000000000000000000000 08000000000000000C00000000000000 21000000000000005000000000000000 C3000000000000002000000000000000 E0000000000000000000000000000000