diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2021-12-01 16:33:06 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-01 14:33:06 -0800 |
commit | 4fc272fea6bc7332fae031ebeb12362cff1c35de (patch) | |
tree | 88092c6da3a6bb741caceab54f5372aee4ad5bae | |
parent | fd8720b75c56ef3f641e6c5abf6c446929c824b9 (diff) |
No wifi + 2 days on train = more decomp (#80)
* No wifi + 2 days on train = more decomp
* layin some more
* one func, one file
56 files changed, 1605 insertions, 2484 deletions
diff --git a/asm/code_801AFA4.s b/asm/code_801AFA4.s deleted file mode 100644 index 7485f58..0000000 --- a/asm/code_801AFA4.s +++ /dev/null @@ -1,51 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_801B374 -sub_801B374: - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0801B3A8 - ldr r4, [r1] - bl GetItemMove - lsls r0, 16 - lsrs r6, r0, 16 - movs r5, 0 -_0801B388: - ldrh r0, [r4] - lsrs r0, 1 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0801B3AC - movs r0, 0x8 - ldrsh r1, [r4, r0] - adds r0, r6, 0 - bl CanMonLearnMove - lsls r0, 24 - cmp r0, 0 - beq _0801B3AC - movs r0, 0 - b _0801B3BA - .align 2, 0 -_0801B3A8: .4byte gRecruitedPokemonRef -_0801B3AC: - adds r5, 0x1 - adds r4, 0x58 - movs r0, 0xCE - lsls r0, 1 - cmp r5, r0 - ble _0801B388 - movs r0, 0x1 -_0801B3BA: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_801B374 - - .align 2,0 diff --git a/asm/code_801B3C0.s b/asm/code_801B3C0.s index 173e4d6..435b731 100644 --- a/asm/code_801B3C0.s +++ b/asm/code_801B3C0.s @@ -465,7 +465,7 @@ sub_801BEEC: lsls r0, 16 asrs r5, r0, 16 adds r0, r5, 0 - bl sub_801C5F0 + bl HasNoAvailIQSkills lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0 @@ -854,7 +854,7 @@ _0801C1EA: adds r0, 0x20 adds r1, 0x28 ldrb r1, [r1] - bl sub_808EBF4 + bl ToggleIQSkill movs r0, 0x1 bl sub_801BFB4 b _0801C21E @@ -899,7 +899,7 @@ sub_801C244: lsls r0, 16 asrs r0, 16 adds r4, r0, 0 - bl sub_801C5F0 + bl HasNoAvailIQSkills lsls r0, 24 cmp r0, 0 beq _0801C25E @@ -1349,33 +1349,4 @@ _0801C5E8: .4byte gUnknown_80DBE1C _0801C5EC: .4byte gUnknown_203B23C thumb_func_end sub_801C4C8 - thumb_func_start sub_801C5F0 -sub_801C5F0: - push {lr} - sub sp, 0x18 - lsls r0, 16 - asrs r0, 16 - ldr r2, _0801C614 - movs r1, 0x58 - muls r1, r0 - ldr r0, [r2] - adds r0, r1 - movs r2, 0x14 - ldrsh r1, [r0, r2] - mov r0, sp - bl GetNumAvailableIQSkills - cmp r0, 0 - beq _0801C618 - movs r0, 0 - b _0801C61A - .align 2, 0 -_0801C614: .4byte gRecruitedPokemonRef -_0801C618: - movs r0, 0x1 -_0801C61A: - add sp, 0x18 - pop {r1} - bx r1 - thumb_func_end sub_801C5F0 - .align 2,0 diff --git a/asm/code_8040094.s b/asm/code_8040094.s index b4488f1..34ae163 100644 --- a/asm/code_8040094.s +++ b/asm/code_8040094.s @@ -445,7 +445,7 @@ _0804049E: beq _080404C4 _080404B2: adds r0, r4, 0 - bl sub_8045104 + bl GetTrapData ldr r1, _080404FC ldrb r0, [r0] adds r0, r1 diff --git a/asm/code_80428A0.s b/asm/code_80428A0.s index 6fc7011..bb8af3b 100644 --- a/asm/code_80428A0.s +++ b/asm/code_80428A0.s @@ -2422,7 +2422,7 @@ _08043E6E: cmp r0, 0x2 bne _08043EA0 adds r0, r4, 0 - bl sub_8045104 + bl GetTrapData adds r1, r0, 0 ldrb r0, [r1] cmp r0, 0x1B diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index 0ff1da5..5156376 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -690,8 +690,8 @@ sub_80528F4: bx r0 thumb_func_end sub_80528F4 - thumb_func_start sub_8052910 -sub_8052910: + thumb_func_start DisplayDungeonDialogue +DisplayDungeonDialogue: push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -987,7 +987,7 @@ _08052B72: bx r0 .align 2, 0 _08052B88: .4byte gUnknown_80F7AEA - thumb_func_end sub_8052910 + thumb_func_end DisplayDungeonDialogue thumb_func_start sub_8052B8C sub_8052B8C: @@ -4954,7 +4954,7 @@ _08054F40: adds r1, r5, 0 mov r2, r8 mov r3, r9 - bl sub_805BEA0 + bl LuminousOrbAction b _080554BA _08054F4E: adds r0, r7, 0 diff --git a/asm/code_8057824.s b/asm/code_8057824.s index c2cf874..c623f0d 100644 --- a/asm/code_8057824.s +++ b/asm/code_8057824.s @@ -9158,14 +9158,14 @@ sub_805BE90: bx r1 thumb_func_end sub_805BE90 - thumb_func_start sub_805BEA0 -sub_805BEA0: + thumb_func_start LuminousOrbAction +LuminousOrbAction: push {lr} - bl sub_804002C + bl HandleLuminousOrbAction movs r0, 0x1 pop {r1} bx r1 - thumb_func_end sub_805BEA0 + thumb_func_end LuminousOrbAction thumb_func_start sub_805BEAC sub_805BEAC: @@ -9353,7 +9353,7 @@ _0805BFF0: cmp r0, 0x2 bne _0805C028 adds r0, r4, 0 - bl sub_8045104 + bl GetTrapData ldrb r0, [r0] cmp r0, 0x11 beq _0805C028 @@ -14721,7 +14721,7 @@ _0805EEB8: .4byte _0805EF52 _0805EED0: adds r0, r4, 0 - bl sub_8045104 + bl GetTrapData adds r6, r0, 0 movs r0, 0 mov r8, r0 @@ -19934,7 +19934,7 @@ _08061994: bl sub_8083654 ldrb r1, [r0, 0x9] add r0, sp, 0x4 - bl sub_808EB0C + bl GetAvailTacticsforLvl movs r6, 0x1 negs r6, r6 movs r1, 0 @@ -20947,7 +20947,7 @@ _08062198: ldr r0, [sp, 0x11C] adds r0, 0x8C adds r1, r6, 0 - bl sub_808EBF4 + bl ToggleIQSkill b _080621BA .align 2, 0 _080621AC: .4byte 0x00000133 @@ -25618,7 +25618,7 @@ _080646C4: movs r1, 0 bl sub_803ECB4 adds r0, r4, 0 - bl sub_8045104 + bl GetTrapData adds r4, r0, 0 ldrb r1, [r4] mov r0, r10 diff --git a/asm/code_8070D04.s b/asm/code_8070D04.s index cc3c9f2..d995bdc 100644 --- a/asm/code_8070D04.s +++ b/asm/code_8070D04.s @@ -5,63 +5,6 @@ .text - thumb_func_start CannotAttack -CannotAttack: - push {lr} - adds r3, r0, 0 - lsls r1, 24 - ldr r2, [r3, 0x70] - cmp r1, 0 - bne _08070D22 - adds r0, r2, 0 - adds r0, 0xA8 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08070D22 - cmp r0, 0x4 - beq _08070D22 - cmp r0, 0 - bne _08070D64 -_08070D22: - adds r0, r2, 0 - adds r0, 0xB0 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08070D64 - cmp r0, 0x3 - beq _08070D64 - cmp r0, 0x4 - beq _08070D64 - cmp r0, 0x6 - beq _08070D64 - adds r0, r2, 0 - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x1 - beq _08070D64 - cmp r0, 0x3 - beq _08070D64 - cmp r0, 0x7 - beq _08070D64 - adds r0, r2, 0 - adds r0, 0xAC - ldrb r0, [r0] - cmp r0, 0x4 - beq _08070D64 - adds r0, r3, 0 - bl ShouldAvoidEnemies - lsls r0, 24 - cmp r0, 0 - bne _08070D64 - movs r0, 0 - b _08070D66 -_08070D64: - movs r0, 0x1 -_08070D66: - pop {r1} - bx r1 - thumb_func_end CannotAttack - thumb_func_start CannotMoveForward CannotMoveForward: push {r4-r6,lr} @@ -972,26 +915,4 @@ _0807146A: bx r1 thumb_func_end IsAtJunction - thumb_func_start ShouldAvoidFirstHit -ShouldAvoidFirstHit: - push {r4,lr} - lsls r1, 24 - lsrs r4, r1, 24 - movs r1, 0x3 - bl HasTactic - lsls r0, 24 - cmp r0, 0 - beq _0807148A - cmp r4, 0 - beq _0807148A - movs r0, 0x1 - b _0807148C -_0807148A: - movs r0, 0 -_0807148C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end ShouldAvoidFirstHit - .align 2, 0 diff --git a/asm/code_8071518.s b/asm/code_8071518.s index 7c80895..2aac9db 100644 --- a/asm/code_8071518.s +++ b/asm/code_8071518.s @@ -5,29 +5,6 @@ .text - thumb_func_start ShouldAvoidEnemies_2 -ShouldAvoidEnemies_2: - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - bl ShouldAvoidEnemies - lsls r0, 24 - cmp r0, 0 - bne _0807152E - movs r0, 0 - b _08071538 -_0807152E: - adds r0, r4, 0 - adds r1, r5, 0 - bl CheckRunAwayVisualFlag - movs r0, 0x1 -_08071538: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ShouldAvoidEnemies_2 - thumb_func_start CheckRunAwayVisualFlag CheckRunAwayVisualFlag: push {r4-r7,lr} @@ -269,177 +246,4 @@ _080716E4: bx r1 thumb_func_end sub_807167C - thumb_func_start sub_80716E8 -sub_80716E8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r0, [r4, 0x70] - adds r0, 0xC4 - ldrb r0, [r0] - cmp r0, 0x2 - bne _08071720 - cmp r2, 0 - beq _08071714 - ldr r0, _08071718 - movs r2, 0 - bl SetMessageArgument - ldr r0, _0807171C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08071714: - movs r0, 0x1 - b _08071722 - .align 2, 0 -_08071718: .4byte gAvailablePokemonNames -_0807171C: .4byte gUnknown_80FC2FC -_08071720: - movs r0, 0 -_08071722: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80716E8 - - thumb_func_start sub_8071728 -sub_8071728: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - adds r5, r2, 0 - ldr r0, [r4, 0x70] - adds r0, 0xC4 - ldrb r0, [r0] - cmp r0, 0xE - bne _08071758 - cmp r2, 0 - beq _0807178E - ldr r0, _08071750 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08071754 - b _08071784 - .align 2, 0 -_08071750: .4byte gAvailablePokemonNames -_08071754: .4byte gUnknown_80FC31C -_08071758: - adds r0, r4, 0 - movs r1, 0xF - bl HasAbility - lsls r0, 24 - cmp r0, 0 - bne _08071774 - adds r0, r4, 0 - movs r1, 0x18 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0807179C -_08071774: - cmp r5, 0 - beq _0807178E - ldr r0, _08071794 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08071798 -_08071784: - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_0807178E: - movs r0, 0x1 - b _0807179E .align 2, 0 -_08071794: .4byte gAvailablePokemonNames -_08071798: .4byte gUnknown_80FCEFC -_0807179C: - movs r0, 0 -_0807179E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8071728 - - thumb_func_start sub_80717A4 -sub_80717A4: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - ldr r6, [r0, 0x70] - adds r0, r6, 0 - adds r0, 0xA8 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080717CE - cmp r0, 0x5 - beq _080717CE - cmp r0, 0x3 - beq _080717CE - b _08071816 -_080717CA: - movs r0, 0x1 - b _08071818 -_080717CE: - movs r7, 0 - movs r0, 0x8C - lsls r0, 1 - adds r4, r6, r0 - adds r5, r4, 0 -_080717D8: - ldrb r1, [r4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0807180C - ldrb r0, [r6, 0x7] - cmp r0, 0 - bne _080717F0 - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0807180C -_080717F0: - mov r0, r8 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_805744C - lsls r0, 24 - cmp r0, 0 - beq _0807180C - ldrb r0, [r4, 0x4] - cmp r0, 0 - beq _0807180C - ldrh r0, [r4, 0x2] - cmp r0, r9 - beq _080717CA -_0807180C: - adds r4, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x3 - ble _080717D8 -_08071816: - movs r0, 0 -_08071818: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80717A4 - - .align 2, 0
\ No newline at end of file diff --git a/asm/code_80718D8.s b/asm/code_80718D8.s index 8fb9e78..35f9c8b 100644 --- a/asm/code_80718D8.s +++ b/asm/code_80718D8.s @@ -721,7 +721,7 @@ _08071E4C: beq _08071E68 ldrb r1, [r6, 0x9] add r0, sp, 0x74 - bl sub_808EB48 + bl GetAvailTacticsforLvl_Bool _08071E68: movs r0, 0x10 ldrsh r2, [r6, r0] @@ -863,7 +863,7 @@ _08071F7A: beq _08071FCA ldrb r1, [r6, 0x9] add r0, sp, 0x80 - bl sub_808EB48 + bl GetAvailTacticsforLvl_Bool movs r4, 0 add r7, sp, 0x74 add r5, sp, 0x80 @@ -958,7 +958,7 @@ _08072036: beq _0807204C add r0, sp, 0xC ldrb r1, [r5, 0x9] - bl sub_808EB48 + bl GetAvailTacticsforLvl_Bool _0807204C: movs r0, 0x10 ldrsh r2, [r5, r0] @@ -1045,7 +1045,7 @@ _080720E6: add r4, sp, 0x18 ldrb r1, [r5, 0x9] adds r0, r4, 0 - bl sub_808EB48 + bl GetAvailTacticsforLvl_Bool movs r6, 0 add r7, sp, 0xC _080720FA: @@ -3694,45 +3694,4 @@ _08073604: .4byte gUnknown_80FCF50 _08073608: .4byte 0x00000165 thumb_func_end sub_807348C - thumb_func_start sub_807360C -sub_807360C: - push {r4,r5,lr} - movs r5, 0 -_08073610: - ldr r0, _08073650 - ldr r0, [r0] - lsls r1, r5, 2 - ldr r2, _08073654 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08073644 - ldr r0, [r4, 0x70] - movs r2, 0xA9 - lsls r2, 1 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _08073644 - movs r0, 0 - strb r0, [r1] - adds r0, r4, 0 - adds r1, r4, 0 - bl sub_8077274 -_08073644: - adds r5, 0x1 - cmp r5, 0x13 - ble _08073610 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08073650: .4byte gDungeonGlobalData -_08073654: .4byte 0x000135cc - thumb_func_end sub_807360C - .align 2, 0 diff --git a/asm/code_80739DC.s b/asm/code_80739DC.s index 18efc16..cfee489 100644 --- a/asm/code_80739DC.s +++ b/asm/code_80739DC.s @@ -3697,7 +3697,7 @@ _08075770: .4byte _0807580C _08075788: adds r0, r5, 0 - bl sub_8045104 + bl GetTrapData adds r7, r0, 0 movs r0, 0 mov r8, r0 @@ -3772,185 +3772,4 @@ _0807580C: bx r0 thumb_func_end sub_8075708 - thumb_func_start sub_8075818 -sub_8075818: - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, [r4, 0x70] - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080758F6 - adds r0, r4, 0 - bl sub_8045128 - adds r5, r0, 0 - adds r0, r4, 0 - movs r1, 0xD - bl HasIQSkill - lsls r0, 24 - cmp r0, 0 - beq _08075848 - ldrh r1, [r5] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _080758F2 -_08075848: - ldr r4, [r5, 0x14] - cmp r4, 0 - beq _080758F6 - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x5 - bhi _080758F6 - lsls r0, 2 - ldr r1, _08075864 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08075864: .4byte _08075868 - .align 2, 0 -_08075868: - .4byte _080758F6 - .4byte _080758F6 - .4byte _08075880 - .4byte _080758BE - .4byte _080758F6 - .4byte _080758F6 -_08075880: - adds r0, r4, 0 - bl sub_8045104 - movs r1, 0 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _080758A0 - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _080758B8 - ldrb r0, [r6, 0x6] - cmp r0, 0 - bne _080758B8 - b _080758F2 -_080758A0: - cmp r0, 0x1 - bne _080758AC - ldrb r0, [r6, 0x6] - cmp r0, 0 - beq _080758B8 - b _080758F2 -_080758AC: - cmp r0, 0x2 - bne _080758B8 - ldrb r0, [r6, 0x6] - cmp r0, 0 - bne _080758B8 - movs r1, 0x1 -_080758B8: - cmp r1, 0 - beq _080758F6 - b _080758F2 -_080758BE: - ldrb r0, [r6, 0x7] - cmp r0, 0 - bne _080758F6 - adds r0, r6, 0 - adds r0, 0x60 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080758F6 - ldrh r1, [r5] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _080758E2 - ldrb r0, [r6, 0x6] - cmp r0, 0 - bne _080758F6 -_080758E2: - adds r0, r4, 0 - bl GetItemData - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080758F6 -_080758F2: - movs r0, 0x1 - b _080758F8 -_080758F6: - movs r0, 0 -_080758F8: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8075818 - - thumb_func_start sub_8075900 -sub_8075900: - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807597A - ldr r0, [r4, 0x70] - ldrb r0, [r0, 0x6] - cmp r0, 0 - bne _0807597A - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _0807597A - ldr r5, _08075980 - ldr r0, [r5] - ldr r1, _08075984 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0807597A - adds r0, r4, 0 - bl sub_8045128 - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0807597A - bl GetLeaderEntity - ldr r1, _08075988 - ldr r1, [r1] - bl SendMessage - ldr r0, [r5] - ldr r1, _0807598C - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_807AB38 - movs r0, 0 - bl sub_8041888 - adds r0, r4, 0x4 - bl sub_803F428 - lsls r0, 24 - cmp r0, 0 - beq _0807597A - movs r0, 0x78 - movs r1, 0x39 - bl sub_803E708 -_0807597A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08075980: .4byte gDungeonGlobalData -_08075984: .4byte 0x00000671 -_08075988: .4byte gUnknown_80FE308 -_0807598C: .4byte 0x00000672 - thumb_func_end sub_8075900 + .align 2,0 diff --git a/asm/code_8075BA4.s b/asm/code_8075BA4.s index 19928c2..dc265cb 100644 --- a/asm/code_8075BA4.s +++ b/asm/code_8075BA4.s @@ -5,48 +5,6 @@ .text - thumb_func_start sub_8075BA4 -sub_8075BA4: - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - ldr r4, [r5, 0x70] - cmp r1, 0 - beq _08075BD0 - adds r0, r4, 0 - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x4 - bne _08075BD0 - adds r0, r4, 0 - adds r0, 0x46 - ldrb r1, [r0] - adds r1, 0x4 - movs r2, 0x7 - ands r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl TargetTileInFront - b _08075BEC -_08075BD0: - adds r0, r4, 0 - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x2 - bne _08075BEC - movs r0, 0x8 - bl DungeonRandomCapped - adds r1, r4, 0 - adds r1, 0x46 - strb r0, [r1] - adds r0, r5, 0 - bl TargetTileInFront -_08075BEC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8075BA4 - thumb_func_start sub_8075BF4 sub_8075BF4: push {r4-r7,lr} @@ -20350,10 +20308,10 @@ _0807FD12: cmp r0, 0x2 bne _0807FD6E ldr r0, [r6, 0x14] - bl sub_8045104 + bl GetTrapData strb r5, [r0] ldr r0, [r6, 0x14] - bl sub_8045104 + bl GetTrapData mov r1, r8 strb r1, [r0, 0x1] ldr r0, [r6, 0x14] @@ -20566,7 +20524,7 @@ _0807FECE: b _080801B4 _0807FED8: mov r0, r10 - bl sub_8045104 + bl GetTrapData mov r8, r0 ldr r0, _0807FF58 mov r2, r8 @@ -22129,7 +22087,7 @@ sub_8080B00: cmp r0, 0x2 bne _08080B26 adds r0, r4, 0 - bl sub_8045104 + bl GetTrapData strb r5, [r0] _08080B26: bl sub_8049ED4 @@ -22305,7 +22263,7 @@ _08080C6A: cmp r0, 0x2 bne _08080CC8 adds r0, r5, 0 - bl sub_8045104 + bl GetTrapData adds r4, r0, 0 adds r0, r6, 0 adds r1, r4, 0 diff --git a/asm/code_80848F0.s b/asm/code_80848F0.s index 8b1c811..189480c 100644 --- a/asm/code_80848F0.s +++ b/asm/code_80848F0.s @@ -798,251 +798,4 @@ _08085858: .4byte gAdjacentTileOffsets _0808585C: .4byte 0x000135cc thumb_func_end sub_80857B8 - thumb_func_start sub_8085860 -sub_8085860: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - bl sub_803F4A0 - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 11 - movs r1, 0xC0 - lsls r1, 4 - adds r0, r1 - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 11 - movs r2, 0x80 - lsls r2, 5 - adds r1, r2 - bl sub_803F878 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8085860 - - thumb_func_start sub_8085890 -sub_8085890: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - bl sub_803F4A0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_803F878 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8085890 - - thumb_func_start sub_80858AC -sub_80858AC: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - adds r4, r1, 0 - bl sub_803F994 - adds r6, r0, 0 - bl sub_803F9B0 - adds r5, r0, 0 - ldr r0, [r7] - subs r0, r6 - adds r1, r4, 0 - bl __divsi3 - mov r9, r0 - ldr r0, [r7, 0x4] - subs r0, r5 - adds r1, r4, 0 - bl __divsi3 - mov r8, r0 - movs r0, 0 - bl sub_803F4A0 - cmp r4, 0 - ble _080858FE -_080858E6: - add r6, r9 - add r5, r8 - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_803F878 - movs r0, 0x46 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bne _080858E6 -_080858FE: - ldr r0, [r7] - ldr r1, [r7, 0x4] - bl sub_803F878 - movs r0, 0x46 - bl sub_803E46C - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80858AC - - thumb_func_start SetFacingDirection -SetFacingDirection: - push {r4,lr} - ldr r3, [r0, 0x70] - movs r4, 0x7 - adds r2, r1, 0 - ands r2, r4 - adds r3, 0x46 - strb r2, [r3] - bl sub_806CE68 - pop {r4} - pop {r0} - bx r0 - thumb_func_end SetFacingDirection - - thumb_func_start sub_8085930 -sub_8085930: - push {r4-r7,lr} - adds r6, r0, 0 - movs r5, 0 - movs r0, 0x7 - adds r7, r6, 0 - ands r7, r0 -_0808593C: - ldr r0, _0808596C - ldr r0, [r0] - lsls r1, r5, 2 - ldr r2, _08085970 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08085982 - cmp r6, 0x7 - ble _08085974 - movs r0, 0x8 - bl RandomCapped - adds r1, r0, 0 - adds r0, r4, 0 - bl sub_806CE68 - b _08085982 - .align 2, 0 -_0808596C: .4byte gDungeonGlobalData -_08085970: .4byte 0x0001357c -_08085974: - ldr r0, [r4, 0x70] - adds r0, 0x46 - strb r7, [r0] - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_806CE68 -_08085982: - adds r5, 0x1 - cmp r5, 0x3 - ble _0808593C - movs r5, 0 - movs r0, 0x7 - adds r7, r6, 0 - ands r7, r0 -_08085990: - ldr r0, _080859CC - ldr r0, [r0] - lsls r1, r5, 2 - ldr r2, _080859D0 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080859E2 - ldr r1, [r4, 0x70] - adds r0, r1, 0 - adds r0, 0xA4 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080859E2 - cmp r6, 0x7 - ble _080859D4 - movs r0, 0x8 - bl RandomCapped - adds r1, r0, 0 - adds r0, r4, 0 - bl sub_806CE68 - b _080859E2 - .align 2, 0 -_080859CC: .4byte gDungeonGlobalData -_080859D0: .4byte 0x0001358c -_080859D4: - adds r0, r1, 0 - adds r0, 0x46 - strb r7, [r0] - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_806CE68 -_080859E2: - adds r5, 0x1 - cmp r5, 0xF - ble _08085990 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8085930 - - thumb_func_start sub_80859F0 -sub_80859F0: - push {r4-r7,lr} - adds r6, r0, 0 - movs r5, 0 - movs r0, 0x7 - adds r7, r6, 0 - ands r7, r0 -_080859FC: - ldr r0, _08085A2C - ldr r0, [r0] - lsls r1, r5, 2 - ldr r2, _08085A30 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08085A42 - cmp r6, 0x7 - ble _08085A34 - movs r0, 0x8 - bl RandomCapped - adds r1, r0, 0 - adds r0, r4, 0 - bl sub_806CE68 - b _08085A42 - .align 2, 0 -_08085A2C: .4byte gDungeonGlobalData -_08085A30: .4byte 0x0001358c -_08085A34: - ldr r0, [r4, 0x70] - adds r0, 0x46 - strb r7, [r0] - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_806CE68 -_08085A42: - adds r5, 0x1 - cmp r5, 0xF - ble _080859FC - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80859F0 - .align 2, 0 diff --git a/asm/code_8086A3C.s b/asm/code_8086A3C.s index ae72ef7..d0cd7dc 100644 --- a/asm/code_8086A3C.s +++ b/asm/code_8086A3C.s @@ -68,12 +68,12 @@ TeamMeaniesPreFightDialogue: movs r1, 0x46 bl sub_803E708 ldr r0, _08087048 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 ldr r0, _0808704C - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -81,27 +81,27 @@ TeamMeaniesPreFightDialogue: movs r0, 0xA bl sub_8083E88 ldr r0, _08087050 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 ldr r0, _08087054 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 ldr r0, _08087058 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 ldr r0, _0808705C - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 ldr r0, _08087060 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -131,12 +131,12 @@ TeamMeaniesReFightDialogue: adds r5, r0, 0 bl sub_8086448 ldr r0, _08087118 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 ldr r0, _0808711C - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -145,12 +145,12 @@ TeamMeaniesReFightDialogue: movs r1, 0x46 bl sub_803E708 ldr r0, _08087120 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 ldr r0, _08087124 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -177,9 +177,9 @@ TeamMeaniesReFightDialogue: movs r1, 0x46 bl sub_803E708 ldr r0, _08087128 - bl sub_8052910 + bl DisplayDungeonDialogue ldr r0, _0808712C - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -493,7 +493,7 @@ ZapdosPreFightDialogue: movs r3, 0x6 bl sub_80869E4 ldr r0, _08087470 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -508,7 +508,7 @@ ZapdosPreFightDialogue: movs r3, 0x4 bl sub_80869E4 ldr r0, _08087474 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -519,7 +519,7 @@ ZapdosPreFightDialogue: lsls r0, 1 bl PlaySoundEffect ldr r0, _08087478 - bl sub_8052910 + bl DisplayDungeonDialogue ldr r0, [sp, 0x68] bl sub_8087704 movs r0, 0x9 @@ -529,7 +529,7 @@ ZapdosPreFightDialogue: movs r2, 0x4 bl sub_806CDD4 ldr r0, _0808747C - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -599,12 +599,12 @@ _0808748E: movs r3, 0x4 bl sub_80869E4 ldr r0, _08087518 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0x3C movs r1, 0x46 bl sub_803E708 ldr r0, _0808751C - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -655,28 +655,28 @@ _0808752A: movs r3, 0x3 bl sub_80869E4 ldr r0, _080875B0 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 movs r0, 0x3 bl sub_808775C ldr r0, _080875B4 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 movs r0, 0x1 bl sub_808775C ldr r0, _080875B8 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 movs r0, 0x2 bl sub_808775C ldr r0, _080875BC - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 diff --git a/asm/code_80958E8.s b/asm/code_80958E8.s index dfcbae4..b8d3c7a 100644 --- a/asm/code_80958E8.s +++ b/asm/code_80958E8.s @@ -602,7 +602,7 @@ sub_8095F8C: _08095F92: lsls r0, r4, 24 lsrs r0, 24 - bl CheckMailSlot + bl IsMailSlotEmpty lsls r0, 24 cmp r0, 0 bne _08095FA2 @@ -666,8 +666,8 @@ sub_8095FE8: _08095FFC: .4byte gUnknown_203B490 thumb_func_end sub_8095FE8 - thumb_func_start CheckMailSlot -CheckMailSlot: + thumb_func_start IsMailSlotEmpty +IsMailSlotEmpty: push {lr} lsls r0, 24 lsrs r0, 24 @@ -689,7 +689,7 @@ _08096020: _08096022: pop {r1} bx r1 - thumb_func_end CheckMailSlot + thumb_func_end IsMailSlotEmpty thumb_func_start sub_8096028 sub_8096028: @@ -1994,7 +1994,7 @@ GetNumAcceptedJobs: _080969B2: lsls r0, r4, 24 lsrs r0, 24 - bl CheckJobSlot + bl IsJobSlotEmpty lsls r0, 24 cmp r0, 0 bne _080969C2 @@ -2155,8 +2155,8 @@ sub_8096AB4: _08096AC8: .4byte gUnknown_203B490 thumb_func_end sub_8096AB4 - thumb_func_start CheckJobSlot -CheckJobSlot: + thumb_func_start IsJobSlotEmpty +IsJobSlotEmpty: push {lr} lsls r0, 24 lsrs r0, 24 @@ -2179,7 +2179,7 @@ _08096AF0: _08096AF2: pop {r1} bx r1 - thumb_func_end CheckJobSlot + thumb_func_end IsJobSlotEmpty thumb_func_start sub_8096AF8 sub_8096AF8: diff --git a/asm/jirachi_wish.s b/asm/jirachi_wish.s index cc21bd0..f641862 100644 --- a/asm/jirachi_wish.s +++ b/asm/jirachi_wish.s @@ -55,7 +55,7 @@ JirachiWish: movs r1, 0x46 bl sub_803E708 ldr r0, _0808B844 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -67,7 +67,7 @@ JirachiWish: adds r0, r6, 0 bl sub_80862BC ldr r0, _0808B84C - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0x79 bl sub_8083E88 movs r0, 0xA @@ -80,14 +80,14 @@ JirachiWish: lsls r0, 1 bl PlaySoundEffect ldr r0, _0808B850 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 adds r0, r6, 0 bl SpriteLookAroundEffect ldr r0, _0808B854 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -109,7 +109,7 @@ _0808B692: cmp r2, 0x1 bne _0808B754 ldr r0, _0808B864 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -187,7 +187,7 @@ _0808B754: cmp r0, 0x2 bne _0808B80A ldr r0, _0808B874 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -276,7 +276,7 @@ _0808B80A: cmp r4, 0x3A bne _0808B87C ldr r0, _0808B878 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -304,7 +304,7 @@ _0808B874: .4byte gUnknown_8105974 _0808B878: .4byte gUnknown_8105A08 _0808B87C: ldr r0, _0808BA30 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -316,7 +316,7 @@ _0808B87C: movs r0, 0 strb r0, [r1] ldr r0, _0808BA38 - bl sub_8052910 + bl DisplayDungeonDialogue adds r0, r4, 0 bl UnlockFriendArea movs r0, 0xD4 @@ -331,13 +331,13 @@ _0808B87C: movs r2, 0 bl sub_8092578 ldr r0, _0808BA44 - bl sub_8052910 + bl DisplayDungeonDialogue _0808B8CA: mov r0, r9 cmp r0, 0x4 bne _0808B98E ldr r0, _0808BA48 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -417,7 +417,7 @@ _0808B970: movs r0, 0 strb r0, [r1] ldr r0, _0808BA58 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -426,7 +426,7 @@ _0808B98E: cmp r0, 0x5 bne _0808B9F8 ldr r0, _0808BA5C - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -438,7 +438,7 @@ _0808B98E: movs r0, 0 strb r0, [r1] ldr r0, _0808BA60 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -454,7 +454,7 @@ _0808B98E: movs r1, 0x46 bl sub_803E708 ldr r0, _0808BA64 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 @@ -466,14 +466,14 @@ _0808B98E: strb r1, [r0] _0808B9F8: ldr r0, _0808BA70 - bl sub_8052910 + bl DisplayDungeonDialogue adds r0, r6, 0 bl sub_808BC20 movs r0, 0xA movs r1, 0x46 bl sub_803E708 ldr r0, _0808BA74 - bl sub_8052910 + bl DisplayDungeonDialogue movs r0, 0xA movs r1, 0x46 bl sub_803E708 diff --git a/asm/memory_1.s b/asm/memory_1.s index f289567..97833ca 100644 --- a/asm/memory_1.s +++ b/asm/memory_1.s @@ -5,51 +5,6 @@ .text - thumb_func_start MemoryLocate_LocalCreate -MemoryLocate_LocalCreate: - push {r4-r7,lr} - sub sp, 0xC - adds r4, r0, 0 - adds r5, r1, 0 - adds r7, r2, 0 - adds r6, r3, 0 - cmp r4, 0 - bne _08003412 - ldr r4, =gMainHeapDescriptor -_08003412: - adds r0, r4, 0 - movs r1, 0x9 - adds r2, r5, 0 - bl MemorySearchFromBack - adds r1, r0, 0 - cmp r1, 0 - bge _08003438 - ldr r0, =gUnknown_80B7F88 - ldr r1, =gLocalCreateErrorMessage - adds r2, r5, 0 - bl FatalError - .align 2, 0 - .pool -_08003438: - str r6, [sp] - adds r0, r4, 0 - movs r2, 0x9 - adds r3, r5, 0 - bl _LocateSetBack - ldr r1, [r0, 0xC] - str r1, [sp, 0x4] - ldr r0, [r0, 0x10] - str r0, [sp, 0x8] - add r0, sp, 0x4 - adds r1, r7, 0 - bl DoCreateSubHeap - str r4, [r0, 0x4] - add sp, 0xC - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end MemoryLocate_LocalCreate - thumb_func_start DoCreateSubHeap DoCreateSubHeap: push {r4,lr} diff --git a/asm/rescue_password_menu.s b/asm/rescue_password_menu.s index 88fcd49..44675db 100644 --- a/asm/rescue_password_menu.s +++ b/asm/rescue_password_menu.s @@ -721,7 +721,7 @@ sub_8039068: adds r0, r5, 0 adds r0, 0x22 ldrb r0, [r0] - bl sub_8092040 + bl IsInvalidItemReward lsls r0, 24 cmp r0, 0 beq _080390B4 diff --git a/asm/wonder_mail_2.s b/asm/wonder_mail_2.s index d8428b8..dd6f99f 100644 --- a/asm/wonder_mail_2.s +++ b/asm/wonder_mail_2.s @@ -5,319 +5,6 @@ .text - thumb_func_start sub_802BCC4 -sub_802BCC4: - push {r4,lr} - ldr r4, _0802BCDC - ldr r0, [r4] - ldrb r0, [r0, 0x4] - bl GetPokemonMailText - adds r3, r0, 0 - ldr r1, [r4] - movs r0, 0 - str r0, [r1, 0xC] - str r3, [r1, 0x10] - b _0802BD08 - .align 2, 0 -_0802BCDC: .4byte gUnknown_203B2D4 -_0802BCE0: - cmp r0, 0x23 - bne _0802BD06 - ldrb r2, [r3, 0x1] - cmp r2, 0x50 - beq _0802BCF0 - adds r1, r3, 0x2 - cmp r2, 0x70 - bne _0802BD02 -_0802BCF0: - ldr r0, [r4] - ldr r1, [r0, 0xC] - adds r1, 0x1 - str r1, [r0, 0xC] - lsls r1, 2 - adds r0, 0x10 - adds r0, r1 - adds r1, r3, 0x2 - str r1, [r0] -_0802BD02: - adds r3, r1, 0 - b _0802BD08 -_0802BD06: - adds r3, 0x1 -_0802BD08: - ldrb r0, [r3] - cmp r0, 0 - bne _0802BCE0 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_802BCC4 - - thumb_func_start sub_802BD14 -sub_802BD14: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - adds r4, r1, 0 - mov r8, r2 - bl HasNoMailinMailbox - lsls r0, 24 - cmp r0, 0 - beq _0802BD2E - movs r0, 0 - b _0802BDD4 -_0802BD2E: - ldr r5, _0802BDE0 - ldr r0, [r5] - cmp r0, 0 - bne _0802BD40 - movs r0, 0xA4 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r5] -_0802BD40: - ldr r0, [r5] - str r6, [r0, 0x38] - lsls r1, r6, 1 - adds r1, r6 - lsls r1, 3 - adds r1, 0x40 - adds r1, r0, r1 - str r1, [r0, 0x3C] - adds r0, 0x40 - bl sub_8006518 - ldr r1, [r5] - ldr r2, [r1, 0x38] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r1, 0x40 - ldr r0, _0802BDE4 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldr r2, [r5] - ldr r1, [r2, 0x3C] - adds r0, r2, 0 - adds r0, 0xA0 - str r0, [r1, 0x14] - cmp r4, 0 - beq _0802BD8E - ldr r1, [r2, 0x38] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r1, r2, 0 - adds r1, 0x48 - adds r1, r0 - ldr r0, [r4] - str r0, [r1] -_0802BD8E: - ldr r0, [r5] - ldr r0, [r0, 0x3C] - mov r1, r8 - bl sub_8012D34 - bl ResetUnusedInputStruct - ldr r0, [r5] - adds r0, 0x40 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r4, [r5] - adds r4, 0x4 - bl sub_802C0B8 - adds r1, r0, 0 - adds r0, r4, 0 - mov r2, r8 - adds r3, r6, 0 - bl sub_8013848 - ldr r0, [r5] - ldr r1, _0802BDE8 - ldrh r1, [r1] - strh r1, [r0, 0x1C] - adds r0, 0x4 - bl sub_8013984 - bl sub_802BF30 - bl CreateMailMenu - movs r0, 0x1 -_0802BDD4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0802BDE0: .4byte gUnknown_203B2D8 -_0802BDE4: .4byte gUnknown_80DFC74 -_0802BDE8: .4byte gUnknown_203B2DC - thumb_func_end sub_802BD14 - - thumb_func_start sub_802BDEC -sub_802BDEC: - push {lr} - lsls r0, 24 - cmp r0, 0 - bne _0802BE08 - ldr r0, _0802BE04 - ldr r0, [r0] - adds r0, 0x4 - bl sub_8013660 - movs r0, 0 - b _0802BE6E - .align 2, 0 -_0802BE04: .4byte gUnknown_203B2D8 -_0802BE08: - ldr r0, _0802BE20 - ldr r0, [r0] - adds r0, 0x4 - bl GetKeyPress - cmp r0, 0x2 - beq _0802BE2A - cmp r0, 0x2 - bgt _0802BE24 - cmp r0, 0x1 - beq _0802BE34 - b _0802BE48 - .align 2, 0 -_0802BE20: .4byte gUnknown_203B2D8 -_0802BE24: - cmp r0, 0x4 - beq _0802BE3E - b _0802BE48 -_0802BE2A: - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - b _0802BE6E -_0802BE34: - movs r0, 0 - bl PlayMenuSoundEffect - movs r0, 0x3 - b _0802BE6E -_0802BE3E: - movs r0, 0x4 - bl PlayMenuSoundEffect - movs r0, 0x4 - b _0802BE6E -_0802BE48: - ldr r0, _0802BE60 - ldr r0, [r0] - adds r0, 0x4 - movs r1, 0x1 - bl sub_80138B8 - lsls r0, 24 - cmp r0, 0 - bne _0802BE64 - movs r0, 0 - b _0802BE6E - .align 2, 0 -_0802BE60: .4byte gUnknown_203B2D8 -_0802BE64: - bl sub_802BF30 - bl CreateMailMenu - movs r0, 0x1 -_0802BE6E: - pop {r1} - bx r1 - thumb_func_end sub_802BDEC - - thumb_func_start sub_802BE74 -sub_802BE74: - ldr r0, _0802BE90 - ldr r1, [r0] - movs r0, 0x22 - ldrsh r2, [r1, r0] - movs r3, 0x20 - ldrsh r0, [r1, r3] - muls r0, r2 - movs r3, 0x1C - ldrsh r2, [r1, r3] - adds r0, r2 - adds r1, r0 - ldrb r0, [r1] - bx lr - .align 2, 0 -_0802BE90: .4byte gUnknown_203B2D8 - thumb_func_end sub_802BE74 - - thumb_func_start sub_802BE94 -sub_802BE94: - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ResetUnusedInputStruct - ldr r5, _0802BED8 - ldr r0, [r5] - adds r0, 0x40 - movs r1, 0 - movs r2, 0 - bl sub_800641C - bl sub_802C0B8 - adds r1, r0, 0 - ldr r0, [r5] - strh r1, [r0, 0x26] - adds r0, 0x4 - bl sub_8013984 - bl sub_802BF30 - bl CreateMailMenu - cmp r4, 0 - beq _0802BED2 - ldr r0, [r5] - adds r0, 0x4 - bl AddMenuCursorSprite -_0802BED2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802BED8: .4byte gUnknown_203B2D8 - thumb_func_end sub_802BE94 - - thumb_func_start sub_802BEDC -sub_802BEDC: - push {r4,r5,lr} - ldr r4, _0802BF24 - ldr r2, [r4] - cmp r2, 0 - beq _0802BF1C - ldr r1, _0802BF28 - ldrh r0, [r2, 0x1C] - strh r0, [r1] - ldr r0, [r2, 0x38] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x40 - ldr r0, _0802BF2C - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x40 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0802BF1C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802BF24: .4byte gUnknown_203B2D8 -_0802BF28: .4byte gUnknown_203B2DC -_0802BF2C: .4byte gUnknown_80DFC5C - thumb_func_end sub_802BEDC - thumb_func_start sub_802BF30 sub_802BF30: push {r4,lr} @@ -505,15 +192,15 @@ _0802C09A: _0802C0B4: .4byte gUnknown_203B2D8 thumb_func_end CreateMailMenu - thumb_func_start sub_802C0B8 -sub_802C0B8: + thumb_func_start CountEmptyMailSlots +CountEmptyMailSlots: push {r4,r5,lr} movs r5, 0 movs r4, 0 _0802C0BE: lsls r0, r4, 24 lsrs r0, 24 - bl CheckMailSlot + bl IsMailSlotEmpty lsls r0, 24 cmp r0, 0 bne _0802C0D6 @@ -532,7 +219,7 @@ _0802C0D6: bx r1 .align 2, 0 _0802C0E4: .4byte gUnknown_203B2D8 - thumb_func_end sub_802C0B8 + thumb_func_end CountEmptyMailSlots thumb_func_start HasNoMailinMailbox HasNoMailinMailbox: @@ -541,7 +228,7 @@ HasNoMailinMailbox: _0802C0EC: lsls r0, r4, 24 lsrs r0, 24 - bl CheckMailSlot + bl IsMailSlotEmpty lsls r0, 24 cmp r0, 0 bne _0802C0FE @@ -1452,7 +1139,7 @@ sub_802C80C: _0802C812: lsls r0, r4, 24 lsrs r0, 24 - bl CheckJobSlot + bl IsJobSlotEmpty lsls r0, 24 cmp r0, 0 bne _0802C82A @@ -1480,7 +1167,7 @@ HasNoAcceptedJobs: _0802C840: lsls r0, r4, 24 lsrs r0, 24 - bl CheckJobSlot + bl IsJobSlotEmpty lsls r0, 24 cmp r0, 0 bne _0802C852 diff --git a/asm/wonder_mail_3.s b/asm/wonder_mail_3.s index cd6126f..2423107 100644 --- a/asm/wonder_mail_3.s +++ b/asm/wonder_mail_3.s @@ -733,584 +733,4 @@ _0802DB1C: _0802DB24: .4byte gUnknown_203B490 thumb_func_end sub_802DADC - thumb_func_start sub_802DB28 -sub_802DB28: - push {r4-r6,lr} - sub sp, 0x8 - adds r2, r1, 0 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r2, 24 - lsrs r2, 24 - mov r0, sp - adds r1, r6, 0 - bl sub_8096AF8 - mov r0, sp - ldrb r0, [r0] - cmp r0, 0 - bne _0802DB4A - movs r0, 0 - b _0802DBC6 -_0802DB4A: - bl ResetUnusedInputStruct - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r4, _0802DBD0 - movs r0, 0xA8 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r4] - adds r0, 0x30 - movs r5, 0 - strb r6, [r0] - adds r0, r6, 0 - bl sub_8096AB4 - ldr r1, [r4] - str r0, [r1, 0x34] - bl sub_8096EEC - ldr r1, [r4] - ldr r0, [r1, 0x34] - adds r1, 0x8 - bl sub_803C21C - ldr r0, [r4] - ldr r0, [r0, 0x34] - movs r1, 0xC - ldrsh r0, [r0, r1] - bl GetDialogueSpriteDataPtr - ldr r1, [r4] - str r0, [r1, 0x38] - str r5, [r1, 0x3C] - adds r1, 0x44 - strb r5, [r1] - ldr r0, [r4] - adds r0, 0x45 - strb r5, [r0] - ldr r0, [r4] - adds r0, 0x46 - strb r5, [r0] - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x40 - movs r0, 0x2 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x8 - strh r0, [r1] - ldr r0, [r2, 0x38] - cmp r0, 0 - beq _0802DBBE - ldr r0, [r0, 0x4] - str r0, [r2, 0x3C] -_0802DBBE: - movs r0, 0 - bl sub_802DC28 - movs r0, 0x1 -_0802DBC6: - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0802DBD0: .4byte gUnknown_203B2FC - thumb_func_end sub_802DB28 - - thumb_func_start sub_802DBD4 -sub_802DBD4: - push {lr} - ldr r0, _0802DBEC - ldr r0, [r0] - ldr r1, [r0] - cmp r1, 0x6 - beq _0802DBF0 - cmp r1, 0x7 - bne _0802DBF6 - ldr r0, [r0, 0x34] - strb r1, [r0] - movs r0, 0x3 - b _0802DBFC - .align 2, 0 -_0802DBEC: .4byte gUnknown_203B2FC -_0802DBF0: - bl sub_802DE44 - b _0802DBFA -_0802DBF6: - bl sub_802DE60 -_0802DBFA: - movs r0, 0 -_0802DBFC: - pop {r1} - bx r1 - thumb_func_end sub_802DBD4 - - thumb_func_start sub_802DC00 -sub_802DC00: - push {r4,lr} - ldr r4, _0802DC24 - ldr r0, [r4] - cmp r0, 0 - beq _0802DC1E - ldr r0, [r0, 0x38] - cmp r0, 0 - beq _0802DC14 - bl CloseFile -_0802DC14: - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0802DC1E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802DC24: .4byte gUnknown_203B2FC - thumb_func_end sub_802DC00 - - thumb_func_start sub_802DC28 -sub_802DC28: - push {lr} - ldr r1, _0802DC3C - ldr r1, [r1] - str r0, [r1] - bl sub_802DC40 - bl sub_802DC9C - pop {r0} - bx r0 - .align 2, 0 -_0802DC3C: .4byte gUnknown_203B2FC - thumb_func_end sub_802DC28 - - thumb_func_start sub_802DC40 -sub_802DC40: - push {r4-r7,lr} - ldr r4, _0802DC94 - ldr r0, [r4] - adds r0, 0x48 - bl sub_8006518 - ldr r0, [r4] - ldr r0, [r0] - cmp r0, 0 - beq _0802DC58 - cmp r0, 0x7 - bne _0802DC7A -_0802DC58: - mov r12, r4 - ldr r4, _0802DC98 - movs r3, 0 - movs r2, 0x3 -_0802DC60: - mov r0, r12 - ldr r1, [r0] - adds r1, r3 - adds r1, 0x48 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _0802DC60 -_0802DC7A: - bl ResetUnusedInputStruct - ldr r0, _0802DC94 - ldr r0, [r0] - adds r0, 0x48 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802DC94: .4byte gUnknown_203B2FC -_0802DC98: .4byte gUnknown_80E016C - thumb_func_end sub_802DC40 - - thumb_func_start sub_802DC9C -sub_802DC9C: - push {r4,r5,lr} - ldr r1, _0802DCB8 - ldr r0, [r1] - ldr r0, [r0] - adds r5, r1, 0 - cmp r0, 0x7 - bls _0802DCAC - b _0802DE3E -_0802DCAC: - lsls r0, 2 - ldr r1, _0802DCBC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802DCB8: .4byte gUnknown_203B2FC -_0802DCBC: .4byte _0802DCC0 - .align 2, 0 -_0802DCC0: - .4byte _0802DCE0 - .4byte _0802DDDC - .4byte _0802DDE4 - .4byte _0802DDEC - .4byte _0802DDFC - .4byte _0802DDF4 - .4byte _0802DE34 - .4byte _0802DE3E -_0802DCE0: - ldr r0, _0802DD60 - ldr r1, [r5] - ldr r1, [r1, 0x34] - movs r2, 0xC - ldrsh r1, [r1, r2] - bl CopyYellowSpeciesNametoBuffer - ldr r4, _0802DD64 - ldr r0, [r5] - ldr r0, [r0, 0x34] - movs r2, 0xC - ldrsh r1, [r0, r2] - adds r0, r4, 0 - bl CopyYellowSpeciesNametoBuffer - ldr r0, [r5] - ldr r0, [r0, 0x34] - movs r1, 0xC - ldrsh r0, [r0, r1] - bl GetMonSpecies - adds r1, r0, 0 - ldr r2, _0802DD68 - adds r0, r4, r2 - bl strcpy - ldr r0, [r5] - ldr r0, [r0, 0x34] - movs r1, 0xE - ldrsh r0, [r0, r1] - bl GetMonSpecies - adds r1, r0, 0 - ldr r2, _0802DD6C - adds r4, r2 - adds r0, r4, 0 - bl strcpy - ldr r0, [r5] - ldr r0, [r0, 0x34] - movs r1, 0xC - ldrsh r0, [r0, r1] - bl UnlockExclusivePokemon - ldr r0, _0802DD70 - ldr r1, [r5] - ldr r1, [r1, 0x34] - ldrb r1, [r1, 0x10] - movs r2, 0 - bl sub_8090DC4 - ldr r1, [r5] - movs r0, 0x6 - str r0, [r1, 0x4] - ldr r0, [r1, 0x34] - ldrb r0, [r0, 0x1] - cmp r0, 0x4 - bhi _0802DDD4 - lsls r0, 2 - ldr r1, _0802DD74 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802DD60: .4byte gUnknown_202E5D8 -_0802DD64: .4byte gUnknown_202E1C8 -_0802DD68: .4byte 0xfffffdd0 -_0802DD6C: .4byte 0xfffffe20 -_0802DD70: .4byte gUnknown_202DE58 -_0802DD74: .4byte _0802DD78 - .align 2, 0 -_0802DD78: - .4byte _0802DDD4 - .4byte _0802DD9C - .4byte _0802DDB8 - .4byte _0802DD94 - .4byte _0802DD8C -_0802DD8C: - movs r0, 0x5 - bl sub_802DC28 - b _0802DE3E -_0802DD94: - movs r0, 0x4 - bl sub_802DC28 - b _0802DE3E -_0802DD9C: - movs r0, 0x2 - bl sub_802DC28 - ldr r0, _0802DDB4 - ldr r0, [r0] - ldr r0, [r0, 0x34] - movs r2, 0xE - ldrsh r0, [r0, r2] - bl UnlockExclusivePokemon - b _0802DE3E - .align 2, 0 -_0802DDB4: .4byte gUnknown_203B2FC -_0802DDB8: - movs r0, 0x3 - bl sub_802DC28 - ldr r0, _0802DDD0 - ldr r0, [r0] - ldr r0, [r0, 0x34] - movs r1, 0xE - ldrsh r0, [r0, r1] - bl UnlockExclusivePokemon - b _0802DE3E - .align 2, 0 -_0802DDD0: .4byte gUnknown_203B2FC -_0802DDD4: - movs r0, 0x1 - bl sub_802DC28 - b _0802DE3E -_0802DDDC: - ldr r0, _0802DDE0 - b _0802DE1C - .align 2, 0 -_0802DDE0: .4byte gWonderMailClientThanksForRescuingMe -_0802DDE4: - ldr r0, _0802DDE8 - b _0802DE1C - .align 2, 0 -_0802DDE8: .4byte gWonderMailClientThanksForRescuingThem -_0802DDEC: - ldr r0, _0802DDF0 - b _0802DE1C - .align 2, 0 -_0802DDF0: .4byte gWonderMailClientEscorted -_0802DDF4: - ldr r0, _0802DDF8 - b _0802DE1C - .align 2, 0 -_0802DDF8: .4byte gWonderMailClientItemDelivered1 -_0802DDFC: - ldr r0, [r5] - ldr r0, [r0, 0x34] - ldrb r0, [r0, 0x10] - bl FindItemInInventory - adds r1, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0802DE1A - adds r0, r1, 0 - bl ShiftItemsDownFrom - bl FillInventoryGaps -_0802DE1A: - ldr r0, _0802DE2C -_0802DE1C: - ldr r2, [r5] - adds r2, 0x38 - ldr r3, _0802DE30 - movs r1, 0 - bl sub_80141B4 - b _0802DE3E - .align 2, 0 -_0802DE2C: .4byte gWonderMailClientItemDelivered2 -_0802DE30: .4byte 0x0000010d -_0802DE34: - ldr r0, [r5] - adds r0, 0x8 - movs r1, 0x1 - bl sub_802F204 -_0802DE3E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_802DC9C - - thumb_func_start sub_802DE44 -sub_802DE44: - push {lr} - bl sub_802F298 - cmp r0, 0x1 - bls _0802DE5C - cmp r0, 0x3 - bhi _0802DE5C - bl sub_802F2C0 - movs r0, 0x7 - bl sub_802DC28 -_0802DE5C: - pop {r0} - bx r0 - thumb_func_end sub_802DE44 - - thumb_func_start sub_802DE60 -sub_802DE60: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802DE78 - ldr r0, _0802DE80 - ldr r0, [r0] - ldr r0, [r0, 0x4] - bl sub_802DC28 -_0802DE78: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0802DE80: .4byte gUnknown_203B2FC - thumb_func_end sub_802DE60 - - thumb_func_start sub_802DE84 -sub_802DE84: - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _0802DED8 - movs r0, 0x7C - movs r1, 0x8 - bl MemoryAlloc - str r0, [r4] - str r5, [r0, 0xC] - bl sub_801317C - ldr r0, [r4] - ldr r1, [r0, 0xC] - ldr r2, [r1] - str r2, [r0, 0x10] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 3 - adds r1, 0x18 - adds r1, r0, r1 - str r1, [r0, 0x14] - adds r0, 0x18 - bl sub_8006518 - ldr r1, [r4] - ldr r2, [r1, 0x10] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r1, 0x18 - ldr r0, _0802DEDC - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - bl sub_802DF14 - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0802DED8: .4byte gUnknown_203B300 -_0802DEDC: .4byte gUnknown_80E0264 - thumb_func_end sub_802DE84 - - thumb_func_start sub_802DEE0 -sub_802DEE0: - push {lr} - ldr r0, _0802DF00 - ldr r0, [r0] - ldr r1, [r0, 0x10] - bl sub_8012A64 - cmp r0, 0x1 - beq _0802DF04 - cmp r0, 0x2 - bne _0802DF0E - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - b _0802DF10 - .align 2, 0 -_0802DF00: .4byte gUnknown_203B300 -_0802DF04: - movs r0, 0 - bl PlayMenuSoundEffect - movs r0, 0x3 - b _0802DF10 -_0802DF0E: - movs r0, 0 -_0802DF10: - pop {r1} - bx r1 - thumb_func_end sub_802DEE0 - - thumb_func_start sub_802DF14 -sub_802DF14: - push {lr} - bl sub_802DF6C - bl sub_802DF88 - pop {r0} - bx r0 - thumb_func_end sub_802DF14 - - thumb_func_start sub_802DF24 -sub_802DF24: - push {r4,r5,lr} - ldr r4, _0802DF64 - ldr r2, [r4] - cmp r2, 0 - beq _0802DF5E - ldr r0, [r2, 0x10] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x18 - ldr r0, _0802DF68 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x18 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0802DF5E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802DF64: .4byte gUnknown_203B300 -_0802DF68: .4byte gUnknown_80E0248 - thumb_func_end sub_802DF24 - - thumb_func_start sub_802DF6C -sub_802DF6C: - push {lr} - bl ResetUnusedInputStruct - ldr r0, _0802DF84 - ldr r0, [r0] - adds r0, 0x18 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r0} - bx r0 - .align 2, 0 -_0802DF84: .4byte gUnknown_203B300 - thumb_func_end sub_802DF6C - - thumb_func_start sub_802DF88 -sub_802DF88: - push {r4,lr} - ldr r4, _0802DFAC - ldr r0, [r4] - ldr r0, [r0, 0x10] - bl sub_80073B8 - ldr r0, [r4] - ldr r0, [r0, 0xC] - bl CreateRescueDescription - ldr r0, [r4] - ldr r0, [r0, 0x10] - bl sub_80073E0 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802DFAC: .4byte gUnknown_203B300 - thumb_func_end sub_802DF88 - .align 2,0 diff --git a/data/data_80F4278.s b/data/data_80F4278.s index 1957696..7ad38cb 100644 --- a/data/data_80F4278.s +++ b/data/data_80F4278.s @@ -4854,8 +4854,8 @@ gUnknown_80FE2D0: @ 80FE2D0 gUnknown_80FE2EC: @ 80FE2EC .incbin "baserom.gba", 0xFE2EC, 0x1C - .global gUnknown_80FE308 -gUnknown_80FE308: @ 80FE308 + .global gPtrItsaMonsterHouseMessage +gPtrItsaMonsterHouseMessage: @ 80FE308 .incbin "baserom.gba", 0xFE308, 0x28 .global gUnknown_80FE330 @@ -8338,13 +8338,13 @@ gUnknown_810A350: @ 810A350 @ replacing .incbin "baserom.gba", 0x0010a350, 0xb .byte 0x18, 0x19, 0x1e, 0x27, 0x31, 0x32, 0x33, 0x36, 0x37, 0x3d, 0x3f - .global gUnknown_810A35B -gUnknown_810A35B: @ 810A35B (item related) + .global gInvalidItemIDs +gInvalidItemIDs: @ 810A35B (item related) @ replacing .incbin "baserom.gba", 0x0010a35b, 0x10 .byte 0xed, 0xee, 0xef, 0xb1, 0xe9, 0x24, 0xd8, 0xd2, 0xb0, 0xdc, 0x32, 0x33, 0x34, 0xc2, 0xec, 0xf0 - .global gUnknown_810A36B -gUnknown_810A36B: @ 810A36B + .global gTacticsTargetLeader +gTacticsTargetLeader: @ 810A36B @ replacing .incbin "baserom.gba", 0x0010a36b, 0xd .byte 0x01 .byte 0x00 diff --git a/include/constants/iq_skill.h b/include/constants/iq_skill.h index f36cee0..8e5809c 100644 --- a/include/constants/iq_skill.h +++ b/include/constants/iq_skill.h @@ -3,6 +3,7 @@ enum IQSkill { + IQ_SKILL_NONE = 0x0, IQ_SKILL_TYPE_ADVANTAGE_MASTER = 0x1, IQ_SKILL_ITEM_CATCHER = 0x2, IQ_SKILL_COURSE_CHECKER = 0x3, diff --git a/include/constants/wonder_mail.h b/include/constants/wonder_mail.h index 7ddaac7..c9626ae 100644 --- a/include/constants/wonder_mail.h +++ b/include/constants/wonder_mail.h @@ -1,15 +1,6 @@ #ifndef GUARD_CONSTANTS_WONDER_MAIL_H #define GUARD_CONSTANTS_WONDER_MAIL_H -enum MissionType -{ - HELP_POKE, - FIND_POKE, - ESCORT, - FIND_ITEM, - DELIVER_ITEM -}; - enum RewardType { MONEY, diff --git a/include/dungeon_entity.h b/include/dungeon_entity.h index 7b56fd8..63c85d6 100644 --- a/include/dungeon_entity.h +++ b/include/dungeon_entity.h @@ -187,7 +187,8 @@ struct DungeonEntityData u8 fill149[0x14E - 0x149]; /* 0x14E */ u16 visualFlags; /* 0x150 */ u16 previousVisualFlags; - u8 fill152[0x15C - 0x152]; + /* 0x152 */ u8 unk152; + u8 fill153[0x15C - 0x153]; u8 unk15C; u8 unk15D; u8 unk15E; diff --git a/include/dungeon_global_data.h b/include/dungeon_global_data.h index 4d8883f..254a195 100644 --- a/include/dungeon_global_data.h +++ b/include/dungeon_global_data.h @@ -40,7 +40,8 @@ struct DungeonGlobalData u16 unk66A; u8 fill66C[0x671 - 0x66C]; /* 0x671 */ bool8 monsterHouseActive; - u8 fill672[0x363C - 0x672]; + /* 0x672 */ u8 unk672; + u8 fill673[0x363C - 0x673]; /* 0x363C */ u8 expYieldRankings[NUM_SPECIES]; u8 fill37E3[0x37FC - 0x37D9]; /* 0x37FC */ bool8 decoyActive; diff --git a/include/exclusive_pokemon.h b/include/exclusive_pokemon.h index 3fd09ea..17bb8ef 100644 --- a/include/exclusive_pokemon.h +++ b/include/exclusive_pokemon.h @@ -14,7 +14,7 @@ struct ExclusivePokemonData { u8 fill0[0x48]; u32 unk48[4]; - bool8 Exclusives[NUM_EXCLUSIVE_POKEMON]; + /* 0x58 */ bool8 Exclusives[NUM_EXCLUSIVE_POKEMON]; }; #define RED_EXCLUSIVE(species) \ @@ -36,5 +36,6 @@ extern struct ExclusivePokemonData *gUnknown_203B498; void LoadExclusivePokemon(void); struct ExclusivePokemonData *GetExclusivePokemon(void); void InitializeExclusivePokemon(void); +void UnlockExclusivePokemon(s16 pokeID); #endif // GUARD_EXCLUSIVE_POKEMON_H diff --git a/include/item.h b/include/item.h index 60a9014..5da4c67 100644 --- a/include/item.h +++ b/include/item.h @@ -114,6 +114,7 @@ void MoveToStorage(struct ItemSlot* slot); void FillInventoryGaps(); bool8 sub_8091274(struct HeldItem* slot); bool8 IsNotMoneyOrUsedTMItem(u8 id); +s32 FindItemInInventory(u8 itemIndex); void RestoreHeldItem(struct unkStruct_8094924*, struct HeldItem*); diff --git a/include/map.h b/include/map.h index d3d1ed9..a0a5660 100644 --- a/include/map.h +++ b/include/map.h @@ -5,11 +5,24 @@ #define MAX_ROOM_COUNT 24 // Empirical max, not sure if the code supports any more. -struct MapTile + +struct MapTileBitFlagStair { /* 0x0 */ u8 tileFlags; /* 0x1 */ bool8 stairs; - u8 fill2[0x9 - 0x2]; +}; + +struct MapTile +{ + // TODO: can we get rid of the union... is tileFlags a u16 only? + union MapTileUnion + { + struct MapTileBitFlagStair unk0; + u16 tileFlags_u16; + } MapTileUnion; + u16 unk4; + u16 unk6; + u8 unk8; /* 0x9 */ u8 roomIndex; // Bitwise flags for whether Pokémon can move to an adjacent tile. Bits correspond to directions in direction.h. // Different sets of flags are used for Pokémon that can cross special terrain. diff --git a/include/memory.h b/include/memory.h index ef99757..1c8a61b 100644 --- a/include/memory.h +++ b/include/memory.h @@ -5,33 +5,33 @@ struct HeapSettings { - u8 *start; - u32 size; + /* 0x0 */ u8 *start; + /* 0x4 */ u32 size; }; struct HeapMemoryBlock { - u8 *start; - s32 size; - s32 allocatedSize; + /* 0x0 */ u8 *start; + /* 0x4 */ s32 size; + /* 0x8 */ s32 allocatedSize; }; struct HeapFreeListElement { - u32 unk_atb; - u32 atb; - u32 grp; - struct HeapMemoryBlock block; + /* 0x0 */ u32 unk_atb; + /* 0x4 */ u32 atb; + /* 0x8 */ u32 grp; + /* 0xC */ struct HeapMemoryBlock block; }; struct HeapDescriptor { u32 unk0; - struct HeapDescriptor *parentHeap; - struct HeapFreeListElement *freeList; - s32 freeCount; - u32 freeListLength; - u8 *start; - u32 size; + /* 0x4 */ struct HeapDescriptor *parentHeap; + /* 0x8 */ struct HeapFreeListElement *freeList; + /* 0xC */ s32 freeCount; + /* 0x10 */ u32 freeListLength; + /* 0x14 */ u8 *start; + /* 0x18 */ u32 size; }; void InitHeap(void); diff --git a/include/wonder_mail.h b/include/wonder_mail.h index b89ce6e..155c780 100644 --- a/include/wonder_mail.h +++ b/include/wonder_mail.h @@ -44,9 +44,9 @@ struct WonderMail struct WonderMailStruct_203B2C0 { // size: 0x548 - u32 unk0; - u32 state; - u8 passwordBuffer[PASSWORD_BUFFER_SIZE]; + /* 0x0 */ u32 fallbackState; + /* 0x4 */ u32 state; + /* 0x8 */ u8 passwordBuffer[PASSWORD_BUFFER_SIZE]; u8 unk3E; u32 unk40; u32 linkError; @@ -67,9 +67,9 @@ struct WonderMailStruct_203B2C0 u8 padding8[0x4C]; struct UnkTextStruct2 unk35C[4]; struct UnkTextStruct2 unk3BC[4]; - u32 unkfill; // unkStruct_41C? - struct OpenedFile *faceFile; - u8 *faceData; + /* 0x41C */ u32 unkfill; // ItemSlot? + /* 0x420 */ struct OpenedFile *faceFile; + /* 0x424 */ u8 *faceData; u16 unk428; u16 unk42A; u8 unk42C; @@ -87,12 +87,12 @@ struct WonderMailStruct_203B2C0 struct WonderMailStruct_203B2C4 { // size: 0x564 - u8 state; - u32 unk4; // wonder mail link status?? - u8 passwordBuffer[PASSWORD_BUFFER_SIZE]; // Probably a buffer for entry + /* 0x0 */ u8 state; + /* 0x4 */ u32 fallbackState; // wonder mail link status?? + /* 0x8 */ u8 passwordBuffer[PASSWORD_BUFFER_SIZE]; // Probably a buffer for entry u8 unk3E; u32 unk40; - u32 linkError; // another link status + /* 0x44 */ u32 linkError; // another link status u8 filler48[0x1B8 - 0x48]; struct unkStruct_8095228 unk1B8; struct unkStruct_8095228 unk1E8; @@ -112,9 +112,9 @@ struct WonderMailStruct_203B2C4 u8 unk42D; u8 unk42E; u32 unk430; - u8 formattedString[0x100]; - s32 wonderMailMethod; - u32 wonderMailMode; + /* 0x434 */ u8 formattedString[0x100]; + /* 0x534 */ s32 wonderMailMethod; + /* 0x538 */ u32 wonderMailMode; struct unkStruct_802F204 unk53C; }; @@ -126,17 +126,41 @@ enum WonderMailMode { }; enum WonderMailMethod { - WONDER_MAIL_GAME_LINK = 3, - WONDER_MAIL_PASSWORD = 5, + WONDER_MAIL_GAME_LINK = 3, + WONDER_MAIL_PASSWORD = 5, }; enum WonderMailTypes { - WONDER_MAIL_TYPE_SOS = 1, - WONDER_MAIL_TYPE_AOK = 4, - WONDER_MAIL_TYPE_THANK_YOU = 5, - WONDER_MAIL_TYPE_WONDER = 5, + WONDER_MAIL_TYPE_SOS = 1, + WONDER_MAIL_TYPE_AOK = 4, + WONDER_MAIL_TYPE_THANK_YOU = 5, + WONDER_MAIL_TYPE_WONDER = 5, + // TODO: document 7 }; +enum WonderMailMissionTypes +{ + WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT = 0, + WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET = 1, + WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT = 2, + WONDER_MAIL_MISSION_TYPE_FIND_ITEM = 3, + WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM = 4, +}; +enum WonderMailErrorMode { + WONDER_MAIL_GOOD = 0, + // TODO: document 1 + WONDER_MAIL_NO_RESPONSE = 2, + WONDER_MAIL_INCORRECT_NUM_SYSTEMS = 3, + WONDER_MAIL_DIFFERENT_MODES = 4, + // TODO: document 5 + WONDER_MAIL_NO_ROOM_STORAGE = 6, + WONDER_MAIL_DUPLICATE_MAIL = 7, + WONDER_MAIL_NOT_ELIGIBLE_1 = 9, + WONDER_MAIL_NOT_ELIGIBLE_2 = 11, + WONDER_MAIL_NO_ROOM_MAIL = 13, + // TODO: document 14 + WONDER_MAIL_NOT_READY = 15, +}; #endif diff --git a/ld_script.txt b/ld_script.txt index da30c0b..b913da1 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -103,7 +103,6 @@ SECTIONS { asm/kecleon_items_1.o(.text); src/kecleon_items_2.o(.text); src/code_801AFA4.o(.text); - asm/code_801AFA4.o(.text); src/code_801B3C0.o(.text); asm/code_801B3C0.o(.text); src/code_801C620.o(.text); @@ -129,6 +128,7 @@ SECTIONS { asm/wonder_mail_2.o(.text); src/wonder_mail_3.o(.text); asm/wonder_mail_3.o(.text); + src/wonder_mail_802DF88.o(.text); src/mailbox.o(.text); asm/mailbox.o(.text); src/mailbox_1.o(.text); diff --git a/src/code_801AFA4.c b/src/code_801AFA4.c index 3f00c22..117b34b 100644 --- a/src/code_801AFA4.c +++ b/src/code_801AFA4.c @@ -247,7 +247,6 @@ s32 GetNumMonsAbleToLearnItemMove(void) s32 team [MAX_TEAM_MEMBERS]; struct PokemonStruct *preload; - length = sub_808D580(team); gUnknown_203B22C->monsAbleToLearnMove = 0; @@ -263,3 +262,22 @@ s32 GetNumMonsAbleToLearnItemMove(void) } return gUnknown_203B22C->monsAbleToLearnMove; } + +// Unused +bool8 sub_801B374(u8 itemIndex) +{ + u16 moveID; + struct PokemonStruct *puVar4; + s32 iVar5; + + puVar4 = &gRecruitedPokemonRef->pokemon[0]; + moveID = GetItemMove(itemIndex); + + for(iVar5 = 0; iVar5 < NUM_SPECIES; iVar5++, puVar4++) + { + if((puVar4->unk0 >> 1 & 1) != 0) + if(CanMonLearnMove(moveID, puVar4->speciesNum)) + return FALSE; + } + return TRUE; +} diff --git a/src/code_801C620.c b/src/code_801C620.c index c28e347..9776487 100644 --- a/src/code_801C620.c +++ b/src/code_801C620.c @@ -1,6 +1,8 @@ #include "global.h" +#include "constants/iq_skill.h" #include "input.h" #include "memory.h" +#include "pokemon.h" #include "text.h" #include "subStruct_203B240.h" @@ -8,7 +10,7 @@ struct unkStruct_203B240 { // size: 0x94 s32 state; - u8 unk4; + u8 chosenIQSkill; u8 fill5[3]; s32 unk8; s32 unkC; @@ -45,17 +47,33 @@ extern void sub_8013F84(); extern void PlayMenuSoundEffect(u32); extern char * GetIQSkillName(u8 r0); extern char * GetIQSkillDescription(u8 r0); +extern s32 GetNumAvailableIQSkills(u8 *param_1, s32 pokeIQ); void sub_801C6D0(s32); void sub_801C7D4(); void sub_801C6E4(); void sub_801C848(); -u32 sub_801C620(u8 param_1) +bool8 HasNoAvailIQSkills(s16 species) +{ + s32 species_s32; + u8 iqSkillBuffer[NUM_IQ_SKILLS]; + struct PokemonStruct *pokeStruct; + + species_s32 = species; + + pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32]; + if(GetNumAvailableIQSkills(iqSkillBuffer, pokeStruct->IQ) == 0) + return TRUE; + else + return FALSE; +} + +u32 sub_801C620(u8 iqSkill) { ResetSprites(1); gUnknown_203B240 = MemoryAlloc(sizeof(struct unkStruct_203B240),8); - gUnknown_203B240->unk4 = param_1; + gUnknown_203B240->chosenIQSkill = iqSkill; sub_801317C(&gUnknown_203B240->unk88); gUnknown_203B240->unk24 = 0; sub_80140B4(gUnknown_203B240->unk28); @@ -109,12 +127,12 @@ void sub_801C6E4(void) case 0: sub_8008C54(gUnknown_203B240->unk24); sub_80073B8(gUnknown_203B240->unk24); - skillName = GetIQSkillName(gUnknown_203B240->unk4); + skillName = GetIQSkillName(gUnknown_203B240->chosenIQSkill); strcpy(gUnknown_202DE58,skillName); xxx_format_and_draw(16,0,gUnknown_80DBE2C,0,0); // {ARG_MOVE_ITEM_0} - xxx_call_draw_string(8,16,GetIQSkillDescription(gUnknown_203B240->unk4),gUnknown_203B240->unk24,0); + xxx_call_draw_string(8,16,GetIQSkillDescription(gUnknown_203B240->chosenIQSkill),gUnknown_203B240->unk24,0); sub_80073E0(gUnknown_203B240->unk24); - gUnknown_203B240->unkC = sub_8097DF0(GetIQSkillDescription(gUnknown_203B240->unk4),gUnknown_203B240->unk10); + gUnknown_203B240->unkC = sub_8097DF0(GetIQSkillDescription(gUnknown_203B240->chosenIQSkill),gUnknown_203B240->unk10); gUnknown_203B240->unk20 = 0; break; case 1: diff --git a/src/code_8040094.c b/src/code_8040094.c index 4e30873..cdebf7b 100644 --- a/src/code_8040094.c +++ b/src/code_8040094.c @@ -25,34 +25,25 @@ extern void SendMessage(u32, const char *); extern const char *gUnknown_80FD040; // It became brighter on the floor -struct unk8049590 -{ - u32 unk0; - u16 unk4; -}; - -extern struct unk8049590 *GetMapEntity(u32, u32); +extern struct MapTile *GetMapEntity(u32, u32); // Luminous Orb??? -void sub_804002C(u32 param_1) +void HandleLuminousOrbAction(u32 param_1) { - struct unk8049590 *iVar1; - int innerCounter; - int iVar3; - int iVar4; + struct MapTile *mapTile; + int XCoord; + int YCoord; gDungeonGlobalData->unk1820B = 1; - iVar3 = 0; - do { - innerCounter = 0; - iVar4 = iVar3 + 1; - do { - iVar1 = GetMapEntity(innerCounter, iVar3); - iVar1->unk4 = iVar1->unk4 | 1; - innerCounter++; - } while (innerCounter < 0x38); - iVar3 = iVar4; - } while (iVar4 < 0x20); + + for(YCoord = 0; YCoord <= DUNGEON_MAX_SIZE_Y; YCoord++) + { + for(XCoord = 0; XCoord <= DUNGEON_MAX_SIZE_X; XCoord++) + { + mapTile = GetMapEntity(XCoord, YCoord); + mapTile->unk4 = mapTile->unk4 | 1; + } + } sub_803F580(0); sub_8049ED4(); sub_8040A84(); diff --git a/src/code_80521D0.c b/src/code_80521D0.c index 8be49f8..272991d 100644 --- a/src/code_80521D0.c +++ b/src/code_80521D0.c @@ -1,9 +1,10 @@ #include "global.h" +#include "dungeon_entity.h" extern void sub_80526D0(u8 r0); -extern u8 sub_8045888(u32 r0); -extern void sub_80523A8(u32 r0, u32 r1, u8 r2); -extern u8 sub_8052DC0(u32); +extern u8 sub_8045888(struct DungeonEntity *r0); +extern void sub_80523A8(struct DungeonEntity *r0, u32 r1, u8 r2); +extern u8 sub_8052DC0(struct DungeonEntity *); extern u8 sub_803F428(u32); void sub_805229C(void) @@ -11,26 +12,26 @@ void sub_805229C(void) return sub_80526D0(0x50); } -void SendMessage(u32 r0, u32 r1) +void SendMessage(struct DungeonEntity *r0, u32 r1) { if (sub_8045888(r0) != 0){ sub_80523A8(r0, r1, 1); } } -void sub_80522C8(u32 r0, u32 r1) +void sub_80522C8(struct DungeonEntity *r0, u32 r1) { if (sub_8045888(r0) != 0){ sub_80523A8(r0, r1, 0); } } -void sub_80522E8(u32 r0, u32 r1) +void sub_80522E8(struct DungeonEntity *r0, u32 r1) { sub_80523A8(r0, r1, 0); } -void sub_80522F4(u32 r0, u32 r1, u32 r2) +void sub_80522F4(struct DungeonEntity *r0, struct DungeonEntity *r1, u32 r2) { u8 temp; u32 temp_reg; @@ -48,7 +49,7 @@ void sub_80522F4(u32 r0, u32 r1, u32 r2) } } -void sub_805232C(u32 r0, u32 r1, u32 r2) +void sub_805232C(struct DungeonEntity *r0, struct DungeonEntity *r1, u32 r2) { u8 temp; u32 temp_reg; @@ -66,7 +67,7 @@ void sub_805232C(u32 r0, u32 r1, u32 r2) } } -void sub_8052364(u32 r0, u32 r1, u32 r2) +void sub_8052364(struct DungeonEntity *r0, u32 r1, u32 r2) { u8 temp; u32 temp_reg; @@ -84,7 +85,7 @@ void sub_8052364(u32 r0, u32 r1, u32 r2) } } -void sub_805239C(u32 r0, u32 r1) +void sub_805239C(struct DungeonEntity *r0, u32 r1) { sub_80523A8(r0, r1, 1); } diff --git a/src/code_80521D0_1.c b/src/code_80521D0_1.c index a5cd497..0ed02f1 100644 --- a/src/code_80521D0_1.c +++ b/src/code_80521D0_1.c @@ -5,6 +5,7 @@ #include "constants/friend_area.h" #include "pokemon.h" #include "constants/direction.h" +#include "map.h" extern struct DungeonEntity *xxx_call_GetLeaderEntity(void); extern struct DungeonEntity *sub_8085680(u32); @@ -91,7 +92,7 @@ extern void sub_804539C(struct DungeonEntity *, u32, u32); extern void sub_803E46C(u32); extern void sub_8042B0C(struct DungeonEntity *); extern void SetFacingDirection(struct DungeonEntity *, u32); -extern void sub_8052910(u32 *); +extern void DisplayDungeonDialogue(u32 *); extern void sub_803E708(u32, u32); extern u8 EntityExists(struct DungeonEntity *); extern u8 HasRecruitedMon(u32); @@ -114,10 +115,10 @@ extern void sub_8085EB0(); extern void sub_808563C(void *); extern void sub_80858AC(u32 *, u32); -void sub_808C5AC(struct DungeonEntity *r0); +void SetupDeoxysFightHP(struct DungeonEntity *r0); void sub_808C550(void); void sub_808C590(struct DungeonEntity *r0); -void sub_808C5A0(struct DungeonEntity *r0); +void SetupDeoxysFacingDirection(struct DungeonEntity *r0); void sub_808C9B0(); void sub_808C8E0(struct DungeonEntity *param_1); void sub_808C360(void); @@ -138,16 +139,7 @@ extern void sub_8049ED4(); extern void sub_8040A84(); extern void sub_8086A54(struct DungeonEntity *); -struct unk8049590 -{ - u16 unk0; - u16 fill2; - u16 unk4; - u16 unk6; - u8 unk8; -}; - -extern struct unk8049590 *GetMapEntity(u32, u32); +extern struct MapTile *GetMapEntity(u32, u32); extern void sub_806BFC0(struct DungeonEntityData *, u32); void sub_808BBA8(struct DungeonEntity *param_1) @@ -198,13 +190,13 @@ void JirachiWishGrantDialogue(struct DungeonEntity *param_1) param_1->entityData->unk15D = 1; // Nnnnnnnnnn! - sub_8052910(&gUnknown_81058A8); + DisplayDungeonDialogue(&gUnknown_81058A8); PlaySoundEffect(0x375); sub_80861F8(0x67,param_1,1); PlaySoundEffect(0x2a8); uVar2 = sub_80861F8(0x68,param_1,0); // Taaaaaaaah! - sub_8052910(&gUnknown_81058C4); + DisplayDungeonDialogue(&gUnknown_81058C4); if (sub_800E9A8(uVar2) != 0) { sub_800DC14(uVar2); } @@ -214,12 +206,12 @@ void JirachiWishGrantDialogue(struct DungeonEntity *param_1) void sub_808BCE4(void) { - struct unk8049590 *puVar1; + struct MapTile *puVar1; puVar1 = GetMapEntity(gDungeonGlobalData->unkE23C, gDungeonGlobalData->unkE23E); - puVar1->unk0 &= 0xfffc; - puVar1->unk0 |= 16; - puVar1->unk0 &= 0xfdff; + puVar1->MapTileUnion.tileFlags_u16 &= 0xfffc; + puVar1->MapTileUnion.tileFlags_u16 |= TILE_TYPE_MAP_EDGE; + puVar1->MapTileUnion.tileFlags_u16 &= 0xfdff; sub_8049884(); sub_8049B8C(); sub_8049ED4(); @@ -228,13 +220,13 @@ void sub_808BCE4(void) void sub_808BD38(void) { - struct unk8049590 *puVar1; + struct MapTile *puVar1; puVar1 = GetMapEntity(gDungeonGlobalData->unkE23C, gDungeonGlobalData->unkE23E); - puVar1->unk0 &= 0xfffc; - puVar1->unk0 |= 1; - puVar1->unk0 &= 0xffef; - puVar1->unk0 |= (0x200); + puVar1->MapTileUnion.tileFlags_u16 &= 0xfffc; + puVar1->MapTileUnion.tileFlags_u16 |= TILE_TYPE_FLOOR; + puVar1->MapTileUnion.tileFlags_u16 &= 0xffef; + puVar1->MapTileUnion.tileFlags_u16 |= TILE_TYPE_STAIRS; puVar1->unk8 = 1; sub_8049884(); sub_8049B8C(); @@ -284,7 +276,7 @@ void sub_808BDEC(void) LugiaEntity = sub_8085680(0x1b); sub_8083F14(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); if (HasRecruitedMon(SPECIES_LUGIA)) { sub_8083E88(0x23); @@ -320,26 +312,26 @@ void LugiaPreFightDialogue(void) else { sub_8083F14(); sub_8086448(); - sub_8052910(&gUnknown_8105E88); + DisplayDungeonDialogue(&gUnknown_8105E88); sub_8083EA8(0x23,0x3c); sub_808C0CC(); - sub_8052910(&gUnknown_8105EF8); + DisplayDungeonDialogue(&gUnknown_8105EF8); sub_808BFA0(); - sub_8052910(&gUnknown_8105F38); + DisplayDungeonDialogue(&gUnknown_8105F38); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8105F74); + DisplayDungeonDialogue(&gUnknown_8105F74); PlaySoundEffect(0x1f8); sub_80861D4(LugiaEntity,0xd,0); sub_803E708(0x2b,0x46); sub_80861B8(LugiaEntity,0,0); - sub_8052910(&gUnknown_8105FA0); + DisplayDungeonDialogue(&gUnknown_8105FA0); sub_808BFA0(); - sub_8052910(&gUnknown_8105FD8); + DisplayDungeonDialogue(&gUnknown_8105FD8); sub_808C02C(); sub_8085C54(0xffffff06,0xffffff06,0xffffff06,1,0); sub_8083F14(); sub_80861D4(LugiaEntity,7,0); - sub_8052910(&gUnknown_8106024); + DisplayDungeonDialogue(&gUnknown_8106024); sub_808BFA0(); SetupBossFightHP(LugiaEntity,800,0x20); sub_8083E88(0x23); @@ -424,7 +416,7 @@ void sub_808C10C(void) KyogreEntity = sub_8085680(0x1c); sub_8083F14(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); if (HasRecruitedMon(SPECIES_KYOGRE)) { sub_8068FE0(KyogreEntity,0x21c,0); } @@ -461,35 +453,35 @@ void KyogrePreFightDialogue(void) sub_8083EA8(0x23,0x3c); SpriteLookAroundEffect(LeaderEntity); sub_803E708(10,0x46); - sub_8052910(&gUnknown_81062A8); + DisplayDungeonDialogue(&gUnknown_81062A8); sub_803E708(10,0x46); gDungeonGlobalData->unk2 = 1; } else { - sub_8052910(&gUnknown_8106074); + DisplayDungeonDialogue(&gUnknown_8106074); sub_803E708(10,0x46); - sub_8052910(&gUnknown_81060BC); + DisplayDungeonDialogue(&gUnknown_81060BC); sub_803E708(10,0x46); nullsub_99(); sub_803E708(10,0x46); // Gwwwwwooooooooh - sub_8052910(&gUnknown_8106104); + DisplayDungeonDialogue(&gUnknown_8106104); sub_803E708(10,0x46); sub_8083EA8(0x23,0x3c); sub_808C360(); // My duels against {ARG_POKEMON_3} (Groudon) left us both exhausted - sub_8052910(&gUnknown_8106140); + DisplayDungeonDialogue(&gUnknown_8106140); KyogreScreenFlash(); // I am {ARG_POKEMON_2} (Kyogre)! // The lord of the sea! - sub_8052910(&gUnknown_8106214); + DisplayDungeonDialogue(&gUnknown_8106214); KyogreScreenFlash(); // Witness the destructive force of my waves! - sub_8052910(&gUnknown_8106244); + DisplayDungeonDialogue(&gUnknown_8106244); KyogreScreenFlash(); // Marvel at my awesome // power! - sub_8052910(&gUnknown_810627C); + DisplayDungeonDialogue(&gUnknown_810627C); sub_803E708(10,0x46); SetupBossFightHP(KyogreEntity,600,0xb); sub_8083E88(0x23); @@ -541,14 +533,14 @@ void sub_808C3A0(void) LeaderEntity = xxx_call_GetLeaderEntity(); sub_8083F14(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); if (HasRecruitedMon(SPECIES_DEOXYS_NORMAL)) { sub_808563C(sub_808C590); } else { gDungeonGlobalData->unk7 = 1; - sub_808563C(sub_808C5A0); + sub_808563C(SetupDeoxysFacingDirection); } sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3); CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_DEOXYS_NORMAL); @@ -574,16 +566,16 @@ void DeoxysPreFightDialogue(void) sub_80866C4(&gUnknown_81063C4); } else { - sub_8052910(&gUnknown_81062B4); + DisplayDungeonDialogue(&gUnknown_81062B4); sub_8083EA8(0x1a,0x3c); sub_808C550(); - sub_8052910(&gUnknown_81062E8); + DisplayDungeonDialogue(&gUnknown_81062E8); DeoxysScreenFlash(); - sub_8052910(&gUnknown_8106368); + DisplayDungeonDialogue(&gUnknown_8106368); DeoxysScreenFlash(); - sub_8052910(&gUnknown_8106390); + DisplayDungeonDialogue(&gUnknown_8106390); sub_803E708(10,0x46); - sub_808563C(sub_808C5AC); + sub_808563C(SetupDeoxysFightHP); sub_80858AC(&LeaderEntity->posPixelX,0x10); } } @@ -626,12 +618,12 @@ void sub_808C590(struct DungeonEntity *r0) sub_8068FE0(r0, 0x21C, 0); } -void sub_808C5A0(struct DungeonEntity *r0) +void SetupDeoxysFacingDirection(struct DungeonEntity *r0) { SetFacingDirection(r0, DIRECTION_SOUTH); } -void sub_808C5AC(struct DungeonEntity *r0) +void SetupDeoxysFightHP(struct DungeonEntity *r0) { SetupBossFightHP(r0, 950, 0x20); } @@ -648,7 +640,7 @@ void sub_808C5C0(void) CelebiEntity = sub_8085680(0x1e); sub_8083E88(0x7f); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); SetFacingDirection(CelebiEntity, DIRECTION_SOUTH); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY); uVar3 = sub_803F994(); @@ -678,7 +670,7 @@ void CelebiJoinDialogue(void) SpriteLookAroundEffect(LeaderEntity); sub_803E708(10,0x46); // ......... - sub_8052910(&gUnknown_810663C); + DisplayDungeonDialogue(&gUnknown_810663C); } else { @@ -687,14 +679,14 @@ void CelebiJoinDialogue(void) sub_80862BC(LeaderEntity); sub_803E708(10,0x46); // Oh? There's someone there. - sub_8052910(&gUnknown_81063D0); + DisplayDungeonDialogue(&gUnknown_81063D0); sub_803E708(10,0x46); sub_8086598(); sub_8086598(); sub_8086598(); sub_8086598(); // The Time-Traveling Pokemon {ARG_POKEMON_2} (Celebi)! - sub_8052910(&gUnknown_8106400); + DisplayDungeonDialogue(&gUnknown_8106400); PlaySoundEffect(0x1c7); sub_806CDD4(CelebiEntity,10,DIRECTION_SOUTH); sub_803E708(0x14,0x46); @@ -702,7 +694,7 @@ void CelebiJoinDialogue(void) sub_803E708(4,0x46); PlaySoundEffect(0x1c7); sub_806CDD4(CelebiEntity,10,DIRECTION_SOUTH); - sub_8052910(&gUnknown_810643C); + DisplayDungeonDialogue(&gUnknown_810643C); sub_803E708(10,0x46); state = 0; do { @@ -730,11 +722,11 @@ void CelebiJoinDialogue(void) sub_803E708(0x1a,0x46); PlaySoundEffect(0x1d5); sub_803E708(0x1c,0x46); - sub_8052910(&gUnknown_8106468); + DisplayDungeonDialogue(&gUnknown_8106468); sub_803E708(10,0x46); sub_806FDF4(LeaderEntity,CelebiEntity,&CelebiEntity); sub_8083E88(0x7f); - sub_8052910(&gUnknown_810648C); + DisplayDungeonDialogue(&gUnknown_810648C); sub_803E708(10,0x46); PlaySoundEffect(0x1c7); sub_80861D4(CelebiEntity,0xd,0); @@ -743,7 +735,7 @@ void CelebiJoinDialogue(void) sub_803E708(0x1a,0x46); PlaySoundEffect(0x1d5); sub_803E708(0x1b,0x46); - sub_8052910(&gUnknown_81064BC); + DisplayDungeonDialogue(&gUnknown_81064BC); sub_803E708(10,0x46); state = 2; } @@ -763,15 +755,15 @@ void CelebiJoinDialogue(void) else { sub_803E708(10,0x46); - sub_8052910(&gUnknown_8106500); + DisplayDungeonDialogue(&gUnknown_8106500); sub_80861F8(0x3e,CelebiEntity,1); sub_803E708(0x18,0x46); sub_80861F8(0x3e,CelebiEntity,1); sub_803E708(0xe,0x46); - sub_8052910(&gUnknown_8106534); + DisplayDungeonDialogue(&gUnknown_8106534); sub_803E708(10,0x46); sub_808C8E0(CelebiEntity); - sub_8052910(&gUnknown_8106560); + DisplayDungeonDialogue(&gUnknown_8106560); sub_803E708(10,0x46); state = 2; } @@ -820,7 +812,7 @@ void CelebiJoinDialogue(void) "\tmovs r1, 0x46\n" "\tbl sub_803E708\n" "\tldr r0, _0808C67C\n" - "\tbl sub_8052910\n" + "\tbl DisplayDungeonDialogue\n" "\tb _0808C8AC\n" "\t.align 2, 0\n" "_0808C67C: .4byte gUnknown_810663C\n" @@ -836,7 +828,7 @@ void CelebiJoinDialogue(void) "\tmovs r1, 0x46\n" "\tbl sub_803E708\n" "\tldr r0, _0808C71C\n" - "\tbl sub_8052910\n" + "\tbl DisplayDungeonDialogue\n" "\tmovs r0, 0xA\n" "\tmovs r1, 0x46\n" "\tbl sub_803E708\n" @@ -845,7 +837,7 @@ void CelebiJoinDialogue(void) "\tbl sub_8086598\n" "\tbl sub_8086598\n" "\tldr r0, _0808C720\n" - "\tbl sub_8052910\n" + "\tbl DisplayDungeonDialogue\n" "\tldr r4, _0808C724\n" "\tadds r0, r4, 0\n" "\tbl PlaySoundEffect\n" @@ -869,7 +861,7 @@ void CelebiJoinDialogue(void) "\tmovs r2, 0\n" "\tbl sub_806CDD4\n" "\tldr r0, _0808C728\n" - "\tbl sub_8052910\n" + "\tbl DisplayDungeonDialogue\n" "\tmovs r0, 0xA\n" "\tmovs r1, 0x46\n" "\tbl sub_803E708\n" @@ -945,7 +937,7 @@ void CelebiJoinDialogue(void) "\tmovs r1, 0x46\n" "\tbl sub_803E708\n" "\tldr r0, _0808C818\n" - "\tbl sub_8052910\n" + "\tbl DisplayDungeonDialogue\n" "\tmovs r0, 0xA\n" "\tmovs r1, 0x46\n" "\tbl sub_803E708\n" @@ -956,7 +948,7 @@ void CelebiJoinDialogue(void) "\tmovs r0, 0x7F\n" "\tbl sub_8083E88\n" "\tldr r0, _0808C81C\n" - "\tbl sub_8052910\n" + "\tbl DisplayDungeonDialogue\n" "\tmovs r0, 0xA\n" "\tmovs r1, 0x46\n" "\tbl sub_803E708\n" @@ -1012,7 +1004,7 @@ void CelebiJoinDialogue(void) "\tmovs r1, 0x46\n" "\tbl sub_803E708\n" "\tldr r0, _0808C8D0\n" - "\tbl sub_8052910\n" + "\tbl DisplayDungeonDialogue\n" "\tldr r1, [sp]\n" "\tmovs r0, 0x3E\n" "\tmovs r2, 0x1\n" @@ -1028,7 +1020,7 @@ void CelebiJoinDialogue(void) "\tmovs r1, 0x46\n" "\tbl sub_803E708\n" "\tldr r0, _0808C8D4\n" - "\tbl sub_8052910\n" + "\tbl DisplayDungeonDialogue\n" "\tmovs r0, 0xA\n" "\tmovs r1, 0x46\n" "\tbl sub_803E708\n" @@ -1036,7 +1028,7 @@ void CelebiJoinDialogue(void) "\tbl sub_808C8E0\n" "\tldr r0, _0808C8D8\n" "_0808C898:\n" - "\tbl sub_8052910\n" + "\tbl DisplayDungeonDialogue\n" "\tmovs r0, 0xA\n" "\tmovs r1, 0x46\n" "\tbl sub_803E708\n" @@ -1116,7 +1108,7 @@ void sub_808C998(void) { // Defeat the opposing team to win // Be careful, your opponents are tough - sub_8052910(&gUnknown_8106720); + DisplayDungeonDialogue(&gUnknown_8106720); sub_803E708(0xA, 0x46); } @@ -1135,7 +1127,7 @@ void sub_808C9C4(void) MedichamEntity = sub_8085680(7); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); SetFacingDirection(MedichamEntity, DIRECTION_SOUTH); sub_8085860(LeaderEntity->posWorldX, LeaderEntity->posWorldY - 3); @@ -1152,12 +1144,12 @@ void MedichamRescueDialogue(void) SpriteLookAroundEffect(MedichamEntity); sub_803E708(0xA, 0x46); // Oh my I can't seem to find a way out... - sub_8052910(&gUnknown_8106778); + DisplayDungeonDialogue(&gUnknown_8106778); sub_803E708(0xA, 0x46); sub_80869E4(MedichamEntity, 4, 2, 4); sub_803E708(0xA, 0x46); // What am I to do...? - sub_8052910(&gUnknown_81067BC); + DisplayDungeonDialogue(&gUnknown_81067BC); sub_803E708(0xA, 0x46); sub_8086448(); sub_8086598(); @@ -1165,7 +1157,7 @@ void MedichamRescueDialogue(void) sub_80862BC(MedichamEntity); sub_803E708(0x20, 0x46); sub_80869E4(MedichamEntity, 4, 2, 0); - sub_8052910(&gUnknown_81067E0); + DisplayDungeonDialogue(&gUnknown_81067E0); sub_803E708(0xA, 0x46); PlaySoundEffect(0x1c7); sub_806CDD4(MedichamEntity, 0xA, DIRECTION_SOUTH); @@ -1179,7 +1171,7 @@ void MedichamRescueDialogue(void) // I am so lucky // // There appears to be no one here - sub_8052910(&gUnknown_8106834); + DisplayDungeonDialogue(&gUnknown_8106834); sub_803E708(0xA, 0x46); sub_806CDD4(MedichamEntity, 0, DIRECTION_SOUTH); for(counter = 0x17; counter >= 0; counter--) @@ -1204,7 +1196,7 @@ void sub_808CB5C(void) MedichamEntity = sub_8085680(7); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_8068FE0(MedichamEntity, 0x21C, 0); sub_8085860(LeaderEntity->posWorldX, LeaderEntity->posWorldY); CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_MEDICHAM); @@ -1223,7 +1215,7 @@ void sub_808CBB0(void) SmeargleEntity = sub_8085680(0x1F); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); SetFacingDirection(SmeargleEntity, DIRECTION_SOUTH); sub_8085860(LeaderEntity->posWorldX, LeaderEntity->posWorldY - 3); @@ -1241,14 +1233,14 @@ void SmeargleRescueDialogue(void) sub_803E708(0xA, 0x46); // Ohhh... // I've lost my bearings - sub_8052910(&gUnknown_810688C); + DisplayDungeonDialogue(&gUnknown_810688C); sub_803E708(0xA, 0x46); sub_80869E4(SmeargleEntity, 4, 2, 4); sub_803E708(0xA, 0x46); // I can't get out... // I'm hungry... // I'm in trouble - sub_8052910(&gUnknown_81068D0); + DisplayDungeonDialogue(&gUnknown_81068D0); sub_803E708(0xA, 0x46); sub_8086448(); sub_8086598(); @@ -1257,7 +1249,7 @@ void SmeargleRescueDialogue(void) sub_803E708(0x20, 0x46); sub_80869E4(SmeargleEntity, 4, 2, 0); // Oh! You are? - sub_8052910(&gUnknown_8106918); + DisplayDungeonDialogue(&gUnknown_8106918); sub_803E708(0xA, 0x46); PlaySoundEffect(0x1c7); sub_806CDD4(SmeargleEntity, 0xA, DIRECTION_SOUTH); @@ -1269,7 +1261,7 @@ void SmeargleRescueDialogue(void) sub_803E708(0x14, 0x46); // Did you maybe come to rescue me? // Am I glad to see you - sub_8052910(&gUnknown_8106934); + DisplayDungeonDialogue(&gUnknown_8106934); sub_803E708(0xA, 0x46); sub_806CDD4(SmeargleEntity, 0, DIRECTION_SOUTH); for(counter = 0x17; counter >= 0; counter--) @@ -1295,7 +1287,7 @@ void sub_808CD44(void) SmeargleEntity = sub_8085680(0x1F); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); sub_8068FE0(SmeargleEntity, 0x21C, 0); sub_8085860(LeaderEntity->posWorldX, LeaderEntity->posWorldY - 3); diff --git a/src/code_8057824_1.c b/src/code_8057824_1.c index 502e8ee..f79299a 100644 --- a/src/code_8057824_1.c +++ b/src/code_8057824_1.c @@ -227,7 +227,7 @@ extern void sub_8041888(u32); extern void sub_80861B8(struct DungeonEntity *, u32, u32); extern void sub_8083ED8(u32); extern void sub_803E708(u32, u32); -extern void sub_8052910(u32 *r0); +extern void DisplayDungeonDialogue(u32 *r0); extern void sub_8083E88(u32); extern void sub_808BC20(struct DungeonEntity *); @@ -293,10 +293,10 @@ void SuicuneScreenFlash(); void sub_808A904(struct DungeonEntity * param_1); void HoOhScreenFlash(void); void LatiosScreenFlash(void); -void sub_808B2B0(struct DungeonEntity *r0); -void sub_808B2C4(struct DungeonEntity *r0); -void sub_808B2D4(struct DungeonEntity *r0); -void sub_808B2E4(struct DungeonEntity *r0); +void SetupRegiFacingDirection(struct DungeonEntity *r0); +void SetupRegirockFightHP(struct DungeonEntity *r0); +void SetupRegiceFightHP(struct DungeonEntity *r0); +void SetupRegisteelFightHP(struct DungeonEntity *r0); void sub_808B50C(void); void sub_8089B64(struct DungeonEntity *param_1); void MewtwoScreenFlash(void); @@ -375,18 +375,18 @@ void ZapdosReFightDialogue(void) ZapdosEntity = sub_8085680(8); sub_8086448(); sub_803E708(10,0x46); - sub_8052910(&gUnknown_81017E4); + DisplayDungeonDialogue(&gUnknown_81017E4); sub_803E708(10,0x46); PlaySoundEffect(0x1da); - sub_8052910(&gUnknown_81015A0); + DisplayDungeonDialogue(&gUnknown_81015A0); sub_803E708(10,0x46); sub_8087704(ZapdosEntity); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8101898); + DisplayDungeonDialogue(&gUnknown_8101898); sub_808775C(1); - sub_8052910(&gUnknown_81018EC); + DisplayDungeonDialogue(&gUnknown_81018EC); sub_808775C(2); - sub_8052910(&gUnknown_8101918); + DisplayDungeonDialogue(&gUnknown_8101918); SetupBossFightHP(ZapdosEntity,300,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); } @@ -405,15 +405,15 @@ void ZapdosPostStoryPreFightDialogue(void) else { sub_808775C(1); PlaySoundEffect(0x1da); - sub_8052910(&gUnknown_810193C); + DisplayDungeonDialogue(&gUnknown_810193C); sub_8087704(ZapdosEntity); - sub_8052910(&gUnknown_8101970); + DisplayDungeonDialogue(&gUnknown_8101970); sub_808775C(1); - sub_8052910(&gUnknown_8101994); + DisplayDungeonDialogue(&gUnknown_8101994); sub_808775C(2); - sub_8052910(&gUnknown_81019E4); + DisplayDungeonDialogue(&gUnknown_81019E4); sub_808775C(2); - sub_8052910(&gUnknown_8101A04); + DisplayDungeonDialogue(&gUnknown_8101A04); sub_803E708(10,0x46); SetupBossFightHP(ZapdosEntity,300,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -481,7 +481,7 @@ void sub_80877E8(void) sub_8083E88(0x26); sub_8085374(); sub_80854D4(); - sub_8085930(6); + sub_8085930(DIRECTION_WEST); sub_80855E4(sub_8086A3C); SetFacingDirection(MoltresEntity, DIRECTION_SOUTH); sub_8086A3C(MoltresEntity); @@ -501,7 +501,7 @@ void sub_8087848(void) MoltresEntity = sub_8085680(9); sub_8083E88(0x26); sub_80854D4(); - sub_8085930(6); + sub_8085930(DIRECTION_WEST); sub_80855E4(sub_8086A3C); if (sub_8086AE4(SPECIES_MOLTRES)) { sub_8068FE0(MoltresEntity,0x21c,0); @@ -540,58 +540,58 @@ void MoltresPreFightDialogue(void) sub_8087D80(0xc,5); sub_8086500(); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8101A9C); + DisplayDungeonDialogue(&gUnknown_8101A9C); sub_803E708(10,0x46); sub_80869E4(PartnerEntity,4,1,5); sub_803E708(4,0x46); SpriteLookAroundEffect(PartnerEntity); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8101AD4); + DisplayDungeonDialogue(&gUnknown_8101AD4); sub_803E708(10,0x46); sub_8087D80(0xc,5); sub_8087DE8(9,5); - sub_8052910(&gUnknown_8101C30); + DisplayDungeonDialogue(&gUnknown_8101C30); sub_803E708(10,0x46); sub_80869E4(PartnerEntity,4,1,2); sub_80869E4(LeaderEntity,4,2,6); - sub_8052910(&gUnknown_8101CBC); + DisplayDungeonDialogue(&gUnknown_8101CBC); sub_803E708(10,0x46); sub_80869E4(PartnerEntity,4,2,6); sub_8086690(); - sub_8052910(&gUnknown_8101D8C); + DisplayDungeonDialogue(&gUnknown_8101D8C); sub_803E708(10,0x46); - sub_8085930(5); + sub_8085930(DIRECTION_NORTHWEST); sub_803E708(4,0x46); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); PlaySoundEffect(0x2f2); sub_8083F14(); sub_8087F24(); - sub_8052910(&gUnknown_8101DA0); + DisplayDungeonDialogue(&gUnknown_8101DA0); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8101E1C); + DisplayDungeonDialogue(&gUnknown_8101E1C); sub_803E708(10,0x46); PlaySoundEffect(0x1cf); sub_80856E0(PartnerEntity,4); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8101EAC); + DisplayDungeonDialogue(&gUnknown_8101EAC); sub_803E708(10,0x46); sub_8087EB0(); PlaySoundEffect(0x1da); - sub_8052910(&gUnknown_8102070); + DisplayDungeonDialogue(&gUnknown_8102070); sub_803E708(10,0x46); sub_8087D80(9,5); sub_8087DE8(0xb,5); - sub_8052910(&gUnknown_81020A4); + DisplayDungeonDialogue(&gUnknown_81020A4); sub_803E708(10,0x46); sub_8087D80(0xc,5); sub_8087DE8(9,5); sub_8087D30(MoltresEntity); sub_808663C(); sub_8087EB0(); - sub_8052910(&gUnknown_81020D4); + DisplayDungeonDialogue(&gUnknown_81020D4); sub_803E708(10,0x46); sub_8087DE8(0xb,6); - sub_8052910(&gUnknown_8102108); + DisplayDungeonDialogue(&gUnknown_8102108); sub_803E708(10,0x46); SetupBossFightHP(MoltresEntity,400,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -612,29 +612,29 @@ void MoltresReFightDialogue(void) sub_803E708(10,0x46); SpriteLookAroundEffect(PartnerEntity); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8102158); + DisplayDungeonDialogue(&gUnknown_8102158); sub_803E708(10,0x46); sub_80869E4(PartnerEntity,4,1,2); sub_80869E4(LeaderEntity,4,2,6); - sub_8052910(&gUnknown_8102190); + DisplayDungeonDialogue(&gUnknown_8102190); sub_803E708(10,0x46); sub_80869E4(PartnerEntity,4,2,6); sub_80869E4(LeaderEntity,4,2,6); sub_8086690(); sub_8087F24(); sub_803E708(10,0x46); - sub_8085930(5); + sub_8085930(DIRECTION_NORTHWEST); sub_803E708(4,0x46); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_8087D30(MoltresEntity); sub_808663C(); sub_8087EB0(); - sub_8052910(&gUnknown_8102200); + DisplayDungeonDialogue(&gUnknown_8102200); sub_803E708(10,0x46); sub_8087DE8(0xb,6); - sub_8052910(&gUnknown_8102254); + DisplayDungeonDialogue(&gUnknown_8102254); sub_803E708(10,0x46); - sub_8052910(&gUnknown_81022F8); + DisplayDungeonDialogue(&gUnknown_81022F8); sub_803E708(10,0x46); SetupBossFightHP(MoltresEntity,400,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -650,29 +650,29 @@ void MoltresPostStoryPreFightDialogue(void) sub_8087D80(0xc,5); sub_808654C(); if (sub_8086AE4(SPECIES_MOLTRES)) { - sub_8085930(5); + sub_8085930(DIRECTION_NORTHWEST); sub_803E708(4,0x46); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_803E708(4,0x46); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8100D3C); + DisplayDungeonDialogue(&gUnknown_8100D3C); sub_803E708(10,0x46); gDungeonGlobalData->unk2 = 1; } else { - sub_8052910(&gUnknown_810232C); - sub_8085930(5); + DisplayDungeonDialogue(&gUnknown_810232C); + sub_8085930(DIRECTION_NORTHWEST); sub_803E708(4,0x46); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_8087D30(MoltresEntity); - sub_8052910(&gUnknown_8102398); + DisplayDungeonDialogue(&gUnknown_8102398); sub_8087D80(0xc,5); sub_8087DE8(9,5); - sub_8052910(&gUnknown_81023C4); + DisplayDungeonDialogue(&gUnknown_81023C4); sub_8087EB0(); - sub_8052910(&gUnknown_8102400); + DisplayDungeonDialogue(&gUnknown_8102400); sub_8087DE8(0xb,6); - sub_8052910(&gUnknown_8102454); + DisplayDungeonDialogue(&gUnknown_8102454); sub_803E708(10,0x46); SetupBossFightHP(MoltresEntity,400,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -893,7 +893,7 @@ void sub_8087F54(void) sub_8083E88(0x72); sub_8085374(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); SetFacingDirection(ArticunoEntity, DIRECTION_SOUTH); sub_8086A3C(ArticunoEntity); @@ -909,7 +909,7 @@ void sub_8087FB4(void) sub_8083E88(0x72); sub_8085374(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); SetFacingDirection(ArticunoEntity, DIRECTION_SOUTH); sub_806CDD4(ArticunoEntity, 0xF, DIRECTION_SOUTH); CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_ARTICUNO); @@ -924,7 +924,7 @@ void sub_8087FF8(void) ArticunoEntity = sub_8085680(0xd); sub_8085374(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); if (sub_8086AE4(SPECIES_ARTICUNO)) { sub_8068FE0(ArticunoEntity,0x21c,0); @@ -959,15 +959,15 @@ void ArticunoPreFightDialogue(void) ArticunoEntity = sub_8085680(0xd); sub_8086448(); SpriteLookAroundEffect(PartnerEntity); - sub_8052910(&gUnknown_8102478); + DisplayDungeonDialogue(&gUnknown_8102478); sub_803E708(10,0x46); sub_8086598(); sub_8083F14(); - sub_8052910(&gUnknown_81025B4); + DisplayDungeonDialogue(&gUnknown_81025B4); sub_803E708(10,0x46); sub_80869E4(PartnerEntity,4,1,2); sub_80869E4(LeaderEntity,4,2,6); - sub_8052910(&gUnknown_81025D4); + DisplayDungeonDialogue(&gUnknown_81025D4); sub_803E708(10,0x46); SetFacingDirection(LeaderEntity, DIRECTION_WEST); sub_803E708(4,0x46); @@ -983,9 +983,9 @@ void ArticunoPreFightDialogue(void) sub_803E708(4,0x46); SetFacingDirection(LeaderEntity, DIRECTION_WEST); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8102610); + DisplayDungeonDialogue(&gUnknown_8102610); sub_803E708(10,0x46); - sub_8052910(&gUnknown_81026C4); + DisplayDungeonDialogue(&gUnknown_81026C4); sub_803E708(10,0x46); sub_80869E4(LeaderEntity,4,1,4); sub_80869E4(PartnerEntity,4,2,4); @@ -993,33 +993,33 @@ void ArticunoPreFightDialogue(void) SpriteLookAroundEffect(PartnerEntity); PlaySoundEffect(0x1d5); SpriteLookAroundEffect(LeaderEntity); - sub_8052910(&gUnknown_810270C); + DisplayDungeonDialogue(&gUnknown_810270C); sub_803E708(10,0x46); - sub_8052910(&gUnknown_810272C); + DisplayDungeonDialogue(&gUnknown_810272C); sub_803E708(10,0x46); PlaySoundEffect(0); // snow flurry gDungeonGlobalData->unkE265 = 7; sub_807EAA0(0,1); PlaySoundEffect(0x1ee); // flash effect? sub_8088574(); - sub_8052910(&gUnknown_81027BC); + DisplayDungeonDialogue(&gUnknown_81027BC); sub_803E708(10,0x46); ArticunoScreenFlash(); sub_8086738(); PlaySoundEffect(0x1da); - sub_8052910(&gUnknown_8102810); + DisplayDungeonDialogue(&gUnknown_8102810); sub_803E708(10,0x46); PlaySoundEffect(0x1ea); sub_8088484(ArticunoEntity); sub_80865E8(); ArticunoScreenFlash(); - sub_8052910(&gUnknown_8102840); + DisplayDungeonDialogue(&gUnknown_8102840); sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH); ArticunoScreenFlash(); - sub_8052910(&gUnknown_810286C); + DisplayDungeonDialogue(&gUnknown_810286C); sub_806CDD4(ArticunoEntity,0x10,DIRECTION_SOUTH); ArticunoScreenFlash(); - sub_8052910(&gUnknown_81028B8); + DisplayDungeonDialogue(&gUnknown_81028B8); sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH); sub_803E708(0x10,0x46); SetupBossFightHP(ArticunoEntity,0x1c2,0xb); @@ -1036,12 +1036,12 @@ void ArticunoReFightDialogue(void) gDungeonGlobalData->unkE265 = 7; sub_807EAA0(0,1); sub_803E708(10,0x46); - sub_8052910(&gUnknown_81028D4); + DisplayDungeonDialogue(&gUnknown_81028D4); sub_806CDD4(ArticunoEntity,0x10,DIRECTION_SOUTH); ArticunoScreenFlash(); - sub_8052910(&gUnknown_8102918); + DisplayDungeonDialogue(&gUnknown_8102918); ArticunoScreenFlash(); - sub_8052910(&gUnknown_8102948); + DisplayDungeonDialogue(&gUnknown_8102948); sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH); sub_803E708(0x28,0x46); SetupBossFightHP(ArticunoEntity,0x1c2,0xb); @@ -1065,19 +1065,19 @@ void ArticunoPostStoryPreFightDialogue(void) ArticunoScreenFlash(); sub_8086738(); PlaySoundEffect(0x1da); - sub_8052910(&gUnknown_8102984); + DisplayDungeonDialogue(&gUnknown_8102984); sub_803E708(10,0x46); sub_8088484(ArticunoEntity); ArticunoScreenFlash(); - sub_8052910(&gUnknown_81029B4); + DisplayDungeonDialogue(&gUnknown_81029B4); sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH); ArticunoScreenFlash(); - sub_8052910(&gUnknown_8102A18); + DisplayDungeonDialogue(&gUnknown_8102A18); sub_806CDD4(ArticunoEntity,0x10,DIRECTION_SOUTH); ArticunoScreenFlash(); - sub_8052910(&gUnknown_8102A24); + DisplayDungeonDialogue(&gUnknown_8102A24); ArticunoScreenFlash(); - sub_8052910(&gUnknown_8102A74); + DisplayDungeonDialogue(&gUnknown_8102A74); sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH); sub_803E708(0x28,0x46); SetupBossFightHP(ArticunoEntity,0x1c2,0xb); @@ -1154,7 +1154,7 @@ void sub_80885C4(void) sub_803E708(0x3c,0x46); sub_8083F14(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3); } @@ -1186,7 +1186,7 @@ void sub_808862C(void) sub_80867F4(); sub_8085374(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); SetFacingDirection(AlakazamEntity, DIRECTION_NORTH); sub_80861D4(AlakazamEntity,0xd,4); @@ -1213,7 +1213,7 @@ void sub_80886C4(void) sub_80867F4(); sub_8085374(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_8068FE0(AlakazamEntity,0x21c,0); SetFacingDirection(GroudonEntity, DIRECTION_SOUTH); sub_8086A3C(GroudonEntity); @@ -1236,7 +1236,7 @@ void sub_808875C(void) GroudonEntity = sub_8085680(0xe); sub_80867F4(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); sub_8068FE0(AlakazamEntity,0x21c,0); if (sub_8086AE4(SPECIES_GROUDON)) { @@ -1277,31 +1277,31 @@ void GroudonPreFightDialogue(void) AlakazamEntity = sub_8085680(10); GroudonEntity = sub_8085680(0xe); sub_8086448(); - sub_8052910(&gUnknown_8102E70); + DisplayDungeonDialogue(&gUnknown_8102E70); sub_803E708(10,0x46); sub_803E708(0x3c,0x46); - sub_8052910(&gUnknown_8102EBC); + DisplayDungeonDialogue(&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); + DisplayDungeonDialogue(&gUnknown_8102EE0); sub_803E708(10,0x46); sub_8086838(1,1,1); sub_808680C(); sub_803E708(0x3c,0x46); - sub_8052910(&gUnknown_8102EF8); + DisplayDungeonDialogue(&gUnknown_8102EF8); sub_803E708(10,0x46); GroudonScreenFlash(); - sub_8052910(&gUnknown_8102F30); + DisplayDungeonDialogue(&gUnknown_8102F30); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8102F64); + DisplayDungeonDialogue(&gUnknown_8102F64); sub_803E708(10,0x46); PlaySoundEffect(0x1d5); SpriteLookAroundEffect(PartnerEntity); - sub_8052910(&gUnknown_8102F84); + DisplayDungeonDialogue(&gUnknown_8102F84); sub_803E708(10,0x46); sub_808682C(); sub_803E708(0x3c,0x46); @@ -1309,39 +1309,39 @@ void GroudonPreFightDialogue(void) PlaySoundEffect(0x205); sub_8086738(); sub_8068FE0(AlakazamEntity,0x21c,0); - sub_8052910(&gUnknown_8102FAC); + DisplayDungeonDialogue(&gUnknown_8102FAC); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8102FC4); + DisplayDungeonDialogue(&gUnknown_8102FC4); sub_803E708(10,0x46); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_8086764(); sub_803E708(0x28,0x46); PlaySoundEffect(0x1d5); SpriteLookAroundEffect(PartnerEntity); - sub_8052910(&gUnknown_8102FD8); + DisplayDungeonDialogue(&gUnknown_8102FD8); sub_803E708(10,0x46); sub_8086838(1,1,1); sub_808680C(); sub_803E708(0x3c,0x46); - sub_8052910(&gUnknown_8103054); + DisplayDungeonDialogue(&gUnknown_8103054); sub_803E708(10,0x46); sub_8083F14(); GroudonScreenFlash2(); sub_803E708(0x1e,0x46); - sub_8052910(&gUnknown_81030D8); + DisplayDungeonDialogue(&gUnknown_81030D8); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8103110); + DisplayDungeonDialogue(&gUnknown_8103110); sub_803E708(10,0x46); sub_803E708(0x1e,0x46); sub_808682C(); sub_803E708(0x3c,0x46); PlaySoundEffect(0x1fa); sub_8086738(); - sub_8085930(4); - sub_8052910(&gUnknown_8103140); + sub_8085930(DIRECTION_NORTH); + DisplayDungeonDialogue(&gUnknown_8103140); sub_803E708(10,0x46); sub_8086A54(GroudonEntity); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_8086764(); SetupBossFightHP(GroudonEntity,500,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -1357,23 +1357,23 @@ void GroudonReFightDialogue(void) sub_8086838(1,1,1); sub_808680C(); sub_803E708(0x3c,0x46); - sub_8052910(&gUnknown_8103188); + DisplayDungeonDialogue(&gUnknown_8103188); sub_803E708(10,0x46); GroudonScreenFlash(); sub_803E708(0x1e,0x46); - sub_8052910(&gUnknown_8103228); + DisplayDungeonDialogue(&gUnknown_8103228); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8103310); + DisplayDungeonDialogue(&gUnknown_8103310); sub_803E708(10,0x46); sub_808682C(); sub_803E708(0x3c,0x46); sub_8083F14(); PlaySoundEffect(0x1fa); sub_8086738(); - sub_8052910(&gUnknown_8103340); + DisplayDungeonDialogue(&gUnknown_8103340); sub_803E708(10,0x46); sub_8086A54(GroudonEntity); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_8086764(); SetupBossFightHP(GroudonEntity,500,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -1391,17 +1391,17 @@ void GroudonPostStoryPreFightDialogue(void) sub_80866C4(&gUnknown_8103488); } else{ - sub_8052910(&gUnknown_81033A0); + DisplayDungeonDialogue(&gUnknown_81033A0); sub_803E708(10,0x46); SceneGroudonMovement(GroudonEntity); SceneGroudonMovement(GroudonEntity); - sub_8052910(&gUnknown_81033AC); + DisplayDungeonDialogue(&gUnknown_81033AC); PlaySoundEffect(0x1f6); GroudonScreenFlash(); - sub_8052910(&gUnknown_810343C); + DisplayDungeonDialogue(&gUnknown_810343C); PlaySoundEffect(0x1f6); GroudonScreenFlash(); - sub_8052910(&gUnknown_810347C); + DisplayDungeonDialogue(&gUnknown_810347C); sub_803E708(10,0x46); SetupBossFightHP(GroudonEntity,500,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -1431,7 +1431,7 @@ void SceneGroudonMovement(struct DungeonEntity * param_1) sub_80861D4(param_1,0xf,0); sub_803E708(10,0x46); sub_808682C(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_803E708(0x22,0x46); } @@ -1503,7 +1503,7 @@ void sub_8088DC0(void) sub_8086838(0,1,0); sub_8085374(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); sub_8086A3C(uVar2); sub_806CDD4(uVar2,0xe,DIRECTION_SOUTH); @@ -1526,7 +1526,7 @@ void sub_8088E5C(void) sub_80867F4(); sub_8086838(0,1,0); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); sub_8068FE0(uVar2,0x21c,0); sub_8068FE0(uVar3,0x21c,0); @@ -1559,7 +1559,7 @@ void MagmaCavernMidDialogue(void) SpriteLookAroundEffect(PartnerEntity); // Let's see.. // I wonder where we are? - sub_8052910(&gUnknown_8102B1C); + DisplayDungeonDialogue(&gUnknown_8102B1C); sub_803E708(10,0x46); sub_80869E4(PartnerEntity,4,1,2); sub_80869E4(LeaderEntity,4,2,6); @@ -1568,7 +1568,7 @@ void MagmaCavernMidDialogue(void) // // I'm certain we've come quite // far already.. - sub_8052910(&gUnknown_8102B54); + DisplayDungeonDialogue(&gUnknown_8102B54); sub_803E708(10,0x46); sub_8083F14(); sub_80855E4(sub_80868F4); @@ -1577,20 +1577,20 @@ void MagmaCavernMidDialogue(void) sub_803E708(0x28,0x46); // Waaah! // Qu-quake! - sub_8052910(&gUnknown_8102BC4); + DisplayDungeonDialogue(&gUnknown_8102BC4); sub_803E708(0x78,0x46); sub_8083E58(0x1c5); sub_808682C(); sub_80855E4(sub_8086910); sub_803E708(0x14,0x46); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_803E708(10,0x46); // Whew! // It settled down. // // Whew // It's over. - sub_8052910(&gUnknown_8102BE4); + DisplayDungeonDialogue(&gUnknown_8102BE4); sub_803E708(10,0x46); PlaySoundEffect(0x1d5); SpriteLookAroundEffect(PartnerEntity); @@ -1598,7 +1598,7 @@ void MagmaCavernMidDialogue(void) sub_80856E0(PartnerEntity,4); // Hey! {ARG_POKEMON_0}! // Over there! - sub_8052910(&gUnknown_8102C30); + DisplayDungeonDialogue(&gUnknown_8102C30); iVar3->entityData->unk15E = 0; iVar4->entityData->unk15E =0; local_20[0] = (iVar3->posPixelX + iVar4->posPixelX) / 2; @@ -1611,29 +1611,29 @@ void MagmaCavernMidDialogue(void) // // Hey! // Snap out of it! - sub_8052910(&gUnknown_8102C54); + DisplayDungeonDialogue(&gUnknown_8102C54); sub_803E708(10,0x46); // Urrrrgh... - sub_8052910(&gUnknown_8102C98); + DisplayDungeonDialogue(&gUnknown_8102C98); sub_803E708(10,0x46); sub_80869E4(LeaderEntity,4,2,5); // What happened to you? // // What happened here? - sub_8052910(&gUnknown_8102CB0); + DisplayDungeonDialogue(&gUnknown_8102CB0); sub_803E708(10,0x46); // We challenged.. // {ARG_POKEMON_2}... // And wiped out.. - sub_8052910(&gUnknown_8102CF8); + DisplayDungeonDialogue(&gUnknown_8102CF8); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8102D34); + DisplayDungeonDialogue(&gUnknown_8102D34); sub_803E708(10,0x46); sub_80869E4(LeaderEntity,4,1,3); sub_80869E4(PartnerEntity,4,1,3); // Grrgh.. // We... It crushed us - sub_8052910(&gUnknown_8102D4C); + DisplayDungeonDialogue(&gUnknown_8102D4C); sub_803E708(10,0x46); PlaySoundEffect(0x1d5); SpriteLookAroundEffect(PartnerEntity); @@ -1644,20 +1644,20 @@ void MagmaCavernMidDialogue(void) // Wait... // What about {ARG_POKEMON_3}? // Where did {ARG_POKEMON_3} go? - sub_8052910(&gUnknown_8102D7C); + DisplayDungeonDialogue(&gUnknown_8102D7C); sub_803E708(0x1e,0x46); // {ARG_POKEMON_3} is... // Still battling {ARG_POKEMON_2}... - sub_8052910(&gUnknown_8102DFC); + DisplayDungeonDialogue(&gUnknown_8102DFC); sub_803E708(10,0x46); sub_80869E4(PartnerEntity,4,1,2); sub_80869E4(LeaderEntity,4,2,6); // {ARG_POKEMON_0}! // We've got to hurry! - sub_8052910(&gUnknown_8102E2C); + DisplayDungeonDialogue(&gUnknown_8102E2C); sub_8089294(); // Be careful! - sub_8052910(&gUnknown_8102E54); + DisplayDungeonDialogue(&gUnknown_8102E54); sub_803E708(10,0x46); gDungeonGlobalData->unk2 = 1; } @@ -1770,7 +1770,7 @@ void sub_80892C8(void) sub_8083E88(0x1a); sub_8085374(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); SetFacingDirection(RayquazaEntity, DIRECTION_SOUTH); sub_8086A3C(RayquazaEntity); @@ -1787,7 +1787,7 @@ void sub_8089328(void) RayquazaEntity = sub_8085680(0xf); sub_8083E88(0x1a); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); if (sub_8086AE4(SPECIES_RAYQUAZA)) { sub_8068FE0(RayquazaEntity,0x21c,0); @@ -1818,33 +1818,33 @@ void RayquazaPreFightDialogue(void) PartnerEntity = GetPartnerEntity(); RayquazaEntity = sub_8085680(0xf); sub_8086448(); - sub_8052910(&gUnknown_8103500); + DisplayDungeonDialogue(&gUnknown_8103500); RayquazaScreenFlash(); - sub_8052910(&gUnknown_810352C); + DisplayDungeonDialogue(&gUnknown_810352C); sub_80856E0(PartnerEntity,4); SpriteLookAroundEffect(PartnerEntity); sub_803E708(10,0x46); sub_80869E4(PartnerEntity,4,1,2); sub_80869E4(LeaderEntity,4,2,6); - sub_8052910(&gUnknown_8103578); + DisplayDungeonDialogue(&gUnknown_8103578); sub_80869E4(PartnerEntity,4,2,4); sub_80869E4(LeaderEntity,4,1,4); - sub_8052910(&gUnknown_81035D4); + DisplayDungeonDialogue(&gUnknown_81035D4); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8103618); + DisplayDungeonDialogue(&gUnknown_8103618); sub_803E708(10,0x46); - sub_8052910(&gUnknown_810367C); + DisplayDungeonDialogue(&gUnknown_810367C); RayquazaScreenFlash(); PlaySoundEffect(0x1da); // Rayquaza Cry - sub_8052910(&gUnknown_8103690); + DisplayDungeonDialogue(&gUnknown_8103690); sub_8089620(RayquazaEntity); - sub_8052910(&gUnknown_81036C8); + DisplayDungeonDialogue(&gUnknown_81036C8); RayquazaScreenFlash(); - sub_8052910(&gUnknown_81037A0); + DisplayDungeonDialogue(&gUnknown_81037A0); RayquazaScreenFlash(); - sub_8052910(&gUnknown_81037D4); + DisplayDungeonDialogue(&gUnknown_81037D4); RayquazaScreenFlash(); - sub_8052910(&gUnknown_8103820); + DisplayDungeonDialogue(&gUnknown_8103820); SetupBossFightHP(RayquazaEntity,600,0x20); sub_80858AC(&LeaderEntity->posPixelX,0x10); } @@ -1859,16 +1859,16 @@ void RayquazaReFightDialogue(void) sub_8086448(); RayquazaScreenFlash(); PlaySoundEffect(0x1da); // Rayquaza Cry - sub_8052910(&gUnknown_8103690); + DisplayDungeonDialogue(&gUnknown_8103690); sub_803E708(10,0x46); sub_8089620(RayquazaEntity); - sub_8052910(&gUnknown_8103844); + DisplayDungeonDialogue(&gUnknown_8103844); RayquazaScreenFlash(); - sub_8052910(&gUnknown_8103874); + DisplayDungeonDialogue(&gUnknown_8103874); RayquazaScreenFlash(); - sub_8052910(&gUnknown_81038A8); + DisplayDungeonDialogue(&gUnknown_81038A8); RayquazaScreenFlash(); - sub_8052910(&gUnknown_81038F8); + DisplayDungeonDialogue(&gUnknown_81038F8); SetupBossFightHP(RayquazaEntity,600,0x20); sub_80858AC(&LeaderEntity->posPixelX,0x10); } @@ -1886,15 +1886,15 @@ void RayquazaPostStoryPreFightDialogue(void) } else { PlaySoundEffect(0x1da); // Rayquaza Cry - sub_8052910(&gUnknown_8103904); + DisplayDungeonDialogue(&gUnknown_8103904); sub_8089620(RayquazaEntity); - sub_8052910(&gUnknown_8103938); + DisplayDungeonDialogue(&gUnknown_8103938); RayquazaScreenFlash(); - sub_8052910(&gUnknown_8103AA4); + DisplayDungeonDialogue(&gUnknown_8103AA4); RayquazaScreenFlash(); - sub_8052910(&gUnknown_8103AE4); + DisplayDungeonDialogue(&gUnknown_8103AE4); RayquazaScreenFlash(); - sub_8052910(&gUnknown_8103B30); + DisplayDungeonDialogue(&gUnknown_8103B30); SetupBossFightHP(RayquazaEntity,600,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); } @@ -1956,7 +1956,7 @@ void sub_808970C(void) LeaderEntity = xxx_call_GetLeaderEntity(); sub_8083E88(0x7D); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); sub_808563C(sub_8089908); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY + -3); @@ -1968,7 +1968,7 @@ void sub_808974C(void) LeaderEntity = xxx_call_GetLeaderEntity(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); sub_808563C(sub_80898F8); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY + -3); @@ -2008,27 +2008,27 @@ void sub_80897F0(void) sub_808563C(sub_80862BC); sub_803E708(0x20,0x46); sub_808692C(); - sub_8052910(&gUnknown_8103BD8); + DisplayDungeonDialogue(&gUnknown_8103BD8); // We don't like to brag or // nothing, but - sub_8052910(&gUnknown_8103C00); + DisplayDungeonDialogue(&gUnknown_8103C00); // We get furious real easy // You know that?! - sub_8052910(&gUnknown_8103C3C); + DisplayDungeonDialogue(&gUnknown_8103C3C); // What really irritates us is // when we see some dim witted face - sub_8052910(&gUnknown_8103C74); + DisplayDungeonDialogue(&gUnknown_8103C74); // ......... // Wrooooooar! // That vacant expression - sub_8052910(&gUnknown_8103CC4); + DisplayDungeonDialogue(&gUnknown_8103CC4); // Gwoooh // It's ticking me off! // I'm seeing red! - sub_8052910(&gUnknown_8103D0C); + DisplayDungeonDialogue(&gUnknown_8103D0C); // Mukkkeeeeeh // Get 'em! It's frenzy time! - sub_8052910(&gUnknown_8103D50); + DisplayDungeonDialogue(&gUnknown_8103D50); sub_803E708(10,0x46); sub_80858AC(&LeaderEntity->posPixelX,0x10); } @@ -2045,10 +2045,10 @@ void sub_8089878(void) 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); + DisplayDungeonDialogue(&gUnknown_8103D8C); + DisplayDungeonDialogue(&gUnknown_8103D98); + DisplayDungeonDialogue(&gUnknown_8103DD8); + DisplayDungeonDialogue(&gUnknown_8103E28); sub_803E708(10,0x46); sub_80858AC(&LeaderEntity->posPixelX,0x10); } @@ -2079,7 +2079,7 @@ void sub_8089914(void) sub_8083F14(); gDungeonGlobalData->unk7 = 1; sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); SetFacingDirection(MewtwoEntity, DIRECTION_SOUTH); sub_8086A3C(MewtwoEntity); @@ -2096,7 +2096,7 @@ void sub_8089978(void) MewtwoEntity = sub_8085680(0x11); sub_8083F14(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); if(HasRecruitedMon(SPECIES_MEWTWO)){ sub_8083E88(0x23); @@ -2127,20 +2127,20 @@ void MewtwoPreFightDialogue(void) LeaderEntity = xxx_call_GetLeaderEntity(); MewtwoEntity = sub_8085680(0x11); sub_8086448(); - sub_8052910(&gUnknown_8103EA4); + DisplayDungeonDialogue(&gUnknown_8103EA4); sub_803E708(10,0x46); sub_8083E88(0x23); sub_8086794(); sub_803E708(0x1e,0x46); sub_8089B64(MewtwoEntity); sub_803E708(0x3c,0x46); - sub_8052910(&gUnknown_8103F0C); - sub_8052910(&gUnknown_8103F4C); + DisplayDungeonDialogue(&gUnknown_8103F0C); + DisplayDungeonDialogue(&gUnknown_8103F4C); sub_803E708(10,0x46); MewtwoScreenFlash(); - sub_8052910(&gUnknown_8103FCC); + DisplayDungeonDialogue(&gUnknown_8103FCC); MewtwoScreenFlash(); - sub_8052910(&gUnknown_8104008); + DisplayDungeonDialogue(&gUnknown_8104008); sub_803E708(10,0x46); SetupBossFightHP(MewtwoEntity,900,0x20); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -2158,16 +2158,16 @@ void MewtwoPreFightDialogue1(void) sub_80866C4(&gUnknown_8104144); } else { - sub_8052910(&gUnknown_8104044); + DisplayDungeonDialogue(&gUnknown_8104044); sub_8083E88(0x23); sub_8086794(); sub_8089B64(MewtwoEntity); sub_803E708(0x3c,0x46); - sub_8052910(&gUnknown_8104050); + DisplayDungeonDialogue(&gUnknown_8104050); MewtwoScreenFlash(); - sub_8052910(&gUnknown_81040CC); + DisplayDungeonDialogue(&gUnknown_81040CC); MewtwoScreenFlash(); - sub_8052910(&gUnknown_8104114); + DisplayDungeonDialogue(&gUnknown_8104114); SetupBossFightHP(MewtwoEntity,900,0x20); sub_80858AC(&LeaderEntity->posPixelX,0x10); } @@ -2230,7 +2230,7 @@ void sub_8089C44(void) EnteiEntity = sub_8085680(0x12); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); SetFacingDirection(EnteiEntity, DIRECTION_SOUTH); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY); CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_ENTEI); @@ -2246,7 +2246,7 @@ void sub_8089C90(void) EnteiEntity = sub_8085680(0x12); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); if (HasRecruitedMon(SPECIES_ENTEI)) { sub_8068FE0(EnteiEntity,0x21c,0); } @@ -2275,11 +2275,11 @@ void EnteiPreFightDialogue(void) LeaderEntity = xxx_call_GetLeaderEntity(); EnteiEntity = sub_8085680(0x12); EnteiScreenFlash(); - sub_8052910(&gUnknown_8104150); + DisplayDungeonDialogue(&gUnknown_8104150); EnteiScreenFlash(); - sub_8052910(&gUnknown_81041AC); + DisplayDungeonDialogue(&gUnknown_81041AC); EnteiScreenFlash(); - sub_8052910(&gUnknown_81041F8); + DisplayDungeonDialogue(&gUnknown_81041F8); sub_803E708(10,70); SetupBossFightHP(EnteiEntity,600,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -2293,11 +2293,11 @@ void EnteiPreFightDialogue1(void) LeaderEntity = xxx_call_GetLeaderEntity(); EnteiEntity = sub_8085680(0x12); EnteiScreenFlash(); - sub_8052910(&gUnknown_8104240); + DisplayDungeonDialogue(&gUnknown_8104240); EnteiScreenFlash(); - sub_8052910(&gUnknown_81042AC); + DisplayDungeonDialogue(&gUnknown_81042AC); EnteiScreenFlash(); - sub_8052910(&gUnknown_81042B8); + DisplayDungeonDialogue(&gUnknown_81042B8); sub_803E708(10,70); SetupBossFightHP(EnteiEntity,600,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -2315,11 +2315,11 @@ void EnteiPreFightDialogue2(void) } else { EnteiScreenFlash(); - sub_8052910(&gUnknown_8104310); + DisplayDungeonDialogue(&gUnknown_8104310); EnteiScreenFlash(); - sub_8052910(&gUnknown_810439C); + DisplayDungeonDialogue(&gUnknown_810439C); EnteiScreenFlash(); - sub_8052910(&gUnknown_81043C0); + DisplayDungeonDialogue(&gUnknown_81043C0); sub_803E708(10,70); SetupBossFightHP(EnteiEntity,600,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -2361,7 +2361,7 @@ void sub_8089EFC(void) RaikouEntity = sub_8085680(0x13); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); SetFacingDirection(RaikouEntity, DIRECTION_SOUTH); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY); CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_RAIKOU); @@ -2377,7 +2377,7 @@ void sub_8089F44(void) RaikouEntity = sub_8085680(0x13); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); SetFacingDirection(RaikouEntity, DIRECTION_SOUTH); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY); CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_RAIKOU); @@ -2393,7 +2393,7 @@ void sub_8089F8C(void) RaikouEntity = sub_8085680(0x13); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); if (HasRecruitedMon(SPECIES_RAIKOU)) { sub_8068FE0(RaikouEntity,0x21c,0); } @@ -2420,19 +2420,19 @@ void RaikouPreFightDialogue(void) LeaderEntity = xxx_call_GetLeaderEntity(); RaikouEntity = sub_8085680(0x13); - sub_8052910(&gUnknown_8104450); + DisplayDungeonDialogue(&gUnknown_8104450); RaikouScreenFlash(); - sub_8052910(&gUnknown_81044B4); + DisplayDungeonDialogue(&gUnknown_81044B4); gDungeonGlobalData->unkE265 = 4; sub_807EAA0(0,1); sub_803E708(10,70); - sub_8052910(&gUnknown_8104510); + DisplayDungeonDialogue(&gUnknown_8104510); RaikouScreenFlash(); - sub_8052910(&gUnknown_810453C); + DisplayDungeonDialogue(&gUnknown_810453C); RaikouScreenFlash(); - sub_8052910(&gUnknown_8104570); + DisplayDungeonDialogue(&gUnknown_8104570); RaikouScreenFlash(); - sub_8052910(&gUnknown_81045B0); + DisplayDungeonDialogue(&gUnknown_81045B0); sub_803E708(10,70); SetupBossFightHP(RaikouEntity,0x28a,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -2448,11 +2448,11 @@ void RaikouPreFightDialogue1(void) gDungeonGlobalData->unkE265 = 4; sub_807EAA0(0,1); RaikouScreenFlash(); - sub_8052910(&gUnknown_81045F8); + DisplayDungeonDialogue(&gUnknown_81045F8); RaikouScreenFlash(); - sub_8052910(&gUnknown_8104674); + DisplayDungeonDialogue(&gUnknown_8104674); RaikouScreenFlash(); - sub_8052910(&gUnknown_81046A0); + DisplayDungeonDialogue(&gUnknown_81046A0); sub_803E708(10,70); SetupBossFightHP(RaikouEntity,0x28a,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -2471,11 +2471,11 @@ void RaikouPreFightDialogue2(void) else { gDungeonGlobalData->unkE265 = 4; sub_807EAA0(0,1); - sub_8052910(&gUnknown_81046CC); + DisplayDungeonDialogue(&gUnknown_81046CC); RaikouScreenFlash(); - sub_8052910(&gUnknown_8104744); + DisplayDungeonDialogue(&gUnknown_8104744); RaikouScreenFlash(); - sub_8052910(&gUnknown_810476C); + DisplayDungeonDialogue(&gUnknown_810476C); sub_803E708(10,70); SetupBossFightHP(RaikouEntity,0x28a,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -2517,7 +2517,7 @@ void sub_808A264(void) SuicuneEntity = sub_8085680(0x14); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); SetFacingDirection(SuicuneEntity, DIRECTION_SOUTH); sub_8086A3C(SuicuneEntity); @@ -2534,7 +2534,7 @@ void sub_808A2C0(void) SuicuneEntity = sub_8085680(0x14); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); SetFacingDirection(SuicuneEntity, DIRECTION_SOUTH); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY); CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SUICUNE); @@ -2549,7 +2549,7 @@ void sub_808A308(void) SuicuneEntity = sub_8085680(0x14); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); if (HasRecruitedMon(SPECIES_SUICUNE)) { sub_8068FE0(SuicuneEntity,0x21c,0); } @@ -2576,21 +2576,21 @@ void SuicunePreFightDialogue(void) LeaderEntity = xxx_call_GetLeaderEntity(); SuicuneEntity = sub_8085680(0x14); sub_8086448(); - sub_8052910(&gUnknown_8104784); + DisplayDungeonDialogue(&gUnknown_8104784); sub_803E708(10,70); - sub_8052910(&gUnknown_8104790); + DisplayDungeonDialogue(&gUnknown_8104790); sub_803E708(10,70); sub_80426C8(1,2); sub_803E708(0x3c,70); - sub_8052910(&gUnknown_81047B0); + DisplayDungeonDialogue(&gUnknown_81047B0); sub_803E708(10,70); sub_808A528(SuicuneEntity); - sub_8052910(&gUnknown_810484C); - sub_8052910(&gUnknown_8104888); + DisplayDungeonDialogue(&gUnknown_810484C); + DisplayDungeonDialogue(&gUnknown_8104888); SuicuneScreenFlash(); - sub_8052910(&gUnknown_81048C8); + DisplayDungeonDialogue(&gUnknown_81048C8); SuicuneScreenFlash(); - sub_8052910(&gUnknown_8104914); + DisplayDungeonDialogue(&gUnknown_8104914); sub_803E708(10,70); SetupBossFightHP(SuicuneEntity,0x28a,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -2603,11 +2603,11 @@ void SuicunePreFightDialogue1(void) LeaderEntity = xxx_call_GetLeaderEntity(); SuicuneEntity = sub_8085680(0x14); - sub_8052910(&gUnknown_8104930); + DisplayDungeonDialogue(&gUnknown_8104930); SuicuneScreenFlash(); - sub_8052910(&gUnknown_8104980); + DisplayDungeonDialogue(&gUnknown_8104980); SuicuneScreenFlash(); - sub_8052910(&gUnknown_8104998); + DisplayDungeonDialogue(&gUnknown_8104998); sub_803E708(10,70); SetupBossFightHP(SuicuneEntity,0x28a,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -2624,11 +2624,11 @@ void SuicunePreFightDialogue2(void) sub_80866C4(&gUnknown_8104AC8); } else { - sub_8052910(&gUnknown_81049D4); + DisplayDungeonDialogue(&gUnknown_81049D4); SuicuneScreenFlash(); - sub_8052910(&gUnknown_8104A80); + DisplayDungeonDialogue(&gUnknown_8104A80); SuicuneScreenFlash(); - sub_8052910(&gUnknown_8104A9C); + DisplayDungeonDialogue(&gUnknown_8104A9C); sub_803E708(10,70); SetupBossFightHP(SuicuneEntity,0x28a,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -2694,7 +2694,7 @@ void sub_808A608(void) sub_80867F4(); sub_8086838(0,0,0); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); SetFacingDirection(HoOhEntity, DIRECTION_SOUTH); sub_8086A3C(HoOhEntity); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY + -6); @@ -2712,7 +2712,7 @@ void sub_808A668(void) sub_80867F4(); sub_8086838(0,0,0); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); if (HasRecruitedMon(SPECIES_HO_OH)) { sub_8068FE0(HoOhEntity,0x21c,0); } @@ -2750,10 +2750,10 @@ void HoOhPreFightDialogue(void) local_14[1] = LeaderEntity->posPixelY + -0x1000; sub_80858AC(local_14,0x88); sub_803E708(0x40,70); - sub_8052910(&gUnknown_8104AD4); + DisplayDungeonDialogue(&gUnknown_8104AD4); sub_803E708(10,70); HoOhScreenFlash(); - sub_8052910(&gUnknown_8104BEC); + DisplayDungeonDialogue(&gUnknown_8104BEC); sub_803E708(10,70); sub_80855E4(sub_80868F4); sub_808680C(); @@ -2763,15 +2763,15 @@ void HoOhPreFightDialogue(void) sub_8083E58(0x1c5); sub_808682C(); sub_80855E4(sub_8086910); - sub_8085930(4); - sub_8052910(&gUnknown_8104C10); - sub_8052910(&gUnknown_8104C54); + sub_8085930(DIRECTION_NORTH); + DisplayDungeonDialogue(&gUnknown_8104C10); + DisplayDungeonDialogue(&gUnknown_8104C54); sub_803E708(0x1e,70); sub_803E708(0x1e,70); HoOhScreenFlash(); - sub_8052910(&gUnknown_8104CB4); + DisplayDungeonDialogue(&gUnknown_8104CB4); HoOhScreenFlash(); - sub_8052910(&gUnknown_8104CE0); + DisplayDungeonDialogue(&gUnknown_8104CE0); sub_803E708(10,70); SetupBossFightHP(HoOhEntity,800,0x20); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -2794,7 +2794,7 @@ void HoOhPreFightDialogue1(void) sub_80866C4(&gUnknown_8104E54); } else { - sub_8052910(&gUnknown_8104CEC); + DisplayDungeonDialogue(&gUnknown_8104CEC); HoOhScreenFlash(); sub_80855E4(sub_80868F4); sub_808680C(); @@ -2802,12 +2802,12 @@ void HoOhPreFightDialogue1(void) sub_808A904(HoOhEntity); sub_808682C(); sub_80855E4(sub_8086910); - sub_8085930(4); - sub_8052910(&gUnknown_8104D60); + sub_8085930(DIRECTION_NORTH); + DisplayDungeonDialogue(&gUnknown_8104D60); HoOhScreenFlash(); - sub_8052910(&gUnknown_8104DDC); + DisplayDungeonDialogue(&gUnknown_8104DDC); HoOhScreenFlash(); - sub_8052910(&gUnknown_8104E0C); + DisplayDungeonDialogue(&gUnknown_8104E0C); sub_803E708(10,70); SetupBossFightHP(HoOhEntity,800,0x20); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -2871,7 +2871,7 @@ void sub_808A9E4(void) LatiosEntity = sub_8085680(0x16); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); SetFacingDirection(LatiosEntity, DIRECTION_NORTH); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 4); @@ -2887,7 +2887,7 @@ void sub_808AA3C(void) LatiosEntity = sub_8085680(0x16); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); SetFacingDirection(LatiosEntity, DIRECTION_NORTH); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3); @@ -2903,7 +2903,7 @@ void sub_808AA94(void) LatiosEntity = sub_8085680(0x16); sub_8083E88(0x72); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); sub_8068FE0(LatiosEntity,0x21c,0); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3); @@ -2939,11 +2939,11 @@ void LatiosPreFightDialogue(void) sub_80862BC(LatiosEntity); sub_803E708(0x20,70); sub_808692C(); - sub_8052910(&gUnknown_8104E60); + DisplayDungeonDialogue(&gUnknown_8104E60); LatiosScreenFlash(); - sub_8052910(&gUnknown_8104EFC); + DisplayDungeonDialogue(&gUnknown_8104EFC); LatiosScreenFlash(); - sub_8052910(&gUnknown_8104F30); + DisplayDungeonDialogue(&gUnknown_8104F30); sub_803E708(10,70); SetupBossFightHP(LatiosEntity,600,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -2958,11 +2958,11 @@ void LatiosReFightDialogue(void) LatiosEntity = sub_8085680(0x16); sub_8086448(); sub_808692C(); - sub_8052910(&gUnknown_8104F64); + DisplayDungeonDialogue(&gUnknown_8104F64); LatiosScreenFlash(); - sub_8052910(&gUnknown_8104EFC); + DisplayDungeonDialogue(&gUnknown_8104EFC); LatiosScreenFlash(); - sub_8052910(&gUnknown_8104F30); + DisplayDungeonDialogue(&gUnknown_8104F30); sub_803E708(10,70); SetupBossFightHP(LatiosEntity,600,0xb); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -3021,7 +3021,7 @@ void sub_808ACC0(void) else { sub_8098044(0x22); sub_8098044(0x1d); - sub_80855E4(sub_808B2B0); + sub_80855E4(SetupRegiFacingDirection); CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_REGIROCK); } } @@ -3053,7 +3053,7 @@ void sub_808AD48(void) else { sub_8098044(0x22); sub_8098044(0x1d); - sub_80855E4(sub_808B2B0); + sub_80855E4(SetupRegiFacingDirection); CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_REGICE); } } @@ -3086,7 +3086,7 @@ void sub_808ADCC(void) else { sub_8098044(0x22); sub_8098044(0x1d); - sub_80855E4(sub_808B2B0); + sub_80855E4(SetupRegiFacingDirection); CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_REGISTEEL); } } @@ -3110,7 +3110,7 @@ void sub_808AE54(char param_1,char param_2,u32 *param_3) sub_8083E88(0x72); // Something fell from Regirock's body // Regirock was apparently guarding this item - sub_8052910(&gUnknown_8105040); + DisplayDungeonDialogue(&gUnknown_8105040); } } } @@ -3133,7 +3133,7 @@ void sub_808AEC8(char param_1,char param_2,u32 *param_3) sub_8083E88(0x72); // Something fell from Regice's body // Regice was apparently guarding this item - sub_8052910(&gUnknown_810510C); + DisplayDungeonDialogue(&gUnknown_810510C); } } } @@ -3155,7 +3155,7 @@ void sub_808AF3C(char param_1,char param_2,u32 *param_3) sub_8083E88(0x72); // Something fell from Registeel's body // Registeel was apparently guarding this item - sub_8052910(&gUnknown_81051D0); + DisplayDungeonDialogue(&gUnknown_81051D0); } } } @@ -3171,7 +3171,7 @@ void sub_808AFB0(char param_1) sub_8097FD0(0x1d); SetMessageArgument(gAvailablePokemonNames,GetLeaderEntity(),0); // {ARG_POKEMON_0} obtained the Rock Part that Regirock was guarding - sub_8052910(&gUnknown_81050B4); + DisplayDungeonDialogue(&gUnknown_81050B4); sub_80421C0(0,0xd4); sub_803E708(10,70); sub_8046D20(); @@ -3189,7 +3189,7 @@ void sub_808B030(char param_1) sub_8097FD0(0x1d); SetMessageArgument(gAvailablePokemonNames,GetLeaderEntity(),0); // {ARG_POKEMON_0} obtained the Ice Part that Regice was guarding - sub_8052910(&gUnknown_810517C); + DisplayDungeonDialogue(&gUnknown_810517C); sub_80421C0(0,0xd4); sub_803E708(10,70); sub_8046D20(); @@ -3207,7 +3207,7 @@ void sub_808B0B0(char param_1) sub_8097FD0(0x1d); SetMessageArgument(gAvailablePokemonNames, GetLeaderEntity(), 0); // {ARG_POKEMON_0} obtained the Steel Part that Registeel was guarding - sub_8052910(&gUnknown_8105244); + DisplayDungeonDialogue(&gUnknown_8105244); sub_80421C0(0,0xd4); sub_803E708(10,70); sub_8046D20(); @@ -3217,36 +3217,36 @@ void sub_808B0B0(char param_1) void RegirockPreFightDialogue(void) { if (sub_8098100(0x22) == '\0') { - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); // INTRUDER ALERT // EXTERMINATE - sub_8052910(&gUnknown_8104FD4); + DisplayDungeonDialogue(&gUnknown_8104FD4); sub_803E708(10,70); - sub_808563C(sub_808B2C4); + sub_808563C(SetupRegirockFightHP); } } void RegicePreFightDialogue(void) { if (sub_8098100(0x22) == '\0') { - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); // INTRUDER ALERT // EXTERMINATE - sub_8052910(&gUnknown_8105028); + DisplayDungeonDialogue(&gUnknown_8105028); sub_803E708(10,70); - sub_808563C(sub_808B2D4); + sub_808563C(SetupRegiceFightHP); } } void RegisteelPreFightDialogue(void) { if (sub_8098100(0x22) == '\0') { - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); // INTRUDER ALERT // EXTERMINATE - sub_8052910(&gUnknown_8105034); + DisplayDungeonDialogue(&gUnknown_8105034); sub_803E708(10,70); - sub_808563C(sub_808B2E4); + sub_808563C(SetupRegisteelFightHP); } } @@ -3362,26 +3362,26 @@ void sub_808B1CC(u8 r0) } -void sub_808B2B0(struct DungeonEntity *r0) +void SetupRegiFacingDirection(struct DungeonEntity *r0) { r0->entityData->facingDir = DIRECTION_NORTH; sub_806CE68(r0, DIRECTION_NORTH); } -void sub_808B2C4(struct DungeonEntity *r0) +void SetupRegirockFightHP(struct DungeonEntity *r0) { SetupBossFightHP(r0, 0xE1 << 1, 0xB); } -void sub_808B2D4(struct DungeonEntity *r0) +void SetupRegiceFightHP(struct DungeonEntity *r0) { SetupBossFightHP(r0, 0xE1 << 1, 0xB); } -void sub_808B2E4(struct DungeonEntity *r0) +void SetupRegisteelFightHP(struct DungeonEntity *r0) { SetupBossFightHP(r0, 0xE1 << 1, 0xB); } @@ -3397,7 +3397,7 @@ void sub_808B2F4(void) sub_808BCE4(); sub_8049ED4(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); SetFacingDirection(JirachiEntity, DIRECTION_SOUTH); sub_8086A3C(JirachiEntity); @@ -3414,7 +3414,7 @@ void sub_808B35C(void) JirachiEntity = sub_8085680(0x1a); sub_8083E88(0x79); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); if (HasRecruitedMon(SPECIES_JIRACHI)) { sub_8068FE0(JirachiEntity,0x21c,0); @@ -3528,19 +3528,19 @@ void JirachiPreFightDialogue(void) JirachiEntity = sub_8085680(0x1a); sub_8086448(); sub_803E708(0x40,70); - sub_8052910(&gUnknown_8105438); + DisplayDungeonDialogue(&gUnknown_8105438); sub_803E708(10,70); SpriteLookAroundEffect(LeaderEntity); sub_803E708(10,70); - sub_8052910(&gUnknown_81054A0); + DisplayDungeonDialogue(&gUnknown_81054A0); sub_80861F8(0x37,JirachiEntity,1); sub_80855E4(sub_80862BC); sub_803E708(0x3c,70); sub_808BBB8(JirachiEntity); sub_803E708(0x5a,70); - sub_8052910(&gUnknown_81054E4); + DisplayDungeonDialogue(&gUnknown_81054E4); sub_803E708(10,70); - sub_8052910(&gUnknown_810550C); + DisplayDungeonDialogue(&gUnknown_810550C); sub_803E708(10,70); SetupBossFightHP(JirachiEntity,0x15e,0x20); sub_80858AC(&LeaderEntity->posPixelX,0x10); @@ -3561,15 +3561,15 @@ void sub_808B50C(void) sub_8083ED8(0x1e); sub_803E708(0x1e,70); // Fwaaaahhhh - sub_8052910(&gUnknown_810554C); + DisplayDungeonDialogue(&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); + DisplayDungeonDialogue(&gUnknown_8105558); sub_803E708(10,70); sub_808BC20(JirachiEntity); - sub_8052910(&gUnknown_81055F4); + DisplayDungeonDialogue(&gUnknown_81055F4); sub_803E708(10,70); gDungeonGlobalData->unk2 = 1; } diff --git a/src/code_80869E4.c b/src/code_80869E4.c index b7526d0..d7ebaf5 100644 --- a/src/code_80869E4.c +++ b/src/code_80869E4.c @@ -27,7 +27,7 @@ extern void sub_8085C54(u32, u32, u32, u32, u32); extern void PlaySoundEffect(u32); extern struct DungeonEntity *xxx_call_GetLeaderEntity(void); void SpriteLookAroundEffect(struct DungeonEntity *r0); -extern void sub_8052910(u32); +extern void DisplayDungeonDialogue(u32); void sub_8086494(); extern u32 gUnknown_8107314[]; @@ -171,16 +171,16 @@ void sub_8086494(void) { s32 iVar1; - sub_8085930(3); + sub_8085930(DIRECTION_NORTHEAST); sub_803E708(4, 0x46); - sub_8085930(2); + sub_8085930(DIRECTION_EAST); sub_803E708(4, 0x46); - sub_8085930(1); + sub_8085930(DIRECTION_SOUTHEAST); sub_803E708(4, 0x46); - sub_8085930(0); + sub_8085930(DIRECTION_SOUTH); sub_803E708(4, 0x46); sub_80855E4(sub_80863C8); @@ -312,7 +312,7 @@ void sub_80866C4(u32 r0) SpriteLookAroundEffect(xxx_call_GetLeaderEntity()); sub_803E708(0xA, 0x46); - sub_8052910(r0); + DisplayDungeonDialogue(r0); sub_803E708(0xA, 0x46); sub_8086494(); gDungeonGlobalData->unk2 = 1; @@ -461,16 +461,16 @@ void sub_8086910(struct DungeonEntity *r0) void sub_808692C(void) { - sub_80859F0(5); + sub_80859F0(DIRECTION_NORTHWEST); sub_803E708(0x4, 0x46); - sub_80859F0(6); + sub_80859F0(DIRECTION_WEST); sub_803E708(0x4, 0x46); - sub_80859F0(7); + sub_80859F0(DIRECTION_SOUTHWEST); sub_803E708(0x4, 0x46); - sub_80859F0(0); + sub_80859F0(DIRECTION_SOUTH); sub_803E708(0x4, 0x46); } diff --git a/src/code_8086A3C.c b/src/code_8086A3C.c index d8dbe4c..1e5c5cd 100644 --- a/src/code_8086A3C.c +++ b/src/code_8086A3C.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/direction.h" #include "dungeon_entity.h" #include "dungeon_global_data.h" #include "pokemon.h" @@ -22,7 +23,7 @@ extern void sub_8085860(s32 r0, u32 r1); extern void sub_8068FE0(struct DungeonEntity *, u32, u32); extern void sub_8097FA8(u32); extern void sub_80858AC(void *, u32); -extern void sub_8052910(u8 *); +extern void DisplayDungeonDialogue(u8 *); extern void sub_806CDD4(struct DungeonEntity *, u32, u32); extern void sub_80869E4(struct DungeonEntity *, u32, u32, u32); extern void sub_8083E88(u32); @@ -124,7 +125,7 @@ void sub_8086B14(void) sub_8083E88(0x72); sub_8085374(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); sub_8086A3C(SkarmoryEntity); DiglettEntity->entityData->unk15C = 1; @@ -146,7 +147,7 @@ void sub_8086B94(void) sub_8068FE0(SkarmoryEntity,0x21c,0); sub_8068FE0(DiglettEntity,0x21c,0); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY); } @@ -184,33 +185,33 @@ void SkarmoryPreFightDialogue(void) sub_80862BC(PartnerEntity); sub_803E708(0x20,0x46); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8100768); + DisplayDungeonDialogue(&gUnknown_8100768); sub_80858AC(&local_1c,0x40); sub_803E708(0x40,0x46); sub_80858AC(&local_20,0x30); - sub_8052910(&gUnknown_8100798); + DisplayDungeonDialogue(&gUnknown_8100798); sub_803E708(10,0x46); DiglettEntity->entityData->unk15D = 1; sub_80858AC(&local_1c,0x30); - sub_8052910(&gUnknown_8100820); // Diglett: ...I...\nI'm scared. + DisplayDungeonDialogue(&gUnknown_8100820); // Diglett: ...I...\nI'm scared. sub_803E708(10,0x46); sub_80858AC(&local_20,0x20); sub_803E708(0x20,0x46); sub_8086E74(SkarmoryEntity); - sub_8052910(&gUnknown_8100844); // Skarmory: You!\nWhat do you think you're doing here?! + DisplayDungeonDialogue(&gUnknown_8100844); // Skarmory: You!\nWhat do you think you're doing here?! sub_803E708(10,0x46); - sub_8052910(&gUnknown_8100880); + DisplayDungeonDialogue(&gUnknown_8100880); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8100928); + DisplayDungeonDialogue(&gUnknown_8100928); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8100A04); + DisplayDungeonDialogue(&gUnknown_8100A04); sub_803E708(10,0x46); sub_806CDD4(SkarmoryEntity,0xd,0); - sub_8052910(&gUnknown_8100B80); + DisplayDungeonDialogue(&gUnknown_8100B80); sub_803E708(10,0x46); sub_80869E4(PartnerEntity,4,1,2); sub_80869E4(LeaderEntity,4,2,6); - sub_8052910(&gUnknown_8100BC0); + DisplayDungeonDialogue(&gUnknown_8100BC0); sub_80869E4(PartnerEntity,4,2,4); sub_80869E4(LeaderEntity,4,1,4); sub_803E708(10,0x46); @@ -232,12 +233,12 @@ void SkarmoryReFightDialogue(void) sub_803E708(10,0x46); sub_8086E74(SkarmoryEntity); sub_80858AC(&local_14,0x10); - sub_8052910(&gUnknown_8100C90); + DisplayDungeonDialogue(&gUnknown_8100C90); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8100CBC); + DisplayDungeonDialogue(&gUnknown_8100CBC); sub_803E708(10,0x46); sub_806CDD4(SkarmoryEntity,0xd,0); - sub_8052910(&gUnknown_8100CDC); + DisplayDungeonDialogue(&gUnknown_8100CDC); sub_803E708(10,0x46); sub_80858AC(&LeaderEntity->posPixelX,0x10); sub_8083E88(0xb); @@ -247,7 +248,7 @@ void sub_8086E40(void) { SpriteLookAroundEffect(xxx_call_GetLeaderEntity()); sub_803E708(10,0x46); - sub_8052910(&gUnknown_8100D3C); + DisplayDungeonDialogue(&gUnknown_8100D3C); sub_803E708(10,0x46); gDungeonGlobalData->unk2 = 1; } @@ -268,7 +269,7 @@ void sub_8086E9C(void) sub_8083E88(0x72); sub_8085374(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); sub_808563C(sub_8086A3C); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3); @@ -283,7 +284,7 @@ void sub_8086F00(void) LeaderEntity = xxx_call_GetLeaderEntity(); sub_80854D4(); - sub_8085930(4); + sub_8085930(DIRECTION_NORTH); sub_80855E4(sub_8086A3C); sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3); CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_METAPOD); diff --git a/src/code_80958E8.c b/src/code_80958E8.c index 7674ed4..cae46bc 100644 --- a/src/code_80958E8.c +++ b/src/code_80958E8.c @@ -34,7 +34,7 @@ extern bool8 sub_809095C(u8); extern s32 sub_8090298(u8); extern bool8 sub_809017C(u8 *); extern s16 GetBaseSpecies(s16); -extern bool8 sub_8092040(u8); +extern bool8 IsInvalidItemReward(u8); extern u8 sub_803C1D0(u8 *, u8); extern bool8 IsNotMoneyOrUsedTMItem(u8); extern u8 xxx_bit_lut_lookup_8091E50(u8 ,u8 ); @@ -107,11 +107,11 @@ bool8 IsValidWonderMail(struct WonderMail *WonderMailData) bool8 ValidateWonderMail(struct WonderMail *data) { - if(data->missionType > DELIVER_ITEM) + if(data->missionType > WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM) return FALSE; else { - if(data->missionType == DELIVER_ITEM && GetMaxItemCount(data->dungeon) == 0) + if(data->missionType == WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM && GetMaxItemCount(data->dungeon) == 0) return FALSE; if(data->unk2 > 9) @@ -141,11 +141,11 @@ bool8 ValidateWonderMail(struct WonderMail *data) return FALSE; // Item Delivery/Finding - if((u8)(data->missionType - 1) > FIND_POKE) + if((u8)(data->missionType - 1) > WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET) if(data->targetSpecies != data->clientSpecies) return FALSE; - if(sub_8092040(data->targetItem)) + if(IsInvalidItemReward(data->targetItem)) return FALSE; if(IsThrowableItem(data->targetItem)) return FALSE; @@ -153,13 +153,13 @@ bool8 ValidateWonderMail(struct WonderMail *data) return FALSE; // Item finding - if(data->missionType == FIND_ITEM && xxx_bit_lut_lookup_8091E50(data->dungeon, data->targetItem) == 0) + if(data->missionType == WONDER_MAIL_MISSION_TYPE_FIND_ITEM && xxx_bit_lut_lookup_8091E50(data->dungeon, data->targetItem) == 0) return FALSE; if(data->rewardType == BLANK_4 || data->rewardType == END_REWARDS || data->rewardType > END_REWARDS) return FALSE; - if(sub_8092040(data->itemReward)) + if(IsInvalidItemReward(data->itemReward)) return FALSE; // Friend Area Reward diff --git a/src/dungeon_ai.c b/src/dungeon_ai.c index 6253a64..5776bfa 100644 --- a/src/dungeon_ai.c +++ b/src/dungeon_ai.c @@ -7,6 +7,17 @@ #include "dungeon_pokemon_attributes_1.h" #include "dungeon_util.h" +extern void CheckRunAwayVisualFlag(struct DungeonEntity *, u8 r1); + +bool8 ShouldAvoidFirstHit(struct DungeonEntity *pokemon, bool8 forceAvoid) +{ + if(!HasTactic(pokemon, TACTIC_AVOID_THE_FIRST_HIT)) + return FALSE; + if(!forceAvoid) + return FALSE; + return TRUE; +} + bool8 ShouldAvoidEnemies(struct DungeonEntity *pokemon) { if (!EntityExists(pokemon)) @@ -40,3 +51,13 @@ bool8 ShouldAvoidEnemies(struct DungeonEntity *pokemon) return FALSE; } } + +bool8 ShouldAvoidEnemies_2(struct DungeonEntity *pokemon, u8 r1) +{ + if(ShouldAvoidEnemies(pokemon)) + { + CheckRunAwayVisualFlag(pokemon, r1); + return TRUE; + } + return FALSE; +} diff --git a/src/dungeon_ai_items.c b/src/dungeon_ai_items.c index 4877712..7a348f1 100644 --- a/src/dungeon_ai_items.c +++ b/src/dungeon_ai_items.c @@ -27,12 +27,35 @@ extern u32 GetEntityType(struct DungeonEntity*); extern struct ItemSlot* GetItemData(struct DungeonEntity*); extern u32 EvaluateItem(struct DungeonEntity*, struct ItemSlot*, u8); extern bool8 ToolboxEnabled(struct DungeonEntityData*); +extern void sub_8077274(struct DungeonEntity *, struct DungeonEntity *); +extern bool8 EntityExists(struct DungeonEntity *); extern s32 gNumPotentialTargets; extern u32 gPotentialTargetWeights[NUM_DIRECTIONS]; extern u32 gPotentialTargetDirections[NUM_DIRECTIONS]; extern struct TeamInventory *gTeamInventory_203B460; +extern struct DungeonGlobalData *gDungeonGlobalData; + +void sub_807360C(struct DungeonEntity *pokemon) +{ + s32 iVar2; + struct DungeonEntity *entity; + + for(iVar2 = 0; iVar2 < DUNGEON_MAX_POKEMON; iVar2++) + { + entity = gDungeonGlobalData->allPokemon[iVar2]; + if(EntityExists(entity)) + { + if(entity->entityData->unk152 != 0) + { + entity->entityData->unk152 = 0; + sub_8077274(entity, entity); + } + } + } +} + void DecideUseItem(struct DungeonEntity *pokemon) { struct DungeonEntityData *pokemonData = pokemon->entityData; diff --git a/src/dungeon_capabilities_1.c b/src/dungeon_capabilities_1.c index 956c6e1..869e2f3 100644 --- a/src/dungeon_capabilities_1.c +++ b/src/dungeon_capabilities_1.c @@ -54,3 +54,26 @@ bool8 CannotAct(struct DungeonEntity *pokemon) } return FALSE; } + +bool8 CannotAttack(struct DungeonEntity *pokemon, u8 param_2) +{ + struct DungeonEntityData *iVar3; + + iVar3 = pokemon->entityData; + if ((((((param_2 != '\0') || + (iVar3->sleepStatus == SLEEP_STATUS_SLEEPLESS)) || + (iVar3->sleepStatus == SLEEP_STATUS_YAWNING)) || + (iVar3->sleepStatus == SLEEP_STATUS_NONE)) && + ((((iVar3->immobilizeStatus != IMMOBILIZE_STATUS_FROZEN && + (iVar3->immobilizeStatus != IMMOBILIZE_STATUS_WRAPPED_AROUND_FOE)) && + ((iVar3->immobilizeStatus != IMMOBILIZE_STATUS_WRAPPED_BY_FOE && + ((iVar3->immobilizeStatus != IMMOBILIZE_STATUS_PETRIFIED && + (iVar3->volatileStatus != VOLATILE_STATUS_CRINGING)))))) && + (iVar3->volatileStatus != VOLATILE_STATUS_PAUSED)))) && + (((iVar3->volatileStatus != VOLATILE_STATUS_INFATUATED && + iVar3->nonVolatileStatus != NON_VOLATILE_STATUS_PARALYZED)) && + !ShouldAvoidEnemies(pokemon))) { + return FALSE; + } + return TRUE; +} diff --git a/src/dungeon_movement.c b/src/dungeon_movement.c index 6a55c90..5525f28 100644 --- a/src/dungeon_movement.c +++ b/src/dungeon_movement.c @@ -2,6 +2,7 @@ #include "dungeon_movement.h" #include "constants/dungeon_action.h" +#include "constants/direction.h" #include "constants/iq_skill.h" #include "constants/status.h" #include "dungeon_global_data.h" @@ -10,6 +11,7 @@ extern char gAvailablePokemonNames[]; extern char *gPtrCouldntBeUsedMessage; +extern char *gPtrItsaMonsterHouseMessage; extern struct DungeonGlobalData *gDungeonGlobalData; extern void SendImmobilizeEndMessage(struct DungeonEntity*, struct DungeonEntity*); @@ -27,6 +29,132 @@ extern bool8 HasIQSkill(struct DungeonEntity*, u8); extern void DecideAttack(struct DungeonEntity*); extern bool8 GetIsMoving(s16); extern void MoveIfPossible(struct DungeonEntity*, bool8); +extern u8 sub_8044B28(void); +struct MapTile *sub_8045128(struct DungeonEntity *entity); +extern void sub_807AB38(struct DungeonEntity *, u32); +extern void sub_8041888(u32); +extern u8 sub_803F428(s16 *); +extern void sub_803E708(u32, u32); +extern struct DungeonEntity *GetLeaderEntity(); +struct ItemSlot *GetItemData(struct DungeonEntity *entity); +u8 *GetTrapData(struct DungeonEntity *entity); +u32 GetEntityType(struct DungeonEntity *entity); +extern void TargetTileInFront(struct DungeonEntity *); + +u32 sub_8075818(struct DungeonEntity *entity) +{ + struct MapTile *tile; + struct DungeonEntityData *entityData; + struct DungeonEntity *subEntity; + struct ItemSlot *item; + u8 *trapData; // TODO: turn into struct when more research is done.. + u8 r1; + + entityData = entity->entityData; + if(EntityExists(entity)) + { + tile = sub_8045128(entity); + if(HasIQSkill(entity, IQ_SKILL_SUPER_MOBILE)) + if(!(tile->MapTileUnion.tileFlags_u16 & 3)) + return 1; + subEntity = tile->mapObject; + if(subEntity != NULL) + { + switch(GetEntityType(subEntity)) + { + case ENTITY_NONE: + case ENTITY_POKEMON: + case 4: + case 5: + break; + case ENTITY_TRAP: + trapData = GetTrapData(subEntity); + r1 = 0; + if(trapData[1] == 0) + { + if(!subEntity->visible || entityData->isEnemy) + goto flag_check; + else + goto error; + } + else if(trapData[1] == 1) + { + if(!entityData->isEnemy) + goto flag_check; + else + goto error; + } + else if(trapData[1] == 2) + { + if(!entityData->isEnemy) + r1 = 1; + } +flag_check: + if(r1 == 0) + break; + else + goto error; + case ENTITY_ITEM: + if(!entityData->isLeader) + { + if(!(entityData->heldItem.itemFlags & ITEM_FLAG_EXISTS)) + { + if(!(tile->MapTileUnion.tileFlags_u16 & 3)) + { + if(entityData->isEnemy) + break; + else + { + item = GetItemData(subEntity); + if(!(item->itemFlags & ITEM_FLAG_FOR_SALE)) + { + return 1; + } + } + } + else + { + item = GetItemData(subEntity); + if(!(item->itemFlags & ITEM_FLAG_FOR_SALE)) + { +error: + return 1; + } + } + } + } + break; + } + } + } + return 0; +} + +void sub_8075900(struct DungeonEntity *pokemon, u8 r1) +{ + if(EntityExists(pokemon)) + { + if(!pokemon->entityData->isEnemy) + { + if(!sub_8044B28()) + { + if(!gDungeonGlobalData->monsterHouseActive) + { + if((sub_8045128(pokemon)->MapTileUnion.tileFlags_u16 & TILE_TYPE_MONSTER_HOUSE)) + { + // It's a monster house! + SendMessage(GetLeaderEntity(), gPtrItsaMonsterHouseMessage); + gDungeonGlobalData->unk672 = 1; + sub_807AB38(pokemon, r1); + sub_8041888(0); + if(sub_803F428(&pokemon->posWorldX) != 0) + sub_803E708(0x78, 0x39); + } + } + } + } + } +} void DecideAction(struct DungeonEntity *pokemon) { @@ -35,7 +163,7 @@ void DecideAction(struct DungeonEntity *pokemon) { if (pokemonData->immobilizeStatus == IMMOBILIZE_STATUS_PETRIFIED) { - SendImmobilizeEndMessage(pokemon, pokemon); + SendImmobilizeEndMessage(pokemon, pokemon); } } else @@ -147,3 +275,17 @@ void DecideAction(struct DungeonEntity *pokemon) } } } + +void sub_8075BA4(struct DungeonEntity *param_1,char param_2) +{ + struct DungeonEntityData * iVar2 = param_1->entityData; + + if ((param_2 != '\0') && (iVar2->volatileStatus == VOLATILE_STATUS_COWERING)) { + iVar2->facingDir = (iVar2->facingDir + 4) & DIRECTION_MASK; + TargetTileInFront(param_1); + } + else if (iVar2->volatileStatus == VOLATILE_STATUS_CONFUSED) { + iVar2->facingDir = DungeonRandomCapped(NUM_DIRECTIONS); + TargetTileInFront(param_1); + } +} diff --git a/src/dungeon_pokemon_attributes.c b/src/dungeon_pokemon_attributes.c index a9aa6c2..c70d4ff 100644 --- a/src/dungeon_pokemon_attributes.c +++ b/src/dungeon_pokemon_attributes.c @@ -2,6 +2,77 @@ #include "dungeon_pokemon_attributes.h" #include "dungeon_util.h" +#include "constants/ability.h" +#include "constants/status.h" + +extern u8 gAvailablePokemonNames[]; +extern u32 gUnknown_80FC31C; +extern u32 gUnknown_80FCEFC; +extern u32 gUnknown_80FC2FC; + +extern bool8 sub_805744C(struct DungeonEntity *, struct PokemonMove *, u32); +extern void SetMessageArgument(char[], struct DungeonEntity*, u32); +extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, u32); + +bool8 sub_80716E8(struct DungeonEntity * param_1, struct DungeonEntity * param_2, u8 param_3) +{ + if (param_2->entityData->protectionStatus == PROTECTION_STATUS_SAFEGUARD) { + if (param_3 != '\0') { + SetMessageArgument(gAvailablePokemonNames,param_2,0); + sub_80522F4(param_1,param_2,gUnknown_80FC2FC); + } + return TRUE; + } + return FALSE; +} + +bool8 sub_8071728(struct DungeonEntity * param_1, struct DungeonEntity * param_2, u8 param_3) +{ + if (param_2->entityData->protectionStatus == PROTECTION_STATUS_MIST) { + if (param_3 != '\0') { + SetMessageArgument(gAvailablePokemonNames, param_2, 0); + sub_80522F4(param_1, param_2, gUnknown_80FC31C); + } + return TRUE; + } + else { + if (HasAbility(param_2, ABILITY_CLEAR_BODY) || HasAbility(param_2, ABILITY_WHITE_SMOKE)) { + if (param_3 != '\0') { + SetMessageArgument(gAvailablePokemonNames, param_2, 0); + sub_80522F4(param_1, param_2, gUnknown_80FCEFC); + } + return TRUE; + } + } + return FALSE; +} + +bool8 sub_80717A4(struct DungeonEntity *param_1, u16 moveID) +{ + struct DungeonEntityData * entityData; + s32 iVar3; + + entityData = param_1->entityData; + if ((entityData->sleepStatus != SLEEP_STATUS_SLEEP) && (entityData->sleepStatus != SLEEP_STATUS_NAPPING) && (entityData->sleepStatus != SLEEP_STATUS_NIGHTMARE)) { + return FALSE; + } + else + { + // Pin this register to match + register struct PokemonMove *pokeMove asm("r4"); + + struct PokemonMove *pokeMove2; // some reason uses another pointer to same struct + + for(iVar3 = 0, pokeMove = entityData->moves, pokeMove2 = pokeMove; iVar3 < MAX_MON_MOVES; pokeMove++, pokeMove2++, iVar3++) + { + if (((pokeMove->moveFlags & MOVE_FLAG_EXISTS) != 0) && (entityData->isLeader || ((pokeMove->moveFlags & MOVE_FLAG_ENABLED) != 0))) + if((sub_805744C(param_1, pokeMove2, 1) != '\0') && (pokeMove->pp != 0)) + if(pokeMove->moveID == moveID) + return TRUE; + } + return FALSE; + } +} bool8 HasAbility(struct DungeonEntity *pokemon, u8 ability) { diff --git a/src/dungeon_util.c b/src/dungeon_util.c index f70148a..f717212 100644 --- a/src/dungeon_util.c +++ b/src/dungeon_util.c @@ -2,17 +2,7 @@ #include "dungeon_util.h" extern struct MapTile* GetMapTileAtPosition(s16, s16); - -struct unk8049590 -{ - u16 unk0; - u16 fill2; - u16 unk4; - u16 unk6; - u8 unk8; -}; - -extern struct unk8049590 *GetMapEntity(s16, s16); +extern struct MapTile *GetMapEntity(s16, s16); bool8 EntityExists(struct DungeonEntity *entity) { @@ -33,7 +23,7 @@ u8 GetEntityRoomIndex(struct DungeonEntity *entity) return entity->roomIndex; } -struct DungeonEntityData *sub_8045104(struct DungeonEntity *entity) +struct DungeonEntityData *GetTrapData(struct DungeonEntity *entity) { return entity->entityData; } @@ -58,7 +48,7 @@ struct MapTile *sub_8045114(struct DungeonEntity *entity) return GetMapTileAtPosition(entity->posWorldX, entity->posWorldY); } -struct unk8049590 *sub_8045128(struct DungeonEntity *entity) +struct MapTile *sub_8045128(struct DungeonEntity *entity) { return GetMapEntity(entity->posWorldX, entity->posWorldY); } diff --git a/src/dungeon_util_1.c b/src/dungeon_util_1.c index 97af7fb..51ec765 100644 --- a/src/dungeon_util_1.c +++ b/src/dungeon_util_1.c @@ -1,5 +1,125 @@ #include "global.h" +#include "constants/direction.h" #include "dungeon_util_1.h" +#include "dungeon_global_data.h" +#include "random.h" + +extern struct DungeonGlobalData *gDungeonGlobalData; +extern bool8 EntityExists(struct DungeonEntity *); +extern void sub_806CE68(struct DungeonEntity *, s32); + +extern s32 sub_803F994(void); +extern s32 sub_803F9B0(void); +extern void sub_803F4A0(u32); +extern void sub_803F878(s32, s32); +extern void sub_803E46C(u32); + +void sub_8085860(s32 x, s32 y) +{ + + sub_803F4A0(0); + sub_803F878(x * 0x1800 + 0xc00, y * 0x1800 + 0x1000); +} + +void sub_8085890(s32 x, s32 y) +{ + sub_803F4A0(0); + sub_803F878(x, y); +} + +void sub_80858AC(s32 *param_1, s32 param_2) +{ + s32 iVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + + iVar1 = sub_803F994(); + iVar2 = sub_803F9B0(); + iVar3 = (param_1[0] - iVar1) / param_2; + iVar4 = (param_1[1] - iVar2) / param_2; + sub_803F4A0(0); + if (0 < param_2) { + do { + iVar1 += iVar3; + iVar2 += iVar4; + sub_803F878(iVar1,iVar2); + sub_803E46C(0x46); + param_2--; + } while (param_2 != 0); + } + sub_803F878(param_1[0],param_1[1]); + sub_803E46C(0x46); +} + +void SetFacingDirection(struct DungeonEntity *pokemon, s32 direction) +{ + pokemon->entityData->facingDir = direction & DIRECTION_MASK; + sub_806CE68(pokemon, direction); +} + +void sub_8085930(s32 direction) +{ + s32 iVar2; + struct DungeonEntity *entity; + for(iVar2 = 0; iVar2 < MAX_TEAM_MEMBERS; iVar2++) + { + entity = gDungeonGlobalData->teamPokemon[iVar2]; + if(EntityExists(entity)) + { + if(direction >= NUM_DIRECTIONS) + { + sub_806CE68(entity, RandomCapped(NUM_DIRECTIONS)); + } + else + { + entity->entityData->facingDir = direction & DIRECTION_MASK; + sub_806CE68(entity, direction); + } + } + } + for(iVar2 = 0; iVar2 < DUNGEON_MAX_WILD_POKEMON; iVar2++) + { + entity = gDungeonGlobalData->wildPokemon[iVar2]; + if(EntityExists(entity)) + { + if(entity->entityData->clientType == 2) + { + if(direction >= NUM_DIRECTIONS) + { + sub_806CE68(entity, RandomCapped(NUM_DIRECTIONS)); + } + else + { + entity->entityData->facingDir = direction & DIRECTION_MASK; + sub_806CE68(entity, direction); + } + } + } + } +} + +void sub_80859F0(s32 direction) +{ + s32 iVar2; + struct DungeonEntity *entity; + for(iVar2 = 0; iVar2 < DUNGEON_MAX_WILD_POKEMON; iVar2++) + { + entity = gDungeonGlobalData->wildPokemon[iVar2]; + if(EntityExists(entity)) + { + if(direction >= NUM_DIRECTIONS) + { + sub_806CE68(entity, RandomCapped(NUM_DIRECTIONS)); + } + else + { + entity->entityData->facingDir = direction & DIRECTION_MASK; + sub_806CE68(entity, direction); + } + } + } +} bool8 IsMovingClient(struct DungeonEntity *pokemon) { diff --git a/src/items.c b/src/items.c index 0b6075f..ff79822 100644 --- a/src/items.c +++ b/src/items.c @@ -27,6 +27,7 @@ extern u32 gUnknown_81097F8[4]; // some sort of lookup table (17, 19, 21, 23) extern u32 gUnknown_810AF50[]; extern u8 gUnknown_8108F64[0x3f][32]; // some sort of bit lookup table extern s16 gTypeGummiIQBoost[0x12][NUMBER_OF_GUMMIS]; +extern u8 gInvalidItemIDs[0x10]; EWRAM_DATA struct OpenedFile *gItemParametersFile; EWRAM_DATA struct Item *gItemParametersData; @@ -1502,3 +1503,20 @@ void ClearAllItems_8091FB4() { } } } + +bool32 IsInvalidItemReward(u8 itemID) +{ + s32 index; + + if (itemID >= NUMBER_OF_ITEM_IDS) + return TRUE; + else { + index = 0; + while (gInvalidItemIDs[index] != NUMBER_OF_ITEM_IDS){ + if (gInvalidItemIDs[index] == itemID) + return TRUE; + index++; + }; + return FALSE; + } +} diff --git a/src/memory_mid.c b/src/memory_mid.c index 51c927a..546820a 100644 --- a/src/memory_mid.c +++ b/src/memory_mid.c @@ -2,15 +2,17 @@ #include "memory.h" extern u32 gUnknown_80B7F14; +extern u32 gUnknown_80B7F88; extern const char gLocateSetErrorMessage[]; extern struct HeapDescriptor gMainHeapDescriptor; - +extern const char gLocalCreateErrorMessage[]; extern s32 MemorySearchFromBack(struct HeapDescriptor *heap, s32, s32); extern s32 MemorySearchFromFront(struct HeapDescriptor *heap, s32, s32); extern struct HeapDescriptor * _LocateSetBack(struct HeapDescriptor *, u32, u32, u32, u32); extern struct HeapDescriptor * _LocateSetFront(struct HeapDescriptor *, u32, u32, u32, u32); void DoFree(struct HeapDescriptor *, void *); void *DoAlloc(struct HeapDescriptor *, s32, u32); +extern struct HeapDescriptor *DoCreateSubHeap(u32 *, u32); void FatalError(u32 *, const char *, ...) __attribute__((noreturn)); @@ -61,3 +63,28 @@ void MemoryFree(void *a) { DoFree(&gMainHeapDescriptor, a); } + +struct HeapDescriptor *MemoryLocate_LocalCreate(struct HeapDescriptor *parentHeap,u32 size,u32 param_3,u32 group) +{ + int index; + struct HeapDescriptor *iVar2; + struct HeapDescriptor *iVar3; + s32 local_1c[2]; + + if (parentHeap == NULL) { + parentHeap = &gMainHeapDescriptor; + } + + index = MemorySearchFromBack(parentHeap,9,size); + if (index < 0) + // Memroy LocalCreate buffer %08x size can't locate + FatalError(&gUnknown_80B7F88,gLocalCreateErrorMessage,size); + + iVar2 = _LocateSetBack(parentHeap,index,9,size,group); + local_1c[0] = iVar2->freeCount; + local_1c[1] = iVar2->freeListLength; + + iVar3 = DoCreateSubHeap(local_1c,param_3); + iVar3->parentHeap = parentHeap; + return iVar3; +} diff --git a/src/music_pre.c b/src/music_pre.c index cb983d3..95940aa 100644 --- a/src/music_pre.c +++ b/src/music_pre.c @@ -277,20 +277,18 @@ void sub_800BA5C(void) void xxx_update_bg_sound_input(void) { - u32 store; - store = gUnknown_203B09B; if(gUnknown_203B09B != 0){ gUnknown_203B09C++; } else { gUnknown_203B09B = 1; - gUnknown_203B09A = store; - gUnknown_203B09C = store; + gUnknown_203B09A = 0; + gUnknown_203B09C = 0; UpdateBGControlRegisters(); if(gUnknown_203B099 != 0) UpdateSound(); UpdateInput(); - gUnknown_203B099 = store; + gUnknown_203B099 = 0; gUnknown_203B0A4 = gUnknown_203B0A0; } } diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 427e0ed..743a9dd 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -8,7 +8,7 @@ extern u32 gIQSkillNames[]; extern u32 gIQSkillDescriptions[]; extern u32 gTacticsDescriptions[]; extern u8 *gTactics[]; -extern u8 gUnknown_810A36B[]; +extern u8 gTacticsTargetLeader[]; extern s16 gReqTacticLvls[]; extern s32 gReqIQSkillPts[]; @@ -483,10 +483,10 @@ u32 GetTacticsDescription(u8 r0) u8 TacticsTargetLeader(u8 r0) { - return gUnknown_810A36B[r0]; + return gTacticsTargetLeader[r0]; } -void sub_808EB0C(u8 *r0, s32 pokeLevel) +void GetAvailTacticsforLvl(u8 *tacticsBuffer, s32 pokeLevel) { s32 tactic; s32 availTactics; @@ -496,7 +496,7 @@ void sub_808EB0C(u8 *r0, s32 pokeLevel) { if(gReqTacticLvls[tactic] <= pokeLevel) { - r0[availTactics] = tactic; + tacticsBuffer[availTactics] = tactic; availTactics++; } } @@ -506,12 +506,13 @@ void sub_808EB0C(u8 *r0, s32 pokeLevel) } while(availTactics < NUM_TACTICS) { - r0[availTactics] = TACTIC_UNUSED; + tacticsBuffer[availTactics] = TACTIC_UNUSED; availTactics++; } } -void sub_808EB48(u8 *r0, s32 pokeLevel) +// Instead of assigning the Tactic, a bool is assigned showing it is available +void GetAvailTacticsforLvl_Bool(u8 *tacticsBuffer, s32 pokeLevel) { s32 tactic; @@ -519,18 +520,18 @@ void sub_808EB48(u8 *r0, s32 pokeLevel) { if(gReqTacticLvls[tactic] <= pokeLevel) { - r0[tactic] = TRUE; + tacticsBuffer[tactic] = TRUE; } else { - r0[tactic] = FALSE; + tacticsBuffer[tactic] = FALSE; } } } bool8 HasIQForSkill(s32 pokeIQ, u8 IQSkillIndex) { - if(IQSkillIndex == 0) + if(IQSkillIndex == IQ_SKILL_NONE) { return FALSE; } @@ -538,7 +539,8 @@ bool8 HasIQForSkill(s32 pokeIQ, u8 IQSkillIndex) return gReqIQSkillPts[IQSkillIndex] <= pokeIQ; } -s32 GetNumAvailableIQSkills(u8 *param_1, s32 pokeIQ) +// Fills buffer with all avaiable IQ Skills and returns the amount +s32 GetNumAvailableIQSkills(u8 *iqSkillBuffer, s32 pokeIQ) { s32 counter_2; s32 counter_1; @@ -550,22 +552,22 @@ s32 GetNumAvailableIQSkills(u8 *param_1, s32 pokeIQ) for(counter_1 = IQ_SKILL_TYPE_ADVANTAGE_MASTER; counter_1 < NUM_IQ_SKILLS; counter_1++) { iqSkill_u8 = counter_1; // force this cast to be in a reg if (HasIQForSkill(pokeIQ, iqSkill_u8)) { - param_1[availIQSkills] = iqSkill_u8; + iqSkillBuffer[availIQSkills] = iqSkill_u8; availIQSkills++; } } for (counter_2 = availIQSkills; counter_2 < NUM_IQ_SKILLS; counter_2++) { - param_1[counter_2] = 0; + iqSkillBuffer[counter_2] = IQ_SKILL_NONE; } return availIQSkills; } -void sub_808EBF4(u8 *param_1, u32 param_2) +void ToggleIQSkill(u8 *param_1, u32 skillIndex) { int iVar2; // a mask? - iVar2 = 1 << (param_2); + iVar2 = 1 << (skillIndex); if (IsIQSkillSet(param_1, iVar2)) { param_1[0] = param_1[0] & ~iVar2; param_1[1] = param_1[1] & ~(iVar2 >> 8); @@ -573,7 +575,7 @@ void sub_808EBF4(u8 *param_1, u32 param_2) } else { - SetIQSkill(param_1, param_2); + SetIQSkill(param_1, skillIndex); } } diff --git a/src/rescue_team_info.c b/src/rescue_team_info.c index 9de46ad..5f49cab 100644 --- a/src/rescue_team_info.c +++ b/src/rescue_team_info.c @@ -12,25 +12,6 @@ extern void BoundedCopyStringtoBuffer(u8 *buffer, u8 *string, s32 size); extern const char *gRescueTeamRanks[]; extern s32 gRescueRankMaxPoints[7]; extern u8 gTeamNamePlaceholder[0x8]; // Pokemon -extern u8 gUnknown_810A35B[0x10]; - -bool32 sub_8092040(u8 param_1) -{ - s32 index; - - // NUMBER_OF_ITEM_IDS == 0xf0 - if (param_1 >= 0xF0) - return TRUE; - else { - index = 0; - while (gUnknown_810A35B[index] != 0xF0){ - if (gUnknown_810A35B[index] == param_1) - return TRUE; - index++; - }; - return FALSE; - } -} void LoadRescueTeamInfo(void) { diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index 3f105c5..cfd83c6 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -504,7 +504,7 @@ u32 CreateThankYouMailPelipper(void) gUnknown_203B2C4->unk218 = -1; SetThankYouMailMenuState(THANK_YOU_MAIL_MAIN_MENU); } - gUnknown_203B2C4->unk4 = 0x2b; + gUnknown_203B2C4->fallbackState = 0x2b; return 1; } @@ -665,40 +665,40 @@ void ReturnToThankYouMainFromError(void) } } -void PrintThankYouMailLinkError(u32 param_1) +void PrintThankYouMailLinkError(u32 errorCode) { - switch(param_1) { - case 3: + switch(errorCode) { + case WONDER_MAIL_INCORRECT_NUM_SYSTEMS: sub_80141B4(gUnknown_80DEF28, 0, &gUnknown_203B2C4->faceFile, 0x10d); break; - case 4: + case WONDER_MAIL_DIFFERENT_MODES: sub_80141B4(gUnknown_80DEF80, 0, &gUnknown_203B2C4->faceFile, 0x10d); break; - case 6: + case WONDER_MAIL_NO_ROOM_STORAGE: sub_80141B4(gUnknown_80DEFDC, 0, &gUnknown_203B2C4->faceFile, 0x10d); break; - case 7: + case WONDER_MAIL_DUPLICATE_MAIL: sub_80141B4(gUnknown_80DF044, 0, &gUnknown_203B2C4->faceFile, 0x10d); break; - case 9: + case WONDER_MAIL_NOT_ELIGIBLE_1: sub_80141B4(gUnknown_80DF0A0, 0, &gUnknown_203B2C4->faceFile, 0x10d); break; - case 11: + case WONDER_MAIL_NOT_ELIGIBLE_2: sub_80141B4(gUnknown_80DF0A0, 0, &gUnknown_203B2C4->faceFile, 0x10d); break; - case 13: + case WONDER_MAIL_NO_ROOM_MAIL: sub_80141B4(gUnknown_80DF0E0, 0, &gUnknown_203B2C4->faceFile, 0x10d); break; case 1: - case 2: + case WONDER_MAIL_NO_RESPONSE: case 5: case 14: sub_80141B4(gUnknown_80DEF04, 0, &gUnknown_203B2C4->faceFile, 0x10d); break; - case 15: + case WONDER_MAIL_NOT_READY: sub_80141B4(gUnknown_80DF138, 0, &gUnknown_203B2C4->faceFile, 0x10d); break; - case 0: + case WONDER_MAIL_GOOD: default: break; } @@ -800,7 +800,7 @@ void sub_802A0C8(void) SetThankYouMailMenuState(0x11); break; case 4: - gUnknown_203B2C4->unk4 = 0x10; + gUnknown_203B2C4->fallbackState = 0x10; gUnknown_203B2C4->unk218 = sub_80307EC(); sub_8006518(gUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); @@ -837,7 +837,7 @@ void sub_802A174(void) SetThankYouMailMenuState(0xe); break; case 0xC: - gUnknown_203B2C4->unk4 = 0x2b; + gUnknown_203B2C4->fallbackState = 0x2b; sub_8006518(gUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); sub_800641C(0,1,1); @@ -864,12 +864,12 @@ void sub_802A230(void) ResetUnusedInputStruct(); sub_800641C(gUnknown_203B2C4->unk3BC, 1, 1); sub_803092C(); - if (gUnknown_203B2C4->unk4 == 0x2b) { + if (gUnknown_203B2C4->fallbackState == 0x2b) { sub_8035CF4(&gUnknown_203B2C4->unk21C, 3, 1); SetThankYouMailMenuState(0x11); } else { - SetThankYouMailMenuState(gUnknown_203B2C4->unk4); + SetThankYouMailMenuState(gUnknown_203B2C4->fallbackState); } break; default: @@ -895,7 +895,7 @@ void sub_802A28C(void) SetThankYouMailMenuState(0x14); break; case 4: - gUnknown_203B2C4->unk4 = 0x13; + gUnknown_203B2C4->fallbackState = 0x13; gUnknown_203B2C4->unk41C.itemIndex = sub_801CB24(); sub_8006518(gUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); @@ -916,12 +916,12 @@ void sub_802A33C(void) ResetUnusedInputStruct(); sub_800641C(gUnknown_203B2C4->unk3BC,1,1); sub_801CB5C(1); - if (gUnknown_203B2C4->unk4 == 0x2b) { + if (gUnknown_203B2C4->fallbackState == 0x2b) { sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1); SetThankYouMailMenuState(0x14); } else { - SetThankYouMailMenuState(gUnknown_203B2C4->unk4); + SetThankYouMailMenuState(gUnknown_203B2C4->fallbackState); } break; case 1: @@ -947,7 +947,7 @@ void sub_802A39C(void) SetThankYouMailMenuState(CONFIRM_ITEM_TO_SEND); break; case 0xC: - gUnknown_203B2C4->unk4 = 0x2b; + gUnknown_203B2C4->fallbackState = 0x2b; sub_8006518(gUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); sub_800641C(0,1,1); diff --git a/src/wonder_mail.c b/src/wonder_mail.c index 6f7e081..fd5e1df 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -197,7 +197,7 @@ u32 sub_8027F88(void) for(counter = 0; counter < PASSWORD_BUFFER_SIZE; counter++){ gUnknown_203B2C0->passwordBuffer[counter] = 0; } - gUnknown_203B2C0->unk0 = 0x3D; + gUnknown_203B2C0->fallbackState = 0x3D; sub_8028B04(0); // Set initial state to 0? return 1; } @@ -706,50 +706,44 @@ void sub_8028B04(u32 r0) } // Wonder Mail Linking... -void sub_8028B1C(u32 r0) +void sub_8028B1C(u32 errorCode) { - switch(r0) + switch(errorCode) { - case 0: + case WONDER_MAIL_GOOD: break; case 1: - case 2: + case WONDER_MAIL_NO_RESPONSE: sub_80141B4(gWonderMailErrorText, 0, &gUnknown_203B2C0->faceFile, 0x10d); break; - case 3: + case WONDER_MAIL_INCORRECT_NUM_SYSTEMS: sub_80141B4(gWonderMailNumGBAsText, 0, &gUnknown_203B2C0->faceFile, 0x10d); break; - case 4: + case WONDER_MAIL_DIFFERENT_MODES: sub_80141B4(gWonderMailWrongModeText, 0, &gUnknown_203B2C0->faceFile, 0x10d); break; case 5: sub_80141B4(gWonderMailErrorText, 0, &gUnknown_203B2C0->faceFile, 0x10d); break; - case 6: + case WONDER_MAIL_NO_ROOM_STORAGE: sub_80141B4(gWonderMailStorageFullText, 0, &gUnknown_203B2C0->faceFile, 0x10d); break; - case 7: + case WONDER_MAIL_DUPLICATE_MAIL: sub_80141B4(gWonderMailDuplicateText, 0, &gUnknown_203B2C0->faceFile, 0x10d); break; - case 8: - break; - case 9: + case WONDER_MAIL_NOT_ELIGIBLE_1: sub_80141B4(gWonderMailNotEligibleReceiveText, 0, &gUnknown_203B2C0->faceFile, 0x10d); break; - case 10: - break; - case 11: + case WONDER_MAIL_NOT_ELIGIBLE_2: sub_80141B4(gWonderMailNotEligibleReceiveText, 0, &gUnknown_203B2C0->faceFile, 0x10d); break; - case 12: - break; - case 13: + case WONDER_MAIL_NO_ROOM_MAIL: sub_80141B4(gWonderMailNoRoomText, 0, &gUnknown_203B2C0->faceFile, 0x10d); break; case 14: sub_80141B4(gWonderMailErrorText, 0, &gUnknown_203B2C0->faceFile, 0x10d); break; - case 15: + case WONDER_MAIL_NOT_READY: sub_80141B4(gWonderMailFriendErrorText, 0, &gUnknown_203B2C0->faceFile, 0x10d); break; default: @@ -1134,7 +1128,7 @@ void sub_8029044(void) sub_8028B04(32); break; case 4: - gUnknown_203B2C0->unk0 = 0x1F; + gUnknown_203B2C0->fallbackState = 0x1F; gUnknown_203B2C0->unk218 = sub_80307EC(); sub_8006518(gUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); @@ -1171,7 +1165,7 @@ void sub_80290F0(void) sub_8028B04(34); break; case 12: - gUnknown_203B2C0->unk0 = 0x3D; + gUnknown_203B2C0->fallbackState = 0x3D; sub_8006518(gUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); sub_800641C(0, 1, 1); @@ -1199,14 +1193,14 @@ void sub_80291AC(void) ResetUnusedInputStruct(); sub_800641C(gUnknown_203B2C0->unk3BC, 1, 1); sub_803092C(); - if(gUnknown_203B2C0->unk0 == 0x3D) + if(gUnknown_203B2C0->fallbackState == 0x3D) { sub_8035CF4(&(gUnknown_203B2C0->unk21C), 3, 1); sub_8028B04(0x20); } else { - sub_8028B04(gUnknown_203B2C0->unk0); + sub_8028B04(gUnknown_203B2C0->fallbackState); } default: break; @@ -1484,7 +1478,7 @@ void sub_80295D8(void) sub_8028B04(0x2B); break; case 4: - gUnknown_203B2C0->unk0 = 0x2A; + gUnknown_203B2C0->fallbackState = 0x2A; gUnknown_203B2C0->unk218 = sub_80307EC(); sub_8006518(gUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); @@ -1521,7 +1515,7 @@ void sub_8029684(void) sub_8028B04(0x2D); break; case 0xC: - gUnknown_203B2C0->unk0 = 0x3D; + gUnknown_203B2C0->fallbackState = 0x3D; sub_8006518(gUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); sub_800641C(0, 1, 1); @@ -1547,14 +1541,14 @@ void sub_8029740(void) ResetUnusedInputStruct(); sub_800641C(gUnknown_203B2C0->unk3BC, 1, 1); sub_803092C(); - if(gUnknown_203B2C0->unk0 == 0x3D) + if(gUnknown_203B2C0->fallbackState == 0x3D) { sub_8035CF4(&(gUnknown_203B2C0->unk21C), 3, 1); sub_8028B04(0x2B); } else { - sub_8028B04(gUnknown_203B2C0->unk0); + sub_8028B04(gUnknown_203B2C0->fallbackState); } break; } @@ -1594,7 +1588,7 @@ void sub_80297D4(void) sub_8028B04(0x34); break; case 4: - gUnknown_203B2C0->unk0 = 0x33; + gUnknown_203B2C0->fallbackState = 0x33; gUnknown_203B2C0->unk544 = sub_8023B44(); sub_8006518(gUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); @@ -1621,7 +1615,7 @@ void sub_8029884(void) sub_8028B04(4); break; case 0xC: - gUnknown_203B2C0->unk0 = 0x3D; + gUnknown_203B2C0->fallbackState = 0x3D; sub_8006518(gUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); sub_800641C(0, 1, 1); @@ -1656,14 +1650,14 @@ void sub_8029944(void) ResetUnusedInputStruct(); sub_800641C(gUnknown_203B2C0->unk3BC, 1, 1); sub_8023B7C(1); - if(gUnknown_203B2C0->unk0 == 0x3D) + if(gUnknown_203B2C0->fallbackState == 0x3D) { sub_8035CF4(&(gUnknown_203B2C0->unk21C), 3, 1); sub_8028B04(0x34); } else { - sub_8028B04(gUnknown_203B2C0->unk0); + sub_8028B04(gUnknown_203B2C0->fallbackState); } } diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index 1ded0ec..cf1f122 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -13,9 +13,8 @@ struct unkStruct_203B2C8 { // size: 0x140 - u8 currState; - u8 unk1; - u16 unk2; + /* 0x0 */ u8 currState; + /* 0x1 */ u8 unk1; /* 0x4 */ struct OpenedFile *faceFile; /* 0x8 */ u8 *faceData; /* 0xC */ u16 unkC; @@ -53,15 +52,13 @@ struct unkStruct_203B2CC struct UnkTextStruct2 *unk70; struct UnkTextStruct2 unk74[4]; }; - extern struct unkStruct_203B2CC *gUnknown_203B2CC; struct unkStruct_203B2D4 { // size: 0x94 - s32 state; - u8 currMailIndex; - u8 fill5[0x8 - 0x5]; + /* 0x0 */ s32 state; + /* 0x4 */ u8 currMailIndex; s32 unk8; s32 unkC; u8 *unk10[4]; @@ -71,9 +68,28 @@ struct unkStruct_203B2D4 u32 unk88; u8 fill8C[0x94 - 0x8C]; }; - extern struct unkStruct_203B2D4 *gUnknown_203B2D4; +struct unkStruct_203B2D8 +{ + // size: 0xA4 + u8 unk0[4]; + u32 unk4; + u8 fill8[0x1C - 0x8]; + s16 unk1C; + s16 unk1E; + s16 unk20; + s16 unk22; + s16 fill24; + /* 0x26 */ s16 emptyMailSlots; + u8 fill28[0x38 - 0x28]; + u32 unk38; + struct UnkTextStruct2 *unk3C; + struct UnkTextStruct2 unk40[4]; + u8 unkA0[4]; +}; +extern struct unkStruct_203B2D8 *gUnknown_203B2D8; + extern struct UnkSaveStruct1 *gUnknown_203B46C; @@ -89,7 +105,7 @@ extern struct PokemonStruct *sub_808D3BC(void); extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon); extern u16 gUnknown_203B2D0; extern u16 gUnknown_203B2D2; - +extern u16 gUnknown_203B2DC; extern u8 sub_80138B8(void *, u32); extern void PlayMenuSoundEffect(u32); extern s32 GetKeyPress(u32 *); @@ -101,7 +117,6 @@ extern void sub_802BC08(void); extern void sub_802BB28(void); extern void sub_8013E54(void); extern s32 sub_8012A64(u32 *, u32); -extern void PlayMenuSoundEffect(u32); extern struct UnkTextStruct2 gUnknown_80DFBEC; @@ -144,6 +159,8 @@ extern void sub_802ABF8(void); extern u8 gUnknown_80DFC04[]; extern u8 gUnknown_80DFBE8[]; +extern struct UnkTextStruct2 gUnknown_80DFC74; +extern struct UnkTextStruct2 gUnknown_80DFC5C; extern char *GetPokemonMailHeadline(u8 index); extern void sub_8008C54(u32); extern void sub_80073B8(u32); @@ -158,6 +175,13 @@ extern s32 sub_8013800(u32 *, s32); extern void sub_802BCC4(void); extern void sub_802BB14(u32); extern void sub_801317C(u32 *); +char *GetPokemonMailText(u8 index); +extern u8 HasNoMailinMailbox(void); +extern void sub_802BF30(void); +extern void CreateMailMenu(void); +extern void sub_8012D34(struct UnkTextStruct2 *, u32); +extern s32 CountEmptyMailSlots(void); +extern void sub_8013848(u32 *, s32, u32, u32); ALIGNED(4) const char gUnknown_80DF9F0[] = "????"; @@ -595,7 +619,7 @@ bool8 HasNoPKMNNews(void) u32 sub_802B9FC(u8 mailIndex) { - gUnknown_203B2D4 = MemoryAlloc(sizeof(struct unkStruct_203B2D4), 0x8); + gUnknown_203B2D4 = MemoryAlloc(sizeof(struct unkStruct_203B2D4), 8); gUnknown_203B2D4->currMailIndex = mailIndex; sub_801317C(&gUnknown_203B2D4->unk88); gUnknown_203B2D4->unk24 = 0; @@ -729,3 +753,124 @@ void sub_802BC7C(void) strcpy(gAvailablePokemonNames + 0x50, gUnknown_80DFC50); // He } } + +void sub_802BCC4(void) +{ + char *mailTextPtr; + + mailTextPtr = GetPokemonMailText(gUnknown_203B2D4->currMailIndex); + gUnknown_203B2D4->unkC = 0; + gUnknown_203B2D4->unk10[0] = mailTextPtr; + + // Count all the {EXTRA_MSG}'s + while (*mailTextPtr != '\0') { + if (*mailTextPtr == '#') { + if ((mailTextPtr[1] == 'P') || (mailTextPtr[1] == 'p')) { + gUnknown_203B2D4->unkC++; + gUnknown_203B2D4->unk10[gUnknown_203B2D4->unkC] = mailTextPtr + 2; + } + mailTextPtr += 2; + } + else { + mailTextPtr++; + } + } +} + +u32 sub_802BD14(s32 param_1, struct UnkTextStruct2_sub *param_2, u32 param_3) +{ + + if (HasNoMailinMailbox()) { + return 0; + } + else + { + if (gUnknown_203B2D8 == NULL) { + gUnknown_203B2D8 = MemoryAlloc(sizeof(struct unkStruct_203B2D8),8); + } + gUnknown_203B2D8->unk38 = param_1; + gUnknown_203B2D8->unk3C = &gUnknown_203B2D8->unk40[param_1]; + sub_8006518(gUnknown_203B2D8->unk40); + gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38] = gUnknown_80DFC74; + gUnknown_203B2D8->unk3C->unk14 = gUnknown_203B2D8->unkA0; + if (param_2 != NULL) { + gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38].unk08 = *param_2; + } + sub_8012D34(gUnknown_203B2D8->unk3C,param_3); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2D8->unk40,1,1); + sub_8013848(&gUnknown_203B2D8->unk4,CountEmptyMailSlots(),param_3,param_1); + gUnknown_203B2D8->unk1C = gUnknown_203B2DC; + sub_8013984(&gUnknown_203B2D8->unk4); + sub_802BF30(); + CreateMailMenu(); + return 1; + } +} + +u32 sub_802BDEC(u8 r0) +{ + if(r0 == 0) + { + sub_8013660(&gUnknown_203B2D8->unk4); + return 0; + } + switch(GetKeyPress(&gUnknown_203B2D8->unk4)) + { + case 2: + PlayMenuSoundEffect(1); + return 2; + case 1: + PlayMenuSoundEffect(0); + return 3; + case 4: + PlayMenuSoundEffect(4); + return 4; + default: + if(sub_80138B8(&gUnknown_203B2D8->unk4, 1) != 0) + { + sub_802BF30(); + CreateMailMenu(); + return 1; + } + else + return 0; + } +} + +u8 sub_802BE74(void) { + return gUnknown_203B2D8->unk0[(gUnknown_203B2D8->unk22 * gUnknown_203B2D8->unk20) + gUnknown_203B2D8->unk1C]; +} + +void sub_802BE94(u32 r0) +{ + u8 temp; + + temp = r0; + + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2D8->unk40, 0, 0); + + gUnknown_203B2D8->emptyMailSlots = CountEmptyMailSlots(); + sub_8013984(&gUnknown_203B2D8->unk4); + sub_802BF30(); + CreateMailMenu(); + + if(temp != 0) + { + AddMenuCursorSprite(&gUnknown_203B2D8->unk4); + } +} + +void sub_802BEDC(void) +{ + if(gUnknown_203B2D8 != NULL) + { + gUnknown_203B2DC = gUnknown_203B2D8->unk1C; + gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38] = gUnknown_80DFC5C; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2D8->unk40, 1, 1); + MemoryFree(gUnknown_203B2D8); + gUnknown_203B2D8 = NULL; + } +} diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c index aa87888..02dcfb7 100644 --- a/src/wonder_mail_3.c +++ b/src/wonder_mail_3.c @@ -2,6 +2,7 @@ #include "memory.h" #include "text.h" #include "input.h" +#include "mailbox.h" #include "menu.h" #include "constants/dungeon.h" #include "wonder_mail.h" @@ -82,7 +83,6 @@ extern u8 sub_802DADC(void); extern u8 *sub_8096DD8(void); extern u8 sub_8096C08(u8 *); extern void sub_802C750(void); -extern s32 GetNumAcceptedJobs(void); extern void sub_802D1A0(u32); extern void sub_8012EA4(u8 *, u32); extern void* sub_8096AB4(u8); @@ -228,7 +228,7 @@ void sub_802D2A8(void) } } else { - if (GetNumAcceptedJobs() >= 8) { + if (GetNumAcceptedJobs() >= MAX_ACCEPTED_JOBS) { if (sub_802DADC() != 0) { sub_802D1A0(10); } diff --git a/src/wonder_mail_802DF88.c b/src/wonder_mail_802DF88.c new file mode 100644 index 0000000..b85df28 --- /dev/null +++ b/src/wonder_mail_802DF88.c @@ -0,0 +1,316 @@ +#include "global.h" +#include "exclusive_pokemon.h" +#include "input.h" +#include "item.h" +#include "memory.h" +#include "text.h" +#include "wonder_mail.h" + +struct unkStruct_203B2FC +{ + // size: 0xA8 + /* 0x0 */ u32 state; + /* 0x4 */ u32 fallbackState; + u32 unk8; + s16 unkC; + s16 unkE; + u8 unk10; + u8 fill11[0x30 - 0x11]; + u8 unk30; + u8 fill31[3]; + struct WonderMail *unk34; + struct OpenedFile *faceFile; + u8 *faceData; + u16 unk40; + u16 unk42; + u8 unk44; + u8 unk45; + u8 unk46; + u8 fill47[0x48 - 0x47]; + struct UnkTextStruct2 unk48[4]; +}; +extern struct unkStruct_203B2FC *gUnknown_203B2FC; + + +struct unkStruct_203B300 +{ + // size: 0x7C + u8 fill0[0xC]; + u32 *unkC; + u32 unk10; + struct UnkTextStruct2 *unk14; + struct UnkTextStruct2 unk18[4]; + u8 unk78[4]; +}; + +extern struct unkStruct_203B300 *gUnknown_203B300; +extern struct UnkTextStruct2 gUnknown_80E0248; +extern struct UnkTextStruct2 gUnknown_80E0264; +extern struct UnkTextStruct2 gUnknown_80E016C; +extern void sub_80073B8(u32); +extern void sub_80073E0(u32); +extern void CreateRescueDescription(u32 *); +extern void PlayMenuSoundEffect(u32); +extern s32 sub_8012A64(void *, u32); +void sub_802DF6C(void); +void sub_802DF88(void); +void sub_802DF14(void); +void sub_801317C(void); +extern s32 sub_80144A4(s32 *); +extern void sub_802DC28(u32); +extern void sub_802F2C0(void); +extern void sub_802DC28(u32); +extern u32 sub_802F298(void); +extern u8 gUnknown_202E5D8[]; +extern u8 gUnknown_202E1C8[]; +extern u8 gUnknown_202DE58[]; + +extern u8 gWonderMailClientThanksForRescuingMe[]; +extern u8 gWonderMailClientThanksForRescuingThem[]; +extern u8 gWonderMailClientEscorted[]; +extern u8 gWonderMailClientItemDelivered1[]; +extern u8 gWonderMailClientItemDelivered2[]; +extern void sub_802F204(u32 *, u32); +extern void sub_80141B4(u8 *r0, u32, struct OpenedFile **r1, u32); +extern void sub_802DC40(void); +extern void sub_802DC9C(void); +void sub_802DE44(void); +void sub_802DE60(void); +struct WonderMail *sub_8096AB4(u8); +extern void sub_8096AF8(u8 *, u32, u32); +extern void sub_8096EEC(void); +extern void sub_803C21C(struct WonderMail *, u32 *); + +u32 sub_802DB28(u8 param_1, u8 param_2) +{ + char local_18 [8]; + + sub_8096AF8(local_18,param_1,param_2); + if (local_18[0] == '\0') { + return 0; + } + else { + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + gUnknown_203B2FC = MemoryAlloc(sizeof(struct unkStruct_203B2FC),8); + gUnknown_203B2FC->unk30 = param_1; + gUnknown_203B2FC->unk34 = sub_8096AB4(param_1); + sub_8096EEC(); + sub_803C21C(gUnknown_203B2FC->unk34,&gUnknown_203B2FC->unk8); + gUnknown_203B2FC->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B2FC->unk34->clientSpecies); + gUnknown_203B2FC->faceData = NULL; + gUnknown_203B2FC->unk44 = 0; + gUnknown_203B2FC->unk45 = 0; + gUnknown_203B2FC->unk46 = 0; + gUnknown_203B2FC->unk40 = 2; + gUnknown_203B2FC->unk42 = 8; + if (gUnknown_203B2FC->faceFile != NULL) { + gUnknown_203B2FC->faceData = gUnknown_203B2FC->faceFile->data; + } + sub_802DC28(0); + return 1; + } +} + +u32 sub_802DBD4(void) +{ + switch(gUnknown_203B2FC->state) + { + case 7: + gUnknown_203B2FC->unk34->mailType = 7; + return 3; + case 6: + sub_802DE44(); + return 0; + default: + sub_802DE60(); + return 0; + } +} + +void sub_802DC00(void) +{ + if(gUnknown_203B2FC != NULL) + { + if(gUnknown_203B2FC->faceFile != NULL) + { + CloseFile(gUnknown_203B2FC->faceFile); + } + MemoryFree(gUnknown_203B2FC); + gUnknown_203B2FC = NULL; + } +} + +void sub_802DC28(u32 newState) +{ + gUnknown_203B2FC->state = newState; + sub_802DC40(); + sub_802DC9C(); +} + +void sub_802DC40(void) +{ + s32 iVar3; + sub_8006518(gUnknown_203B2FC->unk48); + switch(gUnknown_203B2FC->state) + { + case 0: + case 7: + for(iVar3 = 0; iVar3 < 4; iVar3++) + { + gUnknown_203B2FC->unk48[iVar3] = gUnknown_80E016C; + } + break; + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2FC->unk48, 1, 1); +} + +void sub_802DC9C(void) +{ + char *speciesText; + s32 index; + + switch(gUnknown_203B2FC->state) { + case 0: + CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8,gUnknown_203B2FC->unk34->clientSpecies); + CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8,gUnknown_203B2FC->unk34->clientSpecies); + speciesText = GetMonSpecies(gUnknown_203B2FC->unk34->clientSpecies); + strcpy(gUnknown_202E1C8 + 0xfffffdd0,speciesText); + speciesText = GetMonSpecies(gUnknown_203B2FC->unk34->targetSpecies); + strcpy(gUnknown_202E1C8 + 0xfffffe20,speciesText); + UnlockExclusivePokemon(gUnknown_203B2FC->unk34->clientSpecies); + sub_8090DC4(gUnknown_202DE58,gUnknown_203B2FC->unk34->targetItem,0); + gUnknown_203B2FC->fallbackState = 6; + switch(gUnknown_203B2FC->unk34->missionType) { + case WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM: + sub_802DC28(5); + break; + case WONDER_MAIL_MISSION_TYPE_FIND_ITEM: + sub_802DC28(4); + break; + case WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET: + sub_802DC28(2); + UnlockExclusivePokemon(gUnknown_203B2FC->unk34->targetSpecies); + break; + case WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT: + sub_802DC28(3); + UnlockExclusivePokemon(gUnknown_203B2FC->unk34->targetSpecies); + break; + default: + case WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT: + sub_802DC28(1); + break; + } + break; + case 1: + sub_80141B4(gWonderMailClientThanksForRescuingMe,0,&gUnknown_203B2FC->faceFile,0x10d); + break; + case 2: + sub_80141B4(gWonderMailClientThanksForRescuingThem,0,&gUnknown_203B2FC->faceFile,0x10d); + break; + case 3: + sub_80141B4(gWonderMailClientEscorted,0,&gUnknown_203B2FC->faceFile,0x10d); + break; + case 5: + sub_80141B4(gWonderMailClientItemDelivered1,0,&gUnknown_203B2FC->faceFile,0x10d); + break; + case 4: + index = FindItemInInventory(gUnknown_203B2FC->unk34->targetItem); + if (index != -1) { + ShiftItemsDownFrom(index); + FillInventoryGaps(); + } + sub_80141B4(gWonderMailClientItemDelivered2,0,&gUnknown_203B2FC->faceFile,0x10d); + break; + case 6: + sub_802F204(&gUnknown_203B2FC->unk8,1); + break; + case 7: + default: + break; + } +} + +void sub_802DE44(void) +{ + switch(sub_802F298()) + { + case 2: + case 3: + sub_802F2C0(); + sub_802DC28(7); + break; + case 0: + case 1: + break; + } +} + +void sub_802DE60(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802DC28(gUnknown_203B2FC->fallbackState); + } +} + +u32 sub_802DE84(u32 *r0) +{ + gUnknown_203B300 = MemoryAlloc(sizeof(struct unkStruct_203B300), 8); + gUnknown_203B300->unkC = r0; + sub_801317C(); + gUnknown_203B300->unk10 = *gUnknown_203B300->unkC; + gUnknown_203B300->unk14 = &gUnknown_203B300->unk18[gUnknown_203B300->unk10]; + sub_8006518(gUnknown_203B300->unk18); + gUnknown_203B300->unk18[gUnknown_203B300->unk10] = gUnknown_80E0264; + sub_802DF14(); + return 1; +} + +u32 sub_802DEE0(void) +{ + switch(sub_8012A64(gUnknown_203B300, gUnknown_203B300->unk10)) + { + case 2: + PlayMenuSoundEffect(1); + return 2; + case 1: + PlayMenuSoundEffect(0); + return 3; + default: + return 0; + } +} + +void sub_802DF14(void) +{ + sub_802DF6C(); + sub_802DF88(); +} + +void sub_802DF24(void) +{ + if(gUnknown_203B300 != NULL) + { + gUnknown_203B300->unk18[gUnknown_203B300->unk10] = gUnknown_80E0248; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B300->unk18, 1, 1); + MemoryFree(gUnknown_203B300); + gUnknown_203B300 = NULL; + } +} + +void sub_802DF6C(void) +{ + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B300->unk18, 1, 1); +} + +void sub_802DF88(void) +{ + sub_80073B8(gUnknown_203B300->unk10); + CreateRescueDescription(gUnknown_203B300->unkC); + sub_80073E0(gUnknown_203B300->unk10); +} |