øAslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;area=showposts;sa=messages;u=319e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index85b2-3.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;u=319e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index85b2-3.html.zxO”h^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ00WU_OKtext/htmlISO-8859-1gzip@øÕU_ÿÿÿÿÿÿÿÿWed, 11 Mar 2020 07:50:00 GMT0ó°° ®0®P®€§²ð®O”h^sU_ Show Posts - yeoldeusrename

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - yeoldeusrename

Pages: 1
1
It's good to see new development, and this looks creative. Keep up the good work!

2
Game Modification Station / Re: FF6 Improvement Project
« on: March 19, 2014, 03:52:48 PM »
To answer the question by yeoldeusername, patching to the base and complete versions and then expanding the ROM to accommodate the translation - that's what I've been doing. I cannot fit the translated script in the original space provided, and FF3usME points the original dialogue pointers to the new space, but any patches that include direct links to dialogue pointers break as a result. The King of Vanity patch is the earliest point in the game where this occurs - I can go through the source code provided with patches to see if there are any others (the Shadow in the Veldt patch comes to mind), but some of the patches don't have source code provided in the readme or documentation with the patch.

The hex editor I use, Windhex, can do a diff between a clean ROM and an edited one (I think, anyway), so if it's possible I can do a diff for all the patches that might affect dialogue and see what's happening - but without new memory addresses to point to, I'm not sure how I could fix this.

That makes sense. I've been using FF3usME for a while without understanding the inside workings or even anything about assembly or SNES ROM data structure. So it's nice to be able to find a live thread and learn something.  :happy:

Anyway, I did a little looking and found this:
http://www.rpglegion.com/ff6/hack/ff3info.txt
0CE800-0CE801   (CCE600-CCE601)     DATA    Index of the pointer in which the bank byte needs to be incremented
0CE802-0D01FF   (CCE602-CCFFFF)     PTR     Pointers to Dialogue (+0D0200/+CD0000)
0D0200-0EF2FF   (CD0000-CEF0FF)     TXT1    Dialogue (3326 items, variable length)

So what I understand is that FF3usME moves the TXT1 (CD0000-CEF0FF) to new space added at the end of the ROM (or at least extends it at the end of the ROM). And adjusts PTR (CCE602-CCFFFF) accordingly? But PTR does not move, so I would think a hack referencing the PTR would not be affected. Am I right so far?

The King of Vanity changes are pretty well documented, and it looks to me like mblock129 essentially references PTR, not TXT1 directly. I.e. he calls 4B 07 05, 4B being the dialog command and 07 05 being #0507, which is caption 1287 - 1 = 1286. Same for 4B 08 05. That's the same way the original code initiated the dialog.

When you say this:
This is why the King of Vanity scene hangs, right when it's about to start a new line of dialogue.
Do you know this from debugging or just from observation of the gameplay? Do you know the exact line where it fails?

Is it possible that the conflict has nothing to do with the dialog but instead has to do with the free space mblock129 uses for his extra code? Maybe it conflicts with a different patch? He uses CC/FED0 through CC/FF24 (D00D0-D0124). Or maybe it's a bug in his code that manifests itself after a different mod tinkers with palettes or what have you.

With respect to Shadow on the Veldt / Shadow is not a Girl, mblock129 changes a (normally) unused pointer in PTR to point to some random free space where he stores the raw text data for the male version of the caption (at EF1E6 raw location). My guess is that FF3usME overwrites the whole PTR section (CCE602-CCFFFF), presumably overwriting unused pointers with #FFFF or #0000. If that's the case, it might work to apply the patch after the FF3usME town dialog expansion. (Assuming there are no conflicts with the free space mblock129 uses...)

Or even easier, just rewrite caption 2578 to be gender neutral (just throwing that idea out there...). Besides does your translation patch have the same wording as the original for this caption? If not, then mblock129's Shadow version won't have parallel wording to your translated Relm version caption.

Or, you could change mblock129's patch to reference an existing PTR for an unused caption somewhere within the existing town dialog bounds. Then you can edit the text of that caption and remove the part of the Shadow patch that copies the text data to a random unused location. You would have to use the same caption in the standard and translated scripts, but hopefully it would be a one time change that would stick and work.

So to answer your original question (hopefully), here's how you change a reference to a town dialog pointer:
  • Find the location of the reference (in these cases, mblock129 gives us the locations).
  • The byte with value 4B indicates the command to go look up a caption via a pointer.
  • The two bytes after 4B indicate the pointer / caption number, kind of.
  • For example, 4B 07 05 indicates caption #0507. And yes the 07 05 is backwards from #0507, because Assembly.
  • Convert #0507 to dec and subtract 1 to match FF3usME numbering (the first dialog pointer is #0001 whereas first FF3usME dialog caption is 0). So that would be 1286 in this case.
  • To change 07 05 to something else, select the FF3usME script caption you want to reference and then backwards calculate the two bytes that you need to put after the 4B command.
  • When FF3usME imports the script, it will calculate the caption locations and update the pointers accordingly, so you don't need to know exactly where your caption will end up, just the corresponding pointer number.
Keep in mind I've never gotten to this level before, so I could be missing something here...

3
Game Modification Station / Re: FF6 Improvement Project
« on: March 07, 2014, 11:20:57 AM »
That's the bad news. GP's patch does fix the issues in the base and complete versions (which was a mistake on my part), but not the issues in the translation version, and I think I've figured out why. I had to expand the ROM using FF3usME and move the dialogue to the newly provided space to fit the expanded dialogue, and this has apparently broken any patch that references a dialogue pointer. So the Shadow on the Veldt patch had to be removed and the dialogue for finding Shadow had been revised to a gender-neutral statement. Unfortunately, I have never researched pointers for FF6, and I have not had a chance to study them and build a reference table to change all the rest of the changed pointers to the new dialogue locations. This is why the King of Vanity scene hangs, right when it's about to start a new line of dialogue.

In the interests of getting this 99% done to 100% and out and released (barring dialogue issues), I'm asking for help. If anyone can get this figured out, we can get the Improvement project finished and done, and many new projects can use it as a jumping-off point for their own stories.

This probably is too obvious to work, but if the "base" and "complete" versions work fine (perhaps because they are not expanded?), then maybe you just need to rebase from one of those, make the new mods, and then (via FF3usME) expand and import the translation script (instead of just adding the new patches to the translation patch).

I wouldn't expect IPS mods affecting the script to work properly after the script has been modified by FF3usME, because the bytes will have moved around. An IPS patch must maintain the number of bytes it affects, so as long as two IPS patches don't change the same section of script, they should be compatible from that regard. However, FF3usME script importing doesn't have this restriction. You can change the number of characters in a particular caption, which will throw off the bytes for all the rest of the script data (not to mention the bytes allocated for the script expansion). Your translation patch surely replaces pretty much all the bytes in the script data region, so it would not be compatible with script changes from other IPS patches.

Of course, importing your translation script after applying other IPS patches would nullify any script changes by those patches, so you'd have to manually incorporate them (if desired) into your script before importing via FF3usME.

Maybe you can include the translation script in your zip file so that others can apply extra IPS patches after applying the base IPS (and manually make corresponding script changes), then expand the ROM and import the script via FF3usME. Or maybe you change the translation patch to only affect the bytes containing the script data. Then people can apply the base patch, then other patches, then the translation patch.

Just thinking out loud, could applying the translation patch to an unexpanded ROM cause errors?

I'm probably missing the point since you probably know all this, but hopefully it doesn't hurt to throw out the idea.

Anyway, thanks for your efforts! It's great to see people still developing for FFVI in the year 2014!

Pages: 1