diff --git a/data/data_8107224.s b/data/data_8107224.s index bdc0e4353..4feab5dc2 100644 --- a/data/data_8107224.s +++ b/data/data_8107224.s @@ -1,11 +1,5 @@ .section .rodata -@ ??? -.string "pksdir0\0" -@ ??? -.string "pksdir0\0" -@ ??? -.string "pksdir0\0" @ ??? .string "pksdir0\0" @ ??? diff --git a/include/code_808417C.h b/include/code_808417C.h deleted file mode 100644 index 12359877f..000000000 --- a/include/code_808417C.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef GUARD_808417C_H -#define GUARD_808417C_H - -#include "structs/dungeon_entity.h" - -s32 CalculateStatusTurns(Entity *target, const s16 *turnRange, bool8 factorCurerSkills); - -#endif // GUARD_808417C_H diff --git a/include/dungeon_8083AB0.h b/include/dungeon_8083AB0.h new file mode 100644 index 000000000..2d75d1ea4 --- /dev/null +++ b/include/dungeon_8083AB0.h @@ -0,0 +1,11 @@ +#ifndef GUARD_DUNGEON_8083AB0_H +#define GUARD_DUNGEON_8083AB0_H + +#include "structs/dungeon_entity.h" + +void sub_8083AB0(s16 param_0, Entity *target, Entity *entity); +bool8 sub_8083C24(void); +bool8 sub_8083C50(void); +bool8 sub_8083C88(u8 param_1); + +#endif // GUARD_DUNGEON_8083AB0_H diff --git a/include/dungeon_music.h b/include/dungeon_music.h index c6a983a9f..366f9e294 100644 --- a/include/dungeon_music.h +++ b/include/dungeon_music.h @@ -12,10 +12,6 @@ void PlayDungeonStartButtonSE(void); void PlaySoundEffect(u32 songIndex); void StopDungeonBGM(void); void StopSoundEffect(u32 songIndex); -void sub_8083AB0(s16 param_0, Entity *target, Entity *entity); -bool8 sub_8083C24(void); -bool8 sub_8083C50(void); -bool8 sub_8083C88(u8); void UpdateDungeonMusic(void); #endif // GUARD_DUNGEON_MUSIC_H diff --git a/include/dungeon_random.h b/include/dungeon_random.h index 5e3c5b6db..d0c798b96 100644 --- a/include/dungeon_random.h +++ b/include/dungeon_random.h @@ -1,6 +1,8 @@ #ifndef GUARD_DUNGEON_RANDOM_H #define GUARD_DUNGEON_RANDOM_H +#include "structs/dungeon_entity.h" + void sub_808408C(u32 param_1); u32 YetAnotherRandom24(void); void InitDungeonRNG(u32 value); @@ -9,4 +11,6 @@ s32 DungeonRandInt(s32 cap); s32 DungeonRandRange(s32 low, s32 high); bool8 DungeonRandOutcome(s32 percentChance); bool8 DungeonRandOutcome_2(s32 percentChance); +s32 CalculateStatusTurns(Entity *target, const s16 *turnRange, bool8 factorCurerSkills); + #endif diff --git a/ld_script.txt b/ld_script.txt index 4f0a3c645..fc6eb04ac 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -279,7 +279,6 @@ SECTIONS { src/dungeon_8083AB0.o(.text); src/dungeon_music.o(.text); src/dungeon_random.o(.text); - src/code_808417C.o(.text); asm/code_808417C.o(.text); src/code_8084778.o(.text); src/code_80848F0.o(.text); @@ -620,6 +619,9 @@ SECTIONS { src/trap.o(.rodata); data/pksdir_3.o(.rodata); src/dungeon_serializer.o(.rodata); + src/dungeon_range.o(.rodata); + src/dungeon_8083AB0.o(.rodata); + src/dungeon_music.o(.rodata); data/data_8107224.o(.rodata); src/pokemon.o(.rodata); data/data_81076E4.o(.rodata); diff --git a/src/code_8077274_1.c b/src/code_8077274_1.c index 94d2cd4b0..dd757f7da 100644 --- a/src/code_8077274_1.c +++ b/src/code_8077274_1.c @@ -6,7 +6,7 @@ #include "code_805D8C8.h" #include "code_806CD90.h" #include "code_8077274_1.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "constants/ability.h" #include "constants/item.h" #include "constants/status.h" diff --git a/src/code_808417C.c b/src/code_808417C.c deleted file mode 100644 index 78ce3099a..000000000 --- a/src/code_808417C.c +++ /dev/null @@ -1,26 +0,0 @@ -#include "global.h" -#include "constants/ability.h" -#include "constants/iq_skill.h" -#include "structs/dungeon_entity.h" -#include "dungeon_logic.h" -#include "dungeon_random.h" -#include "dungeon_util.h" - -s32 CalculateStatusTurns(Entity *target, s16 *turnRange, bool8 factorCurerSkills) -{ - s32 numTurns; - - numTurns = DungeonRandRange(turnRange[0],turnRange[1]); - if (EntityIsValid(target) && (GetEntityType(target) == ENTITY_MONSTER) && (factorCurerSkills)) { - if (IQSkillIsEnabled(target, IQ_SELF_CURER) && (numTurns != 0x7f)) { - numTurns /= 2; - } - if (AbilityIsActive(target, ABILITY_NATURAL_CURE) && (numTurns != 0x7f) && (4 < numTurns)) { - numTurns = 5; - } - } - if (numTurns < 1) { - numTurns = 1; - } - return numTurns; -} diff --git a/src/dungeon_8083AB0.c b/src/dungeon_8083AB0.c index ca5e0e2df..62a599c3f 100644 --- a/src/dungeon_8083AB0.c +++ b/src/dungeon_8083AB0.c @@ -1,4 +1,6 @@ #include "global.h" +#include "globaldata.h" +#include "dungeon_8083AB0.h" #include "dungeon.h" #include "dungeon_util.h" #include "text_util.h" diff --git a/src/dungeon_ai.c b/src/dungeon_ai.c index 7ef3cf44c..2dafc7994 100644 --- a/src/dungeon_ai.c +++ b/src/dungeon_ai.c @@ -5,7 +5,7 @@ #include "code_803E724.h" #include "dungeon_message.h" #include "code_8077274_1.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "constants/ability.h" #include "constants/direction.h" #include "constants/dungeon_action.h" diff --git a/src/dungeon_item_action.c b/src/dungeon_item_action.c index 6037e86d1..187f82990 100644 --- a/src/dungeon_item_action.c +++ b/src/dungeon_item_action.c @@ -5,7 +5,7 @@ #include "dungeon_message.h" #include "code_8077274_1.h" #include "code_807CD9C.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "constants/dungeon_action.h" #include "constants/dungeon.h" #include "constants/iq_skill.h" diff --git a/src/dungeon_menu_others.c b/src/dungeon_menu_others.c index 613cfc419..f094064dc 100644 --- a/src/dungeon_menu_others.c +++ b/src/dungeon_menu_others.c @@ -6,6 +6,7 @@ #include "code_8044CC8.h" #include "code_8097DD0.h" #include "dungeon.h" +#include "dungeon_8083AB0.h" #include "dungeon_action.h" #include "dungeon_leader.h" #include "dungeon_main.h" diff --git a/src/dungeon_misc.c b/src/dungeon_misc.c index f1a141221..a21b744cb 100644 --- a/src/dungeon_misc.c +++ b/src/dungeon_misc.c @@ -42,6 +42,7 @@ #include "def_filearchives.h" #include "code_803D110.h" #include "dungeon_strings.h" +#include "dungeon_8083AB0.h" static void EnsureCastformLoaded(void); static void EnsureDeoxysLoaded(void); diff --git a/src/dungeon_move.c b/src/dungeon_move.c index b59185341..35179aafe 100644 --- a/src/dungeon_move.c +++ b/src/dungeon_move.c @@ -18,7 +18,7 @@ #include "code_806CD90.h" #include "code_8077274_1.h" #include "code_807CD9C.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "dungeon_logic.h" #include "dungeon_config.h" #include "run_dungeon.h" diff --git a/src/dungeon_move_util.c b/src/dungeon_move_util.c index b9f104eb5..3404c91d1 100644 --- a/src/dungeon_move_util.c +++ b/src/dungeon_move_util.c @@ -17,7 +17,7 @@ #include "code_806CD90.h" #include "code_8077274_1.h" #include "code_807CD9C.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "dungeon_logic.h" #include "dungeon_config.h" #include "run_dungeon.h" diff --git a/src/dungeon_music.c b/src/dungeon_music.c index 9c6e4e64a..01e441e96 100644 --- a/src/dungeon_music.c +++ b/src/dungeon_music.c @@ -1,4 +1,5 @@ #include "global.h" +#include "globaldata.h" #include "constants/bg_music.h" #include "structs/menu.h" #include "code_80118A4.h" diff --git a/src/dungeon_random.c b/src/dungeon_random.c index 058e72fc8..af3ca859b 100644 --- a/src/dungeon_random.c +++ b/src/dungeon_random.c @@ -1,5 +1,11 @@ #include "global.h" #include "dungeon_random.h" +#include "constants/ability.h" +#include "constants/iq_skill.h" +#include "structs/dungeon_entity.h" +#include "dungeon_logic.h" +#include "dungeon_random.h" +#include "dungeon_util.h" EWRAM_INIT u32 gDungeonRngState = {1}; EWRAM_INIT u32 gUnknown_203B458 = {1}; @@ -75,3 +81,21 @@ bool8 DungeonRandOutcome_2(s32 percentChance) return FALSE; } +s32 CalculateStatusTurns(Entity *target, const s16 *turnRange, bool8 factorCurerSkills) +{ + s32 numTurns; + + numTurns = DungeonRandRange(turnRange[0],turnRange[1]); + if (EntityIsValid(target) && (GetEntityType(target) == ENTITY_MONSTER) && (factorCurerSkills)) { + if (IQSkillIsEnabled(target, IQ_SELF_CURER) && (numTurns != 0x7f)) { + numTurns /= 2; + } + if (AbilityIsActive(target, ABILITY_NATURAL_CURE) && (numTurns != 0x7f) && (4 < numTurns)) { + numTurns = 5; + } + } + if (numTurns < 1) { + numTurns = 1; + } + return numTurns; +} diff --git a/src/dungeon_range.c b/src/dungeon_range.c index 37a54c71e..c08efcd31 100644 --- a/src/dungeon_range.c +++ b/src/dungeon_range.c @@ -1,4 +1,5 @@ #include "global.h" +#include "globaldata.h" #include "dungeon_range.h" #include "dungeon_leader.h" #include "dungeon_util.h" diff --git a/src/move_orb_actions_1.c b/src/move_orb_actions_1.c index e27fac8ed..73ca864d6 100644 --- a/src/move_orb_actions_1.c +++ b/src/move_orb_actions_1.c @@ -6,7 +6,7 @@ #include "code_806CD90.h" #include "code_8077274_1.h" #include "code_807CD9C.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "constants/ability.h" #include "constants/status.h" #include "constants/targeting.h" diff --git a/src/move_orb_actions_2.c b/src/move_orb_actions_2.c index a4136ffd0..cf1c4e789 100644 --- a/src/move_orb_actions_2.c +++ b/src/move_orb_actions_2.c @@ -6,7 +6,7 @@ #include "code_806CD90.h" #include "code_8077274_1.h" #include "code_807CD9C.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "constants/ability.h" #include "constants/status.h" #include "constants/targeting.h" diff --git a/src/move_orb_actions_3.c b/src/move_orb_actions_3.c index c70bfbb75..858cea5eb 100644 --- a/src/move_orb_actions_3.c +++ b/src/move_orb_actions_3.c @@ -5,7 +5,7 @@ #include "code_806CD90.h" #include "code_8077274_1.h" #include "code_807CD9C.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "constants/ability.h" #include "constants/move_id.h" #include "constants/status.h" diff --git a/src/move_orb_actions_4.c b/src/move_orb_actions_4.c index 8c15430f5..169f6360c 100644 --- a/src/move_orb_actions_4.c +++ b/src/move_orb_actions_4.c @@ -7,7 +7,7 @@ #include "code_806CD90.h" #include "code_8077274_1.h" #include "code_807CD9C.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "constants/ability.h" #include "constants/move_id.h" #include "constants/status.h" diff --git a/src/move_orb_effects_1.c b/src/move_orb_effects_1.c index 6177cc583..e0499a1da 100644 --- a/src/move_orb_effects_1.c +++ b/src/move_orb_effects_1.c @@ -4,7 +4,7 @@ #include "dungeon_message.h" #include "code_806CD90.h" #include "code_8077274_1.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "constants/ability.h" #include "constants/direction.h" #include "constants/dungeon_action.h" diff --git a/src/move_orb_effects_2.c b/src/move_orb_effects_2.c index 0e2d836e0..e2f17a989 100644 --- a/src/move_orb_effects_2.c +++ b/src/move_orb_effects_2.c @@ -4,7 +4,7 @@ #include "code_803E46C.h" #include "code_806CD90.h" #include "code_8077274_1.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "constants/ability.h" #include "constants/status.h" #include "constants/type.h" diff --git a/src/move_orb_effects_3.c b/src/move_orb_effects_3.c index 95f0be70c..1ffc50975 100644 --- a/src/move_orb_effects_3.c +++ b/src/move_orb_effects_3.c @@ -6,7 +6,7 @@ #include "code_805D8C8.h" #include "code_806CD90.h" #include "code_8077274_1.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "constants/ability.h" #include "constants/item.h" #include "constants/status.h" diff --git a/src/move_orb_effects_4.c b/src/move_orb_effects_4.c index 41ac68895..09b49bd03 100644 --- a/src/move_orb_effects_4.c +++ b/src/move_orb_effects_4.c @@ -6,7 +6,7 @@ #include "code_805D8C8.h" #include "code_806CD90.h" #include "code_8077274_1.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "constants/ability.h" #include "constants/item.h" #include "constants/status.h" diff --git a/src/move_orb_effects_5.c b/src/move_orb_effects_5.c index 6643ff8e8..223f4d47d 100644 --- a/src/move_orb_effects_5.c +++ b/src/move_orb_effects_5.c @@ -6,7 +6,7 @@ #include "code_805D8C8.h" #include "code_806CD90.h" #include "code_8077274_1.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "constants/ability.h" #include "constants/item.h" #include "constants/status.h" diff --git a/src/run_dungeon.c b/src/run_dungeon.c index e8ae65257..7deda68b4 100644 --- a/src/run_dungeon.c +++ b/src/run_dungeon.c @@ -22,6 +22,7 @@ #include "code_8094F88.h" #include "code_8099360.h" #include "cpu.h" +#include "dungeon_8083AB0.h" #include "dungeon.h" #include "dungeon_ai.h" #include "dungeon_config.h" diff --git a/src/trap.c b/src/trap.c index 5da4a52ba..6d050f14a 100644 --- a/src/trap.c +++ b/src/trap.c @@ -7,7 +7,7 @@ #include "dungeon_message.h" #include "code_8077274_1.h" #include "code_807CD9C.h" -#include "code_808417C.h" +#include "dungeon_random.h" #include "code_806CD90.h" #include "constants/trap.h" #include "constants/type.h"