REM Project: Weather challenge REM Created: 2/10/2005 9:01:35 PM REM By Coding Fodder REM ***** Main Source File ***** REM REM Not cleaned up yet Kinda trashy coding with cool results sync on:sync rate 0 autocam off fog on position camera 2500,500,2500 global strike global strike2 global counter global counter2 x_size=5000 z_size=5000 x_tiles=100 z_tiles=100 seed=0 if seed=0 then seed=timer() type matrix x_grids as integer z_grids as integer grid_spacing as float endtype dim matrices(4) as matrix create bitmap 1,16,16 make memblock from bitmap 1,1 for i=0 to 15 for j=0 to 15 read color set_memblock_pixel(1,i,j,color) next j next i make bitmap from memblock 1,1 delete memblock 1 get image 1,0,0,15,15 make matrix 1,5000,5000,100,100 position matrix 1,50,-10,50 for m=1 to 2 my_matrix(m,100,100,50) Matrix_form_function(m,"seed "+str$(seed)+" sin 150 200 1,150 200 1 0 5 3,0 5 3 5 10 3,5 10 3 8 15 3,8 15 3 0 10 3,0 10 3 0 8 3,0 8 3 roughen 6 300 ",2,700) set_matrix_normals(m) if m=1 for i=1 to 100 for j=1 to 100 set_uv(m,i,j,(i-1)/10.0,(j-1)/10.0) next j next i endif make mesh from memblock m,m change mesh m,0,m texture object m,1 next m `remstart create bitmap 3,12,1 make memblock from bitmap 3,3 for i=0 to 11 read color set_memblock_pixel(3,i,0,color) next i make bitmap from memblock 3,3 set current bitmap 0 lock pixels for i=1 to 256 for j=1 to 256 x#=i*100.0/256.0*50.0 z#=j*100.0/256.0*50.0 h#=get ground height(1,x#,z#) hmap=0 if h#>30.0 then hmap=1 if h#>70.0 then hmap=2 if h#>120.0 then hmap=3 if h#>170.0 then hmap=4 if h#>220.0 then hmap=5 if h#>270.0 then hmap=6 if h#>320.0 then hmap=7 if h#>370.0 then hmap=8 if h#>420.0 then hmap=9 if h#>470.0 then hmap=10 if h#>520.0 then hmap=11 color=get_memblock_pixel(3,hmap,0) red=rgbr(color) green=rgbg(color) blue=rgbb(color) red=red+rnd(20)-10 blue=blue+rnd(20)-10 green=green+rnd(20)-10 if red<0 then red=0 if green<0 then green=0 if blue<0 then blue=0 if red>255 then red=255 if green>255 then green=255 if blue>255 then blue=255 set_locked_pixel(256-i,256-j,rgb(red,green,blue)) next j next i delete memblock 3 delete bitmap 3 delete memblock 1 delete memblock 2 delete bitmap 1 unlock pixels get image 2,0,0,255,255 texture object 2,2 set current bitmap 0 ghost object on 2 make object plain 3,5000,5000 xrotate object 3,-90 create bitmap 3,640,480 color=rgb(0,0,200) box 0,0,640,480,color,color,color,color get image 3,0,0,639,479 texture object 3,3 set object specular 3,rgb(0,0,200) set object specular power 3,100 set current bitmap 0 ghost object on 3 position object 3,2500,0,2500 make object plain 4,640,480 position object 4,0,0,50 lock object on 4 color object 4,RGB(255,255,255) ghost object on 4 `hide object 1 hide object 4 create bitmap 10,8,64 make memblock from bitmap 10,10 for j=0 to 63 for i=0 to 7 read color set_memblock_pixel(10,i,j,color) next i next j make bitmap from memblock 10,10 delete memblock 10 get image 10,0,0,7,63 sprite 1,0,0,10 set current bitmap 0 do angle#=wrapvalue(angle#+0.5) wave#=sin(angle#)*5 position object 3,2500,wave#,2500 text 1,1,str$(screen fps())+" "+str$(seed) control camera using arrowkeys 0,3,2 position camera camera position x(),get ground height(1,camera position x(),camera position z())+50,camera position z() if mouseclick()=1 then strike=1 if strike=1 then lightning() sync loop function lightning() if strike2=0 size sprite 1,mousey()/8,mousey() show sprite 1 offset sprite 1,-mousex(),0 show object 4 inc counter2 if counter2=6 strike2=1 mirror sprite 1 inc counter counter2=0 endif else inc counter2 hide object 4 hide sprite 1 if counter2=5 strike2=0 inc counter counter2=0 endif endif if counter=10 strike2=0 hide object 4 counter=0 strike=0 endif endfunction function my_matrix(num,x_grids,z_grids,grid_spacing) matrices(num).x_grids=x_grids matrices(num).z_grids=z_grids matrices(num).grid_spacing=grid_spacing make memblock num,(6*x_grids*z_grids*32)+12 write memblock dword num,0,274 write memblock dword num,4,32 write memblock dword num,8,6*x_grids*z_grids for i=1 to x_grids+1 for j=1 to z_grids+1 position_vert(num,i,j,i*grid_spacing,-10.0,j*grid_spacing) num1#=(1+matrices(num).x_grids-i) num2#=matrices(num).x_grids num3#=(1+matrices(num).z_grids-j) num4#=matrices(num).z_grids set_uv(num,i,j,num1#/num2#,num3#/num4#) set_normals(num,i,j,0,1,0) next j next i make mesh from memblock num,num make object num,num,1 endfunction function set_normals(num,i,j,nx#,ny#,nz#) x=6*matrices(num).x_grids if i<matrices(num).x_grids+1 and j<matrices(num).z_grids+1 set_normal_x(num,1+(i-1)*6+x*(j-1),nx#) set_normal_y(num,1+(i-1)*6+x*(j-1),ny#) set_normal_z(num,1+(i-1)*6+x*(j-1),nz#) set_normal_x(num,4+(i-1)*6+x*(j-1),nx#) set_normal_y(num,4+(i-1)*6+x*(j-1),ny#) set_normal_z(num,4+(i-1)*6+x*(j-1),nz#) endif if i>1 and j<matrices(num).z_grids+1 set_normal_x(num,6+(i-2)*6+x*(j-1),nx#) set_normal_y(num,6+(i-2)*6+x*(j-1),ny#) set_normal_z(num,6+(i-2)*6+x*(j-1),nz#) endif if i>1 and j>1 set_normal_x(num,3+(i-2)*6+x*(j-2),nx#) set_normal_y(num,3+(i-2)*6+x*(j-2),ny#) set_normal_z(num,3+(i-2)*6+x*(j-2),nz#) set_normal_x(num,5+(i-2)*6+x*(j-2),nx#) set_normal_y(num,5+(i-2)*6+x*(j-2),ny#) set_normal_z(num,5+(i-2)*6+x*(j-2),nz#) endif if i<matrices(num).x_grids+1 and j>1 set_normal_x(num,2+(i-1)*6+x*(j-2),nx#) set_normal_y(num,2+(i-1)*6+x*(j-2),ny#) set_normal_z(num,2+(i-1)*6+x*(j-2),nz#) endif endfunction function set_uv(num,i,j,u#,v#) x=6*matrices(num).x_grids if i<matrices(num).x_grids+1 and j<matrices(num).z_grids+1 set_U(num,1+(i-1)*6+x*(j-1),u#) set_v(num,1+(i-1)*6+x*(j-1),v#) set_u(num,4+(i-1)*6+x*(j-1),u#) set_v(num,4+(i-1)*6+x*(j-1),v#) endif if i>1 and j<matrices(num).z_grids+1 set_u(num,6+(i-2)*6+x*(j-1),u#) set_v(num,6+(i-2)*6+x*(j-1),v#) endif if i>1 and j>1 set_u(num,3+(i-2)*6+x*(j-2),u#) set_v(num,3+(i-2)*6+x*(j-2),v#) set_u(num,5+(i-2)*6+x*(j-2),u#) set_v(num,5+(i-2)*6+x*(j-2),v#) endif if i<matrices(num).x_grids+1 and j>1 set_u(num,2+(i-1)*6+x*(j-2),u#) set_v(num,2+(i-1)*6+x*(j-2),v#) endif endfunction function position_vert(num,i,j,x#,y#,z#) x=6*matrices(num).x_grids if i<matrices(num).x_grids+1 and j<matrices(num).z_grids+1 set_vertex_x(num,1+(i-1)*6+x*(j-1),x#) set_vertex_y(num,1+(i-1)*6+x*(j-1),y#) set_vertex_z(num,1+(i-1)*6+x*(j-1),z#) set_vertex_x(num,4+(i-1)*6+x*(j-1),x#) set_vertex_y(num,4+(i-1)*6+x*(j-1),y#) set_vertex_z(num,4+(i-1)*6+x*(j-1),z#) endif if i>1 and j<matrices(num).z_grids+1 set_vertex_x(num,6+(i-2)*6+x*(j-1),x#) set_vertex_y(num,6+(i-2)*6+x*(j-1),y#) set_vertex_z(num,6+(i-2)*6+x*(j-1),z#) endif if i>1 and j>1 set_vertex_x(num,3+(i-2)*6+x*(j-2),x#) set_vertex_y(num,3+(i-2)*6+x*(j-2),y#) set_vertex_z(num,3+(i-2)*6+x*(j-2),z#) set_vertex_x(num,5+(i-2)*6+x*(j-2),x#) set_vertex_y(num,5+(i-2)*6+x*(j-2),y#) set_vertex_z(num,5+(i-2)*6+x*(j-2),z#) endif if i<matrices(num).x_grids+1 and j>1 set_vertex_x(num,2+(i-1)*6+x*(j-2),x#) set_vertex_y(num,2+(i-1)*6+x*(j-2),y#) set_vertex_z(num,2+(i-1)*6+x*(j-2),z#) endif endfunction rem Accessor and mutator functions for vertex data function Polygons(num) polyg=memblock dword(num,8)/3 endfunction polyg function get_vertex_x(num,vertnum) result#=memblock float(num,(vertnum-1)*32+12) endfunction result# function get_vertex_y(num,vertnum) result#=memblock float(num,(vertnum-1)*32+16) endfunction result# function get_vertex_z(num,vertnum) result#=memblock float(num,(vertnum-1)*32+20) endfunction result# function set_vertex_x(num,vertnum,val#) write memblock float num,(vertnum-1)*32+12,val# endfunction function set_vertex_y(num,vertnum,val#) write memblock float num,(vertnum-1)*32+16,val# endfunction function set_vertex_z(num,vertnum,val#) write memblock float num,(vertnum-1)*32+20,val# endfunction function get_normal_x(num,vertnum) result#=memblock float(num,(vertnum-1)*32+24) endfunction result# function get_normal_y(num,vertnum) result#=memblock float(num,(vertnum-1)*32+28) endfunction result# function get_normal_z(num,vertnum) result#=memblock float(num,(vertnum-1)*32+32) endfunction result# function set_normal_x(num,vertnum,val#) write memblock float num,(vertnum-1)*32+24,val# endfunction function set_normal_y(num,vertnum,val#) write memblock float num,(vertnum-1)*32+28,val# endfunction function set_normal_z(num,vertnum,val#) write memblock float num,(vertnum-1)*32+32,val# endfunction function get_U(num,vertnum) result#=memblock float(num,(vertnum-1)*32+36) endfunction result# function get_V(num,vertnum) result#=memblock float(num,(vertnum-1)*32+40) endfunction result# function set_U(num,vertnum,val#) write memblock float num,(vertnum-1)*32+36,val# endfunction function set_V(num,vertnum,val#) write memblock float num,(vertnum-1)*32+40,val# endfunction function Matrix_form_function(num,format$,scale#,offset#) continue=1 width=matrices(num).x_grids length=matrices(num).z_grids dim sinarray1#(width/4) dim sinarray2#(length/4) dim cosarray1#(width/4) dim cosarray2#(length/4) dim radialcos#(40) strlength=len(format$) position=1 while continue=1 locate=next_command(format$,position) command$=lower$(right$(Left$(format$,locate),locate-position+1)) position=locate+2 select command$ case "sin":funct$="sin":begin=0:wavenum=1:endcase case "cos":funct$="cos":begin=0:wavenum=1:endcase case "radialcos":funct$="rcos":begin=0:wavenum=1:endcase case "rimwall":funct$="rwall":endcase case "seed":randomize (val(right$(left$(format$,next_command(format$,position)),next_command(format$,position)-position+1))):position=next_command(format$,position)+2:endcase case "wn":wavenum=val(right$(left$(format$,next_command(format$,position)),next_command(format$,position)-position+1)):position=next_command(format$,position)+2:endcase case "ct":centerx=val(right$(left$(format$,next_command(format$,position)),next_command(format$,position)-position+1)):position=next_command(format$,position)+2 centerz=val(right$(left$(format$,next_command(format$,position)),next_command(format$,position)-position+1)):position=next_command(format$,position)+2:endcase case " "::endcase case ","::endcase case "roughen":rough=1:roughstart=val(right$(left$(format$,next_command(format$,position)),next_command(format$,position)-position+1)):position=next_command(format$,position)+2 roughamount=val(right$(left$(format$,next_command(format$,position)),next_command(format$,position)-position+1)):position=next_command(format$,position)+2:endcase case ")"::endcase case default:i=val(command$):inc begin:endcase endselect if begin>0 select funct$ case "sin" select begin case 1:min=i:endcase case 2:max=i:endcase case 3 select i case 1:sinarray1#(wavenum)=scale#*(rnd(max-min)+max):endcase case 2:sinarray1#(wavenum)=scale#*(-1*(rnd(max-min)+max)):endcase case 3:sinarray1#(wavenum)=scale#*((-1)^(rnd(2))*(rnd(max-min)+max)):endcase endselect endcase case 4:min=i:endcase case 5:max=i:endcase case 6 select i case 1:sinarray2#(wavenum)=scale#*(rnd(max-min)+max):endcase case 2:sinarray2#(wavenum)=scale#*(-1*(rnd(max-min)+max)):endcase case 3:sinarray2#(wavenum)=scale#*((-1)^(rnd(2))*(rnd(max-min)+max)):endcase endselect inc wavenum begin=0 endcase endselect endcase case "cos" select begin case 1:min=i:endcase case 2:max=i:endcase case 3 select i case 1:cosarray1#(wavenum)=scale#*(rnd(max-min)+max):endcase case 2:cosarray1#(wavenum)=scale#*(-1*(rnd(max-min)+max)):endcase case 3:cosarray1#(wavenum)=scale#*((-1)^(rnd(2))*(rnd(max-min)+max)):endcase endselect endcase case 4:min=i:endcase case 5:max=i:endcase case 6 select i case 1:cosarray2#(wavenum)=scale#*(rnd(max-min)+max):endcase case 2:cosarray2#(wavenum)=scale#*(-1*(rnd(max-min)+max)):endcase case 3:cosarray2#(wavenum)=scale#*((-1)^(rnd(2))*(rnd(max-min)+max)):endcase endselect inc wavenum begin=0 endcase endselect endcase case "rcos" select begin case 1:min=i:endcase case 2:max=i:endcase case 3 select i case 1:radialcos#(wavenum)=scale#*(rnd(max-min)+max):endcase case 2:radialcos#(wavenum)=scale#*(-1*(rnd(max-min)+max)):endcase case 3:radialcos#(wavenum)=scale#*((-1)^(rnd(2))*(rnd(max-min)+max)):endcase endselect inc wavenum begin=0 endcase endselect endcase endselect endif if rough=1 scaling#=roughamount for i=roughstart to width/4 sinarray1#(i)= scaling#*scale#*(rnd(10))*((-1)^(rnd(2)))/700.0 sinarray2#(i)= scaling#*scale#*(rnd(10))*((-1)^(rnd(2)))/700.0 cosarray1#(i)= scaling#*scale#*(rnd(10))*((-1)^(rnd(2)))/700.0 cosarray2#(i)= scaling#*scale#*(rnd(10))*((-1)^(rnd(2)))/700.0 radialcos#(i)=scaling#*scale#*(rnd(10))*((-1)^(rnd(2)))/200.0 scaling#=scaling#*0.94 next i rough=0 endif if position >= strlength then continue=0 endwhile for i=0 to width for j=0 to length height#=0 for x=1 to width/4 height#=height#+(sinarray1#(x)*sin((x*i*180.0)/width))+(cosarray1#(x)*cos((x*i*180.0)/width)) next x for y= 1 to length/4 height#=height#+(sinarray2#(y)*sin((y*j*180.0)/length))+(cosarray2#(y)*cos((y*j*180.0)/length)) next y distance#=sqrt(((width/2)-i)^2+((length/2)-j)^2) for x=1 to 40 height#=height#+(radialcos#(x)*cos((x*distance#*180/width))) next x position_vert(num,i+1,j+1,(i+1)*matrices(num).grid_spacing,height#-offset#,(j+1)*matrices(num).grid_spacing) if num=1 then set matrix height 1,i,j,height#-offset# next j next i make mesh from memblock num,num change mesh num,0,num if num=1 then update matrix 1 undim sinarray1#(0) undim sinarray2#(0) undim cosarray1#(0) undim cosarray2#(0) undim radialcos#(0) endfunction function next_command(format$,position) found=0 length=len(format$) locate=position while found=0 if locate>length found=1 else if mid$(format$,locate)=" " or mid$(format$,locate)="," found=1 endif endif inc locate endwhile locate=locate-2 endfunction locate function set_matrix_normals(num) r=make vector3(vector) for i=2 to matrices(num).x_grids-1 for j=2 to matrices(num).z_grids-1 us#=((get_vertex_y(num,1+(i-2)*6+(j-1)*matrices(num).x_grids*6)-get_vertex_y(num,1+(i)*6+(j-1)*matrices(num).x_grids*6))/matrices(num).grid_spacing) vs#=((get_vertex_y(num,1+(i-1)*6+(j-2)*matrices(num).x_grids*6)-get_vertex_y(num,1+(i-1)*6+(j)*matrices(num).x_grids*6))/matrices(num).grid_spacing) set vector3 vector,us#,1,vs# normalize vector3 norm,vector set_normals(num,i,j,x vector3(norm),y vector3(norm),z vector3(norm)) next j next i make mesh from memblock num,num change mesh num,0,num endfunction function set_memblock_pixel(memblock,x,y,color) width=memblock dword(memblock,0) height=memblock dword(memblock,4) depth=memblock dword(memblock,8) if x>-1 and y>-1 and x<width and y<height pointer=y*width*depth/8+x*depth/8+12 write memblock dword memblock,pointer,color endif endfunction function get_memblock_pixel(memblock,x,y) width=memblock dword(memblock,0) height=memblock dword(memblock,4) depth=memblock dword(memblock,8) if x>-1 and y>-1 and x<width and y<height pointer=y*width*depth/8+x*depth/8+12 value=memblock dword(memblock,pointer) endif endfunction value function set_locked_pixel(x,y,color_value) start=get pixels pointer() repeat_number=get pixels pitch() bits_per_pixel=bitmap depth(num)/8 pointer=start+y*repeat_number+x*bits_per_pixel *pointer=color_value endfunction DATA -16777216,-16316665,-15527149,-15922164,-16316410,-15658222,-14869218,-15396076,-16382713,-16776959,-16776960,-16777215,-16645886,-16777215,-16776960,-16777216 DATA -16777216,-15592942,-9474193,-14869476,-16513531,-15987187,-15592684,-15659761,-15793144,-16383486,-16711680,-16777216,-16777216,-16777216,-16777216,-16777216 DATA -16777216,-16119286,-15000804,-15527149,-16316665,-16316664,-16382202,-15530744,-9501146,-15203318,-16579837,-16645629,-16710911,-16711167,-16711423,-16777216 DATA -16777215,-16711680,-16579836,-15987444,-15395307,-15461358,-15988213,-15792631,-14612719,-15135470,-15593454,-15856628,-15724016,-15395564,-16119799,-16711422 DATA -16382970,-16645887,-16448251,-15264234,-14013910,-14014167,-15001318,-15856114,-15922161,-15198440,-14606560,-15263722,-14606048,-12303294,-14869987,-15725551 DATA -15988467,-16645375,-16579579,-15395563,-14013654,-13421773,-14146010,-15263977,-15593454,-15132648,-14868963,-15198186,-15066855,-14803683,-14476254,-13557455 DATA -16185847,-16645886,-16514045,-15987187,-14934755,-14014166,-14146009,-15001062,-15592428,-15198182,-14803426,-15198185,-15855857,-16053749,-15594223,-15397356 DATA -16382461,-15790077,-15856380,-16053237,-15658220,-15066596,-15001061,-15461355,-15592939,-14803682,-13882582,-14343132,-15527149,-16251129,-16448507,-16514301 DATA -15395833,-13290744,-14935290,-15987702,-15790061,-15790318,-15921905,-15987444,-15658735,-14737632,-13685202,-13553616,-14935269,-15987444,-16316921,-16513787 DATA -14474726,-14211824,-15198711,-16185336,-16119542,-15987956,-15987957,-15790578,-15066854,-14211290,-14145238,-14408923,-14671585,-15066598,-15658478,-15526892 DATA -12960711,-15198444,-16250616,-16514044,-16447482,-15790065,-15000805,-15000548,-14211545,-12566977,-13817043,-15198441,-14737890,-14079446,-15197927,-14605791 DATA -15263721,-16053492,-16316921,-16579323,-16447481,-15592686,-14145755,-14606048,-14408411,-12829381,-14013911,-15329513,-15263974,-14935264,-15592938,-15592430 DATA -16711166,-16711424,-14606046,-15461613,-16185079,-15856114,-15395307,-15395308,-15330027,-14803684,-14540253,-14211546,-13948625,-15455823,-15394523,-16381945 DATA -16777216,-16777215,-10921639,-14606304,-16053493,-16250873,-16184566,-16119543,-16119800,-15922162,-15066341,-13356236,-12500923,-12170916,-14539472,-16382201 DATA -16777216,-16777216,-14145753,-15329769,-16185079,-16250616,-16184565,-16250872,-16448508,-16382714,-15921907,-14935013,-13290443,-11711155,-14606047,-16448251 DATA -16777216,-16777216,-16316923,-16382714,-16316666,-15855857,-15461099,-15724784,-16448251,-16580605,-16579838,-16316666,-15724270,-15197928,-15987444,-16645887 DATA -536462,-7679992,-15684847,-15690223,-9395701,-9402101,-8164061,-8171997,-8095918,-6645352,-3947582,-1381913 DATA -16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-1835773,-197381,-16777216,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-197381,-197381,-16777216,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-1835773,-1835773,-16777216,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-1835773,-1835773,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-1835773,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-1835773,-1835773,-1835773,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-197381,-16777216,-1835773,-16777216,-1835773,-1835773 DATA -16777216,-16777216,-197381,-16777216,-1835773,-197381,-1835773,-16777216 DATA -16777216,-16777216,-197381,-16777216,-16777216,-197381,-1835773,-16777216 DATA -16777216,-16777216,-1835773,-16777216,-16777216,-1835773,-1835773,-16777216 DATA -16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-1835773,-16777216 DATA -16777216,-16777216,-197381,-1835773,-16777216,-16777216,-1835773,-16777216 DATA -16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-1835773,-1835773,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-1835773,-197381,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-197381,-197381,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-197381,-197381,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-1835773,-197381,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-197381,-1835773,-1835773,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-197381,-1835773,-16777216,-197381,-16777216,-16777216 DATA -16777216,-16777216,-197381,-16777216,-16777216,-197381,-16777216,-16777216 DATA -16777216,-16777216,-197381,-16777216,-16777216,-197381,-16777216,-16777216 DATA -16777216,-197381,-197381,-16777216,-16777216,-197381,-16777216,-16777216 DATA -16777216,-1835773,-16777216,-16777216,-16777216,-197381,-16777216,-16777216 DATA -16777216,-1835773,-16777216,-16777216,-16777216,-197381,-16777216,-16777216 DATA -1835773,-1835773,-16777216,-16777216,-16777216,-197381,-1835773,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-16777216,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-16777216,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-16777216,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-1835773,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216 DATA -16777216,-16777216,-16777216,-1835773,-1835773,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-1835773,-1835773,-16777216,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-197381,-197381,-16777216,-1835773,-16777216,-16777216 DATA -16777216,-16777216,-197381,-197381,-16777216,-1835773,-1835773,-16777216 DATA -16777216,-16777216,-197381,-197381,-16777216,-16777216,-1835773,-16777216 DATA -16777216,-16777216,-197381,-197381,-16777216,-16777216,-1835773,-1835773 DATA -16777216,-1835773,-1835773,-1835773,-1835773,-16777216,-16777216,-1835773 DATA -16777216,-1835773,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216 DATA -1835773,-1835773,-16777216,-1835773,-1835773,-16777216,-16777216,-16777216 DATA -1835773,-16777216,-16777216,-197381,-197381,-16777216,-16777216,-16777216