pico-8 cartridge // http://www.pico-8.com version 41 __lua__ -- #include sprites.lua function _init() -- global initialization palt(11, true) palt(0, false) -- start first scene --start_level(1) start_scene("explainer") end function _update() if _scene and _scene.update then _scene.update() end end function _draw() if _scene and _scene.draw then _scene.draw() end end function start_scene(name) _scene = _scenes[name] _scene_start = time() if _scene.start then _scene.start() end end function scene_time() return time() - _scene_start end function draw_title() cls(2) if scene_time() < 2 then fillp(0b1010010110100101) elseif scene_time() < 4 then fillp(0b1010110110101101) end --rectfill(0, 0, 128, 128, 9) fillp(0) print("THE", 10, 0, 6) print("\^w\^tboy", 10, 8, 11) print("WHO", 10, 24, 6) print("\^w\^tbecame", 10, 32, 11) print("A", 10, 48, 6) print("\^w\^tbomb", 10, 56, 11) for n=7,0,-1 do if scene_time() > n then sspr(16*n, 16, 16, 16, n*14, 90-((1.5*n)*(1.5*n)), 32+n*2, 32+n*2) end end end function update_title() if scene_time() > 15 or btnp(4) then start_level(1) end end function draw_dusk() cls() fillp(0b1010010110100101) rectfill(0, 0, 128, 12, 2) fillp(0) rectfill(0, 12, 128, 64, 2) -- trick: make other fill transparent fillp(0b1010010110100101.1) rectfill(0, 50, 128, 60, 9) fillp(0) end function draw_explainer() draw_dusk() map(0, 0, 0, 16, 16, 8) local st = scene_time() local bcolors = {8, 9, 10} local bcolor = bcolors[flr(5*t()%3)+1] if st < 1 then print("3", 80, 25, 7) elseif st < 2 then print("2", 80, 25, 7) elseif st < 3 then print("1", 80, 25, 7) elseif st < 4 then print("WATCH OUT!", 40, 15, 7) end print("in 1978, frank a. boyman was \n involved in an accident.", 10, 80, 7) if st > 4 then print("\nas a bystander of a \n failed nasa experiment") end if st > 7 then print("he became...", 20, 118) end if st > 10 then print("a bomb", 70, 118, bcolor) end if st > 15 or btnp(4) then start_scene("title") end if st > 3 and st < 6 then draw_beam() end draw_sprite(exp_spr) end function draw_beam() -- only lime thing palt(11, false) local x=30 local y=66 line(x, 0, x, y, 11) local v = 9*t() % 3 oval(x-(3+v), y-(2+v), x+4+v, y+2+v, 11) palt(11, true) --oval(x-(6+v), y-(4+v), x+6+v, y+4+v, 11) end function update_explainer() update_sprite(exp_spr) local st = scene_time() if exp_phase == "boy" and exp_spr.x >= 20 then exp_spr.x = 20 exp_spr.vx = 0 exp_spr.speed = 0 end if exp_phase == "boy" and st > 5 then exp_spr = make_sprite(20, exp_spr.y, "boy_bomb", 0.4) exp_phase = "boy_bomb" end if exp_phase == "boy_bomb" and st > 9 then exp_spr = make_sprite(20, exp_spr.y+8, "bomb_s", 0.1) exp_phase = "bomb_s" end if exp_phase == "bomb_s" and st > 11 then exp_spr = make_sprite(20, exp_spr.y-8, "bomb_m", 0.1) exp_phase = "bomb_m" end end function start_explainer() exp_spr = make_sprite(-10, 50, "boy_walk", 0.2) exp_spr.loop = true exp_spr.vx = .3 exp_spr.vy = .02 exp_phase = "boy" end levels = { {name="lobby", mapx=16, mapy=8, bomb_x=6, bomb_y=7}, {name="lab", mapx=26, mapy=8, bomb_x=6, bomb_y=7}, } function start_level(n) start_scene("level") last_gravity = t() exploding = false level = levels[n] puzzle_grid = {} for y=1,GRID_H do puzzle_grid[y] = {0, 0, 0, 0, 0, 0, 0, 0} for x=1,GRID_W do puzzle_grid[y][x] = mget(x+level.mapx-1, y+level.mapy-1) end end bomb_x = level.bomb_x bomb_y = level.bomb_y bomb_spr = make_sprite(bomb_x*8, bomb_y*8, "bomb_s", 0) end particles = {} function add_explosion(gx, gy) sfx(0) local x = gx*8+4 local y = gy*8+4 for i=0,30 do local angle = rnd() add(particles, { x=x, y=y, vx=(rnd(1)+1)*cos(angle), vy=(rnd(1)+1)*sin(angle), age=rnd(5), }) end end function draw_explosions() for p in all(particles) do pset(p.x, p.y, p.color) end end function update_explosions() for i=#particles,1,-1 do local p = particles[i] p.x += p.vx p.y += p.vy p.age += 1 if p.age > 25 then deli(particles, i) elseif p.age > 20 then p.color = 10 elseif p.age > 15 then p.color = rnd({9, 10}) elseif p.age > 10 then p.color = 9 elseif p.age > 5 then p.color = rnd({8, 9}) else p.color = 8 end end end function draw_level() cls() -- HUD map(0, 8, 0, 0, 16, 16) for y=1,GRID_H do for x=1,GRID_W do n = puzzle_grid[y][x] if n > 0 then spr(n, x*8, y*8) end end end print(level.name, 90, 6) bomb_spr.x = bomb_x * 8 bomb_spr.y = bomb_y * 8 draw_sprite(bomb_spr) draw_explosions() end function can_move(dx, dy) local ny = bomb_y+dy local nx = bomb_x+dx if ny == 0 or ny > 8 or nx == 0 or nx > 8 then return false end if puzzle_grid[ny][nx] ~= 0 then return false end return true end function explosion_adjacent(x, y) -- called when the block next door explodes local block = puzzle_grid[y][x] if block == BOX_WOOD then puzzle_grid[y][x] = 0 elseif block == BOX_FIRE then puzzle_grid[y][x] = GRID_EXPLODE_NEXT end end function process_block(x, y) local block = puzzle_grid[y][x] if block == GRID_EXPLODE_NEXT then add_explosion(x, y) puzzle_grid[y][x] = GRID_EXPLODE elseif block == GRID_EXPLODE then if y > 1 then explosion_adjacent(x, y-1) end if y < GRID_H then explosion_adjacent(x, y+1) end if x > 1 then explosion_adjacent(x-1, y) end if x < GRID_W then explosion_adjacent(x+1, y) end puzzle_grid[y][x] = 0 end end function update_level() -- bombs break adjacent tiles -- fire boxes turn into more bombs -- goal: break all boxes -- ??? only 8 positions? -- update grid fall_speed = 0.3 if exploding then fall_speed /= 2 if bomb_spr.speed == 0 and bomb_spr.anim then bomb_spr.anim = nil puzzle_grid[bomb_y][bomb_x] = 0 end end if t() - last_gravity > fall_speed then last_gravity = t() for y=1,GRID_H do for x=1,GRID_W do process_block(x, y) -- fall down if y < GRID_H and puzzle_grid[y+1][x] == 0 and puzzle_grid[y][x] != 0 then puzzle_grid[y+1][x] = puzzle_grid[y][x] puzzle_grid[y][x] = 0 sfx(1) -- crushed, explode if y+1 == bomb_y and x == bomb_x then explode() puzzle_grid[y+1][x] = 0 end end end end end if exploding then update_sprite(bomb_spr) if bomb_spr.frame > 10 and bomb_spr.anim then add_explosion(bomb_x, bomb_y) puzzle_grid[bomb_y][bomb_x] = GRID_EXPLODE end update_explosions() -- exploding means we're done return end -- movement if btnp(⬅️) then if can_move(-1, 0) then bomb_x -= 1 elseif can_move(-1, -1) then bomb_x -= 1 bomb_y -= 1 end end if btnp(➡️) then if can_move(1, 0) then bomb_x += 1 elseif can_move(1, -1) then bomb_x += 1 bomb_y -= 1 end end if btnp(❎) then explode() end -- fall immediately while bomb_y < GRID_H and puzzle_grid[bomb_y+1][bomb_x] == 0 do bomb_y += 1 end end function explode() exploding = true explosion_time = t() bomb_spr.speed = 0.1 end -- globals _scene = nil _scenes = {} _scene_start = 0 _scenes.title = {start=nil, draw=draw_title, update=update_title} _scenes.explainer = {start=start_explainer, draw=draw_explainer, update=update_explainer} _scenes.level = {start=nil, draw=draw_level, update=update_level} GRID_W = 8 GRID_H = 9 BOX_WOOD = 137 BOX_STEEL = 138 BOX_FIRE = 139 BOX_FROG = 140 BOX_NUKE = 141 BOX_WATER = 142 GRID_EXPLODE = -1 GRID_EXPLODE_NEXT = -2 animations = { boy_walk={frames={[0]=2, 0, 4, 0}, w=2, h=2}, boy_bomb={frames={[0]=32, 34, 36, 38, 40, 42, 44, 46}, w=2, h=2}, bomb_s={frames={[0]=64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76}, w=1, h=1}, bomb_m={frames={[0]=80, 82, 84, 86, 88, 90, 92}, w=2, h=2} } -- globals __gfx__ bbbb00000bbbbbbbbbbb00000bbbbbbbbbbb00000bbbbbbbbbaaaabbbbb44bbbb999999bbb5555bbb666666bb666666bbbaaaabbbbb66bbbbbccbccbbccbbbbb bbbbffff0bbbbbbbbbbbffff0bbbbbbbbbbbffff0bbbbbbbbbfffabbbb4444bbb9ffff9bb544445b65ffff5665444456bb666abbbb6666bbbcbbcbbccbbccbbb bbbbfcfcbbbbbbbbbbbbfcfcbbbbbbbbbbbbfcfcbbbbbbbbbb0000abbb0404bb993f3f9955040455653f3f5665040456bb6666abbb8686bbbbcb66666666bcbb bbbbffffbbbbbbbbbbbbffffbbbbbbbbbbbbffffbbbbbbbbbb0f0faabb4444bb99ffff995544445565ffff5665444456bb8686aabb6666bbbbb6555555556bbb bbbbffffbbbbbbbbbbbbffffbbbbbbbbbbbbffffbbbbbbbbbbffffbbbd4444db99ffff995544445565ffff5665444456bb6666bbbd6666dbbb655eeffee556bb b5555fff555bbbbbb5555fff555bbbbbb5555fff555bbbbbb79ff97bbddd4ddb999ff999bb54455b665ff56666544566b796697bbdd66ddbb655eeeffeee556b 555557f7555bbbbb555557f7555bbbbb555557f7555bbbbb77799777dddd7dddbaaffaab22b44522b99ff99bb994499b77699677ddd66dddb65eefeffefee56b 55555777555bbbbb55555777555bbbbb55555777555bbbbb777f7777ddddddddaaaaaaaa22244222999999999999999977666677ddd66dddb65effeffeffe56b bff557775fbbbbbbbff557775fbbbbbbbff557775fbbbbbb77777777ddddddddfba5aabf42222224999599999995999977666677ddd66dddb65eeeffffeee56b bff557775fbbbbbbbff557775fffbbbbbff557775fbbbbbb77555557dddd0dd7fbaaaabf444222b49b9999b99b9999b977555556ddd66dd6b65effeffeffe56b bff551115fbbbbbbbff551115bbbbbbbbbfff1115fbbbbbb7f44444fd7ddddd4faa5aaafb2222224599599955b9599b566444446d6ddddd6b65eefeffeefe56b bbf111111bbbbbbbbbf111111bbbbbbbbbbf11111bbbbbbbbf44444bb4dd0ddbbaaaaaabb222222bb999999bbb99999bb644444bb6dddddbb655eeeffeee56bb bbb111111bbbbbbbbbb1111111bbbbbbbbb111111bbbbbbbbb44444bbbdddddbbaaaaaabb242422bb999999bb9999999bb44444bbbdddddbbb65555665556bbb bbb111b11bbbbbbbbbb111bb111bbbbbbbb111b11bbbbbbbbb44b44bbbd5b5dbbbaabaab22424222bb99b99bb999b999bb44b44bbbd5b5dbbbb666677666bbbb bbb111b11bbbbbbbbbb111bb444bbbbbbb411bb11bbbbbbbbb44b44bbb55b55bbb22b22bb99b99bbbb55b55bbb55b55bbb44b44bbb55b55bbbbbbbb66bbbbbbb bbb444b444bbbbbbbbb444bbbbbbbbbbbb44bbb444bbbbbbb555b555b555b555b222b222999b999bb555b555b555b555b555b555b555b555bbbbbbb77bbbbbbb bbbb00000bbbbbbbbbbb0000bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb bbbbffff0bbbbbbbbbbbffff0bbbbbbbbbbb0000bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb bbbbfcfcbbbbbbbbbbbbfcfcbbbbbbbbbbbbffff0bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb bbbbffffbbbbbbbbbbbbffffbbbbbbbbbbbbfcfcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb bbbbffffbbbbbbbbbbbbffffbbbbbbbbbbbbffffbbbbbbbbbbbb0006bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb b5555fff555bbbbbbb555fff55bbbbbbbbbbffffbbbbbbbbbbbb0fff6bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 555557f7555bbbbbb55557f7555bbbbbbbb55fff0bbbbbbbbbbb0cfcbbbbbbbbbbbb0066bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 55555777555bbbbbb5555777555bbbbbbb0557f750bbbbbbbbbbffffbbbbbbbbbbbb0fff0bbbbbbbbbbb0660bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb bff557775fbbbbbbbff557775fbbbbbbb0555777555bbbbbbbb05fff0bbbbbbbbbbb00fcbbbbbbbbbbbb0fff0bbbbbbbbbbb666bbbbbbbbbb66bbbbbbbbbbbbb bff557775fbbbbbbbff557775fbbbbbbbff557775fbbbbbbbb0557f750bbbbbbbbbbffff0bbbbbbbbbbb00fcbbbbbbbbbbb0000bbbbbbbbbbbb6bbbbbbbbbbbb bbfff1115fbbbbbbbbfff1115fbbbbbbbff557775fbbbbbbb055577750bbbbbbbbb05fff0bbbbbbbbbbbffff0bbbbbbbbbb000c0bbbbbbbbbb000bbbbbbbbbbb bbbf11111bbbbbbbbbbf11111bbbbbbbbbfff1115fbbbbbbbff5577750bbbbbbbb0557f750bbbbbbbbb05fff0bbbbbbbbbb00ff0bbbbbbbb0000700bbbbbbbbb bbb111111bbbbbbbbbb111111bbbbbbbbbbf11111bbbbbbbb0f557775bbbbbbbb055577750bbbbbbbb0057f750bbbbbbbb000000bbbbbbbb0000070bbbbbbbbb bbb111b11bbbbbbbbbb111b11bbbbbbbbbb111111bbbbbbbbb0ff1115bbbbbbbb0f5577000bbbbbbb005000050bbbbbbb0007f750bbbbbbb0000000bbbbbbbbb bb411bb11bbbbbbbbbb41bb11bbbbbbbbbb011b11bbbbbbbbbbf11111bbbbbbbb0f500000bbbbbbbb005000000bbbbbbb00000000bbbbbbb0000000bbbbbbbbb bb44bbb444bbbbbbbbb4bbb44bbbbbbbbbb011b40bbbbbbbbbb000000bbbbbbbbb0000000bbbbbbbb00000000bbbbbbbb00000000bbbbbbbbb000bbbbbbbbbbb b66bbbbbba6bbbbbb9abbbbbbb9bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb99bbbbbb8bbbbbb88bbb0bb88b0bbbb88bbb000000000000000000000000 bbb6bbbbbbb6bbbbbbb6bbbbbbbabbbbbbb9bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb9bbbbb888bbbbbbb8bbb8bbb8bbb8bbb8bbb8000000000000000000000000 bb000bbbbb000bbbbb000bbbbb000bbbbb000bbbbb999bbbbbb999bbbb999bbbbb999bbbbb888b00bb888b88bb888b88bb888b88000000000000000000000000 0000700b0000700b0000700b0000700b0000700b0000700bb00097000009700b0009a00b0a089aab090899aba9a899aba9a899ab000000000000000000000000 0000070b0000070b0000070b0000070b0000070b0000070bb00000700009070b00a9a70b0a989aa0998899909988999a9988999a000000000000000000000000 0000000b0000000b0000000b0000000b0000000b0000000bb00000000009000b0aa9a00ba998900b9998909b09989a9b99989a9b000000000000000000000000 0000000b0000000b0000000b0000000b0000000b0000000bb00000000000000b0000000b0aa9000b0a99090baa99a9abaa99a9ab000000000000000000000000 bb000bbbbb000bbbbb000bbbbb000bbbbb000bbbbb000bbbbbb000bbbb000bbbbb000bbbbb000bbbbb000bbb0b99abb0bb99abbb000000000000000000000000 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb8bbbbbbbbb8bbbbb8bbbbbbbbb8bbbbb8bbbbbbbbbbbbbbbbbbbbbbb0000000000000000 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb8bbbbbbbbb8bbbbb8bbbbb8bbb8bbbbbbbbbbb8bbbbbbbbbbbbbbbbbbbb0000000000000000 bbbbbbbbbbbbbbbbbbbbbbbb88bb8bbbbbbbbbbb88bb8bbbb8bbbbbbbbbb8bbbb8bbbbbbbbbbbbb8b8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000 bbbbbbbbbbbbbbbbbbbbbb8888b8bbbbbbbbbb8888b8b8bbbbbbbb88b8b8b8bbbbbbbb8bb8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000 bbbbbbbbbbbbbbbbbbbbbbb898bbbbbbbbbbbbb898bbbbbbbbbbbbb898bbbbbbbbbbbbb8bbbbbbbbbbbbbbb8bbbbbbbbbbbbbbbbbbbbbbbb0000000000000000 bbbbbbbbbbbbbbbbbbbbbbbb98bbbbbbbbbbbbbb98bbbbbbbb9bbbbbbbbbbbbbbb9bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000 bbbb8bbbbabbbbbbbbbb8bbb99bbbbbbbbbb899b99bb8bbbbbbb899b99bb8bbbbbbbbbbbb9bbbbbbbbbbbbbbb9bbbbbbbbbbbbbbbbbbbbbb0000000000000000 bbb88bbb88bbbbbb8bb88bbb99bbbbbbbbb999b999abbbbbb8b999b999abbbbbb8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000 bbbb999889bbb8bb88bb999899bbbbbbbbb99aaaa9998bbbbbb99bbbbbb98bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000 bbbb98aa9999b888b8bb99aaa999bbb8bbb99abbbaa99bb8b9b9bbbbbbb99bb8b9bbbbbbbbbbbbb8bbbbbbbbbbbbbbb8bbbbbbbbbbbbbbbb0000000000000000 899b999aa999bb98889b98aa9999bb98bb999abab9a99998bb99bbbbb9b99998bbbbbbbbbbb9b9b8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000 b88a98998abbbbbb888a99a8a9bbbbbbbb899abba9abb99bbb89bbbbbbbbb99bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000 baa998aaa99998bbb8a9998aa89998bbbba99abbaaa9989bbba99bbbbbb9989bbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000 bbb99988a9bbb88bbbb9988aa9bbb88bbbb99aaaa9bbb99bb9b99bbba9bbb99bb9bbbbbbbbbbbbbb8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000 bbb8899a9abbbb9bbbb8899a9abbbb8bbbb899999999998bbbb89bbb9999998bbbbbbbbbbbbbbbbb8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000 bbbb899abbbbbbbbbbbb899abbbbbbbbbbbb899abbbbbbbbbbbb899abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0000000000000000 77cc77ccbbbb55555555bbbbbbbbbbbb555555556b5555b65577775577cc77cc77cc77cc77cc77cc788c88cc77cc77cc7555555c000000000000000000000000 77cc77ccbbbb55555555bbbbbbbbbbbb55555555b556655b554444557444444c7555555c7555555c783c38cc7444444c55555555000000000000000000000000 cc77cc77bbbb55555555bbbbbbbbbbbb555555555555555555cc7755c4ffff47c5665657c5a78357cc333c77c438684755555555000000000000000000000000 cc77cc77bbbb55555555bbbbbbbbbbbb555555555654456555444455c4ffff47c5665657c53ea157cc733c77c438684755555555000000000000000000000000 77cc77ccbbbb55555555bbbb55555555bbbbbbbb565445655577cc557444444c7566555c75187e5c7444444c7444444c55555555000000000000000000000000 77cc77ccbbbb55555555bbbb55555555bbbbbbbb55555555b544445b74ffff4c7566555c7555555c7444444c74363f4c55555555000000000000000000000000 cc77cc77bbbb55555555bbbb55555555bbbbbbbbb556655bbbbbbbbbc4ffff47c5555557c5555557c4444447c4363f4755555555000000000000000000000000 cc77cc77bbbb55555555bbbb55555555bbbbbbbb6b5555b6bbbbbbbbc4444447cc77cc77cc77cc77cc444477c4444447c5555557000000000000000000000000 bbbbbbbbbbbbbbbbbb8888bbbbbbbbbbbbbbbbbb444bbbb4444888bbbbbbbbbb0000000044444444555555554444444455555555555555555555555500000000 bbbbbbbbbbbbbbbbb8888bbbbbbbbbbbbbbbb447774bbbb4ee44444444bbbbbb0000000044ffff4455dddd55449999445577775550aaaa055cccccc500000000 bbb88bb88bb888bb88bb5bbb888bbbbbbbb44ee747488bb777e47474448bbbbb000000004f4ff4f45d5dd5d54989989457373775500aa0055111ccc500000000 bbb888b88b88888b88888bb88888bbbbbbb844e777748b874744747e4488bbbb000000004ff44ff45dd55dd549988994577bb37550a00a05511111c500000000 bbb888888b88b88bbbbb88b88b88bbbbbbb884e74d74b887774447e44488bbbb000000004ff44ff45dd55dd549988994577bb3755aa00aa55cc1111500000000 bbb88b888b88888bb88888b88888bbbbbbb884477774b84444e77444448bbbbb000000004f4ff4f45d5dd5d549899894573737755a0000a55ccc111500000000 bbb88bb88b88b88b88885bb88b88bbbbbbb88b448b88b844444444b88bbbbbbb0000000044ffff4455dddd554499994455777755500000055cccccc500000000 bbb5bbb5bb5bbb5bbb5b5bb5bbb5bbbbbbb5bbb5bb5bbb5bbb5b5bb5bbb5bbbb0000000044444444555555554444444455555555555555555555555500000000 bb6666666666666666666666666666bbbb666666666666666666666666b5bbbb0000000000000000000000000000000000000000000000000000000000000000 bb66c6c6c6c6c6c66c6c6c6c6c6c66bbbb666666666666666666666666665bbb0000000000000000000000000000000000000000000000000000000000000000 bb66c6c6c6c6c6c66c6c6c6c6c6c66bbbb66c646c6c6c6c6646c6c6c6b6b6bbb0000000000000000000000000000000000000000000000000000000000000000 bb6666666666666666666666666666bbbb66c646c6c6c6c6646c6c6c6b6b66bb0000000000000000000000000000000000000000000000000000000000000000 bb66c6c6c6c6c6c66c6c6c6c6c6c66bbbb6666666666666666666666666666bb0000000000000000000000000000000000000000000000000000000000000000 bb66c6c6c6c6c6c66c6c6c6c6c6c66bbbb66c6c6c646c6c66c6c6c646c6c66bb0000000000000000000000000000000000000000000000000000000000000000 bb66c6c6c6c6c6c66c6c6c6c6c6c66bbbb66c6c6c646c6c66c6c6c646c6c66bb0000000000000000000000000000000000000000000000000000000000000000 bb6666666666666666666666666666bbbb66c6c6c646c6c66c6c6c646c6c66bb0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 66666666666666663333333300000000000000000000000000000000000000006666666600000000000000000000000000000000000000000000000000000000 33333333333333333333333300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 33333333335335333333333300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 33333333333533533333333300000000000000000000000000000000000000000aa00aa000000000000000000000000000000000000000000000000000000000 33333333333533533333333300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 33333333335335333333333300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 33333333353353333333333300000000000000000000000000000000000000006666666600000000000000000000000000000000000000000000000000000000 33333333353353333333333300000000000000000000000000000000000000003333333300000000000000000000000000000000000000000000000000000000 00555555555555555555550000555555555555555555550000000000000000000000000000000000000000000000000000000000000000000000000000000000 05666666666666666666665005666666666666666666665000000000000000000000000000000000000000000000000000000000000000000000000000000000 56666666666666666666666556666666666666666666666500000000000000000000000000000000000000000000000000000000000000000000000000000000 56666666555555556666666556666666555555556666666500000000000000000000000000000000000000000000000000000000000000000000000000000000 56666555776677665556666556666555000000005556666500000000000000000000000000000000000000000000000000000000000000000000000000000000 56665566776677667755666556665500000000000055666500000000000000000000000000000000000000000000000000000000000000000000000000000000 56665677667766776675666556665000000000000005666500000000000000000000000000000000000000000000000000000000000000000000000000000000 56665677667766776675666556665000000000000005666500000000000000000000000000000000000000000000000000000000000000000000000000000000 56657766776677667766566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000 56657766776677667766566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000 56656677667766776677566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000 56656677667766776677566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000 56657766776677667766566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000 56657766776677667766566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000 56656677667766776677566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000 56656677667766776677566556650000000000000000566500000000000000000000000000000000000000000000000000000000000000000000000000000000 56665766776677667765666556665000000000000005666500000000000000000000000000000000000000000000000000000000000000000000000000000000 56665766776677667765666556665000000000000005666500000000000000000000000000000000000000000000000000000000000000000000000000000000 56665577667766776655666556665500000000000055666500000000000000000000000000000000000000000000000000000000000000000000000000000000 56666555667766775556666556666555000000005556666500000000000000000000000000000000000000000000000000000000000000000000000000000000 56666666555555556666666556666666555555556666666500000000000000000000000000000000000000000000000000000000000000000000000000000000 56666666666666666666666556666666666666666666666500000000000000000000000000000000000000000000000000000000000000000000000000000000 05666666666666666666665005666666666666666666665000000000000000000000000000000000000000000000000000000000000000000000000000000000 00555555555555555555550000555555555555555555550000000000000000000000000000000000000000000000000000000000000000000000000000000000 __map__ 0000000000000000000000008081828380818200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000070000009091929390919200000084858687000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000b170a00009091929390919200000090919293000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000061b891a08009091929390919200000090919293000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000001689898918009091929390919200000090919293000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 b2b2b2b2b2b2b2b2b2b8b8b8b8b8b8b80000000000b8b8b8b8b8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 b2b2b2b2b2b2b2b2b2b0b0b0b0b0b0b00000000000b0b0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 c0c1c1c1c1c1c1c1c1c2c3c4c4c4c4c58b8900000000000000008c00000000008d8d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 d0d1d1d1d1d1d1d1d1d2e3e4e4e4e4e589000000000000000000890000000000898900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 d0d1d1d1d1d1d1d1d1d2c3c4c4c4c4c500000000000000000000890000000000898900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 d0d1d1d1d1d1d1d1d1d2d300000000d500000000000000000000890000000000898900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 d0d1d1d1d1d1d1d1d1d2d300000800d500000000000000008900890000000000898900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 d0d1d1d1d1d1d1d1d1d2d300001800d500000000000000008b00890000000000898900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 d0d1d1d1d1d1d1d1d1d2d300000000d5000000000000008b8900890000000000898900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 d0d1d1d1d1d1d1d1d1d2d300000000d58900000000008b898b00890000000000898900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 d0d1d1d1d1d1d1d1d1d2d300000000d5898b89000089898b89008b8b8b8b8b8b8b8b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 d0d1d1d1d1d1d1d1d1d2d300000000d500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 e0e1e1e1e1e1e1e1e1e2e3e4e4e4e4e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 c3c4c4c4c4c4c4c4c4c4c4c4c4c4c4c500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 d3d4d4d4d4d4d4d4d4d4d4d4d4d400d500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 e3e4e4e4e4e4e4e4e4e4e4e4e4e4e4e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 __sfx__ 490200003465028650216501c6501865016650166501665017650186501b6502065024650296502d6502e6502d6602b66026660236601f6601b66017660146600e6600b6600966008660176600d6700767006670 390100000265002650026500265002650026500265002650026500265002650006000060000600006000060000600006000060000600006000060000600006000060000600006000060000600006000060000600