"_BOUNDARY_CHECKS" is the subroutine you should look at to see how I kept the player in the center, unless its near the edge where the map can't scroll any further.
set display mode 640,480,32
randomize timer()
`//
`// Passable tiles range from 1 to 5
`// Obstacle tiles range from 6 and up
`//
`//
`//
`//
#CONSTANT TRUE = 1
#CONSTANT FALSE = 0
#CONSTANT GRASS = 1 : `image number for grass
#CONSTANT BRIDGE = 2 : `image number for bridge
#CONSTANT BRICK = 8 : `image number for bricks
#CONSTANT BUSHES = 7 : `image number for bricks
#CONSTANT WATTER = 6 : `image number for water (water is a reserved word, hence watter)
#CONSTANT PLAYER1 = 50 : `image number for player
#CONSTANT ENEMY1 = 51 : `image number for enemy
#CONSTANT TILE_SIZE = 32 : `size of 1 tile (tile is assumed and should to be square)
#CONSTANT CHARACTER_SIZE = 15 : `size of character (assumed to be square)
#CONSTANT ENEMY_BADDIE = 1 : `enemy type
#CONSTANT ENEMY_GHOST = 2 : `enemy type
Global MAP_WIDTH = 64 : `number of tiles in a map across
Global MAP_HEIGHT = 64 : `number of tiles in a map down
GLOBAL SCREEN_HEIGHT : SCREEN_HEIGHT = screen height() / TILE_SIZE : `screen height in number of tiles
GLOBAL SCREEN_WIDTH : SCREEN_WIDTH = screen width() / TILE_SIZE : `screen width in number of tiles
GLOBAL SCREEN_WIDTH_BOUNDARY : SCREEN_WIDTH_BOUNDARY = (MAP_WIDTH * TILE_SIZE) - (SCREEN_WIDTH-1)*TILE_SIZE
GLOBAL SCREEN_HEIGHT_BOUNDARY : SCREEN_HEIGHT_BOUNDARY = (MAP_HEIGHT * TILE_SIZE) - (SCREEN_HEIGHT-1)*TILE_SIZE
GLOBAL SCROLL_BOUNDARY : SCROLL_BOUNDARY = TILE_SIZE*4 : `How far from edge of screen should map start scrolling
GLOBAL STAT_BOX_HEIGHT = 64
GLOBAL MX as float : MX = TILE_SIZE
GLOBAL MY as float : MY = TILE_SIZE
type character
speed as float
x as float
y as float
damage as integer
armor as integer
str as float
dex as float
hp as float
gold as integer
level as integer
expr as integer
name as string
endtype
type enemy_type
name as string
damage as integer
armor as integer
speed as float
endtype
type enemy
x as float
y as float
hp as float
kind as integer
gold as integer
endtype
dim enemy_types(1) as enemy_type
enemy_types(1).name = "Baddie"
enemy_types(1).damage = 2
enemy_types(1).armor = 0
enemy_types(1).speed = 0.75
dim enemies(30) as enemy
for t=1 to 30
enemies(t).x = rnd(640)
enemies(t).y = rnd(480)
enemies(t).hp = rnd(5)+1
enemies(t).kind = ENEMY_BADDIE
enemies(t).gold = rnd(10)
next t
player as character
restore player1_stats
read player.damage
read player.armor
read player.str
read player.dex
read player.hp
read player.gold
read player.level
read player.expr
read player.name
player.x = 320
player.y = 240
player.speed = 0.5
REM create some random images
getGrassImage(GRASS)
getBushesImage(BUSHES)
getWaterImage(WATTER)
getBrickImage(BRICK)
getBridgeImage(BRIDGE)
restore map1
buildMap()
restore player1
getPlayerImage(PLAYER1)
restore enemey1
getEnemyImage(ENEMY1)
sync on
backdrop on
make object cube 3, 4
make matrix 1,43,34,4,4
DO
oldPlayerX# = player.x
oldPlayerY# = player.y
gosub _CONTROLS
if collision_overlaps(player.x, player.y) = TRUE
player.x = oldPlayerX#
player.y = oldPlayerY#
else
gosub _BOUNDARY_CHECKS
endif
drawMap(MX,MY)
positionPlayer(player.x, player.y)
printStats(player)
set cursor 0,0
print "FPS: ",screen fps()
sync
LOOP
`=================================================
`Player controls
`Also keeps coordinates within boundaries
`=================================================
_CONTROLS:
if upkey() then dec player.y, player.speed
if downkey() then inc player.y, player.speed
if rightkey() then inc player.x, player.speed
if leftkey() then dec player.x, player.speed
RETURN
`=================================================
`If given position is inside a tile marked
`not passible, return true
`=================================================
function collision_overlaps(px as float, py as float)
rem convert screen position into world position
px = px + (MX-TILE_SIZE)
py = py + (MY-TILE_SIZE)
mapx1 = px / TILE_SIZE + 1
mapy1 = py / TILE_SIZE + 1
mapx2 = (px+CHARACTER_SIZE) / TILE_SIZE + 1
mapy2 = py / TILE_SIZE + 1
mapx3 = px / TILE_SIZE + 1
mapy3 = (py+CHARACTER_SIZE) / TILE_SIZE + 1
mapx4 = (px+CHARACTER_SIZE) / TILE_SIZE + 1
mapy4 = (py+CHARACTER_SIZE) / TILE_SIZE + 1
id1 = getMapTile(mapy1, mapx1)
id2 = getMapTile(mapy2, mapx2)
id3 = getMapTile(mapy3, mapx3)
id4 = getMapTile(mapy4, mapx4)
if id1 < 6 AND id2 < 6 AND id3 < 6 AND id4 < 6 then exitfunction FALSE
endfunction TRUE
`=================================================
`Checks player and screen boundaries along with
`map scrolling
`=================================================
_BOUNDARY_CHECKS:
sw = screen width()
sh = screen height()
if player.x < 319
if MX > TILE_SIZE
player.x = 319
dec MX, player.speed
else
MX = TILE_SIZE
if player.x < 0 then player.x = 0
endif
endif
if player.x > 321
if MX < SCREEN_WIDTH_BOUNDARY
player.x = 321
inc MX, player.speed
else
MX = MX - (MX-SCREEN_WIDTH_BOUNDARY)
rem 15 is the character's image size
if player.x > sw-15 then player.x = sw-15
endif
endif
if player.y < 239
if MY > TILE_SIZE
player.y = 239
dec MY, player.speed
else
MY = TILE_SIZE
if player.y < 0 then player.y = 0
endif
endif
if player.y > 241
if MY < SCREEN_HEIGHT_BOUNDARY
player.y = 241
inc MY, player.speed
else
MY = SCREEN_HEIGHT_BOUNDARY
if player.y > (sh - STAT_BOX_HEIGHT)-15 then player.y = (sh - STAT_BOX_HEIGHT)-15
endif
endif
RETURN
`=================================================
`Draws the map at position (mapDrawX,mapDrawY
`starting in the top left corner of the screen(0,0)
`Parameters are map coordinates. So a map with 64
`tiles each 32pixels each, the map would range from
`1 to 2048
`=================================================
function drawMap(mapDrawX as integer, mapDrawY as integer)
mapx = mapDrawX / TILE_SIZE
mapy = mapDrawY / TILE_SIZE
xoff = mapDrawX AND (TILE_SIZE-1)
yoff = mapDrawY AND (TILE_SIZE-1)
xoff = mapDrawX - mapx*TILE_SIZE
yoff = mapDrawY - mapy*TILE_SIZE
for x = 0 to SCREEN_WIDTH
for y = 0 to SCREEN_HEIGHT
img = getMapTile(mapy+y, mapx+x)
if img > 0 then paste image img,x*TILE_SIZE - xoff, y*TILE_SIZE - yoff
next y
next x
endfunction
`=================================================
`Position in screen coordinates
`=================================================
function positionPlayer(x as float, y as float)
paste image PLAYER1, x, y, 1
endfunction
`=================================================
`Returns value from map array, making sure the call
`is within the boundaries of the array
`=================================================
function getMapTile(y as integer, x as integer)
if x >= 0 and x <= MAP_WIDTH and y >= 0 and y <= MAP_HEIGHT
img = map(y,x)
exitfunction img
endif
endfunction 0
`=================================================
` !!!!!WARNING!!!!!!
`map data must be restored BEFORE you call this
`function so it knows which map to load
`=================================================
function buildMap()
REM create our map
restore map1
read MAP_WIDTH
read MAP_HEIGHT
SCREEN_WIDTH_BOUNDARY = (MAP_WIDTH * TILE_SIZE) - (SCREEN_WIDTH-1)*TILE_SIZE
SCREEN_HEIGHT_BOUNDARY = ((MAP_HEIGHT * TILE_SIZE) - (SCREEN_HEIGHT-1)*TILE_SIZE) + 64
dim map(MAP_HEIGHT, MAP_WIDTH)
for y=1 to MAP_HEIGHT
for x=1 to MAP_WIDTH
read map(y,x)
next x
next y
endfunction
`=================================================
`Display player's stats
`=================================================
function printStats(c as character)
SH = screen height()
ink 0,0
box 0,SH-STAT_BOX_HEIGHT,screen width(),SH
ink rgb(255,0,0), 0
center text 320,SH - 64,c.name +" ("+str$(c.level)+")"
text 0, SH - 64, "Strength: "+str$(c.str)
text 0, SH - 52, "Dexterity: "+str$(c.dex)
text 0, SH - 40, "Armor: "+str$(c.armor)
text 0, SH - 28, "Damage: "+str$(c.damage)
text 0, SH - 16, "Hitpoints: "+str$(c.hp)
text 190, SH - 28, "Experience: "+str$(c.expr)
text 190, SH - 16, "Gold: "+str$(c.gold)
endfunction
`=================================================
`Randomly creates a grass image
`=================================================
function getGrassImage(img as integer)
cls
for x = 0 to 32
for y=0 to 32
r = rnd(128)
dot x,y,rgb(r,rnd(128)+128,r)
next y
next x
blur bitmap 0, 2
get image img, 0,0,32,32
endfunction
`=================================================
`Randomly creates a bushes image
`=================================================
function getBushesImage(img as integer)
for r = 14 to 1 step -1
g = 255 - (r-1)*10
ink rgb(0,g,0),0
circle 16,16,r
next r
blur bitmap 0,2
get image img, 0,0,32,32
endfunction
`=================================================
`Randomly creates a water image
`=================================================
function getWaterImage(img as integer)
cls
for x = 0 to 32
for y=0 to 32
r = rnd(64)
g = rnd(128)
dot x,y,rgb(r,g,rnd(128)+128)
next y
next x
blur bitmap 0, 3
get image img, 0,0,32,32
endfunction
`=================================================
`Randomly creates a brick image
`=================================================
function getBrickImage(img as integer)
cls
for x = 0 to 32
for y=0 to 32
g = rnd(128)+64
dot x,y,rgb(g,g,g)
next y
next x
ink 0,0
line 0,31,32,31
line 0,21,32,21
line 0,10,32,10
line 10,0,10,10
line 21,0,21,10
line 10,21,10,32
line 21,21,21,32
line 16,10,16,21
get image img, 0,0,32,32
endfunction
`=================================================
`A bridge image
`=================================================
function getBridgeImage(img as integer)
cls
color as dword
for x = 0 to 15
c = (16-x)*2
color = rgb(152-c,146-c,107-c)
ink color, 0
line x,0,x,32
next x
for x = 16 to 32
c = x*2
color = rgb(152-c,146-c,107-c)
ink color, 0
line x,0,x,32
next x
get image img, 0,0,32,32
endfunction
`=================================================
`loads the character and forms a picture from data
`=================================================
function getPlayerImage(img as integer)
cls
color as dword
read cx
read cy
for y = 1 to cy
for x = 1 to cx
read z
color = rgb(255,255,255) * z
dot x,y,color
next y
next x
get image img, 1,1,cx,cy
endfunction
`=================================================
`loads enemey image from data
`=================================================
function getEnemyImage(img as integer)
cls
color as dword
read ex
read ey
for y = 1 to ey
for x = 1 to ex
read a
color = rgb(255,255,255) * z
dot x,y,color
next x
next y
get image img,1,1,ex,ey
endfunction
`=================================================
`End game, 'cause you died!
`=================================================
function endGame()
cls
repeat
center text 320,240, "GAME OVER"
sync
until spacekey()=1
end
endfunction
enemey1:
DATA 15,15
DATA 0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0
DATA 0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0
DATA 0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0
DATA 0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0
DATA 0,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0
DATA 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0
DATA 0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0
DATA 0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0
DATA 0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0
DATA 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0
DATA 0,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0
DATA 0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0
DATA 0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0
DATA 0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0
DATA 0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0
player1_stats:
DATA 2, 0, 9, 6, 40, 80, 1, 0, "Gwark"
player1:
data 15,15
data 0,1,0,0,0,0,0,1,1,0,0,0,0,0,0
data 0,1,0,0,0,0,1,1,1,1,0,0,0,0,0
data 0,0,1,0,0,0,1,1,1,1,0,0,0,0,0
data 0,0,1,0,0,0,0,1,1,0,0,0,0,0,0
data 0,0,0,1,0,0,1,1,1,1,1,0,0,0,0
data 0,0,0,1,0,1,1,1,0,0,1,1,1,0,0
data 0,0,0,0,1,1,0,1,0,1,1,1,1,0,0
data 0,0,0,0,1,0,1,1,1,0,1,1,0,0,0
data 0,0,0,0,0,0,1,1,1,0,1,1,0,0,0
data 0,0,0,0,0,0,1,1,1,1,1,0,0,0,0
data 0,0,0,0,0,0,1,1,0,1,1,0,0,0,0
data 0,0,0,0,0,0,1,1,0,1,1,0,0,0,0
data 0,0,0,0,0,0,1,1,0,1,1,0,0,0,0
data 0,0,0,0,0,1,1,1,0,1,1,1,0,0,0
data 0,0,0,0,0,1,1,1,0,1,1,1,0,0,0
map1:
DATA 64,64
DATA 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,7,7,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,7,1,1,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,7,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,1,1,1,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,7,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,1,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,7,1,1,1,1,7,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,7,1,1,1,1,1,1,1,7,7,7,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,1,1,1,1,1,1,1,1,7,7,7,7,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,6,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8
DATA 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
Deadly Night Assassins