1
0
Fork 0
mirror of https://github.com/notwa/mm synced 2024-11-05 03:39:02 -08:00

add epona glitch monitoring script

This commit is contained in:
Connor Olding 2015-12-28 22:04:39 -08:00
parent 2e42819b99
commit 5432a79b3c
2 changed files with 53 additions and 1 deletions

View file

@ -12,7 +12,7 @@ Note that some scripts lack full support for Ocarina of Time.
## Scripts ## Scripts
#### actor listor.lua #### actor lister.lua
Lists actor data onscreen, Lists actor data onscreen,
and focuses the camera on them. and focuses the camera on them.
Actors may be selected using the D-Pad. Actors may be selected using the D-Pad.
@ -70,6 +70,11 @@ These scripts look for changes in RAM regions and print them in detail.
These are mostly used for documenation. These are mostly used for documenation.
#### epona monitor.lua
used to investigate [this glitch with unloading Epona.][eponaglitch]
[eponaglitch]: https://www.youtube.com/watch?v=kX0ZcIS8P84
#### event flag monitor.lua #### event flag monitor.lua
Monitors event flags, Monitors event flags,
and announces which bits are being changed, and announces which bits are being changed,

47
Lua/epona monitor.lua Normal file
View file

@ -0,0 +1,47 @@
require = require "depend"
require "boilerplate"
require "addrs.init"
require "messages"
require "actors"
local actor_names = require "data.actor names"
local epona_addr = 0
while true do
local nearest = {}
local offset = 0x800000
for at, ai, addr in iter_actors() do
local actor_number = R2(addr)
local name = actor_names[actor_number]
local size = R4(addr - 0xC) -- read linked list data above the actor
if actor_number == 0x00D then
epona_addr = addr
end
if epona_addr then
local diff = addr - epona_addr
if diff >= 0 and diff < offset then
offset = diff
nearest.name = name or "[error]"
nearest.addr = addr
nearest.at = at
nearest.ai = ai
nearest.size = size
end
end
end
if nearest.addr then
local color = offset <= nearest.size and 'white' or 'yellow'
T_BR(0, 4, 'white', 'Epona: %06X', epona_addr)
T_BR(0, 3, 'white', '%s: %06X', nearest.name, nearest.addr)
T_BR(0, 2, color, 'Offset: %06X', offset)
T_BR(0, 1, color, 'Size: %06X', nearest.size)
T_BR(0, 0, 'white', 'Type, Index: %2i, %2i', nearest.at, nearest.ai)
else
T_BR(0, 0, 'yellow', 'Epona not found')
end
emu.frameadvance()
end