Created
August 29, 2016 01:06
-
-
Save justinj/145f479b9dffeed512eac52ec1c7a49b to your computer and use it in GitHub Desktop.
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 8 | |
__lua__ | |
-- ive spent so much time with the celeste codebase recently that im just going | |
-- to clone its structure x_x | |
types = {} | |
function solid_at(x, y) | |
local t = mget(flr(x / 8), flr(y / 8)) | |
return fget(t, 0) | |
end | |
function birth(t, args) | |
local this | |
this = { | |
x=0, | |
y=0, | |
spd={x=0, y=0}, | |
rem={x=0, y=0}, | |
t=t, | |
move=function() | |
if not this.solid(this.spd.x, this.spd.y) then | |
this.x += this.spd.x | |
this.y += this.spd.y | |
end | |
end, | |
solid=function(xx, yy) | |
local ax = this.x + xx + this.hitbox.x | |
local bx = ax + this.hitbox.w | |
local ay = this.y + yy + this.hitbox.y | |
local by = ay + this.hitbox.h | |
if solid_at(ax, ay) or solid_at(ax, by) or solid_at(bx, ay) or solid_at(bx, by) then | |
return true | |
end | |
local h = this.hit(door, xx, yy) | |
return h | |
end, | |
hit=function(t, x, y) | |
x = x or 0 | |
y = y or 0 | |
for e in all(this.world.entities) do | |
if e ~= this and e.hitbox and e.t == t then | |
-- terrible nesting doesn't count if you don't indent | |
if e.x + e.hitbox.x < this.x + this.hitbox.x + this.hitbox.w + x then | |
if this.x + this.hitbox.x + x < e.x + e.hitbox.x + e.hitbox.w then | |
if e.y + e.hitbox.y < this.y + this.hitbox.y + this.hitbox.h + y then | |
if this.y + this.hitbox.y + y < e.y + e.hitbox.y + e.hitbox.h then | |
return e | |
end | |
end | |
end | |
end | |
end | |
end | |
end | |
} | |
t.born(this, args) | |
return this | |
end | |
function indicate(b) | |
return b and 1 or 0 | |
end | |
player_speed = 0.5 | |
step_size = 4 | |
function move_camera_to(w, x, y) | |
return { | |
update=cocreate(function() | |
for i = 1,10 do | |
yield() | |
end | |
while abs(w.cam.x - x) > 1 or abs(w.cam.y - y) > 1 do | |
w.cam.x += (x - w.cam.x) * 0.2 | |
w.cam.y += (y - w.cam.y) * 0.2 | |
yield() | |
end | |
for i = 1,10 do | |
yield() | |
end | |
w.cam.x = x | |
w.cam.y = y | |
end) | |
} | |
end | |
function show_message(world, message) | |
local showing = 0 | |
local totallen = 0 | |
for m in all(message) do | |
totallen += #m | |
end | |
return { | |
update=cocreate(function() | |
local done = false | |
while not done do | |
showing += 0.2 | |
if btn(4) or btn(5) then | |
showing += 1 | |
end | |
if showing >= totallen + #message*5 then | |
if btnp(4) or btnp(5) then | |
done=true | |
end | |
end | |
if showing > 1000 then showing = 1000 end | |
yield() | |
end | |
end), | |
draw=function() | |
local thisshowing = showing | |
for y = 1, #message do | |
for i = 1, min(thisshowing, #message[y]) do | |
local extra = rnd() < 0.01 and rnd()*4-2 or 0 | |
print(sub(message[y], i, i), world.cam.x + i * 4, world.cam.y + y * 6 + extra, 7) | |
end | |
thisshowing -= #message[y] + 5 | |
end | |
end | |
} | |
end | |
function wait(n, after) | |
return { | |
update=cocreate(function() | |
for i = 1, n do | |
yield() | |
end | |
after() | |
end) | |
} | |
end | |
function bar_thing(wfunc) | |
return function(w, after) | |
local t = 0 | |
return { | |
update=cocreate(function() | |
while t < 60 do | |
t += 1 | |
yield() | |
end | |
after() | |
end), | |
draw=function() | |
local h = 128 / num_bars | |
for i = 0, num_bars - 1 do | |
local y = w.cam.y + h * i | |
if i % 2 == 0 then | |
rectfill(w.cam.x, y, w.cam.x + wfunc(t), y + h, 7) | |
else | |
rectfill(w.cam.x + (127 - wfunc(t)), y, w.cam.x + 127, y + h, 7) | |
end | |
end | |
end | |
} | |
end | |
end | |
num_bars = 16 | |
screen_out = bar_thing(function(t) | |
return t*t/10 | |
end) | |
screen_in = bar_thing(function(t) | |
return 300-t*t/10 | |
end) | |
function cardinals(x, y) | |
return {{x=x-1,y=y},{x=x+1, y=y}, {x=x, y=y-1},{x=x,y=y+1}} | |
end | |
function get_target(x, y) | |
local result = {x=x, y=y} | |
for s in all(cardinals(x, y)) do | |
if mget(s.x, s.y) == 17 then | |
result = s | |
end | |
end | |
return {x=result.x, y=result.y} | |
end | |
function sign(x) | |
if x == 0 then | |
return 0 | |
else | |
return sgn(x) | |
end | |
end | |
function appr(x, t, v) | |
if abs(x-t) < v then | |
return t | |
else | |
return x + v*sgn(t-x) | |
end | |
end | |
function expappr(x, t, amt) | |
if abs(x-t) < 0.01 then | |
return t | |
else | |
return x + (t - x) * amt | |
end | |
end | |
function speed_fn(t) | |
local s = sin(t) - 0.5 | |
if s < 0 then | |
return 0 | |
end | |
return s | |
end | |
function dot(a, b) | |
return a.x*b.x + a.y*b.y | |
end | |
function norm(vec) | |
return sqrt((vec.x/1000)^2+(vec.y/1000)^2)*1000 | |
end | |
function dist(x1, y1, x2, y2) | |
local vec = {x=x2-x1,y=y2-y1} | |
return norm(vec) | |
end | |
function direction_vec(x1, y1, x2, y2) | |
local vec = {x=x2-x1,y=y2-y1} | |
local len = norm(vec) | |
return {x=vec.x/len,y=vec.y/len} | |
end | |
function is_block_between(x1, y1, x2, y2) | |
local dir = direction_vec(x1, y1, x2, y2) | |
local d = dist(x1, y1, x2, y2) | |
local iters = d/4 | |
local result = raycast(x1, y1, dir) | |
return mid(x1, result.x, x2) == result.x | |
end | |
function raycast(x, y, direction) | |
for i = 1, 100 do | |
if direction.x == 0 then | |
h_vectors = 1000 -- a lot | |
elseif direction.x > 0 then | |
local xdist = abs(x % 8) < 0.0001 and 8 or 8-(x % 8) | |
h_vectors = xdist / direction.x | |
elseif direction.x < 0 then | |
local xdist = x % 8 == 0 and 8 or x % 8 | |
h_vectors = -(xdist / direction.x) | |
end | |
if direction.y == 0 then | |
v_vectors = 1000 -- a lot | |
elseif direction.y > 0 then | |
local ydist = abs(y % 8) < 0.0001 and 8 or 8-(y % 8) | |
v_vectors = ydist / direction.y | |
elseif direction.y < 0 then | |
local ydist = y % 8 == 0 and 8 or y % 8 | |
v_vectors = -(ydist / direction.y) | |
end | |
local amt = min(h_vectors, v_vectors) | |
x += direction.x * amt | |
y += direction.y * amt | |
local tile | |
if h_vectors < v_vectors then | |
x = flr(x/8+0.5)*8 | |
tile = mget(flr((x + sgn(direction.x))/8), flr(y/8)) | |
else | |
y = flr(y/8+0.5)*8 | |
tile = mget(flr(x/8), flr((y + sgn(direction.y))/8)) | |
end | |
if fget(tile, 0) then | |
return {x=x, y=y} | |
end | |
end | |
return {x=x, y=y} | |
end | |
function rot_vec(vec, amt) | |
return { | |
x=cos(amt)*vec.x + -sin(amt)*vec.y, | |
y=sin(amt)*vec.x + cos(amt)*vec.y, | |
} | |
end | |
function line_dotted(x1, y1, x2, y2, len, c, t) | |
local d = dist(x1, y1, x2, y2) | |
local dir = direction_vec(x1, y1, x2, y2) | |
for i = 0, d/len do | |
if i % 2 == 0 then | |
local startptx = x1 + i * len * dir.x + rnd() | |
local startpty = y1 + i * len * dir.y + rnd() | |
local endptx = x1 + (i + 1) * len * dir.x | |
local endpty = y1 + (i + 1) * len * dir.y | |
if x2 > min(startptx, endptx) and x2 < max(startptx, endptx) then | |
endptx = x2 | |
endpty = y2 | |
end | |
endptx += rnd() | |
endpty += rnd() | |
line(startptx, startpty, endptx, endpty, 7) | |
end | |
end | |
end | |
door = { | |
born=function(this, args) | |
this.hitbox = {x=0,y=0,w=16,h=8} | |
this.x = args.x | |
this.y = args.y | |
this.is_solid = true | |
end, | |
update=function(this) | |
end, | |
draw=function(this) | |
spr(51, this.x, this.y, 2, 1) | |
end | |
} | |
types[33] = door | |
exit = { | |
born=function(this, args) | |
this.hitbox = {x=0,y=0,w=8,h=8} | |
this.x = args.x | |
this.y = args.y | |
this.world = args.world | |
end, | |
update=function(this) | |
local h = this.hit(player) | |
if h then | |
world=end_world() | |
end | |
end, | |
draw_after=function(this) | |
end | |
} | |
types[55] = exit | |
function onscreen(world, x, y) | |
return abs(world.cam.x+64 - x) < 80 or abs(world.cam.y+64 - y) < 80 | |
end | |
local guard_speed = 0.3 | |
local guard_fov = 0.1 | |
guard = { | |
born=function(this, args) | |
this.x = args.x | |
this.y = args.y | |
local gx = flr(this.x / 8) | |
local gy = flr(this.y / 8) | |
this.hitbox = {x=1, y=1, w=6, h=6} | |
local target = get_target(gx, gy) | |
this.dir = {x=target.x-gx, y=target.y-gy} | |
this.target = {x=gx + this.dir.x, y=gy + this.dir.y} | |
this.state = waiting | |
this.world = args.world | |
this.see_player_amt = -1 | |
this.chase_mode = false | |
this.frozen = 0 | |
this.time = 0 | |
this.exclm_y = 0 | |
end, | |
save_props={ | |
'x','y','dir','target','state','chase_mode','frozen','exclm_y' | |
}, | |
freeze=function(this) | |
if not this.chase_mode then | |
this.frozen = 120 | |
end | |
end, | |
update=function(this) | |
if not onscreen(this.world, this.x, this.y) then | |
return | |
end | |
if this.frozen > 0 then | |
this.frozen -= 1 | |
return | |
end | |
if this.chase_mode then | |
if dist(this.x, this.y, this.world.player.x, this.world.player.y) > 2 then | |
local dir_to_player = direction_vec(this.x, this.y, this.world.player.x, this.world.player.y) | |
this.x += dir_to_player.x * guard_speed * 5 | |
this.y += dir_to_player.y * guard_speed * 5 | |
end | |
else | |
local gx = flr(this.x / 8) | |
local gy = flr(this.y / 8) | |
if this.x == this.target.x * 8 and this.y == this.target.y * 8 then | |
curtile = mget(gx, gy) | |
if curtile == 18 then | |
this.dir = {x=0, y=1} | |
elseif curtile == 19 then | |
this.dir = {x=1, y=0} | |
elseif curtile == 20 then | |
this.dir = {x=0, y=-1} | |
elseif curtile == 21 then | |
this.dir = {x=-1, y=0} | |
end | |
this.target = {x=gx + this.dir.x, y=gy + this.dir.y} | |
end | |
this.x = appr(this.x, this.target.x*8, guard_speed) | |
this.y = appr(this.y, this.target.y*8, guard_speed) | |
local dir_to_player = direction_vec(this.x, this.y, this.world.player.x, this.world.player.y) | |
local see_player_amt = dot(dir_to_player, this.dir) | |
local see_player_angle = atan2(see_player_amt, sqrt(1-see_player_amt^2)) | |
if see_player_angle > 0.5 then | |
see_player_angle = 1 - see_player_angle | |
end | |
local player_dist = dist(this.x, this.y, this.world.player.x, this.world.player.y) | |
if see_player_angle < guard_fov and player_dist < 40 and player_dist > 3 then | |
if not is_block_between(this.x + 4, this.y + 4, this.world.player.x + 4, this.world.player.y + 4) then | |
this.chase_mode = true | |
this.world.controller = wait(20, function()end) | |
end | |
end | |
end | |
this.time += 0.05 | |
end, | |
draw=function(this) | |
if not onscreen(this.world, this.x, this.y) then | |
return | |
end | |
local offx = 0 | |
local offy = 0 | |
if this.frozen > 0 then | |
offx = rnd(4) - 2 | |
offy = rnd(4) - 2 | |
else | |
offy = 2 * sin(this.time) + 0.5 | |
end | |
local raycastpt = raycast(this.x + 4, this.y + 4, rot_vec(this.dir, guard_fov)) | |
raycastpt = trunc(this, raycastpt, 40) | |
line_dotted(this.x + 4, this.y + 4, raycastpt.x, raycastpt.y, 4, 7) | |
raycastpt = raycast(this.x + 4, this.y + 4, rot_vec(this.dir, -guard_fov)) | |
raycastpt = trunc(this, raycastpt, 40) | |
line_dotted(this.x + 4, this.y + 4, raycastpt.x, raycastpt.y, 4, 7) | |
spr(43, this.x + offx, this.y + offy) | |
end, | |
draw_after=function(this) | |
local offx = 0 | |
local offy = 0 | |
if this.frozen > 0 then | |
offx = rnd(4) - 2 | |
offy = rnd(4) - 2 | |
else | |
offy = 2 * sin(this.time - 0.2) + 0.5 | |
end | |
if this.chase_mode then | |
spr(44, this.x + offx, this.y-8-this.exclm_y) | |
this.exclm_y = expappr(this.exclm_y, 8, 0.4) | |
end | |
spr(27, this.x + offx, this.y-8 + offy) | |
end | |
} | |
types[16] = guard | |
function trunc(p1, p2, len) | |
local d = dist(p1.x, p1.y, p2.x, p2.y) | |
if d <= len then | |
return p2 | |
else | |
return { | |
x=p1.x + (p2.x - p1.x) / d * len, | |
y=p1.y + (p2.y - p1.y) / d * len, | |
} | |
end | |
end | |
bullet = { | |
born=function(this, args) | |
this.spd = args.spd | |
this.world = args.world | |
this.hitbox = {x=0,y=0,w=3,h=3} | |
this.x = args.x - this.hitbox.w / 2 | |
this.y = args.y - this.hitbox.h / 2 | |
this.time = 0 | |
end, | |
update=function(this) | |
this.time += 0.1 | |
if this.solid(this.spd.x, this.spd.y) then | |
this.world.del(this) | |
end | |
this.move() | |
local g = this.hit(guard) | |
if g then | |
g.t.freeze(g) | |
this.world.del(this) | |
end | |
end, | |
draw=function(this) | |
local size_bonus = sin(this.time) * 1 | |
rectfill( | |
this.x - size_bonus, | |
this.y - size_bonus, | |
this.x + this.hitbox.w + size_bonus, | |
this.y + this.hitbox.h + size_bonus, | |
10 | |
) | |
end | |
} | |
checkpoint = { | |
born=function(this, args) | |
this.x = args.x | |
this.y = args.y | |
this.spread = 0 | |
this.spreadtimes = 0 | |
this.hitbox = {x=1,y=2,w=6,h=6} | |
this.colors = {1,2,3,4} | |
this.hashit = false | |
this.world = args.world | |
end, | |
update=function(this) | |
local p = this.hit(player) | |
if not this.hashit and p and p.x % 4 == 0 and p.y % 4 == 0 then | |
this.hashit = true | |
this.spreadtimes = 4 | |
this.world.checkpoint() | |
end | |
if not p then | |
this.hashit = false | |
end | |
if this.spreadtimes > 0 then | |
this.spread += 2 | |
if this.spread > 10 then | |
this.spread = 0 | |
this.spreadtimes -= 1 | |
end | |
end | |
end, | |
draw_before=function(this) | |
if this.spread > 0 then | |
rect( | |
this.x - this.spread + this.hitbox.x + 1, | |
this.y - this.spread + this.hitbox.y + 1, | |
this.x + this.hitbox.w + this.spread, | |
this.y + this.hitbox.h + this.spread + 1, | |
this.colors[this.spreadtimes] | |
) | |
end | |
spr(4, this.x, this.y) | |
end | |
} | |
types[4] = checkpoint | |
player_frames = {25,26} | |
player = { | |
born=function(this, args) | |
glob_player = this | |
this.x = args.x | |
this.y = args.y | |
args.world.player = this | |
args.world.cam.x = flr(this.x/64)*64 - 64 | |
args.world.cam.y = flr(this.y/64)*64 | |
this.hitbox = {x=1, y=1, w=6, h=6} | |
this.world = args.world | |
this.target = {x=this.x, y=this.y} | |
this.paused = 0 | |
this.hasgun = false | |
this.p_action = false | |
this.p_cycle = false | |
this.lastdir = {x=1,y=0} | |
this.actions = {} | |
this.selectedaction = 1 | |
this.frame = 0 | |
this.flip = false | |
end, | |
save_props={ | |
'x', 'y', 'target', 'paused','lastdir','actions','selectedaction','flip','frame' | |
}, | |
restore=function(this) | |
this.paused = 30 | |
this.target = {x=this.x, y=this.y} | |
end, | |
update=function(this) | |
dbg=stat(1) | |
if this.paused > 0 then | |
this.paused -= 1 | |
return | |
end | |
local btncount = indicate(btn(0)) + indicate(btn(1)) + indicate(btn(2)) + indicate(btn(3)) | |
if btncount == 1 and this.target.x == this.x and this.target.y == this.y then | |
if btn(0) and not this.solid(-step_size, 0) then | |
this.target.x -= step_size | |
this.lastdir = {x=-1,y=0} | |
this.flip = true | |
elseif btn(1) and not this.solid(step_size, 0) then | |
this.target.x += step_size | |
this.lastdir = {x=1,y=0} | |
this.flip = false | |
elseif btn(2) and not this.solid(0, -step_size) then | |
this.target.y -= step_size | |
this.lastdir = {x=0,y=-1} | |
elseif btn(3) and not this.solid(0, step_size) then | |
this.target.y += step_size | |
this.lastdir = {x=0,y=1} | |
end | |
end | |
if btn(4) and (not this.p_action) and #this.actions > 0 then | |
this.actions[this.selectedaction].action(this) | |
end | |
this.p_action = btn(4) | |
if btn(5) and (not this.p_cycle) and #this.actions > 0 then | |
this.selectedaction = 1 + (this.selectedaction - 1) % #this.actions | |
this.world.showhud() | |
end | |
this.p_cycle = btn(5) | |
this.spd.x = sgn(this.target.x - this.x) * player_speed | |
this.spd.y = sgn(this.target.y - this.y) * player_speed | |
if this.x ~= this.target.x or this.y ~= this.target.y then | |
this.frame += 0.1 | |
if this.frame >= 2 then | |
sfx(5) | |
end | |
this.frame %= #player_frames | |
else | |
this.frame = 0.8 | |
end | |
if this.x + this.hitbox.w / 2 > this.world.cam.x + 96 then | |
this.world.controller = move_camera_to(this.world, this.world.cam.x + 64, this.world.cam.y) | |
elseif this.x + this.hitbox.w / 2 < this.world.cam.x + 32 and this.world.cam.x > 0 then | |
this.world.controller = move_camera_to(this.world, this.world.cam.x - 64, this.world.cam.y) | |
elseif this.y + this.hitbox.h / 2 < this.world.cam.y + 32 and this.world.cam.y > 0 then | |
this.world.controller = move_camera_to(this.world, this.world.cam.x, this.world.cam.y - 64) | |
elseif this.y + this.hitbox.h / 2 > this.world.cam.y + 96 then | |
this.world.controller = move_camera_to(this.world, this.world.cam.x, this.world.cam.y + 64) | |
end | |
local enemy = this.hit(guard) | |
if enemy and enemy.frozen == 0 and enemy.chase_mode then | |
this.world.controller = wait(20, function() | |
this.world.controller = screen_out(this.world, function() | |
this.world.restore_checkpoint() | |
this.world.controller = screen_in(this.world, function()end) | |
end) | |
end) | |
end | |
local hitdoor = this.hit(door, 1, 0) or this.hit(door, -1, 0) or this.hit(door, 0, 1) or this.hit(door, 0, -5) | |
if hitdoor and this.world.keys > 0 then | |
this.world.del(hitdoor) | |
sfx(7) | |
this.world.usekey() | |
end | |
this.move() | |
end, | |
add_action=function(this, action) | |
add(this.actions, action) | |
this.world.showhud() | |
end, | |
draw=function(this) | |
spr(player_frames[flr(this.frame) + 1], this.x, this.y-8, 1, 2, this.flip) | |
end, | |
draw_after=function(this) | |
spr(player_frames[flr(this.frame) + 1], this.x, this.y-8, 1, 1, this.flip) | |
end | |
} | |
types[35] = player | |
function allpal(c) | |
for i = 0, 15 do | |
pal(i, c) | |
end | |
end | |
function resetpal() | |
for i = 0, 15 do | |
pal(i, i) | |
end | |
end | |
function draw_hud(y, world) | |
spr(32, world.cam.x + 4, y) | |
print('x', world.cam.x + 12, y + 1, 7) | |
print(world.keys, world.cam.x + 17, y + 1, 7) | |
local player = world.player | |
if #player.actions > 0 then | |
spr(player.actions[player.selectedaction].spr, world.cam.x + 26, y) | |
end | |
end | |
function copy(v) | |
if type(v) == 'table' then | |
local newt = {} | |
for k,v in pairs(v) do | |
newt[k] = v | |
end | |
return newt | |
else | |
return v | |
end | |
end | |
messages = {{ | |
'captain\'s log, jul 21 2025', | |
'','','', | |
'everyone who lived on this', | |
'planet is dead.', | |
}, { | |
'their only vestige this', | |
'temple in a remote part of', | |
'the planet' | |
}, { | |
'and. well.', | |
'','','', | |
'its security system.' | |
}, { | |
'we made our way to the temple', | |
'after our ship was shot down.', | |
'', | |
'we sprung some sort of trap', | |
'and ended up inside.', | |
'', | |
'i must get out.' | |
}, { | |
'this is the 10th year to the', | |
'day since we left earth.', | |
'', | |
'we were going to finally', | |
'turn around after exploring', | |
'this planet.' | |
}, { | |
'in the interest of proper', | |
'documentation (one of my', | |
'passions), i feel i must', | |
'share the series of events', | |
'leading me into this', | |
'situation' | |
}, { | |
'this shouldn\'t have', | |
'happened.', | |
}, { | |
'after being away for so long', | |
'tempers were tight on the', | |
'ship' | |
}, { | |
'on top of that, it came to', | |
'light that the objectives of', | |
'the mission, as understood', | |
'by myself and franz, differed', | |
'substantially.' | |
}, { | |
'i always thought the mission', | |
'was purely knowledge-seeking.', | |
'i was told to go understand', | |
'the universe.', | |
}, { | |
'it turns out franz was informed', | |
'to actively seek out minerals', | |
'and other substances of value', | |
'over all else.' | |
}, { | |
'i felt betrayed - my grants', | |
'the support i received, was', | |
'all actually in search of', | |
'resources.' | |
}, { | |
'when we landed, franz and i', | |
'got into an argument. we were', | |
'not properly aware of our', | |
'surroundings.' | |
}, { | |
'against my nature, i didn\'t', | |
'scan the area for any', | |
'irregularities.', | |
'this was what led us into', | |
'the trap.' | |
}, { | |
'now i\'m in here, and franz...', | |
}, { | |
'i do not know if franz is ok.', | |
'i\'m beginning my search on', | |
'outside.', | |
'', | |
'', | |
' -- captain viola' | |
} | |
} | |
function make_world() | |
--music(0) | |
local entities = {} | |
local w | |
local hudpower = 0 | |
local hudshowing = 0 | |
local curmessage = 1 | |
w = { | |
add=function(e) | |
add(entities, e) | |
end, | |
entities=entities, | |
del=function(e) | |
del(entities, e) | |
end, | |
showmessage=function() | |
w.controller = show_message(w, messages[curmessage]) | |
curmessage += 1 | |
end, | |
update=function() | |
if w.controller then | |
--coresume(w.controller) | |
if not coresume(w.controller.update) then | |
w.controller = nil | |
end | |
else | |
for e in all(entities) do | |
if not w.restored then | |
e.t.update(e) | |
end | |
end | |
end | |
w.restored = false | |
if hudpower > 0 then | |
hudpower -= 0.01 | |
hudshowing = expappr(hudshowing, 1, 0.5) | |
else | |
hudshowing = expappr(hudshowing, 0, 0.5) | |
end | |
end, | |
showhud=function() | |
hudpower = 1 | |
end, | |
save_props={ | |
'cam', 'keys' | |
}, | |
checkpoint=function() | |
for e in all(entities) do | |
if e.t.save_props then | |
e.storage = {} | |
for p in all(e.t.save_props) do | |
e.storage[p] = copy(e[p]) | |
end | |
end | |
end | |
w.storage = {} | |
for p in all(w.save_props) do | |
w.storage[p] = copy(w[p]) | |
end | |
storage = w.storage | |
end, | |
restore_checkpoint=function() | |
w.restored = true | |
for e in all(entities) do | |
if e.t.save_props then | |
storage = e.storage | |
for p in all(e.t.save_props) do | |
e[p] = e.storage[p] | |
end | |
if e.t.restore then | |
e.t.restore(e) | |
end | |
else | |
del(e, entities) | |
end | |
end | |
for p in all(w.save_props) do | |
w[p] = w.storage[p] | |
end | |
w.controller = nil | |
end, | |
draw=function() | |
camera(w.cam.x, w.cam.y) | |
allpal(2) | |
pal(1,2) | |
pal(13, 2) | |
pal(5,1) | |
pal(6,1) | |
map(flr(w.cam.x / 8) - 2, flr(w.cam.y / 8) - 2, (flr(w.cam.x / 8) - 2) * 8, (flr(w.cam.y / 8) - 2) * 8, 20, 20, 4) | |
resetpal() | |
map(flr(w.cam.x / 8) - 2, flr(w.cam.y / 8) - 2, (flr(w.cam.x / 8) - 2) * 8, (flr(w.cam.y / 8) - 2) * 8, 20, 20, 8) | |
for e in all(entities) do | |
if e.t.draw_before then | |
e.t.draw_before(e) | |
end | |
end | |
for e in all(entities) do | |
if e.t.draw then | |
e.t.draw(e) | |
end | |
end | |
palt(0, false) | |
map(flr(w.cam.x / 8) - 2, flr(w.cam.y / 8) - 2, (flr(w.cam.x / 8) - 2) * 8, (flr(w.cam.y / 8) - 2) * 8 - 4, 20, 20, 4) | |
palt(0, true) | |
local y = (w.cam.y + 128) * (1 - hudshowing) + (w.cam.y + 128 - 16) * hudshowing | |
draw_hud(y, w) | |
for e in all(entities) do | |
if e.t.draw_after then | |
e.t.draw_after(e) | |
end | |
end | |
if w.controller and w.controller.draw then | |
w.controller.draw() | |
end | |
end, | |
getkey=function() | |
w.keys += 1 | |
hudpower = 1 | |
end, | |
usekey=function() | |
w.keys -= 1 | |
hudpower = 1 | |
end, | |
keys=0, | |
cam={x=0,y=0}, | |
controller=nil | |
} | |
w.showmessage() | |
for x = 0, 16*8 do | |
for y = 0, 16*4 do | |
if fget(mget(x, y), 1) then | |
w.add(birth(types[mget(x, y)], {world=w,x=x*8,y=y*8})) | |
end | |
end | |
end | |
w.checkpoint() | |
return w | |
end | |
function end_world() | |
return { | |
update=function() | |
end, | |
draw=function() | |
camera(0,0) | |
rectfill(0, 0, 128,128,7) | |
print('the end', 10, 10, 0) | |
end | |
} | |
end | |
text_trigger = { | |
born=function(this, args) | |
this.x = args.x | |
this.y = args.y | |
this.hitbox={x=0,y=0,w=16,h=16} | |
this.world = args.world | |
this.particles = {} | |
this.tick = 0 | |
end, | |
update=function(this) | |
if not onscreen(this.world, this.x, this.y) then | |
return | |
end | |
this.tick += 1 | |
if this.tick > 30 then | |
this.tick = 0 | |
add(this.particles, { | |
x=this.x + rnd() * 16, | |
y=this.y + rnd() * 16, | |
h=0 | |
}) | |
end | |
for p in all(this.particles) do | |
p.h -= 0.04 | |
if p.h < -2 then | |
del(this.particles, p) | |
end | |
end | |
local h = this.hit(player) | |
if h then | |
this.world.showmessage() | |
this.world.del(this) | |
end | |
end, | |
draw=function(this) | |
for p in all(this.particles) do | |
circ(p.x, p.y + p.h, 2, 1) | |
end | |
end | |
} | |
types[37] = text_trigger | |
function pickup(sprite, effect) | |
return { | |
born=function(this, args) | |
this.hitbox = {x=2,y=0,w=4,h=7} | |
this.x = args.x | |
this.y = args.y | |
this.time = 0 | |
this.world = args.world | |
end, | |
save_props={ | |
'x','y','time' | |
}, | |
update=function(this) | |
this.time += 0.01 | |
local h = this.hit(player) | |
if h then | |
this.x = -1000 | |
effect(this) | |
end | |
end, | |
kill=function(this) | |
this.world.del(this) | |
end, | |
draw=function(this) | |
spr(sprite, this.x, this.y + sin(this.time) *2 - 0.5) | |
end | |
} | |
end | |
--key | |
types[32] = pickup(32, function(this) | |
this.world.getkey() | |
end) | |
types[34] = pickup(34, function(this) | |
this.world.player.t.add_action(this.world.player, { | |
spr=34, | |
action=function(this) | |
this.world.add(birth(bullet, {x=this.x+3.5,y=this.y+1.5,spd=this.lastdir,world=this.world})) | |
this.paused = 20 | |
this.frame = 0 | |
end | |
}) | |
end) | |
world = make_world() | |
function titlescreen() | |
local px = -8 | |
local pf = 0 | |
local t = 0 | |
local world = { | |
update=function() | |
px += 0.5 | |
pf += 0.1 | |
pf %= 2 | |
t += 0.1 | |
if btnp(4) or btnp(5) then | |
world = make_world() | |
end | |
end, | |
draw=function() | |
spr(flr(25 + pf), px, 56,1,2) | |
--spr(30, 90, 56,1,2) | |
spr(83, 48, 52,4,3) | |
print('by @justinjaffray', 30, 99, 0) | |
print('by @justinjaffray', 30, 100, 7) | |
for x = 0, 7 do | |
for y = 0, 7 do | |
if x==0 or y==0 or x==7 or y==7 then | |
rectfill(32 + x * 8, 32 + y * 8, 32 + x * 8 + 8 - 1, 32 + y * 8 + 8 - 1, (x+y+flr(t))%15+1) | |
end | |
end | |
end | |
end | |
} | |
return world | |
end | |
world = titlescreen() | |
--world = make_world() | |
function _update60() | |
world.update() | |
end | |
function _update() | |
world.update() | |
world.update() | |
end | |
function _draw() | |
cls() | |
world.draw() | |
--print(dbg, world.cam.x, world.cam.y, 7) | |
end | |
__gfx__ | |
00000000111111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
000000001dddddd1101dd10100000000099999900000000001011111110010111110010000011111110001101111100000000000000000000000000000000000 | |
007007001d1111d111dddd1100000000098888900000000001000000000000000000000101000000000000000000001000000000000000000000000000000000 | |
000770001d1111d11dddddd100000000098998900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
000770001d1111d110dddd0100000000098998900000000010000000000000000000000010000000000000000000000100000000000000000000000000000000 | |
007007001d1111d101dddd1000000000098888900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
000000001dddddd1101dd10100000000099999900000000010000000000000000000000100000000000000000000000000000000000000000000000000000000 | |
00000000111111110111111000000000088888800000000010000000000000000000000000111111100111101111110000000000000000000000000000000000 | |
9c9c9c9c9c9c9c9c0070000000000000000000000000070010000000000000000000000100000000000000000000000000000000000000000000000000000000 | |
c8888889c9c9c9c90070000000000000000000000000700010000000000000000000000100000000000000000444444000044400044444400000000000000000 | |
9888888c9c9c9c9c7070700000000000000000000007777710000000000000000000000100000000000000000999999000499900099999900000000000000000 | |
c8888889c9c9c9c9077700000070000000000700000070000000000000000000000000000000000000ee00000949949000999400099999900000000000000000 | |
9888888c9c9c9c9c0070000000070000000077700000070010000000000000000000000000ee000000eee0000999999000999900099999900000000000000000 | |
c8888889c9c9c9c90000000077777000000707070000000000000000000000000000000100eee00000eee0000994499000099900099999900000000000000000 | |
9888888c9c9c9c9c0000000000070000000007000000000010000000000000000000000100eee00000ee00000000000000000000000000000000000000000000 | |
c9c9c9c9c9c9c9c90000000000700000000007000000000010000000000000000000000000ee00000eeee0000000000000000000000000000000000000000000 | |
0006650066566566000000000000000055555550000000001000000000000000000000010eeee000eeeeee000004400000888800000000000000000000000000 | |
00065000666556660000000007777770500000500aaaaaa00000000000000000000000010eeee000eeee00000049940000888800000000000000000000000000 | |
00066500566556650aaaaaa007777770500000500a0000a00000000000000000000000000eeee000e0eee0000099990000888800000000000000000000000000 | |
00065000655665560666666007777770500000500a0aa0a000000000000000000000000000eee00000eee0000099990000288200000000000000000000000000 | |
00666500655665560a0a000007777770500000500a0aa0a010000000000000000000000100ee00000ee0e0000099990000022000000000000000000000000000 | |
00600500566556650aa0000007777770500000500a0000a000000000000000000000000000ee00000e00ee000009900000088000000000000000000000000000 | |
00666500666556660000000007777770555555500aaaaaa010000000000000000000000100ee0000000000000000000000088000000000000000000000000000 | |
00000000665665660000000000000000000000000000000000111111100111011100100000eee000000000000000000000022000000000000000000000000000 | |
00000000555555550000000011111111111111110000000077777777777777770000000000000000000000000000000000000000000000000000000000000000 | |
00000000556666550000000011111111111111110000000070707070777777770000000000000000000000000000000000000000000000000000000000000000 | |
00000000566666650000000055555555555555550000000007070707777777770000000000000000000000000000000000000000000000000000000000000000 | |
cccc99995666666500000000566666d5566666d50000000000000000777777770000000000000000000000000000000000000000000000000000000000000000 | |
01111999566666650000000056666655556666d50000000070707070777777770000000000000000000000000000000000000000000000000000000000000000 | |
00cccc995666666500000000566666d5566666d50000000000000000777777770000000000000000000000000000000000000000000000000000000000000000 | |
0000000055666655000000005ddd66d5566dd6d50000000000000000777777770000000000000000000000000000000000000000000000000000000000000000 | |
00000000555555550000000055555555555555550000000000070007777777770000000000000000000000000000000000000000000000000000000000000000 | |
11111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
11000000000000000000001100666600066600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
10770000000000000000000100666600066606660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
10700000000000000000000100666600055506660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
10000000000000000000000100555500055506660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
10000000000000000000000100555500055505550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
11000000000000000000001100555500000005550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
11111111111111111111111100000000000005550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
cccccccccccccccccccccccc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
15555555555555555555555100000005555005555500555555000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
15656565656565656565656100000055555505555550555555000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
15555555555555555555555100000056666506666650666666000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
15656565656565656565656100000066666606666660666666000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
11111111111111111111111100000066006606600660666555000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
11111111111111111111111100000066006606600660666666000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
11111111111111111111111100000066556606655660666666000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000066556606655660666555000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000066666606666660666666000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000006666006666600666666000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000055550055005505555550550550550000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000555555055005505555550550550550000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000566665066506606666660660660660000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000666666066556606666660660660660000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000665566066656606665550660660660000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000665566066666606666660660660660000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000666666066666606666660665665660000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000666666066066606665550665665660000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000660066066006606666660666666660000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000660066066006606666660066666600000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
10101010101010101010000000000000101044340000103030100000000000000000101000420042424242004242424200424200000042101010000000001010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
10340000343400001010000000000000101000524200103030100000000000000000101000420000000042000000000000000000000010101000000000000010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
10005200000000421010000000000000101000424200103030100000005200000000101000424242424242001010101010104200000010101010000000001010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
10420000004400001010000000000100101034000000103030100000000000000000101000000000000000001030303030101042001010101042000000424210 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
10000042000042001010000000001100101010000010103030100000000000000000101010101010101010101030303030104200004210101010000000001010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
10440000000100341010310000002100101010000010103030100000000000000000101010101010101010101010103030101012001010101000000000004210 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
10101000001110101010000010103100000000002100103030100000000000000000000010100414142400041424103030100000000010101010000000001010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30101031002110103010001010101000000000000000103030100000000000000000000010100515152500051525103030101000001010101010000000001010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30103141103121103010001010101000000000000000103030101010101010101000420010100000000000000000103030100000001010101010420000001010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100010101000103010004210100000000000000000101010101010101010101000420010100000000000000000103030100000000010101010420000001010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30104151102151103010410000001101510010103121101000000000424200000000420010100000005200000000103030101000000000101042420000004210 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100041005100103010101010000000001010101001101000000042000000424242420010100000000000000000103030100000000010101000000000004210 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30103100000021103010101010000000001010101011101000421010101010101000420010100000000000000002103030100000001010101000000000000010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000100000103010002100110151004210102151101042001010105200101000420010100000000000000000103030100000000010101000000000000010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30104100110151103010000042101041000000005100101042421010100000101000420010100000000000000000103030101000000042101000000000000010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100010101000103010000010101010000000101010101042421010210000211000420010101010101012001010101010104200000010101000000000000010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000000000103010000010101010000000101010101000001010001010011000420010101010101000001010101010420000000042101000000000000010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30103100011121103010000042101042000000000000101031000111110000110000005100424242000042000040000000004210100000000000000000004210 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000100000103010003100000111411010000000101000001010011010001000000042424242424242420000000000421010101000000000000000424210 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000100000103010000000000000001010000000101042421010001010001000420010101010101010101200101010101010101010101010101010101010 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30104100000051103010101010101010101010000000101042001010411010411000000010101010101010100000103030303030303030303030303030303030 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000100000101010101010101010101010000000101000421010101010101000424210103434000000000000103030303030303030303030303030303030 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000100000000000000000000000000000000000000042001030303030301000424210103400000000000034103030303030303030303030303030303030 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000100000000000000000400000004242424242000000001010101010101010101010103444000000000044103030303030303030303030303030303030 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000101010101010101010101010004242424242000000000000000000000000000010104434000000000000103030303030303030303030303030303030 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000103030301034000000344410004242424242000000002100000000110100510010103400000000000044103030303030303030303030303030303030 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000103030301000000000004210000000000000000000003100000111000021000010104400000000000034103030303030303030303030303030303030 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000103030301000005200000010101010101010101010101010101010101000000010103434005200000000103030303030303030303030303030303030 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000101010101000000000004210101010101010101010101010101010101000000010104444000000000000103030303030303030303030303030303030 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000000000000042000000004242000000000000000000002100001101000051000010103444000000000002103030303030303030303030303030303030 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30100000000000000000000000000000000000000000000000003100000000011100410010101010101010101010103030303030303030303030303030303030 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
30101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010103030303030303030303030303030303030 | |
30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030 | |
__gff__ | |
000505050200080808080808000000000200000000000808080000000000000002020202080208080800000000000000000500000000080a000000000000000005050509090000000000000000000000050505000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
__map__ | |
0303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030301010101370103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301010101010101010101010101010101010101010101030303030303030303030101010101010101010101010101010101010101010101010101010101010101010101010101030303030303030303030303030301010101360103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301250000000000000000000101000000242400000001030303030303030303030124242400000000000000242401012424242401010000000000000000000000000000240001030303030303030303030303030301010101000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301000000000000000000000101002400242400240001030303030303030303030124000000001300111000122401012400002400000000002500000000000000000000000001030303030303030303030303030301010101000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301000000240020000101010101000025000000000001030303030303030303030100000000000000000000002401012400202400000000000000000000000000000000000001030303030303030303030303030301010124000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301010101240000000124010101242400000000242401030303030303030303030100002424000000000000000001012424242401010000000000000000002400240000000001030303030303030303030303030301010124000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301000001010101000000000101242400002200242401030303030303030303030100000101241400000000150001010101010101010101010101010101010101012400000001030303030303030303030303030301010100000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301000000000001000001000101000000000000000001030303030303030303030100000101000024242424000001030303030303030303030303030303030303010000000001030303030303030303030303030301010100000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301000100010001000101010101000400242400240001030303030303030303030100240101000001010101240001010303030303030303030303030303030303010000000001030303030303030303030303030301012400000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301000101012400240000000101000000242400000001010101010101010101030100240101240001040000000000010303030303030303030303030303030303010000002401030303030303030303030303030301012400000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301000000012401010101000101010101000001010101010101000000010101030100000000000001010101000001010101010101010101010101010101010103012400000001030303030303030303030303030301010000000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301010101010000000001010101010113000000000000001011150000000001030200000000000001030100000024012401000100012401000100010001000101012400000001030303030303030303030303030301010000000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301000000000000000000000101010101010101010101010101000024000001030100131011120001030101000000000000000000002424000000000000000000002400002401030303030303030303030303030301240000000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301000000000000000000000000000000000000000001030301002424000101030100240101240001030100001300240000111000000000000000240000002424000015242401030303030303030303030303030301240000000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0301010101010101010101010101010101010000240001030301002424000103030100240201000001030101000100010001000100010001000124010001240101010101010101030303030303030303030303030301240000000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331313131313131313131313131313131010024240001030301002424000103030200140000150001020101010101010101240101010101010101012401010101030303030303030303030303030303030303030301000000000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331240000000000000000000000250031010024240001030301000024000103030200000000000000000000242401010101010101010101010101010101010101030303030303030303030303030303030303030301002500000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331000031313131313131313131000031010024000001030301000024000103030100000024000000000000002401000100012401000101010101010101010101010101010101010101010101010101010101010101000000000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331002040414141414141414142000031010024000001010101002424000101010100000102000000012425000000002425000000000001010100240000000000000000000000000000000000000000000000000000000000000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331000050515151515151515152000031010024240001130010112400150100000000240101000000010100000000000000000000000101010124240000000000002400000000000000000000000024240000000000000000000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331000024242424242424242424000031010000000001010101002400000100000000002424000000242400000001000100010000002401010124000000242400002400000024242400000000000024240000000000000000000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331000031313131313131313131000031011300101100001501002424000100000101000000000000000000000001010101010100000101010100000024240000002400000024000000002424240000000000000000000000000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331000040414141414141414142000031010024000001010101002424000100000101010101010101010101010101030303012400000001010100000000000000002400000000000000000024000000000000000000000000000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331000050515151515151515152000031010000000001130010110024150121000103030303030303030303030303030303010125000101010100000000000000000000000000000000000000000000000000000000000000000103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331000024242424242424242424000031010024000001010101002424000100000103030303030303030303030303030303010000000001010100000000010101010101010101010101010101010101010101010101010101010103030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331000000000000000000000000000031011324001110001501002424000100000103030303030303030303030303030303010100000101010000000000000103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331000031313131313131313131000031010024240001010101002424000100000103030303030303030303030303030303010000000001010100000000010103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331000040414141414141414142000031010024240001010000002424000100000103010101010101010101010303030303010100000101010000000000000103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331000050515151515151515152000031010000000000000004000000000000000103010000000000000000010303030303012400000001010100000000010103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331000004242424242424242424000031010000000000000000000000000000000103010024240024242400010101010101010100000101012424000000000103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331000000000000000000000000000031010101010101010101010101010101010103010024000000002400000000000000000000000001010124000000010103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 | |
0331313131313131313131000031313131010101010101030301010101010101010101010024002423000000240024242400240000240101010000000000000103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 | |
__sfx__ | |
011400001f0201f02021020210202202022020260202602024020240202200026000240001f0001f0001f0001f0201f02021020210202202022020260202602024020240202100024000220001f0001f0001f000 | |
0114000018613186131a6031a60318613186031860318603186131861300003000031861318603000030000318613186130000300003186131860300003000031861318613000030000318613186030000300003 | |
011400001d0201d0201f0201f0202102021020240202402022020220200000000000163000000000000000001d0201d0201f0201f020210202102024020240202202022020000000000016300000000000000000 | |
011400002430000000000000000024300000000000000000243000000000000000002430000000000000000024300000000000000000243000000000000000002430000000000000000024300000000000000000 | |
0001000015070190701d07023070260702a0702d0702d07028070240701f0701a0701807015070100700807003000020000200002000010000100001000010000100001000010001900015000000000000000000 | |
0001000012630116300f6300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
000400003002034020330202d0202e020310203402034020310202f0202e0203302035020320202f0203302034020300203302031020300203202033020310203102033020340203402033020340203207032070 | |
000200000050037570375703757037570375703757000500005000f5700f5700f5700f5700f5700f5700f57000500005000050000500005000050000500005000050000500005000050000500005000050000500 | |
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 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
__music__ | |
01 01004243 | |
02 01024344 | |
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 | |
00 41424344 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment