• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
July 11, 2025, 12:10:25 am

News:

Use of ePSXe before 2.0 is highly discouraged. Mednafen, RetroArch, and Duckstation are recommended for playing/testing, pSX is recommended for debugging.


FFTA2 Editor v1.3.5

Started by Rurusachi, April 08, 2025, 11:28:27 am

Rurusachi

Quote from: douglaskraft on June 24, 2025, 02:02:48 pmI'm having a problem with the version: FFTA2 Editor v1.3.4 Log: Jun 24, 2025 2:31:28 PM org.ruru.ffta2editor.App loadConfig
INFO: Config not found
java.io.FileNotFoundException: ffta2-editor.properties (The system cannot find the file specified)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:213)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:152)
at org.ruru.ffta2editor/org.ruru.ffta2editor.App.loadConfig(App.java:161)
at org.ruru.ffta2editor/org.ruru.ffta2editor.App.start(App.java:213)
at javafx.graphics@23.0.2/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:839)
at javafx.graphics@23.0.2/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:483)
at javafx.graphics@23.0.2/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:456)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at javafx.graphics@23.0.2/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:455)
at javafx.graphics@23.0.2/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at javafx.graphics@23.0.2/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics@23.0.2/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
at java.base/java.lang.Thread.run(Thread.java:1583)
Whoops. I made some changes to how the config (.properties) file is read in v1.3.4 which causes it to crash if the file doesn't exist. It's fixed now in v1.3.5
  • Modding version: Other/Unknown

maroon

can anyone figure out how to fix it
  • Modding version: Other/Unknown

ZZ Top

Thank you for making this editor -- thus far, it's been super fun to mess around in it! I wanted to ask quickly if there's any way to reduce the number of strings in a cutscene event? Simply removing strings at the end willy nilly freezes the game, unfortunately.

I also wanted to ask if it's possible to get rid of the speech bubble for strings whose text I've erased. For instance, when I take a string wherein Luso says something and remove the text, his little speech bubble/portrait still pops up -- just without any dialogue.

Thank you for your time!
  • Modding version: Other/Unknown

GasT87

July 06, 2025, 06:40:57 pm #63 Last Edit: July 06, 2025, 09:58:39 pm by GasT87 Reason: Found a posible bug from testing
Quote from: maroon on June 30, 2025, 06:18:15 amcan anyone figure out how to fix it


Did you by chance use the unused abilities to make the new ones, it may be that the name locations where never assigned in the ROM itself so it pull them wrongly since they were never meant to be used.

On other things managed to get the NuMou black mage working in the water, for anyone that want to try their hand with this here is what I did:
In preparation I would recommend to apply the "animation fix" from the patch tab before starting so that no matter wich unit you choose to copy as base will have the full set of animations. Edit: If you want to try this be sure to read about a possible bug that I edit at the end of the post.

  • Copy a in water sprite (in my case I picked the Hume Black Mage).
  • Export all the different sprites of the copied set
  • Export also all sprite from the grounded version of the Numou Black Mage
  • With the in water sprites as base, delete the hume version leaving only the black and white pixels, now copy the Numou sprite in and delete anything bellow the black shape so it looks the same as the Hume version.
  • Now that you have all edited sprites is time to import them back over the copied ones (make sure that you replace each action with the same one). Just one thing that there are some specific sprites probably for cut scenes and other stuff that I did not change, like the Veil casting animation that is exclusive to Humes I replaced by the NuMou reading a book.
  • Finally just in case I used the in editor option to replace the pallet to make sure every sprite had the same one (just press "replace pallet" and then pick one of the sprite with your desired pallet)
  • No go to the Job Data tab, look for the NuMou version of the Black Mage, in the "Main" sub-tab change "Movable Places" to CAN_STAND_IN_WATER and in the "Sprite" sub-tab (not to be confused with the main "Sprites" tab on top) make sure to change both the "Unit alternate Sprite" and the "Enemy alternate Sprite" to your new in water sprite.
  • Save rom and load the game it should allow you to have the black mage enter water and attack and cast from it like normal

Note: for the edition of the sprite I would recommend to use a dedicated sprite editor like AseSprite or LibreSprite, as an example I uploaded a rar with my edited sprites as an example, if anyone want to use them they are free to do so

Possible bug for Rurusachi: The first extra unit slot seems bugged, I copied the Black Mage Hume, replaced it with my edited sprites and if that was assigned in the alternate sprite it still crashes the game upon trying to do an action, but if I then copied the already edited sprite and use that copy it works as intended

maroon

why is like this how can fix it
  • Modding version: Other/Unknown

maroon

why hasteja ability point become 0 it should be 250
  • Modding version: Other/Unknown

maroon

anyone know the problem and how to fix
  • Modding version: Other/Unknown

maroon

why hasteja have effect for nu mou but no effect for luso can anyone know how to fix it
  • Modding version: Other/Unknown

GasT87

Instead of images of the game con you show how the edited ability looks in the editor, is probable that you missed assigning it correctly of something, also you can edit your post so as not to multipost

maroon

Quote from: GasT87 on July 07, 2025, 03:48:30 pmInstead of images of the game con you show how the edited ability looks in the editor, is probable that you missed assigning it correctly of something, also you can edit your post so as not to multipost

here
  • Modding version: Other/Unknown

GasT87

Quote from: maroon on July 09, 2025, 12:38:24 amhere
Well that second effect being "only_Allies" makes it so it doesn't hit the caster, also make sure that the "Learning" tab is set up correctly for the Hume Soldier job, that's probably why the AP is not correctly assigned in the item

Ethereal Embrace

Very nice! It says that using this changes offsets so I won't be able to use this myself. I do have a question though, were you able to find out how to modify mission rewards like loot, if so, how?!

Rurusachi

Quote from: maroon on June 30, 2025, 06:18:15 amcan anyone figure out how to fix it
Quote from: maroon on July 07, 2025, 12:08:01 amwhy is like this how can fix it
I don't really know what's going on here. You'll need to explain what you've changed for me to be able to help. Or make a patch of your modded rom and send it (not the rom itself. I'd recommend bsdiff for making patches)

Quote from: maroon on July 07, 2025, 02:16:31 amwhy hasteja ability point become 0 it should be 250
Quote from: maroon on July 07, 2025, 02:19:14 amanyone know the problem and how to fix
Make sure the ability has an AP slot assigned for the race you've added it to (On the Ability's Learning tab).
Also make sure you've set the Ability's max AP (on the Job's Ability Set tab since Abilities can have different max ap for each job)

Quote from: maroon on July 09, 2025, 12:38:24 amhere
You only need the first effect here.

Quote from: ZZ Top on July 04, 2025, 05:06:40 amThank you for making this editor -- thus far, it's been super fun to mess around in it! I wanted to ask quickly if there's any way to reduce the number of strings in a cutscene event? Simply removing strings at the end willy nilly freezes the game, unfortunately.

I also wanted to ask if it's possible to get rid of the speech bubble for strings whose text I've erased. For instance, when I take a string wherein Luso says something and remove the text, his little speech bubble/portrait still pops up -- just without any dialogue.

Thank you for your time!
I'm guessing you're the person that also asked about this on Discord but I'll post my answer here as well:
Unfotunately proper cutscene editing isn't really possible yet. Events are written in a scripting language that I haven't fully reverse-engineered yet. The editor can only change the strings that are used in each event. The strings are referenced by index in the event's string table. So a decompiled script would contain something like showDialogue(speakingUnit, stringIndex).
So for now all you can really change is the contents of each speech bubble

Quote from: GasT87 on July 06, 2025, 06:40:57 pmDid you by chance use the unused abilities to make the new ones, it may be that the name locations where never assigned in the ROM itself so it pull them wrongly since they were never meant to be used.

On other things managed to get the NuMou black mage working in the water, for anyone that want to try their hand with this here is what I did:
In preparation I would recommend to apply the "animation fix" from the patch tab before starting so that no matter wich unit you choose to copy as base will have the full set of animations. Edit: If you want to try this be sure to read about a possible bug that I edit at the end of the post.

  • Copy a in water sprite (in my case I picked the Hume Black Mage).
  • Export all the different sprites of the copied set
  • Export also all sprite from the grounded version of the Numou Black Mage
  • With the in water sprites as base, delete the hume version leaving only the black and white pixels, now copy the Numou sprite in and delete anything bellow the black shape so it looks the same as the Hume version.
  • Now that you have all edited sprites is time to import them back over the copied ones (make sure that you replace each action with the same one). Just one thing that there are some specific sprites probably for cut scenes and other stuff that I did not change, like the Veil casting animation that is exclusive to Humes I replaced by the NuMou reading a book.
  • Finally just in case I used the in editor option to replace the pallet to make sure every sprite had the same one (just press "replace pallet" and then pick one of the sprite with your desired pallet)
  • No go to the Job Data tab, look for the NuMou version of the Black Mage, in the "Main" sub-tab change "Movable Places" to CAN_STAND_IN_WATER and in the "Sprite" sub-tab (not to be confused with the main "Sprites" tab on top) make sure to change both the "Unit alternate Sprite" and the "Enemy alternate Sprite" to your new in water sprite.
  • Save rom and load the game it should allow you to have the black mage enter water and attack and cast from it like normal

Note: for the edition of the sprite I would recommend to use a dedicated sprite editor like AseSprite or LibreSprite, as an example I uploaded a rar with my edited sprites as an example, if anyone want to use them they are free to do so

Possible bug for Rurusachi: The first extra unit slot seems bugged, I copied the Black Mage Hume, replaced it with my edited sprites and if that was assigned in the alternate sprite it still crashes the game upon trying to do an action, but if I then copied the already edited sprite and use that copy it works as intended
Nice that you got it working! Thanks for writing out the steps.
I'll see if I can reproduce that bug myself but I didn't have any issues like that when I tested.

Quote from: Ethereal Embrace on July 09, 2025, 11:47:21 pmVery nice! It says that using this changes offsets so I won't be able to use this myself. I do have a question though, were you able to find out how to modify mission rewards like loot, if so, how?!
Yeah it rebuilds the internal filesystem so there's no guarantee that any offsets stay the same. That's why I tried to include all the features of previous tools. Is there anything you need that the editor can't currently do?
If you mean the mission rewards you get after completing a mission (2x Gikhet Lead and 2x Faren Pollen for Stranger in the Woods) then they're 2-byte values starting 0x50 in the quest data structure. The 2-byte value contains both the amount and the item id. The lower 10 bits are the item id and the upper 6 bits are the amount. So for example 2x Gihket Lead is 0x9DD because the lower 10 bits of that is 0x1DD (which is Gikhet Lead) and the upper 6 bits is 2 (I've attached a simple visual example). If you're familiar with bit shifting and logical operators the calculation would be: (amount << 10) | item
(Sorry if you already knew all/most of this. I'd rather be too detailed than too simple. If you have more questions it might be easier to ask me on the Discord server. I check it a lot more often than I check the forum)
  • Modding version: Other/Unknown

Ethereal Embrace

No, I didn't know that, thank you! I knew about the item IDs but I couldn't parse where the number of said items came into it. This is very helpful.

I guess my next question is: is there any way to change judge bonuses for upholding the law in a mission?

Rurusachi

Quote from: Ethereal Embrace on Yesterday at 01:32:11 pmNo, I didn't know that, thank you! I knew about the item IDs but I couldn't parse where the number of said items came into it. This is very helpful.

I guess my next question is: is there any way to change judge bonuses for upholding the law in a mission?
Yes. I've found the data for it, I just haven't added it to the editor yet. The law bonuses start at 0x054147A0 in a vanilla ROM. It's an array of 50 8-byte data structures. Each one has 3 2-byte item ids and 2 bytes of padding. I also took a look at the code just now to figure out exactly how law bonuses work:
The three items in each entry are for the 1st, 2nd, and 3rd law bonus slot. The game keeps track of how many items have been rewarded for each slot. So when you get the first law bonus you get the 1st item in the 1st entry, the second time you will get the 1st item in the 2nd entry, and the 2nd item in the 1st entry, etc.
The law bonuses are also gated based on story progress every 10 entries. 10 extra entries are unlocked after story progress values 0xC8, 0x190, 0x2A8, and 0x406 (at offset 0x0011F650) for up to 50 entries total. So in the beginning there are only 10 items you can get in each slot, but eventually there will be 50. Once you've received all the available items for a slot you instead get a random item out of the available items for that slot.

Here's a (cleaned up) decompilation of the function responsible for law bonuses:
void FUN_give_law_bonuses(int param_1) {
  uint max_slot; 
  for (max_slot = 0;
      (max_slot < 4 && (GLOBAL_law_bonus_story_progress_gates[max_slot] < FUN_get_story_progress()));
      max_slot = max_slot + 1) {}
  max_slot = (max_slot + 1) * 10;
 
  byte law_bonus_streak = FUN_get_law_bonus_streak();
  if (3 < law_bonus_streak) {
    *(byte *)(param_1 + 0x85) = 3;
  } else {
    *(byte *)(param_1 + 0x85) = law_bonus_streak;
  }
 
  for (int slot = 0; slot < *(byte *)(param_1 + 0x85); slot = slot + 1) {
    ushort stored_index = GLOBAL_law_bonus_stored_indices[slot];
    uint max_received = FUN_get_stored_value(stored_index);
    if (max_received < max_slot) {
      FUN_set_stored_value(stored_index, max_received + 1 & 0xff);
    }
    else {
      uint random_number = FUN_rand?();
      max_received = FUN_modulo?(random_number >> 0x10,max_slot);
    }
    ushort* law_bonuses = FUN_get_law_bonus(max_received);
    ushort item_id = law_bonuses[slot];
    *(ushort *)(param_1 + slot * 2 + 0x86) = item_id;
    FUN_give_item(item_id, 1);
  }
  return;
}
  • Modding version: Other/Unknown

Ethereal Embrace

I see, that's very convoluted but interesting. Thanks for responding.

I decided to try out the editor but when I try opening the file, I get this error. Any idea what it means?
edit_error.PNG

GasT87

Quote from: Ethereal Embrace on Yesterday at 05:40:59 pmI see, that's very convoluted but interesting. Thanks for responding.

I decided to try out the editor but when I try opening the file, I get this error. Any idea what it means?
edit_error.PNG
Did you miss this steps?:
  • Follow the instructions to install devkitPro (the NDS Development component is required)
  • Find ndstool.exe in DevkitPro/tools/bin and copy it to the same folder as the FFTA2 Editor (next to ffta2-editor.exe).
From the github

Ethereal Embrace

I did not do that last part, thanks.

I now have this error lol.