I found this program reading about playstation stuff. It looks way more complicated than we need it to be, but since timutil is borked for windows 7, this may be a substitute. I didn't take a good look at it but it claims: "Timtool allows easy conversion and Manipulation of Tim files."
This is a really quick small application that will make handling text a little bit easier. It's got two textboxes in which you can manipulate text different ways. If you're building patches it will insert the xml tags for you. It can add a space before each line of whatever is in the box to make uploading to the wiki a breeze. It can also add MassHexASM style comments (#) before any text that has a tab in front of it.
This is an ASM research tool that will scan a routine and report all the 'jal' commands in a column list in notepad. I'm hoping it will come in handy in telling what a routine does without having to document ALL THE COMMANDS. I had a thought to make them scan larger amounts of routines and even linking the hex addresses of the routines to the wiki to report the name of the routine. I also had a thought to write a program that will auto-notate routines by filling in knowledge that we know. So for example
if r4 is unit data and theres a lbu r2, 0x0001(r4), edit the line with the annotation
lbu r2, 0x0001(r4) Load Unit ID
This utility will let you import a Bonus.Bin imagine in .TIM form without having to do any math or tedious copy/paste. I'll probably merge it with another program down the road.
f you put this program in your FFTorgASM directory, on startup it will load all patches from all xml files in the folder (much like orgASM does). You can then select a file (like BATTLE.BIN) and it will list every patch that writes to that file.
When it does this, it also checks each patch against every other patch for overlap conflicts and highlights the patch red if a conflict is found. You can then click on a patch and the program will tell you: which xml file the patch is in, the number of the patch that it conflicts with, and both "offset" blocks that cause the conflict.
In addition, if there is a formatting error with your xml files it will display a message when it tries to load on startup telling you which file is failing. It will also spit out a bunch of programming junk that may give you a hint of where in the file the issue happens.
I have hopes to make this thing also able to move hacks by analyzing their code and changing jump commands appropriately, but as for now this should be immediately useful. May crash or have bugs cause it's still new.
FFTEE - Effects Editor
This effects editor will read in a .bin effect file and allow you to change some things. Most of it is highly experimental but you can do some things like change frame dimensions, particle density, motion of emitters, timing, sound effects, tinting. Unfortunately since the effect files are so complicated it only went so far. At the very least, one can mess with random things and then test their effects to see what changes occurred and hopefully come up with something cool. I plan to rewrite this at some point down the road since I've learned a ton since I started the project.
I think we have enough of the map targeting routines to expand upon the original Range/AoE system. The question though, is if it will be enough benefit for the effort. I'd like some input, especially from patchmakers to determine if it will be a big enough benefit to go through with.
If done, I was thinking of each 0x0f (16) values corresponding to a certain pattern. Since most maps have 16 tiles, each section should be able reach all ends of the map. In order to make different designs it's simply a matter of writing an algorithm that sets the correct data for each panel. So more routines would take up more space, which is why i'd like to keep it from getting convoluted.
The AI is likely to have some issues with our tinkering too.. but if so, we'll cross that bridge when we get to it.
This file tells where in RAM data and tables are located when BATTLE.BIN is loaded into RAM
This file has all of the routines that I've documented, but haven't been uploaded to the Wiki
This is all the research I've done into how Effect.bin files work. Most of the data therein is related to E0001.bin, or cure
The rest is a mix of miscellaneous files I've acquired over time, from various different people. I will try to keep a collective list of all routines that are currently documented in the respective file routine locations on the Wiki. Meaning, if you see routines without notes in these files, it may already be documented and you should check the wiki before doing needless work. **Disclaimer: I may forget to update this stuff so additional information may be collected over time.
HxD - This is a hex editor which you can open .bin files with to view and edit the hex within.
Things may seem overwhelming at first, but with time and effort anybody can learn to ASM hack and truly make FFT do what they want. Re-reading things every once in awhile definitely helps as well. Sometimes it takes a couple swings of a hammer to break through a wall.
@ the other ASM guys: Let me know if there's any other important stuff you guys think would be useful to beginners.
Hey any Torchlight 2 players, i found a nice little bug. When you're in the desert part and you have the questline from the Djinn dude, you take a portal to a dungeon in which you have to stay inside a circle of light as you move through the level. You wind up fighting a bunch of monsters and getting tons of loot, including a couple giant chests, unique items, and a secret spot. After you're done, you can re-enter the zone and do the whole thing over again.
The zone is called the luminous arena or something. Also, when you reach the end of the follow-the-light part, wait around before walking into the portal and a lever will spawn, leading to a secret room with 2 more chests.
This seems extremely useful. This guy talks about all kinds of different things about PSX hacking and how things work. Alot of it was above my head, but some of you more talented ASMer's may find this very enlightening... or not so much, idk. Either way, I strongly urge you to take a look
This is a link to a small document a guy named Klarth wrote about .TIM files. Again, it may shed some light on things... or maybe not.
This makes it so that the mighty swordskills have a % chance to break equipment, but always function as normal damage swordskills. Maintenance prevents item breakage, but not damage. Change "XX" to whatever chance to break you want. I also changed the damage formula to (WP+Y)*PA like the other swordskills, and divided the damage by 2 to prevent roflstomping. If you don't want this, change the bolded line to "00000000".
Giving FFM's suggestion a shot and making the break chance be whatever the ability X in FFTPatcher is. If anybody gives this one a shot please let me know if it works correctly as I didn't test it yet.
Spells can Crit Hack (Needs fixing, does not work)
Here is a Beta "Spells can crit" hack. This trades compatibility for critical hits in formulas 08, 1a, 1f, 21. Its only a quick and dirty version but with an initial test it seemed to work. Oh, It also cancels the knockback routine for critical hits because last time we tried this it seemed to mess things up. I'd like to expand this hack to make a couple other formulas able to crit.
Blank Support ability Hacks: FFM's originals fixed for load delay
Blank support below Non-Charge increases damage and healing by X%. Blank support 2 under Non-Charge reduces damage/healing by 20%. Note: X value is hexadecimal. Default is 0x14, or 20%.
<Patch name="Supports under non-charge hack"> <Description> Blank support below Non-Charge increases damage and healing by X%. Blank support 2 under Non-Charge reduces damage/healing by 20%. </Description> <Location file="BATTLE_BIN" offset="11F580"> ba600508 00000000 </Location>
Addend: This removes the decrease in healing for the 2nd blank support under Non-Charge.
<Patch name="Supports under non-charge hack Healing Addend"> <Description> This removes the decrease in healing for the 2nd blank support under Non-Charge. </Description> <Location file="BATTLE_BIN" offset="1203bc"> DF470508 00000000 </Location>
@ Raven: Revised these to work with Item and fixed the decrease to be 20% for simplicity.
Blank support Accuracy Hack:
Edit: Apparently the second hack doesn't work correctly. I'm leaving it up just for record, but the first hack after this description will null 20% of the targets evade. This is the one used in JOT5 and should work fine. Thanks to Grond for the tip-off
Combined this with an altered version of Xif's hack that should add % hit to all abilities. This is not thoroughly tested so please report any abilities that are not affected by it.
<Patch name="Support under Equip Change adds XX% Hit (with Xif's Hack)"> <Description> Set YY and XX to be the same value </Description> <Location file="BATTLE_BIN" offset="11e9cc"> FC470508 00000000 </Location>
Sprite ID causes Game Over when crystallized/treasured:
You can put up to 5 different sprites that will cause game over. If you need less, just make the excess ones duplicates and it should work fine. Special thanks to Glain for basically figuring everything out for me and explaining it.
This will change the time it takes for a jump to land. The default formula is 50/speed. Right now you can only change the constant and the stat chosen. I'd like to expand it a bit and put it in Raven's spreadsheets.
<Patch name="Jump CT formula hack"> <Description> Formula is CONST/STAT. STAT corresponds to offsets in Unit Data. </Description>
This hack is a little strange, but it allows you to change which ability effect is used for the thrown bombs. It uses the Evade and Unkown bytes together as the EFFECT ID. Edit these values in FFTPatcher and apply the ASM. Fingers crossed for no bugs :) (It's the unknown byte to the right of "Range" in the Items tab)
Ex: to make Fire ball use Choco Ball: Unknown = 0x01 Evade = 0x3d Total ability = 0x013d
Ok, bear with me. The effects ID's are stored in reverse order. Also, instead of ability ID's over 0xff being 0x0100, they have 0x0900. This simply means that there's an 0x0800 flag active for some reason. In order to not break anything you may need to keep that flag. Edit as follows:
X potion is currently 0x0a09, which is really 0x010a (09 turns into 01 and is placed in front) To change this to 0x0001 (cure), turn the 9 into an 8, and place it in front again: 0x0801
It's a bit strange for the time being, but these will be assimilated into Raven's workbooks where they will be much more intuitive.
Two hands affects abilities with weapon strike/ranged weapon
This hack doubles WP for any ability using weapon strike/ranged weapon flags. If WP is not in the abilities formula it will have no effect. It also has no effect if the weapon is forced two hands just like vanilla. Brought to you by Limited Testing LLC™.
V1.2 Fixed a problem with doublecast Fixed a bug that broke all other sprite animations
This has 2 parts. The Multi-Hit editor allows you to designate how many hits each ability will have, if it is a random or set number, and if having two swords will allow 2 hits (attack, break skills, etc.).
The Weapon Effect editor will allow you to give a weapon an effect when used with ATTACK. It mimics an ability, so the designated ability ID must have the effect that you want to set. In other words, this will make a weapon function like a Magic Gun, but adhere to its own weapon formula.
Multi-Target Effect Files
These effect files should allow effects like Wave Fist to display on all targets hit by the ability instead of just a single target. This was done using my effects editor, so there might be some that don't work. Having things like too many particle effects at once, or the camera switching too quickly will cause a crash too. Please post if you find one that doesn't work and I'll fix it up. Just import these via CDMage in the Effect folder. These effects are in the Effects.rar attachment.
E317 - Choco Ball
R/S/M Freedom Hack This hack allows you to designate which R/S/M adhere to reaction slots, support slots, and movement slots. In FFTPatcher if you click on one of the RSM abilities, you'll notice a textbox called "Ability ID". To use this hack, change those numbers to the following:
Reaction - 1 Support - 2 Movement - 3
From what I could tell this byte had no effect in vanilla. Hopefully it won't break anything.
This one will let you choose what ability Hamedo performs. You have to input Skillset number and Ability ID. The Ability Id bytes are swapped, so if I want ability 0x01FF, I need to put in 0xFF01.
<Patch name="Hamedo attack/skillset"> <Description> Ability ID bytes are reversed. For example if I want Stasis Sword (009B) I would enter 9B00 for Ability ID and 21 for Skillset </Description> <Variable file="BATTLE_BIN" offset="1170b8" default="14" name="Skillset"/> <Location file="BATTLE_BIN" offset="1170b9"> 000534 </Location> <Variable file="BATTLE_BIN" offset="1170c0" bytes="2" default="FF01" name="Ability ID"/> <Location file="BATTLE_BIN" offset="1170c2"> 0634 </Location> </Patch>
Chocobo and Unit move independently
This hack will allow both the chocobo and unit riding it a movement per turn. That means you can move from unit to mount, and then move with the mount. Or if you start the turn mounted you can move with the mount and then move off the mount with the unit.
** This hack has bugs, but I can't recreate them. If anybody uses this hack and notices that they can move multiple times, try to get a savestate before the unit moves so I can fix it =)
All Mimes start with 0 abilities in their mimic skillset. Whenever an ability flagged "mimicable" is used, it gets put into their skillset. In this manner they learn abilities over the course of the battle. Original Mimic functionality is deactivated.
Caveats/to be fixed: -Max number of 16 abilities -Item, charge, jump, throw, etc. cannot be mimic'd yet -Katana abilities are usable regardless of inventory (I think). Katanas may not break -Additional miscellaneous bugs that are bound to exist
<Patch name ="Choto's Mime Redesign v2.0 - Mime learns abilities used in battle"> <Description> All Mimes in battle start with 0 abilities learned. When an ability set "mimicable" in FFTP is used, it is added to the
mimic skillset for all units. Max number of skills is currently hardcoded to 16 regardless of variable setting. </Description> <Location file="BATTLE_BIN" offset="11a4a8"> <!-- Allows mimic to show up as a skillset --> 00000000 </Location> <Location file="BATTLE_BIN" offset="11a8ec"> <!-- Set all mimic abilities learned --> FBFF2225 13000334 80470508 00000000 </Location> <Location file="BATTLE_BIN" offset="EAE00"> <!-- Set all mimic abilities learned --> 07004310 1300422C 03004010 00000000 40060608 00000000 43060608 00000000 51060608 00000000 </Location> <Location file="SCUS_942_21" offset="4ad7c"> <!-- load learned abilities --> 90470508 18000334 </Location> <Location file="BATTLE_BIN" offset="EAE40"> <!-- load learned abilities --> 08006414 00000000 1580033C 00206324 21186500 21186500 00006294 89690108 00000334 0680033C 61690108 944A6324 </Location> <Location file="BATTLE_BIN" offset="5ec"><!--Mimic behaves as default skillset--> d8510780 </Location> <Location file="BATTLE_BIN" offset="128030"><!--Store learned ability in mimic skillset--> A4470508 </Location> <Location file="BATTLE_BIN" offset="EAE90"><!--Store learned ability in mimic skillset--> 1980013C FCF5228C 00000000 1F004014 A8382124 00002394 0680013C 1B006010 C0100300 23104300 40100200 F0FB2124 21204100 05008290 1580013C 10004230 12004014 FC1F2290 00000000 2000462C 0E00C010 00000634 21282600 0020A494 00000000 09006410 2000C42C FAFF8014 0200C624 00000000 40300200 2120C100 02004224 FC1F22A0 002083A4 0800E003 00000000 </Location> <Location file="BATTLE_BIN" offset="eAFFC"><!--Store learned ability in mimic skillset--> 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 </Location> <Location file="BATTLE_BIN" offset="00116BD8"><!--Mimic functionality--> FFFF0234 </Location> <Location file="BATTLE_BIN" offset="113980"><!--Item Throw range--> ffff0334 </Location> <Location file="BATTLE_BIN" offset="116b50"><!-- MP Usage--> 00000000 </Location> <Location file="BATTLE_BIN" offset="127f4c"><!--Ability data setting--> 00000000 </Location> <Location file="BATTLE_BIN" offset="11bf64"><!--Mimic Ability storing--> 06004014 </Location> <Location file="BATTLE_BIN" offset="DA84c"><!--Spell Quote--> 00000000 </Location> </Patch>
This is one topic I haven't been able to find any kind of info about.
Battle.bin and SCUS are accessed during battle right? How does the game load or initialize other files like effect files? The graphics for the battle menus, status effects, etc. are contained in Frame.bin, so wouldn't they have to be accessed as well? Do these files hold addresses in RAM like SCUS and Battle.bin?
Ok, so i've noticed various hacks use tables, and I know square has its own tables in the game, but i'm wondering how they work. I was looking at Xifanie's compressed table proposal thread which shed a little bit of light on things, but they seem like they range from simple to potentially mindboggling.
It seems as though they store static data to be referenced throughout the game (Weapon Proc/Crit chance). Or, In the ARH's case, they store different conditions to be checked against the current conditions of the unit and allow X ability to be used if the conditions are the same. I guess i'll list my questions
1. Can they store dynamic data, or have their data changed in game without overwriting the values that are initially entered?
2. What exactly is the pointer table? I'm assuming it functions like unit data pointers?
3. Do the categories vary in length based on the number of subcategories (Parameters?) held therein?
4. Are the rows simply the number of offset rows taken up by the table?
5. Is this also how the game stores all of the data of each job, skillset, item stats, etc.?
Now would initializing the table in game look something like this? I'm using a situation where one unit is attacking another, and how the game would load the new chance for a critical hit. This is just how I see it in my head...
... Load item ID Load item WP etc. ... Jump to table (Weapon crit chance hack) Look up crit chance based on Item ID, store in some register // Return from table with weapon Crit chance ... Jump to critical hit routine // Use weapon crit instead of game's default crit chance ....
Any clarification would be much appreciated. Thanks!
Well this stale thread has been up for quite awhile and no updates. It's been many moons since my original post and my project is taking somewhat of a different direction, so i figured I'd document where my effort is going.
School has been taking up much of my time, so I haven't had the time to devote to making things happen yet, so I am instead focusing on things like plot, ability ideas, class ideas, etc.
One of my favorite things about FFT (and with most games I play) was the ability to build something from weak and pathetic to super-badass. So having the ability to reach god-like status will be a goal for my patch. I'm going to use Pride's job defense hack to real damage back quite a bit, and if I can figure out how to modify defense values through equipment/passives/etc. Hopefully we'll be able to make defensive roles. This will also allow you to stack offensive boosts to become as hard-hitting as you want without OHKO'ing everything you aim at. I certainly will be enhancing the enemy as well. In a nutshell, I want to be able to build different roles in order to systematically defeat the enemy (as may be required in certain fights) instead of brute-forcing your way by equipping 1 power wrist.
One of my favorite games has always been diablo 2, I think for the fact that the random drop system is exciting. I want to try to bring in that concept (if I can) by assigning multiple items to drop with a certain amount of chance, say, when you get a treasure chest. I will also be looking into making traps spawn in random places on the map, so that instead of farmable locations, they'll be random bonuses. Yes, they are theoretically still farmable, but hopefully by putting the chance for a useful item lower, it'll take more time to find. IDK, just brainstormin ^_^.
For jobs, I'd like to make each class 1. exciting 2. have a certain specialty. 3. have a "conditional" ability, so that you strive to create certain conditions throughout battle 4. mix well with other classes.
Again, I don't have time to post much else, but I will give an updated job list of those that i'm considering. I was just bothered by having an old topic with irrelevant information. When summer comes, I hope to have much more time to solidify the structure of the patch.
Tier 1 Soldier - Weapons master, uses Greatswords, equip x's become innate also gains a different ability based on weapon equipped
Chemist - Some offensive items, Maybe some retro noiseblaster/bioblastars
Archer - Overhauled abilities. Toying with expendable "arrow" items to enable abilities
Knight - defensive unit, overhauled abilities
Priest - semi-overhauled abilities. added "Exorcism" a much needed offensive spell. Also a self-cast "faith" ability for better healing.
Wizard - semi-overhauled abilities. Retains Flare and gains Flare 2. High MA unit
Monk - adding a "Buildup" mechanic. Can obtain dual wield as a passive (2 fists).
Dimension mage - Time mage with some cool new spells
Thief - trying to make steals a little more conditional to avoid overuse. Also added some cool offensive abilities. May make some kind of monetary gain from using a thief.
Elementalist - Kind of a gray unit atm. I made all elementals accessible all the time, they just seem bland though.
Berserker - Axe or mace+shield wielder. Gained some divine knight ability effects. Will be berserkable with increased stats, so you'd trade control for stat boost.
Mystic Knight - Abilities will be unlocked by learning mage abilities. Class will be unlocked by knight job-level. So you'd have to put in some work to unlock it, but they have some natural-seeming abilities. I know, they're kinda getting overdone, but I totally want one.
Valkyrie (Lancer/Dragoner) - Breath attacks get status effect procs, some other cool spear-abilities, and a limited range jump!
Samurai ( Abilities overhauled).... No freakin clue yet. Been trying to come up with ideas for sam's. I know they're going to 2 hand katanas, and katanas will have some great weapon-evade.
Archon - Will be given buff/debuff manipulation. Hopefully a buff steal ability. Thinking about a spell-steal ability that allows you to cast whatever the enemy is charging.
Warlock - Has an ability that adds: Undead/Oil/Sleep, and has abilities that require undead/oil/and sleep respectively. Again here i'm trying to let conditions dictate best choice of ability instead of "CAST NIGHT SWORD AGAIN".
(Hat tip to who made the patch with the "Dimensionalist" class, Raven I think?)
The rest of the concepts are mostly in disarray, with some organized topics here and there. I'll post more when I can, and as I settle on final decisions.
I feel like this is kind of a long shot, but is there a way to make proposition rewards have an effect on your units or something like that? IE: Treasure X adds extra Y amount of bonus gil from battles... Treasure Z adds +1 PA to all units?
Hello, I've been messing around with patches and FFTorgasm trying to make whatever changes my heart desires, but i keep getting an opcode error at different points, usually during battle. It is the same opcode error that Dome was getting when boco was attacking that i found in another thread. I tried to upload the screenshot but i'm not sure how to. the message says: COP0 Opcode 11 UNK.
Is this an error that's usually related to ASM hacks or FFTpatcher? A couple times I made changes to an existing 1.3 patch or easytype patch (The random unit gear goes with story progression hack in particular) and i remember hearing that modding existing patches often causes problems. If this is the problem, would there be a secure way to use these patches as a framework and still make my own changes to them?