'TITLE: EASY DESIGNER 'AUTHOR: TIMO KLOSS, MRLEGOBOY '====================== '** RAM MAP ** GLOBAL USERCHARS,USERBG,USERPALS,TEMPMEM USERCHARS = $A000 USERBG = $B000 USERPALS = $D004 TEMPMEM = $D024 '====================== 'ENERGY SAVING MODE SYSTEM 0,1 KEYBOARD OPTIONAL DIM GLOBAL MENU$(6) DIM GLOBAL PXL(63,63) GLOBAL SELCHAR,SELSIZE,SELPAGE,SELCOLOR GLOBAL CHAROFFSET SELCHAR=1 SELSIZE=0 SELPAGE=0 SELCOLOR=1 GLOBAL MAPW,MAPH GLOBAL EDMODE,TOOLMODE,MAPX,MAPY,DRAGX,DRAGY GLOBAL STAMPW,STAMPH GLOBAL MAPBARST GLOBAL WINW,WINH EDMODE=1 GLOBAL PALFILE,CHARFILE,BGFILE PALFILE=1 CHARFILE=2 BGFILE=3 DIM GLOBAL SIZESW(5),SIZESH(5) DATA 10,20,32,64,96,128 DATA 8,16,32,64,96,128 FOR I=0 TO 5 READ SIZESW(I) NEXT I FOR I=0 TO 5 READ SIZESH(I) NEXT I FONT 128 OK=0 R=0 FILES CALL BLOADCHR(OK) CALL BLOADPAL(OK) CALL BLOADBG(OK) '==== TOUCH ZONES INIT ==== 'SETTINGS GLOBAL MAX_ZONE, ZONE_PAL 'STATUS GETTERS GLOBAL CUR_ZONE, ZONE_EVENT, ZONE_IN_X, ZONE_IN_Y, ZONE_RESULT 'INTERNAL GLOBAL ZONE_LAST_X, ZONE_LAST_Y GLOBAL E_DOWN, E_UP, E_OUT, E_DRAG E_DOWN=1 E_UP=2 E_OUT=3 E_DRAG=4 MAX_ZONE=33 DIM GLOBAL ZONEX(MAX_ZONE), ZONEY(MAX_ZONE), ZONEW(MAX_ZONE), ZONEH(MAX_ZONE), ZONEP(MAX_ZONE) TOUCHSCREEN '====================== CHAREDITOR: CALL INITMEM CALL READPAL CALL READCHAR CALL READPAGE CALL DRAWCHARUI CALL RESETZONES ' BAR BUTTONS ZONE_PAL=5 CALL SETZONE(0,0,14,2,2) ' BAR TABS ZONE_PAL=-1 CALL SETZONE(8,16,14,2,2) CALL SETZONE(9,18,14,2,2) ' PAGE AREA ZONE_PAL=-1 CALL SETZONE(10,1,10,16,4) ' PAGE UP/DOWN ZONE_PAL=5 CALL SETZONE(11,17,10,2,2) CALL SETZONE(12,17,12,2,2) ' DRAW AREA ZONE_PAL=-1 CALL SETZONE(20,1,1,8,8) ' COLORS AREA CALL SETZONE(21,10,1,2,8) ' EDIT BUTTONS ZONE_PAL=5 CALL SETZONE(22,17,1,2,2) CALL SETZONE(23,17,3,2,2) CALL SETZONE(24,17,5,2,2) CALL SETZONE(25,17,7,2,2) CALL SETZONE(26,15,1,2,2) CALL SETZONE(27,15,3,2,2) CALL SETZONE(28,15,5,2,2) CALL SETZONE(29,15,7,2,2) CALL SETZONE(30,13,1,2,2) CALL SETZONE(31,13,3,2,2) CALL SETZONE(32,13,5,2,2) CALL SETZONE(33,13,7,2,2) DO CALL UPDATEZONES K$=INKEY$ IF K$<>"" THEN IF K$="2" THEN GOTO MAPEDITOR END IF IF ZONE_EVENT=E_DOWN THEN IF CUR_ZONE=9 THEN GOTO MAPEDITOR END IF CALL HANDLECHARSEL IF ZONE_EVENT=E_DOWN OR ZONE_EVENT=E_DRAG THEN IF CUR_ZONE=20 THEN CALL HANDLEDRAWING IF CUR_ZONE=21 THEN SELCOLOR=ZONE_IN_Y\2 CALL DRAWSELCOLOR(10,1) END IF END IF IF ZONE_EVENT=E_UP THEN IF CUR_ZONE=0 THEN CALL SAVEALL IF CUR_ZONE=22 THEN CALL BCLEAR IF CUR_ZONE=23 THEN CALL BCUT IF CUR_ZONE=24 THEN CALL BCOPY IF CUR_ZONE=25 THEN CALL BPASTE IF CUR_ZONE=26 THEN GOTO PALEDITOR IF CUR_ZONE=27 THEN CALL BFLIPX IF CUR_ZONE=28 THEN CALL BFLIPY IF CUR_ZONE=29 THEN CALL BSPIN IF CUR_ZONE=30 THEN CALL BMOVEU IF CUR_ZONE=31 THEN CALL BMOVED IF CUR_ZONE=32 THEN CALL BMOVEL IF CUR_ZONE=33 THEN CALL BMOVER END IF WAIT VBL LOOP SUB DRAWCHARUI BG COPY 0,0,20,16 TO 0,0 CALL INITSPRITES CALL DRAWCHAR CALL DRAWSELCOLOR(10,1) CALL DRAWCHARNUM CALL DRAWPAGE BG TINT 10,1 TO 11,8 PAL 0 END SUB SUB INITMEM ON RASTER OFF SPRITE OFF COPY ROM(1),SIZE(1) TO $FF00 COPY ROM(2),SIZE(2) TO $8000 BG SOURCE ROM(3) END SUB SUB INITSPRITES SPRITE 0 PAL 6 FLIP 0,0 SPRITE 1 PAL 6 FLIP 1,0 SPRITE 2 PAL 6 FLIP 0,1 SPRITE 3 PAL 6 FLIP 1,1 SPRITE 4 PAL 6 FLIP 0,0 SPRITE 5 PAL 6 FLIP 1,0 SPRITE 6 PAL 6 FLIP 0,1 SPRITE 7 PAL 6 FLIP 1,1 SPRITE 8 PAL 6 FLIP 0,0 SPRITE 9 PAL 6 FLIP 1,0 SPRITE 10 PAL 6 FLIP 0,1 SPRITE 11 PAL 6 FLIP 1,1 END SUB SUB DRAWCHAR PAL 0 FOR PY=0 TO 7 FOR PX=0 TO 7 CELL PX+1,PY+1,16+PXL(PX,PY) NEXT PX NEXT PY IF SELCHAR=0 THEN PAL 6 TEXT 1,4,"KEEP #0" TEXT 2,5,"EMPTY" END IF END SUB SUB HANDLEDRAWING IF SELCHAR=0 THEN EXIT SUB PXL(ZONE_IN_X,ZONE_IN_Y)=SELCOLOR PAL 0 CELL ZONE_LAST_X,ZONE_LAST_Y,16+SELCOLOR CALL WRITECHAR END SUB SUB DRAWSELCOLOR(X,Y) SX=X*8 SY=Y*8+SELCOLOR*2*8 SPRITE 4,SX,SY,20 SPRITE 5,SX+8,SY,20 SPRITE 6,SX,SY+8,20 SPRITE 7,SX+8,SY+8,20 END SUB SUB HANDLECHARSEL IF ZONE_EVENT=E_DOWN OR ZONE_EVENT=E_DRAG THEN IF CUR_ZONE=10 THEN SELCHAR=(ZONE_IN_Y*16)+ZONE_IN_X+SELPAGE*64 CALL READCHAR CALL DRAWCHAR CALL DRAWCHARNUM END IF END IF IF ZONE_EVENT=E_DOWN THEN IF CUR_ZONE=11 AND SELPAGE>0 THEN SELPAGE=SELPAGE-1 CALL READPAGE CALL DRAWCHARNUM END IF IF CUR_ZONE=12 AND SELPAGE<3 THEN SELPAGE=SELPAGE+1 CALL READPAGE CALL DRAWCHARNUM END IF END IF END SUB SUB DRAWCHARNUM PAL 4 BG FILL 2,15 TO 13,15 CHAR 128 TEXT 3,15,"#" NUMBER 4,15,SELCHAR,3 NUMBER 8,15,SELPAGE+1,1 TEXT 9,15,"/4" IF SELCHAR>=SELPAGE*64 AND SELCHAR=SELPAGE*64 AND C<(SELPAGE+1)*64 THEN COPY USERCHARS+C*16,16 TO $8C00+(C MOD 64)*16 END IF END SUB SUB READCHAR FOR CY=0 TO SELSIZE FOR CX=0 TO SELSIZE CALL READCHARNUM(CX,CY) NEXT CX NEXT CY END SUB SUB READCHARNUM(CX,CY) AD=USERCHARS+(SELCHAR+CX+CY*16)*16 FOR PY=0 TO 7 FOR PX=0 TO 7 BV=2^(7-PX) PV=0 IF PEEK(AD) AND BV THEN PV=1 IF PEEK(AD+8) AND BV THEN PV=PV+2 PXL(PX+CX*8,PY+CY*8)=PV NEXT PX AD=AD+1 NEXT PY END SUB SUB BCLEAR S=(SELSIZE+1)*8-1 FOR PY=0 TO S FOR PX=0 TO S PXL(PX,PY)=SELCOLOR NEXT PX NEXT PY CALL WRITECHARSEL CALL DRAWCHAR CALL CHAR2PAGE CALL DRAWCHARNUM END SUB SUB BCUT AD=USERCHARS+SELCHAR*16 S=(SELSIZE+1)*16 FOR I=0 TO SELSIZE COPY AD+I*256,S TO TEMPMEM+I*S FILL AD+I*256,S,0 NEXT I CALL READCHAR CALL DRAWCHAR CALL CHAR2PAGE CALL DRAWCHARNUM END SUB SUB BCOPY AD=USERCHARS+SELCHAR*16 S=(SELSIZE+1)*16 FOR I=0 TO SELSIZE COPY AD+I*256,S TO TEMPMEM+I*S NEXT I CALL DRAWCHARNUM END SUB SUB BPASTE AD=USERCHARS+SELCHAR*16 S=(SELSIZE+1)*16 FOR I=0 TO SELSIZE COPY TEMPMEM+I*S,S TO AD+I*256 NEXT I CALL READCHAR CALL DRAWCHAR CALL CHAR2PAGE CALL DRAWCHARNUM END SUB SUB BFLIPX S=(SELSIZE+1)*8-1 S2=(SELSIZE+1)*4-1 FOR Y=0 TO S FOR X=0 TO S2 SWAP PXL(X,Y),PXL(S-X,Y) NEXT X NEXT Y CALL WRITECHARSEL CALL DRAWCHAR CALL DRAWCHARNUM END SUB SUB BFLIPY S=(SELSIZE+1)*8-1 S2=(SELSIZE+1)*4-1 FOR X=0 TO S FOR Y=0 TO S2 SWAP PXL(X,Y),PXL(X,S-Y) NEXT Y NEXT X CALL WRITECHARSEL CALL DRAWCHAR CALL DRAWCHARNUM END SUB SUB BSPIN S=(SELSIZE+1)*8-1 S2=(SELSIZE+1)*4-1 FOR X=0 TO S FOR Y=X+1 TO S SWAP PXL(X,Y),PXL(Y,X) NEXT Y NEXT X FOR X=0 TO S FOR Y=0 TO S2 SWAP PXL(X,Y),PXL(X,S-Y) NEXT Y NEXT X CALL WRITECHARSEL CALL DRAWCHAR CALL DRAWCHARNUM END SUB SUB BMOVEU S=(SELSIZE+1)*8-1 FOR Y=0 TO S-1 FOR X=0 TO S SWAP PXL(X,Y),PXL(X,Y+1) NEXT X NEXT Y CALL WRITECHARSEL CALL DRAWCHAR CALL DRAWCHARNUM END SUB SUB BMOVED S=(SELSIZE+1)*8-1 FOR Y=S TO 1 STEP -1 FOR X=0 TO S SWAP PXL(X,Y),PXL(X,Y-1) NEXT X NEXT Y CALL WRITECHARSEL CALL DRAWCHAR CALL DRAWCHARNUM END SUB SUB BMOVEL S=(SELSIZE+1)*8-1 FOR Y=0 TO S FOR X=0 TO S-1 SWAP PXL(X,Y),PXL(X+1,Y) NEXT X NEXT Y CALL WRITECHARSEL CALL DRAWCHAR CALL DRAWCHARNUM END SUB SUB BMOVER S=(SELSIZE+1)*8-1 FOR Y=0 TO S FOR X=S TO 1 STEP -1 SWAP PXL(X,Y),PXL(X-1,Y) NEXT X NEXT Y CALL WRITECHARSEL CALL DRAWCHAR CALL DRAWCHARNUM END SUB '=================================== PALEDITOR: CALL INITMEM CALL READPAL CALL READCHAR CALL READPAGE CALL DRAWPALUI CALL RESETZONES ' BAR BUTTONS ZONE_PAL=5 CALL SETZONE(0,0,14,2,2) ' BAR TABS ZONE_PAL=-1 CALL SETZONE(8,16,14,2,2) CALL SETZONE(9,18,14,2,2) ' PAGE AREA ZONE_PAL=-1 CALL SETZONE(10,1,10,16,4) ' PAGE UP/DOWN ZONE_PAL=5 CALL SETZONE(11,17,10,2,2) CALL SETZONE(12,17,12,2,2) ' DRAW AREA ZONE_PAL=-1 CALL SETZONE(20,1,1,8,8) ' COLORS AREA CALL SETZONE(21,10,1,2,8) ' RGB SLIDERS CALL SETZONE(22,13,1,2,4) CALL SETZONE(23,15,1,2,4) CALL SETZONE(24,17,1,2,4) ' BUTTONS ZONE_PAL=5 CALL SETZONE(25,17,7,2,2) DO CALL UPDATEZONES K$=INKEY$ IF K$<>"" THEN IF K$="1" THEN GOTO CHAREDITOR IF K$="2" THEN GOTO MAPEDITOR END IF IF ZONE_EVENT=E_DOWN THEN IF CUR_ZONE=8 THEN GOTO CHAREDITOR IF CUR_ZONE=9 THEN GOTO MAPEDITOR END IF CALL HANDLECHARSEL '** CHAR ** IF ZONE_EVENT=E_DOWN OR ZONE_EVENT=E_DRAG THEN IF CUR_ZONE=20 THEN CALL HANDLEDRAWING IF CUR_ZONE=21 THEN SELCOLOR=ZONE_IN_Y\2 CALL DRAWSLIDERS CALL DRAWSELCOLOR(10,1) END IF END IF '** RGB SLIDERS ** IF ZONE_EVENT=E_DOWN OR ZONE_EVENT=E_DRAG THEN IF CUR_ZONE>=22 AND CUR_ZONE<=24 THEN V=3-ZONE_IN_Y A=USERPALS+SELCOLOR C=PEEK(A) R=INT(C/16) G=INT(C/4) MOD 4 B=C MOD 4 IF CUR_ZONE=22 THEN R=V IF CUR_ZONE=23 THEN G=V IF CUR_ZONE=24 THEN B=V C=R*16+G*4+B POKE A,C CALL DRAWSLIDERS CALL READPAL END IF END IF IF ZONE_EVENT=E_UP THEN IF CUR_ZONE=0 THEN CALL SAVEALL IF CUR_ZONE=25 THEN GOTO CHAREDITOR END IF WAIT VBL LOOP SUB DRAWPALUI BG COPY 0,16,20,16 TO 0,0 PAL 4 TEXT 13,4,"R" TEXT 15,4,"G" TEXT 17,4,"B" CALL INITSPRITES CALL DRAWCHAR CALL DRAWSELCOLOR(10,1) CALL DRAWCHARNUM CALL DRAWPAGE FOR I=12 TO 14 SPRITE I PAL 7 SIZE 1 NEXT I CALL DRAWSLIDERS END SUB SUB READPAL COPY USERPALS,16 TO $FF00 END SUB SUB DRAWSLIDERS C=PEEK(USERPALS+SELCOLOR) R=C\16 G=C\4 MOD 4 B=C MOD 4 SPRITE 12,13*8,(4-R)*8,32 SPRITE 13,15*8,(4-G)*8,32 SPRITE 14,17*8,(4-B)*8,32 END SUB '====================== MAPEDITOR: SPRITE OFF CLS COPY USERCHARS,$C00 TO $8000 COPY ROM(2)+$E00,$200 TO $8E00 COPY USERPALS,32 TO $FF00 CALL DRAWTOOLBAR CALL DRAWMAP ON RASTER CALL MAPEDITORRASTER CALL RESETZONES ' BAR BUTTONS ZONE_PAL=1 CALL SETZONE(0,0,14,2,2) ZONE_PAL=-1 CALL SETZONE(1,3,14,2,2) CALL SETZONE(2,5,14,2,2) CALL SETZONE(3,7,14,2,2) ' BAR TABS ZONE_PAL=-1 CALL SETZONE(8,16,14,2,2) CALL SETZONE(9,18,14,2,2) ' MAP AREA CALL SETZONE(10,0,0,20,14) WINW=20 WINH=14 OLDX=-1 OLDY=-1 FROMX=0 FROMY=0 DO CALL UPDATEZONES IF MAPBARST>0 THEN DEC MAPBARST IF MAPBARST=0 THEN SPRITE OFF 0 TO 7 END IF K$=INKEY$ IF K$<>"" THEN IF K$="1" THEN GOTO CHAREDITOR IF K$="Z" THEN GOSUB SETSCROLLMODE IF K$="X" THEN GOSUB SETDRAWMODE IF K$="C" THEN GOSUB SETRUBBERMODE K=ASC(K$) IF K=17 OR K$="D" THEN MAPX=MIN(MAPX+1,MAPW-WINW) CALL DRAWMAP ELSE IF K=18 OR K$="A" THEN MAPX=MAX(MAPX-1,0) CALL DRAWMAP ELSE IF K=19 OR K$="S" THEN MAPY=MIN(MAPY+1,MAPH-WINH) CALL DRAWMAP ELSE IF K=20 OR K$="W" THEN MAPY=MAX(MAPY-1,0) CALL DRAWMAP END IF END IF IF ZONE_EVENT=E_DOWN THEN IF CUR_ZONE=8 THEN GOTO CHAREDITOR IF CUR_ZONE=1 THEN GOSUB SETSCROLLMODE IF CUR_ZONE=2 THEN GOSUB SETDRAWMODE IF CUR_ZONE=3 THEN GOSUB SETRUBBERMODE END IF IF (ZONE_EVENT=E_DOWN OR ZONE_EVENT=E_DRAG) AND CUR_ZONE=10 THEN X=ZONE_IN_X Y=ZONE_IN_Y IF ZONE_EVENT=E_DOWN THEN OLDX=-1 FROMX=X FROMY=Y END IF IF X<>OLDX OR Y<>OLDY THEN '** SCROLL MODE ** IF EDMODE=0 THEN IF OLDX>=0 THEN MAPX=MIN(MAX(MAPX-X+DRAGX,0),MAPW-WINW) MAPY=MIN(MAX(MAPY-Y+DRAGY,0),MAPH-WINH) CALL DRAWMAP END IF DRAGX=X DRAGY=Y END IF '** DRAW CHAR ** IF EDMODE=1 AND TOOLMODE=0 THEN CALL MAPCHAR(X,Y) END IF '** FILL CHAR ** IF EDMODE=1 AND TOOLMODE=1 THEN IF Y>FROMY THEN SY=SELSIZE+1 ELSE SY=-SELSIZE-1 IF X>FROMX THEN SX=SELSIZE+1 ELSE SX=-SELSIZE-1 FOR CY=FROMY TO Y STEP SY FOR CX=FROMX TO X STEP SX CALL MAPCHAR(CX,CY) NEXT CX NEXT CY END IF '** SELECT STAMP ** IF EDMODE=1 AND TOOLMODE=2 THEN CALL MAPDRAWSEL(FROMX,FROMY,X,Y) END IF '** USE STAMP ** IF EDMODE=1 AND TOOLMODE=3 THEN CALL MAPSTAMP(X,Y) END IF '** RUBBER MODE ** IF EDMODE=2 THEN A=USERBG+4+((Y+MAPY)*MAPW+(X+MAPX))*2 POKEW A,0 A=$9000+(Y*32+X)*2 POKEW A,0 END IF OLDX=X OLDY=Y END IF END IF IF ZONE_EVENT=E_UP THEN IF CUR_ZONE=0 THEN CALL SAVEALL END IF IF CUR_ZONE=10 THEN IF EDMODE=1 AND TOOLMODE=2 THEN SPRITE OFF 0 TO 3 CALL MAPSTAMPCOPY(MAPX+FROMX,MAPY+FROMY,MAPX+X,MAPY+Y) TOOLMODE=3 CALL DRAWTOOLBAR END IF END IF END IF WAIT VBL LOOP SETSCROLLMODE: EDMODE=0 CALL DRAWEDMODE RETURN SETDRAWMODE: IF EDMODE=1 THEN RETURN MAPTOOLSMENU ELSE EDMODE=1 CALL DRAWEDMODE END IF RETURN SETRUBBERMODE: EDMODE=2 CALL DRAWEDMODE RETURN SUB MAPCHAR(X,Y) W=MIN(SELSIZE,WINW-1-X) H=MIN(SELSIZE,WINH-1-Y) FOR I=0 TO H FOR J=0 TO W C=SELCHAR+I*16+J ATT=0 CX=X+J CY=Y+I A=$9000+(CY*32+CX)*2 POKE A,C POKE A+1,ATT A=USERBG+4+((CY+MAPY)*MAPW+(CX+MAPX))*2 POKE A,C POKE A+1,ATT NEXT J NEXT I END SUB SUB MAPSTAMPCOPY(X1,Y1,X2,Y2) XL=MIN(X1,X2) XR=MAX(X1,X2) YT=MIN(Y1,Y2) YB=MAX(Y1,Y2) STAMPW=XR-XL STAMPH=YB-YT FOR I=0 TO STAMPH SRC=USERBG+4+((YT+I)*MAPW+XL)*2 TAR=TEMPMEM+I*(STAMPW+1)*2 COPY SRC,(STAMPW+1)*2 TO TAR NEXT I END SUB SUB MAPSTAMP(X,Y) W=MIN(STAMPW,WINW-1-X) H=MIN(STAMPH,WINH-1-Y) FOR I=0 TO H FOR J=0 TO W A=TEMPMEM+(I*(STAMPW+1)+J)*2 V=PEEKW(A) A=USERBG+4+((Y+MAPY+I)*MAPW+(X+MAPX+J))*2 POKEW A,V A=$9000+((Y+I)*32+X+J)*2 POKEW A,V NEXT J NEXT I END SUB SUB MAPEDITORRASTER IF RASTER=0 THEN COPY USERPALS,8 TO $FF00 END IF IF RASTER=112 THEN PALETTE 0,%000000,%111111,%101010,%010101 PALETTE 1,%000000,%001111,%000101,%000000 END IF END SUB SUB DRAWEDMODE COPY USERPALS,32 TO $FF00 CALL DRAWMAP CALL DRAWTOOLBAR END SUB SUB DRAWMAP BG SOURCE USERBG BG COPY MAPX,MAPY,20,14 TO 0,0 CALL MAPBARS END SUB SUB DRAWTOOLBAR PAL 0 BG FILL 0,14 TO 19,14 CHAR 224 BG FILL 0,15 TO 19,15 CHAR 240 CELL 0,14,230 CELL 1,14,231 CELL 0,15,246 CELL 1,15,247 CALL DRAWTOOLBUTTON(3,225,229,EDMODE=0,0) CALL DRAWTOOLBUTTON(5,238,239,EDMODE=1,-1) CALL DRAWTOOLBUTTON(7,225,252,EDMODE=2,0) CALL DRAWTOOLBUTTON(16,225,226,0,0) CALL DRAWTOOLBUTTON(18,225,228,-1,0) IF TOOLMODE=2 THEN CALL COPYCHAR(225,238) CALL COPYCHAR(195,239) ELSE IF TOOLMODE=3 THEN CALL COPYCHAR(225,238) CALL COPYCHAR(196,239) ELSE CALL COPYCHAR(208+TOOLMODE,238) CALL COPYCHAR(192,239) END IF END SUB SUB DRAWTOOLBUTTON(X,ICON1,ICON2,SEL,MENU) CELL X,14,ICON1 CELL X+1,14,ICON2 IF SEL THEN CELL X,15,241 IF MENU THEN CELL X+1,15,245 ELSE CELL X+1,15,242 ELSE CELL X,15,243 CELL X+1,15,244 END IF END SUB SUB DRAWFLAGBUTTON(X,C1,C2,C3) CELL X,14,C1 CELL X+1,14,C2 CELL X,15,246 CELL X+1,15,C3 END SUB SUB COPYCHAR(SRC,DST) COPY ROM(2)+SRC*16,16 TO $8000+DST*16 END SUB SUB MAPBARS WINW=20 WINH=14 CS=8 SPRITE 0 PAL 6 FLIP 0,0 PRIO 1 SPRITE 1 PAL 6 FLIP 1,0 PRIO 1 SPRITE 2 PAL 6 FLIP 0,0 PRIO 1 SPRITE 3 PAL 6 FLIP 0,1 PRIO 1 BX=MAPX/MAPW*154 BW=WINW*154/MAPW BY=MAPY/MAPH*105 BH=WINH*105/MAPH SPRITE 0,BX-1,0,253 SPRITE 1,BW+BX-1,0,253 SPRITE 2,0,BY-1,254 SPRITE 3,0,BH+BY-1,254 SPRITE 4 PAL 6 PRIO 1 SPRITE 5 PAL 6 PRIO 1 SPRITE 6 PAL 6 PRIO 1 SPRITE 7 PAL 6 PRIO 1 BX=-((MAPX*CS) MOD 160)-4 BY=-((MAPY*CS) MOD 128)-4 IF BX>-32 THEN SPRITE 4,BX,BY,255 SPRITE 5,BX,BY+128,255 ELSE SPRITE OFF 4 TO 5 END IF SPRITE 6,BX+160,BY,255 SPRITE 7,BX+160,BY+128,255 MAPBARST=60 END SUB SUB MAPDRAWSEL(X1,Y1,X2,Y2) XL=MIN(X1,X2) XR=MAX(X1,X2) YT=MIN(Y1,Y2) YB=MAX(Y1,Y2) SPRITE 0 PAL 6 FLIP 0,0 PRIO 1 SPRITE 1 PAL 6 FLIP 1,0 PRIO 1 SPRITE 2 PAL 6 FLIP 0,1 PRIO 1 SPRITE 3 PAL 6 FLIP 1,1 PRIO 1 SPRITE 0,XL*8-1,YT*8-1,253 SPRITE 1,XR*8+1,YT*8-1,253 SPRITE 2,XL*8-1,YB*8+1,253 SPRITE 3,XR*8+1,YB*8+1,253 END SUB MAPTOOLSMENU: CALL INITMEM PALETTE 0,%000000,%101010,%010101,%000000 BG FILL 0,0 TO 19,13 CHAR 0 MENU$(0)="DRAW" MENU$(1)="FILL RECT" MENU$(2)="STAMP" MENU$(3)="CANCEL" CALL SHOWMENU("SELECT TOOL",3,R) IF R<3 THEN TOOLMODE=R GOTO MAPEDITOR '====================== SUB SAVEALL CALL BSAVECHR CALL BSAVEPAL CALL BSAVEBG CALL BSAVESOUND END SUB SUB BLOADCHR(OK) OK=0 'DEFAULT CHARS FILL USERCHARS,$1000,0 COPY ROM(11),SIZE(11) TO USERCHARS+$C00 IF FSIZE(CHARFILE)>$1000 THEN CHARFILE=-1 EXIT SUB END IF LOAD CHARFILE,USERCHARS OK=-1 END SUB SUB BSAVECHR 'FIND LAST USED CHARACTER N=0 I=255 REPEAT A=USERCHARS+I*16 FOR J=0 TO 15 IF PEEK(A+J)<>0 THEN N=I+1 NEXT J I=I-1 IF I<0 THEN N=1 UNTIL N<>0 F$=FILE$(CHARFILE) IF F$="" THEN F$="CHARACTERS" SAVE CHARFILE,F$,USERCHARS,N*16 END SUB SUB BLOADPAL(OK) OK=0 'DEFAULT USER PALETTE COPY ROM(10),SIZE(10) TO USERPALS IF FSIZE(PALFILE)>32 THEN PALFILE=-1 EXIT SUB END IF LOAD PALFILE,USERPALS OK=-1 END SUB SUB BSAVEPAL F$=FILE$(PALFILE) IF F$="" THEN F$="PALETTES" SAVE PALFILE,F$,USERPALS,32 END SUB SUB UPDATEMAPINFO POKE USERBG,0 POKE USERBG+1,0 POKE USERBG+2,MAPW POKE USERBG+3,MAPH END SUB SUB RESETBG FILL USERBG,$2004,0 MAPW=128 MAPH=32 MAPX=0 MAPY=0 SELCHAR=1 CALL UPDATEMAPINFO END SUB SUB BLOADBG(OK) OK=0 CALL RESETBG IF FSIZE(BGFILE)=0 THEN OK=-1 EXIT SUB END IF IF FSIZE(BGFILE)<4 OR FSIZE(BGFILE)>$2004 THEN BGFILE=-1 EXIT SUB END IF LOAD BGFILE,USERBG T=PEEK(USERBG) CELLSIZE=PEEK(USERBG+1) MAPW=PEEK(USERBG+2) MAPH=PEEK(USERBG+3) MAPX=0 MAPY=0 SELCHAR=1 'CHECK FILE FORMAT IF T=0 AND CELLSIZE=0 AND MAPW>0 AND MAPH>0 THEN OK=-1 ELSE BGFILE=-1 CALL RESETBG END IF END SUB SUB BSAVEBG F$=FILE$(BGFILE) IF F$="" THEN F$="BG" SAVE BGFILE,F$,USERBG,4+MAPW*MAPH*2 END SUB SUB BSAVESOUND IF FSIZE(15)>0 THEN EXIT SUB SAVE 15,"MAIN SOUND",ROM(12),SIZE(12) END SUB '==== GENERIC UI ==== SUB SHOWMESSAGE(MSG$) COPY $9000,$800 TO TEMPMEM PAL 5 BG FILL 0,0 TO 19,0 CHAR 128 TEXT 0,0,MSG$ WAIT 60 COPY TEMPMEM,$800 TO $9000 END SUB SUB SHOWMENU(MSG$,MAXI,RESULT) PAL 5 PRIO 1 BG FILL 0,0 TO 19,0 CHAR 128 TEXT (20-LEN(MSG$))/2,0,MSG$ PAL 4 Y=3+MAXI*2 BG FILL 0,1 TO 19,Y CHAR 1 BG FILL 0,1 TO 19,1 CHAR 3 BG FILL 0,Y TO 19,Y CHAR 5 FOR I=0 TO MAXI T$=MENU$(I) TEXT (20-LEN(T$))/2,2+I*2,T$ NEXT I WHILE TOUCH WAIT VBL WEND DO IF TOUCH AND TOUCH.Y>=12 THEN I=(((TOUCH.Y-4)\8)-1)\2 IF I<=MAXI THEN CALL HIGHLIGHT(0,2+I*2,19,2+I*2) WHILE TOUCH WAIT VBL WEND RESULT=I EXIT END IF END IF WAIT VBL LOOP PRIO 0 END SUB SUB HIGHLIGHT(X1,Y1,X2,Y2) BG TINT X1,Y1 TO X2,Y2 PAL 5 END SUB '==== TOUCH ZONES SUBPROGRAMS ==== SUB SETZONE(N,X,Y,W,H) ZONEX(N)=X ZONEY(N)=Y ZONEW(N)=W ZONEH(N)=H IF ZONE_PAL>=0 AND ZONE_PAL<8 THEN 'HIGHLIGHT AND NORMAL PALETTE P=CELL.A(X,Y) AND %111 ZONEP(N)=(ZONE_PAL*16)+P ELSE 'NO HIGHLIGHT ZONEP(N)=$FF END IF END SUB SUB CLEARZONE(N) CALL SETZONE(N,0,0,0,0) END SUB SUB RESETZONES FOR I=0 TO MAX_ZONE CALL CLEARZONE(I) NEXT I CUR_ZONE=-1 ZONE_PAL=-1 END SUB SUB UPDATEZONES CX=TOUCH.X\8 CY=TOUCH.Y\8 IF ZONE_EVENT=E_UP OR ZONE_EVENT=E_OUT THEN CUR_ZONE=-1 ZONE_EVENT=0 IF CUR_ZONE>=0 THEN CALL INSIDEZONE(CUR_ZONE,CX,CY) IF ZONE_RESULT THEN ZONE_IN_X=CX-ZONEX(CUR_ZONE) ZONE_IN_Y=CY-ZONEY(CUR_ZONE) IF NOT TOUCH THEN CALL PAINTZONE(CUR_ZONE,0) ZONE_EVENT=E_UP ELSE IF CX<>ZONE_LAST_X OR CY<>ZONE_LAST_Y THEN ZONE_EVENT=E_DRAG END IF ELSE CALL PAINTZONE(CUR_ZONE,0) ZONE_EVENT=E_OUT END IF ELSE IF TAP THEN FOR I=0 TO MAX_ZONE IF ZONEW(I)>0 THEN CALL INSIDEZONE(I,CX,CY) IF ZONE_RESULT THEN ZONE_EVENT=E_DOWN CUR_ZONE=I ZONE_IN_X=CX-ZONEX(I) ZONE_IN_Y=CY-ZONEY(I) CALL PAINTZONE(I,1) END IF END IF NEXT I END IF ZONE_LAST_X=CX ZONE_LAST_Y=CY END SUB SUB INSIDEZONE(N,CX,CY) ZONE_RESULT=(CX>=ZONEX(N) AND CX=ZONEY(N) AND CY$FF THEN IF SEL THEN P=P\16 ELSE P=P MOD 16 BG TINT ZONEX(N),ZONEY(N) TO ZONEX(N)+ZONEW(N)-1,ZONEY(N)+ZONEH(N)-1 PAL P END IF END SUB '====================== #1:MAIN PALETTES 003F0C3000383400003C0C00003F3C00 003F2A15000F050000300000003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 0000000000000000FFFFFFFFFFFFFFFF 0101010101010101FFFFFFFFFFFFFFFF FF0000000000000000FFFFFFFFFFFFFF 80808080808080807F7F7F7F7F7F7F7F 00000000000000FFFFFFFFFFFFFFFFFF FF000000000000FF00FFFFFFFFFFFFFF 81818181818181817F7F7F7F7F7F7F7F FF80808080808080007F7F7F7F7F7F7F FE0101010101010101FFFFFFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FF80B9A2B2A18080007F7F7F7F7F7F7F FE0131A9A929010101FFFFFFFFFFFFFF 00000000000000000000000000000000 FFFFFFFFFFFFFFFF0000000000000000 0000000000000000FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF808080808080800000000000000000 40E0E0E0E0E0E0E0FFFFFFFFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FF80B1AAB3A28080007F7F7F7F7F7F7F FE0119A1A999010101FFFFFFFFFFFFFF 3F7FF0FFF0FF403F00000F000F807F3F F8FC1EFE1EFE04F80000E000E002FCF8 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 11397D11111101FFFFFFFFFFFFFFFFFF 1111117D391101FFFFFFFFFFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 3179CDFDCDCD01FFFFFFFFFFFFFFFFFF 012161FD612101FFFFFFFFFFFFFFFFFF 011119FD191101FFFFFFFFFFFFFFFFFF FF80808080818387007F7F7F7F7F7F7F FE0101010181C1E101FFFFFFFFFFFFFF FF80808080808080007F7F7F7F7F7F7F FF0179FDFDFD490100FFFFB7FFFFFFFF FF0155555555550100FFBFFFFBEFFFFF FF017D7D7D757D0100FFFFD7FFDFFFFF FF809AA2A29B8080007F7F7F7F7F7F7F FE01312931A9010101FFFFFFFFFFFFFF FF809AA2A2998080007F7F7F7F7F7F7F FE01B9919191010101FFFFFFFFFFFFFF FF8099A2A2998080007F7F7F7F7F7F7F FE0131A9B121010101FFFFFFFFFFFFFF FF80B1AAB3A28080007F7F7F7F7F7F7F FE0119B189B1010101FFFFFFFFFFFFFF FF80B4A4B4A68080007F7F7F7F7F7F7F FE01B1A9B1A1010101FFFFFFFFFFFFFF 8F9F80808080807F7F7F7F7F7F7F7FFF F1F90101010101FFFFFFFFFFFFFFFFFF 808080808080C0FF7F7F7F7F7F7FBFFF 01010101010103FFFFFFFFFFFFFFFFFF FF80B1AAB3A28080007F7F7F7F7F7F7F FE0121A1A1B9010101FFFFFFFFFFFFFF 808080808080807F7F7F7F7F7F7F7FFF 11397DF9F16101FFFFEFC7EFFFFFFFFF 0109D539D50901FFFFFFFFFFFFFFFFFF F1F1FDFD3D3D01FFFF9FBFE7E7FFFFFF 71A9BDBDFD3D01FFFFDFFFE7E7FFFFFF 0101296D290101FFFFFFFFFFFFFFFFFF 01113901391101FFFFFFFFFFFFFFFFFF 1D195545453901FFFFFFFFFFFFFFFFFF FF80B6A596B48080007F7F7F7F7F7F7F FE0159555555010101FFFFFFFFFFFFFF FF80808080809F8F007F7F7F7F7F7F7F FE0101010101F9F101FFFFFFFFFFFFFF 808080C0FFFFFFFF7F7F7FBFFFFFFFFF 01010103FFFFFFFFFFFFFFFFFFFFFFFF 01555555555501FFFFBFFFFBEFFFFFFF FDCDCDFDFD7D01FFFFB7B787B7FFFFFF FF80BAA2B2A28080007F7F7F7F7F7F7F FF019D9991DD010100FFFFFFFFFFFFFF FF80A1A2A2B98080007F7F7F7F7F7F7F FE0111A9B929010101FFFFFFFFFFFFFF FF80B3ABAAAB8080007F7F7F7F7F7F7F FE01A92939B9010101FFFFFFFFFFFFFF 1D3D7D7D7D7D01FFFFE7C7C7C7FFFFFF FDF5F5F585FD01FFFF9F9FFFFFFFFFFF FF809BB38AB38080007F7F7F7F7F7F7F FE01A12121B9010101FFFFFFFFFFFFFF 878381808080807F7F7F7F7F7F7F7FFF E1C18101010101FFFFFFFFFFFFFFFFFF FF80B1AAB3A28080007F7F7F7F7F7F7F FE0119A1A999010101FFFFFFFFFFFFFF 808898BE9888807F7F7F7F7F7F7F7FFF 80888CBE8C88807F7F7F7F7F7F7F7FFF FF80B1B2ABB28080007F7F7F7F7F7F7F FE0119A1A199010101FFFFFFFFFFFFFF FF8099B28BB28080007F7F7F7F7F7F7F FE0129A9B991010101FFFFFFFFFFFFFF FF809AB28AB28080007F7F7F7F7F7F7F FE01DD5991DD010101FFFFFFFFFFFFFF 2161FDFD612101FFFFFFFFFFFFFFFFFF FD9D9DFDFDFD01FFFFF7F7F787FFFFFF FF80B9BAAAA98080007F7F7F7F7F7F7F FE0129A9B911010101FFFFFFFFFFFFFF 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 FF017D6545457D0100FFFFDFFFFFFFFF FF79B5FDE5DD857900FFCFFFBFBFFFFF FF2111EBC7AF110900DFEFF5F9F1FFFF FF016D4501456D0100FFFFFFFFFFFFFF FF3179793131FDFD00FFFFFFFFFFFF03 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FF82878E9CB8B080007F7D7B777F7F7F FF80B6BE9CBEB680007F7F6363637F7F 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FF0000000000000000FFFFFFFFFFFFFF FF80808080808080007F7F7F7F7F7F7F FF0179FDFDFD490100FFFFB7FFFFFFFF FF0155555555550100FFBFFFFBEFFFFF FF017D7D7D757D0100FFFFD7FFDFFFFF FF395555D5FD7D3900FFEFEFAF87C7FF FF8099B28BB28080007F7F7F7F7F7F7F FE0129A9B991010101FFFFFFFFFFFFFF FF80BAA2B2A38080007F7F7F7F7F7F7F FF0159555951010100FFFFFFFFFFFFFF FF80B3AAB3A28080007F7F7F7F7F7F7F FF0121A121A1010100FFFFFFFFFFFFFF 01011925251901FFFFFFFFFFFFFFFFFF 01011909091D01FFFFFFFFFFFFFFFFFF FFC1A2948894A2C1007F7F7F7F7F7F7F FF8345291129458300FFFFFFFFFFFFFF 0000000000000000FFFFFFFFFFFFFFFF 808080808080C0FF7F7F7F7F7F7FBFFF 01010101010103FFFFFFFFFFFFFFFFFF 808080C0FFFFFFFF7F7F7FBFFFFFFFFF 01010103FFFFFFFFFFFFFFFFFFFFFFFF 0101017D391103FFFFFFFFFFFFFFFFFF 80888CBE8C88807F7F7F7F7F7F7F7FFF FDCDCDFDFD7D01FFFFB7B787B7FFFFFF 01010101010101FFFFFFFFFFFFFFFFFF 0101296D290101FFFFFFFFFFFFFFFFFF 01113901391101FFFFFFFFFFFFFFFFFF 01010D05213101FFFFFFFFFFFFFFFFFF FF0111397DF9F16100FFFFEFC7EFFFFF FFFFFFE0E0000000FF81BFA0E0000000 F8F8F8E0E0E0E0E0F888B8A0A0A0A0E0 3C3CFFFFFFFF3C3C2424E70000E72424 #3:MAIN BG 00001440010405040504050405040504 05040504050401040504050401040504 05040504050405040504010402041000 10001000100010001000100010000704 1000100007047E047F04540455044604 47040404020410001000100010001000 10001000100007041000100007045604 2E045604640456045704040402041000 10001000100010001000100010000704 1100110007047E047F044E044F044804 49040404020410001000100010001000 10001000100007041100110007045604 2F0456045B0456045804040402041000 10001000100010001000100010000704 1200120007047E047F044E044F044A04 4B040404020410001000100010001000 10001000100007041200120007045604 3E0456045C0456045904040402041000 10001000100010001000100010000704 1300130007047E047F045E045F044C04 4D040404020410001000100010001000 10001000100007041300130007045604 3F0456045D0456045A04040401040604 06040604060406040604060406040504 06040604050406040604060406040604 06040104020400000000000000000000 00000000000000000000000000000000 00000004000440044104040402040000 00000000000000000000000000000000 00000000000000000000000400045004 51040404020400000000000000000000 00000000000000000000000000000000 00000004000460046104040402040000 00000000000000000000000000000000 00000000000000000000000400047004 71040404780479040304030403040304 03040304030403040304030403040304 03040304420443044204450475046504 01040104010401040104010401040104 01040104010401040104010452045304 62046304010405040504050405040504 05040504050401040504050401040504 05040504050405040504010402041000 10001000100010001000100010000704 10001000070401041504010415040104 15040404020410001000100010001000 10001000100007041000100007040104 15040104150401041504040402041000 10001000100010001000100010000704 11001100070401041504010415040104 15040404020410001000100010001000 10001000100007041100110007040104 15040104150401041504040402041000 10001000100010001000100010000704 12001200070403040304030403040304 03040404020410001000100010001000 10001000100007041200120007040104 01040104010401040104040402041000 10001000100010001000100010000704 13001300070401040104010401047604 77040404020410001000100010001000 10001000100007041300130007040104 01040104010456047C04040401040604 06040604060406040604060406040504 06040604050406040604060406040604 06040104020400000000000000000000 00000000000000000000000000000000 00000004000440044104040402040000 00000000000000000000000000000000 00000000000000000000000400045004 51040404020400000000000000000000 00000000000000000000000000000000 00000004000460046104040402040000 00000000000000000000000000000000 00000000000000000000000400047004 71040404780479040304030403040304 03040304030403040304030403040304 03040304420443044204450475046504 01040104010401040104010401040104 01040104010401040104010452045304 62046304000400040004000400040004 00040004000400040004000400040004 00040004070476047704040400040004 00040004000400040004000400040004 00040004000400040004000407045604 7C040404000000000000000000000000 00000000000000000000000400040004 00040000040406040604010400000000 00000000000000000000000000000000 00000000000000000000000407041004 10040404000000000000000000000000 00000000000000000000000000000000 00000004070410041004040400000000 00000000000000000000000000000000 00000000000000000000000407041104 11040404000000000000000000000000 00000000000000000000000000000000 00000004070411041104040400000000 00000000000000000000000000000000 00000000000000000000000407041204 12040404000000000000000000000000 00000000000000000000000000000000 00000004070412041204040400000000 00000000000000000000000000000000 00000000000000000000000407041304 13040404000000000000000000000000 00000000000000000000000000000000 00000004070413041304040400000000 00000000000000000000000000000000 00000000000000000000000056040604 06040504000000000000000000000000 00000000000000000000000000000000 00000000010401040104010400000000 00000000000000000000000000000000 00000000000000000000000001040104 01040104000000000000000000000000 00000000000000000000000000000000 00000000010401040104010400000000 00000000000000000000000000000000 00000000000000000000000001040104 01040104000000000000000000000000 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 00000000 #10:DEFAULT PALETTES 003F340E003F340E003F340E003F340E 003F340E000F0A05003F0000003F2A15 #11:DEFAULT CHARACTERS 00000000000000000000000000000000 00181818180018000000000000000000 006C6C24000000000000000000000000 00247E24247E24000000000000000000 00083E380E3E08000000000000000000 00626408102646000000000000000000 001C34386E643A000000000000000000 00181830000000000000000000000000 000C183030180C000000000000000000 0030180C0C1830000000000000000000 000024187E1824000000000000000000 000018187E1818000000000000000000 00000000181830000000000000000000 000000007E0000000000000000000000 00000000001818000000000000000000 00060C18306040000000000000000000 003C666E76663C000000000000000000 0018381818187E000000000000000000 003C660C18307E000000000000000000 003C660C06663C000000000000000000 0066667E060606000000000000000000 007E607C06067C000000000000000000 001C307C66663C000000000000000000 007E060C183030000000000000000000 003C663C66663C000000000000000000 003C663E06663C000000000000000000 00000018001800000000000000000000 00000018001830000000000000000000 00000C1830180C000000000000000000 0000007E007E00000000000000000000 000030180C1830000000000000000000 003C660C180018000000000000000000 003C666E6E603C000000000000000000 00183C667E6666000000000000000000 007C667C66667C000000000000000000 003C666060663C000000000000000000 00786C66666C78000000000000000000 007E607860607E000000000000000000 007E6078606060000000000000000000 003C606E66663C000000000000000000 0066667E666666000000000000000000 003C181818183C000000000000000000 001E060606663C000000000000000000 00666C78786C66000000000000000000 0060606060607E000000000000000000 0042667E7E6666000000000000000000 0066767E6E6666000000000000000000 003C666666663C000000000000000000 007C667C606060000000000000000000 003C66666A6C3E000000000000000000 007C667C786C66000000000000000000 003E603C06067C000000000000000000 007E1818181818000000000000000000 0066666666663C000000000000000000 00666666663C18000000000000000000 0066667E7E6642000000000000000000 00663C183C6666000000000000000000 0066663C181818000000000000000000 007E0C1830607E000000000000000000 003C303030303C000000000000000000 006030180C0602000000000000000000 003C0C0C0C0C3C000000000000000000 00183C66000000000000000000000000 0000000000007E000000000000000000 #12:DEFAULT SOUND 2800001F000000002800848F00000000 28004040000000002800808019000000 2800606019FA0000280060601DFA0000 2800808F10FD00002800808F03FD0000 3800001F000000003800848F00000000 38004040000000003800808000000000 3800606019FA0000380060601DFA0000 3800808F10FD00003800808F03FD0000