diff --git a/plugins/cheat/init.lua b/plugins/cheat/init.lua index 9495cfc689b..0f9f4a99e1e 100644 --- a/plugins/cheat/init.lua +++ b/plugins/cheat/init.lua @@ -37,6 +37,10 @@ -- "varname": "tag", -- ... -- }, +-- "share": { +-- "varname": "tag", +-- ... +-- }, -- "script": { -- "on|off|run|change": "script", -- ... @@ -481,6 +485,16 @@ function cheat.startplugin() cheat.cheat_env[name] = emu.item(ram.items["0/m_pointer"]) end end + if cheat.share then + for name, tag in pairs(cheat.share) do + local share = manager:machine():memory().shares[tag] + if not share then + cheat_error(cheat, "missing share " .. share) + return + end + cheat.cheat_env[name] = share + end + end local param = cheat.parameter if not param then return diff --git a/plugins/cheatfind/init.lua b/plugins/cheatfind/init.lua index 2b7c1bb2db7..27290f6fe93 100644 --- a/plugins/cheatfind/init.lua +++ b/plugins/cheatfind/init.lua @@ -713,6 +713,9 @@ function cheatfind.startplugin() if getmetatable(dev.space).__name:match("device_t") then cheat.ram = { ram = dev.tag } cheat.script.run = "ram:write(" .. match.addr .. "," .. match.newval .. ")" + elseif getmetatable(dev.space).__name:match("memory_share") then + cheat.share = { share = dev.tag } + cheat.script.run = "share:write_" .. wid .. "(" .. match.addr .. "," .. match.newval .. ")" else cheat.space = { cpu = { tag = dev.tag, type = dev.sname } } cheat.script.run = "cpu:write_" .. wid .. "(" .. match.addr .. "," .. match.newval .. ")"