Trainer Tower data structures (Generation III): Difference between revisions
Created page with "There are a number of data structures in the international releases of Pokémon FireRed and Pokémon LeafGreen that govern the Trainer Tower. All memory addresses re..." |
|||
(15 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
There are a number of data structures in the international releases of | There are a number of data structures in the international releases of {{game|FireRed and LeafGreen|s}} that govern [[Trainer Tower]]. | ||
All memory addresses refer to the addresses used in the US version of the games. | All memory addresses refer to the addresses used in the US version of the games. | ||
==Overview== | ==Overview== | ||
In the Japanese release of | In the Japanese release of {{game|FireRed and LeafGreen|s}}, players could scan in [[e-Reader]] cards from the [[Pokémon Battle e FireRed & LeafGreen|Battle-e FireRed and LeafGreen]] series to customize the layout of Trainer Tower. In the international releases, the data from all 32 of the regular cards are folded into the game ROM; none of the Japanese promotional cards are present. The four battle modes (Single, Double, Knockout, and Mixed) each have a hard-coded order of eight Trainers, exactly as if their corresponding cards have been scanned. | ||
Note that not all 32 cards are used in international releases; notably, all 8 of the Knockout battle cards are used in the Knockout mode, some of which are reused in Mixed mode. | Note that not all 32 cards are used in international releases; notably, all 8 of the Knockout battle cards are used in the Knockout mode, some of which are reused in Mixed mode. A few singles and doubles cards are also reused in Trainer Tower. | ||
The card data is stored in memory location 0x0847ABAC (FireRed) and 0x0847A488 (LeafGreen). | The card data is stored in memory location 0x0847ABAC (FireRed) and 0x0847A488 (LeafGreen). | ||
== Cards == | ==Cards== | ||
Each Trainer Card is stored as a 992-byte structure, laid out as follows: | Each Trainer Card is stored as a 992-byte structure, laid out as follows: | ||
Line 20: | Line 20: | ||
| 0x01 || 1 || colspan="2" | Currently unknown | | 0x01 || 1 || colspan="2" | Currently unknown | ||
|- | |- | ||
| 0x02 || 1 || uint8_t || Battle Type - 0 for | | 0x02 || 1 || uint8_t || Battle Type - 0 for Single Battles, 1 for Double Battles, and 2 for knockout battles | ||
|- | |- | ||
| 0x03 || 1 || uint8_t || Reward Item - This is the reward item that is obtained when players defeat Trainer Hill, provided that this card represents the first | | 0x03 || 1 || uint8_t || Reward Item - This is the reward item that is obtained when players defeat Trainer Hill, provided that this card represents the first Trainer. The values are indices in a special 15-entry array. | ||
|- | |- | ||
| 0x04 || 984 || Trainer Data[3] || The data for up to three | | 0x04 || 984 || Trainer Data[3] || The data for up to three Trainers and their Pokémon. | ||
|- | |- | ||
| 0x3DC || 4 || colspan="2" | Currently unknown | | 0x3DC || 4 || colspan="2" | Currently unknown | ||
Line 32: | Line 32: | ||
{| class="wikitable" | {| class="wikitable" | ||
! Offset !! Size !! Type !! Name | ! Offset !! Size !! Type !! Name | ||
|- | |||
| 0x00 || 11 || char[11] || Trainer Name | | 0x00 || 11 || char[11] || Trainer Name | ||
|- | |- | ||
Line 40: | Line 41: | ||
| 0x3E || 2 || colspan="2" | Padding bytes resulting from alignment | | 0x3E || 2 || colspan="2" | Padding bytes resulting from alignment | ||
|- | |- | ||
| 0x40 || 264 || Trainer's | | 0x40 || 264 || Trainer's Pokémon[6] || Trainer's Pokémon Lineup | ||
|} | |} | ||
Line 47: | Line 48: | ||
! Offset !! Size !! Type !! Name | ! Offset !! Size !! Type !! Name | ||
|- | |- | ||
| 0x00 || 2 || uint16_t || Species - see [[List of Pokémon by index number | | 0x00 || 2 || uint16_t || Species - see [[List of Pokémon by index number in Generation III]] for values. | ||
|- | |- | ||
| 0x02 || 2 || uint16_t || Held Item - see [[List of items by index number | | 0x02 || 2 || uint16_t || Held Item - see [[List of items by index number in Generation III]] for values. | ||
|- | |- | ||
| 0x04 || 8 || uint16_t[4] || Moves - see [[List of moves]] for values. | | 0x04 || 8 || uint16_t[4] || Moves - see [[List of moves]] for values. | ||
Line 59: | Line 60: | ||
| 0x2B || 1 || colspan="2" | Currently unknown | | 0x2B || 1 || colspan="2" | Currently unknown | ||
|} | |} | ||
If a Trainer is unused (the second and third Trainers in a Single Battle card, or the third Trainer in a Double battle card), the entire structure, with the exception of the easy chat quotes, is zeroed out; the easy chat quote area is filled with 0xFF instead. | |||
== Floor Plan == | == Floor Plan == | ||
The floor plan is simply a list of eight pointers to the various cards that will be used in each mode. | The floor plan is simply a list of eight pointers to the various cards that will be used in each mode. There are four such lists, one for each mode. Their locations are as follows: | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 94: | Line 97: | ||
|} | |} | ||
==Related articles== | |||
{{data structure}} | |||
{{Project Games notice|data structure}} | |||
[[Category:Structures]] | [[Category:Structures]] |
Latest revision as of 01:23, 1 February 2025
There are a number of data structures in the international releases of Pokémon FireRed and LeafGreen that govern Trainer Tower.
All memory addresses refer to the addresses used in the US version of the games.
Overview
In the Japanese release of Pokémon FireRed and LeafGreen, players could scan in e-Reader cards from the Battle-e FireRed and LeafGreen series to customize the layout of Trainer Tower. In the international releases, the data from all 32 of the regular cards are folded into the game ROM; none of the Japanese promotional cards are present. The four battle modes (Single, Double, Knockout, and Mixed) each have a hard-coded order of eight Trainers, exactly as if their corresponding cards have been scanned.
Note that not all 32 cards are used in international releases; notably, all 8 of the Knockout battle cards are used in the Knockout mode, some of which are reused in Mixed mode. A few singles and doubles cards are also reused in Trainer Tower.
The card data is stored in memory location 0x0847ABAC (FireRed) and 0x0847A488 (LeafGreen).
Cards
Each Trainer Card is stored as a 992-byte structure, laid out as follows:
Offset | Size | Type | Name |
---|---|---|---|
0x00 | 1 | uint8_t | Card Number |
0x01 | 1 | Currently unknown | |
0x02 | 1 | uint8_t | Battle Type - 0 for Single Battles, 1 for Double Battles, and 2 for knockout battles |
0x03 | 1 | uint8_t | Reward Item - This is the reward item that is obtained when players defeat Trainer Hill, provided that this card represents the first Trainer. The values are indices in a special 15-entry array. |
0x04 | 984 | Trainer Data[3] | The data for up to three Trainers and their Pokémon. |
0x3DC | 4 | Currently unknown |
Trainer Data is a 328-byte structure, laid out as follows:
Offset | Size | Type | Name |
---|---|---|---|
0x00 | 11 | char[11] | Trainer Name |
0x0B | 3 | Currently unknown | |
0x0E | 48 | Easy Chat Quote[3] | Challenge, win, and lose quotes (in that order) - each of these are built in accordance to the easy chat system. |
0x3E | 2 | Padding bytes resulting from alignment | |
0x40 | 264 | Trainer's Pokémon[6] | Trainer's Pokémon Lineup |
Trainer's Pokémon is a 44-byte structure, laid out as follows:
Offset | Size | Type | Name |
---|---|---|---|
0x00 | 2 | uint16_t | Species - see List of Pokémon by index number in Generation III for values. |
0x02 | 2 | uint16_t | Held Item - see List of items by index number in Generation III for values. |
0x04 | 8 | uint16_t[4] | Moves - see List of moves for values. |
0x0C | 20 | Currently unknown | |
0x20 | 11 | char[11] | Nickname - Note that none of the Pokémon on any of these cards are actually nicknamed; the species name is placed here instead. |
0x2B | 1 | Currently unknown |
If a Trainer is unused (the second and third Trainers in a Single Battle card, or the third Trainer in a Double battle card), the entire structure, with the exception of the easy chat quotes, is zeroed out; the easy chat quote area is filled with 0xFF instead.
Floor Plan
The floor plan is simply a list of eight pointers to the various cards that will be used in each mode. There are four such lists, one for each mode. Their locations are as follows:
Mode | FireRed | LeafGreen |
---|---|---|
Single | 0x084827B4 | 0x08482090 |
Double | 0x084827D4 | 0x084820B0 |
Knockout | 0x084827F4 | 0x084820D0 |
Mixed | 0x08482814 | 0x084820F0 |
Reward Items
The reward items used on each card corresponds to indices in an array of 15 items (as indices to the master item list). This array is stored in location 0x0847A2B4 (FireRed) and 0x08479B90 (LeafGreen). For convenience, it is reproduced here.
0 | 1 | 2 | 3 | |
---|---|---|---|---|
0 | HP Up | Protein | Iron | Carbos |
4 | Calcium | Zinc | BrightPowder | White Herb |
8 | Mental Herb | Choice Band | King's Rock | Scope Lens |
C | Metal Coat | Dragon Scale | Up-Grade |
Related articles
|
![]() |
This data structure article is part of Project Games, a Bulbapedia project that aims to write comprehensive articles on the Pokémon games. |