'FANESIA: A GENESIA (ULTIMATE DOMAIN) DEMAKE FOR LOWRESNX 'BY MARTIN "MOECHOFE" MAUCHAUFFEE 2021.. 'MADE ON IPAD MINI 4 VERSION$="R33" 'TODO: '================================= '(X) UNPACK MAP '(X) REPLACE THE SEPARATOR THAT COVERING OTHER BIOME, BY A 3RD NORMAL SEPARATOR, AND MOVE OTHER CHARAS '(X) FIND A WAY TO REDUCE THE CODE NEEDS TO DRAW ONE MAP CELL '(X) DISPLAY THE BIOME MAP '(X) ONLY UPDATE THE MAP BORDER INSTEAD OF THE FULL MAP '(X) APPLY LIMIT TO MAP SCROLL '(X) PLACE SEPARATOR UNDER COVERING TILE, NOT FULL BIOME '(X) REMOVE THE CODE THAT LIMITING THE RENDERING CALL BY PARTS, IT WILL COVER THE CASE WHEN THE MAP IS PANNING FAST. '( ) FIX THE CORNER CHARA BEING FLIPPED, IT'S EVERY WHERE ON THE MAP '(X) DRAW AND PLACE A CURSOR USING TAP '( ) MAKE THE CAMERA, POINT TO A PARTICULAR PLOT '(X) PREVENT THE MAP CURSOR TO BE SHOWN OUT OF SCREEN BOUNDS '( ) TEST A COMPLETE SEASONS PALETTE 'LEXICAL: '================================= 'MAP CELL = SAME AS BG CELL, 2X2 CELL ARE CALLED PLOTS 'MAP PLOT = 2X2 MAP CELL, ALL PLOT ARE SEPERATED BY 1 ROW AND 1 COL OF MAP CELL, 7X7 PLOT ARE CALLED PARCELS 'MAP PARCEL = 7X7 MAP PLOT, THEY CAN BE OWNED BY A PLAYER 'GAME DESIGN: '================================= 'FOOD: 'FIELD: NEED 1 PEON, 4 FOOD BASE PER SEASON, +1 PER JOB LEVEL, +2 AUTOMN, 0 IN WINTER 'HEN: 2 PLANKS TO BUILD, 2 FOOD BASE PER SEASON, -1 WINTER, CAN BE HUNTED AND KILLED PER WOLFS, RESPAWN AFTER 2 SEASONS 'WOLF: NEED 1 DRAFTED PEON, +6 FOOD WHEN KILLED 'WOOD: 'TREE: NEED 1 PEON, 'DRAFTED PEON: 'SWORDMAN: 'ARCHER: 'SHIELDMAN: 'BATTLE: 'QUART DE CERCLE, TACTICAL TURN BASED GAME 'TECH DOC: '================================= 'EVEN IF THERE IS 4 BIOMES, WHEN THERE IS ONE THAT COVER AN OTHER ONE, THERE IS NO ALL COMBINAISON POSSIBLE: 'MOUNTAIN CAN COVER PLAIN 'PLAIN CAN COVER BEACH 'BEACH CAN COVER SEA 'SO THE PATTERN IS THE SAME AND THE RENDERING TECHNIC CAN BE DONE ONE TIMES AND REPEAT FOR EACH COMBINAISON 'BASE BIOME CELL WILL BE ALWAYS ON BG1 'COVERING BIOME SEPARATOR CELL WILL BE ALWAYS ON BG0 'FOR ONE PLOT OF 3X3 CELL: 'FF| 'FF| '--+ 'THERE IS A COUPLE OF DIFFERENTS COMBINAISON: 'THE PLOTS AT THE RIGHT, AT THE BOTTOM-RIGHT CORNER, CAN BE THE SAME OR DIFFERENT. 'IDEA: '================================= 'ATTRIBUTES RESPAWN AT A SPECIFIC SEASON. 'NOT ALL RESPAWN AT THE SAME TIMES. 'BUILDING WITH 2X2 PLOTS, SO CANNOT BE PLACED EVERYWHERE ON THE MAP. 'ASSETS: '================================= 'SOME TOOLS/DATA FOR CHARAS QUICK ACCESS 'MAP CURSOR ASSETS DIM GLOBAL MAPCURCHAR(1) MAPCURCHAR(0)=ROM(2)+$510 MAPCURCHAR(1)=ROM(6) 'SEASON PALETTE 'WINTER ' 'HEXASTRING: '================================= 'IT'S A TECHNIC TO STORE A HUGE AMOUNT A DATA AS HEXADECIMAL STRING INTO 2 LOWRESNX TOKENS. FOUND BY ERICISONIT, SAUCE: HTTPS://LOWRESNX.INUTILIS.COM/TOPIC.PHP?ID=2162#POST-15391 DATA 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,10,11,12,13,14,15 DIM GLOBAL ASC2DEC(22) FOR I=0 TO 22 READ ASC2DEC(I) NEXT I '(IN) H$ THE HEXASTRING SOURCE '(IN) I THE CHAR INDEX TO READ '(OUT) V THE READ VALUE SUB READHEXASTR(H$,I,V) V=ASC2DEC(ASC(MID$(H$,I,1))-48)*16+ASC2DEC(ASC(MID$(H$,I+1,1))-48) END SUB 'ARRAY: '================================= 'SOME TOOLS FOR ARRAY VALUE MANIPULATION '(INOUT) X,Y ARRAY CURSOR IN 1ST AND 2ND DIMENSION '(IN) A() AN 2 DIMENSION ARRAY SUB NEXTARRAY2(X,Y,A()) IF X=UBOUND(A) THEN X=0 ADD Y,1 ELSE ADD X,1 END IF END SUB 'MATH: '================================= 'CLAMP A VALUE TO A MIN AND MAX '(INOUT) V THE VALUE TO CLAMP '(IN) I MINIMAL VALUE '(IN) A MAXIMAL VALUE SUB CLAMP(V,I,A) V=MAX(I,MIN(A,V)) END SUB 'MAP DATA: '================================= 'MAP DATA CONTAINS THE BIOME TYPE AND ATTRIBUTE FLAG. 'BIOME TYPE ARE: '=0 SEA '=1 BEACH '=2 PLAIN '=3 MOUNTAIN 'ATTRIBUTE (WHEN FLAGGED-ON) ON TOP OF BIOME ARE: '=1 CHEST ON SAND '=2 TREE ON GRASS '=3 BOULDER ON ROCK 'PACKED MAP DATA ARE CONSISTS IN TWO STRINGS OF HEXADECIMAL DATA. 'THE EDITOR WILL PUT THOSE DATA INTO FILES #4 AND #5. 'THE BIOME USE THE FOLLOWING FORMAT: 'EACH BYTE USE THIS BIT FORMAT %CCCCCCTT, WITH T FOR THE BIOME TYPE, C FOR NUMBER OF TIMES THIS BIOME IS REPEATED BY BROWSING THE MAP CELLS FROM LEFT TO RIGHT, TOP TO BOTTOM. 'THE PROP USE THE FOLLOWING FORMAT: 'EACH BYTE CONTAINS 8 FLAGS, THAT REPRESENT IF ATTRIBUTES ARE PRESENT ON EACH CONSECUTIVE MAP CELLS FROM LEFT TO RIGHT, TOP TO BOTTOM. 'UNPACKED BIOME MAP DATA CONSISTS ON A SET OF ARRAYS OF 39X39 REPRESENTING EACH MAP CELLS. DIM GLOBAL BIOME(38,38) DIM GLOBAL ATTRI(38,38) 'TODO: MOVE THIS DOC WHERE THE PERSISTANT CODE IS 'THE STATUS OF A BIOME ATTRIBUTE (ON,OFF) ARE STORED AND PACKED IN PERSISTANT RAM#E000, 8 MAP CELLS ARE STORED IN EACH MEM BYTE, TAKING 35X35=154 BYTES 'NEXT PERSISTANT RAM#E09A '(IN) M THE MAP NUMBER (0..) '(LOCAL) H$ THE SOURCE HEXASTRING SUB UNPACKMAP(M) 'POINT TO THE RIGHT DATA RESTORE PACKEDMAPSDATA WHILE M>0 READ H$ READ H$ DEC M WEND 'READ HEXASTRING AND UNPACK THE BIOME TYPE '(LOCAL) H$ THE SOURCE HEXASTRING '(LOCAL) X,Y MAP CURSOR: BIOME(X,Y) '(LOCAL) I HEXASTRING CHAR CURSOR '(LOCAL) P THE READ PACKED BYTE '(LOCAL) B THE BIOME TYPE '(LOCAL) C THE BIOME REPEAT COUNTER '(LOCAL) J THE REPEAT COUNTER CURSOR READ H$ X=0 Y=0 P=0 FOR I=1 TO LEN(H$) STEP 2 CALL READHEXASTR(H$,I,P) B=P AND %11 C=(P AND %11111100)\4 FOR J=0 TO C BIOME(X,Y)=B CALL NEXTARRAY2(X,Y,BIOME()) NEXT J NEXT I 'DEVELOPER IF X<>0 OR Y<>39 THEN PAUSE 'READ HEXASTRING AND UNPACK THE ATTRIBUTE FLAG '(LOCAL) H$ THE SOURCE HEXASTRING '(LOCAL) P THE READ PACKED BYTE '(LOCAL) X,Y MAP CURSOR: BIOME(X,Y) '(LOCAL) I HEXASTRING CHAR CURSOR '(LOCAL) J THE PACKED BIT CURSOR READ H$ X=0 Y=0 FOR I=1 TO LEN(H$) STEP 2 CALL READHEXASTR(H$,I,P) FOR J=0 TO 7 ATTRI(X,Y)=P AND %1 CALL NEXTARRAY2(X,Y,ATTRI()) P=P\2 NEXT J NEXT I 'DEVELOPER IF X<>38 OR Y<>38 THEN PAUSE 'THE LAST IS MISSING BUT IT'S OK END SUB 'RENDERER: '================================= 'SHOW THE MAP WITH THE 2X2 PLOT SIZE SEPARATED BY ROWS AND COLUMNS OF SIZE 1 'BG1 FOR BIOME TYPE 'BG0 FOR SEPARATOR THAT COVER THE BIOME AT BG1 'RENDERER CACHE DATA 'TO REDUCE THE SIZE OF THE CODE THAT RENDER ONE MAP CELL, I PRE-COMPUTE THE CHARA NUM, THE BG CELL ATTRIBUTES AND A CHARA NUM ADDITIONAL MAX RANDOM VALUE INTO A PACKED HEXASTRING. DATA "004500013400013300022200022100031000004500013500013300022300022100031100004500012B02013300021902022100030702004500113600013300122400022100131200004500013002013300021E02022100030C020045000936000133000A24000221000B1200004500013600013300022400022100031200004500000000013300000000022100000000030F000000000045001934000133001A22000221001B1000004500113400013300122200022100131000004500113002013300121E02022100130C020045000934000133000A22000221000B1000004500092B020133000A19020221000B07020045000935000133000A23000221000B11000045001936000133001A24000221001B1200003703000000012503000000021303000000030103000000004001000000012E01000000021C01000000030A01000000004001013002012E01021E02021C01030C02004001113002012E01121E02021C01130C02003B01000000012901000000021701000000030501000000003B01012B02012901021902021701030702003B01092B020129010A19020217010B0702" 'LOAD THIS DATA IN RAM$A000..$A1A3 READ H$ A=$A000 P=0 FOR I=1 TO LEN(H$) STEP 2 CALL READHEXASTR(H$,I,P) POKE A,P ADD A,1 NEXT I 'DEVELOPER IF A<>$A1A4 THEN PAUSE 'RENDER CACHE INDEX 'IN ORDER TO FOUND WHERE THE RENDERED CACHED DATA IS STORED, THE FOLLOWING HEXASTRING DATA CONTAINS THE RELATIVE ADDRESS FOR IT. DATA "0000000000001401000000000000000000000000000000000000000000000000000000000000000000007E00960000000000A800BA000000680100000000000000000000000000000000CC00DE0000000000F00002010000920100000000000000000000000000002C01000000000000560100000000000000000000000000000000120000001A0124003600000000000000000000000000800100000000000048005A00000000006C0084009C0000000000AE00C00000006E0100000000000000000000000000000000D200E40000000000F600080100009801000000000000440100000000000032010000000000005C01000000000000000000000000000006001800000020012A003C0000000000000000000000000086010000000000004E0060000000000072008A00A20000000000B400C6000000740100000000000000000000000000000000D800EA0000000000FC000E0100009E010000000000004A010000000000003801000000000000620100000000000000000000000000000C001E0000002601300042000000000000000000000000008C010000000000005400660000000000780090000000000000000000000000007A01000000000000000000000000000000000000000000000000000000000000000000000000000050010000000000003E01" 'LOAD THIS DATA INTO AN ARRAY DIM GLOBAL RENDERCACHE(244) READ H$ P=0 Q=0 J=0 FOR I=1 TO LEN(H$) STEP 4 CALL READHEXASTR(H$,I,P) CALL READHEXASTR(H$,I+2,Q) RENDERCACHE(J)=Q*256+P+$A000 ADD J,1 NEXT I 'THE RENDERER WILL CREATE A CELL SIGNATURE USING: 'IT'S RELATIVE POSITION IN THE PLOT (0,1,2) FOR BOTH AXIS 'THE BIOME TYPE FOR THE RENDERER CELL 'THE CHANGE VALUE FOR THE CELL AT THE RIGHT OF THE RENDERER CELL (0= DECREASE THE BIOME TYPE, 1= SAME BIOM TYPE, 2= INCREASE THE BIOME TYPE) 'SAME THING FOR THE CELL AT THE BOTTOM 'SAME THING FOR THE CELL AT THE BOTTOM RIGHT '(IN) X,Y BG CELL POSITION '(LOCAL) M,N RELATIVE PLOT COL,ROW POSITION (0..2) '(LOCAL) E,F PLOT POSITION (0..38) '(LOCAL) TB THE BIOME TYPE FOR THE CURRENT CELL (0,1,2,3) '(LOCAL) RB THE BIOME DIFF FOR THE RIGHT CELL '(LOCAL) BB THE BIOME DIFF FOR THE BOTTOM CELL '(LOCAL) AB THE BUILT CELL SIGNATURE '(LOCAL) A THE ADDRESS WHERE THE RENDERER CACHE DATA ARE STORED MEM$A000..$A1A3 SUB RENDERCELL(X,Y) E=X\3 F=Y\3 IF E<0 OR F<0 OR E>38 OR F>38 THEN EXIT SUB RANDOMIZE X*17+Y*21 M=X MOD 3 N=Y MOD 3 TB=BIOME(E,F) RB=0 BB=0 CB=0 IF E<38 THEN RB=BIOME(E+1,F)-TB IF F<38 THEN BB=BIOME(E,F+1)-TB IF E<38 AND F<38 THEN CB=BIOME(E+1,F+1)-TB 'BUILD THE CELL SIGNATURE AB=(M<2 AND N<2)*-3 + (M=2 AND N<2)*-12 + (M<2 AND N=2)*-48 IF AB>%11 THEN AB=((RB+1)*16+(BB+1)*4) OR (AB AND %111100) ELSE IF AB=0 THEN AB=(RB+1)*16+(BB+1)*4+CB+1 END IF AB=TB*64+AB A=RENDERCACHE(AB) 'RENDER THE CELLS BG 1 ATTR PEEK(A) CELL X,Y,PEEK(A+1)+RND(PEEK(A+2)) BG 0 ATTR PEEK(A+3) CELL X,Y,PEEK(A+4)+RND(PEEK(A+5)) IF M<2 AND N<2 THEN IF ATTRI(E,F) THEN BG COPY M+TB*2-2,N,1,1 TO X,Y ELSE IF (E+2)MOD 7=0 AND (F+2)MOD 7=0 THEN BG COPY M+6,N,1,1 TO X,Y END IF END IF END SUB 'MAPSCENE: '================================= 'BG#1 BASE BIOME ASSETS 'BG#0 BIOME SEPARATOR ASSETS / BIOME ATTRIBUTES / BUILDINGS 'SPR#63 TOTEM EYE 'SPR#20..23 CURSOR CORNER '(GLOBAL) MX,MY MAP POSITION '(GLOBAL) SX,SY SELECTED PLOT GLOBAL MX,MY,SX,SY MX=8 MY=8 SX=0 SY=0 SCROLL 1,MX,MY SCROLL 0,MX,MY 'PLACE TOTEM EYES POSITION SPRITE 63,(MX+36)\168*168-MX+124,(MY+36)\168*168-MY+122,80 SPRITE 63 PAL 7 SPRITE 20 PAL 7 SPRITE 21 PAL 7 FLIP 1,0 SPRITE 22 PAL 7 FLIP 0,1 SPRITE 23 PAL 7 FLIP 1,1 '(LOCAL) TD TOUCH TIME DURATION '(LOCAL) BX,BY TOUCH BEGIN COORDS IN PIXEL '(LOCAL) DX,DY MOVED DISTANCE THIS FRAME IN PIXEL '(LOCAL) CT,CL,CB,CR REDRAW UNTIL THIS RECT IN MAP CELL '(LOCAL) PT,PL,PB,PR CURRENLY DRAWN RECT IN MAP CELL SUB MAPSCENE GOSUB MAPUPDRECT GOSUB MAPDRAWFULL ON VBL CALL MAPVBL 'DETECT TOUCH INPUT MAPINPUT: TD=15 DO IF TAP THEN TD=0 BX=TOUCH.X BY=TOUCH.Y ELSE IF TOUCH THEN ADD TD,1 IF ABS(TOUCH.X-BX)>2 OR ABS(TOUCH.Y-BY)>2 THEN GOTO MAPPAN IF TD>=15 THEN GOTO MAPPAN ELSE IF TD<15 THEN TD=15 GOTO MAPTAP END IF GOSUB MAPUPDATE WAIT VBL LOOP MAPTAP: TRACE "TAP" 'PLACE CURSOR SX=(TOUCH.X+4+MX)\24 SY=(TOUCH.Y+4+MY)\24 GOSUB MAPSHOWCURSOR GOSUB MAPUPDCURSOR GOTO MAPINPUT '(W) DX,DY MOVED DISTANCE THIS FRAME IN PIXEL '(RW) BX,BY TOUCH BEGIN COORDS IN PIXEL '(W) MX,MY MAP POSITION MAPPAN: DO DX=BX-TOUCH.X DY=BY-TOUCH.Y IF DX<>0 OR DY<>0 THEN ADD MX,DX ADD MY,DY CALL CLAMP(MX,8,760) CALL CLAMP(MY,8,792) SCROLL 1,MX,MY SCROLL 0,MX,MY BX=TOUCH.X BY=TOUCH.Y GOSUB MAPUPDRECT GOSUB MAPUPDATE 'UPDATE TOTEM EYES POSITION SPRITE 63,(MX+36)\168*168-MX+124,(MY+36)\168*168-MY+122, 'UPDATE MAP CURSOR GOSUB MAPUPDCURSOR END IF WAIT VBL IF NOT TOUCH THEN GOTO MAPINPUT LOOP '(RW) CT,CL,CB,CR REDRAW COORDS IN MAP CELL TOP,LEFT,BOTTOM,RIGHT) '(W) PT,PL,PB,PR PREVIOUS REDRAW RECT IN MAP CELL '(W) X,Y MAP CELL ITERATOR MAPUPDATE: 'RENDER NEW CELLS AT THE RIGHT IF CR>PR THEN ADD PR,1 IF PR-PL>=32 THEN ADD PL,1 FOR Y=PT TO PB CALL RENDERCELL(PR,Y) NEXT Y END IF 'RENDER NEW CELLS AT THE LEFT IF CL=32 THEN ADD PR,-1 FOR Y=PT TO PB CALL RENDERCELL(PL,Y) NEXT Y END IF 'RENDER NEW CELLS AT THE BOTTOM IF CB>PB THEN ADD PB,1 IF PB-PT>=32 THEN ADD PT,1 FOR X=PL TO PR CALL RENDERCELL(X,PB) NEXT X END IF 'RENDER NEW CELLS AT THE TOP IF CT=32 THEN ADD PB,-1 FOR X=PL TO PR CALL RENDERCELL(X,PT) NEXT X END IF RETURN 'UPDATE THE WANTED DRAW RECT ACCORDING TO THE MAP SCROLL CURSOR '(R) MX,MY MAP POSITION '(W) CT,CL,CB,CR REDRAW RECT IN MAP CELL MAPUPDRECT: CT=(-1*8-7+MY)\8 CL=(-1*8-7+MX)\8 CB=(17*8+7+MY)\8 CR=(21*8+7+MX)\8 RETURN 'UPDATE THE FULL RECT '(R) CT,CL,CB,CR REDRAW RECT IN MAP CELL '(W) X,Y MAP CELL ITERATOR '(W) PT,PL,PB,PR PREVIOUS REDRAW RECT IN MAP CELL MAPDRAWFULL: FOR Y=CT TO CB FOR X=CL TO CR CALL RENDERCELL(X,Y) NEXT X NEXT Y PT=CT PL=CL PB=CB PR=CR RETURN MAPSHOWCURSOR: FOR I=20 TO 23 SPRITE I,,,81 NEXT I RETURN MAPHIDECURSOR: FOR I=20 TO 23 SPRITE I,,,0 NEXT I RETURN '(R) MX,MY MAP POSITION '(R) SX,SY SELECTED PLOT '(W) X1,Y1,X2,Y2 COORS OF EACH SPRITE IN PIXELS MAPUPDCURSOR: X1=SX*24-MX-6 Y1=SY*24-MY-6 X2=SX*24-MX+15 Y2=SY*24-MY+15 IF X1<2 OR X2>150 OR Y1<2 OR Y2>118 THEN GOSUB MAPHIDECURSOR SPRITE 20,X1,Y1, SPRITE 21,X2,Y1, SPRITE 22,X1,Y2, SPRITE 23,X2,Y2, RETURN END SUB SUB MAPVBL COPY MAPCURCHAR((TIMER\30) MOD 2),16 TO $8510 END SUB 'MAIN: '================================= TOUCHSCREEN 'TEMP CALL UNPACKMAP(0) CALL MAPSCENE 'PACKED MAP: '================================= PACKEDMAPSDATA: 'FOR EACH MAP: TWO HEXASTRINGS: BIOME TYPE AND ATTRIBUTE FLAG DATA "B01D782D2809244110211C111A5114092231061514093A111A0D0C093E052E050C0942012E0D000D760D000D760D000D1E173E0D000D1E173A11000D1E331E0D040D1A371A1108091A3F121108091A3F0E150C051A1B0A170E150C0916170E17120D140516170E0F1E0914051A133E0518051A13120F120D14051E370E1114051E370E110C19122F1E090C190E3322050C1116070A1F220508152A0B360508117205080D72050C0D72050C0D72050C0D16092A0916051009120D1A210A09100D0615064D107D28210835340D1815D8" DATA "0000000000000800000000000000000100000100000002800044000000009000000100020848004042134901401211440000405240006001840500042400140010008580100422040100440401004002101100844221220000882208001001001000204801850020120002002220A4000044280000088048000880120024000000004800500000080044119200000462920400915024040000002001A4400920000000002000000000000000100020000000100000000001000000000000" 'ROM FILE: '================================= 'FILE#4..5 ARE USED BY THE MAP EDITOR, THE GENERATED VALUE WILL BE COPIED TO THE DATA ABOVU AS PACKED HEXASTRING AND THEN, FILE#4..5 SHOULD BE REMOVED #1:MAIN PALETTES 050B06000038240000080400002A1500 08282410000E0514002A1501003F3600 #2:MAIN CHARACTERS 00000000000000000000000000000000 FFFFBFE7E6FFDFFF0000401819002000 FFFFBDFFFFD9F9FF0000420000260600 FFF3B3FFFFFEFFEF000C4C0000010010 FFFBFF9F9FFFFFFD0004006060000002 FFE5E7FFB3FFE7E7001A18004C001818 FFE7E7FFE7FFE5E70018180018001A18 8080C08080808C8040602060405E525E 80808080C080C0804040406020602060 8080C0C0808080804060202060404040 FFDFFF9494FFFEFF0020006B6B000100 FFF7FF9F94F4BFFF000800606B0B4000 FF4400000000000000BBEE0000000000 FF2000000000000000DF700000000000 FF0C00000060600000F31E00F09090F0 FFF3F39F94FCE7E7000C0C606B031818 800000000000000040C0000000000000 800000000000000140C0000000000302 0100000006068080FE83808F89C94F40 FFFEBEBFFFF7DFDF0001414000082020 FFDFF7F7FEBEBFFF0020080801414000 FFEFEDFDEFFFBFBF0010120210004040 FFBBEBEFFFBFBDFD0044141000404202 FFEFEBFBEFBBEBEF0010140410441410 FFEBBBEFEBFBEFEB0014441014041014 C0C0E0A0A0E0C0C02030105050103020 C0E0A0A0E0C0C0C03010505010302020 C0C0C0C0E0A0E0C02020203010501030 FFEFFFFAAAAFFFF70010000555500008 FFDFFFBAAAEFFFFD0020004555100002 FFEF2838000000000010D7447C000000 FFFB0E00000020000004F11F00705070 FFDB7E0000000000002481FF00000000 FFEBEFBAAAEFFBEB0014104555100414 C0800000000000002060C00000000000 C0C00000000607032020E0000F09080C FFBBBEE0A0E0C0C00044411F50103020 FFE7BFFEFFFB9FFF0018400100046000 FFECFF9FFFFFF3DF0013006000000C20 FFFDDFFFFFFCCFFF0002200000033000 FFFDFFCEFFFFFB9F0002003100000460 FFE7FFE3FFF3BFE70018001C000C4018 FFF3BFF3FFE3FFE6000C400C001C0019 E0E0E0E0F090F0E01010141008680810 E0F090F0E0B0E0E01008680810481014 E0E0E0E0B0E0E0B01010101048101048 FFDFFFA2FF89FFFB0020005D00760004 FFFBFF89FFE2FFBF00040076001D0040 FF9BFF64000000000064009B64010000 FFCFFB0E00000000003004F10E000000 FFFAFF0500000000000500FA05100000 FFE7FFA2FF88FFE30018005D0077001C F0B0E060000000000848109060000000 E0B0F07C243F0D0710480C825B403208 FFE7FFA4FC90F0E00018005B026C0810 00020408102020000002040810202000 00000608103020000000060810302000 00020C081020200000020C0810202000 00000204081010000000020408101000 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F 00001008080808080000100808080808 00080808080808000008080808080800 00080808080808000008080808080800 00101808080808080010180808080808 00000000FFFFFFFF00000000FFFFFFFF 0000007C000000000000007C00000000 0000007C000000000000007C00000000 00007806000000000000780600000000 0000003E400000000000003E40000000 0F0F0F0FFFFFFFFF0F0F0F0FFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00007F5E615E5E4C00007F7F5E7F7F7F 0307345F271B050503043768381C0606 00000304001317240003040B1F1F3C3F 00666600180018000000240000180000 7CFEFEE0E0E060007C82BEA0A0A06000 00000000000000008000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 617F437F4F607F005E7F7E7F7F5F7F00 0505050D0D0F07000606060E0E0F0700 293B64747C3F03003F7EFFFFFF7F3F07 227F223F220002190000001D3F7F6D7F 030F1E1F0730797F00000100180F0600 C0E0C81CBC3C98DA000030E040C0663C 00003F7F7F526D5200003F3F003F3F3F 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 06000010330C00003F3F7F6B7F7F7F3E 7F1F07E6C70D00000020381F3B733F0F F0E4EEFFBE9800003E3870C0C0E6FCF0 001F1F1F1C1D1C077F2020232726273F #3:TEMP MAIN BG 000014104D044D0C610562054F064F0E 4E044E0C6304630C0000000000000000 0000000000000000000000005D045D0C 710572055F065F0E5E045E0C7306730E 00000000000000000000000000000000 00000000000000000000000500000000 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 #4:PACKED BIOME B01D782D2809244110211C111A511409 2231061514093A111A0D0C093E052E05 0C0942012E0D000D760D000D760D000D 1E173E0D000D1E173A11000D1E331E0D 040D1A371A1108091A3F121108091A3F 0E150C051A1B0A170E150C0916170E17 120D140516170E0F1E0914051A133E05 18051A13120F120D14051E370E111405 1E370E110C19122F1E090C190E332205 0C1116070A1F220508152A0B36050811 7205080D72050C0D72050C0D72050C0D 16092A0916051009120D1A210A09100D 0615064D107D28210835340D1815D8 #5:PACKED ATTR 00000000000008000000000000000001 00000100000002800044000000009000 00010002084800404213490140121144 00004052400060018405000424001400 10008580100422040100440401004002 10110084422122000088220800100100 1000204801850020120002002220A400 00442800000880480008801200240000 00004800500000080044119200000462 920400915024040000002001A4400920 00000000200000000000000010002000 0000100000000001000000000000 #6:CHARACTERS 003E7F7F70707030003E415F50505030 #7:WINTER 050B0600003F2A00003F2A00003F2A00 08282410000E0514002A1501003F3600 #8:AUTUMN 050B06000039250000281400002A2500 08282410000E0514002A1501003F3600 #9:PRINTEMPS 050B06000039240000190500002A0500 08282410000E0514002A1501003F3600 #10:SUMMER 050B06000038240000080400002A1500 08282410000E0514002A1501003F3600