So I'm working on putting together a watch list/watch script for a hypothetical 100% run (Ages is the game kept in mind because of personal bias, but it's probably trivial to convert it for Seasons once the framework is in place). To my memory there's surprisingly a lot that goes into 100%. Here's what I've identified thus far in a pseudo-lua.
Language: lua
AGES
(Addresses are WRAM unless otherwise noted)
Track {"Trees", "UnRings", "Maple", "Signs", "Kills", "Ringdex", "Warps", "Rupees"}
Track.Trees {"Age", "Planted"}
Track.Trees.Age {0-15}
Track.Trees.Planted {0-15}
Track.UnRings {0-63}
Track.Maple
Track.Signs
Track.Kills
Track.Ringdex
Track.Warps
Track.Rupees
Link {"Health", "MaxHealth", "xpos", "ypos", "zpos", "Seeds", "Bombs", "Chus", "Ring", "Potion", "Song", "Plot", "Pegasus"}
Link.Health
Link.MaxHealth
Link.xpos
Link.ypos
Link.zpos
Link.Seeds
Link.Seeds {"Ember", "Mystery", "Scent", "Gale", "Pegasus"}
Link.Seeds.Ember {"Have", "Count"}
Link.Seeds.Mystery {"Have", "Count"}
Link.Seeds.Scent {"Have", "Count"}
Link.Seeds.Gale {"Have", "Count"}
Link.Seeds.Pegasus {"Have", "Count"}
Link.Bombs
Link.Chus
Link.Song
Link.Ring {"ID", "Name"}
Link.Ring.ID
Link.Ring.Name = RINGLIST[Link.Ring.ID]
Link.Potion
Link.Plot
Link.Pegasus
Foes {For each Foe in Foes make {"ID", "health", "xpos", "ypos", "zpos"}}
Foes[Foe].ID
Foes[Foe].health
Foes[Foe].status
Foes[Foe].name = FOELIST[Foes[i].ID]
Foes[Foe].xpos
Foes[Foe].ypos
Foes[Foe].zpos
RINGLIST { }
FOELIST { }
Addresses of note:
0x0620 (Maple?)
0x0641 (??????)
0x064F (??????)