Poké Mart data structure (Generation I)
This is the Poké Mart data structure in Generation I games.
Overview
In each game, there is a data block containing the list of items sold in each Poké Mart.
When the player talks to a Poké Mart clerk, the data pertaining to the current Poké Mart (the total number of items, as well as the list of items) is copied to the RAM to be used (even before the player enters the "Buy" option and sees the list of items). These values remain in the RAM even after the player leaves the Poké Mart.
The fourth Poké Mart found in the game code is simply set up to sell a Bicycle, but this data remains unused. The Miracle Cycle in Cerulean City delivers the Bicycle using a separate script, which does not use this Poké Mart data.
FE value
The hexadecimal FE value is found at the start of each Poké Mart in the game data. This value is not copied to the RAM data used for the current Poké Mart.
Total number of items
At the start of the data for each Poké Mart (after the FE value, except in the data copied to the RAM), there is a value for the number of items available. The game starts counting from 00, but the "Cancel" button at the end counts as an additional item.
For instance, the Vermilion City Poké Mart has the value "06" for the number of items. This Poké Mart stores seven items in the game's memory (counting from 00 to 06): the six regular items (Poké Ball, Super Potion, Ice Heal, Awakening, Parlyz Heal, and Repel), as well as the "Cancel" button as the seventh item.
List of items
After the number of items, all the following values are the index numbers of items sold in this Poké Mart. (for instance, Potion's index number is hexadecimal 14)
In all Poké Marts, the "Cancel" button is stored as the item FF at the end, which represents the unobtainable TM55.
If the last item is changed to any item index number other than FF, the respective item name will appear at the end instead of the "Cancel" button, and some glitched data may appear below the last item. However, even if the last item is not "Cancel", the player will still be unable to buy it.
List of Poké Marts
This is the list of all Poké Marts found in the Generation I game data. The item index numbers are formatted in bold.
Poké Mart data locations
This is where the Poké Mart data block is stored in each Generation I game.
All Poké Marts
This is where the list of all Poké Marts is stored in each game.
Game | Language | Data start (start of Viridian City Poké Mart) |
Data end (end of Indigo Plateau Poké Mart) |
Data size (bytes) |
---|---|---|---|---|
Pokémon Red and Green | Japanese 1.0 | 0x0ED6 | 0x0F68 | 147 |
Japanese 1.1 | 0x0EC4 | 0x0F56 | ||
Pokémon Blue | Japanese | 0x2422 | 0x24B5 | 148 |
Pokémon Red and Blue | English, German, Italian | 0x2442 | 0x24D5 | |
French | 0x243E | 0x24D1 | ||
Spanish | 0x2441 | 0x24D4 | ||
Pokémon Yellow | Japanese 1.0 | 0x2368 | 0x23FD | 150 |
Japanese 1.1, 1.2 | 0x236D | 0x2402 | ||
English, Italian | 0x233B | 0x23D0 | ||
French | 0x2337 | 0x23CC | ||
German | 0x2340 | 0x23D5 | ||
Spanish | 0x233A | 0x23CF |
Current Poké Mart
This is the RAM location that stores data for the Poké Mart currently used by the player.
Game | Language | Number of items | Item index numbers |
---|---|---|---|
All Generation I games | Japanese | 0xCF62 | 0xCF63 onwards |
Pokémon Red and Blue | English | 0xCF7B | 0xCF7C onwards |
French, German, Italian, and Spanish |
0xCF80 | 0xCF81 onwards | |
Pokémon Yellow | English | 0xCF7A | 0xCF7B onwards |
French, German, Italian, and Spanish |
0xCF7F | 0xCF80 onwards | |
Example: Vermilion City Poké Mart | |||
— | 06 | 04 13 0D 0E 0F 1E FF |
|
This data structure article is part of Project Games, a Bulbapedia project that aims to write comprehensive articles on the Pokémon games. |