Log In  

Hello anybody who is reading this. I made a celeste cart through a celeste editor, but then realized that I do not have pico-8. If you have pico-8 and you are reading this, could you please try to make this celeste cart a reality? Here is the code:

pico-8 cartridge // http://www.pico-8.com
version 18
__lua__
-- ~celeste~
-- matt thorson + noel berry

-- globals --
-------------

room = { x=0, y=0 }
objects = {}
types = {}
freeze=0
shake=0
will_restart=false
delay_restart=0
got_fruit={}
has_dashed=false
sfx_timer=0
has_key=false
pause_player=false
flash_bg=false
music_timer=0

k_left=0
k_right=1
k_up=2
k_down=3
k_jump=4
k_dash=5

-- entry point --
-----------------

function _init()
    title_screen()
end

function title_screen()
    got_fruit = {}
    for i=0,29 do
        add(got_fruit,false) end
    frames=0
    deaths=0
    max_djump=1
    start_game=false
    start_game_flash=0
    music(40,0,7)

    load_room(7,3)
end

function begin_game()
    frames=0
    seconds=0
    minutes=0
    music_timer=0
    start_game=false
    music(0,0,7)
    load_room(0,0)
end

function level_index()
    return room.x%8+room.y*8
end

function is_title()
    return level_index()==31
end

-- effects --
-------------

clouds = {}
for i=0,16 do
    add(clouds,{
        x=rnd(128),
        y=rnd(128),
        spd=1+rnd(4),
        w=32+rnd(32)
    })
end

particles = {}
for i=0,24 do
    add(particles,{
        x=rnd(128),
        y=rnd(128),
        s=0+flr(rnd(5)/4),
        spd=0.25+rnd(5),
        off=rnd(1),
        c=6+flr(0.5+rnd(1))
    })
end

dead_particles = {}

-- player entity --
-------------------

player = 
{
    init=function(this) 
        this.p_jump=false
        this.p_dash=false
        this.grace=0
        this.jbuffer=0
        this.djump=max_djump
        this.dash_time=0
        this.dash_effect_time=0
        this.dash_target={x=0,y=0}
        this.dash_accel={x=0,y=0}
        this.hitbox = {x=1,y=3,w=6,h=5}
        this.spr_off=0
        this.was_on_ground=false
        create_hair(this)
    end,
    update=function(this)
        if (pause_player) return

        local input = btn(k_right) and 1 or (btn(k_left) and -1 or 0)

        -- spikes collide
        if spikes_at(this.x+this.hitbox.x,this.y+this.hitbox.y,this.hitbox.w,this.hitbox.h,this.spd.x,this.spd.y) then
         kill_player(this) end

        -- bottom death
        if this.y>128 then
            kill_player(this) end

        local on_ground=this.is_solid(0,1)
        local on_ice=this.is_ice(0,1)

        -- smoke particles
        if on_ground and not this.was_on_ground then
         init_object(smoke,this.x,this.y+4)
        end

        local jump = btn(k_jump) and not this.p_jump
        this.p_jump = btn(k_jump)
        if (jump) then
            this.jbuffer=4
        elseif this.jbuffer>0 then
         this.jbuffer-=1
        end

        local dash = btn(k_dash) and not this.p_dash
        this.p_dash = btn(k_dash)

        if on_ground then
            this.grace=6
            if this.djump<max_djump then
             psfx(54)
             this.djump=max_djump
            end
        elseif this.grace > 0 then
         this.grace-=1
        end

        this.dash_effect_time -=1
  if this.dash_time > 0 then
   init_object(smoke,this.x,this.y)
    this.dash_time-=1
    this.spd.x=appr(this.spd.x,this.dash_target.x,this.dash_accel.x)
    this.spd.y=appr(this.spd.y,this.dash_target.y,this.dash_accel.y)  
  else

            -- move
            local maxrun=1
            local accel=0.6
            local deccel=0.15

            if not on_ground then
                accel=0.4
            elseif on_ice then
                accel=0.05
                if input==(this.flip.x and -1 or 1) then
                    accel=0.05
                end
            end

            if abs(this.spd.x) > maxrun then
            this.spd.x=appr(this.spd.x,sign(this.spd.x)*maxrun,deccel)
            else
                this.spd.x=appr(this.spd.x,input*maxrun,accel)
            end

            --facing
            if this.spd.x!=0 then
                this.flip.x=(this.spd.x<0)
            end

            -- gravity
            local maxfall=2
            local gravity=0.21

    if abs(this.spd.y) <= 0.15 then
    gravity*=0.5
            end

            -- wall slide
            if input!=0 and this.is_solid(input,0) and not this.is_ice(input,0) then
            maxfall=0.4
            if rnd(10)<2 then
                init_object(smoke,this.x+input*6,this.y)
                end
            end

            if not on_ground then
                this.spd.y=appr(this.spd.y,maxfall,gravity)
            end

            -- jump
            if this.jbuffer>0 then
            if this.grace>0 then
            -- normal jump
            psfx(1)
            this.jbuffer=0
            this.grace=0
                    this.spd.y=-2
                    init_object(smoke,this.x,this.y+4)
                else
                    -- wall jump
                    local wall_dir=(this.is_solid(-3,0) and -1 or this.is_solid(3,0) and 1 or 0)
                    if wall_dir!=0 then
                    psfx(2)
                    this.jbuffer=0
                    this.spd.y=-2
                    this.spd.x=-wall_dir*(maxrun+1)
                    if not this.is_ice(wall_dir*3,0) then
                        init_object(smoke,this.x+wall_dir*6,this.y)
                        end
                    end
                end
            end

            -- dash
            local d_full=5
            local d_half=d_full*0.70710678118

            if this.djump>0 and dash then
            init_object(smoke,this.x,this.y)
            this.djump-=1       
            this.dash_time=4
            has_dashed=true
            this.dash_effect_time=10
            local v_input=(btn(k_up) and -1 or (btn(k_down) and 1 or 0))
            if input!=0 then
            if v_input!=0 then
            this.spd.x=input*d_half
            this.spd.y=v_input*d_half
            else
            this.spd.x=input*d_full
            this.spd.y=0
            end
            elseif v_input!=0 then
                this.spd.x=0
                this.spd.y=v_input*d_full
            else
                this.spd.x=(this.flip.x and -1 or 1)
            this.spd.y=0
            end

            psfx(3)
            freeze=2
            shake=6
            this.dash_target.x=2*sign(this.spd.x)
            this.dash_target.y=2*sign(this.spd.y)
            this.dash_accel.x=1.5
            this.dash_accel.y=1.5

            if this.spd.y<0 then
             this.dash_target.y*=.75
            end

            if this.spd.y!=0 then
             this.dash_accel.x*=0.70710678118
            end
            if this.spd.x!=0 then
             this.dash_accel.y*=0.70710678118
            end      
            elseif dash and this.djump<=0 then
             psfx(9)
             init_object(smoke,this.x,this.y)
            end

        end

        -- animation
        this.spr_off+=0.25
        if not on_ground then
            if this.is_solid(input,0) then
                this.spr=5
            else
                this.spr=3
            end
        elseif btn(k_down) then
            this.spr=6
        elseif btn(k_up) then
            this.spr=7
        elseif (this.spd.x==0) or (not btn(k_left) and not btn(k_right)) then
            this.spr=1
        else
            this.spr=1+this.spr_off%4
        end

        -- next level
        if this.y<-4 and level_index()<30 then next_room() end

        -- was on the ground
        this.was_on_ground=on_ground

    end, --<end update loop

    draw=function(this)

        -- clamp in screen
        if this.x<-1 or this.x>121 then 
            this.x=clamp(this.x,-1,121)
            this.spd.x=0
        end

        set_hair_color(this.djump)
        draw_hair(this,this.flip.x and -1 or 1)
        spr(this.spr,this.x,this.y,1,1,this.flip.x,this.flip.y)     
        unset_hair_color()
    end
}

psfx=function(num)
 if sfx_timer<=0 then
  sfx(num)
 end
end

create_hair=function(obj)
    obj.hair={}
    for i=0,4 do
        add(obj.hair,{x=obj.x,y=obj.y,size=max(1,min(2,3-i))})
    end
end

set_hair_color=function(djump)
    pal(8,(djump==1 and 8 or djump==2 and (7+flr((frames/3)%2)*4) or 12))
end

draw_hair=function(obj,facing)
    local last={x=obj.x+4-facing*2,y=obj.y+(btn(k_down) and 4 or 3)}
    foreach(obj.hair,function(h)
        h.x+=(last.x-h.x)/1.5
        h.y+=(last.y+0.5-h.y)/1.5
        circfill(h.x,h.y,h.size,8)
        last=h
    end)
end

unset_hair_color=function()
    pal(8,8)
end

player_spawn = {
    tile=1,
    init=function(this)
     sfx(4)
        this.spr=3
        this.target= {x=this.x,y=this.y}
        this.y=128
        this.spd.y=-4
        this.state=0
        this.delay=0
        this.solids=false
        create_hair(this)
    end,
    update=function(this)
        -- jumping up
        if this.state==0 then
            if this.y < this.target.y+16 then
                this.state=1
                this.delay=3
            end
        -- falling
        elseif this.state==1 then
            this.spd.y+=0.5
            if this.spd.y>0 and this.delay>0 then
                this.spd.y=0
                this.delay-=1
            end
            if this.spd.y>0 and this.y > this.target.y then
                this.y=this.target.y
                this.spd = {x=0,y=0}
                this.state=2
                this.delay=5
                shake=5
                init_object(smoke,this.x,this.y+4)
                sfx(5)
            end
        -- landing
        elseif this.state==2 then
            this.delay-=1
            this.spr=6
            if this.delay<0 then
                destroy_object(this)
                init_object(player,this.x,this.y)
            end
        end
    end,
    draw=function(this)
        set_hair_color(max_djump)
        draw_hair(this,1)
        spr(this.spr,this.x,this.y,1,1,this.flip.x,this.flip.y)
        unset_hair_color()
    end
}
add(types,player_spawn)

spring = {
    tile=18,
    init=function(this)
        this.hide_in=0
        this.hide_for=0
    end,
    update=function(this)
        if this.hide_for>0 then
            this.hide_for-=1
            if this.hide_for<=0 then
                this.spr=18
                this.delay=0
            end
        elseif this.spr==18 then
            local hit = this.collide(player,0,0)
            if hit ~=nil and hit.spd.y>=0 then
                this.spr=19
                hit.y=this.y-4
                hit.spd.x*=0.2
                hit.spd.y=-3
                hit.djump=max_djump
                this.delay=10
                init_object(smoke,this.x,this.y)

                -- breakable below us
                local below=this.collide(fall_floor,0,1)
                if below~=nil then
                    break_fall_floor(below)
                end

                psfx(8)
            end
        elseif this.delay>0 then
            this.delay-=1
            if this.delay<=0 then 
                this.spr=18 
            end
        end
        -- begin hiding
        if this.hide_in>0 then
            this.hide_in-=1
            if this.hide_in<=0 then
                this.hide_for=60
                this.spr=0
            end
        end
    end
}
add(types,spring)

function break_spring(obj)
    obj.hide_in=15
end

balloon = {
    tile=22,
    init=function(this) 
        this.offset=rnd(1)
        this.start=this.y
        this.timer=0
        this.hitbox={x=-1,y=-1,w=10,h=10}
    end,
    update=function(this) 
        if this.spr==22 then
            this.offset+=0.01
            this.y=this.start+sin(this.offset)*2
            local hit = this.collide(player,0,0)
            if hit~=nil and hit.djump<max_djump then
                psfx(6)
                init_object(smoke,this.x,this.y)
                hit.djump=max_djump
                this.spr=0
                this.timer=60
            end
        elseif this.timer>0 then
            this.timer-=1
        else 
         psfx(7)
         init_object(smoke,this.x,this.y)
            this.spr=22 
        end
    end,
    draw=function(this)
        if this.spr==22 then
            spr(13+(this.offset*8)%3,this.x,this.y+6)
            spr(this.spr,this.x,this.y)
        end
    end
}
add(types,balloon)

fall_floor = {
    tile=23,
    init=function(this)
        this.state=0
        this.solid=true
    end,
    update=function(this)
        -- idling
        if this.state == 0 then
            if this.check(player,0,-1) or this.check(player,-1,0) or this.check(player,1,0) then
                break_fall_floor(this)
            end
        -- shaking
        elseif this.state==1 then
            this.delay-=1
            if this.delay<=0 then
                this.state=2
                this.delay=60--how long it hides for
                this.collideable=false
            end
        -- invisible, waiting to reset
        elseif this.state==2 then
            this.delay-=1
            if this.delay<=0 and not this.check(player,0,0) then
                psfx(7)
                this.state=0
                this.collideable=true
                init_object(smoke,this.x,this.y)
            end
        end
    end,
    draw=function(this)
        if this.state!=2 then
            if this.state!=1 then
                spr(23,this.x,this.y)
            else
                spr(23+(15-this.delay)/5,this.x,this.y)
            end
        end
    end
}
add(types,fall_floor)

function break_fall_floor(obj)
 if obj.state==0 then
    psfx(15)
        obj.state=1
        obj.delay=15--how long until it falls
        init_object(smoke,obj.x,obj.y)
        local hit=obj.collide(spring,0,-1)
        if hit~=nil then
            break_spring(hit)
        end
    end
end

smoke={
    init=function(this)
        this.spr=29
        this.spd.y=-0.1
        this.spd.x=0.3+rnd(0.2)
        this.x+=-1+rnd(2)
        this.y+=-1+rnd(2)
        this.flip.x=maybe()
        this.flip.y=maybe()
        this.solids=false
    end,
    update=function(this)
        this.spr+=0.2
        if this.spr>=32 then
            destroy_object(this)
        end
    end
}

fruit={
    tile=26,
    if_not_fruit=true,
    init=function(this) 
        this.start=this.y
        this.off=0
    end,
    update=function(this)
     local hit=this.collide(player,0,0)
        if hit~=nil then
         hit.djump=max_djump
            sfx_timer=20
            sfx(13)
            got_fruit[1+level_index()] = true
            init_object(lifeup,this.x,this.y)
            destroy_object(this)
        end
        this.off+=1
        this.y=this.start+sin(this.off/40)*2.5
    end
}
add(types,fruit)

fly_fruit={
    tile=28,
    if_not_fruit=true,
    init=function(this) 
        this.start=this.y
        this.fly=false
        this.step=0.5
        this.solids=false
        this.sfx_delay=8
    end,
    update=function(this)
        --fly away
        if this.fly then
         if this.sfx_delay>0 then
          this.sfx_delay-=1
          if this.sfx_delay<=0 then
           sfx_timer=20
           sfx(14)
          end
         end
            this.spd.y=appr(this.spd.y,-3.5,0.25)
            if this.y<-16 then
                destroy_object(this)
            end
        -- wait
        else
            if has_dashed then
                this.fly=true
            end
            this.step+=0.05
            this.spd.y=sin(this.step)*0.5
        end
        -- collect
        local hit=this.collide(player,0,0)
        if hit~=nil then
         hit.djump=max_djump
            sfx_timer=20
            sfx(13)
            got_fruit[1+level_index()] = true
            init_object(lifeup,this.x,this.y)
            destroy_object(this)
        end
    end,
    draw=function(this)
        local off=0
        if not this.fly then
            local dir=sin(this.step)
            if dir<0 then
                off=1+max(0,sign(this.y-this.start))
            end
        else
            off=(off+0.25)%3
        end
        spr(45+off,this.x-6,this.y-2,1,1,true,false)
        spr(this.spr,this.x,this.y)
        spr(45+off,this.x+6,this.y-2)
    end
}
add(types,fly_fruit)

lifeup = {
    init=function(this)
        this.spd.y=-0.25
        this.duration=30
        this.x-=2
        this.y-=4
        this.flash=0
        this.solids=false
    end,
    update=function(this)
        this.duration-=1
        if this.duration<= 0 then
            destroy_object(this)
        end
    end,
    draw=function(this)
        this.flash+=0.5

        print("1000",this.x-2,this.y,7+this.flash%2)
    end
}

fake_wall = {
    tile=64,
    if_not_fruit=true,
    update=function(this)
        this.hitbox={x=-1,y=-1,w=18,h=18}
        local hit = this.collide(player,0,0)
        if hit~=nil and hit.dash_effect_time>0 then
            hit.spd.x=-sign(hit.spd.x)*1.5
            hit.spd.y=-1.5
            hit.dash_time=-1
            sfx_timer=20
            sfx(16)
            destroy_object(this)
            init_object(smoke,this.x,this.y)
            init_object(smoke,this.x+8,this.y)
            init_object(smoke,this.x,this.y+8)
            init_object(smoke,this.x+8,this.y+8)
            init_object(fruit,this.x+4,this.y+4)
        end
        this.hitbox={x=0,y=0,w=16,h=16}
    end,
    draw=function(this)
        spr(64,this.x,this.y)
        spr(65,this.x+8,this.y)
        spr(80,this.x,this.y+8)
        spr(81,this.x+8,this.y+8)
    end
}
add(types,fake_wall)

key={
    tile=8,
    if_not_fruit=true,
    update=function(this)
        local was=flr(this.spr)
        this.spr=9+(sin(frames/30)+0.5)*1
        local is=flr(this.spr)
        if is==10 and is!=was then
            this.flip.x=not this.flip.x
        end
        if this.check(player,0,0) then
            sfx(23)
            sfx_timer=10
            destroy_object(this)
            has_key=true
        end
    end
}
add(types,key)

chest={
    tile=20,
    if_not_fruit=true,
    init=function(this)
        this.x-=4
        this.start=this.x
        this.timer=20
    end,
    update=function(this)
        if has_key then
            this.timer-=1
            this.x=this.start-1+rnd(3)
            if this.timer<=0 then
             sfx_timer=20
             sfx(16)
                init_object(fruit,this.x,this.y-4)
                destroy_object(this)
            end
        end
    end
}
add(types,chest)

platform={
    init=function(this)
        this.x-=4
        this.solids=false
        this.hitbox.w=16
        this.last=this.x
    end,
    update=function(this)
        this.spd.x=this.dir*0.65
        if this.x<-16 then this.x=128
        elseif this.x>128 then this.x=-16 end
        if not this.check(player,0,0) then
            local hit=this.collide(player,0,-1)
            if hit~=nil then
                hit.move_x(this.x-this.last,1)
            end
        end
        this.last=this.x
    end,
    draw=function(this)
        spr(11,this.x,this.y-1)
        spr(12,this.x+8,this.y-1)
    end
}

message={
    tile=86,
    last=0,
    draw=function(this)
        this.text="-- celeste mountain --#this memorial to those# perished on the climb"
        if this.check(player,4,0) then
            if this.index<#this.text then
             this.index+=0.5
                if this.index>=this.last+1 then
                 this.last+=1
                 sfx(35)
                end
            end
            this.off={x=8,y=96}
            for i=1,this.index do
                if sub(this.text,i,i)~="#" then
                    rectfill(this.off.x-2,this.off.y-2,this.off.x+7,this.off.y+6 ,7)
                    print(sub(this.text,i,i),this.off.x,this.off.y,0)
                    this.off.x+=5
                else
                    this.off.x=8
                    this.off.y+=7
                end
            end
        else
            this.index=0
            this.last=0
        end
    end
}
add(types,message)

big_chest={
    tile=96,
    init=function(this)
        this.state=0
        this.hitbox.w=16
    end,
    draw=function(this)
        if this.state==0 then
            local hit=this.collide(player,0,8)
            if hit~=nil and hit.is_solid(0,1) then
                music(-1,500,7)
                sfx(37)
                pause_player=true
                hit.spd.x=0
                hit.spd.y=0
                this.state=1
                init_object(smoke,this.x,this.y)
                init_object(smoke,this.x+8,this.y)
                this.timer=60
                this.particles={}
            end
            spr(96,this.x,this.y)
            spr(97,this.x+8,this.y)
        elseif this.state==1 then
            this.timer-=1
         shake=5
         flash_bg=true
            if this.timer<=45 and count(this.particles)<50 then
                add(this.particles,{
                    x=1+rnd(14),
                    y=0,
                    h=32+rnd(32),
                    spd=8+rnd(8)
                })
            end
            if this.timer<0 then
                this.state=2
                this.particles={}
                flash_bg=false
                new_bg=true
                init_object(orb,this.x+4,this.y+4)
                pause_player=false
            end
            foreach(this.particles,function(p)
                p.y+=p.spd
                line(this.x+p.x,this.y+8-p.y,this.x+p.x,min(this.y+8-p.y+p.h,this.y+8),7)
            end)
        end
        spr(112,this.x,this.y+8)
        spr(113,this.x+8,this.y+8)
    end
}
add(types,big_chest)

orb={
    init=function(this)
        this.spd.y=-4
        this.solids=false
        this.particles={}
    end,
    draw=function(this)
        this.spd.y=appr(this.spd.y,0,0.5)
        local hit=this.collide(player,0,0)
        if this.spd.y==0 and hit~=nil then
         music_timer=45
            sfx(51)
            freeze=10
            shake=10
            destroy_object(this)
            max_djump=2
            hit.djump=2
        end

        spr(102,this.x,this.y)
        local off=frames/30
        for i=0,7 do
            circfill(this.x+4+cos(off+i/8)*8,this.y+4+sin(off+i/8)*8,1,7)
        end
    end
}

flag = {
    tile=118,
    init=function(this)
        this.x+=5
        this.score=0
        this.show=false
        for i=1,count(got_fruit) do
            if got_fruit[i] then
                this.score+=1
            end
        end
    end,
    draw=function(this)
        this.spr=118+(frames/5)%3
        spr(this.spr,this.x,this.y)
        if this.show then
            rectfill(32,2,96,31,0)
            spr(26,55,6)
            print("x"..this.score,64,9,7)
            draw_time(49,16)
            print("deaths:"..deaths,48,24,7)
        elseif this.check(player,0,0) then
            sfx(55)
      sfx_timer=30
            this.show=true
        end
    end
}
add(types,flag)

room_title = {
    init=function(this)
        this.delay=5
 end,
    draw=function(this)
        this.delay-=1
        if this.delay<-30 then
            destroy_object(this)
        elseif this.delay<0 then

            rectfill(24,58,104,70,0)
            --rect(26,64-10,102,64+10,7)
            --print("---",31,64-2,13)
            if room.x==3 and room.y==1 then
                print("old site",48,62,7)
            elseif level_index()==30 then
                print("summit",52,62,7)
            else
                local level=(1+level_index())*100
                print(level.." m",52+(level<1000 and 2 or 0),62,7)
            end
            --print("---",86,64-2,13)

            draw_time(4,4)
        end
    end
}

-- object functions --
-----------------------

function init_object(type,x,y)
    if type.if_not_fruit~=nil and got_fruit[1+level_index()] then
        return
    end
    local obj = {}
    obj.type = type
    obj.collideable=true
    obj.solids=true

    obj.spr = type.tile
    obj.flip = {x=false,y=false}

    obj.x = x
    obj.y = y
    obj.hitbox = { x=0,y=0,w=8,h=8 }

    obj.spd = {x=0,y=0}
    obj.rem = {x=0,y=0}

    obj.is_solid=function(ox,oy)
        if oy>0 and not obj.check(platform,ox,0) and obj.check(platform,ox,oy) then
            return true
        end
        return solid_at(obj.x+obj.hitbox.x+ox,obj.y+obj.hitbox.y+oy,obj.hitbox.w,obj.hitbox.h)
         or obj.check(fall_floor,ox,oy)
         or obj.check(fake_wall,ox,oy)
    end

    obj.is_ice=function(ox,oy)
        return ice_at(obj.x+obj.hitbox.x+ox,obj.y+obj.hitbox.y+oy,obj.hitbox.w,obj.hitbox.h)
    end

    obj.collide=function(type,ox,oy)
        local other
        for i=1,count(objects) do
            other=objects[i]
            if other ~=nil and other.type == type and other != obj and other.collideable and
                other.x+other.hitbox.x+other.hitbox.w > obj.x+obj.hitbox.x+ox and 
                other.y+other.hitbox.y+other.hitbox.h > obj.y+obj.hitbox.y+oy and
                other.x+other.hitbox.x < obj.x+obj.hitbox.x+obj.hitbox.w+ox and 
                other.y+other.hitbox.y < obj.y+obj.hitbox.y+obj.hitbox.h+oy then
                return other
            end
        end
        return nil
    end

    obj.check=function(type,ox,oy)
        return obj.collide(type,ox,oy) ~=nil
    end

    obj.move=function(ox,oy)
        local amount
        -- [x] get move amount
    obj.rem.x += ox
        amount = flr(obj.rem.x + 0.5)
        obj.rem.x -= amount
        obj.move_x(amount,0)

        -- [y] get move amount
        obj.rem.y += oy
        amount = flr(obj.rem.y + 0.5)
        obj.rem.y -= amount
        obj.move_y(amount)
    end

    obj.move_x=function(amount,start)
        if obj.solids then
            local step = sign(amount)
            for i=start,abs(amount) do
                if not obj.is_solid(step,0) then
                    obj.x += step
                else
                    obj.spd.x = 0
                    obj.rem.x = 0
                    break
                end
            end
        else
            obj.x += amount
        end
    end

    obj.move_y=function(amount)
        if obj.solids then
            local step = sign(amount)
            for i=0,abs(amount) do
            if not obj.is_solid(0,step) then
                    obj.y += step
                else
                    obj.spd.y = 0
                    obj.rem.y = 0
                    break
                end
            end
        else
            obj.y += amount
        end
    end

    add(objects,obj)
    if obj.type.init~=nil then
        obj.type.init(obj)
    end
    return obj
end

function destroy_object(obj)
    del(objects,obj)
end

function kill_player(obj)
    sfx_timer=12
    sfx(0)
    deaths+=1
    shake=10
    destroy_object(obj)
    dead_particles={}
    for dir=0,7 do
        local angle=(dir/8)
        add(dead_particles,{
            x=obj.x+4,
            y=obj.y+4,
            t=10,
            spd={
                x=sin(angle)*3,
                y=cos(angle)*3
            }
        })
        restart_room()
    end
end

-- room functions --
--------------------

function restart_room()
    will_restart=true
    delay_restart=15
end

function next_room()
 if room.x==2 and room.y==1 then
  music(30,500,7)
 elseif room.x==3 and room.y==1 then
  music(20,500,7)
 elseif room.x==4 and room.y==2 then
  music(30,500,7)
 elseif room.x==5 and room.y==3 then
  music(30,500,7)
 end

    if room.x==7 then
        load_room(0,room.y+1)
    else
        load_room(room.x+1,room.y)
    end
end

function load_room(x,y)
    has_dashed=false
    has_key=false

    --remove existing objects
    foreach(objects,destroy_object)

    --current room
    room.x = x
    room.y = y

    -- entities
    for tx=0,15 do
        for ty=0,15 do
            local tile = mget(room.x*16+tx,room.y*16+ty);
            if tile==11 then
                init_object(platform,tx*8,ty*8).dir=-1
            elseif tile==12 then
                init_object(platform,tx*8,ty*8).dir=1
            else
                foreach(types, 
                function(type) 
                    if type.tile == tile then
                        init_object(type,tx*8,ty*8) 
                    end 
                end)
            end
        end
    end

    if not is_title() then
        init_object(room_title,0,0)
    end
end

-- update function --
-----------------------

function _update()
    frames=((frames+1)%30)
    if frames==0 and level_index()<30 then
        seconds=((seconds+1)%60)
        if seconds==0 then
            minutes+=1
        end
    end

    if music_timer>0 then
     music_timer-=1
     if music_timer<=0 then
      music(10,0,7)
     end
    end

    if sfx_timer>0 then
     sfx_timer-=1
    end

    -- cancel if freeze
    if freeze>0 then freeze-=1 return end

    -- screenshake
    if shake>0 then
        shake-=1
        camera()
        if shake>0 then
            camera(-2+rnd(5),-2+rnd(5))
        end
    end

    -- restart (soon)
    if will_restart and delay_restart>0 then
        delay_restart-=1
        if delay_restart<=0 then
            will_restart=false
            load_room(room.x,room.y)
        end
    end

    -- update each object
    foreach(objects,function(obj)
        obj.move(obj.spd.x,obj.spd.y)
        if obj.type.update~=nil then
            obj.type.update(obj) 
        end
    end)

    -- start game
    if is_title() then
        if not start_game and (btn(k_jump) or btn(k_dash)) then
            music(-1)
            start_game_flash=50
            start_game=true
            sfx(38)
        end
        if start_game then
            start_game_flash-=1
            if start_game_flash<=-30 then
                begin_game()
            end
        end
    end
end

-- drawing functions --
-----------------------
function _draw()
    if freeze>0 then return end

    -- reset all palette values
    pal()

    -- start game flash
    if start_game then
        local c=10
        if start_game_flash>10 then
            if frames%10<5 then
                c=7
            end
        elseif start_game_flash>5 then
            c=2
        elseif start_game_flash>0 then
            c=1
        else 
            c=0
        end
        if c<10 then
            pal(6,c)
            pal(12,c)
            pal(13,c)
            pal(5,c)
            pal(1,c)
            pal(7,c)
        end
    end

    -- clear screen
    local bg_col = 0
    if flash_bg then
        bg_col = frames/5
    elseif new_bg~=nil then
        bg_col=2
    end
    rectfill(0,0,128,128,bg_col)

    -- clouds
    if not is_title() then
        foreach(clouds, function(c)
            c.x += c.spd
            rectfill(c.x,c.y,c.x+c.w,c.y+4+(1-c.w/64)*12,new_bg~=nil and 14 or 1)
            if c.x > 128 then
                c.x = -c.w
                c.y=rnd(128-8)
            end
        end)
    end

    -- draw bg terrain
    map(room.x * 16,room.y * 16,0,0,16,16,4)

    -- platforms/big chest
    foreach(objects, function(o)
        if o.type==platform or o.type==big_chest then
            draw_object(o)
        end
    end)

    -- draw terrain
    local off=is_title() and -4 or 0
    map(room.x*16,room.y * 16,off,0,16,16,2)

    -- draw objects
    foreach(objects, function(o)
        if o.type~=platform and o.type~=big_chest then
            draw_object(o)
        end
    end)

    -- draw fg terrain
    map(room.x * 16,room.y * 16,0,0,16,16,8)

    -- particles
    foreach(particles, function(p)
        p.x += p.spd
        p.y += sin(p.off)
        p.off+= min(0.05,p.spd/32)
        rectfill(p.x,p.y,p.x+p.s,p.y+p.s,p.c)
        if p.x>128+4 then 
            p.x=-4
            p.y=rnd(128)
        end
    end)

    -- dead particles
    foreach(dead_particles, function(p)
        p.x += p.spd.x
        p.y += p.spd.y
        p.t -=1
        if p.t <= 0 then del(dead_particles,p) end
        rectfill(p.x-p.t/5,p.y-p.t/5,p.x+p.t/5,p.y+p.t/5,14+p.t%2)
    end)

    -- draw outside of the screen for screenshake
    rectfill(-5,-5,-1,133,0)
    rectfill(-5,-5,133,-1,0)
    rectfill(-5,128,133,133,0)
    rectfill(128,-5,133,133,0)

    -- credits
    if is_title() then
        print("x+c",58,80,5)
        print("matt thorson",42,96,5)
        print("noel berry",46,102,5)
    end

    if level_index()==30 then
        local p
        for i=1,count(objects) do
            if objects[i].type==player then
                p = objects[i]
                break
            end
        end
        if p~=nil then
            local diff=min(24,40-abs(p.x+4-64))
            rectfill(0,0,diff,128,0)
            rectfill(128-diff,0,128,128,0)
        end
    end

end

function draw_object(obj)

    if obj.type.draw ~=nil then
        obj.type.draw(obj)
    elseif obj.spr > 0 then
        spr(obj.spr,obj.x,obj.y,1,1,obj.flip.x,obj.flip.y)
    end

end

function draw_time(x,y)

    local s=seconds
    local m=minutes%60
    local h=flr(minutes/60)

    rectfill(x,y,x+32,y+6,0)
    print((h<10 and "0"..h or h)..":"..(m<10 and "0"..m or m)..":"..(s<10 and "0"..s or s),x+1,y+1,7)

end

-- helper functions --
----------------------

function clamp(val,a,b)
    return max(a, min(b, val))
end

function appr(val,target,amount)
 return val > target 
    and max(val - amount, target) 
    or min(val + amount, target)
end

function sign(v)
    return v>0 and 1 or
                                v<0 and -1 or 0
end

function maybe()
    return rnd(1)<0.5
end

function solid_at(x,y,w,h)
 return tile_flag_at(x,y,w,h,0)
end

function ice_at(x,y,w,h)
 return tile_flag_at(x,y,w,h,4)
end

function tile_flag_at(x,y,w,h,flag)
 for i=max(0,flr(x/8)),min(15,(x+w-1)/8) do
    for j=max(0,flr(y/8)),min(15,(y+h-1)/8) do
        if fget(tile_at(i,j),flag) then
            return true
        end
    end
 end
    return false
end

function tile_at(x,y)
 return mget(room.x * 16 + x, room.y * 16 + y)
end

function spikes_at(x,y,w,h,xspd,yspd)
 for i=max(0,flr(x/8)),min(15,(x+w-1)/8) do
    for j=max(0,flr(y/8)),min(15,(y+h-1)/8) do
     local tile=tile_at(i,j)
     if tile==17 and ((y+h-1)%8>=6 or y+h==j*8+8) and yspd>=0 then
      return true
     elseif tile==27 and y%8<=2 and yspd<=0 then
      return true
        elseif tile==43 and x%8<=2 and xspd<=0 then
         return true
        elseif tile==59 and ((x+w-1)%8>=6 or x+w==i*8+8) and xspd>=0 then
         return true
        end
    end
 end
    return false
end
__gfx__
000000000000000000000000088888800000000000000000000000000000000000aaaaa0000aaa000000a0000007707770077700000060000000600000060000
000000000888888008888880888888880888888008888800000000000888888000a000a0000a0a000000a0000777777677777770000060000000600000060000
000000008888888888888888888ffff888888888888888800888888088f1ff1800a909a0000a0a000000a0007766666667767777000600000000600000060000
00000000888ffff8888ffff888f1ff18888ffff88ffff8808888888888fffff8009aaa900009a9000000a0007677766676666677000600000000600000060000
0000000088f1ff1888f1ff1808fffff088f1ff1881ff1f80888ffff888fffff80000a0000000a0000000a0000000000000000000000600000006000000006000
0000000008fffff008fffff00033330008fffff00fffff8088fffff8083333800099a0000009a0000000a0000000000000000000000600000006000000006000
00000000003333000033330007000070073333000033337008f1ff10003333000009a0000000a0000000a0000000000000000000000060000006000000006000
000000000070070000700070000000000000070000007000077333700070070000aaa0000009a0000000a0000000000000000000000060000006000000006000
555555550000000000000000000000000000000000000000008888004999999449999994499909940300b0b0666566650300b0b0000000000000000070000000
55555555000000000000000000000000000000000000000008888880911111199111411991140919003b330067656765003b3300007700000770070007000007
550000550000000000000000000000000aaaaaa00000000008788880911111199111911949400419028888206770677002888820007770700777000000000000
55000055007000700499994000000000a998888a1111111108888880911111199494041900000044089888800700070078988887077777700770000000000000
55000055007000700050050000000000a988888a1000000108888880911111199114094994000000088889800700070078888987077777700000700000000000
55000055067706770005500000000000aaaaaaaa1111111108888880911111199111911991400499088988800000000008898880077777700000077000000000
55555555567656760050050000000000a980088a1444444100888800911111199114111991404119028888200000000002888820070777000007077007000070
55555555566656660005500004999940a988888a1444444100000000499999944999999444004994002882000000000000288200000000007000000000000000
5777777557777777777777777777777577cccccccccccccccccccc77577777755555555555555555555555555500000007777770000000000000000000000000
77777777777777777777777777777777777cccccccccccccccccc777777777775555555555555550055555556670000077777777000777770000000000000000
777c77777777ccccc777777ccccc7777777cccccccccccccccccc777777777775555555555555500005555556777700077777777007766700000000000000000
77cccc77777cccccccc77cccccccc7777777cccccccccccccccc7777777cc7775555555555555000000555556660000077773377076777000000000000000000
77cccc7777cccccccccccccccccccc777777cccccccccccccccc777777cccc775555555555550000000055555500000077773377077660000777770000000000
777cc77777cc77ccccccccccccc7cc77777cccccccccccccccccc77777cccc775555555555500000000005556670000073773337077770000777767007700000
7777777777cc77cccccccccccccccc77777cccccccccccccccccc77777c7cc77555555555500000000000055677770007333bb37000000000000007700777770
5777777577cccccccccccccccccccc7777cccccccccccccccccccc7777cccc77555555555000000000000005666000000333bb30000000000000000000077777
77cccc7777cccccccccccccccccccc77577777777777777777777775777ccc775555555550000000000000050000066603333330000000000000000000000000
777ccc7777cccccccccccccccccccc77777777777777777777777777777cc7775055555555000000000000550007777603b333300000000000ee0ee000000000
777ccc7777cc7cccccccccccc77ccc777777ccc7777777777ccc7777777cc77755550055555000000000055500000766033333300000000000eeeee000000030
77ccc77777ccccccccccccccc77ccc77777ccccc7c7777ccccccc77777ccc777555500555555000000005555000000550333b33000000000000e8e00000000b0
77ccc777777cccccccc77cccccccc777777ccccccc7777c7ccccc77777cccc7755555555555550000005555500000666003333000000b00000eeeee000000b30
777cc7777777ccccc777777ccccc77777777ccc7777777777ccc777777cccc775505555555555500005555550007777600044000000b000000ee3ee003000b00
777cc777777777777777777777777777777777777777777777777777777cc7775555555555555550055555550000076600044000030b00300000b00000b0b300
77cccc77577777777777777777777775577777777777777777777775577777755555555555555555555555550000005500999900030330300000b00000303300
5777755777577775077777777777777777777770077777700000000000000000cccccccc00000000000000000000000000000000000000000000000000000000
7777777777777777700007770000777000007777700077770000000000000000c77ccccc00000000000000000000000000000000000000000000000000000000
7777cc7777cc777770cc777cccc777ccccc7770770c777070000000000000000c77cc7cc00000000000000000000000000000000000000000000000000000000
777cccccccccc77770c777cccc777ccccc777c0770777c070000000000000000cccccccc00000000000000000000000000006000000000000000000000000000
77cccccccccccc77707770000777000007770007777700070002eeeeeeee2000cccccccc00000000000000000000000000060600000000000000000000000000
57cc77ccccc7cc7577770000777000007770000777700007002eeeeeeeeee200cc7ccccc00000000000000000000000000d00060000000000000000000000000
577c77ccccccc7757000000000000000000c000770000c0700eeeeeeeeeeee00ccccc7cc0000000000000000000000000d00000c000000000000000000000000
777cccccccccc7777000000000000000000000077000000700e22222e2e22e00cccccccc000000000000000000000000d000000c000000000000000000000000
777cccccccccc7777000000000000000000000077000000700eeeeeeeeeeee000000000000000000000000000000000c0000000c000600000000000000000000
577cccccccccc7777000000c000000000000000770cc000700e22e2222e22e00000000000000000000000000000000d000000000c060d0000000000000000000
57cc7cccc77ccc7570000000000cc0000000000770cc000700eeeeeeeeeeee0000000000000000000000000000000c00000000000d000d000000000000000000
77ccccccc77ccc7770c00000000cc00000000c0770000c0700eee222e22eee0000000000000000000000000000000c0000000000000000000000000000000000
777cccccccccc7777000000000000000000000077000000700eeeeeeeeeeee005555555506666600666666006600c00066666600066666006666660066666600
7777cc7777cc777770000000000000000000000770c0000700eeeeeeeeeeee00555555556666666066666660660c000066666660666666606666666066666660
777777777777777770000000c0000000000000077000000700ee77eee7777e005555555566000660660000006600000066000000660000000066000066000000
57777577775577757000000000000000000000077000c007077777777777777055555555dd000000dddd0000dd000000dddd0000ddddddd000dd0000dddd0000
000000000000000070000000000000000000000770000007007777005000000000000005dd000dd0dd000000dd0000d0dd000000000000d000dd0000dd000000
00aaaaaaaaaaaa00700000000000000000000007700c0007070000705500000000000055ddddddd0dddddd00ddddddd0dddddd00ddddddd000dd0000dddddd00
0a999999999999a0700000000000c00000000007700000077077000755500000000005550ddddd00ddddddd0ddddddd0ddddddd00ddddd0000dd0000ddddddd0
a99aaaaaaaaaa99a7000000cc0000000000000077000cc077077bb07555500000000555500000000000000000000000000000000000000000000000000000000
a9aaaaaaaaaaaa9a7000000cc0000000000c00077000cc07700bbb0755555555555555550000000000000c000000000000000000000000000000c00000000000
a99999999999999a70c00000000000000000000770c00007700bbb075555555555555555000000000000c00000000000000000000000000000000c0000000000
a99999999999999a700000000000000000000007700000070700007055555555555555550000000000cc0000000000000000000000000000000000c000000000
a99999999999999a07777777777777777777777007777770007777005555555555555555000000000c000000000000000000000000000000000000c000000000
aaaaaaaaaaaaaaaa07777777777777777777777007777770004bbb00004b000000400bbb00000000c0000000000000000000000000000000000000c000000000
a49494a11a49494a70007770000077700000777770007777004bbbbb004bb000004bbbbb0000000100000000000000000000000000000000000000c00c000000
a494a4a11a4a494a70c777ccccc777ccccc7770770c7770704200bbb042bbbbb042bbb00000000c0000000000000000000000000000000000000001010c00000
a49444aaaa44494a70777ccccc777ccccc777c0770777c07040000000400bbb004000000000001000000000000000000000000000000000000000001000c0000
a49999aaaa99994a7777000007770000077700077777000704000000040000000400000000000100000000000000000000000000000000000000000000010000
a49444999944494a77700000777000007770000777700c0742000000420000004200000000000100000000000000000000000000000000000000000000001000
a494a444444a494a7000000000000000000000077000000740000000400000004000000000000000000000000000000000000000000000000000000000000000
a49499999999494a0777777777777777777777700777777040000000400000004000000000010000000000000000000000000000000000000000000000000010
00000000000000008242525252528452339200001323232352232323232352230000000000000000b302000013232352526200a2828342525223232323232323
00000000000000a20182920013232352363636462535353545550000005525355284525262b20000000000004252525262828282425284525252845252525252
00000000000085868242845252525252b1006100b1b1b1b103b1b1b1b1b103b100000000000000111102000000a282425233000000a213233300009200008392
000000000000110000a2000000a28213000000002636363646550000005525355252528462b2a300000000004252845262828382132323232323232352528452
000000000000a201825757243434344400000000000000003500000000003500000000000000b327374700410000015637b2000000000000000000000000a200
0000000000b357b2002100000000a282000000000000000000560000005526365555555656b28292001111575555555555019200829200000000a28237373737
0000000000000000a2828225353535450000000000000000b10000000000b1000000000000000000b3273747930000b137273737373737373737374711000061
000000110000b100b357b20000006182000000000000000000000000005600005555468282828201a35555555555555555820000a20011111100008283373737
0000000000000093a382822535353545000061000011000000000011000000001100000000000000000000560182001137373737373737373737373737b20000
0000b357b200000000b10000000000a200000000000000009300000000000000555582828283828282565656555555555592000000112434440000a282373737
00000000000000a2828382253535354500000000b335b2936100b335b20061005493a30000000000000000b1a282935437373737373737373737373737b20000
000000b10000001100000000000000000000000093000086820000a3000000005555828201a200a282829200565656565511111111243535450000b337373737
00000000000000008282822636363646820000a300b1a382930000b100000000568283931100000000000011a382825637373737373737829200a20137b20061
000000000000b357b2000061000000000000a385828286828282828293000000555583829200000000a20000000000005555555555263636460000b337373737
00000011111111a3828201b1b1b1b1b182938282930082820000000000000000b100a282541100000000b354828283b137373737373737610000869200000000
00100000000000b1000000000000000086938282828201920000a20182a37686555582829300000000000000000000005555555555558283920000b337373737
00008624442444828382829300000000828282828283829200000000000061001100a382565400000000b356a2829211373737378382a2000000a20000000000
00571111111111111111111111110061828282a28382820000000000828282825555829200000000000000000000000055555555555501a2000000b337373737
00000126462545373737374700000000828300a282828201939300001100000054828292b1559300000000b100a282543737373792000000000000a300000000
0027373737373737373737373757b2008282920082829200061600a3828382a25555000000000000000000000000000055555555555592000011111137373737
0000a28282264655b1b1b1b1000000009200000000a28282828293b354b2000056820100115582a3000000110082825637103737610000000000008293000000
0057828382828257828282828254b20083820000a282d3000717f38282920000555500000000000093000000000000005555555555550000b337373737373737
000000828392b35500000000002100000000000000000082828282b355b20000b1a282835455820193000054a38292b137710000000000009300008382000000
00b1a282820182b1a28283a28256b20054829300008224343434344482000054565600000000000082920000000000005656565656560000b337373737373737
000000a28200b35600000000a35400000010000000111111118283b356b200a30000828256559200828300568283001137930000000000008200008282920000
0000009261a28200008261008282000055920000005725353535354582243434000000000000000082000085860000008382829200000000b337373737373737
0000100082000082000000a2825500003535351111273737470182829200008300009200b1550000a28200008282005437829200000000a38292008282000000
00858600008282a3828293008292610055001000002535353535353544253535000000f3100000a3820000a2010000008292000000009300b337373737373737
5700243444b200839321008683559300353535353535c000a28282820000a38210000000a3568000008293008292005637820000000000828300a38201000000
00a282828292a2828283828282000000343434344425353535353535452535350000005454000083829300008200c1008210d3e300a38200b337373737373737
2444253545b28682825482820155820035353535353500000082829200008282540000008382930000a28201820000b137839300000000828200828282930000
0000008382000000a28201820000000035353535452535353535353545253535000000552444008282820000829300005454545401828393b337373737373737
525252525262b2b1b1b1132323526200845223232323232352522323233382825252525252525252525284522333b2822323232323526282820000b342525252
52845252525252848452525262838242528452522333828292425223232352520000000000000000000000000000000000000000000000000000000000000000
525252845262b2000000b1b1b142620023338276000000824233b2a282018283525252845252232323235262b1b10083921000a382426283920000b342232323
2323232323232323232323526201821352522333b1b1018241133383828242840000000000000000000000000000000000000000000000000000000000000000
555555555555b20000000000a255557682828392000011a256b200a382549200243434344456b1b1b1b12646000000823737374782373782410000b33782a2a2
a1829200a2828382820182244400a2832444b1b10000832444b2000080012444000000000000a300000000000000000000000000000000000000000000000000
555555555555b20000001100825555928201a20000b3540092000000835500002535353545b200000000b3550000a382828283838237373737b200b337928000
000100110092a2829211a2264600a3822545b2000000a22646b20000868225450000000000000100009300000000000000000000000000000000000000000000
373737373755b200a37655b2a25555838292000000b35500000000a3825500002535353545b200000000b355829300a2838292019237373737b2000000000000
00a2b357b2a36182b357b200110000822545b200000000b1b10000a283a2254500000000a30082000083000000000000000000000094a4b4c4d4e4f400000000
373737373755b200a28355b2215555928300000000b3550000000000a255e3412535353545b200000000b35592000000829200000037373737b2000000000000
000000b100a2828200b100b357b211a22545b200000000000000000092b32545000000008276820000010093000000000000000000b595f5c5d5e5f500000000
373737373755b221008255b2715656008293858693b3551111111111115524442535353545b200001100b355b2000000821111111137373737b2000000000000
000000000000110176851100b1b3576126461111111100000061000000b32646000000008283826777827682000000000000000000e696f6c6d6e6f600000000
82000000a255115400a255b200010193828283825737373737373737374625452535353545b200b35400b355b2000000823737373737373737b2000011000000
0000000000b35782828354b26100b100373737373737b200000000000000b15500000000a282a3555593839200000000000000000097a7b7c7d7e7f700000000
9200110000565655b2002637373737379200a2000001828282829200b33425452636363646b261b35500b3550000000092b1b1b1b1b1b33737b200b337b20000
001100000000b1a2828256b200000000373737373737b200001111000000b355000000868382555555558293a300000000000000002737472737473500000000
00b354b200a28355b2000000a28293b3000000000000a2828382827655552545b1b1b1b156b200b35593b35561000000000000000000b33737b271b337b20000
b357b211000000110092b100000000a3b1b1b1b1b1b10011112444110000b355000000a28255555555555555838600000000000000b1b1b1b1b1b10000000000
80b355b20000825511111111008283b311111111110000829200928255552545000000a3820000b35582b35600000000000000000000b3373711111137b20000
00b1b357b200b354b200000000000082b21000000000b32434353646b200b3568585868292555555555555558282860000000000000000000000000000000000
00b356b20000a25656565656008292b35555555555111157b20000a25555254500000001839200b3558282820000000011111111930011373737373737b20000
100000b10000b355b200000000858682b27100000000b3253546b1b1000000b182018283005555555555555500a2820000000000000000000000000000000000
9300b100000000b1b1b1b1b100a200b355555555555555b100000000b1b1264500000000820000b35582839200000000373737378283373737373737b2000000
549300000000b356b200000000a20182111111110000b32646b100a30061000000a28293f3555555555555550000820000000000000000000000000000000000
829200001000410000000000000000b39310d30000a28200000000000000824500000086827600b35500a282760000003737373700828200a30182a2006100a3
55820000000000b100000093a382838224343444b20000b1b1000083000000860000555555555555555555551111111100000000000000000000000000000000
017685a35555551111111111002100b355555593000182930000000080a301461000a383829200b356000083920000003737373700a282828283920000000082
55839321000000000000a3828282820125353545b261000093000082a300a3821000555555555555555555555555555500000000000000000000000000000000
828382825555555555555555007100b355555582a38283820000000000838282320001828200000083000082010000003737373771718283820000000000a382
558201549300000000a282828382828225353545b20000a38300a382018283825555555555555555555555555555555500000000000000000000000000000000
__label__
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000f000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000770000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000770000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f00000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000f00000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000
00000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000070000000000000000006000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000f00000000000060600000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000d000600000000000000660000000000000000000000000000000f0000000000000
0000000000000000000000000000000000000000000000000000000000000d00000c00f000000000066000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000d000000c000000000000000000000000000000000000000000000000060000000000
00000000000000000000000000000000000000000000000000000000000c0000000c000600000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000d000000000c060d0000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000c00000000000d000d000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000006666600666666006600c00066666600066666006666660066666600000000000000000000000000000000000000
0000000000000000000000000000000000006666666066666660660c000066666660666666606666666066666660000000000000000000000000000000000000
00000000000000000000000000000000000066000660660000006600000066000000660000000066000066000000000000000000000000000000000000000000
000000000000000000000000000000000000dd000000dddd0000dd000000dddd0000ddddddd000dd0000dddd0000000000000000000000000000000000000000
000000000000000000000000000000000000dd000dd0dd000000dd0000d0dd000000000000d000dd0000dd000000000000000000000000000000000000000000
000000000000000000000000000000000000ddddddd0dddddd00ddddddd0dddddd00ddddddd000dd0000dddddd00000000000000000000000000000000000000
0000000000000000000000000000000000000ddddd00ddddddd0ddddddd0ddddddd00ddddd0000dd0000ddddddd000000f000000000000000f00000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000c000000000000000000000000000000c00000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000c00000000000000000000000000000000c0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000cc0000000000000000000000000000000000c000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000c000000000000000000000000000000000000c000000000000000000000000000000000000000000000
0000000000000000000000000000f0f0f0f0f0f0f0f0c0f00000000000000000000000000000000000c000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000100000000000000000000000000000000000000c00c000000000000000000000000000000000000000000
000000000000000000000000000000000000000000c0000000000000000000000000000000000000001010c0f000000000000000000000000000000000000000
000000000000000000000000000000000000000001000000000000000000000000000000000000000001000c00000000000000000000000000000000f0f0f0f0
00000000000000000000000000000000000000000100000000000000000000000000000000000000000000010000000600000000000000000000000000000000
000000000000000000000000000000000000000001000000000000000000000000000000000000000000000010000000000000f000f000f000f000f000f00000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000010000000000000000000000000000000000000000000000000010000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000f0000000f00000000000f00000000000f0f0f000f00000000000f0000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000f0f00000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000f000f0000000f000f000f000f000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000f000f000f000f0000000f000f0000000000000000000000000
00f000f000f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000005050000005500000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000005050050050006000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000500555050000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000005050050050000000000000600000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000005050000005500000000000f00000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000
0000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000000000000000000000000f000000
00000000000000000000000f000000000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000
000000f000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000000000000
00f000f000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000007f0000000006600000000000000000f0000000000000000000f000f0000000000000000
00000000000000000f00000000000000000000000000000000000000000000000000660000000000000000000000000000000000000000000000000000000000
0000000000000000000000000f00000000000000000000000f00000f000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000f00000000000000000000000000000000000000000000000000000f000f0000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000f0000000000000555055505550555000f0555050500550555005500550550000000000000000000000000000000000000000
00000000000f000000000000000000000000f0000055505050050005000000050050505050505050005050505000000000000000000000000000000000000000
00000000000000000000000000000000000000000050505550050005000000050055505050550055505050505000000000000000000000000000000000000000
0000000000000000000000f00000000000000000005050505005000500000005005050505050500050505050500000000000000000000000000f0000f0000000
00000000000000000000000000000000000000000050505050050005000000050f50505500505055005500505000000000000000000000000000000000000000
00000000000000000000000000f00000000000000000000f0000000000000000000000000000000000000000000000000000000f000000000000000000000000
00000000000000000000000000000000000f00000000605500055055505000f00055505550555055505050000000000000000000000000000000000000000000
000000000000000000000000000000000000000f000000505050505000500000005050500050505050505000000000000000000000000000000000000000f000
00000000000000000000000000000000000000000000005050505055005000000055005500550055005550000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000005050505050005000000050505000505050500050000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000f0505055005550555000005550555050505f505550000000000000000000000000000000000000000000
00000000000000000000000000000000000000f00000000000000000000000f0000000000000000000000000000000000000f000000000000000000000000000
0000000000000000f000000000f0000000000000f0f0f0f000f0f0f0f0f000000000000000000000000000000000000000000000000000000f00000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000f000000000
000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f00000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000
000000000006000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000f000000000000000000000000600000000000000000000000000000000000000000
00000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000f000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000f0000000000000000000000000000000000000000000000000f00000000f00000000000000000000000000000000000
00000f00000f0000000f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000f0000000000000000000
0f0000000000000000000000000000000000000f00000000000f000000f000000000000000000000000000000000000000000000000000000000000000000000
00000000000000f0000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000f000000000000000f0000000000000f00000000000000000000000000000000000000000000000000000000f
0000000000000000f00000000000000000f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000f00000000000000f00000000000000000000000000000000000000000000000f0f0000000000000000000000000
00000000000000000000000000f000f00f0f00f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

__gff__
0000000000000000000000000000000004020000000000000000000200000000030303030303030304040402020000000303030303030303040404020202020200001313131302020302020202020002000013131313020204020202020202020000131313130004040202020202020200001313131300000002020202020202
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__map__
2331252548252532323232323300002425262425252631323232252628282824252525252525323328382828312525253232323233000000313232323232323232330000002432323233313232322525252525482525252525252526282824252548252525262828282824254825252526282828283132323225482525252525
252331323232332900002829000000242526313232332828002824262a102824254825252526002a2828292810244825282828290000000028282900000000002810000000372829000000002a2831482525252525482525323232332828242525254825323338282a283132252548252628382828282a2a2831323232322525
252523201028380000002a0000003d24737373731028292900284545003a387555555555555500002900002a0065555528382900003a676838280000000000003828393e003a280000000000002800555353535353535353535353532828535355556565294a4a4a00004a2a6565555553282828282900002a28282838285353
3232330828282900000000003f7272727373732828290000002a556500002a7555555555550000000000000000006555290000000045454528280000000000002a2828555555290000000000002839555353535353535353535353532828535355552b000000000000001c00003b555553282828000000000028282828285353
7373283828293a28390000007272727273737329000000000000550000000075651b6555553d3f00000000000000006500001c3a3a65656575283900000000000010282828290000000011113a2828555353535353105353532828282838535355552b000000000000000000003b5555532a2828670016002a28283828285353
7311111128102829000000000000727273424200000000110000650000003e751b001b65454545000000000000000000395868282828656528290000000000002a2828290000000000005555283828292828535353282829002a002a2828535355652b0c00000011110000000c3b655553112810000000006828282828285353
737373731728280000000000003a287273003d003a393b452b00000000007573001a001b55555511111111000000002c28382828283855552800000017170000002a000000001111000055551028290028281b1b1b282800002800002a53535355294a0000003b53532b000000002a55535328283a67003a28282829002a5353
73733828282900000000000000283872737373451029005539000000005875730000003a72737373737374675800003c282828281028555529000000000000000000000000005555003a5555282800003828390000002a290000000000535353554a4a000000004a4a4a000000004a5553532828283800282828390000001700
7300002a28000000003a283a2828117273737365283900552858390068287573000000282828282872742828283945452829002a28285555000000000000000000000000000055382828555555000000282828290028282800163a676828280065674a0b00492828282800000b00006553282828282868282828280000001700
730000002867580000281028287272727373736528286755282828382828757300003a28382810291b1b2a28382855552a0000002838555500000017170000000000000000005528282a285555390000282900000000280000002a2828282900294a4a00492828284a4a28000000002a28282838282828282828290000000000
0000003a28283800112828283828727273737365002a285529002a28287573730000002a282828000000002810285555000000002a285555000000000000000000000000000055280000002a2828390028000000392828000028000028280000004a4a00002a494a4a00002a2a0000002a282828281028282828675800000000
0000004647282817552800002a28727273737365003a2855000000002a28287500000000002a281111111128282855550000003a28286565000000000000171700013f0000005529000000003828000028013a28282828580000003a28290000004a4a0c002a2a2a4a0c00002a28000c00002a2828282828292828290000003a
0001105657282a555529001111117272002873653a382955001a000000002a750000000000002872737374292a0055553e013a3828292a00000000000000000055555555000055000000003d2a28671453535328282828283900582838283d00004a4a000000492a2a00000000002a0000002a28282a29000058100012002a28
55555555551400555511117272727272002a3865282900551111110000003a2800013f0000002a285555290000005555737373742900000000000000171700002a285539003a5500003a005555555555535353535353532828282810282853530b4a292a00000b4a2a0028000b0000002c00002838000000002a283917000028
5555555555551155555572727272727200012a2828673f757575750000003828727374000012002a55550000001255557373737400000000171700000000000000385528392855080028676855282828535353535353532a28285353535353534a29012a0000002828280000000028003c0168282800171717003a2800003a28
55555555555555555555727272727272727373737373737573737467586828285555550000450000555500000045656573737374171700000000000000000000002a5528102855003a282828552828285353535353535300002a5353535353534a5353534a4a4a4a4a2828284a284a4a53535353286700000000282839002838
2532330000002432323232323232252525252628282828242532323232254825253232323232323225262828282448252525253300000000000000000000005225253232323233313232323233282900262829286700000000002828313232322525253233282800312525482525254825254826283828313232323232322548
26282800000030402a282828282824252548262838282831333828290031322526280000163a28283133282838242525482526000000000000000000000000522526000016000000002a10282838390026281a3820393d000000002a3828282825252628282829003b2425323232323232323233282828282828102828203125
6528390000006500002a3828002a5555737373282828287528292a0000002a656528111611282828000028002a535353535353000000000000000000000000535555000000001111000000292a28290055283a2875107511111155555528281073737328382800003b73732b002a2a38282828282829002a2800282838282862
28281029000000000000282839005555737373282900287567000000000000003810555555283829003a1029002a535353535367000000000000000000005353555539000000454500000000007373735555555555555555555555555528282873737328282800003b73732b00000028102829000000000029002a2828282900
2828280016000000162a2828280055557373734500002a7529000000000000002872737374292a0000002a00111153535353282800002c46472c00000053535355552800003a555500001600007373735555555555555555555555555575283873737328292867000028290000000000283800111100001200000028292a1600
283828000000000000003a28290055557373736500000029000000000000003a293b5555283900000000003b535353535353382867003c56573c5353535353536565283900285565111111111173737355555555751b1b1b1b1b55555528282873737300002a28143a2900000000000028293b42440000170000112867000000
2828286758000000586828380000656573737375000000000000000000452828003b5555290000000000003b535353535353282828395353535353535353000029002a28382872737373737373737373555555555500000000005555552810287373731111117573751111111100000000003b6264111111111145282900003b
2828282810290000002a28286700002873737375111100000000000011552838003b6565000000000000002a28535353532a282810285353535353535353000000160028282829000000000073737373555555555567580000007500002a28287373737373737373737373737439000000003b72737373737374553800000017
282900002a0000000000382a29003a282828287575750000000000007555282800002a29000011110000000028282853530029002a285353535353000000000039003a282900000000000000002873735555555555382900000017000058682873731028293b7373737373282828000000003b751b1b1b1b1b1b552800000017
283a0000000000000000280000002828283810292a000000000000002a6510281111111111115353000000002a28380b5300000000535353535353001c0000002828281000000000001100002a382829555555555528000000001700002a424328282908003b737373737328282912000000001b00000000000055290000003b
3829000000000000003a102900002838282828000000000000000000002a2828535353535353530000000000002828395300000000535353535353000000000028382829000000003b752b00682828005555555555290000000000000000625328280000003b7373737373382800170000000000000000110000650000000000
290000000000000000002a000000282928292a0000000000000000000000282a532838282829000000000000001028280000000053535353535328390000000028002a0000110000001b002a7510292c1b1b1b1b0000000000000000000010622829160000001b1b1b737328106700000000001100003a4500001b0000000000
00000100000011111100000000002a3a2a0000000000000000000000002a2800282829002a000000000000000028282800000000535353535353282800000000290000003b752b39000000002900003c000000000000000000000000000028282800000000000000001b1b2a2829000001000045390038550000000000000000
1111431111114573450000001212002a00010000000000000000000000002900290000000000000000002a6768282900003f01005353535353532810673a3900013f0000002a3829001100000000007301000000000000003a67000000002a382867586800000100000000682800000042440055282928550000000000000000
53535353535373737311111175751111004539000017170000001717000000000001000000001717000000282838393a0053535353535353535328282838290073732b00000828393b73000000001473450000001200000028290000000000282828102867001717171717282839000062643955101228550000000000000000
636363636363657365727373737373733a553800000000000000000000000000001717000000000000003a28282828280053535353535353532828282828283973732b00003a28103b73000000737373550000004500003a28000000000000282838282828390000005868283828000042443855281728550000000000000000
__sfx__
0002000036370234702f3701d4702a37017470273701347023370114701e3700e4701a3600c46016350084401233005420196001960019600196003f6003f6003f6003f6003f6003f6003f6003f6003f6003f600
0002000011070130701a0702407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000300000d07010070160702207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000200000642008420094200b420224402a4503c6503b6503b6503965036650326502d6502865024640216401d6401a64016630116300e6300b62007620056100361010600106000060000600006000060000600
000400000f0701e070120702207017070260701b0602c060210503105027040360402b0303a030300203e02035010000000000000000000000000000000000000000000000000000000000000000000000000000
000300000977009770097600975008740077300672005715357003470034700347003470034700347003570035700357003570035700347003470034700337003370033700337000070000700007000070000700
00030000241700e1702d1701617034170201603b160281503f1402f120281101d1101011003110001000010000100001000010000100001000010000100001000010000100001000010000100001000010000100
00020000101101211014110161101a120201202613032140321403410000100001000010000100001000010000100001000010000100001000010000100001000010000100001000010000100001000010000100
00030000070700a0700e0701007016070220702f0702f0602c0602c0502f0502f0402c0402c0302f0202f0102c000000000000000000000000000000000000000000000000000000000000000000000000000000
0003000005110071303f6403f6403f6303f6203f6103f6153f6003f6003f600006000060000600006000060000600006000060000600006000060000600006000060000600006000060000600006000060000600
011000200177500605017750170523655017750160500605017750060501705076052365500605017750060501775017050177500605236550177501605006050177500605256050160523655256050177523655
002000001d0401d0401d0301d020180401804018030180201b0301b02022040220461f0351f03016040160401d0401d0401d002130611803018030180021f061240502202016040130201d0401b0221804018040
00100000070700706007050110000707007060030510f0700a0700a0600a0500a0000a0700a0600505005040030700306003000030500c0700c0601105016070160600f071050500a07005050030510a0700a060
000400000c5501c5601057023570195702c5702157037570285703b5702c5703e560315503e540315303e530315203f520315203f520315103f510315103f510315103f510315103f50000500005000050000500
000400002f7402b760267701d7701577015770197701c750177300170015700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700
00030000096450e655066550a6550d6550565511655076550c655046550965511645086350d615006050060500605006050060500605006050060500605006050060500605006050060500605006050060500605
011000001f37518375273752730027300243001d300263002a3001c30019300003000030000300003000030000300003000030000300003000030000300003000030000300003000030000300003000030000300
011000002953429554295741d540225702256018570185701856018500185701856000500165701657216562275142753427554275741f5701f5601f500135201b55135530305602454029570295602257022560
011000200a0700a0500f0710f0500a0600a040110701105007000070001107011050070600704000000000000a0700a0500f0700f0500a0600a0401307113050000000000013070130500f0700f0500000000000
002000002204022030220201b0112404024030270501f0202b0402202027050220202904029030290201601022040220302b0401b030240422403227040180301d0401d0301f0521f0421f0301d0211d0401d030
0108002001770017753f6253b6003c6003b6003f6253160023650236553c600000003f62500000017750170001770017753f6003f6003f625000003f62500000236502365500000000003f625000000000000000
002000200a1400a1300a1201113011120111101b1401b13018152181421813213140131401313013120131100f1400f1300f12011130111201111016142161321315013140131301312013110131101311013100
001000202e750377502e730377302e720377202e71037710227502b750227302b7301d750247501d730247301f750277501f730277301f7202772029750307502973030730297203072029710307102971030710
000600001877035770357703576035750357403573035720357103570000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700
001800202945035710294403571029430377102942037710224503571022440274503c710274403c710274202e450357102e440357102e430377102e420377102e410244402b45035710294503c710294403c710
0018002005570055700557005570055700000005570075700a5700a5700a570000000a570000000a5700357005570055700557000000055700557005570000000a570075700c5700c5700f570000000a57007570
010c00103b6352e6003b625000003b61500000000003360033640336303362033610336103f6003f6150000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000c002024450307102b4503071024440307002b44037700244203a7102b4203a71024410357102b410357101d45033710244503c7101d4403771024440337001d42035700244202e7101d4102e7102441037700
011800200c5700c5600c550000001157011560115500c5000c5700c5600f5710f56013570135600a5700a5600c5700c5600c550000000f5700f5600f550000000a5700a5600a5500f50011570115600a5700a560
001800200c5700c5600c55000000115701156011550000000c5700c5600f5710f56013570135600f5700f5600c5700c5700c5600c5600c5500c5300c5000c5000c5000a5000a5000a50011500115000a5000a500
000c0020247712477024762247523a0103a010187523a0103501035010187523501018750370003700037000227712277222762227001f7711f7721f762247002277122772227620070027771277722776200700
000c0020247712477024762247523a0103a010187503a01035010350101875035010187501870018700007001f7711f7701f7621f7521870000700187511b7002277122770227622275237012370123701237002
000c0000247712477024772247722476224752247422473224722247120070000700007000070000700007002e0002e0002e0102e010350103501033011330102b0102b0102b0102b00030010300123001230012
000c00200c3320c3320c3220c3220c3120c3120c3120c3020c3320c3320c3220c3220c3120c3120c3120c30207332073320732207322073120731207312073020a3320a3320a3220a3220a3120a3120a3120a302
000c00000c3300c3300c3200c3200c3100c3100c3103a0000c3300c3300c3200c3200c3100c3100c3103f0000a3300a3201333013320073300732007310113000a3300a3200a3103c0000f3300f3200f3103a000
00040000336251a605000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005
000c00000c3300c3300c3300c3200c3200c3200c3100c3100c3100c31000000000000000000000000000000000000000000000000000000000000000000000000a3000a3000a3000a3000a3310a3300332103320
001000000c3500c3400c3300c3200f3500f3400f3300f320183501834013350133401835013350163401d36022370223702236022350223402232013300133001830018300133001330016300163001d3001d300
000c0000242752b27530275242652b26530265242552b25530255242452b24530245242352b23530235242252b22530225242152b21530215242052b20530205242052b205302053a2052e205002050020500205
001000102f65501075010753f615010753f6152f65501075010753f615010753f6152f6553f615010753f61500005000050000500005000050000500005000050000500005000050000500005000050000500005
0010000016270162701f2711f2701f2701f270182711827013271132701d2711d270162711627016270162701b2711b2701b2701b270000001b200000001b2000000000000000000000000000000000000000000
00080020245753057524545305451b565275651f5752b5751f5452b5451f5352b5351f5252b5251f5152b5151b575275751b545275451b535275351d575295751d545295451d535295351f5752b5751f5452b545
002000200c2650c2650c2550c2550c2450c2450c2350a2310f2650f2650f2550f2550f2450f2450f2351623113265132651325513255132451324513235132351322507240162701326113250132420f2600f250
00100000072750726507255072450f2650f2550c2750c2650c2550c2450c2350c22507275072650725507245072750726507255072450c2650c25511275112651125511245132651325516275162651625516245
000800201f5702b5701f5402b54018550245501b570275701b540275401857024570185402454018530245301b570275701b540275401d530295301d520295201f5702b5701f5402b5401f5302b5301b55027550
00100020112751126511255112451326513255182751826518255182451d2651d2550f2651824513275162550f2750f2650f2550f2451126511255162751626516255162451b2651b255222751f2451826513235
00100010010752f655010753f6152f6553f615010753f615010753f6152f655010752f6553f615010753f61500005000050000500005000050000500005000050000500005000050000500005000050000500005
001000100107501075010753f6152f6553f6153f61501075010753f615010753f6152f6553f6152f6553f61500005000050000500005000050000500005000050000500005000050000500005000050000500005
002000002904029040290302b031290242b021290142b01133044300412e0442e03030044300302b0412b0302e0442e0402e030300312e024300212e024300212b0442e0412b0342e0212b0442b0402903129022
000800202451524515245252452524535245352454524545245552455524565245652457500505245750050524565005052456500505245550050524555005052454500505245350050524525005052451500505
000800201f5151f5151f5251f5251f5351f5351f5451f5451f5551f5551f5651f5651f575000051f575000051f565000051f565000051f555000051f555000051f545000051f535000051f525000051f51500005
000500000373005731077410c741137511b7612437030371275702e5712437030371275702e5712436030361275602e5612435030351275502e5512434030341275402e5412433030331275202e5212431030311
002000200c2750c2650c2550c2450c2350a2650a2550a2450f2750f2650f2550f2450f2350c2650c2550c2450c2750c2650c2550c2450c2350a2650a2550a2450f2750f2650f2550f2450f235112651125511245
002000001327513265132551324513235112651125511245162751626516255162451623513265132551324513275132651325513245132350f2650f2550f2450c25011231162650f24516272162520c2700c255
000300001f3302b33022530295301f3202b32022520295201f3102b31022510295101f3002b300225002950000000000000000000000000000000000000000000000000000000000000000000000000000000000
000b00002935500300293453037030360303551330524300243050030013305243002430500300003002430024305003000030000300003000030000300003000030000300003000030000300003000030000300
001000003c5753c5453c5353c5253c5153c51537555375453a5753a5553a5453a5353a5253a5253a5153a51535575355553554535545355353553535525355253551535515335753355533545335353352533515
00100000355753555535545355353552535525355153551537555375353357533555335453353533525335253a5753a5453a5353a5253a5153a51533575335553354533545335353353533525335253351533515
001000200c0600c0300c0500c0300c0500c0300c0100c0000c0600c0300c0500c0300c0500c0300c0100f0001106011030110501103011010110000a0600a0300a0500a0300a0500a0300a0500a0300a01000000
001000000506005030050500503005010050000706007030070500703007010000000f0600f0300f010000000c0600c0300c0500c0300c0500c0300c0500c0300c0500c0300c010000000c0600c0300c0100c000
0010000003625246150060503615246251b61522625036150060503615116253361522625006051d6250a61537625186152e6251d615006053761537625186152e6251d61511625036150060503615246251d615
00100020326103261032610326103161031610306102e6102a610256101b610136100f6100d6100c6100c6100c6100c6100c6100f610146101d610246102a6102e61030610316103361033610346103461034610
00400000302453020530235332252b23530205302253020530205302253020530205302153020530205302152b2452b2052b23527225292352b2052b2252b2052b2052b2252b2052b2052b2152b2052b2052b215
__music__
01 150a5644
00 0a160c44
00 0a160c44
00 0a0b0c44
00 14131244
00 0a160c44
00 0a160c44
02 0a111244
00 41424344
00 41424344
01 18191a44
00 18191a44
00 1c1b1a44
00 1d1b1a44
00 1f211a44
00 1f1a2144
00 1e1a2244
02 201a2444
00 41424344
00 41424344
01 2a272944
00 2a272944
00 2f2b2944
00 2f2b2c44
00 2f2b2944
00 2f2b2c44
00 2e2d3044
00 34312744
02 35322744
00 41424344
01 3d7e4344
00 3d7e4344
00 3d4a4344
02 3d3e4344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
01 383a3c44
02 393b3c44
P#108199 2022-03-07 20:17 ( Edited 2022-03-07 22:08)

It is not presenting itself correctly here, @loadandcode.

Repaste using [zcodez] in front of your code and [z/codez] at the end of the code. Do not type the "z" chars for those definitions.

Example:

Normal Text

Coded text
P#108200 2022-03-07 20:26

I tried doing that but it did not work. Where should I put the [z/codez] and the [zcodez] ?

P#108202 2022-03-07 21:26
3

@loadandcode:

Here, let me take a picture.

enter in the program here
P#108204 2022-03-07 21:57 ( Edited 2022-03-07 22:17)
like this?
P#108205 2022-03-07 22:07

@dw817 Ok I fixed it

P#108206 2022-03-07 22:08 ( Edited 2022-03-07 22:10)
2

Well done, @loadandcode. Here is your cart.

Cart #celeste_mod_by_loadandcode-0 | 2022-03-07 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
3

To post it for your top message, type these exact characters:

P#108208 2022-03-07 22:17 ( Edited 2022-03-07 22:19)

omg thx

P#108211 2022-03-07 22:31

Glad to help, @loadandcode. And yes, your new post HERE:

https://www.lexaloffle.com/bbs/?tid=46894

Appears just fine. Welcome aboard.

P#108217 2022-03-08 00:06

[Please log in to post a comment]

Follow Lexaloffle:          
Generated 2024-03-28 16:14:22 | 0.053s | Q:26