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

0x2 - SCENARIO_SELECT

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

0x11 - SCENARIO_MAIN_BIT_FLAG

0x12 - SCENARIO_TALK_BIT_FLAG

0x13 - SCENARIO_BALANCE_FLAG

Starts at 0 and gets increased as the player completes certain story events. Controls bag size 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

0x1d - GROUND_ENTER_LINK

0x1e - GROUND_GETOUT

0x1f - GROUND_MAP

0x20 - GROUND_PLACE

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

0x27 - DUNGEON_ENTER

Keeps track of what dungeon the player entered.

0x28 - DUNGEON_ENTER_MODE

0x29 - DUNGEON_ENTER_INDEX

0x2a - DUNGEON_ENTER_FREQUENCY

0x2b - DUNGEON_RESULT

0x2c - GROUND_START_MODE

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.

0x34 - PLAYER_KIND

0x35 - ATTENDANT1_KIND

0x36 - ATTENDANT2_KIND

0x37 - PLAYER_KIND_BACKUP

0x38 - ATTENDANT1_KIND_BACKUP

0x39 - ATTENDANT2_KIND_BACKUP

0x3a - FRIEND_SUM

0x3b - UNIT_SUM

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

0x3f - HERO_FIRST_NAME

0x40 - PARTNER_FIRST_KIND

0x41 - PARTNER_FIRST_NAME

0x42 - HERO_TALK_KIND

0x43 - PARTNER_TALK_KIND

0x44 - RANDOM_REQUEST_NPC03_KIND

0x45 - CONFIG_COLOR_KIND

0x46 - ROM_VARIATION

0x47 - LANGUAGE_TYPE

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

0x4a - SPECIAL_EPISODE_TYPE

0x4b - SPECIAL_EPISODE_OPEN

Keeps track of what Special Episodes are unlocked.

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.

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.

0x50 - DUNGEON_ENTER_LIST

0x51 - DUNGEON_ARRIVE_LIST

0x52 - DUNGEON_CONQUEST_LIST

List of completed dungeons. One bit per dungeon ID.

0x53 - DUNGEON_PRESENT_LIST

0x54 - DUNGEON_REQUEST_LIST

0x55 - WORLD_MAP_MARK_LIST_NORMAL

0x56 - WORLD_MAP_MARK_LIST_SPECIAL

0x57 - WORLD_MAP_LEVEL

0x58 - POSITION_X

0x59 - POSITION_Y

0x5a - POSITION_HEIGHT

0x5b - POSITION_DIRECTION

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

0x5f - STATION_ITEM_TEMP

0x60 - DELIVER_ITEM_STATIC

0x61 - DELIVER_ITEM_TEMP

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.

0x65 - ITEM_BACKUP_KUREKURE

0x66 - ITEM_BACKUP_TAKE

0x67 - ITEM_BACKUP_GET

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

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

0x72 - SUM