You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
739 lines
34 KiB
739 lines
34 KiB
-- title: The Right Coin
|
|
-- author: Fabien Freling, Pascal Batty
|
|
-- desc: Sell coins for medicine (Ludum Dare 44)
|
|
-- script: lua
|
|
|
|
t=0
|
|
s=8 -- sprite/cell size
|
|
w=240
|
|
mw=w/s
|
|
h=136
|
|
mh=h/s
|
|
|
|
GameState = { start=0, game=1, gameover=2, market=3 }
|
|
currentState = GameState.start
|
|
life=100
|
|
coinBlue=0
|
|
valueBlue=1.0
|
|
coinRed=0
|
|
valueRed=5.0
|
|
coinYellow=0
|
|
valueYellow=0.8
|
|
MarketOptions = { blue=0, red=1, yellow=2, all=3, done=4 }
|
|
marketSelection = MarketOptions.blue
|
|
secondsAlive=0
|
|
sickCounter=20 -- how many seconds before the sickness get stronger?
|
|
sickLapse=20 -- how many ticks before the life decreases?
|
|
|
|
solids={}
|
|
do
|
|
local sols={1, 2, 3, 17}
|
|
for i,v in pairs(sols) do
|
|
solids[v]=true
|
|
end
|
|
end
|
|
|
|
function sol(x,y) return solids[mget(x//8,y//8)] end
|
|
g = .15
|
|
j = -3.1
|
|
|
|
anis={
|
|
idle={257,257,258,258,259,259,260,260},
|
|
run= {273,274,275,276},
|
|
jump={289},
|
|
fall={290},
|
|
coin={
|
|
blue= {321,321,322,322,323,323,324,324},
|
|
red= {337,337,338,338,339,339,340,340},
|
|
yellow={353,353,354,354,355,355,356,356},
|
|
}
|
|
}
|
|
|
|
function drawActor(self)
|
|
self.spr=self.ani[(((t)//4)% #self.ani)+1]
|
|
local flip
|
|
if self.isFlipped then flip = 1 else flip = 0 end
|
|
spr(self.spr, self.x, self.y, 0, 1, flip)
|
|
end
|
|
|
|
function hitTest(rect1, rect2)
|
|
return rect1.x < rect2.x + rect2.w
|
|
and rect1.x + rect1.w > rect2.x
|
|
and rect1.y < rect2.y + rect2.h
|
|
and rect1.y + rect1.h > rect2.y
|
|
end
|
|
|
|
coinCooldown=160
|
|
coinTimer=coinCooldown
|
|
maxCoin=6
|
|
initialCoinDrop=4
|
|
coinSpawnCount=2
|
|
colors={"blue","red","yellow"}
|
|
spawnLocs={
|
|
{x=1*8, y=5*8},
|
|
{x=28*8,y=5*8},
|
|
{x=6*8, y=5*8},
|
|
{x=23*8,y=5*8},
|
|
{x=11*8,y=12*8},
|
|
{x=18*8,y=12*8},
|
|
{x=2*8, y=11*8},
|
|
{x=27*8,y=11*8},
|
|
{x=4*8, y=15*8},
|
|
{x=25*8,y=15*8},
|
|
}
|
|
coins={}
|
|
do -- Coin
|
|
Coin={
|
|
color=colors[1],
|
|
ani=anis.coin.red,
|
|
spr=0,
|
|
x=0,y=0,
|
|
w=8,h=8,
|
|
}
|
|
|
|
function Coin:new(o)
|
|
o = o or {}
|
|
self.__index = self
|
|
setmetatable(o, self)
|
|
return o
|
|
end
|
|
|
|
function Coin:setColor(c)
|
|
self.color = c
|
|
if c=="red" then self.ani=anis.coin.red
|
|
elseif c=="blue" then self.ani=anis.coin.blue
|
|
elseif c=="yellow" then self.ani=anis.coin.yellow
|
|
end
|
|
end
|
|
|
|
function Coin:draw()
|
|
drawActor(self)
|
|
end
|
|
end
|
|
|
|
function randomColor()
|
|
return colors[math.random(#colors)]
|
|
end
|
|
|
|
function coinAtLoc(loc)
|
|
for i,v in pairs(coins) do
|
|
if v.x == loc.x and v.y == loc.y then return true end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function randomValidSpawnLoc()
|
|
local loc
|
|
repeat loc=spawnLocs[math.random(#spawnLocs)]
|
|
until not coinAtLoc(loc)
|
|
return loc
|
|
end
|
|
|
|
function canAddCoin()
|
|
return #coins < maxCoin
|
|
end
|
|
|
|
function addRandomCoin()
|
|
if not canAddCoin() then return end
|
|
local newCoin=Coin:new()
|
|
local loc=randomValidSpawnLoc()
|
|
newCoin:setColor(randomColor())
|
|
newCoin.x=loc.x
|
|
newCoin.y=loc.y
|
|
coins[#coins + 1]=newCoin
|
|
coinTimer=coinCooldown
|
|
end
|
|
|
|
function dropInitialCoins()
|
|
coins={}
|
|
for i=1, initialCoinDrop do
|
|
addRandomCoin()
|
|
end
|
|
end
|
|
-- /MOCK
|
|
|
|
do -- Player
|
|
Player = {
|
|
spr=0,
|
|
ani=anis.idle,
|
|
x=14.5*8,y=8*8,
|
|
w=8,h=8,
|
|
vx=0,vy=0,
|
|
isFlipped=false
|
|
}
|
|
|
|
local maxSp=2
|
|
local accel=0.3
|
|
local decel=0.5
|
|
|
|
function Player:new(o)
|
|
o = o or {}
|
|
self.__index = self
|
|
setmetatable(o, self)
|
|
return o
|
|
end
|
|
|
|
function Player:direct()
|
|
if btn(2) then
|
|
self:goLeft()
|
|
elseif btn(3) then
|
|
self:goRight()
|
|
else self:stop()
|
|
end
|
|
if btnp(4) and self.vy == 0 then
|
|
sfx(2,54,15,1)
|
|
self.vy = j
|
|
end
|
|
end
|
|
|
|
function Player:goLeft()
|
|
if self.vx > 0 then self.vx=0 end
|
|
self.vx=self.vx - accel
|
|
if self.vx < -maxSp then self.vx=-maxSp end
|
|
self.isFlipped = true
|
|
end
|
|
|
|
function Player:goRight()
|
|
if self.vx < 0 then self.vx=0 end
|
|
self.vx=self.vx + accel
|
|
if self.vx > maxSp then self.vx=maxSp end
|
|
self.isFlipped = false
|
|
end
|
|
|
|
function Player:stop()
|
|
if self.vx < 0 then
|
|
self.vx= self.vx + decel
|
|
if self.vx > 0 then self.vx=0 end
|
|
elseif self.vx > 0 then
|
|
self.vx= self.vx - decel
|
|
if self.vx < 0 then self.vx=0 end
|
|
end
|
|
end
|
|
|
|
function Player:update()
|
|
self:resolve()
|
|
self.x = self.x + self.vx
|
|
self.y = self.y + self.vy
|
|
self:collectCoin()
|
|
end
|
|
|
|
function Player:resolve()
|
|
if sol(self.x + self.vx, self.y + self.h-1) or sol(self.x + self.vx + self.w-1, self.y + self.h-1) then
|
|
self.vx = 0
|
|
end
|
|
|
|
local roof = self:distanceToRoof()
|
|
local floor = self:distanceToFloor()
|
|
if self.vy < roof then
|
|
self.vy = roof
|
|
end
|
|
if self.vy >= floor then self.vy = floor
|
|
else self.vy = self.vy + g
|
|
end
|
|
if self.vy < 0 then
|
|
self.ani = anis.jump
|
|
elseif self.vy > 0 then
|
|
self.ani = anis.fall
|
|
elseif not (self.vx == 0) then
|
|
self.ani = anis.run
|
|
else
|
|
self.ani = anis.idle
|
|
end
|
|
end
|
|
|
|
function Player:distanceToFloor()
|
|
local y = 0
|
|
while (not sol(self.x + self.vx, self.y + y + self.h))
|
|
and (not sol(self.x + self.vx + self.w-1, self.y + y + self.h))
|
|
and (self.y + y < 128) do
|
|
y = y + 1
|
|
end
|
|
return y
|
|
end
|
|
|
|
function Player:distanceToRoof()
|
|
local y = 0
|
|
while (not sol(self.x + self.vx, self.y + y - 1))
|
|
and (not sol(self.x + self.vx + self.w-1, self.y + y - 1))
|
|
and (self.y + y > 0) do
|
|
y = y - 1
|
|
end
|
|
return y
|
|
end
|
|
|
|
function Player:collectCoin()
|
|
for i,v in pairs(coins) do
|
|
if hitTest(self, v) then
|
|
sfx(0)
|
|
table.remove(coins,i)
|
|
if v.color == "blue" then coinBlue=coinBlue+1
|
|
elseif v.color == "red" then coinRed=coinRed+1
|
|
elseif v.color == "yellow" then coinYellow=coinYellow+1
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function Player:draw()
|
|
drawActor(self)
|
|
end
|
|
end
|
|
|
|
function drawStart()
|
|
cls(1)
|
|
print("The Right Coin",80,20)
|
|
spr(80, 20, 30, 0, 3)
|
|
spr(81, 50, 50, 0, 2)
|
|
spr(82, 40, 70, 0, 1)
|
|
local yText=35
|
|
print("You're dying, and medicine",130,yText,15,false,1,true)
|
|
print("ain't cheap. Exchange your",130,yText+10,15,false,1,true)
|
|
print("most valuable coins for life.",130,yText+20,15,false,1,true)
|
|
print("The market will dictate how",130,yText+30,15,false,1,true)
|
|
print("much medicine you can buy.",130,yText+40,15,false,1,true)
|
|
|
|
-- A
|
|
spr(401,60,90,0)
|
|
print(": JUMP",70,92)
|
|
print("(keyboard: Z)",60,98,15,false,1,true)
|
|
-- B
|
|
spr(402,130,90,0)
|
|
print(": ENTER MARKET",140,92)
|
|
print("(keyboard: X)",130,98,15,false,1,true)
|
|
|
|
if t%60 > 20 then
|
|
print("Press",75,112)
|
|
spr(401,108,110,0)
|
|
print("to start",120,112)
|
|
end
|
|
print("Fabien Freling & Pascal Batty", 65, 128, 15, false, 1, true)
|
|
end
|
|
|
|
function drawGameOver()
|
|
cls(0)
|
|
map(0,17,30,17)
|
|
|
|
-- Time alive
|
|
local minutes = secondsAlive // 60
|
|
local seconds = secondsAlive % 60
|
|
|
|
print("You ran out of time",70,36,6)
|
|
if minutes == 0 then
|
|
print("You survived for "..seconds.." seconds.",70,50)
|
|
elseif minutes == 1 then
|
|
print("You survived for "..minutes.." minute",70,50)
|
|
print("and "..seconds.." seconds.",70,64)
|
|
else
|
|
print("You survived for "..minutes.." minutes",70,50)
|
|
print("and "..seconds.." seconds.",70,64)
|
|
end
|
|
if t > 120 and t%120 > 20 then
|
|
print("Press",100,100)
|
|
spr(401,132,98,0)
|
|
end
|
|
end
|
|
|
|
function drawGame()
|
|
map(0,0,30,17)
|
|
p:draw()
|
|
for i,v in pairs(coins) do
|
|
v:draw()
|
|
end
|
|
drawLife(0,0,0)
|
|
if isOnMarket() then
|
|
spr(385, 14.5*8, 6*8)
|
|
end
|
|
|
|
-- Coins / market
|
|
local coinsOff=110
|
|
spr(80,coinsOff,0)
|
|
print("x"..coinBlue,coinsOff+s,2)
|
|
spr(81,coinsOff+25,0)
|
|
print("x"..coinRed,coinsOff+25+s,2)
|
|
spr(82,coinsOff+50,0)
|
|
print("x"..coinYellow,coinsOff+50+s,2)
|
|
-- spr(84,190,0)
|
|
print(valueBlue,190,2,8)
|
|
print(valueRed,206,2,12)
|
|
print(valueYellow,222,2,14)
|
|
|
|
-- Time alive
|
|
local minutes = secondsAlive // 60
|
|
local seconds = secondsAlive % 60
|
|
if minutes == 0 then
|
|
print("Time: "..seconds.." sec", 8, 16)
|
|
else
|
|
print("Time: "..minutes.." min "..seconds.." sec", 8, 16)
|
|
end
|
|
end
|
|
|
|
function drawLife(x,y,next)
|
|
spr(83,x,y,0)
|
|
local color=11 -- green
|
|
if life < 25 then
|
|
color=6 -- red
|
|
elseif life < 50 then
|
|
color=9 -- orange
|
|
end
|
|
local xmin=11
|
|
local xmax=107
|
|
local lifeLimit=(xmax-xmin)*life/100+xmin
|
|
for i=lifeLimit,xmax do
|
|
pix(x+i,y+1,0)
|
|
pix(x+i,y+2,0)
|
|
pix(x+i,y+3,0)
|
|
pix(x+i,y+4,0)
|
|
pix(x+i,y+5,0)
|
|
pix(x+i,y+6,0)
|
|
end
|
|
local blink=30
|
|
if t%blink > (blink/3) then
|
|
local potential=math.min(xmax,lifeLimit+next)
|
|
for i=lifeLimit,potential do
|
|
pix(x+i,y+1,8)
|
|
pix(x+i,y+2,8)
|
|
pix(x+i,y+3,8)
|
|
pix(x+i,y+4,8)
|
|
pix(x+i,y+5,8)
|
|
pix(x+i,y+6,8)
|
|
end
|
|
end
|
|
for i=xmin,lifeLimit do
|
|
pix(x+i,y+1,color)
|
|
pix(x+i,y+2,color)
|
|
pix(x+i,y+3,color)
|
|
pix(x+i,y+4,color)
|
|
pix(x+i,y+5,color)
|
|
pix(x+i,y+6,color)
|
|
end
|
|
spr(85,x+10,y,0)
|
|
for i=18,100,8 do
|
|
spr(86,x+i,y,0)
|
|
end
|
|
spr(85,x+100,y,0,1,1)
|
|
end
|
|
|
|
function drawMarket()
|
|
-- Background
|
|
xOff=2
|
|
yOff=2
|
|
for i=xOff+1, mw-2-xOff do
|
|
spr(64,i*s,yOff*s,0,1,0,1)
|
|
spr(64,i*s,(mh-1-yOff)*s,0,1,2,1)
|
|
end
|
|
for j=yOff+1, mh-2-xOff do
|
|
spr(64,xOff*s,j*s,0,1,0,0)
|
|
spr(64,(mw-1-xOff)*s,j*s,0,1,1,0)
|
|
end
|
|
spr(65,xOff*s,yOff*s,0,1,0,1)
|
|
spr(65,(mw-1-xOff)*s,yOff*s,0,1,0,2)
|
|
spr(65,(mw-1-xOff)*s,(mh-1-yOff)*s,0,1,0,3)
|
|
spr(65,xOff*s,(mh-1-yOff)*s,0,1,0,0)
|
|
for i=xOff+1, mw-2-xOff do
|
|
for j=yOff+1, mh-2-xOff do
|
|
spr(66,i*s,j*s,0,1,0,1)
|
|
end
|
|
end
|
|
|
|
-- Coins
|
|
spr(80,4*s,4*s,0)
|
|
print("x"..coinBlue,5*s+4,4*s+2)
|
|
print("x"..valueBlue,8*s+4,4*s+2,8)
|
|
print("= "..math.floor(coinBlue*valueBlue),12*s,4*s+2)
|
|
spr(83,15*s,4*s,0)
|
|
print("Buy",20*s,4*s+2)
|
|
|
|
spr(81,4*s,6*s,0)
|
|
print("x"..coinRed,5*s+4,6*s+2)
|
|
print("x"..valueRed,8*s+4,6*s+2,12)
|
|
print("= "..math.floor(coinRed*valueRed),12*s,6*s+2)
|
|
spr(83,15*s,6*s,0)
|
|
print("Buy",20*s,6*s+2)
|
|
|
|
spr(82,4*s,8*s,0)
|
|
print("x"..coinYellow,5*s+4,8*s+2)
|
|
print("x"..valueYellow,8*s+4,8*s+2,14)
|
|
print("= "..math.floor(coinYellow*valueYellow),12*s,8*s+2)
|
|
spr(83,15*s,8*s,0)
|
|
print("Buy",20*s,8*s+2)
|
|
|
|
print("Buy all",19*s,10*s+2)
|
|
print("Done",20*s,12*s+2)
|
|
|
|
-- Selection
|
|
local next=0
|
|
if marketSelection == MarketOptions.blue then
|
|
spr(97,19*s,4*s+1,0)
|
|
spr(97,22*s,4*s+1,0,1,1)
|
|
next=math.floor(coinBlue*valueBlue)
|
|
elseif marketSelection == MarketOptions.red then
|
|
spr(97,19*s,6*s+1,0)
|
|
spr(97,22*s,6*s+1,0,1,1)
|
|
next=math.floor(coinRed*valueRed)
|
|
elseif marketSelection == MarketOptions.yellow then
|
|
spr(97,19*s,8*s+1,0)
|
|
spr(97,22*s,8*s+1,0,1,1)
|
|
next=math.floor(coinYellow*valueYellow)
|
|
elseif marketSelection == MarketOptions.all then
|
|
spr(97,18*s,10*s+1,0)
|
|
spr(97,24*s,10*s+1,0,1,1)
|
|
next=math.floor(coinBlue*valueBlue)
|
|
next=next+math.floor(coinRed*valueRed)
|
|
next=next+math.floor(coinYellow*valueYellow)
|
|
elseif marketSelection == MarketOptions.done then
|
|
spr(97,19*s,12*s+1,0)
|
|
spr(97,23*s,12*s+1,0,1,1)
|
|
end
|
|
|
|
drawLife(4*s,12*s,next)
|
|
end
|
|
|
|
function draw(state)
|
|
if currentState == GameState.start then
|
|
drawStart()
|
|
elseif currentState == GameState.game then
|
|
drawGame()
|
|
elseif currentState == GameState.market then
|
|
drawGame()
|
|
drawMarket()
|
|
elseif currentState == GameState.gameover then
|
|
drawGameOver()
|
|
end
|
|
end
|
|
|
|
function setInitialGameState()
|
|
p=Player:new()
|
|
t=0
|
|
secondsAlive=0
|
|
life=100
|
|
dropInitialCoins()
|
|
sickCounter=20 -- how many seconds before the sickness get stronger?
|
|
sickLapse=20 -- how many ticks before the life decreases?
|
|
coinBlue=0
|
|
coinRed=0
|
|
coinYellow=0
|
|
end
|
|
|
|
function update(state)
|
|
if currentState == GameState.start then
|
|
if btnp(4) then -- A (Z key)
|
|
currentState = GameState.game
|
|
setInitialGameState()
|
|
end
|
|
elseif currentState == GameState.game then
|
|
updateGame()
|
|
elseif currentState == GameState.market then
|
|
updateMarket()
|
|
elseif currentState == GameState.gameover then
|
|
if t > 120 and btnp(4) then -- A (Z key)
|
|
currentState = GameState.start
|
|
end
|
|
end
|
|
end
|
|
|
|
function isOnMarket()
|
|
return mget(p.x/s,p.y/s) == 48 or mget(p.x/s,p.y/s) == 49
|
|
end
|
|
|
|
function updateGame()
|
|
if life == 0 then
|
|
sfx(4,20,130)
|
|
currentState = GameState.gameover
|
|
t=0
|
|
return
|
|
end
|
|
if t%sickLapse == 0 then
|
|
life=life-1
|
|
end
|
|
if t%60 == 0 then
|
|
sickCounter = sickCounter - 1
|
|
secondsAlive = secondsAlive + 1
|
|
end
|
|
if sickCounter==0 and sickLapse>1 then
|
|
sickLapse=math.max(sickLapse-2,1)
|
|
sickCounter=20
|
|
end
|
|
|
|
p:direct()
|
|
p:update()
|
|
|
|
if isOnMarket() then
|
|
if btnp(5) then -- B (X key)
|
|
if currentState == GameState.game then sfx(1,68,-1,3) end
|
|
currentState = GameState.market
|
|
end
|
|
end
|
|
|
|
if not canAddCoin() then coinTimer=coinCooldown
|
|
elseif coinTimer>0 then coinTimer=coinTimer-1 end
|
|
if coinTimer == 0 then
|
|
for i=1, coinSpawnCount do
|
|
addRandomCoin()
|
|
end
|
|
end
|
|
|
|
-- Coin market, capped to 9.9
|
|
valueBlue=math.floor((math.sin(t/200)+1)*50)/10
|
|
if t%60 == 0 then
|
|
valueRed=math.random(0,99)/10
|
|
end
|
|
valueYellow=math.min(.1*coinYellow*coinYellow, 9.9)
|
|
end
|
|
|
|
function updateMarket()
|
|
if btnp(0) then -- Up
|
|
if marketSelection ~= MarketOptions.blue then
|
|
marketSelection = marketSelection - 1
|
|
end
|
|
elseif btnp(1) then -- Down
|
|
if marketSelection ~= MarketOptions.done then
|
|
marketSelection = marketSelection + 1
|
|
end
|
|
elseif btnp(4) then -- A (Z key)
|
|
if marketSelection == MarketOptions.blue then
|
|
if coinBlue > 0 then sfx(3,44,-1,1) end
|
|
life = life + math.floor(coinBlue*valueBlue)
|
|
coinBlue=0
|
|
elseif marketSelection == MarketOptions.red then
|
|
if coinRed > 0 then sfx(3,44,-1,1) end
|
|
life = life + math.floor(coinRed*valueRed)
|
|
coinRed=0
|
|
elseif marketSelection == MarketOptions.yellow then
|
|
if coinYellow > 0 then sfx(3,44,-1,1) end
|
|
life = life + math.floor(coinYellow*valueYellow)
|
|
coinYellow=0
|
|
elseif marketSelection == MarketOptions.all then
|
|
if (coinBlue + coinRed + coinYellow) > 0 then sfx(3,44,-1,1) end
|
|
life = life + math.floor(coinBlue*valueBlue)
|
|
life = life + math.floor(coinRed*valueRed)
|
|
life = life + math.floor(coinYellow*valueYellow)
|
|
coinBlue=0
|
|
coinRed=0
|
|
coinYellow=0
|
|
elseif marketSelection == MarketOptions.done then
|
|
currentState = GameState.game
|
|
end
|
|
life=math.min(life,100)
|
|
elseif btnp(5) then -- B (X key)
|
|
currentState = GameState.game
|
|
end
|
|
end
|
|
|
|
p=Player
|
|
function TIC()
|
|
update(currentState)
|
|
draw(currentState)
|
|
t=t+1
|
|
end
|
|
|
|
-- <TILES>
|
|
-- 001:0bbbbbbbbb5b55b5b54544545444444444444444444444c44c44444444444444
|
|
-- 002:bbbbbbbb5b55b55b454454454444444444444444444444c44c44444444444444
|
|
-- 003:bbbbbbb0b55b555b544544554444444544444444444444c44c44444444444444
|
|
-- 017:444444444444c4444c444444444444c444444444444444c444c4444444444444
|
|
-- 032:000000000000ffff0000fff600fffff600fffff600ff666600ff666600fffff6
|
|
-- 033:00000000ffff00006fff00006fffff006fffff006666ff006666ff006fffff00
|
|
-- 048:00fffff600fffff600ffffff00f3333300f3333300f33ff300f33ff300f33ff3
|
|
-- 049:6fffff006fffff00ffffff0033333f0033333f003ff33f003ff33f003ff33f00
|
|
-- 064:03aaaa3703aaaa3703aa3a3703aaaa3703aaaa3703aaaa3703a3aa3703aaaa37
|
|
-- 065:03aaaa3703aa3a3303aaaaaa03aaaaaa03aaaa3a033aaaaa0033333300000000
|
|
-- 066:7777777777777777777777777777777777777777777777777777777777777777
|
|
-- 080:0088880008822880082882800828828008288280082882800882288000888800
|
|
-- 081:00cccc000cc66cc00c6cc6c00c6cc6c00c6cc6c00c6cc6c00cc66cc000cccc00
|
|
-- 082:00eeee000ee99ee00e9ee9e00e9ee9e00e9ee9e00e9ee9e00ee99ee000eeee00
|
|
-- 083:0660066066666666666666666666666666666666066666600066660000066000
|
|
-- 084:000008880000880000880000008eeeee08ee00008ee666608666006680000000
|
|
-- 085:0333333333000000300000003000000030000000300000003300000003333333
|
|
-- 086:3333333300000000000000000000000000000000000000000000000033333333
|
|
-- 096:7773377777733377777333373333333333333333777333377773337777733777
|
|
-- 097:0006660000660000066000000660000006600000066000000066000000066600
|
|
-- 192:0000000000000000000000000000000000000000000000000000000000000003
|
|
-- 193:0000000000000000000033370033377703377777337777773377777737777777
|
|
-- 194:0000000000000000777770007777777077777777777777777777777777777777
|
|
-- 195:0000000000000000000000000000000000000000700000007700000077700000
|
|
-- 208:0000000300000033000003330000033700000337000003370000033700000337
|
|
-- 209:3777777777777777777777777777733377773333777333337733377377337773
|
|
-- 210:7777777777777733777773337777733737337337373373333733733337337337
|
|
-- 211:7770000037770000337700007377000073770000337700003777000077770000
|
|
-- 224:0000033700000337000003370000033700000337000003370000033700000337
|
|
-- 225:7733777377333333773333377733733377337733773377777777777777777777
|
|
-- 226:3733733777337337773377777733777737777777777777777777777777777777
|
|
-- 227:7777000077770000777700007777000077770000777700007770000077000000
|
|
-- 240:0000033700000337000003370000033700000337000000000000000000000000
|
|
-- 241:7777777777777777777777707777000000000000000000000000000000000000
|
|
-- 242:7777777077770000000000000000000000000000000000000000000000000000
|
|
-- </TILES>
|
|
|
|
-- <SPRITES>
|
|
-- 001:000000000000000000001100000111100000cc00000666600006c66c00080080
|
|
-- 002:0000000000001100000111100000cc00000666600006c66c0008008000080080
|
|
-- 003:0000000000001100000111100000cc000006c66c000666600008008000080080
|
|
-- 004:000000000000000000001100000111100000cc000006c66c0006666000080080
|
|
-- 017:0000000000001100000111100000cc00000666600006c66c0008008000000080
|
|
-- 018:000000000000000000001100000111100000cc00000666600006c66c00080080
|
|
-- 019:0000000000001100000111100000cc00000666600006c66c0008008000080000
|
|
-- 020:000000000000000000001100000111100000cc00000666600006c66c00080080
|
|
-- 033:00001100000111100000cc0c00066c6000066660000800800080008000000000
|
|
-- 034:000011000001111000c0cc0c0006666000066660000800880000800000000000
|
|
-- 065:0088880008822880082882800828828008288280082882800882288000888800
|
|
-- 066:0008800000882200008828000088280000882800008828000088220000088000
|
|
-- 067:0008800000288200002882000028820000288200002882000028820000088000
|
|
-- 068:0008800000228800008288000082880000828800008288000022880000088000
|
|
-- 081:00cccc000cc66cc00c6cc6c00c6cc6c00c6cc6c00c6cc6c00cc66cc000cccc00
|
|
-- 082:000cc00000cc660000cc6c0000cc6c0000cc6c0000cc6c0000cc6600000cc000
|
|
-- 083:000cc000006cc600006cc600006cc600006cc600006cc600006cc600000cc000
|
|
-- 084:000cc0000066cc0000c6cc0000c6cc0000c6cc0000c6cc000066cc00000cc000
|
|
-- 097:00eeee000ee99ee00e9ee9e00e9ee9e00e9ee9e00e9ee9e00ee99ee000eeee00
|
|
-- 098:000ee00000ee990000ee9e0000ee9e0000ee9e0000ee9e0000ee9900000ee000
|
|
-- 099:000ee000009ee900009ee900009ee900009ee900009ee900009ee900000ee000
|
|
-- 100:000ee0000099ee0000e9ee0000e9ee0000e9ee0000e9ee000099ee00000ee000
|
|
-- 129:0a66aaa0aa6a6aaaaa6666aaaa6aa6aa3a6666a303aaaa30003aa30000033000
|
|
-- 145:0000000006666660066006600660066006666660066006600660066000000000
|
|
-- 146:0000000006666000066066000666666006600660066006600666666000000000
|
|
-- </SPRITES>
|
|
|
|
-- <MAP>
|
|
-- 001:111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 002:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 003:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 004:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 005:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 006:112030000010202030000000000000000000000000102020300000102011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 007:111111000011111100000000000002120000000000001111110000111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 008:110000000000000000000000000003130000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 009:110000000000000000000010202020202020300000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 010:110000000000000000000000111111111111000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 011:110000000000000000000000001111111100000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 012:110010202020300000000000000000000000000000001020202020300011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 013:110011111111000000001030000000000000103000000000111111110011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 014:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 015:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 016:112020202020202020202020202020202020202020202020202020202011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 021:00000c1c2c3c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 022:00000d1d2d3d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 023:00000e1e2e3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- 024:00000f1f2f3f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
-- </MAP>
|
|
|
|
-- <WAVES>
|
|
-- 000:00000000ffffffff00000000ffffffff
|
|
-- 001:0123456789abcdeffedcba9876543210
|
|
-- 002:0123456789abcdef0123456789abcdef
|
|
-- </WAVES>
|
|
|
|
-- <SFX>
|
|
-- 000:0040004000a000a000f000f010f020f030f040f050f060f070f080f090f0a0f0b0f0c0f0d0f0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0400000000000
|
|
-- 001:01f011f021f031f041f061f081f0a1f0c1f0d1f0e1f0f1f0f100010001001100110011002100310041005100610071008100a100c100d100e100f100577000000000
|
|
-- 002:02000200020002101210122022303250428062a072d092f0b2f0d2f0e2f0f2f0f2f0f2f0f2f0f2f0f2f0f2f0f2f0f2f0f2f0f2f0f2f0f2f0f2f0f2f0415000000000
|
|
-- 003:0000002010401020204020603040406040805060608060a0708070a080c090a0a0c0c0e0c0c0d0e0e0f0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0301000000000
|
|
-- 004:01f001f001f001f001f001b001b001b001b001b001700170017001700170010001200100012001000120010001200100012001000100010001000100167000000000
|
|
-- </SFX>
|
|
|
|
-- <PALETTE>
|
|
-- 000:140c1c44243430346d4e4a4e854c30346524d04648757161597dced27d2c8595a16daa2cd2aa996dc2cadad45edeeed6
|
|
-- </PALETTE>
|
|
|
|
-- <COVER>
|
|
-- 000:e4b000007494648393160f00880077000012ffb0e45445353414055423e2033010000000129f40402000ff00c2000000000f0088007841c0c10d6484e4a4e495d7ec2daa99ad4de5d6aac20343d62dd7c2edee6d58c40343564244424300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080ff001040800004021c28004082c58c0b1a3c780132a4c9841b263448507086c1081b3a74f84024218f842d36183950a4aac59c2b5abce830366cc28a0d08dcb98337aecd9c3b7afcf9f3f52d4108053e1830a15822c093034a2d28721102839f4baa551a23562d40ac5bba7dfac3f921dc8847002529902d294201089e8cf8963109c20359e6a48ba695e64f8b7b0a847a815426449629a26cca333128d5cc8b13e41b54bce955b495e6ede8c6dd208acb9d2bc539577a67e1dc95562500c1b86a609f6df6b68a92d03c6002bd022edae837bee0aa47c2a69c9a3e6141ef9137bdcc3c3f21ff867de62ffcbc75e6c5d8abfe2d7d00ef2242c77167c6899511a0ff8dd4ebcfd48c46d86075e0df36664ed91a7b70d15fea0f1db9f527c4a7a7530ece32106f69161b51805974a59873e997c0a36db9f6645954a9c75c166c6d1731e37371d5575681f5b4d75f77a10818db528d6740ed548d743097461db8036c8232c8d1d4775967651a4ddd55c36f8d19200460924e094461964e1984629a4e29c4639e4e390564925e49b421054a594426934a692427914a7904289a088946e596666976e6996679b6e79d6689f6e8917699866d9a6ad9272e9e6ae9072f997ed9082b9e72d918ee9586f978ef92862a48e2ae8a1af822a19a2a6463a09e5a2926a4966ac9e6ae9a5ad928af9ec94ae0a5a23a7a259aaeaaca6baeaeba0b6cffa84a8a4b6aaa96da6a6ea8aaea392eabbefadb6a9eb60bcbeda6b68a7ce8a5c22bbca2b0ca1be7aca2de4b4d65b6de5b646c5e95b4791247f9f80e68b2ee8b4e69b50929a52e7eda56beac7d157bfeed7fda6b6e6db6fedb8fef8092898f5564cd6b871cbf1627316589fe1c8072cf497aa66fbcee3c791cbac50c3075ca0f5c8176c8054ba083c9f1bb30b0cfd6bb5cdcb32b6c827ac6e23965aace2fbc0379b67a79137dc63fdce257a442ecc37fcc3b39e370d24bac8e60934f1d8432ce82fb9473de4f8bc03b9f4f4d45b55c175d8576db21bcd1b6de5f7d00ccc3428d4636da3f8d567ade430da67bd7471d04abd2770db4fec37fdd7374de62edc77cffc757fd087acc570e4876c26b095872e90f9d88b2ee8fdbc63e87fae8f87eb493eb6368d946abc41686f645d165e5f28e5b59b1162557f8dfe5b539786b3a8e3e6372a9db669a716b89d0fae8d19b2bfbe0b78bdbfdb5b7dea9f4a17beeda7d7fb79b1c3de0c51fb977c8cf7eeaf2fcb75fecbde78b1dd9ff76e29eebb5fc328f2cb952123e64308edf8eb2a8f2ee5e5ef96e4a75f45386088e6f7dfd51cda0c2060c20ef300ad4408004ff905608ffb00a20318ff360a00d1820c7c120908b0420240708a0430eb462851c506ae684b0002580bf732c21e20e0812c21a80758dfb61ab0108c2400a4035813ca1aa094813c31e60968f2ca12eec87642d1ab4ff648fa21262e888ea2322b4098f4af12bd2762ba7c94b4821baa5151f958c2922617457542610a0c40a2a2e0b03525c1327a4c8172db549ab80b2d26ca8d88d2bb1419a4ee329caa0e8aa2f51b15f8133d61dbcf60d204de135566443e2ba6617918c9c88658c7983b0881849a9327b8d2b799f1519f747953ba2937c84a6a0a487405a525b589c54a6cee839c75951359e94831cc2d2881c42cc639d5be423beb86bab2e81f59908856004067ac74e5a4799c2a32b25a4cbc44ef23394435558295557c8f0c27996a48d1ff2a9794a6203da9bf293a8fcf80e438164810c007c9a15e48d498883b024e427a2eef6eeb408a3b42beb0cd0eae82f4104a5412bfff4d729421458bde5cd0f9cfcc76f37d9209b0dee8f68eb186c3b0a015f7e742534d1b7639ad66fbc8edf4d67dc4b170f28614a063054ad1c19650f28014d069de389eb2bdffa78035e1aa0f6823d512d436a43552e7dec9c942b1313e8052d9a7d0e94630a2a275a55aa56159299ca5522571543b4b903f69e5caaa3479ae4c69e25d8a352e8e5491ac554b1eda3a36d65e45d95d7369e557e676533e6a2da95547285daa455365a5315b659b5855ca77bb76959ead6533dd51aac756b606969d8b2b6c559a68ddb6e5dd6f4c4cd41bd6993b364fe1b0830c21a82b6eb119744dac852cd16f0549d7e9d13ead3d082351d45a5bd956188e6c63aad6877697dff64f26b57dc2ec6d4bf1118686d2ae6d8a6ade47515c8434f7b99d82276d3bf9dfae7443aa3986e101ab04929095b32f152960014a825a0aa45aba29ce6947cbcd5196a473adc59413dc32f2db96f0f6a93dc1287952deda1eb7d688fd716e4f4b54329cf45a524d9f264efb17c00315d8b17410ba4c1ba55407f7b7bba545928dab116dc227d7bcf54c29672cdbd0ee1bc2bb85bda5b83c01660b8839472e659dbab2033617db62b9ed325aba4c3ad545db2bb7e5791e8dbb8e527958de46b5e2da7f74e1e2ca8baebd2cdfaac09c53521eb8b8c98522f3836c9b5e2a9b80c44a00b2c0bc02c717587f643e3b5a81a9b237e2ac22b0535e25956c71ef2bb2bffcc1c2d4a481ec66d23d985b42c5d714913be3a9aa623c856ed37b934c16675979994276443d9f553663219850c7dd747d114b2960f2f419b596e62c633d39e4a27ab3d48d82f7af777cd15b8f0dc6ae7a94ea7419e4573dab7b0d58573d8cea64ad4f85d8a5c47da3867b6e1d1877d74be5f55cfa0c6b5f17857d76c5a8ab8d2438538ba4dcce4adaad7dd42aea5bfad8dec6b6b372cf32f294bcb72df6b8b3cd4e67028bdcd3e64779b34abeede6ab9ddaee873cb7edeee67b945edef30d6c47fd0fdcfec4dfd6350872950ed4e283fb90e70fbfa2cffdb0f0873c70ef0738fd437dc0ea8b5cf2e04d5c26c73ec1fe8ba2b9a027d0ff8ddc53ea378c94e4881203e9c74ec2739b8cd5e82f59b95fc9e1fa9bdcf6e94a08000b3
|
|
-- </COVER>
|
|
|
|
|