Users browsing this thread: 2 Guest(s)
FF3usME dialogue editor broken?

#7
Posts: 86
Threads: 6
Thanks Received: 14
Thanks Given: 2
Joined: Jul 2020
Reputation: 8
Status
None
Yeah, I've run into the issue with the dialogue editor where if I add new lines and change existing lines in the same session, the new lines get bugged out.  Therefore I generally export the script to text, edit it there, and re-import it if I want to change lines, and only use the FF3usME editor to add lines.

I've run into a different issue with the FF3usME dialogue editor in that I want to expand the pointer table to give me more lines, however FF3usME has the start address of the pointer table hard-coded and will throw as "Not a recognized dialogue expansion" if you try to load a ROM with the pointer table relocated.

In the original code, the dialogue text was split between banks CD and CE.  The first two bytes of the dialogue pointer table at CCE600 gives the index value of the last line of dialogue in CD.  The index provided by the script is compared against this value and if it's less, the starting address to add the pointer offset to is CD, else it's CE.  This is because the address pointers are only 2-byte relative pointers rather than 3-byte absolute pointers, and thus roll back over to 0000 once you've exceeded 65535 bytes of text, and it needs to know whether to add that 0000 to CD0000 or CE0000 to find the correct dialogue.  FF3usME does seem to modify the value of the "wraparound" index if modifying the text causes it to change.

In FF3usME's expansion code, the dialogue text is contained in CD, CE, and F0.  The pointer lookup routine is changed in such that they have an alternate location (C0DF80) where the "last index" value is saved, paired with its bank offset, to allow for a second one.  Now it loops through a routine where it checks "Is the index of this dialogue less than the value at C0DF80? If so, set start bank to CD.  Else, increment by 3 and check C0DF83.  Is the index of the dialogue less than the value there?  If so, set bank to CE, else, increment by 3 and check C0DF86 (there's just FFFF here).  The index has to be less than that, so as a last resort sets F0."  Because they've now put it in a loop that checks a list of values, you could conceivably manually add however many more banks to that list that you have the space for.  However, when FF3usME loads and checks for expansions, it seems to be checking for the exact code that it changed the dialogue routine at C07FBF to, so if you update the addresses of any of its checks it won't function, even though the content of that address is fine for it to use.

The problem is that this only adds text space but not pointer space, and the pointer table at CCE602 only has room to add about 200 more pointers.  Relocating it and just changing the address of the pointer table in the dialogue routine opens up more space for more lines, but because the dialogue routine is now not exactly what FF3usME changed it to, it throws an error.

This gets aggravating because if you change a line of text somewhere in the middle, the start addresses of aaaaaaalllll the lines that come after it get modified, and I don't want to have to deal with that manually, so I need the tool to work.  XD
  Find
Quote  



Messages In This Thread
FF3usME dialogue editor broken? - by Gestahl - 03-15-2020, 06:09 PM
RE: FF3usME dialogue editor broken? - by Gestahl - 03-16-2020, 01:28 AM
RE: FF3usME dialogue editor broken? - by madsiur - 03-16-2020, 08:34 AM
RE: FF3usME dialogue editor broken? - by Gestahl - 03-16-2020, 01:57 PM
RE: FF3usME dialogue editor broken? - by Fast Moon - 10-14-2020, 12:12 PM

Forum Jump:

Users browsing this thread: 2 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite