This is the original project as designed a couple years ago.
This commit is contained in:
commit
7bb790ad18
120
center_pane.lua
Executable file
120
center_pane.lua
Executable file
@ -0,0 +1,120 @@
|
|||||||
|
--center pane?
|
||||||
|
|
||||||
|
toolkit_index = 1
|
||||||
|
|
||||||
|
unselected_color = 6
|
||||||
|
selected_color = 10
|
||||||
|
selected_secondary_color = 7
|
||||||
|
|
||||||
|
z_pressed = false
|
||||||
|
export_icon_up = false
|
||||||
|
|
||||||
|
function toolkit_update()
|
||||||
|
if current_pane == 2 then
|
||||||
|
if btnp(2) and not btn(4) then
|
||||||
|
toolkit_index -= 1
|
||||||
|
if (toolkit_index < 1) toolkit_index = 1
|
||||||
|
elseif btnp(3) and not btn(4) then
|
||||||
|
toolkit_index += 1
|
||||||
|
if (toolkit_index > 4) toolkit_index = 4
|
||||||
|
end
|
||||||
|
|
||||||
|
export_icon_up = false
|
||||||
|
if btnp(4) then
|
||||||
|
if (toolkit_index==1) then
|
||||||
|
do_export()
|
||||||
|
export_icon_up = true
|
||||||
|
end
|
||||||
|
if (toolkit_index==2) do_switch_handles()
|
||||||
|
if (toolkit_index==3) do_linked_edits()
|
||||||
|
end
|
||||||
|
if btn(4) and toolkit_index==4 then
|
||||||
|
if (btnp(2)) do_change_instruction(-1)
|
||||||
|
if (btnp(3)) do_change_instruction(1)
|
||||||
|
end
|
||||||
|
|
||||||
|
if (not btn(4)) export_icon_up = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function do_export()
|
||||||
|
local output = export_memory(m)
|
||||||
|
printh(output, '@clip')
|
||||||
|
end
|
||||||
|
|
||||||
|
function do_switch_handles()
|
||||||
|
show_path_handles = not show_path_handles
|
||||||
|
end
|
||||||
|
|
||||||
|
function do_linked_edits()
|
||||||
|
use_linked_editing = not use_linked_editing
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function do_change_instruction(direction)
|
||||||
|
current_node = holding
|
||||||
|
if (current_node==nil) current_node = under
|
||||||
|
change_node(current_node, 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
function change_node(record, direction)
|
||||||
|
if (record==nil) return
|
||||||
|
|
||||||
|
|
||||||
|
idx=1
|
||||||
|
for i, v in pairs(instructions) do
|
||||||
|
if v==record.operation[1] then
|
||||||
|
idx = i
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
new_idx = idx + direction
|
||||||
|
if (new_idx>#instructions) new_idx = 1
|
||||||
|
if (new_idx<1) new_idx = #instructions
|
||||||
|
m[record.address[1]][record.address[2]][1] = instructions[new_idx]
|
||||||
|
end
|
||||||
|
|
||||||
|
tooltips = {
|
||||||
|
"export current vram to clipboard",
|
||||||
|
"show/hide node markers",
|
||||||
|
"isolate nodes while editing?",
|
||||||
|
"🅾️+⬆️/⬇️ to change node type"
|
||||||
|
}
|
||||||
|
function get_current_tooltip_text()
|
||||||
|
return tooltips[toolkit_index]
|
||||||
|
end
|
||||||
|
|
||||||
|
function c_pane_draw()
|
||||||
|
rectfill(39, 14, 60, 116, frame_color)
|
||||||
|
|
||||||
|
for i=1,4 do
|
||||||
|
local c=unselected_color
|
||||||
|
if i==toolkit_index then
|
||||||
|
c=selected_secondary_color
|
||||||
|
end
|
||||||
|
if i==toolkit_index and current_pane==2 then
|
||||||
|
c=selected_color
|
||||||
|
rect(40, 21*i-7, 59, 21*i+12, 7)
|
||||||
|
end
|
||||||
|
|
||||||
|
rect(41, 21*i-6, 58, 21*i+11, c)
|
||||||
|
|
||||||
|
spr_num = 2+2*i
|
||||||
|
|
||||||
|
if i==1 and export_icon_up then
|
||||||
|
spr_num += 32
|
||||||
|
end
|
||||||
|
|
||||||
|
if i==2 and not show_path_handles then
|
||||||
|
spr_num += 32
|
||||||
|
end
|
||||||
|
|
||||||
|
if i==3 and not use_linked_editing then
|
||||||
|
spr_num += 32
|
||||||
|
end
|
||||||
|
|
||||||
|
spr(spr_num, 42, 21*i-5, 2, 2)
|
||||||
|
end
|
||||||
|
end
|
65
draw_logic.lua
Executable file
65
draw_logic.lua
Executable file
@ -0,0 +1,65 @@
|
|||||||
|
--draw logic
|
||||||
|
|
||||||
|
frame_color = 5
|
||||||
|
|
||||||
|
function _draw()
|
||||||
|
cls()
|
||||||
|
|
||||||
|
-- top
|
||||||
|
draw_top_ui()
|
||||||
|
|
||||||
|
-- bottom
|
||||||
|
draw_bottom_ui()
|
||||||
|
|
||||||
|
tab_x = 1
|
||||||
|
if (current_pane==1) tab_x=10
|
||||||
|
if (current_pane==2) tab_x=46
|
||||||
|
if (current_pane==3) tab_x=86
|
||||||
|
spr(48, tab_x, 7)
|
||||||
|
c_pane_draw()
|
||||||
|
r_pane_draw()
|
||||||
|
l_pane_draw()
|
||||||
|
end
|
||||||
|
|
||||||
|
function draw_top_ui()
|
||||||
|
rectfill(0,0,128,14, frame_color)
|
||||||
|
|
||||||
|
if current_pane == 2 then
|
||||||
|
color(6)
|
||||||
|
print(get_current_tooltip_text())
|
||||||
|
else
|
||||||
|
if (holding == nil) then
|
||||||
|
color(6)
|
||||||
|
print("the empty hand is strong")
|
||||||
|
else
|
||||||
|
color(6)
|
||||||
|
print("change the world")
|
||||||
|
end
|
||||||
|
if holding ~= nil then
|
||||||
|
bank = holding.address[1]
|
||||||
|
line_no = holding.address[2]
|
||||||
|
color(10)
|
||||||
|
print(bank.."::"..line_no.." "..join(holding.operation, " "))
|
||||||
|
elseif under ~= nil then
|
||||||
|
bank = under.address[1]
|
||||||
|
line_no = under.address[2]
|
||||||
|
color(6)
|
||||||
|
print(bank.."::"..line_no.." "..join(under.operation, " "))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function draw_bottom_ui()
|
||||||
|
rectfill(0,116,128,128, frame_color)
|
||||||
|
|
||||||
|
t="🅾️ to grab ❎+⬅️/➡️ for mode"
|
||||||
|
if current_pane == 2 then
|
||||||
|
t="🅾️ to use ❎+⬅️/➡️ for mode"
|
||||||
|
|
||||||
|
elseif current_pane == 3 then
|
||||||
|
t="🅾️ to grab ❎+⬅️/➡️ for mode\n"
|
||||||
|
t=t.."❎+⬆️ to add ❎+⬇️ to delete"
|
||||||
|
end
|
||||||
|
print(t, 0, 117, 6)
|
||||||
|
end
|
104
help_functions.lua
Executable file
104
help_functions.lua
Executable file
@ -0,0 +1,104 @@
|
|||||||
|
--help functions & output
|
||||||
|
function print_listing(lst)
|
||||||
|
for ins in all(lst) do
|
||||||
|
print(join(ins, " "))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function print_memory(mems)
|
||||||
|
for label, listing in pairs(mems) do
|
||||||
|
print("::"..label.."::")
|
||||||
|
print_listing(listing)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function export_memory(mems)
|
||||||
|
out = "m = {}"
|
||||||
|
for label, listing in pairs(mems) do
|
||||||
|
out = out.."\n\nm[\""..label.."\"] = {\n"
|
||||||
|
for l in all(listing) do
|
||||||
|
out = out.."{"
|
||||||
|
if l[1] == "jump" then
|
||||||
|
out = out.."\""..l[1].."\", \""..l[2].."\""
|
||||||
|
else
|
||||||
|
out = out.."\""..l[1].."\""
|
||||||
|
if (#l > 1) out = out..", "..l[2]
|
||||||
|
if (#l > 2) out = out..", "..l[3]
|
||||||
|
end
|
||||||
|
out = out.."},\n"
|
||||||
|
end
|
||||||
|
out = out.."}"
|
||||||
|
end
|
||||||
|
|
||||||
|
return out
|
||||||
|
end
|
||||||
|
|
||||||
|
function join(strings, delimiter)
|
||||||
|
out = ""
|
||||||
|
first = true
|
||||||
|
for s in all(strings) do
|
||||||
|
if (not first) out = out..delimiter
|
||||||
|
first = false
|
||||||
|
out = out..tostr(s)
|
||||||
|
end
|
||||||
|
|
||||||
|
return out
|
||||||
|
end
|
||||||
|
|
||||||
|
function list_table(strings)
|
||||||
|
if type(strings) == "string" then
|
||||||
|
return "\""..strings.."\""
|
||||||
|
elseif type(strings) ~= "table" then
|
||||||
|
return tostr(strings)
|
||||||
|
end
|
||||||
|
|
||||||
|
out = "{"
|
||||||
|
first = true
|
||||||
|
for k,v in pairs(strings) do
|
||||||
|
if (not first) out = out..", "
|
||||||
|
first = false
|
||||||
|
out = out..tostr(k).."="..list_table(v)
|
||||||
|
end
|
||||||
|
|
||||||
|
out = out.."}"
|
||||||
|
|
||||||
|
return out
|
||||||
|
end
|
||||||
|
|
||||||
|
function deep_eq(this, other)
|
||||||
|
if (tostr(this) ~= tostr(other)) return false
|
||||||
|
if tostr(this) == "[table]" then
|
||||||
|
if (#this ~= #other) return false
|
||||||
|
|
||||||
|
for i, v in pairs(this) do
|
||||||
|
if (not deep_eq(v, other[i])) return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
function deep_copy(target)
|
||||||
|
if (type(target) ~= "table") return target
|
||||||
|
|
||||||
|
local t = {}
|
||||||
|
for k, v in pairs(target) do
|
||||||
|
t[k] = deep_copy(v)
|
||||||
|
end
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
function get_banks(memory)
|
||||||
|
local output = {}
|
||||||
|
local main_idx = 1
|
||||||
|
for bank, listing in pairs(memory) do
|
||||||
|
add(output,bank)
|
||||||
|
if bank=="main" then
|
||||||
|
main_idx = #output
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
output[main_idx] = output[1]
|
||||||
|
output[1] = "main"
|
||||||
|
|
||||||
|
return output
|
||||||
|
end
|
201
listing_pane.lua
Executable file
201
listing_pane.lua
Executable file
@ -0,0 +1,201 @@
|
|||||||
|
--listing pane
|
||||||
|
|
||||||
|
//room for 14 lines in the listing
|
||||||
|
|
||||||
|
selected_address = {"main", 1}
|
||||||
|
|
||||||
|
function l_pane_update()
|
||||||
|
if current_pane == 1 then
|
||||||
|
if last_edit_pane == 3 then
|
||||||
|
handle = holding
|
||||||
|
if (handle==nil) handle=under
|
||||||
|
addr = get_address_from_handle(handle)
|
||||||
|
if (addr ~= nil) selected_address=addr
|
||||||
|
end
|
||||||
|
last_edit_pane = 1
|
||||||
|
|
||||||
|
if btn(4) then
|
||||||
|
dx = 0
|
||||||
|
dy = 0
|
||||||
|
|
||||||
|
if (btn(0) and tx > 0) dx -= 1
|
||||||
|
if (btn(1) and tx < 127) dx += 1
|
||||||
|
if (btn(2) and ty > 0) dy -= 1
|
||||||
|
if (btn(3) and ty < 127) dy += 1
|
||||||
|
|
||||||
|
local h = nil
|
||||||
|
for handle in all(record_list) do
|
||||||
|
if deep_eq(handle.address, selected_address) then
|
||||||
|
h = handle
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if h ~= nil then
|
||||||
|
perform_edit(m, h, dx, dy, false)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if btnp(2) then
|
||||||
|
selected_address[2] -= 1
|
||||||
|
if selected_address[2] < 1 then
|
||||||
|
selected_address[1] = get_previous_bank(selected_address[1])
|
||||||
|
selected_address[2] = #m[selected_address[1]]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if btnp(3) then
|
||||||
|
selected_address[2] += 1
|
||||||
|
if selected_address[2] > #m[selected_address[1]] then
|
||||||
|
selected_address[1] = get_next_bank(selected_address[1])
|
||||||
|
selected_address[2] = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
// this should get run when we
|
||||||
|
// switch from the render pane
|
||||||
|
// to the listing pane, to get
|
||||||
|
// a selection in the listing
|
||||||
|
// pane
|
||||||
|
function get_address_from_handle(handle)
|
||||||
|
if handle ~= nil then
|
||||||
|
return deep_copy(handle.address)
|
||||||
|
else
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function get_previous_bank(bank)
|
||||||
|
local i = #banks
|
||||||
|
for b in all(banks) do
|
||||||
|
if b == bank then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
i += 1
|
||||||
|
if i > #banks then
|
||||||
|
i = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return banks[i]
|
||||||
|
end
|
||||||
|
|
||||||
|
function get_next_bank(bank)
|
||||||
|
local i = 1
|
||||||
|
for b in all(banks) do
|
||||||
|
i += 1
|
||||||
|
if i > #banks then
|
||||||
|
i = 1
|
||||||
|
end
|
||||||
|
if b == bank then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return banks[i]
|
||||||
|
end
|
||||||
|
|
||||||
|
disp_start = 1
|
||||||
|
window_size = 14
|
||||||
|
margin = 2
|
||||||
|
function l_pane_draw()
|
||||||
|
the_listing = make_listing()
|
||||||
|
|
||||||
|
s_index = nil
|
||||||
|
|
||||||
|
for idx, listing in pairs(the_listing) do
|
||||||
|
if deep_eq(listing[3], selected_address) then
|
||||||
|
s_index = idx
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
// if the selected line is
|
||||||
|
// outside the bounds, then
|
||||||
|
// move the bounds.
|
||||||
|
|
||||||
|
// if the selected line is
|
||||||
|
// less than start+margin
|
||||||
|
// then we need to move start
|
||||||
|
// up (decrease it)
|
||||||
|
while s_index < disp_start + margin do
|
||||||
|
disp_start = disp_start - 1
|
||||||
|
end
|
||||||
|
|
||||||
|
// if it's greater than
|
||||||
|
// start+window_size - margin
|
||||||
|
// then we need to move start
|
||||||
|
// down (increase it)
|
||||||
|
while s_index >= disp_start + window_size - margin do
|
||||||
|
disp_start = disp_start + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
// if start + window_size is
|
||||||
|
// greater than the number of
|
||||||
|
// lines in the listing, then
|
||||||
|
// move back up (decrease)
|
||||||
|
if disp_start + window_size > #the_listing then
|
||||||
|
disp_start = #the_listing - window_size + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
// if start is less than 1
|
||||||
|
// then start should be 1
|
||||||
|
if (disp_start < 1) disp_start = 1
|
||||||
|
|
||||||
|
for i, v in pairs(the_listing) do
|
||||||
|
if i>=disp_start and i < disp_start + window_size then
|
||||||
|
print(v[1], 0, 17+7*(i - disp_start), v[2])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function make_listing()
|
||||||
|
local output = {}
|
||||||
|
for bank in all(banks) do
|
||||||
|
contents = m[bank]
|
||||||
|
|
||||||
|
str = ":"..bank..":"
|
||||||
|
col = 13
|
||||||
|
addr = nil
|
||||||
|
|
||||||
|
add(output, {str, col, addr})
|
||||||
|
|
||||||
|
for j,op in pairs(contents) do
|
||||||
|
str = op_pretty_print(op)
|
||||||
|
col = get_line_color(bank, j)
|
||||||
|
addr = {bank, j}
|
||||||
|
|
||||||
|
add(output, {str, col, addr})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return output
|
||||||
|
end
|
||||||
|
function get_line_color(bank, idx)
|
||||||
|
if bank==selected_address[1]
|
||||||
|
and idx==selected_address[2] then
|
||||||
|
return 6
|
||||||
|
end
|
||||||
|
return 13
|
||||||
|
end
|
||||||
|
|
||||||
|
function op_pretty_print(op)
|
||||||
|
opc = "n"
|
||||||
|
|
||||||
|
if (op[1]=="return") opc="return"
|
||||||
|
if (op[1]=="jump") opc="j"
|
||||||
|
if (op[1]=="scale") opc="s"
|
||||||
|
if (op[1]=="rotate") opc="rot "
|
||||||
|
if (op[1]=="move") opc="m"
|
||||||
|
if (op[1]=="place") opc="p"
|
||||||
|
if (op[1]=="draw") opc="d"
|
||||||
|
if (op[1]=="draw_abs") opc="a"
|
||||||
|
if (op[1]=="color") opc="c"
|
||||||
|
|
||||||
|
if #op == 2 then
|
||||||
|
opc = opc..op[2]
|
||||||
|
elseif #op == 3 then
|
||||||
|
arg1 = sub(tostr(op[2]), 1, 3)
|
||||||
|
arg2 = sub(tostr(op[3]), 1, 3)
|
||||||
|
opc = opc..arg1..","..arg2
|
||||||
|
end
|
||||||
|
|
||||||
|
return opc
|
||||||
|
end
|
||||||
|
|
121
render_pane.lua
Executable file
121
render_pane.lua
Executable file
@ -0,0 +1,121 @@
|
|||||||
|
--remder pane
|
||||||
|
|
||||||
|
holding = nil
|
||||||
|
under = nil
|
||||||
|
|
||||||
|
tx = 64
|
||||||
|
ty = 64
|
||||||
|
|
||||||
|
function r_pane_update()
|
||||||
|
|
||||||
|
if current_pane == 3 then
|
||||||
|
if last_edit_pane == 1 then
|
||||||
|
under = get_handle_from_address(selected_address)
|
||||||
|
if under ~= nil then
|
||||||
|
tx = under.handle.position[1]
|
||||||
|
ty = under.handle.position[2]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
last_edit_pane = 3
|
||||||
|
|
||||||
|
dx = 0
|
||||||
|
dy = 0
|
||||||
|
|
||||||
|
if (btn(0) and tx > 0) dx -= 1
|
||||||
|
if (btn(1) and tx < 127) dx += 1
|
||||||
|
if (btn(2) and ty > 0) dy -= 1
|
||||||
|
if (btn(3) and ty < 127) dy += 1
|
||||||
|
|
||||||
|
tx += dx
|
||||||
|
ty += dy
|
||||||
|
|
||||||
|
under = find_handle(record_list, tx, ty)
|
||||||
|
|
||||||
|
if holding ~= nil then
|
||||||
|
perform_edit(m, holding, dx, dy, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
if not btn(4) then
|
||||||
|
holding = nil
|
||||||
|
elseif holding == nil then
|
||||||
|
holding = under
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
// this should get run when we
|
||||||
|
// switch from the listing pane
|
||||||
|
// to the render pane, to get
|
||||||
|
// a handle to be targeting in
|
||||||
|
// the render pane.
|
||||||
|
function get_handle_from_address(address)
|
||||||
|
if holding ~= nil and deep_eq(holding.address, address) then
|
||||||
|
return holding
|
||||||
|
elseif under ~=nil and deep_eq(under.address, address) then
|
||||||
|
return under
|
||||||
|
end
|
||||||
|
|
||||||
|
for handle in all(record_list) do
|
||||||
|
if deep_eq(handle.address, address) then
|
||||||
|
return handle
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function find_handle(record_list, x, y)
|
||||||
|
close_one = nil
|
||||||
|
dist = 8
|
||||||
|
for h in all(record_list) do
|
||||||
|
if h.handle ~= nil then
|
||||||
|
nx = h.handle.position[1]
|
||||||
|
ny = h.handle.position[2]
|
||||||
|
|
||||||
|
nd = abs(nx-x) + abs(ny-y)
|
||||||
|
if nd < dist then
|
||||||
|
close_one = h
|
||||||
|
dist = nd
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return close_one
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- rendering
|
||||||
|
function r_pane_draw()
|
||||||
|
record_list = {}
|
||||||
|
|
||||||
|
-- draw the path
|
||||||
|
vectorate(m, {pre=nil, post=add_to_record_list})
|
||||||
|
|
||||||
|
-- draw the path handles
|
||||||
|
if show_path_handles then
|
||||||
|
for rec in all(record_list) do
|
||||||
|
h = rec.handle
|
||||||
|
|
||||||
|
if rec.operation[1] == "rotate" then
|
||||||
|
line(rec.state.position[1],
|
||||||
|
rec.state.position[2],
|
||||||
|
h.position[1], h.position[2], 13)
|
||||||
|
elseif rec.operation[1] == "scale" then
|
||||||
|
line(rec.state.position[1],
|
||||||
|
rec.state.position[2],
|
||||||
|
h.position[1], h.position[2], 13)
|
||||||
|
end
|
||||||
|
spr(h.sprite, h.position[1]-3, h.position[2]-3)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if last_edit_pane == 3 then
|
||||||
|
spr(0, tx-4, ty-4)
|
||||||
|
else
|
||||||
|
for r in all(record_list) do
|
||||||
|
if deep_eq(r.address, selected_address) then
|
||||||
|
spr(0, r.handle.position[1]-4, r.handle.position[2]-4)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
177
update_logic.lua
Executable file
177
update_logic.lua
Executable file
@ -0,0 +1,177 @@
|
|||||||
|
--update logic
|
||||||
|
|
||||||
|
function _init()
|
||||||
|
show_path_handles = true
|
||||||
|
use_linked_editing = false
|
||||||
|
|
||||||
|
record_list = {}
|
||||||
|
|
||||||
|
last_edit_pane = 3
|
||||||
|
current_pane = 3
|
||||||
|
|
||||||
|
banks = get_banks(m)
|
||||||
|
end
|
||||||
|
|
||||||
|
function _update()
|
||||||
|
if btn(5) then
|
||||||
|
if (btnp(0)) current_pane -= 1
|
||||||
|
if (btnp(1)) current_pane += 1
|
||||||
|
if (current_pane > 3) current_pane = 3
|
||||||
|
if (current_pane < 1) current_pane = 1
|
||||||
|
|
||||||
|
if btnp(2) then
|
||||||
|
if holding ~= nil then
|
||||||
|
add_node(m, holding)
|
||||||
|
elseif under ~= nil and current_pane == 3 then
|
||||||
|
add_node(m, under)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if btnp(3) then
|
||||||
|
if holding ~= nil then
|
||||||
|
remove_node(m, holding, not use_linked_editing)
|
||||||
|
elseif under ~= nil and current_pane == 3 then
|
||||||
|
remove_node(m, under, not use_linked_editing)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
r_pane_update()
|
||||||
|
end
|
||||||
|
l_pane_update()
|
||||||
|
toolkit_update()
|
||||||
|
end
|
||||||
|
|
||||||
|
--a function to make execution
|
||||||
|
--records
|
||||||
|
function add_to_record_list(state, operation)
|
||||||
|
local record = {}
|
||||||
|
if (#state.stack == 0) return
|
||||||
|
|
||||||
|
record.step = #record_list + 1
|
||||||
|
|
||||||
|
record.address = {}
|
||||||
|
record.address[1] = state.stack[#state.stack][1]
|
||||||
|
record.address[2] = state.stack[#state.stack][2]-1
|
||||||
|
record.operation = operation
|
||||||
|
|
||||||
|
record.state = deep_copy(state)
|
||||||
|
|
||||||
|
record.handle = handle_from_operation(operation, state)
|
||||||
|
|
||||||
|
add(record_list, record)
|
||||||
|
end
|
||||||
|
|
||||||
|
function handle_from_operation(operation, state)
|
||||||
|
local handle = {}
|
||||||
|
handle.position = {}
|
||||||
|
handle.position[1] = state.position[1]
|
||||||
|
handle.position[2] = state.position[2]
|
||||||
|
handle.sprite = 1
|
||||||
|
|
||||||
|
if operation[1] == "scale" then
|
||||||
|
handle.position[1] -= 8
|
||||||
|
handle.position[2] -= 8
|
||||||
|
|
||||||
|
handle.sprite = 19
|
||||||
|
elseif operation[1] == "rotate" then
|
||||||
|
dx = 10*cos(state.rotation)
|
||||||
|
dy = 10*sin(state.rotation)
|
||||||
|
handle.position[1] += dx
|
||||||
|
handle.position[2] += dy
|
||||||
|
|
||||||
|
handle.sprite = 3
|
||||||
|
elseif operation[1] == "place" then
|
||||||
|
handle.sprite = 2
|
||||||
|
end
|
||||||
|
|
||||||
|
return handle
|
||||||
|
end
|
||||||
|
|
||||||
|
function perform_edit(m, record, dx, dy, transformed)
|
||||||
|
edit(m, record, dx, dy, transformed)
|
||||||
|
if not use_linked_editing then
|
||||||
|
next_step = record_list[record.step+1]
|
||||||
|
cur_op = record.operation[1]
|
||||||
|
next_op = next_step.operation[1]
|
||||||
|
if ((next_op == "draw" or next_op == "move")
|
||||||
|
and (cur_op == "draw" or cur_op == "move")) then
|
||||||
|
edit(m, next_step, -dx, -dy, transformed)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function edit(mem, record, cursor_x, cursor_y, transformed)
|
||||||
|
state = record.state
|
||||||
|
bank = record.address[1]
|
||||||
|
line_no = record.address[2]
|
||||||
|
|
||||||
|
-- very important to transform
|
||||||
|
-- *back* into the space of the
|
||||||
|
-- instruction coordinates
|
||||||
|
dx = (1.0/state.scale) * (
|
||||||
|
cursor_x*cos(-state.rotation)
|
||||||
|
- cursor_y*sin(-state.rotation))
|
||||||
|
dy = (1.0/state.scale) * (
|
||||||
|
cursor_x*sin(-state.rotation)
|
||||||
|
+ cursor_y*cos(-state.rotation))
|
||||||
|
|
||||||
|
-- we need to allow for this.
|
||||||
|
if not transformed then
|
||||||
|
dx = cursor_x
|
||||||
|
dy = cursor_y
|
||||||
|
end
|
||||||
|
|
||||||
|
if (record.operation[1] == "jump") return
|
||||||
|
if (record.operation[1] == "rotate") then
|
||||||
|
mem[bank][line_no][2] += 0.01*cursor_y
|
||||||
|
end
|
||||||
|
if (record.operation[1] == "scale") then
|
||||||
|
mem[bank][line_no][2] += 0.02*cursor_y
|
||||||
|
end
|
||||||
|
if (record.operation[1] == "return") return
|
||||||
|
if (record.operation[1] == "draw"
|
||||||
|
or record.operation[1] == "move"
|
||||||
|
or record.operation[1] == "place"
|
||||||
|
or record.operation[1] == "draw_abs") then
|
||||||
|
mem[bank][line_no][2] += dx
|
||||||
|
mem[bank][line_no][3] += dy
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function add_node(m, record)
|
||||||
|
address = record.address
|
||||||
|
|
||||||
|
cur_op = record.operation
|
||||||
|
|
||||||
|
next_op = m[address[1]][address[2]+1]
|
||||||
|
|
||||||
|
if next_op[1] == "draw" then
|
||||||
|
new_op = {"draw", next_op[2]/2, next_op[3]/2}
|
||||||
|
next_op[2] = next_op[2]/2
|
||||||
|
next_op[3] = next_op[3]/2
|
||||||
|
add(m[address[1]], new_op, address[2]+1)
|
||||||
|
elseif next_op[1] == "return" or
|
||||||
|
next_op[1] == "jump" or
|
||||||
|
next_op[1] == "scale" or
|
||||||
|
next_op[1] == "rotate" then
|
||||||
|
new_op = {"draw", cur_op[2]/2, cur_op[3]/2}
|
||||||
|
add(m[address[1]], new_op, address[2]+1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function remove_node(m, record, linked_editing)
|
||||||
|
address = record.address
|
||||||
|
cur_op = record.operation
|
||||||
|
next_op = m[address[1]][address[2]+1]
|
||||||
|
|
||||||
|
if next_op[1] == "draw" or
|
||||||
|
next_op[1] == "move" then
|
||||||
|
if linked_editing then
|
||||||
|
next_op[2] += cur_op[2]
|
||||||
|
next_op[3] += cur_op[3]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
deli(m[address[1]], address[2])
|
||||||
|
end
|
102
vector_engine.lua
Executable file
102
vector_engine.lua
Executable file
@ -0,0 +1,102 @@
|
|||||||
|
--vectorator
|
||||||
|
printh("\n\n\n\n\n\n\n\n\n")
|
||||||
|
|
||||||
|
instructions = {
|
||||||
|
"return",
|
||||||
|
"jump",
|
||||||
|
"scale",
|
||||||
|
"rotate",
|
||||||
|
"draw",
|
||||||
|
"draw_abs",
|
||||||
|
"move",
|
||||||
|
"place"
|
||||||
|
}
|
||||||
|
|
||||||
|
function empty_state()
|
||||||
|
return {
|
||||||
|
stack={{"main", 1}},
|
||||||
|
scale=1,
|
||||||
|
position={0,0},
|
||||||
|
rotation=0
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
state = nil
|
||||||
|
|
||||||
|
function vectorate(mem, callbacks)
|
||||||
|
state = empty_state()
|
||||||
|
|
||||||
|
while true do
|
||||||
|
height = #state.stack
|
||||||
|
bank = state.stack[height][1]
|
||||||
|
index = state.stack[height][2]
|
||||||
|
|
||||||
|
state.stack[height][2] += 1
|
||||||
|
|
||||||
|
instruction = mem[bank][index]
|
||||||
|
perform(state, instruction, callbacks)
|
||||||
|
|
||||||
|
//printh(list_table(state))
|
||||||
|
if (#state.stack == 0) break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function perform(s, op, cb)
|
||||||
|
if cb == nil then
|
||||||
|
cb = {pre=nil, post=nil}
|
||||||
|
end
|
||||||
|
|
||||||
|
if cb.pre ~= nil then
|
||||||
|
cb.pre(s, op)
|
||||||
|
end
|
||||||
|
|
||||||
|
if op[1] == "return" then
|
||||||
|
s.stack[#s.stack] = nil
|
||||||
|
elseif op[1] == "jump" then
|
||||||
|
if m[op[2]] ~= nil then
|
||||||
|
add(s.stack, {op[2], 1})
|
||||||
|
end
|
||||||
|
elseif op[1] == "scale" then
|
||||||
|
s.scale = s.scale * op[2]
|
||||||
|
elseif op[1] == "rotate" then
|
||||||
|
s.rotation += op[2]
|
||||||
|
else
|
||||||
|
x = s.scale * (
|
||||||
|
op[2]*cos(s.rotation)
|
||||||
|
- op[3]*sin(s.rotation))
|
||||||
|
y = s.scale * (
|
||||||
|
op[2]*sin(s.rotation)
|
||||||
|
+ op[3]*cos(s.rotation))
|
||||||
|
|
||||||
|
if op[1] == "move" then
|
||||||
|
s.position[1] = s.position[1] + x
|
||||||
|
s.position[2] = s.position[2] + y
|
||||||
|
end
|
||||||
|
|
||||||
|
if op[1] == "place" then
|
||||||
|
s.position[1] = x
|
||||||
|
s.position[2] = y
|
||||||
|
end
|
||||||
|
|
||||||
|
if op[1] == "draw" then
|
||||||
|
line(s.position[1], s.position[2],
|
||||||
|
s.position[1]+x, s.position[2]+y,
|
||||||
|
10)
|
||||||
|
s.position[1] += x
|
||||||
|
s.position[2] += y
|
||||||
|
end
|
||||||
|
|
||||||
|
if op[1] == "draw_abs" then
|
||||||
|
line(s.position[1],
|
||||||
|
s.position[2],
|
||||||
|
x, y,
|
||||||
|
10)
|
||||||
|
s.position[1] = x
|
||||||
|
s.position[2] = y
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if cb.post ~= nil then
|
||||||
|
cb.post(s, op)
|
||||||
|
end
|
||||||
|
end
|
174
vectorator.p8
Normal file
174
vectorator.p8
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
pico-8 cartridge // http://www.pico-8.com
|
||||||
|
version 41
|
||||||
|
__lua__
|
||||||
|
#include help_functions.lua
|
||||||
|
#include vector_engine.lua
|
||||||
|
#include vram.lua
|
||||||
|
#include update_logic.lua
|
||||||
|
#include draw_logic.lua
|
||||||
|
#include listing_pane.lua
|
||||||
|
#include center_pane.lua
|
||||||
|
#include render_pane.lua
|
||||||
|
__gfx__
|
||||||
|
00000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000
|
||||||
|
07700770000000000000000000000c00111111111111111111111111111111111111199999999991111111188111111100000000000000000000000000000000
|
||||||
|
0780087000099000000660000ccc0c00111111188111111111111111111111111111191111111191111111888811111100000000000000000000000000000000
|
||||||
|
00000000009009000060060000077c00111111811811111111111118111111111111111118881191111111111111111100000000000000000000000000000000
|
||||||
|
00000000009009000060060000c77000111118111181111111118118111111a1111199111818119111119911bb11111100000000000000000000000000000000
|
||||||
|
07800870000990000006600000c0ccc01111888118881111111118111111aa1111191a918888819111191191b111111100000000000000000000000000000000
|
||||||
|
07700770000000000000000000c0000011111181181111111111111991aa11111119a191888881911119119111b1111100000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000199991811819999111188191a91111111111991a88888191111199111111b11100000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000019111181181111911111119a19188111111a1111a1111191116611cc1c1bb11100000000000000000000000000000000
|
||||||
|
0000000000000000000000000bbb000019111181181111911111111991111111111a111119911191161161177c11111100000000000000000000000000000000
|
||||||
|
0000000000000000000000000bb000001911118118111191111111a11181111111a1111191a91991161161c77111111100000000000000000000000000000000
|
||||||
|
0000000000000000000000000b0b00001911111111111191111111a18118111111a111119a191111116611c1cc11111100000000000000000000000000000000
|
||||||
|
0000000000000000000000000000b0b0191111111111119111111a11811111111a111111a9911111111111111111111100000000000000000000000000000000
|
||||||
|
00000000000000000000000000000bb0191111111111119111111a11111111111a11111a11111111111111888811111100000000000000000000000000000000
|
||||||
|
0000000000000000000000000000bbb019999999999999911111a11111111111111111a111111111111111188111111100000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000111111188111111111111111111111111111991111111111000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000111111811811111111111111111111111111911111111111000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000111118111181111111111118111111111111111111111111000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000111188811888111111118118111111a11111991111111111000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000001111118118111111111118111111aa1111191a9111111111000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000011111181181111111111111111aa11111119a19111111111000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000199991811819999111188111aa1111111111991a11111111000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000019111181181111911111111a11188111111a1111a1111111000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000019111181181111911111111a11111111111a111119911191000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000001911111111111191111111a11181111111a1111191a91991000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000001911111111111191111111a18118111111a111119a191111000000000000000000000000000000000000000000000000
|
||||||
|
07777770000000000000000000000000191111111111119111111a11811111111a111111a9911111000000000000000000000000000000000000000000000000
|
||||||
|
07888870000000000000000000000000191111111111119111111a11111111111a11111a11111111000000000000000000000000000000000000000000000000
|
||||||
|
0078870000000000000000000000000019999999999999911111a11111111111111111a111111111000000000000000000000000000000000000000000000000
|
||||||
|
00077000000000000000000000000000111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000
|
||||||
|
__label__
|
||||||
|
66656565666555556665666566656665656555556565666566556655555566655665555556656665666556656655566555555555555555555555555555555555
|
||||||
|
56556565655555556555666565655655656555556565656565656565555556556555555565555655656565656565655555555555555555555555555555555555
|
||||||
|
56556665665555556655656566655655666555556665666565656565555556556665555566655655665565656565655555555555555555555555555555555555
|
||||||
|
56556565655555556555656565555655556555556565656565656565555556555565555555655655656565656565656555555555555555555555555555555555
|
||||||
|
56556565666555556665656565555655666555556565656565656665555566656655555566555655656566556565666555555555555555555555555555555555
|
||||||
|
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
|
||||||
|
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
|
||||||
|
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
|
||||||
|
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
|
||||||
|
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
|
||||||
|
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
|
||||||
|
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555577777755555555555555555555555555555555555
|
||||||
|
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555578888755555555555555555555555555555555555
|
||||||
|
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555557887555555555555555555555555555555555555
|
||||||
|
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555775555555555555555555555555555555555555
|
||||||
|
00000000000000000000000000000000000000055777777777777777777550000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000055711111111111111117550000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000ddd0ddd0ddd0dd00000000000000000000055711111111111111117550000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0d00ddd0d0d00d00d0d00d000000000000000005571111111881111111755000000000000bbb0000000000000000000000000000000000000000000000000000
|
||||||
|
0000d0d0ddd00d00d0d000000000000000000005571111118118111111755000000000000bb00000000000000000000000000000000000000000000000000000
|
||||||
|
0d00d0d0d0d00d00d0d00d000000000000000005571111181111811111755000000000000b0b0000000000000000000000000000000000000000000000000000
|
||||||
|
0000d0d0d0d0ddd0d0d000000000000000000005571111888118881111755000000000000000b0b0000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000055711111181181111117550000000000000000bb0000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000005571999918118199991755000000000000000bbb0000000000000000000000000000000000000000000000000
|
||||||
|
6660666066600000666066600000000000000005571911118118111191755000000000000000000d000000000000000000000000000000000000000000000000
|
||||||
|
60606060006000000060606000000000000000055719111181181111917550000000000000000000d00000000000000000000000000000000000000000000000
|
||||||
|
666066600660000066606660000000000000000557191111811811119175500000000000000000000d0000000000000000000000000000000000000000000000
|
||||||
|
6000606000600600600060600000000000000005571911111111111191755000000000000000000000d660000000000000000000000000000000000000000000
|
||||||
|
60006660666060006660666000000000000000055719111111111111917550000000000000000000006da6000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000055719111111111111917550000000000000000000006006aaa000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000055719999999999999917550000000000000000000000660000aaa000000000000000000000000000000000000
|
||||||
|
0dd0dd000000d000ddd0d0d0ddd00000000000055711111111111111117550000000000000000000000000000000aaa000000000000000000000000000000000
|
||||||
|
d0000d000000d000d0d0d0d0d0d00000000000055777777777777777777550000000000000000000000000000000000aaaa09900000000000000000000000000
|
||||||
|
ddd00d000000ddd0ddd0ddd0ddd0000000000005555555555555555555555000000000000000000000000000000000000009a090000000000000000000000000
|
||||||
|
00d00d000000d0d0d0d000d0d0d0000000000005555555555555555555555000000000000000000000000000000000000009a090000000000000000000000000
|
||||||
|
dd00ddd00d00ddd0ddd000d0ddd000000000000555555555555555555555500000000000000000000000000000000000000a9900000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000556666666666666666665500000000000000000000000000000000000000a0000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000055611111111111111116550000000000000000000000000000000000000a00000000000000000000000000000
|
||||||
|
dd00dd00ddd000000000ddd000000000000000055611111111111111116550000000000000000000000000000000000000a00000000000000000000000000000
|
||||||
|
d0d00d00d0d00000000000d000000000000000055611111111111111116550000000000000000000000000000000000000a00000000000000000000000000000
|
||||||
|
d0d00d00d0d0000000000dd00000000000000005561111111811111111655000000000000000000000000000000000000a000000000000000000000000000000
|
||||||
|
d0d00d00d0d000000d0000d000000000000000055611118118111111a1655000000000000000000000000000000000000a000000000000000000000000000000
|
||||||
|
ddd0ddd0ddd00d00d000ddd0000000000000000556111118111111aa11655000000000000000000000000000000000000a000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000005561111111991aa111165500000000000000000000000000000000000a0000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000055611188191a9111111655000000000000000000000bbb00000000000a0000000000000000000000000000000
|
||||||
|
dd000000ddd00000dd00ddd00000000000000005561111119a19188111655000000000000000000000bb00000000000a00000000000000000000000000000000
|
||||||
|
d0d00000d00000000d0000d00000000000000005561111111991111111655000000000000000000000b0b0000000000a00000000000000000000000000000000
|
||||||
|
d0d0ddd0ddd000000d000dd0000000000000000556111111a111811111655000000000000000000000000b0b0000000a00000000000000000000000000000000
|
||||||
|
d0d0000000d00d000d0000d0000000000000000556111111a1811811116550000000000000000000000000bb000000a000000000000000000000000000000000
|
||||||
|
ddd00000ddd0d000ddd0ddd000000000000000055611111a1181111111655000000000000000000000000bbb000000a000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000055611111a1111111111655000000000000000000000000000d00000a000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000005561111a1111111111165500000000000c0000000000000000d000a0000000000000000000000000000000000
|
||||||
|
0dd0ddd00000ddd0ddd0000000000000000000055611111111111111116550000000ccc0c00000000000000000d00a0000000000000000000000000000000000
|
||||||
|
d000d0d0000000d0d0000000000000000000000556666666666666666665500000000077c000000000000000000d990000000000000000000000000000000000
|
||||||
|
ddd0d0d0000000d0ddd00000000000000000000555555555555555555555500000000c7700000000000000000009d09000000000000000000000000000000000
|
||||||
|
00d0d0d0000000d000d00000000000000000000555555555555555555555500000000c0ccc000000000000000aa9009000000000000000000000000000000000
|
||||||
|
dd00ddd00d0000d0ddd00000000000000000000555555555555555555555500000000c0d000000000000000aa000990000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000055666666666666666666550000000000d000000000000aaa00000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000556111111111111111165500000000000d000000000aa00000000000000000000000000000000000000000000
|
||||||
|
dd000000dd00ddd00000d000000000000000000556111199111111111165500000000000d000000aaa0000000000000000000000000000000000000000000000
|
||||||
|
d0d000000d00d0000000d000000000000000000556111191111111111165500000000000d0000aa0000000000000000000000000000000000000000000000000
|
||||||
|
d0d0ddd00d00ddd00000ddd00000000000000005561111111111111111655000000000000d9aa000000000000000000000000000000000000000000000000000
|
||||||
|
d0d000000d0000d00d00d0d00000000000000005561111991111111111655000000000009da90000000000000000000000000000000000000000000000000000
|
||||||
|
ddd00000ddd0ddd0d000ddd000000000000000055611191a9111111111655000000000009a090000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000005561119a1911111111165500000000000a9900000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000005561111991a1111111165500000000000a0000000000000000000000000000000000000000000000000000000
|
||||||
|
ddd0ddd0ddd0dd000dd0d0d0000000000000000556111a1111a111111165500000000000a0000000000000000000000000000000000000000000000000000000
|
||||||
|
0d00d000d0d0d0d0d000d0d0000000000000000556111a11111991119165500000000000a0000000000000000000000000000000000000000000000000000000
|
||||||
|
0d00dd00ddd0d0d0d000ddd000000000000000055611a1111191a919916550000000000a00000000000000000000000000000000000000000000000000000000
|
||||||
|
0d00d000d0d0d0d0d00000d000000000000000055611a111119a1911116550000000000a00000000000000000000000000000000000000000000000000000000
|
||||||
|
dd00d000d0d0d0d00dd0ddd00000000000000005561a111111a99111116550000000000a00000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000005561a11111a111111116550000000000a00000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000556111111a111111111655000000000a000000000000000000077007700000000000000000000000000000000
|
||||||
|
ddd0ddd0ddd0dd000dd0d0d00000000000000005561111111111111111655000000000a000000000000000000078008700000000000000000000000000000000
|
||||||
|
0d00d000d0d0d0d0d000d0d00000000000000005566666666666666666655000000000a000000000000000000000000000000000000000000000000000000000
|
||||||
|
0d00dd00ddd0d0d0d000ddd0000000000000000555555555555555555555500000000a0000000000000000000000000000000000000000000000000000000000
|
||||||
|
0d00d000d0d0d0d0d00000d0000000000000000555555555555555555555500000000a0000000000000000000078008700000000000000000000000000000000
|
||||||
|
dd00d000d0d0d0d00dd0ddd0000000000000000555555555555555555555500000000a0000000000000000000077007700000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000556666666666666666665500000000a0000000000000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000055611111111111111116550000000a00000000000000000000000000000000000000000000000000000000000
|
||||||
|
ddd0ddd0ddd0d0d0ddd0dd0000000000000000055611111118811111116550000000a00000000000000000000000000000000000000000000000000000000000
|
||||||
|
d0d0d0000d00d0d0d0d0d0d000000000000000055611111188881111116550000000a00000000000000000000000000000000000000000000000099000000000
|
||||||
|
dd00dd000d00d0d0dd00d0d000000000000000055611111111111111116550000000a000000000000000000000000000000000000000000000009a0900000000
|
||||||
|
d0d0d0000d00d0d0d0d0d0d000000000000000055611119911bb1111116550000009900000000000000000000000000000000000000000000000900900000000
|
||||||
|
d0d0ddd00d000dd0d0d0d0d000000000000000055611191191b1111111655000009a090000000000000000000000000000000000000000000000a99000000000
|
||||||
|
0000000000000000000000000000000000000005561119119111b111116550000090a9000000000000000000000000000000000000000000000a000000000000
|
||||||
|
000000000000000000000000000000000000000556111199111111b11165500000099a00000000000000000000000000000000000000000000a0000000000000
|
||||||
|
0000ddd0ddd0dd000dd0d0d0000000000000000556116611cc1c1bb11165500000000a00000000000000000000000000000000000000000000a0000000000000
|
||||||
|
0d00d000d0d0d0d0d000d0d00d0000000000000556161161177c111111655000000000a000000000000000000000000000000000000000000a00000000000000
|
||||||
|
0000dd00ddd0d0d0d000ddd0000000000000000556161161c7711111116550000000000a0000000000000000000000000000000000000000a000000000000000
|
||||||
|
0d00d000d0d0d0d0d00000d00d0000000000000556116611c1cc11111165500000000000a000000000000000000000000000000000000000a000000000000000
|
||||||
|
0000d000d0d0d0d00dd0ddd0000000000000000556111111111111111165500000000000a00000000000000000000000000000000000000a0000000000000000
|
||||||
|
0000000000000000000000000000000000000005561111118888111111655000000000000a000000000000000000000000000000000000a00000000000000000
|
||||||
|
00000000000000000000000000000000000000055611111118811111116550000000000000a0000000000000000000000000000000000a000000000000000000
|
||||||
|
ddd00dd0ddd00000ddd00000ddd000000000000556111111111111111165500000000000000a000000000000000000000000000000000a000000000000000000
|
||||||
|
d0d0d0d00d000000d0d0000000d0000000000005566666666666666666655000000000000000a0000000000000000000000000000000a0000000000000000000
|
||||||
|
dd00d0d00d000000d0d000000dd0000000000005555555555555555555555000000000000000a000000000000000000000000000000a00000000000000000000
|
||||||
|
d0d0d0d00d000000d0d0000000d00000000000055555555555555555555550000000000000000a00000000000000000000000000000a00000000000000000000
|
||||||
|
d0d0dd000d000000ddd00d00ddd000000000000555555555555555555555500000000000000000a000000000000000000000000000a000000000000000000000
|
||||||
|
0000000000000000000000000000000000000005555555555555555555555000000000000000000a0000000000000000000000000a0000000000000000000000
|
||||||
|
0000000000000000000000000000000000000005555555555555555555555000000000000000000a000000000000000000000000990000000000000000000000
|
||||||
|
dd000000dd00ddd000000000ddd00000000000055555555555555555555550000000000000000000a990000000000aaaaaaaaaa9a09000000000000000000000
|
||||||
|
d0d000000d00d00000000000d0d000000000000555555555555555555555500000000000000000009da9aaaaaaaaa00000000009009000000000000000000000
|
||||||
|
d0d0ddd00d00ddd00000ddd0ddd00000000000055555555555555555555550000000000000000000d00900000000000000000000990000000000000000000000
|
||||||
|
d0d000000d0000d00d00000000d000000000000555555555555555555555500000000000000000dd099000000000000000000000000000000000000000000000
|
||||||
|
ddd00000ddd0ddd0d000000000d00d00000000055555555555555555555550000000000000000d00000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000555555555555555555555500000000000000cd000000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000055555555555555555555550000000000cccdc0000000000000000000000000000000000000000000000000000
|
||||||
|
dd000000dd00ddd00000d0000000ddd00000000555555555555555555555500000000000077c0000000000000000000000000000000000000000000000000000
|
||||||
|
d0d000000d0000d00000d0000000d0d00000000555555555555555555555500000000000c7700000000000000000000000000000000000000000000000000000
|
||||||
|
d0d0ddd00d0000d00000ddd00000d0d00000000555555555555555555555500000000000c0ccc000000000000000000000000000000000000000000000000000
|
||||||
|
d0d000000d0000d00d00d0d00000d0d00000000555555555555555555555500000000000c0000000000000000000000000000000000000000000000000000000
|
||||||
|
ddd00000ddd000d0d000ddd00d00ddd0000000055555555555555555555550000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000055555555555555555555550000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000055555555555555555555550000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
ddd0ddd0ddd0d0d0ddd0dd0000000000000000055555555555555555555550000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
d5d5d5555d55d5d5d5d5d5d555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
|
||||||
|
dd66dd555d55d6d5dd65d5d556656665666566655555555555555666665555555666665555655666665555556665566566655555666556656655666555555555
|
||||||
|
d6d5d6655d55d6d5d5d5d5d565556565656565655555555555556656566556556665566556556655666555556555656565655555666565656565655555555555
|
||||||
|
d6d6ddd55d555dd5d5d5d5d565556655666566555555555555556665666566656655566556556655566555556655656566555555656565656565665555555555
|
||||||
|
66555665555556556565555565656565656565655555555555556656566556556665566556556655666555556555656565655555656565656565655555555555
|
||||||
|
56666655555556556655555566656565656566655555555555555666665555555666665565555666665555556555665565655555656566556665666555555555
|
||||||
|
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
|
||||||
|
56666655555556666655555566655665555566656655665555555666665555555666665555556665566555556655666565556665666566655555555555555555
|
||||||
|
66565665565566656665555556556565555565656565656555556656566556556655566555555655656555556565655565556555565565555555555555555555
|
||||||
|
66656665666566555665555556556565555566656565656555556665666566656655566555555655656555556565665565556655565566555555555555555555
|
||||||
|
66565665565566555665555556556565555565656565656555556656566556556665666555555655656555556565655565556555565565555555555555555555
|
||||||
|
56666655555556666655555556556655555565656665666555555666665555555666665555555655665555556665666566656665565566655555555555555555
|
||||||
|
|
BIN
vectorator.p8.png
Normal file
BIN
vectorator.p8.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
32
vram.lua
Executable file
32
vram.lua
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
--vram
|
||||||
|
m = {}
|
||||||
|
|
||||||
|
m = {}
|
||||||
|
|
||||||
|
m["main"] = {
|
||||||
|
{"place", 83, 28},
|
||||||
|
{"scale", 1.6848},
|
||||||
|
{"draw", 10.5, 3},
|
||||||
|
{"draw", -3.8129, 8.8452},
|
||||||
|
{"scale", 1.2497},
|
||||||
|
{"draw", -10.7256, 0.3008},
|
||||||
|
{"jump", "fancy"},
|
||||||
|
{"jump", "fancy"},
|
||||||
|
{"return"},
|
||||||
|
}
|
||||||
|
|
||||||
|
m["fancy"] = {
|
||||||
|
{"rotate", 0.32},
|
||||||
|
{"draw", -5.9592, -7.2068},
|
||||||
|
{"draw", -7.5694, -2.1986},
|
||||||
|
{"draw", 3.4559, 2.4058},
|
||||||
|
{"draw", 0.9285, 3.3168},
|
||||||
|
{"draw", -1.5299, 3.2654},
|
||||||
|
{"draw", -4.6618, 0.9604},
|
||||||
|
{"draw", -3.7027, -3.3118},
|
||||||
|
{"draw", 0.147, -2.3546},
|
||||||
|
{"draw", 2.0169, -4.0995},
|
||||||
|
{"draw", -4.5193, -0.6135},
|
||||||
|
{"draw", -4.2146, 3.2033},
|
||||||
|
{"return"},
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user