Back to Page
Revision 9 (current)
Edited by Ferret_Warlord on 11/19/2010 3:13 AM
!!!__The Upgrade Trick__
The upgrade trick in Final Fantasy 3 is a bug that allows you to take items gained in combat and use them to turn other items in your inventory into other things and upgrade your lead character. There are plenty of methods stated on the internet for getting this to work, but are all needlessly complicated in execution. This article focuses on the causes of the glitch and is somewhat technical; a simpler explanation focusing more on the execution will be forthcoming. For clarity's sake, I used screenshots taken from a translated ROM.
!!__Memory__
Memory block 60C0-610F contains the values for your inventory and the first line of your lead character's stats. Its in-battle format is as follows:
┌─────Index
│ ┌──Quantity
V V
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: 00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00─┐
60Dx: 00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00 │
60Ex: 00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00 ├Inventory
60Fx: 00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00─┘
610x: 00│00│00│00 00 00│00 00 00 00 00 00│00 00│00 00<─Lead stats
^ ^ ^ └──┬───┘ └───────┬───────┘ └─┬─┘ └─┬─┘ (1st line)
Job──┘ │ │ │ │ │ └──Max HP
Level───┘ │ └──Experience └───Name └────Current HP
Status─────┘
Each slot in your inventory is split between two bytes. The first is the "index", or what the stack contains. The second is the stack's "quantity", how many of an item is in the stack. Immediately following your inventory is your first character's vital statistics, but we'll get into that later. For now we'll focus on the inventory.
__''***IMPORTANT!***''__ The way your inventory is formatted when you're not in combat is different from when you're in combat. Keep this in mind when you're poking around the memory for yourself. The bug is the result of the battle's format, so we'll deal exclusively with that format.
__Example:__
Just after finishing the Earth Shrine and de-equipping your party, your inventory would look something like this:
[http://i354.photobucket.com/albums/r401/Ferret_Warlord/Final_Fantasy_III_J-0.png]
And, when in combat, the inventory memory block would look like this:
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: B2 02│A6 05│1E 04│72 04│62 04│58 02│00 00│00 00
60Dx: 00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00
60Ex: 00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00
60Fx: 00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00
B2 is the index for SouthWind, and you have two; A6 is the index for Potion, and you have five; 1E is the index for Knife, and you have four; etc.
!!__Item Drops__
The largest a stack can be is 99. If you have 99 in a stack, and you get an item drop, then the game deals with the extra item by finding the next empty quantity byte after the stack, dropping its index there and dropping its quantity in the next index. Let's demonstrate using potions.
During combat...
┌───A6 is the index for potions
│ ┌63 is hex for 99
V V
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: A6 63│00 00│00 00│00 00│00 00│00 00│00 00│00 00
Now, combat is over, and you win a potion.
┌───Stack is full, drop potion into next empty quantity
│
│ ┌Here's the next empty quantity
┌─┴─┐ v
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: A6 63│00 00│00 00│00 00│00 00│00 00│00 00│00 00
So what you end up with is...
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: A6 63│00 __A6__│__01__ 00│00 00│00 00│00 00│00 00│00 00
So now you have 166 of nothing, and no kaiser claws (item at index 01). These values are meaningless, so they get zeroed when the inventory is reorganized.
Now, what would happen if you had a stack of four leather helmets two slots after your potion stack? Arranged, your inventory would look like this:
[http://i354.photobucket.com/albums/r401/Ferret_Warlord/Final_Fantasy_III_J-1.png]
And in battle memory would look like this:
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: A6 63│00 00│62 04│00 00│00 00│00 00│00 00│00 00
Get into combat and win a potion.
┌──The index for the dropped potion
│ is added to the next empty quantity...
v
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: A6 63│00 __A6__│__63__ 04│00 00│00 00│00 00│00 00│00 00
^
└──But the quantity of the dropped potion
(quantity 1) is added to the leather
helmet's index!
So now the helmet stack no longer refers to index 62, but index 63, since the dropped potion's quantity got added to its index. Congratulations, you now have four onion helmets!
!!__Two Item Drops__
Sometimes, you may win more than one of the same item in combat. If your stack of that item is full, the game treats each extra as a separate item and simply iterates the process described above. The good news is that you're almost always garaunteed glitchy behavior because of this. Let's use potions again as an example.
!!__Spawning Kaiser Claws__
Before combat, you have a stack of 99 potions.
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: A6 63│00 00│00 00│00 00│00 00│00 00│00 00│00 00
You win two potions. It handles the first normally.
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: A6 63│00 __A6__│__01__ 0│00 00│00 00│00 00│00 00│00 00
But the second one...
┌──Here's an empty quantity!
V
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: A6 63│00 A6│01 00│00 00│00 00│00 00│00 00│00 00
And so...
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: A6 63│00 A6│01 __A6__│__01__ 00│00 00│00 00│00 00│00 00
It doesn't bother checking to see if the slot is occupied. This results in 166 of nothing, a stack of no kaiser claws, and a stack of 166 kaiser claws. You just spawned claws out of nothing. The other two meaningless stacks get discarded and the other stack gets reset to 99 since you can't have any more than that.
!!__Upgrading Two Items in One Shot__
So, now you have an onion helmet, but want to get the rest of the onion armor. You buy four leather robes and four copper rings, and arrange them in your inventory with your potions thusly.
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: A6 63│00 00│73 04│00 00│8B 04│00 00│00 00│00 00
73 and 8B are the indexes for leather robes and copper rings respectively. You get into combat and win two potions.
┌──First dropped potion is dealt with as
│ described; index 73 becomes 74.
│
│ ┌─Second potion isn't dropped here;
│ │ there's a quantity here.
┌─┴─┐ V
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: A6 63│00 __A6__│__74__ 04│00 00│8B 04│00 00│00 00│00 00
^
└──But this one is empty.
And so you have...
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Cx: A6 63│00 __A6__│__74__ 04│00 __A6__│__8C__ 04│00 00│00 00│00 00
In one shot, your robe and ring have become an onion armor and onion glove respectively.
This method can be done with any number of dropped items. Just remember that the process iterates itself with each dropped item and arrange your inventory accordingly.
!!__Upgrading the Lead Character__
Here's a tip: the way the game checks for a quantity byte is by checking each odd byte in sequence after the full stack. It also fails to go back to the beginning of the inventory once it reaches the end of your pack. This means that there's opportunity to corrupt other pieces of data.
Look back at the chart at the beginning of the article. You'll see that your lead character's data comes immediately after your party's inventory. It is possible to abuse the game's method for dealing with extra items in order to give your lead character an edge.
Place a potion at the end of your inventory like this:
[http://i354.photobucket.com/albums/r401/Ferret_Warlord/Final_Fantasy_III_J-2.png]
Cropping off the first three lines of your inventory, the memory block should now look something like this when in combat.
┌─────Index
│ ┌──Quantity
V V
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Fx: 00 00│00 00│00 00│00 00│00 00│00 00│00 00│A6 63<─Inventory
610x: 00│02│00│5D 00 00│8D B2 A6 AE FF FF│28 00│32 00<─Lead stats
^ ^ ^ └──┬───┘ └───────┬───────┘ └─┬─┘ └─┬─┘ (1st line)
Job──┘ │ │ │ │ │ └──Max HP
Level───┘ │ └──Experience └───Name └────Current HP
Status─────┘
Some notes: Like most systems, multi-byte numbers are read from right to left, so the larger digits are on the right. Strings, like your character's name, are read from left to right.
With this setup, enter combat and win a potion. Here's what happens:
The dropped potion will look for an empty
odd byte after the potion in your inventory.
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Fx: 00 00│00 00│00 00│00 00│00 00│00 00│00 00│A6 63
610x: 00│02│00│5D 00 00│8D B2 A6 AE FF FF│28 00│32 00
^ ^ ^
This one──┘ │ └──But this one is!
isn't empty... │ Let's drop it here.
│
And neither─────┘
is this one.
This results in...
0 1 2 3 4 5 6 7 8 9 A B C D E F
60Fx: 00 00│00 00│00 00│00 00│00 00│00 00│00 00│A6 63
610x: 00│02│00│5D 00 __A6__│__8E__ B2 A6 AE FF FF│28 00│32 00
The rightmost byte for your character's experience was set to A6. And since this byte represents the upper range of this number, this means your character just gained 10,878,976 experience in one round of combat. The game will reset this to 9,999,999 in a bit, but still, your character has the maximum amount of experience allowable. Since the game is programmed to prevent gaining more than one level per combat, this means your character will gain one level per round of combat. Note that also the lead's name gets affected; in this case, Dock's name is changed to Eock.
You can do some other things with this too. Place the potion stack one space back and you can change your character's class. However, this is mostly pointless: Stat changes aren't made unless you go through the job menu. All glitching yourself a job does is allow you to equip different equipment; all other stats are transferred to the new job. You can also crash the game if you try this as a ninja.
Also, if you have already performed the mass experience bug and get two potions with the same setup, or if you get three potions in one round without having done the bug, the character's max HP will shoot up to 9999.
Plus, you can chain the bugs together. Place a stack to be upgraded at the end of your inventory, place the potion stack two spaces back, and get two potion drops in one combat round. You'll upgrade the stack and gain a ton of experience that way.
__Can you upgrade your other characters?__
Theoretically, yes, but you'd have to keep everyone else dead up until the ancient's labyrinth, and that's probably not practical.
__Can you do other things with the bug?__
Everything else is too far removed from the inventory to be of use.
!!!Item Index List
This list was pulled directly from [http://www.gamefaqs.com/nes/563415-final-fantasy-iii/faqs/13262|EmeraldThunder21's savestate hacking guide].
00 Nothing
01 Kaiser Claw
02 CatClaw
03 Dragon Claw
04 Elven Claw
05 HellClaw
06 Nunchuck
07 Tonfa
08 3-Part
09 Mithril Rod
0A Flame Rod
0B Ice Rod
0C Light Rod
0D Ultimate Rod
0E Staff
0F Burning Staff
10 Freezing Staff
11 Shining Staff
12 Golem Staff
13 Rune Staff
14 Eldest Staff
15 Hammer
16 Thor Hammer
17 Battle Axe
18 GreatAxe
19 M. Star Axe
1A Thunder Spear
1B Wind Spear
1C Blood Spear
1D Holy Spear
1E Knife
1F Dagger
20 Mithril
21 M. Gauche
22 Orialcon
23 AirKnife
24 Long Sword
25 W. Slayer Sword
26 Shiny Sword
27 Mithril Sword
28 Serpent Sword
29 IceBlade
2A Tyrving Sword
2B Salamand Sword
2C King Sword
2D Tomahawk
2E Ancient Sword
2F Ashura
30 Blood Sword
31 Defender Sword
32 Triton Hammer
33 Kotetsu
34 Kiku
35 Break
36 Excalibur
37 Masamune
38 Ragnarok
39 Onion Sword
3A Flame Book
3B Ice Book
3C Inferno Book
3D Light Book
3E Illumina Book
3F Boomerang
40 Full Moon
41 Shuriken
42 Blizzard Book
43 Giyaman
44 Earth
45 Rune
46 Madora Harp
47 Dream Harp
48 Lamia Harp
49 Loki Harp
4A Bow
4B GreatBow
4C Killer Bow
4D Rune Bow
4E Yoichi Bow
4F Wooden Arrows
50 Holy Arrows
51 Iron Arrows
52 Bolt Arrows
53 Fire Arrows
54 Ice Arrows
55 Medusa Arrows
56 Yoichi Arrows
57 Nothing
58 Leather Shield
59 Onion Shield
5A Mithril Shield
5B Ice Shield
5C Hero Shield
5D Demon Shield
5E Diamond Shiled
5F Aegis Shield
60 Genji Shield
61 Crystal Shield
62 Leather Helmet
63 Onion Helmet
64 Mithril Helmet
65 Carapace Helmet
66 Ice Helmet
67 Headband
68 Scholar Helmet
69 DarkHood
6A Chakra Helmet
6B Viking Helmet
6C Dragon Helmet
6D Feather Helmet
6E Diamond Helmet
6F Genji Helmet
60 Crystal Helmet
71 Ribbon
72 Cloth Robe
73 Leather Robe
74 Onion Armor
75 Mithril Armor
76 Carapace Armor
77 Ice Armor
78 Flame Mail
79 Kenpo Armor
7A Darksuit
7B Wizard Robe
7C Viking Armor
7D BlackBelt
7E Kinght Armor
7F Dragon Armor
80 Bard Robe
81 Scholar Robe
82 Gaia Robe
83 Demon Armor
84 Diamond Armor
85 Reflect Armor
86 White Robe
87 Black Robe
88 Genji Armor
89 Crystal Armor
8A Rusted Armor
8B Copper Ring
8C Onion Glove
8D Mithril Glove
8E Mithril Ring
8F Thief Glove
90 Gauntlet
91 Power Ring
92 Rune Ring
93 Diamond Ring
94 Diamond Glove
95 Protect Ring
96 Genji Glove
97 Crystal Glove
98 Magic Key
99 Carrot
9A Horn
9B Eye
9C Time Gear
9D Eureka Key
9E Wind Fang
9F Fire Fang
A0 Water Fang
A1 Earth Fang
A2 Lute
A3 Sylx Key
A4 Midget Bread
A5 ?
A6 Potion
A7 HiPotion
A8 Elixir
A9 FenixDown
AA Soft
AB Maiden Kiss
AC EchoHerb
AD Luck Mallet
AE Eyedrop
AF Antidote
B0 Otter Head
B1 Bomb Shard
B2 South Wind
B3 Zeus' Rage
B4 Bomb R. Arm
B5 North Wind
B6 Gods' Rage
B7 Earth Drum
B8 Lamia Scale
B9 Gods' Wine
BA Turtle Shell
BB Devil's Sigh
BC Black Hole
BD Dark Scent
BE Lilith Kiss
BF Imp's Yawn
C0 Split Shell
C1 Paralyzer
C2 Mute Charm
C3 Pillow
C4 Bomb Head
C5 Barrier
C6 Chocobo Rage
C7 White Scent
C8 Flare
C9 Death
CA Meteo
CB W. Wind
CC Life 2
CD Holy
CE Bahamut
CF Quake
D0 Break 2
D1 Drain
D2 Cure 4
D3 Heal
D4 Wall
D5 Leviathan
D6 Fire 3
D7 Bio
D8 Warp
D9 Aero 2
DA Soft
DB Haste
DC Odin
DD Bolt 3
DE Kill
DF Erase
E0 Cure 3
E1 Life
E2 Safe
E3 Titan
E4 Break
E5 Ice 3
E6 Shade
E7 Libra
E8 Confuse
E9 Mute
EA Ifrit
EB Fire 2
EC Ice 2
ED Bolt 2
EE Cure 2
EF Exit
F0 Wash
F1 Ramuh
F2 Bolt
F3 Venom
F4 Blind
F5 Aero
F6 Toad
F7 Mini
F8 Shiva
F9 Fire
FA Ice
FB Sleep
FC Cure
FD Pure
FE Sight
FF Chocobo