diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2021-04-19 21:55:40 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-19 23:55:40 -0500 |
commit | f65dee5a143bd543c74c010d7252eb76893ee243 (patch) | |
tree | d343e826c63f8b501d37873c3c7bc1f010819deb /src/code_8057824_1.c | |
parent | d316d1e359c7672277a9cf644acd4e40170f5968 (diff) |
Wonder mail and some boss dialogues (#36)
* more wonder mail and main menu work
* Lots of things.. doc'ing, decomping, and other things
* continue decomping boss scenes
* up to Suicune
* up to Mewtwo dialogue
* up to Raquaza
* fix spelling error on Rayquaza and decomp a few more
* up to groudon
* divide > shift
Diffstat (limited to 'src/code_8057824_1.c')
-rw-r--r-- | src/code_8057824_1.c | 2661 |
1 files changed, 2661 insertions, 0 deletions
diff --git a/src/code_8057824_1.c b/src/code_8057824_1.c new file mode 100644 index 0000000..c11a8c9 --- /dev/null +++ b/src/code_8057824_1.c @@ -0,0 +1,2661 @@ +#include "global.h" +#include "gUnknown_203B418.h" +#include "code_8041D5C.h" +#include "constants/species.h" + +extern struct unkStruct_203B418 *gUnknown_203B418; + +extern u32 gUnknown_202EDC8; +extern u8 gUnknown_202E038[0x50]; +extern u8 gAvailablePokemonNames[0x58]; + +extern u32 gUnknown_8105244; +extern u32 gUnknown_810517C; +extern u32 gUnknown_81050B4; +extern u32 gUnknown_81051D0; +extern u32 gUnknown_810510C; +extern u32 gUnknown_8105040; +extern u32 gUnknown_810554C; +extern u32 gUnknown_8105558; +extern u32 gUnknown_81055F4; +extern u32 gUnknown_8105028; +extern u32 gUnknown_8104FD4; +extern u32 gUnknown_8104930; +extern u32 gUnknown_8104980; +extern u32 gUnknown_8104998; +extern u32 gUnknown_8105034; +extern u32 gUnknown_8105438; +extern u32 gUnknown_81054A0; +extern u32 gUnknown_81054E4; +extern u32 gUnknown_810550C; +extern u32 gUnknown_8104F64; +extern u32 gUnknown_8104EFC; +extern u32 gUnknown_8104F30; +extern u32 gUnknown_8104E60; +extern u32 gUnknown_8104CEC; +extern u32 gUnknown_8104D60; +extern u32 gUnknown_8104DDC; +extern u32 gUnknown_8104E0C; +extern u32 gUnknown_8104E54; +extern u32 gUnknown_8104AD4; +extern u32 gUnknown_8104BEC; +extern u32 gUnknown_8104C10; +extern u32 gUnknown_8104C54; +extern u32 gUnknown_8104CB4; +extern u32 gUnknown_8104CE0; +extern u32 gUnknown_8104AC8; +extern u32 gUnknown_81049D4; +extern u32 gUnknown_8104A80; +extern u32 gUnknown_8104A9C; +extern u32 gUnknown_8104784; +extern u32 gUnknown_8104790; +extern u32 gUnknown_81047B0; +extern u32 gUnknown_810484C; +extern u32 gUnknown_8104888; +extern u32 gUnknown_81048C8; +extern u32 gUnknown_8104914; +extern u32 gUnknown_810476C; +extern u32 gUnknown_8104778; +extern u32 gUnknown_81046CC; +extern u32 gUnknown_8104744; +extern u32 gUnknown_81045F8; +extern u32 gUnknown_8104674; +extern u32 gUnknown_81046A0; +extern u32 gUnknown_8104450; +extern u32 gUnknown_81044B4; +extern u32 gUnknown_8104510; +extern u32 gUnknown_810453C; +extern u32 gUnknown_8104570; +extern u32 gUnknown_81045B0; +extern u32 gUnknown_81043DC; +extern u32 gUnknown_8104310; +extern u32 gUnknown_810439C; +extern u32 gUnknown_81043C0; +extern u32 gUnknown_8104240; +extern u32 gUnknown_81042AC; +extern u32 gUnknown_81042B8; +extern u32 gUnknown_8104FC8; +extern u32 gUnknown_8104150; +extern u32 gUnknown_81041AC; +extern u32 gUnknown_81041F8; +extern u32 gUnknown_8104144; +extern u32 gUnknown_8104114; +extern u32 gUnknown_81040CC; +extern u32 gUnknown_8104050; +extern u32 gUnknown_8104044; +extern u32 gUnknown_8104008; +extern u32 gUnknown_8103EA4; +extern u32 gUnknown_8103F0C; +extern u32 gUnknown_8103F4C; +extern u32 gUnknown_8103FCC; +extern u32 gUnknown_8103E34; + +extern struct unkDungeon_8041D5C *sub_8085480(void); +extern struct unkDungeon_8041D5C *sub_8085680(u32); +extern void sub_808BBA8(struct unkDungeon_8041D5C * ); +extern void CopySpeciesNametoBuffer(char *r0, u32 r1); +extern void sub_80855E4(void *); +extern void sub_8041888(u32); +extern void sub_80861B8(struct unkDungeon_8041D5C *, u32, u32); +extern void sub_8083ED8(u32); +extern void sub_803E708(u32, u32); +extern void sub_8052910(u32 *r0); +extern void sub_8083E88(u32); +extern void sub_808BC20(struct unkDungeon_8041D5C *); + +extern void sub_80862BC(struct unkDungeon_8041D5C *); +extern void sub_8086448(); +extern void sub_808696C(); +extern u32 sub_80861F8(u32, struct unkDungeon_8041D5C *, u32); +extern void sub_8086A70(struct unkDungeon_8041D5C *, u32, u32); +extern void sub_80858AC(u32 *, u32); + +extern void sub_8097FA8(u32); +extern void JirachiWish(); +extern u8 sub_80860A8(u32); +extern void sub_8040A84(); +extern void sub_8086A3C(struct unkDungeon_8041D5C *); +extern u8 HasRecruitedMon(u32); +extern void sub_80854D4(); +extern void sub_8085930(u32); +extern void sub_8068FE0(struct unkDungeon_8041D5C *, u32, u32); +extern void sub_8085918(struct unkDungeon_8041D5C *, u32); +extern void sub_8049ED4(); +extern void sub_8085860(s16 r0, u32 r1); +extern void sub_806CE68(struct unkDungeon_8041D5C *, u32); + +extern void sub_8052D44(u8 *, struct unkDungeon_8041D5C *, struct unkDungeon_8041D5C *); +extern void sub_8097FD0(u32); +extern void sub_8045B94(u8 *, struct unkDungeon_8041D5C *, u32); +extern struct unkDungeon_8041D5C *sub_8083600(); +extern void sub_80421C0(struct unkDungeon_8041D5C *, u32); +extern void sub_8046D20(); +extern void sub_808B1CC(u8); +extern void sub_8090A8C(u8 *, u32, u32); +extern void sub_80464C8(struct unkDungeon_8041D5C *, u32, u8 *); +extern void sub_8098044(u32); +extern void sub_8083E38(u32); +extern void sub_8085C54(u32, u32, u32, u32, u32); +extern void sub_803E46C(u32); +extern void sub_8085EB0(); +extern void sub_80866C4(u32 *); +extern void sub_808692C(); + +extern void sub_8083E58(u32); +extern void sub_80868F4(); +extern void sub_8086910(); +extern u32 sub_8085EC8(u32, u32, u32, u32 *, u32); +extern void sub_808680C(); +extern void sub_808682C(); +extern void sub_8086854(); +extern void sub_80867F4(); +extern void sub_8086838(u32, u32, u32); +extern void sub_80426C8(u32, u32); +extern void sub_807EAA0(u32, u32); + +extern void sub_808563C(void *); +extern void sub_808BCE4(void); +extern void sub_808BBB8(struct unkDungeon_8041D5C *param_1); +extern u8 sub_8098100(u32); +extern void sub_8086794(); + +void EnteiScreenFlash(void); +void RaikouScreenFlash(void); +void sub_808A528(struct unkDungeon_8041D5C * param_1); +void SuicuneScreenFlash(); +void sub_808A904(struct unkDungeon_8041D5C * param_1); +void HoOhScreenFlash(void); +void LatiosScreenFlash(void); +void sub_808B2B0(struct unkDungeon_8041D5C *r0); +void sub_808B2C4(struct unkDungeon_8041D5C *r0); +void sub_808B2D4(struct unkDungeon_8041D5C *r0); +void sub_808B2E4(struct unkDungeon_8041D5C *r0); +void sub_808B50C(void); +void sub_8089B64(struct unkDungeon_8041D5C *param_1); +void MewtwoScreenFlash(void); +void sub_80898F8(struct unkDungeon_8041D5C *r0); +void sub_8089908(struct unkDungeon_8041D5C *r0); +void sub_8089620(struct unkDungeon_8041D5C *param_1); +void RayquazaScreenFlash(void); +void sub_80891F0(void); +void sub_8089294(void); +void sub_80891B0(); +void sub_8089224(); +void sub_80891D0(); +void sub_808919C(); +void sub_8088D30(void); + +extern void sub_8083F14(); +extern u8 sub_80450E0(struct unkDungeon_8041D5C *); +extern u8 sub_8086AE4(u32); + +extern u32 gUnknown_8103D8C; +extern u32 gUnknown_8103D98; +extern u32 gUnknown_8103DD8; +extern u32 gUnknown_8103E28; +extern u32 gUnknown_8103BD8; +extern u32 gUnknown_8103C00; +extern u32 gUnknown_8103C3C; +extern u32 gUnknown_8103C74; +extern u32 gUnknown_8103CC4; +extern u32 gUnknown_8103D0C; +extern u32 gUnknown_8103D50; +extern u32 gUnknown_8103B58; +extern u32 gUnknown_8103904; +extern u32 gUnknown_8103938; +extern u32 gUnknown_8103AA4; +extern u32 gUnknown_8103AE4; +extern u32 gUnknown_8103B30; +extern u32 gUnknown_8103690; +extern u32 gUnknown_8103844; +extern u32 gUnknown_8103874; +extern u32 gUnknown_81038A8; +extern u32 gUnknown_81038F8; +extern u32 gUnknown_8103500; +extern u32 gUnknown_810352C; +extern u32 gUnknown_8103578; +extern u32 gUnknown_81035D4; +extern u32 gUnknown_8103618; +extern u32 gUnknown_810367C; +extern u32 gUnknown_8103690; +extern u32 gUnknown_81036C8; +extern u32 gUnknown_81037A0; +extern u32 gUnknown_81037D4; +extern u32 gUnknown_8103820; +extern s16 gUnknown_80F57CA; +extern u32 gUnknown_8102C30; +extern u32 gUnknown_8102C54; +extern u32 gUnknown_8102C98; +extern u32 gUnknown_8102CB0; +extern u32 gUnknown_8102CF8; +extern u32 gUnknown_8102D34; +extern u32 gUnknown_8102D4C; +extern u32 gUnknown_8102D7C; +extern u32 gUnknown_8102DFC; +extern u32 gUnknown_8102E2C; +extern u32 gUnknown_8102E54; +extern u32 gUnknown_8102BE4; +extern u32 gUnknown_8102BC4; +extern u32 gUnknown_8102B54; +extern u32 gUnknown_8102B1C; +extern u32 gUnknown_8103488; +extern u32 gUnknown_81033A0; +extern u32 gUnknown_81033AC; +extern u32 gUnknown_810343C; +extern u32 gUnknown_810347C; +extern u32 gUnknown_8103188; +extern u32 gUnknown_8103228; +extern u32 gUnknown_8103310; +extern u32 gUnknown_8103340; +extern u32 gUnknown_8102E70; +extern u32 gUnknown_8102EBC; +extern u32 gUnknown_8102EE0; +extern u32 gUnknown_8102EF8; +extern u32 gUnknown_8102F30; +extern u32 gUnknown_8102F64; +extern u32 gUnknown_8102F84; +extern u32 gUnknown_8102FAC; +extern u32 gUnknown_8102FC4; +extern u32 gUnknown_8102FD8; +extern u32 gUnknown_8103054; +extern u32 gUnknown_81030D8; +extern u32 gUnknown_8103110; +extern u32 gUnknown_8103140; +extern s16 gUnknown_80F57D2; + +extern void sub_8072008(struct unkDungeon_8041D5C *, struct unkDungeon_8041D5C *, s16, u32, u32); +extern struct unkDungeon_8041D5C *sub_808548C(); +extern void sub_80856E0(struct unkDungeon_8041D5C *, u32); +extern void sub_80869E4(struct unkDungeon_8041D5C *, u32, u32, u32); +extern void sub_804539C(struct unkDungeon_8041D5C *, u32, u32); +extern void sub_806CDD4(struct unkDungeon_8041D5C *, u32, u32); +extern void sub_8085374(); + +extern void sub_8086848(u32 ,u32); +extern void sub_80856C8(struct unkDungeon_8041D5C *, s32, s32); +extern void sub_80861D4(struct unkDungeon_8041D5C *, u32, u32); +void sub_8088C08(struct unkDungeon_8041D5C * param_1); +void sub_8088CA0(void); +extern void sub_8086738(); +extern void sub_8086A54(struct unkDungeon_8041D5C *); +extern void sub_8086764(); + +extern u32 sub_803F994(); +extern s32 sub_803F9B0(); +extern void sub_803F878(u32,s32); + +void sub_80886C4(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + struct unkDungeon_8041D5C * uVar3; + + u32 uVar4; + s32 iVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(10); + uVar3 = sub_8085680(0xe); + sub_8083E38(0x3e5); + sub_80867F4(); + sub_8085374(); + sub_80854D4(); + sub_8085930(4); + sub_8068FE0(uVar2,0x21c,0); + sub_8085918(uVar3,0); + sub_8086A3C(uVar3); + sub_8085860(iVar1->unk4,iVar1->unk6); + uVar4 = sub_803F994(); + iVar2 = sub_803F9B0(); + sub_803F878(uVar4,iVar2 + -0x1000); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_GROUDON); + CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_ALAKAZAM); +} + +void sub_808875C(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + struct unkDungeon_8041D5C * uVar4; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(10); + uVar4 = sub_8085680(0xe); + sub_80867F4(); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + sub_8068FE0(uVar3,0x21c,0); + if (sub_8086AE4(0x19b) != '\0') { + sub_8068FE0(uVar4,0x21c,0); + } + else { + sub_8072008(uVar4,uVar4,gUnknown_80F57D2,0,0); + sub_8085918(uVar4,0); + sub_80861D4(uVar4,0xf,0); + } + sub_8085860(iVar2->unk4,iVar2->unk6 - 3); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_GROUDON); + CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_ALAKAZAM); +} + +void sub_8088818(char param_1, s32 param_2) +{ + if ((((param_2 * 0x1000000) + 0xEE000000U) >> 0x18 < 3) && (param_1 == 0xE)) { + sub_8097FA8(0xC); + gUnknown_203B418->unk2 = 1; + } +} + +void sub_8088848(void) +{ + sub_8086854(); +} + +void GroudonPreFightDialogue(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + struct unkDungeon_8041D5C * uVar3; + struct unkDungeon_8041D5C * uVar4; + + iVar1 = sub_8085480(); + uVar2 = sub_808548C(); + uVar3 = sub_8085680(10); + uVar4 = sub_8085680(0xe); + sub_8086448(); + sub_8052910(&gUnknown_8102E70); + sub_803E708(10,0x46); + sub_803E708(0x3c,0x46); + sub_8052910(&gUnknown_8102EBC); + sub_803E708(10,0x46); + sub_8086838(1,1,1); + sub_808680C(); + sub_803E708(0x3c,0x46); + sub_808682C(); + sub_803E708(0x1e,0x46); + sub_8052910(&gUnknown_8102EE0); + sub_803E708(10,0x46); + sub_8086838(1,1,1); + sub_808680C(); + sub_803E708(0x3c,0x46); + sub_8052910(&gUnknown_8102EF8); + sub_803E708(10,0x46); + sub_8088CA0(); + sub_8052910(&gUnknown_8102F30); + sub_803E708(10,0x46); + sub_8052910(&gUnknown_8102F64); + sub_803E708(10,0x46); + sub_8083E38(0x1d5); + sub_808696C(uVar2); + sub_8052910(&gUnknown_8102F84); + sub_803E708(10,0x46); + sub_808682C(); + sub_803E708(0x3c,0x46); + sub_80861B8(uVar3,6,4); + sub_8083E38(0x205); + sub_8086738(); + sub_8068FE0(uVar3,0x21c,0); + sub_8052910(&gUnknown_8102FAC); + sub_803E708(10,0x46); + sub_8052910(&gUnknown_8102FC4); + sub_803E708(10,0x46); + sub_8085930(4); + sub_8086764(); + sub_803E708(0x28,0x46); + sub_8083E38(0x1d5); + sub_808696C(uVar2); + sub_8052910(&gUnknown_8102FD8); + sub_803E708(10,0x46); + sub_8086838(1,1,1); + sub_808680C(); + sub_803E708(0x3c,0x46); + sub_8052910(&gUnknown_8103054); + sub_803E708(10,0x46); + sub_8083F14(); + sub_8088D30(); + sub_803E708(0x1e,0x46); + sub_8052910(&gUnknown_81030D8); + sub_803E708(10,0x46); + sub_8052910(&gUnknown_8103110); + sub_803E708(10,0x46); + sub_803E708(0x1e,0x46); + sub_808682C(); + sub_803E708(0x3c,0x46); + sub_8083E38(0x1fa); + sub_8086738(); + sub_8085930(4); + sub_8052910(&gUnknown_8103140); + sub_803E708(10,0x46); + sub_8086A54(uVar4); + sub_8085930(4); + sub_8086764(); + sub_8086A70(uVar4,500,0xb); + sub_80858AC(&iVar1->unkC,0x10); +} + +void GroudonReFightDialogue(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0xe); + sub_8086838(1,1,1); + sub_808680C(); + sub_803E708(0x3c,0x46); + sub_8052910(&gUnknown_8103188); + sub_803E708(10,0x46); + sub_8088CA0(); + sub_803E708(0x1e,0x46); + sub_8052910(&gUnknown_8103228); + sub_803E708(10,0x46); + sub_8052910(&gUnknown_8103310); + sub_803E708(10,0x46); + sub_808682C(); + sub_803E708(0x3c,0x46); + sub_8083F14(); + sub_8083E38(0x1fa); + sub_8086738(); + sub_8052910(&gUnknown_8103340); + sub_803E708(10,0x46); + sub_8086A54(uVar2); + sub_8085930(4); + sub_8086764(); + sub_8086A70(uVar2,500,0xb); + sub_80858AC(&iVar1->unkC,0x10); +} + +void GroudonPostStoryPreFightDialogue(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0xe); + sub_8086448(); + if (sub_8086AE4(SPECIES_GROUDON)) { + sub_80866C4(&gUnknown_8103488); + } + else{ + sub_8052910(&gUnknown_81033A0); + sub_803E708(10,0x46); + sub_8088C08(uVar3); + sub_8088C08(uVar3); + sub_8052910(&gUnknown_81033AC); + sub_8083E38(0x1f6); + sub_8088CA0(); + sub_8052910(&gUnknown_810343C); + sub_8083E38(0x1f6); + sub_8088CA0(); + sub_8052910(&gUnknown_810347C); + sub_803E708(10,0x46); + sub_8086A70(uVar3,500,0xb); + sub_80858AC(&iVar2->unkC,0x10); + } +} + +void sub_8088C08(struct unkDungeon_8041D5C * param_1) +{ + int iVar1; + + sub_8086848(0x18,0x10); + sub_806CDD4(param_1,0,0); + for(iVar1 = 0; iVar1 < 0x2C; iVar1++) + { + if ((iVar1 == 10) || (iVar1 == 0x20)) { + sub_8083E38(0x1f9); + sub_8086838(0,1,0); + sub_808680C(); + } + if ((iVar1 - 10U < 0xc) || (iVar1 > 0x1f)) { + sub_804539C(param_1,0,0x100); + } + sub_803E46C(0x46); + } + sub_80856C8(param_1,param_1->unk4,param_1->unk6 + 1); + sub_80861D4(param_1,0xf,0); + sub_803E708(10,0x46); + sub_808682C(); + sub_8085930(4); + sub_803E708(0x22,0x46); +} + +void sub_8088CA0(void) +{ + s32 iVar1; + + for(iVar1 = 250; iVar1 > 0x95; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1 / 2,iVar1 / 2,1,1); + sub_803E46C(0x46); + } + sub_803E708(10,0x46); + + for(iVar1 = 250; iVar1 > 199; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1 / 2,0,1,1); + sub_803E46C(0x46); + } + sub_803E708(10,0x46); + + for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1 / 2,iVar1 / 2,1,1); + sub_803E46C(0x46); + } + sub_803E708(10,0x46); + sub_8085EB0(); +} + +void sub_8088D30(void) +{ + s32 iVar1; + + for(iVar1 = 250; iVar1 > 0x95; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1 / 2,iVar1 / 2,1,1); + sub_803E46C(0x46); + } + sub_803E708(10,0x46); + + for(iVar1 = 250; iVar1 > 199; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1 / 2,0,1,1); + sub_803E46C(0x46); + } + sub_803E708(10,0x46); + + for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1 / 2,iVar1 / 2,1,1); + sub_803E46C(0x46); + } + sub_803E708(10,0x46); + sub_8085EB0(); +} + + +void sub_8088DC0(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0xb); + uVar3 = sub_8085680(0xc); + sub_80867F4(); + sub_8086838(0,1,0); + sub_8085374(); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + sub_8086A3C(uVar2); + sub_806CDD4(uVar2,0xe,0); + sub_8086A3C(uVar3); + sub_806CDD4(uVar3,0xe,0); + sub_8085860(iVar1->unk4,iVar1->unk6 - 3); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_GROUDON); + CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_ALAKAZAM); +} + +void sub_8088E5C(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0xb); + uVar3 = sub_8085680(0xc); + sub_80867F4(); + sub_8086838(0,1,0); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + sub_8068FE0(uVar2,0x21c,0); + sub_8068FE0(uVar3,0x21c,0); + sub_8085860(iVar1->unk4,iVar1->unk6 + -3); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_GROUDON); + CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_ALAKAZAM); +} + +void sub_8088EE8(void) +{ + sub_8086854(); +} + + +void MagmaCavernMidDialogue(void) +{ + struct unkDungeon_8041D5C * uVar1; + struct unkDungeon_8041D5C * uVar2; + struct unkDungeon_8041D5C * iVar3; + struct unkDungeon_8041D5C * iVar4; + u8 auStack36 [4]; + s32 local_20[2]; + + uVar1 = sub_8085480(); + uVar2 = sub_808548C(); + iVar3 = sub_8085680(0xb); + iVar4 = sub_8085680(0xc); + sub_8052D44(auStack36,uVar1,uVar2); + sub_8086448(); + sub_808696C(uVar2); + // Let's see.. + // I wonder where we are? + sub_8052910(&gUnknown_8102B1C); + sub_803E708(10,0x46); + sub_80869E4(uVar2,4,1,2); + sub_80869E4(uVar1,4,2,6); + // I know we've come pretty + // far... + // + // I'm certain we've come quite + // far already.. + sub_8052910(&gUnknown_8102B54); + sub_803E708(10,0x46); + sub_8083F14(); + sub_80855E4(sub_80868F4); + sub_808680C(); + sub_8083E38(0x1c5); + sub_803E708(0x28,0x46); + // Waaah! + // Qu-quake! + sub_8052910(&gUnknown_8102BC4); + sub_803E708(0x78,0x46); + sub_8083E58(0x1c5); + sub_808682C(); + sub_80855E4(sub_8086910); + sub_803E708(0x14,0x46); + sub_8085930(4); + sub_803E708(10,0x46); + // Whew! + // It settled down. + // + // Whew + // It's over. + sub_8052910(&gUnknown_8102BE4); + sub_803E708(10,0x46); + sub_8083E38(0x1d5); + sub_808696C(uVar2); + sub_8083E38(0x1c7); + sub_80856E0(uVar2,4); + // Hey! $m0! + // Over there! + sub_8052910(&gUnknown_8102C30); + iVar3->unk70->unk15E = 0; + iVar4->unk70->unk15E =0; + local_20[0] = (iVar3->unkC + iVar4->unkC) / 2; + local_20[1] = (iVar3->unk10 + iVar4->unk10) / 2 + 0x800; + sub_80858AC(local_20,0x20); + sub_803E708(0x3c,0x46); + sub_80891F0(); + // Hey! + // Are you OK?! + // + // Hey! + // Snap out of it! + sub_8052910(&gUnknown_8102C54); + sub_803E708(10,0x46); + // Urrrrgh... + sub_8052910(&gUnknown_8102C98); + sub_803E708(10,0x46); + sub_80869E4(uVar1,4,2,5); + // What happened to you? + // + // What happened here? + sub_8052910(&gUnknown_8102CB0); + sub_803E708(10,0x46); + // We challenged.. + // $m2... + // And wiped out.. + sub_8052910(&gUnknown_8102CF8); + sub_803E708(10,0x46); + sub_8052910(&gUnknown_8102D34); + sub_803E708(10,0x46); + sub_80869E4(uVar1,4,1,3); + sub_80869E4(uVar2,4,1,3); + // Grrgh.. + // We... It crushed us + sub_8052910(&gUnknown_8102D4C); + sub_803E708(10,0x46); + sub_8083E38(0x1d5); + sub_808696C(uVar2); + // That's right... + // What happened to $m3? + // Where is $m3? + // + // Wait... + // What about $m3? + // Where did $m3 go? + sub_8052910(&gUnknown_8102D7C); + sub_803E708(0x1e,0x46); + // $m3 is... + // Still battling $m2... + sub_8052910(&gUnknown_8102DFC); + sub_803E708(10,0x46); + sub_80869E4(uVar2,4,1,2); + sub_80869E4(uVar1,4,2,6); + // $m0! + // We've got to hurry! + sub_8052910(&gUnknown_8102E2C); + sub_8089294(); + // Be careful! + sub_8052910(&gUnknown_8102E54); + sub_803E708(10,0x46); + gUnknown_203B418->unk2 = 1; +} + +void sub_8089168(void) +{ + struct unkDungeon_8041D5C *iVar1; + + iVar1 = sub_8085480(); + sub_8086448(); + sub_803E708(10,0x46); + sub_808696C(iVar1); + sub_803E708(10,0x46); + sub_80858AC(&iVar1->unkC,0x10); +} + +void sub_808919C(struct unkDungeon_8041D5C *r0) +{ + sub_804539C(r0, 0, 0xfffffe00); +} + +void sub_80891B0(struct unkDungeon_8041D5C *r0) +{ + sub_806CDD4(r0, 0, 4); + r0->unk70->unk15F = 1; +} + + +void sub_80891D0(struct unkDungeon_8041D5C *r0) +{ + sub_806CDD4(r0, 7, 4); + r0->unk70->unk15F = 0; +} + +void sub_80891F0(void) +{ + s32 iVar1; + + sub_80855E4(sub_80891B0); + for(iVar1 = 0; iVar1 < 0x30; iVar1++) + { + sub_80855E4(sub_808919C); + sub_803E46C(0x46); + } + sub_80855E4(sub_80891D0); +} + +void sub_8089224(struct unkDungeon_8041D5C * param_1) +{ + s32 iVar1; + + if (param_1->unk10 < 0x9001) { + return; + } + iVar1 = param_1->unkC; + + if(iVar1 < 0xE400) + { + if(iVar1 <= 0xB400) + { + // 0 - 0xB400 + sub_804539C(param_1, 0, 0xfffffe00); + } + else + { + // 0xB401 - 0xE3FF + sub_804539C(param_1, 0xfffffe00, 0); + } + } + else + { + if(iVar1 < 0xFC00) + { + sub_804539C(param_1, 0, 0xfffffe00); + } + else + { + if(iVar1 <= 0x11400) + { + sub_804539C(param_1, 0x200, 0); + } + else + { + sub_804539C(param_1, 0, 0xfffffe00); + } + } + } +} + +void sub_8089294(void) +{ + s32 iVar1; + + sub_80855E4(sub_80891B0); + for(iVar1 = 0; iVar1 <= 0x77; iVar1++) + { + sub_80855E4(sub_8089224); + sub_803E46C(0x46); + } + sub_80855E4(sub_80891D0); +} + +void sub_80892C8(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0xf); + sub_8083E88(0x1a); + sub_8085374(); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + sub_8085918(uVar2,0); + sub_8086A3C(uVar2); + sub_8085860(iVar1->unk4,iVar1->unk6 - 3); + CopySpeciesNametoBuffer(gUnknown_202E038,SPECIES_RAYQUAZA); +} + +void sub_8089328(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0xf); + sub_8083E88(0x1a); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + if (sub_8086AE4(SPECIES_RAYQUAZA)) { + sub_8068FE0(uVar3,0x21c,0); + } + else { + sub_8072008(uVar3,uVar3,gUnknown_80F57CA,0,0); + sub_8086A3C(uVar3); + } + sub_8085860(iVar2->unk4,iVar2->unk6 - 3); + CopySpeciesNametoBuffer(gUnknown_202E038,SPECIES_RAYQUAZA); +} + +void sub_80893B4(char param_1, s32 param_2) +{ + if ((((param_2 * 0x1000000) + 0xE9000000U) >> 0x18 < 3) && (param_1 == 0xF)) { + sub_8097FA8(0xF); + gUnknown_203B418->unk2 = 1; + } +} + +void RayquazaPreFightDialogue(void) +{ + struct unkDungeon_8041D5C *iVar1; + struct unkDungeon_8041D5C *uVar2; + struct unkDungeon_8041D5C *uVar3; + + iVar1 = sub_8085480(); + uVar2 = sub_808548C(); + uVar3 = sub_8085680(0xf); + sub_8086448(); + sub_8052910(&gUnknown_8103500); + RayquazaScreenFlash(); + sub_8052910(&gUnknown_810352C); + sub_80856E0(uVar2,4); + sub_808696C(uVar2); + sub_803E708(10,0x46); + sub_80869E4(uVar2,4,1,2); + sub_80869E4(iVar1,4,2,6); + sub_8052910(&gUnknown_8103578); + sub_80869E4(uVar2,4,2,4); + sub_80869E4(iVar1,4,1,4); + sub_8052910(&gUnknown_81035D4); + sub_803E708(10,0x46); + sub_8052910(&gUnknown_8103618); + sub_803E708(10,0x46); + sub_8052910(&gUnknown_810367C); + RayquazaScreenFlash(); + sub_8083E38(0x1da); // Rayquaza Cry + sub_8052910(&gUnknown_8103690); + sub_8089620(uVar3); + sub_8052910(&gUnknown_81036C8); + RayquazaScreenFlash(); + sub_8052910(&gUnknown_81037A0); + RayquazaScreenFlash(); + sub_8052910(&gUnknown_81037D4); + RayquazaScreenFlash(); + sub_8052910(&gUnknown_8103820); + sub_8086A70(uVar3,600,0x20); + sub_80858AC(&iVar1->unkC,0x10); +} + +void RayquazaReFightDialogue(void) +{ + struct unkDungeon_8041D5C *iVar1; + struct unkDungeon_8041D5C *uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0xf); + sub_8086448(); + RayquazaScreenFlash(); + sub_8083E38(0x1da); // Rayquaza Cry + sub_8052910(&gUnknown_8103690); + sub_803E708(10,0x46); + sub_8089620(uVar2); + sub_8052910(&gUnknown_8103844); + RayquazaScreenFlash(); + sub_8052910(&gUnknown_8103874); + RayquazaScreenFlash(); + sub_8052910(&gUnknown_81038A8); + RayquazaScreenFlash(); + sub_8052910(&gUnknown_81038F8); + sub_8086A70(uVar2,600,0x20); + sub_80858AC(&iVar1->unkC,0x10); +} + +void RayquazaPostStoryPreFightDialogue(void) +{ + struct unkDungeon_8041D5C *iVar2; + struct unkDungeon_8041D5C *uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0xf); + sub_8086448(); + if (sub_8086AE4(SPECIES_RAYQUAZA)) { + sub_80866C4(&gUnknown_8103B58); + } + else { + sub_8083E38(0x1da); // Rayquaza Cry + sub_8052910(&gUnknown_8103904); + sub_8089620(uVar3); + sub_8052910(&gUnknown_8103938); + RayquazaScreenFlash(); + sub_8052910(&gUnknown_8103AA4); + RayquazaScreenFlash(); + sub_8052910(&gUnknown_8103AE4); + RayquazaScreenFlash(); + sub_8052910(&gUnknown_8103B30); + sub_8086A70(uVar3,600,0xb); + sub_80858AC(&iVar2->unkC,0x10); + } +} + +void sub_8089620(struct unkDungeon_8041D5C *param_1) +{ + s32 iVar1; + s32 iVar2; + + param_1->unk70->unk15E = 0; + iVar2 = 51200; + iVar1 = 0x600; + sub_8083E38(0x1f8); + while( 1 ) { + iVar2 = iVar2 - iVar1; + iVar1 = iVar1 -= 0x18; + if (iVar1 < 0x14) { + iVar1 = 0x14; + } + if (iVar2 < 0) break; + param_1->unk70->unk174 = iVar2; + sub_803E46C(0x46); + } + param_1->unk70->unk174 = 0; +} + +void RayquazaScreenFlash(void) +{ + s32 iVar1; + + sub_8083E38(0x1f6); + for(iVar1 = 250; iVar1 > 149; iVar1 -= 10) + { + sub_8085C54(iVar1 / 2, iVar1, iVar1 / 2, 1, 1); + sub_803E46C(70); + } + sub_803E708(10,70); + for(iVar1 = 250; iVar1 > 199; iVar1 -= 10) + { + sub_8085C54(iVar1 / 2, iVar1, 0, 1, 1); + sub_803E46C(70); + } + sub_803E708(10,70); + for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10) + { + sub_8085C54(iVar1 / 2, iVar1, iVar1 / 2, 1, 1); + sub_803E46C(70); + } + sub_803E708(10,70); + sub_8085EB0(); +} + + +void sub_808970C(void) +{ + struct unkDungeon_8041D5C *iVar1; + + iVar1 = sub_8085480(); + sub_8083E88(0x7D); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + sub_808563C(sub_8089908); + sub_8085860(iVar1->unk4,iVar1->unk6 + -3); +} + +void sub_808974C(void) +{ + struct unkDungeon_8041D5C *iVar1; + + iVar1 = sub_8085480(); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + sub_808563C(sub_80898F8); + sub_8085860(iVar1->unk4,iVar1->unk6 + -3); +} + +void sub_8089788(struct unkDungeon_8041D5C *param_1, u8 param_2, s32 param_3) +{ + struct unkDungeon_8041D5C *iVar2; + s32 iVar3; + u32 unk1; + + unk1 = 0; + + if ((((param_3 * 0x1000000) + 0xe6000000U) >> 0x18) < 2) { + for(iVar3 = 0; iVar3 < 0x10; iVar3++) + { + iVar2 = gUnknown_203B418->unk1358C[iVar3]; + if ((sub_80450E0(iVar2) != '\0') && (iVar2 != param_1) && (iVar2->unk70->unkA4 == param_2)) { + return; + } + } + // WTF is this?? + if(!unk1){ + sub_8097FA8(0x11); + gUnknown_203B418->unk2 = 1; + } + } +} + +void sub_80897F0(void) +{ + struct unkDungeon_8041D5C *iVar1; + + iVar1 = sub_8085480(); + sub_8086448(); + sub_803E708(10,0x46); + sub_808563C(sub_80862BC); + sub_803E708(0x20,0x46); + sub_808692C(); + sub_8052910(&gUnknown_8103BD8); + // We don't like to brag or + // nothing, but + sub_8052910(&gUnknown_8103C00); + // We get furious real easy + // You know that?! + sub_8052910(&gUnknown_8103C3C); + // What really irritates us is + // when we see some dim witted face + sub_8052910(&gUnknown_8103C74); + // ......... + // Wrooooooar! + // That vacant expression + sub_8052910(&gUnknown_8103CC4); + // Gwoooh + // It's ticking me off! + // I'm seeing red! + sub_8052910(&gUnknown_8103D0C); + // Mukkkeeeeeh + // Get 'em! It's frenzy time! + sub_8052910(&gUnknown_8103D50); + sub_803E708(10,0x46); + sub_80858AC(&iVar1->unkC,0x10); +} + + + +void sub_8089878(void) +{ + struct unkDungeon_8041D5C *iVar1; + + iVar1 = sub_8085480(); + sub_8086448(); + sub_803E708(10,0x46); + sub_808563C(sub_80862BC); + sub_803E708(0x20,0x46); + sub_808692C(); + sub_8052910(&gUnknown_8103D8C); + sub_8052910(&gUnknown_8103D98); + sub_8052910(&gUnknown_8103DD8); + sub_8052910(&gUnknown_8103E28); + sub_803E708(10,0x46); + sub_80858AC(&iVar1->unkC,0x10); +} + +void sub_80898E4(void) +{ + sub_8086448(); + sub_80866C4(&gUnknown_8103E34); +} + +void sub_80898F8(struct unkDungeon_8041D5C *r0) +{ + sub_8068FE0(r0, 0x21C, 0); +} + +void sub_8089908(struct unkDungeon_8041D5C *r0) +{ + sub_8085918(r0, 4); +} + +void sub_8089914(void) +{ + struct unkDungeon_8041D5C *iVar1; + struct unkDungeon_8041D5C *uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x11); + sub_8083F14(); + gUnknown_203B418->unk7 = 1; + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + sub_8085918(uVar2,0); + sub_8086A3C(uVar2); + sub_8085860(iVar1->unk4,iVar1->unk6 - 3); + CopySpeciesNametoBuffer(gUnknown_202E038,SPECIES_MEWTWO); +} + +void sub_8089978(void) +{ + struct unkDungeon_8041D5C *iVar2; + struct unkDungeon_8041D5C *uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x11); + sub_8083F14(); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + if(HasRecruitedMon(SPECIES_MEWTWO)){ + sub_8083E88(0x23); + sub_8068FE0(uVar3,0x21c,0); + } + else { + gUnknown_203B418->unk7 = 1; + sub_8085918(uVar3,0); + sub_8086A3C(uVar3); + } + sub_8085860(iVar2->unk4,iVar2->unk6 - 3); + CopySpeciesNametoBuffer(gUnknown_202E038,SPECIES_MEWTWO); +} + +void sub_8089A00(char param_1, s32 param_2) +{ + if ((((param_2 * 0x1000000) + 0xE3000000U) >> 0x18 < 3) && (param_1 == 0x11)) { + sub_8097FA8(0x13); + gUnknown_203B418->unk2 = 1; + } +} + +void MewtwoPreFightDialogue(void) +{ + struct unkDungeon_8041D5C *iVar1; + struct unkDungeon_8041D5C *uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x11); + sub_8086448(); + sub_8052910(&gUnknown_8103EA4); + sub_803E708(10,0x46); + sub_8083E88(0x23); + sub_8086794(); + sub_803E708(0x1e,0x46); + sub_8089B64(uVar2); + sub_803E708(0x3c,0x46); + sub_8052910(&gUnknown_8103F0C); + sub_8052910(&gUnknown_8103F4C); + sub_803E708(10,0x46); + MewtwoScreenFlash(); + sub_8052910(&gUnknown_8103FCC); + MewtwoScreenFlash(); + sub_8052910(&gUnknown_8104008); + sub_803E708(10,0x46); + sub_8086A70(uVar2,900,0x20); + sub_80858AC(&iVar1->unkC,0x10); +} + +void MewtwoPreFightDialogue1(void) +{ + struct unkDungeon_8041D5C *iVar2; + struct unkDungeon_8041D5C *uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x11); + sub_8086448(); + if(HasRecruitedMon(SPECIES_MEWTWO)) { + sub_80866C4(&gUnknown_8104144); + } + else { + sub_8052910(&gUnknown_8104044); + sub_8083E88(0x23); + sub_8086794(); + sub_8089B64(uVar3); + sub_803E708(0x3c,0x46); + sub_8052910(&gUnknown_8104050); + MewtwoScreenFlash(); + sub_8052910(&gUnknown_81040CC); + MewtwoScreenFlash(); + sub_8052910(&gUnknown_8104114); + sub_8086A70(uVar3,900,0x20); + sub_80858AC(&iVar2->unkC,0x10); + } +} + +void sub_8089B64(struct unkDungeon_8041D5C *param_1) +{ + s32 iVar1; + s32 iVar2; + + param_1->unk70->unk15E = 0; + iVar2 = 51200; + iVar1 = 0x400; + sub_8083E38(0x1f8); + while( 1 ) { + iVar2 = iVar2 - iVar1; + iVar1 = iVar1 -= 11; + if (iVar1 < 0x1e) { + iVar1 = 0x1e; + } + if (iVar2 < 0) break; + param_1->unk70->unk174 = iVar2; + sub_803E46C(0x46); + } + param_1->unk70->unk174 = 0; +} + +void MewtwoScreenFlash(void) +{ + int iVar1; + + sub_8083E38(0x1f6); + for(iVar1 = 250; iVar1 > 149; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,iVar1,1,1); + sub_803E46C(0x46); + } + sub_803E708(10,0x46); + for(iVar1 = 250; iVar1 > 199; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,0,1,1); + sub_803E46C(0x46); + } + sub_803E708(10,0x46); + for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,iVar1,1,1); + sub_803E46C(0x46); + } + sub_803E708(10,0x46); + sub_8085EB0(); +} + +void sub_8089C44(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x12); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(4); + sub_8085918(uVar3, 0); + sub_8085860(iVar2->unk4,iVar2->unk6); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_ENTEI); +} + + +void sub_8089C90(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x12); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(4); + if (HasRecruitedMon(SPECIES_ENTEI)) { + sub_8068FE0(uVar3,0x21c,0); + } + else { + sub_8085918(uVar3,0); + } + sub_8085860(iVar2->unk4,iVar2->unk6); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_ENTEI); +} + + +void sub_8089CFC(char param_1,int param_2) +{ + if ((((param_2 * 0x1000000) + 0xE0000000U) >> 0x18 < 3) && (param_1 == 0x12)) { + sub_8097FA8(0x15); + gUnknown_203B418->unk2 = 1; + } +} + + +void EnteiPreFightDialogue(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x12); + EnteiScreenFlash(); + sub_8052910(&gUnknown_8104150); + EnteiScreenFlash(); + sub_8052910(&gUnknown_81041AC); + EnteiScreenFlash(); + sub_8052910(&gUnknown_81041F8); + sub_803E708(10,70); + sub_8086A70(uVar2,600,0xb); + sub_80858AC(&iVar1->unkC,0x10); +} + +void EnteiPreFightDialogue1(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x12); + EnteiScreenFlash(); + sub_8052910(&gUnknown_8104240); + EnteiScreenFlash(); + sub_8052910(&gUnknown_81042AC); + EnteiScreenFlash(); + sub_8052910(&gUnknown_81042B8); + sub_803E708(10,70); + sub_8086A70(uVar2,600,0xb); + sub_80858AC(&iVar1->unkC,0x10); +} + +void EnteiPreFightDialogue2(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x12); + if (HasRecruitedMon(SPECIES_ENTEI)) { + sub_80866C4(&gUnknown_81043DC); + } + else { + EnteiScreenFlash(); + sub_8052910(&gUnknown_8104310); + EnteiScreenFlash(); + sub_8052910(&gUnknown_810439C); + EnteiScreenFlash(); + sub_8052910(&gUnknown_81043C0); + sub_803E708(10,70); + sub_8086A70(uVar3,600,0xb); + sub_80858AC(&iVar2->unkC,0x10); + } +} + +void EnteiScreenFlash(void) +{ + s32 iVar1; + + sub_8083E38(0x1ed); + for(iVar1 = 250; iVar1 > 149; iVar1 -= 10) + { + sub_8085C54(iVar1, iVar1 / 2, iVar1 / 2, 1, 1); + sub_803E46C(70); + } + sub_803E708(10,70); + for(iVar1 = 250; iVar1 > 199; iVar1 -= 10) + { + sub_8085C54(iVar1, 0, 0, 1, 1); + sub_803E46C(70); + } + sub_803E708(10,70); + for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10) + { + sub_8085C54(iVar1, iVar1 / 2, iVar1 / 2, 1, 1); + sub_803E46C(70); + } + sub_803E708(10,70); + sub_8085EB0(); +} + +void sub_8089EFC(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x13); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(4); + sub_8085918(uVar3, 0); + sub_8085860(iVar2->unk4,iVar2->unk6); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_RAIKOU); +} + + +void sub_8089F44(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x13); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(4); + sub_8085918(uVar3, 0); + sub_8085860(iVar2->unk4,iVar2->unk6); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_RAIKOU); +} + + +void sub_8089F8C(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x13); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(4); + if (HasRecruitedMon(SPECIES_RAIKOU)) { + sub_8068FE0(uVar3,0x21c,0); + } + else { + sub_8085918(uVar3,0); + } + sub_8085860(iVar2->unk4,iVar2->unk6); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_RAIKOU); +} + +void sub_8089FF0(char param_1,int param_2) +{ + if ((((param_2 * 0x1000000) + 0xdD000000U) >> 0x18 < 3) && (param_1 == 0x13)) { + sub_8097FA8(0x17); + gUnknown_203B418->unk2 = 1; + } +} + + +void RaikouPreFightDialogue(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x13); + sub_8052910(&gUnknown_8104450); + RaikouScreenFlash(); + sub_8052910(&gUnknown_81044B4); + gUnknown_203B418->unkE265 = 4; + sub_807EAA0(0,1); + sub_803E708(10,70); + sub_8052910(&gUnknown_8104510); + RaikouScreenFlash(); + sub_8052910(&gUnknown_810453C); + RaikouScreenFlash(); + sub_8052910(&gUnknown_8104570); + RaikouScreenFlash(); + sub_8052910(&gUnknown_81045B0); + sub_803E708(10,70); + sub_8086A70(uVar2,0x28a,0xb); + sub_80858AC(&iVar1->unkC,0x10); +} + +void RaikouPreFightDialogue1(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x13); + gUnknown_203B418->unkE265 = 4; + sub_807EAA0(0,1); + RaikouScreenFlash(); + sub_8052910(&gUnknown_81045F8); + RaikouScreenFlash(); + sub_8052910(&gUnknown_8104674); + RaikouScreenFlash(); + sub_8052910(&gUnknown_81046A0); + sub_803E708(10,70); + sub_8086A70(uVar3,0x28a,0xb); + sub_80858AC(&iVar2->unkC,0x10); +} + +void RaikouPreFightDialogue2(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x13); + if (HasRecruitedMon(SPECIES_RAIKOU)) { + sub_80866C4(&gUnknown_8104778); + } + else { + gUnknown_203B418->unkE265 = 4; + sub_807EAA0(0,1); + sub_8052910(&gUnknown_81046CC); + RaikouScreenFlash(); + sub_8052910(&gUnknown_8104744); + RaikouScreenFlash(); + sub_8052910(&gUnknown_810476C); + sub_803E708(10,70); + sub_8086A70(uVar3,0x28a,0xb); + sub_80858AC(&iVar2->unkC,0x10); + } +} + +void RaikouScreenFlash(void) +{ + s32 iVar1; + + sub_8083E38(0x1f6); + for(iVar1 = 250; iVar1 > 149; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,iVar1,1,1); + sub_803E46C(70); + } + sub_803E708(10,70); + for(iVar1 = 250; iVar1 > 199; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,iVar1,1,1); + sub_803E46C(70); + } + sub_803E708(10,70); + for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,iVar1,1,1); + sub_803E46C(70); + } + sub_803E708(10,70); + sub_8085EB0(); +} + +void sub_808A264(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x14); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + sub_8085918(uVar2,0); + sub_8086A3C(uVar2); + sub_8085860(iVar1->unk4,iVar1->unk6 - 3); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SUICUNE); +} + +void sub_808A2C0(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x14); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(4); + sub_8085918(uVar2,0); + sub_8085860(iVar1->unk4,iVar1->unk6); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SUICUNE); +} + +void sub_808A308(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x14); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(4); + if (HasRecruitedMon(SPECIES_SUICUNE)) { + sub_8068FE0(uVar3,0x21c,0); + } + else { + sub_8085918(uVar3,0); + } + sub_8085860(iVar2->unk4,iVar2->unk6); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SUICUNE); +} + +void sub_808A36C(char param_1,int param_2) +{ + if ((((param_2 * 0x1000000) + 0xda000000U) >> 0x18 < 3) && (param_1 == 0x14)) { + sub_8097FA8(0x19); + gUnknown_203B418->unk2 = 1; + } +} + +void SuicunePreFightDialogue(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x14); + sub_8086448(); + sub_8052910(&gUnknown_8104784); + sub_803E708(10,70); + sub_8052910(&gUnknown_8104790); + sub_803E708(10,70); + sub_80426C8(1,2); + sub_803E708(0x3c,70); + sub_8052910(&gUnknown_81047B0); + sub_803E708(10,70); + sub_808A528(uVar2); + sub_8052910(&gUnknown_810484C); + sub_8052910(&gUnknown_8104888); + SuicuneScreenFlash(); + sub_8052910(&gUnknown_81048C8); + SuicuneScreenFlash(); + sub_8052910(&gUnknown_8104914); + sub_803E708(10,70); + sub_8086A70(uVar2,0x28a,0xb); + sub_80858AC(&iVar1->unkC,0x10); +} + +void SuicunePreFightDialogue1(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x14); + sub_8052910(&gUnknown_8104930); + SuicuneScreenFlash(); + sub_8052910(&gUnknown_8104980); + SuicuneScreenFlash(); + sub_8052910(&gUnknown_8104998); + sub_803E708(10,70); + sub_8086A70(uVar2,0x28a,0xb); + sub_80858AC(&iVar1->unkC,0x10); +} + +void SuicunePreFightDialogue2(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x14); + if (HasRecruitedMon(SPECIES_SUICUNE)) { + sub_80866C4(&gUnknown_8104AC8); + } + else { + sub_8052910(&gUnknown_81049D4); + SuicuneScreenFlash(); + sub_8052910(&gUnknown_8104A80); + SuicuneScreenFlash(); + sub_8052910(&gUnknown_8104A9C); + sub_803E708(10,70); + sub_8086A70(uVar3,0x28a,0xb); + sub_80858AC(&iVar2->unkC,0x10); + } +} + +void sub_808A528(struct unkDungeon_8041D5C * param_1) +{ + s32 iVar1; + s32 iVar2; + + param_1->unk70->unk15E = 0; + iVar2 = 51200; + iVar1 = 3072; + sub_8083E38(0x1f8); + while( 1 ) { + iVar2 = iVar2 - iVar1; + iVar1 -= 96; + if (iVar1 < 20) { + iVar1 = 20; + } + if (iVar2 < 0) break; + param_1->unk70->unk174 = iVar2; + sub_803E46C(70); + } + param_1->unk70->unk174 = 0; +} + +void SuicuneScreenFlash(void) +{ + s32 iVar1; + + sub_8083E38(0x1ee); + for(iVar1 = 250; iVar1 > 149; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,iVar1,1,1); + sub_803E46C(70); + } + sub_803E708(10,70); + for(iVar1 = 250; iVar1 > 199; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,iVar1,1,1); + sub_803E46C(70); + } + sub_803E708(10,70); + for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,iVar1,1,1); + sub_803E46C(70); + } + sub_803E708(10,70); + sub_8085EB0(); +} + +void sub_808A608(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x15); + sub_8083E88(0x1c); + sub_80867F4(); + sub_8086838(0,0,0); + sub_80854D4(); + sub_8085930(4); + sub_8085918(uVar2,0); + sub_8086A3C(uVar2); + sub_8085860(iVar1->unk4,iVar1->unk6 + -6); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_HO_OH); +} + +void sub_808A668(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x15); + sub_8083E88(0x1c); + sub_80867F4(); + sub_8086838(0,0,0); + sub_80854D4(); + sub_8085930(4); + if (HasRecruitedMon(SPECIES_HO_OH)) { + sub_8068FE0(uVar3,0x21c,0); + } + else { + sub_8085918(uVar3,0); + sub_8086A3C(uVar3); + } + sub_8085860(iVar2->unk4,iVar2->unk6 - 6); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_HO_OH); +} + +void sub_808A6E8(char param_1, s32 param_2) +{ + if ((((param_2 * 0x1000000) + 0xd7000000U) >> 0x18 < 2) && (param_1 == 0x15)) { + sub_8097FA8(0x1A); + gUnknown_203B418->unk2 = 1; + } +} + + +void sub_808A718(void) +{ + sub_8086854(); +} + +void HoOhPreFightDialogue(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + int local_14[2]; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x15); + local_14[0] = iVar1->unkC; + local_14[1] = iVar1->unk10 + -0x1000; + sub_80858AC(local_14,0x88); + sub_803E708(0x40,70); + sub_8052910(&gUnknown_8104AD4); + sub_803E708(10,70); + HoOhScreenFlash(); + sub_8052910(&gUnknown_8104BEC); + sub_803E708(10,70); + sub_80855E4(sub_80868F4); + sub_808680C(); + sub_8083E38(0x1c5); + sub_803E708(0xfa,70); + sub_808A904(uVar2); + sub_8083E58(0x1c5); + sub_808682C(); + sub_80855E4(sub_8086910); + sub_8085930(4); + sub_8052910(&gUnknown_8104C10); + sub_8052910(&gUnknown_8104C54); + sub_803E708(0x1e,70); + sub_803E708(0x1e,70); + HoOhScreenFlash(); + sub_8052910(&gUnknown_8104CB4); + HoOhScreenFlash(); + sub_8052910(&gUnknown_8104CE0); + sub_803E708(10,70); + sub_8086A70(uVar2,800,0x20); + sub_80858AC(&iVar1->unkC,0x10); +} + +void HoOhPreFightDialogue1(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + u32 local_14[2]; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x15); + + local_14[0] = iVar2->unkC; + local_14[1] = iVar2->unk10 + -0x1000; + sub_80858AC(local_14,0x88); + sub_803E708(0x40,70); + if (HasRecruitedMon(SPECIES_HO_OH)) { + sub_80866C4(&gUnknown_8104E54); + } + else { + sub_8052910(&gUnknown_8104CEC); + HoOhScreenFlash(); + sub_80855E4(sub_80868F4); + sub_808680C(); + sub_803E708(10,70); + sub_808A904(uVar3); + sub_808682C(); + sub_80855E4(sub_8086910); + sub_8085930(4); + sub_8052910(&gUnknown_8104D60); + HoOhScreenFlash(); + sub_8052910(&gUnknown_8104DDC); + HoOhScreenFlash(); + sub_8052910(&gUnknown_8104E0C); + sub_803E708(10,70); + sub_8086A70(uVar3,800,0x20); + sub_80858AC(&iVar2->unkC,0x10); + } +} + +void sub_808A904(struct unkDungeon_8041D5C * param_1) +{ + s32 iVar1; + s32 iVar2; + + param_1->unk70->unk15E = 0; + iVar2 = 51200; + iVar1 = 3072; + sub_8083E38(0x1f8); + while( 1 ) { + iVar2 = iVar2 - iVar1; + iVar1 -= 96; + if (iVar1 < 20) { + iVar1 = 20; + } + if (iVar2 < 0) break; + param_1->unk70->unk174 = iVar2; + sub_803E46C(70); + } + param_1->unk70->unk174 = 0; +} + +void HoOhScreenFlash(void) +{ + s32 iVar1; + + sub_8083E38(0x1ed); + for(iVar1 = 250; iVar1 > 149; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,iVar1,1,1); + sub_803E46C(70); + } + sub_803E708(10,70); + for(iVar1 = 250; iVar1 > 199; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,iVar1,1,1); + sub_803E46C(70); + } + sub_803E708(10,70); + for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,iVar1,1,1); + sub_803E46C(70); + } + sub_803E708(10,70); + sub_8085EB0(); +} + +void sub_808A9E4(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x16); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + sub_8085918(uVar2,4); + sub_8085860(iVar1->unk4,iVar1->unk6 - 4); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_LATIOS); +} + +void sub_808AA3C(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x16); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + sub_8085918(uVar2,4); + sub_8085860(iVar1->unk4,iVar1->unk6 - 3); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_LATIOS); +} + +void sub_808AA94(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x16); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + sub_8068FE0(uVar2,0x21c,0); + sub_8085860(iVar1->unk4,iVar1->unk6 - 3); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_LATIOS); +} + +void sub_808AAF0(char param_1, s32 param_2) +{ + if ((((param_2 * 0x1000000) + 0xd5000000U) >> 0x18 < 3) && (param_1 == 0x16)) { + sub_8097FA8(0x1c); + gUnknown_203B418->unk2 = 1; + } +} + +void LatiosPreFightDialogue(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * iVar2; + u32 local_18[3]; + + iVar1 = sub_8085480(); + iVar2 = sub_8085680(0x16); + + local_18[0] = iVar2->unkC; + local_18[1] = iVar2->unk10 + (0x80 << 6); + local_18[2] = 0x7000fc; + sub_8085EC8(0x1bd,0,0,&local_18[2],1); + + sub_803E708(0x1e,70); + sub_8086448(); + sub_80858AC(local_18,0x18); + sub_803E708(2,70); + sub_80862BC(iVar2); + sub_803E708(0x20,70); + sub_808692C(); + sub_8052910(&gUnknown_8104E60); + LatiosScreenFlash(); + sub_8052910(&gUnknown_8104EFC); + LatiosScreenFlash(); + sub_8052910(&gUnknown_8104F30); + sub_803E708(10,70); + sub_8086A70(iVar2,600,0xb); + sub_80858AC(&iVar1->unkC,0x10); +} + +void LatiosReFightDialogue(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x16); + sub_8086448(); + sub_808692C(); + sub_8052910(&gUnknown_8104F64); + LatiosScreenFlash(); + sub_8052910(&gUnknown_8104EFC); + LatiosScreenFlash(); + sub_8052910(&gUnknown_8104F30); + sub_803E708(10,70); + sub_8086A70(uVar2,600,0xb); + sub_80858AC(&iVar1->unkC,0x10); +} + +void sub_808AC3C(void) +{ + sub_8086448(); + // There appears to be no one here + sub_80866C4(&gUnknown_8104FC8); +} + +void LatiosScreenFlash(void) +{ + s32 iVar1; + + sub_8083E38(0x1ee); + gUnknown_202EDC8 = 0x1f; + for(iVar1 = 250; iVar1 > 149; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,iVar1,1,1); + sub_803E46C(70); + } + sub_803E708(10,70); + for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10) + { + sub_8085C54(iVar1,iVar1,iVar1,1,1); + sub_803E46C(70); + } + sub_803E708(10,70); + sub_8085EB0(); +} + +void sub_808ACC0(void) +{ + struct unkDungeon_8041D5C * uVar2; + + if (HasRecruitedMon(SPECIES_REGIROCK)) { + uVar2 = sub_8085680(0x17); + sub_8068FE0(uVar2,0x21c,0); + sub_8097FA8(0x22); + sub_8097FA8(0x1d); + sub_808B1CC(0x79); + } + else { + if (sub_80860A8(0x79) != 0) { + sub_8098044(0x22); + sub_8097FA8(0x1d); + } + else + { + if (sub_80860A8(0x7a) != 0) { + sub_8098044(0x22); + sub_8097FA8(0x1d); + } + else { + sub_8098044(0x22); + sub_8098044(0x1d); + sub_80855E4(sub_808B2B0); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_REGIROCK); + } + } + } +} + +void sub_808AD48(void) +{ + struct unkDungeon_8041D5C * uVar2; + + if (HasRecruitedMon(SPECIES_REGICE)) { + uVar2 = sub_8085680(0x18); + sub_8068FE0(uVar2,0x21c,0); + sub_8097FA8(0x22); + sub_8097FA8(0x1d); + sub_808B1CC(0x77); + } + else { + if (sub_80860A8(0x77) != 0) { + sub_8098044(0x22); + sub_8097FA8(0x1d); + } + else + { + if (sub_80860A8(0x7a) != 0) { + sub_8098044(0x22); + sub_8097FA8(0x1d); + } + else { + sub_8098044(0x22); + sub_8098044(0x1d); + sub_80855E4(sub_808B2B0); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_REGICE); + } + } + } +} + +void sub_808ADCC(void) +{ + + struct unkDungeon_8041D5C * uVar2; + + if (HasRecruitedMon(SPECIES_REGISTEEL)) { + uVar2 = sub_8085680(0x19); + sub_8068FE0(uVar2,0x21c,0); + sub_8097FA8(0x22); + sub_8097FA8(0x1d); + sub_808B1CC(0x78); + } + else { + if (sub_80860A8(0x78) != 0) { + sub_8098044(0x22); + sub_8097FA8(0x1d); + } + else + { + if (sub_80860A8(0x7a) != 0) { + sub_8098044(0x22); + sub_8097FA8(0x1d); + } + else { + sub_8098044(0x22); + sub_8098044(0x1d); + sub_80855E4(sub_808B2B0); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_REGISTEEL); + } + } + } +} + +void sub_808AE54(char param_1,char param_2,u32 param_3) +{ + struct unkDungeon_8041D5C * uVar3; + u8 auStack24 [4]; + u8 auStack20 [4]; + + + uVar3 = sub_8085480(); + sub_8052D44(auStack24,uVar3,0); + if ((sub_8098100(0x22) == 0) && (param_2 == 0x2E) && (param_1 == 0x17)) { + sub_808B1CC(0); + if (sub_8098100(0x1d) == 0) { + sub_8090A8C(auStack20,0x79,0); + sub_80464C8(sub_8083600(),param_3,auStack20); + sub_8083E88(0x72); + // Something fell from Regirock's body + // Regirock was apparently guarding this item + sub_8052910(&gUnknown_8105040); + } + } +} + + +void sub_808AEC8(char param_1,char param_2,u32 param_3) +{ + struct unkDungeon_8041D5C * uVar3; + u8 auStack24 [4]; + u8 auStack20 [4]; + + + uVar3 = sub_8085480(); + sub_8052D44(auStack24,uVar3,0); + if ((sub_8098100(0x22) == 0) && (param_2 == 0x2F) && (param_1 == 0x18)) { + sub_808B1CC(0); + if (sub_8098100(0x1d) == 0) { + sub_8090A8C(auStack20,0x77,0); + sub_80464C8(sub_8083600(),param_3,auStack20); + sub_8083E88(0x72); + // Something fell from Regice's body + // Regice was apparently guarding this item + sub_8052910(&gUnknown_810510C); + } + } +} + +void sub_808AF3C(char param_1,char param_2,u32 param_3) +{ + struct unkDungeon_8041D5C * uVar3; + u8 auStack24 [4]; + u8 auStack20 [4]; + + + uVar3 = sub_8085480(); + sub_8052D44(auStack24,uVar3,0); + if ((sub_8098100(0x22) == 0) && (param_2 == 0x30) && (param_1 == 0x19)) { + sub_808B1CC(0); + if (sub_8098100(0x1d) == 0) { + sub_8090A8C(auStack20,0x78,0); + sub_80464C8(sub_8083600(),param_3,auStack20); + sub_8083E88(0x72); + // Something fell from Registeel's body + // Registeel was apparently guarding this item + sub_8052910(&gUnknown_81051D0); + } + } +} + +void sub_808AFB0(char param_1) +{ + struct unkDungeon_8041D5C * uVar3; + u8 auStack12 [4]; + + uVar3 = sub_8085480(); + sub_8052D44(auStack12,uVar3,0); + if ((sub_8098100(0x22) == 0) && (param_1 == 0x2E) && (sub_8098100(0x1d) == 0) && (sub_80860A8(0x79) != 0)) { + sub_8097FD0(0x1d); + sub_8045B94(gAvailablePokemonNames,sub_8083600(),0); + // $m0 obatined the Rock Part that Regirock was guarding + sub_8052910(&gUnknown_81050B4); + sub_80421C0(0,0xd4); + sub_803E708(10,70); + sub_8046D20(); + } +} + +void sub_808B030(char param_1) +{ + struct unkDungeon_8041D5C * uVar3; + u8 auStack12 [4]; + + uVar3 = sub_8085480(); + sub_8052D44(auStack12,uVar3,0); + if ((sub_8098100(0x22) == 0) && (param_1 == 0x2F) && (sub_8098100(0x1d) == 0) && (sub_80860A8(0x77) != 0)) { + sub_8097FD0(0x1d); + sub_8045B94(gAvailablePokemonNames,sub_8083600(),0); + // $m0 obatined the Ice Part that Regice was guarding + sub_8052910(&gUnknown_810517C); + sub_80421C0(0,0xd4); + sub_803E708(10,70); + sub_8046D20(); + } +} + +void sub_808B0B0(char param_1) +{ + struct unkDungeon_8041D5C * uVar3; + u8 auStack12 [4]; + + uVar3 = sub_8085480(); + sub_8052D44(auStack12,uVar3,0); + if ((sub_8098100(0x22) == 0) && (param_1 == 0x30) && (sub_8098100(0x1d) == 0) && (sub_80860A8(0x78) != 0)) { + sub_8097FD0(0x1d); + sub_8045B94(gAvailablePokemonNames, sub_8083600(), 0); + // $m0 obatined the Steel Part that Registeel was guarding + sub_8052910(&gUnknown_8105244); + sub_80421C0(0,0xd4); + sub_803E708(10,70); + sub_8046D20(); + } +} + +void RegirockPreFightDialogue(void) +{ + if (sub_8098100(0x22) == '\0') { + sub_8085930(4); + // INTRUDER ALERT + // EXTERMINATE + sub_8052910(&gUnknown_8104FD4); + sub_803E708(10,70); + sub_808563C(sub_808B2C4); + } +} + +void RegicePreFightDialogue(void) +{ + if (sub_8098100(0x22) == '\0') { + sub_8085930(4); + // INTRUDER ALERT + // EXTERMINATE + sub_8052910(&gUnknown_8105028); + sub_803E708(10,70); + sub_808563C(sub_808B2D4); + } +} + +void RegisteelPreFightDialogue(void) +{ + if (sub_8098100(0x22) == '\0') { + sub_8085930(4); + // INTRUDER ALERT + // EXTERMINATE + sub_8052910(&gUnknown_8105034); + sub_803E708(10,70); + sub_808563C(sub_808B2E4); + } +} + +NAKED +void sub_808B1CC(u8 r0) +{ + asm_unified( + "\tpush {r4-r7,lr}\n" + "\tsub sp, 0x8\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tldr r7, _0808B21C\n" + "\tldr r2, [r7]\n" + "\tldr r1, _0808B220\n" + "\tadds r0, r2, r1\n" + "\tldrh r0, [r0]\n" + "\tldr r5, _0808B224\n" + "\tldr r1, [sp]\n" + "\tands r1, r5\n" + "\torrs r1, r0\n" + "\tstr r1, [sp]\n" + "\tldr r3, _0808B228\n" + "\tadds r2, r3\n" + "\tldrh r0, [r2]\n" + "\tlsls r0, 16\n" + "\tldr r4, _0808B22C\n" + "\tadds r2, r4, 0\n" + "\tands r2, r1\n" + "\torrs r2, r0\n" + "\tstr r2, [sp]\n" + "\tmov r0, sp\n" + "\tmovs r1, 0\n" + "\tldrsh r0, [r0, r1]\n" + "\tcmp r0, 0\n" + "\tblt _0808B208\n" + "\tcmp r2, 0\n" + "\tbge _0808B244\n" +"_0808B208:\n" + "\tbl sub_8083600\n" + "\tadds r2, r0, 0\n" + "\tcmp r2, 0\n" + "\tbne _0808B230\n" + "\tldr r1, [r7]\n" + "\tmovs r0, 0x1\n" + "\tstrb r0, [r1, 0x2]\n" + "\tb _0808B2A8\n" + "\t.align 2, 0\n" +"_0808B21C: .4byte gUnknown_203B418\n" +"_0808B220: .4byte 0x00000684\n" +"_0808B224: .4byte 0xffff0000\n" +"_0808B228: .4byte 0x00000686\n" +"_0808B22C: .4byte 0x0000ffff\n" +"_0808B230:\n" + "\tldrh r0, [r2, 0x4]\n" + "\tldr r1, [sp]\n" + "\tands r1, r5\n" + "\torrs r1, r0\n" + "\tstr r1, [sp]\n" + "\tldrh r0, [r2, 0x6]\n" + "\tlsls r0, 16\n" + "\tands r1, r4\n" + "\torrs r1, r0\n" + "\tstr r1, [sp]\n" +"_0808B244:\n" + "\tmov r5, sp\n" + "\tmov r0, sp\n" + "\tmovs r1, 0\n" + "\tbl sub_807FE04\n" + "\tmov r0, sp\n" + "\tmovs r2, 0\n" + "\tldrsh r0, [r0, r2]\n" + "\tmovs r3, 0x2\n" + "\tldrsh r1, [r5, r3]\n" + "\tbl sub_8049590\n" + "\tldrh r2, [r0]\n" + "\tmovs r3, 0x80\n" + "\tlsls r3, 2\n" + "\tadds r1, r3, 0\n" + "\torrs r1, r2\n" + "\tstrh r1, [r0]\n" + "\tcmp r6, 0\n" + "\tbeq _0808B2A0\n" + "\tadds r0, r6, 0\n" + "\tbl sub_80860A8\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _0808B2A0\n" + "\tmovs r0, 0x7A\n" + "\tbl sub_80860A8\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _0808B2A0\n" + "\tadd r4, sp, 0x4\n" + "\tadds r0, r4, 0\n" + "\tadds r1, r6, 0\n" + "\tmovs r2, 0\n" + "\tbl sub_8090A8C\n" + "\tldrh r0, [r5, 0x2]\n" + "\tsubs r0, 0x1\n" + "\tstrh r0, [r5, 0x2]\n" + "\tmov r0, sp\n" + "\tadds r1, r4, 0\n" + "\tmovs r2, 0x1\n" + "\tbl sub_80460F8\n" +"_0808B2A0:\n" + "\tbl sub_8049ED4\n" + "\tbl sub_8040A84\n" +"_0808B2A8:\n" + "\tadd sp, 0x8\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} + + +void sub_808B2B0(struct unkDungeon_8041D5C *r0) +{ + r0->unk70->unk46 = 4; + sub_806CE68(r0, 4); +} + + +void sub_808B2C4(struct unkDungeon_8041D5C *r0) +{ + sub_8086A70(r0, 0xE1 << 1, 0xB); +} + + +void sub_808B2D4(struct unkDungeon_8041D5C *r0) +{ + sub_8086A70(r0, 0xE1 << 1, 0xB); +} + + +void sub_808B2E4(struct unkDungeon_8041D5C *r0) +{ + sub_8086A70(r0, 0xE1 << 1, 0xB); +} + +void sub_808B2F4(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x1a); + sub_8083E88(0x79); + sub_808BCE4(); + sub_8049ED4(); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + sub_8085918(uVar2,0); + sub_8086A3C(uVar2); + sub_8085860(iVar1->unk4,iVar1->unk6 - 3); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_JIRACHI); +} + +void sub_808B35C(void) +{ + struct unkDungeon_8041D5C * iVar2; + struct unkDungeon_8041D5C * uVar3; + + iVar2 = sub_8085480(); + uVar3 = sub_8085680(0x1a); + sub_8083E88(0x79); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + if (HasRecruitedMon(SPECIES_JIRACHI)) { + sub_8068FE0(uVar3,0x21c,0); + } + else { + sub_8085918(uVar3,0); + sub_8086A3C(uVar3); + sub_808BCE4(); + sub_8049ED4(); + + } + sub_8085860(iVar2->unk4,iVar2->unk6 - 3); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_JIRACHI); +} + +#ifdef NONMATCHING +void sub_808B3E4(u8 param_1,u8 param_2,u8 param_3) +{ + u8 uVar1; + + // TODO R1 and R2 shifts are switched ordering but matches + if (((((param_2 * 0x1000000) + 0xcf000000U) >> 0x18) < 2) && (param_1 == 0x1A)){ + sub_8097FA8(0x1e); + if (param_3 != 0) { + gUnknown_203B418->unk2 = 1; + } + else { + uVar1 = gUnknown_203B418->unk1356C; + if (sub_80860A8(0x36) != 0) { + JirachiWish(); + } + else { + sub_808B50C(); + } + gUnknown_203B418->unk1356C = uVar1; + sub_8040A84(); + } + } +} +#else +NAKED +void sub_808B3E4(u8 param_1, u8 param_2, u8 param_3) +{ + asm_unified( + "\tpush {r4,lr}\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tlsls r1, 24\n" + "\tlsls r2, 24\n" + "\tlsrs r4, r2, 24\n" + "\tmovs r2, 0xCF\n" + "\tlsls r2, 24\n" + "\tadds r1, r2\n" + "\tlsrs r1, 24\n" + "\tcmp r1, 0x1\n" + "\tbhi _0808B44E\n" + "\tcmp r0, 0x1A\n" + "\tbne _0808B44E\n" + "\tmovs r0, 0x1E\n" + "\tbl sub_8097FA8\n" + "\tcmp r4, 0\n" + "\tbeq _0808B418\n" + "\tldr r0, _0808B414\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x1\n" + "\tstrb r0, [r1, 0x2]\n" + "\tb _0808B44E\n" + "\t.align 2, 0\n" +"_0808B414: .4byte gUnknown_203B418\n" +"_0808B418:\n" + "\tldr r0, _0808B434\n" + "\tldr r0, [r0]\n" + "\tldr r1, _0808B438\n" + "\tadds r0, r1\n" + "\tldrb r4, [r0]\n" + "\tmovs r0, 0x36\n" + "\tbl sub_80860A8\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _0808B43C\n" + "\tbl JirachiWish\n" + "\tb _0808B440\n" + "\t.align 2, 0\n" +"_0808B434: .4byte gUnknown_203B418\n" +"_0808B438: .4byte 0x0001356c\n" +"_0808B43C:\n" + "\tbl sub_808B50C\n" +"_0808B440:\n" + "\tldr r0, _0808B454\n" + "\tldr r0, [r0]\n" + "\tldr r2, _0808B458\n" + "\tadds r0, r2\n" + "\tstrb r4, [r0]\n" + "\tbl sub_8040A84\n" +"_0808B44E:\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_0808B454: .4byte gUnknown_203B418\n" +"_0808B458: .4byte 0x0001356c"); +} +#endif + +void JirachiPreFightDialogue(void) +{ + struct unkDungeon_8041D5C * iVar1; + struct unkDungeon_8041D5C * uVar2; + + iVar1 = sub_8085480(); + uVar2 = sub_8085680(0x1a); + sub_8086448(); + sub_803E708(0x40,70); + sub_8052910(&gUnknown_8105438); + sub_803E708(10,70); + sub_808696C(iVar1); + sub_803E708(10,70); + sub_8052910(&gUnknown_81054A0); + sub_80861F8(0x37,uVar2,1); + sub_80855E4(sub_80862BC); + sub_803E708(0x3c,70); + sub_808BBB8(uVar2); + sub_803E708(0x5a,70); + sub_8052910(&gUnknown_81054E4); + sub_803E708(10,70); + sub_8052910(&gUnknown_810550C); + sub_803E708(10,70); + sub_8086A70(uVar2,0x15e,0x20); + sub_80858AC(&iVar1->unkC,0x10); +} + +void sub_808B50C(void) +{ + struct unkDungeon_8041D5C * iVar1; + + iVar1 = sub_8085680(0x1a); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_JIRACHI); + sub_80855E4(sub_808BBA8); + sub_808BBA8(iVar1); + sub_8041888(0); + iVar1->unk70->unk15C = 1; + iVar1->unk70->unk15E = 0; + sub_80861B8(iVar1,0xe,0); + sub_8083ED8(0x1e); + sub_803E708(0x1e,70); + // Fwaaaahhhh + sub_8052910(&gUnknown_810554C); + sub_8083E88(0x79); + // I think I had a dream, and I was fighting in it + // Did I imagine it? + // I'm sleepy so I'm going back to sleep. + sub_8052910(&gUnknown_8105558); + sub_803E708(10,70); + sub_808BC20(iVar1); + sub_8052910(&gUnknown_81055F4); + sub_803E708(10,70); + gUnknown_203B418->unk2 = 1; +} |