----------------------------- Final Fantasy Tactics Advance US Version ADVANCED HACK GUIDE by JoKyR ----------------------------- Version 2.0 12-21-2005 Copyright 2005 Joseph Kyle Rogan This may not be reproduced under any circumstances except for personal, private use. It may not be placed on any web site or otherwise distributed publicly without advance written permission. Use of this guide on any other web site or as a part of any public display is strictly prohibited, and a violation of copyright. All trademarks and copyrights contained in this document are owned by their respective trademark and copyright holders. ----------------- TABLE OF CONTENTS ----------------- I. INTRODUCTION II. GROWTH ITEMS II.i. The Basics II.ii. Sample Codes III. CHARACTER LEVELS III.i. The Basics III.ii. Sample Codes IV. NAMES V. VERSION HISTORY VI. CREDITS --------------- I. INTRODUCTION --------------- Hello. This is my very first video game faq ever, so please be gentle. I'll try to be as concise as possible. This guide was originally intended to focus solely on hacking the stats of the four growth items (Sequence, Sapere Aude, Peytral, and Acacia Hat). Other hackers have already done an excellent job of cracking this game to pieces, and this was one of the only corners of the game that had been left untouched. However, as you can see in my version history, it was rejected. Twice. Some folks on the message board were very kind, and politely suggested that I find ways to add more codes. I thought long and hard about this, and decided that I didn't want to repeat the work of others. However, there were a few other tiny little areas of the game that I might be able to hack "a few more codes" out of. These new codes really have nothing to do with each other, and are united in this guide only by the common trait of being left out of previous faqs. Indeed, none of them are really as useful as the growth item codes, but you may be able to find an interesting purpose for them. So, before you go any further, you need to know that you won't find any master codes here, nor should you expect a comprehensive code database. This site already has several faqs with all the standard item, character, and monster bank codes. The only codes I'm including in this guide are codes that I couldn't find anywhere else, in any format. You also need to know that this guide is NOT intended to teach you how to hack, write, or encrypt your own codes. Labmaster has an excellent set of primers on www.cheatandwin.com to do that, already. This guide is written primarily for seasoned hackers who want some new information about unexplored areas of the game. I will do my best to explain how the game deals with these specific topics, give you some addresses and values, and offer some sample codes in as many formats as I know how. I hope you find this helpful. But, if you want to alter the sample codes to different values, I'm sorry to say that you'll have to learn how to do it on your own. Don't worry, though. It's not that hard. In fact, this is the game I learned how to hack with. It has a wonderfully diverse set of challenges that have definitely prepared me for future endeavors. And, while I'm eager to move on to other projects, I suppose I don't mind being forced to juice a little bit more out of one of my favorite games of all time. -Happy Hacking, JoKyR maestro at KYSOff dot com ---------------- II. GROWTH ITEMS ---------------- II.i. The Basics ---------------- The four growth items are earned in the game by completing special Tournament, Clan League, and Link Missions. An item is given as a reward the first time one of its associated missions is successfully completed. These items cannot be sold or traded. Without hacking the item's quantity, you can only ever earn one of each. After you earn (or hack) the item, one of its stat values will increase each time you successfully complete one of its associated missions. The missions associated with each item are as follows: Sequence: 40, Link 1, 2, 3 Sapere Aude: 41, Link 4, 5, 6 Peytral: 43 Acacia Hat: 42, Link 7, 8, 9 The stats that increase (and their original values) are as follows: Sequence: Atk (32) Sapere Aude: Pow (5) Peytral: Def (28) Acacia Hat: Res (2) The game stores an 8-bit hex value at the following addresses to determine the growth of the item's stat: 02002031 = Sequence 02002032 = Sapere Aude 02002033 = Peytral 02002034 = Acacia Hat When you first obtain the item, the hex value is 0x00. Every time you successfully complete an associated mission, this value increases by 0x01. The hex value maxes out at 0xFF (255). Don't worry, the game won't loop it back to 0x00 if you keep completing missions. The stat value is equal to the original value plus the hex value. However, the in-game value maxes out at 255. II.ii. Sample Codes ------------------- "Max Growth Item Stats" These codes will set all four hex values to 0xFF, giving you the max stats for all four items. CBA: 32002031 00FF 32002032 00FF 32002033 00FF 32002034 00FF MadCatz GS: FEEC9DFC 8CB1 F67D9F9C C9B1 F6EC9DBC C9B1 BE75BFDA 8CB1 GSV1/2: 04C6E332 2699A82D D6602D2C 60B0B4B0 DE31F6F8 B12F2F70 B43D05D7 0F313818 PARV3: (Yes, this is a slide code, so it only needs two lines.) 704C4B3B AFDE9843 54FA8281 4E7BADFC --------------------- III. CHARACTER LEVELS --------------------- III.i. The Basics ----------------- Standard experience levels for all characters (including monsters in the Monster Bank) range from 0-50. Of course, characters generally start with a level greater than zero. Levels greater than 50 can be hacked, but a character that is level 50 or higher can no longer level up. He/she will continue to earn experience points until he/she has 99 experience points, and then will stop earning experience altogether. I should warn you, though, that unlike some RPGs, or games like Pokemon, in FFTA a character's level has NO direct effect on their stats. Changing a character's experience level will NOT change their statistics, nor will it affect their performance in combat (excepting, of course, a few spells that only affect characters of certain levels). A character's statistics only increase when they level up, and the amount they increase is independent of their level. So, why would you want to hack a character's level? I can think of three reasons. First, a character's level affects their competence when completing dispatch missions. The higher the level, the better. Check out Terence Fergusson's Mechanics Guide for more info on this. Second, the average level of the members of your party determines the approximate levels of the enemies you encounter in random engagements. If you have a large party, but have only been concentrating on leveling up a few of its members, then you will soon find that leveling up becomes difficult, in general. The enemies you face will all have levels in the middle of your own level range. So, the low level members will be too weak to survive long against the relatively powerful enemies you face, and the high level members will be getting very little experience for fighting relatively low level enemies. Adjusting the levels of your characters can fix this problem, and can be used to make enemies stronger or weaker, as needed. Third, you may want to lower your characters' levels to give them more opportunities to level up. Their stats stop growing after they reach level 50, so why not knock them back down to zero and start all over? Or, if you're really maniacal, you can use a pair of 8-bit constant write slide codes (included in the sample codes section) to set their levels to 0 and their experience points to 99. Then, every time they earn any amount of experience, they'll level up... to infinity. Just four lines of code and your characters get obscenely powerful, fast. Sure, you could just hack their stats manually, but that takes quite a few more codes, and may not be as fun. Each experience level is an 8-bit value ranging from 0x00 (level 0) to 0x32 (level 50). These values are located at the following addresses: 02000089 = Experience Level for Character 1 02000191 = 2 02000299 = 3 020003A1 = 4 020004A9 = 5 020005B1 = 6 020006B9 = 7 020007C1 = 8 020008C9 = 9 020009D1 = 10 02000AD9 = 11 02000BE1 = 12 02000CE9 = 13 02000DF1 = 14 02000EF9 = 15 02001001 = 16 02001109 = 17 02001211 = 18 02001319 = 19 02001421 = 20 02001529 = 21 02001631 = 22 02001739 = 23 02001841 = 24 III.ii. Sample Codes -------------------- "ALL Lvl 0" These codes will reset all the characters' levels to zero. CBA: 32000089 0000 32000191 0000 32000299 0000 320003A1 0000 320004A9 0000 320005B1 0000 320006B9 0000 320007C1 0000 320008C9 0000 320009D1 0000 32000AD9 0000 32000BE1 0000 32000CE9 0000 32000DF1 0000 32000EF9 0000 32001001 0000 32001109 0000 32001211 0000 32001319 0000 32001421 0000 32001529 0000 32001631 0000 32001739 0000 32001841 0000 MadCatz GS: 3477720A 53B3 0443622B 73AF 1473720B 32A3 2407E2AA 12DF 3437D28E 53D3 0403C2AF 73CF 1433D28F 32C3 A6450A2E 12BF B6753A0A 53BF 86412A2B 73A3 96713A0B 32AF A605AAAA 12D3 B6359A8E 53DF 86018AAF 73C3 96319A8F 32CF 21576202 732E 31677222 7322 01536203 123E 11637223 1232 2117C286 734E 3127D2A6 7342 0113C287 125E 1123D2A7 1252 A3552A02 7322 GSV1/2: 2C2F9FD0 CE30C39C 6F5CBD1B A45B9C08 6F695F0A F499AAA4 12DE170D BFC89407 642401B5 D7041F58 4CD2329E 8EF9F1F2 5F3B546E 2502C602 0E90C451 4C7463A8 A093A5DA C8657070 8DB0FCC4 CDA57EE7 B7BB95EF 6FFDF9FD 017E263A 33FB5224 10D27DE1 819518F4 4A5ECBF7 6ABCF25B DD6458A2 414C2328 2E5A448E EE041101 DFEDBD4C 7A0CECB2 88FC1DB8 E2795C9E D7E808F8 EAAC2335 5448CC03 36DDE4B0 25A24576 B4026B8B 9EF07E18 9CFE8F21 DEEE30D4 D0D117C7 9ED13A34 216D37DE PARV3: (Yep, another two line slide code.) DEA4AC35 AC0EC0FE 69572D1C 2F49DEEF "ALL Lvl 50" The opposite of the previous batch, these will max out every character's level at 50. CBA: 32000089 0032 32000191 0032 32000299 0032 320003A1 0032 320004A9 0032 320005B1 0032 320006B9 0032 320007C1 0032 320008C9 0032 320009D1 0032 32000AD9 0032 32000BE1 0032 32000CE9 0032 32000DF1 0032 32000EF9 0032 32001001 0032 32001109 0032 32001211 0032 32001319 0032 32001421 0032 32001529 0032 32001631 0032 32001739 0032 32001841 0032 MadCatz GS: 1C33F3CB B6C1 2C07E3EA 96DD 3C37F3CA D7D1 0C43636B F7AD 1C73534F B6A1 2C47436E 96BD 3C77534E D7B1 8E018BEF F7CD 9E31BBCB B6CD AE05ABEA 96D1 BE35BBCA D7DD 8E412B6B F7A1 9E711B4F B6AD AE450B6E 96B1 BE751B4E D7BD 0913E3C3 965C 1923F3E3 9650 2917E3C2 F74C 3927F3E2 F740 09534347 963C 19635367 9630 29574346 F72C 39675366 F720 8B11ABC3 9650 GSV1/2: 47386AC1 BB66F252 8D0B558D 7F17160C BEE4A230 FBAA3756 9344CA71 6B0F6766 22705BC0 61FC4DDE 11B6F443 76348FA1 A36C8D67 AEACF8E6 4F32BD13 0F3EDF89 46050E46 D09A542A 21560A46 AF9FEEFA B2510484 D60A8555 DC6D30DE 19B13C24 12A73DE4 4693BC74 BAAF5E60 7BA1CDE8 C3ED4359 F54A9656 A75CA94A C55ABE81 0BE30480 A582130E 16A2D9BF 59153750 475BB858 15F7D8A7 D0E89375 E2470A17 1BF51D7C F76F089A 4FB7A57D 0E2ABD58 4A005DFF 67FA1812 0912C1B7 8D605113 PARV3: (Once again, slide code heaven.) DEA4AC35 AC0EC0FE 369104C2 0DF80DA5 "ALL Lvl 0 Exp 99" These codes are described above in The Basics. Keep your codes turned on while you play, and your characters should boost their stats extremely quickly. I'm only writing the PARV3 codes, though, because it's the only hacking device with 8-bit slide codes. Sorry. It shouldn't be hard to just mix the above level zero codes with Labmaster's "Level Up" codes, though. PARV3: DEA4AC35 AC0EC0FE 69572D1C 2F49DEEF 59FCEE15 64D3D6EF 388B9EAD A88A0879 --------- IV. NAMES --------- Unfortunately, this section is not yet complete. Some of it is pure speculation. I still have a lot of testing and hacking left to do, but I've uncovered enough information that other hackers may still find this section useful. TetrisTheMovie seems to be the first to have broken ground on this subject, and I highly recommend you read his "Clan and Hero Name changer codes" before you read this section. I will be building upon and further expanding the information in his guide. That said, here we go. Any given name in FFTA is represented by an address that contains another 32-bit address, that points to a string of bytes which represent the individual characters of the name. In other words, when the game checks for a name, it goes to one address. Then, it is directed to a new address which contains either the first character of the name, or a code for the starting point of a name. Finally, it will read all the characters of the name until it reaches the byte(s) designated as the end of the character string. For example, when looking for the name of the main character, the game will first go to address 0x02000080. By default, that address contains the 32-bit value 0x02001F1C. At this point, if you've read TetrisTheMovie's faq, you will hopefully recognize 0x02001F1C as the address for the first 16-bit character of the name. If you've left the character's name as Marche, then it should be a capital "M", or 0xBC80. The next two bytes would be lower case "a", or 0xCA80, and so on until you reach the end of the name and the value 0x0000, which signals the end of the string. So, why does the game do this? Why doesn't the game just store the character string at the original address in the first place? Because, as I'm sure you've noticed, the vast majority of the names in FFTA cannot be customized. Again, if you read Terence Fergusson's Mechanics Guide, you'll find several long lists of almost all the possible names used in FFTA. These names are stored as character strings in the actual ROM, and therefore can't be altered (easily). Rather than creating a new character string in the RAM, the game simply creates a 32-bit address that points to the location of the character string in the ROM. The original addresses (the pointers) for each character's name are as follows: 02000080 = Main Character's Name (Set to 0x02001F1C by default.) 02000188 = Montblanc (Default 0x085512C7) 02000290 = Character 3 02000398 = 4 020004A0 = 5 020005A8 = 6 020006B0 = 7 020007B8 = 8 020008C0 = 9 020009C8 = 10 02000AD0 = 11 02000BD8 = 12 02000CE0 = 13 02000DE8 = 14 02000EF0 = 15 02000FF8 = 16 02001100 = 17 02001208 = 18 02001310 = 19 02001418 = 20 02001520 = 21 02001628 = 22 02001730 = 23 02001838 = 24 I suspect that there are similar addresses for the clan name, enemies, and monster bank monsters. I just haven't looked for them all, yet. It is also important to note that, for some unknown reason, the game uses two different schemes for representing the characters used in names. I suspect this has something to do with using the main character's name and the clan name in the game script. The first scheme is comprised of the 16-bit values found in TetrisTheMovie's guide. This scheme is only used for the main character and clan names. There is no code to signal the beginning of a character string, and therefore names can be truncated by slightly altering the pointer address. (e.g. If your main character's name is "Marche", then changing the pointer address to 0x02001F1E will result in the name "arche".) To signal the end of a name, use the value 0x0000. The second is an 8-bit scheme very similar to the 16-bit scheme. I haven't yet tested all the values of this scheme, but it seems that most of them can be obtained by taking the left two digits of the 16-bit values and adding 0x01. For instance, "M" is represented by 0xBC80 in 16-bits, and 0xBD in 8-bits. When using the 8-bit scheme, it is necessary to signal the start of a character string with the value 0x01. In general, these names cannot be truncated. The pointer address must contain the location of the 0x01 byte. Pointing an address to the middle of a character string will generally result in garbled pixels, or possibly a system crash. Similar to the 16-bit scheme, the value 0x00 is used to end a character string. As far as I can tell, the two schemes are interchangeable. The main character's name can be pointed to a ROM value, and secondary character names can be pointed to the main character's string without problems. You could probably, therefore, code the character string at 0x02001F1C using the 8-bit scheme, but I would guess that this might cause problems for the game script. At this time, I don't have any kind of list of the locations of the different names stored on the ROM ready for you. However, I will say that they're all in the 0x085XXXXX area. If you have a ROM, though, using the information I gave you above, it shouldn't be too difficult to create a table file for the 8-bit scheme, and use a hex editor (along with TFergusson's guide) to find the ones you want. Now, here's the part where we start taking advantage of all this information. There are several ways that we can change names in FFTA: 1.) If you just want to change the name of the main character or your clan, you can follow the method outlined in TetrisTheMovie's guide to change the name to whatever you want. 2.) If you want to change a character's name to something on the list of names programed in the ROM, you can change the value of the 32-bit address to point to the new name's character string. Keep in mind though, that doing this for the main character, clan, or any of the storyline characters (Ritz, Cid, etc.) probably won't change their names in the game script. 3.) If you want to make slight alterations to a name that is programed in the ROM, you may be able to use ROM patch codes to change the character string. Unfortunately, I don't have any experience with that type of hacking, so I can't help you much, there. And, I'm not 100% sure, but I believe such alterations would only be temporary, and the codes would need to be used every time you play the game. 4.) This last one excites me the most. If we can find an unused section of the RAM, then we should be able to create our own brand new character strings, and then point the original addresses to the new strings. By doing this, we could change any name to anything we want! I haven't even started testing this, though. I imagine it will take some work to find a good place to put the character string, where it won't get any interference but will still be copied to the game's battery file. Well, that's pretty much where I'm at right now. I don't even have sample codes for this section, yet. But, if any prodigious hackers out there want to take this info and do something with it, please keep me updated on your progress. I'm very interested to see what can be done. Fin. ------------------ V. VERSION HISTORY ------------------ v.2.0: 12-21-2005 Changed name to "Advanced Hack Guide" Expanded faq structure. Added sections on "Character Levels" and "Names" v.1.01: 12-14-2005 Minor grammar and comprehension corrections. Resubmitted to GameFAQs, begging CJayC to reconsider. Rejected by GameFAQs because "The topic of your guide is too narrow, and I've seen these codes elsewhere, so it's definitely not that unique." I'm not really bitter, but if anyone else has seen these codes elsewhere, please let me know. That site probably would've saved me a lot of time and effort. v.1.0: 12-13-2005 Original document "Growth Item Hack Guide" focused only on hacking the stats of the four growth items (Sequence, Sapere Aude, Peytral, and Acacia Hat). Rejected by GameFAQs due to "lack_of_content". ----------- VI. CREDITS ----------- Special thanks goes first and foremost to Labmaster for, essentially, teaching me how to hack. His FFTA guide, as well as his hacking primers have proved invaluable. Thanks to Terence Fergusson and TetrisTheMovie for their excellent guides, which I have referenced several times in this document. And finally, thanks to mikeTherob, bobeta, and DeMatt on the GameFAQs message boards for their support and criticism. -JoKyR