Expanded item pack

From Glitch City Wiki
Revision as of 13:40, 1 May 2015 by >Torchickens

An expanded items pack is a glitch derivative in Pokémon Red, Blue, and Yellow and Pokémon Gold, Silver and Crystal; in which the player can access items at a position from beyond the maximum limit imposed by the game.

For example, in Red, Blue and Yellow the normal maximum number of bag items is 20 and the maximum number of stored PC items is 50 and under normal circumstances, trying to obtain another item will bring up a message that there is no more space.

In actuality, the maximum amount of items that the player can use, swap or toss is 255 or whichever 'number of items' address, such as D31D (Red/Blue, D31C (Yellow) (number of items in the overworld items pack) becomes corrupted to.

Attributes of items beyond the item limit

The items and quantities beyond the imposed item limit represent unrelated memory addresses with values interpreted as items or quantities. The memory addresses follow on as expected.

Examples

For expanded bag items in Red, Blue and Yellow, addresses D344 and D345 (-1 in Yellow) are used for item 20 and item 20's quantity respectively. Item 21 (RB: D346, Y:D345) is also used as FF (Cancel) as an item end of list address when the player has a properly terminated list of 20 items.

Item 21's quantity (RB: D347, Y:D346) marks the start of unrelated memory addresses; namely it is the first money byte (multiples of 10,000 in binary coded decimal) hence changing the value of item 21's quantity will affect the multiple of 10,000 in the player's money (e.g. changing the value to 153, hex:99 will give the player 99XXXX money)

Another example is how item 36 quantity (RB: D365, Y:D364) represents the exit location for many maps.

Equation

The following equation can be used to find what memory address an item represents or the other way around. That memory address +1 will represent a quantity.

Memory address = [First item position address -1] + [Cursor positon] + ([Cursor position -1])

Example for expanded bag items in Pokémon Red and Blue:

  • D365 (exit destination) = D31D (number of items) + (x) + (x-1)
  • D365-D31D=0x48
  • 0x48/2=0x24
  • D31D + 0x24 + 0x23 = D364

From this we can gather that item 36 (0x24 in hexadecimal) represents D364 (which is the 'block-x' value that is either 00 ("j." or "x") or 01 (Master Ball)). This means that D365 (map exit) represents item 36's quantity.

Note that this equation does not apply for items 129 (0x81) through to 256 (0x00) because those items represent items 1-128 again.

Activation

Item underflow glitch

This method was discovered by MrWint. To activate this glitch, the player needs, in their first two item slots  :
(Any cheap item)x any qty
(Any item)x 255

Moreover, the player must have an item removable by an event (a drink for the Saffron guards, a fossil, etc.) NOTE : it is not recommended to have other items than these in your bag.

The player should open their item inventory, and toss their first item until the Item menu stops "responding".
Then the player should remove an item from their inventory with an event. Then, opening the Item pack allows the player to edit arbitrary RAM portions as if they were items.

Explanation

When the first item stack is tossed, the game decreases the owned item counter (located at hex:D31C) by 1. It then makes the item x255 erase the item tossed. But because dec:255 equals hex:FF and the game considers FF as the ending marker, the 255 items aren't overwritten, nor the following ones.
The process repeats until the item counter reaches 0, which makes the first item act as the Cancel button. Then giving out an item makes the game decrease the item counter once more, which underflows to hex:FF. The player can then access 255 items, which is far beyond the normal limit.

"Dry" item underflow glitch

This glitch was documented by Luckytyphlosion (thread).

It is a better method because it doesn't require the Saffron guards to be thirsty or a Fossil.
Also, it can be done with the PC items, allowing one to edit more RAM addresses that could only be manipulated with arbitrary code execution or map FE.

You will need 2 different tossable items, and a stack of 255 items. Steps to reproduce :

  1. Order your items so that your 2 tossable items are in slots 1 and 2 and the item x255 is in slot 3.
  2. Toss everything below the item x255.
  3. Toss the top two items so you have three items x255 (item count=1)
  4. Toss 253 of the first item x255.
  5. Swap item 1 with item 2.
  6. Swap item 1 with item 2, again.

You can also do this with items below the third (and initial) 255 stack. You need to count how many items you have, then after step 3 toss the top item x255 the number of items you initially had -2.

Expanded party list methods

By save corruption

This method has many downsides (similar to the Japanese Dokokashira door glitch) but can be triggered very early in the game and is sometimes used to beat the game in 0:00

The first requirement is that the player must never have created a Save file.
If one was created, go to the title screen, do not enter the Continue/New Game/Options menu. Hold the down arrow and Select in the same time, and press the B button.
WARNING ! This will completely destroy and overwrite your current save file !
Select "Yes" and skip the title screen.
The Continue option shouldn't be present. Hit New Game, and pick names ASH and BLUE. Then open the start menu, hit Save and get prepared (if on an emulator, a save state is recommended to save much time). You need to hit Yes and reset your game between the time the Yes/No box disappears and the instant the Saving... text appears.
At this point, there are three possibilities :

  1. A text box pops saying "The save file is destroyed !". You reset too early, try again.
  2. A Continue button is present, but your Pokemon menu isn't accessible. You reset too late, erase the save file and try again.
  3. A Continue button appears on the homescreen, and you can access a glitchy Pokémon menu. Swap any of the first 6 Pokémon (first or second is recommended) with the tenth (it should be just offscreen). Now you can access 255 items in your pack !

By the ZZAZZ glitch

Using the ZZAZZ glitch, it is possible to make all FF bytes up to the terminator in the player's bag disappear and then perform the party Pokémon box data shift glitch.

The party Pokémon box data shift glitch will shift all bytes in the player's inventory up to the FF upwards, therefore, having an item such as a TM01 (hex:BF) in the first position of the bag would allow for hex:BF (dec:191 items).

This glitch may stop working later in the game due to FF values appearing in the memory before the bag addresses.

By arbitrary code execution

If you can use arbitrary code execution (ACE), you may run the following code (both with 8F and ws m)
Lemonade x255
TM34 x211
hex:1C (Earth Badge) x201
This basically changes the item counter to hex:FF


Using Gameshark

The code 01FF1CD3 should set the expanded item pack correctly ; although with Gameshark, you don't much need this trick because you can edit RAM without this trick.

Using this trick

Notice : when scrolling down the list, the cursor may seem to freeze ; in that case hit A until the cursor responds again. This happens when the game prints a large name which spans multiple lines.

Like said earlier, it can be used to speedrun the game, as changing the 36th item allows to change warp locations.
Here is a list of interesting items to mess with : <help is needed there>

Returning the Item pack to normal

This is very simple : you need to buy three items to return your menu to normal.
Warning : the first item will be lost !

With ACE, the following code should work :
Lemonade x(# of items in your inventory before the glitch)
TM34 x211
hex:1C (Earth Badge) x201