• Welcome to Final Fantasy Hacktics. Please login or sign up.
July 22, 2024, 11:38:04 pm


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

Hacking/Patching Tools / Alternate Animations v3
December 25, 2022, 11:31:41 pm
You know what it's about. Just download the damn spreadsheet.

I might add a description later

PS: Please tell me if there's anything you find confusing about the spreadsheet use!
Download it here, and post your bugs here. Maybe I'll add something here later.
PSX FFT Hacking / Trap Extension v1.0
March 29, 2022, 07:13:39 am
💾 Trap Extension.xlsm
💾 Trap Extension.xml

This hack allows you to place old and brand-new traps on the field with an abilities, or with event instructions.

000 | 0x00 Degenerator: -1 Level
001 | 0x01 Deathtrap: 100% Death Sentence
002 | 0x02 Sleeping Gas: 100% Sleep
003 | 0x03 Steel Needle: 25% Max HP Damage
004 | 0x04 Rejuvenation: +HP (Level+1) x 5
005 | 0x05 Explosion: -HP (Level+1) x 2
006 | 0x06 Fusillade: -HP (Level+1) x 5
007 | 0x07 Manafont: +MP (Level+1) x 2
008 | 0x08 Wizardbane: -MP (Level+1) x 5 / 2
009 | 0x09 Leech: -MP (Level+1) x 5
010 | 0x0A Vanishing Smoke: 100% Transparent
011 | 0x0B Blinding Smoke: 100% Blind
012 | 0x0C Choking Gas: 100% Poison
013 | 0x0D Silence Gas: 100% Silence
014 | 0x0E Oil Bug: 100% Oil
015 | 0x0F Stasis: 100% Don't Move + Don't Act
016 | 0x10 Befuddling Gas: 100% Confuse + Berserk
017 | 0x11 Swarm: 100% Blood Suck
018 | 0x12 Stone Gas: 50% Petrify
019 | 0x13 Gil Bug: +Gil (Level+1) x 250
020 | 0x14 Grasshopper: Restore Movement (doesn't work if Act was used)
021 | 0x15 Plot Armor: 100% Immortal
022 | 0x16 Powerup: +1 SP / +2 PA / +2 MA (doesn't display)

Adds a trapping formula which lets the player add custom traps on the battlefield that will trigger once.
The formula cannot be properly processed by AI, so I recommend that you uncheck "Used by AI."
Adding a trap to a tile that already has a trap will replace it with the new one.
The Y value of the formula determines which Trap Type will be set at the targeted tile.
You can either have trap skills that target the same tile as the user, or target empty tiles.
You can assign the formula to whichever formula ID suits your needs best.

WARNING: The ability MUST include a unit (ideally the user) in its AoE when it resolves in order to call the formula, which is why I have the following recommendations below.

Ability will fail if a unit is on the same tile as the targeted tile when the ability resolves.
"Auto Target" must be OFF
Recommended Settings:
Range: 1
AoE: 1
Linear Range ON
Vertical Threshold ON
Top-Down Target ON
Hit Caster ON
Can Select Unit OFF

Ability will fail if the user is not on the same tile as the targeted tile when the ability resolves.
Auto Target must be ON
Recommended Settings:
Range: 0
AoE: 0
Hit Caster ON

Unfortunately, removing status effects through traps is not possible at this time.
You can either hardcode your own traps at @custom_traps, or set a Formula + X + Y value at trap_types.
Download Latest Version
💾 Event Instruction Upgrade v1.374.xml
💾 FFT Conditionals v1.1.xlsm

You might've seen v4 on Discord but that was just while I was testing stuff. This is the newest version.
Completed Mods / Smart Encounters with Cross Skip ppf
September 17, 2021, 04:56:34 pm
The essentials of QoL!

A very simple patch for those who don't want to, or can't use FFTOrgASM.
New Project Ideas / Quality of Life Pack v1.14b
September 17, 2021, 03:41:17 pm
Download the Newest Beta (this seems to be the most stable version)
💾 QoL v1.14b.ppf (patch only)
💾 QoL v1.14.zip (source)

Compatible with The Lion War!
Note: If using Cross Skip, the Event Instruction Upgrade hack provided with the TLW Resources must be reapplied to TLW afterwards, using OrgASM (also provided in the Resources).

  • ✅ Smart Encounters 『Xifanie』
  • ✅ Permadeath Terminator (Ramza can decay version) 『Xifanie』
  • ✅ Zodiac Compatibility Highlighting (Zodiac Compatibility is shown for a specific unit when holding Square in battle, with the cursor over that unit) 『Xifanie』
  • ✅ Cancel Movement 『Xifanie』
  • ✅ Cross Skip 『Xifanie』
  • ✅ Extended Warranty: Safe Steals/Break 『Xifanie』
  • ✅ Special characters can do propositions v2 『Xifanie』『Razele』
  • ✅ Soldier Office can rename any units (including humans and special characters) 『Razele』
  • ✅ JP/Exp earned doesn't display for enemy teams or guests 『Xifanie』
  • ✅ Foes and Guests show no enthusiasm on (job) level up 『Xifanie』
  • ✅ Guests use enemy inventory 『Xifanie』
  • ✅ Sound Test (enter PolkaPolka as Ramza's name) 『FFMaster』
  • ✅ 2nd Squad is not mandatory 『Xifanie』
  • ✅ 50% chance to get the rare item when poaching 『Xifanie』
  • ✅ Move-Find Item is Player only 『Xifanie』
  • ✅ Only rare Move-Find Items v2 『Xifanie』
  • ✅ Equip Change Fix (doesn't cost a turn if the R/L Hands were changed) 『Xifanie』
  • ✅ Pause Fix (when trying to pause during AI turns) 『Xifanie』
  • ✅ Default to Continue instead of New Game 『Xifanie』
  • ✅ Switch unit number with L1 and R1 buttons (formation) 『Glain』
  • ✅ Save overwrite defaults to Yes v2 『Xifanie』

Patch the ppf on top of your ISO.

For modders:
ASM Hacks folder included, as well as TLW QoL Hacks.xlsm for development.

Possible Future Updates

  • Event Skip Hack (Needs the hack and base TLW to be updated)『Glain』
  • Preview action results on units outside of range (unlikely)
  • Can view ??? stats (just opening the window) 『Xifanie』

Known Bugs

  • Not compatible with the Cross Skip + Smart Encounters patch
  • Sound Test text is gone. This was removed in TLW
  • Kletian vs Meliadoul triggers even if Meliadoul is on a proposition then crashes the game

Download 1.13b. Just in case I left older versions.
New Project Ideas / FFT: Romance Simulator
August 05, 2021, 12:28:23 pm
...you people.

I don't know why you want this. Could I make it happen? Of course!
I guess this is just to gauge interest.

Nothing is decided as to whether or not Ramza would be the MC (I could make it user-selectable), or if it happens before or after everyone dies.

If you want other options, just ask, I guess.

I would make it so that the first 10-25% of a relationship would be getting to know + dating, and the remaining 75-90% would be events that happen after the relationship is official, creating stronger bonds by facing difficulties together + enjoying the good times.

I'm also thinking of equipment boosting certain stats and weapons/shields could be gifts.
New Project Ideas / FFT: Tranquil (FFTT)
July 13, 2021, 08:56:50 am
How many times did YOU attempt Dorter on your first playthrough? </running meme even in our community>

Final Fantasy Tactics is a really tough game to start playing completely in the blind.
It's really unforgiving; for example, nothing tells you you should keep separate saves!
I feel that many people hate the genre because this is one of the hardest SRPGs out there to learn, and yet it's the best in its genre.
FFT: Tranquil is meant to be an "easytype" for new players while trying to keep the experience mostly vanilla-like.

  • ✅ All of the QoL Pack's hacks
  • Several tips for new players so that they don't have to figure everything out on their own
  • A warning stating that the player should save in a different slot when appropriate
  • Gariland Generics have higher job levels and have Basic Skill/Item equipped as their secondary skillset
  • ✅ Way higher JP gains (battles & propositions)
    • ✅ 45-99JP per action instead of 10-48 (15-72 with Gained JP Up)
    • ✅ 3x Proposition JP Gained
  • ✅ Gained JP Up removed to encourage players to equip strategic support abilities
  • ✅ Modified Exp gains; makes it harder to level up past story enemies, but easier to catch up
    • ✅ 10 ➡ 5 minimum exp gain per action
    • ✅ +3 exp per level difference (i.e. Attacker level < Defender level)
    • ✅ 20 ➡ 15 base exp on kills
    • ✅ Exp gain cap increased from 99 ➡ 100
    • ✅ Gained Exp Up revamped to a static +20 exp per action
  • ✅ More starting items
  • ✅ Higher starting Gil
  • ✅ Greater Gil rewards
    • ✅ +Bonus Money ([Enemy Level + 4] * 250)
    • ✅ +War Trophies Gil (x100 ➡ x500)
    • ✅ 3x Proposition Gil Rewards
  • ✅ Enemies with special jobs have lower stats
  • Story/Sidequest recruits and guests come with far more job levels unlocked
  • ✅ Jobs show which generic jobs they unlock
  • Better Zodiac descriptions (WotL style)

  • Nyzer's Pre-Battle Menu
  • Allowing players to exit back to the world map to re-supply/grind


You can view the text descriptions planned for the tutorials here:

Orbonne Fight StartTutorials explanation + allow skipping all tutorials
Orbonne Fight StartOptions Menu
Military Academy's AuditoriumPress L1/R1 to switch between character to add them to the squad
World MapBuy chemist items, Learn abilities, Change jobs, recommend the Tutorials section
After MandaliaSelect button explanation
After IgrosExplain smart encounters
After IgrosMention that different towns have different shop inventories
After SweegyMove-Find Item Explanation (Because it's your last/only chance to get items in Dorter)
After Dorter 1Auto-battle explanation, Triangle button to pause
After Sand RatsPermadeath Terminator explanation, and how they don't have to worry about their units permanently dying.
After Sand RatsZodiac Compatibility Highlighting Explanation
After Thieves' FortSoldier Office (Upgrade) Explanation + Invitation mechanic Explanation
After Igros 2Stripping guests explanation (and how they don't have to do it in TLW)
After Fovoham PlainsBench hack explanation
After Orbonne with RecruitsPropositions Explanation
After Zigolis FightMention to buy xxxx? before proceeding because they won't be able to buy those for a bit
After Goug's ArrivalWarning for upcoming battle
After Mustadio's RecruitExplain Unit Switching with L1/R1 on CT display
After GolgorandMention that the player can walk past Lionel castle
After GolgorandWarn about the next chain of 2 battles
After Goltana's Military MeetingFur Shop Explanation
After Goltana's Military MeetingExtended Warranty Explanation
After Back Gate of Lesalia CastleWarn about the next chain of 4 battles
After Yuguo WoodsWarn about the next chain of 3 battles
After Bed DesertWarn about the next chain of 2 battles
After Poeskas LakeWarn about the next chain of 3 battles
After Inside of Igros CastleWarn about the next chain of 3 battles
After MurondWarn about the final chain of 5 battles
News / 1000 Discord Server members!
May 22, 2021, 09:33:02 am
That's right, we finally reached 1000 members!
Actually we did back on the 17th April 2021, and now we're at 1067.

Regardless. Our discord server is extremely active and this is easily the most active FFH has been since its creation!
So, those who felt "Eh." about joining, I ask you to reconsider. See you soon!

Join here 🢂 https://discord.gg/xpXa8VEV2k
Hacking/Patching Tools / Font Character Creator
July 30, 2020, 11:42:21 am
This is really old, but it still works!
Please remember that a lot of ASM hacks use kanji space, so you will have to try patching this at the same time as every other hack to make sure there is no conflict.
I'd want to make it like JSON, or something. It would improve readability and this type of format could also be extended to event conditionals and world map instructions. Also, this probably won't ever happen as I'm sure it's more than my body can handle. 😅


Offset = 0x12A000;

UnitIDs = {
   Ramza: 0x02,
   Alma: 0x30,
   Simon: 0x80,
   DeadKnight: 0x81,
   DeadMonk: 0x82,

Instructions = {

   X: 392, Y: 1272, Z: 1420,
   Angle: 334, Rotation: 480,
   Zoom: 100%,
   Frames: 1
WaitForInstruction( WaitFor: Camera ),

UnitAnim( UnitID: Simon, Animation: Dead ),
UnitAnim( UnitID: DeadKnight, Animation: Dead ),
UnitAnim( UnitID: DeadMonk, Animation: Dead ),
WarpUnit( UnitID: Ramza, X: 4, Y: 11, Facing: East ),
WarpUnit( UnitID: Alma, X: 4, Y: 11, Facing: East ),

SpriteMove( UnitID: Ramza, X: -44 ), WaitSpriteMove( UnitID: Ramza ),
SpriteMove( UnitID: Alma, X: -40 ), WaitSpriteMove( UnitID: Alma ),
ColorUnit( UnitID: Ramza, Preset: Shadows ), Wait( Frames: 2 ),
ColorUnit( UnitID: Alma, Preset: Shadows ), Wait( Frames: 2 ),

UseFieldObject ( ObjectID: 0x02 ), WaitFieldObject()

RotateUnit ( UnitID: Simon, Rotation: 8, Speed: 1 ), WaitRotateUnit( UnitID: Simon ),
ResetPalette( UnitID: Ramza ), ResetPalette( UnitID: Alma ),

LoadEVTCHR( MemoryBlock: 1, Slot: 0x42 ), WaitForInstruction( WaitFor: LoadEVTCHR ), SaveEVTCHR( MemoryBlock: 1 ),

SpriteMove( UnitID: DeadKnight, Z: 8 ),

EVTCHRPalette( UnitID: DeadKnight, MemoryBlock: 1, Palette: 0x02 ),
EVTCHRPalette( UnitID: DeadMonk, MemoryBlock: 1, Palette: 0x02 ),
UnitAnim( UnitID: DeadKnight, Animation: { Type: EVTCHR, MemoryBlock: 1, ID: 2 } ),
UnitAnim( UnitID: DeadMonk, Animation: { Type: EVTCHR, MemoryBlock: 1, ID: 1 } ),
SpriteMove( UnitID: DeadMonk, Z: 8 ), WaitSpriteMove( UnitID: DeadMonk ),

EVTCHRPalette( UnitID: Simon, MemoryBlock: 1, Palette: 0x04 ),
UnitAnim( UnitID: Simon, Animation: { Type: EVTCHR, MemoryBlock: 1, ID: 7 } ),

Instruction_63( UnknownA: 0xC9 ),


   Wait( Frames: 10 ),
   SpriteMove( UnitID: Ramza, Frames: 36 ),
   Wait( Frames: 16 ),
   ColorUnit ( UnitID: Ramza, Preset: 0x08, Frames: 4 ),
   WaitSpriteMove( UnitID: Ramza ),
   UnitAnim ( UnitID: Ramza, Animation: Standing ),
   Wait( Frames: 20 ),
   UnitAnim ( UnitID: Ramza, Animation: Bow ),   


   Type: CloseByScript | Regular | Bottom,
   UnitID: Simon,
   MessageID: 0x0003,
"{font:08}Simon {br}
{font:00}U, ugh...Alma...{br}
Why...are you....here?{end}",
   Y: 12, ArrowX: -4,
   Open: Smooth
WaitForInstruction( WaitFor: Dialog ),

   Type: CloseByScript | Regular | Top,
   UnitID: Alma,
   MessageID: 0x0004,
{font:00}What happened?{end}",
   X: 18, Y: 28, ArrowX: -4,
   Open: Shock
WaitForInstruction( WaitFor: Dialog ),

   DialogID: Bottom,
   MessageID: 0x0005,
{font:00}It's dangerous....here.{br}
Hurry....run.   {br}
They...came for the Holy{br}
Stone 'Virgo'...{end}"
WaitForInstruction( WaitFor: Dialog ),

ChangeDialog( DialogID: Top, MessageID: Close ),


The Lounge / My recommendations for COVID-19
April 22, 2020, 05:42:40 am
If you show symptoms of COVID-19, even if you tested negative (false negatives are very much a thing), please still consider giving a shot to the advice in this topic, for 1-2 weeks to see how it goes
I am not a licensed medical professional, but any information that I provide can be cross-examined.
I would recommend that you take your health into your own hands and research this instead of just blindly following my advice. All this advice won't be the answer for everyone.

Time for this topic to become demonetized!

As many of you already know, I've become a nutritionist by necessity for my own health, and I've helped quite a few people with their own health through the myriad of knowledge that I acquired over the years. And COVID-19 is no exception to me.

I have some suggestions and I'll explain my reasoning for each:

Raw Garlic
Raw garlic is amazing at boosting oxygenation and insulin sensitivity. It's a performance drug. This means that for shortness of breath, it's effects are undeniable and I can both speak from personal experience with mildew exposure + previous infections and my guinea pig @Elric.

It's also amazing at fighting respiratory tract infections in general, including the flu and fungal infections.

It can be safe to consume up to 1/2 bulb of garlic per day depending on how your body handles it. Even if all you can consume is half a clove a day, it should still help you to breathe tremendously.

How to Prepare
  • Crush/Blend the garlic and let it sit for 10-15min at room temperature (keep away from cats/dogs).
  • Ideally mix it with some lemon juice and refrigerate it for up to 4 days.
  • Once it's fridge cold, swallow the equivalent of 1/3rd of a clove or less at first with some food, including some fats
  • Try to consume this 3-4 times a day. The quantity isn't nearly as important as the frequency! I'd rather you take 1/3rd the total amount twice as often. Allicin has a very short biological half-life.
  • Be especially wary if you have acid reflux, at the same time, try to consume what you can handle.

Zinc (Gluconate)
Viruses hate zinc. Zinc kills them and it prevents them from reproducing! But you can't overdo this because Zinc toxicity is something that can happen pretty quickly. You want zinc gluconate specifically because it is the form of zinc supplementation available that is by far and away the lowest in Cadmium, which is a toxic heavy metal to the body. And do you want to add the stress of eliminating a heavy metal to your body when you're already sick? Of course not.

How to Take
Normally the Daily Value of zinc is 40mg. 100mg per day was proven very effective in treating autoimmune conditions in general. I suspect that a ratio of 2.5x for autoimmune and 2.5x for viral infections would be closer to ideal in order to be healthier. Take with food, split the amount into 2+ times a day. Oysters can work too, but those can be toxic in larger amounts.

If you experience acid reflux or are otherwise known to have low stomach acid, ideally take your zinc with something highly acidic, such as tomatoes.

Get Some Sun
Vitamin D3 is a powerful hormone that is also a powerful antioxidant and helps kill viruses. In fact, many viruses only attempt to come out of the cells to multiply more when they detect a low D3 presence in the blood, indicating a weak immune system. For those further up in the North, definitely try to exposure yourself closer to noon, as the UV rays are still minimal at this time of the year. I would recommend 20min/day for normal exposure, and 60min/day (max 30min sessions) if you're sick. This might be bad for those with Irish genes though. If it makes you feel worse, don't do it.

Blood Production Supporting Supplements, Vitamins and Minerals
The shortness of breath caused by COVID-19 is the result of low blood O2. This means that it's like trying to climb Mt. Kilimanjaro without having trained for it. Thus, anything your body could use to increase your supply of blood could be beneficial, especially if you have a false negative and/or don't expect to be able to receive medical treatment. This is more of a long-term solution to ensure your survival, but still a good strategy nonetheless.

  • Vitamin B12
  • Vitamin B9 (Folate)
  • Vitamin B6 (Folate)
  • Vitamin B3 (Niacin)
  • Iron (ideally heme-iron, from meat)
Try to at least meet your daily requirements, and usually you can multiply the daily amounts of these safely, except for iron which becomes quickly toxic.

Immune Supporting Supplements, Vitamins and Minerals
They reduce inflammation and support your body's fight... very much what you need while fighting any infection.

  • Vitamin E
  • Vitamin C
  • Vitamin A (from animal fats)
  • Vitamin D
  • Selenium (brazil nuts are high in it)
  • Zinc
Vitamin C is the only one that it's not realistically possible to accumulate a toxic amount of, but it's also pointless to take, say, 50g of the stuff per day. It's just more trouble for your kidneys.
For all this stuff in general, go with amounts that make you feel better. You'll need more of those if you're immunocompromised as well.
Spriting / How to resize your avatar for FFH
April 19, 2020, 03:39:06 am
FFH's avatar standard is 80x96, while in-game portraits are 32x48 stretched to 40x48.

Thus, to reproduce the same effect while minimizing quality loss, we can:
  • Resize to 800%, or to 256x384, with the nearest neighbor option
  • Change the color mode to RGB
  • Resize down to 80x96 (31.25% x 25%), with the regular bicubic option (not smooth or sharp)
  • Upload!
In this topic I'm going to share videos I've recorded or streamed about ASM Hacking. The first video was the process of creating a simple formula hack, but I put it in a spoiler tag for now since I figured it was very important for me to go through the basics of ASM first for people to truly appreciate the more complex information I'm putting out there.

Formula hacks are pretty much the easiest thing to create when it comes to ASM, and a great introduction without including the debugger/breakpoints. So, after the basics, this is what this thread will focus on for a while.

Join us on Discord #asm-hacking to know when to expect a live stream to see your questions answered live, or answered in the next video!

Please give me any feedback on how to improve my videos! This isn't just for FFH--I want to make quality videos for my business too.

Kick Formula
Mod Reviews / [PSX] FFT: Complete (Final)
April 07, 2009, 11:52:40 pm
FFT: Complete
  • Translation

Ports the War of the Lions PSP translation back to the Playstation version.

Mod Reviews / [PSX] Laggy Fantasy Tactics (Final)
May 16, 2011, 06:54:24 pm
Laggy Fantasy Tactics
  • Rebalance/Overhaul
  • Quality of Life Tweaks
  • Fun-Oriented

LFT has three main goals:
1. To improve the usability and balance in all aspects of gameplay, without removing options or impeding on personal preference whenever possible. (classes, items, etc.)
2. To reduce the necessity of grind and other tedious aspects of the game. (faster JP gain, easier class unlocks, better poaches, etc.)
3. To streamline the game's difficulty so that it remained challenging to a player who previously played FFT, without forcing optimization or any extraneous leveling. (Special care has been taken to make sure that SCCs are, as a general rule of thumb, still possible.) To elaborate, m.c. and I playtested with basically no random encounters, no poaching, no beelining for any classic broken setup, etc. These routes are options for players to choose and use as their playstyle sees fit.

Mod Reviews / Mod Review Format
April 10, 2020, 11:54:48 pm
Mod Review Format
Copy & Paste and edit it as needed
[mod-highlight]Write a short highlight of how you feel about the mod. Ideally fewer than 25 words.[/mod-highlight]
Write your review as lengthy as you desire, but keep in mind that not everyone will want to read very long reviews. Short and concise reign king. But of course, mention everything that you feel is worthy of mention. More than anything, stay true to your heart!
Mod Highlight: This is what will appear on the special page I'll eventually code so people will quickly know what to expect from the mod and they'll be able to click to read the rest of your review.
Mod Completed: Only use Yes or No
Mod Version: You don't need to be precise here, but don't say "Latest" unless the mod is unlikely to ever see an update again
Mod Scores: Remove any that you feel are irrelevant to your review or to the mod! Only use values between 0 and 5.

Mod Review Example

It's okay... I guess.

This Game is Complete!
Not Completed

Version: Unknown

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus nec ultrices orci, ac mollis mauris. Praesent in nunc libero. Donec a vestibulum nibh. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi arcu nulla, pharetra sit amet rutrum non, tincidunt vitae sapien. Sed tincidunt mollis nulla, sit amet auctor leo ultrices nec. Nulla rhoncus urna vel tortor semper pharetra. Phasellus massa quam, sodales at tellus non, faucibus bibendum urna. Aenean condimentum tellus id bibendum convallis. Sed sit amet tempor enim, vel venenatis odio. Nullam ornare magna sit amet dui sollicitudin ullamcorper. Nullam nec sagittis nibh, eget tempus diam.

Sed luctus pharetra fermentum. Vestibulum vel orci nunc. Donec non mi quis metus ultrices pharetra. Vivamus felis enim, maximus in justo id, varius aliquam dolor. Ut convallis cursus justo, a vestibulum eros pharetra et. Curabitur mollis ut tortor a cursus. Nam auctor turpis at ultricies tristique. Quisque vitae sodales tortor. Aliquam lorem augue, fringilla sed nisl ac, porttitor ultrices metus. Sed euismod urna sem, ut interdum ipsum suscipit at.

Etiam viverra nulla nec libero sollicitudin bibendum. Aliquam bibendum venenatis arcu, vel convallis massa. Curabitur dapibus nulla sed sagittis vestibulum. Ut ac metus non dui sagittis mollis. Phasellus et imperdiet nisi. Duis a odio accumsan, varius dolor et, dignissim erat. Morbi non enim quis mauris varius blandit id vel ex. Donec non tincidunt lacus.

Pellentesque congue felis ac ante pulvinar pulvinar. Pellentesque ullamcorper tortor sit amet orci porttitor, id pulvinar mi dignissim. Sed tempus diam non pharetra sagittis. Aenean tristique purus et ligula aliquam, ullamcorper congue nisl vestibulum. Donec nec justo lobortis, fringilla tellus id, tristique tortor. Ut eu odio vel arcu tincidunt pellentesque volutpat a nulla. Nam vel urna et purus sodales eleifend. Sed quam mi, euismod ut tempus non, sollicitudin condimentum magna. Integer pretium mauris bibendum, interdum elit vitae, gravida libero. Proin tincidunt, ex at auctor euismod, diam nisi maximus ex, in cursus tortor nunc ut lorem. Suspendisse ultricies sit amet erat quis faucibus. Aenean in urna vel nibh fermentum imperdiet. Aenean consequat justo eget ipsum dignissim, in tincidunt nibh pellentesque. Mauris pharetra tristique mauris eu ultricies. Fusce congue, augue eget vestibulum hendrerit, turpis lectus finibus nulla, a elementum lectus sapien vitae justo. Donec auctor, eros eget porttitor malesuada, risus enim fringilla nisl, quis tempus ligula ante in augue.

In ut elementum elit. Sed eu fringilla quam. Vivamus vel maximus metus. Ut egestas accumsan lacinia. Nulla convallis risus eu egestas interdum. Proin pellentesque commodo arcu. Nullam a ipsum commodo, vulputate augue vel, pretium nunc. Curabitur suscipit semper laoreet. Aenean ex nibh, congue eu pulvinar vitae, gravida sed nunc.
Each mod will have its own topic, and any reviews for that particular mod will belong there.

A specific format needs to be followed for compilations in the future for a page that will allow searching mods by tags and compile scores.

If you wish to post a review for a mod that doesn't have its own topic yet, you can create it yourself if the mod creator is not active anymore following the format below. If the mod creator is still active, please ask them to create the topic in this section themselves. Worst case scenario, I can always move posts or transfer topics to other users, to a certain extent.

Main Post Mod Format
For the topic's subject, please mention the console, PSX or PSP, in brackets, before your mod name. If the project was abandoned or the creator is not showing up on the forum anymore.
Ex: [PSX] The Best FFT Mod in the Whole World (Abandoned)

Copy & Paste and edit it as needed
[mod-title]Your Mod's Title Here[/mod-title]
[mod-feature]Brand New Story[/mod-feature]
[mod-feature]Story Additions[/mod-feature]
[mod-feature]Character Additions[/mod-feature]
[mod-feature]AI Battles[/mod-feature]
[mod-feature]New Mechanics[/mod-feature]
[mod-feature]Quality of Life Tweaks[/mod-feature]
[mod-feature]Harder Difficulty[/mod-feature]
[mod-feature]Easier Difficulty[/mod-feature]
[mod-feature]Easter Eggs[/mod-feature]
A short description with the aim to give an overall feeling of what your mod is about in as few words as possible while still getting the point across. Ideally fewer than 100 words.
[mod-read-more]The url of your main topic or forum section should be inserted within these brackets[/mod-read-more]
On the mod-feature tags... remove the ones that don't apply for your mod.
If you feel a tag should exist but isn't in there, please ask me about it first in this topic or contact me another way. Thank you!
If it's a quick keyword for your mod specifically, you can add your own features but they won't be searchable with the new tool.

Mod Info Example

Topic Title: [PSX] The Best FFT Mod in the Whole World

The Best FFT Mod in the Whole World
  • Brand New Story
  • Character Additions
  • Rebalance/Overhaul
  • Quality of Life Tweaks
  • Harder Difficulty
  • Easter Eggs

It's a mod about Ramza training to become a Holy Swordsman after the original game's story, with Orlandu as his Master/teacher. Lots of comedy and a fully original take of a world-famous fan-fiction!

Bugs and Suggestions / What does FFH need the most?
April 06, 2020, 01:32:53 pm
Just post if your answer isn't listed, I'd add it to the poll~ 🥴

I just want to see what people care the most about to determine what to work on next!
News / FFH's Discord Server
March 31, 2020, 03:43:33 am

Now now, I know what you'll say: "There's nothing wrong with IRC!" And you'd be correct!

But IRC is for old people. So, for all the youngsters that refuse to get off my goddamn lawn, I decided to create a Discord server. I won't be necessarily very active myself on it myself, but I will receive and look at my @mentions and check from time to time. All of the admin team (Team XENA) will be available on IRC, and most of us should be on Discord too.

Why did it take so long?
It took this long for Discord to get its shit together when it comes to notifications. It looks like I can finally get @mentions on there for what really matters without having to mute everything
News / Welcome to Our New Server!
February 18, 2020, 04:57:52 am
Please post about any bugs you find!

Huge huge security updates (like bcrypt password hashing for the forum's passwords) and hopefully this server with the newest version of will behave better for emails that have been down for what, 2 years now?

  • Upgraded to PHP 7.4.2
  • Upgraded the forum to SMF 2.1 RC2
  • Upgraded the wiki to MediaWiki 1.34.0
  • Fixed the mail system (WARNING: you won't receive emails for Private Messages until you enable the setting -here-)
  • Removed the ban from Microsoft email accounts, but any emails will likely end up in your junk folder, please mark the emails as "This is not junk" (it looks like it was an IP ban, and being on a new server, new IP!)

  • Fixing the forum style

Known Bugs:
  • "Custom Sprites" and "Patches" sections on the main website don't work (cause: deprecated PHP functions)
  • Missing checkmark icon for solved topics
  • Missing logo on the wiki
  • Mail settings for the wiki
  • Broken spoiler tag
  • FTP subdomains are down

Deprecated/Gone Forever:
  • .bmp custom avatars do not display (but are still otherwise available on the server)
  • "Topic Solved" addon

Huge thanks to Kivutar for providing us a server for almost a decade! 🤟
Tutorials and Learning / How to market your mod
February 08, 2020, 04:16:34 am
In Progress

PS: Not sure if it's a little too late

I'm writing this, because as I've been building my business, I realized so few people invest any time in learning how to market, because it is such a broad subject. I will write what I believe are the most effective way to reach your target market.

Contrary to popular belief, listing all your changes is a terrible way to market your mod. Here is a list of its disadvantages:

  • It takes forever to read. You make people consider taking the time to read your post to consider playing your mod, proportionate to the number of changes you made.

  • It doesn't show the intent behind the changes, only the finicky details.

My recommendations:

Use Images
They're great to show the amounts of changes the mod includes. Do you have new maps? New sprites? New events? You could literally take a screenshot of 2 if not 3 of those changes in the same image.

Use Video
I'm sure most won't bother, because it is a lot of work, but the truth is, it does work! Playthroughs are -fine-, but I'd really recommend a short 15 seconds to 2 minute video showing the most dramatic changes of your mod. And remember to try to hook/captivate your audience in the first 15 (particularly the first 5) seconds of your video. Make them want to keep watching!

Use Keywords

Less is More
Length induces confusion, not clarity. Going for fancy words will reduce clarity, so stick to simple words that everyone understands without any ambiguity in your marketing.

Yes, I know you don't want to see it in this list. Yes, it's bothersome to spellcheck everything. But this also show the importance of 'Less is More'.

Start With a Short Description
Think of it as a tl;dr. You want people to know what they're investing their next 3-15 minutes in. Feel free to use keywords, but do not abuse them. Get the post across in as few words as possible. Be general. It's a balance between the number of words VS the impact, so make those words count. Ex:
A new threat from another world awaits Ramza and his new companions.
Enjoy playing with your favorite characters from other series:
Dante (Devil May Cry), Snake (Metal Gear Solid), Link (Legend of Zelda) and Cloud (Final Fantasy VII)
alongside Ramza 2 years in the future of Ivalice.

The name is important, but don't emphasize too much of it either
It's important to have a name that sounds appealing, but that also stays true to its content. Some mod names are very... vague. Put an emphasis clarity. You don't want to have someone not consider your mod because it is not what they thought was advertised. It's all on you if people misinterpret the name of your mod or its description.

In Conclusion
Everyone has different expectations when it comes to releasing their mod. The harsh truth is that if you can't sell it, maybe your mod isn't that good. It's not because you made a mod that you're entitled to everyone trying it out. There can be other reasons too, it's for you to judge if they're good excuses or not (spoilers: they rarely are). Note: I didn't say if it sells or not; some mods made it even with poor marketing, but that's relying on luck--I don't recommend it. If your mod is in fact good, if you had the energy to make it good, you will be able to make the efforts to learn+apply how to effectively and properly market your mod to your target audience, because they deserve it. This post is meant to inspire you to do so. Think "I want to make X type of person learn about my mod because they would LOVE it!" instead of "I want people to play my mod." Same sentiment, but one is selfless while the other is selfish, and they yield different results.
Event Editing / Event Branching Tutorial
May 10, 2017, 03:06:01 pm
Today we'll tackle branches and jumps, but we will not really use those names as while they correctly describe what the instructions do, we'll look at each individual instruction one by one.

All of these instructions have one single parameter, which is a ForwardTarget ID or a BackTarget ID.
Jumping Forward
Jumps to ForwardTarget if Variable 0x0000 is equal to 0. Otherwise simply keeps advancing.
Must be placed before ForwardTarget!
Jumps to ForwardTarget.
Must be placed before ForwardTarget!
Target Destination of JumpForwardIfNot/JumpForward.
Must be placed after JumpForwardIfNot/JumpForward!
Jumping Backward
Jumps back to BackTarget.
Must be placed after BackTarget!
Target Destination of JumpBack.
Must be placed before JumpBack!

Forward Targets and Back Targets are essentially the same thing, but they are limited to their current subset of event instructions. Thus ForwardTarget 0x00 and BackTarget 0x00 use different memory allocations and are separate. Only a Forward Instruction can use a Forward Target, and only a Back Instruction can use a Back Target

  • A ForwardTarget may only be placed after a Forward Instruction, and can be reused. This means that you may use ForwardTarget 0x00 as often as you want with simple instructions.

  • A BackTarget may only be placed before a Back Instruction and cannot be reused.

EQ() Equal
[indent=2]Variable 0x0000 = If ( Variable 0x0000 == Variable 0x0001 ) [/indent]
NEQ() Not Equal
[indent=2]Variable 0x0000 = If ( Variable 0x0000 != Variable 0x0001 ) [/indent]
LT() Less Than
[indent=2]Variable 0x0000 = If ( Variable 0x0000 < Variable 0x0001 ) [/indent]
GT() Greater Than
[indent=2]Variable 0x0000 = If ( Variable 0x0000 > Variable 0x0001 )[/indent]
LTE() Less Than or Equal
[indent=2]Variable 0x0000 = If ( Variable 0x0000 <= Variable 0x0001 )[/indent]
GTE() Greater Than or Equal
[indent=2]Variable 0x0000 = If ( Variable 0x0000 >= Variable 0x0001 ) [/indent]

Note that in each of these examples, I used Target 0xFF to make it easier to remember where the end of the conditions section is.
Player has at least 1 gold. (Aeris Flower Event)

//Set Variable 0x0000 to War Funds (Variable 0x002C)

//Set Comparison Value to 0x0001

//Greater Than or Equal Comparison

//What Happens if the player has at least 1 gil


//ELSE (i.e. What happens if the player has 0 gil)


//Resume the rest of the event

Dialogue Selection (3 options)

//Set Variable 0x0001 to the Selected Option in Dialog (0x0018)

//Set Variable 0x0000 to Option #1 (0x0000)

//Equal Comparison

//What happens if the first option was selected

//Set Variable x0000 to Option #2
//Note that 0x0000 will be 0x0000 anyway because of EQ() returning false, so we don't have to ZERO the variable

//Equal Comparison

//What happens if the second option was selected


//ELSE (i.e. What happens if the third option was selected)


//Resume the rest of the event

Page Selection (8 options)

//Set Variable 0x0001 to the Selected Option in Dialog (0x0018)

//Set Variable 0x0000 to Option #1 (0x0000)

//Equal Comparison

//What happens if the first option was selected

//Set Variable x0000 to Option #2
//Note that 0x0000 will be 0x0000 anyway because of EQ() returning false, so we don't have to ZERO the variable

//Equal Comparison

//What happens if the second option was selected

//Set Variable x0000 to Option #3

//Equal Comparison

//What happens if the third option was selected

//Set Variable x0000 to Option #4

//Equal Comparison

//What happens if the fourth option was selected

//Set Variable x0000 to Option #5
//Equal Comparison

//What happens if the fifth option was selected

//Set Variable x0000 to Option #6

//Equal Comparison

//What happens if the sixth option was selected

//Set Variable x0000 to Option #7

//Equal Comparison

//What happens if the seventh option was selected


//ELSE (i.e. What happens if the eighth option was selected)


//Resume the rest of the event

Loop a Yes/No option dialogue 5 times

//Set Variable 0x0002 to 5 (Loop Count)

//Reset Variables 0x0003 and 0x0004 as they will be used for our YES and NO counters

//Set Back Target

//Display a Yes/No Dialogue (fill it yourself)

//Set Variable 0x0001 to the Selected Option in Dialog (0x0018)

//Set Variable 0x0000 to Option #1 (0x0000)

//Equal Comparison


//Add +1 to the YES counter


//Add +1 to the NO counter


//Reduce Loop Counter by 1

//Set Variable 0x0000 to our Loop Counter

//Set Variable 0x0001 to 0 for comparison

//Greater Than (Zero) Comparison
//Jump Back if Loop Counter > 0; otherwise keep going



//Resume the rest of the event

PSX FFT Hacking / "Quadratic" Ability Formulas
April 20, 2017, 06:25:58 pm
I understand that most people here didn't take higher levels of math in high school, but it is really embarrassing to have seen this mistake become such a huge phenomenon.
I don't know who is the first person to have ever said that fist/truth/untruth/tiamat formulas were "quadratic" on GameFaqs, but because of this idiot, now just too many people use the word erroneously.

It doesn't take long to see how wrong it is to use the term quadratic in this case: https://en.wikipedia.org/wiki/Quadratic_formula
Just look at the charts; quadratic formulas increase, decrease and increase again or decrease, increase and decrease again. I've done this shit in high school.

FFT formulas are one way: they're exponential.

Just figure I'd toss that out there as someone who paid attention to "advanced" math classes in high school and graduated. :)
Hacking/Patching Tools / Special Snowflakes v1.02
January 22, 2017, 11:27:28 pm
[glow=cyan,4,600]  Special Snowflakes  [/glow]

Make any ENTD Unit have special properties, and set those properties to as many units as you want!

This spreadsheet uses my hack template spreadsheet, which you may have to make yourself familiar with before you can use it

List of Properties:
  • Red, Green and Blue colouration
  • Transparency ON/OFF/Default (Sunken State Transparency's visual effect)
  • Stretch (Display size of the sprite; ex: create huge chocobos and tiny goblins!)
  • HP, MP, SP, PA, MA and C-Ev. % (From 0% to 25500%, supports decimals)
  • +/- Move & Jump (-128 to +127)
  • Innate, Starting Statuses and Status Immunity
  • Innate Reaction/Support/Movement Abilities
  • Enable Absorb/Cancel/Half/Weak/Strengthen Elemental Properties
  • Disable Absorb/Cancel/Half/Weak Elemental Properties (ex: make a goblin lose its weakness to ice)

You can randomize between different sets of Snowflakes allowing you to generate a unit that, for example, will be either Swift (+10% speed, initial Haste), Brutal (+20% HP, +15% PA, -10% MA), Wise (+10% MP, +15% MA, -10% PA) or Polyvalent (+5% Speed, +5%PA, +5%MA).

[indent=2]All properties are applied BEFORE items and abilities, and thus, -127 Move on a unit with 7 Move (3 from its job, 1 from Germinas Boots, 3 from Move+3)  will drop that unit's Movement to 4; i.e. it only affects the job's stats.[/indent]
Hacking/Patching Tools / FFT Hack Template Spreadsheet
December 31, 2016, 10:16:12 pm
FFT Hack Template Spreadsheet

Download the latest version (0.07b) - BLANK
Download the latest version (0.06b) - Xifanie's Hacks
Download "FFT File List.txt"
Download the latest update files
  • Download the latest update files
  • In VBA (Alt+F11), remove all the forms from your spreadsheet and remove the "SharedXifiSheets" module
  • Either manually import each form (.frm) and the "SharedXifiSheets" module (.bas), or drag and drop them in Excel
  • Save
Note: Do not delete your "Self" module!
Note2: You cannot import .frx files. They contain the form's code and will be automatically imported alongside their .frm counterpart.

What is it?
[indent=2]It's an Excel spreadsheet LOADED with new functions to help you to create and test your ASM hacks in the most user-friendly environment I could think of. You can also easily import your old hacks and it will be nicely reformatted for you, allowing a smooth transition to this tool.
It will forever change the way you make ASM Hacks![/indent]

  • Windows OS
  • Microsoft Excel 2007+ (non-negotiable, forget about alternatives)
  • *pSX 1.13 (to use the "Save to Savestate" function)
  • *FFTText Editor spreadsheet (to use the Load "FFTText function")
  • *ISO Manager (to create your own "FFT File List.txt")

An ASM coding friendly environment

With an XML import/export function that aims to retain as much information as it can

A TON of functions to help you out!

Save directly to your ISO, to your Savestate (only if the appropriate files are loaded), or even to XML with 3 different output options

A function that find console-breaking errors for you!

A function that allows you to import code from your ISO, your savestate, or even from the wiki!

A function to import data from your ISO or from a savestate, in the format that you want!

A function that lets you see where the free space is, and which hacks are conflicting!
(Restricted to the hacks currently present in the spreadsheet)

And much, much more!

Getting Started
  • Get yourself familiarized with each sheet's functions
  • Open up the "Add-Ins" toolbar/ribbon
  • Click the Configuration icon and configure away!
  • Import an existing XML and look at branches/jump's formulas; use the same format for your own hacks. The colours are optional.
  • Try out essential functions such as "Insert Line(s)"
  • ASM Away!
  • Use the "Analyze Code" function to detect and fix console-breaking errors
  • Test your ASMs faster with "Save to ISO" and "Save to Savestate"
  • Finally, release as XML (Save to .xml) and share for everyone to use your hack

Known Bugs
  • Excel 2010 might crap out an annoying, but not spreadsheet breaking, 32bit ShellExecute function error (possibly only on W10)
  • Unable to properly parse XMLs containing ASM and not opcodes stored as Hex (Glain.xml)
  • Might get a run time error whenever the last MEMLOCATION uses hex instead of an op code when attempting to save


1.06b- Fixed Save to Savestate, re-introduced Concatenate Cells function
1.05b- Fixed a few bugs, improved functions, introduced LEAddress() function
1.04b- Fixed a bug where replace variables would not work when saving
1.03b- Fixed a bug where you could only import hacks if they had both Location and Variable fields
1.02b- Initial Release
Hacking/Patching Tools / Location Names Spreadsheet
December 29, 2016, 04:29:18 pm
Just something I'm tossing out there that I made in an hour or so...

This spreadsheet allows you to alter the width/height of location name graphics among other things.
Useful if you are translating the game or just making your own total conversion mod.

Note: This spreadsheet is using an experimental spreadsheet template, and there might be bugs. However, from what I know, all the buggy features would not be accessible anyway in this case, but there might be bugs happening if you don't properly configure your settings. So, before you try saving to xml/savestate/ISO, make sure you press "Configure"!
PS: All the functions are located under the Add-Ins tab/ribbon.

Tutorials and Learning / ASM Hacking Myths
November 22, 2016, 02:32:58 pm
ASM hacking is hard
[indent=2]It usually is. It is exceptionally rare that it will be easy, but with our existing documentation, it can make things a lot easier (especially for ability formulas).

For some people, ASM Hacking is more than hard... it's trying to reach the moon.[/indent]

ASM hacking is like programming
[indent=2]It depends on what you're trying to accomplish, but generally speaking, no. Many hacks only change one or two bytes. That is literally a quarter/half or one instruction. That's not coding; it's altering existing compiled code. Most of the time, you will be figuring out which register is used for what, how you can access different values, and which routines holds the preferable code to alter for your needs.

Most hacks, especially simple ones, tend to be 0.5-5% coding. Bigger ones, like my Ability Requirement Hack v2, Soldier Office Upgrade, Synth Shop and so on, are about 60% coding.[/indent]

I can understand how a video game works by asking others about it
[indent=2]To some extent, you can. In terms of ASM hacking, you need the logic to be able to figure this shit out yourself. If you can't, you will struggle immensely and waste everyone's valuable time trying to teach you something that cannot be taught.

Do you think I'm being harsh? The reality is that ASM hacking involves a lot of debugging. Let's put it this way:

  • Understanding how video games work is like trying to get out of a rainforest having a GPS on hand. It's still going to suck, but you have some hope.

  • Not understanding how video games work is like trying to get out of a rainforest with a map drawn by a child. You'll wish you were dead.

But I know I can figure this out!
[indent=2]You would need more than just your average level of motivation.
You would need unbreakable dedication.
You will pull all your hairs out in the process.

And even then, I can't guarantee you'll make it.[/indent]

If I don't make my hacks, who will?
[indent=2]Likely no one. I know this is a tough one, because ASM Hacking is excessively draining and not many people can do it.
However, just because you have little hope of accomplishing anything yourself in terms of ASM Hacking...
It does not give you the right you complain about your lack of ASM Hacks.
It does not give you the right to assume that someone is going to ASM for you when all you do are FFTPatcher and FFTTactext edits. (Seriously, ASM Hackers are very rare; even if you event, the chances are slim)
It does not give you the right to complain about WotL's lack of ASM hacks.

Be thankful for the hacks that already exist.
Be thankful for future hacks (or in the making).[/indent]

Final Thoughts
I personally favour making hacks that benefits a lot of people; not just a single project. That is why me and others do not take requests. No one wants to make a hack for some random guy who has no idea what he's doing with questionable motivation, while only he could have a use for that hack.
Event Editing / Notepad++ Event Syntax Highlighting
November 20, 2016, 07:53:28 pm

How to add it:

  • Download the attached file

  • In Notepad++, Select Language/Define your language...

  • Then click the Import button near the top left and choose FFT_Events_UDL.xml

How to use it:

  • Select Language then FFT Events at the very bottom

How to make it auto-load with defined file types:

  • In Language/Define your language... there is an Ext. box. You can just type the extension there. I already added evt, so ideally you should name your event files *.evt

  • You could always set it to .txt, but I don't recommend it unless you plan to use notepad++ exclusively for FFT events

Warning: If you only ever use event.txt and want to use event.evt instead, you'll have to edit your event compiler's CONFIG.INI accordingly.