• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
March 29, 2024, 04:14:18 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.


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 - Lennart

1
I wouldn't look that deep. The value you change is in the routine that runs for all units at the start of a turn. It's just where the +10 is located. Basically, everyone uses this one number.

Even that max MP code works in a similar way. All allied units run this routine which sets their MP to max after a battle (and probably during other events as well). If you want to mess with individual unit MP stuff then you'll have to write some of your own code in.
2
This morning my head's been a lot nicer to me. Thanks for your encouragement :)

The code works in a curious way. Darth mentioned something about it working only when units are 'created', which does not apply when a save is loaded. It only seems  to apply to new units and after a battle (which happens to be when level ups occur). The surefire way of testing this is to start a new game. The enemy units should always have full MP though since they're generated on the spot.

You probably already know this but save states will pretty much load up an 'old' version of the ROM back when the save state occurred so they're useless if you're testing multiple changes to the ROM. Always re-open the ROM again after making changes.

Hope that helps.
3
Not to necro or anything but I've fallen really ill and I'm barely able to keep up with work. The worst part is I don't even know when I'll get better. I sincerely apologize for starting something I can't finish. If anyone wants my notes or anything, they're right here.

Note that they are hardly reliable and mostly guesswork in the end.

General stuff: http://www.mediafire.com/view/?f4ae3udxizfvwe7
Battles: http://www.mediafire.com/view/?j70198qc7ab95zr

Darthatron's Work:

MP gained per turn
00321DC0

MP Channeling bonus
00321E30

Start with Max MP
BD180: B8 03 C4 E1
BD18C: 00 10 A0 E3
BEC44: BA 03 D5 E1

I can't even get on the computer regularly so I'm just putting them here in case I disappear. Thank AugustDrake for reminding me about FFTA2 hacking at all.
4
Not to necro or anything but I've fallen really ill and I'm barely able to keep up with work. The worst part is I don't even know when I'll get better. I sincerely apologize for starting something I can't finish. If anyone wants my notes or anything, they're right here.

Note that they are hardly reliable and mostly guesswork in the end.

General stuff: http://www.mediafire.com/view/?f4ae3udxizfvwe7
Battles: http://www.mediafire.com/view/?j70198qc7ab95zr

Darthatron's Work:

MP gained per turn
00321DC0

MP Channeling bonus
00321E30

Start with Max MP
BD180: B8 03 C4 E1
BD18C: 00 10 A0 E3
BEC44: BA 03 D5 E1

I can't even get on the computer regularly so I'm just putting them here in case I disappear. Thank AugustDrake for reminding me about FFTA2 hacking at all.
5
Version 0.1.2 of my tools have been released. They fix the issue you've found and one extra one. The safest solution is to redo all your changes. Since Eternal is a pretty cool guy and eh doesn't afraid of hacking FFTA2, I am willing to 'repair' your ROM to undo any errors caused by the two bugs. I'm happy to say that there will probably be no other major bugs unless you use an already hex'd ROM with bizarre values.
6
FFTA/FFTA2 Hacking / Re: FFTA2 Tools (Updated 2013/02/16)
February 16, 2013, 01:21:25 pm
Version 0.1.2 has been released. Please read the big red text on the first post.
7
If this is an issue with one of my editors, I can look into it. There could be some bug which changes values without you knowing which would be terrible. I personally don't see a reason why Warriors should be messed up with your changes so I'm thinking there's something wrong with the editor. That or you flicked some unknowns by accident. You can send screens of all the Warrior things you've changed.

Otherwise, you've done a good job where I haven't. Things are heating up with examinations and I want to try my hand at some other JRPGs and maybe have a crack at one of my life's goals. Hacking isn't very high on my priority list but as I mentioned, if there's a bug in the editor I'll try to fix it ASAP.

Actually, I'll wait on this bug report. Because if there's a bug in the this tool, there will be a bug in the next one as well. You're the only one who really uses these things so I'm counting on you.
8
FFTA/FFTA2 Hacking / Re: FFTA2 Tools
February 08, 2013, 12:03:59 am
Oh no, I never felt any malice from you. I'm the one being doubtful here so if anyone is mean, it's me. I really appreciate someone showing interest in FFTA2, which I find to be bashed to the moon and back for silly reasons like plot or one or two easily fixable mechanics.

I guess you want to make your own project so good luck with that. If you need help with something, then I can definitely look into it for you though I can't guarantee results. It took me the longest time to figure out what little I know and others have made it clear that what I've accomplished is laughable.

I'm going to work on an equipment tool next. Afterwards, I need to flesh out what I've already got. There are too many unknowns as is and any future tools will probably have even more (although things like the Bazaar and the Auction House are pretty much complete). If you desire a certain tool first, I don't see why I shouldn't give it priority since you're probably the only one seriously using them.

Unfortunately, I'm still not feeling very motivated with hacking or life in general, so progress will be slow.
9
FFTA/FFTA2 Hacking / Re: FFTA2 Tools
February 07, 2013, 10:41:32 am
<3 you too Eternal~


When I first saw the wall of numbers, there was no way I could gauge anything and there was no particular explanation to why Archers had 9 HP growth and not 8 or 10. So I called it 'unreliable' naturally. However, with your response, you've proven that you do know quite a lot about the game and that your experience alone will be able to create, at the very least, good results.

One thing to note is that defence/resistance is halved during damage calculation, so it tends to be worth half as much as attack/magick. However, since there are no true tank classes in this game, only 'durable damage dealers', this isn't really particularly important. HP and MP aren't quartered like other growth stats but they also can't be boosted by gear. Any point increases in those growths will yield more significant results.

I'd also like to remind you about base stats. Base stats are assigned on recruitment. Even if the unit changes job, these stats will always remain the same. Therefore, they pretty much only serve to encourage 'recruit as X, level as Y or X.'

The editor hasn't been rigorously tested like professional software (and even then...) so I can't guarantee that it's unbreakable. However, if you don't do crazy things to it and use the right ROM, it should work unless the game itself imposes restrictions. I'm pretty sure Move caps at 97 but the editor doesn't care and you can set it to anything less than 256. If you manually hex the ROM and input values that are larger than anything vanilla has for any value handled by a drop down box, it will mess it up. I highly doubt that anyone is that adventurous to set stuff like Gender to 0xFF manually but whatever. The text files included are the lists used in the drop down boxes so you can just add lines to extend valid inputs.

If you'd like to work with me together on a hack (promise I won't be pushy with what I've already got), I'd be more than happy to. If you want this to be your own project, then that's fine as well. I just find that having someone to pool ideas and verify changes with is pretty much the only way to get a solid result when trying something completely unheard of.
10
FFTA/FFTA2 Hacking / Re: FFTA2 Tools
February 06, 2013, 08:14:42 pm
The ability editor is out. It doesn't do everything but it does a lot more than nothing. Feeling sick and tired.

@ Ethereal Embrace:
It's nice to change things according to how you feel but you need to step back and realise how unreliable it is. Of course, if you've played this game for many years then your authority may rank higher than the average player's but in the end, it's better to plan ahead than run through the game endless times and then feeding subjective opinions into endless patches and revisions.

I hope this doesn't discourage you from hacking FFTA2 but if you want to produce something good, you'll need to have a strong basis for why a certain number was chosen. Of course, if you believe your own experience is basis enough or you plan to make a fun hack rather than a serious shot at balance, then by all means use these numbers.
11
FFTA/FFTA2 Hacking / Re: FFTA2 Job Editor
January 28, 2013, 09:25:44 pm
Thanks for your support.

Here's a link to the GameFAQs Stat Growth Chart: http://www.gamefaqs.com/ds/937330-final-fantasy-tactics-a2-grimoire-of-the-rift/faqs/53256

Familiarize yourself with how stats work before making any edits. Also note that whoever wrote that guide is off on certain stats by a digit. The editor takes values directly from your ROM so it's correct.

Updated post with a nice picture. No real progress to report since I've been busy with damned assignments.
12
FFTA/FFTA2 Hacking / FFTA2 Tools (Updated 2013/02/16)
January 27, 2013, 01:44:40 pm
IMPORTANT:
Version 0.1.2 fixes two major issues with the editor. If you've already used either editor, the safest way to ensure there are no bugs in your patch is to redo everything from scratch. I sincerely apologize for this major inconvenience (although I'm also pretty sure this only applies to one person...) but I don't say I didn't warn you! I don't believe there are any more bugs since I've done a more thorough test this time.


Below are some basic tools for the US version of Final Fantasy Tactics A2: Grimoire of the Rift written in Java. Anything they do can be easily done in a hex editor but it makes things a little easier to navigate and more intuitive.

These tools are currently in alpha/beta/something phase and any bug reports will be much appreciated. If you know what a certain unknown or blank happens to be, then by all means tell me and I'll update it as soon as possible. I recommend extracting zips to their own folder and putting the ROM you want to edit in there too (keep a clean version somewhere else as backup).

Job Editor



http://www.mediafire.com/download.php?7br53q0fnqf92pg (0.1.2)

This tool can't edit names.

Ability Editor



http://www.mediafire.com/download.php?q97o8x7uv094vmt (0.1.2)

This tool can't edit what abilities belong in a certain set (e.g. Arts of War), what animations it has, AP required and where it is learnt from.

Important things to note:
Required equipment is left in hex because I don't know how it works. Consider looking for an existing ability (eg. Shield Bash) and use it's value for the same requirements.
Fixed damage is the fixed bonus added to a unit's offensive stat during damage/heal calculation. It is sometimes ignored if the ability has a property with certain modifiers.
Target type, range and radius affect eachother. Certain combinations will result in unpredictable results. Consider looking for an existing ability with desirable properties and copying it's values.
Height difference is how much higher/lower a unit can be from the target's height and still be hit by the AoE. Note that this only really applies to abilities like Black Magick or Summoning Magick.
AP Slots is where an ability's current AP is stored in a unit's data of a certain race. While the game may read from the same memory, if a unit has maxed AP in one address and is Hume, it will have mastered a different ability than if it were a Bangaa.
The Blue Magick Index is (what I assume) to be which AP index to max out if a unit with Learn is hit by the applying ability. Also note that Blue Magick abilities all have two copies, one for the player and one for monsters.
The check boxes on page 2 are probably heavily tied with laws as well as granting certain properties, determining whether or not this ability breaks certain laws.


The missing features will be implemented in separate tools. However, since only one or two people have shown interest in FFTA2 at all, how much interest I show towards producing tools or hacks is just as meagre. Even if I could finish everything in a matter of days, I probably won't. Besides, what I achieve is shit compared to what someone smarter could do in seconds.

13
Lots of things have been shifting as of late. That being said, I will be generally harsher on MP than the original (think privileges, Ether shell, etc) but everyone will start with full MP. Depending on how it plays after I get it done, I will grant more or less MP regeneration (or even put natural regen back if it gets really bad). Of course, everyone starts with max MP so everyone's favourite first turn Ultimas will be back. They'll just cost as much as they should, considering their OHKO potential.

Two things to take away from this are: max MP growth will matter (although the minimum achievable max MP will still let you cast the strongest spell) and MP management will actually affect your decisions mid battle, not just with party set up and selecting privileges.

Thanks for your input and I hope I'll be able to write up a more concrete set of changes as well as implement them.
14
No longer really relevant, made some serious discussions with formerdeathcorps and I made some fundamental errors in some concepts. Probably not gonna write up another set of notes.

Thanks for your support but I've revised the notes above and made a few changes (after looking over it seems I've kinda come full circle with a few things...you wouldn't believe how many numbers I've played with) so my apologies if you slogged through my endless walls of text.

A, D, M and R will represent Attack, Defense, Magick and Resistance.

Statistical Concepts

The Damage Formula:
Damage = (A - (D * 0.5)) * 0.5 * 1.5
Damage = (M - (R * 0.5)) * 0.5 * 1.5 (taken from two threads in GameFAQs)
The multiplier 1.5 applies to side attacks and Magick and is the best representation of average damage. It's 1.0 and 2.0 for frontal and rear attacks respectively. Fixed ability bonuses are ignored. When calculating, truncate after every operation.

Stat 'Value':
According to the damage formula, 1 HP = 4/3 A or M = 8/3 D or R assuming units always deal 100% physical AND Magickal damage (more on pure vs hybrid later). To simplify things, the 0.5 and 1.5 multipliers are ignored, resulting in 1 HP = 1 A or M = 2 D or R. So if a character gained 20 HP, it would be the equivalent of gaining 40 D. Think of it as exchanging currencies. While this is the foundation to stat balancing, it only holds if A or M is greater than to half of D or R. If it is less, A, D, M and R are technically 'worthless' compared to HP until the relation is reestablished.

Mechanics
These are rules written into the game which govern the system. Note that stat growths only start applying transitioning from level 1 to 2. This means that 98 growths are applied in total. Consider this a primer of sorts.

Variance:
Variance = floor((Growth + 9) / 10)  (taken straight off the stat growth guide on GameFAQs)
For our purposes, 0 growth has 0 variance and 1 - 10 growth has 1 variance. There is a 1/3 chance variance is added to, subtracted from or not applied at all to HP, MP, A, D, M and R growths when leveling up.

Quarters:
A, D, M and R are all divided by four and truncated before being applied to damage calculations. HP, MP and Speed are shown and used as is.

Growth base:
All jobs are given a set of stats on recruitment which never change. Growths are added on top of these stats. For A, D, M and R, these too are quartered. Speed has a hardcoded minimum base of 50.

Speed:
Speed's growth is stored as a percentage representing the chance of gaining 1 point each level.

Limits:
Speed has a max of 149 and everything else has a max of 999. This means that for A, D, M and R, there is a stat growth max of 249. This number can be pushed to the true max of 999 with gear.

New Mechanics
These are additional clauses which will encourage balance between jobs.

Total Stat Distribution:
Out of the 999 max, all 999 HP and MP must be alotted to growth stats as equipment can't boost HP or MP. Concerning A, D, M and R, 200 will be alotted to growth stats, 100 will be alotted to job stats and 50 will be alotted to equipment stats (with the random loot, it's hard to find real linear progression anyway). This means that 350 is the absolute maximum for A, D, M and R. Speed will have 148 alotted to universal growths and 1 alotted to job stats.

Speed Growth:
To avoid Speed resetting, a growth of 100% is used. 0% is not used to maintain level progression. All jobs will start with a growth base of 50 to prevent people from simply recruiting a job with higher speed and switching to another with better growths. Therefore all jobs will reach 148 speed at level 99 (game dev's mistake?). This allows for two speed tiers, 148 and 149. This one point is decided in job stats.

The Max, Min Growth and Growth Base:
HP will have a min of 7 and a max of 9. With positive variance, the max is 10, allowing a theoretical max gain of 980. To allow 999 HP, the HP growth base is 19.
A, D, M and R will have a min of 1 and a max of 7. The theoretical max is 8, allowing 784. To achieve a growth total of 800, and therefore a stat total of 200, A, D, M and R will have a growth base of 16.

The Initial Growth:
This will determine how much 'value' any job starts with. The initial growths will be 8 HP, 4 A, 4 D, 4 M and 4 R. The average unit's growth stats at level 99 will be 803 HP, 102 A, 102 D, 102 M, 102 R. Remember that the entirety of the HP stat depends on growths alone and the others are shared.

MP Growth:
MP will have a growth base of 10 and a growth rate of 1 for all jobs. The extreme values at level 99 are 206 and 10. As a fun fact, the chance of achieving any extreme is 0.00000000000000000000000000000000000000000000175% (1.75e-45%). You are more likely to <insert outlandish event> than achieve this. MP is separate and universal because it's 'value' is based on costs instead of direct damage output.

Growth Juggling:
Keeping in mind that A, D, M and R are quartered under growth context, 1 HP = 4 A or M = 8 D or R. All jobs start with the average growths and are allowed to manipulate them without changing overall 'value' or exceeding the limits, based on the above ratios. For example...
8/4/4/4/4
9/0/4/4/4
9/0/1/7/1
This example is statistically identical to any other possible growth combination in an even fight.

Job Stats:
Equipment may boost A, D, M, R and Speed amongst things up to 255. It is also job specific, changing with jobs unlike growth base. Therefore, the concept of job centric stats can be implemented through this. While weapons may be shared between multiple jobs, these generally play a similar role (or can be made to). 100 A of a weapon's potential 255 A will be alotted to a fixed value known as the job A while another 100 goes to the weapon's intrinsic power (such that a Jackknife is not as powerful as the Tiptaptwo).

The Average Job Stats:
Almost identical to average growth only that A, D, M and R aren't quartered and HP is not included. The average job stats will be 50 A, 50 D, 50 M and 50 R. More factors will be integrated into this concept, such as Speed, Move or Evasion.

Job Stat Juggling:
Once again, no quartering or HP. To restate, 1 A or M = 2 D or R. Again, more factors will be inserted into this equation.

The Average Pace:
This is the average length of the fundamental match, where each unit deals their average damage each turn and has average stats. Note that this pace will change with external factors but is a good gauge of the pace of the overall game. The absolute average unit at level 99 will have 803 HP, 152 A, 152 D, 152 M and 152 R. With the 'average' gear, it's 803 HP, 177 A, 177 D, 177 M and 177 R. A mirror match entails:
((177 - (177 * 0.5)) * 0.5 * 1.5) = 66 damage
ceiling(803 / 66) = 13 turns per kill
The oversimplified theoretical average is 13 turns per unit, which can easily be reduced via back attacks, weaknesses, AoE, MP stockpiling and other strategic plays.

First Strike and Speed:
Technically, this is an unsung mechanic. HP will be used as a measure of advantage. The advantage of striking first is dependant on the number of hits to achieve a kill, assuming both units are equal in 'value'. If it takes one hit, it's a 100% advantage. If it takes two hits, it's 50% advantage as the unit who struck first has 50% more HP than the fallen one after an exchange. If we use the average from above of 13 hits per kill, the advantage is 1/13, or approximately 8% HP advantage rounded up. Using the stat 'values' and the average 803 HP, 1 Speed is worth ~60 A. This will be taken out of job stats. Note that equal level jobs may vary by 1 Speed at most, reducing any practical (as opposed to theoretical) unfairness this brings. The average job stats now imply 148 Speed as well.

Evasion:
Once again HP will be the measure. 803 HP is used, so 1% Evasion is worth ~8 HP, which is worth 8 A. To reduce reliance on luck, the maximum Evasion will be 10%. Once again, this will be integrated into job stats. The average job stats now imply 0% Evasion.

Resilience:
"Use the force Luke." - Obi-Wan Kenobi
1% Resilience = 4 A
Resilience is the equivalent of Evasion for most status effects. Maximum of 20% Resilience, average job stats now imply 0% Resilience.

Move and Range:
There are technically two types of range, weapon range and ability range. The latter will be dealt with when balancing abilities individually. As of now, I have no concrete way of valuing these as stats but it seems to be the only way to balance them besides with eachother, which would lead to units with 1 or 2 Move. Things to consider are first strike (with smart play, actually beats out faster units), kiting and how weapon range only affects Attack and certain abilities. Below are some almost arbitrarily assigned numbers.
3 Move = 0 A
4 Move = 50 A
1 Range (Melee) = 0 A
2 Range (Spear) = 40 A  (two targets but limited freedom)
5 Range (Gun) = 80 A
6 Range (Bow) = 100 A
7 Range (Greatbow) = 120 A
8 Range (Cannons) = 140 A
Average job stats now imply a weapon range of 1 and 3 Move.

Less Statistical Concepts

Actions, Moving and Waiting:
Roughly speaking, moving delays your next turn by a certain amount. Performing any action also adds delay. Moving and performing an action result in the maximum delay while waiting results in the minimum delay. This changes the rate at which MP can be gained, making it easier to accumulate MP. It will be assumed that a 'wait' turn gains 10 free MP and an 'action' xor 'move' turn gains 5 free MP. An 'action + move' turn gains no free MP.

Effect per Turn:
All abilities will be balanced on the assumption that all units gain 10 MP per turn (MP Channelling/Efficiency, Halve MP and Blood Price break this). 'Effect' is essentially the 'value' equivalent for skills. 100% physical damage is 100% effect. 100% magickal heal is 100% effect. Statuses also have effect values. An ability will have 100% effect if it costs 10 MP, or one turn. However, keeping the ease of accumulation, anything above 10 MP must have a scaled down effect. Therefore, every MP above 10 will result in 5% effect instead of 10% effect. So a ability costing 30 MP will have 200% effect. MP recovery abilities will recover exactly 20 MP, sacrificing a 'move + action' turn of the unit (slightly generous, since movement is not mandatory).

In order for this to work, all abilities must cost MP based on their effect. For example, a unit uses a 0 MP 100% effect ability for three turns, then uses a 30 MP 200% effect ability. Then another unit uses a 10 MP 100% effect ability for four turns. The latter is 100% short on total effect. Only the Attack command will be an exception as it is physical only and there are far too many ways to negate or even punish it.

An important thing to realise is that beyond raw number based abilities, there are far too many effects and permutations to calculate effect. Statuses particularly are impossible to gauge in comparison to one point of damage. Those will be addressed skill by skill rather than here.

Pure and Hybrid Damage:
Placeholder. I did promise something on this.

General Changes

Dual Wield:
Equipping two weapons destroys the job stat concept. If it's unclear why, it's probably not worth your time trying to understand. Dual Wield also adds nothing except double Attacks, Flurries and Counters and double AP gains. Abilities are calculated solely off the damage of the first equipped weapon rather than the number seen on the stat screen. Magick Frenzy also pushes this to overpowered territory, as well as 1-H weapons with too much attack.

Viera Mages:
'Viera mage' is synonymous with Doublecasting Blood Price Summoner. Disagreement is only a display of naivety.
Doublecast, assuming we abide by the effect per turn rule, does not give any statistical advantage. However, it does grant unrivaled strategical flexibility. Technically, every ability can be Doublecasted with the effect per turn clause. As such, Red Mages shall no longer have their own, albeit versatile, ability set, only access to Doublecast to reduce freedom.
Blood Price destroys said clause as well. It essentially allows FFTA MP mechanics in a game supposedly governed by an inverted set of rules, regardless of the doubled cost. It will be removed.
Summoners are far too capable at damage and support. They will be reimagined and rebalanced like most classes.

Elemental Affinities:
Every job will have two weaknesses. Physical ability sets will only have access to one element and neutral, while Magickal sets will have access to two. Every element will have the same number of ability sets using it and jobs which are weak to it so every element is equally viable and no element is rarer than another by default. This introduces a new concept of counter based gameplay (eg. Axes > Lances > Swords > Axes or Pokemon). Equipment will not longer provide any affinity modifiers. Oil status will also be carefully balanced or removed from the player movepool to avoid Fire having any edge.

Postponed Issues:
Clan Privileges; not enough numbers to back any claim.

tl;dr
Speed growth is 100%, no more resetting needed.
You can't lose stats to caps, so no more "optimization."
The game is generally faster with smart play.
No Dual Wield.
No Doublecast.
No Blood Price.
Read in-game job/ability descriptions or game over.
15
Not relevant.

Screw my old post. Here's a completely new one.

PLEASE NOTE THAT EDIT 3 HAS MADE SOME SIGNIFICANT CHANGES TO WHAT'S BELOW.

I am removing Dual Wield.
My head is literally splitting trying to balance it. I am not budging from my 'base stats are job exclusive' idea and Dual Wield punches so many clauses into it everything becomes confusing as hell to balance. It's not impossible but it's nightmarish. You have to halve base stats on dual wieldable weapons, then suddenly ability damage sucks, you can only halve defences so shields have the rest but then all 1-H weapon users must have shields...forget it. A legitimately interesting ability set beats hitting people twice on Attack, Flurry and Counters.

I am removing Blood Price.
It completely breaks the idea of accumulating MP, allowing FFTA style nuking, regardless of costing double. More on turn based damage below.
Doublecast + Bloodprice + Recovery is broken. I can't nerf any individual element, only remove them entirely.
I plan to make max MP much smaller, job based and with no growths to limit what jobs can do what.

The MP rule.
Abilities will be balanced based on 100% attack/magick damage/recovery per turn and everything will cost MP (the Attack command will cost 10 MP). So essentially, 1 MP = 10% 'effect'. This may be raised/lowered by additional effects like recoil, statuses and AoE. Elemental attacks do not change effectiveness based on the assumption that there are equal instances of resistance and weakness.

I am removing MP Channelling/Efficiency
These will break two concepts, job-based max MP and more importantly, the rule above which balances the entire game. Letting these two things slide is giving the player double or more 'power'. I will be feverishly looking for where these are kept or for some way to make them impossible to get (like setting spawn tiles outside of the clan trial...a funny thing I accidentally did when experimenting that forces the player to reset). Fun fact: MP Channelling works even after you've broken the law, so I can't just make laws more annoying.

I plan to make balancing as close to a science as possible, rather than following the more common 'buff the weakest, nerf the strongest' philosophy.

EDIT 1: I'm afraid the only way I can find to remove clan privileges is by making the clan trial impossible. Luckily, clan trials do not count towards total quests completed, so losing it does not make anything inaccessible. The offenders are Aptitude-Adaptability (MP Channelling) and Teamwork-Aptitude (MP Efficiency). However, I've been thinking about the power of privileges in general and maybe those two aren't as bad as I make them out to be. As of now, my decision is to postpone this decision (hah).

New MP Rules.
No Halve MP/Blood Price.
Max MP is job based and generally low. That means certain skills are impossible on certain jobs and max MP is actually worth something. 10-20 MP is the usual for physical.
Attack doesn't cost MP. Encourages Attack/Magick hybrids since Attacking lets you charge MP while dealing damage. Not sure about physical/status MP heavy abilities.
All abilities cost MP. I'm feeling like removing fixed damage altogether since it's hard as balls to balance (thinking back to calculating DPS on mixed damage skills...).

EDIT 2: I don't know why I didn't check this but yeah. Speed can never go past 149, not even with equips. This means that if everyone starts with 50 speed at level 1, everyone will have 148 speed at level 99 (small fail by the dev it seems). This means there are only two speed 'tiers', 148 and 149. HP and MP aren't quartered and cap at 999. Then we have attack, magick, defense and resistance which are divided by four, so they cap at 249. However, with equips, you can reach 999 but no more.

Stat Growths.
The damage formula is (Attack - (Defense / 2)) * 0.75 (for abilities and side attacks, which is the average direction to attack from). Same applies to Magick/Resistance. Skill bonuses are fixed numbers added to Attack/Magick before calculation. The reason the game divides attack is to avoid having Attack = Defense, which would result in 0 damage.

Based on that, the default stat growths will be 2 HP, 4 Attack, 4 Magick, 4 Defense and 4 Resistance. At level 99 (196 HP, 98 everything else) assuming naked:

(98 - (98 / 2)) * 0.75 = ~36 damage, which is ~5-6 hits per kill, which is ~5-6 cycles per battle.

I've decided on 1 HP = 4 Attack/Magick = 8 Defense/Resistance. Any costs are rounded up, so if I wanted to gain 5 Defense, it would cost 3 Attack, to avoid the 'free' point when the cost is rounded down to 0. Of course, changes aren't cumulative, so 9 Defense (+4) means 2 Attack less and not 4 (ie. 1 + 1 + 1 + 1). This system favours HP > Attack/Magick > Defense/Resistance but what can you do?

The maximum growth will be 7 and minimum will be 1, which means 8 is the maximum gain per level with positive variance and 784 is the maximum result. Based on that, every job will start with 16 Attack, Magick, Defense and Resistance so 800 is possible and the absolute maximum, which is 200 on the stat screen. The maximum HP growth will be 4 and minimum will be 1 resulting in a maximum of 490 HP. Therefore, everyone starts with 9 HP and if extremely lucky, can hit 499 HP.

To recap, 499 HP and 200 Attack/Magick/Defense/Resistance are assigned to stat growths.

'Base' (Weapon) Stats.
The nightmare continues. 'Base' stats are fixed bonuses that depend on weapon types. Concerning non-quartered stats (weapon bonuses are added as is unlike growth Attack/Magick/Defense/Resistance), 1 HP = 1 Attack/Magick = 2 Defense/Resistance. This makes HP worth slightly less but deal with it. The default base stats will be 125 HP and 50 Attack, Magick, Defense and Resistance. As such, assuming level 1 units with no 'gear':

(50 - (50 / 2)) * 0.75 = ~18 damage, which is ~6-7 hits per kill or ~6-7 cycles per battle. This means that battles start out slower and speed up ever so slightly at level 99.

Using the same rules as above but with the new ratios, base stats are distributed, except the rounding up clause is less apparent with larger numbers. The maximum values are 250 HP and 100 Attack/Magick/Defense/Resistance.

To recap, 250 HP and 100 Attack/Magick/Defense/Resistance are assigned to 'base' stats.

Equipment Stats

The remaining 250 HP, 100 Attack/Magick/Defense/Resistance are assigned to gear stats. In the case of weapons, the number is added on top of the 'base' stat given by the weapon type. I'm not sure how to distribute this. Probably going to make it impossible to cap everything and force choices on players.

Speaking of total stats, the absolute maximum for any stat is 999 HP and 400 Attack/Magick/Defense/Resistance. It would take the perfect unit 6-7 turns to kill another perfect unit. However, keep in mind that it's impossible to achieve a perfect unit and that certain stats are worth more than others, so these numbers can't be really be used to calculate anything.

The Extremes
In order to check game pace, we need to consider how quickly the strongest/weakest unit can kill the bulkiest/squishiest unit.

The average unit (average variance):
Growths: 2/4/4/4/4
Growth base: 9/16/16/16/16
Growth totals: 205/102/102/102/102
Base Stats: 125/50/50/50/50
Ideal Gear: 250/100/100/100/100
Total: 580/252/252/252/252

Max attack, min bulk (favour removing HP, average variance):
Growths: 1/7/5/1/7
Growth base: 9/16/16/16/16
Growth totals: 107/175/126/28/175
Base Stats: 0/100/100/25/100
Ideal Gear: 250/100/100/100/100
Total: 357/375/326/153/375

Max bulk, min attack (favour HP, average variance):
Growths: 4/1/1/3/1
Growth base: 9/16/16/16/16
Growth totals: 401/28/28/77/28
Base Stats: 250/0/0/50/0
Ideal Gear: 250/100/100/100/100
Total: 901/128/128/227/128

Juggernaut (favour defense, average variance):
Growths: 3/1/1/7/5
Growth base: 9/16/16/16/16
Growth totals: 303/28/28/175/129
Base Stats: 225/0/0/100/0
Ideal Gear: 250/100/100/100/100
Total: 778/128/128/375/229

Strongest vs squishiest:
(375 - (153 / 2)) * 0.75 = ~225 damage, ~1-2 hits to kill.
Average vs squishiest:
(252 - (153 / 2)) * 0.75  = ~132 damage, ~2-3 hits to kill.
Weakest vs squishiest:
(128 - (153 / 2)) * 0.75 = ~39 damage, ~9-10 hits to kill.

Strongest vs average:
(375 - (252 / 2)) * 0.75 = ~186 damage, ~3-4 hits to kill.
Average vs average:
(252 - (252 / 2)) * 0.75  = ~94 damage, ~6-7 hits to kill.
Weakest vs average:
(128 - (252 / 2)) * 0.75 = ~1 damage, impossible.

Strongest vs bulkiest:
(375 - (227/ 2)) * 0.75 = ~196 damage, ~4-5 hits to kill.
Average vs bulkiest:
(252 - (227/ 2)) * 0.75  = ~104 damage, ~8-9 hits to kill.
Weakest vs bulkiest:
(128 - (227/ 2)) * 0.75 = ~11 damage, impossible.

Strongest vs juggernaut:
(375 - (375/ 2)) * 0.75 = ~141 damage, ~5-6 hits to kill.
Average vs juggernaut:
(252 - (375/ 2)) * 0.75  = ~48 damage, ~16-17 hits to kill.
Weakest vs juggernaut:
(128 - (375/ 2)) * 0.75 = ~0 damage, impossible.

From these results, it seems that on average, things take too long to die. Keep in mind that with weaknesses and smart play (eg. back attacks/AoE) can lead to double damage output, halving the number of hits required to kill. It looks like Defense is also overpowered since it can nullify all damage...from the weakest possible unit (read: it's not overpowered). Also remember that you need to invest in Defense, Resistance and HP or else you'll have some kind of hole in your fortress. Oh, and Cover is the only real way to 'tank' in this game, and that only depends on HP, so boo to anyone who thinks Defense beats HP. Also, Graviga says hi.

Overall, I'm pretty impressed with all this theorytarding. All I need to do now is slot Speed in, which shouldn't be too hard considering there are only two options that are one digit apart. Maybe make it worth 2 HP growth or something. Also, I haven't touched on Evasion, Move, Jump and flying Gria. Or ranged weapons/spears. Good god.

EDIT 3: If you ever have a hard problem, think about it when you're in bed about to fall sleep. Then it kinda encourages your subconscious to think about it as well during the night but not necessarily dream of it. I woke up this morning and realised I screwed up big time. Equipment can't boost HP or MP. I don't know why this didn't occur to me but there you go. 500 HP has to go to a fixed growth for all jobs so every job gets +5 HP growth (after the stat juggling is done so 9 is technically the new limit) and 19 base HP instead of 16. This makes everyone bulkier but thanks to MP, stockpiling is easier than ever. I'll probably have to nerf the 10 MP = 100% thing since with 2 turns of movement or a bit of waiting, everyone starts out with like double damage for the first hit which can easily be turned into 4x or more.

MP needs to be slapped as a fixed growth as well, probably base 10 with 1 growth for all jobs, resulting in 10 to 206 with extreme variance (this still isn't Fire Emblem, since it's 1/3 chance of -1, +1 or staying the same) but probably 108 on average. That's three Ultimas, the most expensive spell in the original game. The reason I'm not putting it in the stat juggling is because max MP's worth is dependant on how many spells it lets you use. A value of 1 is also worth ten times more than 0, which will be a pain to sort out. If you're worried you'll have a character with 10 MP, the odds of that happening is 0.00000000000000000000000000000000000000000000175% (1.75e-45). I'd say something witty about what's more likely to happen but yeah.

As for other weapon limitations, weapons can't have more than 255 of a stat (checked it in fear of 99), so since I set it to 200 max on any stat on a weapon (100 base + 100 gear) I'm green there. Only HP and MP are screwed but I think it's under control. I'll just have to remember that everyone has enough MP to Ultima or something.

Oh, before I forget.

Elemental Affinities
Every job will have two weaknesses and two resistances, no questions asked. These weaknesses probably won't make much sense because if we did assign affinities by sense, almost everyone would be neutral. This just means job descriptions will be terser with affinities listed. There will be equal instances of any element being a weakness and a resistance of course to make all elements fair and viable.

As for commands, every command should have two elements. 'No element' counts as an element. For example, a command might have neutral abilities and fire abilities. Once again, elements must be distributed completely evenly. So with two ability sets, that's four elements covered, with neutral being never resisted. So really, it only takes two units to hit every weakness in the game. However, keep in mind that certain foes might have more Resistance than Defense or a lot of both but weakness to status effects. Going by the rule below, two units should not be enough to do critical damage to every unit in the game.

Non-elemental Weaknesses
There are several ways to hurt someone effectively. For example, Magickal damage on a tank with impenetrable Defense. The ways to do this are Physical/Magickal damage, piercing damage (eg. Gravija and technically Poison), debuffs (note that things like Immobility are a lot less effective on a ranged unit than a melee unit) and maybe double accuracy attacks on evasive enemies (I really don't feel like making a 50/50 job...). Commands shall be restricted as to what combinations they have depending on how potent the abilities are in exploiting the weakness.

Range and Move
Range defines who strikes first or even who strikes at all (read: kiting). It is extremely hard to gauge it's worth because it basically comes down to this:

There is a ranged unit and a melee unit. The melee unit is too far to be immediately struck without moving and starts first.

The melee unit moves just outside enemy range (smart play denotes that this always happens unless the melee unit hasn't had the chance to move at all).
The ranged unit moves one tile closer and strikes (if the ranged unit moved first, it would move such that the melee unit is just in range).
The melee unit is now in one of two positions, either it has enough move to attack the ranged unit or it does not.
In the latter case, the ranged unit can kite and shoot indefinitely, provided it has the same or more move than the melee unit and it doesn't get cornered.
If it has less, then it will take the (range / move difference) turns of free damage to the melee unit to reach the ranged unit.
Once it reaches the ranged unit, it's one-for-one.

Based on above and a lot of gut feeling (unit 1 and unit 2 can be switched WLOG):
Range1 + move1 > range2 + move2 means the former gets first strike.
Range1 = range2 means that both trade blows after first strike.
Range1 + move1 = range2 + move2 also means they both trade blows.
Range1 > range2 + move2 means the former can kite for range1 / (range2+move2) - move1 turns, then it's trading blows. If the result is negative, it means kiting for  infinite turns.

Using these theories, I'll try to relate range, move and stats.

Back for more theorytarding after a nap. Sadly, no revelations here on range or move.

Evasion
Evasion is the equivalent of boosting total HP by a percent. We can't cut HP since it's a growth and this is a job stat. I suggest 1% Evasion = 10 HP = 10 Attack. This is far from ideal (and a little overpriced after punching some numbers in) but remember that Attack and Defense are additive while Evasion is multiplicative...and that I'm not Math enough to do this. Evasion should cap at 10%.

Resilience
"Use the force, Luke." - Obi-Wan Kenobi
1% Resilience = 5 Attack.

Jump
Extremely situational, to the point I'd be happy to just make everyone have the same Jump and let gear do the rest.

Range and Move REDUX (and maybe some AoE)
In this episode, our brave hero tackles the galactic evil from a half a day ago.

We can split the concept of 'range' into the range of a weapon and Abilities with inherent range (eg. Air Render).

Dealing with the former first, this 'range' affects Attacks and weapon based Abilities (Counter is useless). These have to be balanced with each other and stats.

1 move = 50 Attack
Bow (5 range) = 50 Attack
Greatbow (6 range) = 100 Attack
Gun (7 range) = 150 Attack
Cannon (8 range) = 200 Attack (that means it has to have 2 move and no base stats)
Keep in mind that the average stats total 200 (50/50/50/50).

These are all based on 'feelings' of how much the first strike, freedom of range, etc, is worth on Attack commands and certain abilities (not all, mind you). I also never factored in terrain things and stupid AI. The ratio is roughly 5% out of the average unit's total stats for every range past 4 (that's 20% at cannon).

Now to deal with range on abilities. This is actually a little easier because we have this thing called MP.
5 range = +2 MP
6 range = +4 MP
...and so on. I just feel this is right for now.

Oh god and I have to deal with AoEs. I'll probably just ignore balancing that too much since anything below Summoner adds a unique flavour of strategy, namely formations + healing vs scattering. I'll even make slightly stronger AoE cannon-only abilities to make up for being the 'weakest' of the lot, turning it into something of a physical Mage that can't be abused by 2-H sword users as a second ability set. Aaah...my head hurts thinking about this. It'll probably end up something situational and on the go, despite my philosophies. Hey, at least with my overthinking, it can't go THAT wrong?

I think that's it for job based nonsense. Yeah right, I still have Gria. Flying essentially guarantees a back attack and certain terrain exploits for ranged Gria. I don't like how Gria have a ranged physical class, but that's besides the point. I'll probably just nerf their HP, so make their base HP growth 2 instead of 5 (so ~29% max HP lost). There's a reason pterodactyls lost to birds.

Now that we're on the topic and job stuff and growths are dealt with (that or I forgot something), we can move on to some themes.

Race Themes
Humes: Mixed and somewhat defensive.
Bangaa: Bulky physical attackers.
Nu Mou: Frail Magickal attackers.
Viera: Mixed and more offence oriented.
Moogles: Quicker and more survivable Magick attackers (face it, advanced technology is indistinguishable from Magick).
Gria: Frail attackers.
Seeq: Frail physical attackers (stronger than Gria thanks to being 'Earthbound').

Of course, there will be exceptions but it's nice to have a general theme to go by. These are prone to mad changes of course. Thinking of job concepts is going to be a nightmare. Some jobs can be kept pretty similar like Black Mage but they'll serve a new role instead of serving almost every role with Geomancy. I'm actually hoping for something cyclic, so jobs form a circle of counters and weaknesses, but that's impossible thanks to the second ability set. It would end up with too many neutralities too. So instead, I was thinking of cycling some broad categories, physical melee, physical ranged and Magick. Physical can be split thanks to weapons and weapon based skills but Magick will probably be any range. So Melee > Ranged > Magick > Melee. Then we have exceptions like the Swordbreaker in Fire Emblem. And then some which don't fit in at all like support classes or hybrids. That sort of model.

Backtracking to Speed and Range
I've been getting ahead of myself. I forgot one of the major problems, Speed. It's advantage is solely determined by how many hits the first attacker takes to kill the opponent. If it takes one hit, it's a 100% advantage. If it takes 2 hits, it's a 50% advantage (since the opponent only gets one hit in) and so on. I think I will turn back to class roles to determine Speed instead of putting it in stat juggling. God I really have to summarise all my notes to make sure they're coherent and work with any changes I have made. That sounds like an idea for now. I'm still debating to myself how many turns it should take to kill someone.
16
I'd just like to bump and point out that I've reached a real big milestone.

I have found the location of all the data that I feel needs editing in a vanilla-esque mod. I've also dissected all the vital parts of it so it's ready to be edited.

Check the first post for details. Or you can read my blog tier post above this one.

The only thing I haven't addressed is hard mode (which I'm sure is all assembly) since if I make the game harder, hard mode will become hard and normal mode will become normal. Thing is, I don't want to turn this into a Fire Emblem forcing a casual player to reset 50 times a mission. I want it to be more challenging yes, but mostly more 'interesting' if that makes any sense. Like making all jobs viable and unique and posing new challenges to the player rather than just making everything 20 levels higher and calling anyone who fails at it a noob (common 'hard game' community attitude).
17
Help! / Re: FFTA2 Editor 0.6 and String Format
December 23, 2012, 02:33:35 pm
Oh sorry brain fart. I'm currently having issues installing Visual Studio 2012 Express for Desktop so yeah. Been going at it for a while now.

FFTA2 Editor 0.6:
http://www.romhacking.net/utilities/480/
18
Help! / FFTA2 Editor 0.6 and String Format (Solved)
December 23, 2012, 01:56:08 pm
This topic has achieved nothing and I've already figured out most of everything to do with strings in FFTA2 by myself.

Feel free to delete or 'sage' in internet terms.
19
Blog post? lolwut

I've finished absorbing all the data from a year ago. It's very unrefined on closer inspection and there is very little detective work done. The fellow (Edea at romhacking.net) seems to have just located blocks of data responsible for things and figured out how to pull out names from hex. Regardless, his contribution is very welcome since I have trouble finding data in the first place but all the hours I spent manually naming things have gone down the drain (but I guess I saved myself from even more painful labour).

Anyway, if you have any ideas you'd like to chip in, especially with job themes, I'm all ears. What I'm doing is really all quite cosmetic from here on out. The nitty gritty bits have all been sorted and are just sitting there waiting for the theory part of the mod to be finished. I might come across some fancy bells and whistles which allow for crazier concepts to be put into action but that's about it.

I'm going to look into editors for a bit too. It's much smarter since it goes both ways instead of just one way like my Excel sheets (raw hex -> interpreted data). Sadly, I'm no expert programmer and I only know a bit of Java and Python. But I do remember making an character changing AR code generator for FFTA2 (no joke) in Visual Basic, using the hold-your-hand draggy-droppy GUI creator. Maybe I can do the same for this.

But yeah. I didn't start this thread to ask for partners. I wanted to hear ideas to get things in motion. I feel like I can do all the hacking in the world but it comes down to making a mod if you want to make waves and really start something. Plus I have some crazy ideas I want to see realised.

Here are things which must be balanced separately:
  • Growths

  • Job Ability Sets

  • Jobs (things that depend on job, like weapons and evasion)

Of course, for one job the three parts must fit a theme, but these three things are so freely interchangeable they must be balanced separately. If a job had great growths but lame abilities, people will just use that job for leveling alone or spam the second ability set. On top of this, for abilities themselves, every ability has to be as good as another. Imagine a Tinker class with Ultima. The ability set would still be overpowered even if it has eight stupid skills "weighing" it down. Of course, normally your main job plays a tiny role compared to growths or ability sets, which is why I decided to port base stats to weapons to balance it.

EDIT: I've figured out how string data is stored. I can now pull out any FFTA2 format string but I don't have the character set to decode it from hex (which needs to account for string terminators/other special characters). Bad news too. Like most games, the string data is a contiguous block with very little/no extra space at the bottom. This means anything I edit must be the same length or shorter than the original text unless I do some serious re-pointing, which I have some thoughts on how to do but nothing solid. I'm going to look into the translation project and their editor for more information.

EDIT: Sick of messing with Excel sheets and staring at walls of hex. It's about time I made a rough tool in Visual Studio. The reason I even bothered with the AR code maker was to test out this free thing which I heard about. Nice of Microsoft to let us in on an easy application maker.

EDIT: After spending half a day install-uninstall-reinstall-uninstall-redownload-install-uninstall-ing, I just went with 2010 and no problems. Time to look up some tutorials etc.

EDIT: Protip: If you don't know VisualBasic but you do know Java, use Java.

EDIT: I have spent a day trying to write a tool. I have made no real progress and am on the brink of rage. Neither Java (not enough data types...trololol) nor Python are adept for this kind of stuff. I'm going to stick with my trustworthy Excel sheets and edit in hex. I've also realised a fatal limitation with tool usage. Excel sheets let you mass edit data. Tools require manual plugging. Excel sheets are also easier to debug, unlike tools which are written in legit code.

EDIT: I learned real fast that the Japanese version has an entirely different character code set. I'm currently decoding any string data I can get my hands on.

EDIT: I'm able to overwrite (like accidentally pressing Insert and trolling yourself) any text in the game except things printed in pixels like *MASTER which is just a graphic. God forbid I load the entire game's dialogue into the Excel sheet. For long long text I'll really really need a tool of sorts.

EDIT: Instead of loading stuff into my Excel sheet, I decided to use a Hex Editor with table compatibility. Makes life a lot easier.

EDIT: Bazaar has been completely cracked. I can make everything require three Gikhet Lead. Also discovered some interesting properties about weapons. Look forward to dual wielding bazookas for female Humes only or something.

EDIT: I can't believe how many edits I've made. Neither can I believe that I didn't realise something very important. I can't change class equipment because then I'd need to change what enemies are holding. Of course, if I crack THAT then I'm free to go ballistic but I'd have to switch a massive amount of gear with gear of 'equivalent tier'. I could use a price based algorithm or something though.

EDIT: Found the enemy unit data. This can lead to some actual difficulty increases (not fake difficulty where we just up stats) where you can make the enemy team actually work together, if the AI knows how to play anyway. The data is stored rather variably (with a different sized header denoting how many entries are under it) so I'll need to add a new function to my line splitter program which turns a continuous line of hex into nice table-like chunks for Excel.

EDIT: Decoded a crapton of battle data. Turns out it's not just enemy data, it's all units present on the map, like Cid in the first fight. Anyway, I can edit what units are present, what levels they are, what gear they have, what abilities they have and even what name they have. I wonder if I'll ever get the phase two, where I turn the Excel sheet from a hex reader to a hex writer (which is pretty much a tool except you need to paste the data to offsets in a hex editor.

EDIT: Guess what? I can change the law of any battle as well.

EDIT: I think I've found the auction house rewards. Still haven't attached any names to the battle data since it doesn't go by quest order. I've been looking for some index to tie the quest name strings I've decoded to it but no luck.

EDIT: Confirmed auction house rewards. Also managed to find a quest index which matches battles with quest names. I am in control!
20
I'm not saying I'm giving up. I'm saying I'm going to just truck on alone and that it's disappointing to only have one person show interest.

Also, I just found someone else's legacy. It contains a truckload of data which took me many many many hours to decipher. I am legitimately about to cry. It goes on too, detailing things like name/description data, starting team data, graphical data...even the entire bazaar has been dissected. While his notes are really devoid of, well, notes (and sometimes off by a byte...) they contain valuable information nonetheless. Sadly, he has not cracked how special jobs work or how to modify what jobs are available for switching. Neither has he touched the auction house or hard mode or actually figured out what I have listed as 'unknown' within the data.

However, one must look ahead. Despite being devastated at how much redundant work I've done, I will be the one to make the first FFTA2 mod. I'm also thinking about making a tool but alas, I do not actually know how to program a tool. It makes much more sense than playing with Excel sheets.