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} --[[Root is at 0x0650]]
Track.Trees.Planted {0-15} --[[Need to find out how this is stored internally. Possibly Bitwise across two bytes. 0x????]]
Track.UnRings {0-63}
Track.Maple
Track.Signs --[[100 Signs. Only tracked in Seasons? Define it anyway]]
Track.Kills -- [[1k Kills.]]
Track.Ringdex --[[IIRC, this is bitwise across 4 bytes.]]
Track.Warps --[[Activated seed trees. How is this stored?]]
Track.Rupees --[[10,000 Rupees. Does this cross over between games?]]
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 --[[Refers to collected essences + if have big seed, probably bitwise but make sure!!]]
Link.Pegasus
Foes {For each Foe in Foes make {"ID", "health", "xpos", "ypos", "zpos"}} --[[NEED ROOT AND OFFSETS!]]
Foes[Foe].ID
Foes[Foe].health --[[If MaxHealth is tracked anywhere scrapable, use that. Otherwise build an index.]]
Foes[Foe].status
Foes[Foe].name = FOELIST[Foes[i].ID]
Foes[Foe].xpos
Foes[Foe].ypos
Foes[Foe].zpos
--[[The BlahLists may end up in their own definition files for convenience's sake]]
RINGLIST { }
FOELIST { }
Addresses of note:
0x0620 (Maple?)
0x0641 (??????)
0x064F (??????) --[[Probably for Slayer's Ring counter? Need to find Total Enemies Slain pointer anyway]]