In Final Fantasy VI, there is a semi-famous bug called the "Chocobo Riding Glitch". Though it is only possible to trigger this glitch with Banon in an unhacked game, it can actually affect any sprite beyond the Main Characters, Vicks/Wedge, and the Imp. It affects not only Chocobos, but Magitek armor as well.
This patch completes the sprite sheets of the 5 guest characters that are controlled by the player over the course of the game, allowing anyone who is ever in your party to ride a Chocobo or use Magitek. The expanded sheets are Leo, Banon, Ghost, Merchant, and Esper Terra. A full explanation of how it was done is provided in the readme.
It also fixes a few other issues present in the game: (1) Esper Terra now has a tent, and her eye shading was fixed on 2 rarely-used sprites. (2) The Ghost's tent was recolored to bone-white. (3) The "surprised" face for the Soldier Sprite has been redrawn so as not to look like a glitch. (4) The Formation Palettes for Esper Terra and Kefka, which were incorrect in the base game, have been corrected.
This hack is intended to be used by anyone who is tinkering with Final Fantasy VI, whether it's as small as using a save state editor to change the character graphics, or as large as writing a hack to add in new characters.
It is not compatible with any other patch that attempts to fix the Chocobo riding glitch. It is included in CV Reynolds Compilation and Bugfix Patch.
The screenshots below are: (1) The glitch in action on Banon, (2) Banon's expanded sprite, (3) Esper Terra's expanded sprite, and (4) The save screen with all palette correction.
Title: Everybody Gets a Chocobo!
Author: PowerPanda
Version: 1.0
Applies to: FF3us v1.0 (headered)
Contents: everychocobo.ips - apply to your rom to get the changes
everychocobo_removal.ips - reverts your rom back to the original
--------------------------------------------------------------------------------
-=Intro and Description=-
In Final Fantasy VI, there is a semi-famous bug called the "Chocobo Riding Glitch".
You can read about it here:
http://finalfantasy.wikia.com/wiki/Chocobo_riding_glitch
Though it is only possible to trigger this glitch with Banon in an unhacked game,
it can actually affect any sprite beyond the Main Characters, Vicks/Wedge, and
the Imp.
This patch completes the spritesheets of the other 5 sprites that are controled by
the player over the course of the game, upping the total for complete spritesheets
from 15 to 20. The expanded sheets are:
1. Leo
2. Banon
3. The Ghost
4. The Merchant (Locke's costume)
5. Terra in Esper Form
By re-arranging the rom data, I was able to free up enough space to complete the
sheets. You can use it in 3 different ways:
1. You can use a Save State editor to change any character's graphics to these 5.
2. You can combine it with HatZen08's guest adder to add any of these 5 as permanent
guests.
3. If you're a hacker, you can add these characters at other points in the story.
--------------------------------------------------------------------------------
-=Under the Hood=-
To give a short explanation, a full character spritesheet contains 180 8x8 tiles.
Any character that has a full set of battle sprites has 170 tiles. The final 10
"missing" tiles create the 2 poses needed for riding Chocobos and MagiTek armor.
When one of these characters tries to ride a vehicle, the game tries to read tiles
171-180, but ends up reading the first 10 tiles of the next spritesheet over. As a
result, you get a different character, in the wrong pose, and with the wrong palette.
That's why Banon's "riding sprite" is a miscolored standing Esper Terra.
When Square Enix re-released FFVI on the GBA, their fix was to switch Terra in as the
lead character if Banon tried to ride a chocobo. Another hacker, Leet Sketcher, fixed
this bug by adding in a code hook that checked to see if Banon was in front, and if so,
jumped to a different sprite. Both were... complex solutions for a simple problem.
Also, both ONLY accounted for Banon.
This patch takes a different approach. The character after Kefka, Gestahl, is a
55-tile sheet. I have relocated Gestahl's sprite to an empty block of space right before
Terra's sprite, and used the remaining empty space to expand the 5 sheets up
to 180 tiles.
Additionally, I have made a handful of other fixes:
1. Esper Terra now has a tent. Her eye shading was fixed on 2 rarely-used sprites.
2. The Ghost's tent was recolored to bone-white.
3. The "surprised" face for the Soldier Sprite (never used in the base game) has been
redrawn so as not to look like a glitch.
4. Esper Terra and Kefka's Save Screen/Party Select Screen Palettes are incorrect
in the base rom. Both are set to Palette "0". I have corrected these to "5" for
Esper Terra and "3" for Kefka.
--------------------------------------------------------------------------------
-=Known Issues=-
Note, all of these issues are pre-existing, and not caused by this patch.
1. Esper Terra re-uses Terra's portrait, and the Merchant re-uses the Soldier portrait.
This patch does not add in new portraits.
2. HOWEVER, Locke has an exception in the code to not display the Merchant or Soldier
portrait when dressed as them. His portrait will stay the same in the main menu, but
will have the wrong palette on the Party Select Menu (since you never see that menu
during his scenario.) No other character has this code exception, so as long as you
don't use the Merchant or Soldier sprite with Locke, you'll be fine.
3. Esper Terra uses palette 6, but the Save Menu and Party Select Menu only load up to
palette 5. Palettes 5 & 6 are very close to each other, only differing in the colors
used to shade the edges, so most people will never notice this, but it IS technically
a mis-coloration.
4. The shop menu doesn't care what sprite your character has; it will always display
their original graphics. This is not a bug.
Also, note that the repoint of the graphics will make these sheets look garbled in
the hacking program FF3usME. They will appear correctly in other programs and in game.
--------------------------------------------------------------------------------
-=Future Versions=-
I may or may not release another version of this patch. If I do, here are the things
I would like to add:
1. Riding graphics for Kekfa. In order to make space for this, I would have had to
re-point the sprites for almost every NPC in the game. This seemed more work than
it was worth for a character that is never controllable.
2. Adding portraits for Esper Terra, the Merchant, and Kefka. The GBA version had
Esper Terra and Kefka portraits, and Amano did concept art for the merchant that
could be converted. The big thing is finding space in the rom. This would probably
require rom expansion.
--------------------------------------------------------------------------------
Credits
Hacking - PowerPanda
Banon Riding Sprite - LeetSketcher
Leo Riding Sprite - Fauntleroy/FedoraJoe (General Leo Edition)
(hair animation by PowerPanda)
Additional Sprites for Esper Terra, Merchant, Ghost, and Soldier - PowerPanda
Programs Used
FF3usMe 6.80
Cygnus Hex Editor
--------------------------------------------------------------------------------
Code Changes
C0/D112: 00 6A > unchanged (Leo's field sprite location pointer)
C0/D114: 60 7F > A0 80 (Banon's field sprite location pointer)
C0/D116: C0 94 > 40 97 (Esper Terra's field sprite location pointer)
C0/D118: 20 AA > E0 AD (Merchant's field sprite location pointer)
C0/D11A: 80 BF > 80 C4 (Ghost's field sprite location pointer)
C0/D11C: E0 D4 > 20 DB (Kefka's field sprite location pointer)
C0/D11E: 40 EA > 20 F9 (Gestahl's field sprite location pointer)
C0/D25C: D6 20 > unchanged (Leo's field sprite bank pointer)
C0/D25E: D6 20 > unchanged (Banon's field sprite bank pointer)
C0/D260: D6 20 > unchanged (Esper Terra's field sprite bank pointer)
C0/D262: D6 20 > unchanged (Merchant's field sprite bank pointer)
C0/D264: D6 20 > unchanged (Ghost's field sprite bank pointer)
C0/D266: D6 20 > unchanged (Kefka's field sprite bank pointer)
C0/D268: D6 20 > D4 20 (Gestahl's field sprite bank pointer)
C2/CE73 - 00 6A D6 > unchanged (Leo's battle sprite pointer)
C2/CE76 - 60 7F D6 > A0 80 D6 (Banon's battle sprite pointer)
C2/CE79 - C0 94 D6 > 40 97 D6 (Esper Terra's battle sprite pointer)
C2/CE7C - 20 AA D6 > E0 AD D6 (Merchant's battle sprite pointer)
C2/CE7F - 80 BF D6 > 80 C4 D6 (Ghost's battle sprite pointer)
C2/CE82 - E0 D4 D6 > 20 DB D6 (Kefka's battle sprite pointer)
C2/CE85 - 60 7F D6 > 20 F9 D4 (Gestahl's battle sprite pointer)
CF/F951 - D6 00 00 6A > unchanged (Leo's formation sprite pointer)
CF/F955 - D6 00 60 7F > D6 00 A0 80 (Banon's formation sprite pointer)
CF/F959 - D6 00 C0 94 > D6 00 40 97 (Esper Terra's formation sprite pointer)
CF/F95D - D6 00 20 AA > D6 00 E0 AD (Merchant's formation sprite pointer)
CF/F961 - D6 00 80 BF > D6 00 80 C4 (Ghost's formation sprite pointer)
CF/F965 - D6 00 E0 D4 > D6 00 20 DB (Kefka's formation sprite pointer)
D8/EB7C - 02 80 01 24 39 80 11 26 39
> 02 80 01 24 3F 80 11 26 3F (Corrects bug in Esper Terra's OAM Palette)
D8/EB97 - 02 80 01 4C 39 80 11 4E 39
> 02 80 01 4C 3B 80 11 4E 3B (Corrects bug in Kefka's OAM Palette)
Sprite Sheet Hex Locations
INDEX SPRITE NAME ORIGINAL LOCATION NEW LOCATION
FREE SPACE D4F646-D4FFFF D4F606-D4F91F
16/$10 - Leo D66A00-D67F5F D66A00-D6809F
17/$11 - Banon D67F60-D694BF D680A0-D6973F
18/$12 - Esper Terra D694C0-D6AA1F D69740-D6ADDF
19/$13 - Merchant D6AA20-D6BF7F D6ADE0-D6C47
20/$14 - Ghost D6BF80-D6D4DF D6C480-D6D9DF
21/$15 - Kefka D6D4E0-D6EA3F D6DB20-D6F07F
22/$16 - Gestahl D6EA40-D6F11F D4F920-D4FFFF
FREE SPACE (5 tiles) N/A D6F080-D6F11F
Note: To edit the sprite sheets or replace them, please follow this tutorial:
https://www.youtube.com/watch?v=gvX-GQaaz2A
No-Intro Name: Final Fantasy III (USA)
(No-Intro version 20130701-030720)
File SHA-1: 258BCBC5B7BCC25098BF598C4FF2AA6AC00FDE16
ROM SHA-1: 4F37E4274AC3B2EA1BEDB08AA149D8