There's still a possibility it's defined somewhere else because there's a limited number of dungeons and a limited amount of data that can be stored in the game save. It might be worth looking into how the number of keys you have in a dungeon is used (8015E71C). Flags for individual maps may be stored around that area too.
Seems I was both wrong and right about this.
There are flags for every scene stored from 8015E730, 0x20 bytes each (I think) and the scene number is simply used as an index for which set of flags to load (see 800304F4 in RAM for how it's done). Jason777, I think the only reason your test didn't work is because you didn't use the right set of flags when setting the actor variables, so they got reset upon leaving the room. Read this page again for proper information on which set of flags to use and how. I think the number of keys is done in the same way (haven't checked) but may only work for 12 scenes since that's the number of bytes used for them as default, though a workaround could be to use only 4 bits per dungeon so you could have 24 of them. It makes sense though because if you check the first 12 scenes, they're all dungeons or maps that use keys.
Last Edit: Aug 26, 2011 10:01:03 GMT -5 by deathbasket
So I realized that I never tried to code the Medusa's Glare hack mentioned earlier in the thread... Well, I took the day off and gave it a shot. It's a bit different than I imagined it and not everything I planned is in it, but it's not too bad. Little video of me showing off the way it works and some of the bugs:
There is no ReDead sound. I put a BPX on the PlaySound function spinout mentioned earlier... and a break was going off every single frame and the parameters varied greatly. Perhaps another time.
Instead of all type 5 actors within a certain radius freezing, I couldn't get that to work since for some reason I couldn't read the pointers to the "next" actor correctly.
No display list shield swap for the Mirror Shield, you just press D-Pad Up. Since I couldn't get the audio to play, I felt like the whole point of doing this was lost
Instead we have...
Z-Target a certain actor. Press D-Pad Up and it freezes. Press D-Pad Up again and it unfreezes.
You can only freeze one actor at a time. So don't try freezing another actor while one actor is already frozen. It'll just unfreeze.
The timer is kinda buggy/shitty so you'll find yourself pressing D-Pad Up and nothing happens every now and then. I shouldn lengthen the wait timer but I really don't care.
Every now and then after freezing and unfreezing an actor, they can't harm you and/or you can't harm them. There's probably some code within that certain actor which reads if the "Logic" routine pointer is NULL and causes this effect.