'CHUNK-LOADING LIBRARY FOR NX BACKGROUNDS 'EACH CHUNK HAS A SIZE OF 8X8 CELLS '4X4 CHUNKS FIT INSIDE A 32X32 CELL BACKGROUND '3X3 CHUNKS WILL BE VISIBLE AT ANY TIME 'DIAGONAL LOADING LOADS 7 CHUNKS 'NON-DIAGONAL LOADING LOADS 4 CHUNKS 'THIS VERSION CAN'T LOAD NEGATIVE CHUNKS 'WHAT DO YOU WANT TO LOAD IN CHUNKS: '- TYPE=0: A BG FILE FROM MEMORY '- TYPE=1: A TEXT FILE FROM THE TXT$ ARRAY '- TYPE=2: A COMPACT BACKGROUND FILE TYPE FOR LARGE CUSTOM LEVELS OR MAPS (NOT MADE (YET)) '- TYPE=3: PROCEDURALLY GENERATED TERRAIN (NOT INCLUDED (YET)) '- TYPE=4: PROCEDURALLY GENERATED PLATFORMS (NOT MADE (YET)) 'OR YOU COULD JUST MAKE YOUR OWN SOURCE 'SET THE TYPE HERE: TYPE=0 'SET THE ADDRESS TO LOAD A BACKGROUND FILE FROM ADDR=ROM(3) 'DEFINE YOUR TEXT FILE HERE: DATA "HELLO WORLD THIS IS A TEST, HOW MANY CHARACTERS IS THIS" DATA "I THINK THERE ARE QUITE A LOT OF CHARACTERS IN HERE" DATA "IS IT HARD TO DISPLAY TEXT?" DATA "///" 'THIS CODE READS THE TEXT DATA AND STORES IT INSIDE THE TXT$ ARRAY DIM GLOBAL TXT$(99) I=-1 REPEAT INC I READ TXT$(I) UNTIL TXT$(I)="///" TXT$(I)="" 'RASTERFX TO ZOOM OUT VERTICALLY TO SEE ALL 32 VERTICAL CELLS (DEBUGGING TOOL) 'ON RASTER CALL RASTERFX 'CODE SETUP GAMEPAD 1 DIM GLOBAL COL(7) LX=0 LY=0 X=0 Y=0 VX=0 VY=0 MX=0 MY=0 XB=0 YB=0 'LOAD THE FIRST 16 CHUNKS FOR J=0 TO 3 FOR I=0 TO 3 CALL LOADCHUNK(I*8,J*8,ADDR,TYPE) NEXT I NEXT J GLOBAL DRAG,FRICTION GRAV=0.1 DRAG=0.01 'FRICTION=0.2 FRICTION=0.01 RESIST=DRAG 'RESIST=1 POW=0.2 BORDER=35 CHARW=7 CHARH=6 SMOOTHNESS=16 UB=BORDER DB=128-BORDER-CHARW LB=BORDER RB=160-BORDER-CHARH 'MAINLOOP: DO CALL MOVEMENT(POW,GRAV,RESIST,SMOOTHNESS,LB,RB,UB,DB,VX,VY,MX,MY,X,Y,XB,YB,CHARW,CHARH) IF XB OR YB THEN CALL CHECKCHUNK(MX,MY,LX,LY,ADDR,TYPE) SCROLL 0,MX,MY SPRITE 0,X,Y,63 WAIT VBL LOOP SUB MOVEMENT(POWER,GRAVITY,RESIST,SMOOTHNESS,LB,RB,UB,DB,VX,VY,MX,MY,X,Y,XB,YB,W,H) DX=LEFT(0)-RIGHT(0) DY=UP(0)-DOWN(0) ADD VY,DY*POWER-SGN(VY)*RESIST*(VY*VY)+GRAVITY ADD VX,DX*POWER-SGN(VX)*RESIST*(VX*VX) 'HARD COLLISION: R=1 -> NO COLLISION R=0 -> COLLISION R=1 CALL COLLISION(MX+X+VX,MY+Y,R,W,H) 'IF R=0 THEN 'VY=-ABS(VX) 'VX=0 'END IF ADD VY,ABS(VX)*(R=0)*0.5 VX=VX*R CALL COLLISION(MX+X,MY+Y+VY,R,W,H) VY=VY*R CALL COLLISION(MX+X,MY+Y,R,W,H) IF R=0 THEN 'CLIP VX=0 VY=-1 END IF CALL COLLISION(MX+X,MY+Y+1,R,W,H) IF R=0 THEN RESIST=FRICTION ELSE RESIST=DRAG END IF 'R=1 'C=0 'CALL COLL(MX+X+W*-(VX>=0),MY+Y+H,R,C) 'TRACE C 'DETERMINE WHAT TO DO: (FALL: NOTHING, CLIP: SET VY=-1, STATIC: VY=0) 'MAP-SCROLL-REQUEST BOOL X AND Y XB= SGN(VX)=(XRB) YB= SGN(VY)=(YDB) 'MAP SCROLL SMOOTHNESS (SHOULD BE BETWEEN 0 AND 1) IF XB THEN OX=((XRB)*(X-RB))/SMOOTHNESS ELSE OX=0 IF YB THEN OY=((YDB)*(Y-DB))/SMOOTHNESS ELSE OY=0 'DIVIDE VX AND VY OVER MAP SCROLL AND CHARACTER MOVEMENT ADD MX,VX*OX ADD MY,VY*OY ADD X,VX*(1-OX) ADD Y,VY*(1-OY) END SUB SUB COLLISION(X,Y,R,W,H) 'THIS COLLISION IS INSPIRED BY TIMO'S MAP SCROLLING R=1 CALL COLL(X ,Y ,R,0) CALL COLL(X+W,Y ,R,0) CALL COLL(X ,Y+H,R,0) CALL COLL(X+W,Y+H,R,0) END SUB SUB COLL(X,Y,R,C) 'CHECK SOLID-BLOCK COLLISION 'INTEGER DIVIDE WITH NEGATIVE NUMBER HANDLING CX=INT(X/8) CY=INT(Y/8) C=CELL.C(CX,CY) A=CELL.A(CX,CY) D=-(C<2 OR C>3) R=R*D IF D=1 AND C<>0 AND C<16 THEN 'CHECK IN-CELL COLLISION CALL INCELLCOLL(X,C,A,D) D=-(Y0 THEN EXIT NEXT I D=I 'Y OPERATIONS 'ADDR=$8000+C*16+RX 'DA=PEEK(ADDR) OR PEEK(ADDR+8) 'IF ((DA\2^I) MOD 2)>0 THEN EXIT END SUB SUB GRAVITY(X,MX,Y,VY,SPEED) 'THIS SUB IS COPIED FROM ADVENTURE ENGINE AND IS USED AS A REFERENCE '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 CHECKCHUNK(X,Y,LX,LY,ADDR,T) 'IN NEGATIVE COORDINATES ONE REFRESH EVENT HAS BEEN SKIPPED: IT LAGS BEHIND ONE CHUNK 'INTEGER DIVISION THAT HANDLES NEGATIVE NUMBERS TX=INT(X/64) TY=INT(Y/64) IF TX<>LX OR TY<>LY THEN 'PREPARE 'SET THE RELATIVE CHUNK-LOAD COORDINATES FOR X AND Y (WHICH CAN EACH EITHER BE 0 OR 3) A=SGN(TX-LX)*1.5+1.5 B=SGN(TY-LY)*1.5+1.5 C=TX<>LX D=TY<>LY IF C AND D THEN 'CHANGE DETECTED IN BOTH X AND Y: LOAD 3 CHUNKS LEFT OR RIGHT AND UP OR DOWN FOR I=0 TO 2 CALL LOADCHUNK((TX+A)*8,(TY+I)*8,ADDR,T) CALL LOADCHUNK((TX+I)*8,(TY+B)*8,ADDR,T) NEXT I 'LOAD THE CHUNK IN THE CORNER CALL LOADCHUNK((TX+A)*8,(TY+B)*8,ADDR,T) ELSE IF C THEN 'CHANGE DETECTED IN X: LOAD 4 CHUNKS LEFT OR RIGHT FOR I=0 TO 3 CALL LOADCHUNK((TX+A)*8,(TY+I)*8,ADDR,T) NEXT I ELSE IF D THEN 'CHANGE DETECTED IN Y: LOAD 4 CHUNKS UP OR DOWN FOR I=0 TO 3 CALL LOADCHUNK((TX+I)*8,(TY+B)*8,ADDR,T) NEXT I END IF 'RESET LX=TX LY=TY END IF END SUB SUB LOADCHUNK(X,Y,ADDR,T) 'IN A FUTURE VERSION TYPES CAN BE COMBINED: SO, YOU COULD HAVE A FULL BG FILE FOR THE SPAWN CHUNKS WITH PROCEDURAL TERRAIN OUTSIDE OF IT, WITH BUILDINGS WITH PROCEDURAL PLATFORMS INSIDE WITH STRUCTURES AND MANUAL TERRAIN EDITS USING THE MORE EFFICIENT BG FILE IF T=0 THEN 'LOAD BG FROM FILE BG SOURCE ADDR 'TRACE ABS(X MOD 64) BG COPY X AND 63,Y AND 63,8,8 TO X AND 31,Y AND 31 'TRACE X AND 63,X AND 31 ELSE IF T=1 THEN 'LOAD TEXT FROM ARRAY FOR I=Y TO Y+7 TEXT X,I," " IF I<=UBOUND(TXT$) THEN TEXT X,I,MID$(TXT$(I),X+1,8) END IF NEXT I ELSE IF T=2 THEN 'COMPACT MAP FILE TYPE (NOT MADE (YET)) 'THE DATA COULD LOOK SOMETHING LIKE THIS: 'IT WOULD HAVE A BUNCH OF PREDEFINED CHARACTERS WITH ATTRIBUTES 'IN THE FILE THERE'S A NUMBER FOR EACH PREDEFINED CELL 'THE FILE STARTS WITH A FILE HEADER WHERE YOU CAN DEFINE THE SCALE '(YOU CAN MAKE EVERYTHING 4X AS BIG) 'A BLOCK OF DATA STARTS WITH A HEADER BYTE WHICH DEFINES '- THE CHUNK COORDINATES OF THE CHUNK (RELATIVE, GLOBAL 2 BYTE, OR GLOBAL 4 BYTE) 'GLOBAL COORDINATES TAKE UP 2 TO 4 EXTRA BYTES 'THE DATA IS ENCODED SIMILAR TO CHARACTER DATA, BUT FOR A 8X8 CHUNK OF CELLS INSTEAD ELSE IF T=3 THEN 'BG FILL FILE 'A SET OF COORDINATES AND SIZE VALUES (BG FILL) ELSE IF T=4 THEN 'STRUCTURES 'SMALL BACKGROUND FILES THAT CAN BE SPAWNED AT MULTIPLE COORDINATES (TREES AND BUILDINGS) ELSE IF T=5 THEN 'PROCEDURAL TERRAIN GENERATOR (NOT INCLUDED (YET)) ELSE IF T=6 THEN 'PROCEDURAL PLATFORMS GENERATOR (NOT MADE (YET)) END IF END SUB SUB RANDOM(A,S,V) '(ALGORITHM, SEED, VALUE) 'A SEED-BASED RANDOM GENERATOR ALGORITHM FOR PROCEDURAL TERRAIN IF A=0 THEN V=SIN(SIN(S)) ELSE IF A=1 THEN END IF END SUB SUB RASTERFX 'ZOOM OUT VERTICAL AXIS SCROLL 0,SCROLL.X(0),RASTER SCROLL 1,SCROLL.X(1),RASTER END SUB SUB TRASHBIN 'CALL COLLISION(MX+X+VX,MY+Y+VY,R,W,H) 'READ C$ 'FOR I=1 TO LEN(C$) 'POKE $A000+I+A,ASC(MID$(C$,I,1)) 'NEXT I 'ADD A,LEN(C$) 'TRACE (Y MOD 8)*64 'BG FILL (X*8) MOD 32,(Y*8) MOD 32 TO (X*8) MOD 32+7,(Y*8) MOD 32+7 CHAR 193+X 'FOR I=0 TO 7 'BG COPY (X*8) MOD 64,(Y*8+I) MOD 64,8,1 TO (X*8) MOD 32,(Y*8+I) MOD 32 'BG FILL (X*8) MOD 32,(Y*8+I) MOD 32 TO (X*8) MOD 32+8,(Y*8+I) MOD 32+8 CHAR 192+Y 'BG FILL (X*8) MOD 32,(Y*8) MOD 32 TO (X*8) MOD 32+8,(Y*8) MOD 32+8 CHAR 192+Y 'COPY ROM(3)+(X*8+Y*512+I*64)*2,16 TO $9000+(X*16) MOD 32+(Y*512+I*64) MOD 2048 'FILL $9000+((X1*8+Y1*256+I*32)*2) MOD $800,32,RND*8+1 'TRACE B\128,B MOD 128 'WAIT 10 'NEXT I 'TRACE I,X*8,MID$(TXT$(I),X*8+1,8) 'WAIT 30 'CHR$(PEEK($A000+I+J*20)) END SUB #1:MAIN PALETTES 053F2F0000383400003C0C00003F3C00 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 00010F1F2D7FDFF700010F1F3D7FDFFF E4FFEF7FFFF7BFFFE4FFEFFFFFFFBFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0101030303061FFB0101030303061FFF FF7FEFFF3F7FFDFFFF7FEFFF3F7FFFFF FF3F3F3D3F6F7FFFFF3F3F3D3F7F7FFF 00000000000000000000000000000000 0107071D3F3F77FF0107071D3F3F7FFF 0303070F0B1E7FF70303070F0B1E7FFF 1F3F3F7F7B7E7FF71F3F3F7F7B7E7FFF 0101030307070F1F0101030307070F1F 001E3A3E6E7EFBDF001E3E3E6E7EFBFF 80E1FFBDFFFFDFFF80E1FFBFFFFFFFFF 00000000000000000000000000000000 FFFFBFFDFFDFFFFFFFFFBFFFFFFFFFFF 00000000075FFFFF0000000000000000 0000023FFFFFFFFF0000000000000000 00000020E0F8FCFE0000000000000000 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 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E4FFEF7FFFF7BFFFE4FFEFFFFFFFBFFF 80E1FFBDFFFFDFFF80E1FFBFFFFFFFFF 00010F1F2D7FDFF700010F1F3D7FDFFF 0107071D3F3F77FF0107071D3F3F7FFF 0303070F0B1E7FF70303070F0B1E7FFF 0101030303061FFB0101030303061FFF 1F3F3F7F7B7E7FF71F3F3F7F7B7E7FFF 0101030307070F1F0101030307070F1F 001E3A3E6E7EFBDF001E3E3E6E7EFBFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00007EFFFFFFFF7E00007EFFFFDBFF7E #3:MAIN BG 00004040000000000000000000000000 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 00000000000000000000100011001200 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000001000110012000000 00000000000000000000000000000000 00000000000000000000200021002200 00000000000000000000000000000000 00001000110012000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000010001100 12000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 12081108100800000000000000000000 00000000000000000000000000000000 00000000000000000000000012081108 10080000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000001000110012000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000001208 11081008000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0100020003000D000808000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 10001100120000000000000000000900 03000300030003000300080800000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000001000300 03000300030003000300030008080000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000090003000300 03000300030003000300030003000808 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000100030003000300 03000300030003000300030003000300 08080000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000B000300030003000300 03000300030003000300030003000300 03000808000000000A00020803000D08 0A080000000000000000000000000000 10001100120000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000A000300030003000300 03000300030003000300030003000300 0300030002000D000300030003000300 03000B08000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000001000110012000000 00000000000000000000000000000000 000000000B0003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 030003000D0801080000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 000000000A0003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000B08000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000B00030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000A08000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000A00030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000308080800000000 00000000000000000000000000000000 00000000000012081108100800000000 00000000000000000000000000000000 00000000000000000000000000000000 00000500030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000D00 0A080000000000000000000000000000 00000000000022082108200800000000 00000000000000000000000000000000 00000000000000000000000000000000 0B000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000108000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0A000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030001080000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000D0802080B080000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000400 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000D08 09080000000000000000000000000000 00000000000000000000000000000000 0000000000000C000000010003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 0300080803000D0802000D0001080000 00000000000001000108000000000000 00000100030003000D00030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000200 03000200030003000300040800000100 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300 #4:BG 00004040000000000000000000000000 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 00000000000000000000100011001200 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000001000110012000000 00000000000000000000000000000000 00000000000000000000200021002200 00000000000000000000000000000000 00001000110012000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000002000210022000000 00000000000000000000000000000000 00000000000000000000300031003200 00000000000000000000000000000000 00002000210022000000000000000000 00000000000000000000000010001100 12000000000000000000000000000000 00000000000000000000000000000000 00000000000000003000310032000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00003000310032000000000000000000 00000000000000000000000020002100 22000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000030003100 32000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 12081108100800000000000000000000 00000000000000000000000000000000 00000000000000000000000012081108 10080000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 22082108200800000000000000000000 00000000000000000000000000000000 00000000000000000000000022082108 20080000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 32083108300800000000000000000000 00000000000000000000000000000000 00000000000000000000000032083108 30080000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000001000110012000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000002000210022000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000001208 11081008000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0100020003000D000808000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000002208 21082008000000000000000000000000 00000000000000000000000000000000 10001100120000000000000000000900 03000300030003000300080800000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000003208 31083008000000000000000000000000 00000000000000000000000000000000 20002100220000000000000001000300 03000300030003000300030008080000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 30003100320000000000090003000300 03000300030003000300030003000808 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000100030003000300 03000300030003000300030003000300 08080000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000B000300030003000300 03000300030003000300030003000300 03000808000000000A00020803000D08 0A080000000000000000000000000000 10001100120000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000A000300030003000300 03000300030003000300030003000300 0300030002000D000300030003000300 03000B08000000000000000000000000 20002100220000000000000000000000 00000000000000000000000000000000 00000000000000001000110012000000 00000000000000000000000000000000 000000000B0003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 030003000D0801080000000000000000 30003100320000000000000000000000 00000000000000000000000000000000 00000000000000002000210022000000 00000000000000000000000000000000 000000000A0003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000B08000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000003000310032000000 00000000000000000000000000000000 00000B00030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000A08000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000A00030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000308080800000000 00000000000000000000000000000000 00000000000012081108100800000000 00000000000000000000000000000000 00000000000000000000000000000000 00000500030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000D00 0A080000000000000000000000000000 00000000000022082108200800000000 00000000000000000000000000000000 00000000000000000000000000000000 0B000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000108000000000000000000000000 00000000000032083108300800000000 00000000000000000000000000000000 00000000000000000000000000000000 0A000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030001080000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000D0802080B080000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000400 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000D08 09080000000000000000000000000000 00000000000000000000000000000000 0000000000000C000000010003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 0300080803000D0802000D0001080000 00000000000001000108000000000000 00000100030003000D00030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000200 03000200030003000300040800000100 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300030003000300030003000300 03000300