List of Script Variables: Difference between revisions

Added some information
Happylappy (talk | contribs)
mNo edit summary
 
(19 intermediate revisions by 5 users not shown)
Line 12: Line 12:


=== 0x2 - SCENARIO_SELECT ===
=== 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.
During mission rewards, the second index is used to track the index of the mission being processed in the job list.


=== 0x3 - SCENARIO_MAIN ===
=== 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.  
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. For the page detailing what these values mean, please see the [[Scenario Main Values]] article.  


=== 0x4 - SCENARIO_SIDE ===
=== 0x4 - SCENARIO_SIDE ===
Line 49: Line 54:


=== 0x11 - SCENARIO_MAIN_BIT_FLAG ===
=== 0x11 - SCENARIO_MAIN_BIT_FLAG ===
Has many purposes, sometimes have hardcoded or technical effects, but not always. Here's a few I know off the top of my head:
Has many purposes, sometimes have hardcoded or technical effects, but not always.
{| class="wikitable"
{| class="wikitable"
|+
|+
Line 68: Line 73:
|-
|-
|4
|4
|Similar to 3, I think it related to missions in some way?
|Similar to 3. Seems to be related to missions
|-
|-
|5
|5
Line 80: Line 85:
|-
|-
|10
|10
|Chatot tells the player to do jobs on the job board today. I think...
|Gets set to 1 when it's a day to do jobs.
|-
|-
|11
|11
|Chatot tells the player to do sentry duty today.
|Gets set to 1 when it's a day to do sentry duty.  
|-
|-
|12, 13
|12, 13
Line 95: Line 100:
|-
|-
|25
|25
|Gets set to 0 before the check whether it's set to 1 or not?..
|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
|26, 27
Line 196: Line 201:
|Gets set to 1 in m00a01a. Doesn't seem to be used anywhere else.
|Gets set to 1 in m00a01a. Doesn't seem to be used anywhere else.
|-
|-
|99-128
|99-127
|Unused.
|Unused.
|}
|}


=== 0x12 - SCENARIO_TALK_BIT_FLAG ===
=== 0x12 - SCENARIO_TALK_BIT_FLAG ===
Up through [200] are in use, and they primarily exist to remember if you've already talked with an NPC (therefore playing modified or shorter dialogue the second time around). For example, every merchant in treasure town comments on your accomplishments (like defeating Darkrai) the first time you talk to them. Whether that conversation has happened yet is tracked with SCENARIO_TALK_BIT_FLAG.
Up through [140] 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.
{| class="wikitable"
!Number
!Used By
!Where's used
!Notes
|-
|0
|N/A
|N/A
|Presumed Unused.
|-
|1
|Cafe Client
|P01P04A\enter11.ssb
|Used by the Cafe Client for the Gabite Mission, and the 7-Treasures Missions. In both Mission types, it's used to skip the lengthy exposition for the mission if the player declined the job earlier in the day.
|-
|2
|Spoink
|Various
|Used in all of Spoink's talk scripts. Used to remember if Spoink has given the player their helpful exploration tip about enemies not moving unless you do.
|-
|3-22
|Chimecho
|G01P03A
|Used in all of Chimecho's talk scripts. Flag 18 is unused!
|-
|23, 24, 26
|Dugtrio
|Various
|Used in all of Dugtrio's talk scripts. Flag 25 is unused! Likely related to triggering CORO_EVENT_M00_04.
|-
|27, 28
|Pink Celebi
|D23P11A\um19
|Used in both Celebi talk scripts for the player to probe deeper about her not minding that she gets to spend more time with Grovyle.
|-
|29-40
|Croagunk
|G01P04A\enter05.ssb
|Flags 36 and 38 are unused! By mistake, 37 and 39 are used two separate times for Croagunk's dialogue!
|-
|41
|Cresselia
|Various
|Used in all of Cresselia's talk scripts. Used to remember if the player has rejected recruiting her to the team. Intended to only appear in H01P99A.
|-
|42
|N/A
|N/A
|Presumed unused.
|-
|43-47
|Lapras
|D01P01A
|Used in all of Lapras' talk scripts.
|-
|48
|Vigoroth
|T01P02A
|Used for Vigoroth to give a shortened advertisement for the Marowak Dojo. Apparently he's "sponsored".
|-
|49, 50
|Chatot
|Various
|Used in all of Chatot's talk scripts. Used for dialogue relating to the player going to Amp Plains. Intended to only appear in G01P04A.
|-
|51-59
|Electivire
|T01P01A\enter06.ssb
|
|-
|60-62
|Marowak (Main Story)
|T01P03A\enter07.ssb
|
|-
|63-71
|Kangaskhan
|T01P02A\enter10.ssb
|
|-
|72-83
|Green Kecleon
|T01P02A\enter12.ssb
|
|-
|84-95
|Purple Kecleon
|T01P02A\enter11.ssb
|
|-
|96-102
|Xatu
|T01P02A\enter09.ssb
|
|-
|103-109
|Chansey
|T01P01A\enter07.ssb
|
|-
|110-118
|Duskull
|T01P01A\enter05.ssb
|
|-
|119
|Pelipper (Rescue)
|S01P02A\enter02.ssb
|Used to remember if the player has ever been "welcomed" to Pelipper Island before after selecting "Go Rescue" on the main menu.
|-
|120
|Pelipper (Explore)
|S01P02A\enter07.ssb
|Used to remember if the player has ever been "welcomed" to Pelipper Island before after selecting "Standby Adventure" on the main menu.
|-
|121
|Partner
|Various
|Used during the main story (Main 22, before Brine Cave) to remember if the partner has told the hero they want to check back on Sharpedo Bluff for Grovyle. If enabled, this flag will activate related R-button partner dialogue and prevent the player from triggering the same "Let's go check out Sharpedo Bluff!" dialogue in T01P02A if it has already been triggered in T01P01A.
|-
|122
|Shaymin (Guide)
|Various
|Used in all of Shaymin's talk scripts throughout the mountain. Remembers if the player has rejected recruiting them to the team. Likely only intended to appear at the summit?
|-
|123
|Shaymin (Sky Gift)
|D73P11A
|Used to remember if Shaymin has told the player about Sky Gift delivery.
|-
|124
|N/A
|N/A
|Presumed unused.
|-
|125
|Pachirisu
|Various
|Used in all of Pachirisu's talk scripts. Remembers if the player has received a Sky Gift from Pachirisu or not. Likely intended to be used somewhere on the mountain.
|-
|126
|Marowak (Bidoof)
|T01P03A\enter08.ssb
|Used to remember if Bidoof has claimed Marowak's Reviver Seed in the special episode. Reset at the beginning of the episode!
|-
|127
|Kangakshan (Bidoof)
|T01P02A\un0103.ssb
|Used to remember if Bidoof has talked with Kangaskhan in the episode before.
Reset at the beginning of the episode!
|-
|128
|Duskull (Bidoof)
|T01P01A\un0101.ssb
|Used to remember if Bidoof has talked with Duskull in the episode before.
Reset at the beginning of the episode!
|-
|129
|Green Kecleon (Bidoof)
|T01P02A\un0101.ssb
|Used to remember if Bidoof has talked with Green Kecleon in the episode before. Reset at the beginning of the episode!
|-
|130
|Purple Kecleon (Bidoof)
|T01P02A\un0102.ssb
|Used to remember if Bidoof has talked with Purple Kecleon in the episode before.  Reset at the beginning of the episode!
|-
|131
|Wigglytuff (Bidoof)
|G01P05A\un0101.ssb
|Used to remember if Bidoof has talked with Wigglytuff after unlocking Deep Star Cave in the episode before. Runs CORO_EVENT_N00_01 if not. 
Reset at the beginning of the episode!
|-
|132
|Bidoof (Sunflora)
|G01P03A\un0401.ssb
|Used to remember if Sunflora has talked with Bidoof in the episode before.
Reset at the beginning of the episode!
|-
|133
|Chimecho (Sunflora)
|G01P03A\un0402.ssb
|Used to remember if Sunflora has talked with Chimecho in the episode before.
Reset at the beginning of the episode!
|-
|134
|Dugtrio (Sunflora)
|H01P99A\un0401.ssb
|Used to remeber if Sunflora has talked with Dugtrio in the episode before.
Reset at the beginning of the episode!
|-
|135
|Kangaskhan (Sunflora)
|T01P02A\un0404.ssb
|Used to remember if Sunflora has talked with Kangaskhan in the episode before.
Reset at the beginning of the episode!
|-
|136
|Green Kecleon (Sunflora)
|T01P02A\un0406.ssb
|Used to remember if Sunflora has talked with Green Kecleon in the episode before.
Reset at the beginning of the episode!
|-
|137
|Purple Kecleon (Sunflora)
|T01P02A\un0405.ssb
|Used to remember if Sunflora has talked with Purple Kecleon in the episode before.
Reset at the beginning of the episode!
|-
|138
|Vigoroth (Sunflora)
|T01P01A\un0404.ssb
|Used to remember if Sunflora was advertised to by Vigoroth in the episode before.
Reset at the beginning of the episode!
|-
|139
|Team Flame (Sunflora)
|G01P03A\un0405.ssb
|Used to remember if Sunflora talked with Bellsprout of Team Flame in the episode before. Reset at the beginning of the episode!
|-
|140
|Duskull (Sunflora)
|T01P01A\un0405.ssb
|Used to remember if Sunflora talked with Duskull in the episode before.
Reset at the beginning of the episode!
|-
|141+
|N/A
|N/A
|Presumed unused.
|}


=== 0x13 - SCENARIO_BALANCE_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.
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. Is also used as a general game progression marker by other things, restriction certain mission types, the croagunk swap shop being able to contain a water float, and other things like that.  


==== Value changes ====
==== Value changes ====
Line 335: Line 572:


=== 0x1d - GROUND_ENTER_LINK ===
=== 0x1d - GROUND_ENTER_LINK ===
Set to zero by EVENT_FORMATION. Purpose Unknown.


=== 0x1e - GROUND_GETOUT ===
=== 0x1e - GROUND_GETOUT ===
Line 340: Line 578:


=== 0x1f - GROUND_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 ===
=== 0x20 - GROUND_PLACE ===
Determines the index for the map marker on the top-screen world map.


=== 0x21 - GROUND_ENTER_BACKUP ===
=== 0x21 - GROUND_ENTER_BACKUP ===
Line 369: Line 609:


=== 0x26 - DUNGEON_SELECT ===
=== 0x26 - DUNGEON_SELECT ===
The dungeon ID selected by the crossroads. Possibly reused elsewhere.


=== 0x27 - DUNGEON_ENTER ===
=== 0x27 - DUNGEON_ENTER ===
Keeps track of what dungeon the player entered.  
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. 
 
If not 215, PROCESS_SPECIAL_DUNGEON_HAD_REQUEST_DONE will assume no missions were completed without checking DUNGEON_ENTER_INDEX.


=== 0x28 - DUNGEON_ENTER_MODE ===
=== 0x28 - DUNGEON_ENTER_MODE ===
Seems to be the DMODE of the dungeon being entered.


=== 0x29 - DUNGEON_ENTER_INDEX ===
=== 0x29 - DUNGEON_ENTER_INDEX ===
Line 379: Line 625:


=== 0x2a - DUNGEON_ENTER_FREQUENCY ===
=== 0x2a - DUNGEON_ENTER_FREQUENCY ===
A running total of how many times the player has entered any dungeon.


=== 0x2b - DUNGEON_RESULT ===
=== 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.
{| class="wikitable"
!Value
!Meaning
|-
|8
|Dungeon was cleared
|-
|9
|Escape Orb Used (Or mission cleared and left mid-dungeon)
|-
|Other
|Defeated in Dungeon
|}


=== 0x2c - GROUND_START_MODE ===
=== 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 ===
=== 0x2d - DUNGEON_ENTER_BACKUP ===
Line 415: Line 677:


=== 0x33 - REQUEST_CLEAR_COUNT ===
=== 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.
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 ===
=== 0x34 - PLAYER_KIND ===
Determines what actor's species should replace ACTOR_PLAYER when displayed:
{| class="wikitable"
!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 ===
=== 0x35 - ATTENDANT1_KIND ===
Determines what actor's species should replace ACTOR_ATTENDANT1 (and possibly other related actors) when displayed:
{| class="wikitable"
!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 ===
=== 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 ===
=== 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 ===
=== 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 ===
=== 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 ===
=== 0x3a - FRIEND_SUM ===
When called by LoadScriptVariableValue(), will always return 1. Seems unused outside of this.


=== 0x3b - UNIT_SUM ===
=== 0x3b - UNIT_SUM ===
In a switch case, will return the number of pokemon in the active team. Cannot be written to, only read. Skytemple's Variable reader will mistakenly read this as zero, as the script variable slot itself is unused, and the number of team members is a hardcoded return from LoadScriptVariable.


=== 0x3c - CARRY_GOLD ===
=== 0x3c - CARRY_GOLD ===
Line 440: Line 812:


=== 0x3e - HERO_FIRST_KIND ===
=== 0x3e - HERO_FIRST_KIND ===
The species ID of the initial hero starter.


=== 0x3f - HERO_FIRST_NAME ===
=== 0x3f - HERO_FIRST_NAME ===
The stored name of the initial hero starter, as a 10 character array of ASCII values.


=== 0x40 - PARTNER_FIRST_KIND ===
=== 0x40 - PARTNER_FIRST_KIND ===
The species ID of the initial partner starter.


=== 0x41 - PARTNER_FIRST_NAME ===
=== 0x41 - PARTNER_FIRST_NAME ===
The stored name of the initial partner starter, as a 10 character array of ASCII values.


=== 0x42 - HERO_TALK_KIND ===
=== 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.
{| class="wikitable"
!Value
!Hero Species
!Use Case
|-
|4
|Male Pokemon
|Masculine Pronouns
|-
|5
|Female/Genderless Pokemon
|Feminine Pronouns
|}


=== 0x43 - PARTNER_TALK_KIND ===
=== 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.
{| class="wikitable"
!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 ===
=== 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 ===
=== 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 the aura bow given to the player.


=== 0x46 - ROM_VARIATION ===
=== 0x46 - ROM_VARIATION ===
Unknown, but hardcoded to zero.


=== 0x47 - LANGUAGE_TYPE ===
=== 0x47 - LANGUAGE_TYPE ===
Stores the language from DS Firmware.
{| class="wikitable"
!Value
!Language
|-
|0
|Japanese
|-
|1
|English
|-
|2
|French
|-
|3
|German
|-
|4
|Italian
|-
|5
|Spanish
|}


=== 0x48 - GAME_MODE ===
=== 0x48 - GAME_MODE ===
Line 487: Line 925:


=== 0x49 - EXECUTE_SPECIAL_EPISODE_TYPE ===
=== 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 ===
=== 0x4a - SPECIAL_EPISODE_TYPE ===
Tracks which Special Episode is currently active, just like EXECUTE_SPECIAL_EPISODE_TYPE.


=== 0x4b - SPECIAL_EPISODE_OPEN ===
=== 0x4b - SPECIAL_EPISODE_OPEN ===
Line 534: Line 974:


=== 0x50 - DUNGEON_ENTER_LIST ===
=== 0x50 - DUNGEON_ENTER_LIST ===
Unused??? HUGE Bitfield perfect for storing dungeon-specific data... I think.
Large bitfield sized for storing dungeon-specific data. This is checked at [NA]0x204CEE0, but never assigned. Presumed Unused


=== 0x51 - DUNGEON_ARRIVE_LIST ===
=== 0x51 - DUNGEON_ARRIVE_LIST ===
Unused??? HUGE Bitfield perfect for storing dungeon-specific data.
Large bitfield sized for storing dungeon-specific data. Presumed Unused


=== 0x52 - DUNGEON_CONQUEST_LIST ===
=== 0x52 - DUNGEON_CONQUEST_LIST ===
Line 545: Line 985:


=== 0x53 - DUNGEON_PRESENT_LIST ===
=== 0x53 - DUNGEON_PRESENT_LIST ===
Unused??? HUGE Bitfield perfect for storing dungeon-specific data.
Large bitfield sized for storing dungeon-specific data. Presumed Unused


=== 0x54 - DUNGEON_REQUEST_LIST ===
=== 0x54 - DUNGEON_REQUEST_LIST ===
Line 555: Line 995:


=== 0x55 - WORLD_MAP_MARK_LIST_NORMAL ===
=== 0x55 - WORLD_MAP_MARK_LIST_NORMAL ===
Is adequately sized for the number of World Map Markers. Presumed Unused.


=== 0x56 - WORLD_MAP_MARK_LIST_SPECIAL ===
=== 0x56 - WORLD_MAP_MARK_LIST_SPECIAL ===
Is adequately sized for the number of World Map Markers. Presumed Unused.


=== 0x57 - WORLD_MAP_LEVEL ===
=== 0x57 - WORLD_MAP_LEVEL ===
Seems to be used to track the area covered by clouds on the world map.


=== 0x58 - POSITION_X ===
=== 0x58 - POSITION_X ===
Stores the X-coordinate of an entity when the LoadPosition() opcode is run on it.


=== 0x59 - POSITION_Y ===
=== 0x59 - POSITION_Y ===
Stores the Y-coordinate of an entity when the LoadPosition() opcode is run on it.


=== 0x5a - POSITION_HEIGHT ===
=== 0x5a - POSITION_HEIGHT ===
Stores the Z-coordinate of an entity when the LoadPosition() opcode is run on it.


=== 0x5b - POSITION_DIRECTION ===
=== 0x5b - POSITION_DIRECTION ===
Stores the direction an entity is facing when the LoadPosition() opcode is run on it.


=== 0x5c - EVENT_LOCAL ===
=== 0x5c - EVENT_LOCAL ===
Used as scratch paper by the base game, and is reset between scripts.
Used as scratch paper by the base game, and is reset between acting scripts.


=== 0x5d - DUNGEON_EVENT_LOCAL ===
=== 0x5d - DUNGEON_EVENT_LOCAL ===
Line 575: Line 1,022:


=== 0x5e - STATION_ITEM_STATIC ===
=== 0x5e - STATION_ITEM_STATIC ===
Use unknown.


=== 0x5f - STATION_ITEM_TEMP ===
=== 0x5f - STATION_ITEM_TEMP ===
Use unknown.


=== 0x60 - DELIVER_ITEM_STATIC ===
=== 0x60 - DELIVER_ITEM_STATIC ===
Use unknown.


=== 0x61 - DELIVER_ITEM_TEMP ===
=== 0x61 - DELIVER_ITEM_TEMP ===
Use unknown.


=== 0x62 - BIT_FUWARANTE_LOCAL ===
=== 0x62 - BIT_FUWARANTE_LOCAL ===
Line 591: Line 1,042:
Unlikely to be a backup flag. Conveniently sized for item_GetVariable to extract the item ID and metadata.
Unlikely to be a backup flag. Conveniently sized for item_GetVariable to extract the item ID and metadata.


Used somewhere in Sky Peak
Used exclusively by the debug town. Unused in the context of vanilla EoS.


=== 0x65 - ITEM_BACKUP_KUREKURE ===
=== 0x65 - ITEM_BACKUP_KUREKURE ===
Happiny requests the item stored in this variable if found on Sky Peak. Pulled from an item table each day (?)
Happiny requests the item stored in this variable if found on Sky Peak. Pulled from an item table each day.


=== 0x66 - ITEM_BACKUP_TAKE ===
=== 0x66 - ITEM_BACKUP_TAKE ===
Numel requests the item stored in this variable if found on Sky Peak. Pulled from an item table each day (?)
Numel requests the item stored in this variable if found on Sky Peak. Pulled from an item table each day.


=== 0x67 - ITEM_BACKUP_GET ===
=== 0x67 - ITEM_BACKUP_GET ===
Numel gives this item stored in this variable if found on Sky Peak. Pulled from an item table each day (?)
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 ===
=== 0x68 - REQUEST_THANKS_RESULT_KIND ===
Stores the mission type of the mission being processed during mission rewards.


=== 0x69 - REQUEST_THANKS_RESULT_VARIATION ===
=== 0x69 - REQUEST_THANKS_RESULT_VARIATION ===
Stores the mission subtype of the mission being processed during mission rewards.


=== 0x6a - SUB30_TREASURE_DISCOVER ===
=== 0x6a - SUB30_TREASURE_DISCOVER ===
Line 619: Line 1,072:


=== 0x6e - TEAM_RANK_EVENT_LEVEL ===
=== 0x6e - TEAM_RANK_EVENT_LEVEL ===
Has some correlation with guild rank? Unsure, I don't trust this variable.  
Updated by message_Menu(76) to the current guild rank. In vanilla, this only seems to happen on clearing a mission.


=== 0x6f - PLAY_OLD_GAME ===
=== 0x6f - PLAY_OLD_GAME ===
Line 625: Line 1,078:


=== 0x70 - NOTE_MODIFY_FLAG ===
=== 0x70 - NOTE_MODIFY_FLAG ===
If true, the player will be forced to save on leaving Pelipper island. Likely indicative of whether a rescue has been attempted?


=== 0x71 - SUB30_PROJECTP ===
=== 0x71 - SUB30_PROJECTP ===
Line 630: Line 1,084:


=== 0x72 - SUM ===
=== 0x72 - SUM ===
Seems to be a marker of the end of "normal" script variables.


=== 0x401 - LOCAL0 ===
=== 0x400 - LOCAL0 ===
Unknown if used in vanilla, is reset on entering a new script like $EVENT_LOCAL.  
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``!  
NOTE: Is unique for every routine in a script! $LOCAL0 in def 0 is distinct from $LOCAL0 in def 1!  


=== 0x402 - LOCAL1 ===
=== 0x401 - LOCAL1 ===
Unknown if used in vanilla, is reset on entering a new script like $EVENT_LOCAL.  
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 in ``def 0`` is distinct from $LOCAL1 in ``def 1``!  
NOTE: Is unique for every routine in a script! $LOCAL1 indef 0 is distinct from $LOCAL1 in def 1!  


=== 0x402 - LOCAL2 ===
=== 0x402 - LOCAL2 ===
Line 645: Line 1,100:


=== 0x403 - LOCAL3 ===
=== 0x403 - LOCAL3 ===
Broken, do not use unless you know what you are doing!{{NavScriptTerms}}
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:
{| class="wikitable"
|'''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)
|}
{{NavScriptTerms}}
[[Category:Documentation]]
[[Category:Documentation]]