1
0
Fork 0
mirror of https://github.com/notwa/mm synced 2024-05-18 13:23:23 -07:00
mm/Lua/count flags.lua

39 lines
880 B
Lua
Executable File

require "addrs"
-- precalculate hamming weights of bytes
hamming_weight = {}
for i = 0, 255 do
local w = 0
for b = 0, 7 do
w = w + bit.band(bit.rshift(i, b), 1)
end
hamming_weight[i] = w
end
function hamming_of(addr, size)
weight = 0
bytes = mainmemory.readbyterange(addr, size)
for k,v in pairs(bytes) do
if v ~= 0 then
weight = weight + hamming_weight[tonumber(v, 16)]
end
end
return weight
end
function hamming_of_A(a)
return hamming_of(a.addr, a.type)
end
print("###")
local current = 0
for i = 1, 5 do
local addr = addrs['current_scene_flags_'..tostring(i)].addr
current = current + hamming_of(addr, 4)
end
local ingame = hamming_of_A(addrs.scene_flags_ingame)
local save = hamming_of_A(addrs.scene_flags_save)
print("current", current)
print("ingame ", ingame)
print("save ", save)