From 4570fa0d19ac727a6eb77c6353d8761002cdf4af Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 7 Jun 2026 14:51:53 +0400 Subject: [PATCH 001/103] aaa --- headers/functions/arm9.h | 1 + headers/functions/overlay29.h | 24 +++++-- symbols/arm9.yml | 10 +++ symbols/overlay29.yml | 129 ++++++++++++++++++++++++++++++---- 4 files changed, 148 insertions(+), 16 deletions(-) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index b8dc0ab6..afa0f874 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -585,6 +585,7 @@ uint8_t DrawChar(int window_id, int x, int y, char symbol, int color_offset); struct window* GetWindow(int window_id); int NewWindowScreenCheck(struct window_params* params, uint8_t param_2); int NewWindow(struct window_params* params, uint8_t param_2); +int GetPaletteBaseAddress(undefined4 pal_vram_offset_upper, undefined4 pal_vram_offset_lower); void SetScreenWindowsColor(int palette_idx, bool upper_screen); void SetBothScreensWindowsColor(int palette_idx); void UpdateWindow(int window_id); diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index a272f5f4..c53275d2 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -47,13 +47,14 @@ void PopulateActiveMonsterPtrs(void); int GetTeamMemberIndex(struct entity* monster); void SubstitutePlaceholderStringTags(int string_id, struct entity* entity, undefined4 param_3); bool UpdateMapSurveyorFlag(void); -void PointCameraToMonster(struct entity* entity, undefined param_2); +void PointCameraToMonster(struct entity* entity, bool update_trap_vis_and_map); void UpdateCamera(undefined param_1); bool ItemIsActive(struct entity* entity, enum item_id item_id); int GetVisibilityRange(void); void RevealWholeFloor(struct entity* entity); int PlayEffectAnimationEntity(struct entity* entity, int effect_id, bool play_now, int param_4, - int param_5, undefined param_6, int param_7, undefined2* param_8); + int param_5, undefined param_6, enum direction_id effect_dir, + undefined2* param_8); int PlayEffectAnimationPos(struct position* pos, int effect_id, bool play_now); int PlayEffectAnimationPixelPos(struct pixel_position* pixel_pos, int effect_id, bool play_now); void AnimationDelayOrSomething(undefined param_1); @@ -67,6 +68,8 @@ void PlayEffectAnimationEntityStandard(struct entity* entity, int effect_id); void PlaySpeedUpEffect(struct entity* entity); void PlaySpeedDownEffect(struct entity* entity); void ShowPpRestoreEffect(struct entity* entity); +void DisplayStockpileNumbers(struct entity* entity); +void PlayInvisifySeIfShouldDisplayEntity(struct entity* entity); void PlayOffensiveStatDownEffect(struct entity* entity, int stat_index); void PlayDefensiveStatDownEffect(struct entity* entity, int stat_index); void PlayOffensiveStatUpEffect(struct entity* entity, int stat_index); @@ -208,6 +211,14 @@ bool DebugRecruitingEnabled(void); void TryActivateIqBooster(void); bool IsBehaviorLoneOutlaw(enum monster_behavior behavior); bool IsSecretBazaarNpcBehavior(enum monster_behavior behavior); +bool TalkToSecretBazaarNpcStandard(int string_id, struct entity* shopkeeper, + enum portrait_emotion emotion); +bool TalkToSecretBazaarNpcWithYesNoMenu(int string_id, struct entity* shopkeeper, + enum portrait_emotion emotion); +void MakeTargetFaceUserAndIdle(struct entity* target, struct entity* user); +void SubtractMoneyCarriedWithSfx(int amount); +bool TalkToSecretBazaarNpc(int string_id, struct entity* shopkeeper, enum portrait_emotion emotion, + struct simple_menu_id_item* menu_items, bool param_5); struct action_16* GetLeaderAction(void); enum action_id GetLeaderActionId(void); void GetEntityTouchscreenArea(struct entity* entity, struct touchscreen_area* area); @@ -259,8 +270,10 @@ void ReevaluateSnatchMonster(void); struct entity* GetRandomExplorerMazeMonster(void); void RestorePpAllMovesSetFlags(struct entity* entity); bool CheckTeamMemberIdxVeneer(int member_idx); +bool CheckMonsterTeamMemberIdx(struct entity* entity); bool IsMonsterIdInNormalRangeVeneer(enum monster_id monster_id); void BoostIQ(struct entity* entity, int iq_boost, bool suppress_logs); +void ChangeMonsterAnimationToIdle(struct entity* entity, enum direction_id direction); bool ShouldMonsterHeadToStairs(struct entity* entity); bool MewSpawnCheck(enum monster_id monster_id, bool fail_if_mew); void TryEndStatusWithAbility(struct entity* attacker, struct entity* defender); @@ -392,7 +405,7 @@ bool DungeonTmLearnMove(struct entity* user, enum move_id move_id); void GetMonsterMoves(struct move_id_16* out_moves, enum monster_id monster_id, int level); void EvolveMonster(struct entity* user, struct entity* target, enum monster_id new_monster_id); void DisplayMonsterShadow(bool display_shadow, enum shadow_type shadow_type, bool yellow_circle, - uint16_t x, uint16_t y); + int16_t x, int16_t y); void ChangeMonsterAnimation(struct entity* monster, int8_t animation_id, enum direction_id direction); uint8_t GetIdleAnimationId(struct entity* entity); @@ -476,6 +489,8 @@ void UpdateShopkeeperModeAfterAttack(struct entity* attacker, struct entity* def void UpdateShopkeeperModeAfterTrap(struct entity* shopkeeper, bool non_team_member); void ResetDamageCalcDiagnostics(void); bool SpecificRecruitCheck(enum monster_id monster_id); +bool PointCameraToMonsterWrapper(struct entity* entity); +bool IsEitherMonsterInvalid(struct entity* entity1, struct entity* entity2); bool RecruitCheck(struct entity* user, struct entity* target); bool TryRecruit(struct entity* user, struct entity* recruit); void TrySpawnMonsterAndTickSpawnCounter(void); @@ -763,7 +778,7 @@ void ActivateSportCondition(bool water_sport); bool TryActivateWeather(bool param_1, bool param_2); int DigitCount(int n); void LoadTextureUi(void); -int GetPaletteBaseAddress(undefined4 pal_vram_offset_upper, undefined4 pal_vram_offset_lower); +int GetPaletteBaseAddressOv29(undefined4 pal_vram_offset_upper, undefined4 pal_vram_offset_lower); int DisplayNumberTextureUi(int16_t x, int16_t y, int n, int ally_mode); int DisplayCharTextureUi(struct render_3d_element_64* element64, int16_t x, int16_t y, int char_id, int16_t param_5); @@ -923,6 +938,7 @@ void GenerateAndSpawnItem(enum item_id item_id, int16_t x, int16_t y, uint16_t q bool sticky, bool check_in_bag); bool IsHiddenStairsFloor(void); bool IsSecretBazaarVeneer(void); +void InteractWithSecretBazaarNpc(struct entity* user, struct entity* shopkeeper); void PrepareItemForPrinting(uint8_t tag_id, struct item* item); void PrepareItemForPrinting2(struct preprocessor_args* preprocessor_args, uint8_t tag_id, struct item* item); diff --git a/symbols/arm9.yml b/symbols/arm9.yml index dda5e6ef..59730b16 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -5585,6 +5585,16 @@ arm9: r0: window_params pointer to be copied by value into window::hdr in the new window r1: ? return: window_id + - name: GetPaletteBaseAddress + address: + EU: 0x2027B9C + description: |- + Gets the palette base address for a 3D element loaded from a WTE file. + Takes the same parameters as were used in the specified file's ProcessWte call. + + r0: upper part of the palette VRAM + r1: lower part of the palette VRAM + return: palette base address - name: SetScreenWindowsColor address: EU: 0x2027D5C diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index f9865665..6fd1f97c 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -637,7 +637,7 @@ overlay29: Points the camera to the specified monster. r0: Entity pointer - r1: ? + r1: whether to also update trap visibility and the minimap - name: UpdateCamera address: EU: 0x22E3874 @@ -732,6 +732,7 @@ overlay29: r0: entity pointer r1: Effect ID r2: appears to be a flag for actually running the animation now? If this is 0, the AdvanceFrame loop is skipped entirely. + stack[2]: direction of effect others: ? return: status code, or maybe the number of frames or something? Either way, -1 seems to indicate the animation being finished or something? - name: PlayEffectAnimationPos @@ -863,6 +864,20 @@ overlay29: description: |- Displays the graphical effect on a monster that just lowered movement speed. + r0: entity pointer + - name: DisplayStockpileNumbers + address: + EU: 0x22E5084 + description: |- + Displays the numbers for a monster's stockpile stage above them. + + r0: entity pointer + - name: PlayInvisifySeIfShouldDisplayEntity + address: + EU: 0x22E50B4 + description: |- + Calls PlaySeByIdIfShouldDisplayEntity with the sound effect for turning a monster invisible. + r0: entity pointer - name: ShowPpRestoreEffect address: @@ -2268,6 +2283,53 @@ overlay29: r0: monster behavior ID return: bool + - name: TalkToSecretBazaarNpcStandard + address: + EU: 0x22F0FB8 + description: |- + Opens a dialogue box with the given shopkeeper as the speaker, without a yes/no menu and with param_5 set to false. + + r0: string id + r1: shopkeeper entity pointer + r2: portrait emotion + return: ? (bool) + - name: TalkToSecretBazaarNpcWithYesNoMenu + address: + EU: 0x22F0FE0 + description: |- + Opens a dialogue box with the given shopkeeper as the speaker, with a yes/no menu and with param_5 set to true. + + r0: string id + r1: shopkeeper entity pointer + r2: portrait emotion + return: ? (bool) + - name: MakeTargetFaceUserAndIdle + address: + EU: 0x22F1008 + description: |- + Makes the target face the user and changes their animation to idle. + + r0: target entity pointer + r1: user entity pointer + - name: SubtractMoneyCarriedWithSfx + address: + EU: 0x22F1170 + description: |- + Subtracts the amount of money from the the player's current amount of money and plays the sound effect for buying an item. + + r0: money amount + - name: TalkToSecretBazaarNpc + address: + EU: 0x22F1338 + description: |- + Opens a dialogue box with the given shopkeeper as the speaker. + + r0: string id + r1: shopkeeper entity pointer + r2: portrait emotion + r3: pointer to an array of simple_menu_id_items (null if there is no menu) + stack[0]: ? (changes something in secret_bazaar_dialogue_info if true. seems to only be true if there is a menu) + return: ? (bool) - name: GetLeaderAction address: EU: 0x22F1540 @@ -2792,18 +2854,25 @@ overlay29: Called when a monster is revived. r0: pointer to entity whose moves will be restored - - name: CheckTeamMemberIdxVeneer + - name: CheckMonsterTeamMemberIdx address: - EU: 0x22FA64C - NA: 0x22F9C40 - JP: 0x22FB1F8 + EU: 0x22FA658 description: |- - Likely a linker-generated veneer for CheckTeamMemberIdx. - - See https://developer.arm.com/documentation/dui0474/k/image-structure-and-generation/linker-generated-veneers/what-is-a-veneer- + Calls CheckTeamMemberIdx on the given monster's team_index. - r0: member index + r0: entity pointer return: True if the value is equal to 0x55AA or 0x5AA5 + - name: GetRandomExplorerMazeMonster + address: + EU: 0x22FA3F8 + NA: 0x22F99EC + JP: 0x22FAFA4 + description: |- + Checks if any enemy monsters on the floor have the behavior BEHAVIOR_EXPLORER_MAZE_1, + BEHAVIOR_EXPLORER_MAZE_2, BEHAVIOR_EXPLORER_MAZE_3 or BEHAVIOR_EXPLORER_MAZE_4 and returns + one at random. If none can be found, it returns NULL. + + return: monster entity pointer - name: IsMonsterIdInNormalRangeVeneer address: EU: 0x22FA674 @@ -2827,6 +2896,14 @@ overlay29: r0: monster entity pointer r1: iq boost r2: bool suppress logs + - name: ChangeMonsterAnimationToIdle + address: + EU: 0x22FAD6C + description: |- + Makes the monster play their idle animation in the given direction. + + r0: entity pointer + r1: direction - name: ShouldMonsterHeadToStairs address: EU: 0x22FAE3C @@ -4209,8 +4286,8 @@ overlay29: r0: whether to display the shadow r1: shadow type r2: whether to display a yellow circle (for team members and special cases like decoys, rescue clients, etc.) - r3: x-coordinate in OAM plus 0x10 - stack[0]: y-coordinate in OAM plus 0x8 + r3: the x-coordinate in OAM plus some constant offset. Valid input range: (-0x20, 0x11F) + stack[0]: the y-coordinate in OAM plus some constant offset. Valid input range: (-0x20, 0xE0) - name: ChangeMonsterAnimation address: EU: 0x23053D4 @@ -4862,6 +4939,22 @@ overlay29: Resets the damage calculation diagnostic info stored on the dungeon struct. Called unconditionally at the start of CalcDamage. No params. + - name: PointCameraToMonsterWrapper + address: + EU: 0x230E0B8 + description: |- + Calls PointCameraToMonster on the given monster with update_trap_vis_and_map = 1. + + r0: entity pointer + - name: IsEitherMonsterInvalid + address: + EU: 0x230E0C8 + description: |- + Returns true if at least one of the given monsters is an invalid entity. + + r0: entity pointer + r1: entity pointer + return: bool - name: SpecificRecruitCheck address: EU: 0x230E588 @@ -7492,7 +7585,9 @@ overlay29: Note: unverified, ported from Irdkwia's notes No params. - - name: GetPaletteBaseAddress + - name: GetPaletteBaseAddressOv29 + aliases: + - GetPaletteBaseAddress address: EU: 0x23362B0 NA: 0x2335864 @@ -7501,6 +7596,8 @@ overlay29: Gets the palette base address for a 3D element loaded from a WTE file. Takes the same parameters as were used in the specified file's ProcessWte call. + Is an exact copy of GetPaletteBaseAddress in arm9. + r0: upper part of the palette VRAM r1: lower part of the palette VRAM return: palette base address @@ -9091,6 +9188,14 @@ overlay29: See https://developer.arm.com/documentation/dui0474/k/image-structure-and-generation/linker-generated-veneers/what-is-a-veneer- return: bool + - name: InteractWithSecretBazaarNpc + address: + EU: 0x2345128 + description: |- + Called to interact with a secret bazaar shopkeeper. + + r0: user entity pointer + r1: shopkeeper entity pointer - name: PrepareItemForPrinting address: EU: From 2da053d9b39253ee375c326c1a51a2c8c01e460c Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 7 Jun 2026 14:57:12 +0400 Subject: [PATCH 002/103] aaa --- headers/functions/overlay29.h | 6 +++--- symbols/overlay29.yml | 12 ++++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index c53275d2..07d36ed3 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -211,13 +211,13 @@ bool DebugRecruitingEnabled(void); void TryActivateIqBooster(void); bool IsBehaviorLoneOutlaw(enum monster_behavior behavior); bool IsSecretBazaarNpcBehavior(enum monster_behavior behavior); -bool TalkToSecretBazaarNpcStandard(int string_id, struct entity* shopkeeper, +bool TalkToSecretBazaarNpcStandard(int string_id, struct entity* shopkeeper, enum portrait_emotion emotion); -bool TalkToSecretBazaarNpcWithYesNoMenu(int string_id, struct entity* shopkeeper, +bool TalkToSecretBazaarNpcWithYesNoMenu(int string_id, struct entity* shopkeeper, enum portrait_emotion emotion); void MakeTargetFaceUserAndIdle(struct entity* target, struct entity* user); void SubtractMoneyCarriedWithSfx(int amount); -bool TalkToSecretBazaarNpc(int string_id, struct entity* shopkeeper, enum portrait_emotion emotion, +bool TalkToSecretBazaarNpc(int string_id, struct entity* shopkeeper, enum portrait_emotion emotion, struct simple_menu_id_item* menu_items, bool param_5); struct action_16* GetLeaderAction(void); enum action_id GetLeaderActionId(void); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 53cc57ea..e89183ee 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -2858,6 +2858,18 @@ overlay29: Called when a monster is revived. r0: pointer to entity whose moves will be restored + - name: CheckTeamMemberIdxVeneer + address: + EU: 0x22FA64C + NA: 0x22F9C40 + JP: 0x22FB1F8 + description: |- + Likely a linker-generated veneer for CheckTeamMemberIdx. + + See https://developer.arm.com/documentation/dui0474/k/image-structure-and-generation/linker-generated-veneers/what-is-a-veneer- + + r0: member index + return: True if the value is equal to 0x55AA or 0x5AA5 - name: CheckMonsterTeamMemberIdx address: EU: 0x22FA658 From 0683913665d8727a1d8280b54bf57d9488b4df65 Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 7 Jun 2026 14:58:46 +0400 Subject: [PATCH 003/103] aaa --- headers/functions/overlay29.h | 2 +- symbols/overlay29.yml | 11 ----------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 07d36ed3..8bf6d231 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -214,7 +214,7 @@ bool IsSecretBazaarNpcBehavior(enum monster_behavior behavior); bool TalkToSecretBazaarNpcStandard(int string_id, struct entity* shopkeeper, enum portrait_emotion emotion); bool TalkToSecretBazaarNpcWithYesNoMenu(int string_id, struct entity* shopkeeper, - enum portrait_emotion emotion); + enum portrait_emotion emotion); void MakeTargetFaceUserAndIdle(struct entity* target, struct entity* user); void SubtractMoneyCarriedWithSfx(int amount); bool TalkToSecretBazaarNpc(int string_id, struct entity* shopkeeper, enum portrait_emotion emotion, diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index e89183ee..afb2802e 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -2878,17 +2878,6 @@ overlay29: r0: entity pointer return: True if the value is equal to 0x55AA or 0x5AA5 - - name: GetRandomExplorerMazeMonster - address: - EU: 0x22FA3F8 - NA: 0x22F99EC - JP: 0x22FAFA4 - description: |- - Checks if any enemy monsters on the floor have the behavior BEHAVIOR_EXPLORER_MAZE_1, - BEHAVIOR_EXPLORER_MAZE_2, BEHAVIOR_EXPLORER_MAZE_3 or BEHAVIOR_EXPLORER_MAZE_4 and returns - one at random. If none can be found, it returns NULL. - - return: monster entity pointer - name: IsMonsterIdInNormalRangeVeneer address: EU: 0x22FA674 From 64c096bfe27ff6065993cd300e2460247a4ca3c1 Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 7 Jun 2026 15:00:31 +0400 Subject: [PATCH 004/103] aaa --- headers/functions/overlay29.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 8bf6d231..879f6ade 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -67,9 +67,9 @@ void PlayParalysisEffect(struct entity* entity); void PlayEffectAnimationEntityStandard(struct entity* entity, int effect_id); void PlaySpeedUpEffect(struct entity* entity); void PlaySpeedDownEffect(struct entity* entity); -void ShowPpRestoreEffect(struct entity* entity); void DisplayStockpileNumbers(struct entity* entity); void PlayInvisifySeIfShouldDisplayEntity(struct entity* entity); +void ShowPpRestoreEffect(struct entity* entity); void PlayOffensiveStatDownEffect(struct entity* entity, int stat_index); void PlayDefensiveStatDownEffect(struct entity* entity, int stat_index); void PlayOffensiveStatUpEffect(struct entity* entity, int stat_index); From 33fe9522f283a1a372626ca033e07215b97cb1d6 Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 7 Jun 2026 15:01:49 +0400 Subject: [PATCH 005/103] aaa --- headers/functions/overlay29.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 879f6ade..68031472 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -488,9 +488,9 @@ void CalcDamageFixedWrapper(struct entity* attacker, struct entity* defender, in void UpdateShopkeeperModeAfterAttack(struct entity* attacker, struct entity* defender); void UpdateShopkeeperModeAfterTrap(struct entity* shopkeeper, bool non_team_member); void ResetDamageCalcDiagnostics(void); -bool SpecificRecruitCheck(enum monster_id monster_id); -bool PointCameraToMonsterWrapper(struct entity* entity); +void PointCameraToMonsterWrapper(struct entity* entity); bool IsEitherMonsterInvalid(struct entity* entity1, struct entity* entity2); +bool SpecificRecruitCheck(enum monster_id monster_id); bool RecruitCheck(struct entity* user, struct entity* target); bool TryRecruit(struct entity* user, struct entity* recruit); void TrySpawnMonsterAndTickSpawnCounter(void); From 0503a70f323211faf58a183526f93703e291db09 Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 7 Jun 2026 16:16:18 +0400 Subject: [PATCH 006/103] aaa --- symbols/overlay29.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index afb2802e..f9d614bd 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -2306,6 +2306,7 @@ overlay29: r0: string id r1: shopkeeper entity pointer r2: portrait emotion + r3: pointer to an array of simple_menu_id_items return: ? (bool) - name: MakeTargetFaceUserAndIdle address: From 9825d350e20459243407b48257517a47925fe7d0 Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 7 Jun 2026 16:16:59 +0400 Subject: [PATCH 007/103] aaa --- headers/functions/overlay29.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 68031472..25da95b4 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -214,7 +214,8 @@ bool IsSecretBazaarNpcBehavior(enum monster_behavior behavior); bool TalkToSecretBazaarNpcStandard(int string_id, struct entity* shopkeeper, enum portrait_emotion emotion); bool TalkToSecretBazaarNpcWithYesNoMenu(int string_id, struct entity* shopkeeper, - enum portrait_emotion emotion); + enum portrait_emotion emotion, + struct simple_menu_id_item* menu_items); void MakeTargetFaceUserAndIdle(struct entity* target, struct entity* user); void SubtractMoneyCarriedWithSfx(int amount); bool TalkToSecretBazaarNpc(int string_id, struct entity* shopkeeper, enum portrait_emotion emotion, From a638af3f5cc11f77d461524eb5a10a4dc28597c1 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 01:39:47 +0400 Subject: [PATCH 008/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 25da95b4..4c52e347 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -172,6 +172,7 @@ void DecrementWindCounter(void); bool IsDungeonEndReasonFailure(void); void SetForcedLossReason(enum forced_loss_reason forced_loss_reason); enum forced_loss_reason GetForcedLossReason(void); +void GetTrapName(char* buffer, enum trap_id trap_id); void BindTrapToTile(struct tile* tile, struct entity* trap, bool is_visible); bool AreLateGameTrapsEnabledWrapper(void); void SpawnTraps(void); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index f9d614bd..10ad2c63 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -1909,6 +1909,14 @@ overlay29: Returns dungeon::forced_loss_reason return: forced_loss_reason + - name: GetTrapName + address: + EU: 0x22EE1DC + description: |- + Gets the name of the given trap. + + r0: [output] buffer + r1: trap id - name: BindTrapToTile address: EU: 0x22EE208 @@ -3547,9 +3555,9 @@ overlay29: NA: 0x2300164 JP: 0x2301538 description: |- - Note: unverified, ported from Irdkwia's notes + Gets the name of a given monster. - r0: buffer + r0: [output] buffer r1: TargetInfo - name: SprintfStatic address: From 5ffa25f502e02349ec5e6dd80c26d5e0fca89552 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 01:46:45 +0400 Subject: [PATCH 009/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 4c52e347..762de709 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -45,6 +45,7 @@ bool CanSeePosition(struct entity* monster, struct position* position); bool CanTargetPosition(struct entity* monster, struct position* position); void PopulateActiveMonsterPtrs(void); int GetTeamMemberIndex(struct entity* monster); +void GetTrapName(char* buffer, struct entity* entity); void SubstitutePlaceholderStringTags(int string_id, struct entity* entity, undefined4 param_3); bool UpdateMapSurveyorFlag(void); void PointCameraToMonster(struct entity* entity, bool update_trap_vis_and_map); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 10ad2c63..445ef690 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -605,6 +605,14 @@ overlay29: r0: Pointer to the entity to find return: Index of the specified entity on the entity list, or null if it's not on the first 4 slots. + - name: GetMonsterOrTrapName + address: + EU: 0x22E33B8 + description: |- + Gets the name of the entity if it is a monster or trap. In other cases, the function either does nothing or gets an unrelated string. + + r0: [output] buffer + r1: entity - name: SubstitutePlaceholderStringTags address: EU: 0x22E3418 From 567ccd2d6d75fc37de54ab00f675896266a9da42 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 01:49:48 +0400 Subject: [PATCH 010/103] aaa --- headers/functions/overlay29.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 762de709..70560adc 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -45,7 +45,7 @@ bool CanSeePosition(struct entity* monster, struct position* position); bool CanTargetPosition(struct entity* monster, struct position* position); void PopulateActiveMonsterPtrs(void); int GetTeamMemberIndex(struct entity* monster); -void GetTrapName(char* buffer, struct entity* entity); +void GetMonsterOrTrapName(char* buffer, struct entity* entity); void SubstitutePlaceholderStringTags(int string_id, struct entity* entity, undefined4 param_3); bool UpdateMapSurveyorFlag(void); void PointCameraToMonster(struct entity* entity, bool update_trap_vis_and_map); From 63f179c524924c85f033e32704759660194226f1 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 01:59:38 +0400 Subject: [PATCH 011/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 70560adc..1457d779 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -206,6 +206,7 @@ bool ApplyRandomTrapEffect(struct trap* trap, struct entity* user, struct entity void ApplyGrudgeTrapEffect(struct entity* monster, struct position* pos); bool ApplyTrapEffect(struct trap* trap, struct entity* user, struct entity* target, struct tile* tile, struct position* pos, enum trap_id, bool random_trap); +void ChangeTrapOnTile(struct tile* tile, enum trap_id trap_id); int SpawnMonstersAroundPos(struct entity* monster, struct position* pos, uint8_t num_enemies); void RevealTrapsNearby(struct entity* monster); bool ShouldRunMonsterAi(struct entity* monster); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 445ef690..8f1741dc 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -2228,6 +2228,14 @@ overlay29: stack[1]: trap ID stack[2]: bool caused by random trap return: True if the trap should be destroyed after the effect is applied + - name: ChangeTrapOnTile + address: + EU: 0x22EFE2C + description: |- + Changes the trap on the tile to the given trap id if there is already one on the tile. + + r0: tile + r1: trap id - name: SpawnMonstersAroundPos address: EU: 0x22EFE68 From 88924757a4599be188c69375b03ad5517aa44e55 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 02:05:18 +0400 Subject: [PATCH 012/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 1457d779..3c8c02da 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -209,6 +209,7 @@ bool ApplyTrapEffect(struct trap* trap, struct entity* user, struct entity* targ void ChangeTrapOnTile(struct tile* tile, enum trap_id trap_id); int SpawnMonstersAroundPos(struct entity* monster, struct position* pos, uint8_t num_enemies); void RevealTrapsNearby(struct entity* monster); +bool RevealTrapAtPos(int x, int y); bool ShouldRunMonsterAi(struct entity* monster); bool DebugRecruitingEnabled(void); void TryActivateIqBooster(void); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 8f1741dc..0bd34abf 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -2257,6 +2257,15 @@ overlay29: Reveals traps within the monster's viewing range. r0: entity pointer + - name: RevealTrapAtPos + address: + EU: 0x22F00B4 + description: |- + Reveals the trap at the given position if one is present. + + r0: x + r1: y + return: true if there was a hidden trap to reveal - name: ShouldRunMonsterAi address: EU: 0x22F03A0 From c26ee748086523d7687ab8ec41173c61c5e5e0b1 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 16:22:06 +0400 Subject: [PATCH 013/103] aaa --- headers/functions/arm9.h | 3 +++ symbols/arm9.yml | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index afa0f874..52ce7909 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -1129,6 +1129,8 @@ bool DexNumbersEqual(enum monster_id monster1, enum monster_id monster2); bool GendersEqual(enum monster_id monster1, enum monster_id monster2); bool GendersEqualNotGenderless(enum monster_id monster1, enum monster_id monster2); bool GendersNotEqualNotGenderless(enum monster_id monster1, enum monster_id monster2); +void RecolorNameString(char* out, char* name, char color_symbol); +void RecolorTeamMemberNameString(char* out, char* name, bool is_leader); bool IsMonsterOnTeam(enum monster_id monster_id, int recruit_strategy); void GetNbRecruited(undefined* recruit); bool IsValidTeamMember(int member_idx); @@ -1147,6 +1149,7 @@ struct ground_monster* GetMainCharacter3(void); int GetFirstMatchingMemberIdx(enum monster_id monster_id); int GetFirstEmptyMemberIdx(int param_1); bool IsMonsterNotNicknamed(struct ground_monster* monster); +void GetRecoloredGroundMonsterName(char* out, struct ground_monster* monster, char color_symbol); void RemoveActiveMembersFromAllTeams(void); void RemoveActiveMembersFromSpecialEpisodeTeam(void); void RemoveActiveMembersFromRescueTeam(void); diff --git a/symbols/arm9.yml b/symbols/arm9.yml index dde3c439..0ea6139b 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -10783,6 +10783,24 @@ arm9: r0: id1 r1: id2 return: bool + - name: RecolorNameString + address: + EU: 0x20552C0 + description: |- + Given a string of up to 10 characters, outputs the string to display it in a specific color, or the original string if r2 is 0. + + r0: [output] buffer + r1: string to recolor + r2: text color symbol for the [CS:r2] tag + - name: RecolorTeamMemberNameString + address: + EU: 0x205531C + description: |- + Given a string of up to 10 characters, outputs the string to display it in either light blue if the monster is the leader or yellow otherwise. + + r0: [output] buffer + r1: string to recolor + r2: whether the monster is the team leader - name: IsMonsterOnTeam address: EU: 0x20554C4 @@ -10977,6 +10995,15 @@ arm9: r0: ground monster pointer return: bool + - name: GetRecoloredGroundMonsterName + address: + EU: 0x20552C0 + description: |- + Gets the name of the ground monster formatted to be displayed in a specific color. + + r0: [output] buffer + r1: ground monster pointer + r2: text color symbol for the [CS:r2] tag - name: RemoveActiveMembersFromAllTeams address: EU: 0x2056444 From 200e1b77080e50cb85d9bc6b3eb0daedf007970b Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 16:23:43 +0400 Subject: [PATCH 014/103] aaa --- symbols/arm9.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 0ea6139b..832103da 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -10997,7 +10997,7 @@ arm9: return: bool - name: GetRecoloredGroundMonsterName address: - EU: 0x20552C0 + EU: 0x2056400 description: |- Gets the name of the ground monster formatted to be displayed in a specific color. From ab73edc06c7f745a6f51a5b5341300a68015e101 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 16:34:36 +0400 Subject: [PATCH 015/103] aaa --- headers/functions/arm9.h | 2 ++ symbols/arm9.yml | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index 52ce7909..4ab4d8d8 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -1165,6 +1165,8 @@ void SetTeamSetupHeroOnly(void); int GetPartyMembers(uint16_t* party_members); void RefillTeam(void); int ClearItem(int team_id, bool check); +void GetTeamMemberName(char* out, int roster_idx); +void GetRecoloredTeamMemberName(char* out, struct team_member* team_member); void ChangeGiratinaFormIfSkyDungeon(enum dungeon_id dungeon_id); void RevertGiratinaAndShaymin(uint8_t member_idx, undefined param_2); void* OamTileNumberToVramAddress(short oam_tile_num, uint8_t screen); diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 832103da..3c382592 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -11150,6 +11150,22 @@ arm9: r0: team_id r1: check + - name: GetTeamMemberName + address: + EU: 0x2058930 + description: |- + Gets the name of the active team member in the given slot index. + + r0: [output] buffer + r1: roster index + - name: GetRecoloredTeamMemberName + address: + EU: 0x2058930 + description: |- + Gets the name of the team member formatted to be displayed in either light blue if the monster is the leader or yellow otherwise. + + r0: [output] buffer + r1: team member pointer - name: ChangeGiratinaFormIfSkyDungeon address: EU: 0x2058954 From a8a7d302f115269fa4222bfcf9093c4afc32dc05 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 16:36:02 +0400 Subject: [PATCH 016/103] aaa --- symbols/arm9.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 3c382592..37c77930 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -11152,7 +11152,7 @@ arm9: r1: check - name: GetTeamMemberName address: - EU: 0x2058930 + EU: 0x2058908 description: |- Gets the name of the active team member in the given slot index. From 0a9ed9fdce95c973917e22d934517b2fc60ae9b7 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 16:40:25 +0400 Subject: [PATCH 017/103] aaa --- headers/functions/arm9.h | 3 ++- symbols/arm9.yml | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index 4ab4d8d8..f9a25c6d 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -1165,7 +1165,8 @@ void SetTeamSetupHeroOnly(void); int GetPartyMembers(uint16_t* party_members); void RefillTeam(void); int ClearItem(int team_id, bool check); -void GetTeamMemberName(char* out, int roster_idx); +void GetRecoloredNameOfTeamMemberAtIdx(char* out, int roster_idx); +void GetNameOfTeamMemberAtIdx(char* out, int roster_idx); void GetRecoloredTeamMemberName(char* out, struct team_member* team_member); void ChangeGiratinaFormIfSkyDungeon(enum dungeon_id dungeon_id); void RevertGiratinaAndShaymin(uint8_t member_idx, undefined param_2); diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 37c77930..28d47e07 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -11150,7 +11150,15 @@ arm9: r0: team_id r1: check - - name: GetTeamMemberName + - name: GetRecoloredNameOfTeamMemberAtIdx + address: + EU: 0x2058878 + description: |- + Gets the name of the active team member in the given slot index formatted to be displayed in either light blue if the monster is the leader or yellow otherwise. + + r0: [output] buffer + r1: roster index + - name: GetNameOfTeamMemberAtIdx address: EU: 0x2058908 description: |- From f489e4462db47d1e1b9b4aa308cbb7ac854ecd01 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 18:42:15 +0400 Subject: [PATCH 018/103] aaa --- symbols/arm9.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 28d47e07..aa36829b 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -10787,7 +10787,7 @@ arm9: address: EU: 0x20552C0 description: |- - Given a string of up to 10 characters, outputs the string to display it in a specific color, or the original string if r2 is 0. + Given a string of up to 10 characters, formats the string to display it in a specific color, or the original string if r2 is 0. r0: [output] buffer r1: string to recolor @@ -10796,7 +10796,7 @@ arm9: address: EU: 0x205531C description: |- - Given a string of up to 10 characters, outputs the string to display it in either light blue if the monster is the leader or yellow otherwise. + Given a string of up to 10 characters, formats the string to display it in either light blue if the monster is the leader or yellow otherwise. r0: [output] buffer r1: string to recolor From 43dc1ec35410a29b21213a37df6fabb4295b8a0c Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 20:01:07 +0400 Subject: [PATCH 019/103] aaa --- headers/functions/arm9.h | 1 + .../types/dungeon_mode/dungeon_mode_common.h | 17 +++++++++-------- symbols/arm9.yml | 8 ++++++++ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index f9a25c6d..a7440a78 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -179,6 +179,7 @@ int FindItemInInventory(enum item_id item_id); int SprintfStatic(char* str, const char* format, ...); void ItemZInit(struct item* item); bool AreItemsEquivalent(struct item* item1, struct item* item2, int bitmask); +int GetMoneyQuantity(struct item* item); int GetItemsForSave(void* dst, uint32_t len); int ReadItemsFromSave(void* src, uint32_t len); bool IsItemAvailableInDungeonGroup(enum dungeon_id dungeon_id, enum item_id item_id); diff --git a/headers/types/dungeon_mode/dungeon_mode_common.h b/headers/types/dungeon_mode/dungeon_mode_common.h index 5736c383..33d6b1c2 100644 --- a/headers/types/dungeon_mode/dungeon_mode_common.h +++ b/headers/types/dungeon_mode/dungeon_mode_common.h @@ -9,12 +9,12 @@ // Item info struct item { // 0x0: flags: 1-byte bitfield - bool f_exists : 1; // Validity flag - bool f_in_shop : 1; // In a Kecleon Shop - bool f_unpaid : 1; // Picked up from a Kecleon Shop but not paid for yet - bool f_sticky : 1; // Sticky - bool f_set : 1; // Usable by L+R - bool flag_unk5 : 1; + bool f_exists : 1; // Validity flag + bool f_in_shop : 1; // In a Kecleon Shop + bool f_unpaid : 1; // Picked up from a Kecleon Shop but not paid for yet + bool f_sticky : 1; // Sticky + bool f_set : 1; // Usable by L+R + bool f_coin_watcher : 1; // Money picked up by a monster with Coin Watcher // For stolen items to recover from outlaws (has red X)? Could be for other items for other // types of missions? (Uncertain) bool f_unk_mission_item1 : 1; @@ -24,8 +24,9 @@ struct item { bool f_unk_mission_item2 : 1; // 0x1: For bag items. 0 for none, 1 if held by the leader, 2 for the second party member, etc. uint8_t held_by; - // 0x2: Only for stackable items. Will be 0 if unapplicable. For Poké, this is an "amount code" - // rather than the literal amount (see MONEY_QUANTITY_TABLE) + // 0x2: For Poké, this is an "amount code" rather than the literal amount (see + // MONEY_QUANTITY_TABLE). For certain items, this field stores other information (the move for + // TMs, the item inside for boxes, etc.) uint16_t quantity; struct item_id_16 id; // 0x4 }; diff --git a/symbols/arm9.yml b/symbols/arm9.yml index aa36829b..b4a2b33c 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -1894,6 +1894,14 @@ arm9: r1: item r2: bitmask return: bool + - name: GetMoneyQuantity + address: + EU: 0x200D934 + description: |- + Gets the actual money a Poké item should give by indexing its quantity field into MONEY_QUANTITY_TABLE, then multiplying by ~1.2x if the Coin Watcher flag is set. + + r0: item + return: money amount - name: GetItemsForSave aliases: - WriteItemsToSave From dbcfd34b7a81c100a662869123b6c5366bc129c0 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 20:04:38 +0400 Subject: [PATCH 020/103] aaa --- headers/data/overlay10.h | 1 + symbols/overlay10.yml | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/headers/data/overlay10.h b/headers/data/overlay10.h index 028b25a9..08e239dc 100644 --- a/headers/data/overlay10.h +++ b/headers/data/overlay10.h @@ -21,6 +21,7 @@ extern int16_t HURL_DAMAGE; extern int16_t TRAP_BUSTER_ACTIVATION_CHANCE; extern int16_t MAGNET_PULL_ACTIVATION_CHANCE; extern int16_t FOREWARN_FORCED_MISS_CHANCE; +extern fx32_8 WISE_HEALER_MULTIPLIER; extern int16_t UNOWN_STONE_DROP_CHANCE; extern int16_t SITRUS_BERRY_HP_RESTORATION; extern int16_t AMBER_TEAR_RECRUIT_BOOST; diff --git a/symbols/overlay10.yml b/symbols/overlay10.yml index e99294a4..8b5d704d 100644 --- a/symbols/overlay10.yml +++ b/symbols/overlay10.yml @@ -527,6 +527,16 @@ overlay10: NA: 0x2 JP: 0x2 description: "The chance of Forewarn forcing a move to miss, as a percentage (20%)." + - name: WISE_HEALER_MULTIPLIER + address: + EU: 0x22C4DC8 + NA: 0x22C4710 + JP: 0x22C5DF8 + length: + EU: 0x4 + NA: 0x4 + JP: 0x4 + description: The healing multiplier for monsters with the Wise Healer IQ skill, as a fixed-point number with 8 fraction bits (1.15). - name: UNOWN_STONE_DROP_CHANCE address: EU: 0x22C4DCC From 415cae8358410e26427ee44f123b4d83d2d74232 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 20:05:32 +0400 Subject: [PATCH 021/103] aaa --- symbols/arm9.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/arm9.yml b/symbols/arm9.yml index b4a2b33c..fbcf9314 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -1898,7 +1898,7 @@ arm9: address: EU: 0x200D934 description: |- - Gets the actual money a Poké item should give by indexing its quantity field into MONEY_QUANTITY_TABLE, then multiplying by ~1.2x if the Coin Watcher flag is set. + Gets the actual money a Poké item should give by indexing its quantity field into MONEY_QUANTITY_TABLE, then multiplying by 1.2x if the Coin Watcher flag is set. r0: item return: money amount From 5db767bbe27592f74e024a16f18fcacaf1bb50e8 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 20:06:21 +0400 Subject: [PATCH 022/103] aaa --- symbols/overlay10.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay10.yml b/symbols/overlay10.yml index 8b5d704d..205728e2 100644 --- a/symbols/overlay10.yml +++ b/symbols/overlay10.yml @@ -536,7 +536,7 @@ overlay10: EU: 0x4 NA: 0x4 JP: 0x4 - description: The healing multiplier for monsters with the Wise Healer IQ skill, as a fixed-point number with 8 fraction bits (1.15). + description: "The healing multiplier for monsters with the Wise Healer IQ skill, as a fixed-point number with 8 fraction bits (1.15)." - name: UNOWN_STONE_DROP_CHANCE address: EU: 0x22C4DCC From cebbaede6daf4180315d1348a8420f883fecb8b8 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 20:12:22 +0400 Subject: [PATCH 023/103] aaa --- headers/data/overlay10.h | 3 ++- symbols/overlay10.yml | 16 +++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/headers/data/overlay10.h b/headers/data/overlay10.h index 08e239dc..8de089e7 100644 --- a/headers/data/overlay10.h +++ b/headers/data/overlay10.h @@ -21,7 +21,8 @@ extern int16_t HURL_DAMAGE; extern int16_t TRAP_BUSTER_ACTIVATION_CHANCE; extern int16_t MAGNET_PULL_ACTIVATION_CHANCE; extern int16_t FOREWARN_FORCED_MISS_CHANCE; -extern fx32_8 WISE_HEALER_MULTIPLIER; +extern int16_t CONSTRICTION_DAMAGE; +extern int16_t WISE_HEALER_MULTIPLIER; extern int16_t UNOWN_STONE_DROP_CHANCE; extern int16_t SITRUS_BERRY_HP_RESTORATION; extern int16_t AMBER_TEAR_RECRUIT_BOOST; diff --git a/symbols/overlay10.yml b/symbols/overlay10.yml index 205728e2..3b9a63de 100644 --- a/symbols/overlay10.yml +++ b/symbols/overlay10.yml @@ -527,16 +527,18 @@ overlay10: NA: 0x2 JP: 0x2 description: "The chance of Forewarn forcing a move to miss, as a percentage (20%)." - - name: WISE_HEALER_MULTIPLIER + - name: CONSTRICTION_DAMAGE + address: + EU: 0x22C4DC4 + length: + EU: 0x2 + description: "Damage dealt by the constriction status condition." + - name: WISE_HEALER_PERCENTAGE address: EU: 0x22C4DC8 - NA: 0x22C4710 - JP: 0x22C5DF8 length: - EU: 0x4 - NA: 0x4 - JP: 0x4 - description: "The healing multiplier for monsters with the Wise Healer IQ skill, as a fixed-point number with 8 fraction bits (1.15)." + EU: 0x2 + description: "The additional percentage of HP that should be restored for monsters with the Wise Healer IQ skill (15%)." - name: UNOWN_STONE_DROP_CHANCE address: EU: 0x22C4DCC From ac0d314e846ca339ca9fe7be86510119b81c91b5 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 20:13:35 +0400 Subject: [PATCH 024/103] aaa --- headers/data/overlay10.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headers/data/overlay10.h b/headers/data/overlay10.h index 8de089e7..09b60b0e 100644 --- a/headers/data/overlay10.h +++ b/headers/data/overlay10.h @@ -22,7 +22,7 @@ extern int16_t TRAP_BUSTER_ACTIVATION_CHANCE; extern int16_t MAGNET_PULL_ACTIVATION_CHANCE; extern int16_t FOREWARN_FORCED_MISS_CHANCE; extern int16_t CONSTRICTION_DAMAGE; -extern int16_t WISE_HEALER_MULTIPLIER; +extern int16_t WISE_HEALER_PERCENTAGE; extern int16_t UNOWN_STONE_DROP_CHANCE; extern int16_t SITRUS_BERRY_HP_RESTORATION; extern int16_t AMBER_TEAR_RECRUIT_BOOST; From 2ff80905d332b32e1c243d6a69d8332088007774 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 13 Jun 2026 20:14:17 +0400 Subject: [PATCH 025/103] aaa --- symbols/overlay10.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/symbols/overlay10.yml b/symbols/overlay10.yml index 3b9a63de..1d937d7f 100644 --- a/symbols/overlay10.yml +++ b/symbols/overlay10.yml @@ -532,13 +532,13 @@ overlay10: EU: 0x22C4DC4 length: EU: 0x2 - description: "Damage dealt by the constriction status condition." + description: Damage dealt by the constriction status condition. - name: WISE_HEALER_PERCENTAGE address: EU: 0x22C4DC8 length: EU: 0x2 - description: "The additional percentage of HP that should be restored for monsters with the Wise Healer IQ skill (15%)." + description: The additional percentage of HP that should be restored for monsters with the Wise Healer IQ skill (15%). - name: UNOWN_STONE_DROP_CHANCE address: EU: 0x22C4DCC From f0658ea39424d803eb64d080fcc8e1dfa79f0acd Mon Sep 17 00:00:00 2001 From: assidion Date: Wed, 17 Jun 2026 19:13:51 +0400 Subject: [PATCH 026/103] aaa --- headers/functions/arm9.h | 1 + symbols/arm9.yml | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index a7440a78..f4014faf 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -1165,6 +1165,7 @@ void SetTeamSetupHeroAndPartnerOnly(void); void SetTeamSetupHeroOnly(void); int GetPartyMembers(uint16_t* party_members); void RefillTeam(void); +void ClearActiveTeamMemberHeldItemIfNotSticky(int roster_idx); int ClearItem(int team_id, bool check); void GetRecoloredNameOfTeamMemberAtIdx(char* out, int roster_idx); void GetNameOfTeamMemberAtIdx(char* out, int roster_idx); diff --git a/symbols/arm9.yml b/symbols/arm9.yml index fbcf9314..bce8664e 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -11148,6 +11148,13 @@ arm9: Note: unverified, ported from Irdkwia's notes No params. + - name: ClearActiveTeamMemberHeldItemIfNotSticky + address: + EU: 0x20584B4 + description: |- + Clears the held item of the active team member in the given slot index if the item is not sticky. + + r0: roster index - name: ClearItem address: EU: 0x205856C From 272e7689b252a51cee5bc749e34c4ac2e40fea36 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 20 Jun 2026 16:49:07 +0400 Subject: [PATCH 027/103] aaa --- headers/functions/arm9.h | 2 +- symbols/arm9.yml | 26 ++++++++++++++------------ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index 2b82d4a5..3396b1ff 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -552,6 +552,7 @@ void GeomSetVertexCoord16(int x, int y, int z); void InitRender3dData(void); void GeomSwapBuffers(void); void InitRender3dElement64(struct render_3d_element_64* element64); +int GetPaletteBaseAddress(undefined4 pal_vram_offset_upper, undefined4 pal_vram_offset_lower); void Render3d64Texture0x7(struct render_3d_element_64* element64); void Render3d64WindowFrame(struct render_3d_element_64* element64); void EnqueueRender3d64Tiling(struct render_3d_element_64* element64); @@ -624,7 +625,6 @@ uint8_t DrawChar(int window_id, int x, int y, char symbol, int color_offset); struct window* GetWindow(int window_id); int NewWindowScreenCheck(struct window_params* params, uint8_t param_2); int NewWindow(struct window_params* params, uint8_t param_2); -int GetPaletteBaseAddress(undefined4 pal_vram_offset_upper, undefined4 pal_vram_offset_lower); void SetScreenWindowsColor(int palette_idx, bool upper_screen); void SetBothScreensWindowsColor(int palette_idx); void UpdateWindow(int window_id); diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 4938afcd..59ace569 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -5216,6 +5216,20 @@ arm9: Initialize the render_3d_element_64 structure (without performing any drawing or external data access) r0: render_3d_element_64 + - name: GetPaletteBaseAddress + address: + EU: + - 0x201E858 + - 0x2027B9C + NA: 0x20278A8 + JP: 0x2027C08 + description: |- + Gets the palette base address for a 3D element loaded from a WTE file. + Takes the same parameters as were used in the specified file's ProcessWte call. + + r0: upper part of the palette VRAM + r1: lower part of the palette VRAM + return: palette base address - name: Render3d64Texture0x7 address: EU: 0x201E8E0 @@ -5980,18 +5994,6 @@ arm9: r0: window_params pointer to be copied by value into window::hdr in the new window r1: ? return: window_id - - name: GetPaletteBaseAddress - address: - EU: 0x2027B9C - NA: 0x20278A8 - JP: 0x2027C08 - description: |- - Gets the palette base address for a 3D element loaded from a WTE file. - Takes the same parameters as were used in the specified file's ProcessWte call. - - r0: upper part of the palette VRAM - r1: lower part of the palette VRAM - return: palette base address - name: SetScreenWindowsColor address: EU: 0x2027D5C From 6f01a5733f57103f34173cd16c6fc196a3e7e382 Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 21 Jun 2026 00:32:20 +0400 Subject: [PATCH 028/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index df7bba4a..46a832c6 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -406,6 +406,7 @@ bool IsTacticSet(struct entity* entity, enum tactic_id tactic_id); bool HasDropeyeStatus(struct entity* entity); bool IqSkillIsEnabled(struct entity* entity, enum iq_skill_id iq_id); void UpdateIqSkills(struct monster* monster); +void UpdateIqSkillsWrapper(struct entity* entity); bool CanSeeTeammate(struct monster* monster); enum type_id GetMoveTypeForMonster(struct entity* entity, struct move* move); int GetMovePower(struct entity* entity, struct move* move); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 8f0ca7eb..eeae901a 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -4254,6 +4254,13 @@ overlay29: Called after exiting the IQ skills menu or after an enemy spawns. r0: monster pointer + - name: UpdateIqSkillsWrapper + address: + EU: 0x2302C1C + description: |- + Wrapper function for UpdateIqSkills. + + r0: monster entity pointer - name: CanSeeTeammate address: EU: 0x2302C2C From 555506ba3686515bbee004324d3120d56cc90484 Mon Sep 17 00:00:00 2001 From: assidion Date: Tue, 23 Jun 2026 00:56:45 +0400 Subject: [PATCH 029/103] aaa --- headers/functions/arm9.h | 11 ++++- headers/functions/overlay29.h | 11 ++++- headers/types/common/graphics.h | 10 ++--- headers/types/files/wan.h | 17 ++++--- symbols/arm9.yml | 72 +++++++++++++++++++++++++++-- symbols/overlay29.yml | 80 +++++++++++++++++++++++++++++++++ 6 files changed, 184 insertions(+), 17 deletions(-) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index 2a06e3c2..b097d882 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -485,6 +485,9 @@ uint32_t DecodeFragmentByteAssemblyTable(struct wan_fragment_bytes_assembly_entr void* dst); int LoadObjPalette(struct obj_graphics_control* obj_graphics_control, struct palette_init_info* palette_init_info, uint8_t palette_num); +int AddWanFragmentToOam(struct obj_graphics_control* obj_graphics_control, + struct wan_fragment* fragment, uint16_t param_3, + uint16_t* oam_adjustment_info); int AddSimpleObjToOam(struct obj_graphics_control* obj_graphics_control, uint16_t* obj, int group); void GroupOamAttributesWrapper(struct obj_graphics_control* obj_graphics_control); void CopyAttributesToOamWrapper(struct obj_graphics_control* obj_graphics_control); @@ -495,6 +498,7 @@ void InitObjGraphicsControls(void); void CopyAttributesToOamBothScreens(void); void GroupOamAttributesBothScreens(void); void CopyAndInterleaveWrapper(uint16_t* dst, uint16_t* src, uint32_t len, uint8_t val); +void InitOamAdjustmentInfo(uint16_t* oam_adjustment_info); void InitAnimationControl(struct animation_control* animation_control); void InitAnimationControlWithSet(struct animation_control* animation_control); void SetSpriteIdForAnimationControl(struct animation_control* anim_ctrl, uint16_t sprite_id); @@ -512,7 +516,7 @@ void SetAndPlayAnimationForAnimationControl(struct animation_control* anim_ctrl, void SwitchAnimationControlToNextFrame(struct animation_control* anim_ctrl); void LoadAnimationFrameAndIncrementInAnimationControl(struct animation_control* anim_ctrl, struct wan_animation_frame* anim_frame); -void FillOamAttributeInfo(struct animation_control* dst, uint16_t* src); +void FillOamAdjustmentInfo(struct animation_control* dst, uint16_t* src); uint32_t AnimationControlGetAllocForMaxFrame(struct animation_control* anim_ctrl); void DeleteWanTableEntry(struct wan_table* wan_table, int wan_id); int AllocateWanTableEntry(struct wan_table* wan_table); @@ -589,7 +593,12 @@ int PreprocessStringFromId(char* output, int output_size, int string_id, struct preprocessor_flags flags, struct preprocessor_args* args); bool StrcmpTagVeneer(const char* s1, const char* s2); int AtoiTagVeneer(const char* s); +void CopyOrInitPreprocessorArgs(struct preprocessor_args* out, struct preprocessor_args* in); void InitPreprocessorArgs(struct preprocessor_args* args); +void QuantityToString(char* s, int quantity, uint8_t adj_size, undefined4 param_4); +void MoneyQuantityToString(char* s, int quantity); +void BankQuantityToString(char* s, int quantity); +void ExpQuantityToString(char* s, int quantity); char* SetStringAccuracy(char* s, int param_2); char* SetStringPower(char* s, int param_2); char* GetRankString(char* s, int rank_and_flags); diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 46a832c6..f0789593 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -57,7 +57,7 @@ int GetVisibilityRange(void); void RevealWholeFloor(struct entity* entity); int PlayEffectAnimationEntity(struct entity* entity, int effect_id, bool play_now, int param_4, int param_5, undefined param_6, enum direction_id effect_dir, - undefined2* param_8); + uint16_t* custom_oam_adjustment_info); int PlayEffectAnimationPos(struct position* pos, int effect_id, bool play_now); int PlayEffectAnimationPixelPos(struct pixel_position* pixel_pos, int effect_id, bool play_now); void AnimationDelayOrSomething(undefined param_1); @@ -147,6 +147,8 @@ int CalcStatusDuration(struct entity* entity, int16_t* turn_range, bool iq_skill void DungeonRngUnsetSecondary(void); void DungeonRngSetSecondary(int i); void DungeonRngSetPrimary(void); +void PlayLevelUpSound(void); +void PlayDungeonTipSound(void); void PlaySeByIdIfNotSilence(int se_id); void PlayMeByIdIfNot998(int me_id); enum music_id MusicTableIdxToMusicId(int music_table_idx); @@ -294,6 +296,7 @@ void DisplayLinkedMovesWarnings(struct entity* entity, int move_slot); bool MewSpawnCheck(enum monster_id monster_id, bool fail_if_mew); void TryEndStatusWithAbility(struct entity* attacker, struct entity* defender); bool ExclusiveItemEffectIsActive(struct entity* entity, enum exclusive_item_effect_id effect_id); +bool ShouldTreatMonsterAsAlly(struct entity* entity1, struct entity* entity2); struct entity* GetTeamMemberWithIqSkill(enum iq_skill_id iq_skill); bool TeamMemberHasEnabledIqSkill(enum iq_skill_id iq_skill); bool TeamLeaderIqSkillIsEnabled(enum iq_skill_id iq_skill); @@ -508,6 +511,12 @@ void UpdateShopkeeperModeAfterTrap(struct entity* shopkeeper, bool non_team_memb void ResetDamageCalcDiagnostics(void); void PointCameraToMonsterWrapper(struct entity* entity); bool IsEitherMonsterInvalid(struct entity* entity1, struct entity* entity2); +void SwapDefensiveStages(struct entity* attacker, struct entity* defender, bool log_message); +void SwapDefensiveMultipliers(struct entity* attacker, struct entity* defender, bool log_message); +void SwapOffensiveStages(struct entity* attacker, struct entity* defender, bool log_message); +void SwapOffensiveMultipliers(struct entity* attacker, struct entity* defender, bool log_message); +void SwapHitChanceStages(struct entity* attacker, struct entity* defender, bool log_message); +void SwapUserAtkAndDefModifiers(struct entity* attacker, struct entity* defender, bool log_message); bool SpecificRecruitCheck(enum monster_id monster_id); bool RecruitCheck(struct entity* user, struct entity* target); bool TryRecruit(struct entity* user, struct entity* recruit); diff --git a/headers/types/common/graphics.h b/headers/types/common/graphics.h index 2de0cf30..63cd0273 100644 --- a/headers/types/common/graphics.h +++ b/headers/types/common/graphics.h @@ -18,12 +18,12 @@ struct animation_control { uint16_t field6_0xc; // (from struct entity) animation frame counter for the idle animation? undefined field7_0xe; undefined field8_0xf; - // 0x10: Information used to create an object's OAM attributes. + // 0x10: Information used to adjust an object's OAM attributes. // See https://problemkaputt.de/gbatek.htm#lcdobjoamattributes - // To do so, the first three elements of the array are ANDed with some value, then ORed - // with the element three indexes above. - // Notably, setting bit 0x400 of oam_attribute_info[3] will make the object semi-transparent. - uint16_t oam_attribute_info[6]; + // To do so, each attribute is ANDed with the corresponding element in the first half + // of the array, then ORed with the corresponding element in the second half. + // Notably, setting bit 0x400 of oam_adjustment_info[3] will make the object semi-transparent. + uint16_t oam_adjustment_info[6]; struct vec2_16 position; struct vec2_16 anim_frame_offset; struct vec2_16 anim_frame_shadow_offset; diff --git a/headers/types/files/wan.h b/headers/types/files/wan.h index 8ac42c79..e293d9c6 100644 --- a/headers/types/files/wan.h +++ b/headers/types/files/wan.h @@ -103,25 +103,28 @@ ASSERT_SIZE(struct wan_header, 10); struct wan_fragment { // negative mean using the previous defined fragment bytes (or to not update it?) int16_t fragment_bytes_index; - int8_t unk1; - int8_t unk2; + int16_t unk1; // 2 bytes int8_t offset_y : 8; + bool unk2 : 1; bool unk3 : 1; - bool unk4 : 1; - uint8_t likely_padding_1 : 3; + // 0=Normal, 1=Semi-Transparent, 2=OBJ Window, 3=Prohibited + // Seemingly always 0 in the base game, but still works properly for creating + // semi-transparent objects assuming it is not zeroed by oam_adjustment_info. + uint8_t obj_mode : 2; + uint8_t likely_padding_1 : 1; bool is_mosaic : 1; - uint8_t shape_indice : 2; // as used in OBJ attribute 1 + uint8_t shape_indice : 2; // as used in OBJ attribute 0 // 2 bytes uint16_t offset_x : 9; // The value to be used is this - 256, which can end up negative. bool likely_padding_2 : 1; - bool unk5 : 1; + bool unk4 : 1; bool is_last : 1; bool h_flip : 1; bool v_flip : 1; - uint8_t size_indice : 2; // as used in OBJ attribute 0 + uint8_t size_indice : 2; // as used in OBJ attribute 1 // 2 bytes uint16_t fragment_alloc_counter : 10; diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 23ec52ec..4d0adf0d 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -4701,6 +4701,17 @@ arm9: r1: palette_init_info r2: palette_num (bits 12-15 of OAM attribute 2) return: always 1 + - name: AddWanFragmentToOam + address: + EU: 0x201B770 + description: |- + Adds a WAN fragment to OAM. + + r0: obj_graphics_control + r1: wan_fragment + r2: ? + r3: oam_adjustment_info (length 6 array, or null to not adjust) + return: -2 if group out of bounds, -1 if too many objects, 0 if successful - name: AddSimpleObjToOam address: EU: 0x201BA94 @@ -4775,6 +4786,13 @@ arm9: r1: src r2: len (in bytes, will be divided by 2 in the call to CopyAndInterleave) r3: val + - name: InitOamAdjustmentInfo + address: + EU: 0x201C09C + description: |- + Initializes an oam_adjustment_info array that will be used in an animation_control structure with default values (0xFFFF for the ANDs, 0 for the ORs). + + r0: [output] oam_adjustment_info array (length 6) - name: InitAnimationControl address: EU: 0x201C0EC @@ -4895,13 +4913,15 @@ arm9: r0: animation_control r1: animation_frame - - name: FillOamAttributeInfo + - name: FillOamAdjustmentInfo + aliases: + - FillOamAttributeInfo address: EU: 0x201D1AC NA: 0x201D110 JP: 0x201D168 description: |- - Copies an array of values into an animation_control struct's oam_attribute_info. + Copies an array of values into an animation_control struct's oam_adjustment_info. r0: animation_control r1: source array (length 6) @@ -5614,9 +5634,55 @@ arm9: NA: 0x2023690 JP: 0x20236E0 description: |- - Initializes a struct preprocess_args. + Initializes a preprocessor_args struct. r0: preprocessor args pointer + - name: CopyOrInitPreprocessorArgs + address: + EU: 0x2023920 + description: |- + Copies the input preprocessor_args struct to the output struct, or initializes it if the input is a null pointer. + + r0: [output] preprocessor args pointer + r1: input preprocessor args pointer, or null if should initialize one + - name: QuantityToString + address: + EU: 0x20239D8 + description: |- + Converts a quantity to a string, adding commas in between numbers when appropriate. + + r0: [output] string + r1: quantity + r2: adjusted size (if there are less characters in the string than this number, leading spaces will be added to make it this size) + r3: ? + - name: MoneyQuantityToString + address: + EU: + - 0x2023B30 + - 0x2023B58 + description: |- + Converts a money quantity to a string, adding commas in between numbers when appropriate. + + Note that this function does not add the P symbol at the end. + + r0: [output] string + r1: quantity + - name: BankQuantityToString + address: + EU: 0x2023B6C + description: |- + Converts a money quantity shown in the bank menu to a string, adding commas in between numbers when appropriate and also adding leading spaces. + + r0: [output] string + r1: quantity + - name: ExpQuantityToString + address: + EU: 0x2023B6C + description: |- + Converts an experience quantity to a string, adding commas in between numbers when appropriate. + + r0: [output] string + r1: quantity - name: SetStringAccuracy address: EU: 0x20245C0 diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 77daf643..e37ee663 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -763,6 +763,7 @@ overlay29: r1: Effect ID r2: appears to be a flag for actually running the animation now? If this is 0, the AdvanceFrame loop is skipped entirely. stack[2]: direction of effect + stack[3]: custom oam_adjustment_info array for the animation_control struct (length 6, or null if should use default values) others: ? return: status code, or maybe the number of frames or something? Either way, -1 seems to indicate the animation being finished or something? - name: PlayEffectAnimationPos @@ -1673,6 +1674,22 @@ overlay29: description: |- Sets the dungeon PRNG to use the primary LCG for subsequent random number generation. + No params. + - name: PlayLevelUpSound + address: + EU: 0x22EB62C + description: |- + Plays the sound for leveling up. + + No params. + - name: PlayDungeonTipSound + address: + EU: + - 0x22EB63C + - 0x22EB66C + description: |- + Plays the sound effect for displaying a dungeon tip. + No params. - name: PlaySeByIdIfNotSilence address: @@ -3143,6 +3160,15 @@ overlay29: r0: entity pointer r1: exclusive item effect ID return: bool + - name: ShouldTreatMonsterAsAlly + address: + EU: 0x22FB9E0 + description: |- + Returns true if entity 1 should treat entity 2 as an ally, assuming entity 1 can see invisible monsters and will not ignore petrified ones. + + r0: Pointer to entity 1 + r1: Pointer to entity 2 + return: bool - name: GetTeamMemberWithIqSkill address: EU: 0x22FBA04 @@ -5130,6 +5156,60 @@ overlay29: r0: entity pointer r1: entity pointer return: bool + - name: SwapDefensiveStages + address: + EU: 0x230E2E8 + description: |- + Swaps the defensive stages of two monsters. + + r0: attacker pointer + r1: defender pointer + r2: whether to log a message + - name: SwapDefensiveMultipliers + address: + EU: 0x230E35C + description: |- + Swaps the defensive multipliers of two monsters. + + r0: attacker pointer + r1: defender pointer + r2: whether to log a message + - name: SwapOffensiveStages + address: + EU: 0x230E3D0 + description: |- + Swaps the offensive stages of two monsters. + + r0: attacker pointer + r1: defender pointer + r2: whether to log a message + - name: SwapOffensiveMultipliers + address: + EU: 0x230E444 + description: |- + Swaps the offensive multipliers of two monsters. + + r0: attacker pointer + r1: defender pointer + r2: whether to log a message + - name: SwapHitChanceStages + address: + EU: 0x230E444 + description: |- + Swaps the hit chance stages of two monsters. + + r0: attacker pointer + r1: defender pointer + r2: whether to log a message + - name: SwapUserAtkAndDefModifiers + address: + EU: 0x230E444 + description: |- + Swaps the attack and defense modifiers of the user entity. + + r0: attacker pointer + r1: defender pointer + r2: whether to log a message - name: SpecificRecruitCheck address: EU: 0x230E588 From 9b06076d33688d36ebc24370aba516b7696a9ae1 Mon Sep 17 00:00:00 2001 From: assidion Date: Tue, 23 Jun 2026 01:01:24 +0400 Subject: [PATCH 030/103] aaa --- headers/functions/arm9.h | 4 ++-- symbols/arm9.yml | 4 ++-- symbols/overlay29.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index b097d882..a7e80523 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -486,7 +486,7 @@ uint32_t DecodeFragmentByteAssemblyTable(struct wan_fragment_bytes_assembly_entr int LoadObjPalette(struct obj_graphics_control* obj_graphics_control, struct palette_init_info* palette_init_info, uint8_t palette_num); int AddWanFragmentToOam(struct obj_graphics_control* obj_graphics_control, - struct wan_fragment* fragment, uint16_t param_3, + struct wan_fragment* fragment, uint16_t* param_3, uint16_t* oam_adjustment_info); int AddSimpleObjToOam(struct obj_graphics_control* obj_graphics_control, uint16_t* obj, int group); void GroupOamAttributesWrapper(struct obj_graphics_control* obj_graphics_control); @@ -593,8 +593,8 @@ int PreprocessStringFromId(char* output, int output_size, int string_id, struct preprocessor_flags flags, struct preprocessor_args* args); bool StrcmpTagVeneer(const char* s1, const char* s2); int AtoiTagVeneer(const char* s); -void CopyOrInitPreprocessorArgs(struct preprocessor_args* out, struct preprocessor_args* in); void InitPreprocessorArgs(struct preprocessor_args* args); +void CopyOrInitPreprocessorArgs(struct preprocessor_args* out, struct preprocessor_args* in); void QuantityToString(char* s, int quantity, uint8_t adj_size, undefined4 param_4); void MoneyQuantityToString(char* s, int quantity); void BankQuantityToString(char* s, int quantity); diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 4d0adf0d..53817982 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -5657,7 +5657,7 @@ arm9: r3: ? - name: MoneyQuantityToString address: - EU: + EU: - 0x2023B30 - 0x2023B58 description: |- @@ -5669,7 +5669,7 @@ arm9: r1: quantity - name: BankQuantityToString address: - EU: 0x2023B6C + EU: 0x2023B44 description: |- Converts a money quantity shown in the bank menu to a string, adding commas in between numbers when appropriate and also adding leading spaces. diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index e37ee663..02ae898d 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -5194,7 +5194,7 @@ overlay29: r2: whether to log a message - name: SwapHitChanceStages address: - EU: 0x230E444 + EU: 0x230E4B8 description: |- Swaps the hit chance stages of two monsters. @@ -5203,7 +5203,7 @@ overlay29: r2: whether to log a message - name: SwapUserAtkAndDefModifiers address: - EU: 0x230E444 + EU: 0x230E52C description: |- Swaps the attack and defense modifiers of the user entity. From 37aed59e18397a7fd11e8b77ce2a7feb10815722 Mon Sep 17 00:00:00 2001 From: assidion Date: Tue, 23 Jun 2026 01:12:32 +0400 Subject: [PATCH 031/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index f0789593..79a0bd98 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -88,6 +88,7 @@ bool ShouldDisplayEntityAdvanced(struct entity* entity); void PlayEffectAnimation0x1A9(struct entity* entity); void PlayEffectAnimation0x29(struct entity* entity); void PlayEffectAnimation0x18E(struct entity* entity); +void PlayStairSensorArrowEffect(struct entity* entity, enum direction_id arrow_dir); void LoadMappaFileAttributes(int quick_saved, bool disable_monsters, undefined* special_process); enum trap_id GetRandomSpawnTrapId(void); enum trap_id GetRandomTrapId(void); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 02ae898d..55437cd6 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -1088,6 +1088,14 @@ overlay29: Just a guess. Calls PlayEffectAnimation with data from animation ID 0x18E. r0: entity pointer + - name: PlayStairSensorArrowEffect + address: + EU: 0x22E72D8 + description: |- + Plays the Stair Sensor arrow effect. + + r0: entity pointer + r1: arrow direction - name: LoadMappaFileAttributes address: EU: 0x22E796C From 2740c4900ee82982e0574da29dedefff04dd0151 Mon Sep 17 00:00:00 2001 From: assidion Date: Tue, 23 Jun 2026 01:20:34 +0400 Subject: [PATCH 032/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 79a0bd98..3d18dbeb 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -297,6 +297,7 @@ void DisplayLinkedMovesWarnings(struct entity* entity, int move_slot); bool MewSpawnCheck(enum monster_id monster_id, bool fail_if_mew); void TryEndStatusWithAbility(struct entity* attacker, struct entity* defender); bool ExclusiveItemEffectIsActive(struct entity* entity, enum exclusive_item_effect_id effect_id); +void TryActivateStairSensor(bool dont_log_message); bool ShouldTreatMonsterAsAlly(struct entity* entity1, struct entity* entity2); struct entity* GetTeamMemberWithIqSkill(enum iq_skill_id iq_skill); bool TeamMemberHasEnabledIqSkill(enum iq_skill_id iq_skill); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 55437cd6..0d4b1dc0 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -3168,6 +3168,13 @@ overlay29: r0: entity pointer r1: exclusive item effect ID return: bool + - name: TryActivateStairSensor + address: + EU: 0x22FB758 + description: |- + Activates the Stair Sensor IQ skill if a member on the team has it and they are not a special story ally. + + r0: whether to not log a message (always 0) - name: ShouldTreatMonsterAsAlly address: EU: 0x22FB9E0 From 8d62f1e3f9de8b8e050785341a4b11bb6194cbb1 Mon Sep 17 00:00:00 2001 From: assidion Date: Tue, 23 Jun 2026 01:45:41 +0400 Subject: [PATCH 033/103] aaa --- headers/functions/overlay29.h | 4 +++- symbols/overlay29.yml | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 3d18dbeb..8bcffdba 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -296,8 +296,10 @@ bool ShouldMonsterHeadToStairs(struct entity* entity); void DisplayLinkedMovesWarnings(struct entity* entity, int move_slot); bool MewSpawnCheck(enum monster_id monster_id, bool fail_if_mew); void TryEndStatusWithAbility(struct entity* attacker, struct entity* defender); +void TryActivateNewFloorPpRestoration(bool suppress_logs); bool ExclusiveItemEffectIsActive(struct entity* entity, enum exclusive_item_effect_id effect_id); -void TryActivateStairSensor(bool dont_log_message); +void TryActivateNewFloorHpRestoration(bool log_failure); +void TryActivateStairSensor(bool suppress_logs); bool ShouldTreatMonsterAsAlly(struct entity* entity1, struct entity* entity2); struct entity* GetTeamMemberWithIqSkill(enum iq_skill_id iq_skill); bool TeamMemberHasEnabledIqSkill(enum iq_skill_id iq_skill); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 0d4b1dc0..12abf847 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -3121,6 +3121,13 @@ overlay29: r0: attacker entity pointer r1: defender entity pointer + - name: TryActivateNewFloorPpRestoration + address: + EU: 0x22FB464 + description: |- + Activates the Deep Breather IQ skill and/or the exclusive item effect for restoring PP on new floors for team members that have them. + + r0: flag to suppress message logging - name: ExclusiveItemEffectIsActive address: EU: @@ -3168,13 +3175,20 @@ overlay29: r0: entity pointer r1: exclusive item effect ID return: bool + - name: TryActivateNewFloorHpRestoration + address: + EU: 0x22FB6C8 + description: |- + Activates the exclusive item effect for fully restoring HP on new floors for team members that have it. + + r0: flag to log a message on failure - name: TryActivateStairSensor address: EU: 0x22FB758 description: |- Activates the Stair Sensor IQ skill if a member on the team has it and they are not a special story ally. - r0: whether to not log a message (always 0) + r0: flag to suppress message logging - name: ShouldTreatMonsterAsAlly address: EU: 0x22FB9E0 From a5ef11a410abe411b82ff7c8b5e0c49f841d5168 Mon Sep 17 00:00:00 2001 From: assidion Date: Tue, 23 Jun 2026 01:54:49 +0400 Subject: [PATCH 034/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 8bcffdba..2e95a370 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -300,6 +300,7 @@ void TryActivateNewFloorPpRestoration(bool suppress_logs); bool ExclusiveItemEffectIsActive(struct entity* entity, enum exclusive_item_effect_id effect_id); void TryActivateNewFloorHpRestoration(bool log_failure); void TryActivateStairSensor(bool suppress_logs); +void TryActivateAcuteSniffer(bool suppress_logs); bool ShouldTreatMonsterAsAlly(struct entity* entity1, struct entity* entity2); struct entity* GetTeamMemberWithIqSkill(enum iq_skill_id iq_skill); bool TeamMemberHasEnabledIqSkill(enum iq_skill_id iq_skill); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 12abf847..e9a5fc29 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -3188,6 +3188,13 @@ overlay29: description: |- Activates the Stair Sensor IQ skill if a member on the team has it and they are not a special story ally. + r0: flag to suppress message logging + - name: TryActivateAcuteSniffer + address: + EU: 0x22FB914 + description: |- + Activates the Acute Sniffer IQ skill if a member on the team has it and no boss fight is active. + r0: flag to suppress message logging - name: ShouldTreatMonsterAsAlly address: From 006190b897d1a602da00ec9161d1df2fb49b6ac4 Mon Sep 17 00:00:00 2001 From: assidion Date: Wed, 24 Jun 2026 00:14:38 +0400 Subject: [PATCH 035/103] aaa --- symbols/arm9.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 53817982..664c8892 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -1161,7 +1161,7 @@ arm9: r0: oam_info r1: oam_attributes - r2: group + r2: priority group - name: UpdateFadeStatus address: EU: 0x200BA18 @@ -4725,7 +4725,7 @@ arm9: r0: obj_graphics_control r1: obj - r2: group + r2: priority group return: -2 if group out of bounds, -1 if too many objects, 0 if successful - name: GroupOamAttributesWrapper address: From 21a410fd8bb2f6ba9f86b8da2f9c93aea0e560b1 Mon Sep 17 00:00:00 2001 From: assidion Date: Wed, 24 Jun 2026 00:44:46 +0400 Subject: [PATCH 036/103] aaa --- headers/types/files/wan.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headers/types/files/wan.h b/headers/types/files/wan.h index e293d9c6..9c511691 100644 --- a/headers/types/files/wan.h +++ b/headers/types/files/wan.h @@ -39,7 +39,7 @@ struct palette_init_info { // https://problemkaputt.de/gbatek.htm#dsvideoextendedpalettes uint16_t palette_mode; uint16_t nb_colors_or_palettes; // 0x6 - uint16_t ext_palette_upper; // 0x8: Upper 4 bits in 256-color extended palette + uint16_t ext_palette_upper; // 0x8: Starting position in 256-color extended palette int8_t palette_num_custom; // 0xA: If not -1, overwrites palette_num in LoadObjPalette // 0xB: If 1, splits the palette in chunks of 0x10 across multiple // extended palettes starting from palette_num From 6db4cc716a72aab67d724c099f91a10109a5cde0 Mon Sep 17 00:00:00 2001 From: assidion Date: Wed, 24 Jun 2026 00:45:48 +0400 Subject: [PATCH 037/103] aaa --- headers/functions/arm9.h | 2 +- headers/types/files/wan.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index a7e80523..0445875c 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -573,7 +573,7 @@ void ConvertPointersSir0(undefined* sir0_ptr); int HandleSir0TranslationVeneer(uint8_t** dst, uint8_t* src); void FillPaletteInitInfo(struct palette_init_info* palette_init_info, struct rgba* palette_bytes, uint16_t palette_mode, uint16_t nb_colors_or_palettes, - uint16_t ext_palette_upper, int8_t palette_num_custom); + uint16_t ext_palette_start, int8_t palette_num_custom); int DecompressAtNormalVeneer(undefined* addr_decomp, int expected_size, undefined* at_ptr); int DecompressAtNormal(undefined* addr_decomp, int expected_size, undefined* at_ptr); int DecompressAtHalf(undefined* addr_decomp, int expected_size, undefined* at_ptr, int high_nibble); diff --git a/headers/types/files/wan.h b/headers/types/files/wan.h index 9c511691..61776e79 100644 --- a/headers/types/files/wan.h +++ b/headers/types/files/wan.h @@ -39,7 +39,7 @@ struct palette_init_info { // https://problemkaputt.de/gbatek.htm#dsvideoextendedpalettes uint16_t palette_mode; uint16_t nb_colors_or_palettes; // 0x6 - uint16_t ext_palette_upper; // 0x8: Starting position in 256-color extended palette + uint16_t ext_palette_start; // 0x8: Starting position in 256-color extended palette int8_t palette_num_custom; // 0xA: If not -1, overwrites palette_num in LoadObjPalette // 0xB: If 1, splits the palette in chunks of 0x10 across multiple // extended palettes starting from palette_num From 00e79101ad4226823cdb4db72384b593bbd160b7 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 27 Jun 2026 14:03:23 +0400 Subject: [PATCH 038/103] aaa --- headers/types/files/wan.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/headers/types/files/wan.h b/headers/types/files/wan.h index 61776e79..7d56cb84 100644 --- a/headers/types/files/wan.h +++ b/headers/types/files/wan.h @@ -107,8 +107,8 @@ struct wan_fragment { // 2 bytes int8_t offset_y : 8; - bool unk2 : 1; bool unk3 : 1; + bool unk4 : 1; // 0=Normal, 1=Semi-Transparent, 2=OBJ Window, 3=Prohibited // Seemingly always 0 in the base game, but still works properly for creating // semi-transparent objects assuming it is not zeroed by oam_adjustment_info. @@ -120,7 +120,7 @@ struct wan_fragment { // 2 bytes uint16_t offset_x : 9; // The value to be used is this - 256, which can end up negative. bool likely_padding_2 : 1; - bool unk4 : 1; + bool unk5 : 1; bool is_last : 1; bool h_flip : 1; bool v_flip : 1; From 0a0ba1135c135e48522f76fa626531a485f1cbe1 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 27 Jun 2026 14:36:57 +0400 Subject: [PATCH 039/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 2e95a370..859c7961 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -810,6 +810,7 @@ void ActivateSportCondition(bool water_sport); bool TryActivateWeather(bool param_1, bool param_2); int DigitCount(int n); void LoadTextureUi(void); +void InitUi3dElement(struct render_3d_element_64* element64, undefined4 pal_vram_offset_upper); int GetPaletteBaseAddressOv29(undefined4 pal_vram_offset_upper, undefined4 pal_vram_offset_lower); int DisplayNumberTextureUi(int16_t x, int16_t y, int n, int ally_mode); int DisplayCharTextureUi(struct render_3d_element_64* element64, int16_t x, int16_t y, int char_id, diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index e9a5fc29..8334101e 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -7876,6 +7876,14 @@ overlay29: Note: unverified, ported from Irdkwia's notes No params. + - name: InitUi3dElement + address: + EU: 0x2336254 + description: |- + Initializes a 3D element for displaying a part of the dungeon UI. + + r0: [output] render_3d_element_64 + r1: upper part of the palette VRAM - name: GetPaletteBaseAddressOv29 aliases: - GetPaletteBaseAddress From e900bb1a17ac80eaf87cbcb0a1e019ba872f1c93 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 27 Jun 2026 16:18:36 +0400 Subject: [PATCH 040/103] aaa --- headers/functions/overlay29.h | 2 +- symbols/overlay29.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 859c7961..5bbdfc88 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -814,7 +814,7 @@ void InitUi3dElement(struct render_3d_element_64* element64, undefined4 pal_vram int GetPaletteBaseAddressOv29(undefined4 pal_vram_offset_upper, undefined4 pal_vram_offset_lower); int DisplayNumberTextureUi(int16_t x, int16_t y, int n, int ally_mode); int DisplayCharTextureUi(struct render_3d_element_64* element64, int16_t x, int16_t y, int char_id, - int16_t param_5); + undefined4 pal_vram_offset_lower); void DisplayUi(void); struct tile* GetTile(int x, int y); struct tile* GetTileSafe(int x, int y); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 8334101e..49ea08f1 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -7925,7 +7925,7 @@ overlay29: r1: x position r2: y position r3: char_id - stack[0]: ? + stack[0]: lower part of the palette VRAM return: ? - name: DisplayUi address: From 3fff17f598f4d8e246ab94931d75859e01d17800 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 27 Jun 2026 16:20:43 +0400 Subject: [PATCH 041/103] aaa --- symbols/arm9.yml | 2 +- symbols/overlay29.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 664c8892..c29900c0 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -5256,7 +5256,7 @@ arm9: JP: 0x2027C08 description: |- Gets the palette base address for a 3D element loaded from a WTE file. - Takes the same parameters as were used in the specified file's ProcessWte call. + Normally takes the same parameters as were used in the specified file's ProcessWte call. r0: upper part of the palette VRAM r1: lower part of the palette VRAM diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 49ea08f1..239df016 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -7893,7 +7893,7 @@ overlay29: JP: 0x2336C34 description: |- Gets the palette base address for a 3D element loaded from a WTE file. - Takes the same parameters as were used in the specified file's ProcessWte call. + Normally takes the same parameters as were used in the specified file's ProcessWte call. Is an exact copy of GetPaletteBaseAddress in arm9. From a24b8eebdfb24234439cbce2b20d9cfef32f05b6 Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 28 Jun 2026 19:54:55 +0400 Subject: [PATCH 042/103] aaa --- headers/functions/arm9.h | 3 +++ headers/functions/overlay29.h | 7 ++++-- headers/types/common/graphics.h | 10 +++++--- headers/types/dungeon_mode/dungeon_mode.h | 23 ++++++++++++++++++ symbols/arm9.yml | 16 ++++++++++++- symbols/overlay29.yml | 29 +++++++++++++++++++++-- 6 files changed, 80 insertions(+), 8 deletions(-) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index 0445875c..6d4be8dc 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -108,6 +108,9 @@ void FileClose(struct file_stream* file); void UnloadFile(void* ptr); void LoadFileFromRom(struct iovec* iov, const char* filepath, uint32_t flags); void TransformPaletteDataWithFlushDivideFade(struct palette_data* palette); +void MarkPaletteDataAsNeedingUpdate(struct palette_data* palette_data); +void FillPaletteDataRgba(struct palette_data* palette_data, uint16_t start, + struct rgba* palette_bytes, uint16_t nb_colors); void InitOamInfo(struct oam_info* oam_info, int max_num_objs, int max_num_groups, int oam_base_address, uint32_t mem_alloc_flags); void SetShouldCopyToOam(struct oam_info* oam_info); diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 5bbdfc88..22f011f6 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -106,7 +106,7 @@ void FreeTopScreenStatus(void); int InitializeTeamStats(void); int UpdateTeamStatsWrapper(void); int FreeTeamStatsWrapper(void); -void DisplayTeamStatsSprite(struct entity* team_member, undefined4 param_2, undefined4 param_3); +void DisplayTeamStatsSprite(struct entity* team_member, int actual_idx, int roster_idx); void AssignTopScreenHandlers(void** funcs, top_screen_status_fn_t init_func, top_screen_status_fn_t update_func, void* param_4, top_screen_status_fn_t free_func); @@ -271,6 +271,7 @@ void HandleFaint(struct entity* fainted_entity, union damage_source damage_sourc void MoveMonsterToPos(struct entity* entity, int x_pos, int y_pos, undefined param_4); void CreateMonsterSummaryFromEntity(struct monster_summary* monster_summary, struct entity* monster_entity); +void FillRecruitInfo(struct recruit_info* recruit_info, struct entity* monster); void UpdateAiTargetPos(struct entity* monster); void SetMonsterTypeAndAbility(struct entity* target); void TryActivateSlowStart(void); @@ -524,7 +525,7 @@ void SwapHitChanceStages(struct entity* attacker, struct entity* defender, bool void SwapUserAtkAndDefModifiers(struct entity* attacker, struct entity* defender, bool log_message); bool SpecificRecruitCheck(enum monster_id monster_id); bool RecruitCheck(struct entity* user, struct entity* target); -bool TryRecruit(struct entity* user, struct entity* recruit); +bool TryRecruit(struct entity* user, struct entity* recruit, struct recruit_info* recruit_info); void TrySpawnMonsterAndTickSpawnCounter(void); void AiDecideUseItem(struct entity* entity); void GetPossibleAiThrownItemDirections(struct entity* entity, int ally_or_enemy, struct item* item, @@ -837,6 +838,7 @@ bool PositionHasMonster(struct position* pos); bool TrySmashWall(struct position* pos); bool IsTileGround(struct position* pos); bool IsWaterTileset(void); +void ClearTileMonster(struct entity* entity, int x, int y); enum monster_id GetRandomSpawnMonsterID(void); bool NearbyAllyIqSkillIsEnabled(struct entity* entity, enum iq_skill_id iq_skill); struct entity* FindAdjacentEnemy(struct entity* monster); @@ -1066,6 +1068,7 @@ void LogMessageByIdWithPopup(struct entity* user, int message_id); void LogMessageWithPopup(struct entity* user, const char* message); void LogMessage(struct entity* user, const char* message, bool show_popup); void LogMessageById(struct entity* user, int message_id, bool show_popup); +bool AlertBoxIsActive(void); bool AlertBoxIsScrolling(void); void WaitUntilAlertBoxTextIsLoaded(undefined param_1); void InitPortraitDungeon(struct portrait_params* portrait, enum monster_id monster_id, diff --git a/headers/types/common/graphics.h b/headers/types/common/graphics.h index 63cd0273..b62dab3e 100644 --- a/headers/types/common/graphics.h +++ b/headers/types/common/graphics.h @@ -420,8 +420,8 @@ struct palette_data_substruct { uint8_t field3_0x9; uint8_t field4_0xa; uint8_t field5_0xb; - uint32_t field6_0xc; - uint16_t* palettes; // 0x10: 2-byte (BGR5?) colors + void* pal_vram_base_address; // 0xC + uint16_t* palettes; // 0x10: 2-byte (BGR5?) colors }; ASSERT_SIZE(struct palette_data_substruct, 20); @@ -478,7 +478,11 @@ struct unk_texture_struct { ASSERT_SIZE(struct unk_texture_struct, 3588); struct unk_palette_struct { - undefined field_0x0[156]; + struct palette_data_substruct standard_palette_sub; // 0x0 + struct palette_data standard_palette_data; // 0x14 + struct palette_data_substruct extended_palette_sub; // 0x3C: Unused for top screen + struct palette_data extended_palette_data; // 0x50: Unused for top screen + undefined field_0x78[36]; }; ASSERT_SIZE(struct unk_palette_struct, 156); diff --git a/headers/types/dungeon_mode/dungeon_mode.h b/headers/types/dungeon_mode/dungeon_mode.h index c550930b..f1381ef6 100644 --- a/headers/types/dungeon_mode/dungeon_mode.h +++ b/headers/types/dungeon_mode/dungeon_mode.h @@ -2605,6 +2605,29 @@ struct secret_bazaar_dialogue_info { }; ASSERT_SIZE(struct secret_bazaar_dialogue_info, 1144); +// Temporary struct used by TryRecruit. +struct recruit_info { + struct monster_id_16 id; // 0x0 + struct position* position; // 0x2 + // 0x4: Is field_0x14 of struct monster instead if the monster is a boss (unused in base game?) + int16_t max_hp_stat; + undefined field_0x6; + undefined field_0x7; + uint8_t offensive_stats[2]; // 0x8 + uint8_t defensive_stats[2]; // 0xA + int16_t belly; // 0x14 + int16_t belly_thousandths; // 0x16 + int16_t max_belly; // 0x18 + int16_t max_belly_thousandths; // 0x1A + struct item held_item; // 0x1C + struct move moves[4]; // 0x22 + undefined field_0x42; + undefined field_0x43; + int16_t hidden_power_base_power; // 0x44 + int16_t hidden_power_type; // 0x46 +}; +ASSERT_SIZE(struct recruit_info, 72); + // Separate this out into its own file because it's massive #include "dungeon.h" diff --git a/symbols/arm9.yml b/symbols/arm9.yml index c29900c0..0bf8854e 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -1099,6 +1099,20 @@ arm9: r0: [output] pointer to an IO struct {ptr, len} r1: file path string pointer r2: flags + - name: MarkPaletteDataAsNeedingUpdate + address: + EU: 0x200A504 + description: "r0: palette_data" + - name: FillPaletteDataRgba + address: + EU: 0x200A5B0 + description: |- + Fills a portion of the RGBA palette of a palette_data struct, which will be transformed into RGB5 and copied into palette VRAM. + + r0: palette_data + r1: starting position (ranges between [0, 0x100) for standard palettes and [0, 0x1000) for extended) + r2: palette bytes + r3: number of colors - name: TransformPaletteDataWithFlushDivideFade address: EU: 0x200AE38 @@ -5416,7 +5430,7 @@ arm9: description: |- Fills a palette_init_info struct's fields with the given parameters, besides multi_ext_palettes which will always be made 0. - r0: palette_init_info + r0: [output] palette_init_info r1: palette_bytes r2: palette_mode r3: nb_colors_or_palettes diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 239df016..f979d081 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -1275,8 +1275,8 @@ overlay29: Displays a party member's sprite on the team stats menu. r0: Team member entity pointer - r1: ? - r2: ? + r1: Actual index to display the sprite at + r2: Roster index - name: AssignTopScreenHandlers address: EU: 0x22E9078 @@ -2821,6 +2821,14 @@ overlay29: r0: [output] monster_summary r1: monster_entity + - name: FillRecruitInfo + address: + EU: 0x22F9A64 + description: |- + Fills the recruit_info struct with values from the monster entity pointer. + + r0: [output] recruit_info pointer + r1: entity pointer - name: UpdateAiTargetPos address: EU: 0x22F9B50 @@ -5280,6 +5288,7 @@ overlay29: r0: user entity pointer r1: monster to recruit entity pointer + r2: recruit_info pointer return: True if the monster was recruited, false if it wasn't - name: TrySpawnMonsterAndTickSpawnCounter address: @@ -8148,6 +8157,15 @@ overlay29: Returns flag tileset_property::is_water_tileset for the current tileset return: True if the current tileset is a water tileset + - name: ClearTileMonster + address: + EU: 0x2338A90 + description: |- + Removes the given monster from the tile at the given position if it is present on it. + + r0: entity pointer + r1: x position + r2: y position - name: GetRandomSpawnMonsterID address: EU: 0x2338B68 @@ -10365,6 +10383,13 @@ overlay29: r0: user entity pointer r1: message ID r2: bool, whether or not to present a message popup + - name: AlertBoxIsActive + address: + EU: 0x234C33C + description: |- + Returns true if the alert box is currently open. + + return: bool - name: AlertBoxIsScrolling address: EU: 0x234C3EC From b45a0d915c5d1d5e0516c020050fe35e1857dfe0 Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 28 Jun 2026 19:58:09 +0400 Subject: [PATCH 043/103] aaa --- headers/types/common/graphics.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/headers/types/common/graphics.h b/headers/types/common/graphics.h index b62dab3e..5ee8fa30 100644 --- a/headers/types/common/graphics.h +++ b/headers/types/common/graphics.h @@ -482,7 +482,9 @@ struct unk_palette_struct { struct palette_data standard_palette_data; // 0x14 struct palette_data_substruct extended_palette_sub; // 0x3C: Unused for top screen struct palette_data extended_palette_data; // 0x50: Unused for top screen - undefined field_0x78[36]; + undefined field_0x78; + bool is_top_screen; // 0x79 + undefined field_0x7a[34]; }; ASSERT_SIZE(struct unk_palette_struct, 156); From d323317274f0cce4ad18130eb1eaeb9d00c6c618 Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 28 Jun 2026 20:01:18 +0400 Subject: [PATCH 044/103] aaa --- headers/functions/arm9.h | 2 +- headers/types/dungeon_mode/dungeon_mode.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index 6d4be8dc..dac7424b 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -107,10 +107,10 @@ void FileSeek(struct file_stream* file, int offset, int whence); void FileClose(struct file_stream* file); void UnloadFile(void* ptr); void LoadFileFromRom(struct iovec* iov, const char* filepath, uint32_t flags); -void TransformPaletteDataWithFlushDivideFade(struct palette_data* palette); void MarkPaletteDataAsNeedingUpdate(struct palette_data* palette_data); void FillPaletteDataRgba(struct palette_data* palette_data, uint16_t start, struct rgba* palette_bytes, uint16_t nb_colors); +void TransformPaletteDataWithFlushDivideFade(struct palette_data* palette); void InitOamInfo(struct oam_info* oam_info, int max_num_objs, int max_num_groups, int oam_base_address, uint32_t mem_alloc_flags); void SetShouldCopyToOam(struct oam_info* oam_info); diff --git a/headers/types/dungeon_mode/dungeon_mode.h b/headers/types/dungeon_mode/dungeon_mode.h index f1381ef6..02204838 100644 --- a/headers/types/dungeon_mode/dungeon_mode.h +++ b/headers/types/dungeon_mode/dungeon_mode.h @@ -2615,6 +2615,7 @@ struct recruit_info { undefined field_0x7; uint8_t offensive_stats[2]; // 0x8 uint8_t defensive_stats[2]; // 0xA + uint32_t total_exp; // 0x10 int16_t belly; // 0x14 int16_t belly_thousandths; // 0x16 int16_t max_belly; // 0x18 From ee0fc4ee449f9ced75db5ece188dad9ab9cf703c Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 28 Jun 2026 20:06:28 +0400 Subject: [PATCH 045/103] aaa --- headers/types/dungeon_mode/dungeon_mode.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/headers/types/dungeon_mode/dungeon_mode.h b/headers/types/dungeon_mode/dungeon_mode.h index 02204838..708f1b3e 100644 --- a/headers/types/dungeon_mode/dungeon_mode.h +++ b/headers/types/dungeon_mode/dungeon_mode.h @@ -2608,11 +2608,9 @@ ASSERT_SIZE(struct secret_bazaar_dialogue_info, 1144); // Temporary struct used by TryRecruit. struct recruit_info { struct monster_id_16 id; // 0x0 - struct position* position; // 0x2 - // 0x4: Is field_0x14 of struct monster instead if the monster is a boss (unused in base game?) + struct position position; // 0x2 + // 0x6: Is field_0x14 of struct monster instead if the monster is a boss (unused in base game?) int16_t max_hp_stat; - undefined field_0x6; - undefined field_0x7; uint8_t offensive_stats[2]; // 0x8 uint8_t defensive_stats[2]; // 0xA uint32_t total_exp; // 0x10 From 7b23ba4f8d850a51e67d8f829aecbd848733139b Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 28 Jun 2026 20:06:38 +0400 Subject: [PATCH 046/103] aaa --- headers/types/dungeon_mode/dungeon_mode.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headers/types/dungeon_mode/dungeon_mode.h b/headers/types/dungeon_mode/dungeon_mode.h index 708f1b3e..9c631cd5 100644 --- a/headers/types/dungeon_mode/dungeon_mode.h +++ b/headers/types/dungeon_mode/dungeon_mode.h @@ -2607,7 +2607,7 @@ ASSERT_SIZE(struct secret_bazaar_dialogue_info, 1144); // Temporary struct used by TryRecruit. struct recruit_info { - struct monster_id_16 id; // 0x0 + struct monster_id_16 id; // 0x0 struct position position; // 0x2 // 0x6: Is field_0x14 of struct monster instead if the monster is a boss (unused in base game?) int16_t max_hp_stat; From c8f985fc51f039b470881a81178d2dd58194b65a Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 28 Jun 2026 20:09:17 +0400 Subject: [PATCH 047/103] aaa --- headers/types/dungeon_mode/dungeon_mode.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/headers/types/dungeon_mode/dungeon_mode.h b/headers/types/dungeon_mode/dungeon_mode.h index 9c631cd5..c3cf4a51 100644 --- a/headers/types/dungeon_mode/dungeon_mode.h +++ b/headers/types/dungeon_mode/dungeon_mode.h @@ -2613,6 +2613,9 @@ struct recruit_info { int16_t max_hp_stat; uint8_t offensive_stats[2]; // 0x8 uint8_t defensive_stats[2]; // 0xA + uint16_t level; // 0xC + undefined field_0xe; + undefined field_0xf; uint32_t total_exp; // 0x10 int16_t belly; // 0x14 int16_t belly_thousandths; // 0x16 From a3664bf0fd86cb0840c8adbe2dc244f71d9802ab Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 28 Jun 2026 20:10:07 +0400 Subject: [PATCH 048/103] aaa --- headers/types/dungeon_mode/dungeon_mode.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/headers/types/dungeon_mode/dungeon_mode.h b/headers/types/dungeon_mode/dungeon_mode.h index c3cf4a51..668fa005 100644 --- a/headers/types/dungeon_mode/dungeon_mode.h +++ b/headers/types/dungeon_mode/dungeon_mode.h @@ -2611,9 +2611,9 @@ struct recruit_info { struct position position; // 0x2 // 0x6: Is field_0x14 of struct monster instead if the monster is a boss (unused in base game?) int16_t max_hp_stat; - uint8_t offensive_stats[2]; // 0x8 - uint8_t defensive_stats[2]; // 0xA - uint16_t level; // 0xC + uint8_t offensive_stats[2]; // 0x8 + uint8_t defensive_stats[2]; // 0xA + uint16_t level; // 0xC undefined field_0xe; undefined field_0xf; uint32_t total_exp; // 0x10 From b4665dbe3e61eddd123520652eb8ff6f355cc755 Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 28 Jun 2026 20:37:18 +0400 Subject: [PATCH 049/103] aaa --- headers/functions/overlay29.h | 2 +- symbols/overlay29.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 22f011f6..44ca877e 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -838,7 +838,7 @@ bool PositionHasMonster(struct position* pos); bool TrySmashWall(struct position* pos); bool IsTileGround(struct position* pos); bool IsWaterTileset(void); -void ClearTileMonster(struct entity* entity, int x, int y); +void RemoveMonsterFromTile(struct entity* entity, int x, int y); enum monster_id GetRandomSpawnMonsterID(void); bool NearbyAllyIqSkillIsEnabled(struct entity* entity, enum iq_skill_id iq_skill); struct entity* FindAdjacentEnemy(struct entity* monster); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index f979d081..d4d59dd7 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -8157,7 +8157,7 @@ overlay29: Returns flag tileset_property::is_water_tileset for the current tileset return: True if the current tileset is a water tileset - - name: ClearTileMonster + - name: RemoveMonsterFromTile address: EU: 0x2338A90 description: |- From 9d696e2a1d9ab5eb27c1b003e64afb5f1554fba8 Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 29 Jun 2026 00:10:12 +0400 Subject: [PATCH 050/103] aaa --- headers/functions/arm9.h | 2 ++ symbols/arm9.yml | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index dac7424b..adc83b5e 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -108,6 +108,8 @@ void FileClose(struct file_stream* file); void UnloadFile(void* ptr); void LoadFileFromRom(struct iovec* iov, const char* filepath, uint32_t flags); void MarkPaletteDataAsNeedingUpdate(struct palette_data* palette_data); +void CopyColorToPaletteDataRgba(struct palette_data* palette_data, uint16_t start, + struct rgba* palette_bytes); void FillPaletteDataRgba(struct palette_data* palette_data, uint16_t start, struct rgba* palette_bytes, uint16_t nb_colors); void TransformPaletteDataWithFlushDivideFade(struct palette_data* palette); diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 0bf8854e..51c82597 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -1103,6 +1103,15 @@ arm9: address: EU: 0x200A504 description: "r0: palette_data" + - name: CopyColorToPaletteDataRgba + address: + EU: 0x200A590 + description: |- + Copies a single color to the RGBA palette of a palette_data struct, which will be transformed into RGB5 and copied into palette VRAM. + + r0: palette_data + r1: position (ranges between [0, 0x100) for standard palettes and [0, 0x1000) for extended) + r2: palette bytes - name: FillPaletteDataRgba address: EU: 0x200A5B0 From 141a8e4d05a76e2ce00287ee0518a74efaba9341 Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 29 Jun 2026 19:01:25 +0400 Subject: [PATCH 051/103] aaa --- headers/data/ram.h | 1 + headers/functions/arm9.h | 3 +++ symbols/arm9.yml | 26 +++++++++++++++++++------- symbols/ram.yml | 6 ++++++ 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/headers/data/ram.h b/headers/data/ram.h index b207a22a..89e3d373 100644 --- a/headers/data/ram.h +++ b/headers/data/ram.h @@ -30,6 +30,7 @@ extern struct mem_arena* SOUND_MEMORY_ARENA_PTR; extern struct window_list WINDOW_LIST; extern uint16_t CURSOR_16_SPRITE_ID; extern uint16_t CURSOR_SPRITE_ID; +extern uint8_t PREV_MENU_ITEMS[21]; extern struct animation_control* CURSOR_ANIMATION_CONTROL; extern struct animation_control* CURSOR_16_ANIMATION_CONTROL; extern uint16_t ALERT_SPRITE_ID; diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index adc83b5e..91bce193 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -649,6 +649,8 @@ void GetWindowRectangle(int window_id, struct window_rectangle* rect_out); void* GetWindowContents(int window_id); void LoadCursors(void); void InitWindowTrailer(struct window_trailer* trailer); +uint8_t LoadPrevMenuItem(int menu_id); +void StorePrevMenuItem(int menu_id, uint8_t menu_item); void LoadAlert(void); int PrintClearMark(int mark_id, int x, int y, undefined param_4); int PrintSpecialEpisodeClearMark(enum special_episode_type special_episode_type, int x, int y, @@ -707,6 +709,7 @@ int CreateCollectionMenu(struct window_params* params, struct window_flags flags struct window_extra_info* window_extra_info, unk_collection_menu_fn_t param_4, undefined4 param_5, int n_options, int n_opt_per_page); +uint8_t GetWindowIdSelectedItemOnPage(int window_id); void SetCollectionMenuField0x1BC(int window_id, int value); void SetCollectionMenuWidth(int window_id, int width); void CloseCollectionMenu(int window_id); diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 51c82597..f44ab8bb 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -6182,25 +6182,29 @@ arm9: Seems to initialize a window_trailer within a new window. r0: window_trailer pointer - - name: Arm9LoadUnkFieldNa0x2029EC8 + - name: LoadPrevMenuItem + aliases: + - Arm9LoadUnkFieldNa0x2029EC8 address: EU: 0x202A1BC NA: 0x2029EC8 JP: 0x202A220 description: |- - Note: unverified, ported from Irdkwia's notes + Loads the previous menu item the user had selected on the menu referenced by the given ID. - r0: id - - name: Arm9StoreUnkFieldNa0x2029ED8 + r0: menu id + - name: SavePrevMenuItem + aliases: + - Arm9LoadUnkFieldNa0x2029EC8 address: EU: 0x202A1CC NA: 0x2029ED8 JP: 0x202A230 description: |- - Note: unverified, ported from Irdkwia's notes + Stores the given menu item as the previous menu item the user had selected on the menu referenced by the given ID. - r0: id - r1: value + r0: menu id + r1: menu item - name: LoadAlert address: EU: 0x202A1DC @@ -6712,6 +6716,14 @@ arm9: r0: window_id return: bool + - name: GetWindowIdSelectedMenuItemIdx + address: + EU: 0x202CA3C + description: |- + Gets the index of the current menu item the user has selected on the menu given by the window_id. + + r0: window id + return: index of current selected item - name: SetCollectionMenuField0x1C8 address: EU: 0x202CA88 diff --git a/symbols/ram.yml b/symbols/ram.yml index d7f49d91..b5292be2 100644 --- a/symbols/ram.yml +++ b/symbols/ram.yml @@ -323,6 +323,12 @@ ram: length: EU: 0x2 description: "Id of the \"FONT/cursor.wan\" sprite loaded in WAN_TABLE" + - name: PREV_MENU_ITEMS + address: + EU: 0x22AB5A8 + length: + EU: 0x15 + description: "A list of the previous menu item the user had selected on different ingame menus, indexed by a 'menu ID' assigned to each one." - name: CURSOR_ANIMATION_CONTROL address: EU: 0x22AB5C0 From faab3beac07e35f73c93894f4613667842ed5cf5 Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 29 Jun 2026 19:06:59 +0400 Subject: [PATCH 052/103] aaa --- symbols/arm9.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/arm9.yml b/symbols/arm9.yml index f44ab8bb..6772650c 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -6195,7 +6195,7 @@ arm9: r0: menu id - name: SavePrevMenuItem aliases: - - Arm9LoadUnkFieldNa0x2029EC8 + - Arm9StoreUnkFieldNa0x2029EC8 address: EU: 0x202A1CC NA: 0x2029ED8 From b17781f3ecc1166f13733acabcdd2cba099da61e Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 29 Jun 2026 19:08:41 +0400 Subject: [PATCH 053/103] aaa --- symbols/arm9.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 6772650c..385efdaf 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -6195,7 +6195,7 @@ arm9: r0: menu id - name: SavePrevMenuItem aliases: - - Arm9StoreUnkFieldNa0x2029EC8 + - Arm9StoreUnkFieldNa0x2029ED8 address: EU: 0x202A1CC NA: 0x2029ED8 From b78059973453192f8b921dbf5b79e11950a3e653 Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 29 Jun 2026 19:36:58 +0400 Subject: [PATCH 054/103] aaa --- headers/functions/arm9.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index 91bce193..eb0a88aa 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -650,7 +650,7 @@ void* GetWindowContents(int window_id); void LoadCursors(void); void InitWindowTrailer(struct window_trailer* trailer); uint8_t LoadPrevMenuItem(int menu_id); -void StorePrevMenuItem(int menu_id, uint8_t menu_item); +void SavePrevMenuItem(int menu_id, uint8_t menu_item); void LoadAlert(void); int PrintClearMark(int mark_id, int x, int y, undefined param_4); int PrintSpecialEpisodeClearMark(enum special_episode_type special_episode_type, int x, int y, @@ -709,7 +709,7 @@ int CreateCollectionMenu(struct window_params* params, struct window_flags flags struct window_extra_info* window_extra_info, unk_collection_menu_fn_t param_4, undefined4 param_5, int n_options, int n_opt_per_page); -uint8_t GetWindowIdSelectedItemOnPage(int window_id); +uint8_t GetWindowIdSelectedMenuItemIdx(int window_id); void SetCollectionMenuField0x1BC(int window_id, int value); void SetCollectionMenuWidth(int window_id, int width); void CloseCollectionMenu(int window_id); From 453e17c026a1ad684f360bfc5675b451855ca6b7 Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 29 Jun 2026 19:44:32 +0400 Subject: [PATCH 055/103] aaa --- headers/functions/arm9.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index eb0a88aa..2b0c2d11 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -709,11 +709,11 @@ int CreateCollectionMenu(struct window_params* params, struct window_flags flags struct window_extra_info* window_extra_info, unk_collection_menu_fn_t param_4, undefined4 param_5, int n_options, int n_opt_per_page); -uint8_t GetWindowIdSelectedMenuItemIdx(int window_id); void SetCollectionMenuField0x1BC(int window_id, int value); void SetCollectionMenuWidth(int window_id, int width); void CloseCollectionMenu(int window_id); bool IsCollectionMenuActive(int window_id); +uint8_t GetWindowIdSelectedMenuItemIdx(int window_id); void SetCollectionMenuField0x1C8(int window_id, uint8_t value); void SetCollectionMenuField0x1A0(int window_id, undefined4 value); void SetCollectionMenuField0x1A4(int window_id, undefined4 value); From 048f471dbc7a736c944012e0f7472ab46fb082f2 Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 30 Jun 2026 15:22:23 +0400 Subject: [PATCH 056/103] Update arm9.h --- headers/functions/arm9.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index 2b0c2d11..ecaab7fd 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -108,7 +108,7 @@ void FileClose(struct file_stream* file); void UnloadFile(void* ptr); void LoadFileFromRom(struct iovec* iov, const char* filepath, uint32_t flags); void MarkPaletteDataAsNeedingUpdate(struct palette_data* palette_data); -void CopyColorToPaletteDataRgba(struct palette_data* palette_data, uint16_t start, +void CopyColorToPaletteDataRgba(struct palette_data* palette_data, uint16_t pos, struct rgba* palette_bytes); void FillPaletteDataRgba(struct palette_data* palette_data, uint16_t start, struct rgba* palette_bytes, uint16_t nb_colors); From d78a3a7179fcc02773acb8e0954ade625531ae4d Mon Sep 17 00:00:00 2001 From: assidion Date: Tue, 30 Jun 2026 15:57:55 +0400 Subject: [PATCH 057/103] aaa --- symbols/arm9.yml | 6 +++--- symbols/ram.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 385efdaf..05dfe0a9 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -6190,7 +6190,7 @@ arm9: NA: 0x2029EC8 JP: 0x202A220 description: |- - Loads the previous menu item the user had selected on the menu referenced by the given ID. + Loads the index of the previous menu item the user had selected on the menu referenced by the given ID. r0: menu id - name: SavePrevMenuItem @@ -6201,10 +6201,10 @@ arm9: NA: 0x2029ED8 JP: 0x202A230 description: |- - Stores the given menu item as the previous menu item the user had selected on the menu referenced by the given ID. + Stores the index of the given menu item as the previous menu item the user had selected on the menu referenced by the given ID. r0: menu id - r1: menu item + r1: menu item index - name: LoadAlert address: EU: 0x202A1DC diff --git a/symbols/ram.yml b/symbols/ram.yml index b5292be2..f42d9e8d 100644 --- a/symbols/ram.yml +++ b/symbols/ram.yml @@ -328,7 +328,7 @@ ram: EU: 0x22AB5A8 length: EU: 0x15 - description: "A list of the previous menu item the user had selected on different ingame menus, indexed by a 'menu ID' assigned to each one." + description: "A list of the previous menu item index the user had selected on different ingame menus, indexed by a 'menu ID' assigned to each one." - name: CURSOR_ANIMATION_CONTROL address: EU: 0x22AB5C0 From cbe4a5dd124484a48ac19275c30537063cf5647c Mon Sep 17 00:00:00 2001 From: assidion Date: Tue, 30 Jun 2026 15:58:15 +0400 Subject: [PATCH 058/103] aaa --- symbols/ram.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/ram.yml b/symbols/ram.yml index f42d9e8d..80cba7fc 100644 --- a/symbols/ram.yml +++ b/symbols/ram.yml @@ -328,7 +328,7 @@ ram: EU: 0x22AB5A8 length: EU: 0x15 - description: "A list of the previous menu item index the user had selected on different ingame menus, indexed by a 'menu ID' assigned to each one." + description: "A list of the previous menu item indexes the user had selected on different ingame menus, indexed by a 'menu ID' assigned to each one." - name: CURSOR_ANIMATION_CONTROL address: EU: 0x22AB5C0 From d092eeb51d855dacdd016d11e973e587c47373d6 Mon Sep 17 00:00:00 2001 From: assidion Date: Tue, 30 Jun 2026 17:45:41 +0400 Subject: [PATCH 059/103] aaa --- symbols/arm9.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 05dfe0a9..2bd8ad3d 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -6201,7 +6201,7 @@ arm9: NA: 0x2029ED8 JP: 0x202A230 description: |- - Stores the index of the given menu item as the previous menu item the user had selected on the menu referenced by the given ID. + Stores the index of the previous menu item the user had selected on the menu referenced by the given ID. r0: menu id r1: menu item index From edb8b9eb5fbdbead3753400da19903cb2efa5c0a Mon Sep 17 00:00:00 2001 From: assidion2 Date: Thu, 2 Jul 2026 09:50:50 +0400 Subject: [PATCH 060/103] Update arm9.yml --- symbols/arm9.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 2bd8ad3d..80b2e99b 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -6193,6 +6193,7 @@ arm9: Loads the index of the previous menu item the user had selected on the menu referenced by the given ID. r0: menu id + return: menu item index - name: SavePrevMenuItem aliases: - Arm9StoreUnkFieldNa0x2029ED8 From cbf3a8fc14200b8191dcad273d7c3e0f2991bceb Mon Sep 17 00:00:00 2001 From: assidion Date: Fri, 3 Jul 2026 18:38:52 +0400 Subject: [PATCH 061/103] aaa --- headers/functions/overlay29.h | 3 +++ symbols/overlay29.yml | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 44ca877e..08ac9c67 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -222,6 +222,8 @@ void ChangeTrapOnTile(struct tile* tile, enum trap_id trap_id); int SpawnMonstersAroundPos(struct entity* monster, struct position* pos, uint8_t num_enemies); void RevealTrapsNearby(struct entity* monster); bool RevealTrapAtPos(int x, int y); +void CheckBossFightVictory(struct entity* fainted_entity, enum monster_behavior behavior, + bool change_music); bool ShouldRunMonsterAi(struct entity* monster); bool DebugRecruitingEnabled(void); void TryActivateIqBooster(void); @@ -1088,6 +1090,7 @@ int GetPersonalityIndex(struct monster* monster); void DisplayMessage(struct portrait_params* portrait, int message_id, bool wait_for_input); void DisplayMessage2(struct portrait_params* portrait, int message_id, bool wait_for_input); bool YesNoMenu(undefined param_1, int string_id, int default_option, undefined param_4); +void CloseMinimap(void); void DisplayMessageInternal(int message_id, bool wait_for_input, struct portrait_params* portrait, undefined4 param_4, undefined4 param_5, undefined4 param_6); void PrintMissionCompleteString(int string_id, undefined4 param_2, undefined4 param_3, diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index d4d59dd7..f6131676 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -1502,6 +1502,8 @@ overlay29: JP: 0x22EBA90 description: |- Calling this function with r0 = 6 (or its duplicates in the switch statement) will normally close the minimap, while r0 = 0 will reopen it. + + Closing it requires some additional function calls if the alert box is open (see CloseMinimap's code). When called in certain places, the function will crash the game instead? @@ -2373,6 +2375,15 @@ overlay29: r0: x r1: y return: true if there was a hidden trap to reveal + - name: CheckBossFightVictory + address: + EU: 0x22F0178 + description: |- + Checks if the boss fight should be marked as won after the given entity has fainted. + + r0: fainted entity + r1: behavior of fainted monster (the function will do nothing if it's not a fixed room enemy) + r2: whether to change the music if the boss fight is over - name: ShouldRunMonsterAi address: EU: 0x22F03A0 @@ -10567,6 +10578,13 @@ overlay29: r2: Option that the cursor will be on by default. 0 for "Yes", 1 for "No" r3: ? return: True if the user chooses "Yes", false if the user chooses "No" + - name: CloseMinimap + address: + EU: 0x234E158 + description: |- + Closes the minimap. + + No params. - name: DisplayMessageInternal address: EU: 0x234E190 From abaef058d430a07c376868a832c8ab9f6b76b0eb Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 4 Jul 2026 14:48:14 +0400 Subject: [PATCH 062/103] aaa --- symbols/arm9.yml | 4 ++++ symbols/overlay29.yml | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/symbols/arm9.yml b/symbols/arm9.yml index 3bd82a54..de5b36d6 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -7976,6 +7976,8 @@ arm9: r0: struct inventory_menu_input_ctx - name: MenuLoadEntriesEqual + aliases: + - OverlayLoadEntriesEqual address: EU: 0x2034A94 NA: 0x20347A0 @@ -14355,6 +14357,8 @@ arm9: Additionally, width and height are 0, and will be computed in CreateTeamSelectionMenu. - name: NULL_MENU_LOAD_ENTRY + aliases: + - NULL_OVERLAY_LOAD_ENTRY address: EU: 0x209B5C8 NA: 0x209B08C diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 77ebfdf1..6fd581fd 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -1504,7 +1504,7 @@ overlay29: JP: 0x22EBA90 description: |- Calling this function with r0 = 6 (or its duplicates in the switch statement) will normally close the minimap, while r0 = 0 will reopen it. - + Closing it requires some additional function calls if the alert box is open (see CloseMinimap's code). When called in certain places, the function will crash the game instead? @@ -3686,7 +3686,7 @@ overlay29: EU: 0x22FFE20 description: |- Returns true if the monster has any status problem that prevents it from acting as the leader. - + Also executes the monster's two-turn move if it is charging one. r0: Entity pointer From a55024d3a76920c648e336eb8fa4dd39965b33c9 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 4 Jul 2026 14:49:35 +0400 Subject: [PATCH 063/103] aaa --- symbols/ram.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/symbols/ram.yml b/symbols/ram.yml index a0d84038..1be576fe 100644 --- a/symbols/ram.yml +++ b/symbols/ram.yml @@ -326,11 +326,8 @@ ram: - name: PREV_MENU_ITEMS address: EU: 0x22AB5A8 -<<<<<<< HEAD -======= NA: 0x22AAC68 JP: 0x22AC474 ->>>>>>> 6e927465de02858fe8c508290f7501963f486c69 length: EU: 0x15 description: "A list of the previous menu item indexes the user had selected on different ingame menus, indexed by a 'menu ID' assigned to each one." From 0c08e344e15c49dc982cd8d2f46421bd6df452a2 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 4 Jul 2026 14:50:18 +0400 Subject: [PATCH 064/103] aaa --- headers/functions/overlay29.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index cdc1f374..4ecfc088 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -223,7 +223,7 @@ int SpawnMonstersAroundPos(struct entity* monster, struct position* pos, uint8_t void RevealTrapsNearby(struct entity* monster); bool RevealTrapAtPos(int x, int y); void CheckBossFightVictory(struct entity* fainted_entity, enum monster_behavior behavior, - bool change_music); + bool change_music); bool ShouldRunMonsterAi(struct entity* monster); bool DebugRecruitingEnabled(void); void TryActivateIqBooster(void); From f1302860b733907e7586af456718823337fa18b1 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 4 Jul 2026 15:20:56 +0400 Subject: [PATCH 065/103] aaa --- headers/functions/overlay29.h | 2 ++ symbols/overlay29.yml | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 4ecfc088..afc53089 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -680,6 +680,8 @@ bool TryInflictMiracleEyeStatus(struct entity* user, struct entity* target, bool void TryInflictMagnetRiseStatus(struct entity* user, struct entity* target); bool IsFloating(struct entity* entity); void SetTwoTurnInvincibility(struct entity* target, enum two_turn_invincibility value); +void BeginChargedMove(struct entity* user, struct entity* target, enum status_two_turn_id status, + struct move* move, char* message); void EndTwoTurnMove(struct entity* entity); void SetReflectStatus(struct entity* user, struct entity* target, enum status_reflect_id status); void TryInflictSafeguardStatus(struct entity* user, struct entity* target); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 6fd581fd..943a2181 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -6674,6 +6674,17 @@ overlay29: r0: target entity pointer r1: two_turn_move_invincible value + - name: BeginChargedMove + address: + EU: 0x23197B8 + description: |- + Begins the given charged move for the target entity. + + r0: user entity pointer + r1: target entity pointer (always the same) + r2: status id + r3: move pointer + stack[0]: string to log as the message - name: EndTwoTurnMove address: EU: 0x23197B8 From 585bd1ed24fa2561940ba21fd021880cc94b1450 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 4 Jul 2026 15:21:16 +0400 Subject: [PATCH 066/103] aaa --- symbols/overlay29.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 943a2181..2e10a02d 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -6676,7 +6676,7 @@ overlay29: r1: two_turn_move_invincible value - name: BeginChargedMove address: - EU: 0x23197B8 + EU: 0x231961C description: |- Begins the given charged move for the target entity. From 44294285f76446ed87f29d7ce1ecf0c266051741 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 4 Jul 2026 19:46:45 +0400 Subject: [PATCH 067/103] aaa --- headers/functions/overlay29.h | 2 ++ headers/types/dungeon_mode/dungeon_mode.h | 12 ++++-------- symbols/overlay29.yml | 14 ++++++++++++++ 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index afc53089..1c1cd2ff 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -680,6 +680,8 @@ bool TryInflictMiracleEyeStatus(struct entity* user, struct entity* target, bool void TryInflictMagnetRiseStatus(struct entity* user, struct entity* target); bool IsFloating(struct entity* entity); void SetTwoTurnInvincibility(struct entity* target, enum two_turn_invincibility value); +void WaitUntilMonsterFliesOffscreen(struct entity* entity); +void WaitUntilMonsterIsBackOnGround(struct entity* entity); void BeginChargedMove(struct entity* user, struct entity* target, enum status_two_turn_id status, struct move* move, char* message); void EndTwoTurnMove(struct entity* entity); diff --git a/headers/types/dungeon_mode/dungeon_mode.h b/headers/types/dungeon_mode/dungeon_mode.h index 668fa005..fc08db09 100644 --- a/headers/types/dungeon_mode/dungeon_mode.h +++ b/headers/types/dungeon_mode/dungeon_mode.h @@ -526,10 +526,7 @@ struct monster { struct position pixel_pos; // 0x182: The monster's graphical position on screen? undefined field_0x186; undefined field_0x187; - undefined field_0x188; - undefined field_0x189; - undefined field_0x18a; - undefined field_0x18b; + int elevation_mirror; // 0x188: Mirror of the elevation field in struct entity // 0x18C: Bitflags that cause non-damaging exclusive items to trigger on the // attacker after they have completed their move. For example, the Eclipse Robe // (Darkrai exclusive item) may afflict attacking enemies with the nightmare @@ -1595,10 +1592,9 @@ struct spawned_monster_data { struct monster_id_16 monster_id; // 0x0: The id of the monster to spawn struct monster_behavior_8 behavior; // 0x2: NPC behavior of the monster undefined field_0x3; - undefined field_0x4; - undefined field_0x5; - undefined field_0x6; - undefined field_0x7; + // 0x120: If zero, when the monster is standing in a room, the AI will make it head towards a + // random exit. If nonzero, the monster will instead move in a random direction every turn. + int random_movement; uint16_t level; // 0x8: The level of the spawned monster struct position pos; // 0xA: Position on the floor where the monster will be spawned // 0xE: True if the monster cannot be spawned asleep. diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 2e10a02d..0d3305d9 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -6674,6 +6674,20 @@ overlay29: r0: target entity pointer r1: two_turn_move_invincible value + - name: WaitUntilMonsterFliesOffscreen + address: + EU: 0x2319534 + description: |- + Waits until the monster has flown offscreen (used for the effect of Seismic Toss and moves like Fly/Bounce). + + r0: entity pointer + - name: WaitUntilMonsterIsBackOnGround + address: + EU: 0x23195A8 + description: |- + Waits until the monster is back on the ground (used for the effect of Seismic Toss). + + r0: entity pointer - name: BeginChargedMove address: EU: 0x231961C From 778226b09b67eb1e6ebab4596b3314e8b83cd6c7 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 4 Jul 2026 19:47:38 +0400 Subject: [PATCH 068/103] aaa --- headers/types/dungeon_mode/dungeon_mode.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headers/types/dungeon_mode/dungeon_mode.h b/headers/types/dungeon_mode/dungeon_mode.h index fc08db09..23951123 100644 --- a/headers/types/dungeon_mode/dungeon_mode.h +++ b/headers/types/dungeon_mode/dungeon_mode.h @@ -526,7 +526,7 @@ struct monster { struct position pixel_pos; // 0x182: The monster's graphical position on screen? undefined field_0x186; undefined field_0x187; - int elevation_mirror; // 0x188: Mirror of the elevation field in struct entity + int elevation_mirror; // 0x188: Mirror of the elevation field in struct entity // 0x18C: Bitflags that cause non-damaging exclusive items to trigger on the // attacker after they have completed their move. For example, the Eclipse Robe // (Darkrai exclusive item) may afflict attacking enemies with the nightmare From 316b1e9bf1c94af639cccf9902a168f5d457bc6b Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 4 Jul 2026 20:06:00 +0400 Subject: [PATCH 069/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 1c1cd2ff..efdd2d16 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -1086,6 +1086,7 @@ bool RunDungeonMode(undefined4* param_1, undefined4 param_2); void StartFadeDungeon(struct dungeon_fade* fstruct, int delta_delta_brightness, enum fade_status_dungeon fade_type); void StartFadeDungeonWrapper(int fade_type, int delta_delta_brightness, enum screen screen); +void WaitUntilScreenFadeIsFinished(enum screen screen); void HandleFadesDungeon(enum screen screen); void HandleFadesDungeonBothScreens(); bool DisplayFloorTip(void); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 0d3305d9..4c221f4b 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -6678,14 +6678,14 @@ overlay29: address: EU: 0x2319534 description: |- - Waits until the monster has flown offscreen (used for the effect of Seismic Toss and moves like Fly/Bounce). + Waits in a loop until the monster has flown offscreen (used for the effect of Seismic Toss and moves like Fly/Bounce). r0: entity pointer - name: WaitUntilMonsterIsBackOnGround address: EU: 0x23195A8 description: |- - Waits until the monster is back on the ground (used for the effect of Seismic Toss). + Waits in a loop until the monster is back on the ground (used for the effect of Seismic Toss). r0: entity pointer - name: BeginChargedMove @@ -10561,6 +10561,13 @@ overlay29: r0: Fade type r1: Change of brightness per frame r2: Screen to fade + - name: WaitUntilFadeIsFinished + address: + EU: 0x234D334 + description: |- + Waits in a loop until the screen fade on the given screen is finished. + + r0: enum screen - name: HandleFadesDungeon address: EU: 0x234D3D4 From f9702a2ccf0de93a34fa893666919e8a8f5bdd71 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 4 Jul 2026 20:08:00 +0400 Subject: [PATCH 070/103] aaa --- symbols/overlay29.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 4c221f4b..641dfe57 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -10563,7 +10563,7 @@ overlay29: r2: Screen to fade - name: WaitUntilFadeIsFinished address: - EU: 0x234D334 + EU: 0x234D338 description: |- Waits in a loop until the screen fade on the given screen is finished. From 32467c83c124fda9a8b4a3a81f38285b9490dbed Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 4 Jul 2026 20:10:35 +0400 Subject: [PATCH 071/103] aaa --- headers/functions/overlay29.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index efdd2d16..ec1405c3 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -1086,7 +1086,7 @@ bool RunDungeonMode(undefined4* param_1, undefined4 param_2); void StartFadeDungeon(struct dungeon_fade* fstruct, int delta_delta_brightness, enum fade_status_dungeon fade_type); void StartFadeDungeonWrapper(int fade_type, int delta_delta_brightness, enum screen screen); -void WaitUntilScreenFadeIsFinished(enum screen screen); +void WaitUntilFadeIsFinished(enum screen screen); void HandleFadesDungeon(enum screen screen); void HandleFadesDungeonBothScreens(); bool DisplayFloorTip(void); From 96f21491d383f411a6e55b70685e401c0bcb7013 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 4 Jul 2026 23:51:07 +0400 Subject: [PATCH 072/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index ec1405c3..535e4394 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -1079,6 +1079,7 @@ void LogMessageById(struct entity* user, int message_id, bool show_popup); bool AlertBoxIsActive(void); bool AlertBoxIsScrolling(void); void WaitUntilAlertBoxTextIsLoaded(undefined param_1); +void WaitUntilAlertBoxPauseIsOver(undefined param_1); void InitPortraitDungeon(struct portrait_params* portrait, enum monster_id monster_id, enum portrait_emotion emotion); void OpenMessageLog(undefined4 param_1, undefined4 param_2); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 641dfe57..e9082fdb 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -10502,6 +10502,19 @@ overlay29: description: |- Calls AdvanceFrame in a loop until the dungeon alert box has finished scrolling. + r0: value to pass to AdvanceFrame (unused by the function) + - name: WaitUntilAlertBoxPauseIsOver + address: + EU: 0x234C654 + description: |- + Waits until the dungeon alert box has finished scrolling, then waits until one of the following conditions is true: + + - The alert box has less than 180 frames until closing (countdown starts at 240 in LogMessage) + - Both A and B are held + - A key on the d-pad (up, down, left, right) is pressed + + There is also a check for if the loop passes 240 iterations, but in practice the first condition above will always come first. + r0: value to pass to AdvanceFrame (unused by the function) - name: InitPortraitDungeon address: From ff6924aeb49425da8273b87903f34fb007962b2d Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 4 Jul 2026 23:53:22 +0400 Subject: [PATCH 073/103] aaa --- symbols/overlay29.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index e9082fdb..d03c2ea3 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -10512,7 +10512,7 @@ overlay29: - The alert box has less than 180 frames until closing (countdown starts at 240 in LogMessage) - Both A and B are held - A key on the d-pad (up, down, left, right) is pressed - + There is also a check for if the loop passes 240 iterations, but in practice the first condition above will always come first. r0: value to pass to AdvanceFrame (unused by the function) From f32c22e1560e02d4928d0fb138ea39a0bebc21b4 Mon Sep 17 00:00:00 2001 From: assidion Date: Sat, 4 Jul 2026 23:55:48 +0400 Subject: [PATCH 074/103] aaa --- symbols/overlay29.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index d03c2ea3..e9550632 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -10508,7 +10508,7 @@ overlay29: EU: 0x234C654 description: |- Waits until the dungeon alert box has finished scrolling, then waits until one of the following conditions is true: - + - The alert box has less than 180 frames until closing (countdown starts at 240 in LogMessage) - Both A and B are held - A key on the d-pad (up, down, left, right) is pressed From 593d2c39066d59acc582d279a1527d515709fb16 Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 5 Jul 2026 00:04:06 +0400 Subject: [PATCH 075/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 535e4394..0c933359 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -1074,6 +1074,7 @@ void LogMessageByIdWithPopupCheckUserUnknown(struct entity* user, undefined4* pa int message_id); void LogMessageByIdWithPopup(struct entity* user, int message_id); void LogMessageWithPopup(struct entity* user, const char* message); +int GetAlertBoxLoadingStatus(void); void LogMessage(struct entity* user, const char* message, bool show_popup); void LogMessageById(struct entity* user, int message_id, bool show_popup); bool AlertBoxIsActive(void); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index e9550632..307bcae8 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -10454,6 +10454,10 @@ overlay29: r0: user entity pointer r1: message string + - name: GetAlertBoxLoadingStatus + address: + EU: 0x234C0F4 + description: "return: message_log_info->alert_box_info::loading_status" - name: LogMessage address: EU: 0x234C108 From d5519b3037436d1f11d5dab0f6152334dd6cf649 Mon Sep 17 00:00:00 2001 From: assidion Date: Sun, 5 Jul 2026 14:38:08 +0400 Subject: [PATCH 076/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 0c933359..1b394e6d 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -236,6 +236,7 @@ bool TalkToSecretBazaarNpcWithYesNoMenu(int string_id, struct entity* shopkeeper struct simple_menu_id_item* menu_items); void MakeTargetFaceUserAndIdle(struct entity* target, struct entity* user); void SubtractMoneyCarriedWithSfx(int amount); +void ReopenMinimap(void); void GonePebbleGradualPaletteShift(struct rgba* palette, uint32_t param_2); bool TalkToSecretBazaarNpc(int string_id, struct entity* shopkeeper, enum portrait_emotion emotion, struct simple_menu_id_item* menu_items, bool param_5); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 307bcae8..847e2dfb 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -2492,6 +2492,13 @@ overlay29: Subtracts the amount of money from the the player's current amount of money and plays the sound effect for buying an item. r0: money amount + - name: ReopenMinimap + address: + EU: 0x22F11FC + description: |- + Reopens the minimap if the option to hide it is not set. + + No params. - name: GonePebbleGradualPaletteShift address: EU: 0x22F1210 From 855844f5657564f8db34765993dd78cc49120d10 Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 6 Jul 2026 01:50:13 +0400 Subject: [PATCH 077/103] aaa --- headers/functions/overlay29.h | 1 + symbols/overlay29.yml | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 1b394e6d..6bdae445 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -623,6 +623,7 @@ void RevealStairs(struct entity* user, struct entity* target); void RevealEnemies(struct entity* user, struct entity* target); bool TryInflictLeechSeedStatus(struct entity* user, struct entity* target, bool log_failure, bool check_only); +void EndLeechSeedStatusForAllTargets(struct entity* user); void TryInflictDestinyBondStatus(struct entity* user, struct entity* target); void TryInflictSureShotStatus(struct entity* user, struct entity* target, uint8_t turns); void TryInflictWhifferStatus(struct entity* user, struct entity* target, uint8_t turns, diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 847e2dfb..ccbab2e1 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -6133,6 +6133,13 @@ overlay29: r2: flag to log a message on failure r3: flag to only perform the check for inflicting without actually inflicting return: Whether or not the status could be inflicted + - name: EndLeechSeedStatusForAllTargets + address: + EU: 0x2316434 + description: |- + Ends the Leech Seed status for all monsters that the given monster gave the status to. + + r0: user entity pointer - name: TryInflictDestinyBondStatus address: EU: 0x23164B0 From 59e1ca8afcad42be08225b7320a4aad5f7ffba8f Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 6 Jul 2026 02:03:28 +0400 Subject: [PATCH 078/103] aaa --- headers/functions/overlay29.h | 2 ++ symbols/overlay29.yml | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 6bdae445..b157cf43 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -380,6 +380,7 @@ bool MonsterHasMiracleEyeStatus(struct entity* monster); bool MonsterHasNegativeStatus(struct entity* monster, bool check_held_item); bool IsMonsterSleeping(struct entity* monster); bool MonsterHasQuarterHp(struct entity* monster); +bool HasStatusThatPreventsOutlawEscaping(struct entity* monster); bool CheckVariousStatuses2(struct entity* entity, bool blind_check); bool CheckVariousConditions(struct entity* entity); bool CheckVariousStatuses(struct entity* entity); @@ -1047,6 +1048,7 @@ void GenerateMissionEggMonster(struct mission* mission); struct entity* GetFirstExperienceLockedTeamMember(void); void TryCompleteMission(undefined param_1, undefined param_2); void TreasureMemoComplete(void); +void TryOutlawEscapeFloor(struct entity* entity); void TeleportFleeingOutlaw(void); void InitAlertBoxInfo(void); void FreeAlertBoxInfo(void); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index ccbab2e1..30f445a2 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -3988,6 +3988,14 @@ overlay29: description: |- Checks if a monster has a quarter or less HP remaining. + r0: entity pointer + return: bool + - name: HasStatusThatPreventsOutlawEscaping + address: + EU: 0x2301530 + description: |- + Checks if a monster has a status (any kind of sleep or status under status_frozen) that prevents it from escaping as an outlaw. + r0: entity pointer return: bool - name: CheckVariousStatuses2 @@ -10214,6 +10222,13 @@ overlay29: Handles the fanfare for completing the mission, runs TryCompleteMission, and calls MissionExitPrompt. No params. + - name: TryOutlawEscapeFloor + address: + EU: 0x234B890 + description: |- + Checks if the monster is a fleeing outlaw and if so, whether it can escape the floor if it is standing on the stairs. + + r0: entity pointer - name: TeleportFleeingOutlaw address: EU: 0x234BAA4 From 5aa7a0bd018e901c9eef96ae96d7f2d3e393c81c Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 6 Jul 2026 02:05:33 +0400 Subject: [PATCH 079/103] aaa --- headers/functions/overlay29.h | 2 +- symbols/overlay29.yml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index b157cf43..32c44870 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -380,8 +380,8 @@ bool MonsterHasMiracleEyeStatus(struct entity* monster); bool MonsterHasNegativeStatus(struct entity* monster, bool check_held_item); bool IsMonsterSleeping(struct entity* monster); bool MonsterHasQuarterHp(struct entity* monster); -bool HasStatusThatPreventsOutlawEscaping(struct entity* monster); bool CheckVariousStatuses2(struct entity* entity, bool blind_check); +bool HasStatusThatPreventsOutlawEscaping(struct entity* monster); bool CheckVariousConditions(struct entity* entity); bool CheckVariousStatuses(struct entity* entity); bool MonsterCannotAttack(struct entity* entity, bool skip_sleep); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 30f445a2..025e3c25 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -3988,14 +3988,6 @@ overlay29: description: |- Checks if a monster has a quarter or less HP remaining. - r0: entity pointer - return: bool - - name: HasStatusThatPreventsOutlawEscaping - address: - EU: 0x2301530 - description: |- - Checks if a monster has a status (any kind of sleep or status under status_frozen) that prevents it from escaping as an outlaw. - r0: entity pointer return: bool - name: CheckVariousStatuses2 @@ -4017,6 +4009,14 @@ overlay29: r0: Entity pointer r1: If true, return 1 if entity is blinded return: bool + - name: HasStatusThatPreventsOutlawEscaping + address: + EU: 0x2301530 + description: |- + Checks if a monster has a status (any kind of sleep or status under status_frozen) that prevents it from escaping as an outlaw. + + r0: entity pointer + return: bool - name: CheckVariousConditions address: EU: From faa36a14f157d4768faf617f63a9143c63a2de53 Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 6 Jul 2026 02:06:45 +0400 Subject: [PATCH 080/103] aaa --- headers/functions/overlay29.h | 2 +- symbols/overlay29.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 32c44870..b5700a77 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -1048,7 +1048,7 @@ void GenerateMissionEggMonster(struct mission* mission); struct entity* GetFirstExperienceLockedTeamMember(void); void TryCompleteMission(undefined param_1, undefined param_2); void TreasureMemoComplete(void); -void TryOutlawEscapeFloor(struct entity* entity); +void TryFleeingOutlawEscapeFloor(struct entity* entity); void TeleportFleeingOutlaw(void); void InitAlertBoxInfo(void); void FreeAlertBoxInfo(void); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 025e3c25..a5a954dc 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -10222,12 +10222,12 @@ overlay29: Handles the fanfare for completing the mission, runs TryCompleteMission, and calls MissionExitPrompt. No params. - - name: TryOutlawEscapeFloor + - name: TryFleeingOutlawEscapeFloor address: EU: 0x234B890 description: |- Checks if the monster is a fleeing outlaw and if so, whether it can escape the floor if it is standing on the stairs. - + r0: entity pointer - name: TeleportFleeingOutlaw address: From 1af0a0021e259740d58f928545da1dabbbf9d63d Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 6 Jul 2026 02:18:22 +0400 Subject: [PATCH 081/103] aaa --- headers/data/overlay29.h | 1 + symbols/overlay29.yml | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/headers/data/overlay29.h b/headers/data/overlay29.h index 3fecfc7f..6dc11fca 100644 --- a/headers/data/overlay29.h +++ b/headers/data/overlay29.h @@ -89,6 +89,7 @@ extern int32_t ATK_STAT_IDX; extern fx32_8 ROLLOUT_DAMAGE_MULT_TABLE[10]; extern struct rgba MAP_COLOR_TABLE[9]; extern bool CORNER_CARDINAL_NEIGHBOR_IS_OPEN[4][8]; +extern int16_t DEFEAT_STRING_IDS[2]; extern int16_t GUMMI_LIKE_STRING_IDS[4]; extern int16_t GUMMI_IQ_STRING_IDS[5]; extern int16_t DAMAGE_STRING_IDS[27]; diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index a5a954dc..460018a8 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -11838,6 +11838,12 @@ overlay29: Note that this array is only used for the cardinal directions. The elements at odd indexes are unused and unconditionally set to 0. This array is used by the dungeon generation algorithm when generating room imperfections. See GenerateRoomImperfections. + - name: DEFEAT_STRING_IDS + address: + EU: 0x2353E4C + length: + EU: 0x4 + description: List that holds the string IDs for a monster being defeated (0 is "was defeated!", 1 is "fainted!") - name: GUMMI_LIKE_STRING_IDS address: EU: 0x2353EE0 From edc15022a33c2aa36e29e156dd446be6f7ff2ba0 Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 6 Jul 2026 02:18:59 +0400 Subject: [PATCH 082/103] aaa --- symbols/overlay29.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 460018a8..8e482e67 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -11843,7 +11843,7 @@ overlay29: EU: 0x2353E4C length: EU: 0x4 - description: List that holds the string IDs for a monster being defeated (0 is "was defeated!", 1 is "fainted!") + description: List that holds the string IDs for a monster being defeated (0 is 'was defeated!', 1 is 'fainted!') - name: GUMMI_LIKE_STRING_IDS address: EU: 0x2353EE0 From fdc25266e344ff225fdec7a4cd9ad935dc3fd0e8 Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 6 Jul 2026 02:20:11 +0400 Subject: [PATCH 083/103] aaa --- symbols/overlay29.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 8e482e67..842227a9 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -11843,7 +11843,7 @@ overlay29: EU: 0x2353E4C length: EU: 0x4 - description: List that holds the string IDs for a monster being defeated (0 is 'was defeated!', 1 is 'fainted!') + description: "List that holds the string IDs for a monster being defeated (0 is 'was defeated!', 1 is 'fainted!')" - name: GUMMI_LIKE_STRING_IDS address: EU: 0x2353EE0 From 1758f5f68cc1483aa140d66977b7fed2fda2ef3f Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 7 Jul 2026 11:09:43 +0400 Subject: [PATCH 084/103] Update headers/types/common/common.h Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- headers/types/common/common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headers/types/common/common.h b/headers/types/common/common.h index 87a287da..cc426307 100644 --- a/headers/types/common/common.h +++ b/headers/types/common/common.h @@ -1269,7 +1269,7 @@ ASSERT_SIZE(struct monster_file_contents, 78548); // Master struct for controlling the game's menus. struct menu_control { - // 0x0: An menu_load_entry with all zeroes. Doesn't seem to be used for anything. + // 0x0: A menu_load_entry with all zeroes. Doesn't seem to be used for anything. struct menu_load_entry null_entry; // 0x10: Whether to load a new menu on the next call of HandleMenus bool load_new_menu; From dbf6c293bcec42a100f16f8087da553db341e7bf Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 7 Jul 2026 11:09:56 +0400 Subject: [PATCH 085/103] Update symbols/overlay26.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay26.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay26.yml b/symbols/overlay26.yml index c09d41cc..2c3fd137 100644 --- a/symbols/overlay26.yml +++ b/symbols/overlay26.yml @@ -72,7 +72,7 @@ overlay26: JP: 0x238BEFC description: |- Just a guess. See ApplyRuleDungeonEffectsFrameUpdate for further explanation. - Is a destructor for an menu_load_entry. + Is a destructor for a menu_load_entry. No params. - name: ApplyRuleDungeonEffectsFrameUpdate From ed382637766aec32d7161e77db6c10d8b7b810b2 Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 7 Jul 2026 11:10:08 +0400 Subject: [PATCH 086/103] Update symbols/overlay26.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay26.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay26.yml b/symbols/overlay26.yml index 2c3fd137..829ffa6c 100644 --- a/symbols/overlay26.yml +++ b/symbols/overlay26.yml @@ -58,7 +58,7 @@ overlay26: JP: 0x238BED0 description: |- Just a guess. See ApplyRuleDungeonEffectsFrameUpdate for further explanation. - Is an entry_point for an menu_load_entry. + Is an entry_point for a menu_load_entry. r0: undefined4 r1: undefined4 From 47cb260cf00348abcde59e59d8b2685b0c65a70e Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 7 Jul 2026 11:10:20 +0400 Subject: [PATCH 087/103] Update symbols/overlay26.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay26.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay26.yml b/symbols/overlay26.yml index 829ffa6c..cf3b8bca 100644 --- a/symbols/overlay26.yml +++ b/symbols/overlay26.yml @@ -83,7 +83,7 @@ overlay26: description: |- Just a guess. After enough frames pass, conditionally calls GetMaxItemsAllowed, RemoveAllItemsStartingAt, IsMoneyAllowed, and SetMoneyCarried, as well as a handful of unknown functions that likely check if the entered dungeon is a rule dungeon. - Is a frame_update for an menu_load_entry. + Is a frame_update for a menu_load_entry. return: undefined4 - name: ExitDungeon1EntryPoint From ce63ccd524c9c760af3435fc26f714d993c0f24f Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 7 Jul 2026 11:10:33 +0400 Subject: [PATCH 088/103] Update symbols/overlay26.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay26.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay26.yml b/symbols/overlay26.yml index cf3b8bca..a7481990 100644 --- a/symbols/overlay26.yml +++ b/symbols/overlay26.yml @@ -93,7 +93,7 @@ overlay26: JP: 0x238BFC8 description: |- Seems to get called on exiting a dungeon. Might be exclusive to whether the dungeon is in mission mode? - Is an entry_point for an menu_load_entry. + Is an entry_point for a menu_load_entry. r0: undefined4 r1: undefined4 From a2738aeb83d92c49070fdda34a3a663a3cd329f2 Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 7 Jul 2026 11:10:44 +0400 Subject: [PATCH 089/103] Update symbols/overlay26.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay26.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay26.yml b/symbols/overlay26.yml index a7481990..aed5011f 100644 --- a/symbols/overlay26.yml +++ b/symbols/overlay26.yml @@ -139,7 +139,7 @@ overlay26: NA: 0x238AC40 JP: 0x238C1A0 description: |- - Is an unidentified destructor for an menu_load_entry. + Is an unidentified destructor for a menu_load_entry. No params. - name: UnkOv26FrameUpdateEu0238b7ac From d6e85653bee9c6fee8fcf476e21057d5e4fea1df Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 7 Jul 2026 11:10:56 +0400 Subject: [PATCH 090/103] Update symbols/overlay26.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay26.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay26.yml b/symbols/overlay26.yml index aed5011f..84a4842a 100644 --- a/symbols/overlay26.yml +++ b/symbols/overlay26.yml @@ -148,7 +148,7 @@ overlay26: NA: 0x238AC6C JP: 0x238C1CC description: |- - Is an unidentified frame_update for an menu_load_entry. + Is an unidentified frame_update for a menu_load_entry. return: undefined4 - name: DungeonExitEntryPoint2 From 51a9416e0f482b7e16308c965950f88c5af5ba94 Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 7 Jul 2026 11:11:11 +0400 Subject: [PATCH 091/103] Update symbols/overlay26.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay26.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay26.yml b/symbols/overlay26.yml index 84a4842a..f0ab779a 100644 --- a/symbols/overlay26.yml +++ b/symbols/overlay26.yml @@ -158,7 +158,7 @@ overlay26: JP: 0x238C238 description: |- Seems to get called on exiting a dungeon. Might be exclusive to whether the dungeon is not in mission mode? - Is an entry_point for an menu_load_entry. + Is an entry_point for a menu_load_entry. r0: undefined4 r1: undefined4 From e640fcc0ed611b158c9d8961484d235d59f5a55b Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 7 Jul 2026 11:11:22 +0400 Subject: [PATCH 092/103] Update symbols/overlay26.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay26.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay26.yml b/symbols/overlay26.yml index f0ab779a..2ee75c17 100644 --- a/symbols/overlay26.yml +++ b/symbols/overlay26.yml @@ -172,7 +172,7 @@ overlay26: JP: 0x238C270 description: |- Seems to get called on exiting a dungeon. Might be exclusive to whether the dungeon is not in mission mode? - Is a destructor for an menu_load_entry. + Is a destructor for a menu_load_entry. No params. - name: DungeonExitFrameUpdate2 From 2c75cb81c93b2571681ef48dd9372adb47ed9944 Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 7 Jul 2026 11:11:36 +0400 Subject: [PATCH 093/103] Update symbols/overlay26.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay26.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay26.yml b/symbols/overlay26.yml index 2ee75c17..3332fb1a 100644 --- a/symbols/overlay26.yml +++ b/symbols/overlay26.yml @@ -182,7 +182,7 @@ overlay26: JP: 0x238C29C description: |- Seems to get called on exiting a dungeon. Might be exclusive to whether the dungeon is not in mission mode? - Is a frame_update for an menu_load_entry. + Is a frame_update for a menu_load_entry. return: undefined4 data: From fcd32e0b452ce93874aa9a7f1064474a9fe321ce Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 7 Jul 2026 11:11:51 +0400 Subject: [PATCH 094/103] Update symbols/overlay26.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay26.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay26.yml b/symbols/overlay26.yml index 3332fb1a..120df24d 100644 --- a/symbols/overlay26.yml +++ b/symbols/overlay26.yml @@ -107,7 +107,7 @@ overlay26: JP: 0x238BFF4 description: |- Seems to get called on exiting a dungeon. Might be exclusive to whether the dungeon is in mission mode? - Is a destructor for an menu_load_entry. + Is a destructor for a menu_load_entry. No params. - name: ExitDungeon1FrameUpdate From 86fdba4cb981ef151603325f92536203dd83abee Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 7 Jul 2026 11:12:05 +0400 Subject: [PATCH 095/103] Update symbols/overlay26.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay26.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay26.yml b/symbols/overlay26.yml index 120df24d..034fc53d 100644 --- a/symbols/overlay26.yml +++ b/symbols/overlay26.yml @@ -117,7 +117,7 @@ overlay26: JP: 0x238C020 description: |- Seems to get called on exiting a dungeon. Might be exclusive to whether the dungeon is in mission mode? - Is a frame_update for an menu_load_entry. + Is a frame_update for a menu_load_entry. return: undefined4 - name: UnkOv26EntryPointEu0238b754 From c121c580459577152c95b150e9952ecc65ef9128 Mon Sep 17 00:00:00 2001 From: assidion2 Date: Tue, 7 Jul 2026 11:12:17 +0400 Subject: [PATCH 096/103] Update symbols/overlay26.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay26.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay26.yml b/symbols/overlay26.yml index 034fc53d..660f97a4 100644 --- a/symbols/overlay26.yml +++ b/symbols/overlay26.yml @@ -126,7 +126,7 @@ overlay26: NA: 0x238AC14 JP: 0x238C174 description: |- - Is an unidentified entry_point for an menu_load_entry. + Is an unidentified entry_point for a menu_load_entry. r0: undefined4 r1: undefined4 From bea93676ba87b83a6ccf707470de88727380343c Mon Sep 17 00:00:00 2001 From: assidion Date: Mon, 13 Jul 2026 19:44:21 +0400 Subject: [PATCH 097/103] aaa --- headers/functions/overlay29.h | 7 ++++--- symbols/overlay29.yml | 4 +--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 64ccf765..e90cb709 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -449,8 +449,9 @@ void AnimateFlyingMoves(struct entity* entity); void ChangeMonsterAnimation(struct entity* monster, int8_t animation_id, enum direction_id direction); void ChangeMonsterAnimationToIdle(struct entity* monster, enum direction_id direction); -void MakeMonsterIdleInDirection(struct entity* entity, enum direction_id direction); +void ChangeMonsterAnimationToHurt(struct entity* monster, enum direction_id direction); uint8_t GetIdleAnimationId(struct entity* entity); +void MakeMonsterIdleInDirection(struct entity* entity, enum direction_id direction); void DetermineAllMonsterShadow(void); enum shadow_type DetermineMonsterShadow(struct entity* monster); bool DisplayActions(struct entity* param_1); @@ -1018,8 +1019,8 @@ void AddHeldItemToBag(struct monster* monster); void RemoveEmptyItemsInBagWrapper(void); void GenerateItem(struct item* item, enum item_id item_id, uint16_t quantity, enum gen_item_stickiness sticky_type); -void HandleRegularProjectileThrow(struct entity* user, struct item* item, struct position* start_pos, - enum direction dir, +void HandleRegularProjectileThrow(struct entity* user, struct item* item, + struct position* start_pos, enum direction dir, struct projectile_throw_info* projectile_throw_info); void HandleCurvedProjectileThrow(struct entity* user, struct item* item, struct position* start_pos, struct position* target_pos, diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 59326b79..47751d8a 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -3154,8 +3154,6 @@ overlay29: r1: iq boost r2: bool suppress logs - name: MakeMonsterIdleInDirection2 - aliases: - - ChangeMonsterAnimationToIdle address: EU: 0x22FAD6C NA: 0x22FA360 @@ -3815,7 +3813,7 @@ overlay29: return: True if the monster can move through walls. - name: CannotStandOnTile address: - EU: + EU: - 0x2300384 - 0x23006C8 NA: 0x22FFC9C From a6e03f581c19f951a0cc0008b20288a0d7ac7e18 Mon Sep 17 00:00:00 2001 From: assidion Date: Tue, 14 Jul 2026 01:52:03 +0400 Subject: [PATCH 098/103] aaa --- headers/functions/overlay29.h | 3 ++- symbols/overlay29.yml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index e90cb709..35ea4a40 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -1121,7 +1121,8 @@ void DisplayMessage2(struct portrait_params* portrait, int message_id, bool wait bool YesNoMenu(undefined param_1, int string_id, int default_option, undefined param_4); void CloseMinimap(void); void DisplayMessageInternal(int message_id, bool wait_for_input, struct portrait_params* portrait, - undefined4 param_4, undefined4 param_5, undefined4 param_6); + undefined4 param_4, struct preprocessor_args* preprocessor_args, + undefined4 param_6); void PrintMissionCompleteString(int string_id, undefined4 param_2, undefined4 param_3, undefined4 param_4, undefined1 param_5); void InitSecretBazaarDialogueInfo(void); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 47751d8a..c0fa6639 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -10874,7 +10874,7 @@ overlay29: r1: True to wait for player input before closing the dialogue box, false to close it automatically once all the characters get printed. r2: pointer to the structure representing the desired state of the portrait r3: ? - stack[0]: ? + stack[0]: preprocessor args stack[1]: ? - name: PrintMissionCompleteString address: From bcca3c2553458346071f542acd64948cc5363b73 Mon Sep 17 00:00:00 2001 From: assidion Date: Tue, 14 Jul 2026 01:57:54 +0400 Subject: [PATCH 099/103] aaa --- headers/data/ram.h | 2 +- headers/types/dungeon_mode/dungeon_mode.h | 4 ++-- symbols/overlay29.yml | 8 +++++--- symbols/ram.yml | 6 ++++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/headers/data/ram.h b/headers/data/ram.h index 89e3d373..fb4e8241 100644 --- a/headers/data/ram.h +++ b/headers/data/ram.h @@ -95,7 +95,7 @@ extern int TRIPLE_KICK_SUCCESSIVE_HITS; extern int METRONOME_NEXT_INDEX; extern struct tile DEFAULT_TILE_COPY; extern struct floor_generation_status FLOOR_GENERATION_STATUS; -extern struct secret_bazaar_dialogue_info* SECRET_BAZAAR_DIALOGUE_INFO_PTR; +extern struct dungeon_dialogue_info* DUNGEON_DIALOGUE_INFO_PTR; extern struct stairs_menu* STAIRS_MENU_PTR; #endif diff --git a/headers/types/dungeon_mode/dungeon_mode.h b/headers/types/dungeon_mode/dungeon_mode.h index 65ccc08e..a133f3c2 100644 --- a/headers/types/dungeon_mode/dungeon_mode.h +++ b/headers/types/dungeon_mode/dungeon_mode.h @@ -2579,7 +2579,7 @@ struct dungeon_button_input { }; ASSERT_SIZE(struct dungeon_button_input, 14); -struct secret_bazaar_dialogue_info { +struct dungeon_dialogue_info { undefined field_0x0[16]; int8_t dialogue_window_id; // 0x10 int8_t menu_window_id; // 0x11 @@ -2601,7 +2601,7 @@ struct secret_bazaar_dialogue_info { struct simple_menu_id_item* menu_items; // 0x470 undefined4 field_0x474; }; -ASSERT_SIZE(struct secret_bazaar_dialogue_info, 1144); +ASSERT_SIZE(struct dungeon_dialogue_info, 1144); // Temporary struct used by TryRecruit. struct recruit_info { diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index c0fa6639..c1faaef0 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -2572,7 +2572,7 @@ overlay29: r1: shopkeeper entity pointer r2: portrait emotion r3: pointer to an array of simple_menu_id_items (null if there is no menu) - stack[0]: ? (changes something in secret_bazaar_dialogue_info if true. seems to only be true if there is a menu) + stack[0]: ? (changes something in dungeon_dialogue_info if true. seems to only be true if there is a menu) return: ? (bool) - name: GetLeaderAction address: @@ -10890,13 +10890,15 @@ overlay29: r2: ? r3: ? stack[0]: ? - - name: InitSecretBazaarDialogueInfo + - name: InitDungeonDialogueInfo + aliases: + - InitSecretBazaarDialogueInfo address: EU: 0x234E758 NA: 0x234DB58 JP: 0x234EDE4 description: |- - Initializes the struct pointed to by SECRET_BAZAAR_DIALOGUE_INFO_PTR. + Initializes the struct pointed to by DUNGEON_DIALOGUE_INFO_PTR. No params. - name: OpenMenu diff --git a/symbols/ram.yml b/symbols/ram.yml index 1be576fe..c8027557 100644 --- a/symbols/ram.yml +++ b/symbols/ram.yml @@ -997,14 +997,16 @@ ram: This data is populated as the dungeon floor is generated. type: struct floor_generation_status - - name: SECRET_BAZAAR_DIALOGUE_INFO_PTR + - name: DUNGEON_DIALOGUE_INFO_PTR + aliases: + - SECRET_BAZAAR_DIALOGUE_INFO_PTR address: EU: 0x2383400 NA: 0x2382800 JP: 0x2383A80 length: EU: 0x4 - description: "[Runtime] Pointer to the secret_bazaar_dialogue_info struct during dungeon mode." + description: "[Runtime] Pointer to the dungeon_dialogue_info struct during dungeon mode." - name: STAIRS_MENU_PTR address: EU: 0x238AEC4 From e1a576ba1f0db63ad22f5ffc8377130e88bdbc3a Mon Sep 17 00:00:00 2001 From: assidion Date: Tue, 14 Jul 2026 01:59:02 +0400 Subject: [PATCH 100/103] aaa --- headers/functions/overlay29.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 35ea4a40..395845a8 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -1125,7 +1125,7 @@ void DisplayMessageInternal(int message_id, bool wait_for_input, struct portrait undefined4 param_6); void PrintMissionCompleteString(int string_id, undefined4 param_2, undefined4 param_3, undefined4 param_4, undefined1 param_5); -void InitSecretBazaarDialogueInfo(void); +void InitDungeonDialogueInfo(void); void OpenMenu(undefined param_1, undefined param_2, bool open_bag); void StairsMenuAfterStep(struct entity* leader, bool leave_minimap_closed_after); int DungeonModeSetupAndShowNameKeyboard(char* str_keyboard_result, char* buffer, From a3a2e143b7b14db4b00b7b95ca8f82e91d8aa834 Mon Sep 17 00:00:00 2001 From: assidion Date: Tue, 14 Jul 2026 21:31:23 +0400 Subject: [PATCH 101/103] aaa --- headers/functions/overlay29.h | 3 +++ symbols/overlay29.yml | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 395845a8..56dd2388 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -230,6 +230,8 @@ void RevealTrapsNearby(struct entity* monster); bool RevealTrapAtPos(int x, int y); void CheckBossFightVictory(struct entity* fainted_entity, enum monster_behavior behavior, bool change_music); +void ChangeTeamAnimationsToIdle(void); +bool IsFloorOver2(void); bool ShouldRunMonsterAi(struct entity* monster); bool DebugRecruitingEnabled(void); void TryActivateIqBooster(void); @@ -242,6 +244,7 @@ bool TalkToSecretBazaarNpcWithYesNoMenu(int string_id, struct entity* shopkeeper struct simple_menu_id_item* menu_items); void MakeTargetFaceUserAndIdle(struct entity* target, struct entity* user); void SubtractMoneyCarriedWithSfx(int amount); +void MakeSecretBazaarNpcsIdleInDirection(enum direction_id dir); void ReopenMinimap(void); void GonePebbleGradualPaletteShift(struct rgba* palette, uint32_t param_2); bool TalkToSecretBazaarNpc(int string_id, struct entity* shopkeeper, enum portrait_emotion emotion, diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index c1faaef0..2f7c2cfe 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -2443,6 +2443,20 @@ overlay29: r0: fainted entity r1: behavior of fainted monster (the function will do nothing if it's not a fixed room enemy) r2: whether to change the music if the boss fight is over + - name: ChangeTeamAnimationsToIdle + address: + EU: 0x22F02EC + description: |- + Changes the animations of all team members to idle. + + No params. + - name: IsFloorOver2 + address: + EU: 0x22F037C + description: |- + Same as IsFloorOver, but with a redundant check for end_floor_flag. + + return: bool - name: ShouldRunMonsterAi address: EU: 0x22F03A0 @@ -2541,6 +2555,13 @@ overlay29: Subtracts the amount of money from the the player's current amount of money and plays the sound effect for buying an item. r0: money amount + - name: MakeSecretBazaarNpcsIdleInDirection + address: + EU: 0x22F119C + description: |- + Changes the animations of all secret bazaar shopkeepers to idle in the given direction and updates their target_pos field. + + r0: direction - name: ReopenMinimap address: EU: 0x22F11FC From 99f0dbfac27fcb59d84253681b7ffa38cf97686e Mon Sep 17 00:00:00 2001 From: assidion2 Date: Wed, 15 Jul 2026 11:26:30 +0400 Subject: [PATCH 102/103] Update symbols/overlay29.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay29.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 2f7c2cfe..f8a71ae0 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -4705,7 +4705,7 @@ overlay29: Does nothing if the provided entity is not a monster. r0: Entity pointer - r2: Direction to turn the monster in, or DIR_NONE to keep the current direction + r1: Direction to turn the monster in, or DIR_NONE to keep the current direction - name: ChangeMonsterAnimationToHurt address: EU: 0x23054B0 From 442cccda6028fc73d8a154db8dffd57afca677ec Mon Sep 17 00:00:00 2001 From: assidion2 Date: Wed, 15 Jul 2026 11:26:41 +0400 Subject: [PATCH 103/103] Update symbols/overlay29.yml Co-authored-by: UsernameFodder <93669634+UsernameFodder@users.noreply.github.com> --- symbols/overlay29.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index f8a71ae0..87f9fd7b 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -4715,7 +4715,7 @@ overlay29: Does nothing if the provided entity is not a monster. r0: Entity pointer - r2: Direction to turn the monster in, or DIR_NONE to keep the current direction + r1: Direction to turn the monster in, or DIR_NONE to keep the current direction - name: GetIdleAnimationId address: EU: 0x23054E0