diff options
| author | 2016-04-07 19:38:18 -0500 | |
|---|---|---|
| committer | 2016-04-07 19:42:18 -0500 | |
| commit | d88bdb6869f49548dfa4ddfd7a5dd43a4df594b2 (patch) | |
| tree | eb555bfebd63803da48693b39c1b11bfa493fa93 /plugins/cheat | |
| parent | 9f95c2e6cb5aa3c48cfc499d45ba9f705385f23e (diff) | |
plugins/cheat: fix more (nw)
Diffstat (limited to 'plugins/cheat')
| -rw-r--r-- | plugins/cheat/init.lua | 4 | ||||
| -rw-r--r-- | plugins/cheat/xml_conv.lua | 48 |
2 files changed, 32 insertions, 20 deletions
diff --git a/plugins/cheat/init.lua b/plugins/cheat/init.lua index 705ecca77cb..94542aaafae 100644 --- a/plugins/cheat/init.lua +++ b/plugins/cheat/init.lua @@ -190,8 +190,8 @@ function cheat.startplugin() local scr scr = manager:machine().screens[screen] if not scr then - print("error loading cheat script: " .. cheat.desc) - cheat = nil + local tag + tag, scr = next(manager:machine().screens) -- get any screen return end cheat.cheat_env[name] = scr diff --git a/plugins/cheat/xml_conv.lua b/plugins/cheat/xml_conv.lua index c38d590ef14..712e4027c15 100644 --- a/plugins/cheat/xml_conv.lua +++ b/plugins/cheat/xml_conv.lua @@ -2,6 +2,12 @@ local xml = {} -- basic xml parser for mamecheat only local function xml_parse(data) + local function fix_gt(str) + str = str:gsub(">=", " ge ") + str = str:gsub(">", " gt ") + return str + end + data = data:gsub("(condition=%b\"\")", fix_gt) local cheat_str = data:match("<mamecheat.->(.*)</ *mamecheat>") local function get_tags(str) @@ -98,20 +104,24 @@ function xml.conv_cheat(data) data = data:lower() data = data:gsub("^[(](.-)[)]$", "%1") - data = data:gsub("lt", "<") - data = data:gsub("ge", ">=") - data = data:gsub("gt", ">") - data = data:gsub("le", "<=") + data = data:gsub("%f[%w]lt%f[%W]", "<") + data = data:gsub("%f[%w]ge%f[%W]", ">=") + data = data:gsub("%f[%w]gt%f[%W]", ">") + data = data:gsub("%f[%w]le%f[%W]", "<=") + data = data:gsub("%f[%w]eq%f[%W]", "==") + data = data:gsub("%f[%w]ne%f[%W]", "~=") data = data:gsub("!=", "~=") - data = data:gsub("frame", frame) - data = data:gsub("band", "&") - data = data:gsub("bor", "|") - data = data:gsub("rshift", ">>") - data = data:gsub("lshift", "<<") + data = data:gsub("||", " or ") + data = data:gsub("%f[%w]frame%f[%W]", frame) + data = data:gsub("%f[%w]band%f[%W]", "&") + data = data:gsub("%f[%w]bor%f[%W]", "|") + data = data:gsub("%f[%w]rshift%f[%W]", ">>") + data = data:gsub("%f[%w]lshift%f[%W]", "<<") + data = data:gsub("(%w-)%+%+", "%1 = %1 + 1") data = data:gsub("%f[%w](%x+)%f[%W]", "0x%1") - data = data:gsub("([%w_:]-).([pmrodi3])([bwdq])@(%w+) *(=*)", convert_memref) + data = data:gsub("([%w_:]-)%.([pmrodi3]-)([bwdq])@(%w+) *(=*)", convert_memref) repeat - data, count = data:gsub("([%w_:]-).([pmrodi3])([bwdq])@(%b()) *(=*)", convert_memref) + data, count = data:gsub("([%w_:]-)%.([pmrodi3]-)([bwdq])@(%b()) *(=*)", convert_memref) until count == 0 if write then data = data .. ")" @@ -132,14 +142,16 @@ function xml.conv_cheat(data) str = str .. ", \"auto\"" end str = str .. ", nil,\"" .. data["format"] .. "\"" - for count, block in pairs(data["argument"]) do - local expr = convert_expr(block["text"]) - if block["count"] then - for i = 0, block["count"] - 1 do - str = str .. "," .. expr:gsub("argindex", i) + if data["argument"] then + for count, block in pairs(data["argument"]) do + local expr = convert_expr(block["text"]) + if block["count"] then + for i = 0, block["count"] - 1 do + str = str .. "," .. expr:gsub("argindex", i) + end + else + str = str .. "," .. expr end - else - str = str .. "," .. expr end end return str .. ")" |
