| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- pico-8 cartridge // http://www.pico-8.com
- version 32
- __lua__
- function _init()
- u_state, d_state = u_waiting, d_waiting
- end
- function _update()
- u_state()
- end
- function _draw()
- d_state()
- end
- -->8
- -- waiting for a level
- -- 0x4300 - 0x5600
- function u_waiting()
- if (not stat(120)) return
-
- -- resetting the player
- player_x, player_y = nil, nil
-
- -- resetting the goal counter
- remaining_goals = 0
-
- -- read header
-
- local end_of_header = false
- local header_length = 0
- repeat
- local next_byte_addr = 0x4300 + header_length
- serial(0x800, next_byte_addr, 1)
- header_length += 1
- -- stop at newline
- end_of_header = @next_byte_addr == ord("\n")
- until end_of_header
-
- -- parse the string
- -- moved here for readability
- -- but could be in the header loading code
- local header_str = ""
- for i=0,header_length-1 do
- header_str ..= chr(@(i+0x4300))
- end
- -- map dimension extraction
- -- let's say there is only one space between width and height
- local map_width, map_height
- for i=1,#header_str do
- local c = sub(header_str,i,i)
- if c == " " then
- map_width = sub(header_str,1,i) + 0
- map_height = sub(header_str,i+1) + 0
- break
- end
- end
-
- -- map read
- for y=0,map_height - 1 do
- -- read a line
- -- map_width + 1 to read the newline character
- serial(0x800, 0x4300, map_width + 1)
-
- -- parse the read data into the map data
-
- for x=0,map_width - 1 do
- local val = @(0x4300 + x)
- if val == ord("#") then
- mset(x, y, 1)
- -- goal
- elseif val == ord(".") then
- mset(x, y, 2)
- remaining_goals += 1
- -- box
- elseif val == ord("$") then
- mset(x, y, 3)
- -- box on goal
- elseif val == ord("*") then
- mset(x, y, 4)
- -- player
- elseif val == ord("@") then
- player_x, player_y = x, y
- -- player on goal
- elseif val == ord("+") then
- player_x, player_y = x, y
- remaining_goals += 1
- mset(x, y, 4)
- end
- end
- end
-
- u_state, d_state = u_game, d_game
- end
- function d_waiting()
- cls()
- print("waiting for a file to drop", 7)
- local center_x, center_y = 64+32 * sin(t()/4), 96 + cos(t()/3)*16
- circfill(center_x-1, center_y-1, 7.5, 1)
- spr(t()%5, center_x-4, center_y-4)
- end
- -->8
- -- "game" state
- -- oh, you know what?
- -- let's do a sokoban
- function u_game()
- local move_x, move_y = 0, 0
- if(btnp(➡️)) move_x = 1
- if(btnp(⬅️)) move_x = -1
- if(btnp(⬇️)) move_y = 1
- if(btnp(⬆️)) move_y = -1
-
- if remaining_goals == 0 then
- u_state, d_state = u_waiting, d_waiting
- end
-
- if move_x ~= 0 or move_y ~= 0 then
- local next_x, next_y = player_x + move_x, player_y + move_y
- local has_box = fget(mget(next_x, next_y), 1)
- local has_wall = fget(mget(next_x, next_y), 2)
- local has_goal = fget(mget(next_x, next_y), 0)
- if has_box then
- next_box_x, next_box_y = player_x + move_x*2, player_y + move_y*2
- -- next box tile has box or wall? abort
- if fget(mget(next_box_x, next_box_y), 1) or fget(mget(next_box_x, next_box_y), 2) then
- return
- end
- mset(next_x, next_y, has_goal and 2 or 0)
- local has_next_goal = fget(mget(next_box_x, next_box_y), 0)
- mset(next_box_x, next_box_y, has_next_goal and 4 or 3)
- if(has_goal)remaining_goals += 1
- if(has_next_goal)remaining_goals -= 1
- end
- if not has_wall then
- player_x, player_y = next_x, next_y
- end
- end
- end
- function d_game()
- cls()
- map()
- spr(0, player_x*8, player_y*8)
- end
- __gfx__
- 0aaaaaa0666066665000000544444444dddddddd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- aaaaaaaa666066665555555540044004dd0000dd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- aa0aa0aa666066660005500044000044d00dd00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- aaaaaaaa000000000050050040044004dd0000dd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- a000000a666660660500005044444444dddddddd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- a000000a666660660500005040444404d0dddd0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 0a0000a0666660665050050540000004d000000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00aaaa00000000005555555540444404d0dddd0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- __label__
- 88806666666066666660666666606666666066666660666666606666000000000000000000000000000000000000000000000000000000000000000000000000
- 66806666666066666660666666606666666066666660666666606666000000000000000000000000000000000000000000000000000000000000000000000000
- 88806666666066666660666666606666666066666660666666606666000000000000000000000000000000000000000000000000000000000000000000000000
- 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 88866066666660666666606666666066666660666666606666666066000000000000000000000000000000000000000000000000000000000000000000000000
- 66666066666660666666606666666066666660666666606666666066000000000000000000000000000000000000000000000000000000000000000000000000
- 66666066666660666666606666666066666660666666606666666066000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 66606666dddddddd0000000000000000666066660000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 66606666dd0000dd0000000000000000666066660000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 66606666d00dd00d0000000000000000666066660000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000dd0000dd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 66666066dddddddd0000000000000000666660660000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 66666066d0dddd0d0000000000000000666660660000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 66666066d000000d0000000000000000666660660000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000d0dddd0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 6660666600000000dddddddd00000000444444440000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 6660666600000000dd0000dd00000000400440040000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 6660666600000000d00dd00d00000000440000440000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000dd0000dd00000000400440040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 6666606600000000dddddddd00000000444444440000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 6666606600000000d0dddd0d00000000404444040000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 6666606600000000d000000d00000000400000040000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000d0dddd0d00000000404444040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 6660666600000000000000000aaaaaa0444444440000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 666066660000000000000000aaaaaaaa400440040000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 666066660000000000000000aa0aa0aa440000440000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 000000000000000000000000aaaaaaaa400440040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 666660660000000000000000a000000a444444440000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 666660660000000000000000a000000a404444040000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 6666606600000000000000000a0000a0400000040000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000aaaa00404444040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 66606666000000005000000550000005000000000000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 66606666000000005555555555555555000000000000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 66606666000000000005500000055000000000000000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000050050000500500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 66666066000000000500005005000050000000000000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 66666066000000000500005005000050000000000000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 66666066000000005050050550500505000000000000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000005555555555555555000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 666066660000000000000000dddddddd000000000000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 666066660000000000000000dd0000dd000000000000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 666066660000000000000000d00dd00d000000000000000066606666000000000000000000000000000000000000000000000000000000000000000000000000
- 000000000000000000000000dd0000dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 666660660000000000000000dddddddd000000000000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 666660660000000000000000d0dddd0d000000000000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 666660660000000000000000d000000d000000000000000066666066000000000000000000000000000000000000000000000000000000000000000000000000
- 000000000000000000000000d0dddd0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 66606666666066666660666666606666666066666660666666606666000000000000000000000000000000000000000000000000000000000000000000000000
- 66606666666066666660666666606666666066666660666666606666000000000000000000000000000000000000000000000000000000000000000000000000
- 66606666666066666660666666606666666066666660666666606666000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 66666066666660666666606666666066666660666666606666666066000000000000000000000000000000000000000000000000000000000000000000000000
- 66666066666660666666606666666066666660666666606666666066000000000000000000000000000000000000000000000000000000000000000000000000
- 66666066666660666666606666666066666660666666606666666066000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- __gff__
- 0004010203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|