Fightcade Lua Hotkey May 2026
This uses memory reading (game-specific). The example below is for Street Fighter III: 3rd Strike (USA). You must find the correct memory addresses for your game.
local hitbox_key = 0x68 -- H key local hitbox_enabled = false-- Addresses for 3rd Strike hitboxes (example only – verify with emulator) local P1_X = 0x203F20 local P1_HITBOX = 0x2040A0
function toggle_hitboxes() hitbox_enabled = not hitbox_enabled if hitbox_enabled then gui.text(10, 10, "Hitboxes ON", 0xFFFFFF, 0x000000) -- In a real script, you'd draw rectangles via gui.draw_box() -- This requires reading memory offsets per character. else gui.text(10, 10, "Hitboxes OFF", 0xFFFFFF, 0x000000) end end
function on_frame() if input.get_key_state(hitbox_key) == 1 and not hitbox_enabled then toggle_hitboxes() end end
emu.register_frame(on_frame)
To interact with the game controls (Pressing P1 Button 1, etc.), you use joystick.set(player, button, state). fightcade lua hotkey
Example: Hold Button 1 for Player 1
joystick.set(0, "Button1", true) -- Press
emu.frameadvance()
joystick.set(0, "Button1", false) -- Release
Here’s a complete input.lua you can adapt. It supports multiple hotkeys, per-key state tracking, and automatic macro cancellation.
-- Fightcade Advanced Hotkey System local active_macro = nil local macro_frame = 0 local last_keys = {}local macros = ["u"] = -- Shinkuu Hadoken trigger = "u", sequence = "down", "downright", "right", "down", "downright", "right", "punch1" , frame_duration = 2 -- each step lasts 2 frames , ["i"] = -- Quick double tap forward (dash) trigger = "i", sequence = "right", "right" , frame_duration = 1
function input_frame() local current_keys = input.get_keys()
-- Start new macros on rising edge for id, macro in pairs(macros) do if current_keys[macro.trigger] and not last_keys[macro.trigger] then active_macro = macro = macro, step = 1, frame_in_step = 0, trigger_key = macro.trigger end end -- Update active macro if active_macro then -- Cancel if trigger key released if not current_keys[active_macro.trigger_key] then active_macro = nil else active_macro.frame_in_step = active_macro.frame_in_step + 1 if active_macro.frame_in_step >= active_macro.macro.frame_duration then active_macro.frame_in_step = 0 active_macro.step = active_macro.step + 1 end if active_macro.step > #active_macro.macro.sequence then active_macro = nil else local btn = active_macro.macro.sequence[active_macro.step] input.set(btn, true) end end end last_keys = current_keys
end
To install, drop this into your game’s config/input.lua, edit the macros table, and restart Fightcade. Your hotkeys will be live immediately.
| Problem | Likely Fix |
| :--- | :--- |
| Script won’t load | Check the file extension (.lua, not .txt). Use Fightcade’s System > Lua Scripting > Run Script. |
| Hotkey does nothing | Verify the key code. Use print(input.get_key_state(0x13)) to see if Fightcade detects your key. |
| Game crashes when script runs | You attempted to read an invalid memory address. Double-check your peek/poke addresses. |
| Hotkey triggers multiple times | Add a debounce flag (the hotkey_pressed pattern shown earlier). |
| Script works in FBNeo standalone but not Fightcade | Some functions (like emu.pause()) are disabled in Fightcade’s network play to prevent desyncs. Use save/load states instead. |
Fightcade Lua uses low‑level scancodes. Common examples:
Full scancode tables can be found in Fightcade’s documentation or community repositories.
A hotkey script typically does three things:
Here’s the most basic structure:
-- hotkey_example.lua local function on_hotkey_pressed() -- This runs when the key is hit emu.speed("100%") -- just an example action console.print("Hotkey triggered!") end
-- Bind the function to the F1 key (keycode 59 in SDL) emu.registerhotkey(59, on_hotkey_pressed)
Keycodes matter. Fightcade uses SDL scancodes. Common values:
Lua hotkeys are powerful, but with great power comes great responsibility.
✅ Allowed:
❌ Not Allowed (and detectable):
Fightcade’s anti-cheat does not actively scan Lua, but replays and user reports can catch unfair macros. Use hotkeys only for offline training or friendly lobbies with consent.
This snippet demonstrates the core logic used in "Tool-Assisted Speedruns" (TAS) and modern "Hitbox" controllers: