From aab79509761eee31c5a487b8a044e29d65162a20 Mon Sep 17 00:00:00 2001 From: Connor Olding Date: Thu, 7 May 2015 15:27:50 -0700 Subject: [PATCH] extend flag monitoring to OoT --- Lua/event flag monitor.lua | 69 +++++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 16 deletions(-) diff --git a/Lua/event flag monitor.lua b/Lua/event flag monitor.lua index 1c561cb..c0301c6 100644 --- a/Lua/event flag monitor.lua +++ b/Lua/event flag monitor.lua @@ -1,6 +1,7 @@ require "boilerplate" require "addrs.init" require "classes" +require "messages" local ignore = { -- every time a scene (un)loads @@ -30,30 +31,66 @@ function FlagMonitor:mark(i, x, x1) for which = 0, 7 do if bit.band(diff, 2^which) ~= 0 then local state = bit.band(x, 2^which) ~= 0 and 1 or 0 - local str = ('%02i,%i=%i (%s)'):format(i, which, state, self.name) - if not ignore[str] then - printf('%s @%i', str, now) - gui.addmessage(str) + local str + if oot then + local row = math.floor(i/2) + local col = which + (1 - (i % 2))*8 + str = ('%02i,%X=%i (%s)'):format(row, col, state, self.name) + else + str = ('%02i,%i=%i (%s)'):format(i, which, state, self.name) end local ib = i*8 + which if not self.modified[ib] then self.modified[ib] = true self.dirty = true + str = str..' (NEW!)' + end + if not ignore[str] then + printf('%s @%i', str, now) + message(str, 180) end end end end -local weg = FlagMonitor('weg', addrs.week_event_reg) -local inf = FlagMonitor('inf', addrs.event_inf) -local mmb = FlagMonitor('mmb', addrs.mask_mask_bit) -weg:load('data/_weg.lua') -inf:load('data/_inf.lua') -while mm do - weg:diff() - inf:diff() - mmb:diff() - weg:save() - inf:save() - emu.frameadvance() +if mm then + local weg = FlagMonitor('weg', addrs.week_event_reg) + local inf = FlagMonitor('inf', addrs.event_inf) + local mmb = FlagMonitor('mmb', addrs.mask_mask_bit) + weg:load('data/_weg.lua') + inf:load('data/_inf.lua') + while mm do + weg:diff() + inf:diff() + mmb:diff() + weg:save() + inf:save() + draw_messages() + emu.frameadvance() + end +elseif oot then + local eci = FlagMonitor('eci', AL(0xED4, 0x1C)) + local igi = FlagMonitor('igi', AL(0xEF0, 0x8)) + local it_ = FlagMonitor('it ', AL(0xEF8, 0x3C)) + local ei_ = FlagMonitor('ei ', AL(0x13FA, 0x8)) + eci:load('data/_eci.lua') + igi:load('data/_igi.lua') + it_:load('data/_it.lua') + ei_:load('data/_ei.lua') + eci.oot = true + igi.oot = true + it_.oot = true + ei_.oot = true + while oot do + eci:diff() + igi:diff() + it_:diff() + ei_:diff() + eci:save() + igi:save() + it_:save() + ei_:save() + draw_messages() + emu.frameadvance() + end end