While working on my Xmap project I ran into an interesting issue I thought I’d document.
The 5 trial maps that come with FE6 set the Seize flag either when Roy dies or the chapter objective is complete. It then determines whether the mission was successful or not based on what the next chapter is set to. If the next chapter is 0, it will count as a failure, if it is !0, it’s a success. The next chapter is set in the individual ending events of each trial maps.
The evaluation screen itself has 3 rankings + the overall ranking. 2 of the rankings, Survival and Combat, have static metrics but the remaining one, Tactics, is based on benchmarks stored in each chapter’s chapter data structure.
Because Xmaps are treated as having a map ID of -1, they don’t interact with tables and plists like normal chapters would. Instead there are a series of exceptions through out the various chapter/game state routines specifically for Xmaps.
The function (0x0808F3E8) that retrieves the Tactics ranks for the Trial Map Evaluation screen however, does not have an exception for Xmaps. This forces it to treat it as mapID 3F, which points to garabage data that contains 0 for all the Tactics ranks from A to D.
As the turn counter starts at 1, this makes “E” the only possible Tactics rank for an Xmap using the normal Trial Map Evaluation screen. This leads me to theorize 2 conclusions:
- (Possible) The Xmaps distrubed by VJump used a different set of ending events compared to the base game’s Trial Maps.
- (More likely) It’s an oversight that no one caught because it’s mostly harmless and you’d only notice it in testing if you were explicitly trying to go for a high Tactics ranking.