• Welcome to Final Fantasy Hacktics. Please login or sign up.
October 16, 2021, 04:09:45 am


Please use .png instead of .bmp when uploading unfinished sprites to the forum!

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.

Topics - Darthatron


Get it here!
New Version
The latest build

So here it is, after several years of not being touched. It's not perfect, since it can't read every string in the game, but a lot of them work fine. I just wanted to get this out in case I'm unavailable to work on it again...

Currently there is no safe-guards for replacing data that is bigger than the original so please be careful and don't press "Save String" if the "Write Size" is bigger than the "Read Size".

Some strings (in "Other Strings" bookmarks) shouldn't be touched at this stage. LZSS Compressed strings should (mostly) be fine to edit though (this includes Ability Descriptions.) You can toggle LZSS Compression on strings with a Header which can sometimes reduce the size of strings with repeat substrings.


There is an XML file in the /Resources folder that tells the bookmarks where to read from. You can add known string tables on there. Hopefully it's self-explanatory

Good luck and happy modding

Let me know when/if you run into problems or have suggestions for future updates.

Currently I am chipping away at getting everything to load/save properly
Hey everyone I feel like it's been a while since I've posted anything so I just thought I would show you what I've been working on!

This is what's to be the full release of All-In-One:


I'm still working on porting the Job, Item, etc editors over from the beta version and will probably recode most of it, so there may not be a release any time soon, but I don't like leaving you all in the dark.

If anyone has any ideas, let me know: I would love to hear what you think.

Get it here!

It has an improved update system and the A-Ability editor is now implemented. Enjoy.
FFTA/FFTA2 Hacking / Any alternative to removing laws...
November 04, 2011, 01:40:01 am
I am willing to do anything to laws more appealing. Anything. So give me ideas.
I have nowhere else to put this list. Feel free to post things you think I should add.

Doublecast only works with Red Mage abilities
Badbreath inflicts Slow status correctly
Nerf Concentrate/Turbo MP accuracy buffs
Nerf blind buffs/debuffs
Add a Drain MP effect for skills
Change the way enemy levels are generated completely
Fix the Boost: Element bug
Protect/Shell/Haste/Slow down to 25% effectiveness
FFTA/FFTA2 Hacking / FFTA Job Editor [beta]
October 04, 2011, 01:53:24 am

Update 1: http://www.mediafire.com/?03xjsg1628aju91

Should be self explanatory. Post bugs. kthx.
FFTA/FFTA2 Hacking / My Notes.
August 27, 2011, 10:29:50 pm
R = Reflectable
S = Stealable
M = Not Silencable
O = Offensive
I = Ignore Reaction
! = R-Ab:Return Magic
@ = R-Ab:Absorb MP

                Byte #1| Byte #2| Byte #3| Byte #4
                RIO----- ---!--MS ------@- --------
Protect: 10000001 01100001 00010000 00000000
Dispel: 00000001 01100001 00010000 00000000

Holy: 00100001 11110001 00010010 00000000
Judge: 00100000 11100001 00010000 00000000

U.Blow: 00100000 10110010 00010110 00000000
Fire: 10100001 11110101 00011010 00000000

Greas.B.: 01100000 01110010 00010100 00000000

00 [Not Seen]
01 - None
02 [Not Seen]
03 - 100%H,    Gadget, Inflict Protect
04 - 100%H,  EqpSword, Inflict Disable
05 - 100%H,    Gadget, Inflict Shell
06 - SType,    Gadget, Inflict Blind
07 - 100%H,    Gadget, 100% Heal
08 - SType,    Gadget, Inflict Sleep
09 - 100%H,    Gadget, Inflict Haste
0A - 100%H,    Gadget, Dispel
0B - SType,    Gadget, Inflict Poison
0C [Not Seen]
0D - SType,    Gadget, Non-Undead: Inflict Doom
0E - 100%H, KOed Unit, Revive to Full HP
0F - 100%H, KOed Unit, Revive to 25% HP
10 [Not Seen]
11 - 100%H,      Self, Draw Weapon
12 - 100%H,      Self, [Eff1 Damage / 4] Damage
13 - 100%H,      Self, Max HP Damage
14 - 100%H,      Self, Caster's HP Damage
15 - 100%H,      Self, Eff1Dep: [Eff1 Damage / 4] Damage
16 - 100%H,      Self, Inflict Speed DOWN
17 - 100%H,      Self, 100% Damage
18 - 100%H,      Self, Eff1Dep: Heal Eff1 Damage
19 [Not Seen]
1A - 100%H,      Self, Lose 30 Gil
1B - 100%H,   Default, Eff1Dep: Delay Unit
1C - AType,   Default, Delay Unit
1D - 100%H,   Default, Inflict Quicken
1E - 100%H,   Default, Inflict WAtk UP/WDef UP/MPow UP/MRes UP
1F - SType,   Default, Doom Archer Effect*
20 - AType,   Default, Matra Magic Effect*
21 - AType,   Default, [(Target's HP + 1) * 0.9] Damage
22 - AType,   Default, Steal 2 JP
23 - AType,   Default, 100% Damage to MP, capped to Target's MP
24 - 100%H,   Default, Heal 80 MP
25 - 100%H,   Default, Inflict Astra
26 - 100%H,   Default, Esuna
27 - SType,   Default, Eff1Dep: Inflict Frog
28 - SType,   Default, Inflict Frog
29 - 100%H,   Default, Remove Frog
2A - 100%H,            Cover Effect
2B -   ---,     Enemy, Aim: Wallet Effect*
2C - 100%H,   Default, Inflict Advice
2D - 100%H,   Default, Inflict Shell
2E - SType,   Default, Elementalshift Effect*
2F - SType,   Default, Eff1Dep: Inflict Stop
30 - SType,   Default, Inflict Stop
31 - AType,   Default, Inflict Speed DOWN
32 - AType,   Default, 400% Damage
33 - 100%H,   Default, (Target's Kills * 10) Damage
34 [Not Seen]
35 - 100%H,   Default, 100% Damage
36 - 100%H,   Default, 999 Damage
37 - 100%H,   Default, Limit Glove Effect
38 - AType,   Default, 30 Damage
39 - AType,   Default, [(Target's HP + 1) / 2] Damage
3A - AType,   Default, [Target's HP / 4] Damage
3B - AType,   Default, Mutilate Effect*
3C - AType,   Default, Goblin Punch Effect*
3D - AType,   Default, Rand{2..12} Damage
3E - AType, NonUndead, (Caster's Max HP - Caster's HP) Damage
3F - AType,   Default, 100% Damage
40 - AType,   Default, 100% Damage, capped to Target's Max HP
41 - AType,   Default, 50% Damage, 2.0x Hit Rate
42 - AType,   Default, 200% Damage, 0.5x Hit Rate
43 - AType,   Default, Throw Effect*
44 - SType,   Default, Eff1Dep: Inflict Disable
45 - SType,   Default, Inflict Disable
46 - 100%H,   Default, Remove Disable
47 [Not Seen]
48 - SType,   Default, Eff1Dep: Inflict Immobilize
49 - SType,   Default, Inflict Immobilize
4A - 100%H,   Default, Remove Immobilize
4B - 100%H,   Default, Eff1Dep: Knockback
4C - SType,   Default, Eff1Dep: Inflict Berserk
4D - SType,   Default, Inflict Berserk
4E - 100%H,   Default, Inflict Protect
4F - SType,   Default, Hastebreak Effect*
50 -   ---,   Default, Aim: Vitals Effect*
51 -   ---,   Default, Acid Effect
52 - 100%H,   Default, Inflict Reflect
53 - 100%H,     Enemy, Detect Hidden Items
54 [Not Seen]
55 - SType,   Default, Eff1Dep: Inflict Blind
56 - 100%H,   Default, Eye2Eye: Inflict Blind
57 - SType,   Default, Inflict Blind
58 - 100%H,   Default, Remove Blind
59 - 100%H,   Default, Heal to full HP
5A - 100%H,   Default, Heal (Caster's HP) Damage
5B - 100%H,   Default, 100% Heal
5C [Not Seen]
5D - SType,   Default, Eff1Dep: Inflict Confusion
5E - 100%H,   Default, Eye2Eye: Inflict Confusion
5F - SType,   Default, Inflict Confusion
60 - SType,   Default, Bad Breath Effect*
61 - SType,   Default, Inflict Sleep
62 - SType,   Default, Inflict Petrify
63 - 100%H,   Default, Remove Petrify
64 - SType,   Default, Inflict WDef DOWN/MRes DOWN
65 - AType,   Default, Break Armor Effect
66 [Not Seen]
67 - SType,   Default, Eff1Dep: Inflict Slow
68 - SType,   Default, Inflict Slow
69 - 100%H,   Default, Inflict Haste
6A - 100%H,   Default, Dispel
6B - 100%H,   Default, Soundwave Effect
6C - 100%H,   Default, Inflict Expert Guard
6D [Not Seen]
6E - SType,   Default, Eff1Dep: Inflict Silence
6F - SType,   Default, Inflict Silence
70 - 100%H,   Default, Remove Silence
71 - 100%H,   Default, Hibernate Effect
72 - AType,     Enemy, Steal JP
73 - AType,     Enemy, Steal Gil Effect
74 - AType,     Enemy, Steal EXP
75 - AType,     Enemy, Steal Accessory
76 - AType,     Enemy, Steal Armor
77 - AType,     Enemy, Steal Helm
78 - AType,     Enemy, Steal Shield
79 - AType,     Enemy, Steal Weapon
7A - AType,     Enemy, Steal Ability, 0.25x Hit Rate
7B - 100%H,   Default, Inflict Conceal
7C - SType,   Default, Eff1Dep: Inflict Poison
7D - SType,   Default, Inflict Poison
7E - 100%H,   Default, Remove Poison
7F - SType,   Default, Inflict Zombie
80 - 100%H,   Default, Remove Zombie
81 -   ---,   Default, Break Weapon Effect
82 - SType,   Default, Inflict WAtk DOWN
83 - 100%H,   Default, Inflict Boost
84 - SType,   Default, Inflict Addle
85 - 100%H,   Default, Inflict WDef UP
86 - AType,   Default, Hurl Effect*
87 - 100%H,   Default, Inflict Defense
88 - 100%H,   Default, Eff1Dep: Inflict MPow DOWN
89 - SType,   Default, Inflict MPow DOWN
8A - 100%H,   Default, Inflict MRes UP
8B - 100%H,   Default, Cureall Effect*
8C - SType,     Enemy, Eff1Dep: Inflict Charm
8D [Not Seen]
8E - SType,     Enemy, Inflict Charm
8F - 100%H,   Default, Change Laws
90 - 100%H, NonUndead, SameLvDigit: 100% Damage
91 - 100%H,    Undead, SameLvDigit: 100% Heal
92 - 100%H, LvlDivBy3, Inflict WDef DOWN
93 - 100%H, LvlDivBy3, Inflict MRes DOWN
94 - 100%H, NonUndead, LvlDivBy5: Inflict KO
95 - 100%H,    Undead, LvlDivBy5: Heal to full HP
96 - 100%H, SmeLvlDay, 100% Damage
97 - 100%H,     Enemy, 100% Damage to MP
98 - 100%H,     Enemy, Eff1Dep: 100% Damage
99 - 100%H,     Enemy, 100% Damage
9A - AType,     Enemy, 100% Damage
9B - SType,     Enemy, Inflict Berserk
9C -   ---,     Enemy, Drop Weapon
9D -   ---,            Parley Effect*
9E [Not Seen]
9F - AType,   NotSelf, (Caster's HP) Damage
A0 - AType,   NotSelf, 100% Damage
A1 - SType,   NotSelf, Inflict Sleep
A2 - 100%H, NonUndead, Heal to full MP
A3 - 100%H, NonUndead, Esuna
A4 - AType, NonUndead, 100% Damage
A5 - 100%H, NonUndead, Inflict Regen
A6 - 100%H, NonUndead, Inflict Auto-Life
A7 - 100%H, NonUndead, Heal to full HP
A8 - 100%H, NonUndead, 100% Heal
A9 - SType, NonUndead, Eff2Dep: Inflict Confuse
AA - SType, NonUndead, Inflict Doom
AB - SType, NonUndead, Eff1Dep: Inflict Doom
AC - 100%H, NonUndead, Inflict KO
AD - SType, NonUndead, Inflict KO
AE [Not Seen]
AF - AType, NonAnimal, 100% Damage
B0 -   ---, NonAnimal, Break Weapon Effect
B1 - AType, NonDragon, 100% Damage
B2 - 100%H,    Undead, (Target's Max HP) Damage
B3 [Not Seen]
B4 - AType,    Undead, 100% Damage
B5 - 100%H,    Undead, Heal to full HP
B6 - 100%H,    Undead, 100% Heal
B7 - SType,    Undead, Remove Unit, 0.5x Hit Rate
B8 [Not Seen]
B9 - AType,    Animal, 100% Damage
BA - AType,    Animal, 200% Damage
BB -   ---,    Animal, Parley Effect*
BC - SType,    Animal, Inflict Addle
BD -   ---,    Animal, Capture Effect*
BE - AType,    Dragon, 200% Damage
BF -   ---,    Dragon, Parley Effect*
C0 - AType,     Enemy, Mug Effect
C1 -   ---,            Control Effect
C2 -   ---,            Friend Effect*
C3 - 100%H, NonUndead, Inflict Regen
C4 - 100%H,    Undead, Heal (Caster's Max HP - Caster's HP) Damage
C5 - AType,   Default, 200% Damage
C6 - AType,   Default, 50% Damage
C7 - AType,   Default, 300% Damage
C8 - 100%H,   Default, Morph Effect
C9 - SType,     Enemy, Inflict Sleep
CA - 100%H,   Default, 50% Damage
CB - 100%H,     Judge, Stop Judge
CC - SType,   Default, Inflict Disable/Immobilize
CD - 100%H,   Default, Give JP
CE - 100%H,   Default, Remove Yellow Card
CF - 100%H,   Default, Add Yellow Card
D0 - 100%H,   Default, Eff1Dep: Steal 2 JP

0854CD54 = Base Clan Data.
0854D1B4 = Amount in clan. (Halfword)
0854D1B8 = Pointer to clan data. (Word)

0852CDE0 - 0x30 bytes long.
00. Sprite & Name Index
01. Job Index (Race taken from this)
02. Unknown
03. Level
04. Unknown * 4
05. Equip #1
07. Equip #2
09. Equip #3
0B. Equip #4
0D. Equip #5
0F. Unknown * 20

Default gil: [0x0800986C]
Days per Month: [0x08036102] + 1

0x0851BA84 + (Race * 4)

0B01 C100 0100 01 0A Cure 100 AP Action
0D01 C300 0200 01 14 Cura
0C01 C200 0300 01 1E Curaga
DA00 9000 0400 01 14 Ensuna
F101 A701 0500 01 14 Life
C900 7F00 0600 01 1E Full-Life
F001 A601 0700 01 14 Auto-Life
2401 DA00 0800 01 0A Shell
AD01 6301 0900 01 0A Protect
B400 6A00 0400 03 1E Turbo MP 300 AP
2D02 EC01 0800 05 0A White Combo 100 AP Combo

NNNN = Name Index
DDDD = Description Index(?)
AAAA = Ability Identifier(?)
TT = Type:
00: Breaks Ability
01: "Action"
02: "Reaction"
03: "Support"
05: "Combo"
Else: "Action"

Notes.txt        just a bit vague...
0200F881 = Overworld Law Limiter

In a HEX Editor, change the two bytes at 0x02DB04 to 00 21
and change the two bytes at 0x02DB36 to 00 21
and change the two bytes at 0x02DB5C to 00 21
and change the two bytes at 0x02DB74 to ## 20, where ## is the number of laws you want the player to be able to set. Must be at least 1.
//The part below isn't needed, but makes the game show the correct amount of laws in the pre-battle part of the game.
and change the two bytes at 0x02FB80 to 00 28
and change the two bytes at 0x02FBBE to 00 1C

Enemy Modifer?
02002FC4 1st Enemy
020030CC 2nd

NegativeSpeedEqZero.asm            probably just ignore this one.
.org 0x06F0DC

push    {r4-r6,r14}
mov     r6,r0
ldrb    r0,[r6,#0x2]
cmp     r0,#0x0
bne     0x06F0E8
b       0x06F1E2
mov     r5,#0x0
ldsb    r5,[r6,r5]
lsl     r5,r5,#0x13
mov     r0,#0xA0
lsl     r0,r0,#0xF
add     r5,r5,r0
asr     r5,r5,#0x10
mov     r4,#0x1
ldsb    r4,[r6,r4]
lsl     r4,r4,#0x3
add     r4,#0x4
ldrh    r0,[r6,#0x4]
mov     r1,#0xA
bl      0x0CA7A4
lsl     r3,r0,#0x10
lsr     r3,r3,#0x10
mov     r0,r5
mov     r1,r4
mov     r2,#0x3
bl      0x06F568
mov     r5,#0x0
ldsb    r5,[r6,r5]
lsl     r5,r5,#0x13
mov     r0,#0xA0
lsl     r0,r0,#0xF
add     r5,r5,r0
asr     r5,r5,#0x10
mov     r4,#0x1
ldsb    r4,[r6,r4]
lsl     r4,r4,#0x13
mov     r0,#0x80
lsl     r0,r0,#0xD
add     r4,r4,r0
asr     r4,r4,#0x10
ldrh    r0,[r6,#0x4]
mov     r1,#0xB
bl      0x0CA7A4
lsl     r3,r0,#0x10
lsr     r3,r3,#0x10
mov     r0,r5
mov     r1,r4
mov     r2,#0x3
bl      0x06F568
mov     r5,#0x0
ldsb    r5,[r6,r5]
lsl     r5,r5,#0x13
mov     r0,#0xA0
lsl     r0,r0,#0xF
add     r5,r5,r0
asr     r5,r5,#0x10
mov     r4,#0x1
ldsb    r4,[r6,r4]
lsl     r4,r4,#0x13
mov     r0,#0xE0
lsl     r0,r0,#0xD
add     r4,r4,r0
asr     r4,r4,#0x10
ldrh    r0,[r6,#0x4]
mov     r1,#0xC
bl      0x0CA7A4
lsl     r3,r0,#0x10
lsr     r3,r3,#0x10
mov     r0,r5
mov     r1,r4
mov     r2,#0x3
bl      0x06F568
mov     r5,#0x0
ldsb    r5,[r6,r5]
lsl     r5,r5,#0x13
mov     r0,#0xA0
lsl     r0,r0,#0xF
add     r5,r5,r0
asr     r5,r5,#0x10
mov     r4,#0x1
ldsb    r4,[r6,r4]
lsl     r4,r4,#0x13
mov     r0,#0xA0
lsl     r0,r0,#0xE
add     r4,r4,r0
asr     r4,r4,#0x10
ldrh    r0,[r6,#0x4]
mov     r1,#0xD
bl      0x0CA7A4
lsl     r3,r0,#0x10
lsr     r3,r3,#0x10
mov     r0,r5
mov     r1,r4
mov     r2,#0x3
bl      0x06F568
mov     r5,#0x0
ldsb    r5,[r6,r5]
lsl     r5,r5,#0x13
mov     r0,#0xA0
lsl     r0,r0,#0xF
add     r5,r5,r0
asr     r5,r5,#0x10
mov     r4,#0x1
ldsb    r4,[r6,r4]
lsl     r4,r4,#0x13
mov     r0,#0xD0
lsl     r0,r0,#0xE
add     r4,r4,r0
asr     r4,r4,#0x10
ldrh    r0,[r6,#0x4]
mov     r1,#0xE
bl      0x0CA7A4
mov     r3,#0x7F
and     r3,r0
cmp     r3,r0
beq     0x06F1D8
mov     r3,#0x0
mov     r0,r5
mov     r1,r4
mov     r2,#0x3
bl      0x06F568
pop     {r4-r6}
pop     {r0}
bx      r0

FFTAbil.hsl                     just something I made for hex editing.
* FFTAbil.hsl - Structure definitions for Abilities in FFTA.

* Copyright (c) 2011 Darthatron
* Revision History:
*  1/01/11 - Created

#include "standard-types.hsl"

#pragma displayname("FFTA Structures") ;
#pragma fileextensions(".gba") ;

#pragma byteorder(little_endian)

    WORD    hNameID;
    BYTE bElement;
    BYTE    bAP;
    BYTE    bMP;   
BYTE bUnknown1;
BYTE bRange;
WORD hUnknown2;
BYTE bHAura;
BYTE bVAura;
BYTE bPower;
BYTE bEffect1;
BYTE bEffect2;
BYTE bEffect3;
BYTE bEffect4;
DWORD wAttributes;
BYTE bUnknown5;
BYTE bUnknown6;
BYTE bUnknown7;
BYTE bUnknown8;
BYTE bUnknown9;
BYTE bUnknown10;
BYTE bUnknown11;
BYTE bUnknown12;
} ;

struct JOBS
    WORD    hNameID;
WORD hBuffer;
BYTE bRace;
BYTE bChecksum;
BYTE bUnknown0;
WORD hSpriteIndex;
WORD hUnknown1;
BYTE bSpritePal;
BYTE bUnknown2;
BYTE bPortraitPal;
BYTE bPortraitIndex;
BYTE bUnknown3;
BYTE bAAbility;
BYTE bUnknown4;
DWORD wElements;
BYTE bStatus;
BYTE bSpeedBase;
BYTE bMelee1;
BYTE bMelee2;
BYTE bMelee3;
BYTE bMagic1;
BYTE bMagic2;
BYTE bMagic3;
BYTE bHPGrowth;
BYTE bMPGrowth;
BYTE bSpeedGrowth;
BYTE bAttackGrowth;
BYTE bDefenseGrowth;
BYTE bPowerGrowth;
BYTE bResistGrowth;
BYTE bUnknown5;
BYTE bMove;
BYTE bJump;
BYTE bEvade;
WORD hUnknown6;
BYTE bEquipIndex;
WORD hUnknown7;
BYTE bJobIndex;
WORD hUnknown8;
BYTE bUnknown9;
} ;

struct ALLJOBS
struct JOBS entries[116];

I assume (and hope) there will be questions.