Skip to content

Commit 7b6b413

Browse files
committed
load/save track in progress
1 parent 447edba commit 7b6b413

File tree

3 files changed

+79
-14
lines changed

3 files changed

+79
-14
lines changed

.gitignore

-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,3 @@ config.txt
44
/bbs/
55
/carts/demos
66
/cdata
7-

carts/flight.p8

+70-13
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,7 @@ end
560560
local edit_screen={}
561561
local edit_actor=make_actor(0,4)
562562
local edit_cmds={}
563+
local all_cmds={}
563564

564565
function cmd_fly(cmd,btns)
565566
local cmd_item=add(edit_cmds,{
@@ -599,6 +600,14 @@ function cmd_roll(cmd,btns)
599600
add(cmd_item.path,{type=1,x=edit_actor.x,y=edit_actor.y})
600601
end
601602
function cmd_checkpoint(cmd)
603+
if #edit_cmds>0 then
604+
if edit_cmds[#edit_cmds].cmd==cmd then
605+
-- cheap error feedback
606+
cls(8)
607+
flip()
608+
return
609+
end
610+
end
602611
local cmd_item=add(edit_cmds,{
603612
cmd=cmd,
604613
t=0,
@@ -616,15 +625,64 @@ function cmd_del()
616625
edit_actor=make_actor(0,4)
617626
end
618627
end
619-
local all_cmds={
628+
function cmd_save()
629+
cur_screen=save_screen
630+
end
631+
function cmd_load()
632+
cur_screen=load_screen
633+
end
634+
function cmd_exit()
635+
-- release memory
636+
edit_cmds={}
637+
cur_screen=start_screen
638+
end
639+
function load_track(id)
640+
edit_cmds={}
641+
local mem=0x2000+id*256
642+
local id=peek(mem)
643+
while id!=0 do
644+
local cmd=all_cmds[id]
645+
local btns={}
646+
if cmd.btn then
647+
btns[cmd.btn]=true
648+
end
649+
cmd.click(cmd,btns)
650+
mem+=1
651+
id=peek(mem)
652+
end
653+
end
654+
function save_track(cmds,id)
655+
if(#cmds>255) assert("track too long")
656+
657+
-- map data
658+
local mem=0x2000+id*256
659+
local addr=mem
660+
for i=1,#cmds do
661+
local cmd=cmds[i]
662+
poke(addr,cmd.id)
663+
addr+=1
664+
end
665+
poke(addr,0)
666+
cstore(mem,mem,256)
667+
end
668+
669+
all_cmds={
620670
{spr=2,click=cmd_fly,btn=3,ttl=30},
621671
{spr=3,click=cmd_fly,btn=2,ttl=30},
622672
{spr=4,click=cmd_roll,btn=0},
623673
-- checkpoint. must be collected in order
624674
{spr=5,click=cmd_fly,ttl=30},
625675
{spr=6,click=cmd_checkpoint},
626-
{spr=7,click=cmd_del}
676+
{spr=7,click=cmd_del},
677+
{spr=9,click=cmd_load},
678+
{spr=8,click=cmd_save},
679+
{spr=10,click=cmd_exit}
627680
}
681+
-- assign cmd index
682+
-- no more than 15 commands!!!
683+
for i=1,#all_cmds do
684+
all_cmds[i].id=i
685+
end
628686
function addat(array,idx,elt)
629687
local len=#array
630688
for i=idx,len do
@@ -689,12 +747,11 @@ function edit_screen:draw()
689747
local x=1
690748
for i=1,#all_cmds do
691749
local cmd=all_cmds[i]
692-
if i==edit_cmd_i then
693-
rectfill(x,117,x+8,126,13)
694-
end
750+
pal(5,i==edit_cmd_i and 7 or 5)
695751
spr(cmd.spr,x,118)
696752
x+=10
697753
end
754+
pal()
698755

699756
print((t/60).."s - "..count.."/256",2,2,7)
700757
end
@@ -842,14 +899,14 @@ function _init()
842899
end
843900

844901
__gfx__
845-
0000000000000000eeeeeeeeeeeeeeeeee5555eeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000
846-
0000000000000000eeeeeeeeeeeeeeeee5dddd5ee555555eeeeeee5eeeeeeeee0000000000000000000000000000000000000000000000000000000000000000
847-
0070070000000000eee55eeee555555ee5ee5edeee5dd5eeeeeee55eee8ee8ee0000000000000000000000000000000000000000000000000000000000000000
848-
0007700000000000ee5555eeed5555dee5ee55eeeee55eeee55e55deeed88dee0000000000000000000000000000000000000000000000000000000000000000
849-
0007700000000000e555555eeed55deeed55555eee5555eeed555deeeee88eee0000000000000000000000000000000000000000000000000000000000000000
850-
0070070000000000eddddddeeeeddeeeeedd55dee555555eeed5deeeee8dd8ee0000000000000000000000000000000000000000000000000000000000000000
851-
0000000000000000eeeeeeeeeeeeeeeeeeee5deeeddddddeeeedeeeeeedeedee0000000000000000000000000000000000000000000000000000000000000000
852-
0000000000000000eeeeeeeeeeeeeeeeeeeedeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000
902+
0000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000
903+
0000000000000000eeeeeeeeeeeeeeeeee5555eee555555eeeeeee5eeeeeeeeeeee55eeeeee55eeeeeeeeeee0000000000000000000000000000000000000000
904+
0070070000000000eee55eeee555555ee5eeee5eee5ee5eeeeeee55eee5ee5eeeee55eeeee5555eeee5555ee0000000000000000000000000000000000000000
905+
0007700000000000ee5555eeee5555eee5ee5eeeeee55eeee55e55eeeee55eeeee5555eeeee55eeeee5555ee0000000000000000000000000000000000000000
906+
0007700000000000e555555eeee55eeee5ee55eeee5555eeee555eeeeee55eeeeee55eeeeee55eeeee5555ee0000000000000000000000000000000000000000
907+
0070070000000000eeeeeeeeeeeeeeeeee55555ee555555eeee5eeeeee5ee5eee5eeee5ee5eeee5eee5555ee0000000000000000000000000000000000000000
908+
0000000000000000eeeeeeeeeeeeeeeeeeee55eeeeeeeeeeeeeeeeeeeeeeeeeee555555ee555555eeeeeeeee0000000000000000000000000000000000000000
909+
0000000000000000eeeeeeeeeeeeeeeeeeee5eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000
853910
0000000000000000eeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
854911
0000000000000000eeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
855912
0000000000000000eeeddeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
pico-8 cartridge // http://www.pico-8.com
2+
version 16
3+
__lua__
4+
5+
__map__
6+
0a80200a7e200a7e200a80200a80200a7f200a7f200a7f200a81200a7f200a7f200a7c200a7a200a7c200a7f200a83200a8120068020037e20037e20038a200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
7+
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
8+
0000002525252525000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
9+
0000002525252525000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0 commit comments

Comments
 (0)