Pros:
Cons:
You can bind any keyboard key to a function. Here’s a table of useful “top” actions:
| Hotkey | Action |
|--------|--------|
| F1 | Reset game |
| F5 | Save state |
| F7 | Load state |
| F9 | Toggle FPS display |
| F12 | Take screenshot |
| P | Pause emulation |
| R | Record input replay |
Example for Reset Game:
if input.read()["F1"] then
emu.reset()
console.write("Game reset")
while input.read()["F1"] do emu.frameadvance() end
end
Here's a realistic example: you're running Third Strike. You bind F1 to toggle hitboxes, F2 to save state, F3 to load state, F4 to record a 10-second replay buffer. All without alt-tabbing, all while blocking mixups.
A minimal Lua script skeleton for Fightcade might look like: fightcade lua hotkey top
-- Fightcade Lua: Hotkey Top template local overlay = gui.create_overlay("Hotkey Top", 10, 10, 200, 100) overlay:set_alpha(0.8) overlay:show()function on_hotkey(key) if key == "F1" then memory.write_u8(0x2C4A, 1) -- toggle hitbox flag (example) overlay:set_text("Hitboxes ON") elseif key == "F2" then savestate.save(1) overlay:set_text("State saved") end end
bind_hotkey("F1", on_hotkey) bind_hotkey("F2", on_hotkey)
Fightcade’s Lua scripting allows you to bind keyboard keys to in-game actions, including arcade inputs, menu toggles, and even top-panel controls (like pausing, resetting, or quitting a match).
Here’s how to make a "top" hotkey script — typically meaning a script that triggers a top-level action (e.g., reset game, toggle FPS, or save/load state) with a single keypress.
This report explains how to create and use a Lua script for Fightcade that adds a top-position hotkey (e.g., for a toolbar/menu or overlay) or maps a function to a specific key when running Fightcade. It covers objectives, environment, implementation steps, example Lua script, installation, testing, and troubleshooting.
Save this as hotkey_top.lua in your Fightcade emulator folder (e.g., Fightcade/emulator/): Cons:
You can bind any keyboard key to a function
-- Fightcade Lua Hotkey: Top Actions -- Assign F5 to save state, F7 to load statewhile true do if input.read()["F5"] then -- Save state (slot 0) savestate.save(0) console.write("State saved to slot 0") while input.read()["F5"] do emu.frameadvance() end end
if input.read()["F7"] then -- Load state savestate.load(0) console.write("State loaded from slot 0") while input.read()["F7"] do emu.frameadvance() end end emu.frameadvance()
end
Choose a hotkey and an action
Create Lua script using emulator’s API
Install and run the script
Test across platforms and with netplay
Purpose: Analyze chaotic situations. See if a hit was high/low or if you could have teched a throw.
Hotkey: F2 to toggle 30% speed. F3 to advance one frame at a time.
-- Top Lua Hotkey: Frame-by-Frame Advance local slow_mo_active = false local frame_advance_key = 60 -- F3local function on_frame() if input.get_keys().keyboard[frame_advance_key] then if not slow_mo_active then emu.set_speed(10) -- 10% speed slow_mo_active = true else emu.set_speed(100) slow_mo_active = false end end end
emu.add_frame_callback(on_frame)
Pro tip: Use this to check the "top" players' replays. See exactly why their mix-up worked.