Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --new code finder
- executedcode = {}
- for i = 1, 0x10000 do --0, 0xFFFF do
- executedcode[i] = {i-1, 0}
- end
- lastexec = nil
- mode = "track"
- calls = 0
- function memfunc(addr)
- if mode=="track" then
- executedcode[addr+1][2] = executedcode[addr+1][2] + 1
- --memory.registerexec(addr,nil)
- lastexec = addr
- elseif executedcode[addr+1][2] == 0 then
- gui.register(function() gui.text(0,100,string.format("code at %x got executed",addr)) end )
- emu.pause()
- end
- end
- memory.registerexec(0,0x10000,memfunc)
- function h4(num)
- s = ""
- if num < 0x10 then s = s .. "0" end
- if num < 0x100 then s = s .. "0" end
- if num < 0x1000 then s = s .. "0" end
- return string.format("%s%x", s, num)
- end
- function iff(cond, a, b)
- --If and only if.
- if cond then
- return a
- else
- return b
- end
- end
- while(true) do
- keys = input.get()
- if keys["F11"] then
- break
- elseif keys["numpad/"] then
- memory.registerexec(0,0x10000,nil)
- table.sort(executedcode, function(a,b) return iff(a[2] < b[2], true, iff(a[2] == b[2], a[1] < b[1], false)) end)
- file = io.open("executioncount.txt","w")
- for _,b in pairs(executedcode) do
- file:write(string.format("%s: %i\n",h4(b[1]), b[2]))
- end
- file:close()
- offset = 0
- while executedcode[offset + 1][2] == 0 do offset = offset + 1 end
- local help = function()
- for i = 1, 25 do for j = 0, 2 do
- gui.text(j * 80, i * 8, h4(executedcode[i + j*25 + offset][1]) .. ": " .. executedcode[i + j*25 + offset][2])
- end end
- end
- gui.register(help)
- emu.pause()
- gui.register(nil)
- memory.registerexec(0,0x10000,memfunc)
- table.sort(executedcode, function(a,b) return a[1] < b[1] end)
- else
- emu.frameadvance()
- end
- end
- mode = "find"
- while(true) do
- emu.frameadvance()
- end
Advertisement
Add Comment
Please, Sign In to add comment