• Welcome to Final Fantasy Hacktics. Please login or sign up.
March 28, 2020, 04:09:09 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 - Xifanie

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.01
January 22, 2017, 11:27:28 pm

   Special Snowflakes   

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.06b) - 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.

This topic will be updated when I can think of something to add

War of the Lions Inherent Limitations:

  • All the new items cannot be made available outside of Multiplayer in any fashion. (Balthier's equipment was hardcoded, you will not be able to reproduce it)

  • The ability/spell quotes cannot be re-enabled

  • Even with the slowdown fix, the abilities' audio is distorted

  • Inability to remove the Onion Knight/Dark Knight special requirements (jobs mastered & kill count)

PSX   WotL   Hacking Feature
:v/:xAcceptable amounts of community support
:v/::v/:Can edit job/ability/item flags
:v/::v/:Can edit skillsets/poaching/move-find items/propositions
:v/::v/:Can edit the game's text
:v/:xHas tool(s) to make editing text a lot easier
:v/::v/:Can edit existing cutscenes (events)
:v/:xCan write a new story (Missing tools for WotL)
:v/::v/:Can change Spritesheets and their SHP/SEQ
:v/:xCan import new Spritesheets larger than the original's size (The bottom portion of spritesheets is always compressed... This is a big deal.)
:v/::v/:Can import new formation sprites
:v/:xCan re-link formation sprites to other slots (Missing tools for WotL)
:v/::v/:Can edit existing maps
:v/:xCan increase the filesizes of maps
:v/::v/:Can edit ability animations (Effects)
:v/:xCan create, move and resize files around the ISO
:v/:xCan use PSX compatible ASM hacks (99.9% of ASM hacks; i.e. all the cool features)
:v/:xASM code documentation (extensive, even)
:v/:xASM: New/Altered ability formulas
:v/:xASM: Soldier Office Upgrade
:v/:xASM: Make Charge, Elemental, Jump skillsets act as regular skillsets
:v/:xASM: Synthesis Shop
:v/:xASM: Different requirements than "sword is equipped"
:v/:xASM: Only get randoms when you desire them

Recruitment / So you want to be a bugtester/betatester
October 20, 2016, 08:04:19 pm
What is a casual bugtester/betatester?
[indent=2]One in, usually, hundreds or thousands of people testing the game/software.
The sheer volume of testers allows to easily spot bugs even if testers really suck at their job: i.e. finding bugs and reporting them so that they can be fixed.
As a reward, people tend to get reduced subscription costs or even get the game/software for free.
Usually, they don't give two fucks about reporting bugs, and just want the early access, and well, the reward is always welcome.[/indent]

What is a professional bugtester/betatester?
[indent=2]Someone who goes through a game or uses a software actively attempting to break it.
They, at the very least, have a basic understanding on how video game works. This is very important to know what to try to break. Trying to think about something the programmers missed.
They have to write very detailed reports on how the bug was achieved, if it could be reproduced and so on.
They are paid in money for their work (yes, it is work, pretty boring usually), and will likely keep the material they were testing.[/indent]

Where do we stand?
[indent=2]Fixing bugs on the way, here and then, reported by people who feel like reporting them is far from an ideal solution, but it's all anyone on FFH ever had access to, because quite frankly, having one person being a casual bugtester and not reporting anything is really of no help. So far, as far as I am concerned, we've had less than a handful people apply for a position of bugtester for JotF (I doubt any other mod ever had that "luxury"), and 100% of them never reported back.
From our perspective, they're just a bunch of people who abused our trust and only wanted to play the mod before everyone else. We don't need them.
We can't afford to have a thousand betatesters; we might as well not even try to fix the damn game before releasing it and call a public release a "betatest". We just want our mods to be as bug-free as possible when first released. Modding consumes a lot of time and most people can't commit themselves to that. Like I said, we've never had a proper bugtester here on FFH, and having one would be so very welcomed! But if you're not... please don't waste our time and abuse our trust.

Thank you.
Hacking/Patching Tools / ISO Manager v1.00b
September 27, 2016, 12:33:22 pm
ISO Manager

What is it?
[indent=2]It allows you to create a completely new File Index for PSX CD Images (not just FFT), Import/Export files, and automatically associate Files and their Sectors + Filesizes to data locations inside the game.[/indent]

[indent=2]Microsoft Excel 2007+[/indent]

Download the latest ISO Manager
as with all programs in beta, your files might unexpectedly get corrupted; so make sure to backup first


Edit various property values of your ISO

Easily manage your file index; remove files and directories or create up to a million!

Having a hard time finding free space for your new files? Just check the Space Management sheet

Manage vital information for FFT! Easily add your own maps, SP2 files for any sprites or even Effect files

Automatically update your GNS files with the proper links to their texture/polygon files!
(Less trouble for our dear mapmakers)

And of course, a nice ASM table for our ASMers!

News / FFT Version field added
September 16, 2016, 11:35:11 am
We often assumed that if you were not mentioning that you were planning to mod WotL, that you wanted to mod the PSX version. Unfortunately, nearly every user would just assume that we magically knew they wanted to mod WotL, and it led to huge wastes of time, frustrations and so on. We don't exactly want to reply to 90% of topics by asking which version they want to mod either.

So, I decided to add a field on your profile; just follow this link and you will see it at the very bottom: http://ffhacktics.com/smf/index.php?action=profile;area=forumprofile
You only need to change it if you are using the WotL version (every existing account has been defaulted to the PSX version). This will allow us to know which version of the game you want to edit without having to nag you about it. Unfortunately, this likely won't work with old users because too many will not bother to edit that field even if they do use WotL. Thankfully, we more or less know who's using which version over time.

As for new users, they will be forced to choose one or the other, but it would still be nice to mention it in your help posts, because I still haven't figured out how to make the option appear in forum posts.

If you want to see which version someone else is using, you can do so by viewing their profile -- it will be displayed at the bottom, above their signature.
I'd like to see what everyone thinks about which games have the strongest emotional moments... scenes that you can't help but cry every damn time.
Quite a few games have pretty emotional moments, but for a few reasons I somehow can't get myself emotionally involved; I don't understand why I block that way, it's like I can't take the game seriously or something.

My list of most emotional video games moments

[indent=2]Legend of Mana
Jumi arc; more specifically the end

Valkyrie Profile
Best ending, and a fair amount of sidequests on their own

Leene's death, and Justin's deep depression afterwards... also parting with Sue

Unfortunately, these are the only ones I can think of right now... but those first two are always the ones I go back to if I need a powerful emotional release.

My list of worst ruined moments

[indent=2]Final Fantasy IV
Rydia is heavily traumatized by her village's destruction, seeing it go up in flames. 5 minutes later, this basically happens:
- There's a block of ice blocking our path, Rydia, how about you use some fire?
- I'm kinda traumatized you know.
- np just do it
- Ok.

Thursdays is dying for 5 minutes; they're trying to make the scene very emotional and then bam, Thursday doesn't die. It just left me with a very bitter taste in the mouth.


Use any format you want, but do use spoilers.
Hacking/Patching Tools / FFTPatcher Helper
May 09, 2016, 06:26:22 pm
What does this do?
It rips data from your FFT Image... then will give you loads of useful information:

  • Which Effects are tied to which Ability, and a list of those that aren't

  • Where Abilities are used (Skillset, Job Innate R/S/M, Weapon strike, Ability cast) and a list of the unused ones

  • Where Inflict Statuses are used (Abilities, Weapon strikes), and a list of those which aren't used on top of pointing out every duplicate entry

  • Which Item Attributes are tied to which Item, and a list of those which aren't used on top of pointing out every duplicate entry

You need my FFTText Editor to be able to import text into this spreadsheet.

How to use

  • Click Load FFTText, then select your "FFTText Editor.xlsm"

  • Patch your .fftpatch to your FFT Image

  • Click import and select said FFT Image

Why this tutorial?
[indent=2]To show people how change the graphics and palettes of Effect files (ability graphic animations)[/indent]


For every user:

  • An image editing program such as GraphicsGale or Photoshop (or even MSPaint if you are that masochist)

  • CDMage or cdprog

  • HxD (or any Hex Editor of your choice)

For 32bit Windows users:

For 64bit Windows users:


This tutorial assumes your main drive is C:\, feel free to adapt the information to your needs

  • Install DOSBox

  • Extract the contents of Win31.7z to C:\ (You should be able to browse to C:\Win31\WINDOWS\TIM Utility\)

  • Run DOSBox

  • Enter Mount C C:\Win31

  • Enter C:\WINDOWS\win (at this point Windows 3.1 should be booting)

  • TIM Utility should run on startup; use it as described later in the tutorial (Files can be imported from/exported to C:\Win31\WINDOWS\TIM Utility\.)

[indent=2]With this method, the file index is only refreshed once Windows 3.1 is rebooted. Because of how the program handles file names, try to keep your file names very short if you don't want to deal with the infamous "SomeFileName.bmp" becoming "SomeF~1.bmp". You will likely have to manually type the file names most of the time unless you reboot, because the file browser will not display them (but the files will still be loaded properly).[/indent]



Getting started
[indent=2]Visit http://ffhacktics.com/wiki/Effects. This page contains very important information used through this tutorial. Also, make sure you grab the .BMP version of the Effect file you want to edit.[/indent]

Editing the file
[indent=2]Just change the colors and graphics as you want... unless you know what you're doing, do not change the dimensions, and if the wiki page states that the Effect file is "4bpp Multi-CLUT", do not use any color other than the first 16. Feel free to edit the colors; but don't use them in the graphical area.

For the sake of this tutorial, we will be using this "Bloody Sword" edit I made:


Reducing colors while maximizing quality (optional)
[indent=2]* This is a lot more for 8bpp effect files than 4bpp; since you only have 16 colors per palette, chances are, using this method won't change a damn thing, in fact, it could become a hindrance

What it comes down to, is the TIM files that will be generated for 8bpp effects are in fact 15bpp + 1 byte for the transparency channel, but indexed. 15bpp means 5 bits per color. So instead of the usual 0 to 255 Red, you'll have 0 to 31 Red. Or, if you prefer, 0-8-16-24-32-and so on... i.e. in increments of ~8. Unfortunately, the best way, by far, to achieve this, is using Photoshop. So, if you don't have Photoshop, sorry because I don't know how any other way to do this.

Assuming you were working with a .psd (and you should), save your file as a BMP, but select 16bit (which is really the 15bpp I mentioned earlier).

Next, open that BMP in Photoshop. Then, we want to reduce it to 8bpp, so head over to "Image"/"Mode"/"Indexed Color"

Make sure "Preserve Exact Colors" is checked! Otherwise, new colors will be generated, and there WILL be conflict, making similar colors becoming the same when creating a TIM out of it, and you WILL lose quality. Otherwise, just adjust the Dither and its % as you wish.

Just save as a 8 bit BMP and you're good to go!

Creating a 4bpp BMP (optional)
[indent=2]* This section is only necessary for Effect files that have a "4bpp Multi-CLUT" color depth, and only if the Graphic was altered.

First load up your 8bpp BMP in Photoshop, then just access its color table.

Next you will want to select all the colors from the start of the second row to the end of the last row.

A color selection dialog will appear; the color needs to be RGB 0,0,0 (pure black), then press OK. The color dialog will appear again, just press OK again.

Now you can save you file (under a new name ideally). When prompted, select "4 Bit" under "Depth", then press OK.

First load up your 8bpp BMP into GraphicsGale. Or if you were already working on it, save your file.

Next you will want to change its Color Depth.

Make sure 4bpp is selected, then press OK.

You will notice that the order of the palette is all wrong; this can cause some major problems, so we need to fix this. Click the arrow pointing downwards under the palette colors, and select "Load Palette..."

Choose "File"/"Import From File"...
When prompted, select the file you are currently using. This is why saving the file beforehand is important.

Make sure that "Match Pixels with Colors" is checked. To make things easier, instead of using drag & drop with the colors, just press the "All" button. Then press "OK".

Your palette should now look identical to the first row of the 8bpp file. Now you can save (under a new name ideally).


Creating a TIM file
[indent=2]WARNING: If your Effect file's color depth is "4bpp Multi-CLUT", and you want to import a new graphic, you will need to create a 4bpp TIM file. However, if you edited the colors beyond the first 16 (i.e. the other palettes) and want to import those changes, you will need to create a 8bpp TIM file. Obviously if you want both new palettes and new graphics, you will need to create the two; a 4bpp and a 8bpp TIM.

Simply use TIM Utility with the right settings as displayed below. You can preview your file using the "Preview..." button; if it doesn't display properly, something's wrong. If everything looks good, close the Preview window and click "Convert...".
4bpp: For 4bpp files (Graphic)
8bpp: For 8bpp files and 4bpp files (Palette)[/indent]
Translucent except black
Transparent for black
Write Type: TIM


Importing the new Palette (optional)
* If your Effect file's color depth is "4bpp Multi-CLUT", use the 8bpp TIM file that you created for these steps. If you only edited the first 16 colors, you can instead use the 4bpp TIM file with the range 0x 14 to 0x 33.

  • Open your TIM file and the E???.BIN file in HxD

  • In the TIM file, select 0x 14 to 0x 213 (Use "Select Block..." [ctrl+e] to help)

  • Copy (ctrl+c)

  • In the BIN file, Goto (ctrl+g) to the "Palette Offset" specific on the wiki page for that Effect

  • Paste Write (ctrl+b)


Importing the new Graphic (optional)
* If your Effect file's color depth is "4bpp Multi-CLUT", use the 4bpp TIM file that you created for these steps

  • Open your TIM file and the E???.BIN file in HxD

    • 8bpp: In the TIM file, select from 0x 220 all the way to the end of the file (Use "Select Block..." [ctrl+e] to help)

    • 4bpp: In the TIM file, select from 0x 40 all the way to the end of the file (Use "Select Block..." [ctrl+e] to help)

  • Copy (ctrl+c)

  • In the BIN file, Goto (ctrl+g) to the "Graphic Offset" specific on the wiki page for that Effect

  • Paste Write (ctrl+b)


Finishing steps

  • Save your edited BIN file

  • Import it using CDMage/cdprog

  • You is done!



Advanced hacking notes
Let's say your file changed filesize... Normally you'd use the wiki, where I was nice enough to compile a list of all the offsets for you guys, but here is how it is actually calculated:


  • Graphic Start: File Size - ( Image Width × Image Height ÷ 2 )

  • Palette Start: Graphic Start - 0x204


  • Graphic Start: File Size - ( Image Width × Image Height )

  • Palette Start: Graphic Start - 0x404

PSX FFT Hacking / Steam Job Wheel Discussion
February 17, 2016, 10:31:10 am

You might have heard that I'm making a job wheel hack, allowing to replace any generic job with a special job under given conditions, and even forbid them.
The hack currently allows making Bard/Dancer not gender restricted anymore if you wish, and auto-masters any job that replaces Mime (because there is not RAM allocation for the learnt abilities flags).

I'm also considering adding the option to have more auto-mastered jobs past Mime. Of course, they would have no requirement, which is a downside (it would be possible, but I'd rather not use a lot of precious SCUS space). I'm reluctant to add this because of all the trouble involved, and its usability into regular mods.

I also wish to add the ability for monsters to change job, but I want to hear people's opinions about this. My wife and I thought about it; it could be job level based, yes, but also plain regular level based... for example: Chocobo (lvl 1), Black Chocobo (lvl 25), Red Chocobo (lvl 60). It might not be possible to please everyone, but I want to find a good middle ground. So everyone's opinion would be welcome.
FFTText Editor v1.01
NOTE: WotL is not properly supported yet with the current version

Easily locate text, in this convenient, neatly ordered editor!

See live what your text looks like in game, along with line lengths! (minus font colours)

Lots of settings!

What is this?
[indent=2]This tool allows to conveniently edit a .ffttext file generated by FFTacText, then generate a new one to load in FFTacText and easily + quickly generate/update your resources.zip. It is used by many of my tools to directly fetch text data for my hacks so that you know what is what without typing everything yourself.[/indent]


  • Microsoft Windows

  • Excel 2007 or higher (with macros enabled)


  • Extract Altima_8.ttf from FFT_Font.zip to C:\Windows\Fonts

  • Open FFTText Editor.xlsm

  • Check out the tutorial in the next post

War of the Lions Hacking / Duplication trick fix
October 29, 2015, 03:51:29 pm
I still don't know after all these years, because apparently no one can be bothered to test...

Which version of the duplicate bug was fixed? Or was it both?

Version 1: Requires Dual Wield, only works on dual-wieldable items (fewer than those even). You have to pay to acquire the item. Only 1 time per unit per Fitting Room entry.

Version 2: Requires nothing. Works on any weapon or shield. The item is automatically added to your inventory's stock. Only 1 time per unit per Fitting Room entry.

Instead of trying to explain the methods myself, I'll just link a video which covers both:

Tutorials and Learning / Slow ppf-o-matic? Read this!
September 27, 2015, 01:42:35 pm
It is taking you hours to patch a ppf file?

I've decided to investigate and finally once and for all get rid of this issue.
It turns that ppf-o-matic just hates fragmented ISOs. But don't worry: there's a very simple to fix. You just need the right program. It's called "Defraggler" and it allows to completely defragment individual files.

1. Download, Install and Open Defraggler

2. Open your FFT Image

Now just wait for it to complete...

3. Patch away!
[indent=2]The process should be way faster now. Enjoy![/indent]

Recruitment / Yes! We'd love your help, but...
August 09, 2015, 06:43:45 am
I'm making this topic not because we have too many talented people available, but rather, the lack of dedicated and talented people applying.

As project leaders, we know we can do shit.
So when someone is proposing to help, which means a potential of countless hours of work lifted from our shoulders, it sounds awesome! Thank you! Except... the vast majority of people require us to babysit them only to see them quit after a few days. This happens very often and it is incredibly tiring.

I understand that some people have very valuable information that not many are knowledgeable about, but there are tutorials for almost anything. Please look up tutorials and get your hands dirty before saying you'll do anything for us! (spriting, eventing, ASM Hacks, etc.)
Unless you played with those things beforehand, you have no idea what you're in for.

So please, if you're only going to make us waste our time, just cut it short, try those tutorials and see for yourself how much work modding really is.
And if you do get past those tutorials and are still willing to help? Good! This proves you have dedication, and you are exactly the type of person we are looking for.
Our time is precious, we have busy lives, and modding is a heavy commitment. Consider the possibility that while trying to help us, you might slow us down. Show us that you're not all talk! Please!

Yes! We'd love your help, but...

→ → → Tutorial Link Index ← ← ←
Ability Requirement Hack 2
The infamous ARH comes back, better than ever!
Upgraded from v1.1

Requires Excel 2007+

Code it yourself!

[indent=2]ARH2 removed all tables and you are pretty much forced to ASM in the requirements that you want. It is, however, as friendly as possible for coding that I could think/manage inside of Excel's limitations. Why did I do this? People kept requesting different things for the ARH, and ultimately, bending to everyone's needs would have created needlessly huge data tables, consuming absurd amounts of space when most people hardly use any of the ARH's capabilities. Now with all that junk gone, the ARH was trimmed down from the equivalent of 831 Kanji space lines, down to ~350 Kanji lines + 22 SCUS lines, including major upgrades.[/indent]

A Bonus Abilities skillset

[indent=2]Its main new feature is a skillset innate to every unit in the game, the "Bonus" skillset, which can contain ANY regular action ability in the game (i.e. not chemist/draw out/charge type abilities). All you have to do is configure the requirements for those abilities.[/indent]

Available AI abilities recalculated on new turns

[indent=2]Before, the only way these could be recalculated was if the unit used equip change or had a piece of equipment stolen/broken. Now, at the start of every turn, and during them, abilities recalculate their conditions, so that requirements of status based nature and the like aren't Player only abilities anymore.[/indent]

Vanilla requirements are already coded in!

[indent=2]This probably isn't a consolation to many people, but Swordskills and Limit Breaks have their requirements already set up like they were in vanilla. If anything, at least it shows you how to code it yourself.[/indent]

Some custom routines just for you~

[indent=2]Just use some very convenient routines that I made myself to very quickly determine if an ability will be enabled or not. I figured other routines were pointless due to how few lines they would actually require without much complexity involved.

  • Count # of Skillset ID Equipped

  • Count # of R/S/M ID Equipped or Innate

  • Count # of Item ID Equipped

  • Get First Weapon's Type

  • Get Weapon(s)'s Elemental Attack

  • Get Item Types


A convenient spreadsheet

[indent=2]Of course, it isn't perfect, but you have options to save directly to your pSX quicksave to see the results of your coding LIVE, immediately.
You can also copy the xml's contents with a single click, on top of functionality like bookmarks to save your positions in code.[/indent]

Many thanks to Chotokukyan!
Without his extensive notes on the wiki, who knows how many more frustrations I would've faced...
or if I would have even finished this hack!

Currently unavailable for download as important fixes are pending
PSX FFT Hacking / Free SCUS space?
July 29, 2015, 10:06:01 am
Ok, so basically I trimmed a routine from 1120 lines to 677... which took hours. Then I was curious to see which routine would call upon this one because I could never breakpoint the damn routine. Turns out only one routine does... and that one doesn't seem to have a reference.

The routine in question is at 0x8002705C.

I could not find 5c700280 (0x8002705C) in the entire ISO.
I could not find 179C000C (jal 0x8002705C) as a properly aligned word in the entire ISO.

Am I missing something? We're talking about a LOT of potential free space.

0002705c: 27bdffe8 addiu r29,r29,0xffe8
00027060: afb00010 sw r16,0x0010(r29)
00027064: 00808021 addu r16,r4,r0
00027068: 3c048003 lui r4,0x8003
0002706c: 8c847000 lw r4,0x7000(r4)
00027070: afbf0014 sw r31,0x0014(r29)
[hblock=yellow]00027074: 0c009d70 jal 0x000275c0[/hblock]
00027078: 02002821 addu r5,r16,r0
0002707c: 00403021 addu r6,r2,r0
00027080: 04c0009c bltz r6,0x000272f4
00027084: 00001021 addu r2,r0,r0
00027088: 3c058003 lui r5,0x8003
0002708c: 8ca56ff8 lw r5,0x6ff8(r5)
00027090: 96020070 lhu r2,0x0070(r16)
00027094: 3c048003 lui r4,0x8003
00027098: 8c846ffc lw r4,0x6ffc(r4)
0002709c: 000210c0 sll r2,r2,0x03
000270a0: 00441021 addu r2,r2,r4
000270a4: ae050060 sw r5,0x0060(r16)
000270a8: ae040064 sw r4,0x0064(r16)
000270ac: 94430000 lhu r3,0x0000(r2)
000270b0: 96020070 lhu r2,0x0070(r16)
000270b4: 00000000 nop
000270b8: 000210c0 sll r2,r2,0x03
000270bc: 00441021 addu r2,r2,r4
000270c0: a6030040 sh r3,0x0040(r16)
000270c4: 94430002 lhu r3,0x0002(r2)
000270c8: 96020070 lhu r2,0x0070(r16)
000270cc: 00000000 nop
000270d0: 000210c0 sll r2,r2,0x03
000270d4: 00441021 addu r2,r2,r4
000270d8: a6030042 sh r3,0x0042(r16)
000270dc: 94430004 lhu r3,0x0004(r2)
000270e0: 96020072 lhu r2,0x0072(r16)
000270e4: 00000000 nop
000270e8: 000210c0 sll r2,r2,0x03
000270ec: 00441021 addu r2,r2,r4
000270f0: a6030044 sh r3,0x0044(r16)
000270f4: 94430000 lhu r3,0x0000(r2)
000270f8: 96020072 lhu r2,0x0072(r16)
000270fc: 00000000 nop
00027100: 000210c0 sll r2,r2,0x03
00027104: 00441021 addu r2,r2,r4
00027108: a6030048 sh r3,0x0048(r16)
0002710c: 94430002 lhu r3,0x0002(r2)
00027110: 96020072 lhu r2,0x0072(r16)
00027114: 00000000 nop
00027118: 000210c0 sll r2,r2,0x03
0002711c: 00441021 addu r2,r2,r4
00027120: a603004a sh r3,0x004a(r16)
00027124: 94430004 lhu r3,0x0004(r2)
00027128: 96020074 lhu r2,0x0074(r16)
0002712c: 00000000 nop
00027130: 000210c0 sll r2,r2,0x03
00027134: 00441021 addu r2,r2,r4
00027138: a603004c sh r3,0x004c(r16)
0002713c: 94430000 lhu r3,0x0000(r2)
00027140: 96020074 lhu r2,0x0074(r16)
00027144: 00000000 nop
00027148: 000210c0 sll r2,r2,0x03
0002714c: 00441021 addu r2,r2,r4
00027150: a6030050 sh r3,0x0050(r16)
00027154: 94430002 lhu r3,0x0002(r2)
00027158: 96020074 lhu r2,0x0074(r16)
0002715c: 00000000 nop
00027160: 000210c0 sll r2,r2,0x03
00027164: 00441021 addu r2,r2,r4
00027168: a6030052 sh r3,0x0052(r16)
0002716c: 96030076 lhu r3,0x0076(r16)
00027170: 94420004 lhu r2,0x0004(r2)
00027174: 000318c0 sll r3,r3,0x03
00027178: 00641821 addu r3,r3,r4
0002717c: a6020054 sh r2,0x0054(r16)
00027180: 3c028003 lui r2,0x8003
00027184: 8c427000 lw r2,0x7000(r2)
00027188: 94630000 lhu r3,0x0000(r3)
0002718c: 00c21021 addu r2,r6,r2
00027190: 3c018003 lui r1,0x8003
00027194: ac227000 sw r2,0x7000(r1)
00027198: a6030058 sh r3,0x0058(r16)
0002719c: 96020076 lhu r2,0x0076(r16)
000271a0: 00000000 nop
000271a4: 000210c0 sll r2,r2,0x03
000271a8: 00441021 addu r2,r2,r4
000271ac: 94430002 lhu r3,0x0002(r2)
000271b0: 96020076 lhu r2,0x0076(r16)
000271b4: 00000000 nop
000271b8: 000210c0 sll r2,r2,0x03
000271bc: 00441021 addu r2,r2,r4
000271c0: a603005a sh r3,0x005a(r16)
000271c4: 94430004 lhu r3,0x0004(r2)
000271c8: 96020068 lhu r2,0x0068(r16)
000271cc: 00000000 nop
000271d0: 000210c0 sll r2,r2,0x03
000271d4: 00451021 addu r2,r2,r5
000271d8: a603005c sh r3,0x005c(r16)
000271dc: 94430000 lhu r3,0x0000(r2)
000271e0: 96020068 lhu r2,0x0068(r16)
000271e4: 00000000 nop
000271e8: 000210c0 sll r2,r2,0x03
000271ec: 00451021 addu r2,r2,r5
000271f0: a6030020 sh r3,0x0020(r16)
000271f4: 94430002 lhu r3,0x0002(r2)
000271f8: 96020068 lhu r2,0x0068(r16)
000271fc: 00000000 nop
00027200: 000210c0 sll r2,r2,0x03
00027204: 00451021 addu r2,r2,r5
00027208: a6030022 sh r3,0x0022(r16)
0002720c: 94430004 lhu r3,0x0004(r2)
00027210: 9602006a lhu r2,0x006a(r16)
00027214: 00000000 nop
00027218: 000210c0 sll r2,r2,0x03
0002721c: 00451021 addu r2,r2,r5
00027220: a6030024 sh r3,0x0024(r16)
00027224: 94430000 lhu r3,0x0000(r2)
00027228: 9602006a lhu r2,0x006a(r16)
0002722c: 00000000 nop
00027230: 000210c0 sll r2,r2,0x03
00027234: 00451021 addu r2,r2,r5
00027238: a6030028 sh r3,0x0028(r16)
0002723c: 94430002 lhu r3,0x0002(r2)
00027240: 9602006a lhu r2,0x006a(r16)
00027244: 00000000 nop
00027248: 000210c0 sll r2,r2,0x03
0002724c: 00451021 addu r2,r2,r5
00027250: a603002a sh r3,0x002a(r16)
00027254: 94430004 lhu r3,0x0004(r2)
00027258: 9602006c lhu r2,0x006c(r16)
0002725c: 00000000 nop
00027260: 000210c0 sll r2,r2,0x03
00027264: 00451021 addu r2,r2,r5
00027268: a603002c sh r3,0x002c(r16)
0002726c: 94430000 lhu r3,0x0000(r2)
00027270: 9602006c lhu r2,0x006c(r16)
00027274: 00000000 nop
00027278: 000210c0 sll r2,r2,0x03
0002727c: 00451021 addu r2,r2,r5
00027280: a6030030 sh r3,0x0030(r16)
00027284: 94430002 lhu r3,0x0002(r2)
00027288: 9602006c lhu r2,0x006c(r16)
0002728c: 00000000 nop
00027290: 000210c0 sll r2,r2,0x03
00027294: 00451021 addu r2,r2,r5
00027298: a6030032 sh r3,0x0032(r16)
0002729c: 94430004 lhu r3,0x0004(r2)
000272a0: 9602006e lhu r2,0x006e(r16)
000272a4: 00000000 nop
000272a8: 000210c0 sll r2,r2,0x03
000272ac: 00451021 addu r2,r2,r5
000272b0: a6030034 sh r3,0x0034(r16)
000272b4: 94420000 lhu r2,0x0000(r2)
000272b8: 00000000 nop
000272bc: a6020038 sh r2,0x0038(r16)
000272c0: 9602006e lhu r2,0x006e(r16)
000272c4: 00000000 nop
000272c8: 000210c0 sll r2,r2,0x03
000272cc: 00451021 addu r2,r2,r5
000272d0: 94430002 lhu r3,0x0002(r2)
000272d4: 9602006e lhu r2,0x006e(r16)
000272d8: 00000000 nop
000272dc: 000210c0 sll r2,r2,0x03
000272e0: 00451021 addu r2,r2,r5
000272e4: a603003a sh r3,0x003a(r16)
000272e8: 94430004 lhu r3,0x0004(r2)
000272ec: 02001021 addu r2,r16,r0
000272f0: a443003c sh r3,0x003c(r2)
000272f4: 8fbf0014 lw r31,0x0014(r29)
000272f8: 8fb00010 lw r16,0x0010(r29)
000272fc: 27bd0018 addiu r29,r29,0x0018
00027300: 03e00008 jr r31
00027304: 00000000 nop

000275c0: 27bdffe0 addiu r29,r29,0xffe0
000275c4: afb00010 sw r16,0x0010(r29)
000275c8: 00808021 addu r16,r4,r0
000275cc: afb10014 sw r17,0x0014(r29)
000275d0: 00a08821 addu r17,r5,r0
000275d4: 02202021 addu r4,r17,r0
000275d8: 00002821 addu r5,r0,r0
000275dc: afbf0018 sw r31,0x0018(r29)
000275e0: 0c0088bf jal 0x000222fc
000275e4: 34060078 ori r6,r0,0x0078
000275e8: 3c03fdff lui r3,0xfdff
000275ec: 3463ffff ori r3,r3,0xffff
000275f0: 3c042d01 lui r4,0x2d01
000275f4: 8e020000 lw r2,0x0000(r16)
000275f8: 34840709 ori r4,r4,0x0709
000275fc: 00431824 and r3,r2,r3
00027600: 10640392 beq r3,r4,0x0002844c
00027604: ae220000 sw r2,0x0000(r17)
00027608: 0083102b sltu r2,r4,r3
0002760c: 14400028 bne r2,r0,0x000276b0
00027610: 3c023501 lui r2,0x3501
00027614: 3c022501 lui r2,0x2501
00027618: 34420607 ori r2,r2,0x0607
0002761c: 1062017f beq r3,r2,0x00027c1c
00027620: 0043102b sltu r2,r2,r3
00027624: 14400012 bne r2,r0,0x00027670
00027628: 3c022901 lui r2,0x2901
0002762c: 3c022101 lui r2,0x2101
00027630: 34420304 ori r2,r2,0x0304
00027634: 1062011d beq r3,r2,0x00027aac
00027638: 0043102b sltu r2,r2,r3
0002763c: 14400007 bne r2,r0,0x0002765c
00027640: 3c022400 lui r2,0x2400
00027644: 3c022000 lui r2,0x2000
00027648: 34420304 ori r2,r2,0x0304
0002764c: 10620041 beq r3,r2,0x00027754
00027650: 3c02fdff lui r2,0xfdff
00027654: 0800a1c3 j 0x0002870c
00027658: 00000000 nop
0002765c: 34420507 ori r2,r2,0x0507
00027660: 106200aa beq r3,r2,0x0002790c
00027664: 3c02fdff lui r2,0xfdff
00027668: 0800a1c3 j 0x0002870c
0002766c: 00000000 nop
00027670: 34420305 ori r2,r2,0x0305
00027674: 10620301 beq r3,r2,0x0002827c
00027678: 0043102b sltu r2,r2,r3
0002767c: 14400007 bne r2,r0,0x0002769c
00027680: 3c022c00 lui r2,0x2c00
00027684: 3c022800 lui r2,0x2800
00027688: 34420405 ori r2,r2,0x0405
0002768c: 106201ef beq r3,r2,0x00027e4c
00027690: 3c02fdff lui r2,0xfdff
00027694: 0800a1c3 j 0x0002870c
00027698: 00000000 nop
0002769c: 34420709 ori r2,r2,0x0709
000276a0: 10620276 beq r3,r2,0x0002807c
000276a4: 3c02fdff lui r2,0xfdff
000276a8: 0800a1c3 j 0x0002870c
000276ac: 00000000 nop
000276b0: 34420809 ori r2,r2,0x0809
000276b4: 1062019f beq r3,r2,0x00027d34
000276b8: 0043102b sltu r2,r2,r3
000276bc: 14400012 bne r2,r0,0x00027708
000276c0: 3c023901 lui r2,0x3901
000276c4: 3c023101 lui r2,0x3101
000276c8: 34420506 ori r2,r2,0x0506
000276cc: 10620125 beq r3,r2,0x00027b64
000276d0: 0043102b sltu r2,r2,r3
000276d4: 14400007 bne r2,r0,0x000276f4
000276d8: 3c023400 lui r2,0x3400
000276dc: 3c023000 lui r2,0x3000
000276e0: 34420406 ori r2,r2,0x0406
000276e4: 10620052 beq r3,r2,0x00027830
000276e8: 3c02fdff lui r2,0xfdff
000276ec: 0800a1c3 j 0x0002870c
000276f0: 00000000 nop
000276f4: 34420609 ori r2,r2,0x0609
000276f8: 106200b8 beq r3,r2,0x000279dc
000276fc: 3c02fdff lui r2,0xfdff
00027700: 0800a1c3 j 0x0002870c
00027704: 00000000 nop
00027708: 34420608 ori r2,r2,0x0608
0002770c: 10620315 beq r3,r2,0x00028364
00027710: 0043102b sltu r2,r2,r3
00027714: 14400007 bne r2,r0,0x00027734
00027718: 3c023c00 lui r2,0x3c00
0002771c: 3c023800 lui r2,0x3800
00027720: 34420508 ori r2,r2,0x0508
00027724: 1062020f beq r3,r2,0x00027f64
00027728: 3c02fdff lui r2,0xfdff
0002772c: 0800a1c3 j 0x0002870c
00027730: 00000000 nop
00027734: 3442080c ori r2,r2,0x080c
00027738: 10620290 beq r3,r2,0x0002817c
0002773c: 3c023d01 lui r2,0x3d01
00027740: 34420a0c ori r2,r2,0x0a0c
00027744: 10620399 beq r3,r2,0x000285ac
00027748: 3c02fdff lui r2,0xfdff
0002774c: 0800a1c3 j 0x0002870c
00027750: 00000000 nop
00027754: 0c009173 jal 0x000245cc
00027758: 00000000 nop
0002775c: 34030002 ori r3,r0,0x0002
00027760: 14430005 bne r2,r3,0x00027778
00027764: 00000000 nop
00027768: 3c048001 lui r4,0x8001
0002776c: 248409a4 addiu r4,r4,0x09a4
00027770: 0c0088cb jal 0x0002232c
00027774: 00000000 nop
00027778: 92020004 lbu r2,0x0004(r16)
0002777c: 00000000 nop
00027780: a2220004 sb r2,0x0004(r17)
00027784: 92020005 lbu r2,0x0005(r16)
00027788: 00000000 nop
0002778c: a2220005 sb r2,0x0005(r17)
00027790: 92020006 lbu r2,0x0006(r16)
00027794: 00000000 nop
00027798: a2220006 sb r2,0x0006(r17)
0002779c: 92020004 lbu r2,0x0004(r16)
000277a0: 00000000 nop
000277a4: a2220008 sb r2,0x0008(r17)
000277a8: 92020005 lbu r2,0x0005(r16)
000277ac: 00000000 nop
000277b0: a2220009 sb r2,0x0009(r17)
000277b4: 92020006 lbu r2,0x0006(r16)
000277b8: 00000000 nop
000277bc: a222000a sb r2,0x000a(r17)
000277c0: 92020004 lbu r2,0x0004(r16)
000277c4: 00000000 nop
000277c8: a222000c sb r2,0x000c(r17)
000277cc: 92020005 lbu r2,0x0005(r16)
000277d0: 00000000 nop
000277d4: a222000d sb r2,0x000d(r17)
000277d8: 92020006 lbu r2,0x0006(r16)
000277dc: 00000000 nop
000277e0: a222000e sb r2,0x000e(r17)
000277e4: 9602000a lhu r2,0x000a(r16)
000277e8: 00000000 nop
000277ec: a6220068 sh r2,0x0068(r17)
000277f0: 9602000c lhu r2,0x000c(r16)
000277f4: 00000000 nop
000277f8: a622006a sh r2,0x006a(r17)
000277fc: 9602000e lhu r2,0x000e(r16)
00027800: 00000000 nop
00027804: a622006c sh r2,0x006c(r17)
00027808: 96020008 lhu r2,0x0008(r16)
0002780c: 00000000 nop
00027810: a6220070 sh r2,0x0070(r17)
00027814: 96020008 lhu r2,0x0008(r16)
00027818: 00000000 nop
0002781c: a6220072 sh r2,0x0072(r17)
00027820: 96030008 lhu r3,0x0008(r16)
00027824: 34020010 ori r2,r0,0x0010
00027828: 0800a1ca j 0x00028728
0002782c: a6230074 sh r3,0x0074(r17)
00027830: 0c009173 jal 0x000245cc
00027834: 00000000 nop
00027838: 34030002 ori r3,r0,0x0002
0002783c: 14430005 bne r2,r3,0x00027854
00027840: 00000000 nop
00027844: 3c048001 lui r4,0x8001
00027848: 248409ac addiu r4,r4,0x09ac
0002784c: 0c0088cb jal 0x0002232c
00027850: 00000000 nop
00027854: 92020004 lbu r2,0x0004(r16)
00027858: 00000000 nop
0002785c: a2220004 sb r2,0x0004(r17)
00027860: 92020005 lbu r2,0x0005(r16)
00027864: 00000000 nop
00027868: a2220005 sb r2,0x0005(r17)
0002786c: 92020006 lbu r2,0x0006(r16)
00027870: 00000000 nop
00027874: a2220006 sb r2,0x0006(r17)
00027878: 92020004 lbu r2,0x0004(r16)
0002787c: 00000000 nop
00027880: a2220008 sb r2,0x0008(r17)
00027884: 92020005 lbu r2,0x0005(r16)
00027888: 00000000 nop
0002788c: a2220009 sb r2,0x0009(r17)
00027890: 92020006 lbu r2,0x0006(r16)
00027894: 00000000 nop
00027898: a222000a sb r2,0x000a(r17)
0002789c: 92020004 lbu r2,0x0004(r16)
000278a0: 00000000 nop
000278a4: a222000c sb r2,0x000c(r17)
000278a8: 92020005 lbu r2,0x0005(r16)
000278ac: 00000000 nop
000278b0: a222000d sb r2,0x000d(r17)
000278b4: 92020006 lbu r2,0x0006(r16)
000278b8: 00000000 nop
000278bc: a222000e sb r2,0x000e(r17)
000278c0: 9602000a lhu r2,0x000a(r16)
000278c4: 00000000 nop
000278c8: a6220068 sh r2,0x0068(r17)
000278cc: 9602000e lhu r2,0x000e(r16)
000278d0: 00000000 nop
000278d4: a622006a sh r2,0x006a(r17)
000278d8: 96020012 lhu r2,0x0012(r16)
000278dc: 00000000 nop
000278e0: a622006c sh r2,0x006c(r17)
000278e4: 96020008 lhu r2,0x0008(r16)
000278e8: 00000000 nop
000278ec: a6220070 sh r2,0x0070(r17)
000278f0: 9602000c lhu r2,0x000c(r16)
000278f4: 00000000 nop
000278f8: a6220072 sh r2,0x0072(r17)
000278fc: 96030010 lhu r3,0x0010(r16)
00027900: 34020014 ori r2,r0,0x0014
00027904: 0800a1ca j 0x00028728
00027908: a6230074 sh r3,0x0074(r17)
0002790c: 0c009173 jal 0x000245cc
00027910: 00000000 nop
00027914: 34030002 ori r3,r0,0x0002
00027918: 14430005 bne r2,r3,0x00027930
0002791c: 00000000 nop
00027920: 3c048001 lui r4,0x8001
00027924: 248409b4 addiu r4,r4,0x09b4
00027928: 0c0088cb jal 0x0002232c
0002792c: 00000000 nop
00027930: 9602000a lhu r2,0x000a(r16)
00027934: 00000000 nop
00027938: a6220014 sh r2,0x0014(r17)
0002793c: 96020006 lhu r2,0x0006(r16)
00027940: 00000000 nop
00027944: a6220016 sh r2,0x0016(r17)
00027948: 92020004 lbu r2,0x0004(r16)
0002794c: 00000000 nop
00027950: a2220018 sb r2,0x0018(r17)
00027954: 92020005 lbu r2,0x0005(r16)
00027958: 00000000 nop
0002795c: a2220019 sb r2,0x0019(r17)
00027960: 92020008 lbu r2,0x0008(r16)
00027964: 00000000 nop
00027968: a222001a sb r2,0x001a(r17)
0002796c: 92020009 lbu r2,0x0009(r16)
00027970: 00000000 nop
00027974: a222001b sb r2,0x001b(r17)
00027978: 9202000c lbu r2,0x000c(r16)
0002797c: 00000000 nop
00027980: a222001c sb r2,0x001c(r17)
00027984: 9202000d lbu r2,0x000d(r16)
00027988: 00000000 nop
0002798c: a222001d sb r2,0x001d(r17)
00027990: 96020012 lhu r2,0x0012(r16)
00027994: 00000000 nop
00027998: a6220068 sh r2,0x0068(r17)
0002799c: 96020014 lhu r2,0x0014(r16)
000279a0: 00000000 nop
000279a4: a622006a sh r2,0x006a(r17)
000279a8: 96020016 lhu r2,0x0016(r16)
000279ac: 00000000 nop
000279b0: a622006c sh r2,0x006c(r17)
000279b4: 96020010 lhu r2,0x0010(r16)
000279b8: 00000000 nop
000279bc: a6220070 sh r2,0x0070(r17)
000279c0: 96020010 lhu r2,0x0010(r16)
000279c4: 00000000 nop
000279c8: a6220072 sh r2,0x0072(r17)
000279cc: 96030010 lhu r3,0x0010(r16)
000279d0: 34020018 ori r2,r0,0x0018
000279d4: 0800a1ca j 0x00028728
000279d8: a6230074 sh r3,0x0074(r17)
000279dc: 0c009173 jal 0x000245cc
000279e0: 00000000 nop
000279e4: 34030002 ori r3,r0,0x0002
000279e8: 14430005 bne r2,r3,0x00027a00
000279ec: 00000000 nop
000279f0: 3c048001 lui r4,0x8001
000279f4: 248409bc addiu r4,r4,0x09bc
000279f8: 0c0088cb jal 0x0002232c
000279fc: 00000000 nop
00027a00: 9602000a lhu r2,0x000a(r16)
00027a04: 00000000 nop
00027a08: a6220014 sh r2,0x0014(r17)
00027a0c: 96020006 lhu r2,0x0006(r16)
00027a10: 00000000 nop
00027a14: a6220016 sh r2,0x0016(r17)
00027a18: 92020004 lbu r2,0x0004(r16)
00027a1c: 00000000 nop
00027a20: a2220018 sb r2,0x0018(r17)
00027a24: 92020005 lbu r2,0x0005(r16)
00027a28: 00000000 nop
00027a2c: a2220019 sb r2,0x0019(r17)
00027a30: 92020008 lbu r2,0x0008(r16)
00027a34: 00000000 nop
00027a38: a222001a sb r2,0x001a(r17)
00027a3c: 92020009 lbu r2,0x0009(r16)
00027a40: 00000000 nop
00027a44: a222001b sb r2,0x001b(r17)
00027a48: 9202000c lbu r2,0x000c(r16)
00027a4c: 00000000 nop
00027a50: a222001c sb r2,0x001c(r17)
00027a54: 9202000d lbu r2,0x000d(r16)
00027a58: 00000000 nop
00027a5c: a222001d sb r2,0x001d(r17)
00027a60: 96020012 lhu r2,0x0012(r16)
00027a64: 00000000 nop
00027a68: a6220068 sh r2,0x0068(r17)
00027a6c: 96020016 lhu r2,0x0016(r16)
00027a70: 00000000 nop
00027a74: a622006a sh r2,0x006a(r17)
00027a78: 9602001a lhu r2,0x001a(r16)
00027a7c: 00000000 nop
00027a80: a622006c sh r2,0x006c(r17)
00027a84: 96020010 lhu r2,0x0010(r16)
00027a88: 00000000 nop
00027a8c: a6220070 sh r2,0x0070(r17)
00027a90: 96020014 lhu r2,0x0014(r16)
00027a94: 00000000 nop
00027a98: a6220072 sh r2,0x0072(r17)
00027a9c: 96030018 lhu r3,0x0018(r16)
00027aa0: 3402001c ori r2,r0,0x001c
00027aa4: 0800a1ca j 0x00028728
00027aa8: a6230074 sh r3,0x0074(r17)
00027aac: 0c009173 jal 0x000245cc
00027ab0: 00000000 nop
00027ab4: 34030002 ori r3,r0,0x0002
00027ab8: 14430005 bne r2,r3,0x00027ad0
00027abc: 00000000 nop
00027ac0: 3c048001 lui r4,0x8001
00027ac4: 248409c4 addiu r4,r4,0x09c4
00027ac8: 0c0088cb jal 0x0002232c
00027acc: 00000000 nop
00027ad0: 92020004 lbu r2,0x0004(r16)
00027ad4: 00000000 nop
00027ad8: a2220004 sb r2,0x0004(r17)
00027adc: 92020005 lbu r2,0x0005(r16)
00027ae0: 00000000 nop
00027ae4: a2220005 sb r2,0x0005(r17)
00027ae8: 92020006 lbu r2,0x0006(r16)
00027aec: 00000000 nop
00027af0: a2220006 sb r2,0x0006(r17)
00027af4: 92020004 lbu r2,0x0004(r16)
00027af8: 00000000 nop
00027afc: a2220008 sb r2,0x0008(r17)
00027b00: 92020005 lbu r2,0x0005(r16)
00027b04: 00000000 nop
00027b08: a2220009 sb r2,0x0009(r17)
00027b0c: 92020006 lbu r2,0x0006(r16)
00027b10: 00000000 nop
00027b14: a222000a sb r2,0x000a(r17)
00027b18: 92020004 lbu r2,0x0004(r16)
00027b1c: 00000000 nop
00027b20: a222000c sb r2,0x000c(r17)
00027b24: 92020005 lbu r2,0x0005(r16)
00027b28: 00000000 nop
00027b2c: a222000d sb r2,0x000d(r17)
00027b30: 92020006 lbu r2,0x0006(r16)
00027b34: 00000000 nop
00027b38: a222000e sb r2,0x000e(r17)
00027b3c: 96020008 lhu r2,0x0008(r16)
00027b40: 00000000 nop
00027b44: a6220068 sh r2,0x0068(r17)
00027b48: 9602000a lhu r2,0x000a(r16)
00027b4c: 00000000 nop
00027b50: a622006a sh r2,0x006a(r17)
00027b54: 9603000c lhu r3,0x000c(r16)
00027b58: 34020010 ori r2,r0,0x0010
00027b5c: 0800a1ca j 0x00028728
00027b60: a623006c sh r3,0x006c(r17)
00027b64: 0c009173 jal 0x000245cc
00027b68: 00000000 nop
00027b6c: 34030002 ori r3,r0,0x0002
00027b70: 14430005 bne r2,r3,0x00027b88
00027b74: 00000000 nop
00027b78: 3c048001 lui r4,0x8001
00027b7c: 248409c8 addiu r4,r4,0x09c8
00027b80: 0c0088cb jal 0x0002232c
00027b84: 00000000 nop
00027b88: 92020004 lbu r2,0x0004(r16)
00027b8c: 00000000 nop
00027b90: a2220004 sb r2,0x0004(r17)
00027b94: 92020005 lbu r2,0x0005(r16)
00027b98: 00000000 nop
00027b9c: a2220005 sb r2,0x0005(r17)
00027ba0: 92020006 lbu r2,0x0006(r16)
00027ba4: 00000000 nop
00027ba8: a2220006 sb r2,0x0006(r17)
00027bac: 92020008 lbu r2,0x0008(r16)
00027bb0: 00000000 nop
00027bb4: a2220008 sb r2,0x0008(r17)
00027bb8: 92020009 lbu r2,0x0009(r16)
00027bbc: 00000000 nop
00027bc0: a2220009 sb r2,0x0009(r17)
00027bc4: 9202000a lbu r2,0x000a(r16)
00027bc8: 00000000 nop
00027bcc: a222000a sb r2,0x000a(r17)
00027bd0: 9202000c lbu r2,0x000c(r16)
00027bd4: 00000000 nop
00027bd8: a222000c sb r2,0x000c(r17)
00027bdc: 9202000d lbu r2,0x000d(r16)
00027be0: 00000000 nop
00027be4: a222000d sb r2,0x000d(r17)
00027be8: 9202000e lbu r2,0x000e(r16)
00027bec: 00000000 nop
00027bf0: a222000e sb r2,0x000e(r17)
00027bf4: 96020010 lhu r2,0x0010(r16)
00027bf8: 00000000 nop
00027bfc: a6220068 sh r2,0x0068(r17)
00027c00: 96020012 lhu r2,0x0012(r16)
00027c04: 00000000 nop
00027c08: a622006a sh r2,0x006a(r17)
00027c0c: 96030014 lhu r3,0x0014(r16)
00027c10: 34020018 ori r2,r0,0x0018
00027c14: 0800a1ca j 0x00028728
00027c18: a623006c sh r3,0x006c(r17)
00027c1c: 0c009173 jal 0x000245cc
00027c20: 00000000 nop
00027c24: 34030002 ori r3,r0,0x0002
00027c28: 14430005 bne r2,r3,0x00027c40
00027c2c: 00000000 nop
00027c30: 3c048001 lui r4,0x8001
00027c34: 248409cc addiu r4,r4,0x09cc
00027c38: 0c0088cb jal 0x0002232c
00027c3c: 00000000 nop
00027c40: 9602000a lhu r2,0x000a(r16)
00027c44: 00000000 nop
00027c48: a6220014 sh r2,0x0014(r17)
00027c4c: 96020006 lhu r2,0x0006(r16)
00027c50: 00000000 nop
00027c54: a6220016 sh r2,0x0016(r17)
00027c58: 92020004 lbu r2,0x0004(r16)
00027c5c: 00000000 nop
00027c60: a2220018 sb r2,0x0018(r17)
00027c64: 92020005 lbu r2,0x0005(r16)
00027c68: 00000000 nop
00027c6c: a2220019 sb r2,0x0019(r17)
00027c70: 92020008 lbu r2,0x0008(r16)
00027c74: 00000000 nop
00027c78: a222001a sb r2,0x001a(r17)
00027c7c: 92020009 lbu r2,0x0009(r16)
00027c80: 00000000 nop
00027c84: a222001b sb r2,0x001b(r17)
00027c88: 9202000c lbu r2,0x000c(r16)
00027c8c: 00000000 nop
00027c90: a222001c sb r2,0x001c(r17)
00027c94: 9202000d lbu r2,0x000d(r16)
00027c98: 00000000 nop
00027c9c: a222001d sb r2,0x001d(r17)
00027ca0: 92020010 lbu r2,0x0010(r16)
00027ca4: 00000000 nop
00027ca8: a2220004 sb r2,0x0004(r17)
00027cac: 92020011 lbu r2,0x0011(r16)
00027cb0: 00000000 nop
00027cb4: a2220005 sb r2,0x0005(r17)
00027cb8: 92020012 lbu r2,0x0012(r16)
00027cbc: 00000000 nop
00027cc0: a2220006 sb r2,0x0006(r17)
00027cc4: 92020010 lbu r2,0x0010(r16)
00027cc8: 00000000 nop
00027ccc: a2220008 sb r2,0x0008(r17)
00027cd0: 92020011 lbu r2,0x0011(r16)
00027cd4: 00000000 nop
00027cd8: a2220009 sb r2,0x0009(r17)
00027cdc: 92020012 lbu r2,0x0012(r16)
00027ce0: 00000000 nop
00027ce4: a222000a sb r2,0x000a(r17)
00027ce8: 92020010 lbu r2,0x0010(r16)
00027cec: 00000000 nop
00027cf0: a222000c sb r2,0x000c(r17)
00027cf4: 92020011 lbu r2,0x0011(r16)
00027cf8: 00000000 nop
00027cfc: a222000d sb r2,0x000d(r17)
00027d00: 92020012 lbu r2,0x0012(r16)
00027d04: 00000000 nop
00027d08: a222000e sb r2,0x000e(r17)
00027d0c: 96020014 lhu r2,0x0014(r16)
00027d10: 00000000 nop
00027d14: a6220068 sh r2,0x0068(r17)
00027d18: 96020016 lhu r2,0x0016(r16)
00027d1c: 00000000 nop
00027d20: a622006a sh r2,0x006a(r17)
00027d24: 96030018 lhu r3,0x0018(r16)
00027d28: 3402001c ori r2,r0,0x001c
00027d2c: 0800a1ca j 0x00028728
00027d30: a623006c sh r3,0x006c(r17)
00027d34: 0c009173 jal 0x000245cc
00027d38: 00000000 nop
00027d3c: 34030002 ori r3,r0,0x0002
00027d40: 14430005 bne r2,r3,0x00027d58
00027d44: 00000000 nop
00027d48: 3c048001 lui r4,0x8001
00027d4c: 248409d4 addiu r4,r4,0x09d4
00027d50: 0c0088cb jal 0x0002232c
00027d54: 00000000 nop
00027d58: 9602000a lhu r2,0x000a(r16)
00027d5c: 00000000 nop
00027d60: a6220014 sh r2,0x0014(r17)
00027d64: 96020006 lhu r2,0x0006(r16)
00027d68: 00000000 nop
00027d6c: a6220016 sh r2,0x0016(r17)
00027d70: 92020004 lbu r2,0x0004(r16)
00027d74: 00000000 nop
00027d78: a2220018 sb r2,0x0018(r17)
00027d7c: 92020005 lbu r2,0x0005(r16)
00027d80: 00000000 nop
00027d84: a2220019 sb r2,0x0019(r17)
00027d88: 92020008 lbu r2,0x0008(r16)
00027d8c: 00000000 nop
00027d90: a222001a sb r2,0x001a(r17)
00027d94: 92020009 lbu r2,0x0009(r16)
00027d98: 00000000 nop
00027d9c: a222001b sb r2,0x001b(r17)
00027da0: 9202000c lbu r2,0x000c(r16)
00027da4: 00000000 nop
00027da8: a222001c sb r2,0x001c(r17)
00027dac: 9202000d lbu r2,0x000d(r16)
00027db0: 00000000 nop
00027db4: a222001d sb r2,0x001d(r17)
00027db8: 9602001c lhu r2,0x001c(r16)
00027dbc: 00000000 nop
00027dc0: a6220068 sh r2,0x0068(r17)
00027dc4: 9602001e lhu r2,0x001e(r16)
00027dc8: 00000000 nop
00027dcc: a622006a sh r2,0x006a(r17)
00027dd0: 96020020 lhu r2,0x0020(r16)
00027dd4: 00000000 nop
00027dd8: a622006c sh r2,0x006c(r17)
00027ddc: 92020010 lbu r2,0x0010(r16)
00027de0: 00000000 nop
00027de4: a2220004 sb r2,0x0004(r17)
00027de8: 92020011 lbu r2,0x0011(r16)
00027dec: 00000000 nop
00027df0: a2220005 sb r2,0x0005(r17)
00027df4: 92020012 lbu r2,0x0012(r16)
00027df8: 00000000 nop
00027dfc: a2220006 sb r2,0x0006(r17)
00027e00: 92020014 lbu r2,0x0014(r16)
00027e04: 00000000 nop
00027e08: a2220008 sb r2,0x0008(r17)
00027e0c: 92020015 lbu r2,0x0015(r16)
00027e10: 00000000 nop
00027e14: a2220009 sb r2,0x0009(r17)
00027e18: 92020016 lbu r2,0x0016(r16)
00027e1c: 00000000 nop
00027e20: a222000a sb r2,0x000a(r17)
00027e24: 92020018 lbu r2,0x0018(r16)
00027e28: 00000000 nop
00027e2c: a222000c sb r2,0x000c(r17)
00027e30: 92020019 lbu r2,0x0019(r16)
00027e34: 00000000 nop
00027e38: a222000d sb r2,0x000d(r17)
00027e3c: 9203001a lbu r3,0x001a(r16)
00027e40: 34020024 ori r2,r0,0x0024
00027e44: 0800a1ca j 0x00028728
00027e48: a223000e sb r3,0x000e(r17)
00027e4c: 0c009173 jal 0x000245cc
00027e50: 00000000 nop
00027e54: 34030002 ori r3,r0,0x0002
00027e58: 14430005 bne r2,r3,0x00027e70
00027e5c: 00000000 nop
00027e60: 3c048001 lui r4,0x8001
00027e64: 248409dc addiu r4,r4,0x09dc
00027e68: 0c0088cb jal 0x0002232c
00027e6c: 00000000 nop
00027e70: 92020004 lbu r2,0x0004(r16)
00027e74: 00000000 nop
00027e78: a2220004 sb r2,0x0004(r17)
00027e7c: 92020005 lbu r2,0x0005(r16)
00027e80: 00000000 nop
00027e84: a2220005 sb r2,0x0005(r17)
00027e88: 92020006 lbu r2,0x0006(r16)
00027e8c: 00000000 nop
00027e90: a2220006 sb r2,0x0006(r17)
00027e94: 92020004 lbu r2,0x0004(r16)
00027e98: 00000000 nop
00027e9c: a2220008 sb r2,0x0008(r17)
00027ea0: 92020005 lbu r2,0x0005(r16)
00027ea4: 00000000 nop
00027ea8: a2220009 sb r2,0x0009(r17)
00027eac: 92020006 lbu r2,0x0006(r16)
00027eb0: 00000000 nop
00027eb4: a222000a sb r2,0x000a(r17)
00027eb8: 92020004 lbu r2,0x0004(r16)
00027ebc: 00000000 nop
00027ec0: a222000c sb r2,0x000c(r17)
00027ec4: 92020005 lbu r2,0x0005(r16)
00027ec8: 00000000 nop
00027ecc: a222000d sb r2,0x000d(r17)
00027ed0: 92020006 lbu r2,0x0006(r16)
00027ed4: 00000000 nop
00027ed8: a222000e sb r2,0x000e(r17)
00027edc: 92020004 lbu r2,0x0004(r16)
00027ee0: 00000000 nop
00027ee4: a2220010 sb r2,0x0010(r17)
00027ee8: 92020005 lbu r2,0x0005(r16)
00027eec: 00000000 nop
00027ef0: a2220011 sb r2,0x0011(r17)
00027ef4: 92020006 lbu r2,0x0006(r16)
00027ef8: 00000000 nop
00027efc: a2220012 sb r2,0x0012(r17)
00027f00: 9602000a lhu r2,0x000a(r16)
00027f04: 00000000 nop
00027f08: a6220068 sh r2,0x0068(r17)
00027f0c: 9602000c lhu r2,0x000c(r16)
00027f10: 00000000 nop
00027f14: a622006a sh r2,0x006a(r17)
00027f18: 9602000e lhu r2,0x000e(r16)
00027f1c: 00000000 nop
00027f20: a622006c sh r2,0x006c(r17)
00027f24: 96020010 lhu r2,0x0010(r16)
00027f28: 00000000 nop
00027f2c: a622006e sh r2,0x006e(r17)
00027f30: 96020008 lhu r2,0x0008(r16)
00027f34: 00000000 nop
00027f38: a6220070 sh r2,0x0070(r17)
00027f3c: 96020008 lhu r2,0x0008(r16)
00027f40: 00000000 nop
00027f44: a6220072 sh r2,0x0072(r17)
00027f48: 96020008 lhu r2,0x0008(r16)
00027f4c: 00000000 nop
00027f50: a6220074 sh r2,0x0074(r17)
00027f54: 96030008 lhu r3,0x0008(r16)
00027f58: 34020014 ori r2,r0,0x0014
00027f5c: 0800a1ca j 0x00028728
00027f60: a6230076 sh r3,0x0076(r17)
00027f64: 0c009173 jal 0x000245cc
00027f68: 00000000 nop
00027f6c: 34030002 ori r3,r0,0x0002
00027f70: 14430005 bne r2,r3,0x00027f88
00027f74: 00000000 nop
00027f78: 3c048001 lui r4,0x8001
00027f7c: 248409e4 addiu r4,r4,0x09e4
00027f80: 0c0088cb jal 0x0002232c
00027f84: 00000000 nop
00027f88: 92020004 lbu r2,0x0004(r16)
00027f8c: 00000000 nop
00027f90: a2220004 sb r2,0x0004(r17)
00027f94: 92020005 lbu r2,0x0005(r16)
00027f98: 00000000 nop
00027f9c: a2220005 sb r2,0x0005(r17)
00027fa0: 92020006 lbu r2,0x0006(r16)
00027fa4: 00000000 nop
00027fa8: a2220006 sb r2,0x0006(r17)
00027fac: 92020004 lbu r2,0x0004(r16)
00027fb0: 00000000 nop
00027fb4: a2220008 sb r2,0x0008(r17)
00027fb8: 92020005 lbu r2,0x0005(r16)
00027fbc: 00000000 nop
00027fc0: a2220009 sb r2,0x0009(r17)
00027fc4: 92020006 lbu r2,0x0006(r16)
00027fc8: 00000000 nop
00027fcc: a222000a sb r2,0x000a(r17)
00027fd0: 92020004 lbu r2,0x0004(r16)
00027fd4: 00000000 nop
00027fd8: a222000c sb r2,0x000c(r17)
00027fdc: 92020005 lbu r2,0x0005(r16)
00027fe0: 00000000 nop
00027fe4: a222000d sb r2,0x000d(r17)
00027fe8: 92020006 lbu r2,0x0006(r16)
00027fec: 00000000 nop
00027ff0: a222000e sb r2,0x000e(r17)
00027ff4: 92020004 lbu r2,0x0004(r16)
00027ff8: 00000000 nop
00027ffc: a2220010 sb r2,0x0010(r17)
00028000: 92020005 lbu r2,0x0005(r16)
00028004: 00000000 nop
00028008: a2220011 sb r2,0x0011(r17)
0002800c: 92020006 lbu r2,0x0006(r16)
00028010: 00000000 nop
00028014: a2220012 sb r2,0x0012(r17)
00028018: 9602000a lhu r2,0x000a(r16)
0002801c: 00000000 nop
00028020: a6220068 sh r2,0x0068(r17)
00028024: 9602000e lhu r2,0x000e(r16)
00028028: 00000000 nop
0002802c: a622006a sh r2,0x006a(r17)
00028030: 96020012 lhu r2,0x0012(r16)
00028034: 00000000 nop
00028038: a622006c sh r2,0x006c(r17)
0002803c: 96020016 lhu r2,0x0016(r16)
00028040: 00000000 nop
00028044: a622006e sh r2,0x006e(r17)
00028048: 96020008 lhu r2,0x0008(r16)
0002804c: 00000000 nop
00028050: a6220070 sh r2,0x0070(r17)
00028054: 9602000c lhu r2,0x000c(r16)
00028058: 00000000 nop
0002805c: a6220072 sh r2,0x0072(r17)
00028060: 96020010 lhu r2,0x0010(r16)
00028064: 00000000 nop
00028068: a6220074 sh r2,0x0074(r17)
0002806c: 96030014 lhu r3,0x0014(r16)
00028070: 34020018 ori r2,r0,0x0018
00028074: 0800a1ca j 0x00028728
00028078: a6230076 sh r3,0x0076(r17)
0002807c: 0c009173 jal 0x000245cc
00028080: 00000000 nop
00028084: 34030002 ori r3,r0,0x0002
00028088: 14430005 bne r2,r3,0x000280a0
0002808c: 00000000 nop
00028090: 3c048001 lui r4,0x8001
00028094: 248409ec addiu r4,r4,0x09ec
00028098: 0c0088cb jal 0x0002232c
0002809c: 00000000 nop
000280a0: 9602000a lhu r2,0x000a(r16)
000280a4: 00000000 nop
000280a8: a6220014 sh r2,0x0014(r17)
000280ac: 96020006 lhu r2,0x0006(r16)
000280b0: 00000000 nop
000280b4: a6220016 sh r2,0x0016(r17)
000280b8: 92020004 lbu r2,0x0004(r16)
000280bc: 00000000 nop
000280c0: a2220018 sb r2,0x0018(r17)
000280c4: 92020005 lbu r2,0x0005(r16)
000280c8: 00000000 nop
000280cc: a2220019 sb r2,0x0019(r17)
000280d0: 92020008 lbu r2,0x0008(r16)
000280d4: 00000000 nop
000280d8: a222001a sb r2,0x001a(r17)
000280dc: 92020009 lbu r2,0x0009(r16)
000280e0: 00000000 nop
000280e4: a222001b sb r2,0x001b(r17)
000280e8: 9202000c lbu r2,0x000c(r16)
000280ec: 00000000 nop
000280f0: a222001c sb r2,0x001c(r17)
000280f4: 9202000d lbu r2,0x000d(r16)
000280f8: 00000000 nop
000280fc: a222001d sb r2,0x001d(r17)
00028100: 92020010 lbu r2,0x0010(r16)
00028104: 00000000 nop
00028108: a222001e sb r2,0x001e(r17)
0002810c: 92020011 lbu r2,0x0011(r16)
00028110: 00000000 nop
00028114: a222001f sb r2,0x001f(r17)
00028118: 96020016 lhu r2,0x0016(r16)
0002811c: 00000000 nop
00028120: a6220068 sh r2,0x0068(r17)
00028124: 96020018 lhu r2,0x0018(r16)
00028128: 00000000 nop
0002812c: a622006a sh r2,0x006a(r17)
00028130: 9602001a lhu r2,0x001a(r16)
00028134: 00000000 nop
00028138: a622006c sh r2,0x006c(r17)
0002813c: 9602001c lhu r2,0x001c(r16)
00028140: 00000000 nop
00028144: a622006e sh r2,0x006e(r17)
00028148: 96020014 lhu r2,0x0014(r16)
0002814c: 00000000 nop
00028150: a6220070 sh r2,0x0070(r17)
00028154: 96020014 lhu r2,0x0014(r16)
00028158: 00000000 nop
0002815c: a6220072 sh r2,0x0072(r17)
00028160: 96020014 lhu r2,0x0014(r16)
00028164: 00000000 nop
00028168: a6220074 sh r2,0x0074(r17)
0002816c: 96030014 lhu r3,0x0014(r16)
00028170: 34020020 ori r2,r0,0x0020
00028174: 0800a1ca j 0x00028728
00028178: a6230076 sh r3,0x0076(r17)
0002817c: 0c009173 jal 0x000245cc
00028180: 00000000 nop
00028184: 34030002 ori r3,r0,0x0002
00028188: 14430005 bne r2,r3,0x000281a0
0002818c: 00000000 nop
00028190: 3c048001 lui r4,0x8001
00028194: 248409f4 addiu r4,r4,0x09f4
00028198: 0c0088cb jal 0x0002232c
0002819c: 00000000 nop
000281a0: 9602000a lhu r2,0x000a(r16)
000281a4: 00000000 nop
000281a8: a6220014 sh r2,0x0014(r17)
000281ac: 96020006 lhu r2,0x0006(r16)
000281b0: 00000000 nop
000281b4: a6220016 sh r2,0x0016(r17)
000281b8: 92020004 lbu r2,0x0004(r16)
000281bc: 00000000 nop
000281c0: a2220018 sb r2,0x0018(r17)
000281c4: 92020005 lbu r2,0x0005(r16)
000281c8: 00000000 nop
000281cc: a2220019 sb r2,0x0019(r17)
000281d0: 92020008 lbu r2,0x0008(r16)
000281d4: 00000000 nop
000281d8: a222001a sb r2,0x001a(r17)
000281dc: 92020009 lbu r2,0x0009(r16)
000281e0: 00000000 nop
000281e4: a222001b sb r2,0x001b(r17)
000281e8: 9202000c lbu r2,0x000c(r16)
000281ec: 00000000 nop
000281f0: a222001c sb r2,0x001c(r17)
000281f4: 9202000d lbu r2,0x000d(r16)
000281f8: 00000000 nop
000281fc: a222001d sb r2,0x001d(r17)
00028200: 92020010 lbu r2,0x0010(r16)
00028204: 00000000 nop
00028208: a222001e sb r2,0x001e(r17)
0002820c: 92020011 lbu r2,0x0011(r16)
00028210: 00000000 nop
00028214: a222001f sb r2,0x001f(r17)
00028218: 96020016 lhu r2,0x0016(r16)
0002821c: 00000000 nop
00028220: a6220068 sh r2,0x0068(r17)
00028224: 9602001a lhu r2,0x001a(r16)
00028228: 00000000 nop
0002822c: a622006a sh r2,0x006a(r17)
00028230: 9602001e lhu r2,0x001e(r16)
00028234: 00000000 nop
00028238: a622006c sh r2,0x006c(r17)
0002823c: 96020022 lhu r2,0x0022(r16)
00028240: 00000000 nop
00028244: a622006e sh r2,0x006e(r17)
00028248: 96020014 lhu r2,0x0014(r16)
0002824c: 00000000 nop
00028250: a6220070 sh r2,0x0070(r17)
00028254: 96020018 lhu r2,0x0018(r16)
00028258: 00000000 nop
0002825c: a6220072 sh r2,0x0072(r17)
00028260: 9602001c lhu r2,0x001c(r16)
00028264: 00000000 nop
00028268: a6220074 sh r2,0x0074(r17)
0002826c: 96030020 lhu r3,0x0020(r16)
00028270: 34020024 ori r2,r0,0x0024
00028274: 0800a1ca j 0x00028728
00028278: a6230076 sh r3,0x0076(r17)
0002827c: 0c009173 jal 0x000245cc
00028280: 00000000 nop
00028284: 34030002 ori r3,r0,0x0002
00028288: 14430005 bne r2,r3,0x000282a0
0002828c: 00000000 nop
00028290: 3c048001 lui r4,0x8001
00028294: 248409fc addiu r4,r4,0x09fc
00028298: 0c0088cb jal 0x0002232c
0002829c: 00000000 nop
000282a0: 92020004 lbu r2,0x0004(r16)
000282a4: 00000000 nop
000282a8: a2220004 sb r2,0x0004(r17)
000282ac: 92020005 lbu r2,0x0005(r16)
000282b0: 00000000 nop
000282b4: a2220005 sb r2,0x0005(r17)
000282b8: 92020006 lbu r2,0x0006(r16)
000282bc: 00000000 nop
000282c0: a2220006 sb r2,0x0006(r17)
000282c4: 92020004 lbu r2,0x0004(r16)
000282c8: 00000000 nop
000282cc: a2220008 sb r2,0x0008(r17)
000282d0: 92020005 lbu r2,0x0005(r16)
000282d4: 00000000 nop
000282d8: a2220009 sb r2,0x0009(r17)
000282dc: 92020006 lbu r2,0x0006(r16)
000282e0: 00000000 nop
000282e4: a222000a sb r2,0x000a(r17)
000282e8: 92020004 lbu r2,0x0004(r16)
000282ec: 00000000 nop
000282f0: a222000c sb r2,0x000c(r17)
000282f4: 92020005 lbu r2,0x0005(r16)
000282f8: 00000000 nop
000282fc: a222000d sb r2,0x000d(r17)
00028300: 92020006 lbu r2,0x0006(r16)
00028304: 00000000 nop
00028308: a222000e sb r2,0x000e(r17)
0002830c: 92020004 lbu r2,0x0004(r16)
00028310: 00000000 nop
00028314: a2220010 sb r2,0x0010(r17)
00028318: 92020005 lbu r2,0x0005(r16)
0002831c: 00000000 nop
00028320: a2220011 sb r2,0x0011(r17)
00028324: 92020006 lbu r2,0x0006(r16)
00028328: 00000000 nop
0002832c: a2220012 sb r2,0x0012(r17)
00028330: 96020008 lhu r2,0x0008(r16)
00028334: 00000000 nop
00028338: a6220068 sh r2,0x0068(r17)
0002833c: 9602000a lhu r2,0x000a(r16)
00028340: 00000000 nop
00028344: a622006a sh r2,0x006a(r17)
00028348: 9602000c lhu r2,0x000c(r16)
0002834c: 00000000 nop
00028350: a622006c sh r2,0x006c(r17)
00028354: 9603000e lhu r3,0x000e(r16)
00028358: 34020010 ori r2,r0,0x0010
0002835c: 0800a1ca j 0x00028728
00028360: a623006e sh r3,0x006e(r17)
00028364: 0c009173 jal 0x000245cc
00028368: 00000000 nop
0002836c: 34030002 ori r3,r0,0x0002
00028370: 14430005 bne r2,r3,0x00028388
00028374: 00000000 nop
00028378: 3c048001 lui r4,0x8001
0002837c: 24840a00 addiu r4,r4,0x0a00
00028380: 0c0088cb jal 0x0002232c
00028384: 00000000 nop
00028388: 92020004 lbu r2,0x0004(r16)
0002838c: 00000000 nop
00028390: a2220004 sb r2,0x0004(r17)
00028394: 92020005 lbu r2,0x0005(r16)
00028398: 00000000 nop
0002839c: a2220005 sb r2,0x0005(r17)
000283a0: 92020006 lbu r2,0x0006(r16)
000283a4: 00000000 nop
000283a8: a2220006 sb r2,0x0006(r17)
000283ac: 92020008 lbu r2,0x0008(r16)
000283b0: 00000000 nop
000283b4: a2220008 sb r2,0x0008(r17)
000283b8: 92020009 lbu r2,0x0009(r16)
000283bc: 00000000 nop
000283c0: a2220009 sb r2,0x0009(r17)
000283c4: 9202000a lbu r2,0x000a(r16)
000283c8: 00000000 nop
000283cc: a222000a sb r2,0x000a(r17)
000283d0: 9202000c lbu r2,0x000c(r16)
000283d4: 00000000 nop
000283d8: a222000c sb r2,0x000c(r17)
000283dc: 9202000d lbu r2,0x000d(r16)
000283e0: 00000000 nop
000283e4: a222000d sb r2,0x000d(r17)
000283e8: 9202000e lbu r2,0x000e(r16)
000283ec: 00000000 nop
000283f0: a222000e sb r2,0x000e(r17)
000283f4: 92020010 lbu r2,0x0010(r16)
000283f8: 00000000 nop
000283fc: a2220010 sb r2,0x0010(r17)
00028400: 92020011 lbu r2,0x0011(r16)
00028404: 00000000 nop
00028408: a2220011 sb r2,0x0011(r17)
0002840c: 92020012 lbu r2,0x0012(r16)
00028410: 00000000 nop
00028414: a2220012 sb r2,0x0012(r17)
00028418: 96020014 lhu r2,0x0014(r16)
0002841c: 00000000 nop
00028420: a6220068 sh r2,0x0068(r17)
00028424: 96020016 lhu r2,0x0016(r16)
00028428: 00000000 nop
0002842c: a622006a sh r2,0x006a(r17)
00028430: 96020018 lhu r2,0x0018(r16)
00028434: 00000000 nop
00028438: a622006c sh r2,0x006c(r17)
0002843c: 9603001a lhu r3,0x001a(r16)
00028440: 3402001c ori r2,r0,0x001c
00028444: 0800a1ca j 0x00028728
00028448: a623006e sh r3,0x006e(r17)
0002844c: 0c009173 jal 0x000245cc
00028450: 00000000 nop
00028454: 34030002 ori r3,r0,0x0002
00028458: 14430005 bne r2,r3,0x00028470
0002845c: 00000000 nop
00028460: 3c048001 lui r4,0x8001
00028464: 24840a04 addiu r4,r4,0x0a04
00028468: 0c0088cb jal 0x0002232c
0002846c: 00000000 nop
00028470: 9602000a lhu r2,0x000a(r16)
00028474: 00000000 nop
00028478: a6220014 sh r2,0x0014(r17)
0002847c: 96020006 lhu r2,0x0006(r16)
00028480: 00000000 nop
00028484: a6220016 sh r2,0x0016(r17)
00028488: 92020004 lbu r2,0x0004(r16)
0002848c: 00000000 nop
00028490: a2220018 sb r2,0x0018(r17)
00028494: 92020005 lbu r2,0x0005(r16)
00028498: 00000000 nop
0002849c: a2220019 sb r2,0x0019(r17)
000284a0: 92020008 lbu r2,0x0008(r16)
000284a4: 00000000 nop
000284a8: a222001a sb r2,0x001a(r17)
000284ac: 92020009 lbu r2,0x0009(r16)
000284b0: 00000000 nop
000284b4: a222001b sb r2,0x001b(r17)
000284b8: 9202000c lbu r2,0x000c(r16)
000284bc: 00000000 nop
000284c0: a222001c sb r2,0x001c(r17)
000284c4: 9202000d lbu r2,0x000d(r16)
000284c8: 00000000 nop
000284cc: a222001d sb r2,0x001d(r17)
000284d0: 92020010 lbu r2,0x0010(r16)
000284d4: 00000000 nop
000284d8: a222001e sb r2,0x001e(r17)
000284dc: 92020011 lbu r2,0x0011(r16)
000284e0: 00000000 nop
000284e4: a222001f sb r2,0x001f(r17)
000284e8: 92020014 lbu r2,0x0014(r16)
000284ec: 00000000 nop
000284f0: a2220004 sb r2,0x0004(r17)
000284f4: 92020015 lbu r2,0x0015(r16)
000284f8: 00000000 nop
000284fc: a2220005 sb r2,0x0005(r17)
00028500: 92020016 lbu r2,0x0016(r16)
00028504: 00000000 nop
00028508: a2220006 sb r2,0x0006(r17)
0002850c: 92020014 lbu r2,0x0014(r16)
00028510: 00000000 nop
00028514: a2220008 sb r2,0x0008(r17)
00028518: 92020015 lbu r2,0x0015(r16)
0002851c: 00000000 nop
00028520: a2220009 sb r2,0x0009(r17)
00028524: 92020016 lbu r2,0x0016(r16)
00028528: 00000000 nop
0002852c: a222000a sb r2,0x000a(r17)
00028530: 92020014 lbu r2,0x0014(r16)
00028534: 00000000 nop
00028538: a222000c sb r2,0x000c(r17)
0002853c: 92020015 lbu r2,0x0015(r16)
00028540: 00000000 nop
00028544: a222000d sb r2,0x000d(r17)
00028548: 92020016 lbu r2,0x0016(r16)
0002854c: 00000000 nop
00028550: a222000e sb r2,0x000e(r17)
00028554: 92020014 lbu r2,0x0014(r16)
00028558: 00000000 nop
0002855c: a2220010 sb r2,0x0010(r17)
00028560: 92020015 lbu r2,0x0015(r16)
00028564: 00000000 nop
00028568: a2220011 sb r2,0x0011(r17)
0002856c: 92020016 lbu r2,0x0016(r16)
00028570: 00000000 nop
00028574: a2220012 sb r2,0x0012(r17)
00028578: 96020018 lhu r2,0x0018(r16)
0002857c: 00000000 nop
00028580: a6220068 sh r2,0x0068(r17)
00028584: 9602001a lhu r2,0x001a(r16)
00028588: 00000000 nop
0002858c: a622006a sh r2,0x006a(r17)
00028590: 9602001c lhu r2,0x001c(r16)
00028594: 00000000 nop
00028598: a622006c sh r2,0x006c(r17)
0002859c: 9603001e lhu r3,0x001e(r16)
000285a0: 34020020 ori r2,r0,0x0020
000285a4: 0800a1ca j 0x00028728
000285a8: a623006e sh r3,0x006e(r17)
000285ac: 0c009173 jal 0x000245cc
000285b0: 00000000 nop
000285b4: 34030002 ori r3,r0,0x0002
000285b8: 14430005 bne r2,r3,0x000285d0
000285bc: 00000000 nop
000285c0: 3c048001 lui r4,0x8001
000285c4: 24840a0c addiu r4,r4,0x0a0c
000285c8: 0c0088cb jal 0x0002232c
000285cc: 00000000 nop
000285d0: 9602000a lhu r2,0x000a(r16)
000285d4: 00000000 nop
000285d8: a6220014 sh r2,0x0014(r17)
000285dc: 96020006 lhu r2,0x0006(r16)
000285e0: 00000000 nop
000285e4: a6220016 sh r2,0x0016(r17)
000285e8: 92020004 lbu r2,0x0004(r16)
000285ec: 00000000 nop
000285f0: a2220018 sb r2,0x0018(r17)
000285f4: 92020005 lbu r2,0x0005(r16)
000285f8: 00000000 nop
000285fc: a2220019 sb r2,0x0019(r17)
00028600: 92020008 lbu r2,0x0008(r16)
00028604: 00000000 nop
00028608: a222001a sb r2,0x001a(r17)
0002860c: 92020009 lbu r2,0x0009(r16)
00028610: 00000000 nop
00028614: a222001b sb r2,0x001b(r17)
00028618: 9202000c lbu r2,0x000c(r16)
0002861c: 00000000 nop
00028620: a222001c sb r2,0x001c(r17)
00028624: 9202000d lbu r2,0x000d(r16)
00028628: 00000000 nop
0002862c: a222001d sb r2,0x001d(r17)
00028630: 92020010 lbu r2,0x0010(r16)
00028634: 00000000 nop
00028638: a222001e sb r2,0x001e(r17)
0002863c: 92020011 lbu r2,0x0011(r16)
00028640: 00000000 nop
00028644: a222001f sb r2,0x001f(r17)
00028648: 96020024 lhu r2,0x0024(r16)
0002864c: 00000000 nop
00028650: a6220068 sh r2,0x0068(r17)
00028654: 96020026 lhu r2,0x0026(r16)
00028658: 00000000 nop
0002865c: a622006a sh r2,0x006a(r17)
00028660: 96020028 lhu r2,0x0028(r16)
00028664: 00000000 nop
00028668: a622006c sh r2,0x006c(r17)
0002866c: 9602002a lhu r2,0x002a(r16)
00028670: 00000000 nop
00028674: a622006e sh r2,0x006e(r17)
00028678: 92020014 lbu r2,0x0014(r16)
0002867c: 00000000 nop
00028680: a2220004 sb r2,0x0004(r17)
00028684: 92020015 lbu r2,0x0015(r16)
00028688: 00000000 nop
0002868c: a2220005 sb r2,0x0005(r17)
00028690: 92020016 lbu r2,0x0016(r16)
00028694: 00000000 nop
00028698: a2220006 sb r2,0x0006(r17)
0002869c: 92020018 lbu r2,0x0018(r16)
000286a0: 00000000 nop
000286a4: a2220008 sb r2,0x0008(r17)
000286a8: 92020019 lbu r2,0x0019(r16)
000286ac: 00000000 nop
000286b0: a2220009 sb r2,0x0009(r17)
000286b4: 9202001a lbu r2,0x001a(r16)
000286b8: 00000000 nop
000286bc: a222000a sb r2,0x000a(r17)
000286c0: 9202001c lbu r2,0x001c(r16)
000286c4: 00000000 nop
000286c8: a222000c sb r2,0x000c(r17)
000286cc: 9202001d lbu r2,0x001d(r16)
000286d0: 00000000 nop
000286d4: a222000d sb r2,0x000d(r17)
000286d8: 9202001e lbu r2,0x001e(r16)
000286dc: 00000000 nop
000286e0: a222000e sb r2,0x000e(r17)
000286e4: 92020020 lbu r2,0x0020(r16)
000286e8: 00000000 nop
000286ec: a2220010 sb r2,0x0010(r17)
000286f0: 92020021 lbu r2,0x0021(r16)
000286f4: 00000000 nop
000286f8: a2220011 sb r2,0x0011(r17)
000286fc: 92030022 lbu r3,0x0022(r16)
00028700: 3402002c ori r2,r0,0x002c
00028704: 0800a1ca j 0x00028728
00028708: a2230012 sb r3,0x0012(r17)
0002870c: 3442ffff ori r2,r2,0xffff
00028710: 8e250000 lw r5,0x0000(r17)
00028714: 3c048001 lui r4,0x8001
00028718: 24840a14 addiu r4,r4,0x0a14
0002871c: 0c0088cb jal 0x0002232c
00028720: 00a22824 and r5,r5,r2
00028724: 2402ffff addiu r2,r0,0xffff
00028728: 8fbf0018 lw r31,0x0018(r29)
0002872c: 8fb10014 lw r17,0x0014(r29)
00028730: 8fb00010 lw r16,0x0010(r29)
00028734: 27bd0020 addiu r29,r29,0x0020
00028738: 03e00008 jr r31
0002873c: 00000000 nop

Of course, there are probably more like these, but I just gotta make sure I'm not wrong first.
Spam / Undeniable Rules of JRPGs
July 05, 2015, 11:16:25 pm
If a game doesn't follow these rules, it is not a true Japanese RPG. Feel free to add your own!

1) You need a doctorate's degree to manage sewers
2) Your first boat trip will not go well
3) You will be thrown in a prison cell and escape (easily)
4) At least one town will be destroyed
News / WotL on Android
June 05, 2015, 10:27:11 pm

It happened! We don't know how easy it will be to mod yet, but just letting out the news that the release is now official!

Thanks to Aadarm for pointing it out.

PS: Of course, it comes with all the issues from the iOS release... given that they "patched" the slow effect issue, I don't have a clue how hard it would be to revert the fix (will probably never happen), on top of adding Archaemic's slowdown removal.
News / Changed mail server again
April 27, 2015, 09:29:49 pm

This is about the fifth time I change mail servers, and I'm getting sick of it. Microsoft seems to hate my guts or something, because I always get blocked out of my mail servers because of them from what I gathered. I'm guessing it's because we are called Final Fantasy Hacktics. We respect their policies, but still end up blocked every single time. And every time it takes me hours to move to another mail server to fix it.

So yeah, sorry to Microsoft e-mail users, but you won't be able to register on FFHacktics unless you use a different e-mail; otherwise no one receives e-mails for weeks.

Banned e-mails: (only when registering)

  • @hotmail.com

  • @outlook.com

  • @live.com

  • @msn.com

  • and variants

News / Transfer to a new server
April 24, 2015, 11:40:51 am
If you can see this, it means you have successfully transferred to the new server!

Thanks again to kivutar for providing us a server.
Please warn me of anything not working properly, I might very well have forgotten something.

Also, sorry it was down for so long.
Spam / Welcome to FFH where all your dreams come true!
February 26, 2015, 11:48:45 pm
The King of Ivalice / Development
January 18, 2015, 02:41:36 pm
This is the Development thread, here you'll find information about how the mod is progressing.

Please provide your input to make sure KoI will please most people.
If you want to discuss something that involve spoilers, please use [spoilers] tag.
The King of Ivalice / Patch Information
December 31, 2014, 02:28:27 pm
This mod will only be available for the Playstation (PSX) version!

This mod is not currently available because it is still too early in development for any release

King of Ivalice
[indent=2]This mod is meant to immerse you into the world of Final Fantasy Tactics, but seen from the eyes of the second main character: Delita Hyral. Of course, this mod will not be Matsuno's original story because it won't be written by him. However, we will try our best to keep faith to everything that is canon and take some liberties where possible. Not being Square, we can feel free to include all sorts of content it would be illegal for them to add.

New World Map locations
[indent=2]With the Nelveskia Temple, Deep Dungeon, Golgorand Execution site and Murond Death City locations freed, expect new locations and paths on the map![/indent]

[indent=2]A refurbished Deep Dungeon! No more battles, rather new options for you to discover. Each section will use a pretty 320x240 custom background file instead of maps and units, unless of course, fighting is directly involved.

  • Meeting Room: Storyline progression events happen here.

  • Seer: Gives you important tips about the game.

  • Library: Read books that you find throughout the game to reveal important information.

  • Workshop: The team's archeologist can repair his artifacts here.

  • Treasure Room: Assign a treasure hunter to fetch items for you at different locations. Updated every time the storyline progressions increases.

  • Gambler: Earn gil in a non-fighting way.

  • Training Grounds: Fight against a scarecrow to build the exp/JP of your characters left behind.

  • Monster Arena: Capture monsters and hand them over to the Arena Master who will create Chimera monsters for you to fight.

  • Coach: A teacher can turn some generics with a lot of potential into powerful Special units if some requirements are met.


"Super" Monsters
[indent=2]Roaming around Ivalice, don't be surprised if you ever encounter an enormous chocobo, a blazing fast goblin or even an insanely strong uribo. These kind of super monsters will be commonplace now.[/indent]

Lots of War Trophies
[indent=2]Items won't sell for a lot, but the accessibility to some will be vastly increased. The higher the level of the monster you fight, the better and more items it might drop! Every generic monster will be able to drop a vast array of items, but only 4 can be generated per unit. After some battles, this can mean a lot of items! Not just monsters, you might get some very good loot from human foes as well.[/indent]

Shady Salesmen
[indent=2]There are rumors about some merchants roaming Ivalice who are selling some... interesting wares. The origin of those wares is suspicious to say the least, and while they might be very pricey, you might be able to haggle them to a more reasonable price.[/indent]

Synthesis Shop
[indent=2]Remember the Synthesis Shop from Final Fantasy IX? A better version will be available for you to create new items.

More information about this hack[/indent]

Soldier Office Upgraded
[indent=2]Once you start Chapter 2, you'll be able to recruit new units at the soldier office. Forget about those level 1 squires with terrible equipment and no abilities!

More information about this hack[/indent][/spoiler][/indent]

King of Ivalice Revolution
[indent=2]This version is just like the original King of Ivalice, but heavily alters the vanilla (original) aspects of the game, like generic jobs, generic monsters, items and abilities in order to give a different, new flavor to the mod for players who are interested in that kind of experience. These edits are meant to make the game fun and different; not to give you a hard time, but still challenging enough. This idea is inspired by Celdia's Complete Patch.

This includes all of KoI's original features!


  • Xifanie


  • Xifanie

  • Elric


  • Xifanie (French Maid)

  • Toshiko

  • Xifanie

ASM Hacks
  • Xifanie