Users browsing this thread: 1 Guest(s)
Expanding Names and Renaming
[Incomplete!]
I will use this thread to share information to those who wish to have a guide to hex hacking - specifically to do the task of renaming spells, esper names, attacks, lores, and items, among other things. I've always been bothered by the translation of spells, espers and everything else in the game, but it wasn't until this summer that I decided to learn hex myself and start doing these changes after seeing metroidquest's hack "the eternal crystals". Though I'm far from finished, I believe people should have easy access to this data.
Helpful information:
--Final Fantasy 6 Banks (Some information as of the location of the data you need is located here: )
http://slickproductions.org/docs.php?id=FF6
Before I start, please keep the following detail in mind:
1- If you wish to edit something IN BATTLE, then you'd best look for the disassembly banks "C1" and "C2", as the battle data is contained in these files.
2 - If you wish to edit something in the MENUS, then look for the disassembly bank "C3".
This means that the game is accessing data for battles and menus from one address.
1 - Magic Spells in the game
In Menu:
C3/4FA1: A20300 LDX #$0003 (X position of left half of spells)
C3/4FAC: A21000 LDX #$0010 (X position of right half of spells)
C3/4FB5: A00700 LDY #$0007 (spell letter length)
C3/4FBA: A067F5 LDY #$F567 (spell name address)
C3/4FBF: A9E6 LDA #$E6 (spell name bank)
C3/5052: A2929E LDX #$9E92 (position of spell progress)
C3/5AF9: A2929E LDX #$9E92 (space between spell name and ':')
C3/87CB: AE3421 LDX $2134
In Battle:
C1/601A: A907 LDA #$07 (7 = spell name length)
C1/6031: BF68F5E6 LDA $E6F568,X (Load Spell name X)
C1/65E8: A907 LDA #$07 (from C1/65AA)(7 = spell name length)
C1/65F3: BF67F5E6 LDA $E6F567,X (Load Spell name X)
C1/6B1D: A907 LDA #$07
C1/6B2E: BF67F5E6 LDA $E6F567,X (Load spell name X)
In simpler words, the "address" E6 F5 67 contains the spell names in the ROM (that is, using the HIROM notation).
Spells are limited to 7 characters, including the icon that specifies whether it's a healing, attack or support spell. So if you'd like to expand the spell names in battle, for example, to 10 characters, you would need to replace the "07" bytes in the C1 bank (addresses C1/601A, C1/65E8 and C1/6B1D) to "0A".
When increasing the number of characters from 7 to 10 in the example, you will run into a problem: you will see that to successfully rename the spells you will need to overwrite some data from other parts of the game, which will in turn screw up your ROM. You will need to make some space in your ROM to create the new spell names.
That is where the addresses C1/6031 , C1/65F3 , and C1/6B2E come into play. When you create the new spell names, you will need to "tell the ROM" to "look for the new spell names" in the address you've created them. If the spell data is created at "F0 11 03", then I would need to change the three locations above mentioned from the old address to "F0 11 03".
2 - Lore Names:
In Menu:
C3/525D: A20300 LDX #$0003 (Starting position of Lore list in menu)
C3/5266: A00A00 LDY #$000A (lore name length)
C3/526B: A0FDF9 LDY #$F9FD (lore name address)
C3/5270: A9E6 LDA #$E6 (lore name bank)
C3/5295: A2959E LDX #$9E95 (position of ... in lore menu)
C3/5C91: B7818BA8AB9E00 (position of and word "Lore")
In Battle:
C1/6665: A90A LDA #$0A (from C1/665E)(10 = lore name length)
C1/6670: BFFDF9E6 LDA $E6F9FD,X (Load Lore name X)
Lore Names are 10 characters long (both in battle and in the menu). You will need to create the new lore names in a new address and tell the rom to look for the new names.
3 -Esper Names:
In MENU:
C3/34F4: A00800 LDY #$0008 (esper name length)
C3/34F7: BFE1F6E6 LDA $E6F6E1,X (Load Esper name)
C3/34F0: 0A ASL A
C3/34F1: 0A ASL A
C3/34F2: 0A ASL A
C3/3508: A00800 LDY #$0008
C3/54E6: A20300 LDX #$0003 (X position of left half of espers)
C3/54F1: A21100 LDX #$0011 (X position of right half of espers)
C3/54FA: A00800 LDY #$0008 (esper name length)
C3/54FF: A0E1F6 LDY #$F6E1 (esper name address)
C3/5504: A9E6 LDA #$E6 (esper name bank)
C3/5539: A2939E LDX #$9E93
C3/555D: A00C00 LDY #$000C (esper name is 8 letters, 1 for space, 3 more for MP cost)
C3/59BD: 0A ASL A
C3/59BE: 0A ASL A
C3/59BF: 0A ASL A
C3/59C0: AA TAX
C3/59C1: A00800 LDY #$0008 (Indirectly says below is 8 chars long)
C3/59C4: BFE1F6E6 LDA $E6F6E1,X (Load Esper X's name)
In BATTLE:
C1/5FF3: A908 LDA #$08 (8 = Esper name length)
C1/6007: BFE1F6E6 LDA $E6F6E1,X (Load Esper name X)
C1/65D0: A908 LDA #$08 (8 = Esper name length)
C1/65DB: BFE1F6E6 LDA $E6F6E1,X (Load Esper name X)
C1/668D: A908 LDA #$08 (from C1/6686)(Sets name length?)
C1/6698: BFE1F6E6 LDA $E6F6E1,X (Loads Esper name X)
C2/E091: 04 03 TSB $03 (Change the 04 bit)
For esper names, the easy part comes in editing the names in battle.
4- Item Names
In Menu:
C3/2714: A90D LDA #$0D (13 = item name length)
C3/271F: BF00B3D2 LDA $D2B300,X (Get letter at D2B300 + (index * 13) of item name)
C3/80D4: A90D LDA #$0D
C3/80DF: A00D00 LDY #$000D (Start the count of letters at 13)
C3/80E2: BF00B3D2 LDA $D2B300,X (Load letter X of item name)
C3/85BC: BF348DC3 LDA $C38D34,X (grab " can be used by:")
C3/85C7: C01100 CPY #$0011 (length of " can be used by:" ??)
C3/85CE: E00D00 CPX #$000D (at most, uses the full item name length before putting in "can be used by:")
C3/900D: A00D00 LDY #$000D
C3/9010: BF00B3D2 LDA $D2B300,X (load item X name)
C3/901F: A00D00 LDY #$000D (item name length)
C3/9D3D: A00D00 LDY #$000D (in equip screen, when manually equipping)
C3/9D40: BF00B3D2 LDA $D2B300,X (item name)
C3/9D4F: A00D00 LDY #$000D (write 13 blank spaces)
C3/C07D: A90D LDA #$0D
C3/C088: A00D00 LDY #$000D (item name length in shops)
C3/C08B: BF00B3D2 LDA $D2B300,X (item name)
C3/80ED: A9C1 LDA #$C1 (colon in the font)
C3/80F6: A01000 LDY #$0010 (blank out item name, colon, and quantity)
C3/93FF: A21B7A LDX #$7A1B (position of the R-hand slot)
C3/9411: A29B7A LDX #$7A9B (position of the L-hand slot)
C3/9451: A21B7B LDX #$7B1B (accessory, slot 1)
C3/945F: A29B7B LDX #$7B9B (accessory, slot 2)
In Battle:
C1/6052: A90D LDA #$0D (13 = item name length)
C1/6069: BF01B3D2 LDA $D2B301,X (Load item name X)
C1/6527: A90D LDA #$0D (13 = item name length)
C1/6530: BF00B3D2 LDA $D2B300,X (Loads Item name X)
C1/653D: A907 LDA #$07
C1/654B: BF006FD2 LDA $D26F00,X (Loads Weapon/Armor type word X)
C1/6561: A90D LDA #$0D
C1/6568: A90D LDA #$0D
C1/6574: A90D LDA #$0D (13 = item name length)
C1/6578: BF00B3D2 LDA $D2B300,X (Loads Item name X)
C1/6A47: A90D LDA #$0D (13 = item name length)
C1/6A58: BF00B3D2 LDA $D2B300,X (Loads Item name X)
C1/6A91: A90D LDA #$0D (13 = item name length)
C1/6AA2: BF00B3D2 LDA $D2B300,X (Loads Item name X)
I will use this thread to share information to those who wish to have a guide to hex hacking - specifically to do the task of renaming spells, esper names, attacks, lores, and items, among other things. I've always been bothered by the translation of spells, espers and everything else in the game, but it wasn't until this summer that I decided to learn hex myself and start doing these changes after seeing metroidquest's hack "the eternal crystals". Though I'm far from finished, I believe people should have easy access to this data.
Helpful information:
--Final Fantasy 6 Banks (Some information as of the location of the data you need is located here: )
http://slickproductions.org/docs.php?id=FF6
Before I start, please keep the following detail in mind:
1- If you wish to edit something IN BATTLE, then you'd best look for the disassembly banks "C1" and "C2", as the battle data is contained in these files.
2 - If you wish to edit something in the MENUS, then look for the disassembly bank "C3".
This means that the game is accessing data for battles and menus from one address.
1 - Magic Spells in the game
In Menu:
C3/4FA1: A20300 LDX #$0003 (X position of left half of spells)
C3/4FAC: A21000 LDX #$0010 (X position of right half of spells)
C3/4FB5: A00700 LDY #$0007 (spell letter length)
C3/4FBA: A067F5 LDY #$F567 (spell name address)
C3/4FBF: A9E6 LDA #$E6 (spell name bank)
C3/5052: A2929E LDX #$9E92 (position of spell progress)
C3/5AF9: A2929E LDX #$9E92 (space between spell name and ':')
C3/87CB: AE3421 LDX $2134
In Battle:
C1/601A: A907 LDA #$07 (7 = spell name length)
C1/6031: BF68F5E6 LDA $E6F568,X (Load Spell name X)
C1/65E8: A907 LDA #$07 (from C1/65AA)(7 = spell name length)
C1/65F3: BF67F5E6 LDA $E6F567,X (Load Spell name X)
C1/6B1D: A907 LDA #$07
C1/6B2E: BF67F5E6 LDA $E6F567,X (Load spell name X)
In simpler words, the "address" E6 F5 67 contains the spell names in the ROM (that is, using the HIROM notation).
Spells are limited to 7 characters, including the icon that specifies whether it's a healing, attack or support spell. So if you'd like to expand the spell names in battle, for example, to 10 characters, you would need to replace the "07" bytes in the C1 bank (addresses C1/601A, C1/65E8 and C1/6B1D) to "0A".
When increasing the number of characters from 7 to 10 in the example, you will run into a problem: you will see that to successfully rename the spells you will need to overwrite some data from other parts of the game, which will in turn screw up your ROM. You will need to make some space in your ROM to create the new spell names.
That is where the addresses C1/6031 , C1/65F3 , and C1/6B2E come into play. When you create the new spell names, you will need to "tell the ROM" to "look for the new spell names" in the address you've created them. If the spell data is created at "F0 11 03", then I would need to change the three locations above mentioned from the old address to "F0 11 03".
2 - Lore Names:
In Menu:
C3/525D: A20300 LDX #$0003 (Starting position of Lore list in menu)
C3/5266: A00A00 LDY #$000A (lore name length)
C3/526B: A0FDF9 LDY #$F9FD (lore name address)
C3/5270: A9E6 LDA #$E6 (lore name bank)
C3/5295: A2959E LDX #$9E95 (position of ... in lore menu)
C3/5C91: B7818BA8AB9E00 (position of and word "Lore")
In Battle:
C1/6665: A90A LDA #$0A (from C1/665E)(10 = lore name length)
C1/6670: BFFDF9E6 LDA $E6F9FD,X (Load Lore name X)
Lore Names are 10 characters long (both in battle and in the menu). You will need to create the new lore names in a new address and tell the rom to look for the new names.
3 -Esper Names:
In MENU:
C3/34F4: A00800 LDY #$0008 (esper name length)
C3/34F7: BFE1F6E6 LDA $E6F6E1,X (Load Esper name)
C3/34F0: 0A ASL A
C3/34F1: 0A ASL A
C3/34F2: 0A ASL A
C3/3508: A00800 LDY #$0008
C3/54E6: A20300 LDX #$0003 (X position of left half of espers)
C3/54F1: A21100 LDX #$0011 (X position of right half of espers)
C3/54FA: A00800 LDY #$0008 (esper name length)
C3/54FF: A0E1F6 LDY #$F6E1 (esper name address)
C3/5504: A9E6 LDA #$E6 (esper name bank)
C3/5539: A2939E LDX #$9E93
C3/555D: A00C00 LDY #$000C (esper name is 8 letters, 1 for space, 3 more for MP cost)
C3/59BD: 0A ASL A
C3/59BE: 0A ASL A
C3/59BF: 0A ASL A
C3/59C0: AA TAX
C3/59C1: A00800 LDY #$0008 (Indirectly says below is 8 chars long)
C3/59C4: BFE1F6E6 LDA $E6F6E1,X (Load Esper X's name)
In BATTLE:
C1/5FF3: A908 LDA #$08 (8 = Esper name length)
C1/6007: BFE1F6E6 LDA $E6F6E1,X (Load Esper name X)
C1/65D0: A908 LDA #$08 (8 = Esper name length)
C1/65DB: BFE1F6E6 LDA $E6F6E1,X (Load Esper name X)
C1/668D: A908 LDA #$08 (from C1/6686)(Sets name length?)
C1/6698: BFE1F6E6 LDA $E6F6E1,X (Loads Esper name X)
C2/E091: 04 03 TSB $03 (Change the 04 bit)
For esper names, the easy part comes in editing the names in battle.
4- Item Names
In Menu:
C3/2714: A90D LDA #$0D (13 = item name length)
C3/271F: BF00B3D2 LDA $D2B300,X (Get letter at D2B300 + (index * 13) of item name)
C3/80D4: A90D LDA #$0D
C3/80DF: A00D00 LDY #$000D (Start the count of letters at 13)
C3/80E2: BF00B3D2 LDA $D2B300,X (Load letter X of item name)
C3/85BC: BF348DC3 LDA $C38D34,X (grab " can be used by:")
C3/85C7: C01100 CPY #$0011 (length of " can be used by:" ??)
C3/85CE: E00D00 CPX #$000D (at most, uses the full item name length before putting in "can be used by:")
C3/900D: A00D00 LDY #$000D
C3/9010: BF00B3D2 LDA $D2B300,X (load item X name)
C3/901F: A00D00 LDY #$000D (item name length)
C3/9D3D: A00D00 LDY #$000D (in equip screen, when manually equipping)
C3/9D40: BF00B3D2 LDA $D2B300,X (item name)
C3/9D4F: A00D00 LDY #$000D (write 13 blank spaces)
C3/C07D: A90D LDA #$0D
C3/C088: A00D00 LDY #$000D (item name length in shops)
C3/C08B: BF00B3D2 LDA $D2B300,X (item name)
C3/80ED: A9C1 LDA #$C1 (colon in the font)
C3/80F6: A01000 LDY #$0010 (blank out item name, colon, and quantity)
C3/93FF: A21B7A LDX #$7A1B (position of the R-hand slot)
C3/9411: A29B7A LDX #$7A9B (position of the L-hand slot)
C3/9451: A21B7B LDX #$7B1B (accessory, slot 1)
C3/945F: A29B7B LDX #$7B9B (accessory, slot 2)
In Battle:
C1/6052: A90D LDA #$0D (13 = item name length)
C1/6069: BF01B3D2 LDA $D2B301,X (Load item name X)
C1/6527: A90D LDA #$0D (13 = item name length)
C1/6530: BF00B3D2 LDA $D2B300,X (Loads Item name X)
C1/653D: A907 LDA #$07
C1/654B: BF006FD2 LDA $D26F00,X (Loads Weapon/Armor type word X)
C1/6561: A90D LDA #$0D
C1/6568: A90D LDA #$0D
C1/6574: A90D LDA #$0D (13 = item name length)
C1/6578: BF00B3D2 LDA $D2B300,X (Loads Item name X)
C1/6A47: A90D LDA #$0D (13 = item name length)
C1/6A58: BF00B3D2 LDA $D2B300,X (Loads Item name X)
C1/6A91: A90D LDA #$0D (13 = item name length)
C1/6AA2: BF00B3D2 LDA $D2B300,X (Loads Item name X)
« Next Oldest | Next Newest »
|
||||
Users browsing this thread: 1 Guest(s)