• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
May 01, 2024, 07:53:33 pm

News:

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


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

61
This is an outdated version of the defend hack.  Please use the following.
  <Patch name="Status effect bonus damage hack">
    <Description>
      V1/V2/V3:
   0x80 - Faith
   0x40 - Innocent
   0x20 - Charm
   0x10 - Sleep
   0x08 - Don't Move
   0x04 - Don't Act
   0x02 - Reflect
   0x01 - Death Sentence
      W1/W2/W3:
   0x80 - Oil
   0x40 - Float
   0x20 - Reraise
   0x10 - Transparent
   0x08 - Berserk
   0x04 - Chicken
   0x02 - Frog
   0x01 - Critical
      X1/X2/X3:
   0x80 - Poison
   0x40 - Regen
   0x20 - Protect
   0x10 - Shell
   0x08 - Haste
   0x04 - Slow
   0x02 - Stop
   0x01 - Wall
      Y1/Y2/Y3:
   0x80 -
   0x40 - Crystal
   0x20 - Dead
   0x10 - Undead
   0x08 - Charging
   0x04 - Jump
   0x02 - Defending
   0x01 - Performing
      Z1/Z2/Z3:
   0x80 - Petrify
   0x40 - Invite
   0x20 - Darkness
   0x10 - Confusion
   0x08 - Silence
   0x04 - Blood Suck
   0x02 - Cursed
   0x01 - Treasure
      V1/W1/X1/Y1/Z1 correspond to status effects that multiply physical attacks by M1 / 128.
      V2/W2/X2/Y2/Z2 correspond to status effects that multiply physical attacks by M2 / 128. These stack with the M1 multiplier.
      V3/W3/X3/Y3/Z3 correspond to status effects that multiply magical attacks by M3 / 128.
        190% is M1/M2/M3 = F4
        183% is M1/M2/M3 = EB
        180% is M1/M2/M3 = E7
        175% is M1/M2/M3 = E0
        170% is M1/M2/M3 = DA
        166% is M1/M2/M3 = D6
        160% is M1/M2/M3 = CD
        150% is M1/M2/M3 = C0 (default)
        140% is M1/M2/M3 = B4
        133% is M1/M2/M3 = AB
        130% is M1/M2/M3 = A7
        125% is M1/M2/M3 = A0
        120% is M1/M2/M3 = 9A
        117% is M1/M2/M3 = 96
        110% is M1/M2/M3 = 8D
        90% is M1/M2/M3 = 74
        83% is M1/M2/M3 = 6B
        80% is M1/M2/M3 = 67
        75% is M1/M2/M3 = 60
        70% is M1/M2/M3 = 5A
        66% is M1/M2/M3 = 56
        60% is M1/M2/M3 = 4D
        50% is M1/M2/M3 = 40
        40% is M1/M2/M3 = 34
        33% is M1/M2/M3 = 2B
        30% is M1/M2/M3 = 27
        25% is M1/M2/M3 = 20
        20% is M1/M2/M3 = 1A
        17% is M1/M2/M3 = 16
        10% is M1/M2/M3 = D
      To figure out the correct number for a V/W/X/Y/Z variable, add up the numbers corresponding to all the status effects for a given variable. If you didn't use any statii belonging to a certain variable, that variable has value 00.
      For example, if I want Chicken and Frog to take 1.5x physical damage, then W1 = 4 (Chicken) + 2 (Frog) = 06 and M1 = C0. Notice that I also could have used W2 and M2, but NOT BOTH W1/M1 AND W2/M2.
      For example, if I want Blind and Confuse to take 1.33x magical damage, then Z3 = 20 (Darkness) + 10 (Confusion) =  37 and M3 = AB.
    </Description>
    <Location file="BATTLE_BIN" offset="11F3C4">
      5800648C
    </Location>
    <Variable name="V1" file="BATTLE_BIN" default="10" offset="11F3C8"/>
    <Location file="BATTLE_BIN" offset="11F3C9">
      004230
    </Location>
    <Variable name="W1" file="BATTLE_BIN" offset="11F3CC"/>
    <Variable name="X1" file="BATTLE_BIN" offset="11F3CD"/>
    <Location file="BATTLE_BIN" offset="11F3CE">
      013C
    </Location>
    <Variable name="Y1" file="BATTLE_BIN" default="08" offset="11F3D0"/>
    <Variable name="Z1" file="BATTLE_BIN" offset="11F3D1"/>
    <Location file="BATTLE_BIN" offset="11F3D2">
      2134
      24208100
      25208200
      08008010
      00000000
      1980043C
      CE388294
    </Location>
    <Variable name="M1" file="BATTLE_BIN" default="C0" offset="11F3EC"/>
    <Location file="BATTLE_BIN" offset="11F3ED">
      000134
      19004100
      12100000
      C2110200
      CE3882A4
      5C006290
      5800648C
    </Location>
    <Variable name="V2" file="BATTLE_BIN" offset="11F408"/>
    <Location file="BATTLE_BIN" offset="11F409">
      004230
    </Location>
    <Variable name="W2" file="BATTLE_BIN" default="06" offset="11F40C"/>
    <Variable name="X2" file="BATTLE_BIN" offset="11F40D"/>
    <Location file="BATTLE_BIN" offset="11F40E">
      013C
    </Location>
    <Variable name="Y2" file="BATTLE_BIN" offset="11F410"/>
    <Variable name="Z2" file="BATTLE_BIN" offset="11F411"/>
    <Location file="BATTLE_BIN" offset="11F412">
      2134
      24208100
      25208200
      08008010
      00000000
      1980043C
      CE388294
    </Location>
    <Variable name="M2" file="BATTLE_BIN" default="C0" offset="11F42C"/>
    <Location file="BATTLE_BIN" offset="11F42D">
      000134
      19004100
      12100000
      C2110200
      CE3882A4
      00000000
      00000000
      00000000
      00000000
      00000000
      00000000
      0800E003
      00000000
    </Location>
    <Location file="BATTLE_BIN" offset="11F4B4">
      5C004390
      5800448C
    </Location>
    <Variable name="V3" file="BATTLE_BIN" offset="11F4BC"/>
    <Location file="BATTLE_BIN" offset="11F4BD">
      006330
    </Location>
    <Variable name="W3" file="BATTLE_BIN" default="06" offset="11F4C0"/>
    <Variable name="X3" file="BATTLE_BIN" offset="11F4C1"/>
    <Location file="BATTLE_BIN" offset="11F4C2">
      013C
    </Location>
    <Variable name="Y3" file="BATTLE_BIN" offset="11F4C4"/>
    <Variable name="Z3" file="BATTLE_BIN" offset="11F4C5"/>
    <Location file="BATTLE_BIN" offset="11F4C6">
      2134
      24208100
      25208300
      07008010
      1980033C
      CE386294
    </Location>
    <Variable name="M3" file="BATTLE_BIN" default="C0" offset="11F4DC"/>
    <Location file="BATTLE_BIN" offset="11F4DD">
      000134
      19004100
      12100000
      C2110200
      CE3862A4
      0800E003
      00000000
    </Location>
  </Patch>

The default values are V1/W1/X1/Y1/Z1/M1 are 10,0,0,8,0,C0, which means that charging and sleep on target cause 1.5x physical damage.
The default values are V2/W2/X2/Y2/Z2/M2 are 0,6,0,0,0,C0, which means that frog and chicken on target cause 1.5x physical damage, and it stacks on the above.
The default values are V3/W3/X3/Y3/Z3/M3 are 0,6,0,0,0,C0, which means that frog and chicken on target cause 1.5x magical damage.

If you want to add in defend gives 25% DMG reduction:
1) Get an unaltered ISO
2) Apply the above ASM, but merge V1-Z1 with V2-Z2.  Specifically, this means that V1/W1/X1/Y1/Z1/M1 are 10,6,0,8,0,C0, which means that charging, frog, chicken, and sleep on target cause 1.5x physical damage.
3) Change V2-Z2 to 0,0,0,2,0,60, which means defend on target causes 0.75x physical damage, stacking with the above.

NOTE: This has a limitation that you can no longer stack frog with sleep to get double the damage bonus.
62
FFT Arena / Re: Arena battle videos and discussion
January 11, 2014, 02:39:55 am
In general, a mage shouldn't worry about evasion because while charging, her evasion is 0.  Thus, dropping reflect for MEV is almost always the wrong choice.  The only time I'd argue otherwise is if you're using the mage explicitly to bait the AI (like what Mando did in S5), but in that case, optimizing MEV would come secondary to optimizing PEV and any spell with CT > 5 (Raise 2, Holy, Flare, most summons) should not be used.
As for priests "charging forward", that is typically a problem on pure support priests and time mages because the AI has no better offensive action to perform, though normal mages may also do that if they cannot kill anyone AND they cannot cast a spell without getting midcharged (but the latter is a product of either a bad matchup or poor team synchronization).  The AI's stupidity is why I prefer aving mages that aren't purely support.
Also, if you insist on keeping the pure support, healing staff is also not a good idea because although it allows protect on allies (since the healing staff eliminates all of the WM / TM's offensive options except vs. Cursed Ring users), just having protect (or just having shell) renders me vulnerable against half of all teams, while having both on one unit makes the AI stupid (because the AI will not appropriately cast protect / shell except to midcharge attacks).  Compared to stop / slow2 / holy, which affects all enemies, why bother with a strategy that only works half the time?
63
FFT Arena / Re: Arena battle videos and discussion
January 08, 2014, 04:42:57 am
SCC Monk team is a terrible choice.  I made it once, and it lost really badly.
Reasons:
1) Cannot use weapons or robes innately (so the only way to boost elements is 108 Gems)
2) 9 SP means being midcharged by ALL 8 SP mage classes because Monk needs 12 SP + haste to midcharge such mages; that is not possible without either quickening or EQ Clothes
3) Too hard to invest in magical damage so the team is very easy to wall
64
War of the Lions Hacking / Re: Could someone edit my file
December 26, 2013, 11:40:31 pm
1) Lioneditor can do all this without editing your ROM.
2) If you don't want to use Lioneditor, look up FFTPatcher, which will edit your ROM, and can give you the same changes.
65
FFT Arena / Re: FFT Arena: Balance Discussion Thread
December 25, 2013, 10:52:12 pm
Nameless Dance is worthless because the dancer using it won't do anything else.  The culprit is slow (which has the same AI priority as haste, i.e. one tier less than scoring a KO), and probably should be replaced with don't move.
66
I actually know how to code what you are asking for (since I completely rewrote the targeting routine for my formula hack), but I need to find a spare ability flag to do it.
67
Help! / Re: Replacing the Item Skills? (Help?)
December 25, 2013, 12:27:42 am
Oh, sorry, I meant GSF (Generic Skillset Fix), not ARH.  Once you apply that, the hard-coding on chemist, archer, ninja is short-circuited and you can customize them to be whatever you like (no need to create two separate jobs).  You can still have the AI keep the original versions of throw / item / draw out by copying the vanilla skillsets to unused slots A5-A7 and force-assign A5-A7 as secondary jobs to generic units in the ENTD (the way 1.3 did).

QuoteA9 Innate: So if I'm okay with only having the players use item (for instance)


Not quite.  If I remember correctly, A9 will always be loaded first, then the primary job, and then the secondary job, with the last two slots hard-coded for the support skill "defend" and "attack".  However, since the skill limit is 32, the AI will stop loading the secondary job's skills (and prematurely end the routine) once that limit is reached.  This means that the A9 Innate will not create glitches if your job is Sq / Ar but the secondary skills of a Pr / Wi will be cut off.
68
Help! / Re: Replacing the Item Skills? (Help?)
December 24, 2013, 09:43:13 pm
The problem is the AI, which can only consider 34 moves per unit.  If you make A9 innate, you must reduce the number of moves on other jobs so the total number of moves (including the A9 skillset) does not exceed 34 (or certain moves will never be used).

QuoteI know you can't change the abilities of the individual "item" abilities.

Yes you can.  You change the formulas of the items (in the Items tab), not in the Abilities tab.

QuoteDo any problems arise from assigning Ninja, Samurai, and Chemist new skillsets? There are some empty ones, as well as duplicates. Is there any reason two duplicates couldn't be combined, and one of the duplicates slots, (Like 9B, 9D, and 9E) be used to define new skillsets that are used by those classes?

The AI can use the skillset, but you cannot.  If you set your (blue team) units to "save fading life", they will also be able to use it.

QuoteHmm. I've been doing a bit of looking around, and it seems that (at least you used to not be able to) edit the classes I find myself wanting to change without it causing problems.
What about using RAD to get around that? Enable the new class using Chemist/Ninja/Samurai/Geomancer as the host classes, and hide Chemist/Ninja/Samurai/Geomancer by making them require level 8 in stuff you can't get?

You have the wrong ASM.  ARH is the one that breaks the restrictions, not RAD.
69
PSX FFT Hacking / Re: A fairly small ASM Request.
December 24, 2013, 01:09:44 am
In FFTA, it is hit chance, not damage, that increases from better positioning because enemy evasion follows this pattern:
normal in the front
50% of normal from the side
25% of normal from the back

This hack already exists; check out the global C-EV hack.  To have it mimic FFTA, simply set C-EV to at least 50.
70
PSX FFT Hacking / Re: Modifying a Patched Rom?
December 23, 2013, 09:34:44 pm
Simply put, Jack, we have a size problem.  The new TEST.EVT is larger (and requires ROM expansion to fix).  ONce you fix that, you have to expand the conditionals table in ATTACK.OUT and BATTLE.BIN or compress FFT's existing system to make room.  It is not a trivial copy and paste operation.

QuoteI'm still just seeing a bunch of extra content that people are just ignoring because... I have absolutely no idea why they're ignoring the new content. New content is nice.


I'm working on a personal PSP hack to reset the dialogue mostly to PSX standards, delete the movies, and make the rendezvous missions doable by one person, but even WITH that, WotL's mechanics code is totally unknown and undocumented (and I don't have a debugger, though I hear PPSSPP has one).
71
PSX FFT Hacking / Re: Expanding the Iso Space?
December 23, 2013, 10:52:05 am
The reason why I don't want 50 jobs is because a game does not have 50 balanced roles to fill unless each job only has 2 skills and 1 R/S/M (but then they wouldn't be very distinctive or interesting).  In practice, FFT's base mechanics supports around 15 balanced jobs unless you start restricting abilities (by compressing canonical abilities like Cure / Cure 2 / Fire / Fire 2).  I had to add mechanics like weight and remake the entire faith and CT system to extend that to 20. 
Of course, if you believe in a tiered system where certain jobs upgrade into better variants of themselves (like Pokemon evolutions), then you can certainly have as many jobs as you want.  However, you run into three related but distinct technical problems:

1) If I want the game to still work on emulator / PS1 / on PSP's popstation, then I must respect the 2MB RAM limit.  If I don't, then I would either have to code / hack the emulator to accept an arbitrary amount of RAM or code my own computer / PSP game.

2) If I accept 1), then I must either remake the unit RAM table or add to it as well as all dependent routines.  From a performance perspective, it is better to merge your additions to the existing RAM table (because memory is finite and only 32 registers exist; one table means only one register holding the starting address while two tables mean either two registers holding both addresses and duplicated code or five registers to create a proper while loop to account for the two different cases, run twice).  But that then means I need to fix unit RAM loading to accept a table that is +X longer than the previous amount.  Once that is fixed, all the dependent routines (pretty much all of BATTLE.BIN after 0x110000) needs to then be fixed because they reference either bytes in the unit RAM table or its size.  In short, it's so massive a task it's about as hard as half-coding a game. 

3) As a result, most people choose the less efficient option of making their own table (as to not disturb existing code) or to consolidate the existing table by making sure each byte (or if you're SA, each bit) is in one-to-one correspondence with your list of features.  Because I create fairly watertight mechanics (where many combinations simply cannot exist), my coding process has many patch-specific simplifying assumptions, but I know many other coders prefer to have their imaginations run wild, regardless of the coding costs.  In any case, you just need to then find the appropriate routines that call the "job skills learned" routine (it's in SCUS), create the table for all 16 (potentially) units in battle, and have both the player and AI reference the existing table (be it in WORLD or BATTLE.BIN RAM) through all the load / learn routines.  Nor is C/Ping WotL code a solution; WotL was coded in MIPS IV, which has commands MIPS I does not support.

However, I do agree with you that a larger TEST.EVT paired with an expansion of the ATTACK.OUT / BATTLE.BIN / WORLD.BIN conditionals would be nice.
72
PSX FFT Hacking / Re: Modifying a Patched Rom?
December 23, 2013, 10:06:44 am
What?  That's not even true, Jack.

The mechanics are in BOOT.BIN, compressed in EBOOT.BIN (which is the file actually read), but C/P'ing BOOT.BIN into EBOOT.BIN (which is done automatically by FFTPatcher) works too as long as you don't change the file-size.
The events are in TEST.EVT (inside fftpack.bin).  They can be modified without any error with existing tools.
The movies are in the movie folder.  Although the data format is unknown, I can already delete the movies without freezing the game and insert events in place of the movies.
The sprites require ROM expansion for the same reason they required ROM expansion in vanilla.  Editing ShiShi's source code to deal with it should be doable.
73
FFT Arena / Re: Rivalry Battle Series, anyone?
December 18, 2013, 12:19:43 am
CT5Holy because he has the best record against my teams.
74
PSX FFT Hacking / Re: .xdelta format instead of .ppf
December 15, 2013, 10:39:29 pm
Why can't it be patched on "unclean" ISOs?  Is this a checksum issue?
Also, how would copying surrounding data save filesize?  Wouldn't that only make the patch larger?
Lastly, since game-patching is technically illegal anyways (in any form), why would the distinction between "raw patching" and "patching from base" matter?

I agree that PPF is not a good system, but unless this has soft-patching abilities on ePSXe or pSXfin, I don't see it being decisively better.
75
Of course it is.  Just open up FFTPatcher, find "Open Patched ISO", and you can edit exactly as Celdia or FFMaster or Dome did.
76
The Lounge / Re: The fate of Prince Orinas?
December 13, 2013, 11:34:52 am
After Delita takes power, Orinas is sent off to Romanda as an exile to live the rest of his days.
77
Help! / Re: Help Please
December 09, 2013, 12:46:48 am
At 0x119ee0 in BATTLE.BIN, copy (В 0x119ee0 в BATTLE.BIN, скопируйте)

XX000334
19006200
12180000
00000000
1980023C
98384290
00000000

20 gil means XX = 0x14 (20 gil означает ХХ = 0x14).
78
Help! / Re: Help Please
December 08, 2013, 02:15:10 pm
Download FFTPatcher.  Open orgASM; this hack is at the bottom of the list.

Скачать FFTPatcher. Открыть оргазма; этот хак находится в нижней части списка.
79
Help! / Re: Help Please
December 08, 2013, 08:04:00 am
Here is documentation of code by secondadvent in English.  I have more, but these are the most important ones.

Вот документация кода на secondadvent на английском.  У меня есть больше, но это самые важные из них.
80
FFT Arena / Re: New team in need of naming and tweeking
December 08, 2013, 07:08:57 am
This team probably only works as an anti-metagame team against all the cursed ring teams.  However, it seems to have some problems:
1) 9 SP frog and death user = silence / paralyze midcharge.
2) Transfusion Archer = HP Setup...so why is Thief Hat on him?
3) Shell and Cure2 have conflicting priority.  Plus, why DEFUP and regenerator (if you also have masamune)?  In all likelihood, it'll use dia spam for chip damage.
4) Need more status variety.  Mimic Daravon > Blackmail in terms of stall potential.  Since you have no berserk, kiyomori will just be wasting space (and I also question using Kiku for very low damage, which will have priority over Chiri because of range).  If you really want to keep kiyomori, I think you're better off making her a male version of the Wiz mediator.
5) Slow2 > Team (2 high faith supports will be caught and your masamune user can't reverse the damage faster than the team can be slowed).  This is relevant because your team lacks offense and is support / stall dependent.

Speaking of which, we need ONE thread for team critiques (NOT the three or four we have now).