diff --git a/headers/data/arm9.h b/headers/data/arm9.h index 66f90918..e398b9c6 100644 --- a/headers/data/arm9.h +++ b/headers/data/arm9.h @@ -36,6 +36,10 @@ extern char STRING_MONSTER_M_ATTACK_BIN[24]; extern char STRING_MONSTER_M_GROUND_BIN[24]; extern char STRING_FILE_DIRECTORY_INIT[40]; extern struct baby_exclusive_item_pair BABY_EXCLUSIVE_ITEM_PAIRS[16]; +extern char ITEM_NAME_FORMAT_YELLOW[16]; +extern char ITEM_NAME_FORMAT_INDIGO[16]; +extern char ITEM_NAME_FORMAT_PLAIN[4]; +extern char ITEM_NAME_FORMAT_CREAM[16]; extern enum item_id KECLEON_SHOP_ITEM_TABLE_LISTS_1[4]; extern enum item_id KECLEON_SHOP_ITEM_TABLE_LISTS_2[4]; extern struct exclusive_item_stat_boost_entry EXCLUSIVE_ITEM_STAT_BOOST_DATA[15]; @@ -66,12 +70,18 @@ extern struct prog_pos_info EVENT_FLAG_PROG_POS_INFO_CALC_SCRIPT_VARIABLES; extern struct prog_pos_info EVENT_FLAG_PROG_POS_INFO_COMPARE_SCRIPT_VARIABLES; extern unsigned char EVENT_FLAG_FILE_NAME[16]; extern struct script_local_var_table SCRIPT_VARS_LOCALS; +extern unsigned char EVENT_FLAG_SIZE_DEBUG_MSG[28]; extern unsigned char EVENT_FLAG_CALC_SCRIPT_VARIABLES_ERROR[32]; extern unsigned char EVENT_FLAG_COMPARE_SCRIPT_VARIABLES_ERROR[28]; extern unsigned char EVENT_FLAG_GAME_MODE_DEBUG_MSG[32]; extern unsigned char EVENT_FLAG_BACKUP_DEBUG_MSG[32]; +extern unsigned char SUM_MSG[4]; +extern unsigned char SUB30_PROJECTP_MSG[16]; +extern unsigned char NOTE_MODIFY_FLAG_MSG[20]; extern struct script_var_table SCRIPT_VARS; extern unsigned char SCENARIO_CALC_DEBUG_MSG[40]; +extern unsigned char SCENARIO_FLAG_RESUME_DEBUG_MSG[32]; +extern unsigned char SCENARIO_FLAG_BACKUP_DEBUG_MSG[32]; extern struct portrait_layout PORTRAIT_LAYOUTS[32]; extern char KAOMADO_FILEPATH[20]; extern uint8_t WONDER_MAIL_BITS_MAP[32]; @@ -133,6 +143,24 @@ extern uint32_t BAG_CAPACITY_TABLE_SPECIAL_EPISODES[5]; extern uint32_t BAG_CAPACITY_TABLE[8]; extern struct monster_id_16 SPECIAL_EPISODE_MAIN_CHARACTERS[100]; extern struct guest_monster GUEST_MONSTER_DATA[18]; +extern struct guest_monster GUEST_MONSTER_BANETTE; +extern struct guest_monster GUEST_MONSTER_SKORUPI; +extern struct guest_monster GUEST_MONSTER_BIDOOF; +extern struct guest_monster GUEST_MONSTER_SNOVER; +extern struct guest_monster GUEST_MONSTER_BIDOOF_2; +extern struct guest_monster GUEST_MONSTER_GROVYLE; +extern struct guest_monster GUEST_MONSTER_LOUDRED; +extern struct guest_monster GUEST_MONSTER_DUSKNOIR; +extern struct guest_monster GUEST_MONSTER_GROVYLE_2; +extern struct guest_monster GUEST_MONSTER_CHATOT; +extern struct guest_monster GUEST_MONSTER_SHINY_CELEBI; +extern struct guest_monster GUEST_MONSTER_GROVYLE_3; +extern struct guest_monster GUEST_MONSTER_GROVYLE_4; +extern struct guest_monster GUEST_MONSTER_CRESSELIA; +extern struct guest_monster GUEST_MONSTER_BIDOOF_3; +extern struct guest_monster GUEST_MONSTER_BIDOOF_4; +extern struct guest_monster GUEST_MONSTER_SHAYMIN_LAND; +extern struct guest_monster GUEST_MONSTER_SNOVER_2; extern struct rankup_table_entry RANK_UP_TABLE[13]; extern struct monster_id_16 DS_DOWNLOAD_TEAMS[56]; extern enum monster_id UNOWN_SPECIES_ADDITIONAL_CHARS[28]; diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index 0a040114..99cefde4 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -790,10 +790,35 @@ undefined4 ReadSaveHeader(undefined4* param_1, undefined4 param_2, undefined4 pa undefined4 param_4); int NoteLoadBase(void); int ReadQuickSaveInfo(undefined* buf, int size); +void InitOptionsVeneer(void); +void InitOptions(void); +void GetOptions(struct options* dest_opts_ptr); +void SetOptions(struct options* src_options_ptr); +void SaveOptionsToCtx(uint8_t* ctx); +void LoadOptionsFromCtx(uint8_t* ctx); +bool IsTouchScreenNotOff(void); +bool IsTouchScreenUseAnywhere(void); +uint8_t GetTopScreenOption(void); +void SetTopScreenOption(uint8_t new_ts); +uint8_t GetBottomScreenOption(void); +bool GetGridsOption(void); +uint8_t GetSpeedOption(void); +uint8_t GetFarOffPalsOption(void); +bool GetDamageTurnOption(void); +bool GetDPadAttackOption(void); +bool GetCheckDirectionOption(void); +bool IsMapShownOnEitherScreen(void); +bool IsTeamStatsOnTopScreen(void); +bool IsTextLogOnTopScreen(void); +void CopyFrameTypeOption(uint8_t* dst); +void SetFrameTypeOption(uint8_t* new_ft); enum game_mode GetGameMode(void); bool IsGameModeRescue(void); +void SetGameMode(enum game_mode new_game_mode); +void DebugPrintEventFlagSize(void); void InitScriptVariableValues(void); void InitEventFlagScriptVars(void); +void DefaultInitScriptVariable(void* local_var_vals, enum script_var_id id); void ZinitScriptVariable(void* local_var_vals, enum script_var_id id); void LoadScriptVariableRaw(struct script_var_desc* var, void* local_var_vals, enum script_var_id id); @@ -848,6 +873,7 @@ bool HasPlayedOldGame(void); bool GetPerformanceFlagWithChecks(int flag_id); void SetPerformanceFlagWithChecks(int flag_id, int value); int GetScenarioBalance(void); +void ScenarioFlagRestore(void); void ScenarioFlagBackup(void); void InitWorldMapScriptVars(void); void InitDungeonListScriptVars(void); diff --git a/headers/types/common/common.h b/headers/types/common/common.h index 9e34f893..0b49123d 100644 --- a/headers/types/common/common.h +++ b/headers/types/common/common.h @@ -1402,13 +1402,13 @@ struct options { uint8_t touch_screen; // Off = 0, Menu Only = 1, Use Anywhere = 2 uint8_t bottom_screen; // No map = 0, Clear map = 1, Shaded map = 2 uint8_t top_screen; // Controls = 0, Team stats = 1, Text log = 2, Map and team = 3, Job = 4 - uint8_t grids; // Off = 0, On = 1 + bool grids; // Off = 0, On = 1 uint8_t speed; // Regular = 0, Fast = 1 uint8_t far_off_pals; // Self = 0, Look = 1 - uint8_t damage_turn; // No = 0, Yes = 1 - uint8_t d_pad_attack; // No = 0, Yes = 1 - uint8_t check_direction; // No = 0, Yes = 1 - uint8_t frame_type; // Frame type 1 = 0, 2 = 1, 3 = 2, 4 = 3, 5 = 4 + bool damage_turn; // No = 0, Yes = 1 + bool d_pad_attack; // No = 0, Yes = 1 + bool check_direction; // No = 0, Yes = 1 + uint8_t frame_type; // Frame type 1 = 0, 2 = 1, 3 = 2, 4 = 3, 5 = 4 }; ASSERT_SIZE(struct options, 10); diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 2e2b27dd..e29c50ae 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -7422,6 +7422,207 @@ arm9: r0: buffer r1: size return: status code + - name: InitOptionsVeneer + address: + EU: 0x204AE50 + NA: 0x204AB18 + JP: 0x204AE80 + description: |- + Likely a linker-generated veneer for InitOptions. + + See https://developer.arm.com/documentation/dui0474/k/image-structure-and-generation/linker-generated-veneers/what-is-a-veneer- + + No params. + - name: InitOptions + address: + EU: 0x204AE5C + NA: 0x204AB24 + JP: 0x204AE8C + description: |- + Initializes the game options struct (OPTIONS) with its default values. + + No params. + - name: GetOptions + address: + EU: 0x204AEB0 + NA: 0x204AB78 + JP: 0x204AEE0 + description: |- + Copies the game options from OPTIONS to the given options struct. + + r0: options struct pointer to copy to. + - name: SetOptions + address: + EU: 0x204AED0 + NA: 0x204AB98 + JP: 0x204AF00 + description: |- + Copies the game options from the given options struct to OPTIONS. + + r0: options struct pointer to copy from. + - name: SaveOptionsToCtx + address: + EU: 0x204AEF0 + NA: 0x204ABB8 + JP: 0x204AF20 + description: |- + Saves the game options to the save file. + + r0: save file pointer to save the game options to. + - name: LoadOptionsFromCtx + address: + EU: 0x204B014 + NA: 0x204ACDC + JP: 0x204B044 + description: |- + Loads the game options from the save file. + + r0: save file pointer to load the game options from. + - name: IsTouchScreenNotOff + address: + EU: 0x204B198 + NA: 0x204AE60 + JP: 0x204B1C8 + description: |- + Returns false if the "Touch Screen" option is set to "Off", and true otherwise. + + return: bool + - name: IsTouchScreenUseAnywhere + address: + EU: 0x204B1B8 + NA: 0x204AE80 + JP: 0x204B1E8 + description: |- + Returns whether the "Touch Screen" option is set to "Use anywhere". + + return: bool + - name: GetTopScreenOption + address: + EU: 0x204B1D8 + NA: 0x204AEA0 + JP: 0x204B208 + description: |- + Returns the value of the "Top screen" option. + + return: uint8_t + - name: SetTopScreenOption + address: + EU: 0x204B1E8 + NA: 0x204AEB0 + JP: 0x204B218 + description: |- + Sets the value of the "Top screen" option. + + r0: value to set "Top screen" option to. + - name: GetBottomScreenOption + address: + EU: 0x204B1F8 + NA: 0x204AEC0 + JP: 0x204B228 + description: |- + Returns the value of the "Bottom screen" option. + + return: uint8_t + - name: GetGridsOption + address: + EU: 0x204B208 + NA: 0x204AED0 + JP: 0x204B238 + description: |- + Returns whether the "Grids" option is enabled. + + return: bool + - name: GetSpeedOption + address: + EU: 0x204B218 + NA: 0x204AEE0 + JP: 0x204B248 + description: |- + Returns the value of the "Speed" option. + + return: uint8_t + - name: GetFarOffPalsOption + address: + EU: 0x204B228 + NA: 0x204AEF0 + JP: 0x204B258 + description: |- + Returns the value of the "Far-off pals" option. + + return: uint8_t + - name: GetDamageTurnOption + address: + EU: 0x204B238 + NA: 0x204AF00 + JP: 0x204B268 + description: |- + Returns whether the "Damage turn" option is enabled. + + return: bool + - name: GetDPadAttackOption + address: + EU: 0x204B248 + NA: 0x204AF10 + JP: 0x204B278 + description: |- + Returns whether the "D-pad attack" option is enabled. + + return: bool + - name: GetCheckDirectionOption + address: + EU: 0x204B258 + NA: 0x204AF20 + JP: 0x204B288 + description: |- + Returns whether the "Check direction" option is enabled. + + return: bool + - name: IsMapShownOnEitherScreen + address: + EU: 0x204B268 + NA: 0x204AF30 + JP: 0x204B298 + description: |- + Returns true if the map is configured in the options to show on either the top or bottom screen. + This includes "Clear map" or "Shaded map" on the bottom screen, and "Map and team" on the top screen. + + return: bool + - name: IsTeamStatsOnTopScreen + address: + EU: 0x204B290 + NA: 0x204AF58 + JP: 0x204B2C0 + description: |- + Returns true if the top screen is configured in the options to show "Team stats". + + return: bool + - name: IsTextLogOnTopScreen + address: + EU: 0x204B2B0 + NA: 0x204AF78 + JP: 0x204B2E0 + description: |- + Returns true if the top screen is configured in the options to show "Text log". + + return: bool + - name: CopyFrameTypeOption + address: + EU: 0x204B2D0 + NA: 0x204AF98 + JP: 0x204B300 + description: |- + Copies the "Frame Type" option from OPTIONS to the given pointer. + + r0: destination pointer for the "Frame Type" option. + - name: SetFrameTypeOption + address: + EU: 0x204B2E4 + NA: 0x204AFAC + JP: 0x204B314 + description: |- + Copies the "Frame Type" option from the given pointer to OPTIONS. + + r0: source pointer for the "Frame Type" option. - name: GetGameMode address: EU: 0x204B2F8 @@ -7440,6 +7641,24 @@ arm9: Returns true if the value of GAME_MODE is GAME_MODE_RESCUE. return: True if GAME_MODE is GAME_MODE_RESCUE. + - name: SetGameMode + address: + EU: 0x204B350 + NA: 0x204B018 + JP: 0x204B380 + description: |- + Sets the value of GAME_MODE. + + r0: value to set GAME_MODE to. + - name: DebugPrintEventFlagSize + address: + EU: 0x204B360 + NA: 0x204B028 + JP: 0x204B390 + description: |- + Prints a debug message with values related to event flag size. + + No params. - name: InitScriptVariableValues address: EU: 0x204B384 @@ -7460,7 +7679,19 @@ arm9: Initializes an assortment of event flag script variables (see the code for an exhaustive list). No params. + - name: DefaultInitScriptVariable + address: + EU: 0x204B708 + NA: 0x204B3D0 + JP: 0x204B730 + description: |- + Initialize the values of the given script variable to the variable's default value, as defined in SCRIPT_VARS. + + r0: pointer to the local variable table (only needed if id >= VAR_LOCAL0) + r1: script variable ID - name: ZinitScriptVariable + aliases: + - ZeroInitScriptVariable address: EU: 0x204B76C NA: 0x204B434 @@ -7999,6 +8230,17 @@ arm9: - In all other cases, the value of the SCENARIO_BALANCE_FLAG variable is returned return: Current SCENARIO_BALANCE value. + - name: ScenarioFlagRestore + address: + EU: 0x204CF20 + NA: 0x204CBE8 + JP: 0x204CF48 + description: |- + Loads scenario flag script variables (SCENARIO_SELECT, SCENARIO_MAIN_BIT_FLAG) from their respective BACKUP script variables, but only in certain game modes. + + This function prints the debug string "ScenarioFlag ResumeGameMode %d" with the game mode. + + No params. - name: ScenarioFlagBackup address: EU: 0x204CFF0 @@ -11710,6 +11952,46 @@ arm9: NA: 0x40 JP: 0x40 description: "Stores the IDs of each baby Pokemon (and Phione), as well as the exclusive item they hatch with." + - name: ITEM_NAME_FORMAT_YELLOW + address: + EU: 0x20984D0 + NA: 0x209808C + JP: 0x2098380 + length: + EU: 0x10 + NA: 0x10 + JP: 0x10 + description: "Format string for items with a yellow name, like boxes" + - name: ITEM_NAME_FORMAT_INDIGO + address: + EU: 0x20984E0 + NA: 0x209809C + JP: 0x2098390 + length: + EU: 0x10 + NA: 0x10 + JP: 0x10 + description: "Format string for items with an indigo name, like exclusive items" + - name: ITEM_NAME_FORMAT_PLAIN + address: + EU: 0x20984F0 + NA: 0x20980AC + JP: 0x20983A0 + length: + EU: 0x4 + NA: 0x4 + JP: 0x4 + description: Format string for items with no color formatting + - name: ITEM_NAME_FORMAT_CREAM + address: + EU: 0x20984F4 + NA: 0x20980B0 + JP: 0x20983A4 + length: + EU: 0x10 + NA: 0x10 + JP: 0x10 + description: "Format string for items with a cream pink name, the usual text color for items" - name: KECLEON_SHOP_ITEM_TABLE_LISTS_1 address: EU: 0x2098504 @@ -12117,6 +12399,16 @@ arm9: Each entry has the same structure as an entry in SCRIPT_VARS. type: struct script_local_var_table + - name: EVENT_FLAG_SIZE_DEBUG_MSG + address: + EU: 0x209D490 + NA: 0x209CF0C + JP: 0x209E2E0 + length: + EU: 0x1C + NA: 0x1C + JP: 0x1C + description: "Debug log message that says \"EventFlagSize\"" - name: EVENT_FLAG_CALC_SCRIPT_VARIABLES_ERROR aliases: - EVENT_FLAG_EXPANSION_ERROR @@ -12159,6 +12451,36 @@ arm9: NA: 0x20 JP: 0x20 description: Debug log message when EventFlagBackup runs. + - name: SUM_MSG + address: + EU: 0x209D528 + NA: 0x209CFA4 + JP: 0x209E378 + length: + EU: 0x4 + NA: 0x4 + JP: 0x4 + description: "Debug log message that says \"SUM\"" + - name: SUB30_PROJECTP_MSG + address: + EU: 0x209D71C + NA: 0x209D198 + JP: 0x209E56C + length: + EU: 0x10 + NA: 0x10 + JP: 0x10 + description: "Debug log message that says \"SUB30_PROJECTP\"" + - name: NOTE_MODIFY_FLAG_MSG + address: + EU: 0x209D850 + NA: 0x209D2CC + JP: 0x209E6A0 + length: + EU: 0x14 + NA: 0x14 + JP: 0x14 + description: "Debug log message that says \"NOTE_MODIFY_FLAG\"" - name: SCRIPT_VARS address: EU: 0x209DDF4 @@ -12184,6 +12506,26 @@ arm9: NA: 0x28 JP: 0x28 description: Debug log message with the old and new scenario values when SetScenarioScriptVar runs. + - name: SCENARIO_FLAG_RESUME_DEBUG_MSG + address: + EU: 0x209E54C + NA: 0x209DFC8 + JP: 0x209F39C + length: + EU: 0x20 + NA: 0x20 + JP: 0x20 + description: Debug log message that prints the current game mode when ScenarioFlagRestore is invoked. + - name: SCENARIO_FLAG_BACKUP_DEBUG_MSG + address: + EU: 0x209E56C + NA: 0x209DFE8 + JP: 0x209F3BC + length: + EU: 0x20 + NA: 0x20 + JP: 0x20 + description: Debug log message that prints the current game mode when ScenarioFlagBackup is invoked. - name: PORTRAIT_LAYOUTS address: EU: 0x209E598 @@ -12992,6 +13334,178 @@ arm9: See the struct definitions and Frostbyte's dungeon data document for more info. type: struct guest_monster[18] + - name: GUEST_MONSTER_BANETTE + address: + EU: 0x20A2E40 + NA: 0x20A28BC + JP: 0x20A3C90 + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: Guest monster data for Banette in Murky Cave during Igglybuff the Prodigy. + - name: GUEST_MONSTER_SKORUPI + address: + EU: 0x20A2E64 + NA: 0x20A28E0 + JP: 0x20A3CB4 + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: Guest monster data for Skorupi in Murky Cave during Igglybuff the Prodigy. + - name: GUEST_MONSTER_BIDOOF + address: + EU: 0x20A2E88 + NA: 0x20A2904 + JP: 0x20A3CD8 + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: Guest monster data for Bidoof in Craggy Coast during the main story. + - name: GUEST_MONSTER_SNOVER + address: + EU: 0x20A2EAC + NA: 0x20A2928 + JP: 0x20A3CFC + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: "Guest monster data for Snover in Deep Star Cave during Bidoof's Wish." + - name: GUEST_MONSTER_BIDOOF_2 + address: + EU: 0x20A2ED0 + NA: 0x20A294C + JP: 0x20A3D20 + description: Guest monster data for Bidoof in Rock Path during the main story. + - name: GUEST_MONSTER_GROVYLE + address: + EU: 0x20A2EF4 + NA: 0x20A2970 + JP: 0x20A3D44 + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: Guest monster data for Grovyle in Dusk Forest during the main story. + - name: GUEST_MONSTER_LOUDRED + address: + EU: 0x20A2F18 + NA: 0x20A2994 + JP: 0x20A3D68 + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: "Guest monster data for Loudred in Spring Cave Pit during Today's \"Oh My Gosh\"." + - name: GUEST_MONSTER_DUSKNOIR + address: + EU: 0x20A2F3C + NA: 0x20A29B8 + JP: 0x20A3D8C + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: Guest monster data for Dusknoir during In the Future of Darkness. + - name: GUEST_MONSTER_GROVYLE_2 + address: + EU: 0x20A2F60 + NA: 0x20A29DC + JP: 0x20A3DB0 + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: Guest monster data for Grovyle in Treeshroud Forest during the main story. + - name: GUEST_MONSTER_CHATOT + address: + EU: 0x20A2F84 + NA: 0x20A2A00 + JP: 0x20A3DD4 + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: Guest monster data for Chatot in Brine Cave during the main story. + - name: GUEST_MONSTER_SHINY_CELEBI + address: + EU: 0x20A2FA8 + NA: 0x20A2A24 + JP: 0x20A3DF8 + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: Guest monster data for Celebi in Deep Dusk Forest during the main story. + - name: GUEST_MONSTER_GROVYLE_3 + address: + EU: 0x20A2FCC + NA: 0x20A2A48 + JP: 0x20A3E1C + description: Guest monster data for Grovyle in Deep Dusk Forest during the main story. + - name: GUEST_MONSTER_GROVYLE_4 + address: + EU: 0x20A2FF0 + NA: 0x20A2A6C + JP: 0x20A3E40 + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: "Guest monster data for Grovyle in Hidden Land, Hidden Highland, and the Old Ruins during the main story." + - name: GUEST_MONSTER_CRESSELIA + address: + EU: 0x20A3014 + NA: 0x20A2A90 + JP: 0x20A3E64 + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: "Guest monster data for Cresselia in Dark Crater, Deep Dark Crater, and Dark Crater Pit during the postgame story." + - name: GUEST_MONSTER_BIDOOF_3 + address: + EU: 0x20A3038 + NA: 0x20A2AB4 + JP: 0x20A3E88 + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: Guest monster data for Bidoof in Mt. Horn during the main story. + - name: GUEST_MONSTER_BIDOOF_4 + address: + EU: 0x20A305C + NA: 0x20A2AD8 + JP: 0x20A3EAC + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: Guest monster data for Bidoof in Side Path during the main story. + - name: GUEST_MONSTER_SHAYMIN_LAND + address: + EU: 0x20A3080 + NA: 0x20A2AFC + JP: 0x20A3ED0 + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: Guest monster data for Shaymin in Sky Peak during the postgame story. + - name: GUEST_MONSTER_SNOVER_2 + address: + EU: 0x20A30A4 + NA: 0x20A2B20 + JP: 0x20A3EF4 + length: + EU: 0x24 + NA: 0x24 + JP: 0x24 + description: "Guest monster data for Snover in Star Cave during Bidoof's Wish." - name: RANK_UP_TABLE address: EU: 0x20A30C8