• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
June 01, 2024, 06:46:02 pm

News:

Don't be hasty to start your own mod; all our FFT modding projects are greatly understaffed! Find out how you can help in the Recruitment section or our Discord!


Is there a list of all the places each character shows up in the game?

Started by plandr, September 21, 2011, 08:54:35 pm

plandr

Like the title says:

Is there a list of all the places each character shows up in the game?

I'd like to replace a somewhat minor characters sprite (one that has a battle formation sprite and portrait in FFEVRP) with a generic, opening up that slot for me to add a custom character sprite/portrait/battle formation in their place.

I need to pick a character and identify events/battles they show up in to effectively do this, however.

Are there any resources available to help with this? Alternatively, does anyone with the knowledge have any suggestions of their own? :)

Glain

Not sure if any such lists are available.

The alternative to doing that would be to just take an unused job and then edit the tables in WORLD.BIN/ATTACK.OUT mentioned in the first post of this thread (click 'show') to have that unused job point to unused unit/wldface entries, and overwrite those unit/wldface entries with FFTEVGRP. Those tables are in order of base job/sprite set. That way you wouldn't have to make any ENTD edits.

If you do end up doing that and use job 3A or 3B, there'd be one other WORLD.BIN edit to fix the job wheel, which I could dig up.
  • Modding version: Other/Unknown

Glain

...Actually, what the heck. I just typed up a patch to make jobs 3A and 3B use the unused 08 and 09 entries in unit and wldface.bin, respectively. That way you should be able to just edit 08 for UNIT.BIN and WLDFACE.BIN with FFTEVGRP, replace the 39 Celia (Never Used) sprite in SSE with your character's spritesheet, and just have your character use job 3A.

Here 'tis. If you do decide to use it, let me know if it screws anything up. Backup ISO if you do use it, yadda yadda.


  <Patch name="Jobs [3A,3B] use unit/wldface [08,09]">
    <Description>
      Jobs [3A,3B] use unit/wldface [08,09], respectively, for formation screen and battle preparation sprites.
    </Description>
    <Location file="WORLD_WORLD_BIN" offset="458B0"> 
      3C
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="74B88">
      080009
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="AA1DC">
      080009
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="AA92C">
      080009
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="ADE6E">
      0809
    </Location>
    <Location file="EVENT_ATTACK_OUT" offset="16C24">
      080009
    </Location>
  </Patch>
  • Modding version: Other/Unknown

plandr

Thanks a LOT.

I REALLY appreciate it. I'll read the thread you linked to and figure out what I need to do to get this running.


Glain

If you do use the patch, it should make all those edits I mentioned earlier, so no need to look at that thread unless you feel like it. You should be able to just copy/paste the XML into one of the XML files that comes with FFTorgASM and use it to apply the patch, then do the rest of it (replacing 08/09 unit/wldface stuff, using SSE, etc).
  • Modding version: Other/Unknown

plandr

Quote from: Glain on September 22, 2011, 07:53:11 pm
If you do use the patch, it should make all those edits I mentioned earlier, so no need to look at that thread unless you feel like it. You should be able to just copy/paste the XML into one of the XML files that comes with FFTorgASM and use it to apply the patch, then do the rest of it (replacing 08/09 unit/wldface stuff, using SSE, etc).


EDIT: Just did some searching. Found what appears to be a PSX version here:

http://ffhacktics.com/smf/index.php?topic=3446

Glain

That appears to be an old version of the FFTPatcher suite. The new one should be up on the site if you don't have it already here. The patcher, FFTorgASM, should come as part of the suite.
  • Modding version: Other/Unknown

plandr

Quote from: Glain on September 22, 2011, 08:34:28 pm
That appears to be an old version of the FFTPatcher suite. The new one should be up on the site if you don't have it already here. The patcher, FFTorgASM, should come as part of the suite.


Got it. Thanks. I'll try and put everything together now. Will let you know the results as soon as I know. :)

Pride

Glain you should make a thread for some of your hax, they shouldn't go unnoticed... Like the one you just made.
  • Modding version: PSX
Check out my ASM thread. Who doesn't like hax?

plandr

Nevermind.

You are my hero. It worked. :)

plandr

Quote from: Glain on September 22, 2011, 07:53:11 pm
If you do use the patch, it should make all those edits I mentioned earlier, so no need to look at that thread unless you feel like it. You should be able to just copy/paste the XML into one of the XML files that comes with FFTorgASM and use it to apply the patch, then do the rest of it (replacing 08/09 unit/wldface stuff, using SSE, etc).


This is the right topic to ask this in, not the other one so I'll bump it:

Are 08/09 the only unused sprites in wldface.bin and unit.bin?

I'm trying to make a four person unit to fight alongside Ramza and looking for another (2) good candidates. Are 0B? and 0A simon used?

I feel like I should be able to figure out how to amend the patch/hack Glain posted so that I can map two of the three unused ??? marked sprites in ShiShi that are (presumably) never used to any other spare slots in the UNIT.BIN and WLDFACE.BIN aside from 08 and 09. There seem to be two priest that are never used in UNIT and WLDFACE.BIN (0ASimon and OB?) but its hard to say for sure.

I'm always for being as clear as possible so I'll ask the question another way in case that didn't make sense:

5D   ???   DAMI.SPR   ???   44690   45056
5E   ???   KASANEK.SPR   ???   40516   40960
5F   ???   KASANEM.SPR   ???   40516   40960

^^I want to use the ShiShi editor and tie two of the three (unused?) sprite sets above to 0ASimon and 0B? (WLDFACE.BIN) and 0ASimon and 0B? (UNIT.BIN) in the same way that Glain tied 3A/3B to 08 (Unused) and 09 (Unused).

First I want to ask here about any redundancies/issues with the ??? mark sprites and/or 0ASimon and 0B? that I need to be aware of, however. Further, if there are better candidates than the 0B? and 0ASimon I could go with those instead.

plandr

Quote from: plandr on September 25, 2011, 09:42:05 pm
This is the right topic to ask this in, not the other one so I'll bump it:

Are 08/09 the only unused sprites in wldface.bin and unit.bin?

I'm trying to make a four person unit to fight alongside Ramza and looking for another (2) good candidates. Are 0B? and 0A simon used?

I feel like I should be able to figure out how to amend the patch/hack Glain posted so that I can map two of the three unused ??? marked sprites in ShiShi that are (presumably) never used to any other spare slots in the UNIT.BIN and WLDFACE.BIN aside from 08 and 09. There seem to be two priest that are never used in UNIT and WLDFACE.BIN (0ASimon and OB?) but its hard to say for sure.

I'm always for being as clear as possible so I'll ask the question another way in case that didn't make sense:

5D   ???   DAMI.SPR   ???   44690   45056
5E   ???   KASANEK.SPR   ???   40516   40960
5F   ???   KASANEM.SPR   ???   40516   40960

^^I want to use the ShiShi editor and tie two of the three (unused?) sprite sets above to 0ASimon and 0B? (WLDFACE.BIN) and 0ASimon and 0B? (UNIT.BIN) in the same way that Glain tied 3A/3B to 08 (Unused) and 09 (Unused).

First I want to ask here about any redundancies/issues with the ??? mark sprites and/or 0ASimon and 0B? that I need to be aware of, however. Further, if there are better candidates than the 0B? and 0ASimon I could go with those instead.


An older post from 2009 here:

http://ffhacktics.com/smf/index.php?topic=1832.0

Quote from: Vanya on January 06, 2009, 02:18:13 pm
I see. Your problem is your choice of sprites. There are only a hand full of sprites that can be manipulated to work as new party members. Formation sprite assignments can't be changed yet.

You can edit these and change their Formation sprite without messing up any other characters too much:

1 - Simon, SIMON.SPR, uses Simon's formation sprite.
(You'll want to move Simon's sprite to a new file like Kasanek and change his sprite assignment in the ENTD. This way Simon won't show up as your new character.)

2 - Malak, GANDO.SPR, uses 'old priest' formation sprite.

3 - Alma, GYUMU.SPR, uses 'young priest' formation sprite.

4 - Balmafra, BARU.SPR, uses Balmafra's formation sprite.
(you'll need to move it to a new .SPR file like with Simon.)

If you use Zodiac's sprite Expansion patch you can use this one, too.

5 - Tietra, FURAIA.SPR, uses 'mage girl' formation sprite.
(needs to be moved & reassigned, too.)


^^ Also seems to suggest a few options, but that same topic was made before a lot of things that are possible now were made possible so I'm not sure what to use from there in formulating an approach.

Glain

Replacing 0A/0B in UNIT/WLDFACE is probably fine. The problem is finding unused jobs. 3A and 3B are nice and convenient because they're completely unused, but there's really nothing else that I can see that isn't used in some way or another, perusing the job list in FFTPatcher. There are a few blanks at the verrry end of the list, but those are probably assumed to be monster jobs, so it's hairy.

If it were me, I'd probably identify characters that have two jobs and think about replacing one of them. For example, Gafgarion has both 11 Dark Knight (enemy) and 17 Dark Knight (guest). You may be able to take, for example, 17, and always make Gafgarion 11. It requires editing the ENTD for every place that character shows up under the job you're taking, but afaik there are no unused slots left, so what can you do...

There are a bunch of characters that are this way; Agrias has 34 (guest) and 1E (join); Mustadio has 22 (guest) and 16 (join); etc. If you were going to replace one, you'd always want to switch them in the ENTD everywhere to the join/enemy version and then you'd be able to take the guest version and do whatever you want with it. Don't do it the other way around or I think there would be some issues with events not being able to find the correct units, because the Unit IDs that get loaded in from characters you field are their base job IDs.

Based on which jobs you decide to take and edit, you'd have to edit different entries in those tables in attack.out/world.bin to point to the proper places in unit.bin/wldface.bin.
  • Modding version: Other/Unknown

plandr

Quote from: Glain on September 26, 2011, 12:16:19 am
Replacing 0A/0B in UNIT/WLDFACE is probably fine. The problem is finding unused jobs. 3A and 3B are nice and convenient because they're completely unused, but there's really nothing else that I can see that isn't used in some way or another, perusing the job list in FFTPatcher. There are a few blanks at the verrry end of the list, but those are probably assumed to be monster jobs, so it's hairy.

If it were me, I'd probably identify characters that have two jobs and think about replacing one of them. For example, Gafgarion has both 11 Dark Knight (enemy) and 17 Dark Knight (guest). You may be able to take, for example, 17, and always make Gafgarion 11. It requires editing the ENTD for every place that character shows up under the job you're taking, but afaik there are no unused slots left, so what can you do...

There are a bunch of characters that are this way; Agrias has 34 (guest) and 1E (join); Mustadio has 22 (guest) and 16 (join); etc. If you were going to replace one, you'd always want to switch them in the ENTD everywhere to the join/enemy version and then you'd be able to take the guest version and do whatever you want with it. Don't do it the other way around or I think there would be some issues with events not being able to find the correct units, because the Unit IDs that get loaded in from characters you field are their base job IDs.

Based on which jobs you decide to take and edit, you'd have to edit different entries in those tables in attack.out/world.bin to point to the proper places in unit.bin/wldface.bin.


Got it. I think I'll use Gaf and maybe Agrias based on what I read on the forums. Hopefully there is a list floating somewhere of all the instances using both.

Thanks a bunch. :)

RandMuadDib

Be wary - you might get unexpected results when doing that. For example, if you combine gaffy down to just 11, then use 17 for a new unique character, but have him join your party before gaffgarion leaves, 17 will still leave, even if you change ENTD. Its best to wait to introduce 17 until gaffgarion is completely out of the picture, i.e. during the solo battle with ramza where he crystallized automatically (where you can open the front gate and let your other party members in if you need help)

A similar thing may happen if you do the same thing with agrias before she joins your party foreverz in the battle by the river.

unfortunately map names elude me at the moment so i can't be more specific. both happen just before you face quecklain
I will show you the power of SARDIIIIINES!!!!

Glain

Oh yeah, that's a good point; forgot about the fact that some of those units get auto-removed from party - but those are controlled by events, and we can just edit the events to change the DismissUnit command. So, essentially:

Zirekile:  DismissUnit(0x17) -> DismissUnit(0x11)
Lionel:    DismissUnit(0x34) -> DismissUnit(0x1E)

Raven's tool can probably do that just fine, but anyhow, it's event command {7A}.
  • Modding version: Other/Unknown

plandr

Thanks to both of you.  :mrgreen:

Got it.

Follow up question:

Which iteration of Gafgarion and Argias would you recommend me using, in this case? It seems like 34 and 17 are the way to go, which is what I'm planning to do tomorrow after I get some rest, tentatively. :)

Also, summing it up as I understand it what I'm going to do is:

1. Assign the custom sprites I want to add to (duplicate?) sprites 17 (H61.SPR) and 34 (AGURI.SPR) in ShiShi.
2. Read the topic Glain posted earlier on so that I can understand how to map sprites those sprites to the 0A and 0B UNIT.BIN and WLDFACE.BIN by basically editing this .XML that he wrote:
Quote
<Patch name="Jobs [3A,3B] use unit/wldface [08,09]">
   <Description>
     Jobs [3A,3B] use unit/wldface [08,09], respectively, for formation screen and battle preparation sprites.
   </Description>
   <Location file="WORLD_WORLD_BIN" offset="458B0">  
     3C
   </Location>
   <Location file="WORLD_WORLD_BIN" offset="74B88">
     080009
   </Location>
   <Location file="WORLD_WORLD_BIN" offset="AA1DC">
     080009
   </Location>
   <Location file="WORLD_WORLD_BIN" offset="AA92C">
     080009
   </Location>
   <Location file="WORLD_WORLD_BIN" offset="ADE6E">
     0809
   </Location>
   <Location file="EVENT_ATTACK_OUT" offset="16C24">
     080009
   </Location>
 </Patch>

3. Assign all instances of Agrias using 34 to use 1E in the FFPatcher (under ENTD)
4. Assign all instances of Gafgarion using 17 to use 11 in the FFPatcher (Under ENTD)
5. Use Easyvent to script in events adding the custom characters as permanent members of the team post chapter 2 (when 11 is dead, 1E has joined the party and 34 and 17 are non-factors)

(For that matter, I also need to script in events for my other original two characters already in the game (the ones using 3A and 3B). I'll have to add an event for the C1 battle, as I just added them via the FFTastic save editor initially.

http://ffhacktics.com/smf/index.php?topic=5166.0

^^ That said, I can't use FFTactText anymore. I'm getting that error when I try and patch the game and the solutions proposed in that topic aren't working. Seems like I might just need a clean .ISO and to re-do everything I've done so far. :(

Just as well, I guess. I was planning on patching Tactics with the 1.3 Easymode and that would have required me to re-do everything anyway. ^_^

Glain

Yep, take 34 and 17, not the other two.

As for using 34 and 17... if you do it before Chapter 2, you'll need to edit the events where those units are dismissed from your party, like I mentioned in my last post. It just occurred to me that you might have to edit the other events those characters are in too, so you don't have multiple units with the same Unit ID the game is looking for. I'm actually not sure if that would be a problem or not, though. At worst you'd have to change the guests' ENTD Unit IDs and then change the events to use the new IDs. That's annoying, but so is waiting until after Chapter 2 to add characters, so who knows.

In order to get 3A and 17 to join your party, you just need to place them in an ENTD somewhere with Join After Event checked. Basically I'd recommend Raven's recommendation in your other topic, unless you feel like creating a new event, I suppose (The ENTD entry he's referring to is 188). That's if you add before Chapter 2; otherwise, you'd find another ENTD in the right place and add 'em in, I guess. For it to make sense you might want to add dialogue and the like... also, I think the Join After Event only works if the event does something specific at the end, which is why it's often easiest to use an ENTD where characters are already joining... but event editing could probably get around that.
  • Modding version: Other/Unknown

plandr

Quote from: Glain on September 22, 2011, 10:30:04 am
Not sure if any such lists are available.

The alternative to doing that would be to just take an unused job and then edit the tables in WORLD.BIN/ATTACK.OUT mentioned in the first post of this thread (click 'show') to have that unused job point to unused unit/wldface entries, and overwrite those unit/wldface entries with FFTEVGRP. Those tables are in order of base job/sprite set. That way you wouldn't have to make any ENTD edits.

If you do end up doing that and use job 3A or 3B, there'd be one other WORLD.BIN edit to fix the job wheel, which I could dig up.


I may end up answering this question for myself as I read the topic you posted, but...

Quote<Patch name="Jobs [3A,3B] use unit/wldface [08,09]">
    <Description>
      Jobs [3A,3B] use unit/wldface [08,09], respectively, for formation screen and battle preparation sprites.
    </Description>
    <Location file="WORLD_WORLD_BIN" offset="458B0"> 
      3C
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="74B88">
      080009
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="AA1DC">
      080009
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="AA92C">
      080009
    </Location>
    <Location file="WORLD_WORLD_BIN" offset="ADE6E">
      0809
    </Location>
    <Location file="EVENT_ATTACK_OUT" offset="16C24">
      080009
    </Location>
  </Patch>


How did you know every instance of the WORLD_BIN to search in for the characters 39a and 3b, respectively?

Specifically, as I work through this how should I go about identifying all of the places I need to edit?

Glain

I've been calling them 'tables', but that's kind of ambiguous; they're arrays. I'll refer to them as such from here on out. If I may use C-like syntax for a moment, the idea is:
array[base_job_index] = [unit_bin_index] (This is the same number as the wldface index)

I have some simple knowledge about what would have to be in this array. For example, because Ramza's three jobs correspond to 00/01/02 in UNIT.BIN, Delita's Squire (base job 4) corresponds to 03, and Algus (base job 7) is 04, I know that:
array[1] = 0; array[2] = 1; array[3] = 2; array[4] = 3; array[7] = 4.

Assuming a byte (in C, probably 'char') data type, we're looking for: 00 01 02 03 ?? ?? 04. Question marks are "don't cares"; they could be anything. The numbers have to be in that order because arrays are consecutive in memory. So, I opened WORLD.BIN in a hex editor and looked for that sequence. The search was just "00 01 02 03" and I just looked at the results to see if there was an 04 two away from the 03.

I actually only could find one instance of it, and it only affected the formation screen sprite, but not the palette or the portrait. That was the array at 0xADE34 in WORLD.BIN.

Eventually I finally thought of trying "00 00 01 00 02 00 03 00". There was nothing that said the array had to be a byte data type; this is the two-byte (halfword) equivalent. C's short int. That's how I found the 3 different locations in WORLD.BIN, and also how I found the one in ATTACK.OUT.

...Then I found out about Vanya's thread :O.

...

But anyhow, about what you need to edit, you just need to edit the proper locations in the same arrays. Essentially, you're just changing offsets. So, for that array, I edited 0xADE34 + 0x3A = 0xADE6E. Then I also edited the next location because 3A/3B are right next to each other. That's this:

    <Location file="WORLD_WORLD_BIN" offset="ADE6E">
      0809
    </Location>

For the ATTACK.OUT one, for example, which is one of the halfword arrays: (I think the array really starts at 0x16BB0)
0x16BB0 + (0x3A * 2) = 0x16C24. Once again, I edited the next value as well, because I was changing both 0x3A and 0x3B.

That was this one:

    <Location file="EVENT_ATTACK_OUT" offset="16C24">
      080009
    </Location>

So basically, for the locations you need to edit, you change 0x3A to whatever your base job is (and only edit one value).

Overall, there's 1 byte array in WORLD.BIN, 3 halfword arrays in WORLD.BIN, and a halfword array in ATTACK.OUT. That first change in the patch is actually a code change to tell FFT not to assume that our jobs have to be < 0x35. (Changed it to 0x3C, to allow using jobs 3A and 3B; otherwise the job wheel is messed up... anyway, that part doesn't need done again).
  • Modding version: Other/Unknown