'ADVENTURE ENGINE '- PROCEDURAL TERRAIN '- STRUCTURES '- PLAYER CAN MINE THE TERRAIN, EDITS CAN BE STORED IN PERSISTENT RAM 'TO DO '- GENERATE Y LIMIT FOR PLAYER WHEN IT STANDS ON A WEDGE '- IMPROVE THE CHUNKS LOADING '- MAKE MORE STRUCTURES '- SAVE THE TERRAIN EDITS TO PERSISTENT RAM '- INTEGRATE THE STRUCTURES IN BG 0 (WITH SPECIAL CHARACTERS) 'MORE IDEAS 'CRAFT VEHICLES '- OFFROAD CRUISER '- AIROPLANES AND HELICOPTERS '- ROCKETS 'CRAFT WEAPONS 'MAKE THE GAME CHALLENGING 'SURVIVAL MECHANICS 'OUTHER SPACE 'RADIOACTIVITY 'TEMPERATURE 'HOSTILE ROBOTS 'BG REFRESH CHUNK SIZE IS 8X8 (CAN REFRESH UNNOTICED) 'BASED ON A CHUNK-BASED BG-SCROLL REFRESH SYSTEM 'PROCEDURAL TERRAIN 'SPECIAL BG FILE TYPE: '- STRUCTURES FILE ' - FOR EACH STRUCTURE: ' - DEFINE THE SIZE OF THE STRUCTURE WITH THE FIRST 2 OR MORE BYTES ' (OR 1 BYTE: (0 TO 15)*16) ' - DEFINE THE CHARACTERS AND ATTRIBUTES OF EACH PIXEL IN THE STRUCTURE '- BG FILE ' - COORDINATES TO SPAWN STRUCTURES 'STRUCTURES 'STORED LIKE BG DATA (BUT WITH A HEADER THAT CONTAINS THE SIZE) 'A PROCEDURAL FUNCTION GENERATES COORDINATES TO SPAWN STRUCTURES 'POSSIBLE STRUCTURES (MAKE IT FEEL ALIVE, NOT EMPTY AND LONELY: I CAN SPAWN MANY STRUCTURES) '- VILLAGE HOUSES (MULTIPLE HOUSES IN ONE STRUCTURE), MAKE A FEW TYPES THAT CAN BE REPEATED '- CITY HOUSES (MULTIPLE HOUSES IN ONE STRUCTURE), MAKE A FEW TYPES THAT CAN BE REPEATED '- AN INDUSTRIAL SITE (WITH FACTORY BUILDINGS AND POWER PLANTS) '- TREE (VERY IMPORTANT) '- FOREST (MULTIPLE TREES IN ONE CHARACTER '- A SPACESHIP 'REUSE CHARACTERS TO MAKE MORE BUILDINGS 'ADD BIOMES, LINK IT WITH THE STRUCTURE GENERATION 'BIOMES: 'CITY 'RURAL 'MOUNTAIN 'COLD 'HOT 'RADIOACTIVE 'OCEAN 'FUNCTION TO GENERATE TERRAIN 'CHARACTERS '- SURFACE TERRAIN CHARACTERS (USE FLAT ANGLES AND 45 DEG ANGLES, OR USE MORE ANGLES) '- GROUND TERRAIN CHARACTERS 'SEED -> FUNCTION 'DETECT THE SLOPE, TO GET THE RIGHT CHARACTER(S) 'PLAYER-CAUSED TERRAIN MODIFICATIONS: 'MINING: NO DEFINED CHARACTER NEEDED: IT'S MINED 'BLOCK OF DATA COVERS 4X4 CELLS 'BLOCK OF DATA STARTS WITH 3 BYTE COORDINATES (X IS 16-BIT), IT COULD ALSO DEFINE THE CHARACTER (BUILDING MATERIAL OR CHAR 0) 'IT THEN USES ONE BIT PER PIXEL IN THIS BLOCK (LIKE CHARACTER DATA) 'THE NEXT BLOCK OF DATA COULD USE THE HEADER FROM THE PREVIOUS BLOCK (ROLLING STATUS), WITH AN OFFSET VALUE:X+1,Y+1,X-1,Y-1,NULL TO END THE HEADER, I HAVE SPACE LEFT INSIDE THIS BYTE 'GET THE MINE-COORDINATES AND TURN THEM INTO CHUNK COORDINATES 'FIND THE CHUNK IN MEMORY, IF NOT FOUND IT'LL MAKE A NEW CHUNK, 'THE CURRENT CHUNK ADDRESS WILL BE STORED 'MAKE AN INDEX TABLE SO THAT THE GAME CAN QUICKLY FIND THE CHUNK TO WRITE THE MODIFICATIONS TO 'ORE/TEXTURE-ELEMENTS DISTRIBUTION 'THIS IS A PROCEDURAL FUNCTION WITH DEFINED CHARACTERS 'CODESTART: ON RASTER CALL RASTERFX DIM GLOBAL MAPRAM(1,4) MAPRAM(0,4)=4 GAMEPAD 2 SEED=20 RANDOMIZE SEED 'LASTY=4 'FIRSTY=4 'LASTD=0 'FIRSTD=0 XPLAYER=0 XMAP=0 GLOBAL XPLAYER,XMAP 'GLOBAL LASTY,FIRSTY,LASTD,FIRSTD BG 1 BG COPY 0,0,32,16 TO 0,0 BG 0 CALL GENERATECHUNK(0,1) CALL GENERATECHUNK(1,1) CALL GENERATECHUNK(2,1) CALL GENERATECHUNK(3,1) 'LOADED CHUNK LC=0 'CALL SPAWNSTRUCTURE(2,2,0) X=16 Y=0 Y1=0 MX=0 VY=0 VY1=0 SPEED=2 TOOL=2 GOSUB TOOLSELECT SUB RASTERFX IF RASTER<16 THEN 'PLAYER STATS SCROLL 1,0,0 ELSE IF RASTER<54 THEN 'MOUNTAINS SCROLL 1,XMAP*0.01,0 ELSE IF RASTER<112 THEN 'VALLEY SCROLL 1,XMAP*(RASTER-54)*0.01,0 ELSE 'PLAYER ITEMS SCROLL 1,0,0 END IF END SUB 'MAINLOOP: DO ADD SPEED,BUTTON TAP(0,1)-BUTTON TAP(0,0) DX=LEFT(0)-RIGHT(0) XB=(DX=(XMAXV)) ADD X,DX*-(NOT(XB))*SPEED IF XB THEN ADD MX,DX*SPEED 'CHECKS IF MAP REFRESH IS NECCESSARY 'TRACE MX\8,LC,MX\8>LC MX1=MX\64 'S=(1-SGN(MX1))\2 S=-(MX1<0) IF MX1>LC THEN MX2=MX1 CALL GENERATECHUNK(MX2+3-S,1) 'CALL GENERATECHUNK(MX2+2-S,1) LC=MX1 ELSE IF MX12 THEN SPRITE 0,X-4,Y,15 SPRITE 0 PAL 2 FLIP (1-DX)\2,0 ELSE SPRITE 0,X-4,Y,190 SPRITE 1,X+16-4,Y1,190 SPRITE 2,X+4-4,0.5*(Y+Y1)-10,163 SPRITE 0 PAL 7 SPRITE 1 PAL 7 SPRITE 2 PAL 6 SIZE 1 FLIP (1-DX)\2,0 END IF SCROLL 0,MX,0 XPLAYER=X+MX XMAP=MX FLIP 0,0 BG 1 PAL 6 'X COORDINATE NUMBER 0,0,XPLAYER,6 'CHUNK X COORDINATE 'NUMBER 0,1,XPLAYER MOD 64,6 PAL 0 BG 0 WAIT VBL LOOP TOOLSELECT: MINV=30 MAXV=160-MINV+(TOOL=2)*16 RETURN SUB MINE(X,Y) CELL X,Y,0 'MEMORY OPERATIONS COMING SOON END SUB SUB GRAVITY(X,MX,Y,VY,SPEED) 'GRAVITY TEX=(X+MX)\8 TEY=(Y+7)\8 TEC= CELL.C(TEX,TEY) TEC2=CELL.C(TEX,TEY+1) TEC3=CELL.C(TEX,(Y+8)\8) IF TEC3<>1 AND TEC3<>2 AND TEC3<>3 AND TEC3<>57 AND TEC3<>58 THEN 'FALL ADD VY,0.1-0.01*(VY*VY) ADD Y,VY*SPEED ELSE IF TEC=2 OR TEC2=2 OR TEC=58 OR TEC2=58 THEN 'WEDGE TEC4=CELL.C(TEX,Y\8) CY=(Y\8+(TEC4=2 OR TEC4=57 OR TEC4=58))*8 AT=CELL.A(TEX,CY\8+1) \8 MOD 2 CO=CY+((X+MX) MOD 8)*(AT*2-1)+(1-AT)*8 IF INT(Y)CO THEN 'CLIP WEDGE ADD Y,-1*SPEED VY=0 ELSE 'STATIC WEDGE VY=0 END IF ELSE IF TEC=1 OR TEC=3 THEN 'CLIP ADD Y,-1*SPEED VY=0 ELSE 'STATIC VY=0 END IF END SUB SUB SPAWNSTRUCTURE(X,Y,N) IF N=0 THEN 'SPRUCE TREE 'CHARACTERS 43,59, FLIP X FLIP 1,0 CELL X,Y,43 CELL X,Y+1,59+(CELL.C(X,Y+1)=2) FLIP 0,0 CELL X+1,Y,43 CELL X+1,Y+1,59+(CELL.C(X+1,Y+1)=2) END IF END SUB SUB RANDOM(S,V) V=SIN(S*SIN(S)) V=INT(V*5)\3 'V=INT(V*7-3)\3 'V=SIN(S)MOD 1 'V=RND 'V=INT(V*3-1) 'IF ABS(V)>1 THEN TRACE V ' 'INPUTS: V1,V2,Q1,Q2 'Q1=Q1*V1 'Q2=Q2*V2 'N=((Q1^Q2)*V1)/$FFFFFFFF END SUB SUB GENERATECHUNK(D,DIRECTION) BIO=0 CALL SETBIOME(D,BIO) 'TRACE BIO D=D*8 MINV=D-7*(DIRECTION=-1) MAXV=D-7*(DIRECTION=1) X=MINV-DIRECTION CALL MAPRAMSHIFT(DIRECTION) A=-4*(DIRECTION=1) Y= MAPRAM(0,A) R1=MAPRAM(1,A) V=0 'CLEAR THE CHUNK BG FILL D,0 TO D+7,15 CHAR 0 FOR X=MINV TO MAXV STEP DIRECTION 'GENERATE DIRECTION (-1(UP),0(FLAT),1(DOWN)) (NOT TO BE CONFUSED WITH LOAD-DIRECTION) R2=R1 CALL RANDOM(X,R1) R1=DIRECTION*R1 IF (Y+3)\8<>1 THEN R1=ABS(R1)*-SGN(Y-8) END IF 'SET Y BASED ON THE PSEUDO-RANDOM DIRECTION VALUE IF R1=R2 OR (R1=-1 AND R2=0) THEN ADD Y,R1 ELSE IF R1=0 AND R2=1 THEN ADD Y,R2 END IF 'FILL THE TERRAIN BG FILL X,Y+1 TO X,15 CHAR 3 'RANDOMIZE THE TEXTURE TILES FOR I=Y TO 15 TINT X,I FLIP INT(RND*2),INT(RND*2) NEXT I 'DRAW THE TERRAIN SURFACE FLIP DIRECTION*-(R1>0)-(DIRECTION=-1),0 TEC=CELL.C(X,Y) CELL X,Y,-(R1=0)-2*(R1<>0)-56*(TEC=59) 'CALL FOR A STRUCTURE A=0 CALL RANDOM(X+0.1,A) IF X MOD 2=-(DIRECTION=-1) AND (INT(A)=1) THEN CALL SPAWNSTRUCTURE(X+(DIRECTION=-1),Y-2-(R1>0),0) END IF NEXT X A=-4*(DIRECTION=1) MAPRAM(0,A)=Y MAPRAM(1,A)=R1 END SUB SUB SETBIOME(D,V) CALL RANDOM(D*0.1+0.2,V) V=-(V>0.5)*3 PAL V END SUB SUB MAPRAMSHIFT(D) 'TRACE D FOR J=0 TO 1 FOR I=0 TO 3 A=D*I-4*(D=-1) MAPRAM(J,A)=MAPRAM(J,A+1*D) NEXT I NEXT J 'A=-4*(D=1) 'MAPRAM(0,A)=V1 'MAPRAM(1,A)=V2 'TRACE TIMER MOD 1000,1,MAPRAM(0,0)," ",MAPRAM(0,1)," ",MAPRAM(0,2)," ",MAPRAM(0,3)," " END SUB SUB DEBUG(N,V) SPRITE 63-N,150-N*8,V,189 SPRITE 63-N PAL 7 'FOR I=0 TO 4 'CALL DEBUG(4-I,MAPRAM(0,I)*8) 'NEXT I 'TRACE TIMER MOD 1000,2, 'TRACE MAPRAM(0,0)," ",MAPRAM(0,1)," ",MAPRAM(0,2)," ",MAPRAM(0,3)," ",MAPRAM(0,4) END SUB SUB PRINTARR J=0 TRACE MAPRAM(J,0)," ",MAPRAM(J,1)," ",MAPRAM(J,2)," ",MAPRAM(J,3)," " END SUB SUB DEBUGGINGNOTES 'THE DATA I WANT IS JUST GONE BY THE TIME I NEED IT 'BY THE TIME FIRSTY IS USED IT'S ALREADY WELL OUTDATED 'CALL DEBUG(1,FIRSTY*8) 'CALL DEBUG(0,LASTY*8) 'CALL PRINTARR 'IT READS FROM THE RIGHT PLACE IN THE ARRAY BUT THERE'S A FLAW WITH THE ARRAY FUNCTIONS, WHICH CAUSES IT TO STEP INTO A WRONG DIRECTION OR SOMETHING: IT DOES WHAT THE DEBUGGER INDICATES 'YEP IT INDEED LAGS ONE CYCLE BEHIND 'IT LOOKS LIKE IT'S CAUSED BY THE SFIFT REGISTER BEING TRIGGERED AT THE END OF THE LOOP 'IT'S SAMPLING SLIGHTLY "OUTDATED" DATA 'WHEN GOING BACK IT GENERATES A NEW FIRST-Y AND USES THAT AS IT'S INPUT END SUB #1:MAIN PALETTES 0F181424002E1E2D00152A1F002F1A05 1F2A2410003F2A15003F151B003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 F7CC3F8DE7F067A80033C07F9FFFDCF7 0103050F172B0C270000020109177FDF 5E70EBF7A928BB62FFFFFFFFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000001030000000000000103 070F1F3E7CF8F0E0070F1F3F7FFFFFFF 003C3C3C3C000000FFC3C3C3C3FFFFFF 001E1E1E1E000000FFE1E1E1E1FFFFFF 3C3C3C3C3C3C3C3CFFFFFFFFFBFFFFFF AA80AA80AA80AA80D5FFD5FFD5FFD5FF 000000000000008000000000000000FF 18183838381818180008000000000000 00000000000000000000000000000000 FFCDFFB0400020000032004FBFFFDFFF 0103070E1C3870E00000000103070F1F 0086440000500200FFFFFFFFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FFCDFFBFF7F3FDFF0032004F9FFFDFFF 00000000000000000000000000000000 FFFDDFDBFFFFBDFFFFFFFFFFFFFFFFFF FFFFFB7FFFCFFF7EFFFFFFFFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 000040208080201080C0A0D07860D0E8 800070C058C074C460F08838A43C8838 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 102456D873460C24FFFFFFFFFFFFFFFF 912556C863468825FFFFFFFFFFFFFFFF 5E70EBF7A928BB62FFFFFFFFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 99DB7D3F172B0C2798D87A3109177FDF 0143550F17AB8C27FCB0AAF1E997FFDF 0040500800808080FCB0A8F4FE808080 F02840E0008080800CD0B810E0808080 00000000000000000000000000000000 00000000000000000000000000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00000204010104080103050B1E060B17 000040208080201080C0A0D07860D0E8 01000E031A032E23060F111C253C111C 800070C058C074C460F08838A43C8838 000103060103060D010204091E040912 80C1E3F6E1E3F7EF010204091E040810 80C0E0F0F8E0F0F80000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00020A10000101013F0D152F7F010101 0040500800808080FCB0A8F4FE808080 0F14020700010101300B1D0807010101 F02840E0008080800CD0B810E0808080 03070D1B000101013C0812247F010101 C3F7EFDF038181813C081020FC818181 FCF0B8DCFE8080800000402000808080 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 0000000000000F3F0000000000000F3F 000000000000FFFF000000000000FFFF 0000000E1E3EFCFC0000000E1E3EFCFC 00003070E000000000043E7FFFFF7E00 00000000000000000000060EFC800000 00000000000000000000000000000000 000000000000031F000000000000031F 000000000000FFF8000000000000FFFF 000000000000FE1C000000000000FEFC 00000000000000000000000000000000 000038787100000000013F7FFFFF7F00 00001F00FE00000000FFFFFFFFFFFE00 003D38327C00000000C0C0C080000000 000010C0000000000000000000000000 000000000000000000000000000103FF 00000000000000000000000000E0F0F8 7FFFFF7F000000007FFFFF7F00000000 8F0787C200000000FFFFFFFE1C0C0000 F8F0C00000000000F8F0C00000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 7FFFFFFF3F0000007FFFFFFF3F000000 F0FFE1C3FF000000FFFFFFFFFF000000 3860C08000000000F8E0C08000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 007F40201F000000077F7F3F1F000000 00FF0102FC000000F8FFFFFEFC000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 7F808080808080807FFFFFFFFFFFFFFF 0000000000000000FE01010101010101 00000000000000000000000000000000 003D38327C00000000C0C0C080000000 000010C0000000000000000000000000 060E0070F8D8F870070F1F77FCF8F870 0000000E1F1B1F0EF0F0F8EE3F1F1F0E 00000000000000000000000000000000 0003000000000000003F3F1F07000000 00C0F0780000000000C0F0F8F8000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000000808080808080807F 000000000000000001010101010101FE FF818181818181FF00818181818181FF 3C7EE7C3C3E77E3C3C7EFFFFFFFF7E3C 0000000000000000FF00000000000000 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 00002010000000000000000000000000 C003E803E503E103EC03F403E807C007 C000E600F506E506EC06C006C000C000 E600F506E506EC06C006C00600000000 00000000002000200020002000200020 00000000000000000000000000000000 000000000000000000000000C003E803 E503E103EC03F403E807C00700000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000201020900000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000002010301030102090000 00000000000000000000000000000000 00000000000002010209000000000000 00000201010101010209000000000000 00000000020103010311030103010209 00000000020101010209000000000000 00000000020103090309020902010209 02010301030103010301020900000000 00000201030103010311030103010301 03010209031903190319031902090201 02090201030903190311030103190319 03190301031103190301030103010301 03010301031903010311031903010309 03010301030903010309030103010301 03010301030103010301030103110309 03010301031903010319031103090309 03010301031903010311030103010301 03190301030103110301030103110301 03010301030903190301030103190309 03110319031903010309030103190301 03010319030103010309031903090301 03110309030103010311030103190309 03110301031103110301030103010301 03090301031103010309030103190301 03110319030103090311030103190301 03010301030103110319030103010301 03010301030903010309030103190301 03010301031103090309030903110311 03110311031903190309030103010301 03010301030103010319030103010301 03010311030103090311030103010301 03190309031903010301030103190301 03090309030103010301031103190301 03190301030103010301030103190311 03190311030103010309030103010311 03010309031103010311030103010301 03010301031903190309030103010301 03010311030903110309030103010301 03010301031903010301030103190319 03010301030103190301031103010301 03190301030103010301031103010301 030103010020000000000020AB27AB2F AB27AB2FAB27AB2FAB27AB2FAB27AB2F AB27AB2F002000000000002000000000 00000000000000000000000000000000 000000000020000000000020AB37AB3F AB37AB3FAB37AB3FAB37AB3FAB37AB3F AB37AB3F002000000000002000000000 00000000000000000000000000000000 00000000 #4:STRUCTURES 00001410000000000000000000000000 00000000000000000000000000000A07 0A070A0700000E070000000000002B00 2B0800002C002C080000000008040904 090C080C00000A070A070A0700000D07 0000000000003B003B0800003C003C08 0000000009040B040B0C090C00000A07 0A070A0700000D070000000000000000 0000000000000000000000000B040B04 0C040B0C00000A070C070A0700000D07 00000000000000000000000000000000 00000000000000000000000000000000 00000A070A070A070A070A0700000000 00000000000000000000000000000000 000000000000000000000A070A070A07 0A070A07000000000000000000000000 00000000000000000000000000000000 00000A070A070A070A070A0700000000 00000000000000000000000000000000 000000000000000000000A070A070A07 0A070A07000000000000000000000000 00000000000000000000000000000000 00000A070A070A070A070A0700000000 00000000000000000000000000000000 000000000000000000000A070A070A07 0A070A07000000000000000000000000 00000000000000000000000000000000 00000A070A070A070A070A0700000000 00000000000000000000000000000000 000000000000000000000A070A070A07 0A070A07000000000000000000000000 00000000000000000000000000000000 00000A070A070A070A070A0700000000 00000000000000000000000000000000 000000000000000000000A070A070C07 0A070A07000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000