-
-
Save justinj/e4a3251705ff9ed8092c to your computer and use it in GitHub Desktop.
BECOME
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pico-8 cartridge // http://www.pico-8.com | |
version 4 | |
__lua__ | |
-- become | |
-- by jj | |
titlescreen = true | |
entities = {} | |
cam = { | |
x = 0, | |
y = 0 | |
} | |
k_l = 0 | |
k_r = 1 | |
k_u = 2 | |
k_d = 3 | |
k_j = 4 | |
k_x = 5 | |
p_runspeed = 2.5 | |
p_accel = 0.3 | |
p_decel = 0.2 | |
p_jumpspeed = 4 | |
gravity = 0.7 | |
max_fallspeed = 3 | |
dead = false | |
debugtxt = "" | |
-- more smart stuff done in celeste being stolen | |
types = {} | |
-- lol | |
function is_solid(i) | |
return i == 3 or i == 4 or i == 5 or i == 19 or i == 20 or i == 21 or i == 35 or i == 36 or i == 37 or i == 52 or i == 8 or i == 9 or i == 24 or i == 25 or i == 58 or i == 59 or i == 60 | |
end | |
function collide_at(o, x, y) | |
for e in all(entities) do | |
if e ~= o and e.is_solid then | |
if x < e.x + 8 and x + 8 > e.x then | |
if y < e.y + 8 and y + 8 > e.y then | |
return true | |
end | |
end | |
end | |
end | |
return is_solid(mget(flr(x / 8), flr(y / 8))) or | |
is_solid(mget(flr((x + 7) / 8), flr(y / 8))) or | |
is_solid(mget(flr((x + 7) / 8), flr((y + 7) / 8))) or | |
is_solid(mget(flr(x / 8), flr((y + 7) / 8))) | |
end | |
t_snail = "snail" | |
function frames(t) | |
if t == t_snail then return {6, 7} end | |
return {0, 1} | |
end | |
function jumpframes(t) | |
if t == t_snail then return {6} end | |
return {0, 1} | |
end | |
function climbframes(t) | |
if t == t_snail then return {22, 23} end | |
return {0, 1} | |
end | |
function canclimb(t) | |
if t == t_snail then return true end | |
return false | |
end | |
function canjump(t) | |
if t == t_snail then return false end | |
return true | |
end | |
g_player = nil | |
frame_del = 5 | |
-- params: | |
-- can-climb | |
-- beginframe | |
-- player | |
function make_player(x, y, t) | |
local args = { | |
frames = frames(t), | |
jumpframes = jumpframes(t), | |
climbframes = climbframes(t), | |
canjump = canjump(t), | |
type = make_player, | |
canclimb = canclimb(t) | |
} | |
local player = { | |
x = x, | |
y = y, | |
t = t, | |
xspeed = 0, | |
yspeed = 0, | |
beginframe = 6, | |
frame = 0, | |
facing = 1, | |
vfacing = -1, | |
jbuf = 0, | |
fbuf = 0, | |
state_props = { "x", "y", "facing", "xspeed", "yspeed" }, | |
anim = args.frames | |
} | |
function player:onwall() | |
if not args.canclimb then | |
return false | |
end | |
return collide_at(self, self.x - 1, self.y) or collide_at(self, self.x + 1, self.y) | |
end | |
function player:control() | |
local dir = 0 | |
-- h movement | |
if btn(k_r, 0) and not btn(k_l, 0) then | |
dir = 1 | |
elseif btn(k_l, 0) and not btn(k_r, 0) then | |
dir = -1 | |
end | |
if dir == 0 and self.xspeed ~= 0 then | |
local s = p_decel * sgn(self.xspeed) | |
if abs(s) > abs(self.xspeed) then | |
self.xspeed = 0 | |
else | |
self.xspeed -= p_decel * sgn(self.xspeed) | |
end | |
else | |
self.xspeed += dir * p_accel | |
if sgn(self.xspeed) ~= dir then | |
self.xspeed += dir * p_accel | |
end | |
end | |
if abs(self.xspeed) > p_runspeed then | |
self.xspeed = sgn(self.xspeed) * p_runspeed | |
end | |
for e in all(entities) do | |
if e.is_deadly then | |
if dist(e.x, e.y, self.x, self.y) < 6 then | |
die() | |
end | |
end | |
end | |
if dir ~= 0 then | |
self.facing = dir | |
end | |
if self:onwall() then | |
if collide_at(self, self.x - 1, self.y) and collide_at(self, self.x + 1, self.y) then | |
self.facing = sgn(self.facing) | |
elseif collide_at(self, self.x - 1, self.y) then | |
self.facing = -1 | |
elseif collide_at(self, self.x + 1, self.y) then | |
self.facing = 1 | |
end | |
end | |
dir = 0 | |
-- v movement | |
if self:onwall() then | |
if btn(k_d, 0) and not btn(k_u, 0) then | |
dir = 1 | |
elseif btn(k_u, 0) and not btn(k_d, 0) then | |
dir = -1 | |
end | |
if dir == 0 and self.yspeed ~= 0 then | |
local s = p_decel * sgn(self.yspeed) | |
if abs(s) > abs(self.yspeed) then | |
self.yspeed = 0 | |
else | |
self.yspeed -= p_decel * sgn(self.yspeed) | |
end | |
else | |
self.yspeed += dir * p_accel | |
if sgn(self.yspeed) ~= dir then | |
self.yspeed += dir * p_accel | |
end | |
end | |
if abs(self.yspeed) > p_runspeed then | |
self.yspeed = sgn(self.yspeed) * p_runspeed | |
end | |
else | |
self.vfacing = -1 | |
end | |
if dir ~= 0 and self:onwall() then | |
self.vfacing = dir | |
end | |
if self.jbuf > 0 then | |
self.jbuf -= 1 | |
end | |
if collide_at(self, self.x, self.y + 1) then | |
fbuf = 5 | |
elseif fbuf > 0 then | |
fbuf -= 1 | |
end | |
if (btnp(k_j, 0) or self.jbuf > 0) and args.canjump then | |
if fbuf > 0 then | |
self.yspeed = -p_jumpspeed | |
sfx(2) | |
elseif btnp(k_j, 0) then | |
self.jbuf = 4 | |
end | |
end | |
local s = collide_with(self, make_spirit) | |
if s ~= nil then | |
del(entities, s) | |
self:transform(t_snail) | |
end | |
end | |
function player:transform(t) | |
del(entities, self) | |
add(entities, make_transformation(self.x, self.y, t)) | |
g_player = nil | |
end | |
function player:animate() | |
if self:onwall() then | |
self.anim = args.climbframes | |
elseif collide_at(self, self.x, self.y + 1) then | |
self.anim = args.frames | |
else | |
self.anim = args.jumpframes | |
end | |
end | |
function player:update() | |
self:control() -- lol | |
-- shamelessly ripping off celeste physics | |
if not self:onwall() then | |
if self.yspeed <= 0.1 then | |
self.yspeed -= gravity / 2 | |
end | |
self.yspeed += gravity | |
end | |
if self.yspeed > max_fallspeed then | |
self.yspeed = max_fallspeed | |
end | |
for i = 1, abs(self.xspeed) do | |
if not collide_at(self, self.x + sgn(self.xspeed), self.y) then | |
self.x += sgn(self.xspeed) | |
end | |
end | |
if not collide_at(self, self.x + sgn(self.xspeed) * (self.xspeed % 1), self.y) then | |
self.x += sgn(self.xspeed) * (self.xspeed % 1) | |
end | |
for i = 1, abs(self.yspeed) do | |
if not collide_at(self, self.x, self.y + sgn(self.yspeed)) then | |
self.y += sgn(self.yspeed) | |
end | |
end | |
if not collide_at(self, self.x, self.y + sgn(self.yspeed) * (self.yspeed % 1)) then | |
self.y += sgn(self.yspeed) * (self.yspeed % 1) | |
end | |
if collide_at(self, self.x, self.y + 1) or collide_at(self, self.x, self.y - 1) then | |
if self.yspeed > 1 then | |
sfx(3) | |
end | |
self.yspeed = 0 | |
end | |
add(switch_hitters, self) | |
self:hit_spikes() | |
self:animate() | |
local d = dist(self.x, self.y, 14.5 *8 * 8, 6 * 8 * 8) | |
if d < 100 then | |
if rnd(20) < 1 then | |
sfx(7) | |
end | |
end | |
if collide_at(self, self.x, self.y) then | |
self.y -= 1 | |
end | |
cam.x = self.x - 60 | |
cam.y = self.y - 80 | |
end | |
function player:hit_spikes() | |
local ts = colliding_tiles(self) | |
for t in all(ts) do | |
if mget(t.x, t.y) == 34 then | |
if self.yspeed >= 0 and self.y % 8 >= 4 then | |
die() | |
end | |
end | |
end | |
end | |
function player:render() | |
self.frame += abs(self.xspeed) + abs(self.yspeed) / 5 | |
if self.frame >= #self.anim * frame_del then | |
self.frame = 0 | |
if self.xspeed ~= 0 then | |
-- step? | |
end | |
end | |
local vflip = self.vfacing ~= -1 and self:onwall() | |
local hflip = self.facing == -1 | |
spr(self.anim[flr(self.frame / frame_del) + 1], self.x, self.y, 1, 1, hflip, vflip) | |
end | |
g_player = player | |
activate_checkpoint() | |
player.backup = {} | |
for p in all(player.state_props) do | |
player.backup[p] = player[p] | |
end | |
return player | |
end | |
types[1] = make_player | |
function make_turnback_trigger(x, y) | |
local t = { | |
x = x, y = y | |
} | |
function t:update() | |
local done = 0 | |
for p in all(pillars) do | |
if p.risen then | |
done += 1 | |
end | |
end | |
if g_player ~= nil and done >= #pillars and g_player.t == t_snail then | |
if dist(self.x, self.y, g_player.x, g_player.y) < 8 then | |
g_player:transform("") | |
end | |
end | |
end | |
function t:render() | |
-- nada | |
end | |
return t | |
end | |
types[55] = make_turnback_trigger | |
slig_speed = 0.3 | |
function colliding_tiles(self) | |
result = {} | |
for p in all({{0, 0}, {0, 1}, {1, 0}, {1, 1}}) do | |
add(result, {x = flr((self.x + p[1] * 7) / 8), y = flr((self.y + p[2] * 7) / 8)}) | |
end | |
return result | |
end | |
switch_mappings = {} | |
switch_mappings[33] = {} | |
switch_mappings[33][6] = { | |
{x = 33, y = 11}, | |
{x = 33, y = 12}, | |
{x = 33, y = 13}, | |
{x = 35, y = 9}, | |
{x = 35, y = 10}, | |
{x = 35, y = 11}, | |
} | |
switch_mappings[48] = {} | |
switch_mappings[48][4] = { | |
{x = 49, y = 11}, | |
{x = 45, y = 11}, | |
{x = 45, y = 10}, | |
{x = 45, y = 9}, | |
{x = 54, y = 11}, | |
{x = 54, y = 10}, | |
{x = 54, y = 9}, | |
} | |
switch_mappings[57] = {} | |
switch_mappings[57][11] = { | |
{x = 59, y = 8}, | |
{x = 59, y = 12}, | |
} | |
switch_mappings[45] = {} | |
switch_mappings[45][25] = { | |
{x = 47, y = 22}, | |
{x = 47, y = 21}, | |
{x = 47, y = 20}, | |
} | |
switch_mappings[57] = {} | |
switch_mappings[57][24] = { | |
{x = 55, y = 23}, | |
} | |
switch_mappings[54] = {} | |
switch_mappings[54][16] = { | |
{x = 48, y = 17}, | |
} | |
switch_mappings[70] = {} | |
switch_mappings[70][22] = { | |
{x = 68, y = 23}, | |
{x = 68, y = 20}, | |
} | |
switch_mappings[93] = {} | |
switch_mappings[93][21] = { | |
{x = 90, y = 19}, | |
{x = 89, y = 19}, | |
{x = 88, y = 19}, | |
} | |
function make_endgame_spirit(x, y) | |
local p = { | |
x = x, | |
y = y, | |
frame = 0, | |
yspeed = -2, | |
state_props = { "x", "y" } | |
} | |
function p:update() | |
self.y += self.yspeed | |
self.yspeed += 0.2 | |
if self.yspeed > 0 then self.yspeed = 0 end | |
self.frame += 1 | |
if self.frame / frame_del >= #spirit_frames then self.frame = 1 end | |
if dist(self.x, self.y, g_player.x, g_player.y) < 8 then | |
win() | |
end | |
end | |
function p:render() | |
spr(spirit_frames[flr(self.frame / frame_del) + 1], self.x, self.y) | |
end | |
return p | |
end | |
function make_person(x, y) | |
local p = { | |
x = x, | |
y = y, | |
tick = 0, | |
flipped = false, | |
state_props = {"x", "y"} | |
} | |
function p:update() | |
self.tick += 1 + rnd() * 5 | |
if self.tick > 45 then | |
self.flipped = not self.flipped | |
self.tick = 0 | |
end | |
for e in all(entities) do | |
if e.type == make_boulder then | |
if dist(self.x, self.y, e.x, e.y) < 8 then | |
add(entities, make_endgame_spirit(self.x, self.y)) | |
self.x = -100 | |
end | |
end | |
end | |
end | |
function p:render() | |
spr(33, self.x, self.y, 1, 2, self.flipped) | |
if self.tick > 10 and self.tick < 20 then | |
spr(32, self.x, self.y - 8) | |
end | |
end | |
return p | |
end | |
types[33] = make_person | |
function flip_switch(x, y) | |
local blocks = switch_mappings[x][y] | |
for b in all(blocks) do | |
if mget(b.x, b.y) == 51 then | |
mset(b.x, b.y, 52) | |
if g_player ~= nil and collide_at(g_player, g_player.x, g_player.y) then | |
mset(b.x, b.y, 53) | |
end | |
else | |
mset(b.x, b.y, 51) | |
end | |
end | |
end | |
function make_shiny(x, y) | |
local s = { | |
x = x, | |
y = y, | |
frame = 0, | |
state_props = {"x", "y"} | |
} | |
function s:update() | |
self.frame += 1 | |
if self.frame >= 2 then self.frame = 0 end | |
if self.frame == 0 then | |
ll_push_right(particles, { | |
x = self.x + 4, | |
y = self.y + 4, | |
size = 1, | |
life = 10, | |
xspeed = 1 - rnd() * 2, | |
yspeed = 1 - rnd() * 2, | |
gravity = 0.1, | |
col = 7 | |
}) | |
end | |
if g_player ~= nil and dist(self.x, self.y, g_player.x, g_player.y) < 8 then | |
self.x = -100 | |
local pil | |
for p in all(pillars) do | |
if not p.risen then | |
pil = p | |
break | |
end | |
end | |
pil:rise() | |
sfx(6) | |
end | |
end | |
function s:render() | |
spr(13 + self.frame, self.x, self.y) | |
end | |
return s | |
end | |
types[13] = make_shiny | |
shaking = false | |
function shake() | |
shaking = true | |
end | |
pillars = {} | |
function make_pillar(x, y) | |
local p = { | |
x = x, | |
y = y, | |
is_solid = true, | |
d_left = 8, | |
going = false, | |
risen = false, | |
state_props = {"x", "y", "d_left", "going", "risen"} | |
} | |
mset(x / 8, y / 8, 20) | |
add(pillars, p) | |
function p:update() | |
if self.going and self.d_left > 0 then | |
shake() | |
self.y -= 0.2 | |
self.d_left -= 0.2 | |
ll_push_right(particles, { x = self.x + 4, y = self.y + 4, xspeed = 1 - rnd()*2, yspeed = 1 - rnd()*2, col = 4, life = 10, size = 2}) | |
end | |
end | |
function p:render() | |
spr(16, self.x, self.y) | |
end | |
function p:rise() | |
self.going = true | |
self.risen = true | |
end | |
return p | |
end | |
types[16] = make_pillar | |
function make_boulder(x, y) | |
local boulder = { | |
x = x, | |
y = y, | |
xspeed = 0, | |
yspeed = 0, | |
is_solid = true, | |
type = make_boulder, | |
state_props = { "x", "y", "xspeed", "yspeed" } | |
} | |
function boulder:update() | |
self.yspeed += 1 | |
-- candidate for extraction | |
for i = 1, abs(self.yspeed) do | |
if not collide_at(self, self.x, self.y + sgn(self.yspeed)) then | |
self.y += sgn(self.yspeed) | |
else | |
if self.yspeed > 1 then | |
sfx(12) | |
end | |
self.yspeed = 0 | |
end | |
end | |
if not collide_at(self, self.x, self.y + sgn(self.yspeed) * (self.yspeed % 1)) then | |
self.y += sgn(self.yspeed) * (self.yspeed % 1) | |
end | |
end | |
function boulder:render() | |
spr(39, self.x, self.y) | |
end | |
return boulder | |
end | |
types[39] = make_boulder | |
function collide_with(self, t) | |
for e in all(entities) do | |
if e ~= self then | |
if e.type == t and self.x + 8 > e.x and self.x < e.x + 8 and self.y + 8 > e.y and self.y < e.y + 8 then | |
return e | |
end | |
end | |
end | |
return nil | |
end | |
switch_hitters = {} | |
active_switches = {} | |
turnoffs = {} | |
function reset_switches() | |
for p in all(active_switches) do | |
mset(p.x, p.y, 2) | |
flip_switch(p.x, p.y) | |
end | |
active_switches = {} | |
end | |
function hit_switches(self) | |
for p in all(colliding_tiles(self)) do | |
if mget(p.x, p.y) == 2 then | |
mset(p.x, p.y, 18) | |
add(active_switches, p) | |
flip_switch(p.x, p.y) | |
end | |
end | |
end | |
angles = 10 | |
function t_dist(f) | |
if f > 30 then f = f + (f - 30) end | |
return 1/30 * f * (f - 60) | |
end | |
function make_transformation(x, y, to) | |
local t = { | |
x = x, | |
y = y, | |
frame = 1, | |
ang = 0 | |
} | |
sfx(5) | |
function t:update() | |
self.frame += 1 | |
self.ang += 0.001 * self.frame | |
if self.frame == 46 then | |
del(entities, self) | |
add(entities, make_player(self.x, self.y, to)) | |
end | |
end | |
function t:render() | |
if self.frame <= 45 then | |
for i = 1, angles do | |
local x = self.x + cos(i / angles + self.ang) * t_dist(self.frame) | |
local y = self.y + sin(i / angles + self.ang) * t_dist(self.frame) | |
rectfill(x, y, x + 3, y + 3, 3) | |
end | |
end | |
end | |
return t | |
end | |
spirit_frames = {11, 10, 11, 12} | |
function make_spirit(x, y) | |
local spirit = { | |
x = x, | |
y = y, | |
type = make_spirit, | |
frames_to_move_up = 24, | |
frame = 1, | |
state_props = { "x", "y", "dist_left" } | |
} | |
function spirit:update() | |
self.frame += 1 | |
if self.frame / frame_del >= #spirit_frames then self.frame = 1 end | |
if self.frames_to_move_up > 0 then | |
self.y -= 1 | |
self.frames_to_move_up -= 1 | |
end | |
end | |
function spirit:render() | |
spr(spirit_frames[flr(self.frame / frame_del) + 1], self.x, self.y) | |
end | |
return spirit | |
end | |
function make_sliggoo(x, y) | |
local sliggoo = { | |
x = x, | |
y = y, | |
angle = 0.75, | |
dir = 1, | |
state_props = {"x", "y", "angle", "dir"}, | |
frame = 0, | |
is_deadly = true | |
} | |
function sliggoo:update() | |
if collide_with(self, make_boulder) then | |
del(entities, self) | |
add(entities, make_spirit(self.x, self.y)) | |
end | |
if collide_at(self, self.x + sin(self.angle) * slig_speed, self.y + cos(self.angle) * slig_speed) then | |
self.angle -= self.dir * 0.25 | |
elseif not collide_at(self, self.x + sin(self.angle + 0.25) * 2, self.y + cos(self.angle + 0.25) * 2) then | |
self.angle += self.dir * 0.25 | |
self.x += sin(self.angle) | |
self.y += cos(self.angle) | |
end | |
self.frame += 1 | |
if self.frame >= 10 then self.frame = 0 end | |
self.x += sin(self.angle) * slig_speed | |
self.y += cos(self.angle) * slig_speed | |
add(switch_hitters, self) | |
end | |
function sliggoo:render() | |
local rot = 0 | |
if self.angle % 1 == 0 or self.angle % 1 == 0.5 then | |
rot = 16 | |
end | |
local flipped = false | |
local vflipped = false | |
if self.angle % 1 == 0 or self.angle % 1 == 0.25 then | |
flipped = true | |
vflipped = true | |
end | |
spr(6 + self.frame / 5 + rot, self.x, self.y, 1, 1, flipped, vflipped) | |
end | |
return sliggoo | |
end | |
types[6] = make_sliggoo | |
active_checkpoint = nil | |
function make_checkpoint(x, y) | |
local c = { | |
x = x, y = y, active = false, flashing = 0, state_props = {}, | |
off = true | |
} | |
function c:update() | |
if self.flashing > 0 then | |
self.flashing -= 1 | |
end | |
if g_player ~= nil and dist(self.x, self.y, g_player.x, g_player.y) > 8 then | |
self.off = true | |
end | |
if self.off and g_player ~= nil and dist(self.x, self.y, g_player.x, g_player.y) < 8 then | |
if active_checkpoint ~= nil then | |
active_checkpoint:deactivate() | |
end | |
self.off = false | |
self.flashing = 10 | |
self.active = true | |
sfx(0) | |
activate_checkpoint() | |
active_checkpoint = self | |
end | |
end | |
function c:deactivate() | |
self.flashing = 10 | |
self.active = false | |
end | |
function c:render() | |
if self.active then | |
pal(1, 2) | |
pal(12, 14) | |
end | |
if self.flashing > 0 then | |
pal(1, flr(rnd()*16)) | |
pal(12, flr(rnd()*16)) | |
end | |
spr(50, self.x, self.y) | |
pal(1,1) | |
pal(12,12) | |
end | |
return c | |
end | |
types[50] = make_checkpoint | |
map_width = 256 | |
map_height = 128 | |
function is_wall(i) | |
if is_solid(i) or i == 48 or i == 17 or i == 56 or i == 57 then | |
return 1 | |
else | |
return 0 | |
end | |
end | |
tiles = {58, 24, 25, 8, 59, 3, 5, 4, 60, 35, 37, 36, 9, 19, 21, 20} | |
-- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
function tile_for(x, y) | |
local u, l, d, r | |
u = is_wall(mget(x, y - 1)) | |
d = is_wall(mget(x, y + 1)) | |
l = is_wall(mget(x - 1, y)) | |
r = is_wall(mget(x + 1, y)) | |
return tiles[u * 8 + d * 4 + l * 2 + r + 1] | |
end | |
function place_entities() | |
local x = 0 | |
local y = 0 | |
local px | |
local py | |
while x < map_width do | |
while y < map_height do | |
local t = mget(x, y) | |
if t == 20 then | |
mset(x, y, tile_for(x, y)) | |
end | |
if types[t] ~= nil then | |
mset(x, y, 0) | |
add(entities, types[t](x * 8, y * 8)) | |
end | |
y += 1 | |
end | |
y = 0 | |
x += 1 | |
end | |
activate_checkpoint() | |
end | |
function _init() | |
-- iterate over map to find the player | |
place_entities() | |
end | |
title_switch_tick = 0 | |
title_bg = 1 | |
title_going = false | |
title_bgs = {0, 1, 12, 13} | |
oldcam = {x = cam.x, y = cam.y} | |
function _update() | |
local camdiff = {x = oldcam.x - cam.x, y = oldcam.y - cam.y} | |
oldcam = {x = cam.x, y = cam.y} | |
for b in all(bgtiles) do | |
b.x += camdiff.x / 2 | |
b.y += camdiff.y / 2 | |
if b.x < -8 then b.x += 144 end | |
if b.x > 128 then b.x -= 144 end | |
if b.y < -8 then b.y += 144 end | |
if b.y > 128 then b.y -= 144 end | |
end | |
-- particles | |
particle = particles.left | |
while particle ~= nil do | |
local p = particle.value | |
p.x += p.xspeed | |
p.y += p.yspeed | |
if p.gravity ~= nil then | |
p.yspeed += p.gravity | |
end | |
p.life -= 1 | |
if p.life <= 3 then | |
p.size = p.life | |
end | |
if p.life <= 0 then | |
if particle.left ~= nil then | |
particle.left.right = particle.right | |
end | |
if particle.right ~= nil then | |
particle.right.left = particle.left | |
end | |
if particle.left == nil and particle.left == nil then | |
particles = ll_create() | |
end | |
end | |
particle = particle.right | |
end | |
if titlescreen then | |
if title_going then | |
title_switch_tick += 1 | |
if title_switch_tick % 2 == 0 then | |
title_bg += 1 | |
if title_bg > #title_bgs then | |
title_bg = 1 | |
end | |
end | |
if title_switch_tick > 70 then | |
titlescreen = false | |
end | |
end | |
if btnp(k_j, 0) and not title_going then | |
sfx(11) | |
title_going = true | |
end | |
return | |
else | |
if not won then | |
thirtieths += 1 | |
end | |
if thirtieths >= 30 then | |
thirtieths -= 30 | |
seconds += 1 | |
if seconds >= 60 then | |
seconds -= 60 | |
minutes += 1 | |
end | |
end | |
end | |
if not dead and not won then | |
for e in all(entities) do | |
e:update() | |
end | |
reset_switches() | |
for p in all(switch_hitters) do | |
hit_switches(p) | |
end | |
switch_hitters = {} | |
elseif dead then | |
dead_screen() | |
else | |
win_screen() | |
end | |
end | |
dead_tick = 0 | |
dead_msg = "find what is yours!" | |
restart_msg = "press x to muster your courage" | |
function die() | |
sfx(4) | |
dead = true | |
dead_tick = 0 | |
end | |
function activate_checkpoint() | |
for e in all(entities) do | |
local backup = {} | |
for p in all(e.state_props) do | |
backup[p] = e[p] | |
end | |
e.backup = backup | |
end | |
end | |
function restore_checkpoint() | |
dead = false | |
for e in all(entities) do | |
for p in all(e.state_props) do | |
e[p] = e.backup[p] | |
end | |
end | |
end | |
function dead_screen() | |
dead_tick += 1 | |
if dead_tick >= 1000 then dead_tick -= 100 end | |
if btnp(k_x, 0) then | |
restore_checkpoint() | |
end | |
end | |
won_msg = "the end" | |
final_time = "final time:" | |
win_tick = 0 | |
function win_screen() | |
win_tick += 1 | |
if win_tick > 1000 then | |
win_tick = 900 | |
end | |
end | |
function draw_win() | |
rectfill(cam.x, cam.y, cam.x + 128, cam.y + 128, 7) | |
local x = 64 - #won_msg * 4 / 2 | |
print(sub(won_msg, 0, max(0, win_tick - text_delay) / frames_per_char), cam.x + x, cam.y + 20 + 2 * sin(win_tick / 100), 0) | |
local x = 64 - #final_time * 4 / 2 | |
print(sub(final_time, 0, max(0, win_tick - text_delay * 3) / frames_per_char), cam.x + x, cam.y + 50 + 2 * sin(win_tick / 100), 0) | |
local sec = ""..seconds | |
if seconds < 10 then sec = "0"..seconds end | |
local t = minutes..":"..sec | |
local x = 64 - #t * 4 / 2 | |
print(sub(t, 0, max(0, win_tick - text_delay * 5) / frames_per_char), cam.x + x, cam.y + 70 + 2 * cos(win_tick / 100), 0) | |
end | |
won = false | |
function win() | |
won = true | |
end | |
function ll_create() | |
ll = { left = nil, right = nil, length = 0 } | |
return ll | |
end | |
function ll_left(ll) | |
if ll.left == nil then | |
return nil | |
else | |
return ll.left.value | |
end | |
end | |
function ll_right(ll) | |
if ll.right == nil then | |
return nil | |
else | |
return ll.right.value | |
end | |
end | |
function ll_length(ll) | |
return ll.length | |
end | |
function ll_push_right(ll, e) | |
ll.length += 1 | |
new_elem = { | |
value = e, | |
right = nil, | |
left = ll.right | |
} | |
if ll.left == nil then | |
ll.left = new_elem | |
end | |
if ll.right != nil then | |
ll.right.right = new_elem | |
end | |
ll.right = new_elem | |
end | |
function ll_pop_left(ll, e) | |
if ll.length > 0 then | |
ll.length -= 1 | |
local lef = ll.left.value | |
ll.left = ll.left.right | |
ll.left.left = nil | |
return lef | |
else | |
return nil | |
end | |
end | |
bgtiles = { | |
{x = 10, y = 10, t = 70}, | |
{x = 74, y = 10, t = 71}, | |
{x = 74, y = 74, t = 70}, | |
{x = 10, y = 74, t = 86}, | |
{x = 42, y = 42, t = 70}, | |
{x = 106, y = 42, t = 71}, | |
{x = 106, y = 106, t = 70}, | |
{x = 42, y = 106, t = 86} | |
} | |
particles = ll_create() | |
minutes = 0 | |
seconds = 0 | |
thirtieths = 0 | |
title_tick = 0 | |
text_delay = 50 | |
restart_text_delay = 150 | |
frames_per_char = 4 | |
function _draw() | |
cls() | |
if titlescreen then | |
title_tick += 1 | |
if title_tick > 100 then title_tick -= 100 end | |
camera(0, 0) | |
rectfill(0, 0, 128, 128, title_bgs[title_bg]) | |
palt(0, false) | |
palt(2, true) | |
spr(64, 40, 30 + 2 * sin(title_tick/50), 6, 2) | |
palt(2, false) | |
palt(0, true) | |
local y = 68 + 2 * sin(title_tick/100) | |
rectfill(28, y, 28 + 69, y + 6, 6) | |
print("by jj", 54, y + 1, 0) | |
local y = 100 + 2 * cos(title_tick/100) | |
rectfill(49, y, 49 + 29 , y + 6, 6) | |
print("press z", 50, y + 1, 0) | |
rectfill(1, 1, 126, 1, 0) | |
rectfill(1, 1, 1, 126, 0) | |
rectfill(126, 126, 126, 1, 0) | |
rectfill(126, 126, 1, 126, 0) | |
return | |
end | |
cam.x = max(cam.x, 0) | |
cam.y = max(cam.y, 0) | |
camera(cam.x, cam.y) | |
for b in all(bgtiles) do | |
spr(b.t, cam.x + b.x, cam.y + b.y) | |
end | |
if shaking then | |
camera(cam.x - 2 + rnd()* 4, cam.y - 2 + rnd() * 4) | |
shaking = false | |
end | |
for e in all(entities) do | |
e:render() | |
end | |
map(cam.x / 8,cam.y / 8, cam.x - cam.x % 8, cam.y - cam.y % 8, 17, 17) | |
local particle = particles.left | |
while particle ~= nil do | |
local p = particle.value | |
rectfill(p.x - p.size / 2, p.y - p.size / 2, p.x + p.size / 2, p.y + p.size / 2, p.col) | |
particle = particle.right | |
end | |
-- debugtxt = particles.length | |
if won then | |
draw_win() | |
end | |
if dead then | |
rectfill(g_player.x - dead_tick, g_player.y - dead_tick, g_player.x + dead_tick, g_player.y + dead_tick, 0) | |
g_player:render() | |
local x = 64 - #dead_msg * 4 / 2 | |
print(sub(dead_msg, 0, max(0, dead_tick - text_delay) / frames_per_char), cam.x + x, cam.y + 20 + 2 * sin(dead_tick / 100), 7) | |
local x = 64 - #restart_msg * 4 / 2 | |
print(sub(restart_msg, 0, max(0, dead_tick - restart_text_delay) / frames_per_char), cam.x + x, cam.y + 40 + 2 * cos(dead_tick / 100), 7) | |
end | |
print(debugtxt, cam.x, cam.y, 2) | |
end | |
-- from dusk child, just because it's robust and works | |
function dist(ax,ay,bx,by) | |
a=ax-bx | |
b=ay-by | |
a*=0.01 | |
b*=0.01 | |
a=a*a+b*b | |
if (a==0) return 0--avoid crash | |
a=sqrt(a)*100 | |
--clamp huge numbers | |
if(a<0) return 32767 | |
return a--done! | |
end | |
__gfx__ | |
00000000000660000000000001101111111111011111011000000000000000001111110115121151000000000000000000000000000000000000000000000000 | |
00066000066006600000000015115515551555155515151100000000000330005515551515155511000770000770077000077000000000000000000000000000 | |
00600600060660600000000011215515112155151121551100000000003333001121551511215510007000000077770000000700006006000007600000000000 | |
06007060606706060000000012512155525121555251215100333300033333305251215512512151770007700000000007700077000770000066670000000000 | |
0607006060607606007eee0011155552511555525115551003333330033333305115555211155551000770000777777000077000000770000076660000000000 | |
006006000606606007eeeee001521255155212551552125103333330003333001552125501521251077000770000000077000770006006000006700000000000 | |
00066000066006600eeeeee01525151115251511152515110d3333d800ddd0801525151115251511000007000077770000700000000000000000000000000000 | |
000000000006600066666666151151522511515225115151ddddddd80ddddd801111011115115151000770000770077000077000000000000000000000000000 | |
04444440251211550000000015121155251211552512115100000088000000000111110111111110000000000000000000000000000000000000009000000000 | |
494994945515551500000000151555155515551555155511000033dd000330881515551555155511000000000000000000000000007000000000000900000000 | |
449ff94411015015000000001121551511215515112155110003333d0033330d1121551511215511000000000000000000000000007000000000000900000000 | |
049f494052512155000000001251215552512155525121510003333d033333dd1251215552512151000000000000000000000000770007079090000900000000 | |
04f4944051155552000000001115555251155552511555100003333d033333dd1115555251155551000000000000000000000000700008788980000900000000 | |
04949f4015021055000000000152125515521255155212510003333d003333dd1552125515521251c7cccccc0000000000000000777777779999999900000000 | |
0449f94015251511007eee00152515111525151115251511000033dd0003300d1525151115251511cccccccc0000000000000000077777700999999000000000 | |
049f994025115152666666661511515225115152251151510000000d000000000111011111110110111111110000000000000000076007600490049000000000 | |
00000000000000000000000015121155251211552512115100000000000540000000000000000000000000000310000000000130006060000000000000000000 | |
000000000000000000000000151555155515551555155511000000000444445000000000000000000000000003331000000013300086800000bb000000000000 | |
0000c000000444440000000011215515112155151121551100050000444444440000000000000000000000000333333113333330006660000b000b0b00000000 | |
0c00c000004444440000000012512155525121555251215100575000544444550000000000000000000000000333333333333330006660000b0008b800000000 | |
00c0000c044fffff0070007001155552511555525115551000050000444444450000000006620000000000000033333333333330056560663b300bbb00000000 | |
00c000c044f07f0700660066155212551552125515521251000000005444454500000ddd6552500000000000000333eddde33330056560063b303bb300000000 | |
000000004ff00f0005650565152515111525151115251511000000005545445500000ddd555520000055000000dddddddddddd3000066006bbb3bbb300000000 | |
000000004fffffff05550556011101111111011111110110000000000555555000d000d01151000000550500d5ddddd55dd5dddd056656650bbbbbb000000000 | |
2512115500fffff00000000002022020222222220202020200000000cc0000cc1512115525121151011111000111111015121151000000000000000000000000 | |
551555150ee888e000071000200000022eeeeee220e0e0e000000000ccc00ccc0115551555155510151555111515551115155511011000000001000100000000 | |
112155150e888880007c1100000000002e22e2e20e020202000000000cccccc00121551511215510112155111121551111215511010100000001111100000000 | |
52512155088822800ccc1110200000022e2e22e2202020e00776000000cccc000151215552512100125121511251215112512151010100000051c1c100000000 | |
51155552088888820111ccc0200000022ee22ee20e020e027666500000cccc000011155251155100111555511115551011155510000011111151111100000000 | |
155212550f88822f0011cc00000000002e22e2e22020e0e0666060000cccccc00000115515521000155212511552125115521251000011111115111000000000 | |
152515110cc111c00001c000200000022eeeeee20e0e0e0266666500ccc00ccc0000015511110000152515111525151115251511000011111111550000000000 | |
25115152011101100000000002022020222222222020202005666500cc0000cc0000001110000000011101101511515101111110000010100010100000000000 | |
25002222222222222222222222222222222222222222200200000000000000005111511500000000000000000000000000000000000000000000000000000000 | |
55550000000000000000002000000000000000000000055000000000000000101000100100000000000000000000000000000000000000000000000000000000 | |
55555555556565655565650556565656565656555555555000000010000000101000000100000000000000000000000000000000000000000000000000000000 | |
56000006500000065000555500055500650060000005655000000010000011005100000100000000000000000000000000000000000000000000000000000000 | |
50ccc1100cccc1100cc10650cc1050c100c10cccc110565000000010000000001000000100000000000000000000000000000000000000000000000000000000 | |
50c11c110c110000c10c100c10c100cc1cc10c110005655000111100000000001000001500dddd00000000000000000000000000000000000000000000000000 | |
50c11c110c11000c106000c1060c10c1c0c10c11005656500000000000000000100000010dddddd0000000000000000000000000000000000000000000000000 | |
50ccc1100ccc110c065650c1050c10c100c10ccc11056550000000000000000051111115000dd000000000000000000000000000000000000000000000000000 | |
50c11c110c11000c106000c1060c10c100c10c110056565000001000000000000000000000000000000000000000000000000000000000000000000000000000 | |
50c11c110c110000c10c100c10c100c100c10c110005655000011000000000000000000000000000000000000000000000000000000000000000000000000000 | |
50ccc1100cccc1100cc10650cc1050c100c10cccc110555000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
55000000600000056000656500056500650060000005555001000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
25555555555555555555555555555555555555555555550211000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
22000000000000000000000000000000000000000000002200000010000000000000000000000000000000000000000000000000000000000000000000000000 | |
22222222222222222222222222222222222222222222222200000110000000000000000000000000000000000000000000000000000000000000000000000000 | |
22222222222222222222222222222222222222222222222200000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414101414141014141410141414101414141014141 | |
41414141414141414141000000000000000000000000000000000000000000000000000000000041414141414141414141414141414141414141414111414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141000094000000000000000000000000000000000041414141414141414141414141414141414141414141414141414184414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141000000009400000000000000000000004141414141414141414141414141414141414141414141414141414111414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414111414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414111414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414111414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414111414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414111414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414242424242424141414184414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414142930000000000008341414111414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414242429300000000000000e20032414111414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141930000d2000000000000e100a30000834111414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414193000000a30000d100e200a300000000003111414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141419300000000000000a300a3000000d10000003111414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
4141414141414141414141414141414141414141414141414141414141414141414141414141414151d3e300e2d1000000000000000000a30000003211414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414040404050e1d200000000000000000000000083414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414050d100d200000000000000000000314141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141404050e1d1e100d100e2000000314141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414140404040404040404040414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
41414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141 | |
__gff__ | |
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
__map__ | |
1414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414242424242424242424242424242424242424242424242424242424242424242424242424242414141414141414141414141414141424242424241414 | |
1414141414141414141414141414141414141414141414141414141414141414141414390000000000000000000000220000000000000000000000003814141439000014390000000000000000000000000000000000000000000000000000000000000000000000000014141414141430303030303030301500000000003814 | |
1414141414141414141414141414141414141414141414141414141414141439000000000000002900000028000000141400002900140000320000000014141400000014000000000000000000000000290000000000000000000000001414140000000000000000000038141414141430303030303030303000000000000013 | |
141414143900000000381414141414141414141414141414141414141439000000000000000000141414141414141414141414141414141414141414001414140022001400002222000000000000002214000014002a000000000000000038140000000000000000000000141414141430141424242424141415000000000013 | |
1414141400002a000000141414141414141414141414141414141414140000000000000000000014141414141414141414141414141414141414141400141414001400000000141400000029140000141400000000140000000000000022001400140000003a000000001414141414143014150000000d1314152800002b2c13 | |
1414141400001414000014141414143900001111111414141414141439000000000d000000000014000000060006000600060006000600060006000000141414001428003200141400001414140000000000000000000014002a0014001422140014000000000000000014141414141430141500002800131414040411040414 | |
1414141400221414000014141414140000001111111414141414141400000000000000000000001400140014001400140014001400140014001400141414141400141414141414140000000000000000000000000000000000140014001414141414000000000000001414141414141430303000140404141414141411141414 | |
1414141400141414000014141414140000001411111414141414141400000000000000000000001400000000002800000000000000000000000000000000000000000014000032002222222222222222222222222222222222222222222222222222222222222200001400000014141414140000141414141414141411141414 | |
14141414003814140000001414141400000014111114141414141414142900000000000000002a1414141414141414141400001414141414280014140000280000002814001414141414141414141414141414141414141414141414141414141414141414141414141400000000000000000000141414141414141411141414 | |
141414140000143900002214141414000000141111141414141414141414140000002a00000014141414141414141414141414141414141414141414141414140014141428282828282828282828282828282a2a2828282828002a002828002a0000282800002a00000000000028000029000014141414141414141411141414 | |
1414141400001400000014141414140000001411111414141414141414141414141414141414141414141414141411000000060000000600000000000000141400141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141411141414 | |
1414141400001400000014141414140000001439000000000038141414141414141414141414141414141111111111000000141400001414000000000000000000141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141411141414 | |
14141414220014000000141414141400000014000d0006000000381414141414141414141414141414111114141414000000000000000000000000000000000000141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141411141414 | |
1414141414001400000014141414140000001436000014140000001414141414141414141411111111111414141414141414141414141414141414141414140000141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141411141414 | |
141414143900142200000014141414000000141400002900000000000000002a000038141411111414141400320014141414141414141414141414141414140000141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141411141414 | |
14140d00000014140000001414141400000014141414141414141414141414141400002a0000000000141400140014141414141414142414141414141414140000141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141411141414 | |
1414360029001414000000000000000000001414141414141414141414141414141414140000141400001400140000002700001111110213141414141414140000141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141411141414 | |
141411141414141400000000320000000000141414142424141414390000000038141414141414141400002a141414143414001414140414141414141414140000141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141411141414 | |
1414221414141414141414141414141414141414141500001314390000000000000000000000003814141414141414140014280000000038141414141414140000141414141414141414141414141414141414141414141427272714141414141414141414141414141414141414141414141414141414141414141411141414 | |
1414141414003814390000000000000000000038141506001314000032000000000000000000000000381414141414141414141428000000141414141414140000141414271414141414141414141414141414141414141434343414141414141414141414141414141414141414141414141414141414141414141411141414 | |
14141439000000000000000000000000000000003814080814390000140000002a2900000000000000000000000000340038141414000000141414141414140000141414341414141414141414141414141414141414141400000014141400000038141414141414141414141414141414141414141414141414141411141414 | |
1439000000000000000022000000220000000000000000000000002a140000001414000000000000000000000000003400001414142a0000141414141414140000000000000000001414141414141414141414141414141400000000000200000000381414141414141414141414141414141414141414141414141411141414 | |
1400000000000028000014002a0014000000000000000000000000141400000014140000000000142a00002a000000340000381414141400140614141414140000003200000002001414141414141414141414141414141400000014141414000000001414141414141414141414141414141414141414141414141411141414 | |
1400000000141414141414141414141414142200000000000000141414000000381422221422221414221414141414140000000038141433140014141414141414141414341414141414141414141414141414141414141400000014141414140000003814141414141414141414141414141414141414141414141411141414 | |
14000000141414141414141439003814141414140000290000141414140000000014141414141414141414140000141414002a0000000000140214141414141414141414001414141414141414390000000000381414141400000014141414141400000014141414141414141414141414141414141414141414141448141414 | |
1400001414141414143900000000003814141414141414141414141414222222221414141414141414141414060214141414141414141414141414141414141414141414061414141414143900000000000000003814141400210014141414141400000038141414141414141414141414141414141414141414141411141414 | |
142a003814141414390000000000000000381414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414390000000000000000000038141400000014141414141414000000381414141414141414141414141414141414141414141411141414 | |
1414000014141414000000000000000000003814141414141414141439381414393814141414141414141414141439000000000000000000000000000000000000000000000000000000000000000000000000000000381414141414141414141414000000000038141414141414141414141414141414141414141411141414 | |
1439000014141439000000000000000000000038141414143900000000000000000000000000000000003700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038141414140000000000141414141414141414141414141414141414141411141414 | |
1400001414141400000000000000000000000000381414390000000000000000000000000000000000003700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003814141400000000141414141414141414141414141414141414141411141414 | |
140000111111110000000000000100000000002900222200000000002a0000000000000000000000000d3700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038141414000000141414141414141414141414141414141414141411141414 | |
1414141414141414141414141414141414141414141414141414141414141414141414141414141414141422222222222222222222222222222222222222222222141414141414000000000000000000000000000000000000000000000000000000000000000014141414141414141414141414141414141414141411141414 | |
__sfx__ | |
00030000055000f500395303553026530385303d5302f52016520175202c5203d520175303d5303c5302f53033500125002b500365003f5002f5001b5002650038500395002d500105000f500135002b5003f500 | |
002000001b230192301b230212301b230192301b23023230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
000200000b1200d1201012018120091202c1000c1000c1000e1001410000100001000010000100001000010000100001000010000100001000010000100001000010000100001000010000100001000010000100 | |
000100000816005150041400313002110031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00050000000003b170000002417000000391700000019170000003217000000131700000023170000000f17000000161700000009170000001117000000031700216002160021500214002130021300212001110 | |
0005000001070010700207003070030700507005070090700a0700a0700b0700c0700e0700f07010070110701307014070180701c07021070260702f07033070380703f070310700f07002070020700307000000 | |
000a00003f6703f6703f670286003f6703f6703f670336003f6703f6703f6700f6003f6703f6703f6703d6003f6703f6703f6703f6003f6003f6003f6000f6003f6003f6003f600126003f6003f6003f60028600 | |
0001000000000253702a37030370383703e3703d3703d370263702537022370243702437024370073000730006300063000530005300043000430004300033000430000000000000000000000000000000000000 | |
011000001647016470174001647000400004001a47000400164701b4001a4701640018470004001647016470164700040016470004001b4001a47000400164701a4001a4700040018470004001d4700040000400 | |
001000001d4701d470184001647000000124702247018400000000b4700b470000000447003470000001d4701d47000000000001d4701d4700000000000000000000000000000000447000000000000000000000 | |
001000081d6301c63000030000301d6300003000030000301d6301c630000301b6001d63000030000301d6001d6300160000030000301d6301d6301c600000301d6301c60000030000301d6301d6300003000030 | |
000900000040033470394703a4703a47037470304701e47015470124701347015470194701d4702247023470214701b470124700c4700d4700e4701247014470124700d470084700447006470054700147000400 | |
000200003c6703c6703c6703b6703a670396703867035670346702e670196700b6700767003670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
__music__ | |
01 080a4344 | |
01 080a4344 | |
02 090a4344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
00 41424344 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment