Infinite Items

Preparation:

First, figure out what item you're going to be trying for. Scout around and steal from monsters to see what they cough up. Certain extra steps you take in battle will depend on the kind of item you want.

Next, prepare your party.

You will need one character who can "Throw", and one who can "Steal". For simplicity, we'll just use the "Ninja" and "Thief" classes instead of assigning those skills in the Job menu. You will only need one Ninja, and the rest of your party can be Thieves.

If you have it, equip as many Thieves as possible with the "Thief Glove". This will enhance their Steal skill.

Now you will need two (and ONLY two) of a weapon that your Ninja can equip (any weapon, it doesn't matter what) in your Inventory. For example, two Guardian knives, or a Guardian Knife and a Mithril Knife.

Have your Ninja equip ONE of the knives, and leave the other hand empty.

You may wish to SORT your inventory and place the second knife at the top of the screen for easy access in battle. This way, you're not scrolling down half a screen looking for it.
For example, if you were using two Guardian knives, your Inventory would read:
Guardian : 1

and your Equip menu would read:
R.Hand Guardian
L.Hand

Now make certain that you do not have ANY of the item you wish to steal. If you do, this trick will fail.


Battle:

Have your Thief characters defend until it is your Ninja's turn.

With your Ninja, equip the second weapon that you left in the inventory (in our examples, the Guardian knife) by going into the Item menu, selecting the weapon, pressing Up until you see the Left and Right Hands (and their contents, one will be blank), and placing the weapon in the free hand. Your Ninja should now be equipped with two knives.

Now have your Ninja use the Throw command (it's still their turn, so they can do that). Select the BLANK SPOT where the weapon you just equipped used to be. Then select an enemy to throw it at (it doesn't matter who, it will do no damage).

- If the item you want to Steal is something that cannot be USED or THROWN, then you must repeat the above step one more time. For example: Shields, Armor, and Accessories need to repeat the "Throw the Blank Spot" step. Potions and most Weapons don't repeat that step.

Now have your Thief characters use the Steal command on the monster with the item you want. Keep stealing until you get the item. Once you've successfully stolen it...

- If the item is a Potion, use one immediately. You should now see "M5" of the item in your Inventory.

- If the item is a throwable Weapon, then have your Ninja throw one. You should now see "M5" of the item in your Inventory.

- If the item is non-usable and non-throwable, and you've already performed the "Throw Blank Spot" step twice, you don't need to do anything else now. You should see 99 of the item in your Inventory.

You're done. Win the battle or run away.


Infinite Gil

M5 stands for an infinite amount of the item, but there's a minor quirk when you try to sell it in a store. They will only let you sell either one of it, or all of it. You can get infinite Gil by selling them one at a time, or a large chunk by selling them all at once, which is actually selling 255 of them.

If you use the "Sort" command in your Inventory menu, any M5 will turn into 99.


Explanation:

This trick takes advantage of a bug where, when an item is equipped in battle, it does not completely remove the item from the slot, as well as a loophole in how the game adds and subtracts in hexadecimal.

A single byte represents the item quantity, and another item type, in each item slot in your inventory. The range of a hex byte is 00 to FF, or from 0 to 255. There are no negative numbers, so if there is no trap to prevent a number from going less than 0, it will loop around to FF, or 255. Certain commands, such as Item, do have this trap, and will correctly blank out the item spot when you use the last of that item, but the Equip command in battle doesn't.

When you throw the empty spot, the game reduces it's quantity by 1. Since the quantity is 0, and that byte isn't designed to use negative numbers, it loops around to 255. (Or M5 on the screen...M is probably the text character for the hex value of 25.)

When you steal an item, it takes place of the first open item slot, even if a quantity already exists there. It also adds 1 to the quantity, looping 255 back around to 0. This is why you have to either use/throw one right away (to bring it back around to 255) or throw two Blanks (to keep it from reaching 0 in the first place after you've stolen it.)

The game handles the value 255 strangely. Anything less, and the game will change it into 99 (thus why you get 99 shields instead of 254 of them). That's just yet another bug to the game.

Certain actions, such as using Sort in the Inventory screen, performs another kind of trapping. "If Quantity is greater than 99, then change it to equal 99." This is why you end up with 99 shields or armors instead of 254, but like mentioned above, it handles the value 255 strangely. It only seems to apply to that value when using Sort.