Dang, this is some cool stuff! Thanks guys!
So, I have something new. NL, I actually made the biggest PM ever to you about it: since I'm at the end of one of my hacks and need to make a functional epilogue, I've been working on trying to... well, figure out how it works.
Here are some notes:
"THE_END" code uses hex command 0x82 (0x82 0x00 0x00 0x00) to load the ending, but this loads everything in its entirety and isn't easy to manipulate.
0xCC1B1C - Start of Ending Events (I believe Eliwood's Ending is the Default)
Judging off the hex codes it looks like the game uses GOTO commands to go to certain events and then goes back to an ASM routine to check various conditions before moving on. At least, that's my guess on what happens. There's a pointer at 0x12A94 that points to the offset mentioned above; below that are even more offsets, which, when I tried to load with events, took me to different parts of the ending, such as Hector's Ending rather than Eliwood's. The events and ASM likely work together to get the effect of the multiple endings. I don't suggest dealing with it too much though.
0xCC1B2C - 0xCC1534 - Loads the CG of Eliwood and Hector being... you know, friends, with Lyn in the background
0xCC1B50 - 0xCC1280 - Eliwood's Ending Part 1 (before the game goes to the Epilogue)
0xCC1B84 - 0xCC168C - Eliwood's Ending Part 2 (Eliwood talks to the Tactician about the ascension ceremony)
0xCC1BF0 - 0xCC1900 - Hector's Ending Part 2 (Hector's story ending at the Epilogue)
These offsets more or less contain GOTO codes that load more events--the events that load the events are in the first offset, and the actual events are the second offset. I suggest just loading them using your own events as there are other events BESIDES the GOTO code mixed in there, and well, you don't want them. Also, there are multiple instances of loading the same events, likely related to the different conditions and whatnot.
Anyhow, while that's all well and good info I had to work pretty hard to find out, there are more offsets that should be known when dealing with making your own ending. These ones are a bit more important and you'll likely want to use them straight-up, whereas the original events can probably be, well, remade.
For instance, I already coded my ending before I wanted to get to the epilogue and stuff. What I wanted to do was make it go the Epilogue and then load the Staff Credits (well, maybe; I might edit the original or, more likely than not, I'll make my own by inserting CGs and loading them through events) and the Turn Count and the actual Character Endings. If you're editing the ending, it's likely for a custom event hack, so you'll likely want to do something similar.
0xCC1B9C - Loads everything, straight-up.
Now, if Nintenlord could help me with this, it'd be great. I could just disassemble these events but I'm not feeling up to them, so NL, if you could make some RAW codes in a newer version of the EA using this doc, that'd be great. Then this "obscure hacking tip", which I'm researching as I type this post, won't be so obscure anymore, and no one will need to do the kind of research I am.
BYTE 0x51 0xA3 0x0B 0x08
I think this can be done through an ASMC code, but I'm not sure. This loads the Staff Credits. Before using it, you should clear out any other graphics on the screen that might get in the way, such as text, portraits, or something else of that nature.
BYTE 0xC5 0x9F 0x0B 0x08
This is for loading the turn-count. I don't actually know how the game decides the order of stuff amongst other things, though. I'll have to figure it out, or else get some help figuring it out, at some point. But hey, I got this far on my own, so I might as well try to do it myself first...
This loads the character endings where it displays text on what happens to the character, or what chapter they died on if they died, their win/loss ratio, and other stuff.
The code at THAT offset is pretty much just another ASMC code pointing to 0xB85D5, as well as a... stall code (STAL) of 0 count? and the ENDA code--it's a very basic event, essentially, and I figured I'd tell just in case someone deletes the code at the other offset, though you could always copy/paste the code by disassembling a clean ROM as well.
These are the final events of the game... almost. It shows Eliwood and Hector meeting up as they are older, with Roy and Lilina meeting each other as well. Ah, this is so nostalgic... FE7 was such a good game. A part of me feels like crying...
Ahem, anyway, I doubt you'll need this if you're coding your own events; just put your own events after whatever other codes you need of the ones I mentioned above.
...And sadly, this is all I got. It's not everything: I don't know how to load the FIN screen or make the game reset normally/like it should. I also don't know how to make it go to the special "EPILOGUE" chapter... However, I've come up with my own workarounds for these problems. Simply put, I'm going to create my own epilogue chapter and make it infinitely loop so that you can't get out of it. Eventually, the Epilogue chapter will give you the option to move onto some bonus features, but I haven't yet implemented those, and won't for a while.
Anyway, those are all my notes on that. Nintenlord, it'd be awesome if you could turn these into proper codes, or at least Macros, and put them in the EA so people don't have to spend hours looking at events and ASM and tracing data and testing stuff trying to figure this all out. If you need names, you can give these names to the codes I put in the CODE tags, respectively:
Or something like that.
Wooh. I'm finally done. Man, that was a lot of work, but now that I'm done researching, I should have all the tools I need to make my own custom ending...
except I don't know how to use ASM to check if certain characters have an A support, but that's okay.
Other stuff I'd like to throw in:
- The weapon-lock weapon-rank abuse. Essentially, one weapon lock can be used multiple times if a class or character shares a certain weapon lock but can't use a certain weapon type and thus can't actually use the same weapons. I think Arch was the first one to point this out--a little searching should net some details.
- There are many cool "experimental" codes in the EA. Check out the doc and you'll find them!
- Xeld made some cool utilities like a CG maker and a Natural Script Formatter that hardly anyone uses. Again, they exist, they're just not really mentioned or used very much.
- You can change the music in a battle by setting a custom event to a specified battle conversation and then making said event change the music immediately. You can use events pretty much freely in this, to be honest, but the # of things you can do in the actual battle animation are limited due to conflicting gameplay elements and whatnot. Still, if done right, it can be used to make some epic battles (I did it in some hacks of mine and it was super fun!).
- Triangle Attacks use up some event quotes with "perma IDs", so be careful when you use perma IDs as they may already be taken up by other gameplay elements such as the Triangle Attack. Speaking of the Triangle Attack, the Knights' Triangle Attack still exists, and there is even a spare Triangle Attack available for use (at least, in FE7 there was one!).
- An unknown pointer at or near the bottom of the class editor has to do with destroying villages. I don't remember the details but if you look at it you'll notice it's on classes that can destroy villages, to say the least. XP
I've had many, MANY more over the years, but I'm really bad at remembering things or keeping notes. If I remember anymore I'll try to remember to throw them in there.