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