List of Script Variables
This page lists all the variables available on the scripting engine. They can be read or written to from scripts.
Some variables store a single value, whereas others can store multiple bitflags.
List of variables
0x0 - VERSION
Seems to be used to keep track of save file versions. It's stored in the save file when the game is saved. When loading a save file, if the version value in it doesn't match the value of this variable, the save file is deleted.
0x1 - CONDITION
Completely unused. Purpose unknown...
0x2 - SCENARIO_SELECT
Two indexed values determined via the Top Menu. These are referenced by Unionall for general control flow.
To be a bit more specific, the first coroutine run after the Top Menu is EVENT_DIVIDE, which checks for these indexed values. In doing so, the game knows when to load scripts from maingame, a Special Episode, or Rescue mode.
0x3 - SCENARIO_MAIN
Stores game progress. The first value correlates with the MAIN value (mostly aligns with the story chapter), while the second is generally used to track progress within that MAIN.
0x4 - SCENARIO_SIDE
Like SCENARIO_MAIN, but for special episode progress.
0x5 - SCENARIO_SUB1
0x6 - SCENARIO_SUB2
0x7 - SCENARIO_SUB3
0x8 - SCENARIO_SUB4
0x9 - SCENARIO_SUB5
0xa - SCENARIO_SUB6
0xb - SCENARIO_SUB7
0xc - SCENARIO_SUB8
As far as is currently known, SCENARIO_SUB1 through SCENARIO_SUB8 are completely unused by the base-game! Perhaps they were intended to store side-quest progress of some sort?
0xd - SIDE02_TALK
Three bit flags that keeps track of the neighbors Igglybuff talked to in Special Episode 2
0xe - SIDE06_ROOM
Three bit flags that keeps track of the Limestone Cavern paths Team Charm visited in Special Episode 4
0xf - SIDE08_BOSS2ND
True if the player lose against Sableyes in Barren Valley Clearing in Special Episode 5
0x10 - SIDE01_BOSS2ND
True if Snover has betrayed bidoof in Special Episode 1. Used to determine whether Snover will be an ally in Star Cave or not.
0x11 - SCENARIO_MAIN_BIT_FLAG
Has many purposes, sometimes have hardcoded or technical effects, but not always.
Number | Where's used |
---|---|
0 | Unused. |
1 | Gets set to 1 right after waking up in the guild. Used for the game to determine when partner dialogue should be changed to just "Good morning, [hero]...". |
2 | Unused. |
3 | Will end the current day if EVENT_DIVIDE is run. |
4 | Similar to 3. Seems to be related to missions |
5 | Gets set to 1 if the player decides to go the wrong way during an expedition. |
6, 7, 8 | Used to remember how the game was saved last. |
9 | Used in G01P04A/um07. When it's not set, the game spawns triggers. Upon walkng to them, Croagunk calls hero and partner to tell that the Croagunk Swap Shop is now opened. |
10 | Gets set to 1 when it's a day to do jobs. |
11 | Gets set to 1 when it's a day to do sentry duty. |
12, 13 | Marowak Dojo First Entry/ Final Maze Opening |
14-23 | Used in Marowak's Dojo. If none of them are set, the player finished all the dojo dungeons. |
24 | Gets set when the player finishes all dojo dungeons. Used to only show a cutscene about the full dojo completion once. |
25 | Gets set to 0 before the check whether it's set to 1 or not during a cutscene after finishing the Final Maze. |
26, 27 | Unused |
28 | Gets set to 1 when the player finishes Final Maze. Used to give another cutscene if the Final Maze gets finished again. |
29 | Gets set to 1 if the player decides to go back to the previous location(or back to the town) from the checkpoint. |
30 | Seems to be used in TITLE_TEST to distinguish between Time and Darkness. |
31 | Gets set to 1 when the player presses Go Rescue for the first time. |
32 | Gets set to 1 when the player presses Standby Adventure for the first time. |
33-39 | Used after collecting one of the seven treasures. If none of them are set, the game gives a Seven Treasures collection checkmark. |
40 | Gets set if the player interacts with anything on the Pelipper Island. If set, the game will save upon leaving the island. |
41 | Gets set to 1 when Chimecho tells hero and partner that they're now able to change team leader. Used to only show this cutscene once. |
42 | Gets set to 1 when the partner says good morning to hero in Sharpedo Bluff, while $SCENARIO_MAIN is 29, 92. Used to only show this cutscene once, as it's called in coroutine EVENT_DIVIDE_AFTER, that is called really often. |
43-45 | Aegis Cave's ice, rock and steel puzzles completion. |
46 | Gets set to 1 if the player Drifblim's Gondola. Used to show a cutscene where Drifblim thanks hero and partner for using his service. |
47 | Gets set to 1 when player talks with Ampharos about Sneasel's Sky Gift. |
48 | Gets set to 1 when the player gets Sneasel's gift. |
49 | Gets set to 1 when the player leaves the station clearing after getting Sneasel's gift. |
50-60 | Sky Gift had been sent to Wigglytuff, Chatot, Diglett, Dugtrio, Sunflora, Loudred, Corphish, Chimecho, Bidoof, Croagunk and partner respectively. |
61 | Gets set to 1 when the player gives an item to Happiny. |
62-73 | Wigglytuff, Chatot, Diglett, Dugtrio, Sunflora, Loudred, Corphish, Chimecho, Bidoof, Croagunk, partner and Happiny respectively sent a Sky Gift to hero. |
74-77 | Used to decide whether Happiny will appear on the 1st/3rd/5th/7th Station Clearing respectively. Happiny will always spawn on the 1st station if ITEM_BACKUP_GET = ITEM_BACKUP_TAKE. |
78-81 | Used to decide whether Numel will appear on the 1st/3rd/5th/7th Station Clearing respectively. |
82 | Gets set to 1 if the player already swapped items with Numel in the current attempt to climb to Sky Peak Summit. |
83-87 | Used to decide whether Happiny will appear on the 1st/3rd/5th/7th Station/Summit Clearing respectively. |
88 | Gets set to 1 when the player claims Jumpluff's gift. |
89 | Used to decide whether Delibird should appear on the 9th Station Clearing. The chance of it being set is 50% each climbing attempt. |
90 | Gets set to 1 when the player claims Delibird's gift. |
91 | Gets set to 1 if the player gives an item to Heracross. |
92 | Used to decide if a bottle should appear on the beach. The chance of it being set is 10% |
93 | Used to decide if a client should appear in the cafe. The chance of it being set is 80% |
94 | Gets set to 1 if the player receives a Gracidea. |
95 | Gets set to 1 when Ursaring says that hero and partner can evolve. |
96 | Gets set to 1 when Krabby says that bottles can appear on the beach. |
97 | Gets set to 1 when Chimecho asks hero if recruits can stay at the cafe. |
98 | Gets set to 1 in m00a01a. Doesn't seem to be used anywhere else. |
99-127 | Unused. |
0x12 - SCENARIO_TALK_BIT_FLAG
Up through [200] are in use, and they primarily exist to remember if the player has already talked with an NPC (therefore playing modified or shorter dialogue the second time around). For example, every merchant in treasure town comments on the player's accomplishments (like defeating Darkrai) the first time you talk to them. Whether that conversation has happened yet is tracked with SCENARIO_TALK_BIT_FLAG.
0x13 - SCENARIO_BALANCE_FLAG
Starts at 0 and gets increased as the player completes certain story events. Controls bag size, Wynaut/Spinda dungeon unlocks, and the spawn threshold value of pokémon, which restricts spawning of some species until this variable reaches a certain value.
Value changes
This table lists the exact story spots where the value of the flag is increased.
Flag value | Story chapter | Story event | Scene | Script |
---|---|---|---|---|
0 | 1 | Start of a new game | - | - |
1 | 3 | End of chapter | V03P12A | m03a1314.ssb |
2 | 6 | Expedition members are announced | G01P04A | m08a0301.ssb |
3 | 9 | End of chapter | P04P01C | m10a1213.ssb |
4 | 13 | End of chapter | V16P02A | m16a0702.ssb |
5 | 15 | End of chapter | V19P06A | m19b1014.ssb |
6 | Post-game 1 | After graduating and moving to Sharpedo Bluff | H02P99A | s01p1103.ssb |
7 | Game complete | The Ursarings tell Hero and Partner they can evolve
(After unlocking Marine Resort) |
T01P01A | m00p1401.ssb |
Bag size
This table lists the maximum bag size depending on the current value of SCENARIO_BALANCE_FLAG
.
Flag value | Bag size |
---|---|
0 | 16 |
1 | 24 |
2 | 32 |
3 | 40 |
4 | 40 |
5 | 40 |
6 | 48 |
7 | 48 |
Values higher than 7 will read garbage data and cause crashes.
If PERFORMANCE_PROGRESS_LIST[2]
is 0, the bag will only have 1 slot, regardless of the value of SCENARIO_BALANCE_FLAG
.
0x14 - SCENARIO_BALANCE_DEBUG
If >= 0, overrides the value of SCENARIO_BALANCE_FLAG
.
0x15 - CRYSTAL_COLOR_01
Used to keep track of the current color of the first crystal during the Crystal Cave puzzle.
0x16 - CRYSTAL_COLOR_02
Used to keep track of the current color of the second crystal during the Crystal Cave puzzle.
0x17 - CRYSTAL_COLOR_03
Used to keep track of the current color of the third crystal during the Crystal Cave puzzle.
Outside of this puzzle, these 3 variables are completely unused by the base game!
0x18 - COMPULSORY_SAVE_POINT
Used in cutscene saves for the game to know the coroutine it needs to jump to after reloading a save. Only used in the main story.
0x19 - COMPULSORY_SAVE_POINT_SIDE
Used in cutscene saves for the game to know the coroutine it needs to jump to after reloading a save. Only used in special episode.
0x1a - SCENARIO_SELECT_BACKUP
A carbon copy of SCENARIO_SELECT used while the game is saving to ensure that data is never lost by interrupting the save.
Is otherwise unused!
0x1b - SCENARIO_MAIN_BIT_FLAG_BACKUP
A carbon copy of SCENARIO_SELECT used while the game is saving to ensure that data is never lost by interrupting the save.
Is otherwise unused, and is a huge list of flags that can be used locally, or in places the player is unable to save!
0x1c - GROUND_ENTER
The map ID the player is currently in the enter scene for.
0x1d - GROUND_ENTER_LINK
Set to zero by EVENT_FORMATION. Purpose Unknown.
0x1e - GROUND_GETOUT
The map ID of the enter scene the player was on before the current one. Usually used to decide where the player should enter from on the next map.
0x1f - GROUND_MAP
The map ID of the map currently rendered. Usually this is identical to GROUND_ENTER, unless the map that was loaded changes (Such as P01P01A changing to P01P03A when the cafe is unlocked).
0x20 - GROUND_PLACE
Determines the index for the map marker on the top-screen world map.
0x21 - GROUND_ENTER_BACKUP
A carbon copy of GROUND_ENTER used while the game is saving to ensure that data is never lost by interrupting the save.
As far as we know, is otherwise unused!
0x22 - GROUND_ENTER_LINK_BACKUP
A carbon copy of GROUND_ENTER_LINK used while the game is saving to ensure that data is never lost by interrupting the save.
As far as we know, is otherwise unused!
0x23 - GROUND_GETOUT_BACKUP
A carbon copy of GROUND_GETOUT used while the game is saving to ensure that data is never lost by interrupting the save.
As far as we know, is otherwise unused!
0x24 - GROUND_MAP_BACKUP
A carbon copy of GROUND_MAP used while the game is saving to ensure that data is never lost by interrupting the save.
As far as we know, is otherwise unused!
0x25 - GROUND_PLACE_BACKUP
A carbon copy of GROUND_PLACE used while the game is saving to ensure that data is never lost by interrupting the save.
As far as we know, is otherwise unused!
0x26 - DUNGEON_SELECT
The dungeon ID selected by the crossroads. Possibly reused elsewhere.
0x27 - DUNGEON_ENTER
Stores the dungeon ID the player enters, but only in DMODE_OPEN or DMODE_CLOSED. Otherwise, may be set to 214 or 215.
DUNGEON_ENTER_INDEX is a more reliable tracker of the dungeon ID.
0x28 - DUNGEON_ENTER_MODE
Seems to be the DMODE of the dungeon being entered.
0x29 - DUNGEON_ENTER_INDEX
Is written on selecting a dungeon from the crossroads (and probably elsewhere). Generally used by the base game to remember the dungeon ID that the player is about to enter or has just exited.
0x2a - DUNGEON_ENTER_FREQUENCY
A running total of how many times the player has entered any dungeon.
0x2b - DUNGEON_RESULT
Stores how the dungeon was exited. Typically GROUND_START_MODE also stores this information, though that has other uses in ground mode.
Value | Meaning |
---|---|
8 | Dungeon was cleared |
9 | Escape Orb Used |
Other | Defeated in Dungeon |
0x2c - GROUND_START_MODE
The "mode" the game is in when it enters Ground Mode. Uses the same values as DUNGEON_RESULT when exiting a dungeon, but other values appear to be present. coroutine EVENT_FORMATION assigns it to 3, for unknown reasons.
0x2d - DUNGEON_ENTER_BACKUP
A carbon copy of DUNGEON_ENTER used while the game is saving to ensure that data is never lost by interrupting the save.
As far as we know, is otherwise unused!
0x2e - DUNGEON_ENTER_MODE_BACKUP
A carbon copy of DUNGEON_ENTER_MODE used while the game is saving to ensure that data is never lost by interrupting the save.
As far as we know, is otherwise unused!
0x2f - DUNGEON_ENTER_INDEX_BACKUP
A carbon copy of DUNGEON_ENTER_INDEX used while the game is saving to ensure that data is never lost by interrupting the save.
As far as we know, is otherwise unused!
0x30 - DUNGEON_ENTER_FREQUENCY_BACKUP
A carbon copy of DUNGEON_ENTER_FREQUENCY used while the game is saving to ensure that data is never lost by interrupting the save.
As far as we know, is otherwise unused!
0x31 - DUNGEON_RESULT_BACKUP
A carbon copy of DUNGEON_RESULT used while the game is saving to ensure that data is never lost by interrupting the save.
As far as we know, is otherwise unused!
0x32 - GROUND_START_MODE_BACKUP
A carbon copy of DUNGEON_START_MODE used while the game is saving to ensure that data is never lost by interrupting the save.
As far as we know, is otherwise unused!
0x33 - REQUEST_CLEAR_COUNT
Stores the number of jobs the player has completed at certain points in the story to determine when the next story event will occur. Will never increment above 100 in the base game.
0x34 - PLAYER_KIND
Determines what actor's species should replace ACTOR_PLAYER when displayed:
Value | Actor to Pull Species From | Base-Game Species | Use Case |
---|---|---|---|
0 | Species of Chimecho Assembly entry 0 | The Hero | Treasure Town |
1 | Species of Chimecho Assembly entry 1 | The Partner | |
2 | Nothing | N/A | N/A |
3 | Species of current party leader | N/A | |
4 | ACTOR_ATTENDANT_BIPPA | Bidoof | Special Episode 1 |
5 | ACTOR_ATTENDANT_PUPURIN | Igglybuff | Special Episode 2 |
6 | ACTOR_ATTENDANT_KIMAWARI | Sunflora | Special Episode 3 |
7 | ACTOR_ATTENDANT_FUTURE | Grovyle | Special Episode 5 |
8 | ACTOR_ATTENDANT_CHARMS | Lopunny | Special Episode 4 |
9+ | Nothing | N/A | N/A |
0x35 - ATTENDANT1_KIND
Determines what actor's species should replace ACTOR_ATTENDANT1 (and possibly other related actors) when displayed:
Value | Actor to Pull Species From | Base-Game Species | Use Case |
---|---|---|---|
0 | Nothing | N/A | N/A |
1 | Species of Chimecho Assembly entry 0 | The Hero | |
2 | Species of Chimecho Assembly entry 1 | The Partner | Treasure Town |
3 | Nothing | N/A | N/A |
4 | Species of current party leader | N/A | |
5-9 | Nothing | N/A | N/A |
10 | ACTOR_ATTENDANT_MANAFI | Manaphy |
0x36 - ATTENDANT2_KIND
Determines what actor's species should replace ACTOR_ATTENDANT2 when displayed.
Will be "Nothing" unless it is 10, in which case Manaphy will slowly follow ATTENDANT1_KIND
0x37 - PLAYER_KIND_BACKUP
A carbon copy of PLAYER_KIND used while the game is saving to ensure that data is never lost by interrupting the save. As far as we know, is otherwise unused!
0x38 - ATTENDANT1_KIND_BACKUP
A carbon copy of ATTENDANT1_KIND used while the game is saving to ensure that data is never lost by interrupting the save. As far as we know, is otherwise unused!
0x39 - ATTENDANT2_KIND_BACKUP
A carbon copy of ATTENDANT2_KIND used while the game is saving to ensure that data is never lost by interrupting the save. As far as we know, is otherwise unused!
0x3a - FRIEND_SUM
Unknown
0x3b - UNIT_SUM
Unknown
0x3c - CARRY_GOLD
Stores the current amount of money carried by the player.
0x3d - BANK_GOLD
Stores the current amount of money stored in Duskull's bank.
0x3e - HERO_FIRST_KIND
The species ID of the initial hero starter.
0x3f - HERO_FIRST_NAME
The stored name of the initial hero starter, as a 10 character array of ASCII values.
0x40 - PARTNER_FIRST_KIND
The species ID of the initial partner starter.
0x41 - PARTNER_FIRST_NAME
The stored name of the initial partner starter, as a 10 character array of ASCII values.
0x42 - HERO_TALK_KIND
Determines which of kind of dialogue the hero will use. In base game, only 4 and 5 are used for HERO_TALK_KIND, but with something like StarterMenuTool (or QuizMenuTool) these can be assigned to more custom values.
Value | Hero Species | Use Case |
---|---|---|
4 | Male Pokemon | Masculine Pronouns |
5 | Female/Genderless Pokemon | Feminine Pronouns |
0x43 - PARTNER_TALK_KIND
Determines which of kind of dialogue the partner will use. In base game, only 1, 2, and 3 are used for PARTNER_TALK_KIND, but with something like StarterMenuTool (or QuizMenuTool) these can be assigned to more custom values.
Value | Partner Species | Use Case | Example Dialogue Use |
---|---|---|---|
1 | Squirtle, Totodile, Chimchar, Meowth or Munchlax | More "bold" dialogue-wise | No more wimping out. I have to be brave today. |
2 | All other Male Species | Less "bold" dialogue-wise | This is it. I have to steel my courage today. |
3 | All female Species | Least "bold" dialogue-wise | This is it. Today I’m going to be brave. |
0x44 - RANDOM_REQUEST_NPC03_KIND
Determines the species of ACTOR_RANDOM_REQUEST_NPC03, or the Spinda Cafe client Pokémon. It is either a random Pokémon, Magnemite, or Togetic, depending on the mission.
0x45 - CONFIG_COLOR_KIND
The aura bow color determined by the personality quiz at the beginning of the game. Only ever used by wigglytuff to determine the color of aura bow given to the player.
0x46 - ROM_VARIATION
Unknown, but hardcoded to zero.
0x47 - LANGUAGE_TYPE
Stores the language from DS Firmware.
Value | Language |
---|---|
0 | Japanese |
1 | English |
2 | French |
3 | German |
4 | Italian |
5 | Spanish |
0x48 - GAME_MODE
Keeps track of the current game mode.
ID | Mode |
---|---|
0 | Top menu |
1 | |
2 | Normal play, including overworld and dungeons |
3 | Special episode |
4 | Rescue |
5 |
There might be more valid values.
0x49 - EXECUTE_SPECIAL_EPISODE_TYPE
Tracks which Special Episode is currently active. The base-game prefers this variable over SPECIAL_EPISODE_TYPE, though it is unknown if they differ at all.
0x4a - SPECIAL_EPISODE_TYPE
Tracks which Special Episode is currently active, just like EXECUTE_SPECIAL_EPISODE_TYPE.
0x4b - SPECIAL_EPISODE_OPEN
Keeps track of what Special Episodes are unlocked.
The following is the list of scripts where the Special Episodes are unlocked in the base-game:
- SPECIAL_EPISODE_OPEN[0] (Bidoof's Wish): V03P12A - m03a1314
- SPECIAL_EPISODE_OPEN[1] (Igglybuff the Prodigy): P04P01C - m10a1213
- SPECIAL_EPISODE_OPEN[2] (Today's Oh My Gosh): G01P04A - m16a0105
- SPECIAL_EPISODE_OPEN[3] (Here Comes Team Charm!): D01P11A - m20a0101
- SPECIAL_EPISODE_OPEN[4] (In the Future of Darkness): H02P99A - s01p1103
0x4c - SPECIAL_EPISODE_OPEN_OLD
Keeps track of what Special Episodes were started. Used to show an exclamation mark if the episode is opened but wasn't started.
0x4d - SPECIAL_EPISODE_CONQUEST
Keeps track of what Special Episodes did the player finished. Also unlocks the Special Episode's respective Clear Icons.
Note: This specific script variable is not in any script. It is actually triggered by an adventure_log command.
The following is the list of the adventure_log that triggers this Script Variable and its location for each Special Episode:
- SPECIAL_EPISODE_CONQUEST[0] (Bidoof's Wish): Triggered by adventure_log = 1000; in S04P01A - n03a3103
- SPECIAL_EPISODE_CONQUEST[1] (Igglybuff the Prodigy): Triggered by adventure_log = 1001; in S04P01A - n03a1704
- SPECIAL_EPISODE_CONQUEST[2] (Today's Oh My Gosh): Triggered by adventure_log = 1002; in S04P01A - n04a2606
- SPECIAL_EPISODE_CONQUEST[3] (Here Comes Team Charm!): Triggered by adventure_log = 1003; in S04P01A - n06a3909
- SPECIAL_EPISODE_CONQUEST[4] (In the Future of Darkness): Triggered by adventure_log = 1004; in S04P01A - n09a2212
0x4e - PERFORMANCE_PROGRESS_LIST
List of flags used to keep track of unlocked features and achievements. See Performance Progress Flags for the full list.
0x4f - DUNGEON_OPEN_LIST
List of unlocked dungeons. One bit per dungeon ID. If true, and the dungeon isn't on some blacklist, you can enter this dungeon from the crossroads/dojo/igglybuff's house/pelipper standby adventure.
Setting a dungeon to DMODE_OPEN or DMODE_OPEN_AND_REQUEST enables the matching bit in this field!
0x50 - DUNGEON_ENTER_LIST
Large bitfield sized for storing dungeon-specific data. This is checked at [NA]0x204CEE0, but never assigned. Presumed Unused
0x51 - DUNGEON_ARRIVE_LIST
Large bitfield sized for storing dungeon-specific data. Presumed Unused
0x52 - DUNGEON_CONQUEST_LIST
List of completed dungeons. One bit per dungeon ID. Automatically set on clearing any dungeon.
In many cases, this bitfield renders other flags or variables redundant in a vanilla setting, especially certain $PERFORMANCE_PROGRESS_LIST flags that are always enabled after clearing certain dungeons for the first time.
0x53 - DUNGEON_PRESENT_LIST
Large bitfield sized for storing dungeon-specific data. Presumed Unused
0x54 - DUNGEON_REQUEST_LIST
List of dungeons that no longer have story progression. On completing a dungeon with this bit enabled, the player will enter [INSERT THE RIGHT COROUTINE HERE] in unionall.
Setting a dungeon to DMODE_REQUEST or DMODE_OPEN_AND_REQUEST enables the matching bit in this field!
Contrary to the name, this field alone is insufficient for missions to show up on the job board! Only dungeon in DMODE_OPEN_AND_REQUEST can have missions, and other (hardcoded) conditions must be met.
0x55 - WORLD_MAP_MARK_LIST_NORMAL
Use unknown.
0x56 - WORLD_MAP_MARK_LIST_SPECIAL
Use unknown.
0x57 - WORLD_MAP_LEVEL
Seems to be used to track the area covered by clouds on the world map.
0x58 - POSITION_X
Stores the X-coordinate of an entity when the LoadPosition() opcode is run on it.
0x59 - POSITION_Y
Stores the Y-coordinate of an entity when the LoadPosition() opcode is run on it.
0x5a - POSITION_HEIGHT
Stores the Z-coordinate of an entity when the LoadPosition() opcode is run on it.
0x5b - POSITION_DIRECTION
Stores the direction an entity is facing when the LoadPosition() opcode is run on it.
0x5c - EVENT_LOCAL
Used as scratch paper by the base game, and is reset between scripts.
0x5d - DUNGEON_EVENT_LOCAL
Used as scratch paper by the base game (possibly while within dungeons?), and is reset between scripts.
0x5e - STATION_ITEM_STATIC
Use unknown.
0x5f - STATION_ITEM_TEMP
Use unknown.
0x60 - DELIVER_ITEM_STATIC
Use unknown.
0x61 - DELIVER_ITEM_TEMP
Use unknown.
0x62 - BIT_FUWARANTE_LOCAL
Keeps track of the Sky Peak stations the player visited. Used in the script for Drifblim's Gondola.
0x63 - LOTTERY_RESULT
Used to track what result should occur during the Recycle Shop Prize Ticket Lottery. Has no other use.
0x64 - ITEM_BACKUP
Unlikely to be a backup flag. Conveniently sized for item_GetVariable to extract the item ID and metadata.
Used somewhere in Sky Peak
0x65 - ITEM_BACKUP_KUREKURE
Happiny requests the item stored in this variable if found on Sky Peak. Pulled from an item table each day.
0x66 - ITEM_BACKUP_TAKE
Numel requests the item stored in this variable if found on Sky Peak. Pulled from an item table each day.
0x67 - ITEM_BACKUP_GET
Numel gives this item stored in this variable if found on Sky Peak. Pulled from an item table each day.
0x68 - REQUEST_THANKS_RESULT_KIND
0x69 - REQUEST_THANKS_RESULT_VARIATION
0x6a - SUB30_TREASURE_DISCOVER
If set to true, Wynaut tells hero and partner that a treasure was found.
0x6b - SUB30_SPOT_DISCOVER
If set to true, Wynaut tells hero and partner that a new unexplored area was discovered.
0x6c - RECYCLE_COUNT
Stores the number of recycles the player has done. Is only updated by the base-game at the end of each day.
0x6d - SUB30_SPOT_LEVEL
Keeps track of what dungeon was discovered by Project P.
0x6e - TEAM_RANK_EVENT_LEVEL
Has some correlation with guild rank? Unsure, I don't trust this variable.
0x6f - PLAY_OLD_GAME
True if the player answered yes to the question on the personality quiz that asks if you played Explorers of Time or Darkness. Increases the recruit rate of certain pokémon if you haven't recruited them yet.
0x70 - NOTE_MODIFY_FLAG
0x71 - SUB30_PROJECTP
If true, the player has viewed the Project P cutscene, and the recycle shop is capable of being upgraded.
0x72 - SUM
Seems to be a marker of the end of "normal" script variables.
0x400 - LOCAL0
Unknown if used in vanilla, is reset on entering a new script like $EVENT_LOCAL.
NOTE: Is unique for every routine in a script! $LOCAL0 in def 0 is distinct from $LOCAL0 in def 1!
0x401 - LOCAL1
Unknown if used in vanilla, is reset on entering a new script like $EVENT_LOCAL.
NOTE: Is unique for every routine in a script! $LOCAL1 indef 0 is distinct from $LOCAL1 in def 1!
0x402 - LOCAL2
Broken, do not use unless you know what you are doing!
0x403 - LOCAL3
Broken, do not use unless you know what you are doing!
Variable Lengths
Not all variables can store the same sized values! Some were allocated to be different sizes than others. Besides the standard sizes, there are 2 unusual variable sizes worth mentioning. "special" variable sizes are not stored in the same place as every other variable, and instead read some other value, such as the number of money the player currently has, or the current language of the ROM. "None" size is only used by the "SUM" variable, and has no allocated space at all. Below are a list of variables, their sizes, and how many there are:
Variable | Size | Count |
VERSION | int32 | 0x1 (1) |
CONDITION | int32 | 0x1 (1) |
SCENARIO_SELECT | uint8 | 0x2 (2) |
SCENARIO_MAIN | uint8 | 0x2 (2) |
SCENARIO_SIDE | uint8 | 0x2 (2) |
SCENARIO_SUB1 | uint8 | 0x2 (2) |
SCENARIO_SUB2 | uint8 | 0x2 (2) |
SCENARIO_SUB3 | uint8 | 0x2 (2) |
SCENARIO_SUB4 | uint8 | 0x2 (2) |
SCENARIO_SUB5 | uint8 | 0x2 (2) |
SCENARIO_SUB6 | uint8 | 0x2 (2) |
SCENARIO_SUB7 | uint8 | 0x2 (2) |
SCENARIO_SUB8 | uint8 | 0x2 (2) |
SIDE02_TALK | bit | 0x3 (3) |
SIDE06_ROOM | bit | 0x3 (3) |
SIDE08_BOSS2ND | bit | 0x1 (1) |
SIDE01_BOSS2ND | bit | 0x1 (1) |
SCENARIO_MAIN_BIT_FLAG | bit | 0x80 (128) |
SCENARIO_TALK_BIT_FLAG | bit | 0x100 (256) |
SCENARIO_BALANCE_FLAG | int8 | 0x1 (1) |
SCENARIO_BALANCE_DEBUG | int8 | 0x1 (1) |
CRYSTAL_COLOR_01 | uint8 | 0x1 (1) |
CRYSTAL_COLOR_02 | uint8 | 0x1 (1) |
CRYSTAL_COLOR_03 | uint8 | 0x1 (1) |
COMPULSORY_SAVE_POINT | uint8 | 0x1 (1) |
COMPULSORY_SAVE_POINT_SIDE | uint8 | 0x1 (1) |
SCENARIO_SELECT_BACKUP | uint8 | 0x8 (8) |
SCENARIO_MAIN_BIT_FLAG_BACKUP | bit | 0x200 (512) |
GROUND_ENTER | int16 | 0x1 (1) |
GROUND_ENTER_LINK | uint8 | 0x1 (1) |
GROUND_GETOUT | int16 | 0x1 (1) |
GROUND_MAP | int16 | 0x1 (1) |
GROUND_PLACE | int16 | 0x1 (1) |
GROUND_ENTER_BACKUP | int16 | 0x5 (5) |
GROUND_ENTER_LINK_BACKUP | uint8 | 0x5 (5) |
GROUND_GETOUT_BACKUP | int16 | 0x5 (5) |
GROUND_MAP_BACKUP | int16 | 0x5 (5) |
GROUND_PLACE_BACKUP | int16 | 0x5 (5) |
DUNGEON_SELECT | int16 | 0x1 (1) |
DUNGEON_ENTER | int16 | 0x1 (1) |
DUNGEON_ENTER_MODE | int16 | 0x1 (1) |
DUNGEON_ENTER_INDEX | int16 | 0x1 (1) |
DUNGEON_ENTER_FREQUENCY | uint16 | 0x1 (1) |
DUNGEON_RESULT | uint8 | 0x1 (1) |
GROUND_START_MODE | uint8 | 0x1 (1) |
DUNGEON_ENTER_BACKUP | int16 | 0x5 (5) |
DUNGEON_ENTER_MODE_BACKUP | int16 | 0x5 (5) |
DUNGEON_ENTER_INDEX_BACKUP | int16 | 0x5 (5) |
DUNGEON_ENTER_FREQUENCY_BACKUP | uint16 | 0x5 (5) |
DUNGEON_RESULT_BACKUP | uint8 | 0x5 (5) |
GROUND_START_MODE_BACKUP | uint8 | 0x5 (5) |
REQUEST_CLEAR_COUNT | uint8 | 0x1 (1) |
PLAYER_KIND | uint8 | 0x1 (1) |
ATTENDANT1_KIND | uint8 | 0x1 (1) |
ATTENDANT2_KIND | uint8 | 0x1 (1) |
PLAYER_KIND_BACKUP | uint8 | 0x5 (5) |
ATTENDANT1_KIND_BACKUP | uint8 | 0x5 (5) |
ATTENDANT2_KIND_BACKUP | uint8 | 0x5 (5) |
FRIEND_SUM | special | 0x1 (1) |
UNIT_SUM | special | 0x1 (1) |
CARRY_GOLD | special | 0x1 (1) |
BANK_GOLD | special | 0x1 (1) |
HERO_FIRST_KIND | int16 | 0x1 (1) |
HERO_FIRST_NAME | string | 0xA (10) |
PARTNER_FIRST_KIND | int16 | 0x1 (1) |
PARTNER_FIRST_NAME | string | 0xA (10) |
HERO_TALK_KIND | int8 | 0x1 (1) |
PARTNER_TALK_KIND | int8 | 0x1 (1) |
RANDOM_REQUEST_NPC03_KIND | int16 | 0x1 (1) |
CONFIG_COLOR_KIND | int8 | 0x1 (1) |
ROM_VARIATION | int8 | 0x1 (1) |
LANGUAGE_TYPE | special | 0x1 (1) |
GAME_MODE | special | 0x1 (1) |
EXECUTE_SPECIAL_EPISODE_TYPE | special | 0x1 (1) |
SPECIAL_EPISODE_TYPE | int8 | 0x1 (1) |
SPECIAL_EPISODE_OPEN | bit | 0x8 (8) |
SPECIAL_EPISODE_OPEN_OLD | bit | 0x8 (8) |
SPECIAL_EPISODE_CONQUEST | bit | 0x8 (8) |
PERFORMANCE_PROGRESS_LIST | bit | 0x40 (64) |
DUNGEON_OPEN_LIST | bit | 0x100 (256) |
DUNGEON_ENTER_LIST | bit | 0x100 (256) |
DUNGEON_ARRIVE_LIST | bit | 0x100 (256) |
DUNGEON_CONQUEST_LIST | bit | 0x100 (256) |
DUNGEON_PRESENT_LIST | bit | 0x100 (256) |
DUNGEON_REQUEST_LIST | bit | 0x100 (256) |
WORLD_MAP_MARK_LIST_NORMAL | bit | 0x140 (320) |
WORLD_MAP_MARK_LIST_SPECIAL | bit | 0x140 (320) |
WORLD_MAP_LEVEL | uint8 | 0x1 (1) |
POSITION_X | uint32 | 0x3 (3) |
POSITION_Y | uint32 | 0x3 (3) |
POSITION_HEIGHT | uint32 | 0x3 (3) |
POSITION_DIRECTION | int8 | 0x3 (3) |
EVENT_LOCAL | int16 | 0x1 (1) |
DUNGEON_EVENT_LOCAL | int16 | 0x1 (1) |
STATION_ITEM_STATIC | bit | 0x20 (32) |
STATION_ITEM_TEMP | bit | 0x20 (32) |
DELIVER_ITEM_STATIC | bit | 0x10 (16) |
DELIVER_ITEM_TEMP | bit | 0x10 (16) |
BIT_FUWARANTE_LOCAL | bit | 0x5 (5) |
LOTTERY_RESULT | uint8 | 0x1 (1) |
ITEM_BACKUP | int16 | 0x2 (2) |
ITEM_BACKUP_KUREKURE | int16 | 0x2 (2) |
ITEM_BACKUP_TAKE | int16 | 0x2 (2) |
ITEM_BACKUP_GET | int16 | 0x2 (2) |
REQUEST_THANKS_RESULT_KIND | int16 | 0x1 (1) |
REQUEST_THANKS_RESULT_VARIATION | int16 | 0x1 (1) |
SUB30_TREASURE_DISCOVER | bit | 0x1 (1) |
SUB30_SPOT_DISCOVER | bit | 0x1 (1) |
RECYCLE_COUNT | uint32 | 0x1 (1) |
SUB30_SPOT_LEVEL | uint8 | 0x1 (1) |
TEAM_RANK_EVENT_LEVEL | uint8 | 0x1 (1) |
PLAY_OLD_GAME | uint8 | 0x1 (1) |
NOTE_MODIFY_FLAG | special | 0x1 (1) |
SUB30_PROJECTP | bit | 0x1 (1) |
SUM | none | 0x0 (0) |
LOCAL0 | int16 | 0x1 (1) |
LOCAL1 | int16 | 0x1 (1) |
LOCAL2 | int16 | 0x1 (1) |
LOCAL3 | int16 | 0x1 (1) |