A smallish game I made over the weekend for a friend.
All its media is built in.
Warning: Extremely addictive
Post your highscores and comments!
Code:
`Project: Unterseeboot! (A Helicopter clone)
`by BmacZero
set display mode 800,600,32
`set window on
set window title "Unterseeboot!"
`======================================
`========== Basic Setup ===============
sync on : sync rate 60
color backdrop rgb(10,20,30)
randomize timer()
Draw Sprites First
Disable Escapekey
set text font "arial"
set text size 20
`======================================
`========== Variable Setup ============
#Constant PlayerSprite 1
#Constant PlayerImage 1
#Constant TitleSprite 100
#Constant TitleImage 100
#Constant BubbleImage 1000
`BubbleSprites : 1000 - 1020
#Constant NoBubbles 5
#Constant BubbleSpeed 2
#Constant VibeSpeed 0.1
#Constant VibeRange 1
#Constant RockColor rgb(15,140,125) `The color of the rocks, for easier access later
#Constant scrwidth screen width()
#Constant scrheight screen height()
#Constant SpScDec 1
#Constant SpAlDec 1000/255
`DON'T CHANGE THESE ^^^
#Constant SpreadAllowed 150
`This is how far from the edge of the screen the tiles are allowed to get
`If they go further, they are reset back to this value
#Constant TileWidth 25
#Constant TileHeight 25
`Duh. The program will automatically adjust to any values you put here!
DIM HighScores(10)
DIM HighScoresN$(10)
If file exist("HighScores.txt") and file exist("HighNames.txt")
Load array "HighScores.txt",HighScores(10)
Load array "HighNames.txt",HighScoresN$(10)
else
HighScoresN$(1)="BmacZero"
HighScoresN$(2)="BmacZero"
HighScoresN$(3)="BmacZero"
HighScoresN$(4)="BmacZero"
HighScoresN$(5)="BmacZero"
HighScoresN$(6)="BmacZero"
HighScoresN$(7)="BmacZero"
HighScoresN$(8)="BmacZero"
HighScoresN$(9)="BmacZero"
HighScoresN$(10)="BmacZero"
HighScores(1)=300
HighScores(2)=250
HighScores(3)=220
HighScores(4)=200
HighScores(5)=150
HighScores(6)=90
HighScores(7)=80
HighScores(8)=70
HighScores(9)=60
HighScores(10)=50
endif
`Used to check collision
DIM Colors(6) as dword
type Bubble
Vibration as Float
Center as Float
Direction as Boolean
endtype
DIM MenuBubbles(NoBubbles) as Bubble
for c=1 to NoBubbles
MenuBubbles(NoBubbles).Direction=rnd(1)
next c
NoTiles=(scrwidth/TileWidth)+2 `This is how many tiles will be drawn at a time
`These are variables for the fading of the title in the menu
going$="up"
SpriteAlphaTemp=0
`Other markers for stuff
GameOver as boolean
gmovr as boolean
success as boolean
clicked as boolean
recordedscore as boolean
placed as boolean
pressed as boolean
Started as boolean
StartedStarted as boolean
on as boolean
global FromScores as boolean
SpAl200 as Float
SpAl201 as Float
SpAl202 as Float
SpSc200 as Float
SpSc201 as Float
SpSc202 as Float
`======================================
`=========== Create Media =============
`Reads the data statements at the end of the program to create the sub image
`The bitmap is slightly large because I use the same one to create the tiles later
create bitmap 2,50,screen height()
restore Submarine
for c=1 to 22
for g=1 to 35
read CurrentColor
dot g,c,CurrentColor
next g
next c
get image PlayerImage,1,1,35,23,1
cls
restore Bubble
for c=1 to 42
for g=1 to 42
read CurrentColor
dot c,g,CurrentColor
next g
next c
get image BubbleImage,1,1,42,42,1
set current bitmap 0
set text size 80
text 0,0,"Get Ready..."
get image 200,0,0,text width("Get Ready..."),text height("Get Ready..."),1
sprite 200,0,0,200
offset sprite 200,sprite width(200)/2,sprite height(200)/2
sprite 200,400,300,200
cls
text 0,0,"Get Set..."
get image 201,0,0,text width("Get Set..."),text height("Get Set..."),1
sprite 201,0,0,201
offset sprite 201,sprite width(201)/2,sprite height(201)/2
sprite 201,400,300,201
cls
text 0,0,"Go!!!"
get image 202,0,0,text width("Go!!!"),text height("Go!!!"),1
sprite 202,0,0,202
offset sprite 202,sprite width(202)/2,sprite height(202)/2
sprite 202,400,300,202
cls
set text size 20
`Paused screen
ink rgb(5,5,5),0
box 0,0,800,600
ink rgb(255,255,255),0
center text 400,100,"PAUSED"
center text 400,120,"Right-click to unpause"
text 200,200,"Controls:"
text 220,220,"Press the left mouse button to make the sub rise"
text 220,240,"Press the right mouse button to pause the game"
text 220,260,"Press escape to quit"
text 200,290,"Objective:"
text 220,310,"Get as far as you can without running into the walls!"
get image 110,0,0,800,600,1
cls
sprite 110,0,0,110
set sprite alpha 110,100
hide sprite 110
set sprite priority 110,11
sprite PlayerSprite,screen width()/1.5,screen height()/2,PlayerImage
set sprite priority PlayerSprite,10
`Create the title
ink RockColor,0
set text size 40
text 100,100,"U"
text 120,120,"N"
text 140,110,"T"
text 160,100,"E"
text 180,120,"R"
text 200,110,"S"
text 220,100,"E"
text 240,110,"E"
text 260,120,"B"
text 280,100,"O"
text 300,100,"O"
text 320,110,"T"
get image 100,100,100,340,160,1
sprite 100,100,80,100
offset sprite 100,sprite width(100)/2,sprite height(100)/2
sprite 100,screen width()/2,100,100
set sprite alpha 100,0
cls
box 0,0,15,15
get image 500,0,0,15,15,1
sprite 500,0,0,500
offset sprite 500,8,8
hide sprite 500
cls
`Create the texts for the menu
set text size 20
text 0,0,"Select Difficulty Level to begin!"
text 20,20,"Easy"
text 20,40,"Normal"
text 20,60,"Difficult"
text 20,80,"Insane"
text 20,120,"High Scores"
text 20,160,"Press escape to exit."
get image 101,0,0,300,180,1
sprite 101,300,200,101
`Create directions screen
text 100,200,"Controls:"
text 120,220,"Press the left mouse button to make the sub rise"
text 120,240,"Press the right mouse button to pause the game"
text 120,260,"Press escape to quit"
text 100,290,"Objective:"
text 120,310,"Get as far as you can without running into the walls!"
text 100,350,"Click the left mouse button to begin!"
get image 106,100,200,800,600,1
sprite 106,200,200,106
hide sprite 106
`======================================
`========== Menu ====================
Menu:
`Save high scores
if file exist("HighScores.txt")
delete file "HighScores.txt"
endif
save array "HighScores.txt",HighScores(10)
if file exist("HighNames.txt")
delete file "HighNames.txt"
endif
save array "HighNames.txt",HighScoresN$(10)
`Menu bubbles
if FromScores=0
for c=1 to NoBubbles
MenuBubbles(c).Center=rnd(screen width())
sprite 1000+c,MenuBubbles(c).Center+1,screen height()+(screen height()/NoBubbles)*c,BubbleImage
show sprite c+1000
set sprite alpha c+1000,150
scale sprite 1000+c,90
next c
else
FromScores=0
endif
`Reset all the variables and reprepare the menu
ink RockColor,0
show sprite 100
show sprite 101
set sprite alpha 200,0
set sprite alpha 201,0
set sprite alpha 202,0
scale sprite 200,100
scale sprite 201,100
scale sprite 202,100
SpAl200=255
SpAl201=255
SpAl202=255
SpSc200=100
SpSc201=100
SpSc202=100
GameOver=0
gmovr=0
PlayerName$=""
Score#=0
TopHeight=200
BottomHeight=100
NewPlace=0
Started=0
StartedStarted=0
placed=0
recordedscore=0
for c=1 to NoTiles
if sprite exist(c+1)=1 then delete sprite c+1
next c
hide sprite PlayerSprite
if sprite exist(120)=1 then delete sprite 120
BoatSpeed#=0
sprite PlayerSprite,screen width()/1.5,screen height()/2,PlayerImage
clicked=1
`Menu
do
`Fade the title
if SpriteAlphaTemp<255 and going$="up"
inc SpriteAlphaTemp
if SpriteAlphaTemp=255 then going$="down"
endif
if SpriteAlphaTemp>0 and going$="down"
dec SpriteAlphaTemp
if SpriteAlphaTemp=0 then going$="up"
endif
set sprite alpha 100,SpriteAlphaTemp
`Select the buttons
if mousex()>320 and mousex()<420
if mousey()<240 and mousey()>220
on=1
show sprite 500
sprite 500,300,230,500
rotate sprite 500,wrapvalue(sprite angle(500)+4)
if mouseclick()=1
Threshold=125
Speed=4
goto PlayGame
endif
endif
if mousey()<260 and mousey()>240
on=1
show sprite 500
sprite 500,300,250,500
rotate sprite 500,wrapvalue(sprite angle(500)+4)
if mouseclick()=1
Threshold=100
Speed=4
goto PlayGame
endif
endif
if mousey()<280 and mousey()>260
on=1
show sprite 500
sprite 500,300,270,500
rotate sprite 500,wrapvalue(sprite angle(500)+4)
if mouseclick()=1
Threshold=100
Speed=6
goto PlayGame
endif
endif
if mousey()<300 and mousey()>280
on=1
show sprite 500
sprite 500,300,290,500
rotate sprite 500,wrapvalue(sprite angle(500)+4)
if mouseclick()=1
Threshold=75
Speed=9
goto PlayGame
endif
endif
if mousey()<340 and mousey()>320
on=1
show sprite 500
sprite 500,300,330,500
rotate sprite 500,wrapvalue(sprite angle(500)+4)
if mouseclick()=1
goto HighScores
endif
endif
endif
if on=1
on=0
else
hide sprite 500
endif
ControlBubbles()
if escapekey()=1
goto EndGame
endif
sync
loop
`======================================
`========== MAIN LOOP =================
PlayGame:
`Directions
hide sprite 101
hide sprite 500
show sprite 106
do
`Fade the title
if SpriteAlphaTemp<255 and going$="up"
inc SpriteAlphaTemp
if SpriteAlphaTemp=255 then going$="down"
endif
if SpriteAlphaTemp>0 and going$="down"
dec SpriteAlphaTemp
if SpriteAlphaTemp=0 then going$="up"
endif
set sprite alpha 100,SpriteAlphaTemp
if escapekey()=1
Goto EndGame
endif
if mouseclick()=1 and clicked=0
goto ReallyThisTime
endif
if mouseclick()=0 then clicked=0
ControlBubbles()
sync
loop
ReallyThisTime:
`Hide menu sprites
hide sprite 100
hide sprite 106
show sprite PlayerSprite
ink RockColor,0
FrontRunner=2
FrontOffset=TileWidth-Speed
`Setup starting tiles
for c=1 to NoTiles
cls rgb(0,0,0)
box 0,0,TileWidth,TopHeight
box 0,scrheight-BottomHeight,TileWidth,scrheight
get image c+1,0,0,TileWidth,scrheight,1
sprite c+1,(c-1)*TileWidth,0,c+1
next c
for c=1 to NoBubbles
hide sprite c+1000
next c
do
`Control Pause Menu
if mouseclick()=2 and clicked=0 and GameOver=0
clicked=1
Paused=1-Paused
if Paused=0 then hide sprite 110
if Paused=1 then show sprite 110
endif
if mouseclick()<>2 then clicked=0
`Save highscores if exit
if escapekey()=1
gosub EndGame
endif
if GameOver=0 and Paused=0 then gosub HandleCountdown
if GameOver=0 and Paused=0 and Started=1 then gosub MoveUboat
if GameOver=0 and Paused=0 then gosub MakeNewSegments
if GameOver=0 and Paused=0 then gosub CheckCollision
if GameOver=1 then gosub ManageGameOver
ink rgb(240,240,240),0
text 10,10,"Score: "+str$(int(Score#))
sync
loop
`======================================
`========== Subroutines! ==============
`Control the movement of the sub :P
MoveUboat:
if mouseclick()=1
dec BoatSpeed#,1
else
inc BoatSpeed#,1
endif
sprite PlayerSprite,screen width()/1.5,sprite y(PlayerSprite)+BoatSpeed#/10,PlayerImage
return
`Create new tiles when the old ones move off the screen
MakeNewSegments:
for c=1 to NoTiles
TempSprite=c+1
`Move the tile back a bit more
sprite TempSprite,sprite x(TempSprite)+Speed,0,TempSprite
`Have to paste the sprites so I can do collision later
`This is because my method of checking collision here is rather unusual
paste sprite TempSprite,sprite x(TempSprite),sprite y(TempSprite)
if sprite x(TempSprite)>=scrwidth
if started=1 then inc score#,1
select rnd(5)
case 0,1
Dec TopHeight,TileHeight
endcase
case 3,4
Inc TopHeight,TileHeight
endcase
endselect
select rnd(5)
case 0,1
Dec BottomHeight,TileHeight
endcase
case 3,4
Inc BottomHeight,TileHeight
endcase
endselect
`Make sure the walls don't go too far beyond the screen
If TopHeight<SpreadAllowed
TopHeight=SpreadAllowed
Topped=1
endif
If BottomHeight<SpreadAllowed
BottomHeight=SpreadAllowed
Bottomed=1
endif
`Make sure the walls always stay at least a certain distance apart
If scrheight-(TopHeight+BottomHeight)<Threshold
DecVal=scrheight-(TopHeight+BottomHeight)
if Topped=1
Dec BottomHeight,DecVal
Topped=0
else
if Bottomed=1
Dec TopHeight,Decval
Bottomed=0
else
Select rnd(1)
case 0 : Dec TopHeight,DecVal : endcase
case 1 : Dec BottomHeight,DecVal : endcase
endselect
endif
endif
endif
if timer()-timerstarted<2000
TopHeight=200
BottomHeight=100
endif
`Draw the new tile
ink rgb(0,0,0),0
set current bitmap 2
box 0,0,TileWidth,screen height()
ink RockColor,0
box 0,0,TileWidth,TopHeight
box 0,scrheight-BottomHeight,TileWidth,scrheight
get image TempSprite,0,0,TileWidth,scrheight,1
set current bitmap 0
sprite TempSprite,sprite x(FrontRunner)-FrontOffset,0,TempSprite
FrontRunner=TempSprite
endif
next c
return
`Check if the sub is colliding with a wall
`To do this, I paste the wall sprites (above). Then I get the color the sub is sitting on
`by using "point" at each of its corners. If any of them are close to the color of the wall,
`the sub has collided.
CheckCollision:
Colors(1)=point(sprite x(PlayerSprite)+5,sprite y(PlayerSprite)+5)
Colors(2)=point(sprite x(PlayerSprite)+5,sprite y(PlayerSprite)+sprite height(PlayerSprite)-5)
Colors(3)=point(sprite x(PlayerSprite)+sprite width(PlayerSprite)-5,sprite y(PlayerSprite)+5)
Colors(4)=point(sprite x(PlayerSprite)+sprite width(PlayerSprite)-5,sprite y(PlayerSprite)+sprite height(PlayerSprite)-5)
Colors(5)=point(sprite x(PlayerSprite)+sprite width(PlayerSprite)/2,sprite y(PlayerSprite))
Colors(6)=point(sprite x(PlayerSprite)+sprite width(PlayerSprite)/2,sprite y(PlayerSprite)+sprite height(PlayerSprite))
success=1
for ct=1 to 6
if rgbr(Colors(ct))<rgbr(RockColor)+10 and rgbr(Colors(ct))>rgbr(RockColor)-10
if rgbg(Colors(ct))<rgbg(RockColor)+10 and rgbg(Colors(ct))>rgbg(RockColor)-10
success=0
endif
endif
next ct
if success=0
GameOver=1
endif
return
`Check if the player got a highscore:
CheckHighScore:
if recordedscore=0
for scorehigh=10 to 1 step -1
if int(score#)>=HighScores(scorehigh)
newplace=scorehigh
endif
next scorehigh
recordedscore=1
if newplace=0
Goto Menu
else
placed=1
Array Insert at element HighScores(10),newplace
Array Insert at element HighScoresN$(10),newplace
HighScores(newplace)=int(score#)
array delete element HighScores(11),11
array delete element HighScoresN$(11),11
cls
print "HIGH SCORES:"
cursor=100
for scoress=1 to 10
inc cursor,20
set cursor 200,cursor
print HighScoresN$(scoress)
next scoress
cursor=100
for scoress=1 to 10
inc cursor,20
set cursor 400,cursor
print HighScores(scoress)
next scoress
get image 120,200,100,500,400,1
sprite 120,200,100,120
endif
endif
if placed=0
goto Menu
else
endif
return
HandleCountdown:
if Started=0
if StartedStarted=0
StartedStarted=1
timerstarted=timer()
endif
if timer()-timerstarted>2000
Started=1
dec SpAl202,SpAlDec
dec SpSc202,SpScDec
set sprite alpha 201,0
set sprite alpha 202,SpAl202
scale sprite 202,SpSc202
else
if timer()-timerstarted>1000
dec SpAl201,SpAlDec
dec SpSc201,SpScDec
set sprite alpha 200,0
set sprite alpha 201,SpAl201
scale sprite 201,SpSc201
else
dec SpAl200,SpAlDec
dec SpSc200,SpScDec
set sprite alpha 200,SpAl200
scale sprite 200,SpSc200
endif
endif
endif
if timer()-timerstarted>3000
set sprite alpha 202,0
else
if timer()-timerstarted>2000 and Started=1
dec SpAl202,SpAlDec
dec SpSc202,SpScDec
set sprite alpha 202,SpAl202
scale sprite 202,SpSc202
endif
endif
return
ManageGameOver:
center text 400,60,"Game Over"
if gmovr=0
gmovr=1
timestart=timer()
else
if timer()-timestart>2000 then gosub CheckHighScore
endif
if placed=1
ink rgb(255,255,255),0
center text 400,80,"High Score! Please enter your name."
text 200,100+(newplace*20),PlayerName$
if returnkey()=1 or mouseclick()=1 and timer()-timestart>1000
HighScoresN$(newplace)=PlayerName$
goto Menu
endif
PlayerName$=PlayerName$+entry$(1)
clear entry buffer
if scancode()=14 and pressed=0
pressed=1
PlayerName$=left$(PlayerName$,len(PlayerName$)-1)
endif
if scancode()=0 then pressed=0
endif
ink rgb(255,0,0),0
circle sprite x(PlayerSprite)+sprite width(PlayerSprite)/2,Sprite y(PlayerSprite)+sprite height(PlayerSprite)/2,30
return
HighScores:
hide sprite 101
hide sprite 500
sync
cls
print "HIGH SCORES:"
cursor=100
for scoress=1 to 10
inc cursor,20
set cursor 200,cursor
print HighScoresN$(scoress)
next scoress
cursor=100
for scoress=1 to 10
inc cursor,20
set cursor 400,cursor
print HighScores(scoress)
next scoress
text 200,cursor+40,"Press any key to return to the menu."
get image 120,200,100,500,400,1
sprite 120,250,150,120
sync
do
`Fade the title
if SpriteAlphaTemp<255 and going$="up"
inc SpriteAlphaTemp
if SpriteAlphaTemp=255 then going$="down"
endif
if SpriteAlphaTemp>0 and going$="down"
dec SpriteAlphaTemp
if SpriteAlphaTemp=0 then going$="up"
endif
set sprite alpha 100,SpriteAlphaTemp
ControlBubbles()
if scancode()>0 or mouseclick()=1 then exit
sync
loop
delete sprite 120
FromScores=1
goto Menu
EndGame:
if file exist("HighScores.txt")
delete file "HighScores.txt"
endif
save array "HighScores.txt",HighScores(10)
if file exist("HighNames.txt")
delete file "HighNames.txt"
endif
save array "HighNames.txt",HighScoresN$(10)
end
return
Submarine:
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16251896,-16251896,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16251896,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16251896,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16251896,-16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16251896,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216,-16777216,-16777216
DATA -16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216,-16777216
DATA -16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216,-16777216
DATA -8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16711681,-16711681,-16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16251896,-8092796,-8092796,-8092796,-8092796,-16251896,-16251896,-8092796,-8092796,-8092796,-8092796,-16251896,-16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216
DATA -8092796,-8092796,-8092796,-8092796,-16251896,-16711681,-16711681,-16711681,-16711681,-16251896,-8092796,-8092796,-8092796,-16251896,-16711681,-16711681,-16251896,-8092796,-8092796,-16251896,-16711681,-16711681,-16251896,-8092796,-8092796,-16251896,-16711681,-16711681,-16251896,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216
DATA -8092796,-8092796,-8092796,-8092796,-16251896,-16711681,-16711681,-16711681,-16711681,-16251896,-8092796,-8092796,-8092796,-16251896,-16711681,-16711681,-16251896,-8092796,-8092796,-16251896,-16711681,-16711681,-16251896,-8092796,-8092796,-16251896,-16711681,-16711681,-16251896,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216
DATA -8092796,-8092796,-8092796,-8092796,-16251896,-16711681,-16711681,-16711681,-16711681,-16251896,-8092796,-8092796,-8092796,-8092796,-16251896,-16251896,-8092796,-8092796,-8092796,-8092796,-16251896,-16251896,-8092796,-8092796,-8092796,-8092796,-16251896,-16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216
DATA -8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16711681,-16711681,-16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216
DATA -16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216,-16777216
DATA -16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216,-16777216
DATA -16777216,-16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16251896,-16251896,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-8092796,-16251896,-16251896,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16251896,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
Bubble:
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-1,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-987664,-1,-1,-1,-1,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16711681,-16711681,-1,-987664,-1,-1,-1,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16711681,-16711681,-1,-987664,-1,-1,-1,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16711681,-1,-987664,-1,-1,-1,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16711681,-16711681,-987664,-1,-1,-1,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16711681,-16711681,-1,-1,-1,-1,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216
DATA -16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-1,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216
DATA -16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216
DATA -16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216
DATA -16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216
DATA -16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216
DATA -16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216
DATA -16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216
DATA -16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216
DATA -16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216
DATA -16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216
DATA -16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-8060929,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216
DATA -16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-8060929,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216
DATA -16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216
DATA -16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216
DATA -16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-8060929,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-8060929,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-8060929,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-8060929,-8060929,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16711681,-16711681,-8060929,-8060929,-8060929,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-8060929,-8060929,-8060929,-8060929,-8060929,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-8060929,-8060929,-8060929,-8060929,-8060929,-8060929,-8060929,-8060929,-8060929,-8060929,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-8060929,-8060929,-8060929,-8060929,-8060929,-8060929,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711681,-16711681,-16711681,-16711681,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216
function ControlBubbles()
for c=1 to NoBubbles
if MenuBubbles(c).Direction=0
inc MenuBubbles(c).Vibration,VibeSpeed
if sprite x(c+1000)>MenuBubbles(c).Center+VibeRange then MenuBubbles(c).Direction=1
endif
if MenuBubbles(c).Direction=1
dec MenuBubbles(c).Vibration,VibeSpeed
if sprite x(c+1000)<MenuBubbles(c).Center-VibeRange then MenuBubbles(c).Direction=0
endif
sprite c+1000,sprite x(c+1000)+MenuBubbles(c).Vibration,sprite y(c+1000)-BubbleSpeed,BubbleImage
if sprite y(c+1000)<-1*(sprite height(c+1000))
MenuBubbles(c).Center=rnd(screen width())
sprite c+1000,MenuBubbles(c).Center,screen height()+sprite height(c+1000),BubbleImage
endif
next c
endfunction
Edit 4/7/08: Adjusted difficulty levels.
Edit 4/7/08: Added a cool new countdown and readjusted the difficulties.
Edit 4/8/08: Reduced tile sizes, so there are more tiles onscreen, and added display settings to the top.
Edit 4/8/08: Fixed a bug causing the sub's collision to fail at certain times.
Edit 4/15/08: Added bubbles that float up the menu and access to high scores from the menu.