I don’t work on this project, but I found the offending code here:
In this image, we have a conditional label 0x1996. Think of this like a bookmark that code will jump to when asked. We set the background for the talk event, then start checking if certain characters are alive - in this case, the three villager NPCs in this chapter, starting from the adult man villager 0xF9, then the young girl villager 0xF6, then the young boy villager 0xF7.
Every time we check whether or not one of these characters is alive, the game will return a 1 if they are alive, and a 0 if they aren’t. In each of the branch instructions here, we will jump to a specified conditional label if the unit we’re asking about is dead, which would be used to skip this part of the code if any one of the villager NPCs died.
In the case of the adult man and young girl, the conditional label is 0x1997, which we see three labels for not long after these checks. There being three identical labels, as far as I know, is completely unnecessary, but should break nothing. It’ll all end up in the same location every time. However, for the check for the young boy villager, the branch instruction is going to jump to conditional label 0x1996 instead… which jumps back to the start of this code, having changed nothing, therefore an infinite loop occurs. This state can only be reached by having specifically the young boy villager die while the other two remain alive, as in any other case, the code will either give you this Earth Seal as intended, or skip ahead as intended.
To fix, open FEBuilder, load Vision Quest into it, go to chapter 0x3B “Protect and Serve”, double click “End Event” on the right hand side, scroll down to the section pictured above, and where it says “…Jump to Conditional ID [ 0x1996]…”, double click that line and change the 0x1996 in the branch instruction to 0x1997, then click “Write to ROM”, close that window, and on the main window of FEBuilder, click File > Save.
I hope this helps you out. Let me know if anything was unclear.



