fceux/output/luaScripts/taseditor/InputDisplay_for_Selection.lua

65 lines
2.5 KiB
Lua

---------------------------------------------------------------------------
-- Display Input at Selection cursor
-- by AnS, 2012
---------------------------------------------------------------------------
-- Showcases following functions:
-- * taseditor.getselection()
-- * taseditor.getinput()
---------------------------------------------------------------------------
-- Usage:
-- Run the script, unpause emulation (or simply Frame Advance once).
-- Now you can see additional joypad icon at the bottom left corner of FCEUX screen.
-- This icon displays which buttons are held at the selected frame.
-- If you have several frames selected, the joypad icon will only display buttons
-- of the first selected frame.
-- By default the script only shows 1P joypad, but you can change "num=2, on=false"
-- to "num=2, on=true" to also display 2P joypad and so on.
---------------------------------------------------------------------------
pads = {
{num=1, on=true, color="red", x=50, y=200, w=34, h=10},
{num=2, on=true, color="yellow", x=90, y=200, w=34, h=10},
{num=3, on=false, color="green", x=130, y=200, w=34, h=10},
{num=4, on=false, color="orange", x=170, y=200, w=34, h=10}
}
buttons = {
A = {x=30, y=5, w=3, h=3, bitmask=1},
B = {x=24, y=5, w=3, h=3, bitmask=2},
select = {x=18, y=7, w=3, h=1, bitmask=4},
start = {x=12, y=7, w=3, h=1, bitmask=8},
up = {x=4, y=1, w=2, h=2, bitmask=16},
down = {x=4, y=7, w=2, h=2, bitmask=32},
left = {x=1, y=4, w=2, h=2, bitmask=64},
right = {x=7, y=4, w=2, h=2, bitmask=128}
}
function draw_joypads()
if (taseditor.engaged()) then
selection_table = taseditor.getselection();
if (selection_table ~= nil) then
selection_start = selection_table[1];
for _, pad in ipairs(pads) do
if pad.on then
gui.drawbox(pad.x, pad.y, pad.x+pad.w, pad.y+pad.h, "#3070ffb0")
gui.drawbox(pad.x+4, pad.y+4, pad.x+6, pad.y+6, "black")
controller = taseditor.getinput(selection_start, pad.num)
for name, btn in pairs(buttons) do
if (AND(controller, btn.bitmask) ~= 0) then
gui.drawbox(pad.x + btn.x, pad.y + btn.y, pad.x + btn.x + btn.w, pad.y + btn.y + btn.h, pad.color)
else
gui.drawbox(pad.x + btn.x, pad.y + btn.y, pad.x + btn.x + btn.w, pad.y + btn.y + btn.h, "black")
end
end
end
end
end
else
gui.text(1, 9, "TAS Editor is not engaged.");
end
end
taseditor.registerauto(draw_joypads);