• Welcome to Final Fantasy Hacktics. Please login or sign up.

FFT Patcher .478 Source Code

Started by formerdeathcorps, May 14, 2011, 03:57:55 am


2 things, I tried recreating that bug but I couldn't either.. maybe it got fixed inadvertently between versions or something?

Also, could you send me the updated source code for FFTP? I decided to switch my project to C# as it seems alot easier to work with in terms of syntax and... the set of commands.. whatever you would call it lol. Thanks!


June 16, 2013, 01:38:58 am #201 Last Edit: August 23, 2013, 10:13:55 pm by Glain
Since I've effectively frozen the feature list for the next version, I figure I can upload my current version as a release candidate.  This hasn't been tested extensively, so use at your own risk, but testing is, of course, welcome.  The changelog is this post, earlier in the thread.

I've uploaded the current .483 release candidate source to the Google code page at: http://code.google.com/p/fftpatcher-mod/downloads/list.

(Oops, didn't see your post until now, Choto)

Bugs so far
Faith in spell damage calculations becomes XX% hack with default (Glain.xml) writes to wrong battle.bin location (ack) (Should be 1201F8, not 1201F9).
Shishi form size is too small and you can't scroll down to edit the dropdowns, etc.!
Offset mode attribute in ASM patcher wasn't having any effect

Edit - Uploading my latest version that should fix all the bugs above.
  • Modding version: Other/Unknown


I've edited the latest post with my latest version that should fix the bugs discovered so far.  Has there been anything else?
  • Modding version: Other/Unknown


August 31, 2013, 04:44:24 pm #203 Last Edit: September 10, 2013, 09:41:40 am by Glain
This is my post for laying out progress/strategies/notes for fixing FFTactext to work like .457 does.

My idea is to find the revision that broke FFTactext, figure out what's different between it and the previous version, and reverse those changes in the current version to end up with the correct logic.

I should be able to find all the changes to FFTP between .457 and .478 by looking at melonhead's revisions on his Google code page for FFTP (http://code.google.com/p/lioneditor/source/list)

These are the revisions that seem relevant so far:
r467 "Change EventUnit initial facings to N-S-E-W" (Changes DTE-related FFTactext logic)
r468 "Write DTE Charmap directly to PSX ISO" (Lots of FFTactext changes) (Doesn't seem to compile)
r469 "Fix some bugs in TextCompression" (Many FFTactext changes)
r470 "bunch crap" (Lots of changes in general, including to FFTactext) (Crash seems to happen in this revision)
r477 "Upgrade solution to vs2010" (Contains various FFTactext changes)

Here's my current strategy for finding the revision that broke FFTactext:

Verify that I can get a specific revision of the code from SVN (Command is: svn checkout http://lioneditor.googlecode.com/svn/branches/imageEditorv2@revision)
Get an ISO that requires [.457?] TacText to patch properly (Jot5)
Compute hash value (MD5) of the ISO (Also do binary diffs)
Get the .ffttext file that works in [.457?], but not .478
Make two copies of the ISO, and patch one with .457, then the other with .478
Verify that the .457-patched ISO has same hash values as original ISO, and that the .478-patched ISO doesn't (No hash values are ever the same.)
Delete the .478-patched version and re-copy the original

For each revision being inspected:
  Get the revision from SVN
  Patch the copy with this revision's version of FFTactext
  Check to see if the produced ISO is different
  Delete the newly patched version and re-copy the original

Current Status
I can't get a version that patches into a working ISO, or anything resembling the original.  Tactext from SVN revision 457 causes the same problem (at least if the DLL I'm copying is right) and so does the "457" that I downloaded (and they produce different ISOs...)

Update: Raven's version of .457 is the same .457 that I already had (which isn't the same as revision 457), and also produces a bad ISO.  It seems as if there must be something wrong with my bin/cue files, but all I did was apply the Jot5 PPF... unless my original image is bad. (But why does the "original" PPF-patched Jot5 work for me then?)

I've managed to cause the .478-patched game to crash by attempting to equip a Movement ability.  Yes!
...Unfortunately, this happens in the .457-patched version as well.  Is my version really .457?

Revision 457 from SVN requires copying an FFTTextCompression.dll file into the FFTactext folder to patch.  It also reports itself as .453.
ISO generated with SVN revision 457 also crashes when attempting to equip a movement ability.

There is a "build.bat" packaged with the solution that's supposed to update version numbers for the programs, but melonhead didn't update the assembly info for the revisions since 459, so this script would have to run to update them.  The batch script errs out for me, so the version numbers don't update...

EVERY version from 459 onwards will say it's .457 (including 478) unless build.bat manages to run successfully, and it won't for me.  Yikes.

I'm now scanning revisions for something that will generate the same ISO as original Jot5, or at least not crash.  Hrm.

The reason why so many bytes are changed between "original" Jot5 and .457 Jot5 seems to be because strings of hex are being offset by a few bytes, resulting in huge swaths of bytes being different by position.  There probably aren't really that many differences logically.  The new .ffttext that I received from Raven seems to be the same as the one I had created, except everything was shifted a few bytes.  Patching with the new file also shifts things a bit, but otherwise everything seems to be analogous.  I'll try .457 vs .478 with some scenarios mentioned by Raven and see if I can find the broken behavior in .478.  If so, I can move to other revisions between the two.

Patching with .457 generates different MD5 than original version!
Every version seems to create an ISO with a different MD5 hash.  Very odd... I might have to try full diffs to see what's different...
Regardless of which version I patch with, nothing is obviously wrong with the ISO.  I'll need a more concrete case to reproduce.

There are differences in every version, but biggest differences are:
Original to being patched with .457
.457 to .478

.478 and the newer versions differ by 50 or so bytes.

MD5s computed thus far:

Jot5 orig 928eff13372df32a32d851c1040e1a09
Jot5 .457 448bb624c0518e90ed47073dcaccd73c
Jot5 .478 2235f91c90a0c6040fd3503eecf13f84
Jot5 .482 4a90820989252b992a63d6cf3a394624
Jot5 .483 1c6f1b456de4fddfa265cd9b63abbea9

  • Modding version: Other/Unknown


If 483 RC v2 is working we can probably just release it as 483 and worry about Tactext later (484 perhaps).  I think 483 v2 is the latest of what I've got, I don't think I've had any other bug reports on it that I can remember, and it's been long enough since I looked at it that trying to figure out what's wrong with Tactext again would require me to basically look at it from the start anyhow
  • Modding version: Other/Unknown


Glain, some of the hacks currently in development will involve FFTPatcher as an editing tool for their custom hacks.  IN other words, someone may want to use FFTPatcher, but change X and Y to be a list of flags rather than unsigned bytes.  Another example would be someone wanting WotL's job requirement table in vanilla (which would require you to have the offset of said table be variable).  In other words, can you increase the flexibility of FFTPatcher's editing abilities (by adding more things editable in resources.zip) for the next version of the program?
The destruction of the will is the rape of the mind.
The dogmas of every era are nothing but the fantasies of those in power; their dreams are our waking nightmares.


February 03, 2014, 06:24:35 pm #206 Last Edit: February 03, 2014, 06:46:39 pm by Elric
I've rewritten the EventNames.xml for the Resources.zip

This will give the ENTD's the correct names based on their Event Names. I've also labeled
the Bravestory events as BS, as the Bravestory uses sometimes different ENTD's when re-watching
scenes. You will notice either "and BS" which means that the ENTD is the same for the Event and
Bravestory, or "BS" which means that the ENTD is for Bravestory only. If you see one without BS,
it means that that ENTD is not linked to the Bravestory.

  • Modding version: PSX
<@Angel> Teach a man to fish and he'll open up a fishery to compete against yours.

Journey of the Five Youtube ChannelThe Lion War Current Status
Jot5 Leader :: Eventer :: OtherTLW Leader :: Eventer :: Other


This is fantastically wonderful! Thank you so much for this~
  • Modding version: PSX
* Angel should quit being a lazy bitch
<@Elric> I agree to that as well

nyanyame nyanyajuu nyanyado no nyarabide nyakunyaku inyanyaku nyanyahan nyanyadai nyannyaku nyarabete nyaganyagame
At the end of the day, are we not all trapped inside lemons?


I'm uploading the latest version of the 483 RC 2 source with Elric's event name edit baked in.  (That was for the PSX version, right?)
Apparently I can't use the Google code page to create downloads anymore, so I added it here...
  • Modding version: Other/Unknown


  • Modding version: PSX
<@Angel> Teach a man to fish and he'll open up a fishery to compete against yours.

Journey of the Five Youtube ChannelThe Lion War Current Status
Jot5 Leader :: Eventer :: OtherTLW Leader :: Eventer :: Other

A Blood Red Fox

Using version 482_V2 of Shishi, it is impossible to view the third image in "Other Images", and gives this error: http://i.imgur.com/S5u9LGC.jpg

It is also impossible to "Dump all images". The program will dump the first two, then when it gets to the third image it spits out the error and hangs up on it. So it never progresses beyond the third image.


Correct, this has been an error for a long time.

A lot of the other images that aren't viewable are winning conditions
which is explained in my tutorial.

One of them is also the worldmap Ramza.
  • Modding version: PSX
<@Angel> Teach a man to fish and he'll open up a fishery to compete against yours.

Journey of the Five Youtube ChannelThe Lion War Current Status
Jot5 Leader :: Eventer :: OtherTLW Leader :: Eventer :: Other


March 27, 2014, 07:24:15 pm #212 Last Edit: March 27, 2014, 07:33:13 pm by Grond
Great job on keeping the patcher suite maintained, but there are a few things in FFTPatcher that I think need addressing:

The "Ability Animations" (middle option) in the BATTLE.BIN patching subsection in the Patch PSX ISO dialog erroneously reverts the data at 0x2d3e6-2d40f (at least) back to vanilla defaults. This is actually the first few lines of the in-battle weapon & shield graphics & palette data and should not be overwritten. Please fix this if possible.

Also, could the deep blue "changes highlighting" in the program be made a bit less dark/intense (or make the color user-selectable)? It's too heavily contrasting IMO.

One last thing: would it be too much trouble to add an extra confirmation step (that defaults to No/Cancel) when saving a .fftpatch in a different format (PSX vs PSP) than the format it currently is in?

Thanks in advance.


Grond - late response but I'm doing some work on the FFTP tools, i'll try to address the things that you mentioned. The data being overwritten is kind of a big deal so i'll try to fix that.

Elric/SA - Do you know where worldmap Ramza is in the iso? I'd like to see if I can get him viewable in ShiShi. Also if there's any other images that shishi won't load, I can try to add these into it.


If you could find a way to make Shishi load FRAME.BIN, that would be amazing. Sadly I have fuck-all to give you towards finding useful data in there that isn't already in some tutorial thread I made for it.


@ Choto, worldmap Ramza is located in WLDMES.BIN. Secondadvent has more info on that.

Also, in case you see this before I talk to you,

[10:15] <Elric> [06:03] <Chotokumaro> apparently he started making an EVTCHR viewer/editor in ShiShi
[10:15] <Elric> I've totally mentioned that a ton of times :(
[10:15] <Elric> no one ever listens to the Elric
[10:16] <Elric> also
[10:16] <Elric> [07:37] <Chotokumaro> I changed it to false and the shit loads
[10:16] <Elric> i know hes not here, but i can paste this back to him later
[10:17] <Elric> there is a version of shishi floating around with that enabled, problem is, when you import the bonus.bin stuff through shishi, it gets fucked
  • Modding version: PSX
<@Angel> Teach a man to fish and he'll open up a fishery to compete against yours.

Journey of the Five Youtube ChannelThe Lion War Current Status
Jot5 Leader :: Eventer :: OtherTLW Leader :: Eventer :: Other


April 30, 2014, 03:17:09 pm #216 Last Edit: April 30, 2014, 03:22:52 pm by Darkholme

So, I've just downloaded the newest source code, 0.483RC2, which was posted recently in the thread. Up until now I've been working with the 0.478 with WoTL names copy, which I'm not entirely sure where I downloaded.

I find myself wanting to familiarize myself with the project and get involved. I've got a BSC in Computer Science, and I've been working in the industry for 2 years, during which experience my has been largely in PHP, C#, and Java.

I've been an infrequent user of this forum, but I have contributed a few things here and there.
  • I helped debug a couple ASM features (and helped come up with the concept for one) specifically regarding random gear assignment for NPCs.

  • I did some searching and determined the WoTL slowdown was an intentional frame rate limitation, which I believe led to people hunting down the frame rate limitation and turning it off.

  • And I contributed a couple of portraits.

That said:
Can I get a bit of a summary of how FFTPatcher works? I know you have indexed much of FFT, and that FFTPatcher makes ASM changes to the program.

  • How does it find the specific parts to change? Are they just hardcoded hex address locations, or does it find key parts of the code to use as reference points?

  • If they are just hardcoded locations, how is FFTPatcher able to handle more than one ISO Rip?

  • Is FFTPatcher able to make use of any of the extra space people have figured out how to free up in FFT?
    I know people have repurposed Kanji tables that were left in the game, and I recall hearing something about freeing up a bunch of space in Events because Squaresoft had it set up with a bunch of redundancy that can be taken out for other things.

That said, I'm also looking for a to-do-list for FFTPatcher. Does one exist?
  • Bugs/missing essential features list

  • A proposed features list

  • A list of features which can currently be done in a non-user-friendly manner using spreadsheets

  • A List of Potential GUI Improvements (I can think of a few things that would make the GUI more manageable, off the top of my head)

I have some ideas of things that I think could make FFTPatcher better, but depending on the current to do list, they may not be what I would want to work on first.

Do you have a functional code library that can do gets and pulls? like an SVN or Github type of setup?
@Glain: Actually, I would love to sit down and talk to you about some of this stuff in a quicker fashion than on the forum. Could you PM me an alternate means of contact? Skype would be good. I can also do SMS (I use an Android Phone with DeskSMS installed, so I can send texts from my PC).


I don't really have much time to go into detail, my schedule is crazy atm with finals coming up other fun RL stuff. I have been playing with the source code for the past couple of weeks though. Glain is more knowledgeable than me with it, and tbh if you have alot of experience in C# you could probably figure the code out better than I could.

Our main form of real-time communication is IRC. Like I said I have barely any time to go into detail right now but pop on and maybe I can fill you in on a couple of things.


Yeah, I'll try to jump on IRC more regularly so we can discuss.  It's nice to see more interest in maintaining FFTP!  Since more people are starting to work on it, we need to figure out what we're going to do for source control.  Melonhead (the original author) had it on SVN, but since then I've basically just been making modifications on my local machine and uploading the source as a zip file or what have you as necessary.  So yes, we'll need to come up with a solution for that.

That random gear hack that you helped with the concept for was my first ASM hack for the site (and my first post here).  It's been a while!

FFTPatcher (the program itself) doesn't edit ASM; it's more for editing static data in the ISO, and it does use hardcoded addresses.  I'm not entirely sure how it handles different kinds of disc images.  That said, the entire FFTPatcher source includes several different editing programs, including the ASM patcher.

There have been some ideas floating around here for features; there are also a few times I've raised some questions about what would be useful.  Mostly I've been using this thread to keep track of requests, etc.
  • Modding version: Other/Unknown


I took what I have for 483 R2 and put it out on github here.  I was able to set up Visual Studio to work with it by installing update 4 for VS2012 and the git tools for visual studio, then played around with it a bit and got it to work with my repository.

We should be able to use this for source control.  I spent a while clearing out all the files we didn't need for source control (bin/obj folders, the old .svn folders, and the resources archives), and I think we should avoid committing those files.  If you want to make edits, I think you'll have to make a github account and I can add it as a contributor, and you can link that to your IDE when you connect to the repository.

It would be good if we could get the latest changes into the repository (Choto's edits, once they're working, and maybe lirmont's font updates?) and then use that as a base going forward so we can keep things organized and potentially work on things at the same time.

Maybe play around with it and see if you can connect to the repository from your IDE, and if so I can set it up so your accounts are contributors on the project and we can try getting the edits in there!
  • Modding version: Other/Unknown