mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-11-19 09:31:24 +00:00
85 lines
1.7 KiB
Lua
85 lines
1.7 KiB
Lua
|
-- JS debug support for MAME using -debugger none
|
||
|
|
||
|
mamedbg = {}
|
||
|
|
||
|
local debugging = false
|
||
|
local stopped = false
|
||
|
|
||
|
function mamedbg.init()
|
||
|
cpu = manager:machine().devices[":maincpu"]
|
||
|
mem = cpu.spaces["program"]
|
||
|
machine = manager:machine()
|
||
|
debugger = machine:debugger()
|
||
|
mamedbg.reset()
|
||
|
emu.register_periodic(function ()
|
||
|
if debugging and not stopped then
|
||
|
--print(debugger.execution_state)
|
||
|
lastBreakState = machine.buffer_save()
|
||
|
emu.pause()
|
||
|
stopped = true
|
||
|
end
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
function mamedbg.reset()
|
||
|
debugging = false
|
||
|
stopped = false
|
||
|
end
|
||
|
|
||
|
function mamedbg.start()
|
||
|
debugging = true
|
||
|
stopped = false
|
||
|
end
|
||
|
|
||
|
function mamedbg.is_stopped()
|
||
|
return debugging and stopped
|
||
|
end
|
||
|
|
||
|
function mamedbg.continue()
|
||
|
debugger:command("g")
|
||
|
end
|
||
|
|
||
|
function mamedbg.runTo(addr)
|
||
|
debugger:command(string.format("g %x", addr))
|
||
|
mamedbg.start()
|
||
|
end
|
||
|
|
||
|
function mamedbg.runToVsync(addr)
|
||
|
debugger:command("gv")
|
||
|
mamedbg.start()
|
||
|
end
|
||
|
|
||
|
function mamedbg.runUntilReturn(addr)
|
||
|
debugger:command("out")
|
||
|
mamedbg.start()
|
||
|
end
|
||
|
|
||
|
function mamedbg.step()
|
||
|
debugger:command("step")
|
||
|
mamedbg.start()
|
||
|
end
|
||
|
|
||
|
function string.fromhex(str)
|
||
|
return (str:gsub('..', function (cc)
|
||
|
return string.char(tonumber(cc, 16))
|
||
|
end))
|
||
|
end
|
||
|
|
||
|
function string.tohex(str)
|
||
|
return (str:gsub('.', function (c)
|
||
|
return string.format('%02X', string.byte(c))
|
||
|
end))
|
||
|
end
|
||
|
|
||
|
function table.tojson(t)
|
||
|
local result = {}
|
||
|
for key, value in pairs(t) do
|
||
|
-- prepare json key-value pairs and save them in separate table
|
||
|
table.insert(result, string.format("\"%s\":\"%s\"", key, value))
|
||
|
end
|
||
|
-- get simple json string
|
||
|
return "{" .. table.concat(result, ",") .. "}"
|
||
|
end
|
||
|
|
||
|
print("parsed Lua debugger script")
|