Files
pico8/lou/lou.p8
2025-08-01 11:04:50 +02:00

1099 lines
43 KiB
Lua
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

pico-8 cartridge // http://www.pico-8.com
version 42
__lua__
--main
function _init()
printh("init")
-- load("lou2.p8")
-- load("lou.p8")
cartdata("lou")
reload(0x8000,0x0000,0x1fff,"lou_2.p8")
poke(0x5f34,0x2) --enable rfill
lou:init()
printh("lou age: "..lou.age)
menuitem(1,pauseitems[pauseindex],pauseupdate())
menuitem(2,"wim's song",
function(b)
wsong()
end
)
cop=1
end
function _update()
lou.age+=sincelast()
if (cind==#corder+1) then
cls()
memcpy(0x0000,0x8000,0x1fff)
-- wsong()
async(function()
while true do
poke(rnd(0x6000),rnd(0x00ff))
poke(rnd(0x6000),rnd(0x00ff))
yield()
end
end)
menu.bg=0
bgm:set(wim)
menu.tracks=wim
play.tracks=wim
cind+=1
sentences={
"free palestine",
"whoami?",
"look at you hacker",
"pathetic creature",
"of meat and bone"
}
elseif btnp(tonum(sub(corder,cind,cind))) then
cind+=1
end
if (btn() and btn(🅾)) cs=1
if (btn() and btn(🅾) and btn() and btn() and btn() and btn()) then
lou:reset()
end
if (lcs!=cs) then
printh(state[cs])
printh(cs)
state[cs]:init()
end
lcs=cs
savedate()
state[cs]:update()
bgm:loop()
fc+=1
lou:update()
end
function _draw()
-- cls()
state[cs]:draw()
for r in all(routines) do
if (costatus(r)!="dead") assert(coresume(r))
end
end
-->8
--globals
gameover=false
cs=1 --current state
fc=0 --frame counter
lcs=0 --last cs
maxtime=.30 --maximum time before lou fully grown
routines={}
corder="2233010144"
cind=0
--list of sprites
--order contains a 2d array j
-- with the sprite index in order
--w width
--h height
--xo x offset
--yo y offset
sprites={
lou={
order={
0,16
},
w=1,
h=1,
xo=0,
yo=0
},
sam={
order={
1,2,
17,18
},
w=2,
h=2,
xo=0,
yo=0
}
}
gib="asdwuhvzbregtnyuiopmh●✽★🐱ˇ♪♥◆⌂웃😐?!#$%"
sentences={
"hi",
"♥♥♥",
"🐱✽●_●",
"⬆️⬇️⬆️⬇️",
"⬅️➡️⬅️➡️",
"🅾️🅾️"
}
--a song
wim={
{n=16,l=64},
{n=17,l=64},
{n=18,l=64},
{n=19,l=64},
{n=20,l=64},
{n=21,l=64}
}
pauseitems={
"<- stats ->",
"<- reset save ->"
}
pauseindex=1
--functions
function savedate()
dset(0,stat(90))--year
dset(1,stat(91))--month
dset(2,stat(92))--day
dset(3,stat(93))--hour
dset(4,stat(94))--minute
dset(5,stat(95))--second
end
function sincelast()
y=(stat(90)-dget(0))
if y>0 then
gameover=true
end
y=0
mo=(stat(91)-dget(1))*25.920 --30 days in a month
d=(stat(92)-dget(2))*864
h=(stat(93)-dget(3))*36
m=(stat(94)-dget(4))*.6
s=(stat(95)-dget(5))*.01
return s+m+h+d+mo+y
end
function inits()
state[cs].init()
end
function isoverlap(x1min,x1max,x2min,x2max)
return x1max>= x2min and x2max >= x1min
end
--bbox:{
--{ minx, miny},
--{ maxx, maxy}
--}
function touching(bbox1,bbox2)
return isoverlap(bbox1[1][1],
bbox1[2][1],
bbox2[1][1],
bbox2[2][1]) and
isoverlap(bbox1[1][2],
bbox1[2][2],
bbox2[1][2],
bbox2[2][2])
end
function pauseupdate(key)
if(not key) return
if(key&1>0) pauseindex+=1
if(key&2>0) pauseindex-=1
pauseindex=min(max(pauseindex,0),count(pauseitems)+1)
menuitem(1,pauseitems[pauseindex],pauseupdate())
return true
end
--animations
--animcounter=0
--s = next state
function lerp(x,y,t)
return x+(y-x)*t
end
function async(func)
add(routines,cocreate(func))
end
function fadeout()
for i=0,32 do
fillp()
circfill(64,64,
lerp(128*.75,0,i/32),0|0x1800)
fillp()
circfill(64,64,
lerp(128,0,i/32),0|0x1800)
yield()
end
cs=ns
cls()
end
function fadein()
cls()
for i=0,32 do
fillp()
circfill(64,64,
lerp(0,128*.75,i/32),0|0x1800)
fillp()
circfill(64,64,
lerp(0,128,i/32),0|0x1800)
yield()
end
end
function hex2num(str)
printh(str)
return("0x"..str)+0
end
-->8
--state
state={
{--1 menu
update=function(self)
menu:update()
end,
draw=function(self)
menu:draw()
end,
init=function(self)
menu:init()
end
},
{ --2 gameplay
update=function(self)
play:update()
end,
draw=function(self)
play:draw()
end,
init=function(self)
play:init()
end
},
{ --3 feed
update=function(self)
feed:update()
end,
draw=function(self)
feed:draw()
end,
init=function(self)
feed:init()
end
},
{ --4 language
update=function(self)
end,
draw=function(self)
end,
init=function(self)
end
},
{ --5 stats
update=function(self)
stats:update()
end,
draw=function(self)
stats:draw()
end,
init=function(self)
end
},
{--6 thecube
update=function(self)
cube:update()
end,
draw=function(self)
cube:draw()
end,
init=function(self)
cube:init()
end
}
}
--lou
lou={
new=1,
age=0,
excitement=0,
strength=2,
s=1, --sprite index state
sentence="",
saychance=function(self)
if(flr(time())%8)!=0 return 0
ca=self.age/1728*100
chance=ca+self.excitement
s=""
if chance<.30 then
--not ready for language
for i=0,rnd()*5 do
le=flr(
rnd()*#gib
)
s=s..sub(gib,le,le)
end
else
--potential first words
printh("sentence")
s=rnd(sentences)
end
self.sentence=s
return flr(rnd()*6)
end,
init=function(self)
self.new=dget(10)
if self.new == 0 then --new lou
self.new=1
self.age=0
--overwrite date for first time
savedate()
self:update()
else
self.age=dget(11)
self:update()
end
end,
update=function(self)
dset(10,self.new)
dset(11,self.age)
self.s=min(count(sprites.lou.order),flr(count(sprites.lou.order)*(self.age/maxtime))+1)
end,
reset=function(self)
self.age=0
dset(10,0)
self:init()
end
}
--bgm
bgm={
tracklist={
},
c=1,
t=1,
set=function(self,obj)
self.tracklist=obj
bgm.c=1
bgm.t=1
end,
loop=function(self)
if (self.t>self.tracklist[min(count(self.tracklist),self.c)].l) self.t=1
if self.t==1 then
printh("playing")
if self.c>count(self.tracklist) then
self.c=1
end
music(self.tracklist[self.c].n)
printh(self.tracklist[self.c].n)
self.c+=1
end
self.t+=1
end
}
-->8
--gameplay
--menu
menu={
--menu.tracks
tracks={
{
n=0,
l=127
},
{
n=1,
l=127
},
},
--menu.items
items={
{
text="play",
x=3,
y=12,
w=16,
h=6,
c=11,
b=13,
s=2
},
{
text="feed",
x=3,
y=22,
w=16,
h=6,
c=1,
b=13,
s=3
},
{
text="stats",
x=3,
y=32,
w=20,
h=6,
c=1,
b=13,
s=5
},
{
text="language",
x=3,
y=42,
w=33,
h=6,
c=1,
b=13,
s=4
},
{
text="thecube",
x=3,
y=52,
w=28,
h=6,
c=2,
b=8,
s=6
},
},
speaktimer=0,
selected=1,
bg=12,
--menu:init()
init=function(self)
async(function()
fadein()
end)
bgm:set(self.tracks)
end,
--menu:update()
update=function(self)
if btnp() then
self:up()
elseif btnp() then
self:down()
elseif btnp()
then
sfx(31)
ns=self.items[self.selected].s
async(function()
fadeout(ns)
end)
end
end,
--menu:draw
draw=function(self)
rectfill(0,0,127,127,self.bg)
map()
for k,v in pairs(self.items) do
rectfill(v.x-2,v.y-2,v.x+v.w,v.y+v.h,v.b)
print(v.text,v.x,v.y,v.c)
if (k == self.selected) rect(v.x-2,v.y-2,v.x+v.w,v.y+v.h,10)
end
rectfill(88,8,105,24,7)
rectfill(89,9,104,23,2)
self:drawlou()
end,
--menu:drawlou
drawlou=function(self)
if self.speaktimer>0 then
local sen = lou.sentence
print(sen,
88-(#sen*2),
27,3)
self.speaktimer-=1
else
self.speaktimer=lou:saychance()*15
end
spr(sprites.lou.order[lou.s],
92+(cos(time()*.12)*lou.strength),
14-(sin(time()*.08)*lou.strength))
end,
--menu:up
up=function(self)
sfx(30)
t={h=-1,v=self.selected}
for k,i in pairs(self.items) do
if i.y<self.items[self.selected].y
and i.y>t.h then
t.h,t.v=i.y,k
end
end
self.selected=t.v
end,
--menu:down
down=function(self)
sfx(30)
t={h=32000,v=self.selected}
for k,i in pairs(self.items) do
if i.y>self.items[self.selected].y and i.y<t.h then
t.h,t.v=i.y,k
end
end
self.selected=t.v
end
}
--play
play={
--play.tracks
tracks={
{
n=2,
l=254
},
},
currentgame=1,
--play:init
init=function(self)
async(function()
fadein()
end)
bgm:set(self.tracks)
currentgame=1 --make this random later
end,
--play:update
update=function(self)
games[self.currentgame]:update()
end,
--play:draw
draw=function(self)
games[self.currentgame]:draw()
end,
--play:win
win=function(self)
cs=1
end,
}
--feed
feed={
shot={x=-1,y=-1},
baby={
x=48,
y=48,
--s=12, baby sprite
w=4,
h=4,
eyes={ -- eye sprite 11
{x=2,
y=8},
{x=24,
y=8}
},
mouth={
x=10,
y=27,
w=1.5,
h=1.5,
s=1
}
},
spew={
x=-1,
y=-1},
score=0,
target={
x=64,
y=64
},
tracks=
{
{
n=23,
l=127
},
{
n=24,
l=127
},
},
init=function(self)
cls()
self.s=rnd()
bgm:set(self.tracks)
async(function()
fadein()
end)
end,
update=function(self)
self.baby.x+=cos(time()*.2)
self.baby.y+=sin(time()*.5)
if (btn()) self.target.y-=1
if (btn()) self.target.y+=1
if (btn()) self.target.x-=1
if (btn()) self.target.x+=1
if (btn() and not (self.shot.x>-1 or self.shot.y>-1)) then
self:shoot()
self.shot=self.target
end
end,
thing=function(self)
async(function()
sfx(24,1)
for i=0,6 do
l=lerp(6,0,i)
sspr(80,16,8,8,
feed.spew.x-l/2,
feed.spew.y-l/2,
l,
l)
yield()
end
end)
end,
draw=function(self)
cls()
for x=4,124,8 do
for y=4,124,8 do
colorr=abs(16*sin(x/(time()*.2)+time()/8*sin(y+time()/3)))+2
pset(x,y,colorr)
end
end
b=self.baby
print("score: "..self.score,1)
if (self.score+1)%10==0 then
--thing
self.spew={x=b.mouth.x+b.x,y=b.mouth.y+b.y}
self:thing()
self.score=0
end
-- spr(b.s,b.x,b.y,b.w,b.h)
sspr(96,0,32,32,b.x-16,b.y-16,b.w*16,b.h*16)
for e in all(b.eyes) do
sspr(88,0,8,8,b.x+e.x,b.y+e.y)
end
sspr(88,0+b.mouth.s*8,8,8,b.x+b.mouth.x,b.y+b.mouth.y,b.mouth.w*8,b.mouth.h*8)
spr(10,self.target.x,self.target.y)
end,
hit=function(self)
sx,sy = self.shot.x, self.shot.y
tx,ty = self.baby.mouth.x+self.baby.x, self.baby.mouth.y+self.baby.y
if sx>tx-8 and sx<tx+8 and
sy<ty+8 and sy>ty-8 then
self.score+=1
async(function()
sfx(22,1)
feed.baby.mouth.s=2
for i=0,3 do
yield()
end
feed.baby.mouth.s=1
end)
else
sfx(23,1)
end
end,
shoot=function(self,x,y)
--shoot function
-- feed.shot={x,y}
async(function()
for i=8,0,-1 do
w=lerp(32,0,1-i/8)
wh=w/2
sspr(80,8,8,8,feed.shot.x+wh,feed.shot.y+wh,w,w)
yield()
end
if (feed:hit()) then
feed.score+=1
end
feed.shot={x=-1,y=-1}
end)
end
}
--minigames
games={
{--find
tx=0,
ty=0,
px=0,
py=0,
init=function(self)
self.tx=flr((rnd(87))/8)
self.ty=flr((rnd(87))/8)
end,
update=function(self)
if (self.px==self.tx and self.py == self.ty) self:score()
if btnp() then
self:mv(0,-1)
elseif btnp() then
self:mv(0,1)
elseif btnp() then
self:mv(-1,0)
elseif btnp() then
self:mv(1,0)
end
end,
touch=function(self)
sfx(0)
self:init()
end,
mv=function(self,x,y)
sfx(11)
slou=sprites.lou
ssam=sprites.sam
for s in all(slou.order) do
--bbox:{
--{ minx, miny},
--{ maxx, maxy}
--}
if touching(
{
{self.tx,self.ty},
{self.tx+slou.w, self.ty+slou.h}
},
{
{self.px,self.py},
{self.px+ssam.w, self.py+ssam.h}
}
) then
self:touch()
end
end
self.px+=x
self.py+=y
self.px=max(self.px,0)
self.py=max(self.py,0)
self.px=min(self.px,10)
self.py=min(self.py,10)
end,
draw=function(self)
rectfill(0,0,127,127,1)
rectfill(16,16,111,111,2)
for x=20,111,8 do
for y=20,111,8 do
srand(x*y)
rectfill(x,y,x,y,rnd()*16)
end
end
spr(sprites.lou.order[1],
16+self.tx*8,
16+self.ty*8,
sprites.lou.w,
sprites.lou.h)
spr(sprites.sam.order[1],
16+self.px*8,
16+self.py*8,
sprites.sam.w,
sprites.sam.h)
poke(0x5f34,0x2)
fillp()
circfill(24+self.px*8,
24+self.py*8,
20+sin(time()/2)*3,0|0x1800)
fillp(0)
circfill(24+self.px*8,
24+self.py*8,
28+cos(time()/4)*5,0|0x1800)
end,
score=function(self)
lou.excitement+=1
end
}
}
-- stats
stats={
init=function(self)
end,
update=function(self)
if (btnp(🅾)) cs=1
end,
draw=function(self)
cls()
color(3)
for x=0,127 do
for y=0,127 do
sspr(x,y,1,1,x,y)
end
end
print("age: "..lou.age)
print("excitement: "..lou.excitement)
print("strength: "..lou.strength)
print("press 🅾️ to return")
end
}
--cube
cube={
tx=32,
ty=0,
x=60,
y=60,
w=8,
h=8,
init=function(self)
end,
update=function(self)
if btn() then
self.y-=.1
self.x-=.1
self.w+=.2
self.h-=.1
end
end,
draw=function(self)
for i=0,self.h do
tline(self.x,
self.y+i,
self.x+self.w,
self.y+i,
32,
4+i/8
)
end
end
}
__gfx__
00000000000000000000c0c0eccceecce7777777eceeceee00000000000000000000000000000000888008880000000000000000000000000000000000000000
000988000000000000c09c00c777777ce77777777777777700000000000000000000000000000000800000080555550000000000000000000000000000000000
00988780000000111d0c0c00e777777cc777777777777777000000000000000000000000000000008000000855cccc5000000000000000000000000000000000
008888700000003111060000e777777ee77777777777777700000000000000000000000000000000000000005ccccc5000000000000007777777000000000000
008888800000005555600000e777777ce77777777777777700000000000000000000000000000000000000005ccccc5000000000000777777777770000000000
008998800000005555600000c777777cc77777777777777700000000000000000000000000000000800000085cc5c55000000000007777777777777000000000
00969990000011111d110000c777777ce77777777777777700000000000000000000000000000000800000080550550000000000077777777777777600000000
000999000000191111110000eeceeceee77777777777777700000000000000000000000000000000888008880000000000000000077777777777777760000000
000000000000191911110000000000007777777e7777777700000000000000000000000000000000000000000000000000000000777777777777777777000000
00000000000019d191110000000000007777777c7777777700000000000000000000000000000000009070000000000000000000777777777777777767600000
006666000000111d19110000000000007777777c7777777700000000000000000000000000000000049997000000000000000007766777777777777777600000
006e6e0000004161d1110000000000007777777e777777770000000000000000000000000000000049a9999000eeee0000000077777777777777777777700000
00666600000001111e000000000000007777777e777777770000000000000000000000000000000099994a000222222000000077776667777776666677700000
009cc0000000001111000000000000007777777e77777777000000000000000000000000000000000a9939000000000000000077666666777777666666760000
0099c0000000001111000000000000007777777c7777777700000000000000000000000000000000000903000000000000000067666666777776666667770000
00aa99000000000000000000000000007777777eeeeececc00000000000000000000000000000000000000000000000000000077666666777766666677770000
1111cccc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077777777777777777777770000
1111cccc00000000000000000000000000000000000000000000000000000000000000000000000000b07000000eee0000000077777777777777777777770000
1111cccc0000000000000000000000000000000000000000000000000000000000000000000000000abbb70000e888e000000077777777777767777777700000
1111cccc0000000000000000000000000000000000000000000000000000000000000000000000008babbbb0028888e000000077777776777766777777700000
cccc1111000000000000000000000000000000000000000000000000000000000000000000000000bbbb8a000288e8e000000077777776677766777777700000
cccc11110000000000000000000000000000000000000000000000000000000000000000000000000abb3900028888e000000077766666666666666677700000
cccc1111000000000000000000000000000000000000000000000000000000000000000000000000000b03000222220000000076766667777776666677700000
cccc1111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077766677777777666777000000
00000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000007776677777777667777000000
00000000000000000000000000000000000000000000000000000000000000000066666666600000000000000000000000000007776777777777777777000000
00000000000000000000000000000000000000000000000000000000000000000666666666666000000000000000000000000000677777777777677760000000
00000000000000000000000000000000000000000000000000000000000000066666666666666660000000000000000000000000067777777777777600000000
00000000000000000000000000000000000000000000000000000000000006666666666666666666660000000000000000000000006777777766666000000000
00000000000000000000000000000000000000000000000000000000666655555555556655566666666666000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000666665566666666566666555555566666660000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000066665556666666666566666666666655666666660000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000665556666666666665566666666666665556666666000000000000000000000000000000000000
00000000000000000000000000000000000000000000006666555666666666666665666666666666666655555566666666660000000000000000000000000000
00000000000000000000000000000000000000000000666666666666666666666665666666666666666666666555566666666666666660000000000000000000
00000000000000000000000000000000000000006666666666666666666666666656666666666666666666666666655566666666666666660000000000000000
00000000000000000000000000000000000000666666666666666666666666666656666666666666666666666666666555566666666666666660000000000000
00000000000000000000000000000000000066666666666666666666666666666656666666666666666666666666666666555555555566666666660000000000
00000000000000000000000000000000000666666666666666666666666666666566666666666666666666666666666666666666666555555555566660000000
00000000000000000000000000000000666666666666666666666666666666666566666666666666666666666666666666666666666666666666555556660000
00000000000000000000000000000066666666666666666666666666666666665566666666666666666666666666666666666666666666666666666656666660
00000000000000000000000000006666666666666666666666666666666666665666666666666666666666666666666666666666666666666666666666666666
00000000000000000000000000066666666666666666666666666666666666665666666666666666666666666666666666666666666666666666666666666666
00000000000000000000000000666666666666666666666666666666666666666666555555555555555566666666666666666666666666666666666666666666
00000000000000000000000066666666666666666666666666666666666665555555555555555555555555555666666666666666666666666666666666666666
00000000000000000000000666666666666666666666666666666665555555555555555555555555555555555555666666666666666666666666666666666666
00000000000000000000006666666666666666666666666666665555555555555555555555555555555555555555555566666666666666666666666666666666
00000000000000000000066666666666666666666666666666555555555555555555555555555555555555555555555555666666666666666666666666666666
00000000000000000000666666666666666666666666666555555555555555555555555555555555555555555555555555566666666666666666666666666666
00000000000000000006655666666666666666666666655555555555555555555555555555555555555555555555555555555666666666666555555666666666
00000000000000000666665566666666666666666655555555555555555555555555555555555555555555555555555555555555666555555555555555566666
00000000000000006666666566666666666666665555555555555555555555555555555555555555555555555555555555555555555555555555555555555666
00000000000000066666666656666666666666555555555555555555555555555555555666566666655555555555555555555555555555555555555555555556
00000000000000066666666656666666666655555555555555555555555555555566666666566666666566555555555555555555555555555555555555555556
00000000000000666666666665666666666555555555555555555555555555666566666666566666666566666555555555555555555555555555555555556555
00000000000006666666666665566666665555555555555555555555566666666566666666656665555555555556665555555555555555555555555555555665
00000000000006666666666666656665555555555555555555555666566666666556666655555555555555555555566665555555555555555555555555555565
0000000000006666666666666666655555555555555555555556666656666666665555555eeeeeeeeeeeeeeeeeee555666555555555555555555555555555556
00000000000666666666666666665555555555555555555556666666656666665555eeeeeeeeeeeeeeeeeeeeeeeeee5555566665555555555555555555555555
0000000000066666666666666665555555555555555555665666666665555555eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5555566655555555555555555555555
000000000066666666666666655555555555555555566666566666655555eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5555666555555555555555555555
00000000066666666666666655555555555555555666666665666555eeeeeeeeeeeeeeeeeee777777777777777eeeeeeeeeeee55566665555555555555555555
00000000066666666666665555555555555555666666666665555eeeeeeeeeeeeeee777777777777777777777777777777eeeee5556666555555555555555555
0000000066666666666665555555555555556566666666666555eeeeeeeeeeeee777777777777777777777777777777777777eeee55666655555555555555555
00000006666666666666555555555555555665666666665555eeeeeeeeeee7777777777777777777777777777777777777777777eee556665555555555555555
00000006666666666665555555555555566666556666555eeeeeeeee7777777777777777777777777777777777777777777777777eee55666655555555555555
000000666666666666555555555555566666666555555eeeeeeeee77777777777777777777777777777777777777777777777777777ee5666666555555555555
0000006666666666655555555555556666666666655eeeeeeeee77777777777777777777777777777777777777777777777777777777ee556666655555555555
00000666666666665555555555555566666666655eeeeeeeee77777777777777777777777777777777777777777777777777777777777ee55666665555555555
0000066666666665555555555555665666666655eeeeeee777777777777777777777777777777777777777777777777777777777777777e55566666555555555
000006666666666555555555555666566666555eeeeee77777777777777777777777777777777777777777777777777777777777777777775556666655555555
0000666666666655555555555566666556655eeeeeee777777777777777777777777777777777777777777777777777777777777777777777556666655555555
000066666666655555555555666666666555eeeeee77777777777777777777777777777777777777777777777777777777777777777777777555666655555555
00066666666665555555555666666666655eeee77777777777777777777777777777777777777777777777777777777777777777777777777755566655555555
0006666666665555555555566666666655eeeee77777777777777777777777777777777777777777777777777777777777777777777777777775566655555555
000666666666555555555565666666655eeeee777777777777777777777777777777777777777777777777777777777777777777777777777775556655555555
00666666666555555555566556666655eeeee7777777777777777777777777777777777777777777777777777777777777777777777777777775556665555555
0066666666655555555566666555555eeee777777777777777777777777777777777777777777777777777777777777777777777777777777777555665555555
066666666655555555566666666655eeeee777777777777777777777777777777777777777777777777777777777777777777777777777777777555665555555
06666666665555555566666666665eeeee7777777777777777777777777777777777777777777777777777777777777777777777777777777777755665555555
06666666655555555566666666655eee77777777777777777777777777777777777777777777777777777777777777777eeeee7ee7eee7777777755665555555
6666666665555555556666666655eee77777777777777777777777777777777777777777777777777777777777777e7eeee77ee7eee7eeee7777775565555555
666666665555555566566666655eeee77777777777777777777777777777777777777777777777777777777777eeeeeeee77e77ee7eee7777777777565555555
66666665555555556656666655eeee77777777777777777777777777777777777777777777777777777777777ee7ee77e77777e7777777777777777566555555
6666666555555556666566665eeee777777777777777777777777777777777777777777777777777777777eeeeeeee7777777777777777777777777566555555
6666665555555556666655555eee7777777777777777777777777777777777777777777777777777777eeeee7ee7777777777777777777777777777566555555
6666665555555556666666655eee7777777777777777777777777777777777777777777777777777777e7e7e7e77777777777777177777777777777556655555
666666555555556666666665eee7777777777777777777777777777777777777777777777777777777e7e77e7777777777757777577775777777777756655555
666666555555556666666655eee7777777777777777777777777777777777777777777777777777777e7e77777777557eee57775777557757777777756665555
66666555555555666666665eee7777777777777777777777777777777777777777777777777777777ee7777777777755e755ee55eee5ee757777777755665555
66666555555555666666665eee7777777777777777777777777777777777777777777777777777777e77777777777ee5775577577755eee57777777775665555
66666555555555566666655ee777777777777777777777777777e7777777777777777777777777777e7777777755ee755555555557577e55e777777775665555
6666655555555665555555eee7777777777777777eee77eeeee7ee77e77777777777777777777777777777777ee57755555555555555755eeee5777775565555
6666655555555666666655ee77777777777777ee777eeee7ee7eeeeeee777777777777777777777777777775eee575555555555555555555e555777777566555
666665555555566666665eee7777777777777ee7eee7e7ee7e7ee7e77e7777777777777777777777777777755e755555555555555577555755e7777777566555
666655555555566666665ee777777777777eeeeee777ee7777777777777777777777777777777777777777ee5755555555555555557775557755777777566555
666655555555566666665ee7777777777eeeee77e77777777777777777777777777777777777777777777ee55555555555555555557777775557777777566555
66665555555566666665eee7777777eeeee77e7777777777777777777777777777777777777777777777ee755555555555555555557775777777777777566555
66665555555566666665ee777777777777e7777777777777777777777777777777777777777777777777ee755755555555555555557755777777777777566555
66665555555566666665ee777777eeeeee7777777577777777777777777777777777777777777777777eee755755555555555555577757777777777777566555
66665555555566666665ee7777eeeee7777777777577775777577777777777777777777777777777777eee557755555555555555577557777777777777566555
66665555555556666665ee7777e77777777757775577751775577777777777777777777777777777777eee55777555555555555555557e777777777777556555
66655555555555555555ee777e777777777757775eeee5eee5ee77777777777777777777777777777777e75777755555555555555577e7777777777777756555
66655555555566666665ee7777777777757757ee57777577e5eeeeee7777777777777777777777777777775777775555555555555777e7777777777777755555
66655555555566666665e7777777777775775577555555555557eeeee77777777777777777777777777777557777755555555555777777777777777777775555
66655555555566666665e77777777777757ee55555555555555557eeee77777777777777777777777777775555555555555555577e7777777777777777775555
66655555555566666665e7777777577775e77555555555555577557eee7777777777777777777777777777777777777755555777e77777777777777777777555
66555555555566666665e77777775777e55555555555555555577557ee777777777777777777777777777777eeee7777777777ee777777777777777777777555
66555555555556666665ee777777557ee77555555555555555577755777777777777777777777777777777777777e7eee77ee777777777777777777777777555
66555555555556666665ee7777777555575555555555555555577775577777777777777777777777777777777777777777777777777777777777777777777755
65555555555556666665ee7777577ee5555555555555555555577777557777777777777777777777777777777777777777777777777777777777777777777755
65555555555555566555ee777755eee7755555555555555555577755577777777777777777777777777777777777777777777777777777777777777777777775
65555555555556555565ee7777755555557755555555555555577557777777777777777777777777777777777777777777777777777777777777777777777775
555555555555566666665e77777eee55557755555555555555575577777777777777777777777777777777777777777777777777777777777777777777777775
555555555555556666665e777555557557775555555555555575577ee77777777777777777777777777777777777777777777777777777777777777777777777
555555555555556666665e7777ee55577777755555555555555577e7777777777777777777777777777777777777777777777777777777777777777777777777
555555555555556666665e7777775777755777555555555555777e77777777777777777777777777777777777777777777777777777777777777777777777777
555555555555556666665e77777777777755557555555555577ee777777777777777777777777777777777ee7777777777777777777777777777777777777777
555555555555555666665e777777777ee77775555555557777ee77777777777777777777777777777777777ee777777777777777777777777777777777777777
555555555555555566666577777777777ee777777777777eee77777777777777777777777777777777777777e777777777777777777777777777777777777777
55555555555555555555557777777777777e7ee7eee777777777777777777777777777777777777777777777e777777777777777777777777777777777777777
5555555555555555566665777777777777777777777777777777777777777777777777777777777777777777ee77777777777777777777777777777777777777
55555555555555555566657777777777777777777777777777777777777777777e77777777777777777777777e77777777777777777777777777777777777777
55555555555555555566665777777777777777777777777777777777777777777e77777777777777777777777e77777777777777777777777777777777777777
55555555555555555556665777777777777777777777777777777777777777777e7777777777777777777777ee77777777777777777777777777777777777777
55555555555555555555665777777777777777777777777777777777777777777ee777777777777777eeee77e777777777777777777777777777777777777777
555555555555555555555657777777777777777777777777777777777777777777e77777777777777ee777777777777777777777777777777777777777777777
555555555555555555555555777777777777777777777777777777777777777777ee777eeeeee777777777777777777777777777777777777777777777777777
__map__
0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c07070707070707070707070720202020202020202007070707070707070707070707070707070707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c07030505050505030707070720202020202020202007070707070707070707070707070707070707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c07040707070700140707070720202020202020202007070707070707070707070707070707070707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0c0c0c0c0c0c363738393a3b0c0c0c0c07040707070707140707070720202020202020202007070707070707070707070707070707070707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
404142434445464748494a4b4c4d4e4f07040707070707140707070720202020202020202007070707070707070707070707070707070707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
505152535455565758595a5b5c5d5e5f07040707070707140707070720202020202020202007070707070707070707070707070707070707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
606162636465666768696a6b6c6d6e6f07040707070707140707070720202020202020202007070707070707070707070707070707070707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
707172737475767778797a7b7c7d7e7f07031515151515030707070720202020202020202007070707070707070707070707070707070707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
808182838485868788898a8b8c8d8e8f07070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
909192939495969798999a9b9c9d9e9f07070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
a0a1a2a3a4a5a6a7a8a9aaabacadaeaf07070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b0b1b2b3b4b5b6b7b8b9babbbcbdbebf07070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
c0c1c2c3c4c5c6c7c8c9cacbcccdcecf07070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d0d1d2d3d4d5d6d7d8d9dadbdcdddedf07070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
e0e1e2e3e4e5e6e7e8e9eaebecedeeef07070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff07070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__sfx__
00010000220502305025050270502a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
011000000e0240e0200e0200e0200e0200e0200e0200e0200e0200e0200e0200e0200e0200e0200e0200e0200b0210b0200b0200b0200b0200b0200b0200b0200b0200b0200b0200b0200b0200b0200b0200b020
011000001e154000001e000000001e154000001e000000001e154000001e000000001e154000001e000000001e154000001e000000001e154000001e000000001e154000001e000000001e154000001e00000000
01100000000000000000000000001a1540000000000000001a1540000000000000001a1540000000000000001a0000000000000000001a1540000000000000001a1540000000000000001a154000000000000000
001000000000015000151541500000000150001515400000000001500015154150000000015000151540000000000000001315400000000000000013154000000000000000131540000000000000001315400000
011000000c0240c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c020
011000001c1540000000000000001c1540000000000000001c1540000000000000001c1540000000000000001c1540000000000000001c1540000000000000001c1540000000000000001c154000000000000000
01100000000000000013154000001a0000000013154000001a0000000013154000001a0000000013154000001a0000000013154000001a0000000013154000001a0000000013154000001a000000001315400000
01100000000001300013000000001a1541300013000000001a1540000013000000001a1540000013000000001a0000000013000000001a1540000013000000001a1540000013000000001a154000001300000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
002000000e0240e0200e0200e0200e0200e0200e0200e0200b0210b0200b0200b0200b0200b0200b0200b0200c0210c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c0200c020
6f0200003765409150101500315009150081500915009150091500915000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0020000000000151521a152151521a152151521a1521515200000131521a152131521a152131521a1521315200000131521a152131521a152131521a152131521a152131521a152131521a152131521a15213152
002000001e150000001e152000001e152000001e152000001e150000001e152000001e152000021e152000021c152000021c152000021c152000021c152000021c152000021c152000021c152000021c15200000
014000000000015050140501305012050110501005010050000001500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001f0000150501705000000180501d05000000000001705000000000000000000000000001705018050000001a050180500000000000150500000000000000000000015050170500000018050170500000000000
0108000015155001051715500105001050010518155001051d1550010500105001050010500105171550010500105001050010500105001050010500105001051715500105181550010500105001051a15500105
010800001815500105001050010500105001051515500105001050010500105001050010500105001050010515155001051715500105001050010518155001051715500105001050010500105001051d15500105
01080000001050010500105001051c1550010500105001051c155001051c1550010500105001051a1550010517155001050010500105001050010500105001050010500105001050010500105001050010500105
010800001c155001051c1550010500105001051c155001051a1550010500105001051815500105151550010500105001050b1551d1050c1551a105001052b1051c1552b1051d155001051a1051a1051c1551a105
010800001c1550010500105001051a15500105171550010500105001050c155001050e1550010500105001051c155001051d1550010500105001051c155001051c1550010500105001051a155001051715500105
0108000000705007050c755007050e755007050070500705187550070517755007050070500705137550070515755007050070500705007050070513755007050070500705007050070511755007050070500705
0004000000000381502e1502a15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00050000000000b1500a1500b15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0004000010150101501015011150131500e1500a1500a150091500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b7100000023550235502355023550235502355023550235502355023550235502355023550235502355023550b3550b3550b3550b3550b3550b3550b3550b3550b3550b3550b3550b3550b3550b3550b3550b355
cd1000000035500355003550035500355003550035500355003550035500355003550035500355003550035500355003550035500355003550035500355003550035500355003550035500355003550035500355
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
002000000c650000000000000000000000000000000000000c650000000000000000000000000000000000000c650000000000000000000000000000000000000c65000000000000000000000000000000000000
000100001905019050200501b05010050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000500002a750007002a750007002a750007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0b1000000265500605186240060518624006051862400605246550060518624006051862400605186240060502655006051862400605186242460518644006052465500605186240060518624006051862400000
__music__
00 01020304
00 05060708
00 0a440c0d
00 0a0c0d53
00 4e0f431d
00 10424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 10424344
00 11424344
00 12424344
00 13424344
00 14424344
00 15424344
00 16424344
00 011a4322
00 051b4322