diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2022-03-11 10:10:49 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-11 10:10:49 -0800 |
commit | 30fea2d6f303e0e57b62032f56da86c8223ef1f7 (patch) | |
tree | 9636ef46bb5f555874dc8ba16c82dc79bc563a12 | |
parent | ea1aa9c0c5c3a4167912d1078fffdd5e69cbbe98 (diff) | |
parent | cf492fd141b33c21f369dfa7aabebf3c52cb8ec1 (diff) |
Merge pull request #98 from AnonymousRandomPerson/master
Finished attack AI decomp
101 files changed, 14148 insertions, 15227 deletions
diff --git a/asm/code_800D090.s b/asm/code_800D090.s index dd890d8..0a9e887 100644 --- a/asm/code_800D090.s +++ b/asm/code_800D090.s @@ -8704,7 +8704,7 @@ _08011406: ldr r1, _0801147C ldr r2, [r6] add r0, sp, 0x4 - bl ExpandPlaceholdersBuffer + bl sprintf_2 movs r0, 0 str r0, [sp] movs r0, 0xC diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s index 53f3185..3f2b6b8 100644 --- a/asm/code_8012A18.s +++ b/asm/code_8012A18.s @@ -510,7 +510,7 @@ _08012F62: _08012F64: mov r0, r8 ldr r1, _08012FBC - bl ExpandPlaceholdersBuffer + bl sprintf_2 adds r0, r5, 0 adds r0, 0x14 mov r1, r9 @@ -4504,7 +4504,7 @@ _08014E60: adds r5, 0x1 ldr r2, [r0] mov r0, sp - bl ExpandPlaceholdersBuffer + bl sprintf_2 _08014E78: mov r4, sp b _08014F0E @@ -4525,7 +4525,7 @@ _08014E84: subs r2, 0x30 adds r5, 0x1 mov r0, sp - bl ExpandPlaceholdersBuffer + bl sprintf_2 mov r0, sp ldrb r1, [r0] cmp r1, 0 @@ -4558,7 +4558,7 @@ _08014EC4: subs r2, 0x30 adds r5, 0x1 mov r0, sp - bl ExpandPlaceholdersBuffer + bl sprintf_2 mov r0, sp ldrb r1, [r0] cmp r1, 0 @@ -6139,7 +6139,7 @@ _08015B04: add r0, sp, 0x4 ldr r1, _08015B30 adds r2, r5, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 mov r1, r8 ldr r0, [r1] ldrb r0, [r0, 0x19] @@ -6169,7 +6169,7 @@ _08015B34: mov r0, r10 ldr r1, _08015B78 adds r2, r5, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 mov r3, r8 ldr r0, [r3] ldrb r0, [r0, 0x19] @@ -6477,7 +6477,7 @@ _08015DD0: adds r0, 0xF8 ldr r2, [r0] add r0, sp, 0x4 - bl ExpandPlaceholdersBuffer + bl sprintf_2 b _08015DEE .align 2, 0 _08015DDC: .4byte gUnknown_80DB65C @@ -6487,7 +6487,7 @@ _08015DE0: adds r0, 0xF8 ldr r2, [r0] add r0, sp, 0x4 - bl ExpandPlaceholdersBuffer + bl sprintf_2 _08015DEE: movs r0, 0 str r0, [sp] diff --git a/asm/code_801EE10.s b/asm/code_801EE10.s index 84256f9..d7ce879 100644 --- a/asm/code_801EE10.s +++ b/asm/code_801EE10.s @@ -1160,7 +1160,7 @@ sub_801F700: movs r7, 0 ldrsh r3, [r0, r7] adds r0, r5, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, [r6] adds r0, r4 ldr r3, [r0] @@ -4920,7 +4920,7 @@ _08021574: mov r0, r10 ldr r1, _08021598 add r2, sp, 0x8 - bl ExpandPlaceholdersBuffer + bl sprintf_2 mov r3, r8 ldr r0, [r3] adds r0, 0x40 @@ -4968,7 +4968,7 @@ _080215D8: adds r2, r0, 0 mov r0, r10 ldr r1, _08021608 - bl ExpandPlaceholdersBuffer + bl sprintf_2 mov r2, r8 ldr r0, [r2] adds r0, 0x40 @@ -5519,7 +5519,7 @@ _08021A16: add r0, sp, 0x4 ldr r1, _08021A58 adds r2, r7, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 mov r1, r8 ldr r0, [r1] ldr r3, [r0, 0x74] @@ -9021,7 +9021,7 @@ _08023628: ldr r1, _080236A0 adds r2, r7, 0 adds r3, r4, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r6, _0802368C ldr r0, [r6] movs r1, 0xE4 @@ -10170,7 +10170,7 @@ _08023F02: ldr r1, _08023F80 adds r2, r6, 0 mov r3, r9 - bl ExpandPlaceholdersBuffer + bl sprintf_2 mov r1, r8 ldr r0, [r1] movs r2, 0xD6 @@ -10874,7 +10874,7 @@ sub_80243E8: ldr r1, _08024454 mov r0, sp adds r2, r5, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 adds r0, r4, 0 add sp, 0x3C pop {r4,r5} diff --git a/asm/code_803B050.s b/asm/code_803B050.s index c13b2b6..1dcdaab 100644 --- a/asm/code_803B050.s +++ b/asm/code_803B050.s @@ -3,7 +3,7 @@ .syntax unified - .text + .text thumb_func_start sub_803B050 sub_803B050: @@ -1059,7 +1059,7 @@ _0803B818: add r0, sp, 0x4 adds r2, r6, 0 _0803B84C: - bl ExpandPlaceholdersBuffer + bl sprintf_2 _0803B850: ldr r1, [r7, 0x48] ldr r3, [r7] @@ -1096,7 +1096,7 @@ _0803B86C: ldr r1, [r0] add r0, sp, 0x4 adds r2, r6, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r1, [r7, 0x48] ldr r3, [r7] movs r0, 0 @@ -1160,7 +1160,7 @@ _0803B916: ldr r1, _0803B938 add r0, sp, 0x4 adds r2, r4, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 b _0803B944 .align 2, 0 _0803B938: .4byte gUnknown_80E8884 @@ -1299,7 +1299,7 @@ _0803BA4C: ldr r1, _0803BA68 add r0, sp, 0x4 adds r2, r4, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 b _0803BACC .align 2, 0 _0803BA64: .4byte gUnknown_202DE58 @@ -1313,7 +1313,7 @@ _0803BA6C: ldr r1, _0803BA88 add r0, sp, 0x4 adds r2, r4, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 b _0803BACC .align 2, 0 _0803BA84: .4byte gUnknown_202DE58 @@ -1347,7 +1347,7 @@ _0803BAA0: add r0, sp, 0x4 adds r2, r4, 0 adds r3, r4, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 _0803BACC: ldr r3, [r7] movs r0, 0 @@ -1408,7 +1408,7 @@ _0803BB10: ldr r1, [r0] add r0, sp, 0x4 mov r2, r8 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r3, [r7] movs r6, 0 str r6, [sp] @@ -1454,7 +1454,7 @@ _0803BB74: ldr r1, [r0] add r0, sp, 0x4 mov r2, r8 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r3, [r7] movs r4, 0 str r4, [sp] @@ -1472,7 +1472,7 @@ _0803BB74: ldr r1, [r5] add r0, sp, 0x4 mov r2, r8 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r3, [r7] str r4, [sp] b _0803BD32 @@ -1508,7 +1508,7 @@ _0803BBF0: ldr r1, [r0] add r0, sp, 0x4 mov r2, r8 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r3, [r7] movs r6, 0 str r6, [sp] @@ -1554,7 +1554,7 @@ _0803BC58: ldr r1, [r0] add r0, sp, 0x4 mov r2, r8 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r3, [r7] movs r6, 0 str r6, [sp] @@ -1600,7 +1600,7 @@ _0803BCC0: ldr r1, [r0] add r0, sp, 0x4 mov r2, r8 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r3, [r7] movs r6, 0 str r6, [sp] @@ -1621,7 +1621,7 @@ _0803BD1A: ldr r1, [r0] add r0, sp, 0x4 mov r2, r8 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r3, [r7] str r6, [sp] _0803BD32: @@ -1677,7 +1677,7 @@ _0803BD88: adds r0, r5, 0 adds r2, r6, 0 adds r3, r4, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r3, [r7] mov r1, r8 str r1, [sp] @@ -1783,7 +1783,7 @@ _0803BE80: _0803BE94: add r0, sp, 0x4 adds r2, r4, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r3, [r7] movs r0, 0 str r0, [sp] @@ -1823,7 +1823,7 @@ _0803BEC8: ldr r1, _0803BF00 add r0, sp, 0x4 adds r2, r4, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 b _0803BF0C .align 2, 0 _0803BEF8: .4byte gSpecialMissionText @@ -1940,7 +1940,7 @@ _0803BFD0: add r0, sp, 0x4 adds r2, r4, 0 _0803BFEE: - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r3, [r7] movs r0, 0 str r0, [sp] diff --git a/asm/code_803D110.s b/asm/code_803D110.s index fe3cd47..f5d2ba2 100644 --- a/asm/code_803D110.s +++ b/asm/code_803D110.s @@ -1388,7 +1388,7 @@ _0803DB54: adds r1, r5, 0 adds r2, r6, 0 adds r3, r4, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 b _0803DBCA .align 2, 0 _0803DB84: .4byte gUnknown_80F60F8 @@ -1411,7 +1411,7 @@ _0803DBBC: adds r3, 0x30 add r0, sp, 0x4 adds r2, r6, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 _0803DBCA: add r0, sp, 0x4 bl CalcStringWidth diff --git a/asm/code_8044210.s b/asm/code_8044210.s index 282af3b..32a8e69 100644 --- a/asm/code_8044210.s +++ b/asm/code_8044210.s @@ -1316,14 +1316,4 @@ sub_8044C50: _08044C84: .4byte 0x0000ffff thumb_func_end sub_8044C50 - thumb_func_start ResetAction -ResetAction: - movs r2, 0 - movs r1, 0 - strh r1, [r0] - strb r2, [r0, 0x4] - strb r2, [r0, 0xC] - bx lr - thumb_func_end ResetAction - - .align 2, 0 + .align 2, 0
\ No newline at end of file diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index f8846cd..df01702 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -785,7 +785,7 @@ _080529D4: ldr r0, _080529E4 ldr r1, _080529E8 ldr r2, _080529EC - bl ExpandPlaceholdersBuffer + bl sprintf_2 b _08052A28 .align 2, 0 _080529E4: .4byte gUnknown_202E5D8 @@ -795,7 +795,7 @@ _080529F0: ldr r0, _080529FC ldr r1, _08052A00 ldr r2, _08052A04 - bl ExpandPlaceholdersBuffer + bl sprintf_2 b _08052A28 .align 2, 0 _080529FC: .4byte gUnknown_202E5D8 @@ -2451,7 +2451,7 @@ _08053734: ldrb r1, [r1] strb r1, [r0] ldr r0, [sp, 0x18] - bl GetMoveTargetsUser + bl MoveTargetsUser lsls r0, 24 cmp r0, 0 beq _080537B4 @@ -2856,7 +2856,7 @@ _08053A86: cmp r0, 0x5 bne _08053AE8 ldr r0, [sp, 0x18] - bl GetMoveAffectedByMagicCoat + bl MoveAffectedByMagicCoat lsls r0, 24 cmp r0, 0 beq _08053B5C @@ -7204,7 +7204,7 @@ _08056136: adds r0, r5, 0 adds r1, r7, 0 movs r2, 0x1 - bl IsMoveUsable_2 + bl IsMoveUsable _08056142: lsls r0, 24 lsrs r4, r0, 24 @@ -7222,7 +7222,7 @@ _08056156: cmp r0, 0x1 bne _080561A0 ldrh r0, [r7, 0x2] - bl GetMoveAffectedByMuzzled + bl MoveAffectedByMuzzled lsls r0, 24 cmp r0, 0 beq _080561A0 diff --git a/asm/code_8057144.s b/asm/code_8057144.s index dc65f27..cf86611 100644 --- a/asm/code_8057144.s +++ b/asm/code_8057144.s @@ -285,693 +285,4 @@ _08057340: bx r1 thumb_func_end sub_8057308 - thumb_func_start IsMoveUsable_1 -IsMoveUsable_1: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - ldr r6, [r7, 0x70] - lsls r1, 3 - movs r0, 0x8C - lsls r0, 1 - adds r1, r0 - adds r4, r6, r1 - ldrb r1, [r4] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080573BE - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080573BE - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080573BE - ldrb r1, [r4, 0x1] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0805738E - b _080573BE -_0805738A: - movs r0, 0x1 - b _080573C0 -_0805738E: - movs r5, 0 - b _08057394 -_08057392: - adds r5, 0x1 -_08057394: - cmp r5, 0x3 - bgt _080573BE - adds r0, r7, 0 - adds r1, r4, 0 - mov r2, r8 - bl IsMoveUsable_2 - lsls r0, 24 - cmp r0, 0 - bne _0805738A - adds r4, 0x8 - movs r1, 0x9C - lsls r1, 1 - adds r0, r6, r1 - cmp r4, r0 - bcs _080573BE - ldrb r1, [r4] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08057392 -_080573BE: - movs r0, 0 -_080573C0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end IsMoveUsable_1 - - thumb_func_start IsMoveUsable_2 -IsMoveUsable_2: - push {r4-r6,lr} - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r6, [r0, 0x70] - ldrh r1, [r4, 0x2] - ldr r0, _08057430 - cmp r1, r0 - beq _08057442 - ldrb r1, [r4] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0805743E - ldrb r1, [r4, 0x1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0805743E - cmp r2, 0 - beq _08057442 - ldrb r0, [r4, 0x4] - cmp r0, 0 - beq _0805743E - adds r0, r6, 0 - adds r0, 0xBC - ldrb r1, [r0] - adds r5, r0, 0 - cmp r1, 0x5 - bne _08057414 - adds r0, r4, 0 - bl MoveDealsDirectDamage - lsls r0, 24 - cmp r0, 0 - beq _0805743E -_08057414: - ldrb r0, [r5] - cmp r0, 0x6 - bne _08057442 - ldrh r1, [r4, 0x2] - movs r0, 0xB0 - lsls r0, 1 - cmp r1, r0 - bne _08057434 - movs r1, 0x9C - lsls r1, 1 - adds r0, r6, r1 - ldrb r1, [r0] - b _08057436 - .align 2, 0 -_08057430: .4byte 0x00000163 -_08057434: - ldrb r1, [r4] -_08057436: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08057442 -_0805743E: - movs r0, 0 - b _08057444 -_08057442: - movs r0, 0x1 -_08057444: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end IsMoveUsable_2 - - thumb_func_start sub_805744C -sub_805744C: - push {r4-r6,lr} - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r6, [r0, 0x70] - ldrh r1, [r4, 0x2] - ldr r0, _080574A8 - cmp r1, r0 - beq _080574BA - ldrb r1, [r4] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080574B6 - ldrb r1, [r4, 0x1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080574B6 - cmp r2, 0 - beq _080574BA - adds r0, r6, 0 - adds r0, 0xBC - ldrb r1, [r0] - adds r5, r0, 0 - cmp r1, 0x5 - bne _0805748E - adds r0, r4, 0 - bl MoveDealsDirectDamage - lsls r0, 24 - cmp r0, 0 - beq _080574B6 -_0805748E: - ldrb r0, [r5] - cmp r0, 0x6 - bne _080574BA - ldrh r1, [r4, 0x2] - movs r0, 0xB0 - lsls r0, 1 - cmp r1, r0 - bne _080574AC - movs r1, 0x9C - lsls r1, 1 - adds r0, r6, r1 - ldrb r1, [r0] - b _080574AE - .align 2, 0 -_080574A8: .4byte 0x00000163 -_080574AC: - ldrb r1, [r4] -_080574AE: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080574BA -_080574B6: - movs r0, 0 - b _080574BC -_080574BA: - movs r0, 0x1 -_080574BC: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805744C - - thumb_func_start sub_80574C4 -sub_80574C4: - push {r4-r6,lr} - sub sp, 0x104 - adds r4, r0, 0 - adds r5, r1, 0 - movs r3, 0 - movs r2, 0 - ldr r0, [r4] - cmp r0, 0 - beq _08057502 - cmp r0, r5 - beq _080574EA -_080574DA: - lsls r0, r3, 2 - mov r6, sp - adds r1, r6, r0 - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - str r0, [r1] - adds r3, 0x1 -_080574EA: - adds r2, 0x1 - cmp r2, 0x40 - bgt _08057502 - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0 - beq _08057502 - cmp r0, r5 - beq _080574EA - cmp r3, 0x3F - ble _080574DA -_08057502: - movs r2, 0 - ldr r0, [r4] - b _08057524 -_08057508: - lsls r0, r3, 2 - mov r6, sp - adds r1, r6, r0 - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - str r0, [r1] - adds r3, 0x1 -_08057518: - adds r2, 0x1 - cmp r2, 0x40 - bgt _08057530 - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] -_08057524: - cmp r0, 0 - beq _08057530 - cmp r0, r5 - bne _08057518 - cmp r3, 0x3F - ble _08057508 -_08057530: - cmp r3, 0x40 - bgt _08057542 - movs r1, 0 - lsls r0, r3, 2 - add r0, sp -_0805753A: - stm r0!, {r1} - adds r3, 0x1 - cmp r3, 0x40 - ble _0805753A -_08057542: - mov r3, sp - adds r1, r4, 0 - movs r2, 0x40 -_08057548: - ldm r3!, {r0} - stm r1!, {r0} - subs r2, 0x1 - cmp r2, 0 - bge _08057548 - add sp, 0x104 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80574C4 - - thumb_func_start sub_805755C -sub_805755C: - push {r4,lr} - lsls r1, 16 - lsrs r4, r1, 16 - cmp r4, 0x97 - bne _08057576 - bl GetWeather - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08057576 - movs r0, 0 - b _08057580 -_08057576: - adds r0, r4, 0 - bl DoesMoveCharge - lsls r0, 24 - lsrs r0, 24 -_08057580: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805755C - - thumb_func_start sub_8057588 -sub_8057588: - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080575F8 - ldr r5, [r4, 0x70] - movs r3, 0 -_0805759E: - lsls r0, r3, 3 - movs r1, 0x8C - lsls r1, 1 - adds r0, r1 - adds r2, r5, r0 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - adds r4, r3, 0x1 - cmp r0, 0 - beq _080575F2 - movs r3, 0x1 - ldrb r1, [r2, 0x1] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080575C8 - movs r0, 0xEF - ands r0, r1 - strb r0, [r2, 0x1] - movs r3, 0x2 -_080575C8: - ldrb r1, [r2, 0x1] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080575F2 - movs r0, 0xF7 - ands r0, r1 - strb r0, [r2, 0x1] - cmp r6, 0 - beq _080575F2 - cmp r3, 0 - beq _080575F2 - adds r1, r3, 0 -_080575E2: - ldrb r0, [r2, 0x4] - cmp r0, 0 - beq _080575EC - subs r0, 0x1 - strb r0, [r2, 0x4] -_080575EC: - subs r1, 0x1 - cmp r1, 0 - bne _080575E2 -_080575F2: - adds r3, r4, 0 - cmp r3, 0x3 - ble _0805759E -_080575F8: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8057588 - - thumb_func_start sub_8057600 -sub_8057600: - push {r4,lr} - ldrh r4, [r0, 0x2] - adds r0, r1, 0 - bl sub_8057620 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_8094828 - lsls r0, 16 - asrs r0, 16 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8057600 - - thumb_func_start sub_8057620 -sub_8057620: - push {lr} - cmp r0, 0 - beq _0805762C - lsls r0, 24 - lsrs r0, 24 - b _0805762E -_0805762C: - movs r0, 0 -_0805762E: - pop {r1} - bx r1 - thumb_func_end sub_8057620 - - thumb_func_start sub_8057634 -sub_8057634: - push {r4-r7,lr} - sub sp, 0x8 - adds r5, r0, 0 - adds r6, r1, 0 - movs r7, 0 - movs r4, 0x80 - lsls r4, 1 - str r3, [sp] - adds r3, r4, 0 - bl sub_8055640 - cmp r0, 0 - beq _08057678 - movs r7, 0x1 - ldr r0, _08057684 - movs r1, 0 - ldrsh r2, [r0, r1] - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_805727C - lsls r0, 24 - cmp r0, 0 - beq _08057678 - ldr r0, _08057688 - ldr r2, [r0] - str r7, [sp] - movs r0, 0 - str r0, [sp, 0x4] - adds r0, r5, 0 - adds r1, r6, 0 - movs r3, 0x1 - bl sub_8076F80 -_08057678: - adds r0, r7, 0 - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08057684: .4byte gUnknown_80F4DB4 -_08057688: .4byte gUnknown_8106A4C - thumb_func_end sub_8057634 - - thumb_func_start sub_805768C -sub_805768C: - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r3, 0 - movs r6, 0 - ldr r4, _080576B8 - ldr r3, [r4] - adds r3, 0x1 - str r3, [r4] - ldr r4, _080576BC - lsls r3, 2 - adds r3, r4 - ldr r3, [r3] - str r5, [sp] - bl sub_8055640 - cmp r0, 0 - bne _080576C4 - ldr r1, _080576C0 - movs r0, 0x1 - strb r0, [r1] - b _080576C6 - .align 2, 0 -_080576B8: .4byte gUnknown_202F21C -_080576BC: .4byte gUnknown_8106A54 -_080576C0: .4byte gUnknown_202F220 -_080576C4: - movs r6, 0x1 -_080576C6: - adds r0, r6, 0 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805768C - - thumb_func_start sub_80576D0 -sub_80576D0: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldr r1, _080576F4 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_808417C - adds r2, r0, 0 - adds r2, 0x1 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8075F34 - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080576F4: .4byte gUnknown_80F4F28 - thumb_func_end sub_80576D0 - - thumb_func_start sub_80576F8 -sub_80576F8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldr r1, _0805771C - adds r0, r4, 0 - movs r2, 0x1 - bl sub_808417C - adds r2, r0, 0 - adds r0, r5, 0 - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8075C58 - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805771C: .4byte gUnknown_80F4E74 - thumb_func_end sub_80576F8 - - thumb_func_start sub_8057720 -sub_8057720: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldr r1, _08057744 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_808417C - adds r2, r0, 0 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8075DBC - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08057744: .4byte gUnknown_80F4E78 - thumb_func_end sub_8057720 - - thumb_func_start sub_8057748 -sub_8057748: - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r4, _08057778 - bl GetWeather - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - movs r1, 0 - ldrsh r2, [r0, r1] - movs r0, 0x1 - str r0, [sp] - adds r0, r5, 0 - adds r1, r6, 0 - movs r3, 0 - bl HealTargetHP - movs r0, 0x1 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08057778: .4byte gUnknown_80F502A - thumb_func_end sub_8057748 - - thumb_func_start sub_805777C -sub_805777C: - push {lr} - bl sub_8079DB8 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_805777C - - thumb_func_start sub_8057788 -sub_8057788: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - adds r6, r2, 0 - mov r8, r3 - movs r0, 0 - mov r9, r0 - adds r0, r4, 0 - bl GetMapTileForDungeonEntity_2 - adds r5, r0, 0 - bl IsTileGround - lsls r0, 24 - cmp r0, 0 - beq _080577BA - ldrh r1, [r5] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - beq _080577CC -_080577BA: - ldr r0, _080577C8 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r7, 0 - bl sub_80522F4 - b _0805780E - .align 2, 0 -_080577C8: .4byte gUnknown_80FD14C -_080577CC: - adds r0, r4, 0 - adds r1, r6, 0 - bl MoveMatchesChargingStatus - lsls r0, 24 - cmp r0, 0 - beq _080577F8 - ldr r0, _080577F4 - ldr r3, [r0] - mov r0, r8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r7, 0 - adds r2, r6, 0 - bl sub_8055640 - adds r0, r4, 0 - bl sub_8079764 - b _0805780A - .align 2, 0 -_080577F4: .4byte gUnknown_80F4F68 -_080577F8: - ldr r0, _08057820 - ldr r0, [r0] - str r0, [sp] - adds r0, r4, 0 - adds r1, r4, 0 - movs r2, 0xA - adds r3, r6, 0 - bl sub_8079618 -_0805780A: - movs r0, 0x1 - mov r9, r0 -_0805780E: - mov r0, r9 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08057820: .4byte gUnknown_80FAD4C - thumb_func_end sub_8057788 - - .align 2,0 @ Don't pad with nop + .align 2, 0
\ No newline at end of file diff --git a/asm/code_805744C.s b/asm/code_805744C.s new file mode 100644 index 0000000..4272c44 --- /dev/null +++ b/asm/code_805744C.s @@ -0,0 +1,552 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_805744C +sub_805744C: + push {r4-r6,lr} + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r6, [r0, 0x70] + ldrh r1, [r4, 0x2] + ldr r0, _080574A8 + cmp r1, r0 + beq _080574BA + ldrb r1, [r4] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _080574B6 + ldrb r1, [r4, 0x1] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080574B6 + cmp r2, 0 + beq _080574BA + adds r0, r6, 0 + adds r0, 0xBC + ldrb r1, [r0] + adds r5, r0, 0 + cmp r1, 0x5 + bne _0805748E + adds r0, r4, 0 + bl MoveDealsDirectDamage + lsls r0, 24 + cmp r0, 0 + beq _080574B6 +_0805748E: + ldrb r0, [r5] + cmp r0, 0x6 + bne _080574BA + ldrh r1, [r4, 0x2] + movs r0, 0xB0 + lsls r0, 1 + cmp r1, r0 + bne _080574AC + movs r1, 0x9C + lsls r1, 1 + adds r0, r6, r1 + ldrb r1, [r0] + b _080574AE + .align 2, 0 +_080574A8: .4byte 0x00000163 +_080574AC: + ldrb r1, [r4] +_080574AE: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _080574BA +_080574B6: + movs r0, 0 + b _080574BC +_080574BA: + movs r0, 0x1 +_080574BC: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805744C + + thumb_func_start sub_80574C4 +sub_80574C4: + push {r4-r6,lr} + sub sp, 0x104 + adds r4, r0, 0 + adds r5, r1, 0 + movs r3, 0 + movs r2, 0 + ldr r0, [r4] + cmp r0, 0 + beq _08057502 + cmp r0, r5 + beq _080574EA +_080574DA: + lsls r0, r3, 2 + mov r6, sp + adds r1, r6, r0 + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] + str r0, [r1] + adds r3, 0x1 +_080574EA: + adds r2, 0x1 + cmp r2, 0x40 + bgt _08057502 + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] + cmp r0, 0 + beq _08057502 + cmp r0, r5 + beq _080574EA + cmp r3, 0x3F + ble _080574DA +_08057502: + movs r2, 0 + ldr r0, [r4] + b _08057524 +_08057508: + lsls r0, r3, 2 + mov r6, sp + adds r1, r6, r0 + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] + str r0, [r1] + adds r3, 0x1 +_08057518: + adds r2, 0x1 + cmp r2, 0x40 + bgt _08057530 + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] +_08057524: + cmp r0, 0 + beq _08057530 + cmp r0, r5 + bne _08057518 + cmp r3, 0x3F + ble _08057508 +_08057530: + cmp r3, 0x40 + bgt _08057542 + movs r1, 0 + lsls r0, r3, 2 + add r0, sp +_0805753A: + stm r0!, {r1} + adds r3, 0x1 + cmp r3, 0x40 + ble _0805753A +_08057542: + mov r3, sp + adds r1, r4, 0 + movs r2, 0x40 +_08057548: + ldm r3!, {r0} + stm r1!, {r0} + subs r2, 0x1 + cmp r2, 0 + bge _08057548 + add sp, 0x104 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80574C4 + + thumb_func_start sub_805755C +sub_805755C: + push {r4,lr} + lsls r1, 16 + lsrs r4, r1, 16 + cmp r4, 0x97 + bne _08057576 + bl GetWeather + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08057576 + movs r0, 0 + b _08057580 +_08057576: + adds r0, r4, 0 + bl DoesMoveCharge + lsls r0, 24 + lsrs r0, 24 +_08057580: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805755C + + thumb_func_start sub_8057588 +sub_8057588: + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080575F8 + ldr r5, [r4, 0x70] + movs r3, 0 +_0805759E: + lsls r0, r3, 3 + movs r1, 0x8C + lsls r1, 1 + adds r0, r1 + adds r2, r5, r0 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + adds r4, r3, 0x1 + cmp r0, 0 + beq _080575F2 + movs r3, 0x1 + ldrb r1, [r2, 0x1] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080575C8 + movs r0, 0xEF + ands r0, r1 + strb r0, [r2, 0x1] + movs r3, 0x2 +_080575C8: + ldrb r1, [r2, 0x1] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080575F2 + movs r0, 0xF7 + ands r0, r1 + strb r0, [r2, 0x1] + cmp r6, 0 + beq _080575F2 + cmp r3, 0 + beq _080575F2 + adds r1, r3, 0 +_080575E2: + ldrb r0, [r2, 0x4] + cmp r0, 0 + beq _080575EC + subs r0, 0x1 + strb r0, [r2, 0x4] +_080575EC: + subs r1, 0x1 + cmp r1, 0 + bne _080575E2 +_080575F2: + adds r3, r4, 0 + cmp r3, 0x3 + ble _0805759E +_080575F8: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8057588 + + thumb_func_start sub_8057600 +sub_8057600: + push {r4,lr} + ldrh r4, [r0, 0x2] + adds r0, r1, 0 + bl sub_8057620 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8094828 + lsls r0, 16 + asrs r0, 16 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8057600 + + thumb_func_start sub_8057620 +sub_8057620: + push {lr} + cmp r0, 0 + beq _0805762C + lsls r0, 24 + lsrs r0, 24 + b _0805762E +_0805762C: + movs r0, 0 +_0805762E: + pop {r1} + bx r1 + thumb_func_end sub_8057620 + + thumb_func_start sub_8057634 +sub_8057634: + push {r4-r7,lr} + sub sp, 0x8 + adds r5, r0, 0 + adds r6, r1, 0 + movs r7, 0 + movs r4, 0x80 + lsls r4, 1 + str r3, [sp] + adds r3, r4, 0 + bl sub_8055640 + cmp r0, 0 + beq _08057678 + movs r7, 0x1 + ldr r0, _08057684 + movs r1, 0 + ldrsh r2, [r0, r1] + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_805727C + lsls r0, 24 + cmp r0, 0 + beq _08057678 + ldr r0, _08057688 + ldr r2, [r0] + str r7, [sp] + movs r0, 0 + str r0, [sp, 0x4] + adds r0, r5, 0 + adds r1, r6, 0 + movs r3, 0x1 + bl sub_8076F80 +_08057678: + adds r0, r7, 0 + add sp, 0x8 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08057684: .4byte gUnknown_80F4DB4 +_08057688: .4byte gUnknown_8106A4C + thumb_func_end sub_8057634 + + thumb_func_start sub_805768C +sub_805768C: + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r3, 0 + movs r6, 0 + ldr r4, _080576B8 + ldr r3, [r4] + adds r3, 0x1 + str r3, [r4] + ldr r4, _080576BC + lsls r3, 2 + adds r3, r4 + ldr r3, [r3] + str r5, [sp] + bl sub_8055640 + cmp r0, 0 + bne _080576C4 + ldr r1, _080576C0 + movs r0, 0x1 + strb r0, [r1] + b _080576C6 + .align 2, 0 +_080576B8: .4byte gUnknown_202F21C +_080576BC: .4byte gUnknown_8106A54 +_080576C0: .4byte gUnknown_202F220 +_080576C4: + movs r6, 0x1 +_080576C6: + adds r0, r6, 0 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805768C + + thumb_func_start sub_80576D0 +sub_80576D0: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldr r1, _080576F4 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r2, r0, 0 + adds r2, 0x1 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8075F34 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080576F4: .4byte gUnknown_80F4F28 + thumb_func_end sub_80576D0 + + thumb_func_start sub_80576F8 +sub_80576F8: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldr r1, _0805771C + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r2, r0, 0 + adds r0, r5, 0 + adds r1, r4, 0 + movs r3, 0x1 + bl sub_8075C58 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805771C: .4byte gUnknown_80F4E74 + thumb_func_end sub_80576F8 + + thumb_func_start sub_8057720 +sub_8057720: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldr r1, _08057744 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r2, r0, 0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8075DBC + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08057744: .4byte gUnknown_80F4E78 + thumb_func_end sub_8057720 + + thumb_func_start sub_8057748 +sub_8057748: + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldr r4, _08057778 + bl GetWeather + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + movs r1, 0 + ldrsh r2, [r0, r1] + movs r0, 0x1 + str r0, [sp] + adds r0, r5, 0 + adds r1, r6, 0 + movs r3, 0 + bl HealTargetHP + movs r0, 0x1 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08057778: .4byte gUnknown_80F502A + thumb_func_end sub_8057748 + + thumb_func_start sub_805777C +sub_805777C: + push {lr} + bl sub_8079DB8 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_805777C + + thumb_func_start sub_8057788 +sub_8057788: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + adds r6, r2, 0 + mov r8, r3 + movs r0, 0 + mov r9, r0 + adds r0, r4, 0 + bl GetMapTileForDungeonEntity_2 + adds r5, r0, 0 + bl IsTileGround + lsls r0, 24 + cmp r0, 0 + beq _080577BA + ldrh r1, [r5] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _080577CC +_080577BA: + ldr r0, _080577C8 + ldr r2, [r0] + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80522F4 + b _0805780E + .align 2, 0 +_080577C8: .4byte gUnknown_80FD14C +_080577CC: + adds r0, r4, 0 + adds r1, r6, 0 + bl MoveMatchesChargingStatus + lsls r0, 24 + cmp r0, 0 + beq _080577F8 + ldr r0, _080577F4 + ldr r3, [r0] + mov r0, r8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_8055640 + adds r0, r4, 0 + bl sub_8079764 + b _0805780A + .align 2, 0 +_080577F4: .4byte gUnknown_80F4F68 +_080577F8: + ldr r0, _08057820 + ldr r0, [r0] + str r0, [sp] + adds r0, r4, 0 + adds r1, r4, 0 + movs r2, 0xA + adds r3, r6, 0 + bl sub_8079618 +_0805780A: + movs r0, 0x1 + mov r9, r0 +_0805780E: + mov r0, r9 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08057820: .4byte gUnknown_80FAD4C + thumb_func_end sub_8057788 + + .align 2,0 @ Don't pad with nop diff --git a/asm/code_805CEB8.s b/asm/code_805D8C8.s index d318b14..2200fb9 100644 --- a/asm/code_805CEB8.s +++ b/asm/code_805D8C8.s @@ -5,1002 +5,6 @@ .text - thumb_func_start CanUseOnTargetWithStatusChecker -CanUseOnTargetWithStatusChecker: - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r6, r1, 0 - adds r7, r2, 0 - ldr r5, [r0, 0x70] - ldr r4, [r6, 0x70] - adds r0, r4, 0 - adds r0, 0xB0 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0805CEE0 - adds r0, r7, 0 - bl MoveCannotHitFrozen - lsls r0, 24 - cmp r0, 0 - beq _0805CEE0 - b _0805D540 -_0805CEE0: - ldrh r0, [r7, 0x2] - subs r2, r0, 0x3 - ldr r0, _0805CEF8 - cmp r2, r0 - bls _0805CEEE - bl _0805D802 -_0805CEEE: - lsls r0, r2, 2 - ldr r1, _0805CEFC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0805CEF8: .4byte 0x0000017b -_0805CEFC: .4byte _0805CF00 - .align 2, 0 -_0805CF00: - .4byte _0805D4FA - .4byte _0805D4F0 - .4byte _0805D50E - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D516 - .4byte _0805D51C - .4byte _0805D802 - .4byte _0805D7F6 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D520 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D52C - .4byte _0805D532 - .4byte _0805D544 - .4byte _0805D55A - .4byte _0805D7F6 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D566 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D56A - .4byte _0805D4F0 - .4byte _0805D570 - .4byte _0805D802 - .4byte _0805D57E - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D584 - .4byte _0805D802 - .4byte _0805D7F6 - .4byte _0805D802 - .4byte _0805D596 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D59C - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D5C8 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D5D0 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D4F0 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D5E2 - .4byte _0805D4F0 - .4byte _0805D5E8 - .4byte _0805D5F8 - .4byte _0805D802 - .4byte _0805D5FE - .4byte _0805D5F8 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D55A - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D4F0 - .4byte _0805D662 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D668 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D5DC - .4byte _0805D802 - .4byte _0805D5C8 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D7AC - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D704 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D704 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D7F6 - .4byte _0805D70A - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D7F6 - .4byte _0805D5C8 - .4byte _0805D802 - .4byte _0805D5F8 - .4byte _0805D802 - .4byte _0805D7E4 - .4byte _0805D7DC - .4byte _0805D802 - .4byte _0805D7E4 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D716 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D740 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D74A - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D5DC - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D4F0 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D75C - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D734 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D782 - .4byte _0805D740 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D704 - .4byte _0805D7F6 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D5C8 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D7A0 - .4byte _0805D7CA - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D78A - .4byte _0805D59C - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D7BE - .4byte _0805D7AC - .4byte _0805D802 - .4byte _0805D794 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D55A - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D782 - .4byte _0805D802 - .4byte _0805D802 - .4byte _0805D7F6 -_0805D4F0: - adds r0, r6, 0 - bl IsSleeping - lsls r0, 24 - b _0805D7A6 -_0805D4FA: - adds r0, r4, 0 - adds r0, 0xA8 - ldrb r0, [r0] - cmp r0, 0x4 - beq _0805D540 - adds r0, r6, 0 - bl IsSleeping - lsls r0, 24 - b _0805D7A6 -_0805D50E: - adds r0, r4, 0 - adds r0, 0xA8 - ldrb r0, [r0] - b _0805D7F0 -_0805D516: - movs r1, 0x26 - ldrsh r0, [r4, r1] - b _0805D744 -_0805D51C: - ldr r0, [r4, 0x2C] - b _0805D58E -_0805D520: - adds r0, r4, 0 - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x6 - beq _0805D540 - b _0805D7AC -_0805D52C: - movs r3, 0xE - ldrsh r0, [r4, r3] - b _0805D78E -_0805D532: - movs r7, 0xE - ldrsh r1, [r4, r7] - movs r2, 0xE - ldrsh r0, [r5, r2] - cmp r1, r0 - ble _0805D540 - b _0805D802 -_0805D540: - movs r0, 0 - b _0805D804 -_0805D544: - movs r3, 0x8C - lsls r3, 1 - adds r4, r3 - adds r0, r4, 0 - bl HasDisabledMove - lsls r0, 24 - cmp r0, 0 - bne _0805D540 - adds r0, r4, 0 - b _0805D7B2 -_0805D55A: - ldr r0, [r6, 0x70] - movs r7, 0x82 - lsls r7, 1 - adds r0, r7 - ldr r0, [r0] - b _0805D744 -_0805D566: - ldr r0, [r4, 0x34] - b _0805D58E -_0805D56A: - movs r1, 0x22 - ldrsh r0, [r4, r1] - b _0805D744 -_0805D570: - movs r2, 0x8C - lsls r2, 1 - adds r0, r4, r2 - bl LastMoveOutOfPP - lsls r0, 24 - b _0805D7A6 -_0805D57E: - adds r0, r4, 0 - adds r0, 0xDC - b _0805D7FA -_0805D584: - ldr r0, [r4, 0x2C] - cmp r0, 0x3E - ble _0805D58C - b _0805D802 -_0805D58C: - ldr r0, [r4, 0x30] -_0805D58E: - cmp r0, 0x3E - ble _0805D594 - b _0805D802 -_0805D594: - b _0805D540 -_0805D596: - adds r0, r4, 0 - adds r0, 0xAC - b _0805D798 -_0805D59C: - adds r0, r4, 0 - adds r0, 0x5C - ldrb r0, [r0] - cmp r0, 0xE - beq _0805D5B0 - adds r0, r4, 0 - adds r0, 0x5D - ldrb r0, [r0] - cmp r0, 0xE - bne _0805D5BC -_0805D5B0: - adds r0, r4, 0 - adds r0, 0xF5 - ldrb r0, [r0] - cmp r0, 0 - bne _0805D5BC - b _0805D802 -_0805D5BC: - movs r3, 0x26 - ldrsh r0, [r4, r3] - cmp r0, 0xA - ble _0805D5C6 - b _0805D802 -_0805D5C6: - b _0805D540 -_0805D5C8: - adds r0, r4, 0 - adds r0, 0xAC - ldrb r0, [r0] - b _0805D7D6 -_0805D5D0: - movs r7, 0xE - ldrsh r0, [r4, r7] - movs r2, 0xE - ldrsh r1, [r5, r2] - subs r0, r1 - b _0805D744 -_0805D5DC: - movs r3, 0x20 - ldrsh r0, [r4, r3] - b _0805D744 -_0805D5E2: - movs r7, 0x22 - ldrsh r0, [r4, r7] - b _0805D744 -_0805D5E8: - movs r1, 0x1C - ldrsh r0, [r4, r1] - cmp r0, 0 - ble _0805D5F2 - b _0805D802 -_0805D5F2: - movs r2, 0x20 - ldrsh r0, [r4, r2] - b _0805D744 -_0805D5F8: - adds r0, r4, 0 - adds r0, 0xB0 - b _0805D7FA -_0805D5FE: - movs r6, 0 - adds r2, r4, 0 - adds r2, 0x1C - movs r3, 0x1C - ldrsh r0, [r4, r3] - cmp r0, 0x9 - ble _0805D6FC - adds r1, r4, 0 - adds r1, 0x20 - movs r7, 0x20 - ldrsh r0, [r4, r7] - cmp r0, 0x9 - ble _0805D6FC - adds r3, r1, 0 - movs r5, 0 -_0805D61C: - adds r0, r4, 0 - adds r0, 0x24 - adds r0, r5 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x9 - ble _0805D6FC - lsls r1, r6, 2 - adds r0, r4, 0 - adds r0, 0x2C - adds r0, r1 - ldr r0, [r0] - cmp r0, 0xFF - ble _0805D6FC - adds r0, r4, 0 - adds r0, 0x34 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0xFF - ble _0805D6FC - adds r3, 0x2 - adds r2, 0x2 - adds r5, 0x2 - adds r6, 0x1 - cmp r6, 0x1 - bgt _0805D6FC - movs r7, 0 - ldrsh r0, [r2, r7] - cmp r0, 0x9 - ble _0805D6FC - movs r1, 0 - ldrsh r0, [r3, r1] - cmp r0, 0x9 - bgt _0805D61C - b _0805D6FC -_0805D662: - adds r0, r4, 0 - adds r0, 0xA8 - b _0805D7FA -_0805D668: - movs r6, 0 - adds r3, r5, 0 - adds r3, 0x1C - adds r2, r4, 0 - adds r2, 0x1C - movs r7, 0x1C - ldrsh r1, [r5, r7] - movs r7, 0x1C - ldrsh r0, [r4, r7] - cmp r1, r0 - blt _0805D6FC - mov r12, r2 - mov r8, r3 - movs r3, 0 -_0805D684: - adds r1, r5, 0 - adds r1, 0x20 - adds r1, r3 - adds r0, r4, 0 - adds r0, 0x20 - adds r0, r3 - movs r2, 0 - ldrsh r1, [r1, r2] - movs r7, 0 - ldrsh r0, [r0, r7] - cmp r1, r0 - blt _0805D6FC - adds r1, r5, 0 - adds r1, 0x24 - adds r1, r3 - adds r0, r4, 0 - adds r0, 0x24 - adds r0, r3 - movs r2, 0 - ldrsh r1, [r1, r2] - movs r7, 0 - ldrsh r0, [r0, r7] - cmp r1, r0 - blt _0805D6FC - lsls r2, r6, 2 - adds r1, r5, 0 - adds r1, 0x2C - adds r1, r2 - adds r0, r4, 0 - adds r0, 0x2C - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - blt _0805D6FC - adds r1, r5, 0 - adds r1, 0x34 - adds r1, r2 - adds r0, r4, 0 - adds r0, 0x34 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - blt _0805D6FC - movs r0, 0x2 - add r12, r0 - add r8, r0 - adds r3, 0x2 - adds r6, 0x1 - cmp r6, 0x1 - bgt _0805D6FC - mov r2, r8 - movs r7, 0 - ldrsh r1, [r2, r7] - mov r2, r12 - movs r7, 0 - ldrsh r0, [r2, r7] - cmp r1, r0 - bge _0805D684 -_0805D6FC: - cmp r6, 0x2 - beq _0805D702 - b _0805D802 -_0805D702: - b _0805D540 -_0805D704: - movs r1, 0x24 - ldrsh r0, [r4, r1] - b _0805D744 -_0805D70A: - adds r0, r4, 0 - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x5 - bne _0805D802 - b _0805D540 -_0805D716: - adds r0, r5, 0 - adds r0, 0x60 - ldrb r1, [r0] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0805D728 - b _0805D540 -_0805D728: - adds r0, r4, 0 - adds r0, 0x60 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - b _0805D7B8 -_0805D734: - adds r0, r4, 0 - adds r0, 0x60 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - b _0805D7B8 -_0805D740: - movs r2, 0x1C - ldrsh r0, [r4, r2] -_0805D744: - cmp r0, 0 - bgt _0805D802 - b _0805D540 -_0805D74A: - adds r0, r5, 0 - adds r0, 0x5E - adds r1, r4, 0 - adds r1, 0x5E - ldrh r0, [r0] - ldrh r1, [r1] - cmp r0, r1 - bne _0805D802 - b _0805D540 -_0805D75C: - mov r0, r8 - movs r1, 0xE - bl HasType - lsls r0, 24 - cmp r0, 0 - beq _0805D770 - adds r0, r4, 0 - adds r0, 0xC8 - b _0805D798 -_0805D770: - movs r3, 0x1C - ldrsh r0, [r5, r3] - cmp r0, 0x13 - ble _0805D802 - movs r7, 0x20 - ldrsh r0, [r5, r7] - cmp r0, 0x13 - ble _0805D802 - b _0805D540 -_0805D782: - adds r0, r4, 0 - adds r0, 0xBC - ldrb r0, [r0] - b _0805D7F0 -_0805D78A: - movs r1, 0xE - ldrsh r0, [r4, r1] -_0805D78E: - cmp r0, 0x1 - bgt _0805D802 - b _0805D540 -_0805D794: - adds r0, r4, 0 - adds r0, 0xD0 -_0805D798: - ldrb r0, [r0] - cmp r0, 0x1 - bne _0805D802 - b _0805D540 -_0805D7A0: - adds r0, r4, 0 - adds r0, 0xFD - ldrb r0, [r0] -_0805D7A6: - cmp r0, 0 - beq _0805D802 - b _0805D540 -_0805D7AC: - movs r2, 0x8C - lsls r2, 1 - adds r0, r4, r2 -_0805D7B2: - bl HasLastUsedMove - lsls r0, 24 -_0805D7B8: - cmp r0, 0 - bne _0805D802 - b _0805D540 -_0805D7BE: - adds r0, r4, 0 - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x7 - bne _0805D802 - b _0805D540 -_0805D7CA: - adds r0, r4, 0 - adds r0, 0xB0 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0805D7D6 - b _0805D540 -_0805D7D6: - cmp r0, 0x4 - bne _0805D802 - b _0805D540 -_0805D7DC: - adds r0, r4, 0 - adds r0, 0xAC - ldrb r0, [r0] - b _0805D7F0 -_0805D7E4: - adds r0, r4, 0 - adds r0, 0xAC - ldrb r0, [r0] - cmp r0, 0x2 - bne _0805D7F0 - b _0805D540 -_0805D7F0: - cmp r0, 0x3 - bne _0805D802 - b _0805D540 -_0805D7F6: - adds r0, r4, 0 - adds r0, 0xBC -_0805D7FA: - ldrb r0, [r0] - cmp r0, 0x2 - bne _0805D802 - b _0805D540 -_0805D802: - movs r0, 0x1 -_0805D804: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CanUseOnTargetWithStatusChecker - - thumb_func_start HasDisabledMove -HasDisabledMove: - push {r4-r6,lr} - adds r4, r0, 0 - movs r3, 0 - movs r6, 0x1 - movs r5, 0x20 - adds r2, r4, 0 -_0805D81C: - ldrb r1, [r2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0805D82E - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _0805D848 -_0805D82E: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x3 - ble _0805D81C - adds r0, r4, 0 - adds r0, 0x20 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0805D848 - movs r0, 0 - b _0805D84A -_0805D848: - movs r0, 0x1 -_0805D84A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end HasDisabledMove - - thumb_func_start LastMoveOutOfPP -LastMoveOutOfPP: - push {r4,r5,lr} - movs r3, 0 - movs r5, 0x1 - adds r2, r0, 0 - movs r4, 0x10 -_0805D85A: - ldrb r1, [r2] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0805D876 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _0805D876 - ldrb r0, [r2, 0x4] - cmp r0, 0 - bne _0805D876 - movs r0, 0x1 - b _0805D880 -_0805D876: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x3 - ble _0805D85A - movs r0, 0 -_0805D880: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end LastMoveOutOfPP - - thumb_func_start HasLastUsedMove -HasLastUsedMove: - push {r4-r6,lr} - adds r4, r0, 0 - movs r3, 0 - movs r6, 0x1 - movs r5, 0x10 - adds r2, r4, 0 -_0805D894: - ldrb r1, [r2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0805D8A6 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _0805D8C0 -_0805D8A6: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x3 - ble _0805D894 - adds r0, r4, 0 - adds r0, 0x20 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0805D8C0 - movs r0, 0 - b _0805D8C2 -_0805D8C0: - movs r0, 0x1 -_0805D8C2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end HasLastUsedMove - thumb_func_start sub_805D8C8 sub_805D8C8: push {r4-r7,lr} @@ -5458,7 +4462,7 @@ _0805FCEC: adds r0, r5, 0 ldr r1, _0805FD38 adds r2, r4, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, _0805FD30 adds r1, r6, 0 bl sub_8013800 @@ -11304,7 +10308,7 @@ _08062C24: mov r0, r10 adds r1, r5, 0 movs r2, 0x1 - bl IsMoveUsable_2 + bl IsMoveUsable add r1, sp, 0x4 movs r2, 0 lsls r0, 24 @@ -12538,7 +11542,7 @@ _08063606: ldr r0, [sp, 0x14] adds r1, r5, 0 movs r2, 0x1 - bl IsMoveUsable_2 + bl IsMoveUsable add r1, sp, 0x4 movs r2, 0 lsls r0, 24 @@ -12715,7 +11719,7 @@ _0806376A: bgt _08063788 mov r0, r8 movs r2, 0x1 - bl IsMoveUsable_1 + bl IsMoveIndexUsable lsls r0, 24 lsrs r0, 24 negs r1, r0 @@ -18050,7 +17054,7 @@ _08066208: ldrb r2, [r0] add r0, sp, 0x4 ldr r1, _08066258 - bl ExpandPlaceholdersBuffer + bl sprintf_2 movs r0, 0 ldrsh r1, [r5, r0] ldr r0, _0806625C @@ -18146,7 +17150,7 @@ _080662C4: adds r0, r4 ldrb r2, [r0] add r0, sp, 0x4 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, _0806634C lsls r1, r4, 1 adds r1, r5, r1 @@ -18248,7 +17252,7 @@ _080663A0: adds r0, r4 ldrb r2, [r0] add r0, sp, 0x4 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, _08066428 lsls r1, r4, 1 adds r1, r5, r1 diff --git a/asm/code_806CD90.s b/asm/code_806CD90.s index 509da75..34b2572 100644 --- a/asm/code_806CD90.s +++ b/asm/code_806CD90.s @@ -2969,3266 +2969,4 @@ _0806E64C: .4byte 0x00000177 _0806E650: .4byte gUnknown_8106F0C thumb_func_end sub_806E100 - thumb_func_start WeightWeakTypePicker -WeightWeakTypePicker: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - mov r9, r0 - str r1, [sp, 0x14] - lsls r2, 24 - lsrs r4, r2, 24 - movs r5, 0x1 - movs r0, 0 - str r0, [sp, 0x10] - adds r0, r1, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0806E6DC - cmp r4, 0x1 - beq _0806E682 - cmp r4, 0x7 - bne _0806E686 -_0806E682: - movs r1, 0x1 - str r1, [sp, 0x10] -_0806E686: - mov r2, r9 - ldr r2, [r2, 0x70] - mov r8, r2 - ldr r3, [sp, 0x14] - ldr r3, [r3, 0x70] - mov r10, r3 - cmp r4, 0x2 - bne _0806E6A2 - ldr r0, [sp, 0x14] - bl GetFlashFireStatus - lsls r0, 24 - cmp r0, 0 - bne _0806E6C6 -_0806E6A2: - cmp r4, 0x5 - bne _0806E6B4 - ldr r0, [sp, 0x14] - movs r1, 0x23 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - bne _0806E6C6 -_0806E6B4: - cmp r4, 0x3 - bne _0806E6CA - ldr r0, [sp, 0x14] - movs r1, 0x24 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806E6CA -_0806E6C6: - movs r0, 0 - b _0806E894 -_0806E6CA: - cmp r4, 0x9 - bne _0806E6E0 - ldr r0, [sp, 0x14] - movs r1, 0x37 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806E6E0 -_0806E6DC: - movs r0, 0x1 - b _0806E894 -_0806E6E0: - mov r6, r10 - adds r6, 0x5C - str r6, [sp, 0x18] - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - mov r12, r0 - adds r2, r6, 0 -_0806E6F0: - mov r0, sp - ldr r1, _0806E724 - ldm r1!, {r3,r6,r7} - stm r0!, {r3,r6,r7} - ldr r1, [r1] - str r1, [r0] - ldr r7, [sp, 0x10] - cmp r7, 0 - beq _0806E730 - ldrb r0, [r2] - cmp r0, 0xE - bne _0806E730 - mov r0, r10 - adds r0, 0xF5 - ldrb r0, [r0] - cmp r0, 0 - bne _0806E730 - movs r3, 0 - ldr r0, _0806E728 - ldr r0, [r0] - ldr r6, _0806E72C - adds r1, r0, r6 - movs r0, 0x1 - strb r0, [r1] - b _0806E73E - .align 2, 0 -_0806E724: .4byte gTypeEffectivenessMultipliers -_0806E728: .4byte gDungeonGlobalData -_0806E72C: .4byte 0x00000179 -_0806E730: - ldrb r0, [r2] - lsls r0, 1 - add r0, r12 - ldr r7, _0806E854 - adds r0, r7 - movs r1, 0 - ldrsh r3, [r0, r1] -_0806E73E: - cmp r5, 0 - beq _0806E75E - lsls r0, r3, 2 - add r0, sp - ldr r0, [r0] - muls r5, r0 - lsrs r0, r5, 31 - adds r0, r5, r0 - asrs r5, r0, 1 - cmp r5, 0 - beq _0806E84E - adds r2, 0x1 - ldr r0, [sp, 0x18] - adds r0, 0x1 - cmp r2, r0 - ble _0806E6F0 -_0806E75E: - cmp r4, 0x2 - beq _0806E766 - cmp r4, 0x6 - bne _0806E774 -_0806E766: - ldr r0, [sp, 0x14] - movs r1, 0x2 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - bne _0806E84E -_0806E774: - cmp r4, 0x3 - bne _0806E7A0 - mov r0, r9 - movs r1, 0x10 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806E7A0 - mov r2, r8 - movs r3, 0x10 - ldrsh r1, [r2, r3] - cmp r1, 0 - bge _0806E792 - adds r1, 0x3 -_0806E792: - asrs r1, 2 - mov r6, r8 - movs r7, 0xE - ldrsh r0, [r6, r7] - cmp r1, r0 - blt _0806E7A0 - lsls r5, 1 -_0806E7A0: - cmp r4, 0x4 - bne _0806E7CC - mov r0, r9 - movs r1, 0x1A - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806E7CC - mov r0, r8 - movs r2, 0x10 - ldrsh r1, [r0, r2] - cmp r1, 0 - bge _0806E7BE - adds r1, 0x3 -_0806E7BE: - asrs r1, 2 - mov r3, r8 - movs r6, 0xE - ldrsh r0, [r3, r6] - cmp r1, r0 - blt _0806E7CC - lsls r5, 1 -_0806E7CC: - cmp r4, 0xC - bne _0806E7F8 - mov r0, r9 - movs r1, 0x43 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806E7F8 - mov r7, r8 - movs r0, 0x10 - ldrsh r1, [r7, r0] - cmp r1, 0 - bge _0806E7EA - adds r1, 0x3 -_0806E7EA: - asrs r1, 2 - mov r2, r8 - movs r3, 0xE - ldrsh r0, [r2, r3] - cmp r1, r0 - blt _0806E7F8 - lsls r5, 1 -_0806E7F8: - cmp r4, 0x2 - bne _0806E824 - mov r0, r9 - movs r1, 0x46 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806E824 - mov r6, r8 - movs r7, 0x10 - ldrsh r1, [r6, r7] - cmp r1, 0 - bge _0806E816 - adds r1, 0x3 -_0806E816: - asrs r1, 2 - mov r2, r8 - movs r3, 0xE - ldrsh r0, [r2, r3] - cmp r1, r0 - blt _0806E824 - lsls r5, 1 -_0806E824: - cmp r5, 0 - beq _0806E84E - mov r0, r9 - adds r1, r4, 0 - bl HasType - lsls r0, 24 - cmp r0, 0 - beq _0806E838 - lsls r5, 1 -_0806E838: - mov r0, r9 - bl GetWeather - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806E85A - cmp r4, 0x2 - beq _0806E858 - cmp r4, 0x3 - bne _0806E85A -_0806E84E: - movs r0, 0x2 - b _0806E894 - .align 2, 0 -_0806E854: .4byte gTypeEffectivenessChart -_0806E858: - lsls r5, 1 -_0806E85A: - ldr r0, _0806E8A4 - ldr r1, [r0] - ldr r6, _0806E8A8 - adds r1, r6 - ldrb r1, [r1] - cmp r1, 0 - beq _0806E86C - cmp r4, 0x5 - beq _0806E84E -_0806E86C: - ldr r0, [r0] - ldr r7, _0806E8AC - adds r0, r7 - ldrb r0, [r0] - cmp r0, 0 - beq _0806E87C - cmp r4, 0x2 - beq _0806E84E -_0806E87C: - cmp r4, 0x5 - bne _0806E88C - mov r0, r8 - adds r0, 0xC0 - ldrb r0, [r0] - cmp r0, 0xB - bne _0806E88C - lsls r5, 1 -_0806E88C: - cmp r5, 0x2 - ble _0806E892 - movs r5, 0x3 -_0806E892: - adds r0, r5, 0x2 -_0806E894: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0806E8A4: .4byte gDungeonGlobalData -_0806E8A8: .4byte 0x0000e277 -_0806E8AC: .4byte 0x0000e278 - thumb_func_end WeightWeakTypePicker - - thumb_func_start sub_806E8B0 -sub_806E8B0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - adds r6, r0, 0 - mov r9, r1 - adds r0, r2, 0 - str r3, [sp] - lsls r0, 24 - lsrs r0, 24 - movs r7, 0x1 - movs r1, 0x1 - mov r8, r1 - movs r2, 0x1 - str r2, [sp, 0x4] - str r1, [sp, 0x8] - bl sub_8092354 - movs r2, 0 - mov r10, r2 - lsls r0, 24 - cmp r0, 0 - bne _0806E8E6 - movs r0, 0x1 - mov r10, r0 -_0806E8E6: - adds r0, r6, 0 - movs r1, 0x11 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806E92C - ldr r5, [r6, 0x70] - adds r0, r6, 0 - bl HasNegativeStatus - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x1 - adds r2, r4, 0 - bl SetVisualFlags - lsls r0, 24 - lsrs r0, 24 - cmp r4, 0 - beq _0806E916 - movs r7, 0x2 -_0806E916: - cmp r0, 0 - beq _0806E92C - adds r0, r6, 0 - bl sub_80428B0 - ldr r0, _0806EADC - ldr r2, [r0] - adds r0, r6, 0 - mov r1, r9 - bl sub_80522F4 -_0806E92C: - adds r0, r6, 0 - movs r1, 0x22 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - bne _0806E948 - adds r0, r6, 0 - movs r1, 0x4B - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806E98E -_0806E948: - ldr r2, [r6, 0x70] - movs r4, 0 - ldr r0, [sp, 0x30] - cmp r0, 0x20 - bgt _0806E95A - mov r1, r10 - cmp r1, 0 - bne _0806E95A - movs r4, 0x1 -_0806E95A: - movs r1, 0x80 - lsls r1, 1 - adds r0, r2, 0 - adds r2, r4, 0 - bl SetVisualFlags - lsls r0, 24 - lsrs r1, r0, 24 - cmp r4, 0 - beq _0806E978 - lsls r0, r7, 1 - adds r7, r0, r7 - mov r2, r8 - lsls r2, 1 - mov r8, r2 -_0806E978: - cmp r1, 0 - beq _0806E98E - adds r0, r6, 0 - bl sub_80428C4 - ldr r0, _0806EAE0 - ldr r2, [r0] - adds r0, r6, 0 - mov r1, r9 - bl sub_80522F4 -_0806E98E: - adds r0, r6, 0 - movs r1, 0x30 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806E9AC - mov r0, r10 - cmp r0, 0 - bne _0806E9AC - lsls r0, r7, 1 - adds r7, r0, r7 - mov r1, r8 - lsls r1, 1 - mov r8, r1 -_0806E9AC: - ldr r0, [r6, 0x70] - ldrb r0, [r0, 0x6] - movs r4, 0x1 - cmp r0, 0 - beq _0806E9B8 - movs r4, 0 -_0806E9B8: - adds r0, r6, 0 - movs r1, 0x38 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806E9EA - mov r2, r10 - cmp r2, 0x1 - bne _0806E9EA - ldr r0, _0806EAE4 - ldr r0, [r0] - ldr r1, _0806EAE8 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _0806E9EA - lsls r0, r7, 4 - subs r7, r0, r7 - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 1 - mov r8, r0 -_0806E9EA: - adds r0, r6, 0 - movs r1, 0x3F - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806EA1C - mov r0, r10 - cmp r0, 0x1 - bne _0806EA1C - ldr r0, _0806EAE4 - ldr r0, [r0] - ldr r1, _0806EAEC - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _0806EA1C - lsls r0, r7, 4 - subs r7, r0, r7 - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 1 - mov r8, r0 -_0806EA1C: - mov r0, r9 - movs r1, 0x6 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806EA38 - mov r0, r10 - cmp r0, 0 - bne _0806EA38 - lsls r7, 2 - mov r1, r8 - lsls r0, r1, 2 - add r8, r0 -_0806EA38: - mov r0, r9 - movs r1, 0x34 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806EA90 - mov r2, r10 - cmp r2, 0 - bne _0806EA90 - mov r0, r9 - ldr r5, [r0, 0x70] - bl HasNegativeStatus - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x8 - adds r2, r4, 0 - bl SetVisualFlags - lsls r0, 24 - lsrs r1, r0, 24 - cmp r4, 0 - beq _0806EA7A - ldr r2, [sp, 0x4] - lsls r0, r2, 1 - adds r2, r0, r2 - str r2, [sp, 0x4] - ldr r0, [sp, 0x8] - lsls r0, 1 - str r0, [sp, 0x8] -_0806EA7A: - cmp r1, 0 - beq _0806EA90 - mov r0, r9 - bl sub_8042940 - ldr r0, _0806EAF0 - ldr r2, [r0] - adds r0, r6, 0 - mov r1, r9 - bl sub_80522F4 -_0806EA90: - ldr r1, [sp] - ldr r0, [r1] - muls r0, r7 - str r0, [r1] - ldr r2, [sp, 0x2C] - ldr r0, [r2] - ldr r1, [sp, 0x4] - muls r0, r1 - str r0, [r2] - mov r2, r8 - cmp r2, 0x1 - beq _0806EAB6 - ldr r1, [sp] - ldr r0, [r1] - mov r1, r8 - bl __divsi3 - ldr r2, [sp] - str r0, [r2] -_0806EAB6: - ldr r0, [sp, 0x8] - cmp r0, 0x1 - beq _0806EACA - ldr r1, [sp, 0x2C] - ldr r0, [r1] - ldr r1, [sp, 0x8] - bl __divsi3 - ldr r2, [sp, 0x2C] - str r0, [r2] -_0806EACA: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806EADC: .4byte gUnknown_80FEE04 -_0806EAE0: .4byte gUnknown_80FEE2C -_0806EAE4: .4byte gDungeonGlobalData -_0806EAE8: .4byte 0x000037fa -_0806EAEC: .4byte 0x000037f8 -_0806EAF0: .4byte gUnknown_80FEE54 - thumb_func_end sub_806E8B0 - - thumb_func_start sub_806EAF4 -sub_806EAF4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8C - str r0, [sp, 0x70] - mov r9, r1 - adds r7, r3, 0 - ldr r0, [sp, 0xB8] - ldr r1, [sp, 0xBC] - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x74] - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0x78] - ldr r0, [sp, 0x70] - ldr r0, [r0, 0x70] - mov r10, r0 - mov r1, r9 - ldr r1, [r1, 0x70] - str r1, [sp, 0x7C] - adds r0, r2, 0 - bl sub_8092354 - movs r2, 0 - str r2, [sp, 0x80] - lsls r0, 24 - cmp r0, 0 - bne _0806EB3A - movs r3, 0x1 - str r3, [sp, 0x80] -_0806EB3A: - bl sub_806F500 - mov r6, r10 - ldrb r0, [r6, 0x7] - cmp r0, 0 - bne _0806EB72 - movs r0, 0x9E - lsls r0, 1 - add r0, r10 - ldr r0, [r0] - bl RoundUpFixedPoint - adds r1, r0, 0 - cmp r1, 0 - bne _0806EB72 - movs r0, 0x1 - ldr r2, [sp, 0xB0] - str r0, [r2] - str r1, [r2, 0x4] - movs r0, 0x2 - str r0, [r2, 0x8] - add r3, sp, 0x74 - ldrb r3, [r3] - strb r3, [r2, 0xC] - strb r1, [r2, 0xD] - strb r1, [r2, 0xE] - strb r1, [r2, 0xF] - b _0806F294 -_0806EB72: - ldr r0, _0806EBA4 - cmp r4, r0 - bne _0806EBA8 - mov r0, r9 - movs r1, 0x35 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806EBA8 - movs r0, 0x1 - ldr r6, [sp, 0xB0] - str r0, [r6] - movs r1, 0 - str r1, [r6, 0x4] - movs r0, 0x2 - str r0, [r6, 0x8] - add r0, sp, 0x74 - ldrb r0, [r0] - strb r0, [r6, 0xC] - strb r1, [r6, 0xD] - strb r1, [r6, 0xE] - strb r1, [r6, 0xF] - b _0806F294 - .align 2, 0 -_0806EBA4: .4byte 0x00000163 -_0806EBA8: - add r1, sp, 0x74 - ldrb r2, [r1] - ldr r1, [sp, 0xB0] - strb r2, [r1, 0xC] - ldr r1, _0806EDA4 - ldr r0, [r1] - movs r2, 0x9A - lsls r2, 1 - adds r0, r2 - add r3, sp, 0x74 - ldrb r3, [r3] - strb r3, [r0] - ldr r2, [r1] - movs r6, 0x9C - lsls r6, 1 - adds r0, r2, r6 - ldr r1, [sp, 0x80] - str r1, [r0] - lsls r1, 1 - mov r0, r10 - adds r0, 0x1C - adds r0, r1 - movs r3, 0 - ldrsh r4, [r0, r3] - mov r8, r1 - ldr r6, [sp, 0x78] - cmp r6, 0 - beq _0806EBF8 - ldr r0, [sp, 0x74] - cmp r0, 0x2 - bne _0806EBF8 - mov r1, r10 - movs r3, 0x28 - ldrsh r0, [r1, r3] - adds r4, r0 - ldrh r1, [r1, 0x28] - movs r6, 0xA2 - lsls r6, 1 - adds r0, r2, r6 - strh r1, [r0] -_0806EBF8: - mov r0, r10 - movs r2, 0x4 - ldrsh r1, [r0, r2] - ldr r0, _0806EDA8 - cmp r1, r0 - bne _0806EC06 - adds r4, 0x2 -_0806EC06: - movs r0, 0xD1 - lsls r0, 1 - cmp r1, r0 - bne _0806EC10 - subs r4, 0x2 -_0806EC10: - ldr r0, _0806EDAC - cmp r1, r0 - bne _0806EC18 - subs r4, 0x2 -_0806EC18: - cmp r4, 0 - bge _0806EC1E - movs r4, 0 -_0806EC1E: - cmp r4, 0x14 - ble _0806EC24 - movs r4, 0x14 -_0806EC24: - ldr r6, _0806EDA4 - ldr r0, [r6] - movs r3, 0x9F - lsls r3, 1 - adds r0, r3 - strb r4, [r0] - ldr r1, [r6] - mov r5, r10 - adds r5, 0x14 - ldr r0, [sp, 0x80] - adds r2, r5, r0 - ldrb r0, [r2] - adds r0, r7 - adds r3, 0x2 - adds r1, r3 - strh r0, [r1] - ldrb r0, [r2] - adds r0, r7 - lsls r0, 8 - ldr r2, _0806EDB0 - lsls r1, r4, 2 - adds r1, r2 - ldr r1, [r1] - bl sub_8009DA4 - adds r2, r0, 0 - ldr r0, [sp, 0x80] - lsls r4, r0, 2 - mov r0, r10 - adds r0, 0x2C - adds r0, r4 - ldr r1, [r0] - adds r0, r2, 0 - bl sub_8009DA4 - adds r2, r0, 0 - str r5, [sp, 0x88] - cmp r2, 0 - bge _0806EC74 - adds r0, 0xFF -_0806EC74: - asrs r0, 8 - str r0, [sp, 0x8] - ldr r0, [sp, 0x7C] - adds r0, 0x20 - add r0, r8 - movs r1, 0 - ldrsh r3, [r0, r1] - ldr r2, [sp, 0x80] - cmp r2, 0 - bne _0806ECA0 - ldr r0, [sp, 0x7C] - adds r0, 0xC0 - ldrb r0, [r0] - cmp r0, 0x6 - bne _0806ECA0 - ldr r0, [r6] - movs r6, 0xBD - lsls r6, 1 - adds r1, r0, r6 - movs r0, 0x1 - strb r0, [r1] - adds r3, 0x1 -_0806ECA0: - ldr r0, [sp, 0x7C] - movs r2, 0x4 - ldrsh r1, [r0, r2] - ldr r0, _0806EDA8 - cmp r1, r0 - bne _0806ECAE - subs r3, 0x2 -_0806ECAE: - movs r0, 0xD1 - lsls r0, 1 - cmp r1, r0 - bne _0806ECB8 - adds r3, 0x2 -_0806ECB8: - ldr r0, _0806EDAC - cmp r1, r0 - bne _0806ECC0 - subs r3, 0x2 -_0806ECC0: - cmp r3, 0 - bge _0806ECC6 - movs r3, 0 -_0806ECC6: - cmp r3, 0x14 - ble _0806ECCC - movs r3, 0x14 -_0806ECCC: - ldr r5, _0806EDA4 - ldr r0, [r5] - ldr r6, _0806EDB4 - adds r0, r6 - strb r3, [r0] - ldr r2, [r5] - ldr r0, [sp, 0x7C] - adds r0, 0x16 - ldr r1, [sp, 0x80] - adds r0, r1 - ldrb r1, [r0] - adds r6, 0x3 - adds r2, r6 - strh r1, [r2] - ldrb r0, [r0] - lsls r0, 8 - ldr r2, _0806EDB8 - lsls r1, r3, 2 - adds r1, r2 - ldr r1, [r1] - bl sub_8009DA4 - adds r2, r0, 0 - ldr r0, [sp, 0x7C] - adds r0, 0x34 - adds r0, r4 - ldr r1, [r0] - adds r0, r2, 0 - bl sub_8009DA4 - cmp r0, 0 - bge _0806ED0E - adds r0, 0xFF -_0806ED0E: - asrs r0, 8 - str r0, [sp, 0xC] - movs r0, 0x64 - bl DungeonRandomCapped - str r0, [sp, 0x84] - ldr r0, [sp, 0x80] - cmp r0, 0 - bne _0806EDC8 - ldr r0, [sp, 0x70] - movs r1, 0x13 - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _0806ED4A - ldr r2, _0806EDBC - movs r3, 0 - ldrsh r1, [r2, r3] - ldr r0, [sp, 0x8] - adds r0, r1 - str r0, [sp, 0x8] - ldr r1, [r5] - movs r6, 0xB0 - lsls r6, 1 - adds r1, r6 - ldrb r0, [r2] - ldrb r2, [r1] - adds r0, r2 - strb r0, [r1] -_0806ED4A: - ldr r0, [sp, 0x70] - movs r1, 0x2B - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _0806ED74 - ldr r2, _0806EDC0 - movs r3, 0 - ldrsh r1, [r2, r3] - ldr r0, [sp, 0x8] - adds r0, r1 - str r0, [sp, 0x8] - ldr r1, [r5] - movs r6, 0xB0 - lsls r6, 1 - adds r1, r6 - ldrb r0, [r2] - ldrb r2, [r1] - adds r0, r2 - strb r0, [r1] -_0806ED74: - ldr r3, [sp, 0x78] - cmp r3, 0 - beq _0806EE4A - mov r0, r9 - movs r1, 0x1E - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _0806EE4A - ldr r2, _0806EDC4 - movs r6, 0 - ldrsh r1, [r2, r6] - ldr r0, [sp, 0xC] - adds r0, r1 - str r0, [sp, 0xC] - ldr r0, [r5] - movs r3, 0xB1 - lsls r3, 1 - adds r1, r0, r3 - ldrb r0, [r2] - ldrb r6, [r1] - adds r0, r6 - b _0806EE48 - .align 2, 0 -_0806EDA4: .4byte gDungeonGlobalData -_0806EDA8: .4byte 0x000001a1 -_0806EDAC: .4byte 0x000001a3 -_0806EDB0: .4byte gUnknown_80F504C -_0806EDB4: .4byte 0x0000013f -_0806EDB8: .4byte gUnknown_80F50A0 -_0806EDBC: .4byte gUnknown_810AC60 -_0806EDC0: .4byte gUnknown_810AC68 -_0806EDC4: .4byte gUnknown_810AC64 -_0806EDC8: - ldr r0, [sp, 0x78] - cmp r0, 0 - beq _0806EDF6 - mov r0, r9 - movs r1, 0x22 - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _0806EDF6 - ldr r2, _0806EEF8 - movs r3, 0 - ldrsh r1, [r2, r3] - ldr r0, [sp, 0xC] - adds r0, r1 - str r0, [sp, 0xC] - ldr r0, [r5] - ldr r6, _0806EEFC - adds r1, r0, r6 - ldrb r0, [r2] - ldrb r2, [r1] - adds r0, r2 - strb r0, [r1] -_0806EDF6: - ldr r0, [sp, 0x70] - movs r1, 0x21 - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _0806EE20 - ldr r2, _0806EF00 - movs r3, 0 - ldrsh r1, [r2, r3] - ldr r0, [sp, 0x8] - adds r0, r1 - str r0, [sp, 0x8] - ldr r0, _0806EF04 - ldr r0, [r0] - ldr r6, _0806EF08 - adds r1, r0, r6 - ldrb r0, [r2] - ldrb r2, [r1] - adds r0, r2 - strb r0, [r1] -_0806EE20: - ldr r0, [sp, 0x70] - movs r1, 0x2B - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _0806EE4A - ldr r2, _0806EF0C - movs r3, 0 - ldrsh r1, [r2, r3] - ldr r0, [sp, 0x8] - adds r0, r1 - str r0, [sp, 0x8] - ldr r0, _0806EF04 - ldr r0, [r0] - ldr r6, _0806EF08 - adds r1, r0, r6 - ldrb r0, [r2] - ldrb r2, [r1] - adds r0, r2 -_0806EE48: - strb r0, [r1] -_0806EE4A: - ldr r0, _0806EF04 - ldr r2, [r0] - movs r3, 0xA3 - lsls r3, 1 - adds r1, r2, r3 - add r0, sp, 0x8 - ldrh r0, [r0] - strh r0, [r1] - movs r6, 0xA4 - lsls r6, 1 - adds r1, r2, r6 - add r4, sp, 0xC - ldrh r0, [r4] - strh r0, [r1] - ldr r0, [sp, 0x8] - cmp r0, 0 - bge _0806EE70 - movs r0, 0 - str r0, [sp, 0x8] -_0806EE70: - ldr r1, _0806EF10 - ldr r0, [sp, 0x8] - cmp r0, r1 - ble _0806EE7C - ldr r0, _0806EF14 - str r0, [sp, 0x8] -_0806EE7C: - movs r3, 0xA8 - lsls r3, 1 - add r3, r10 - ldrh r2, [r3] - ldr r1, _0806EF18 - adds r0, r1, 0 - ands r0, r2 - strh r0, [r3] - movs r2, 0xA7 - lsls r2, 1 - add r2, r10 - ldrh r0, [r2] - ands r1, r0 - strh r1, [r2] - str r4, [sp] - ldr r0, [sp, 0x84] - str r0, [sp, 0x4] - ldr r0, [sp, 0x70] - mov r1, r9 - ldr r2, [sp, 0x74] - add r3, sp, 0x8 - bl sub_806E8B0 - add r5, sp, 0x10 - ldr r1, [sp, 0x8] - ldr r0, [sp, 0xC] - subs r1, r0 - adds r0, r5, 0 - bl sub_800A020 - add r4, sp, 0x18 - adds r0, r4, 0 - movs r1, 0x8 - bl sub_800A020 - adds r0, r5, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_800A3F0 - mov r1, r10 - ldrb r6, [r1, 0x6] - mov r8, r5 - adds r7, r4, 0 - cmp r6, 0 - bne _0806EF20 - ldrb r1, [r1, 0x9] - adds r0, r7, 0 - bl sub_800A020 - str r6, [sp, 0x20] - ldr r0, _0806EF1C - add r2, sp, 0x20 - str r0, [r2, 0x4] - adds r0, r7, 0 - adds r1, r7, 0 - bl sub_800A34C - mov r2, r10 - ldrb r0, [r2, 0x9] - lsls r0, 1 - b _0806EF60 - .align 2, 0 -_0806EEF8: .4byte gUnknown_810AC66 -_0806EEFC: .4byte 0x00000163 -_0806EF00: .4byte gUnknown_810AC62 -_0806EF04: .4byte gDungeonGlobalData -_0806EF08: .4byte 0x00000161 -_0806EF0C: .4byte gUnknown_810AC68 -_0806EF10: .4byte 0x000003e6 -_0806EF14: .4byte 0x000003e7 -_0806EF18: .4byte 0x0000feff -_0806EF1C: .4byte 0x0000aaaa -_0806EF20: - ldr r3, [sp, 0x88] - ldr r6, [sp, 0x80] - adds r0, r3, r6 - ldrb r0, [r0] - str r0, [sp, 0x28] - movs r0, 0x1 - str r0, [sp, 0x2C] - add r3, sp, 0x28 - add r0, sp, 0x2C - str r0, [sp] - ldr r0, [sp, 0x84] - str r0, [sp, 0x4] - ldr r0, [sp, 0x70] - mov r1, r9 - ldr r2, [sp, 0x74] - bl sub_806E8B0 - ldr r1, [sp, 0x28] - adds r0, r7, 0 - bl sub_800A020 - add r4, sp, 0x20 - adds r0, r4, 0 - movs r1, 0x3 - bl sub_800A020 - adds r0, r7, 0 - adds r1, r7, 0 - adds r2, r4, 0 - bl sub_800A3F0 - ldr r0, [sp, 0x28] -_0806EF60: - movs r1, 0x3 - bl __divsi3 - adds r6, r0, 0 - add r5, sp, 0x30 - adds r0, r5, 0 - mov r1, r8 - adds r2, r7, 0 - bl sub_800A6D0 - ldr r4, _0806F098 - ldr r0, [r4] - movs r1, 0xA5 - lsls r1, 1 - adds r0, r1 - movs r2, 0 - mov r8, r2 - strh r6, [r0] - adds r0, r5, 0 - bl sub_800A048 - ldr r1, [r4] - movs r3, 0xA6 - lsls r3, 1 - adds r1, r3 - strh r0, [r1] - ldr r0, [sp, 0x30] - ldr r1, [sp, 0x34] - str r0, [sp, 0x38] - str r1, [sp, 0x3C] - str r0, [sp, 0x48] - str r1, [sp, 0x4C] - add r6, sp, 0x38 - adds r0, r6, 0 - adds r1, r6, 0 - adds r2, r6, 0 - bl sub_800A34C - mov r0, r8 - str r0, [sp, 0x40] - ldr r0, _0806F09C - add r5, sp, 0x40 - str r0, [r5, 0x4] - adds r0, r6, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl sub_800A34C - adds r0, r5, 0 - movs r1, 0x2 - bl sub_800A020 - add r4, sp, 0x48 - adds r0, r4, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_800A34C - ldr r1, [sp, 0xC] - adds r0, r5, 0 - bl sub_800A020 - adds r0, r4, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_800A6F0 - adds r0, r5, 0 - movs r1, 0xA - bl sub_800A020 - adds r0, r4, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_800A6D0 - add r5, sp, 0x50 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl sub_800A6D0 - ldr r4, _0806F0A0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_800A2F0 - lsls r0, 24 - mov r8, r5 - cmp r0, 0 - beq _0806F01E - ldr r0, [r4] - ldr r1, [r4, 0x4] - str r0, [sp, 0x50] - str r1, [sp, 0x54] -_0806F01E: - ldr r4, _0806F0A4 - mov r0, r8 - adds r1, r4, 0 - bl sub_800A2F0 - lsls r0, 24 - cmp r0, 0 - beq _0806F036 - ldr r0, [r4] - ldr r1, [r4, 0x4] - str r0, [sp, 0x50] - str r1, [sp, 0x54] -_0806F036: - add r4, sp, 0x58 - ldr r1, [sp, 0xB0] - str r1, [sp] - adds r0, r4, 0 - ldr r1, [sp, 0x70] - mov r2, r9 - ldr r3, [sp, 0x74] - bl sub_806E100 - lsls r0, 24 - lsrs r5, r0, 24 - adds r7, r4, 0 - ldr r2, [sp, 0x74] - cmp r2, 0x2 - bne _0806F0BC - mov r0, r9 - bl GetFlashFireStatus - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0806F0BC - ldr r3, [sp, 0x7C] - movs r6, 0xA9 - lsls r6, 1 - adds r1, r3, r6 - ldrb r0, [r1] - cmp r0, 0 - bne _0806F0BC - ldr r0, [sp, 0x78] - cmp r0, 0 - beq _0806F118 - movs r0, 0x1 - strb r0, [r1] - ldr r0, _0806F0A8 - mov r1, r9 - movs r2, 0 - bl SetMessageArgument - cmp r4, 0x1 - bne _0806F0B0 - ldr r0, _0806F0AC - ldr r2, [r0] - ldr r0, [sp, 0x70] - mov r1, r9 - bl sub_80522F4 - b _0806F0BC - .align 2, 0 -_0806F098: .4byte gDungeonGlobalData -_0806F09C: .4byte 0x00000ccc -_0806F0A0: .4byte gUnknown_8106F24 -_0806F0A4: .4byte gUnknown_8106F04 -_0806F0A8: .4byte gUnknown_202DFE8 -_0806F0AC: .4byte gUnknown_80FAE00 -_0806F0B0: - ldr r0, _0806F15C - ldr r2, [r0] - ldr r0, [sp, 0x70] - mov r1, r9 - bl sub_80522F4 -_0806F0BC: - ldr r1, [sp, 0x78] - cmp r1, 0 - beq _0806F118 - ldr r2, [sp, 0x80] - cmp r2, 0 - bne _0806F0EE - ldr r0, [sp, 0x7C] - adds r0, 0xC4 - ldrb r4, [r0] - cmp r4, 0x1 - bne _0806F0EE - mov r0, r9 - bl sub_8041B74 - ldr r2, _0806F160 - adds r0, r7, 0 - adds r1, r7, 0 - bl sub_800A34C - ldr r0, _0806F164 - ldr r0, [r0] - movs r3, 0xB3 - lsls r3, 1 - adds r0, r3 - strb r4, [r0] -_0806F0EE: - ldr r6, [sp, 0x80] - cmp r6, 0x1 - bne _0806F118 - ldr r0, [sp, 0x7C] - adds r0, 0xC4 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0806F118 - mov r0, r9 - bl sub_8041B5C - ldr r2, _0806F160 - adds r0, r7, 0 - adds r1, r7, 0 - bl sub_800A34C - ldr r0, _0806F164 - ldr r0, [r0] - ldr r1, _0806F168 - adds r0, r1 - strb r6, [r0] -_0806F118: - mov r0, r9 - movs r1, 0xC - bl HasAbility - lsls r0, 24 - cmp r0, 0 - bne _0806F1F4 - mov r0, r9 - movs r1, 0x13 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - bne _0806F1F4 - mov r3, r10 - ldrb r0, [r3, 0x6] - ldr r4, [sp, 0xAC] - cmp r0, 0 - beq _0806F140 - movs r4, 0 -_0806F140: - mov r0, r10 - adds r0, 0xDC - ldrb r0, [r0] - cmp r0, 0x4 - bne _0806F170 - ldr r4, _0806F16C - ldr r0, _0806F164 - ldr r0, [r0] - movs r6, 0xB4 - lsls r6, 1 - adds r0, r6 - movs r1, 0x1 - strb r1, [r0] - b _0806F1DA - .align 2, 0 -_0806F15C: .4byte gUnknown_80FADD8 -_0806F160: .4byte gUnknown_8106F1C -_0806F164: .4byte gDungeonGlobalData -_0806F168: .4byte 0x00000167 -_0806F16C: .4byte 0x000003e7 -_0806F170: - ldr r0, [sp, 0x70] - movs r1, 0xC - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _0806F194 - ldr r0, _0806F2A4 - movs r1, 0 - ldrsh r0, [r0, r1] - adds r4, r0 - ldr r0, _0806F2A8 - ldr r0, [r0] - movs r2, 0xB2 - lsls r2, 1 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0] -_0806F194: - mov r0, r9 - movs r1, 0xD - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _0806F1B6 - ldr r0, _0806F2A4 - movs r3, 0 - ldrsh r0, [r0, r3] - adds r4, r0 - ldr r0, _0806F2A8 - ldr r0, [r0] - ldr r6, _0806F2AC - adds r1, r0, r6 - movs r0, 0x1 - strb r0, [r1] -_0806F1B6: - cmp r5, 0 - beq _0806F1DA - ldr r0, [sp, 0x70] - movs r1, 0x1 - bl HasIQSkill - lsls r0, 24 - cmp r0, 0 - beq _0806F1DA - ldr r0, _0806F2B0 - movs r1, 0 - ldrsh r4, [r0, r1] - ldr r0, _0806F2A8 - ldr r0, [r0] - ldr r2, _0806F2B4 - adds r1, r0, r2 - movs r0, 0x1 - strb r0, [r1] -_0806F1DA: - movs r0, 0x64 - bl DungeonRandomCapped - cmp r0, r4 - bge _0806F1F4 - ldr r2, _0806F2B8 - adds r0, r7, 0 - adds r1, r7, 0 - bl sub_800A34C - movs r0, 0x1 - ldr r3, [sp, 0xB0] - strb r0, [r3, 0xD] -_0806F1F4: - mov r0, r8 - bl sub_800A048 - ldr r5, _0806F2A8 - ldr r1, [r5] - movs r6, 0xAA - lsls r6, 1 - adds r1, r6 - str r0, [r1] - mov r0, r8 - mov r1, r8 - adds r2, r7, 0 - bl sub_800A34C - ldr r0, [r5] - movs r1, 0xAE - lsls r1, 1 - adds r0, r1 - ldr r2, [sp, 0xB4] - str r2, [r0] - add r4, sp, 0x60 - adds r0, r4, 0 - adds r1, r2, 0 - bl sub_800A088 - mov r0, r8 - mov r1, r8 - adds r2, r4, 0 - bl sub_800A34C - mov r0, r8 - bl sub_800A048 - ldr r1, [r5] - movs r3, 0xA8 - lsls r3, 1 - adds r1, r3 - str r0, [r1] - movs r0, 0x80 - lsls r0, 7 - bl DungeonRandomCapped - movs r6, 0 - str r6, [sp, 0x58] - movs r1, 0xE0 - lsls r1, 8 - adds r0, r1 - str r0, [r7, 0x4] - mov r0, r8 - mov r1, r8 - adds r2, r7, 0 - bl sub_800A34C - add r4, sp, 0x68 - adds r0, r4, 0 - movs r1, 0x64 - bl sub_800A020 - adds r0, r7, 0 - adds r1, r4, 0 - adds r2, r7, 0 - bl sub_800A34C - adds r0, r7, 0 - bl sub_800A048 - ldr r1, [r5] - movs r2, 0xAC - lsls r2, 1 - adds r1, r2 - str r0, [r1] - mov r0, r8 - bl sub_800A048 - ldr r3, [sp, 0xB0] - str r0, [r3] - str r6, [r3, 0x4] - cmp r0, 0 - bne _0806F294 - strb r0, [r3, 0xD] -_0806F294: - add sp, 0x8C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806F2A4: .4byte gUnknown_80F4DAE -_0806F2A8: .4byte gDungeonGlobalData -_0806F2AC: .4byte 0x00000165 -_0806F2B0: .4byte gUnknown_80F4DB0 -_0806F2B4: .4byte 0x00000169 -_0806F2B8: .4byte gUnknown_8106F14 - thumb_func_end sub_806EAF4 - - thumb_func_start sub_806F2BC -sub_806F2BC: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - adds r5, r0, 0 - mov r12, r1 - ldr r7, [sp, 0x2C] - lsls r2, 24 - lsrs r4, r2, 24 - adds r6, r3, 0 - cmp r6, 0 - bgt _0806F2D6 - movs r6, 0x1 -_0806F2D6: - ldr r0, _0806F320 - cmp r6, r0 - ble _0806F2DE - adds r6, r0, 0 -_0806F2DE: - movs r0, 0 - mov r8, r0 - strb r4, [r7, 0xC] - str r7, [sp] - add r0, sp, 0x4 - adds r1, r5, 0 - mov r2, r12 - adds r3, r4, 0 - bl sub_806E100 - add r4, sp, 0xC - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_800A020 - adds r0, r4, 0 - adds r1, r4, 0 - add r2, sp, 0x4 - bl sub_800A34C - adds r0, r4, 0 - bl sub_800A048 - str r0, [r7] - mov r0, r8 - str r0, [r7, 0x4] - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806F320: .4byte 0x000003e7 - thumb_func_end sub_806F2BC - - thumb_func_start sub_806F324 -sub_806F324: - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x94 - mov r8, r0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r4, r3, 16 - asrs r4, 16 - add r0, sp, 0x10 - bl sub_80457DC - add r2, sp, 0x84 - str r5, [sp, 0x84] - movs r0, 0x2 - str r0, [r2, 0x8] - movs r0, 0 - strb r0, [r2, 0xC] - str r6, [r2, 0x4] - strb r0, [r2, 0xD] - strb r0, [r2, 0xE] - strb r0, [r2, 0xF] - str r0, [sp] - str r4, [sp, 0x4] - str r0, [sp, 0x8] - str r0, [sp, 0xC] - add r0, sp, 0x10 - mov r1, r8 - movs r3, 0 - bl sub_806D010 - add sp, 0x94 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_806F324 - - thumb_func_start sub_806F370 -sub_806F370: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - mov r10, r0 - adds r7, r1, 0 - mov r9, r3 - ldr r0, [sp, 0x50] - ldr r1, [sp, 0x54] - ldr r3, [sp, 0x58] - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - asrs r1, 16 - mov r8, r1 - adds r5, r2, 0 - movs r0, 0x2 - str r0, [sp, 0x18] - str r3, [sp, 0x14] - add r0, sp, 0x10 - movs r1, 0 - strb r4, [r0, 0xC] - strb r1, [r0, 0xD] - strb r1, [r0, 0xE] - cmp r4, 0 - beq _0806F3FC - ldr r1, [r7, 0x70] - movs r2, 0 - lsls r0, r4, 3 - mov r3, sp - adds r3, 0x20 - str r3, [sp, 0x28] - ldr r6, _0806F408 - mov r12, r6 - adds r1, 0x5C - adds r0, r4 - lsls r3, r0, 2 - ldr r4, [sp, 0x28] -_0806F3C0: - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r3 - add r0, r12 - movs r6, 0 - ldrsh r0, [r0, r6] - stm r4!, {r0} - adds r2, 0x1 - cmp r2, 0x1 - ble _0806F3C0 - adds r0, r7, 0 - movs r1, 0x35 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0806F3FC - ldr r2, _0806F40C - ldr r1, [sp, 0x28] - ldr r0, [r1, 0x4] - lsls r0, 2 - ldr r1, [sp, 0x20] - lsls r1, 4 - adds r0, r1 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x3 - beq _0806F3FC - movs r5, 0 -_0806F3FC: - str r5, [sp, 0x10] - cmp r5, 0 - bne _0806F410 - add r1, sp, 0x10 - movs r0, 0x1 - b _0806F414 - .align 2, 0 -_0806F408: .4byte gTypeEffectivenessChart -_0806F40C: .4byte gUnknown_80F54B4 -_0806F410: - add r1, sp, 0x10 - movs r0, 0 -_0806F414: - strb r0, [r1, 0xF] - mov r3, r9 - str r3, [sp] - mov r6, r8 - str r6, [sp, 0x4] - ldr r0, [sp, 0x5C] - str r0, [sp, 0x8] - ldr r0, [sp, 0x60] - str r0, [sp, 0xC] - mov r0, r10 - adds r1, r7, 0 - add r2, sp, 0x10 - movs r3, 0 - bl sub_806D010 - ldr r0, [sp, 0x4C] - cmp r0, 0 - beq _0806F440 - add r0, sp, 0x10 - ldrb r0, [r0, 0xF] - ldr r1, [sp, 0x4C] - strb r0, [r1] -_0806F440: - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_806F370 - - thumb_func_start SetShopkeeperAggression -SetShopkeeperAggression: - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, [r1, 0x70] - adds r6, r4, 0 - ldrb r0, [r4, 0x8] - cmp r0, 0 - beq _0806F47A - adds r0, r5, 0 - bl GetEntityType - cmp r0, 0x1 - bne _0806F47A - ldr r0, [r5, 0x70] - ldrb r0, [r0, 0x6] - cmp r0, 0 - beq _0806F476 - movs r0, 0x2 - strb r0, [r4, 0x8] - b _0806F47A -_0806F476: - movs r0, 0x3 - strb r0, [r6, 0x8] -_0806F47A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end SetShopkeeperAggression - - thumb_func_start sub_806F480 -sub_806F480: - push {lr} - lsls r1, 24 - lsrs r1, 24 - ldr r2, [r0, 0x70] - adds r3, r2, 0 - ldrb r0, [r2, 0x8] - cmp r0, 0 - beq _0806F49E - cmp r1, 0 - beq _0806F49A - movs r0, 0x2 - strb r0, [r2, 0x8] - b _0806F49E -_0806F49A: - movs r0, 0x3 - strb r0, [r3, 0x8] -_0806F49E: - pop {r0} - bx r0 - thumb_func_end sub_806F480 - - thumb_func_start sub_806F4A4 -sub_806F4A4: - push {r4-r6,lr} - lsls r1, 24 - lsrs r4, r1, 24 - ldr r5, [r0, 0x70] - movs r1, 0xE - bl HasType - lsls r0, 24 - cmp r0, 0 - beq _0806F4CE - cmp r4, 0x1 - beq _0806F4C0 - cmp r4, 0x7 - bne _0806F4CE -_0806F4C0: - adds r0, r5, 0 - adds r0, 0xF5 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F4CE -_0806F4CA: - movs r0, 0 - b _0806F4F6 -_0806F4CE: - movs r2, 0 - lsls r0, r4, 3 - ldr r6, _0806F4FC - adds r3, r5, 0 - adds r3, 0x5C - adds r0, r4 - lsls r1, r0, 2 -_0806F4DC: - adds r0, r3, r2 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - adds r0, r6 - movs r4, 0 - ldrsh r0, [r0, r4] - cmp r0, 0 - beq _0806F4CA - adds r2, 0x1 - cmp r2, 0x1 - ble _0806F4DC - movs r0, 0x1 -_0806F4F6: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0806F4FC: .4byte gTypeEffectivenessChart - thumb_func_end sub_806F4A4 - - thumb_func_start sub_806F500 -sub_806F500: - ldr r0, _0806F5F4 - ldr r0, [r0] - mov r12, r0 - movs r0, 0x9A - lsls r0, 1 - add r0, r12 - movs r1, 0 - strb r1, [r0] - str r1, [r0, 0x4] - strb r1, [r0, 0x8] - strb r1, [r0, 0x9] - movs r2, 0xA - strb r2, [r0, 0xA] - strb r2, [r0, 0xB] - movs r2, 0 - movs r3, 0x1 - strh r3, [r0, 0xC] - strh r3, [r0, 0xE] - strh r1, [r0, 0x10] - strh r1, [r0, 0x14] - strh r1, [r0, 0x12] - strh r1, [r0, 0x16] - strh r1, [r0, 0x18] - str r1, [r0, 0x1C] - str r1, [r0, 0x24] - str r1, [r0, 0x28] - movs r0, 0xB0 - lsls r0, 1 - add r0, r12 - strb r2, [r0] - ldr r0, _0806F5F8 - add r0, r12 - strb r2, [r0] - movs r0, 0xB1 - lsls r0, 1 - add r0, r12 - strb r2, [r0] - ldr r0, _0806F5FC - add r0, r12 - strb r2, [r0] - movs r0, 0xB2 - lsls r0, 1 - add r0, r12 - strb r2, [r0] - ldr r0, _0806F600 - add r0, r12 - strb r2, [r0] - movs r0, 0xB3 - lsls r0, 1 - add r0, r12 - strb r2, [r0] - ldr r0, _0806F604 - add r0, r12 - strb r2, [r0] - movs r0, 0xB4 - lsls r0, 1 - add r0, r12 - strb r2, [r0] - ldr r0, _0806F608 - add r0, r12 - strb r2, [r0] - movs r0, 0xB5 - lsls r0, 1 - add r0, r12 - strb r2, [r0] - movs r0, 0xB6 - lsls r0, 1 - add r0, r12 - strb r2, [r0] - ldr r0, _0806F60C - add r0, r12 - strb r2, [r0] - ldr r0, _0806F610 - add r0, r12 - strb r2, [r0] - movs r0, 0xB7 - lsls r0, 1 - add r0, r12 - strb r2, [r0] - ldr r0, _0806F614 - add r0, r12 - strb r2, [r0] - movs r0, 0xB8 - lsls r0, 1 - add r0, r12 - strb r2, [r0] - ldr r0, _0806F618 - add r0, r12 - strb r2, [r0] - movs r0, 0xB9 - lsls r0, 1 - add r0, r12 - strb r2, [r0] - ldr r0, _0806F61C - add r0, r12 - strb r2, [r0] - movs r0, 0xBA - lsls r0, 1 - add r0, r12 - strb r2, [r0] - ldr r0, _0806F620 - add r0, r12 - strb r2, [r0] - movs r0, 0xBB - lsls r0, 1 - add r0, r12 - strb r2, [r0] - ldr r0, _0806F624 - add r0, r12 - strb r2, [r0] - movs r0, 0xBC - lsls r0, 1 - add r0, r12 - strb r2, [r0] - ldr r0, _0806F628 - add r0, r12 - strb r2, [r0] - movs r0, 0xBD - lsls r0, 1 - add r0, r12 - strb r2, [r0] - bx lr - .align 2, 0 -_0806F5F4: .4byte gDungeonGlobalData -_0806F5F8: .4byte 0x00000161 -_0806F5FC: .4byte 0x00000163 -_0806F600: .4byte 0x00000165 -_0806F604: .4byte 0x00000167 -_0806F608: .4byte 0x00000169 -_0806F60C: .4byte 0x0000016b -_0806F610: .4byte 0x0000016d -_0806F614: .4byte 0x0000016f -_0806F618: .4byte 0x00000171 -_0806F61C: .4byte 0x00000173 -_0806F620: .4byte 0x00000175 -_0806F624: .4byte 0x00000177 -_0806F628: .4byte 0x00000179 - thumb_func_end sub_806F500 - - thumb_func_start sub_806F62C -sub_806F62C: - ldr r1, _0806F638 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bx lr - .align 2, 0 -_0806F638: .4byte gUnknown_8106F7C - thumb_func_end sub_806F62C - - thumb_func_start sub_806F63C -sub_806F63C: - push {lr} - ldr r1, _0806F658 - ldr r1, [r1] - ldr r2, _0806F65C - adds r1, r2 - ldr r1, [r1, 0x10] - cmp r1, r0 - bne _0806F652 - adds r0, r1, 0 - bl sub_803F508 -_0806F652: - pop {r0} - bx r0 - .align 2, 0 -_0806F658: .4byte gDungeonGlobalData -_0806F65C: .4byte 0x000181e8 - thumb_func_end sub_806F63C - - thumb_func_start sub_806F660 -sub_806F660: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - mov r8, r1 - ldr r0, [r6, 0x70] - mov r10, r0 - ldr r4, [r1, 0x70] - movs r1, 0x1 - negs r1, r1 - mov r9, r1 - movs r2, 0x4 - ldrsh r0, [r4, r2] - bl GetPokemonSize - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0806F6C0 - ldr r3, [r0] - ldr r1, _0806F6C4 - adds r0, r3, r1 - ldrh r2, [r0] - subs r0, r2, 0x4 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _0806F702 - lsls r0, r2, 16 - asrs r1, r0, 16 - cmp r1, 0x9 - beq _0806F702 - cmp r1, 0xF - beq _0806F702 - adds r0, r2, 0 - subs r0, 0x2C - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4 - bhi _0806F6CC - ldr r2, _0806F6C8 - adds r0, r3, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F702 - b _0806F8FC - .align 2, 0 -_0806F6C0: .4byte gDungeonGlobalData -_0806F6C4: .4byte 0x00003a14 -_0806F6C8: .4byte 0x0000065c -_0806F6CC: - cmp r1, 0x31 - bne _0806F6F0 - ldr r1, _0806F6EC - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F6DC - b _0806F8FC -_0806F6DC: - movs r0, 0xCF - lsls r0, 1 - bl sub_8097900 - lsls r0, 24 - cmp r0, 0 - bne _0806F702 - b _0806F8FC - .align 2, 0 -_0806F6EC: .4byte 0x00000659 -_0806F6F0: - ldr r2, _0806F834 - adds r0, r3, r2 - ldrb r0, [r0] - bl GetRecruitable - lsls r0, 24 - cmp r0, 0 - bne _0806F702 - b _0806F8FC -_0806F702: - ldr r0, _0806F838 - ldr r0, [r0] - ldr r3, _0806F83C - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0806F712 - b _0806F8FC -_0806F712: - ldrh r1, [r4, 0x2] - adds r0, r1, 0 - subs r0, 0x90 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bls _0806F766 - lsls r0, r1, 16 - asrs r1, r0, 16 - ldr r0, _0806F840 - cmp r1, r0 - beq _0806F766 - subs r0, 0x1 - cmp r1, r0 - beq _0806F766 - adds r0, 0x2 - cmp r1, r0 - beq _0806F766 - adds r0, 0x8A - cmp r1, r0 - beq _0806F766 - adds r0, 0x1 - cmp r1, r0 - beq _0806F766 - adds r0, 0x4 - cmp r1, r0 - beq _0806F766 - subs r0, 0x1 - cmp r1, r0 - beq _0806F766 - adds r0, 0x2 - cmp r1, r0 - beq _0806F766 - subs r0, 0x9 - cmp r1, r0 - beq _0806F766 - adds r0, 0x1 - cmp r1, r0 - beq _0806F766 - adds r0, 0x1 - cmp r1, r0 - bne _0806F776 -_0806F766: - movs r1, 0x2 - ldrsh r0, [r4, r1] - bl HasRecruitedMon - lsls r0, 24 - cmp r0, 0 - beq _0806F776 - b _0806F8FC -_0806F776: - movs r2, 0x2 - ldrsh r0, [r4, r2] - bl sub_806F9BC - lsls r0, 24 - cmp r0, 0 - bne _0806F786 - b _0806F8FC -_0806F786: - movs r3, 0x4 - ldrsh r1, [r6, r3] - mov r2, r8 - movs r3, 0x4 - ldrsh r0, [r2, r3] - subs r1, r0 - cmp r1, 0 - bge _0806F798 - negs r1, r1 -_0806F798: - cmp r1, 0x1 - ble _0806F79E - b _0806F8FC -_0806F79E: - movs r0, 0x6 - ldrsh r1, [r6, r0] - mov r2, r8 - movs r3, 0x6 - ldrsh r0, [r2, r3] - subs r1, r0 - cmp r1, 0 - bge _0806F7B0 - negs r1, r1 -_0806F7B0: - cmp r1, 0x1 - ble _0806F7B6 - b _0806F8FC -_0806F7B6: - adds r0, r4, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x4A - bne _0806F7C2 - b _0806F8FC -_0806F7C2: - adds r0, r4, 0 - adds r0, 0xA4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0806F7CE - b _0806F8FC -_0806F7CE: - mov r0, r8 - adds r1, r6, 0 - bl CanSee - lsls r0, 24 - cmp r0, 0 - bne _0806F7DE - b _0806F8FC -_0806F7DE: - bl sub_806F910 - movs r0, 0xFA - lsls r0, 2 - bl DungeonRandomCapped - adds r7, r0, 0 - movs r1, 0x2 - ldrsh r0, [r4, r1] - bl GetBaseRecruit - lsls r0, 16 - asrs r4, r0, 16 - ldr r0, _0806F844 - cmp r4, r0 - bne _0806F800 - b _0806F8FC -_0806F800: - adds r0, r6, 0 - movs r1, 0x2E - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _0806F816 - ldr r0, _0806F848 - movs r2, 0 - ldrsh r0, [r0, r2] - adds r4, r0 -_0806F816: - ldr r0, _0806F84C - mov r3, r10 - ldrb r1, [r3, 0x9] - lsls r1, 1 - adds r1, r0 - movs r2, 0 - ldrsh r0, [r1, r2] - adds r4, r0 - cmp r7, r4 - bge _0806F8FC - movs r4, 0 - movs r0, 0x6 - subs r3, r0, r5 - ldr r7, _0806F850 - b _0806F856 - .align 2, 0 -_0806F834: .4byte 0x00000644 -_0806F838: .4byte gDungeonGlobalData -_0806F83C: .4byte 0x0000065d -_0806F840: .4byte 0x0000010d -_0806F844: .4byte 0xfffffc19 -_0806F848: .4byte gUnknown_80F5008 -_0806F84C: .4byte gUnknown_80F5700 -_0806F850: .4byte gUnknown_202EE70 -_0806F854: - adds r4, 0x1 -_0806F856: - cmp r4, r3 - bgt _0806F878 - movs r2, 0 - cmp r2, r5 - bge _0806F872 - adds r1, r4, r7 - b _0806F86C -_0806F864: - adds r1, 0x1 - adds r2, 0x1 - cmp r2, r5 - bge _0806F872 -_0806F86C: - ldrb r0, [r1] - cmp r0, 0 - beq _0806F864 -_0806F872: - cmp r2, r5 - bne _0806F854 - mov r9, r4 -_0806F878: - movs r0, 0x1 - negs r0, r0 - cmp r9, r0 - beq _0806F8F4 - movs r4, 0 - ldr r3, _0806F8BC - ldr r0, [r3] - ldr r2, _0806F8C0 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806F8B4 - adds r7, r3, 0 - adds r5, r2, 0 - movs r2, 0 - movs r3, 0x1 -_0806F89C: - adds r2, 0x64 - adds r4, 0x1 - cmp r4, 0x3 - bgt _0806F8B4 - ldr r0, [r7] - adds r0, r2, r0 - adds r0, r5 - ldrb r1, [r0] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0806F89C -_0806F8B4: - cmp r4, 0x4 - beq _0806F8F4 - movs r4, 0 - b _0806F8C6 - .align 2, 0 -_0806F8BC: .4byte gRecruitedPokemonRef -_0806F8C0: .4byte 0x00008df8 -_0806F8C4: - adds r4, 0x1 -_0806F8C6: - cmp r4, 0x3 - bgt _0806F8E2 - ldr r0, _0806F8EC - ldr r0, [r0] - lsls r1, r4, 2 - ldr r3, _0806F8F0 - adds r0, r3 - adds r0, r1 - ldr r0, [r0] - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0806F8C4 -_0806F8E2: - cmp r4, 0x4 - beq _0806F8F4 - movs r0, 0x1 - b _0806F8FE - .align 2, 0 -_0806F8EC: .4byte gDungeonGlobalData -_0806F8F0: .4byte 0x0001357c -_0806F8F4: - adds r0, r6, 0 - mov r1, r8 - bl nullsub_96 -_0806F8FC: - movs r0, 0 -_0806F8FE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_806F660 - - thumb_func_start nullsub_96 -nullsub_96: - bx lr - thumb_func_end nullsub_96 - - thumb_func_start sub_806F910 -sub_806F910: - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r5, 0 - movs r6, 0 - movs r7, 0x40 -_0806F91C: - ldr r0, _0806F9AC - ldr r0, [r0] - lsls r1, r6, 2 - ldr r2, _0806F9B0 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - adds r1, r6, 0x1 - mov r8, r1 - cmp r0, 0 - beq _0806F98A - ldr r0, [r4, 0x70] - movs r2, 0x4 - ldrsh r0, [r0, r2] - bl GetPokemonSize - lsls r0, 24 - lsrs r1, r0, 24 - adds r0, r4, 0 - adds r0, 0x68 - strh r7, [r0] - ldr r0, [r4, 0x70] - ldr r2, _0806F9B4 - adds r0, r2 - strb r6, [r0] - ldr r0, [r4, 0x70] - adds r2, 0x1 - adds r0, r2 - strb r1, [r0] - cmp r1, 0 - beq _0806F978 - ldr r3, _0806F9B8 - movs r2, 0x1 -_0806F966: - cmp r5, 0x5 - bgt _0806F972 - adds r0, r5, r3 - strb r2, [r0] - adds r7, 0x10 - adds r5, 0x1 -_0806F972: - subs r1, 0x1 - cmp r1, 0 - bne _0806F966 -_0806F978: - adds r0, r4, 0 - bl sub_806CEBC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_806CCB4 -_0806F98A: - mov r6, r8 - cmp r6, 0x3 - ble _0806F91C - cmp r5, 0x5 - bgt _0806F9A2 - ldr r2, _0806F9B8 - movs r1, 0 -_0806F998: - adds r0, r5, r2 - strb r1, [r0] - adds r5, 0x1 - cmp r5, 0x5 - ble _0806F998 -_0806F9A2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806F9AC: .4byte gDungeonGlobalData -_0806F9B0: .4byte 0x0001357c -_0806F9B4: .4byte 0x00000167 -_0806F9B8: .4byte gUnknown_202EE70 - thumb_func_end sub_806F910 - - thumb_func_start sub_806F9BC -sub_806F9BC: - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 16 - asrs r4, r0, 16 - ldr r5, _0806FA40 - ldr r0, [r5] - movs r1, 0xCB - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0806FA3C - adds r0, r4, 0 - bl sub_808529C - lsls r0, 24 - cmp r0, 0 - beq _0806FA3C - cmp r4, 0x97 - bne _0806F9F2 - ldr r0, [r5] - movs r1, 0xCF - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0806FA3C -_0806F9F2: - movs r0, 0xCC - lsls r0, 1 - cmp r4, r0 - beq _0806FA3C - ldr r0, _0806FA44 - cmp r4, r0 - beq _0806FA3C - ldr r0, _0806FA48 - cmp r4, r0 - beq _0806FA3C - movs r0, 0xD1 - lsls r0, 1 - cmp r4, r0 - beq _0806FA3C - ldr r0, _0806FA4C - cmp r4, r0 - beq _0806FA3C - adds r0, r4, 0 - bl GetUnk12 - lsls r0, 24 - cmp r0, 0 - bne _0806FA50 - adds r0, r4, 0 - bl GetFriendArea - lsls r0, 24 - lsrs r0, 24 - mov r1, sp - movs r2, 0 - movs r3, 0 - bl sub_8092638 - mov r0, sp - ldrb r0, [r0, 0x4] - cmp r0, 0 - bne _0806FA50 -_0806FA3C: - movs r0, 0 - b _0806FA52 - .align 2, 0 -_0806FA40: .4byte gDungeonGlobalData -_0806FA44: .4byte 0x00000199 -_0806FA48: .4byte 0x000001a1 -_0806FA4C: .4byte 0x000001a3 -_0806FA50: - movs r0, 0x1 -_0806FA52: - add sp, 0xC - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806F9BC - - thumb_func_start sub_806FA5C -sub_806FA5C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - mov r8, r0 - adds r5, r1, 0 - adds r6, r2, 0 - adds r0, r5, 0x4 - mov r1, r8 - adds r1, 0x4 - bl CalculateFacingDir - adds r4, r0, 0 - movs r0, 0 - mov r10, r0 - movs r1, 0 - ldrsh r0, [r6, r1] - bl GetFriendArea - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - adds r0, r5, 0 - adds r0, 0x22 - mov r2, r10 - strb r2, [r0] - mov r0, r8 - adds r1, r5, 0 - bl sub_807A0CC - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_806CE68 - ldr r0, _0806FAD4 - movs r3, 0 - ldrsh r1, [r6, r3] - bl CopyCyanSpeciesNametoBuffer - ldr r0, _0806FAD8 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl sub_8052B8C - cmp r0, 0 - bne _0806FAE4 - movs r4, 0 - ldrsh r1, [r6, r4] - ldr r0, _0806FADC - cmp r1, r0 - beq _0806FB28 - ldr r0, _0806FAE0 - ldr r1, [r0] - mov r0, r8 - bl SendMessage - b _0806FB28 - .align 2, 0 -_0806FAD4: .4byte gAvailablePokemonNames -_0806FAD8: .4byte gUnknown_80F9FE8 -_0806FADC: .4byte 0x0000019d -_0806FAE0: .4byte gUnknown_80FA004 -_0806FAE4: - movs r7, 0 - ldr r3, _0806FB2C - ldr r0, [r3] - ldr r2, _0806FB30 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806FB1A - mov r12, r3 - adds r4, r2, 0 - movs r2, 0 - movs r3, 0x1 -_0806FB00: - adds r2, 0x64 - adds r7, 0x1 - cmp r7, 0x3 - bgt _0806FB1A - mov r1, r12 - ldr r0, [r1] - adds r0, r2, r0 - adds r0, r4 - ldrb r1, [r0] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0806FB00 -_0806FB1A: - cmp r7, 0x4 - bne _0806FB38 - ldr r0, _0806FB34 - ldr r1, [r0] - mov r0, r8 - bl SendMessage -_0806FB28: - movs r0, 0 - b _0806FCF0 - .align 2, 0 -_0806FB2C: .4byte gRecruitedPokemonRef -_0806FB30: .4byte 0x00008df8 -_0806FB34: .4byte gUnknown_80FA030 -_0806FB38: - mov r0, r9 - bl GetFriendAreaStatus - lsls r0, 24 - cmp r0, 0 - bne _0806FB4E - mov r0, r9 - bl UnlockFriendArea - movs r2, 0x1 - mov r10, r2 -_0806FB4E: - movs r1, 0xFA - lsls r1, 1 - adds r0, r5, 0 - mov r2, r8 - bl sub_8068FE0 - ldr r1, _0806FC40 - movs r0, 0x64 - muls r0, r7 - ldr r3, _0806FC44 - adds r0, r3 - ldr r1, [r1] - adds r5, r1, r0 - movs r4, 0 - movs r0, 0x3 - strh r0, [r5] - strb r4, [r5, 0x2] - ldrh r0, [r6, 0xE] - strb r0, [r5, 0x3] - movs r0, 0x1 - strh r0, [r5, 0x8] - adds r0, r5, 0 - adds r0, 0x4C - movs r1, 0 - bl SetDefaultIQSkills - ldr r0, [r6, 0x44] - str r0, [r5, 0x54] - adds r0, r5, 0 - adds r0, 0x50 - strb r4, [r0] - ldr r0, _0806FC48 - strh r0, [r5, 0xA] - strh r7, [r5, 0xC] - ldrh r0, [r6] - strh r0, [r5, 0xE] - ldr r0, _0806FC4C - ldr r0, [r0] - ldr r4, _0806FC50 - adds r0, r4 - ldr r0, [r0] - str r0, [r5, 0x4] - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x10] - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x12] - ldr r0, [r6, 0x14] - str r0, [r5, 0x44] - ldr r0, [r6, 0x18] - str r0, [r5, 0x48] - movs r2, 0 - adds r7, r6, 0 - adds r7, 0x20 - adds r4, r6, 0 - adds r4, 0xA - adds r3, r6, 0 - adds r3, 0xC - adds r1, r5, 0 - adds r1, 0x14 -_0806FBC4: - adds r0, r4, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, r2 - ldrb r0, [r0] - strb r0, [r1, 0x2] - adds r1, 0x1 - adds r2, 0x1 - cmp r2, 0x1 - ble _0806FBC4 - ldr r0, [r6, 0x10] - str r0, [r5, 0x18] - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r7, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r0, [r6, 0x1C] - str r0, [r5, 0x40] - adds r4, r5, 0 - adds r4, 0x58 - movs r1, 0 - ldrsh r0, [r6, r1] - bl GetMonSpecies - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0xA - bl BoundedCopyStringtoBuffer - bl sub_8097848 - movs r2, 0 - ldrsh r0, [r6, r2] - movs r3, 0x4 - ldrsh r1, [r6, r3] - movs r3, 0x6 - ldrsh r2, [r6, r3] - add r3, sp, 0xC - str r3, [sp] - movs r3, 0 - str r3, [sp, 0x4] - movs r3, 0x1 - str r3, [sp, 0x8] - adds r3, r5, 0 - bl sub_806B8CC - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0 - bne _0806FC58 - ldr r0, _0806FC54 - ldr r1, [r0] - mov r0, r8 - bl SendMessage - strh r7, [r5] - b _0806FCEE - .align 2, 0 -_0806FC40: .4byte gRecruitedPokemonRef -_0806FC44: .4byte 0x00008df8 -_0806FC48: .4byte 0x0000ffff -_0806FC4C: .4byte gDungeonGlobalData -_0806FC50: .4byte 0x00000644 -_0806FC54: .4byte gUnknown_80FA058 -_0806FC58: - bl sub_8083D88 - movs r0, 0xA0 - movs r1, 0x46 - bl sub_803E708 - ldr r0, _0806FC78 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl sub_8052B8C - cmp r0, 0x1 - bne _0806FC94 - b _0806FC88 - .align 2, 0 -_0806FC78: .4byte gUnknown_80FA090 -_0806FC7C: - ldr r0, _0806FD00 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl PrintFieldMessage -_0806FC88: - adds r0, r4, 0 - bl sub_805FBE8 - lsls r0, 24 - cmp r0, 0 - beq _0806FC7C -_0806FC94: - ldr r4, _0806FD04 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl sub_808D9DC - ldr r0, _0806FD08 - ldr r1, [r0] - mov r0, r8 - bl SendMessage - mov r0, r10 - cmp r0, 0 - beq _0806FCD8 - bl xxx_call_GetLeaderEntity - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _0806FD0C - mov r1, r9 - bl sub_8092558 - movs r0, 0xCE - bl PlaySound - ldr r0, _0806FD10 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl PrintFieldMessage -_0806FCD8: - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0x97 - bne _0806FCEE - ldr r2, _0806FD14 - ldr r1, [r2] - movs r0, 0x1 - strb r0, [r1, 0x4] - ldr r1, [r2] - movs r0, 0x3 - strb r0, [r1, 0x11] -_0806FCEE: - movs r0, 0x1 -_0806FCF0: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0806FD00: .4byte gUnknown_80FA0C8 -_0806FD04: .4byte gAvailablePokemonNames -_0806FD08: .4byte gUnknown_80FA0F0 -_0806FD0C: .4byte gUnknown_202E628 -_0806FD10: .4byte gUnknown_80FA120 -_0806FD14: .4byte gDungeonGlobalData - thumb_func_end sub_806FA5C - - thumb_func_start sub_806FD18 -sub_806FD18: - push {r4-r7,lr} - ldr r4, [r0, 0x70] - movs r6, 0x1 - negs r6, r6 - movs r1, 0x4 - ldrsh r0, [r4, r1] - bl GetPokemonSize - lsls r0, 24 - lsrs r5, r0, 24 - movs r2, 0x2 - ldrsh r0, [r4, r2] - bl sub_806F9BC - lsls r0, 24 - cmp r0, 0 - beq _0806FDEC - bl sub_806F910 - movs r4, 0 - movs r0, 0x6 - subs r3, r0, r5 - ldr r7, _0806FD48 - b _0806FD4E - .align 2, 0 -_0806FD48: .4byte gUnknown_202EE70 -_0806FD4C: - adds r4, 0x1 -_0806FD4E: - cmp r4, r3 - bgt _0806FD70 - movs r2, 0 - cmp r2, r5 - bge _0806FD6A - adds r1, r4, r7 - b _0806FD64 -_0806FD5C: - adds r1, 0x1 - adds r2, 0x1 - cmp r2, r5 - bge _0806FD6A -_0806FD64: - ldrb r0, [r1] - cmp r0, 0 - beq _0806FD5C -_0806FD6A: - cmp r2, r5 - bne _0806FD4C - adds r6, r4, 0 -_0806FD70: - movs r0, 0x1 - negs r0, r0 - cmp r6, r0 - beq _0806FDEC - movs r4, 0 - ldr r3, _0806FDB4 - ldr r0, [r3] - ldr r2, _0806FDB8 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806FDAC - adds r6, r3, 0 - adds r5, r2, 0 - movs r2, 0 - movs r3, 0x1 -_0806FD94: - adds r2, 0x64 - adds r4, 0x1 - cmp r4, 0x3 - bgt _0806FDAC - ldr r0, [r6] - adds r0, r2, r0 - adds r0, r5 - ldrb r1, [r0] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0806FD94 -_0806FDAC: - cmp r4, 0x4 - beq _0806FDEC - movs r4, 0 - b _0806FDBE - .align 2, 0 -_0806FDB4: .4byte gRecruitedPokemonRef -_0806FDB8: .4byte 0x00008df8 -_0806FDBC: - adds r4, 0x1 -_0806FDBE: - cmp r4, 0x3 - bgt _0806FDDA - ldr r0, _0806FDE4 - ldr r0, [r0] - lsls r1, r4, 2 - ldr r2, _0806FDE8 - adds r0, r2 - adds r0, r1 - ldr r0, [r0] - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0806FDBC -_0806FDDA: - cmp r4, 0x4 - beq _0806FDEC - movs r0, 0x1 - b _0806FDEE - .align 2, 0 -_0806FDE4: .4byte gDungeonGlobalData -_0806FDE8: .4byte 0x0001357c -_0806FDEC: - movs r0, 0 -_0806FDEE: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_806FD18 - - thumb_func_start sub_806FDF4 -sub_806FDF4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x60 - str r0, [sp, 0x58] - mov r10, r1 - str r2, [sp, 0x5C] - movs r0, 0 - mov r9, r0 - str r0, [r2] - add r0, sp, 0xC - bl sub_8069D4C - movs r6, 0 - ldr r3, _0806FE50 - ldr r0, [r3] - ldr r2, _0806FE54 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806FE46 - adds r5, r3, 0 - adds r4, r2, 0 - movs r2, 0 - movs r3, 0x1 -_0806FE2E: - adds r2, 0x64 - adds r6, 0x1 - cmp r6, 0x3 - bgt _0806FE46 - ldr r0, [r5] - adds r0, r2, r0 - adds r0, r4 - ldrb r1, [r0] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0806FE2E -_0806FE46: - cmp r6, 0x4 - bne _0806FE58 - movs r0, 0 - b _0806FFF8 - .align 2, 0 -_0806FE50: .4byte gRecruitedPokemonRef -_0806FE54: .4byte 0x00008df8 -_0806FE58: - add r0, sp, 0xC - movs r1, 0 - ldrsh r0, [r0, r1] - bl GetFriendArea - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _0806FF74 - movs r0, 0x64 - muls r0, r6 - ldr r2, _0806FF78 - adds r0, r2 - ldr r1, [r1] - adds r5, r1, r0 - movs r4, 0 - movs r0, 0x3 - strh r0, [r5] - strb r4, [r5, 0x2] - add r0, sp, 0xC - ldrh r0, [r0, 0xE] - strb r0, [r5, 0x3] - movs r0, 0x1 - strh r0, [r5, 0x8] - adds r0, r5, 0 - adds r0, 0x4C - movs r1, 0 - bl SetDefaultIQSkills - ldr r0, [sp, 0x50] - str r0, [r5, 0x54] - adds r0, r5, 0 - adds r0, 0x50 - strb r4, [r0] - ldr r0, _0806FF7C - strh r0, [r5, 0xA] - strh r6, [r5, 0xC] - add r0, sp, 0xC - ldrh r0, [r0] - strh r0, [r5, 0xE] - ldr r0, _0806FF80 - ldr r0, [r0] - ldr r3, _0806FF84 - adds r0, r3 - ldr r0, [r0] - str r0, [r5, 0x4] - add r0, sp, 0xC - ldrh r0, [r0, 0x8] - strh r0, [r5, 0x10] - add r0, sp, 0xC - ldrh r0, [r0, 0x8] - strh r0, [r5, 0x12] - ldr r0, [sp, 0x20] - str r0, [r5, 0x44] - ldr r0, [sp, 0x24] - str r0, [r5, 0x48] - movs r2, 0 - add r6, sp, 0x2C - add r4, sp, 0x54 - mov r8, r4 - mov r4, sp - adds r4, 0x16 - add r3, sp, 0x18 - adds r1, r5, 0 - adds r1, 0x14 -_0806FED8: - adds r0, r4, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, r2 - ldrb r0, [r0] - strb r0, [r1, 0x2] - adds r1, 0x1 - adds r2, 0x1 - cmp r2, 0x1 - ble _0806FED8 - ldr r0, [sp, 0x1C] - str r0, [r5, 0x18] - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r6, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r0, [sp, 0x28] - str r0, [r5, 0x40] - adds r4, r5, 0 - adds r4, 0x58 - add r0, sp, 0xC - movs r1, 0 - ldrsh r0, [r0, r1] - bl GetMonSpecies - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0xA - bl BoundedCopyStringtoBuffer - adds r0, r7, 0 - bl GetFriendAreaStatus - lsls r0, 24 - cmp r0, 0 - bne _0806FF34 - adds r0, r7, 0 - bl UnlockFriendArea - movs r2, 0x1 - mov r9, r2 -_0806FF34: - bl sub_8097848 - movs r1, 0xFA - lsls r1, 1 - mov r0, r10 - ldr r2, [sp, 0x58] - bl sub_8068FE0 - add r0, sp, 0xC - movs r3, 0 - ldrsh r0, [r0, r3] - add r1, sp, 0xC - movs r2, 0x4 - ldrsh r1, [r1, r2] - add r2, sp, 0xC - movs r3, 0x6 - ldrsh r2, [r2, r3] - mov r3, r8 - str r3, [sp] - movs r3, 0 - str r3, [sp, 0x4] - str r3, [sp, 0x8] - adds r3, r5, 0 - bl sub_806B8CC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0806FF88 - strh r0, [r5] - b _0806FFF6 - .align 2, 0 -_0806FF74: .4byte gRecruitedPokemonRef -_0806FF78: .4byte 0x00008df8 -_0806FF7C: .4byte 0x0000ffff -_0806FF80: .4byte gDungeonGlobalData -_0806FF84: .4byte 0x00000644 -_0806FF88: - ldr r0, _0806FF9C - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl sub_8052B8C - cmp r0, 0x1 - bne _0806FFB8 - b _0806FFAC - .align 2, 0 -_0806FF9C: .4byte gUnknown_80FA090 -_0806FFA0: - ldr r0, _08070008 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl PrintFieldMessage -_0806FFAC: - adds r0, r4, 0 - bl sub_805FBE8 - lsls r0, 24 - cmp r0, 0 - beq _0806FFA0 -_0806FFB8: - mov r4, r9 - cmp r4, 0 - beq _0806FFE6 - bl xxx_call_GetLeaderEntity - adds r1, r0, 0 - ldr r0, _0807000C - movs r2, 0 - bl SetMessageArgument - ldr r0, _08070010 - adds r1, r7, 0 - bl sub_8092558 - movs r0, 0xCE - bl PlaySound - ldr r0, _08070014 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl PrintFieldMessage -_0806FFE6: - ldr r0, _08070018 - adds r1, r5, 0 - movs r2, 0 - bl sub_808D9DC - ldr r0, [sp, 0x54] - ldr r1, [sp, 0x5C] - str r0, [r1] -_0806FFF6: - movs r0, 0x1 -_0806FFF8: - add sp, 0x60 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08070008: .4byte gUnknown_80FA0C8 -_0807000C: .4byte gAvailablePokemonNames -_08070010: .4byte gUnknown_202E628 -_08070014: .4byte gUnknown_80FA120 -_08070018: .4byte gUnknown_202E088 - thumb_func_end sub_806FDF4 - - .align 2,0 + .align 2, 0
\ No newline at end of file diff --git a/asm/code_806E8B0.s b/asm/code_806E8B0.s new file mode 100644 index 0000000..3596b4d --- /dev/null +++ b/asm/code_806E8B0.s @@ -0,0 +1,2951 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_806E8B0 +sub_806E8B0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r6, r0, 0 + mov r9, r1 + adds r0, r2, 0 + str r3, [sp] + lsls r0, 24 + lsrs r0, 24 + movs r7, 0x1 + movs r1, 0x1 + mov r8, r1 + movs r2, 0x1 + str r2, [sp, 0x4] + str r1, [sp, 0x8] + bl sub_8092354 + movs r2, 0 + mov r10, r2 + lsls r0, 24 + cmp r0, 0 + bne _0806E8E6 + movs r0, 0x1 + mov r10, r0 +_0806E8E6: + adds r0, r6, 0 + movs r1, 0x11 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E92C + ldr r5, [r6, 0x70] + adds r0, r6, 0 + bl HasNegativeStatus + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0x1 + adds r2, r4, 0 + bl SetVisualFlags + lsls r0, 24 + lsrs r0, 24 + cmp r4, 0 + beq _0806E916 + movs r7, 0x2 +_0806E916: + cmp r0, 0 + beq _0806E92C + adds r0, r6, 0 + bl sub_80428B0 + ldr r0, _0806EADC + ldr r2, [r0] + adds r0, r6, 0 + mov r1, r9 + bl sub_80522F4 +_0806E92C: + adds r0, r6, 0 + movs r1, 0x22 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + bne _0806E948 + adds r0, r6, 0 + movs r1, 0x4B + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E98E +_0806E948: + ldr r2, [r6, 0x70] + movs r4, 0 + ldr r0, [sp, 0x30] + cmp r0, 0x20 + bgt _0806E95A + mov r1, r10 + cmp r1, 0 + bne _0806E95A + movs r4, 0x1 +_0806E95A: + movs r1, 0x80 + lsls r1, 1 + adds r0, r2, 0 + adds r2, r4, 0 + bl SetVisualFlags + lsls r0, 24 + lsrs r1, r0, 24 + cmp r4, 0 + beq _0806E978 + lsls r0, r7, 1 + adds r7, r0, r7 + mov r2, r8 + lsls r2, 1 + mov r8, r2 +_0806E978: + cmp r1, 0 + beq _0806E98E + adds r0, r6, 0 + bl sub_80428C4 + ldr r0, _0806EAE0 + ldr r2, [r0] + adds r0, r6, 0 + mov r1, r9 + bl sub_80522F4 +_0806E98E: + adds r0, r6, 0 + movs r1, 0x30 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E9AC + mov r0, r10 + cmp r0, 0 + bne _0806E9AC + lsls r0, r7, 1 + adds r7, r0, r7 + mov r1, r8 + lsls r1, 1 + mov r8, r1 +_0806E9AC: + ldr r0, [r6, 0x70] + ldrb r0, [r0, 0x6] + movs r4, 0x1 + cmp r0, 0 + beq _0806E9B8 + movs r4, 0 +_0806E9B8: + adds r0, r6, 0 + movs r1, 0x38 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806E9EA + mov r2, r10 + cmp r2, 0x1 + bne _0806E9EA + ldr r0, _0806EAE4 + ldr r0, [r0] + ldr r1, _0806EAE8 + adds r0, r1 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _0806E9EA + lsls r0, r7, 4 + subs r7, r0, r7 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 1 + mov r8, r0 +_0806E9EA: + adds r0, r6, 0 + movs r1, 0x3F + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806EA1C + mov r0, r10 + cmp r0, 0x1 + bne _0806EA1C + ldr r0, _0806EAE4 + ldr r0, [r0] + ldr r1, _0806EAEC + adds r0, r1 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _0806EA1C + lsls r0, r7, 4 + subs r7, r0, r7 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 1 + mov r8, r0 +_0806EA1C: + mov r0, r9 + movs r1, 0x6 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806EA38 + mov r0, r10 + cmp r0, 0 + bne _0806EA38 + lsls r7, 2 + mov r1, r8 + lsls r0, r1, 2 + add r8, r0 +_0806EA38: + mov r0, r9 + movs r1, 0x34 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806EA90 + mov r2, r10 + cmp r2, 0 + bne _0806EA90 + mov r0, r9 + ldr r5, [r0, 0x70] + bl HasNegativeStatus + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + movs r1, 0x8 + adds r2, r4, 0 + bl SetVisualFlags + lsls r0, 24 + lsrs r1, r0, 24 + cmp r4, 0 + beq _0806EA7A + ldr r2, [sp, 0x4] + lsls r0, r2, 1 + adds r2, r0, r2 + str r2, [sp, 0x4] + ldr r0, [sp, 0x8] + lsls r0, 1 + str r0, [sp, 0x8] +_0806EA7A: + cmp r1, 0 + beq _0806EA90 + mov r0, r9 + bl sub_8042940 + ldr r0, _0806EAF0 + ldr r2, [r0] + adds r0, r6, 0 + mov r1, r9 + bl sub_80522F4 +_0806EA90: + ldr r1, [sp] + ldr r0, [r1] + muls r0, r7 + str r0, [r1] + ldr r2, [sp, 0x2C] + ldr r0, [r2] + ldr r1, [sp, 0x4] + muls r0, r1 + str r0, [r2] + mov r2, r8 + cmp r2, 0x1 + beq _0806EAB6 + ldr r1, [sp] + ldr r0, [r1] + mov r1, r8 + bl __divsi3 + ldr r2, [sp] + str r0, [r2] +_0806EAB6: + ldr r0, [sp, 0x8] + cmp r0, 0x1 + beq _0806EACA + ldr r1, [sp, 0x2C] + ldr r0, [r1] + ldr r1, [sp, 0x8] + bl __divsi3 + ldr r2, [sp, 0x2C] + str r0, [r2] +_0806EACA: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806EADC: .4byte gUnknown_80FEE04 +_0806EAE0: .4byte gUnknown_80FEE2C +_0806EAE4: .4byte gDungeonGlobalData +_0806EAE8: .4byte 0x000037fa +_0806EAEC: .4byte 0x000037f8 +_0806EAF0: .4byte gUnknown_80FEE54 + thumb_func_end sub_806E8B0 + + thumb_func_start sub_806EAF4 +sub_806EAF4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8C + str r0, [sp, 0x70] + mov r9, r1 + adds r7, r3, 0 + ldr r0, [sp, 0xB8] + ldr r1, [sp, 0xBC] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x74] + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x78] + ldr r0, [sp, 0x70] + ldr r0, [r0, 0x70] + mov r10, r0 + mov r1, r9 + ldr r1, [r1, 0x70] + str r1, [sp, 0x7C] + adds r0, r2, 0 + bl sub_8092354 + movs r2, 0 + str r2, [sp, 0x80] + lsls r0, 24 + cmp r0, 0 + bne _0806EB3A + movs r3, 0x1 + str r3, [sp, 0x80] +_0806EB3A: + bl sub_806F500 + mov r6, r10 + ldrb r0, [r6, 0x7] + cmp r0, 0 + bne _0806EB72 + movs r0, 0x9E + lsls r0, 1 + add r0, r10 + ldr r0, [r0] + bl RoundUpFixedPoint + adds r1, r0, 0 + cmp r1, 0 + bne _0806EB72 + movs r0, 0x1 + ldr r2, [sp, 0xB0] + str r0, [r2] + str r1, [r2, 0x4] + movs r0, 0x2 + str r0, [r2, 0x8] + add r3, sp, 0x74 + ldrb r3, [r3] + strb r3, [r2, 0xC] + strb r1, [r2, 0xD] + strb r1, [r2, 0xE] + strb r1, [r2, 0xF] + b _0806F294 +_0806EB72: + ldr r0, _0806EBA4 + cmp r4, r0 + bne _0806EBA8 + mov r0, r9 + movs r1, 0x35 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806EBA8 + movs r0, 0x1 + ldr r6, [sp, 0xB0] + str r0, [r6] + movs r1, 0 + str r1, [r6, 0x4] + movs r0, 0x2 + str r0, [r6, 0x8] + add r0, sp, 0x74 + ldrb r0, [r0] + strb r0, [r6, 0xC] + strb r1, [r6, 0xD] + strb r1, [r6, 0xE] + strb r1, [r6, 0xF] + b _0806F294 + .align 2, 0 +_0806EBA4: .4byte 0x00000163 +_0806EBA8: + add r1, sp, 0x74 + ldrb r2, [r1] + ldr r1, [sp, 0xB0] + strb r2, [r1, 0xC] + ldr r1, _0806EDA4 + ldr r0, [r1] + movs r2, 0x9A + lsls r2, 1 + adds r0, r2 + add r3, sp, 0x74 + ldrb r3, [r3] + strb r3, [r0] + ldr r2, [r1] + movs r6, 0x9C + lsls r6, 1 + adds r0, r2, r6 + ldr r1, [sp, 0x80] + str r1, [r0] + lsls r1, 1 + mov r0, r10 + adds r0, 0x1C + adds r0, r1 + movs r3, 0 + ldrsh r4, [r0, r3] + mov r8, r1 + ldr r6, [sp, 0x78] + cmp r6, 0 + beq _0806EBF8 + ldr r0, [sp, 0x74] + cmp r0, 0x2 + bne _0806EBF8 + mov r1, r10 + movs r3, 0x28 + ldrsh r0, [r1, r3] + adds r4, r0 + ldrh r1, [r1, 0x28] + movs r6, 0xA2 + lsls r6, 1 + adds r0, r2, r6 + strh r1, [r0] +_0806EBF8: + mov r0, r10 + movs r2, 0x4 + ldrsh r1, [r0, r2] + ldr r0, _0806EDA8 + cmp r1, r0 + bne _0806EC06 + adds r4, 0x2 +_0806EC06: + movs r0, 0xD1 + lsls r0, 1 + cmp r1, r0 + bne _0806EC10 + subs r4, 0x2 +_0806EC10: + ldr r0, _0806EDAC + cmp r1, r0 + bne _0806EC18 + subs r4, 0x2 +_0806EC18: + cmp r4, 0 + bge _0806EC1E + movs r4, 0 +_0806EC1E: + cmp r4, 0x14 + ble _0806EC24 + movs r4, 0x14 +_0806EC24: + ldr r6, _0806EDA4 + ldr r0, [r6] + movs r3, 0x9F + lsls r3, 1 + adds r0, r3 + strb r4, [r0] + ldr r1, [r6] + mov r5, r10 + adds r5, 0x14 + ldr r0, [sp, 0x80] + adds r2, r5, r0 + ldrb r0, [r2] + adds r0, r7 + adds r3, 0x2 + adds r1, r3 + strh r0, [r1] + ldrb r0, [r2] + adds r0, r7 + lsls r0, 8 + ldr r2, _0806EDB0 + lsls r1, r4, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8009DA4 + adds r2, r0, 0 + ldr r0, [sp, 0x80] + lsls r4, r0, 2 + mov r0, r10 + adds r0, 0x2C + adds r0, r4 + ldr r1, [r0] + adds r0, r2, 0 + bl sub_8009DA4 + adds r2, r0, 0 + str r5, [sp, 0x88] + cmp r2, 0 + bge _0806EC74 + adds r0, 0xFF +_0806EC74: + asrs r0, 8 + str r0, [sp, 0x8] + ldr r0, [sp, 0x7C] + adds r0, 0x20 + add r0, r8 + movs r1, 0 + ldrsh r3, [r0, r1] + ldr r2, [sp, 0x80] + cmp r2, 0 + bne _0806ECA0 + ldr r0, [sp, 0x7C] + adds r0, 0xC0 + ldrb r0, [r0] + cmp r0, 0x6 + bne _0806ECA0 + ldr r0, [r6] + movs r6, 0xBD + lsls r6, 1 + adds r1, r0, r6 + movs r0, 0x1 + strb r0, [r1] + adds r3, 0x1 +_0806ECA0: + ldr r0, [sp, 0x7C] + movs r2, 0x4 + ldrsh r1, [r0, r2] + ldr r0, _0806EDA8 + cmp r1, r0 + bne _0806ECAE + subs r3, 0x2 +_0806ECAE: + movs r0, 0xD1 + lsls r0, 1 + cmp r1, r0 + bne _0806ECB8 + adds r3, 0x2 +_0806ECB8: + ldr r0, _0806EDAC + cmp r1, r0 + bne _0806ECC0 + subs r3, 0x2 +_0806ECC0: + cmp r3, 0 + bge _0806ECC6 + movs r3, 0 +_0806ECC6: + cmp r3, 0x14 + ble _0806ECCC + movs r3, 0x14 +_0806ECCC: + ldr r5, _0806EDA4 + ldr r0, [r5] + ldr r6, _0806EDB4 + adds r0, r6 + strb r3, [r0] + ldr r2, [r5] + ldr r0, [sp, 0x7C] + adds r0, 0x16 + ldr r1, [sp, 0x80] + adds r0, r1 + ldrb r1, [r0] + adds r6, 0x3 + adds r2, r6 + strh r1, [r2] + ldrb r0, [r0] + lsls r0, 8 + ldr r2, _0806EDB8 + lsls r1, r3, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_8009DA4 + adds r2, r0, 0 + ldr r0, [sp, 0x7C] + adds r0, 0x34 + adds r0, r4 + ldr r1, [r0] + adds r0, r2, 0 + bl sub_8009DA4 + cmp r0, 0 + bge _0806ED0E + adds r0, 0xFF +_0806ED0E: + asrs r0, 8 + str r0, [sp, 0xC] + movs r0, 0x64 + bl DungeonRandomCapped + str r0, [sp, 0x84] + ldr r0, [sp, 0x80] + cmp r0, 0 + bne _0806EDC8 + ldr r0, [sp, 0x70] + movs r1, 0x13 + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806ED4A + ldr r2, _0806EDBC + movs r3, 0 + ldrsh r1, [r2, r3] + ldr r0, [sp, 0x8] + adds r0, r1 + str r0, [sp, 0x8] + ldr r1, [r5] + movs r6, 0xB0 + lsls r6, 1 + adds r1, r6 + ldrb r0, [r2] + ldrb r2, [r1] + adds r0, r2 + strb r0, [r1] +_0806ED4A: + ldr r0, [sp, 0x70] + movs r1, 0x2B + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806ED74 + ldr r2, _0806EDC0 + movs r3, 0 + ldrsh r1, [r2, r3] + ldr r0, [sp, 0x8] + adds r0, r1 + str r0, [sp, 0x8] + ldr r1, [r5] + movs r6, 0xB0 + lsls r6, 1 + adds r1, r6 + ldrb r0, [r2] + ldrb r2, [r1] + adds r0, r2 + strb r0, [r1] +_0806ED74: + ldr r3, [sp, 0x78] + cmp r3, 0 + beq _0806EE4A + mov r0, r9 + movs r1, 0x1E + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806EE4A + ldr r2, _0806EDC4 + movs r6, 0 + ldrsh r1, [r2, r6] + ldr r0, [sp, 0xC] + adds r0, r1 + str r0, [sp, 0xC] + ldr r0, [r5] + movs r3, 0xB1 + lsls r3, 1 + adds r1, r0, r3 + ldrb r0, [r2] + ldrb r6, [r1] + adds r0, r6 + b _0806EE48 + .align 2, 0 +_0806EDA4: .4byte gDungeonGlobalData +_0806EDA8: .4byte 0x000001a1 +_0806EDAC: .4byte 0x000001a3 +_0806EDB0: .4byte gUnknown_80F504C +_0806EDB4: .4byte 0x0000013f +_0806EDB8: .4byte gUnknown_80F50A0 +_0806EDBC: .4byte gUnknown_810AC60 +_0806EDC0: .4byte gUnknown_810AC68 +_0806EDC4: .4byte gUnknown_810AC64 +_0806EDC8: + ldr r0, [sp, 0x78] + cmp r0, 0 + beq _0806EDF6 + mov r0, r9 + movs r1, 0x22 + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806EDF6 + ldr r2, _0806EEF8 + movs r3, 0 + ldrsh r1, [r2, r3] + ldr r0, [sp, 0xC] + adds r0, r1 + str r0, [sp, 0xC] + ldr r0, [r5] + ldr r6, _0806EEFC + adds r1, r0, r6 + ldrb r0, [r2] + ldrb r2, [r1] + adds r0, r2 + strb r0, [r1] +_0806EDF6: + ldr r0, [sp, 0x70] + movs r1, 0x21 + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806EE20 + ldr r2, _0806EF00 + movs r3, 0 + ldrsh r1, [r2, r3] + ldr r0, [sp, 0x8] + adds r0, r1 + str r0, [sp, 0x8] + ldr r0, _0806EF04 + ldr r0, [r0] + ldr r6, _0806EF08 + adds r1, r0, r6 + ldrb r0, [r2] + ldrb r2, [r1] + adds r0, r2 + strb r0, [r1] +_0806EE20: + ldr r0, [sp, 0x70] + movs r1, 0x2B + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806EE4A + ldr r2, _0806EF0C + movs r3, 0 + ldrsh r1, [r2, r3] + ldr r0, [sp, 0x8] + adds r0, r1 + str r0, [sp, 0x8] + ldr r0, _0806EF04 + ldr r0, [r0] + ldr r6, _0806EF08 + adds r1, r0, r6 + ldrb r0, [r2] + ldrb r2, [r1] + adds r0, r2 +_0806EE48: + strb r0, [r1] +_0806EE4A: + ldr r0, _0806EF04 + ldr r2, [r0] + movs r3, 0xA3 + lsls r3, 1 + adds r1, r2, r3 + add r0, sp, 0x8 + ldrh r0, [r0] + strh r0, [r1] + movs r6, 0xA4 + lsls r6, 1 + adds r1, r2, r6 + add r4, sp, 0xC + ldrh r0, [r4] + strh r0, [r1] + ldr r0, [sp, 0x8] + cmp r0, 0 + bge _0806EE70 + movs r0, 0 + str r0, [sp, 0x8] +_0806EE70: + ldr r1, _0806EF10 + ldr r0, [sp, 0x8] + cmp r0, r1 + ble _0806EE7C + ldr r0, _0806EF14 + str r0, [sp, 0x8] +_0806EE7C: + movs r3, 0xA8 + lsls r3, 1 + add r3, r10 + ldrh r2, [r3] + ldr r1, _0806EF18 + adds r0, r1, 0 + ands r0, r2 + strh r0, [r3] + movs r2, 0xA7 + lsls r2, 1 + add r2, r10 + ldrh r0, [r2] + ands r1, r0 + strh r1, [r2] + str r4, [sp] + ldr r0, [sp, 0x84] + str r0, [sp, 0x4] + ldr r0, [sp, 0x70] + mov r1, r9 + ldr r2, [sp, 0x74] + add r3, sp, 0x8 + bl sub_806E8B0 + add r5, sp, 0x10 + ldr r1, [sp, 0x8] + ldr r0, [sp, 0xC] + subs r1, r0 + adds r0, r5, 0 + bl sub_800A020 + add r4, sp, 0x18 + adds r0, r4, 0 + movs r1, 0x8 + bl sub_800A020 + adds r0, r5, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_800A3F0 + mov r1, r10 + ldrb r6, [r1, 0x6] + mov r8, r5 + adds r7, r4, 0 + cmp r6, 0 + bne _0806EF20 + ldrb r1, [r1, 0x9] + adds r0, r7, 0 + bl sub_800A020 + str r6, [sp, 0x20] + ldr r0, _0806EF1C + add r2, sp, 0x20 + str r0, [r2, 0x4] + adds r0, r7, 0 + adds r1, r7, 0 + bl sub_800A34C + mov r2, r10 + ldrb r0, [r2, 0x9] + lsls r0, 1 + b _0806EF60 + .align 2, 0 +_0806EEF8: .4byte gUnknown_810AC66 +_0806EEFC: .4byte 0x00000163 +_0806EF00: .4byte gUnknown_810AC62 +_0806EF04: .4byte gDungeonGlobalData +_0806EF08: .4byte 0x00000161 +_0806EF0C: .4byte gUnknown_810AC68 +_0806EF10: .4byte 0x000003e6 +_0806EF14: .4byte 0x000003e7 +_0806EF18: .4byte 0x0000feff +_0806EF1C: .4byte 0x0000aaaa +_0806EF20: + ldr r3, [sp, 0x88] + ldr r6, [sp, 0x80] + adds r0, r3, r6 + ldrb r0, [r0] + str r0, [sp, 0x28] + movs r0, 0x1 + str r0, [sp, 0x2C] + add r3, sp, 0x28 + add r0, sp, 0x2C + str r0, [sp] + ldr r0, [sp, 0x84] + str r0, [sp, 0x4] + ldr r0, [sp, 0x70] + mov r1, r9 + ldr r2, [sp, 0x74] + bl sub_806E8B0 + ldr r1, [sp, 0x28] + adds r0, r7, 0 + bl sub_800A020 + add r4, sp, 0x20 + adds r0, r4, 0 + movs r1, 0x3 + bl sub_800A020 + adds r0, r7, 0 + adds r1, r7, 0 + adds r2, r4, 0 + bl sub_800A3F0 + ldr r0, [sp, 0x28] +_0806EF60: + movs r1, 0x3 + bl __divsi3 + adds r6, r0, 0 + add r5, sp, 0x30 + adds r0, r5, 0 + mov r1, r8 + adds r2, r7, 0 + bl sub_800A6D0 + ldr r4, _0806F098 + ldr r0, [r4] + movs r1, 0xA5 + lsls r1, 1 + adds r0, r1 + movs r2, 0 + mov r8, r2 + strh r6, [r0] + adds r0, r5, 0 + bl sub_800A048 + ldr r1, [r4] + movs r3, 0xA6 + lsls r3, 1 + adds r1, r3 + strh r0, [r1] + ldr r0, [sp, 0x30] + ldr r1, [sp, 0x34] + str r0, [sp, 0x38] + str r1, [sp, 0x3C] + str r0, [sp, 0x48] + str r1, [sp, 0x4C] + add r6, sp, 0x38 + adds r0, r6, 0 + adds r1, r6, 0 + adds r2, r6, 0 + bl sub_800A34C + mov r0, r8 + str r0, [sp, 0x40] + ldr r0, _0806F09C + add r5, sp, 0x40 + str r0, [r5, 0x4] + adds r0, r6, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_800A34C + adds r0, r5, 0 + movs r1, 0x2 + bl sub_800A020 + add r4, sp, 0x48 + adds r0, r4, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_800A34C + ldr r1, [sp, 0xC] + adds r0, r5, 0 + bl sub_800A020 + adds r0, r4, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_800A6F0 + adds r0, r5, 0 + movs r1, 0xA + bl sub_800A020 + adds r0, r4, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_800A6D0 + add r5, sp, 0x50 + adds r0, r5, 0 + adds r1, r6, 0 + adds r2, r4, 0 + bl sub_800A6D0 + ldr r4, _0806F0A0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_800A2F0 + lsls r0, 24 + mov r8, r5 + cmp r0, 0 + beq _0806F01E + ldr r0, [r4] + ldr r1, [r4, 0x4] + str r0, [sp, 0x50] + str r1, [sp, 0x54] +_0806F01E: + ldr r4, _0806F0A4 + mov r0, r8 + adds r1, r4, 0 + bl sub_800A2F0 + lsls r0, 24 + cmp r0, 0 + beq _0806F036 + ldr r0, [r4] + ldr r1, [r4, 0x4] + str r0, [sp, 0x50] + str r1, [sp, 0x54] +_0806F036: + add r4, sp, 0x58 + ldr r1, [sp, 0xB0] + str r1, [sp] + adds r0, r4, 0 + ldr r1, [sp, 0x70] + mov r2, r9 + ldr r3, [sp, 0x74] + bl sub_806E100 + lsls r0, 24 + lsrs r5, r0, 24 + adds r7, r4, 0 + ldr r2, [sp, 0x74] + cmp r2, 0x2 + bne _0806F0BC + mov r0, r9 + bl GetFlashFireStatus + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _0806F0BC + ldr r3, [sp, 0x7C] + movs r6, 0xA9 + lsls r6, 1 + adds r1, r3, r6 + ldrb r0, [r1] + cmp r0, 0 + bne _0806F0BC + ldr r0, [sp, 0x78] + cmp r0, 0 + beq _0806F118 + movs r0, 0x1 + strb r0, [r1] + ldr r0, _0806F0A8 + mov r1, r9 + movs r2, 0 + bl SetMessageArgument + cmp r4, 0x1 + bne _0806F0B0 + ldr r0, _0806F0AC + ldr r2, [r0] + ldr r0, [sp, 0x70] + mov r1, r9 + bl sub_80522F4 + b _0806F0BC + .align 2, 0 +_0806F098: .4byte gDungeonGlobalData +_0806F09C: .4byte 0x00000ccc +_0806F0A0: .4byte gUnknown_8106F24 +_0806F0A4: .4byte gUnknown_8106F04 +_0806F0A8: .4byte gUnknown_202DFE8 +_0806F0AC: .4byte gUnknown_80FAE00 +_0806F0B0: + ldr r0, _0806F15C + ldr r2, [r0] + ldr r0, [sp, 0x70] + mov r1, r9 + bl sub_80522F4 +_0806F0BC: + ldr r1, [sp, 0x78] + cmp r1, 0 + beq _0806F118 + ldr r2, [sp, 0x80] + cmp r2, 0 + bne _0806F0EE + ldr r0, [sp, 0x7C] + adds r0, 0xC4 + ldrb r4, [r0] + cmp r4, 0x1 + bne _0806F0EE + mov r0, r9 + bl sub_8041B74 + ldr r2, _0806F160 + adds r0, r7, 0 + adds r1, r7, 0 + bl sub_800A34C + ldr r0, _0806F164 + ldr r0, [r0] + movs r3, 0xB3 + lsls r3, 1 + adds r0, r3 + strb r4, [r0] +_0806F0EE: + ldr r6, [sp, 0x80] + cmp r6, 0x1 + bne _0806F118 + ldr r0, [sp, 0x7C] + adds r0, 0xC4 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0806F118 + mov r0, r9 + bl sub_8041B5C + ldr r2, _0806F160 + adds r0, r7, 0 + adds r1, r7, 0 + bl sub_800A34C + ldr r0, _0806F164 + ldr r0, [r0] + ldr r1, _0806F168 + adds r0, r1 + strb r6, [r0] +_0806F118: + mov r0, r9 + movs r1, 0xC + bl HasAbility + lsls r0, 24 + cmp r0, 0 + bne _0806F1F4 + mov r0, r9 + movs r1, 0x13 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + bne _0806F1F4 + mov r3, r10 + ldrb r0, [r3, 0x6] + ldr r4, [sp, 0xAC] + cmp r0, 0 + beq _0806F140 + movs r4, 0 +_0806F140: + mov r0, r10 + adds r0, 0xDC + ldrb r0, [r0] + cmp r0, 0x4 + bne _0806F170 + ldr r4, _0806F16C + ldr r0, _0806F164 + ldr r0, [r0] + movs r6, 0xB4 + lsls r6, 1 + adds r0, r6 + movs r1, 0x1 + strb r1, [r0] + b _0806F1DA + .align 2, 0 +_0806F15C: .4byte gUnknown_80FADD8 +_0806F160: .4byte gUnknown_8106F1C +_0806F164: .4byte gDungeonGlobalData +_0806F168: .4byte 0x00000167 +_0806F16C: .4byte 0x000003e7 +_0806F170: + ldr r0, [sp, 0x70] + movs r1, 0xC + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806F194 + ldr r0, _0806F2A4 + movs r1, 0 + ldrsh r0, [r0, r1] + adds r4, r0 + ldr r0, _0806F2A8 + ldr r0, [r0] + movs r2, 0xB2 + lsls r2, 1 + adds r0, r2 + movs r1, 0x1 + strb r1, [r0] +_0806F194: + mov r0, r9 + movs r1, 0xD + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806F1B6 + ldr r0, _0806F2A4 + movs r3, 0 + ldrsh r0, [r0, r3] + adds r4, r0 + ldr r0, _0806F2A8 + ldr r0, [r0] + ldr r6, _0806F2AC + adds r1, r0, r6 + movs r0, 0x1 + strb r0, [r1] +_0806F1B6: + cmp r5, 0 + beq _0806F1DA + ldr r0, [sp, 0x70] + movs r1, 0x1 + bl HasIQSkill + lsls r0, 24 + cmp r0, 0 + beq _0806F1DA + ldr r0, _0806F2B0 + movs r1, 0 + ldrsh r4, [r0, r1] + ldr r0, _0806F2A8 + ldr r0, [r0] + ldr r2, _0806F2B4 + adds r1, r0, r2 + movs r0, 0x1 + strb r0, [r1] +_0806F1DA: + movs r0, 0x64 + bl DungeonRandomCapped + cmp r0, r4 + bge _0806F1F4 + ldr r2, _0806F2B8 + adds r0, r7, 0 + adds r1, r7, 0 + bl sub_800A34C + movs r0, 0x1 + ldr r3, [sp, 0xB0] + strb r0, [r3, 0xD] +_0806F1F4: + mov r0, r8 + bl sub_800A048 + ldr r5, _0806F2A8 + ldr r1, [r5] + movs r6, 0xAA + lsls r6, 1 + adds r1, r6 + str r0, [r1] + mov r0, r8 + mov r1, r8 + adds r2, r7, 0 + bl sub_800A34C + ldr r0, [r5] + movs r1, 0xAE + lsls r1, 1 + adds r0, r1 + ldr r2, [sp, 0xB4] + str r2, [r0] + add r4, sp, 0x60 + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_800A088 + mov r0, r8 + mov r1, r8 + adds r2, r4, 0 + bl sub_800A34C + mov r0, r8 + bl sub_800A048 + ldr r1, [r5] + movs r3, 0xA8 + lsls r3, 1 + adds r1, r3 + str r0, [r1] + movs r0, 0x80 + lsls r0, 7 + bl DungeonRandomCapped + movs r6, 0 + str r6, [sp, 0x58] + movs r1, 0xE0 + lsls r1, 8 + adds r0, r1 + str r0, [r7, 0x4] + mov r0, r8 + mov r1, r8 + adds r2, r7, 0 + bl sub_800A34C + add r4, sp, 0x68 + adds r0, r4, 0 + movs r1, 0x64 + bl sub_800A020 + adds r0, r7, 0 + adds r1, r4, 0 + adds r2, r7, 0 + bl sub_800A34C + adds r0, r7, 0 + bl sub_800A048 + ldr r1, [r5] + movs r2, 0xAC + lsls r2, 1 + adds r1, r2 + str r0, [r1] + mov r0, r8 + bl sub_800A048 + ldr r3, [sp, 0xB0] + str r0, [r3] + str r6, [r3, 0x4] + cmp r0, 0 + bne _0806F294 + strb r0, [r3, 0xD] +_0806F294: + add sp, 0x8C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806F2A4: .4byte gUnknown_80F4DAE +_0806F2A8: .4byte gDungeonGlobalData +_0806F2AC: .4byte 0x00000165 +_0806F2B0: .4byte gUnknown_80F4DB0 +_0806F2B4: .4byte 0x00000169 +_0806F2B8: .4byte gUnknown_8106F14 + thumb_func_end sub_806EAF4 + + thumb_func_start sub_806F2BC +sub_806F2BC: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r5, r0, 0 + mov r12, r1 + ldr r7, [sp, 0x2C] + lsls r2, 24 + lsrs r4, r2, 24 + adds r6, r3, 0 + cmp r6, 0 + bgt _0806F2D6 + movs r6, 0x1 +_0806F2D6: + ldr r0, _0806F320 + cmp r6, r0 + ble _0806F2DE + adds r6, r0, 0 +_0806F2DE: + movs r0, 0 + mov r8, r0 + strb r4, [r7, 0xC] + str r7, [sp] + add r0, sp, 0x4 + adds r1, r5, 0 + mov r2, r12 + adds r3, r4, 0 + bl sub_806E100 + add r4, sp, 0xC + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_800A020 + adds r0, r4, 0 + adds r1, r4, 0 + add r2, sp, 0x4 + bl sub_800A34C + adds r0, r4, 0 + bl sub_800A048 + str r0, [r7] + mov r0, r8 + str r0, [r7, 0x4] + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806F320: .4byte 0x000003e7 + thumb_func_end sub_806F2BC + + thumb_func_start sub_806F324 +sub_806F324: + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x94 + mov r8, r0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r4, r3, 16 + asrs r4, 16 + add r0, sp, 0x10 + bl sub_80457DC + add r2, sp, 0x84 + str r5, [sp, 0x84] + movs r0, 0x2 + str r0, [r2, 0x8] + movs r0, 0 + strb r0, [r2, 0xC] + str r6, [r2, 0x4] + strb r0, [r2, 0xD] + strb r0, [r2, 0xE] + strb r0, [r2, 0xF] + str r0, [sp] + str r4, [sp, 0x4] + str r0, [sp, 0x8] + str r0, [sp, 0xC] + add r0, sp, 0x10 + mov r1, r8 + movs r3, 0 + bl sub_806D010 + add sp, 0x94 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_806F324 + + thumb_func_start sub_806F370 +sub_806F370: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + mov r10, r0 + adds r7, r1, 0 + mov r9, r3 + ldr r0, [sp, 0x50] + ldr r1, [sp, 0x54] + ldr r3, [sp, 0x58] + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + asrs r1, 16 + mov r8, r1 + adds r5, r2, 0 + movs r0, 0x2 + str r0, [sp, 0x18] + str r3, [sp, 0x14] + add r0, sp, 0x10 + movs r1, 0 + strb r4, [r0, 0xC] + strb r1, [r0, 0xD] + strb r1, [r0, 0xE] + cmp r4, 0 + beq _0806F3FC + ldr r1, [r7, 0x70] + movs r2, 0 + lsls r0, r4, 3 + mov r3, sp + adds r3, 0x20 + str r3, [sp, 0x28] + ldr r6, _0806F408 + mov r12, r6 + adds r1, 0x5C + adds r0, r4 + lsls r3, r0, 2 + ldr r4, [sp, 0x28] +_0806F3C0: + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r3 + add r0, r12 + movs r6, 0 + ldrsh r0, [r0, r6] + stm r4!, {r0} + adds r2, 0x1 + cmp r2, 0x1 + ble _0806F3C0 + adds r0, r7, 0 + movs r1, 0x35 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0806F3FC + ldr r2, _0806F40C + ldr r1, [sp, 0x28] + ldr r0, [r1, 0x4] + lsls r0, 2 + ldr r1, [sp, 0x20] + lsls r1, 4 + adds r0, r1 + adds r0, r2 + ldr r0, [r0] + cmp r0, 0x3 + beq _0806F3FC + movs r5, 0 +_0806F3FC: + str r5, [sp, 0x10] + cmp r5, 0 + bne _0806F410 + add r1, sp, 0x10 + movs r0, 0x1 + b _0806F414 + .align 2, 0 +_0806F408: .4byte gTypeEffectivenessChart +_0806F40C: .4byte gUnknown_80F54B4 +_0806F410: + add r1, sp, 0x10 + movs r0, 0 +_0806F414: + strb r0, [r1, 0xF] + mov r3, r9 + str r3, [sp] + mov r6, r8 + str r6, [sp, 0x4] + ldr r0, [sp, 0x5C] + str r0, [sp, 0x8] + ldr r0, [sp, 0x60] + str r0, [sp, 0xC] + mov r0, r10 + adds r1, r7, 0 + add r2, sp, 0x10 + movs r3, 0 + bl sub_806D010 + ldr r0, [sp, 0x4C] + cmp r0, 0 + beq _0806F440 + add r0, sp, 0x10 + ldrb r0, [r0, 0xF] + ldr r1, [sp, 0x4C] + strb r0, [r1] +_0806F440: + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_806F370 + + thumb_func_start SetShopkeeperAggression +SetShopkeeperAggression: + push {r4-r6,lr} + adds r5, r0, 0 + ldr r4, [r1, 0x70] + adds r6, r4, 0 + ldrb r0, [r4, 0x8] + cmp r0, 0 + beq _0806F47A + adds r0, r5, 0 + bl GetEntityType + cmp r0, 0x1 + bne _0806F47A + ldr r0, [r5, 0x70] + ldrb r0, [r0, 0x6] + cmp r0, 0 + beq _0806F476 + movs r0, 0x2 + strb r0, [r4, 0x8] + b _0806F47A +_0806F476: + movs r0, 0x3 + strb r0, [r6, 0x8] +_0806F47A: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end SetShopkeeperAggression + + thumb_func_start sub_806F480 +sub_806F480: + push {lr} + lsls r1, 24 + lsrs r1, 24 + ldr r2, [r0, 0x70] + adds r3, r2, 0 + ldrb r0, [r2, 0x8] + cmp r0, 0 + beq _0806F49E + cmp r1, 0 + beq _0806F49A + movs r0, 0x2 + strb r0, [r2, 0x8] + b _0806F49E +_0806F49A: + movs r0, 0x3 + strb r0, [r3, 0x8] +_0806F49E: + pop {r0} + bx r0 + thumb_func_end sub_806F480 + + thumb_func_start sub_806F4A4 +sub_806F4A4: + push {r4-r6,lr} + lsls r1, 24 + lsrs r4, r1, 24 + ldr r5, [r0, 0x70] + movs r1, 0xE + bl HasType + lsls r0, 24 + cmp r0, 0 + beq _0806F4CE + cmp r4, 0x1 + beq _0806F4C0 + cmp r4, 0x7 + bne _0806F4CE +_0806F4C0: + adds r0, r5, 0 + adds r0, 0xF5 + ldrb r0, [r0] + cmp r0, 0 + bne _0806F4CE +_0806F4CA: + movs r0, 0 + b _0806F4F6 +_0806F4CE: + movs r2, 0 + lsls r0, r4, 3 + ldr r6, _0806F4FC + adds r3, r5, 0 + adds r3, 0x5C + adds r0, r4 + lsls r1, r0, 2 +_0806F4DC: + adds r0, r3, r2 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + adds r0, r6 + movs r4, 0 + ldrsh r0, [r0, r4] + cmp r0, 0 + beq _0806F4CA + adds r2, 0x1 + cmp r2, 0x1 + ble _0806F4DC + movs r0, 0x1 +_0806F4F6: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0806F4FC: .4byte gTypeEffectivenessChart + thumb_func_end sub_806F4A4 + + thumb_func_start sub_806F500 +sub_806F500: + ldr r0, _0806F5F4 + ldr r0, [r0] + mov r12, r0 + movs r0, 0x9A + lsls r0, 1 + add r0, r12 + movs r1, 0 + strb r1, [r0] + str r1, [r0, 0x4] + strb r1, [r0, 0x8] + strb r1, [r0, 0x9] + movs r2, 0xA + strb r2, [r0, 0xA] + strb r2, [r0, 0xB] + movs r2, 0 + movs r3, 0x1 + strh r3, [r0, 0xC] + strh r3, [r0, 0xE] + strh r1, [r0, 0x10] + strh r1, [r0, 0x14] + strh r1, [r0, 0x12] + strh r1, [r0, 0x16] + strh r1, [r0, 0x18] + str r1, [r0, 0x1C] + str r1, [r0, 0x24] + str r1, [r0, 0x28] + movs r0, 0xB0 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F5F8 + add r0, r12 + strb r2, [r0] + movs r0, 0xB1 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F5FC + add r0, r12 + strb r2, [r0] + movs r0, 0xB2 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F600 + add r0, r12 + strb r2, [r0] + movs r0, 0xB3 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F604 + add r0, r12 + strb r2, [r0] + movs r0, 0xB4 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F608 + add r0, r12 + strb r2, [r0] + movs r0, 0xB5 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + movs r0, 0xB6 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F60C + add r0, r12 + strb r2, [r0] + ldr r0, _0806F610 + add r0, r12 + strb r2, [r0] + movs r0, 0xB7 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F614 + add r0, r12 + strb r2, [r0] + movs r0, 0xB8 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F618 + add r0, r12 + strb r2, [r0] + movs r0, 0xB9 + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F61C + add r0, r12 + strb r2, [r0] + movs r0, 0xBA + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F620 + add r0, r12 + strb r2, [r0] + movs r0, 0xBB + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F624 + add r0, r12 + strb r2, [r0] + movs r0, 0xBC + lsls r0, 1 + add r0, r12 + strb r2, [r0] + ldr r0, _0806F628 + add r0, r12 + strb r2, [r0] + movs r0, 0xBD + lsls r0, 1 + add r0, r12 + strb r2, [r0] + bx lr + .align 2, 0 +_0806F5F4: .4byte gDungeonGlobalData +_0806F5F8: .4byte 0x00000161 +_0806F5FC: .4byte 0x00000163 +_0806F600: .4byte 0x00000165 +_0806F604: .4byte 0x00000167 +_0806F608: .4byte 0x00000169 +_0806F60C: .4byte 0x0000016b +_0806F610: .4byte 0x0000016d +_0806F614: .4byte 0x0000016f +_0806F618: .4byte 0x00000171 +_0806F61C: .4byte 0x00000173 +_0806F620: .4byte 0x00000175 +_0806F624: .4byte 0x00000177 +_0806F628: .4byte 0x00000179 + thumb_func_end sub_806F500 + + thumb_func_start sub_806F62C +sub_806F62C: + ldr r1, _0806F638 + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_0806F638: .4byte gUnknown_8106F7C + thumb_func_end sub_806F62C + + thumb_func_start sub_806F63C +sub_806F63C: + push {lr} + ldr r1, _0806F658 + ldr r1, [r1] + ldr r2, _0806F65C + adds r1, r2 + ldr r1, [r1, 0x10] + cmp r1, r0 + bne _0806F652 + adds r0, r1, 0 + bl sub_803F508 +_0806F652: + pop {r0} + bx r0 + .align 2, 0 +_0806F658: .4byte gDungeonGlobalData +_0806F65C: .4byte 0x000181e8 + thumb_func_end sub_806F63C + + thumb_func_start sub_806F660 +sub_806F660: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r6, r0, 0 + mov r8, r1 + ldr r0, [r6, 0x70] + mov r10, r0 + ldr r4, [r1, 0x70] + movs r1, 0x1 + negs r1, r1 + mov r9, r1 + movs r2, 0x4 + ldrsh r0, [r4, r2] + bl GetPokemonSize + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _0806F6C0 + ldr r3, [r0] + ldr r1, _0806F6C4 + adds r0, r3, r1 + ldrh r2, [r0] + subs r0, r2, 0x4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bls _0806F702 + lsls r0, r2, 16 + asrs r1, r0, 16 + cmp r1, 0x9 + beq _0806F702 + cmp r1, 0xF + beq _0806F702 + adds r0, r2, 0 + subs r0, 0x2C + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bhi _0806F6CC + ldr r2, _0806F6C8 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0806F702 + b _0806F8FC + .align 2, 0 +_0806F6C0: .4byte gDungeonGlobalData +_0806F6C4: .4byte 0x00003a14 +_0806F6C8: .4byte 0x0000065c +_0806F6CC: + cmp r1, 0x31 + bne _0806F6F0 + ldr r1, _0806F6EC + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0806F6DC + b _0806F8FC +_0806F6DC: + movs r0, 0xCF + lsls r0, 1 + bl sub_8097900 + lsls r0, 24 + cmp r0, 0 + bne _0806F702 + b _0806F8FC + .align 2, 0 +_0806F6EC: .4byte 0x00000659 +_0806F6F0: + ldr r2, _0806F834 + adds r0, r3, r2 + ldrb r0, [r0] + bl GetRecruitable + lsls r0, 24 + cmp r0, 0 + bne _0806F702 + b _0806F8FC +_0806F702: + ldr r0, _0806F838 + ldr r0, [r0] + ldr r3, _0806F83C + adds r0, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _0806F712 + b _0806F8FC +_0806F712: + ldrh r1, [r4, 0x2] + adds r0, r1, 0 + subs r0, 0x90 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bls _0806F766 + lsls r0, r1, 16 + asrs r1, r0, 16 + ldr r0, _0806F840 + cmp r1, r0 + beq _0806F766 + subs r0, 0x1 + cmp r1, r0 + beq _0806F766 + adds r0, 0x2 + cmp r1, r0 + beq _0806F766 + adds r0, 0x8A + cmp r1, r0 + beq _0806F766 + adds r0, 0x1 + cmp r1, r0 + beq _0806F766 + adds r0, 0x4 + cmp r1, r0 + beq _0806F766 + subs r0, 0x1 + cmp r1, r0 + beq _0806F766 + adds r0, 0x2 + cmp r1, r0 + beq _0806F766 + subs r0, 0x9 + cmp r1, r0 + beq _0806F766 + adds r0, 0x1 + cmp r1, r0 + beq _0806F766 + adds r0, 0x1 + cmp r1, r0 + bne _0806F776 +_0806F766: + movs r1, 0x2 + ldrsh r0, [r4, r1] + bl HasRecruitedMon + lsls r0, 24 + cmp r0, 0 + beq _0806F776 + b _0806F8FC +_0806F776: + movs r2, 0x2 + ldrsh r0, [r4, r2] + bl sub_806F9BC + lsls r0, 24 + cmp r0, 0 + bne _0806F786 + b _0806F8FC +_0806F786: + movs r3, 0x4 + ldrsh r1, [r6, r3] + mov r2, r8 + movs r3, 0x4 + ldrsh r0, [r2, r3] + subs r1, r0 + cmp r1, 0 + bge _0806F798 + negs r1, r1 +_0806F798: + cmp r1, 0x1 + ble _0806F79E + b _0806F8FC +_0806F79E: + movs r0, 0x6 + ldrsh r1, [r6, r0] + mov r2, r8 + movs r3, 0x6 + ldrsh r0, [r2, r3] + subs r1, r0 + cmp r1, 0 + bge _0806F7B0 + negs r1, r1 +_0806F7B0: + cmp r1, 0x1 + ble _0806F7B6 + b _0806F8FC +_0806F7B6: + adds r0, r4, 0 + adds r0, 0x40 + ldrb r0, [r0] + cmp r0, 0x4A + bne _0806F7C2 + b _0806F8FC +_0806F7C2: + adds r0, r4, 0 + adds r0, 0xA4 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0806F7CE + b _0806F8FC +_0806F7CE: + mov r0, r8 + adds r1, r6, 0 + bl CanSee + lsls r0, 24 + cmp r0, 0 + bne _0806F7DE + b _0806F8FC +_0806F7DE: + bl sub_806F910 + movs r0, 0xFA + lsls r0, 2 + bl DungeonRandomCapped + adds r7, r0, 0 + movs r1, 0x2 + ldrsh r0, [r4, r1] + bl GetBaseRecruit + lsls r0, 16 + asrs r4, r0, 16 + ldr r0, _0806F844 + cmp r4, r0 + bne _0806F800 + b _0806F8FC +_0806F800: + adds r0, r6, 0 + movs r1, 0x2E + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0806F816 + ldr r0, _0806F848 + movs r2, 0 + ldrsh r0, [r0, r2] + adds r4, r0 +_0806F816: + ldr r0, _0806F84C + mov r3, r10 + ldrb r1, [r3, 0x9] + lsls r1, 1 + adds r1, r0 + movs r2, 0 + ldrsh r0, [r1, r2] + adds r4, r0 + cmp r7, r4 + bge _0806F8FC + movs r4, 0 + movs r0, 0x6 + subs r3, r0, r5 + ldr r7, _0806F850 + b _0806F856 + .align 2, 0 +_0806F834: .4byte 0x00000644 +_0806F838: .4byte gDungeonGlobalData +_0806F83C: .4byte 0x0000065d +_0806F840: .4byte 0x0000010d +_0806F844: .4byte 0xfffffc19 +_0806F848: .4byte gUnknown_80F5008 +_0806F84C: .4byte gUnknown_80F5700 +_0806F850: .4byte gUnknown_202EE70 +_0806F854: + adds r4, 0x1 +_0806F856: + cmp r4, r3 + bgt _0806F878 + movs r2, 0 + cmp r2, r5 + bge _0806F872 + adds r1, r4, r7 + b _0806F86C +_0806F864: + adds r1, 0x1 + adds r2, 0x1 + cmp r2, r5 + bge _0806F872 +_0806F86C: + ldrb r0, [r1] + cmp r0, 0 + beq _0806F864 +_0806F872: + cmp r2, r5 + bne _0806F854 + mov r9, r4 +_0806F878: + movs r0, 0x1 + negs r0, r0 + cmp r9, r0 + beq _0806F8F4 + movs r4, 0 + ldr r3, _0806F8BC + ldr r0, [r3] + ldr r2, _0806F8C0 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806F8B4 + adds r7, r3, 0 + adds r5, r2, 0 + movs r2, 0 + movs r3, 0x1 +_0806F89C: + adds r2, 0x64 + adds r4, 0x1 + cmp r4, 0x3 + bgt _0806F8B4 + ldr r0, [r7] + adds r0, r2, r0 + adds r0, r5 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0806F89C +_0806F8B4: + cmp r4, 0x4 + beq _0806F8F4 + movs r4, 0 + b _0806F8C6 + .align 2, 0 +_0806F8BC: .4byte gRecruitedPokemonRef +_0806F8C0: .4byte 0x00008df8 +_0806F8C4: + adds r4, 0x1 +_0806F8C6: + cmp r4, 0x3 + bgt _0806F8E2 + ldr r0, _0806F8EC + ldr r0, [r0] + lsls r1, r4, 2 + ldr r3, _0806F8F0 + adds r0, r3 + adds r0, r1 + ldr r0, [r0] + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0806F8C4 +_0806F8E2: + cmp r4, 0x4 + beq _0806F8F4 + movs r0, 0x1 + b _0806F8FE + .align 2, 0 +_0806F8EC: .4byte gDungeonGlobalData +_0806F8F0: .4byte 0x0001357c +_0806F8F4: + adds r0, r6, 0 + mov r1, r8 + bl nullsub_96 +_0806F8FC: + movs r0, 0 +_0806F8FE: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806F660 + + thumb_func_start nullsub_96 +nullsub_96: + bx lr + thumb_func_end nullsub_96 + + thumb_func_start sub_806F910 +sub_806F910: + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r5, 0 + movs r6, 0 + movs r7, 0x40 +_0806F91C: + ldr r0, _0806F9AC + ldr r0, [r0] + lsls r1, r6, 2 + ldr r2, _0806F9B0 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + adds r1, r6, 0x1 + mov r8, r1 + cmp r0, 0 + beq _0806F98A + ldr r0, [r4, 0x70] + movs r2, 0x4 + ldrsh r0, [r0, r2] + bl GetPokemonSize + lsls r0, 24 + lsrs r1, r0, 24 + adds r0, r4, 0 + adds r0, 0x68 + strh r7, [r0] + ldr r0, [r4, 0x70] + ldr r2, _0806F9B4 + adds r0, r2 + strb r6, [r0] + ldr r0, [r4, 0x70] + adds r2, 0x1 + adds r0, r2 + strb r1, [r0] + cmp r1, 0 + beq _0806F978 + ldr r3, _0806F9B8 + movs r2, 0x1 +_0806F966: + cmp r5, 0x5 + bgt _0806F972 + adds r0, r5, r3 + strb r2, [r0] + adds r7, 0x10 + adds r5, 0x1 +_0806F972: + subs r1, 0x1 + cmp r1, 0 + bne _0806F966 +_0806F978: + adds r0, r4, 0 + bl sub_806CEBC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_806CCB4 +_0806F98A: + mov r6, r8 + cmp r6, 0x3 + ble _0806F91C + cmp r5, 0x5 + bgt _0806F9A2 + ldr r2, _0806F9B8 + movs r1, 0 +_0806F998: + adds r0, r5, r2 + strb r1, [r0] + adds r5, 0x1 + cmp r5, 0x5 + ble _0806F998 +_0806F9A2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806F9AC: .4byte gDungeonGlobalData +_0806F9B0: .4byte 0x0001357c +_0806F9B4: .4byte 0x00000167 +_0806F9B8: .4byte gUnknown_202EE70 + thumb_func_end sub_806F910 + + thumb_func_start sub_806F9BC +sub_806F9BC: + push {r4,r5,lr} + sub sp, 0xC + lsls r0, 16 + asrs r4, r0, 16 + ldr r5, _0806FA40 + ldr r0, [r5] + movs r1, 0xCB + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0806FA3C + adds r0, r4, 0 + bl sub_808529C + lsls r0, 24 + cmp r0, 0 + beq _0806FA3C + cmp r4, 0x97 + bne _0806F9F2 + ldr r0, [r5] + movs r1, 0xCF + lsls r1, 3 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0806FA3C +_0806F9F2: + movs r0, 0xCC + lsls r0, 1 + cmp r4, r0 + beq _0806FA3C + ldr r0, _0806FA44 + cmp r4, r0 + beq _0806FA3C + ldr r0, _0806FA48 + cmp r4, r0 + beq _0806FA3C + movs r0, 0xD1 + lsls r0, 1 + cmp r4, r0 + beq _0806FA3C + ldr r0, _0806FA4C + cmp r4, r0 + beq _0806FA3C + adds r0, r4, 0 + bl GetUnk12 + lsls r0, 24 + cmp r0, 0 + bne _0806FA50 + adds r0, r4, 0 + bl GetFriendArea + lsls r0, 24 + lsrs r0, 24 + mov r1, sp + movs r2, 0 + movs r3, 0 + bl sub_8092638 + mov r0, sp + ldrb r0, [r0, 0x4] + cmp r0, 0 + bne _0806FA50 +_0806FA3C: + movs r0, 0 + b _0806FA52 + .align 2, 0 +_0806FA40: .4byte gDungeonGlobalData +_0806FA44: .4byte 0x00000199 +_0806FA48: .4byte 0x000001a1 +_0806FA4C: .4byte 0x000001a3 +_0806FA50: + movs r0, 0x1 +_0806FA52: + add sp, 0xC + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806F9BC + + thumb_func_start sub_806FA5C +sub_806FA5C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + mov r8, r0 + adds r5, r1, 0 + adds r6, r2, 0 + adds r0, r5, 0x4 + mov r1, r8 + adds r1, 0x4 + bl CalculateFacingDir + adds r4, r0, 0 + movs r0, 0 + mov r10, r0 + movs r1, 0 + ldrsh r0, [r6, r1] + bl GetFriendArea + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + adds r0, r5, 0 + adds r0, 0x22 + mov r2, r10 + strb r2, [r0] + mov r0, r8 + adds r1, r5, 0 + bl sub_807A0CC + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_806CE68 + ldr r0, _0806FAD4 + movs r3, 0 + ldrsh r1, [r6, r3] + bl CopyCyanSpeciesNametoBuffer + ldr r0, _0806FAD8 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl sub_8052B8C + cmp r0, 0 + bne _0806FAE4 + movs r4, 0 + ldrsh r1, [r6, r4] + ldr r0, _0806FADC + cmp r1, r0 + beq _0806FB28 + ldr r0, _0806FAE0 + ldr r1, [r0] + mov r0, r8 + bl SendMessage + b _0806FB28 + .align 2, 0 +_0806FAD4: .4byte gAvailablePokemonNames +_0806FAD8: .4byte gUnknown_80F9FE8 +_0806FADC: .4byte 0x0000019d +_0806FAE0: .4byte gUnknown_80FA004 +_0806FAE4: + movs r7, 0 + ldr r3, _0806FB2C + ldr r0, [r3] + ldr r2, _0806FB30 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806FB1A + mov r12, r3 + adds r4, r2, 0 + movs r2, 0 + movs r3, 0x1 +_0806FB00: + adds r2, 0x64 + adds r7, 0x1 + cmp r7, 0x3 + bgt _0806FB1A + mov r1, r12 + ldr r0, [r1] + adds r0, r2, r0 + adds r0, r4 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0806FB00 +_0806FB1A: + cmp r7, 0x4 + bne _0806FB38 + ldr r0, _0806FB34 + ldr r1, [r0] + mov r0, r8 + bl SendMessage +_0806FB28: + movs r0, 0 + b _0806FCF0 + .align 2, 0 +_0806FB2C: .4byte gRecruitedPokemonRef +_0806FB30: .4byte 0x00008df8 +_0806FB34: .4byte gUnknown_80FA030 +_0806FB38: + mov r0, r9 + bl GetFriendAreaStatus + lsls r0, 24 + cmp r0, 0 + bne _0806FB4E + mov r0, r9 + bl UnlockFriendArea + movs r2, 0x1 + mov r10, r2 +_0806FB4E: + movs r1, 0xFA + lsls r1, 1 + adds r0, r5, 0 + mov r2, r8 + bl sub_8068FE0 + ldr r1, _0806FC40 + movs r0, 0x64 + muls r0, r7 + ldr r3, _0806FC44 + adds r0, r3 + ldr r1, [r1] + adds r5, r1, r0 + movs r4, 0 + movs r0, 0x3 + strh r0, [r5] + strb r4, [r5, 0x2] + ldrh r0, [r6, 0xE] + strb r0, [r5, 0x3] + movs r0, 0x1 + strh r0, [r5, 0x8] + adds r0, r5, 0 + adds r0, 0x4C + movs r1, 0 + bl SetDefaultIQSkills + ldr r0, [r6, 0x44] + str r0, [r5, 0x54] + adds r0, r5, 0 + adds r0, 0x50 + strb r4, [r0] + ldr r0, _0806FC48 + strh r0, [r5, 0xA] + strh r7, [r5, 0xC] + ldrh r0, [r6] + strh r0, [r5, 0xE] + ldr r0, _0806FC4C + ldr r0, [r0] + ldr r4, _0806FC50 + adds r0, r4 + ldr r0, [r0] + str r0, [r5, 0x4] + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x10] + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x12] + ldr r0, [r6, 0x14] + str r0, [r5, 0x44] + ldr r0, [r6, 0x18] + str r0, [r5, 0x48] + movs r2, 0 + adds r7, r6, 0 + adds r7, 0x20 + adds r4, r6, 0 + adds r4, 0xA + adds r3, r6, 0 + adds r3, 0xC + adds r1, r5, 0 + adds r1, 0x14 +_0806FBC4: + adds r0, r4, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1, 0x2] + adds r1, 0x1 + adds r2, 0x1 + cmp r2, 0x1 + ble _0806FBC4 + ldr r0, [r6, 0x10] + str r0, [r5, 0x18] + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r7, 0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r6, 0x1C] + str r0, [r5, 0x40] + adds r4, r5, 0 + adds r4, 0x58 + movs r1, 0 + ldrsh r0, [r6, r1] + bl GetMonSpecies + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0xA + bl BoundedCopyStringtoBuffer + bl sub_8097848 + movs r2, 0 + ldrsh r0, [r6, r2] + movs r3, 0x4 + ldrsh r1, [r6, r3] + movs r3, 0x6 + ldrsh r2, [r6, r3] + add r3, sp, 0xC + str r3, [sp] + movs r3, 0 + str r3, [sp, 0x4] + movs r3, 0x1 + str r3, [sp, 0x8] + adds r3, r5, 0 + bl sub_806B8CC + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0 + bne _0806FC58 + ldr r0, _0806FC54 + ldr r1, [r0] + mov r0, r8 + bl SendMessage + strh r7, [r5] + b _0806FCEE + .align 2, 0 +_0806FC40: .4byte gRecruitedPokemonRef +_0806FC44: .4byte 0x00008df8 +_0806FC48: .4byte 0x0000ffff +_0806FC4C: .4byte gDungeonGlobalData +_0806FC50: .4byte 0x00000644 +_0806FC54: .4byte gUnknown_80FA058 +_0806FC58: + bl sub_8083D88 + movs r0, 0xA0 + movs r1, 0x46 + bl sub_803E708 + ldr r0, _0806FC78 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl sub_8052B8C + cmp r0, 0x1 + bne _0806FC94 + b _0806FC88 + .align 2, 0 +_0806FC78: .4byte gUnknown_80FA090 +_0806FC7C: + ldr r0, _0806FD00 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl PrintFieldMessage +_0806FC88: + adds r0, r4, 0 + bl sub_805FBE8 + lsls r0, 24 + cmp r0, 0 + beq _0806FC7C +_0806FC94: + ldr r4, _0806FD04 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_808D9DC + ldr r0, _0806FD08 + ldr r1, [r0] + mov r0, r8 + bl SendMessage + mov r0, r10 + cmp r0, 0 + beq _0806FCD8 + bl xxx_call_GetLeaderEntity + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _0806FD0C + mov r1, r9 + bl sub_8092558 + movs r0, 0xCE + bl PlaySound + ldr r0, _0806FD10 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl PrintFieldMessage +_0806FCD8: + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x97 + bne _0806FCEE + ldr r2, _0806FD14 + ldr r1, [r2] + movs r0, 0x1 + strb r0, [r1, 0x4] + ldr r1, [r2] + movs r0, 0x3 + strb r0, [r1, 0x11] +_0806FCEE: + movs r0, 0x1 +_0806FCF0: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0806FD00: .4byte gUnknown_80FA0C8 +_0806FD04: .4byte gAvailablePokemonNames +_0806FD08: .4byte gUnknown_80FA0F0 +_0806FD0C: .4byte gUnknown_202E628 +_0806FD10: .4byte gUnknown_80FA120 +_0806FD14: .4byte gDungeonGlobalData + thumb_func_end sub_806FA5C + + thumb_func_start sub_806FD18 +sub_806FD18: + push {r4-r7,lr} + ldr r4, [r0, 0x70] + movs r6, 0x1 + negs r6, r6 + movs r1, 0x4 + ldrsh r0, [r4, r1] + bl GetPokemonSize + lsls r0, 24 + lsrs r5, r0, 24 + movs r2, 0x2 + ldrsh r0, [r4, r2] + bl sub_806F9BC + lsls r0, 24 + cmp r0, 0 + beq _0806FDEC + bl sub_806F910 + movs r4, 0 + movs r0, 0x6 + subs r3, r0, r5 + ldr r7, _0806FD48 + b _0806FD4E + .align 2, 0 +_0806FD48: .4byte gUnknown_202EE70 +_0806FD4C: + adds r4, 0x1 +_0806FD4E: + cmp r4, r3 + bgt _0806FD70 + movs r2, 0 + cmp r2, r5 + bge _0806FD6A + adds r1, r4, r7 + b _0806FD64 +_0806FD5C: + adds r1, 0x1 + adds r2, 0x1 + cmp r2, r5 + bge _0806FD6A +_0806FD64: + ldrb r0, [r1] + cmp r0, 0 + beq _0806FD5C +_0806FD6A: + cmp r2, r5 + bne _0806FD4C + adds r6, r4, 0 +_0806FD70: + movs r0, 0x1 + negs r0, r0 + cmp r6, r0 + beq _0806FDEC + movs r4, 0 + ldr r3, _0806FDB4 + ldr r0, [r3] + ldr r2, _0806FDB8 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806FDAC + adds r6, r3, 0 + adds r5, r2, 0 + movs r2, 0 + movs r3, 0x1 +_0806FD94: + adds r2, 0x64 + adds r4, 0x1 + cmp r4, 0x3 + bgt _0806FDAC + ldr r0, [r6] + adds r0, r2, r0 + adds r0, r5 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0806FD94 +_0806FDAC: + cmp r4, 0x4 + beq _0806FDEC + movs r4, 0 + b _0806FDBE + .align 2, 0 +_0806FDB4: .4byte gRecruitedPokemonRef +_0806FDB8: .4byte 0x00008df8 +_0806FDBC: + adds r4, 0x1 +_0806FDBE: + cmp r4, 0x3 + bgt _0806FDDA + ldr r0, _0806FDE4 + ldr r0, [r0] + lsls r1, r4, 2 + ldr r2, _0806FDE8 + adds r0, r2 + adds r0, r1 + ldr r0, [r0] + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0806FDBC +_0806FDDA: + cmp r4, 0x4 + beq _0806FDEC + movs r0, 0x1 + b _0806FDEE + .align 2, 0 +_0806FDE4: .4byte gDungeonGlobalData +_0806FDE8: .4byte 0x0001357c +_0806FDEC: + movs r0, 0 +_0806FDEE: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806FD18 + + thumb_func_start sub_806FDF4 +sub_806FDF4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x60 + str r0, [sp, 0x58] + mov r10, r1 + str r2, [sp, 0x5C] + movs r0, 0 + mov r9, r0 + str r0, [r2] + add r0, sp, 0xC + bl sub_8069D4C + movs r6, 0 + ldr r3, _0806FE50 + ldr r0, [r3] + ldr r2, _0806FE54 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806FE46 + adds r5, r3, 0 + adds r4, r2, 0 + movs r2, 0 + movs r3, 0x1 +_0806FE2E: + adds r2, 0x64 + adds r6, 0x1 + cmp r6, 0x3 + bgt _0806FE46 + ldr r0, [r5] + adds r0, r2, r0 + adds r0, r4 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0806FE2E +_0806FE46: + cmp r6, 0x4 + bne _0806FE58 + movs r0, 0 + b _0806FFF8 + .align 2, 0 +_0806FE50: .4byte gRecruitedPokemonRef +_0806FE54: .4byte 0x00008df8 +_0806FE58: + add r0, sp, 0xC + movs r1, 0 + ldrsh r0, [r0, r1] + bl GetFriendArea + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _0806FF74 + movs r0, 0x64 + muls r0, r6 + ldr r2, _0806FF78 + adds r0, r2 + ldr r1, [r1] + adds r5, r1, r0 + movs r4, 0 + movs r0, 0x3 + strh r0, [r5] + strb r4, [r5, 0x2] + add r0, sp, 0xC + ldrh r0, [r0, 0xE] + strb r0, [r5, 0x3] + movs r0, 0x1 + strh r0, [r5, 0x8] + adds r0, r5, 0 + adds r0, 0x4C + movs r1, 0 + bl SetDefaultIQSkills + ldr r0, [sp, 0x50] + str r0, [r5, 0x54] + adds r0, r5, 0 + adds r0, 0x50 + strb r4, [r0] + ldr r0, _0806FF7C + strh r0, [r5, 0xA] + strh r6, [r5, 0xC] + add r0, sp, 0xC + ldrh r0, [r0] + strh r0, [r5, 0xE] + ldr r0, _0806FF80 + ldr r0, [r0] + ldr r3, _0806FF84 + adds r0, r3 + ldr r0, [r0] + str r0, [r5, 0x4] + add r0, sp, 0xC + ldrh r0, [r0, 0x8] + strh r0, [r5, 0x10] + add r0, sp, 0xC + ldrh r0, [r0, 0x8] + strh r0, [r5, 0x12] + ldr r0, [sp, 0x20] + str r0, [r5, 0x44] + ldr r0, [sp, 0x24] + str r0, [r5, 0x48] + movs r2, 0 + add r6, sp, 0x2C + add r4, sp, 0x54 + mov r8, r4 + mov r4, sp + adds r4, 0x16 + add r3, sp, 0x18 + adds r1, r5, 0 + adds r1, 0x14 +_0806FED8: + adds r0, r4, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1, 0x2] + adds r1, 0x1 + adds r2, 0x1 + cmp r2, 0x1 + ble _0806FED8 + ldr r0, [sp, 0x1C] + str r0, [r5, 0x18] + adds r1, r5, 0 + adds r1, 0x1C + adds r0, r6, 0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [sp, 0x28] + str r0, [r5, 0x40] + adds r4, r5, 0 + adds r4, 0x58 + add r0, sp, 0xC + movs r1, 0 + ldrsh r0, [r0, r1] + bl GetMonSpecies + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0xA + bl BoundedCopyStringtoBuffer + adds r0, r7, 0 + bl GetFriendAreaStatus + lsls r0, 24 + cmp r0, 0 + bne _0806FF34 + adds r0, r7, 0 + bl UnlockFriendArea + movs r2, 0x1 + mov r9, r2 +_0806FF34: + bl sub_8097848 + movs r1, 0xFA + lsls r1, 1 + mov r0, r10 + ldr r2, [sp, 0x58] + bl sub_8068FE0 + add r0, sp, 0xC + movs r3, 0 + ldrsh r0, [r0, r3] + add r1, sp, 0xC + movs r2, 0x4 + ldrsh r1, [r1, r2] + add r2, sp, 0xC + movs r3, 0x6 + ldrsh r2, [r2, r3] + mov r3, r8 + str r3, [sp] + movs r3, 0 + str r3, [sp, 0x4] + str r3, [sp, 0x8] + adds r3, r5, 0 + bl sub_806B8CC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0806FF88 + strh r0, [r5] + b _0806FFF6 + .align 2, 0 +_0806FF74: .4byte gRecruitedPokemonRef +_0806FF78: .4byte 0x00008df8 +_0806FF7C: .4byte 0x0000ffff +_0806FF80: .4byte gDungeonGlobalData +_0806FF84: .4byte 0x00000644 +_0806FF88: + ldr r0, _0806FF9C + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl sub_8052B8C + cmp r0, 0x1 + bne _0806FFB8 + b _0806FFAC + .align 2, 0 +_0806FF9C: .4byte gUnknown_80FA090 +_0806FFA0: + ldr r0, _08070008 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl PrintFieldMessage +_0806FFAC: + adds r0, r4, 0 + bl sub_805FBE8 + lsls r0, 24 + cmp r0, 0 + beq _0806FFA0 +_0806FFB8: + mov r4, r9 + cmp r4, 0 + beq _0806FFE6 + bl xxx_call_GetLeaderEntity + adds r1, r0, 0 + ldr r0, _0807000C + movs r2, 0 + bl SetMessageArgument + ldr r0, _08070010 + adds r1, r7, 0 + bl sub_8092558 + movs r0, 0xCE + bl PlaySound + ldr r0, _08070014 + ldr r1, [r0] + movs r0, 0 + movs r2, 0x1 + bl PrintFieldMessage +_0806FFE6: + ldr r0, _08070018 + adds r1, r5, 0 + movs r2, 0 + bl sub_808D9DC + ldr r0, [sp, 0x54] + ldr r1, [sp, 0x5C] + str r0, [r1] +_0806FFF6: + movs r0, 0x1 +_0806FFF8: + add sp, 0x60 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08070008: .4byte gUnknown_80FA0C8 +_0807000C: .4byte gAvailablePokemonNames +_08070010: .4byte gUnknown_202E628 +_08070014: .4byte gUnknown_80FA120 +_08070018: .4byte gUnknown_202E088 + thumb_func_end sub_806FDF4 + + .align 2,0 diff --git a/asm/code_807034C.s b/asm/code_807034C.s index c8f4d56..83d614f 100644 --- a/asm/code_807034C.s +++ b/asm/code_807034C.s @@ -858,7 +858,7 @@ sub_8070968: ldr r0, _0807098C ldr r3, [r0] adds r0, r4, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 b _080709BA .align 2, 0 _08070988: .4byte gUnknown_8106FA4 diff --git a/asm/code_80718D8.s b/asm/code_80718D8.s index f1fe7a5..4732f6b 100644 --- a/asm/code_80718D8.s +++ b/asm/code_80718D8.s @@ -3173,7 +3173,7 @@ _080733DE: mov r0, r8 adds r1, r5, 0 movs r2, 0x1 - bl IsMoveUsable_2 + bl IsMoveUsable lsls r0, 24 cmp r0, 0 bne _08073440 @@ -3384,7 +3384,7 @@ _0807357A: adds r1, r5, 0 movs r2, 0x1 str r3, [sp, 0x14] - bl IsMoveUsable_2 + bl IsMoveUsable lsls r0, 24 ldr r3, [sp, 0x14] cmp r0, 0 diff --git a/asm/code_8075BA4.s b/asm/code_8075BA4.s index f07f25e..2f26f52 100644 --- a/asm/code_8075BA4.s +++ b/asm/code_8075BA4.s @@ -2761,9215 +2761,4 @@ _0807722E: _08077238: .4byte gUnknown_80FC21C thumb_func_end sub_8077160 - thumb_func_start GetFlashFireStatus -GetFlashFireStatus: - push {r4,lr} - adds r4, r0, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08077258 - adds r0, r4, 0 - movs r1, 0x48 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - bne _0807725C -_08077258: - movs r0, 0 - b _0807726C -_0807725C: - ldr r0, [r4, 0x70] - movs r1, 0x28 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - bgt _0807726A - movs r0, 0x2 - b _0807726C -_0807726A: - movs r0, 0x1 -_0807726C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetFlashFireStatus - - thumb_func_start sub_8077274 -sub_8077274: - push {r4,r5,lr} - adds r5, r1, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080772B4 - ldr r0, [r5, 0x70] - adds r4, r0, 0 - ldr r0, _080772BC - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - movs r0, 0x28 - ldrsh r1, [r4, r0] - adds r1, 0x1 - cmp r1, 0x1 - ble _0807729E - movs r1, 0x2 -_0807729E: - movs r2, 0x28 - ldrsh r0, [r4, r2] - cmp r0, r1 - beq _080772AE - strh r1, [r4, 0x28] - adds r0, r5, 0 - bl sub_8041C58 -_080772AE: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_080772B4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080772BC: .4byte gAvailablePokemonNames - thumb_func_end sub_8077274 - - thumb_func_start sub_80772C0 -sub_80772C0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r0 - adds r5, r1, 0 - adds r4, r2, 0 - adds r7, r3, 0 - ldr r0, [sp, 0x20] - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080772E6 - b _08077422 -_080772E6: - cmp r4, 0 - beq _08077300 - ldr r0, _080772F8 - ldr r1, _080772FC - ldr r1, [r1] - bl strcpy - b _0807730A - .align 2, 0 -_080772F8: .4byte gUnknown_202DE58 -_080772FC: .4byte gUnknown_80FC0C8 -_08077300: - ldr r0, _08077340 - ldr r1, _08077344 - ldr r1, [r1] - bl strcpy -_0807730A: - cmp r7, 0xFF - bgt _08077320 - mov r0, r9 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_8071728 - lsls r0, 24 - cmp r0, 0 - beq _08077320 - b _08077422 -_08077320: - adds r0, r5, 0 - movs r1, 0xB - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _08077350 - cmp r7, 0xFF - bgt _08077350 - ldr r0, _08077348 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _0807734C - b _08077376 - .align 2, 0 -_08077340: .4byte gUnknown_202DE58 -_08077344: .4byte gUnknown_80FC0B8 -_08077348: .4byte gAvailablePokemonNames -_0807734C: .4byte gUnknown_80FD550 -_08077350: - adds r0, r5, 0 - movs r1, 0x9 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0807738C - cmp r4, 0 - bne _0807738C - cmp r7, 0xFF - bgt _0807738C - cmp r6, 0 - beq _08077422 - ldr r0, _08077384 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08077388 -_08077376: - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 - b _08077422 - .align 2, 0 -_08077384: .4byte gAvailablePokemonNames -_08077388: .4byte gUnknown_80FCA60 -_0807738C: - ldr r0, [r5, 0x70] - mov r8, r0 - ldr r0, _080773B8 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - lsls r1, r4, 2 - mov r0, r8 - adds r0, 0x2C - adds r0, r1 - ldr r0, [r0] - mov r10, r0 - adds r6, r1, 0 - cmp r7, 0xFF - bgt _080773BC - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8041FD8 - b _080773C4 - .align 2, 0 -_080773B8: .4byte gAvailablePokemonNames -_080773BC: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8041FB4 -_080773C4: - mov r0, r8 - adds r0, 0x2C - adds r4, r0, r6 - ldr r0, [r4] - adds r1, r7, 0 - bl sub_8009DA4 - str r0, [r4] - cmp r0, 0x1 - bgt _080773DC - movs r0, 0x2 - str r0, [r4] -_080773DC: - ldr r0, [r4] - ldr r1, _080773F0 - cmp r0, r1 - ble _080773E6 - str r1, [r4] -_080773E6: - ldr r0, [r4] - cmp r10, r0 - ble _080773F8 - ldr r0, _080773F4 - b _080773FE - .align 2, 0 -_080773F0: .4byte 0x000063fd -_080773F4: .4byte gUnknown_80FC11C -_080773F8: - cmp r10, r0 - bge _08077410 - ldr r0, _0807740C -_080773FE: - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 - b _0807741C - .align 2, 0 -_0807740C: .4byte gUnknown_80FC118 -_08077410: - ldr r0, _08077430 - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 -_0807741C: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_08077422: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077430: .4byte gUnknown_80FC184 - thumb_func_end sub_80772C0 - - thumb_func_start sub_8077434 -sub_8077434: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r0 - adds r5, r1, 0 - adds r4, r2, 0 - mov r8, r3 - ldr r0, [sp, 0x20] - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807752E - cmp r4, 0 - beq _08077470 - ldr r0, _08077468 - ldr r1, _0807746C - ldr r1, [r1] - bl strcpy - b _0807747A - .align 2, 0 -_08077468: .4byte gUnknown_202DE58 -_0807746C: .4byte gUnknown_80FC0AC -_08077470: - ldr r0, _080774BC - ldr r1, _080774C0 - ldr r1, [r1] - bl strcpy -_0807747A: - mov r0, r8 - cmp r0, 0xFF - bgt _08077490 - mov r0, r9 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_8071728 - lsls r0, 24 - cmp r0, 0 - bne _0807752E -_08077490: - ldr r7, [r5, 0x70] - ldr r0, _080774C4 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - lsls r1, r4, 2 - adds r0, r7, 0 - adds r0, 0x34 - adds r0, r1 - ldr r0, [r0] - mov r10, r0 - adds r6, r1, 0 - mov r0, r8 - cmp r0, 0xFF - bgt _080774C8 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_804201C - b _080774D0 - .align 2, 0 -_080774BC: .4byte gUnknown_202DE58 -_080774C0: .4byte gUnknown_80FC09C -_080774C4: .4byte gAvailablePokemonNames -_080774C8: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8041FFC -_080774D0: - adds r0, r7, 0 - adds r0, 0x34 - adds r4, r0, r6 - ldr r0, [r4] - mov r1, r8 - bl sub_8009DA4 - str r0, [r4] - cmp r0, 0x1 - bgt _080774E8 - movs r0, 0x2 - str r0, [r4] -_080774E8: - ldr r0, [r4] - ldr r1, _080774FC - cmp r0, r1 - ble _080774F2 - str r1, [r4] -_080774F2: - ldr r0, [r4] - cmp r10, r0 - ble _08077504 - ldr r0, _08077500 - b _0807750A - .align 2, 0 -_080774FC: .4byte 0x000063fd -_08077500: .4byte gUnknown_80FC114 -_08077504: - cmp r10, r0 - bge _0807751C - ldr r0, _08077518 -_0807750A: - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 - b _08077528 - .align 2, 0 -_08077518: .4byte gUnknown_80FC0FC -_0807751C: - ldr r0, _0807753C - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 -_08077528: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_0807752E: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807753C: .4byte gUnknown_80FC180 - thumb_func_end sub_8077434 - - thumb_func_start sub_8077540 -sub_8077540: - push {r4-r7,lr} - adds r7, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080775D2 - ldr r6, [r4, 0x70] - ldr r0, _08077578 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8042040 - cmp r5, 0 - beq _08077584 - ldr r0, _0807757C - ldr r1, _08077580 - ldr r1, [r1] - bl strcpy - b _0807758E - .align 2, 0 -_08077578: .4byte gAvailablePokemonNames -_0807757C: .4byte gUnknown_202DE58 -_08077580: .4byte gUnknown_80FC090 -_08077584: - ldr r0, _080775B4 - ldr r1, _080775B8 - ldr r1, [r1] - bl strcpy -_0807758E: - lsls r0, r5, 1 - adds r1, r6, 0 - adds r1, 0x24 - adds r1, r0 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0x13 - bgt _080775C0 - adds r0, r2, 0x1 - strh r0, [r1] - ldr r0, _080775BC - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080775CC - .align 2, 0 -_080775B4: .4byte gUnknown_202DE58 -_080775B8: .4byte gUnknown_80FC084 -_080775BC: .4byte gUnknown_80FC1C4 -_080775C0: - ldr r0, _080775D8 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080775CC: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080775D2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080775D8: .4byte gUnknown_80FC218 - thumb_func_end sub_8077540 - - thumb_func_start sub_80775DC -sub_80775DC: - push {r4-r7,lr} - adds r7, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r3, 24 - lsrs r4, r3, 24 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080776B6 - cmp r6, 0 - beq _0807760C - ldr r0, _08077604 - ldr r1, _08077608 - ldr r1, [r1] - bl strcpy - b _08077616 - .align 2, 0 -_08077604: .4byte gUnknown_202DE58 -_08077608: .4byte gUnknown_80FC090 -_0807760C: - ldr r0, _08077654 - ldr r1, _08077658 - ldr r1, [r1] - bl strcpy -_08077616: - adds r0, r7, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_8071728 - lsls r0, 24 - cmp r0, 0 - bne _080776B6 - adds r0, r5, 0 - movs r1, 0x1E - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _08077664 - cmp r6, 0 - bne _08077664 - cmp r4, 0 - beq _080776B6 - ldr r0, _0807765C - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08077660 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _080776B6 - .align 2, 0 -_08077654: .4byte gUnknown_202DE58 -_08077658: .4byte gUnknown_80FC084 -_0807765C: .4byte gAvailablePokemonNames -_08077660: .4byte gUnknown_80FCA64 -_08077664: - ldr r4, [r5, 0x70] - ldr r0, _0807769C - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_8042060 - lsls r0, r6, 1 - adds r4, 0x24 - adds r1, r4, r0 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080776A4 - subs r0, r2, 0x1 - strh r0, [r1] - ldr r0, _080776A0 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _080776B0 - .align 2, 0 -_0807769C: .4byte gAvailablePokemonNames -_080776A0: .4byte gUnknown_80FC1A4 -_080776A4: - ldr r0, _080776BC - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 -_080776B0: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_080776B6: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080776BC: .4byte gUnknown_80FC1F0 - thumb_func_end sub_80775DC - - thumb_func_start sub_80776C0 -sub_80776C0: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08077776 - adds r0, r5, 0 - adds r1, r4, 0 - adds r2, r6, 0 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _08077776 - adds r0, r4, 0 - movs r1, 0x1F - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _08077718 - ldr r0, _08077710 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - cmp r6, 0 - beq _08077776 - ldr r0, _08077714 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08077776 - .align 2, 0 -_08077710: .4byte gAvailablePokemonNames -_08077714: .4byte gUnknown_80FCC18 -_08077718: - ldr r6, [r4, 0x70] - ldr r0, _08077758 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r6, 0 - adds r1, 0xBC - ldrb r0, [r1] - cmp r0, 0x1 - beq _08077764 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _0807775C - adds r0, r4, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - adds r1, r6, 0 - adds r1, 0xBD - strb r0, [r1] - adds r0, r4, 0 - bl sub_80420A0 - ldr r0, _08077760 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08077770 - .align 2, 0 -_08077758: .4byte gAvailablePokemonNames -_0807775C: .4byte gUnknown_80F4E3C -_08077760: .4byte gUnknown_80FB2E0 -_08077764: - ldr r0, _0807777C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08077770: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08077776: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807777C: .4byte gUnknown_80FB300 - thumb_func_end sub_80776C0 - - thumb_func_start sub_8077780 -sub_8077780: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r7, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080777A2 - b _080778F0 -_080777A2: - adds r0, r7, 0 - adds r1, r5, 0 - mov r2, r10 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - beq _080777B4 - b _080778F0 -_080777B4: - adds r0, r5, 0 - movs r1, 0x16 - bl HasAbility - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080777EC - ldr r0, _080777E4 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - mov r0, r10 - cmp r0, 0 - bne _080777D6 - b _080778F0 -_080777D6: - ldr r0, _080777E8 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _080778F0 - .align 2, 0 -_080777E4: .4byte gAvailablePokemonNames -_080777E8: .4byte gUnknown_80FCBF8 -_080777EC: - movs r6, 0x1 - ldr r1, [r5, 0x70] - mov r8, r1 - ldr r0, _08077844 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - mov r1, r8 - adds r1, 0xAC - ldrb r0, [r1] - cmp r0, 0x4 - beq _08077850 - movs r0, 0x4 - strb r0, [r1] - ldr r1, _08077848 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - mov r1, r8 - adds r1, 0xAD - strb r0, [r1] - mov r0, r8 - adds r0, 0xAE - strb r4, [r0] - adds r0, 0x1 - strb r4, [r0] - movs r6, 0 - ldr r0, _0807784C - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 - adds r0, r5, 0 - bl sub_8041C1C - adds r0, r5, 0 - bl GetMovementSpeed - b _0807785C - .align 2, 0 -_08077844: .4byte gAvailablePokemonNames -_08077848: .4byte gUnknown_80F4E50 -_0807784C: .4byte gUnknown_80FB2AC -_08077850: - ldr r0, _08077900 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 -_0807785C: - adds r0, r5, 0 - movs r1, 0x19 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _080778EA - cmp r6, 0 - bne _080778EA - movs r3, 0 - mov r9, r3 - movs r6, 0 -_08077874: - movs r1, 0x4 - ldrsh r0, [r5, r1] - ldr r1, _08077904 - lsls r2, r6, 2 - adds r2, r1 - movs r3, 0 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r3, 0x6 - ldrsh r1, [r5, r3] - movs r3, 0x2 - ldrsh r2, [r2, r3] - adds r1, r2 - bl GetMapTile_1 - ldr r4, [r0, 0x10] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080778E4 - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x1 - bne _080778E4 - mov r0, r9 - cmp r0, 0 - bne _080778CA - movs r1, 0x1 - mov r9, r1 - ldr r0, _08077908 - mov r1, r8 - movs r2, 0 - bl SetMessageArgument_2 - ldr r0, _0807790C - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 -_080778CA: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807167C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080778E4 - adds r0, r7, 0 - adds r1, r4, 0 - mov r2, r10 - bl sub_8077780 -_080778E4: - adds r6, 0x1 - cmp r6, 0x7 - ble _08077874 -_080778EA: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_080778F0: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077900: .4byte gUnknown_80FB2CC -_08077904: .4byte gAdjacentTileOffsets -_08077908: .4byte gAvailablePokemonNames -_0807790C: .4byte gUnknown_80FF01C - thumb_func_end sub_8077780 - - thumb_func_start sub_8077910 -sub_8077910: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - adds r5, r1, 0 - adds r4, r2, 0 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080779DE - cmp r4, 0 - bne _08077940 - ldr r1, _08077964 - adds r0, r5, 0 - movs r2, 0 - bl sub_808417C - adds r4, r0, 0x1 -_08077940: - ldr r6, [r5, 0x70] - ldr r0, _08077968 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - bl GetMovementSpeed - adds r7, r0, 0 - cmp r7, 0x4 - bne _08077970 - mov r0, r9 - cmp r0, 0 - beq _080779D8 - ldr r0, _0807796C - b _0807799E - .align 2, 0 -_08077964: .4byte gUnknown_80F4E40 -_08077968: .4byte gAvailablePokemonNames -_0807796C: .4byte gUnknown_80FC2B8 -_08077970: - movs r2, 0 - movs r0, 0x84 - lsls r0, 1 - adds r1, r6, r0 - b _08077988 -_0807797A: - adds r2, 0x1 - cmp r2, 0x4 - bgt _08077990 - movs r1, 0x84 - lsls r1, 1 - adds r0, r6, r1 - adds r1, r0, r2 -_08077988: - ldrb r0, [r1] - cmp r0, 0 - bne _0807797A - strb r4, [r1] -_08077990: - adds r0, r5, 0 - bl GetMovementSpeed - adds r4, r0, 0 - cmp r7, r4 - bne _080779B0 - ldr r0, _080779AC -_0807799E: - ldr r2, [r0] - mov r0, r8 - adds r1, r5, 0 - bl sub_80522F4 - b _080779D8 - .align 2, 0 -_080779AC: .4byte gUnknown_80FC298 -_080779B0: - adds r0, r5, 0 - bl sub_8041CB8 - ldr r1, _080779EC - lsls r0, r4, 2 - adds r0, r1 - ldr r2, [r0] - mov r0, r8 - adds r1, r5, 0 - bl sub_80522F4 - adds r1, r6, 0 - adds r1, 0xF8 - movs r2, 0 - movs r0, 0x1 - strb r0, [r1] - movs r1, 0xA4 - lsls r1, 1 - adds r0, r6, r1 - strb r2, [r0] -_080779D8: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_080779DE: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080779EC: .4byte gUnknown_80FA124 - thumb_func_end sub_8077910 - - thumb_func_start sub_80779F0 -sub_80779F0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r10, r0 - adds r5, r1, 0 - mov r8, r2 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08077AD0 - mov r0, r10 - adds r1, r5, 0 - mov r2, r9 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _08077AD0 - ldr r7, [r5, 0x70] - ldr r0, _08077A48 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - bl GetMovementSpeed - str r0, [sp] - cmp r0, 0 - bne _08077A50 - mov r0, r9 - cmp r0, 0 - beq _08077ACA - ldr r0, _08077A4C - b _08077AA2 - .align 2, 0 -_08077A48: .4byte gAvailablePokemonNames -_08077A4C: .4byte gUnknown_80FC2D8 -_08077A50: - movs r0, 0 - cmp r0, r8 - bge _08077A8C -_08077A56: - movs r1, 0 - adds r6, r0, 0x1 -_08077A5A: - ldr r2, _08077A78 - adds r0, r7, r2 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - bne _08077A80 - adds r0, r5, 0 - ldr r1, _08077A7C - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - strb r0, [r4] - b _08077A86 - .align 2, 0 -_08077A78: .4byte 0x0000010d -_08077A7C: .4byte gUnknown_80F4E48 -_08077A80: - adds r1, 0x1 - cmp r1, 0x4 - ble _08077A5A -_08077A86: - adds r0, r6, 0 - cmp r0, r8 - blt _08077A56 -_08077A8C: - adds r0, r5, 0 - bl GetMovementSpeed - adds r4, r0, 0 - ldr r0, [sp] - cmp r0, r4 - bne _08077AB4 - mov r2, r9 - cmp r2, 0 - beq _08077ACA - ldr r0, _08077AB0 -_08077AA2: - ldr r2, [r0] - mov r0, r10 - adds r1, r5, 0 - bl sub_80522F4 - b _08077ACA - .align 2, 0 -_08077AB0: .4byte gUnknown_80FC298 -_08077AB4: - adds r0, r5, 0 - bl sub_8041CCC - ldr r0, _08077AE0 - lsls r1, r4, 2 - adds r1, r0 - ldr r2, [r1] - mov r0, r10 - adds r1, r5, 0 - bl sub_80522F4 -_08077ACA: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_08077AD0: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077AE0: .4byte gUnknown_80FA124 - thumb_func_end sub_80779F0 - - thumb_func_start sub_8077AE4 -sub_8077AE4: - push {r4-r7,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r5, r2, 24 - adds r7, r5, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08077BAA - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _08077BAA - ldr r0, _08077B2C - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r4, 0 - movs r1, 0x12 - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _08077B34 - cmp r5, 0 - beq _08077BAA - ldr r0, _08077B30 - b _08077B48 - .align 2, 0 -_08077B2C: .4byte gAvailablePokemonNames -_08077B30: .4byte gUnknown_80FD500 -_08077B34: - adds r0, r4, 0 - movs r1, 0x40 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _08077B58 - cmp r7, 0 - beq _08077BAA - ldr r0, _08077B54 -_08077B48: - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08077BAA - .align 2, 0 -_08077B54: .4byte gUnknown_80FCDB4 -_08077B58: - adds r0, r4, 0 - bl sub_8041BE8 - ldr r5, [r4, 0x70] - adds r1, r5, 0 - adds r1, 0xBC - ldrb r0, [r1] - cmp r0, 0x2 - beq _08077B98 - movs r0, 0x2 - strb r0, [r1] - ldr r1, _08077B90 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xBD - strb r0, [r1] - ldr r0, _08077B94 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08077BA4 - .align 2, 0 -_08077B90: .4byte gUnknown_80F4E4C -_08077B94: .4byte gUnknown_80FB25C -_08077B98: - ldr r0, _08077BB0 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08077BA4: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08077BAA: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077BB0: .4byte gUnknown_80FB27C - thumb_func_end sub_8077AE4 - - thumb_func_start sub_8077BB4 -sub_8077BB4: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r5, r2, 24 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08077C3A - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _08077C3A - ldr r5, [r4, 0x70] - ldr r0, _08077C1C - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xBC - ldrb r0, [r1] - cmp r0, 0x4 - beq _08077C28 - movs r0, 0x4 - strb r0, [r1] - ldr r1, _08077C20 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xBD - strb r0, [r1] - adds r0, r4, 0 - bl sub_8041BF8 - ldr r0, _08077C24 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08077C34 - .align 2, 0 -_08077C1C: .4byte gAvailablePokemonNames -_08077C20: .4byte gUnknown_80F4ECC -_08077C24: .4byte gUnknown_80FB940 -_08077C28: - ldr r0, _08077C40 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08077C34: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08077C3A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08077C40: .4byte gUnknown_80FB960 - thumb_func_end sub_8077BB4 - - thumb_func_start HealTargetHP -HealTargetHP: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r9, r0 - adds r5, r1, 0 - mov r10, r2 - mov r8, r3 - ldr r0, [sp, 0x24] - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08077C6E - b _08077DC8 -_08077C6E: - ldr r4, [r5, 0x70] - movs r0, 0x10 - ldrsh r7, [r4, r0] - movs r1, 0xE - ldrsh r6, [r4, r1] - ldrh r2, [r4, 0xE] - adds r0, r6, 0 - ldrh r1, [r4, 0x10] - mov r12, r1 - adds r1, r7, 0 - cmp r0, r1 - bne _08077C8C - mov r0, r8 - cmp r0, 0 - bgt _08077C92 -_08077C8C: - mov r3, r10 - cmp r3, 0 - bne _08077CD0 -_08077C92: - ldrh r1, [r4, 0x10] - add r1, r8 - strh r1, [r4, 0x10] - ldrh r0, [r4, 0xE] - add r0, r8 - strh r0, [r4, 0xE] - lsls r1, 16 - asrs r1, 16 - ldr r0, _08077CCC - cmp r1, r0 - ble _08077CAA - strh r0, [r4, 0x10] -_08077CAA: - movs r1, 0xE - ldrsh r0, [r4, r1] - movs r3, 0x10 - ldrsh r2, [r4, r3] - ldrh r1, [r4, 0x10] - cmp r0, r2 - ble _08077CBA - strh r1, [r4, 0xE] -_08077CBA: - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, r2 - bne _08077CC4 - adds r6, r0, 0 -_08077CC4: - adds r0, r5, 0 - bl sub_8041C94 - b _08077CE8 - .align 2, 0 -_08077CCC: .4byte 0x000003e7 -_08077CD0: - mov r3, r10 - adds r0, r2, r3 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, r1 - ble _08077CE2 - mov r0, r12 - strh r0, [r4, 0xE] -_08077CE2: - adds r0, r5, 0 - bl sub_8041CA8 -_08077CE8: - movs r1, 0x10 - ldrsh r0, [r4, r1] - subs r7, r0, r7 - movs r2, 0xE - ldrsh r0, [r4, r2] - subs r6, r0, r6 - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites - ldr r0, _08077D1C - str r6, [r0] - str r7, [r0, 0x4] - ldr r0, _08077D20 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - cmp r6, 0 - bne _08077D28 - cmp r7, 0 - bne _08077D28 - ldr r3, [sp] - cmp r3, 0 - beq _08077DC8 - ldr r0, _08077D24 - b _08077D3A - .align 2, 0 -_08077D1C: .4byte gUnknown_202DE30 -_08077D20: .4byte gAvailablePokemonNames -_08077D24: .4byte gUnknown_80FB204 -_08077D28: - mov r0, r8 - cmp r0, 0 - bne _08077D4C - cmp r6, 0 - bne _08077D4C - ldr r1, [sp] - cmp r1, 0 - beq _08077DC8 - ldr r0, _08077D48 -_08077D3A: - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 - b _08077DC8 - .align 2, 0 -_08077D48: .4byte gUnknown_80FB21C -_08077D4C: - movs r2, 0 - mov r8, r2 - cmp r7, 0 - beq _08077D6E - adds r0, r5, 0 - bl sub_8045888 - lsls r0, 24 - cmp r0, 0 - beq _08077D62 - mov r8, r7 -_08077D62: - ldr r0, _08077DA0 - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 -_08077D6E: - cmp r6, 0 - beq _08077DB4 - adds r0, r5, 0 - bl sub_8045888 - lsls r0, 24 - cmp r0, 0 - beq _08077D80 - mov r8, r6 -_08077D80: - mov r3, r10 - cmp r3, 0 - beq _08077DB4 - movs r0, 0x10 - ldrsh r1, [r4, r0] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _08077DA8 - ldr r0, _08077DA4 - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 - b _08077DB4 - .align 2, 0 -_08077DA0: .4byte gUnknown_80FB240 -_08077DA4: .4byte gUnknown_80FB1E0 -_08077DA8: - ldr r0, _08077DD8 - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 -_08077DB4: - mov r3, r8 - cmp r3, 0 - beq _08077DC8 - movs r3, 0x1 - negs r3, r3 - mov r0, r8 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_803ED30 -_08077DC8: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077DD8: .4byte gUnknown_80FB1C4 - thumb_func_end HealTargetHP - - thumb_func_start sub_8077DDC -sub_8077DDC: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08077E3C - ldr r0, [r4, 0x70] - adds r1, r0, 0 - adds r1, 0xF1 - ldrb r0, [r1] - cmp r0, 0 - beq _08077E0C - ldr r0, _08077E08 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08077E3C - .align 2, 0 -_08077E08: .4byte gUnknown_80FAEF0 -_08077E0C: - movs r0, 0x1 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_75 - ldr r0, _08077E44 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08077E48 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - movs r0, 0 - bl sub_803F580 - bl sub_8040A84 - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08077E3C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08077E44: .4byte gAvailablePokemonNames -_08077E48: .4byte gUnknown_80FAEA0 - thumb_func_end sub_8077DDC - - thumb_func_start sub_8077E4C -sub_8077E4C: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08077EC0 - bl sub_8043D10 - lsls r0, 24 - cmp r0, 0 - beq _08077E70 - ldr r0, _08077E6C - b _08077E7E - .align 2, 0 -_08077E6C: .4byte gUnknown_80FAF3C -_08077E70: - ldr r0, [r4, 0x70] - adds r1, r0, 0 - adds r1, 0xF2 - ldrb r0, [r1] - cmp r0, 0 - beq _08077E90 - ldr r0, _08077E8C -_08077E7E: - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08077EC0 - .align 2, 0 -_08077E8C: .4byte gUnknown_80FAF1C -_08077E90: - movs r0, 0x1 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_76 - ldr r0, _08077EC8 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08077ECC - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - movs r0, 0 - bl sub_803F580 - bl sub_8040A84 - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08077EC0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08077EC8: .4byte gAvailablePokemonNames -_08077ECC: .4byte gUnknown_80FAEC8 - thumb_func_end sub_8077E4C - - thumb_func_start sub_8077ED0 -sub_8077ED0: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08077F30 - ldr r0, [r4, 0x70] - adds r1, r0, 0 - adds r1, 0xF0 - ldrb r0, [r1] - cmp r0, 0 - beq _08077F00 - ldr r0, _08077EFC - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08077F30 - .align 2, 0 -_08077EFC: .4byte gUnknown_80FAFD0 -_08077F00: - movs r0, 0x1 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_77 - ldr r0, _08077F38 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08077F3C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - movs r0, 0 - bl sub_803F580 - bl sub_8040A84 - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08077F30: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08077F38: .4byte gAvailablePokemonNames -_08077F3C: .4byte gUnknown_80FAFAC - thumb_func_end sub_8077ED0 - - thumb_func_start sub_8077F40 -sub_8077F40: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - mov r9, r6 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08077F62 - b _08078068 -_08077F62: - adds r0, r5, 0 - bl GetEntityType - mov r10, r0 - cmp r0, 0x1 - beq _08077F70 - b _08078068 -_08077F70: - ldr r7, [r4, 0x70] - cmp r5, r4 - bne _08077F88 - cmp r6, 0 - beq _08078068 - ldr r0, _08077F84 - ldr r2, [r0] - adds r0, r4, 0 - b _08078022 - .align 2, 0 -_08077F84: .4byte gPtrCantLeechSeedSelfMessage -_08077F88: - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, r9 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _08078068 - ldr r0, _08077FC0 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r4, 0 - movs r1, 0x4 - bl HasType - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0 - beq _08077FC8 - mov r0, r9 - cmp r0, 0 - beq _08078068 - ldr r0, _08077FC4 - b _0807801E - .align 2, 0 -_08077FC0: .4byte gAvailablePokemonNames -_08077FC4: .4byte gPtrCantLeechSeedMonMessage -_08077FC8: - adds r6, r7, 0 - adds r6, 0xD0 - ldrb r0, [r6] - cmp r0, 0x1 - beq _0807801C - cmp r0, 0x2 - bne _08077FE2 - ldr r0, _08078014 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08077FE2: - mov r1, r10 - strb r1, [r6] - ldr r1, _08078018 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - adds r1, r7, 0 - adds r1, 0xD9 - strb r0, [r1] - adds r0, r7, 0 - adds r0, 0xDA - mov r6, r8 - strb r6, [r0] - adds r0, r4, 0 - bl nullsub_78 - adds r1, r7, 0 - adds r1, 0xD8 - movs r0, 0xFF - strb r0, [r1] - movs r2, 0 - adds r3, r1, 0 - b _08078030 - .align 2, 0 -_08078014: .4byte gUnknown_80FAA8C -_08078018: .4byte gUnknown_80F4EB0 -_0807801C: - ldr r0, _0807802C -_0807801E: - ldr r2, [r0] - adds r0, r5, 0 -_08078022: - adds r1, r4, 0 - bl sub_80522F4 - b _08078068 - .align 2, 0 -_0807802C: .4byte gUnknown_80FAE7C -_08078030: - ldr r0, _08078078 - ldr r0, [r0] - lsls r1, r2, 2 - ldr r6, _0807807C - adds r0, r6 - adds r0, r1 - ldr r0, [r0] - cmp r5, r0 - bne _08078050 - strb r2, [r3] - ldr r0, [r5, 0x70] - adds r1, r7, 0 - adds r1, 0xD4 - adds r0, 0x98 - ldr r0, [r0] - str r0, [r1] -_08078050: - adds r2, 0x1 - cmp r2, 0x13 - ble _08078030 - ldr r0, _08078080 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08078068: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08078078: .4byte gDungeonGlobalData -_0807807C: .4byte 0x000135cc -_08078080: .4byte gUnknown_80FAE58 - thumb_func_end sub_8077F40 - - thumb_func_start sub_8078084 -sub_8078084: - push {r4-r6,lr} - ldr r6, [r0, 0x70] - movs r5, 0 -_0807808A: - ldr r0, _080780DC - ldr r0, [r0] - lsls r1, r5, 2 - ldr r2, _080780E0 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080780D0 - ldr r1, [r4, 0x70] - adds r3, r1, 0 - adds r3, 0xD0 - ldrb r0, [r3] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080780D0 - adds r0, r1, 0 - adds r0, 0xD4 - adds r1, r6, 0 - adds r1, 0x98 - ldr r2, [r0] - ldr r0, [r1] - cmp r2, r0 - bne _080780D0 - movs r0, 0 - strb r0, [r3] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080780D0: - adds r5, 0x1 - cmp r5, 0x13 - ble _0807808A - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080780DC: .4byte gDungeonGlobalData -_080780E0: .4byte 0x000135cc - thumb_func_end sub_8078084 - - thumb_func_start sub_80780E4 -sub_80780E4: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080781C4 - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x1 - bne _080781C4 - adds r0, r5, 0 - bl GetEntityType - cmp r0, 0x1 - bne _080781C4 - ldr r6, [r4, 0x70] - ldr r0, _0807816C - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r7, r6, 0 - adds r7, 0xD0 - ldrb r0, [r7] - cmp r0, 0x2 - beq _08078178 - cmp r0, 0x1 - bne _08078134 - ldr r0, _08078170 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80522F4 -_08078134: - movs r0, 0 - mov r8, r0 - movs r0, 0x2 - strb r0, [r7] - ldr r1, _08078174 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - adds r1, r6, 0 - adds r1, 0xD9 - strb r0, [r1] - adds r0, r6, 0 - adds r0, 0xDA - mov r1, r8 - strb r1, [r0] - adds r0, r5, 0 - bl nullsub_74 - adds r1, r6, 0 - adds r1, 0xD8 - movs r0, 0xFF - strb r0, [r1] - movs r2, 0 - adds r3, r1, 0 - b _0807818C - .align 2, 0 -_0807816C: .4byte gAvailablePokemonNames -_08078170: .4byte gUnknown_80FA79C -_08078174: .4byte gUnknown_80F4EF0 -_08078178: - ldr r0, _08078188 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _080781C4 - .align 2, 0 -_08078188: .4byte gUnknown_80FBB78 -_0807818C: - ldr r0, _080781D0 - ldr r0, [r0] - lsls r1, r2, 2 - ldr r7, _080781D4 - adds r0, r7 - adds r0, r1 - ldr r0, [r0] - cmp r5, r0 - bne _080781AC - strb r2, [r3] - ldr r0, [r5, 0x70] - adds r1, r6, 0 - adds r1, 0xD4 - adds r0, 0x98 - ldr r0, [r0] - str r0, [r1] -_080781AC: - adds r2, 0x1 - cmp r2, 0x13 - ble _0807818C - ldr r0, _080781D8 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80522F4 - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_080781C4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080781D0: .4byte gDungeonGlobalData -_080781D4: .4byte 0x000135cc -_080781D8: .4byte gUnknown_80FBB4C - thumb_func_end sub_80780E4 - - thumb_func_start sub_80781DC -sub_80781DC: - push {r4-r7,lr} - adds r7, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08078242 - ldr r5, [r4, 0x70] - ldr r0, _08078228 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xDC - ldrb r0, [r1] - cmp r0, 0x1 - beq _08078230 - movs r0, 0x1 - strb r0, [r1] - adds r1, r6, 0x1 - adds r0, r5, 0 - adds r0, 0xDD - strb r1, [r0] - adds r0, r4, 0 - bl sub_8041CDC - ldr r0, _0807822C - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _0807823C - .align 2, 0 -_08078228: .4byte gAvailablePokemonNames -_0807822C: .4byte gUnknown_80FB73C -_08078230: - ldr r0, _08078248 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r4, 0 - bl sub_80522F4 -_0807823C: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08078242: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08078248: .4byte gUnknown_80FB764 - thumb_func_end sub_80781DC - - thumb_func_start sub_807824C -sub_807824C: - push {r4-r7,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r7, r2, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080782C2 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _080782C2 - ldr r5, [r4, 0x70] - ldr r0, _080782A8 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xDC - ldrb r0, [r1] - cmp r0, 0x2 - beq _080782B0 - movs r0, 0x2 - strb r0, [r1] - adds r1, r7, 0x1 - adds r0, r5, 0 - adds r0, 0xDD - strb r1, [r0] - adds r0, r4, 0 - bl sub_8041CEC - ldr r0, _080782AC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080782BC - .align 2, 0 -_080782A8: .4byte gAvailablePokemonNames -_080782AC: .4byte gUnknown_80FB780 -_080782B0: - ldr r0, _080782C8 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080782BC: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080782C2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080782C8: .4byte gUnknown_80FB7A0 - thumb_func_end sub_807824C - - thumb_func_start sub_80782CC -sub_80782CC: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807833E - ldr r5, [r4, 0x70] - ldr r0, _08078320 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xDC - ldrb r0, [r1] - cmp r0, 0x3 - beq _0807832C - movs r0, 0x3 - strb r0, [r1] - ldr r1, _08078324 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xDD - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_79 - ldr r0, _08078328 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08078338 - .align 2, 0 -_08078320: .4byte gAvailablePokemonNames -_08078324: .4byte gUnknown_80F4EC4 -_08078328: .4byte gUnknown_80FB8BC -_0807832C: - ldr r0, _08078344 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08078338: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807833E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08078344: .4byte gUnknown_80FB8E4 - thumb_func_end sub_80782CC - - thumb_func_start sub_8078348 -sub_8078348: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080783BA - ldr r5, [r4, 0x70] - ldr r0, _0807839C - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xDC - ldrb r0, [r1] - cmp r0, 0x4 - beq _080783A8 - movs r0, 0x4 - strb r0, [r1] - ldr r1, _080783A0 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xDD - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_80 - ldr r0, _080783A4 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080783B4 - .align 2, 0 -_0807839C: .4byte gAvailablePokemonNames -_080783A0: .4byte gUnknown_80F4EC8 -_080783A4: .4byte gUnknown_80FB900 -_080783A8: - ldr r0, _080783C0 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080783B4: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080783BA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080783C0: .4byte gUnknown_80FB924 - thumb_func_end sub_8078348 - - thumb_func_start sub_80783C4 -sub_80783C4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - adds r5, r0, 0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x18] - adds r0, r7, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080783E8 - b _0807856A -_080783E8: - adds r0, r5, 0 - adds r1, r7, 0 - movs r2, 0x1 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - beq _080783FA - b _0807856A -_080783FA: - ldr r4, [r7, 0x70] - ldr r0, _08078420 - adds r1, r7, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r4, 0 - adds r1, 0xC8 - ldrb r0, [r1] - cmp r0, 0x2 - bne _08078428 - ldr r0, _08078424 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r7, 0 - bl sub_80522F4 - b _0807856A - .align 2, 0 -_08078420: .4byte gAvailablePokemonNames -_08078424: .4byte gUnknown_80FB994 -_08078428: - movs r6, 0 - mov r8, r1 - movs r0, 0xC9 - adds r0, r4 - mov r9, r0 - movs r1, 0xCA - adds r1, r4 - mov r10, r1 - adds r2, r4, 0 - adds r2, 0xCB - str r2, [sp, 0x1C] - adds r4, 0xCC - str r4, [sp, 0x20] -_08078442: - ldr r0, _0807857C - ldr r0, [r0] - lsls r1, r6, 2 - ldr r3, _08078580 - adds r0, r3 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08078480 - cmp r7, r4 - beq _08078480 - ldr r0, [r4, 0x70] - adds r0, 0xC8 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08078480 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0 - bl sub_807A5D0 - movs r0, 0x2A - bl sub_803E46C -_08078480: - adds r6, 0x1 - cmp r6, 0x13 - ble _08078442 - adds r0, r7, 0 - bl sub_8041D38 - ldr r0, _08078584 - adds r1, r7, 0 - movs r2, 0 - bl SetMessageArgument - mov r4, r8 - ldrb r0, [r4] - cmp r0, 0 - beq _080784A8 - adds r0, r5, 0 - adds r1, r7, 0 - movs r2, 0x2 - bl sub_807A5D0 -_080784A8: - movs r4, 0 - movs r0, 0x2 - mov r1, r8 - strb r0, [r1] - ldr r0, [r5, 0x70] - ldrb r0, [r0, 0x6] - mov r2, r9 - strb r0, [r2] - mov r3, sp - ldrb r0, [r3, 0x18] - mov r3, r10 - strb r0, [r3] - ldr r1, _08078588 - adds r0, r7, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - ldr r1, [sp, 0x1C] - strb r0, [r1] - ldr r2, [sp, 0x20] - strb r4, [r2] - adds r0, r7, 0 - bl sub_806CEBC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r7, 0 - bl sub_806CCB4 - ldr r0, _0807857C - ldr r0, [r0] - ldr r3, _0807858C - adds r0, r3 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _08078590 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r7, 0 - bl sub_80522F4 - movs r6, 0 - mov r8, r6 -_08078502: - ldr r0, _0807857C - ldr r0, [r0] - lsls r1, r6, 2 - ldr r4, _08078580 - adds r0, r4 - adds r0, r1 - ldr r0, [r0] - mov r9, r0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807855E - mov r5, r9 - ldr r4, [r5, 0x70] - adds r1, r4, 0 - adds r1, 0x78 - movs r0, 0x6 - strb r0, [r1] - adds r0, r4, 0 - adds r0, 0x80 - mov r1, r8 - str r1, [r0] - subs r0, 0x4 - strh r1, [r0] - ldrb r0, [r4, 0x7] - cmp r0, 0 - bne _0807855E - mov r1, sp - adds r0, r4, 0 - adds r0, 0x44 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - mov r0, r9 - movs r1, 0x1 - bl MoveIfPossible - adds r1, r4, 0 - adds r1, 0x44 - mov r0, sp - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} -_0807855E: - adds r6, 0x1 - cmp r6, 0x13 - ble _08078502 - adds r0, r7, 0 - bl DungeonEntityUpdateStatusSprites -_0807856A: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807857C: .4byte gDungeonGlobalData -_08078580: .4byte 0x000135cc -_08078584: .4byte gAvailablePokemonNames -_08078588: .4byte gUnknown_80F4ED0 -_0807858C: .4byte 0x000037fc -_08078590: .4byte gUnknown_80FB978 - thumb_func_end sub_80783C4 - - thumb_func_start sub_8078594 -sub_8078594: - push {r4-r7,lr} - adds r5, r0, 0 - adds r6, r1, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807866E - adds r0, r6, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807866E - ldr r4, [r5, 0x70] - ldr r7, [r6, 0x70] - adds r0, r5, 0 - movs r1, 0xE - bl HasType - lsls r0, 24 - cmp r0, 0 - beq _08078640 - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x1 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _0807866E - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x1 - bl sub_807A5D0 - adds r0, r6, 0 - bl sub_8041D48 - movs r1, 0xE - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0xE] - cmp r0, 0 - bne _080785F6 - movs r0, 0x1 - strh r0, [r4, 0xE] -_080785F6: - adds r1, r7, 0 - adds r1, 0xC8 - ldrb r0, [r1] - cmp r0, 0x1 - beq _0807861C - movs r0, 0x1 - strb r0, [r1] - ldr r1, _08078634 - adds r0, r6, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - adds r1, r7, 0 - adds r1, 0xCB - strb r0, [r1] - adds r1, 0x1 - movs r0, 0 - strb r0, [r1] -_0807861C: - ldr r0, _08078638 - adds r1, r6, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _0807863C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_80522F4 - b _08078668 - .align 2, 0 -_08078634: .4byte gUnknown_80F4EA4 -_08078638: .4byte gAvailablePokemonNames -_0807863C: .4byte gUnknown_80FB004 -_08078640: - ldr r0, _08078674 - ldr r4, [r0] - adds r0, r5, 0 - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl sub_8077084 - adds r0, r5, 0 - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl sub_8077160 - adds r0, r5, 0 - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0x1 - bl sub_80779F0 -_08078668: - adds r0, r6, 0 - bl DungeonEntityUpdateStatusSprites -_0807866E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08078674: .4byte gUnknown_8106A4C - thumb_func_end sub_8078594 - - thumb_func_start sub_8078678 -sub_8078678: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - adds r6, r1, 0 - adds r0, r6, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08078732 - adds r0, r7, 0 - adds r1, r6, 0 - movs r2, 0x3 - bl sub_807A5D0 - movs r5, 0 -_0807869A: - ldr r0, _0807873C - ldr r0, [r0] - lsls r1, r5, 2 - ldr r2, _08078740 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080786C8 - ldr r0, [r4, 0x70] - adds r0, 0xC8 - ldrb r0, [r0] - cmp r0, 0x3 - bne _080786C8 - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0 - bl sub_807A5D0 -_080786C8: - adds r5, 0x1 - cmp r5, 0x13 - ble _0807869A - adds r0, r6, 0 - bl nullsub_81 - ldr r5, [r6, 0x70] - mov r8, r5 - adds r1, r5, 0 - adds r1, 0xC8 - ldrb r0, [r1] - cmp r0, 0x3 - beq _08078700 - movs r4, 0 - movs r0, 0x3 - strb r0, [r1] - ldr r1, _08078744 - adds r0, r6, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xCB - strb r0, [r1] - adds r0, r5, 0 - adds r0, 0xCC - strb r4, [r0] -_08078700: - ldr r0, _0807873C - ldr r1, [r0] - ldr r2, _08078748 - adds r0, r1, r2 - str r6, [r0] - ldr r0, _0807874C - adds r1, r0 - mov r0, r8 - adds r0, 0x98 - ldr r0, [r0] - str r0, [r1] - ldr r0, _08078750 - adds r1, r6, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08078754 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r6, 0 - bl sub_80522F4 - adds r0, r6, 0 - bl DungeonEntityUpdateStatusSprites -_08078732: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807873C: .4byte gDungeonGlobalData -_08078740: .4byte 0x000135cc -_08078744: .4byte gUnknown_80F4EA8 -_08078748: .4byte 0x00017b30 -_0807874C: .4byte 0x00017b3c -_08078750: .4byte gAvailablePokemonNames -_08078754: .4byte gUnknown_80FB01C - thumb_func_end sub_8078678 - - thumb_func_start sub_8078758 -sub_8078758: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080787DA - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _080787DA - ldr r6, [r4, 0x70] - ldr r0, _080787BC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r6, 0 - adds r1, 0xBC - ldrb r0, [r1] - cmp r0, 0x5 - beq _080787C8 - movs r0, 0x5 - strb r0, [r1] - ldr r1, _080787C0 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - adds r1, r6, 0 - adds r1, 0xBD - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_73 - ldr r0, _080787C4 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080787D4 - .align 2, 0 -_080787BC: .4byte gAvailablePokemonNames -_080787C0: .4byte gUnknown_80F4ED8 -_080787C4: .4byte gUnknown_80FB9F0 -_080787C8: - ldr r0, _080787E0 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080787D4: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080787DA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080787E0: .4byte gUnknown_80FBA14 - thumb_func_end sub_8078758 - - thumb_func_start sub_80787E4 -sub_80787E4: - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08078852 - ldr r4, [r5, 0x70] - ldr r0, _08078834 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - movs r0, 0x89 - lsls r0, 1 - adds r4, r0 - ldrb r0, [r4] - cmp r0, 0x2 - bhi _08078840 - adds r0, 0x1 - strb r0, [r4] - movs r0, 0x1 - bl sub_804178C - adds r0, r5, 0 - bl sub_8041D5C - ldr r1, _08078838 - ldrb r0, [r4] - str r0, [r1] - ldr r0, _0807883C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _0807884C - .align 2, 0 -_08078834: .4byte gAvailablePokemonNames -_08078838: .4byte gUnknown_202DE30 -_0807883C: .4byte gUnknown_80FBA38 -_08078840: - ldr r0, _08078858 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 -_0807884C: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_08078852: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08078858: .4byte gUnknown_80FBA60 - thumb_func_end sub_80787E4 - - thumb_func_start sub_807885C -sub_807885C: - push {r4-r7,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080788DE - ldr r0, [r4, 0x70] - adds r7, r0, 0 - adds r5, r7, 0 - adds r5, 0xE4 - ldrb r0, [r5] - cmp r0, 0x2 - bne _08078884 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_807A7C8 -_08078884: - ldr r0, _080788C0 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldrb r0, [r5] - cmp r0, 0x1 - beq _080788CC - movs r0, 0x1 - strb r0, [r5] - ldr r1, _080788C4 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r7, 0 - adds r1, 0xE5 - strb r0, [r1] - adds r0, r4, 0 - bl sub_8041D84 - ldr r0, _080788C8 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080788D8 - .align 2, 0 -_080788C0: .4byte gAvailablePokemonNames -_080788C4: .4byte gUnknown_80F4EE4 -_080788C8: .4byte gUnknown_80FBA80 -_080788CC: - ldr r0, _080788E4 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080788D8: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080788DE: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080788E4: .4byte gUnknown_80FBAA0 - thumb_func_end sub_807885C - - thumb_func_start sub_80788E8 -sub_80788E8: - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807895E - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _0807895E - adds r0, r5, 0 - bl nullsub_82 - ldr r4, [r5, 0x70] - ldr r0, _08078940 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r4, 0xFD - ldrb r0, [r4] - cmp r0, 0 - bne _0807894C - ldr r1, _08078944 - adds r0, r5, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - strb r0, [r4] - ldr r0, _08078948 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _08078958 - .align 2, 0 -_08078940: .4byte gAvailablePokemonNames -_08078944: .4byte gUnknown_80F4EEC -_08078948: .4byte gUnknown_80FBB04 -_0807894C: - ldr r0, _08078964 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 -_08078958: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_0807895E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08078964: .4byte gUnknown_80FBB28 - thumb_func_end sub_80788E8 - - thumb_func_start sub_8078968 -sub_8078968: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - adds r4, r1, 0 - ldr r5, [r4, 0x70] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08078A4A - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _08078A4A - movs r3, 0 - ldr r0, _080789E8 - mov r8, r0 - movs r1, 0x1 - mov r12, r1 - movs r0, 0x8C - lsls r0, 1 - adds r2, r5, r0 - movs r7, 0x10 -_080789A2: - ldrb r1, [r2] - mov r0, r12 - ands r0, r1 - cmp r0, 0 - beq _080789B4 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _080789BC -_080789B4: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x3 - ble _080789A2 -_080789BC: - cmp r3, 0x4 - bne _080789F0 - movs r1, 0x9C - lsls r1, 1 - adds r0, r5, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080789F0 - mov r0, r8 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _080789EC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08078A4A - .align 2, 0 -_080789E8: .4byte gAvailablePokemonNames -_080789EC: .4byte gUnknown_80FBBD4 -_080789F0: - mov r0, r8 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xBC - ldrb r0, [r1] - cmp r0, 0x6 - beq _08078A38 - movs r0, 0x6 - strb r0, [r1] - ldr r1, _08078A30 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xBD - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_83 - ldr r0, _08078A34 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08078A44 - .align 2, 0 -_08078A30: .4byte gUnknown_80F4EF4 -_08078A34: .4byte gUnknown_80FBB94 -_08078A38: - ldr r0, _08078A54 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08078A44: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08078A4A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08078A54: .4byte gUnknown_80FBBB8 - thumb_func_end sub_8078968 - - thumb_func_start sub_8078A58 -sub_8078A58: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - mov r8, r0 - adds r6, r1, 0 - adds r7, r2, 0 - adds r5, r3, 0 - adds r0, r6, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08078B4A - ldr r4, [r6, 0x70] - cmp r5, 0 - beq _08078AE0 - mov r0, sp - adds r1, r5, 0 - bl sub_80943A0 - ldr r2, [sp] - movs r0, 0xA0 - lsls r0, 1 - adds r5, r4, r0 - ldr r7, [r5] - add r0, sp, 0x4 - adds r1, r7, 0 - bl sub_80942C0 - ldr r2, [sp, 0x4] - str r2, [r5] - movs r0, 0x9E - lsls r0, 1 - adds r4, r0 - ldr r1, [r4] - add r0, sp, 0x8 - bl sub_8094318 - ldr r0, [sp, 0x8] - str r0, [r4] - ldr r0, _08078AD0 - adds r1, r6, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r7, 0 - bl RoundUpFixedPoint - adds r4, r0, 0 - ldr r0, [r5] - bl RoundUpFixedPoint - cmp r4, r0 - beq _08078AD8 - adds r0, r6, 0 - bl sub_8041D9C - ldr r0, _08078AD4 - b _08078B22 - .align 2, 0 -_08078AD0: .4byte gAvailablePokemonNames -_08078AD4: .4byte gUnknown_80FBD9C -_08078AD8: - ldr r0, _08078ADC - b _08078B22 - .align 2, 0 -_08078ADC: .4byte gUnknown_80FBE3C -_08078AE0: - add r0, sp, 0xC - adds r1, r7, 0 - bl sub_80943A0 - ldr r2, [sp, 0xC] - movs r0, 0x9E - lsls r0, 1 - adds r4, r0 - ldr r7, [r4] - add r0, sp, 0x10 - adds r1, r7, 0 - bl sub_80942C0 - ldr r0, [sp, 0x10] - str r0, [r4] - ldr r0, _08078B30 - adds r1, r6, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r7, 0 - bl RoundUpFixedPoint - adds r5, r0, 0 - ldr r0, [r4] - bl RoundUpFixedPoint - cmp r5, r0 - beq _08078B38 - adds r0, r6, 0 - bl nullsub_84 - ldr r0, _08078B34 -_08078B22: - ldr r2, [r0] - mov r0, r8 - adds r1, r6, 0 - bl sub_80522F4 - b _08078B44 - .align 2, 0 -_08078B30: .4byte gAvailablePokemonNames -_08078B34: .4byte gUnknown_80FBD78 -_08078B38: - ldr r0, _08078B58 - ldr r2, [r0] - mov r0, r8 - adds r1, r6, 0 - bl sub_80522F4 -_08078B44: - adds r0, r6, 0 - bl DungeonEntityUpdateStatusSprites -_08078B4A: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08078B58: .4byte gUnknown_80FBE40 - thumb_func_end sub_8078A58 - - thumb_func_start sub_8078B5C -sub_8078B5C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - mov r9, r0 - adds r6, r1, 0 - mov r10, r2 - str r3, [sp, 0x1C] - ldr r0, [sp, 0x48] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - adds r0, r6, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08078B86 - b _08078D78 -_08078B86: - ldr r7, [r6, 0x70] - ldrb r0, [r7, 0x7] - cmp r0, 0 - bne _08078BB8 - adds r0, r6, 0 - movs r1, 0x1B - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _08078BB8 - mov r0, r8 - cmp r0, 0 - bne _08078BA4 - b _08078D78 -_08078BA4: - ldr r0, _08078BB4 - ldr r2, [r0] - mov r0, r9 - adds r1, r6, 0 - bl sub_80522F4 - b _08078D78 - .align 2, 0 -_08078BB4: .4byte gUnknown_80FBEA0 -_08078BB8: - movs r5, 0 - ldr r1, [sp, 0x1C] - cmp r1, 0 - beq _08078BE8 - movs r1, 0x9E - lsls r1, 1 - adds r0, r7, r1 - ldr r0, [r0] - bl RoundUpFixedPoint - adds r4, r0, 0 - movs r1, 0xA0 - lsls r1, 1 - adds r0, r7, r1 - ldr r0, [r0] - bl RoundUpFixedPoint - cmp r4, r0 - blt _08078BE0 - movs r5, 0x1 -_08078BE0: - ldr r0, _08078C8C - cmp r10, r0 - bne _08078BE8 - movs r5, 0x1 -_08078BE8: - cmp r5, 0 - beq _08078CC0 - movs r0, 0xA0 - lsls r0, 1 - adds r5, r7, r0 - ldr r1, [r5] - str r1, [sp, 0x20] - subs r0, 0x4 - adds r0, r7 - mov r10, r0 - ldr r0, [r0] - bl RoundUpFixedPoint - adds r4, r0, 0 - ldr r0, [r5] - bl RoundUpFixedPoint - movs r1, 0 - str r1, [sp, 0x24] - cmp r4, r0 - bne _08078C16 - movs r0, 0x1 - str r0, [sp, 0x24] -_08078C16: - mov r0, sp - ldr r1, [sp, 0x1C] - bl sub_80943A0 - ldr r2, [sp] - ldr r1, [r5] - add r0, sp, 0x4 - bl sub_8094268 - ldr r4, [sp, 0x4] - str r4, [r5] - add r0, sp, 0x8 - movs r1, 0xC8 - bl sub_80943A0 - ldr r2, [sp, 0x8] - add r0, sp, 0xC - adds r1, r4, 0 - bl sub_8094318 - ldr r0, [sp, 0xC] - str r0, [r5] - mov r1, r10 - str r0, [r1] - ldr r0, [sp, 0x24] - cmp r0, 0 - bne _08078C5E - mov r1, r8 - cmp r1, 0 - beq _08078C5E - ldr r0, _08078C90 - ldr r2, [r0] - mov r0, r9 - adds r1, r6, 0 - bl sub_80522F4 -_08078C5E: - ldr r0, [sp, 0x20] - bl RoundUpFixedPoint - adds r4, r0, 0 - movs r1, 0xA0 - lsls r1, 1 - adds r0, r7, r1 - ldr r0, [r0] - bl RoundUpFixedPoint - cmp r4, r0 - bne _08078C9C - ldr r0, _08078C94 - adds r1, r6, 0 - movs r2, 0 - bl SetMessageArgument - mov r0, r8 - cmp r0, 0 - beq _08078D72 - ldr r0, _08078C98 - b _08078D4E - .align 2, 0 -_08078C8C: .4byte 0x000003e7 -_08078C90: .4byte gUnknown_80FBE64 -_08078C94: .4byte gAvailablePokemonNames -_08078C98: .4byte gUnknown_80FBDF0 -_08078C9C: - adds r0, r6, 0 - bl sub_8041DB0 - ldr r0, _08078CB8 - adds r1, r6, 0 - movs r2, 0 - bl SetMessageArgument - mov r1, r8 - cmp r1, 0 - beq _08078D72 - ldr r0, _08078CBC - b _08078D4E - .align 2, 0 -_08078CB8: .4byte gAvailablePokemonNames -_08078CBC: .4byte gUnknown_80FBDC4 -_08078CC0: - movs r0, 0x9E - lsls r0, 1 - adds r5, r7, r0 - ldr r4, [r5] - add r0, sp, 0x10 - mov r1, r10 - bl sub_80943A0 - ldr r2, [sp, 0x10] - ldr r1, [r5] - add r0, sp, 0x14 - bl sub_8094268 - ldr r1, [sp, 0x14] - str r1, [r5] - movs r0, 0xA0 - lsls r0, 1 - adds r7, r0 - ldr r2, [r7] - add r0, sp, 0x18 - bl sub_8094318 - ldr r0, [sp, 0x18] - str r0, [r5] - ldr r0, _08078D28 - cmp r10, r0 - bne _08078CFA - ldr r0, [r7] - str r0, [r5] -_08078CFA: - adds r0, r6, 0 - bl nullsub_85 - ldr r0, _08078D2C - adds r1, r6, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r4, 0 - bl RoundUpFixedPoint - adds r4, r0, 0 - ldr r0, [r5] - bl RoundUpFixedPoint - cmp r4, r0 - bne _08078D34 - mov r1, r8 - cmp r1, 0 - beq _08078D72 - ldr r0, _08078D30 - b _08078D4E - .align 2, 0 -_08078D28: .4byte 0x000003e7 -_08078D2C: .4byte gAvailablePokemonNames -_08078D30: .4byte gUnknown_80FBE14 -_08078D34: - ldr r0, [r5] - bl RoundUpFixedPoint - adds r4, r0, 0 - ldr r0, [r7] - bl RoundUpFixedPoint - cmp r4, r0 - blt _08078D60 - mov r0, r8 - cmp r0, 0 - beq _08078D72 - ldr r0, _08078D5C -_08078D4E: - ldr r2, [r0] - mov r0, r9 - adds r1, r6, 0 - bl sub_80522F4 - b _08078D72 - .align 2, 0 -_08078D5C: .4byte gUnknown_80FBE64 -_08078D60: - mov r1, r8 - cmp r1, 0 - beq _08078D72 - ldr r0, _08078D88 - ldr r2, [r0] - mov r0, r9 - adds r1, r6, 0 - bl sub_80522F4 -_08078D72: - adds r0, r6, 0 - bl DungeonEntityUpdateStatusSprites -_08078D78: - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08078D88: .4byte gUnknown_80FBE84 - thumb_func_end sub_8078B5C - - thumb_func_start sub_8078D8C -sub_8078D8C: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08078E0E - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _08078E0E - ldr r6, [r4, 0x70] - ldr r0, _08078DF0 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r6, 0 - adds r1, 0xEC - ldrb r0, [r1] - cmp r0, 0x1 - beq _08078DFC - movs r0, 0x1 - strb r0, [r1] - ldr r1, _08078DF4 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - adds r1, r6, 0 - adds r1, 0xED - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_86 - ldr r0, _08078DF8 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08078E08 - .align 2, 0 -_08078DF0: .4byte gAvailablePokemonNames -_08078DF4: .4byte gUnknown_80F4F1C -_08078DF8: .4byte gUnknown_80FBF68 -_08078DFC: - ldr r0, _08078E14 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08078E08: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08078E0E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08078E14: .4byte gUnknown_80FBF84 - thumb_func_end sub_8078D8C - - thumb_func_start sub_8078E18 -sub_8078E18: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _08078E48 - add sp, r4 - mov r10, r0 - adds r5, r1, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08078F2E - ldr r7, [r5, 0x70] - adds r0, r7, 0 - adds r0, 0xE4 - ldrb r0, [r0] - cmp r0, 0x2 - bne _08078E50 - ldr r0, _08078E4C - b _08078EC0 - .align 2, 0 -_08078E48: .4byte 0xfffffe00 -_08078E4C: .4byte gUnknown_80FBF04 -_08078E50: - ldr r0, _08078ECC - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - mov r0, sp - movs r1, 0 - bl sub_803D870 - mov r8, r0 - cmp r0, 0 - beq _08078EBE - movs r0, 0 - mov r9, r0 - movs r6, 0 -_08078E6E: - mov r0, r8 - bl DungeonRandomCapped - lsls r0, 3 - add r0, sp - bl ExtractSpeciesIndex - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r5, 0 - bl sub_8069F54 - lsls r0, 16 - asrs r4, r0, 16 - movs r1, 0x4 - ldrsh r0, [r7, r1] - cmp r4, r0 - beq _08078EAE - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806AA0C - lsls r0, 24 - cmp r0, 0 - beq _08078EAE - adds r0, r4, 0 - bl sub_80687D0 - mov r9, r0 - cmp r0, 0 - bne _08078EB4 -_08078EAE: - adds r6, 0x1 - cmp r6, 0x13 - ble _08078E6E -_08078EB4: - cmp r6, 0x14 - beq _08078EBE - mov r2, r9 - cmp r2, 0 - bne _08078ED4 -_08078EBE: - ldr r0, _08078ED0 -_08078EC0: - ldr r2, [r0] - mov r0, r10 - adds r1, r5, 0 - bl sub_80522F4 - b _08078F2E - .align 2, 0 -_08078ECC: .4byte gAvailablePokemonNames -_08078ED0: .4byte gUnknown_80FBEE4 -_08078ED4: - strh r4, [r7, 0x4] - mov r0, r9 - str r0, [r5, 0x64] - adds r1, r7, 0 - adds r1, 0xE4 - movs r0, 0x2 - strb r0, [r1] - ldr r1, _08078F44 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - adds r1, r7, 0 - adds r1, 0xE5 - strb r0, [r1] - adds r0, r5, 0 - bl sub_806CF98 - adds r0, r5, 0 - bl nullsub_87 - adds r0, r5, 0 - bl sub_806CEBC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl sub_806CCB4 - ldr r0, _08078F48 - movs r2, 0x4 - ldrsh r1, [r7, r2] - bl CopyCyanSpeciesNametoBuffer - ldr r0, _08078F4C - ldr r2, [r0] - mov r0, r10 - adds r1, r5, 0 - bl sub_80522F4 - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_08078F2E: - movs r3, 0x80 - lsls r3, 2 - add sp, r3 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08078F44: .4byte gUnknown_80F4EFC -_08078F48: .4byte gUnknown_202DFE8 -_08078F4C: .4byte gUnknown_80FBEC0 - thumb_func_end sub_8078E18 - - thumb_func_start sub_8078F50 -sub_8078F50: - push {r4-r7,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08078FD2 - ldr r0, [r4, 0x70] - adds r7, r0, 0 - adds r5, r7, 0 - adds r5, 0xE4 - ldrb r0, [r5] - cmp r0, 0x2 - bne _08078F78 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_807A7C8 -_08078F78: - ldr r0, _08078FB4 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldrb r0, [r5] - cmp r0, 0x3 - beq _08078FC0 - movs r0, 0x3 - strb r0, [r5] - ldr r1, _08078FB8 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r7, 0 - adds r1, 0xE5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_88 - ldr r0, _08078FBC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08078FCC - .align 2, 0 -_08078FB4: .4byte gAvailablePokemonNames -_08078FB8: .4byte gUnknown_80F4F04 -_08078FBC: .4byte gUnknown_80FBF28 -_08078FC0: - ldr r0, _08078FD8 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08078FCC: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08078FD2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08078FD8: .4byte gUnknown_80FBF50 - thumb_func_end sub_8078F50 - - thumb_func_start sub_8078FDC -sub_8078FDC: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r2, 16 - asrs r7, r2, 16 - mov r10, r7 - movs r0, 0 - mov r8, r0 - mov r9, r0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080790B6 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _080790B6 - ldr r5, [r4, 0x70] - ldr r0, _08079064 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - movs r1, 0x26 - ldrsh r0, [r5, r1] - cmp r0, 0xA - ble _0807902E - movs r0, 0xA - strh r0, [r5, 0x26] - movs r0, 0x1 - mov r8, r0 -_0807902E: - mov r1, r8 - cmp r1, 0 - beq _0807904C - adds r0, r4, 0 - adds r1, r7, 0 - bl sub_8041DD8 - ldr r0, _08079068 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - movs r0, 0x1 - mov r9, r0 -_0807904C: - adds r5, 0xF5 - ldrb r0, [r5] - cmp r0, 0 - beq _08079070 - ldr r0, _0807906C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080790B6 - .align 2, 0 -_08079064: .4byte gAvailablePokemonNames -_08079068: .4byte gUnknown_80FC000 -_0807906C: .4byte gUnknown_80FBFB8 -_08079070: - mov r1, r9 - cmp r1, 0 - bne _0807907E - adds r0, r4, 0 - mov r1, r10 - bl sub_8041DD8 -_0807907E: - adds r0, r4, 0 - movs r1, 0xE - bl HasType - lsls r0, 24 - cmp r0, 0 - bne _080790A0 - ldr r0, _0807909C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080790B0 - .align 2, 0 -_0807909C: .4byte gUnknown_80FBFD8 -_080790A0: - movs r0, 0x1 - strb r0, [r5] - ldr r0, _080790C4 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080790B0: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080790B6: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080790C4: .4byte gUnknown_80FBF9C - thumb_func_end sub_8078FDC - - thumb_func_start sub_80790C8 -sub_80790C8: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079134 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _08079134 - ldr r6, _0807911C - ldr r0, [r6] - ldr r1, _08079120 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08079128 - adds r0, r4, 0 - bl nullsub_89 - ldr r0, [r6] - ldr r1, _08079120 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites - ldr r0, _08079124 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079134 - .align 2, 0 -_0807911C: .4byte gDungeonGlobalData -_08079120: .4byte 0x00000676 -_08079124: .4byte gUnknown_80FC028 -_08079128: - ldr r0, _0807913C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079134: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807913C: .4byte gUnknown_80FC054 - thumb_func_end sub_80790C8 - - thumb_func_start BlindTarget -BlindTarget: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080791CE - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _080791CE - ldr r6, [r4, 0x70] - ldr r0, _080791B0 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r6, 0 - adds r1, 0xE8 - ldrb r0, [r1] - cmp r0, 0x1 - beq _080791BC - movs r0, 0x1 - strb r0, [r1] - ldr r1, _080791B4 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - adds r1, r6, 0 - adds r1, 0xE9 - strb r0, [r1] - adds r0, r4, 0 - bl sub_8041E0C - ldr r0, _080791B8 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - movs r0, 0x31 - bl sub_803E46C - bl sub_8049ED4 - bl sub_8040A84 - b _080791C8 - .align 2, 0 -_080791B0: .4byte gAvailablePokemonNames -_080791B4: .4byte gUnknown_80F4F08 -_080791B8: .4byte gUnknown_80FB7F4 -_080791BC: - ldr r0, _080791D4 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080791C8: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080791CE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080791D4: .4byte gUnknown_80FB810 - thumb_func_end BlindTarget - - thumb_func_start sub_80791D8 -sub_80791D8: - push {r4-r7,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079266 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _08079266 - ldr r7, [r4, 0x70] - ldr r0, _08079248 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r6, r7, 0 - adds r6, 0xE8 - ldrb r0, [r6] - cmp r0, 0x2 - beq _08079254 - adds r0, r4, 0 - bl sub_8041E1C - ldr r0, _0807924C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - movs r0, 0x2 - strb r0, [r6] - ldr r1, _08079250 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_808417C - adds r0, 0x1 - adds r1, r7, 0 - adds r1, 0xE9 - strb r0, [r1] - movs r0, 0x1 - bl sub_803F580 - bl sub_8049ED4 - bl sub_8040A84 - b _08079260 - .align 2, 0 -_08079248: .4byte gAvailablePokemonNames -_0807924C: .4byte gUnknown_80FB834 -_08079250: .4byte gUnknown_80F4F0C -_08079254: - ldr r0, _0807926C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079260: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079266: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807926C: .4byte gUnknown_80FB85C - thumb_func_end sub_80791D8 - - thumb_func_start RestoreVisionTarget -RestoreVisionTarget: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080792EE - ldr r5, [r4, 0x70] - ldr r0, _080792D0 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xE8 - ldrb r0, [r1] - cmp r0, 0x3 - beq _080792DC - movs r0, 0x3 - strb r0, [r1] - ldr r1, _080792D4 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xE9 - strb r0, [r1] - adds r0, r4, 0 - bl sub_8041E3C - ldr r0, _080792D8 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - movs r0, 0x31 - bl sub_803E46C - bl sub_8049ED4 - bl sub_8040A84 - b _080792E8 - .align 2, 0 -_080792D0: .4byte gAvailablePokemonNames -_080792D4: .4byte gUnknown_80F4F10 -_080792D8: .4byte gUnknown_80FB880 -_080792DC: - ldr r0, _080792F4 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080792E8: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080792EE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080792F4: .4byte gUnknown_80FB89C - thumb_func_end RestoreVisionTarget - - thumb_func_start sub_80792F8 -sub_80792F8: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - mov r10, r0 - adds r6, r1, 0 - mov r9, r2 - movs r0, 0 - mov r8, r0 - adds r0, r6, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807939A - ldr r0, [r6, 0x70] - movs r1, 0x8C - lsls r1, 1 - adds r4, r0, r1 - adds r5, r4, 0 - movs r7, 0x3 -_08079326: - ldrb r1, [r4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0807935E - ldrb r0, [r4, 0x4] - str r0, [sp] - adds r0, r5, 0 - bl GetMoveMaxPP - str r0, [sp, 0x4] - ldr r1, [sp] - ldr r0, [sp, 0x4] - cmp r1, r0 - bge _0807935E - ldr r0, [sp] - add r0, r9 - str r0, [sp] - ldr r1, [sp] - ldr r0, [sp, 0x4] - cmp r1, r0 - ble _08079356 - ldr r0, [sp, 0x4] - str r0, [sp] -_08079356: - ldr r0, [sp] - strb r0, [r4, 0x4] - movs r0, 0x1 - mov r8, r0 -_0807935E: - adds r4, 0x8 - adds r5, 0x8 - subs r7, 0x1 - cmp r7, 0 - bge _08079326 - mov r1, r8 - cmp r1, 0 - beq _08079388 - adds r0, r6, 0 - bl sub_8041E4C - ldr r0, _08079384 - ldr r2, [r0] - mov r0, r10 - adds r1, r6, 0 - bl sub_80522F4 - b _08079394 - .align 2, 0 -_08079384: .4byte gUnknown_80FDBD0 -_08079388: - ldr r0, _080793AC - ldr r2, [r0] - mov r0, r10 - adds r1, r6, 0 - bl sub_80522F4 -_08079394: - adds r0, r6, 0 - bl DungeonEntityUpdateStatusSprites -_0807939A: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080793AC: .4byte gUnknown_80FDBF0 - thumb_func_end sub_80792F8 - - thumb_func_start sub_80793B0 -sub_80793B0: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079416 - ldr r0, _080793FC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, [r4, 0x70] - adds r1, r0, 0 - ldrb r0, [r1, 0x14] - adds r2, r0, 0 - adds r0, r2, r5 - cmp r0, 0xFE - ble _080793DE - movs r0, 0xFF -_080793DE: - strb r0, [r1, 0x14] - lsls r0, 24 - lsrs r0, 24 - cmp r2, r0 - bcs _08079404 - adds r0, r4, 0 - bl sub_8041E60 - ldr r0, _08079400 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079410 - .align 2, 0 -_080793FC: .4byte gAvailablePokemonNames -_08079400: .4byte gUnknown_80FC33C -_08079404: - ldr r0, _0807941C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079410: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079416: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807941C: .4byte gUnknown_80FC360 - thumb_func_end sub_80793B0 - - thumb_func_start sub_8079420 -sub_8079420: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079486 - ldr r0, _0807946C - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, [r4, 0x70] - adds r1, r0, 0 - ldrb r0, [r1, 0x15] - adds r2, r0, 0 - adds r0, r2, r5 - cmp r0, 0xFE - ble _0807944E - movs r0, 0xFF -_0807944E: - strb r0, [r1, 0x15] - lsls r0, 24 - lsrs r0, 24 - cmp r2, r0 - bcs _08079474 - adds r0, r4, 0 - bl sub_8041E74 - ldr r0, _08079470 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079480 - .align 2, 0 -_0807946C: .4byte gAvailablePokemonNames -_08079470: .4byte gUnknown_80FC388 -_08079474: - ldr r0, _0807948C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079480: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079486: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807948C: .4byte gUnknown_80FC3B4 - thumb_func_end sub_8079420 - - thumb_func_start sub_8079490 -sub_8079490: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080794F6 - ldr r0, _080794DC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, [r4, 0x70] - adds r1, r0, 0 - ldrb r0, [r1, 0x16] - adds r2, r0, 0 - adds r0, r2, r5 - cmp r0, 0xFE - ble _080794BE - movs r0, 0xFF -_080794BE: - strb r0, [r1, 0x16] - lsls r0, 24 - lsrs r0, 24 - cmp r2, r0 - bcs _080794E4 - adds r0, r4, 0 - bl sub_8041E84 - ldr r0, _080794E0 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080794F0 - .align 2, 0 -_080794DC: .4byte gAvailablePokemonNames -_080794E0: .4byte gUnknown_80FC3D8 -_080794E4: - ldr r0, _080794FC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080794F0: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080794F6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080794FC: .4byte gUnknown_80FC3FC - thumb_func_end sub_8079490 - - thumb_func_start sub_8079500 -sub_8079500: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079566 - ldr r0, _0807954C - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, [r4, 0x70] - adds r1, r0, 0 - ldrb r0, [r1, 0x17] - adds r2, r0, 0 - adds r0, r2, r5 - cmp r0, 0xFE - ble _0807952E - movs r0, 0xFF -_0807952E: - strb r0, [r1, 0x17] - lsls r0, 24 - lsrs r0, 24 - cmp r2, r0 - bcs _08079554 - adds r0, r4, 0 - bl sub_8041E94 - ldr r0, _08079550 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079560 - .align 2, 0 -_0807954C: .4byte gAvailablePokemonNames -_08079550: .4byte gUnknown_80FC428 -_08079554: - ldr r0, _0807956C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079560: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079566: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807956C: .4byte gUnknown_80FC454 - thumb_func_end sub_8079500 - - thumb_func_start sub_8079570 -sub_8079570: - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - ldr r4, [r5, 0x70] - ldr r0, _080795A0 - movs r2, 0 - bl SetMessageArgument - adds r4, 0xE0 - ldrb r0, [r4] - cmp r0, 0x1 - beq _080795A8 - movs r0, 0x1 - strb r0, [r4] - adds r0, r5, 0 - bl sub_8041EA4 - ldr r0, _080795A4 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _080795B4 - .align 2, 0 -_080795A0: .4byte gUnknown_202DFE8 -_080795A4: .4byte gUnknown_80FD20C -_080795A8: - ldr r0, _080795C0 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 -_080795B4: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080795C0: .4byte gUnknown_80FD22C - thumb_func_end sub_8079570 - - thumb_func_start sub_80795C4 -sub_80795C4: - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - ldr r4, [r5, 0x70] - ldr r0, _080795F4 - movs r2, 0 - bl SetMessageArgument - adds r4, 0xE0 - ldrb r0, [r4] - cmp r0, 0x2 - beq _080795FC - movs r0, 0x2 - strb r0, [r4] - adds r0, r5, 0 - bl sub_8041EB4 - ldr r0, _080795F8 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _08079608 - .align 2, 0 -_080795F4: .4byte gUnknown_202DFE8 -_080795F8: .4byte gUnknown_80FD254 -_080795FC: - ldr r0, _08079614 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 -_08079608: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079614: .4byte gUnknown_80FD27C - thumb_func_end sub_80795C4 - - thumb_func_start sub_8079618 -sub_8079618: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - adds r0, r7, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08079638 - b _08079752 -_08079638: - ldr r5, [r7, 0x70] - ldr r0, _08079660 - adds r1, r7, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r0, 0xC0 - ldrb r0, [r0] - cmp r0, r6 - bne _08079668 - cmp r6, 0xC - bne _08079668 - ldr r0, _08079664 - ldr r2, [r0] - mov r0, r9 - adds r1, r7, 0 - bl sub_80522F4 - b _08079752 - .align 2, 0 -_08079660: .4byte gAvailablePokemonNames -_08079664: .4byte gUnknown_80FC074 -_08079668: - adds r0, r5, 0 - adds r0, 0xC0 - strb r6, [r0] - movs r4, 0 - movs r1, 0x8C - lsls r1, 1 - adds r0, r5, r1 - subs r2, r6, 0x7 - b _0807968A -_0807967A: - adds r4, 0x1 - cmp r4, 0x3 - bgt _08079694 - lsls r0, r4, 3 - movs r1, 0x8C - lsls r1, 1 - adds r0, r1 - adds r0, r5, r0 -_0807968A: - cmp r0, r8 - bne _0807967A - adds r0, r5, 0 - adds r0, 0xC2 - strb r4, [r0] -_08079694: - movs r1, 0xA5 - lsls r1, 1 - adds r0, r5, r1 - movs r1, 0x1 - strb r1, [r0] - movs r4, 0 - lsls r0, r2, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080796B2 - adds r0, r5, 0 - adds r0, 0xFF - strb r1, [r0] - movs r4, 0x1 - b _080796C6 -_080796B2: - adds r0, r6, 0 - subs r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080796C6 - adds r1, r5, 0 - adds r1, 0xFF - movs r0, 0x2 - strb r0, [r1] -_080796C6: - cmp r6, 0x1 - bne _080796E4 - ldr r1, _08079718 - adds r0, r7, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r2, r5, 0 - adds r2, 0xC1 - movs r1, 0 - strb r0, [r2] - adds r0, r5, 0 - adds r0, 0xA0 - str r1, [r0] -_080796E4: - cmp r6, 0xC - bne _080796FA - ldr r1, _0807971C - adds r0, r7, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC1 - strb r0, [r1] -_080796FA: - adds r0, r7, 0 - adds r1, r4, 0 - bl sub_8041BD0 - mov r0, r9 - adds r1, r7, 0 - ldr r2, [sp, 0x1C] - bl sub_80522F4 - adds r0, r7, 0 - bl DungeonEntityUpdateStatusSprites - movs r4, 0 - ldr r6, _08079720 - b _0807972C - .align 2, 0 -_08079718: .4byte gUnknown_80F4E9C -_0807971C: .4byte gUnknown_80F4EA0 -_08079720: .4byte 0x0000c7ff -_08079724: - movs r0, 0x53 - bl sub_803E46C - adds r4, 0x1 -_0807972C: - ldr r0, _08079760 - cmp r4, r0 - bgt _08079752 - movs r1, 0x1 - adds r0, r5, 0 - adds r0, 0xFF - ldrb r0, [r0] - cmp r0, 0x1 - bne _0807974E - movs r1, 0xBA - lsls r1, 1 - adds r0, r5, r1 - ldr r0, [r0] - movs r1, 0 - cmp r0, r6 - ble _0807974E - movs r1, 0x1 -_0807974E: - cmp r1, 0 - beq _08079724 -_08079752: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08079760: .4byte 0x0000018f - thumb_func_end sub_8079618 - - thumb_func_start sub_8079764 -sub_8079764: - push {r4,lr} - adds r4, r0, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807979A - ldr r2, [r4, 0x70] - adds r3, r2, 0 - adds r3, 0xC0 - ldrb r0, [r3] - cmp r0, 0x1 - beq _08079794 - cmp r0, 0xC - beq _08079794 - movs r1, 0 - strb r1, [r3] - movs r3, 0xA5 - lsls r3, 1 - adds r0, r2, r3 - strb r1, [r0] - adds r0, r2, 0 - adds r0, 0xFF - strb r1, [r0] -_08079794: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807979A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8079764 - - thumb_func_start sub_80797A0 -sub_80797A0: - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r7, r2, 24 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079822 - ldr r6, [r4, 0x70] - ldr r0, _080797E0 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r5, r6, 0 - adds r5, 0xC4 - ldrb r0, [r5] - cmp r0, r7 - bne _080797E8 - ldr r0, _080797E4 - ldr r2, [r0] - mov r0, r8 - adds r1, r4, 0 - bl sub_80522F4 - b _08079822 - .align 2, 0 -_080797E0: .4byte gAvailablePokemonNames -_080797E4: .4byte gUnknown_80FB10C -_080797E8: - adds r0, r4, 0 - bl nullsub_57 - ldrb r0, [r5] - cmp r0, 0x4 - beq _0807980A - cmp r0, 0xA - beq _0807980A - ldr r1, _0807982C - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r6, 0 - adds r1, 0xC5 - strb r0, [r1] -_0807980A: - adds r0, r6, 0 - adds r0, 0xC4 - strb r7, [r0] - ldr r0, _08079830 - ldr r2, [r0] - mov r0, r8 - adds r1, r4, 0 - bl sub_80522F4 - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079822: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807982C: .4byte gUnknown_80F4E98 -_08079830: .4byte gUnknown_80FB0E0 - thumb_func_end sub_80797A0 - - thumb_func_start sub_8079834 -sub_8079834: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080798A6 - ldr r5, [r4, 0x70] - ldr r0, _08079888 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x2 - beq _08079894 - movs r0, 0x2 - strb r0, [r1] - ldr r1, _0807988C - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_58 - ldr r0, _08079890 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080798A0 - .align 2, 0 -_08079888: .4byte gAvailablePokemonNames -_0807988C: .4byte gUnknown_80F4E88 -_08079890: .4byte gUnknown_80FB048 -_08079894: - ldr r0, _080798AC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080798A0: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080798A6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080798AC: .4byte gUnknown_80FB074 - thumb_func_end sub_8079834 - - thumb_func_start sub_80798B0 -sub_80798B0: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079922 - ldr r5, [r4, 0x70] - ldr r0, _08079904 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0xE - beq _08079910 - movs r0, 0xE - strb r0, [r1] - ldr r1, _08079908 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_59 - ldr r0, _0807990C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _0807991C - .align 2, 0 -_08079904: .4byte gAvailablePokemonNames -_08079908: .4byte gUnknown_80F4E8C -_0807990C: .4byte gUnknown_80FB09C -_08079910: - ldr r0, _08079928 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_0807991C: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079922: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079928: .4byte gUnknown_80FB0C4 - thumb_func_end sub_80798B0 - - thumb_func_start sub_807992C -sub_807992C: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807999E - ldr r5, [r4, 0x70] - ldr r0, _08079980 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x6 - beq _0807998C - movs r0, 0x6 - strb r0, [r1] - ldr r1, _08079984 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl sub_8041B34 - ldr r0, _08079988 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079998 - .align 2, 0 -_08079980: .4byte gAvailablePokemonNames -_08079984: .4byte gUnknown_80F4EB4 -_08079988: .4byte gUnknown_80FAE1C -_0807998C: - ldr r0, _080799A4 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079998: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807999E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080799A4: .4byte gUnknown_80FAE3C - thumb_func_end sub_807992C - - thumb_func_start sub_80799A8 -sub_80799A8: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079A1A - ldr r5, [r4, 0x70] - ldr r0, _080799FC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x5 - beq _08079A08 - movs r0, 0x5 - strb r0, [r1] - ldr r1, _08079A00 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_60 - ldr r0, _08079A04 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079A14 - .align 2, 0 -_080799FC: .4byte gAvailablePokemonNames -_08079A00: .4byte gUnknown_80F4E90 -_08079A04: .4byte gUnknown_80FAF5C -_08079A08: - ldr r0, _08079A20 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079A14: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079A1A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079A20: .4byte gUnknown_80FAF8C - thumb_func_end sub_80799A8 - - thumb_func_start sub_8079A24 -sub_8079A24: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079A96 - ldr r5, [r4, 0x70] - ldr r0, _08079A78 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x3 - beq _08079A84 - movs r0, 0x3 - strb r0, [r1] - ldr r1, _08079A7C - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_61 - ldr r0, _08079A80 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079A90 - .align 2, 0 -_08079A78: .4byte gAvailablePokemonNames -_08079A7C: .4byte gUnknown_80F4E84 -_08079A80: .4byte gUnknown_80FB130 -_08079A84: - ldr r0, _08079A9C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079A90: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079A96: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079A9C: .4byte gUnknown_80FB160 - thumb_func_end sub_8079A24 - - thumb_func_start sub_8079AA0 -sub_8079AA0: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079B12 - ldr r5, [r4, 0x70] - ldr r0, _08079AF4 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x1 - beq _08079B00 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _08079AF8 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_62 - ldr r0, _08079AFC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079B0C - .align 2, 0 -_08079AF4: .4byte gAvailablePokemonNames -_08079AF8: .4byte gUnknown_80F4E80 -_08079AFC: .4byte gUnknown_80FB17C -_08079B00: - ldr r0, _08079B18 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079B0C: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079B12: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079B18: .4byte gUnknown_80FB1A8 - thumb_func_end sub_8079AA0 - - thumb_func_start sub_8079B1C -sub_8079B1C: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079B98 - adds r0, r4, 0 - bl nullsub_63 - ldr r5, [r4, 0x70] - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x7 - beq _08079B7C - movs r0, 0x7 - strb r0, [r1] - ldr r1, _08079B70 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - ldr r0, _08079B74 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08079B78 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079B92 - .align 2, 0 -_08079B70: .4byte gUnknown_80F4ED4 -_08079B74: .4byte gAvailablePokemonNames -_08079B78: .4byte gUnknown_80FB9B0 -_08079B7C: - ldr r0, _08079BA0 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08079BA4 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079B92: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079B98: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079BA0: .4byte gAvailablePokemonNames -_08079BA4: .4byte gUnknown_80FB9D8 - thumb_func_end sub_8079B1C - - thumb_func_start sub_8079BA8 -sub_8079BA8: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079C1A - ldr r5, [r4, 0x70] - ldr r0, _08079BFC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x8 - beq _08079C08 - movs r0, 0x8 - strb r0, [r1] - ldr r1, _08079C00 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_64 - ldr r0, _08079C04 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079C14 - .align 2, 0 -_08079BFC: .4byte gAvailablePokemonNames -_08079C00: .4byte gUnknown_80F4EE8 -_08079C04: .4byte gUnknown_80FBAC0 -_08079C08: - ldr r0, _08079C20 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079C14: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079C1A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079C20: .4byte gUnknown_80FBAE4 - thumb_func_end sub_8079BA8 - - thumb_func_start sub_8079C24 -sub_8079C24: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079C96 - ldr r5, [r4, 0x70] - ldr r0, _08079C78 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x9 - beq _08079C84 - movs r0, 0x9 - strb r0, [r1] - ldr r1, _08079C7C - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_65 - ldr r0, _08079C80 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079C90 - .align 2, 0 -_08079C78: .4byte gAvailablePokemonNames -_08079C7C: .4byte gUnknown_80F4EF8 -_08079C80: .4byte gUnknown_80FBBF0 -_08079C84: - ldr r0, _08079C9C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079C90: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079C96: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079C9C: .4byte gUnknown_80FBC14 - thumb_func_end sub_8079C24 - - thumb_func_start sub_8079CA0 -sub_8079CA0: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079D12 - ldr r5, [r4, 0x70] - ldr r0, _08079CF4 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0xB - beq _08079D00 - movs r0, 0xB - strb r0, [r1] - ldr r1, _08079CF8 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_66 - ldr r0, _08079CFC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079D0C - .align 2, 0 -_08079CF4: .4byte gAvailablePokemonNames -_08079CF8: .4byte gUnknown_80F4F18 -_08079CFC: .4byte gUnknown_80FBC38 -_08079D00: - ldr r0, _08079D18 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079D0C: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079D12: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079D18: .4byte gUnknown_80FBC5C - thumb_func_end sub_8079CA0 - - thumb_func_start sub_8079D1C -sub_8079D1C: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079DAE - ldr r6, [r4, 0x70] - adds r0, r4, 0 - movs r1, 0x25 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _08079D50 - ldr r0, _08079D4C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079DAE - .align 2, 0 -_08079D4C: .4byte gPtrForecastPreventsConversion2Message -_08079D50: - ldr r0, _08079D90 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r6, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0xC - beq _08079D9C - movs r0, 0xC - strb r0, [r1] - ldr r1, _08079D94 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r6, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_67 - ldr r0, _08079D98 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079DA8 - .align 2, 0 -_08079D90: .4byte gAvailablePokemonNames -_08079D94: .4byte gUnknown_80F4F20 -_08079D98: .4byte gUnknown_80FBC7C -_08079D9C: - ldr r0, _08079DB4 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079DA8: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079DAE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079DB4: .4byte gUnknown_80FBCA4 - thumb_func_end sub_8079D1C - - thumb_func_start sub_8079DB8 -sub_8079DB8: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079E2A - ldr r5, [r4, 0x70] - ldr r0, _08079E0C - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0xD - beq _08079E18 - movs r0, 0xD - strb r0, [r1] - ldr r1, _08079E10 - adds r0, r4, 0 - movs r2, 0 - bl sub_808417C - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_68 - ldr r0, _08079E14 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079E24 - .align 2, 0 -_08079E0C: .4byte gAvailablePokemonNames -_08079E10: .4byte gUnknown_80F4F24 -_08079E14: .4byte gUnknown_80FBCC8 -_08079E18: - ldr r0, _08079E30 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079E24: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079E2A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079E30: .4byte gUnknown_80FBCF0 - thumb_func_end sub_8079DB8 - - thumb_func_start sub_8079E34 -sub_8079E34: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - movs r6, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079F0E - ldr r0, [r5, 0x70] - mov r12, r0 - movs r4, 0 - movs r7, 0xA -_08079E5C: - lsls r2, r4, 1 - mov r0, r12 - adds r0, 0x1C - adds r1, r0, r2 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xA - beq _08079E70 - strh r7, [r1] - movs r6, 0x1 -_08079E70: - mov r0, r12 - adds r0, 0x20 - adds r1, r0, r2 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xA - beq _08079E82 - strh r7, [r1] - movs r6, 0x1 -_08079E82: - mov r0, r12 - adds r0, 0x24 - adds r1, r0, r2 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0xA - beq _08079E94 - strh r7, [r1] - movs r6, 0x1 -_08079E94: - lsls r3, r4, 2 - mov r0, r12 - adds r0, 0x2C - adds r1, r0, r3 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 1 - cmp r0, r2 - beq _08079EAA - str r2, [r1] - movs r6, 0x1 -_08079EAA: - mov r0, r12 - adds r0, 0x34 - adds r1, r0, r3 - ldr r0, [r1] - cmp r0, r2 - beq _08079EBA - str r2, [r1] - movs r6, 0x1 -_08079EBA: - adds r4, 0x1 - cmp r4, 0x1 - ble _08079E5C - cmp r6, 0 - beq _08079ECC - adds r0, r5, 0 - bl sub_80420C8 - b _08079ED8 -_08079ECC: - mov r3, r9 - cmp r3, 0 - beq _08079ED8 - adds r0, r5, 0 - bl sub_80420C8 -_08079ED8: - ldr r0, _08079EF4 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - cmp r6, 0 - beq _08079EFC - ldr r0, _08079EF8 - ldr r2, [r0] - mov r0, r8 - adds r1, r5, 0 - bl sub_80522F4 - b _08079F08 - .align 2, 0 -_08079EF4: .4byte gAvailablePokemonNames -_08079EF8: .4byte gUnknown_80FBD18 -_08079EFC: - ldr r0, _08079F1C - ldr r2, [r0] - mov r0, r8 - adds r1, r5, 0 - bl sub_80522F4 -_08079F08: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_08079F0E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08079F1C: .4byte gUnknown_80FBD3C - thumb_func_end sub_8079E34 - - thumb_func_start sub_8079F20 -sub_8079F20: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r5, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp] - lsls r3, 24 - lsrs r3, 24 - mov r10, r3 - movs r0, 0 - mov r8, r0 - mov r9, r0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08079F50 - b _0807A0B8 -_08079F50: - ldr r7, [r4, 0x70] - adds r0, r4, 0 - bl HasNegativeStatus - lsls r0, 24 - cmp r0, 0 - beq _08079FF2 - movs r2, 0x1 - mov r8, r2 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl sub_807A124 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08079F7C - b _0807A0B8 -_08079F7C: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807A290 - adds r0, r5, 0 - adds r1, r4, 0 - bl SendImmobilizeEndMessage - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807A400 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0 - bl sub_807A5D0 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807A6C8 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807A734 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807A888 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807A924 - adds r1, r7, 0 - adds r1, 0xFD - ldrb r0, [r1] - cmp r0, 0 - beq _08079FD8 - mov r0, r9 - strb r0, [r1] - ldr r0, _0807A08C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079FD8: - adds r1, r7, 0 - adds r1, 0xF5 - ldrb r0, [r1] - cmp r0, 0 - beq _08079FF2 - mov r2, r9 - strb r2, [r1] - ldr r0, _0807A090 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079FF2: - adds r0, r4, 0 - bl GetMovementSpeed - adds r6, r0, 0 - movs r1, 0 - movs r3, 0x4 - ldr r2, _0807A094 - adds r0, r7, r2 -_0807A002: - strb r1, [r0] - subs r0, 0x1 - subs r3, 0x1 - cmp r3, 0 - bge _0807A002 - adds r0, r4, 0 - bl GetMovementSpeed - cmp r6, r0 - beq _0807A032 - movs r0, 0x1 - mov r8, r0 - ldr r1, _0807A098 - movs r2, 0x82 - lsls r2, 1 - adds r0, r7, r2 - ldr r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_0807A032: - movs r6, 0x1 - movs r0, 0x8C - lsls r0, 1 - adds r2, r7, r0 - movs r7, 0xFE - movs r3, 0x3 -_0807A03E: - ldrb r1, [r2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0807A05E - ldrb r1, [r2, 0x1] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0807A05E - movs r0, 0x1 - mov r8, r0 - mov r9, r0 - adds r0, r7, 0 - ands r0, r1 - strb r0, [r2, 0x1] -_0807A05E: - adds r2, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _0807A03E - mov r2, r8 - cmp r2, 0 - beq _0807A0A0 - ldr r0, [sp] - cmp r0, 0 - beq _0807A078 - adds r0, r4, 0 - bl sub_80420C8 -_0807A078: - mov r2, r9 - cmp r2, 0 - beq _0807A0B2 - ldr r0, _0807A09C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _0807A0B2 - .align 2, 0 -_0807A08C: .4byte gUnknown_8100594 -_0807A090: .4byte gPtrExposedWoreOffMessage -_0807A094: .4byte 0x00000111 -_0807A098: .4byte gUnknown_80FA124 -_0807A09C: .4byte gPtrSealedMoveReleasedMessage -_0807A0A0: - mov r0, r10 - cmp r0, 0 - bne _0807A0B2 - ldr r0, _0807A0C8 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_0807A0B2: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807A0B8: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807A0C8: .4byte gUnknown_81004E8 - thumb_func_end sub_8079F20 - - thumb_func_start sub_807A0CC -sub_807A0CC: - push {r4-r7,lr} - adds r5, r1, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A11E - ldr r4, [r5, 0x70] - adds r0, r4, 0 - movs r1, 0 - bl sub_806BFC0 - adds r1, r4, 0 - adds r1, 0xFD - movs r0, 0 - strb r0, [r1] - subs r1, 0x8 - strb r0, [r1] - movs r7, 0x1 - movs r6, 0xFE - movs r0, 0x8C - lsls r0, 1 - adds r2, r4, r0 - movs r3, 0x3 -_0807A0FE: - ldrb r1, [r2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _0807A110 - ldrb r1, [r2, 0x1] - adds r0, r6, 0 - ands r0, r1 - strb r0, [r2, 0x1] -_0807A110: - adds r2, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _0807A0FE - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_0807A11E: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807A0CC - - thumb_func_start sub_807A124 -sub_807A124: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r6, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r4, r2, 24 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - movs r0, 0 - mov r9, r0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0807A14E - b _0807A27C -_0807A14E: - ldr r7, [r5, 0x70] - ldr r0, _0807A170 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r7, 0 - adds r0, 0xA8 - ldrb r0, [r0] - cmp r0, 0x6 - bls _0807A166 - b _0807A260 -_0807A166: - lsls r0, 2 - ldr r1, _0807A174 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A170: .4byte gAvailablePokemonNames -_0807A174: .4byte _0807A178 - .align 2, 0 -_0807A178: - .4byte _0807A260 - .4byte _0807A194 - .4byte _0807A1A0 - .4byte _0807A1B4 - .4byte _0807A228 - .4byte _0807A1E8 - .4byte _0807A260 -_0807A194: - movs r1, 0x1 - mov r9, r1 - ldr r0, _0807A19C - b _0807A1A2 - .align 2, 0 -_0807A19C: .4byte gUnknown_80FA6E8 -_0807A1A0: - ldr r0, _0807A1B0 -_0807A1A2: - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _0807A260 - .align 2, 0 -_0807A1B0: .4byte gUnknown_80FA708 -_0807A1B4: - movs r2, 0x1 - mov r9, r2 - ldr r0, _0807A1DC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 - mov r0, r8 - cmp r0, 0 - beq _0807A260 - ldr r0, _0807A1E0 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r3, _0807A1E4 - adds r0, r5, 0 - movs r2, 0x8 - bl sub_806F324 - b _0807A260 - .align 2, 0 -_0807A1DC: .4byte gUnknown_80FA70C -_0807A1E0: .4byte gUnknown_80F4F78 -_0807A1E4: .4byte 0x0000020f -_0807A1E8: - movs r0, 0x1 - mov r9, r0 - ldr r0, _0807A220 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 - ldr r0, _0807A224 - movs r1, 0 - ldrsh r2, [r0, r1] - movs r4, 0 - str r4, [sp] - adds r0, r6, 0 - adds r1, r5, 0 - movs r3, 0 - bl HealTargetHP - adds r0, r7, 0 - adds r0, 0xA8 - strb r4, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0x1 - bl sub_8079F20 - b _0807A260 - .align 2, 0 -_0807A220: .4byte gUnknown_80FA710 -_0807A224: .4byte gUnknown_80F4F7A -_0807A228: - cmp r4, 0 - beq _0807A254 - adds r1, r7, 0 - adds r1, 0xA8 - movs r0, 0 - strb r0, [r1] - ldr r1, _0807A250 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_808417C - adds r2, r0, 0 - adds r2, 0x1 - adds r0, r6, 0 - adds r1, r5, 0 - movs r3, 0x1 - bl sub_8075C58 - b _0807A27C - .align 2, 0 -_0807A250: .4byte gUnknown_80F4F2C -_0807A254: - ldr r0, _0807A28C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 -_0807A260: - adds r1, r7, 0 - adds r1, 0xA8 - movs r0, 0 - strb r0, [r1] - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites - mov r2, r9 - cmp r2, 0 - beq _0807A27C - adds r0, r5, 0 - movs r1, 0x8 - bl sub_806CE68 -_0807A27C: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807A28C: .4byte gUnknown_80FA734 - thumb_func_end sub_807A124 - - thumb_func_start sub_807A290 -sub_807A290: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A31A - ldr r6, [r4, 0x70] - ldr r0, _0807A2C4 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r6, 0 - adds r0, 0xAC - ldrb r0, [r0] - cmp r0, 0x5 - bhi _0807A30C - lsls r0, 2 - ldr r1, _0807A2C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A2C4: .4byte gAvailablePokemonNames -_0807A2C8: .4byte _0807A2CC - .align 2, 0 -_0807A2CC: - .4byte _0807A30C - .4byte _0807A300 - .4byte _0807A2E4 - .4byte _0807A2E4 - .4byte _0807A2EC - .4byte _0807A30C -_0807A2E4: - ldr r0, _0807A2E8 - b _0807A2EE - .align 2, 0 -_0807A2E8: .4byte gUnknown_80FA8A8 -_0807A2EC: - ldr r0, _0807A2FC -_0807A2EE: - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _0807A30C - .align 2, 0 -_0807A2FC: .4byte gUnknown_80FA868 -_0807A300: - ldr r0, _0807A320 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_0807A30C: - adds r1, r6, 0 - adds r1, 0xAC - movs r0, 0 - strb r0, [r1] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807A31A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807A320: .4byte gUnknown_80FA888 - thumb_func_end sub_807A290 - - thumb_func_start SendImmobilizeEndMessage -SendImmobilizeEndMessage: - push {r4-r7,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r7, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A3F4 - ldr r6, [r4, 0x70] - ldr r0, _0807A358 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r6, 0 - adds r0, 0xB0 - ldrb r0, [r0] - cmp r0, 0x8 - bhi _0807A3DC - lsls r0, 2 - ldr r1, _0807A35C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A358: .4byte gAvailablePokemonNames -_0807A35C: .4byte _0807A360 - .align 2, 0 -_0807A360: - .4byte _0807A3DC - .4byte _0807A384 - .4byte _0807A3A0 - .4byte _0807A3B4 - .4byte _0807A3B4 - .4byte _0807A3A0 - .4byte _0807A3D0 - .4byte _0807A398 - .4byte _0807A3DC -_0807A384: - ldr r0, _0807A394 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - movs r7, 0x1 - b _0807A3DC - .align 2, 0 -_0807A394: .4byte gUnknown_80FA8BC -_0807A398: - ldr r0, _0807A39C - b _0807A3A2 - .align 2, 0 -_0807A39C: .4byte gUnknown_80FA820 -_0807A3A0: - ldr r0, _0807A3B0 -_0807A3A2: - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _0807A3DC - .align 2, 0 -_0807A3B0: .4byte gUnknown_80FA824 -_0807A3B4: - ldr r0, _0807A3CC - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - adds r0, r6, 0 - adds r0, 0x9C - ldr r0, [r0] - bl sub_8076CB4 - b _0807A3DC - .align 2, 0 -_0807A3CC: .4byte gUnknown_80FA81C -_0807A3D0: - ldr r0, _0807A3FC - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_0807A3DC: - adds r1, r6, 0 - adds r1, 0xB0 - movs r0, 0 - strb r0, [r1] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites - cmp r7, 0 - beq _0807A3F4 - adds r0, r4, 0 - bl sub_8042A74 -_0807A3F4: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807A3FC: .4byte gUnknown_80FABF8 - thumb_func_end SendImmobilizeEndMessage - - thumb_func_start sub_807A400 -sub_807A400: - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A4BC - ldr r6, [r5, 0x70] - ldr r0, _0807A434 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r6, 0 - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x8 - bhi _0807A4A8 - lsls r0, 2 - ldr r1, _0807A438 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A434: .4byte gAvailablePokemonNames -_0807A438: .4byte _0807A43C - .align 2, 0 -_0807A43C: - .4byte _0807A4A8 - .4byte _0807A49C - .4byte _0807A460 - .4byte _0807A478 - .4byte _0807A468 - .4byte _0807A470 - .4byte _0807A488 - .4byte _0807A480 - .4byte _0807A4A8 -_0807A460: - ldr r0, _0807A464 - b _0807A48A - .align 2, 0 -_0807A464: .4byte gUnknown_80FA800 -_0807A468: - ldr r0, _0807A46C - b _0807A48A - .align 2, 0 -_0807A46C: .4byte gUnknown_80FA97C -_0807A470: - ldr r0, _0807A474 - b _0807A48A - .align 2, 0 -_0807A474: .4byte gUnknown_80FA9DC -_0807A478: - ldr r0, _0807A47C - b _0807A48A - .align 2, 0 -_0807A47C: .4byte gUnknown_80FAC38 -_0807A480: - ldr r0, _0807A484 - b _0807A48A - .align 2, 0 -_0807A484: .4byte gUnknown_80FAB90 -_0807A488: - ldr r0, _0807A498 -_0807A48A: - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _0807A4A8 - .align 2, 0 -_0807A498: .4byte gUnknown_80FAAAC -_0807A49C: - ldr r0, _0807A4C4 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80522F4 -_0807A4A8: - adds r1, r6, 0 - adds r1, 0xBC - movs r0, 0 - strb r0, [r1] - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites - adds r0, r5, 0 - bl GetMovementSpeed -_0807A4BC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807A4C4: .4byte gUnknown_80FAC18 - thumb_func_end sub_807A400 - - thumb_func_start sub_807A4C8 -sub_807A4C8: - push {r4,r5,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0807A4DA - b _0807A5C4 -_0807A4DA: - ldr r5, [r4, 0x70] - ldr r0, _0807A4FC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r0, 0xC4 - ldrb r0, [r0] - cmp r0, 0xF - bhi _0807A5B6 - lsls r0, 2 - ldr r1, _0807A500 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A4FC: .4byte gAvailablePokemonNames -_0807A500: .4byte _0807A504 - .align 2, 0 -_0807A504: - .4byte _0807A5B6 - .4byte _0807A544 - .4byte _0807A54C - .4byte _0807A554 - .4byte _0807A55C - .4byte _0807A564 - .4byte _0807A56C - .4byte _0807A574 - .4byte _0807A57C - .4byte _0807A584 - .4byte _0807A55C - .4byte _0807A58C - .4byte _0807A594 - .4byte _0807A59C - .4byte _0807A5AC - .4byte _0807A5B6 -_0807A544: - ldr r0, _0807A548 - b _0807A59E - .align 2, 0 -_0807A548: .4byte gUnknown_80FA638 -_0807A54C: - ldr r0, _0807A550 - b _0807A59E - .align 2, 0 -_0807A550: .4byte gUnknown_80FA69C -_0807A554: - ldr r0, _0807A558 - b _0807A59E - .align 2, 0 -_0807A558: .4byte gUnknown_80FA658 -_0807A55C: - ldr r0, _0807A560 - b _0807A59E - .align 2, 0 -_0807A560: .4byte gUnknown_80FA67C -_0807A564: - ldr r0, _0807A568 - b _0807A59E - .align 2, 0 -_0807A568: .4byte gUnknown_80FA6BC -_0807A56C: - ldr r0, _0807A570 - b _0807A59E - .align 2, 0 -_0807A570: .4byte gUnknown_80FA6D4 -_0807A574: - ldr r0, _0807A578 - b _0807A59E - .align 2, 0 -_0807A578: .4byte gUnknown_80FA9C0 -_0807A57C: - ldr r0, _0807A580 - b _0807A59E - .align 2, 0 -_0807A580: .4byte gUnknown_80FAA68 -_0807A584: - ldr r0, _0807A588 - b _0807A59E - .align 2, 0 -_0807A588: .4byte gUnknown_80FAAC8 -_0807A58C: - ldr r0, _0807A590 - b _0807A59E - .align 2, 0 -_0807A590: .4byte gUnknown_80FAAE8 -_0807A594: - ldr r0, _0807A598 - b _0807A59E - .align 2, 0 -_0807A598: .4byte gUnknown_80FAB08 -_0807A59C: - ldr r0, _0807A5A8 -_0807A59E: - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage - b _0807A5B6 - .align 2, 0 -_0807A5A8: .4byte gUnknown_80FAB28 -_0807A5AC: - ldr r0, _0807A5CC - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage -_0807A5B6: - adds r1, r5, 0 - adds r1, 0xC4 - movs r0, 0 - strb r0, [r1] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807A5C4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807A5CC: .4byte gUnknown_80FAB40 - thumb_func_end sub_807A4C8 - - thumb_func_start sub_807A5D0 -sub_807A5D0: - push {r4-r7,lr} - adds r5, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A6B2 - ldr r7, [r5, 0x70] - ldr r0, _0807A604 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r7, 0 - adds r0, 0xC8 - ldrb r0, [r0] - cmp r0, 0x4 - bhi _0807A6A4 - lsls r0, 2 - ldr r1, _0807A608 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A604: .4byte gAvailablePokemonNames -_0807A608: .4byte _0807A60C - .align 2, 0 -_0807A60C: - .4byte _0807A6A4 - .4byte _0807A620 - .4byte _0807A668 - .4byte _0807A634 - .4byte _0807A6A4 -_0807A620: - cmp r6, 0x1 - beq _0807A6A4 - ldr r0, _0807A630 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage - b _0807A6A4 - .align 2, 0 -_0807A630: .4byte gUnknown_80FA7BC -_0807A634: - cmp r6, 0x3 - beq _0807A642 - ldr r0, _0807A658 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage -_0807A642: - ldr r0, _0807A65C - ldr r0, [r0] - ldr r2, _0807A660 - adds r1, r0, r2 - movs r2, 0 - str r2, [r1] - ldr r1, _0807A664 - adds r0, r1 - str r2, [r0] - b _0807A6A4 - .align 2, 0 -_0807A658: .4byte gUnknown_80FA7DC -_0807A65C: .4byte gDungeonGlobalData -_0807A660: .4byte 0x00017b30 -_0807A664: .4byte 0x00017b3c -_0807A668: - adds r0, r7, 0 - adds r0, 0xC8 - movs r4, 0 - strb r4, [r0] - adds r0, r5, 0 - bl sub_806CEBC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl sub_806CCB4 - ldr r0, _0807A6B8 - ldr r0, [r0] - ldr r2, _0807A6BC - adds r0, r2 - strb r4, [r0] - cmp r6, 0x2 - beq _0807A6A4 - ldr r0, _0807A6C0 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _0807A6C4 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage -_0807A6A4: - adds r1, r7, 0 - adds r1, 0xC8 - movs r0, 0 - strb r0, [r1] - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_0807A6B2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807A6B8: .4byte gDungeonGlobalData -_0807A6BC: .4byte 0x000037fc -_0807A6C0: .4byte gAvailablePokemonNames -_0807A6C4: .4byte gUnknown_80FA9A0 - thumb_func_end sub_807A5D0 - - thumb_func_start sub_807A6C8 -sub_807A6C8: - push {r4,r5,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A72A - ldr r5, [r4, 0x70] - ldr r0, _0807A6F8 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r0, 0xD0 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0807A6FC - cmp r0, 0x1 - ble _0807A716 - cmp r0, 0x2 - beq _0807A70C - b _0807A716 - .align 2, 0 -_0807A6F8: .4byte gAvailablePokemonNames -_0807A6FC: - ldr r0, _0807A708 - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage - b _0807A716 - .align 2, 0 -_0807A708: .4byte gUnknown_80FA79C -_0807A70C: - ldr r0, _0807A730 - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage -_0807A716: - adds r1, r5, 0 - adds r1, 0xD0 - movs r0, 0 - strb r0, [r1] - adds r1, 0x8 - movs r0, 0xFF - strb r0, [r1] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807A72A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807A730: .4byte gUnknown_80FAA8C - thumb_func_end sub_807A6C8 - - thumb_func_start sub_807A734 -sub_807A734: - push {r4,r5,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A7BC - ldr r5, [r4, 0x70] - ldr r0, _0807A764 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r0, 0xDC - ldrb r0, [r0] - cmp r0, 0x5 - bhi _0807A7AE - lsls r0, 2 - ldr r1, _0807A768 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A764: .4byte gAvailablePokemonNames -_0807A768: .4byte _0807A76C - .align 2, 0 -_0807A76C: - .4byte _0807A7AE - .4byte _0807A784 - .4byte _0807A78C - .4byte _0807A794 - .4byte _0807A7A4 - .4byte _0807A7AE -_0807A784: - ldr r0, _0807A788 - b _0807A796 - .align 2, 0 -_0807A788: .4byte gUnknown_80FA8E0 -_0807A78C: - ldr r0, _0807A790 - b _0807A796 - .align 2, 0 -_0807A790: .4byte gUnknown_80FA90C -_0807A794: - ldr r0, _0807A7A0 -_0807A796: - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage - b _0807A7AE - .align 2, 0 -_0807A7A0: .4byte gUnknown_80FA934 -_0807A7A4: - ldr r0, _0807A7C4 - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage -_0807A7AE: - adds r1, r5, 0 - adds r1, 0xDC - movs r0, 0 - strb r0, [r1] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807A7BC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807A7C4: .4byte gUnknown_80FA95C - thumb_func_end sub_807A734 - - thumb_func_start sub_807A7C8 -sub_807A7C8: - push {r4-r6,lr} - adds r4, r1, 0 - movs r6, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A87E - ldr r5, [r4, 0x70] - ldr r0, _0807A7FC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r0, 0xE4 - ldrb r0, [r0] - cmp r0, 0x4 - bhi _0807A866 - lsls r0, 2 - ldr r1, _0807A800 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A7FC: .4byte gAvailablePokemonNames -_0807A800: .4byte _0807A804 - .align 2, 0 -_0807A804: - .4byte _0807A866 - .4byte _0807A818 - .4byte _0807A834 - .4byte _0807A824 - .4byte _0807A866 -_0807A818: - movs r6, 0x1 - ldr r0, _0807A820 - b _0807A826 - .align 2, 0 -_0807A820: .4byte gUnknown_80FA9F4 -_0807A824: - ldr r0, _0807A830 -_0807A826: - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage - b _0807A866 - .align 2, 0 -_0807A830: .4byte gUnknown_80FABBC -_0807A834: - movs r0, 0x2 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl sub_8069F54 - strh r0, [r5, 0x4] - movs r1, 0x4 - ldrsh r0, [r5, r1] - bl sub_80687D0 - str r0, [r4, 0x64] - adds r0, r4, 0 - bl sub_806CEBC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_806CCB4 - ldr r0, _0807A884 - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage -_0807A866: - adds r1, r5, 0 - adds r1, 0xE4 - movs r0, 0 - strb r0, [r1] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites - cmp r6, 0 - beq _0807A87E - movs r0, 0x1 - bl sub_807EC28 -_0807A87E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807A884: .4byte gUnknown_80FAB6C - thumb_func_end sub_807A7C8 - - thumb_func_start sub_807A888 -sub_807A888: - push {r4,r5,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A918 - ldr r5, [r4, 0x70] - ldr r0, _0807A8B8 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r0, 0xE8 - ldrb r0, [r0] - cmp r0, 0x4 - bhi _0807A8F6 - lsls r0, 2 - ldr r1, _0807A8BC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A8B8: .4byte gAvailablePokemonNames -_0807A8BC: .4byte _0807A8C0 - .align 2, 0 -_0807A8C0: - .4byte _0807A8F6 - .4byte _0807A8D4 - .4byte _0807A8DC - .4byte _0807A8EC - .4byte _0807A8F6 -_0807A8D4: - ldr r0, _0807A8D8 - b _0807A8DE - .align 2, 0 -_0807A8D8: .4byte gUnknown_80FAA0C -_0807A8DC: - ldr r0, _0807A8E8 -_0807A8DE: - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage - b _0807A8F6 - .align 2, 0 -_0807A8E8: .4byte gUnknown_80FAA2C -_0807A8EC: - ldr r0, _0807A920 - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage -_0807A8F6: - adds r0, r5, 0 - adds r0, 0xE8 - movs r1, 0 - strb r1, [r0] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites - ldrb r0, [r5, 0x7] - cmp r0, 0 - beq _0807A918 - movs r0, 0x31 - bl sub_803E46C - bl sub_8049ED4 - bl sub_8040A84 -_0807A918: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807A920: .4byte gUnknown_80FAA48 - thumb_func_end sub_807A888 - - thumb_func_start sub_807A924 -sub_807A924: - push {r4,r5,lr} - adds r5, r1, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A95C - ldr r4, [r5, 0x70] - ldr r0, _0807A964 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r4, 0xEC - ldrb r0, [r4] - cmp r0, 0x1 - bne _0807A952 - ldr r0, _0807A968 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage -_0807A952: - movs r0, 0 - strb r0, [r4] - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_0807A95C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807A964: .4byte gAvailablePokemonNames -_0807A968: .4byte gUnknown_80FABC0 - thumb_func_end sub_807A924 - - thumb_func_start sub_807A96C -sub_807A96C: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - ldr r0, [r4, 0x70] - adds r5, r0, 0 - movs r2, 0 - adds r0, 0xB0 - ldrb r0, [r0] - cmp r0, 0x6 - bne _0807A988 - adds r0, r6, 0 - bl SendImmobilizeEndMessage - movs r2, 0x1 -_0807A988: - adds r0, r5, 0 - adds r0, 0xA8 - ldrh r1, [r0] - ldr r0, _0807A9AC - cmp r1, r0 - bne _0807A9A2 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x1 - bl sub_807A124 - movs r2, 0x1 -_0807A9A2: - adds r0, r2, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0807A9AC: .4byte 0x00007f01 - thumb_func_end sub_807A96C - - thumb_func_start sub_807A9B0 -sub_807A9B0: - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x70] - adds r1, r0, 0 - adds r1, 0xA8 - movs r2, 0 - strb r2, [r1] - adds r0, 0xA9 - strb r2, [r0] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_806A898 - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807A9B0 - - thumb_func_start sub_807A9D8 -sub_807A9D8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807AA20 - ldr r2, [r4, 0x70] - adds r3, r2, 0 - adds r3, 0xB0 - ldrb r0, [r3] - cmp r0, 0x1 - bne _0807AA20 - movs r1, 0 - strb r1, [r3] - adds r0, r2, 0 - adds r0, 0xB8 - strb r1, [r0] - adds r0, 0x1 - strb r1, [r0] - ldr r0, _0807AA28 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _0807AA2C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807AA20: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807AA28: .4byte gAvailablePokemonNames -_0807AA2C: .4byte gUnknown_80FA8BC - thumb_func_end sub_807A9D8 - - thumb_func_start sub_807AA30 -sub_807AA30: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r4, 0 -_0807AA3C: - ldr r0, _0807AAD8 - ldr r0, [r0] - lsls r1, r4, 2 - ldr r2, _0807AADC - adds r0, r2 - adds r0, r1 - ldr r5, [r0] - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - adds r4, 0x1 - mov r10, r4 - cmp r0, 0 - beq _0807AB22 - ldr r1, [r5, 0x70] - adds r0, r1, 0 - adds r0, 0xA8 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0807AB22 - adds r0, r1, 0 - adds r0, 0xA9 - ldrb r0, [r0] - cmp r0, 0x7F - bne _0807AB22 - movs r0, 0 - mov r9, r0 - mov r8, r0 - adds r0, r5, 0 - bl GetEntityRoomIndex - lsls r0, 24 - lsrs r7, r0, 24 - movs r6, 0 -_0807AA82: - ldr r0, _0807AAD8 - ldr r0, [r0] - lsls r1, r6, 2 - ldr r2, _0807AAE0 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807AB00 - adds r0, r4, 0 - movs r1, 0x18 - bl HasItem - lsls r0, 24 - cmp r0, 0 - bne _0807AB00 - movs r0, 0x4 - ldrsh r1, [r4, r0] - movs r2, 0x4 - ldrsh r0, [r5, r2] - subs r1, r0 - cmp r1, 0 - bge _0807AABA - negs r1, r1 -_0807AABA: - cmp r1, 0x1 - bgt _0807AAE4 - movs r0, 0x6 - ldrsh r1, [r4, r0] - movs r2, 0x6 - ldrsh r0, [r5, r2] - subs r1, r0 - cmp r1, 0 - bge _0807AACE - negs r1, r1 -_0807AACE: - cmp r1, 0x1 - bgt _0807AAE4 - movs r0, 0x1 - mov r9, r0 - b _0807AB06 - .align 2, 0 -_0807AAD8: .4byte gDungeonGlobalData -_0807AADC: .4byte 0x0001358c -_0807AAE0: .4byte 0x0001357c -_0807AAE4: - adds r0, r4, 0 - movs r1, 0x1D - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _0807AB00 - adds r0, r4, 0 - bl GetEntityRoomIndex - lsls r0, 24 - lsrs r0, 24 - cmp r7, r0 - beq _0807AB1C -_0807AB00: - adds r6, 0x1 - cmp r6, 0x3 - ble _0807AA82 -_0807AB06: - mov r2, r8 - cmp r2, 0 - bne _0807AB1C - mov r0, r9 - cmp r0, 0 - beq _0807AB16 - movs r2, 0x1 - mov r8, r2 -_0807AB16: - mov r0, r8 - cmp r0, 0 - beq _0807AB22 -_0807AB1C: - adds r0, r5, 0 - bl sub_807A9B0 -_0807AB22: - mov r4, r10 - cmp r4, 0xF - ble _0807AA3C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807AA30 - - thumb_func_start sub_807AB38 -sub_807AB38: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1A8 - adds r2, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r0, [r2, 0x70] - ldrb r0, [r0, 0x6] - cmp r0, 0 - beq _0807AB54 - b _0807ADA6 -_0807AB54: - adds r0, r2, 0 - str r2, [sp, 0x1A4] - bl GetMapTileForDungeonEntity_2 - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - ldr r2, [sp, 0x1A4] - cmp r0, 0 - bne _0807AB6A - b _0807ADA6 -_0807AB6A: - ldr r3, _0807AC10 - ldr r0, [r3] - ldr r5, _0807AC14 - adds r1, r0, r5 - ldrb r0, [r1] - cmp r0, 0 - beq _0807AB7A - b _0807ADA6 -_0807AB7A: - movs r0, 0x1 - strb r0, [r1] - ldr r3, [r3] - ldr r1, _0807AC18 - adds r0, r3, r1 - ldrb r1, [r0] - cmp r1, 0xFF - bne _0807AB8C - b _0807ADA6 -_0807AB8C: - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r5, _0807AC1C - adds r0, r5 - adds r3, r0 - movs r0, 0 - mov r8, r0 - cmp r4, 0 - beq _0807AC20 - movs r1, 0x6 - ldrsh r0, [r2, r1] - subs r6, r0, 0x4 - adds r0, 0x4 - cmp r6, r0 - ble _0807ABAE - b _0807ACB4 -_0807ABAE: - movs r4, 0x4 - ldrsh r0, [r2, r4] - subs r4, r0, 0x4 - adds r0, 0x4 - adds r5, r6, 0x1 - mov r9, r5 - cmp r4, r0 - bgt _0807AC00 - mov r1, r8 - lsls r0, r1, 2 - mov r1, sp - adds r5, r0, r1 -_0807ABC6: - adds r0, r4, 0 - adds r1, r6, 0 - str r2, [sp, 0x1A4] - bl GetMapTile_2 - adds r1, r0, 0 - ldr r0, [r1, 0x10] - ldr r2, [sp, 0x1A4] - cmp r0, 0 - bne _0807ABF4 - ldrh r1, [r1] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _0807ABF4 - mov r0, r8 - cmp r0, 0x63 - bgt _0807ABF4 - strh r4, [r5] - strh r6, [r5, 0x2] - adds r5, 0x4 - movs r1, 0x1 - add r8, r1 -_0807ABF4: - adds r4, 0x1 - movs r1, 0x4 - ldrsh r0, [r2, r1] - adds r0, 0x4 - cmp r4, r0 - ble _0807ABC6 -_0807AC00: - mov r6, r9 - movs r4, 0x6 - ldrsh r0, [r2, r4] - adds r0, 0x4 - cmp r6, r0 - ble _0807ABAE - b _0807ACB4 - .align 2, 0 -_0807AC10: .4byte gDungeonGlobalData -_0807AC14: .4byte 0x00000671 -_0807AC18: .4byte 0x00003a0c -_0807AC1C: .4byte 0x000104c4 -_0807AC20: - movs r5, 0x4 - ldrsh r0, [r2, r5] - subs r1, r0, 0x4 - movs r5, 0x2 - ldrsh r4, [r3, r5] - mov r10, r4 - cmp r10, r1 - bge _0807AC32 - mov r10, r1 -_0807AC32: - adds r1, r0, 0x5 - movs r0, 0x6 - ldrsh r7, [r3, r0] - cmp r7, r1 - ble _0807AC3E - adds r7, r1, 0 -_0807AC3E: - movs r1, 0x6 - ldrsh r0, [r2, r1] - subs r2, r0, 0x4 - movs r4, 0x4 - ldrsh r1, [r3, r4] - cmp r1, r2 - bge _0807AC4E - adds r1, r2, 0 -_0807AC4E: - adds r0, 0x5 - movs r5, 0x8 - ldrsh r2, [r3, r5] - cmp r2, r0 - ble _0807AC5A - adds r2, r0, 0 -_0807AC5A: - adds r6, r1, 0 - cmp r6, r2 - bge _0807ACB4 -_0807AC60: - mov r4, r10 - adds r0, r6, 0x1 - mov r9, r0 - cmp r4, r7 - bge _0807ACAE - mov r1, r8 - lsls r0, r1, 2 - mov r1, sp - adds r5, r0, r1 -_0807AC72: - adds r0, r4, 0 - adds r1, r6, 0 - str r2, [sp, 0x1A4] - bl GetMapTile_2 - adds r1, r0, 0 - ldr r0, [r1, 0x10] - ldr r2, [sp, 0x1A4] - cmp r0, 0 - bne _0807ACA8 - ldrh r1, [r1] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _0807ACA8 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0807ACA8 - mov r0, r8 - cmp r0, 0x63 - bgt _0807ACA8 - strh r4, [r5] - strh r6, [r5, 0x2] - adds r5, 0x4 - movs r1, 0x1 - add r8, r1 -_0807ACA8: - adds r4, 0x1 - cmp r4, r7 - blt _0807AC72 -_0807ACAE: - mov r6, r9 - cmp r6, r2 - blt _0807AC60 -_0807ACB4: - ldr r0, _0807AD74 - movs r2, 0 - ldrsh r0, [r0, r2] - ldr r1, _0807AD78 - movs r4, 0 - ldrsh r1, [r1, r4] - bl sub_808411C - adds r7, r0, 0 - cmp r7, r8 - blt _0807ACCC - mov r7, r8 -_0807ACCC: - movs r6, 0 - cmp r6, r7 - bge _0807ADA0 - mov r10, r6 -_0807ACD4: - mov r0, r8 - bl DungeonRandomCapped - adds r2, r0, 0 - movs r3, 0 - cmp r3, r8 - bge _0807AD0C - lsls r0, r2, 2 - mov r5, sp - adds r1, r5, r0 - movs r4, 0 - ldrsh r1, [r1, r4] - adds r5, r0, 0 - cmp r1, 0 - bne _0807AD1C -_0807ACF2: - adds r2, 0x1 - cmp r2, r8 - blt _0807ACFA - movs r2, 0 -_0807ACFA: - adds r3, 0x1 - cmp r3, r8 - bge _0807AD0C - lsls r0, r2, 2 - add r0, sp - movs r5, 0 - ldrsh r0, [r0, r5] - cmp r0, 0 - beq _0807ACF2 -_0807AD0C: - lsls r0, r2, 2 - mov r2, sp - adds r1, r2, r0 - movs r4, 0 - ldrsh r1, [r1, r4] - adds r5, r0, 0 - cmp r1, 0 - beq _0807ADA0 -_0807AD1C: - movs r0, 0x1 - bl sub_803D970 - add r4, sp, 0x190 - movs r1, 0 - strh r0, [r4] - mov r0, r10 - strh r0, [r4, 0x8] - strb r1, [r4, 0x2] - mov r1, r10 - str r1, [r4, 0x4] - movs r0, 0x1 - strb r0, [r4, 0x10] - mov r2, sp - adds r1, r2, r5 - ldrh r0, [r1] - strh r0, [r4, 0xC] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0xE] - movs r5, 0 - ldrsh r0, [r4, r5] - movs r1, 0x1 - bl sub_806AA0C - lsls r0, 24 - adds r6, 0x1 - mov r9, r6 - cmp r0, 0 - beq _0807AD9A - adds r0, r4, 0 - movs r1, 0 - bl sub_806B7F8 - adds r4, r0, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807AD9A - movs r0, 0xC8 - lsls r0, 8 - str r0, [r4, 0x1C] - movs r5, 0 - b _0807AD84 - .align 2, 0 -_0807AD74: .4byte gUnknown_80F4DA2 -_0807AD78: .4byte gUnknown_80F4DA4 -_0807AD7C: - movs r0, 0x57 - bl sub_803E46C - adds r5, 0x1 -_0807AD84: - cmp r5, 0x63 - bgt _0807AD96 - ldr r0, [r4, 0x1C] - movs r1, 0xAA - bl sub_8009DA4 - str r0, [r4, 0x1C] - cmp r0, 0xFF - bgt _0807AD7C -_0807AD96: - mov r0, r10 - str r0, [r4, 0x1C] -_0807AD9A: - mov r6, r9 - cmp r6, r7 - blt _0807ACD4 -_0807ADA0: - movs r0, 0x1 - bl sub_804178C -_0807ADA6: - add sp, 0x1A8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807AB38 - - thumb_func_start MoveIfPossible -MoveIfPossible: - push {r4-r7,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - ldr r4, [r5, 0x70] - adds r0, r4, 0 - adds r0, 0x79 - movs r6, 0 - strb r6, [r0] - adds r0, 0x1 - strb r6, [r0] - adds r0, 0x1 - strb r6, [r0] - adds r0, r5, 0 - movs r1, 0x7 - bl HasTactic - lsls r0, 24 - cmp r0, 0 - beq _0807ADFA - movs r1, 0x10 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - movs r2, 0xE - ldrsh r1, [r4, r2] - asrs r0, 1 - cmp r1, r0 - bgt _0807ADFA - adds r0, r4, 0 - adds r0, 0x44 - strh r6, [r0] - b _0807AEB4 -_0807ADFA: - adds r0, r5, 0 - movs r1, 0x9 - bl HasTactic - lsls r0, 24 - cmp r0, 0 - beq _0807AE12 - adds r1, r4, 0 - adds r1, 0x44 - movs r0, 0 - strh r0, [r1] - b _0807AEB4 -_0807AE12: - ldrb r0, [r4, 0x7] - cmp r0, 0 - bne _0807AE32 - movs r1, 0x9E - lsls r1, 1 - adds r0, r4, r1 - ldr r0, [r0] - bl RoundUpFixedPoint - adds r1, r0, 0 - cmp r1, 0 - bne _0807AE32 - adds r0, r4, 0 - adds r0, 0x44 - strh r1, [r0] - b _0807AEB4 -_0807AE32: - adds r0, r4, 0 - adds r0, 0xA4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0807AE6A - adds r0, r4, 0 - adds r0, 0x44 - movs r2, 0x2 - ldrsh r1, [r4, r2] - bl SetWalkAction - movs r0, 0x8 - bl DungeonRandomCapped - adds r1, r4, 0 - adds r1, 0x46 - strb r0, [r1] - ldrh r1, [r5, 0x4] - movs r2, 0xB6 - lsls r2, 1 - adds r0, r4, r2 - strh r1, [r0] - ldrh r0, [r5, 0x6] - subs r0, 0x1 - adds r2, 0x2 - adds r1, r4, r2 - strh r0, [r1] - b _0807AEB4 -_0807AE6A: - adds r0, r5, 0 - adds r1, r7, 0 - bl ShouldAvoidEnemiesAndShowEffect - lsls r0, 24 - cmp r0, 0 - beq _0807AE80 - adds r0, r5, 0 - bl AvoidEnemies - b _0807AE9C -_0807AE80: - adds r0, r5, 0 - bl CanTakeItem - lsls r0, 24 - cmp r0, 0 - beq _0807AE96 - adds r1, r4, 0 - adds r1, 0x44 - movs r0, 0x3F - strh r0, [r1] - b _0807AEB4 -_0807AE96: - adds r0, r5, 0 - bl ChooseTargetPosition -_0807AE9C: - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _0807AEAC - adds r0, r4, 0 - adds r0, 0x44 - strh r2, [r0] - b _0807AEB4 -_0807AEAC: - adds r0, r5, 0 - adds r1, r7, 0 - bl DecideMovement -_0807AEB4: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end MoveIfPossible - - thumb_func_start CanTakeItem -CanTakeItem: - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, [r4, 0x70] - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807AF50 - adds r0, r4, 0 - bl CannotUseItems - lsls r0, 24 - cmp r0, 0 - bne _0807AF50 - adds r0, r4, 0 - bl GetMapTileForDungeonEntity_2 - adds r6, r0, 0 - ldr r4, [r6, 0x14] - cmp r4, 0 - beq _0807AF50 - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x5 - bhi _0807AF50 - lsls r0, 2 - ldr r1, _0807AEFC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807AEFC: .4byte _0807AF00 - .align 2, 0 -_0807AF00: - .4byte _0807AF50 - .4byte _0807AF50 - .4byte _0807AF50 - .4byte _0807AF18 - .4byte _0807AF50 - .4byte _0807AF50 -_0807AF18: - ldrb r0, [r5, 0x7] - cmp r0, 0 - bne _0807AF50 - adds r0, r5, 0 - adds r0, 0x60 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0807AF50 - ldrh r1, [r6] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0807AF3C - ldrb r0, [r5, 0x6] - cmp r0, 0 - bne _0807AF50 -_0807AF3C: - adds r0, r4, 0 - bl GetItemData - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0807AF50 - movs r0, 0x1 - b _0807AF52 -_0807AF50: - movs r0, 0 -_0807AF52: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end CanTakeItem - - thumb_func_start ChooseTargetPosition -ChooseTargetPosition: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r8, r0 - ldr r7, [r0, 0x70] - bl TargetLeader - lsls r0, 24 - cmp r0, 0 - beq _0807AF74 - b _0807B12C -_0807AF74: - ldr r0, _0807AF8C - ldr r1, [r0] - ldr r2, _0807AF90 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0807AF98 - ldr r3, _0807AF94 - adds r6, r1, r3 - movs r4, 0x14 - mov r10, r4 - b _0807AFB4 - .align 2, 0 -_0807AF8C: .4byte gDungeonGlobalData -_0807AF90: .4byte 0x000037fc -_0807AF94: .4byte 0x000135cc -_0807AF98: - ldrb r0, [r7, 0x6] - cmp r0, 0 - beq _0807AFAC - ldr r0, _0807AFA8 - adds r6, r1, r0 - movs r1, 0x4 - mov r10, r1 - b _0807AFB4 - .align 2, 0 -_0807AFA8: .4byte 0x0001357c -_0807AFAC: - ldr r2, _0807B01C - adds r6, r1, r2 - movs r3, 0x10 - mov r10, r3 -_0807AFB4: - mov r0, r8 - bl CanCrossWalls - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r4, 0x1 - negs r4, r4 - str r4, [sp] - ldr r0, _0807B020 - mov r9, r0 - movs r5, 0 - adds r1, r7, 0 - adds r1, 0x78 - str r1, [sp, 0x8] - cmp r5, r10 - bge _0807B09E -_0807AFD6: - lsls r0, r5, 2 - adds r0, r6 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807B098 - ldr r0, [r4, 0x70] - adds r1, r0, 0 - adds r1, 0xA4 - ldrb r1, [r1] - adds r2, r0, 0 - cmp r1, 0 - bne _0807B098 - ldr r0, _0807B024 - ldr r0, [r0] - ldr r3, _0807B028 - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0807B02C - mov r0, r8 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x1 - bl CanTarget - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807B098 - ldr r2, [r4, 0x70] - b _0807B03C - .align 2, 0 -_0807B01C: .4byte 0x0001358c -_0807B020: .4byte 0x000003e7 -_0807B024: .4byte gDungeonGlobalData -_0807B028: .4byte 0x000037fc -_0807B02C: - ldrb r0, [r7, 0x6] - cmp r0, 0 - bne _0807B03C - adds r0, r2, 0 - adds r0, 0xB0 - ldrb r0, [r0] - cmp r0, 0x6 - beq _0807B098 -_0807B03C: - ldrb r0, [r2, 0x8] - cmp r0, 0x1 - beq _0807B098 - ldr r0, [sp, 0x4] - cmp r0, 0 - beq _0807B074 - mov r2, r8 - movs r3, 0x4 - ldrsh r1, [r2, r3] - movs r2, 0x4 - ldrsh r0, [r4, r2] - subs r1, r0 - cmp r1, 0 - bge _0807B05A - negs r1, r1 -_0807B05A: - cmp r1, 0x5 - bgt _0807B074 - mov r3, r8 - movs r0, 0x6 - ldrsh r1, [r3, r0] - movs r2, 0x6 - ldrsh r0, [r4, r2] - subs r1, r0 - cmp r1, 0 - bge _0807B070 - negs r1, r1 -_0807B070: - cmp r1, 0x5 - ble _0807B082 -_0807B074: - mov r0, r8 - adds r1, r4, 0 - bl CanSee_2 - lsls r0, 24 - cmp r0, 0 - beq _0807B098 -_0807B082: - adds r1, r4, 0x4 - mov r0, r8 - adds r0, 0x4 - bl GetMaxPositionDifference - cmp r9, r0 - ble _0807B098 - mov r9, r0 - str r5, [sp] - cmp r0, 0x1 - ble _0807B09E -_0807B098: - adds r5, 0x1 - cmp r5, r10 - blt _0807AFD6 -_0807B09E: - ldr r3, [sp] - cmp r3, 0 - blt _0807B12C - movs r2, 0 - movs r5, 0x1 - ldr r4, [sp, 0x8] - strb r5, [r4] - adds r1, r7, 0 - adds r1, 0x88 - lsls r0, r3, 2 - adds r4, r0, r6 - ldr r0, [r4] - ldr r0, [r0, 0x4] - str r0, [r1] - subs r1, 0x8 - ldr r0, [r4] - str r0, [r1] - ldrh r1, [r0, 0x26] - adds r0, r7, 0 - adds r0, 0x7C - strh r1, [r0] - subs r0, 0x2 - strb r5, [r0] - movs r1, 0x8A - lsls r1, 1 - adds r0, r7, r1 - str r2, [r0] - mov r0, r8 - movs r1, 0x8 - bl HasTactic - lsls r0, 24 - cmp r0, 0 - bne _0807B0E4 - b _0807B2C6 -_0807B0E4: - mov r0, r8 - bl CanSeeTeammate - lsls r0, 24 - cmp r0, 0 - beq _0807B0F2 - b _0807B2C6 -_0807B0F2: - mov r2, r8 - movs r3, 0x4 - ldrsh r1, [r2, r3] - ldr r2, [r4] - movs r4, 0x4 - ldrsh r0, [r2, r4] - subs r1, r0 - cmp r1, 0 - bge _0807B106 - negs r1, r1 -_0807B106: - cmp r1, 0x1 - ble _0807B10C - b _0807B2C6 -_0807B10C: - mov r0, r8 - movs r3, 0x6 - ldrsh r1, [r0, r3] - movs r4, 0x6 - ldrsh r0, [r2, r4] - subs r0, r1, r0 - cmp r0, 0 - bge _0807B11E - negs r0, r0 -_0807B11E: - cmp r0, 0x1 - ble _0807B124 - b _0807B2C6 -_0807B124: - adds r0, r7, 0 - adds r0, 0x7B - strb r5, [r0] - b _0807B2C6 -_0807B12C: - mov r0, r8 - movs r1, 0x1 - bl HasTactic - lsls r0, 24 - cmp r0, 0 - bne _0807B17C - ldrb r5, [r7, 0x6] - adds r0, r7, 0 - adds r0, 0x78 - str r0, [sp, 0x8] - cmp r5, 0 - bne _0807B222 - mov r0, r8 - bl GetLeaderEntityIfVisible - adds r4, r0, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807B222 - movs r0, 0x1 - ldr r1, [sp, 0x8] - strb r0, [r1] - adds r1, r7, 0 - adds r1, 0x88 - ldr r0, [r4, 0x4] - str r0, [r1] - adds r0, r7, 0 - adds r0, 0x80 - str r4, [r0] - ldrh r1, [r4, 0x26] - subs r0, 0x4 - strh r1, [r0] - movs r2, 0x8A - lsls r2, 1 - adds r0, r7, r2 - str r5, [r0] - b _0807B2C6 -_0807B17C: - ldrb r0, [r7, 0x7] - adds r3, r7, 0 - adds r3, 0x78 - str r3, [sp, 0x8] - cmp r0, 0 - beq _0807B222 - ldr r4, _0807B1BC - ldr r0, [r4] - ldr r1, _0807B1C0 - adds r0, r1 - ldrb r0, [r0] - mov r2, r8 - movs r3, 0x4 - ldrsh r0, [r2, r3] - movs r3, 0x6 - ldrsh r1, [r2, r3] - bl GetMapTile_1 - ldrb r1, [r0, 0x9] - cmp r1, 0xFF - bne _0807B1C4 - mov r4, r8 - movs r0, 0x4 - ldrsh r1, [r4, r0] - subs r2, r1, 0x2 - mov r10, r2 - movs r3, 0x6 - ldrsh r0, [r4, r3] - subs r2, r0, 0x2 - adds r6, r1, 0x2 - adds r0, 0x2 - b _0807B1EC - .align 2, 0 -_0807B1BC: .4byte gDungeonGlobalData -_0807B1C0: .4byte 0x00018209 -_0807B1C4: - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _0807B26C - adds r0, r1 - ldr r1, [r4] - adds r1, r0 - movs r2, 0x2 - ldrsh r0, [r1, r2] - subs r0, 0x1 - mov r10, r0 - movs r3, 0x4 - ldrsh r0, [r1, r3] - subs r2, r0, 0x1 - movs r4, 0x6 - ldrsh r0, [r1, r4] - adds r6, r0, 0x1 - movs r3, 0x8 - ldrsh r0, [r1, r3] - adds r0, 0x1 -_0807B1EC: - mov r9, r0 - adds r5, r2, 0 - adds r4, r7, 0 - adds r4, 0x78 - str r4, [sp, 0x8] - cmp r5, r9 - bgt _0807B222 -_0807B1FA: - mov r4, r10 - cmp r4, r6 - bgt _0807B21C -_0807B200: - adds r0, r4, 0 - adds r1, r5, 0 - bl GetMapTile_2 - ldr r0, [r0, 0x14] - cmp r0, 0 - beq _0807B216 - bl GetEntityType - cmp r0, 0x3 - beq _0807B270 -_0807B216: - adds r4, 0x1 - cmp r4, r6 - ble _0807B200 -_0807B21C: - adds r5, 0x1 - cmp r5, r9 - ble _0807B1FA -_0807B222: - ldr r1, [sp, 0x8] - ldrb r0, [r1] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0807B2C0 - adds r3, r7, 0 - adds r3, 0x80 - ldr r1, [r3] - cmp r1, 0 - beq _0807B2C0 - adds r2, r7, 0 - adds r2, 0x7C - ldrh r0, [r1, 0x26] - ldrh r4, [r2] - cmp r0, r4 - bne _0807B2B4 - ldr r1, [r1, 0x70] - mov r9, r1 - movs r5, 0 - mov r4, r9 - adds r4, 0x68 -_0807B250: - lsls r6, r5, 2 - mov r0, r8 - adds r1, r4, 0 - bl InSameRoom - lsls r0, 24 - cmp r0, 0 - bne _0807B294 - adds r4, 0x4 - adds r5, 0x1 - cmp r5, 0x3 - ble _0807B250 - b _0807B2C0 - .align 2, 0 -_0807B26C: .4byte 0x000104c4 -_0807B270: - movs r1, 0 - movs r0, 0x7 - ldr r2, [sp, 0x8] - strb r0, [r2] - adds r0, r7, 0 - adds r0, 0x88 - strh r4, [r0] - adds r0, 0x2 - strh r5, [r0] - subs r0, 0xA - str r1, [r0] - subs r0, 0x4 - strh r1, [r0] - movs r3, 0x8A - lsls r3, 1 - adds r0, r7, r3 - str r1, [r0] - b _0807B2C6 -_0807B294: - movs r2, 0 - movs r0, 0x2 - ldr r4, [sp, 0x8] - strb r0, [r4] - adds r1, r7, 0 - adds r1, 0x88 - mov r0, r9 - adds r0, 0x68 - adds r0, r6 - ldr r0, [r0] - str r0, [r1] - movs r1, 0x8A - lsls r1, 1 - adds r0, r7, r1 - str r2, [r0] - b _0807B2C6 -_0807B2B4: - movs r1, 0 - movs r0, 0x6 - ldr r4, [sp, 0x8] - strb r0, [r4] - str r1, [r3] - strh r1, [r2] -_0807B2C0: - mov r0, r8 - bl Explore -_0807B2C6: - movs r0, 0x1 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end ChooseTargetPosition - - thumb_func_start DecideMovement -DecideMovement: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x3C - mov r9, r0 - lsls r1, 24 - lsrs r7, r1, 24 - ldr r5, [r0, 0x70] - movs r0, 0xB6 - lsls r0, 1 - adds r1, r5, r0 - adds r4, r5, 0 - adds r4, 0x88 - ldr r0, [r4] - str r0, [r1] - mov r2, r9 - ldr r1, [r2, 0x4] - ldr r0, [r4] - cmp r1, r0 - beq _0807B348 - mov r6, r9 - adds r6, 0x4 - adds r0, r6, 0 - adds r1, r4, 0 - bl CalculateFacingDir - mov r8, r0 - adds r0, r5, 0 - adds r0, 0x7A - ldrb r1, [r0] - mov r0, r9 - bl ShouldAvoidFirstHit - lsls r0, 24 - cmp r0, 0 - beq _0807B366 - adds r0, r5, 0 - adds r0, 0x78 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0807B37C - adds r0, r6, 0 - adds r1, r4, 0 - bl IsTargetTwoTilesAway - lsls r0, 24 - cmp r0, 0 - beq _0807B37C - adds r0, r6, 0 - adds r1, r4, 0 - bl GetMaxPositionDifference - cmp r0, 0x2 - bne _0807B354 -_0807B348: - adds r0, r5, 0 - adds r0, 0x44 - movs r1, 0x1 - bl SetAction - b _0807B5CE -_0807B354: - cmp r0, 0x1 - bgt _0807B37C - movs r3, 0x4 - add r8, r3 - movs r0, 0x7 - mov r1, r8 - ands r1, r0 - mov r8, r1 - b _0807B37C -_0807B366: - adds r0, r5, 0 - adds r0, 0x7B - ldrb r0, [r0] - cmp r0, 0 - beq _0807B37C - movs r2, 0x4 - add r8, r2 - movs r0, 0x7 - mov r3, r8 - ands r3, r0 - mov r8, r3 -_0807B37C: - add r4, sp, 0x30 - mov r0, r9 - mov r1, r8 - adds r2, r4, 0 - bl CanMoveForward - lsls r0, 24 - cmp r0, 0 - beq _0807B3A8 - adds r0, r5, 0 - adds r0, 0x44 - movs r2, 0x2 - ldrsh r1, [r5, r2] - bl SetWalkAction - movs r0, 0x7 - mov r3, r8 - ands r3, r0 - adds r0, r5, 0 - adds r0, 0x46 - strb r3, [r0] - b _0807B5CE -_0807B3A8: - ldrb r0, [r4] - cmp r0, 0 - beq _0807B444 - ldrb r0, [r5, 0x6] - cmp r0, 0 - bne _0807B3E8 - ldr r1, _0807B3E0 - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0807B3E8 - adds r0, r5, 0 - adds r0, 0x79 - movs r4, 0x1 - strb r4, [r0] - movs r2, 0xA2 - lsls r2, 1 - adds r0, r5, r2 - strb r4, [r0] - adds r0, r5, 0 - adds r0, 0x44 - movs r1, 0x1 - bl SetAction - ldr r3, _0807B3E4 - adds r0, r5, r3 - strb r4, [r0] - b _0807B5CE - .align 2, 0 -_0807B3E0: .4byte 0x00000145 -_0807B3E4: .4byte 0x00000147 -_0807B3E8: - mov r0, r9 - movs r2, 0x4 - ldrsh r1, [r0, r2] - ldr r2, _0807B434 - mov r3, r8 - lsls r0, r3, 2 - adds r2, r0, r2 - movs r3, 0 - ldrsh r0, [r2, r3] - adds r1, r0 - adds r0, r5, 0 - adds r0, 0x88 - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r1, r0 - bne _0807B43C - mov r1, r9 - movs r3, 0x6 - ldrsh r0, [r1, r3] - movs r3, 0x2 - ldrsh r1, [r2, r3] - adds r0, r1 - adds r1, r5, 0 - adds r1, 0x8A - movs r2, 0 - ldrsh r1, [r1, r2] - cmp r0, r1 - bne _0807B43C - adds r0, r5, 0 - adds r0, 0x44 - movs r1, 0x1 - bl SetAction - ldr r3, _0807B438 - adds r1, r5, r3 - movs r0, 0x1 - strb r0, [r1] - b _0807B5CE - .align 2, 0 -_0807B434: .4byte gAdjacentTileOffsets -_0807B438: .4byte 0x00000147 -_0807B43C: - adds r1, r5, 0 - adds r1, 0x79 - movs r0, 0x1 - strb r0, [r1] -_0807B444: - mov r3, sp - mov r2, sp - mov r1, sp - add r0, sp, 0x28 - movs r4, 0x1 - strb r4, [r0] - add r0, sp, 0x20 - strb r4, [r0] - strb r4, [r1, 0x18] - strb r4, [r2, 0x10] - strb r4, [r3, 0x8] - ldrb r6, [r5, 0x6] - cmp r6, 0 - bne _0807B4C8 - mov r0, r8 - ands r0, r4 - cmp r0, 0 - beq _0807B4C8 - mov r1, r9 - movs r2, 0x4 - ldrsh r0, [r1, r2] - adds r1, r5, 0 - adds r1, 0x88 - movs r3, 0 - ldrsh r1, [r1, r3] - subs r2, r0, r1 - cmp r2, 0 - bge _0807B47E - negs r2, r2 -_0807B47E: - mov r0, r9 - movs r3, 0x6 - ldrsh r1, [r0, r3] - adds r0, r5, 0 - adds r0, 0x8A - movs r3, 0 - ldrsh r0, [r0, r3] - subs r1, r0 - cmp r1, 0 - bge _0807B494 - negs r1, r1 -_0807B494: - cmp r2, 0x2 - bgt _0807B4C8 - cmp r1, 0x2 - bgt _0807B4C8 - cmp r2, r1 - beq _0807B4C8 - movs r3, 0x2 - mov r0, r8 - ands r3, r0 - cmp r3, 0 - beq _0807B4BA - cmp r2, r1 - bge _0807B4B4 - mov r0, sp - strb r6, [r0, 0x10] - b _0807B4C8 -_0807B4B4: - mov r0, sp - strb r6, [r0, 0x8] - b _0807B4C8 -_0807B4BA: - cmp r2, r1 - bge _0807B4C4 - mov r0, sp - strb r3, [r0, 0x8] - b _0807B4C8 -_0807B4C4: - mov r0, sp - strb r3, [r0, 0x10] -_0807B4C8: - movs r1, 0x3 - mov r10, r1 - mov r0, r9 - adds r1, r7, 0 - bl ShouldAvoidEnemiesAndShowEffect - lsls r0, 24 - cmp r0, 0 - bne _0807B4E4 - adds r0, r5, 0 - adds r0, 0x7B - ldrb r0, [r0] - cmp r0, 0 - beq _0807B4E8 -_0807B4E4: - movs r2, 0x5 - mov r10, r2 -_0807B4E8: - movs r6, 0x1 - adds r3, r5, 0 - adds r3, 0x44 - str r3, [sp, 0x34] - cmp r6, r10 - bge _0807B53C - mov r3, sp - mov r4, sp - adds r4, 0xA - add r7, sp, 0x8 -_0807B4FC: - lsls r0, r6, 3 - add r2, sp, 0x4 - adds r2, r0 - ldr r1, _0807B598 - lsls r0, r6, 2 - adds r0, r1 - ldr r1, [r0] - add r1, r8 - movs r0, 0x7 - ands r1, r0 - str r1, [r2] - mov r0, r9 - adds r2, r4, 0 - str r3, [sp, 0x38] - bl CanMoveForward - strb r0, [r7, 0x1] - lsls r0, 24 - ldr r3, [sp, 0x38] - cmp r0, 0 - bne _0807B532 - ldrb r0, [r4] - cmp r0, 0 - bne _0807B532 - movs r0, 0x1 - strb r0, [r3, 0x10] - strb r0, [r3, 0x8] -_0807B532: - adds r4, 0x8 - adds r7, 0x8 - adds r6, 0x1 - cmp r6, r10 - blt _0807B4FC -_0807B53C: - movs r6, 0x1 - cmp r6, r10 - bge _0807B56E - adds r3, r5, 0 - adds r3, 0x79 - add r1, sp, 0x8 - movs r4, 0x8 - movs r7, 0x1 -_0807B54C: - adds r2, r4, 0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _0807B55A - ldrb r0, [r1] - cmp r0, 0 - bne _0807B5A0 -_0807B55A: - ldrb r0, [r1, 0x2] - cmp r0, 0 - beq _0807B562 - strb r7, [r3] -_0807B562: - adds r1, 0x8 - adds r4, r2, 0 - adds r4, 0x8 - adds r6, 0x1 - cmp r6, r10 - blt _0807B54C -_0807B56E: - ldr r0, [sp, 0x34] - movs r1, 0x1 - bl SetAction - ldr r1, _0807B59C - adds r0, r5, r1 - movs r1, 0 - movs r2, 0x1 - strb r2, [r0] - ldrb r0, [r5, 0x7] - cmp r0, 0 - beq _0807B5BC - adds r0, r5, 0 - adds r0, 0x79 - strb r1, [r0] - movs r2, 0xA2 - lsls r2, 1 - adds r0, r5, r2 - strb r1, [r0] - b _0807B5CE - .align 2, 0 -_0807B598: .4byte gFaceDirectionIncrements -_0807B59C: .4byte 0x00000147 -_0807B5A0: - movs r3, 0x2 - ldrsh r1, [r5, r3] - ldr r0, [sp, 0x34] - bl SetWalkAction - add r0, sp, 0x4 - adds r0, r4 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - adds r1, r5, 0 - adds r1, 0x46 - strb r0, [r1] - b _0807B5CE -_0807B5BC: - adds r0, r5, 0 - adds r0, 0x79 - ldrb r0, [r0] - cmp r0, 0 - beq _0807B5CE - movs r1, 0xA2 - lsls r1, 1 - adds r0, r5, r1 - strb r2, [r0] -_0807B5CE: - add sp, 0x3C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end DecideMovement - - thumb_func_start AvoidEnemies -AvoidEnemies: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x30 - adds r7, r0, 0 - ldr r0, _0807B61C - str r0, [sp, 0x8] - ldr r1, [r7, 0x70] - str r1, [sp, 0x10] - adds r0, r7, 0 - bl GetEntityRoomIndex - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _0807B620 - ldr r1, [r0] - ldr r2, _0807B624 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0807B62C - ldr r3, _0807B628 - adds r0, r1, r3 - movs r4, 0x14 - mov r9, r4 - b _0807B64C - .align 2, 0 -_0807B61C: .4byte 0x000f423f -_0807B620: .4byte gDungeonGlobalData -_0807B624: .4byte 0x000037fc -_0807B628: .4byte 0x000135cc -_0807B62C: - ldr r2, [sp, 0x10] - ldrb r0, [r2, 0x6] - cmp r0, 0 - beq _0807B644 - ldr r3, _0807B640 - adds r0, r1, r3 - movs r4, 0x4 - mov r9, r4 - b _0807B64C - .align 2, 0 -_0807B640: .4byte 0x0001357c -_0807B644: - ldr r2, _0807B790 - adds r0, r1, r2 - movs r3, 0x10 - mov r9, r3 -_0807B64C: - movs r4, 0 - str r4, [sp, 0xC] - movs r1, 0xFF - str r1, [sp, 0x4] - mov r8, r4 - cmp r4, r9 - bge _0807B6D8 - adds r6, r0, 0 -_0807B65C: - ldr r4, [r6] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807B6CE - adds r0, r7, 0 - adds r1, r4, 0 - bl CanSee - lsls r0, 24 - cmp r0, 0 - beq _0807B6CE - ldr r0, _0807B794 - ldr r0, [r0] - ldr r2, _0807B798 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0807B69A - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x1 - bl CanTarget - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807B6CE -_0807B69A: - adds r1, r4, 0x4 - adds r0, r7, 0x4 - bl GetMaxPositionDifference - ldr r3, [sp, 0x8] - cmp r3, r0 - ble _0807B6CE - str r0, [sp, 0x8] - str r4, [sp, 0xC] - adds r0, r4, 0 - bl GetEntityRoomIndex - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - ldr r1, [sp, 0x10] - adds r1, 0x88 - ldr r4, [sp, 0xC] - ldr r0, [r4, 0x4] - str r0, [r1] - ldr r0, [sp, 0x10] - movs r2, 0xB6 - lsls r2, 1 - adds r1, r0, r2 - ldr r0, [r4, 0x4] - str r0, [r1] -_0807B6CE: - adds r6, 0x4 - movs r3, 0x1 - add r8, r3 - cmp r8, r9 - blt _0807B65C -_0807B6D8: - ldr r0, _0807B79C - ldr r4, [sp, 0x8] - cmp r4, r0 - bne _0807B6E2 - b _0807B906 -_0807B6E2: - ldr r0, [sp, 0x10] - adds r0, 0x88 - str r0, [sp, 0x28] - ldr r1, [sp, 0x10] - adds r1, 0x78 - str r1, [sp, 0x24] - ldr r2, [sp, 0x4] - cmp r10, r2 - beq _0807B6F6 - b _0807B8E0 -_0807B6F6: - mov r3, r10 - cmp r3, 0xFF - bne _0807B6FE - b _0807B8E0 -_0807B6FE: - movs r4, 0x4 - ldrsh r0, [r7, r4] - movs r2, 0x6 - ldrsh r1, [r7, r2] - bl GetMapTile_1 - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0807B7B2 - ldrh r0, [r7, 0x6] - lsls r0, 16 - ldrh r5, [r7, 0x4] - orrs r5, r0 - movs r4, 0 -_0807B71E: - ldr r1, _0807B7A0 - lsls r0, r4, 2 - adds r0, r1 - ldrh r1, [r0] - ldrh r3, [r7, 0x4] - adds r1, r3 - lsls r1, 16 - ldrh r0, [r0, 0x2] - ldrh r2, [r7, 0x6] - adds r0, r2 - lsls r0, 16 - lsrs r5, r1, 16 - orrs r5, r0 - lsls r0, r5, 16 - asrs r0, 16 - asrs r1, r5, 16 - bl GetMapTile_1 - ldrb r0, [r0, 0x9] - cmp r0, r10 - beq _0807B758 - adds r0, r7, 0 - adds r1, r4, 0 - mov r2, sp - bl CanMoveForward - lsls r0, 24 - cmp r0, 0 - bne _0807B75E -_0807B758: - adds r4, 0x1 - cmp r4, 0x7 - ble _0807B71E -_0807B75E: - cmp r4, 0x8 - bne _0807B7A4 - movs r0, 0x8 - bl DungeonRandomCapped - adds r4, r0, 0 - movs r0, 0x6 - ldr r3, [sp, 0x24] - strb r0, [r3] - ldr r0, _0807B7A0 - lsls r1, r4, 2 - adds r1, r0 - ldrh r0, [r1] - ldrh r4, [r7, 0x4] - adds r0, r4 - ldr r2, [sp, 0x28] - strh r0, [r2] - ldrh r0, [r1, 0x2] - ldrh r7, [r7, 0x6] - adds r0, r7 - ldr r1, [sp, 0x10] - adds r1, 0x8A - strh r0, [r1] - movs r0, 0x1 - b _0807B910 - .align 2, 0 -_0807B790: .4byte 0x0001358c -_0807B794: .4byte gDungeonGlobalData -_0807B798: .4byte 0x000037fc -_0807B79C: .4byte 0x000f423f -_0807B7A0: .4byte gAdjacentTileOffsets -_0807B7A4: - movs r0, 0x5 - ldr r3, [sp, 0x24] - strb r0, [r3] - ldr r4, [sp, 0x28] - str r5, [r4] - movs r0, 0x1 - b _0807B910 -_0807B7B2: - ldr r0, _0807B8D0 - mov r2, r10 - lsls r1, r2, 7 - ldr r3, _0807B8D4 - adds r1, r3 - ldr r0, [r0] - adds r1, r0, r1 - str r1, [sp, 0x18] - lsls r1, r2, 1 - ldr r4, _0807B8D8 - adds r0, r4 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - str r1, [sp, 0x14] - ldr r3, _0807B8DC - str r3, [sp, 0x20] - movs r4, 0 - str r4, [sp, 0x1C] - ldr r0, [sp, 0xC] - movs r1, 0x4 - ldrsh r3, [r0, r1] - movs r2, 0x4 - ldrsh r0, [r7, r2] - subs r2, r3, r0 - cmp r2, 0 - bge _0807B7EA - negs r2, r2 -_0807B7EA: - ldr r4, [sp, 0xC] - movs r0, 0x6 - ldrsh r1, [r4, r0] - movs r4, 0x6 - ldrsh r0, [r7, r4] - subs r1, r0 - mov r8, r1 - cmp r1, 0 - bge _0807B802 - mov r0, r8 - negs r0, r0 - mov r8, r0 -_0807B802: - cmp r8, r2 - bge _0807B808 - mov r8, r2 -_0807B808: - movs r1, 0 - mov r9, r1 - ldr r2, [sp, 0x10] - adds r2, 0x8A - str r2, [sp, 0x2C] - ldr r4, [sp, 0x1C] - ldr r0, [sp, 0x14] - cmp r4, r0 - bge _0807B8AA - mov r10, r3 - ldr r6, [sp, 0x18] -_0807B81E: - movs r1, 0 - ldrsh r3, [r6, r1] - mov r2, r10 - subs r0, r2, r3 - cmp r0, 0 - bge _0807B82C - negs r0, r0 -_0807B82C: - ldr r4, [sp, 0xC] - movs r1, 0x6 - ldrsh r4, [r4, r1] - mov r12, r4 - movs r4, 0x2 - ldrsh r2, [r6, r4] - mov r4, r12 - subs r1, r4, r2 - cmp r1, 0 - bge _0807B842 - negs r1, r1 -_0807B842: - cmp r1, r0 - bge _0807B848 - adds r1, r0, 0 -_0807B848: - movs r0, 0x4 - ldrsh r4, [r7, r0] - subs r0, r3, r4 - movs r3, 0x6 - ldrsh r5, [r7, r3] - subs r3, r2, r5 - movs r2, 0x1 - negs r2, r2 - cmp r0, r2 - bge _0807B85E - adds r0, r2, 0 -_0807B85E: - cmp r3, r2 - bge _0807B864 - adds r3, r2, 0 -_0807B864: - cmp r0, 0x1 - ble _0807B86A - movs r0, 0x1 -_0807B86A: - cmp r3, 0x1 - ble _0807B870 - movs r3, 0x1 -_0807B870: - adds r0, r4, r0 - mov r4, r10 - subs r2, r4, r0 - cmp r2, 0 - bge _0807B87C - negs r2, r2 -_0807B87C: - adds r0, r5, r3 - mov r3, r12 - subs r0, r3, r0 - cmp r0, 0 - bge _0807B888 - negs r0, r0 -_0807B888: - cmp r0, r2 - bge _0807B88E - adds r0, r2, 0 -_0807B88E: - cmp r0, r8 - blt _0807B89E - ldr r4, [sp, 0x20] - cmp r4, r1 - bge _0807B89E - mov r0, r9 - str r0, [sp, 0x1C] - str r1, [sp, 0x20] -_0807B89E: - adds r6, 0x4 - movs r1, 0x1 - add r9, r1 - ldr r2, [sp, 0x14] - cmp r9, r2 - blt _0807B81E -_0807B8AA: - ldr r3, [sp, 0x20] - cmp r3, 0 - blt _0807B8E0 - movs r0, 0x5 - ldr r4, [sp, 0x24] - strb r0, [r4] - ldr r1, [sp, 0x1C] - lsls r0, r1, 2 - ldr r2, [sp, 0x18] - adds r0, r2 - ldrh r1, [r0] - ldr r3, [sp, 0x28] - strh r1, [r3] - ldrh r0, [r0, 0x2] - ldr r4, [sp, 0x2C] - strh r0, [r4] - movs r0, 0x1 - b _0807B910 - .align 2, 0 -_0807B8D0: .4byte gDungeonGlobalData -_0807B8D4: .4byte 0x00010884 -_0807B8D8: .4byte 0x00010844 -_0807B8DC: .4byte 0xfff0bdc1 -_0807B8E0: - movs r0, 0x5 - ldr r1, [sp, 0x24] - strb r0, [r1] - ldr r2, [sp, 0xC] - ldrh r1, [r2, 0x4] - ldrh r0, [r7, 0x4] - subs r1, r0 - subs r0, r1 - ldr r3, [sp, 0x28] - strh r0, [r3] - ldrh r0, [r2, 0x6] - ldrh r1, [r7, 0x6] - subs r0, r1 - subs r1, r0 - ldr r0, [sp, 0x10] - adds r0, 0x8A - strh r1, [r0] - movs r0, 0x1 - b _0807B910 -_0807B906: - adds r0, r7, 0 - bl Explore - lsls r0, 24 - lsrs r0, 24 -_0807B910: - add sp, 0x30 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end AvoidEnemies - - thumb_func_start Explore -Explore: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - adds r6, r0, 0 - ldr r7, [r6, 0x70] - bl GetEntityRoomIndex - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xFF - bne _0807B9DC - movs r0, 0 - str r0, [sp, 0x4] - adds r4, r7, 0 - adds r4, 0x46 - ldrb r0, [r4] - adds r0, 0x4 - mov r8, r0 - movs r0, 0x7 - mov r1, r8 - ands r1, r0 - mov r8, r1 - adds r0, r6, 0 - bl IsAtJunction - lsls r0, 24 - mov r9, r4 - cmp r0, 0 - beq _0807B96C - movs r0, 0x8 - bl DungeonRandomCapped - strb r0, [r4] - movs r2, 0x1 - str r2, [sp, 0x4] -_0807B96C: - movs r3, 0 - movs r4, 0x78 - adds r4, r7 - mov r10, r4 - adds r0, r7, 0 - adds r0, 0x88 - str r0, [sp, 0x8] - adds r7, 0x8A - ldr r5, _0807B9D4 -_0807B97E: - mov r1, r9 - ldrb r0, [r1] - ldr r1, [r5] - adds r4, r0, r1 - movs r0, 0x7 - ands r4, r0 - ldr r2, [sp, 0x4] - cmp r2, 0 - beq _0807B994 - cmp r4, r8 - beq _0807B9AA -_0807B994: - adds r0, r6, 0 - adds r1, r4, 0 - mov r2, sp - str r3, [sp, 0xC] - bl CanMoveForward - lsls r0, 24 - ldr r3, [sp, 0xC] - cmp r0, 0 - beq _0807B9AA - b _0807BB42 -_0807B9AA: - adds r5, 0x4 - adds r3, 0x1 - cmp r3, 0x7 - ble _0807B97E - movs r0, 0x8 - bl DungeonRandomCapped - movs r1, 0x6 - mov r3, r10 - strb r1, [r3] - ldr r1, _0807B9D8 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0] - ldrh r4, [r6, 0x4] - adds r1, r4 - ldr r2, [sp, 0x8] - strh r1, [r2] - ldrh r0, [r0, 0x2] - b _0807BB5A - .align 2, 0 -_0807B9D4: .4byte gFaceDirectionIncrements -_0807B9D8: .4byte gAdjacentTileOffsets -_0807B9DC: - ldr r0, _0807BA30 - ldr r2, [r0] - lsls r1, r3, 1 - ldr r4, _0807BA34 - adds r0, r2, r4 - adds r0, r1 - movs r4, 0 - ldrsh r1, [r0, r4] - mov r8, r1 - lsls r0, r3, 7 - ldr r1, _0807BA38 - adds r0, r1 - adds r2, r0 - mov r9, r2 - movs r2, 0x8A - lsls r2, 1 - adds r0, r7, r2 - ldr r0, [r0] - cmp r0, 0 - beq _0807BA40 - movs r0, 0x8 - bl DungeonRandomCapped - adds r2, r7, 0 - adds r2, 0x78 - movs r1, 0x6 - strb r1, [r2] - ldr r1, _0807BA3C - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0] - ldrh r3, [r6, 0x4] - adds r1, r3 - adds r2, 0x10 - strh r1, [r2] - ldrh r0, [r0, 0x2] - ldrh r6, [r6, 0x6] - adds r0, r6 - adds r1, r7, 0 - adds r1, 0x8A - strh r0, [r1] - b _0807BB60 - .align 2, 0 -_0807BA30: .4byte gDungeonGlobalData -_0807BA34: .4byte 0x00010844 -_0807BA38: .4byte 0x00010884 -_0807BA3C: .4byte gAdjacentTileOffsets -_0807BA40: - adds r0, r7, 0 - adds r0, 0x78 - ldrb r1, [r0] - mov r10, r0 - cmp r1, 0x4 - beq _0807BAA2 - mov r4, r8 - cmp r4, 0 - bne _0807BA84 - movs r0, 0x8 - bl DungeonRandomCapped - adds r4, r0, 0 - movs r0, 0x6 - mov r1, r10 - strb r0, [r1] - ldr r0, _0807BA80 - lsls r2, r4, 2 - adds r2, r0 - ldrh r0, [r2] - ldrh r3, [r6, 0x4] - adds r0, r3 - adds r1, r7, 0 - adds r1, 0x88 - strh r0, [r1] - ldrh r0, [r2, 0x2] - ldrh r6, [r6, 0x6] - adds r0, r6 - adds r1, 0x2 - strh r0, [r1] - b _0807BB60 - .align 2, 0 -_0807BA80: .4byte gAdjacentTileOffsets -_0807BA84: - movs r5, 0 -_0807BA86: - mov r0, r8 - bl DungeonRandomCapped - adds r4, r0, 0 - ldr r0, [r6, 0x4] - lsls r1, r4, 2 - mov r4, r9 - adds r2, r1, r4 - ldr r1, [r2] - cmp r0, r1 - bne _0807BB18 - adds r5, 0x1 - cmp r5, 0x9 - ble _0807BA86 -_0807BAA2: - movs r1, 0x4 - ldrsh r0, [r6, r1] - movs r2, 0x6 - ldrsh r1, [r6, r2] - bl GetMapTile_1 - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0807BB60 - movs r0, 0x8 - bl DungeonRandomCapped - adds r4, r0, 0 - movs r3, 0 - mov r9, r3 -_0807BAC4: - movs r0, 0x7 - ands r4, r0 - movs r0, 0x4 - ldrsh r2, [r6, r0] - ldr r0, _0807BB14 - lsls r1, r4, 2 - adds r1, r0 - movs r3, 0 - ldrsh r0, [r1, r3] - adds r2, r0 - mov r8, r2 - movs r0, 0x6 - ldrsh r2, [r6, r0] - movs r3, 0x2 - ldrsh r0, [r1, r3] - adds r5, r2, r0 - mov r0, r8 - adds r1, r5, 0 - bl GetMapTile_1 - ldrb r0, [r0, 0x9] - cmp r0, 0xFF - bne _0807BB04 - adds r0, r6, 0 - adds r1, r4, 0 - mov r2, sp - adds r2, 0x1 - bl CanMoveForward - lsls r0, 24 - cmp r0, 0 - bne _0807BB2E -_0807BB04: - movs r0, 0x1 - add r9, r0 - adds r4, 0x1 - mov r1, r9 - cmp r1, 0x7 - ble _0807BAC4 - b _0807BB60 - .align 2, 0 -_0807BB14: .4byte gAdjacentTileOffsets -_0807BB18: - movs r0, 0x4 - mov r3, r10 - strb r0, [r3] - ldrh r1, [r2] - adds r0, r7, 0 - adds r0, 0x88 - strh r1, [r0] - ldrh r1, [r2, 0x2] - adds r0, 0x2 - strh r1, [r0] - b _0807BB60 -_0807BB2E: - movs r0, 0x3 - mov r4, r10 - strb r0, [r4] - adds r0, r7, 0 - adds r0, 0x88 - mov r1, r8 - strh r1, [r0] - adds r0, 0x2 - strh r5, [r0] - b _0807BB60 -_0807BB42: - movs r0, 0x3 - mov r2, r10 - strb r0, [r2] - ldr r0, _0807BB74 - lsls r1, r4, 2 - adds r1, r0 - ldrh r0, [r1] - ldrh r3, [r6, 0x4] - adds r0, r3 - ldr r4, [sp, 0x8] - strh r0, [r4] - ldrh r0, [r1, 0x2] -_0807BB5A: - ldrh r6, [r6, 0x6] - adds r0, r6 - strh r0, [r7] -_0807BB60: - movs r0, 0x1 - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0807BB74: .4byte gAdjacentTileOffsets - thumb_func_end Explore - - thumb_func_start sub_807BB78 -sub_807BB78: - ldr r3, [r0, 0x70] - adds r1, r3, 0 - adds r1, 0x78 - movs r2, 0 - strb r2, [r1] - adds r1, 0x10 - ldr r0, [r0, 0x4] - str r0, [r1] - adds r0, r3, 0 - adds r0, 0x80 - str r2, [r0] - subs r0, 0x4 - strh r2, [r0] - bx lr - thumb_func_end sub_807BB78 - .align 2, 0
\ No newline at end of file diff --git a/asm/code_8077274.s b/asm/code_8077274.s new file mode 100644 index 0000000..3837f69 --- /dev/null +++ b/asm/code_8077274.s @@ -0,0 +1,9186 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_8077274 +sub_8077274: + push {r4,r5,lr} + adds r5, r1, 0 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080772B4 + ldr r0, [r5, 0x70] + adds r4, r0, 0 + ldr r0, _080772BC + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + movs r0, 0x28 + ldrsh r1, [r4, r0] + adds r1, 0x1 + cmp r1, 0x1 + ble _0807729E + movs r1, 0x2 +_0807729E: + movs r2, 0x28 + ldrsh r0, [r4, r2] + cmp r0, r1 + beq _080772AE + strh r1, [r4, 0x28] + adds r0, r5, 0 + bl sub_8041C58 +_080772AE: + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_080772B4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080772BC: .4byte gAvailablePokemonNames + thumb_func_end sub_8077274 + + thumb_func_start sub_80772C0 +sub_80772C0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r0 + adds r5, r1, 0 + adds r4, r2, 0 + adds r7, r3, 0 + ldr r0, [sp, 0x20] + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _080772E6 + b _08077422 +_080772E6: + cmp r4, 0 + beq _08077300 + ldr r0, _080772F8 + ldr r1, _080772FC + ldr r1, [r1] + bl strcpy + b _0807730A + .align 2, 0 +_080772F8: .4byte gUnknown_202DE58 +_080772FC: .4byte gUnknown_80FC0C8 +_08077300: + ldr r0, _08077340 + ldr r1, _08077344 + ldr r1, [r1] + bl strcpy +_0807730A: + cmp r7, 0xFF + bgt _08077320 + mov r0, r9 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_8071728 + lsls r0, 24 + cmp r0, 0 + beq _08077320 + b _08077422 +_08077320: + adds r0, r5, 0 + movs r1, 0xB + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _08077350 + cmp r7, 0xFF + bgt _08077350 + ldr r0, _08077348 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _0807734C + b _08077376 + .align 2, 0 +_08077340: .4byte gUnknown_202DE58 +_08077344: .4byte gUnknown_80FC0B8 +_08077348: .4byte gAvailablePokemonNames +_0807734C: .4byte gUnknown_80FD550 +_08077350: + adds r0, r5, 0 + movs r1, 0x9 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _0807738C + cmp r4, 0 + bne _0807738C + cmp r7, 0xFF + bgt _0807738C + cmp r6, 0 + beq _08077422 + ldr r0, _08077384 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _08077388 +_08077376: + ldr r2, [r0] + mov r0, r9 + adds r1, r5, 0 + bl sub_80522F4 + b _08077422 + .align 2, 0 +_08077384: .4byte gAvailablePokemonNames +_08077388: .4byte gUnknown_80FCA60 +_0807738C: + ldr r0, [r5, 0x70] + mov r8, r0 + ldr r0, _080773B8 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + lsls r1, r4, 2 + mov r0, r8 + adds r0, 0x2C + adds r0, r1 + ldr r0, [r0] + mov r10, r0 + adds r6, r1, 0 + cmp r7, 0xFF + bgt _080773BC + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8041FD8 + b _080773C4 + .align 2, 0 +_080773B8: .4byte gAvailablePokemonNames +_080773BC: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8041FB4 +_080773C4: + mov r0, r8 + adds r0, 0x2C + adds r4, r0, r6 + ldr r0, [r4] + adds r1, r7, 0 + bl sub_8009DA4 + str r0, [r4] + cmp r0, 0x1 + bgt _080773DC + movs r0, 0x2 + str r0, [r4] +_080773DC: + ldr r0, [r4] + ldr r1, _080773F0 + cmp r0, r1 + ble _080773E6 + str r1, [r4] +_080773E6: + ldr r0, [r4] + cmp r10, r0 + ble _080773F8 + ldr r0, _080773F4 + b _080773FE + .align 2, 0 +_080773F0: .4byte 0x000063fd +_080773F4: .4byte gUnknown_80FC11C +_080773F8: + cmp r10, r0 + bge _08077410 + ldr r0, _0807740C +_080773FE: + ldr r2, [r0] + mov r0, r9 + adds r1, r5, 0 + bl sub_80522F4 + b _0807741C + .align 2, 0 +_0807740C: .4byte gUnknown_80FC118 +_08077410: + ldr r0, _08077430 + ldr r2, [r0] + mov r0, r9 + adds r1, r5, 0 + bl sub_80522F4 +_0807741C: + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_08077422: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077430: .4byte gUnknown_80FC184 + thumb_func_end sub_80772C0 + + thumb_func_start sub_8077434 +sub_8077434: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r0 + adds r5, r1, 0 + adds r4, r2, 0 + mov r8, r3 + ldr r0, [sp, 0x20] + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807752E + cmp r4, 0 + beq _08077470 + ldr r0, _08077468 + ldr r1, _0807746C + ldr r1, [r1] + bl strcpy + b _0807747A + .align 2, 0 +_08077468: .4byte gUnknown_202DE58 +_0807746C: .4byte gUnknown_80FC0AC +_08077470: + ldr r0, _080774BC + ldr r1, _080774C0 + ldr r1, [r1] + bl strcpy +_0807747A: + mov r0, r8 + cmp r0, 0xFF + bgt _08077490 + mov r0, r9 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_8071728 + lsls r0, 24 + cmp r0, 0 + bne _0807752E +_08077490: + ldr r7, [r5, 0x70] + ldr r0, _080774C4 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + lsls r1, r4, 2 + adds r0, r7, 0 + adds r0, 0x34 + adds r0, r1 + ldr r0, [r0] + mov r10, r0 + adds r6, r1, 0 + mov r0, r8 + cmp r0, 0xFF + bgt _080774C8 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_804201C + b _080774D0 + .align 2, 0 +_080774BC: .4byte gUnknown_202DE58 +_080774C0: .4byte gUnknown_80FC09C +_080774C4: .4byte gAvailablePokemonNames +_080774C8: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8041FFC +_080774D0: + adds r0, r7, 0 + adds r0, 0x34 + adds r4, r0, r6 + ldr r0, [r4] + mov r1, r8 + bl sub_8009DA4 + str r0, [r4] + cmp r0, 0x1 + bgt _080774E8 + movs r0, 0x2 + str r0, [r4] +_080774E8: + ldr r0, [r4] + ldr r1, _080774FC + cmp r0, r1 + ble _080774F2 + str r1, [r4] +_080774F2: + ldr r0, [r4] + cmp r10, r0 + ble _08077504 + ldr r0, _08077500 + b _0807750A + .align 2, 0 +_080774FC: .4byte 0x000063fd +_08077500: .4byte gUnknown_80FC114 +_08077504: + cmp r10, r0 + bge _0807751C + ldr r0, _08077518 +_0807750A: + ldr r2, [r0] + mov r0, r9 + adds r1, r5, 0 + bl sub_80522F4 + b _08077528 + .align 2, 0 +_08077518: .4byte gUnknown_80FC0FC +_0807751C: + ldr r0, _0807753C + ldr r2, [r0] + mov r0, r9 + adds r1, r5, 0 + bl sub_80522F4 +_08077528: + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_0807752E: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807753C: .4byte gUnknown_80FC180 + thumb_func_end sub_8077434 + + thumb_func_start sub_8077540 +sub_8077540: + push {r4-r7,lr} + adds r7, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080775D2 + ldr r6, [r4, 0x70] + ldr r0, _08077578 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8042040 + cmp r5, 0 + beq _08077584 + ldr r0, _0807757C + ldr r1, _08077580 + ldr r1, [r1] + bl strcpy + b _0807758E + .align 2, 0 +_08077578: .4byte gAvailablePokemonNames +_0807757C: .4byte gUnknown_202DE58 +_08077580: .4byte gUnknown_80FC090 +_08077584: + ldr r0, _080775B4 + ldr r1, _080775B8 + ldr r1, [r1] + bl strcpy +_0807758E: + lsls r0, r5, 1 + adds r1, r6, 0 + adds r1, 0x24 + adds r1, r0 + ldrh r2, [r1] + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0x13 + bgt _080775C0 + adds r0, r2, 0x1 + strh r0, [r1] + ldr r0, _080775BC + ldr r2, [r0] + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _080775CC + .align 2, 0 +_080775B4: .4byte gUnknown_202DE58 +_080775B8: .4byte gUnknown_80FC084 +_080775BC: .4byte gUnknown_80FC1C4 +_080775C0: + ldr r0, _080775D8 + ldr r2, [r0] + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_80522F4 +_080775CC: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_080775D2: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080775D8: .4byte gUnknown_80FC218 + thumb_func_end sub_8077540 + + thumb_func_start sub_80775DC +sub_80775DC: + push {r4-r7,lr} + adds r7, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r3, 24 + lsrs r4, r3, 24 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080776B6 + cmp r6, 0 + beq _0807760C + ldr r0, _08077604 + ldr r1, _08077608 + ldr r1, [r1] + bl strcpy + b _08077616 + .align 2, 0 +_08077604: .4byte gUnknown_202DE58 +_08077608: .4byte gUnknown_80FC090 +_0807760C: + ldr r0, _08077654 + ldr r1, _08077658 + ldr r1, [r1] + bl strcpy +_08077616: + adds r0, r7, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8071728 + lsls r0, 24 + cmp r0, 0 + bne _080776B6 + adds r0, r5, 0 + movs r1, 0x1E + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _08077664 + cmp r6, 0 + bne _08077664 + cmp r4, 0 + beq _080776B6 + ldr r0, _0807765C + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _08077660 + ldr r2, [r0] + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_80522F4 + b _080776B6 + .align 2, 0 +_08077654: .4byte gUnknown_202DE58 +_08077658: .4byte gUnknown_80FC084 +_0807765C: .4byte gAvailablePokemonNames +_08077660: .4byte gUnknown_80FCA64 +_08077664: + ldr r4, [r5, 0x70] + ldr r0, _0807769C + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_8042060 + lsls r0, r6, 1 + adds r4, 0x24 + adds r1, r4, r0 + ldrh r2, [r1] + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _080776A4 + subs r0, r2, 0x1 + strh r0, [r1] + ldr r0, _080776A0 + ldr r2, [r0] + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_80522F4 + b _080776B0 + .align 2, 0 +_0807769C: .4byte gAvailablePokemonNames +_080776A0: .4byte gUnknown_80FC1A4 +_080776A4: + ldr r0, _080776BC + ldr r2, [r0] + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_80522F4 +_080776B0: + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_080776B6: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080776BC: .4byte gUnknown_80FC1F0 + thumb_func_end sub_80775DC + + thumb_func_start sub_80776C0 +sub_80776C0: + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + lsls r2, 24 + lsrs r6, r2, 24 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08077776 + adds r0, r5, 0 + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _08077776 + adds r0, r4, 0 + movs r1, 0x1F + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _08077718 + ldr r0, _08077710 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + cmp r6, 0 + beq _08077776 + ldr r0, _08077714 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08077776 + .align 2, 0 +_08077710: .4byte gAvailablePokemonNames +_08077714: .4byte gUnknown_80FCC18 +_08077718: + ldr r6, [r4, 0x70] + ldr r0, _08077758 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r6, 0 + adds r1, 0xBC + ldrb r0, [r1] + cmp r0, 0x1 + beq _08077764 + movs r0, 0x1 + strb r0, [r1] + ldr r1, _0807775C + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + adds r1, r6, 0 + adds r1, 0xBD + strb r0, [r1] + adds r0, r4, 0 + bl sub_80420A0 + ldr r0, _08077760 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08077770 + .align 2, 0 +_08077758: .4byte gAvailablePokemonNames +_0807775C: .4byte gUnknown_80F4E3C +_08077760: .4byte gUnknown_80FB2E0 +_08077764: + ldr r0, _0807777C + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08077770: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08077776: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807777C: .4byte gUnknown_80FB300 + thumb_func_end sub_80776C0 + + thumb_func_start sub_8077780 +sub_8077780: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _080777A2 + b _080778F0 +_080777A2: + adds r0, r7, 0 + adds r1, r5, 0 + mov r2, r10 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + beq _080777B4 + b _080778F0 +_080777B4: + adds r0, r5, 0 + movs r1, 0x16 + bl HasAbility + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _080777EC + ldr r0, _080777E4 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + mov r0, r10 + cmp r0, 0 + bne _080777D6 + b _080778F0 +_080777D6: + ldr r0, _080777E8 + ldr r2, [r0] + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_80522F4 + b _080778F0 + .align 2, 0 +_080777E4: .4byte gAvailablePokemonNames +_080777E8: .4byte gUnknown_80FCBF8 +_080777EC: + movs r6, 0x1 + ldr r1, [r5, 0x70] + mov r8, r1 + ldr r0, _08077844 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + mov r1, r8 + adds r1, 0xAC + ldrb r0, [r1] + cmp r0, 0x4 + beq _08077850 + movs r0, 0x4 + strb r0, [r1] + ldr r1, _08077848 + adds r0, r5, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + mov r1, r8 + adds r1, 0xAD + strb r0, [r1] + mov r0, r8 + adds r0, 0xAE + strb r4, [r0] + adds r0, 0x1 + strb r4, [r0] + movs r6, 0 + ldr r0, _0807784C + ldr r2, [r0] + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_80522F4 + adds r0, r5, 0 + bl sub_8041C1C + adds r0, r5, 0 + bl GetMovementSpeed + b _0807785C + .align 2, 0 +_08077844: .4byte gAvailablePokemonNames +_08077848: .4byte gUnknown_80F4E50 +_0807784C: .4byte gUnknown_80FB2AC +_08077850: + ldr r0, _08077900 + ldr r2, [r0] + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_80522F4 +_0807785C: + adds r0, r5, 0 + movs r1, 0x19 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _080778EA + cmp r6, 0 + bne _080778EA + movs r3, 0 + mov r9, r3 + movs r6, 0 +_08077874: + movs r1, 0x4 + ldrsh r0, [r5, r1] + ldr r1, _08077904 + lsls r2, r6, 2 + adds r2, r1 + movs r3, 0 + ldrsh r1, [r2, r3] + adds r0, r1 + movs r3, 0x6 + ldrsh r1, [r5, r3] + movs r3, 0x2 + ldrsh r2, [r2, r3] + adds r1, r2 + bl GetMapTile_1 + ldr r4, [r0, 0x10] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080778E4 + adds r0, r4, 0 + bl GetEntityType + cmp r0, 0x1 + bne _080778E4 + mov r0, r9 + cmp r0, 0 + bne _080778CA + movs r1, 0x1 + mov r9, r1 + ldr r0, _08077908 + mov r1, r8 + movs r2, 0 + bl SetMessageArgument_2 + ldr r0, _0807790C + ldr r2, [r0] + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_80522F4 +_080778CA: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_807167C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080778E4 + adds r0, r7, 0 + adds r1, r4, 0 + mov r2, r10 + bl sub_8077780 +_080778E4: + adds r6, 0x1 + cmp r6, 0x7 + ble _08077874 +_080778EA: + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_080778F0: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077900: .4byte gUnknown_80FB2CC +_08077904: .4byte gAdjacentTileOffsets +_08077908: .4byte gAvailablePokemonNames +_0807790C: .4byte gUnknown_80FF01C + thumb_func_end sub_8077780 + + thumb_func_start sub_8077910 +sub_8077910: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r8, r0 + adds r5, r1, 0 + adds r4, r2, 0 + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080779DE + cmp r4, 0 + bne _08077940 + ldr r1, _08077964 + adds r0, r5, 0 + movs r2, 0 + bl sub_808417C + adds r4, r0, 0x1 +_08077940: + ldr r6, [r5, 0x70] + ldr r0, _08077968 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r5, 0 + bl GetMovementSpeed + adds r7, r0, 0 + cmp r7, 0x4 + bne _08077970 + mov r0, r9 + cmp r0, 0 + beq _080779D8 + ldr r0, _0807796C + b _0807799E + .align 2, 0 +_08077964: .4byte gUnknown_80F4E40 +_08077968: .4byte gAvailablePokemonNames +_0807796C: .4byte gUnknown_80FC2B8 +_08077970: + movs r2, 0 + movs r0, 0x84 + lsls r0, 1 + adds r1, r6, r0 + b _08077988 +_0807797A: + adds r2, 0x1 + cmp r2, 0x4 + bgt _08077990 + movs r1, 0x84 + lsls r1, 1 + adds r0, r6, r1 + adds r1, r0, r2 +_08077988: + ldrb r0, [r1] + cmp r0, 0 + bne _0807797A + strb r4, [r1] +_08077990: + adds r0, r5, 0 + bl GetMovementSpeed + adds r4, r0, 0 + cmp r7, r4 + bne _080779B0 + ldr r0, _080779AC +_0807799E: + ldr r2, [r0] + mov r0, r8 + adds r1, r5, 0 + bl sub_80522F4 + b _080779D8 + .align 2, 0 +_080779AC: .4byte gUnknown_80FC298 +_080779B0: + adds r0, r5, 0 + bl sub_8041CB8 + ldr r1, _080779EC + lsls r0, r4, 2 + adds r0, r1 + ldr r2, [r0] + mov r0, r8 + adds r1, r5, 0 + bl sub_80522F4 + adds r1, r6, 0 + adds r1, 0xF8 + movs r2, 0 + movs r0, 0x1 + strb r0, [r1] + movs r1, 0xA4 + lsls r1, 1 + adds r0, r6, r1 + strb r2, [r0] +_080779D8: + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_080779DE: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080779EC: .4byte gUnknown_80FA124 + thumb_func_end sub_8077910 + + thumb_func_start sub_80779F0 +sub_80779F0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r10, r0 + adds r5, r1, 0 + mov r8, r2 + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08077AD0 + mov r0, r10 + adds r1, r5, 0 + mov r2, r9 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _08077AD0 + ldr r7, [r5, 0x70] + ldr r0, _08077A48 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r5, 0 + bl GetMovementSpeed + str r0, [sp] + cmp r0, 0 + bne _08077A50 + mov r0, r9 + cmp r0, 0 + beq _08077ACA + ldr r0, _08077A4C + b _08077AA2 + .align 2, 0 +_08077A48: .4byte gAvailablePokemonNames +_08077A4C: .4byte gUnknown_80FC2D8 +_08077A50: + movs r0, 0 + cmp r0, r8 + bge _08077A8C +_08077A56: + movs r1, 0 + adds r6, r0, 0x1 +_08077A5A: + ldr r2, _08077A78 + adds r0, r7, r2 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0 + bne _08077A80 + adds r0, r5, 0 + ldr r1, _08077A7C + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + strb r0, [r4] + b _08077A86 + .align 2, 0 +_08077A78: .4byte 0x0000010d +_08077A7C: .4byte gUnknown_80F4E48 +_08077A80: + adds r1, 0x1 + cmp r1, 0x4 + ble _08077A5A +_08077A86: + adds r0, r6, 0 + cmp r0, r8 + blt _08077A56 +_08077A8C: + adds r0, r5, 0 + bl GetMovementSpeed + adds r4, r0, 0 + ldr r0, [sp] + cmp r0, r4 + bne _08077AB4 + mov r2, r9 + cmp r2, 0 + beq _08077ACA + ldr r0, _08077AB0 +_08077AA2: + ldr r2, [r0] + mov r0, r10 + adds r1, r5, 0 + bl sub_80522F4 + b _08077ACA + .align 2, 0 +_08077AB0: .4byte gUnknown_80FC298 +_08077AB4: + adds r0, r5, 0 + bl sub_8041CCC + ldr r0, _08077AE0 + lsls r1, r4, 2 + adds r1, r0 + ldr r2, [r1] + mov r0, r10 + adds r1, r5, 0 + bl sub_80522F4 +_08077ACA: + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_08077AD0: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077AE0: .4byte gUnknown_80FA124 + thumb_func_end sub_80779F0 + + thumb_func_start sub_8077AE4 +sub_8077AE4: + push {r4-r7,lr} + adds r6, r0, 0 + adds r4, r1, 0 + lsls r2, 24 + lsrs r5, r2, 24 + adds r7, r5, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08077BAA + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _08077BAA + ldr r0, _08077B2C + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r4, 0 + movs r1, 0x12 + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _08077B34 + cmp r5, 0 + beq _08077BAA + ldr r0, _08077B30 + b _08077B48 + .align 2, 0 +_08077B2C: .4byte gAvailablePokemonNames +_08077B30: .4byte gUnknown_80FD500 +_08077B34: + adds r0, r4, 0 + movs r1, 0x40 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _08077B58 + cmp r7, 0 + beq _08077BAA + ldr r0, _08077B54 +_08077B48: + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08077BAA + .align 2, 0 +_08077B54: .4byte gUnknown_80FCDB4 +_08077B58: + adds r0, r4, 0 + bl sub_8041BE8 + ldr r5, [r4, 0x70] + adds r1, r5, 0 + adds r1, 0xBC + ldrb r0, [r1] + cmp r0, 0x2 + beq _08077B98 + movs r0, 0x2 + strb r0, [r1] + ldr r1, _08077B90 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xBD + strb r0, [r1] + ldr r0, _08077B94 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08077BA4 + .align 2, 0 +_08077B90: .4byte gUnknown_80F4E4C +_08077B94: .4byte gUnknown_80FB25C +_08077B98: + ldr r0, _08077BB0 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08077BA4: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08077BAA: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077BB0: .4byte gUnknown_80FB27C + thumb_func_end sub_8077AE4 + + thumb_func_start sub_8077BB4 +sub_8077BB4: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + lsls r2, 24 + lsrs r5, r2, 24 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08077C3A + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _08077C3A + ldr r5, [r4, 0x70] + ldr r0, _08077C1C + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xBC + ldrb r0, [r1] + cmp r0, 0x4 + beq _08077C28 + movs r0, 0x4 + strb r0, [r1] + ldr r1, _08077C20 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xBD + strb r0, [r1] + adds r0, r4, 0 + bl sub_8041BF8 + ldr r0, _08077C24 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08077C34 + .align 2, 0 +_08077C1C: .4byte gAvailablePokemonNames +_08077C20: .4byte gUnknown_80F4ECC +_08077C24: .4byte gUnknown_80FB940 +_08077C28: + ldr r0, _08077C40 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08077C34: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08077C3A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08077C40: .4byte gUnknown_80FB960 + thumb_func_end sub_8077BB4 + + thumb_func_start HealTargetHP +HealTargetHP: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r9, r0 + adds r5, r1, 0 + mov r10, r2 + mov r8, r3 + ldr r0, [sp, 0x24] + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _08077C6E + b _08077DC8 +_08077C6E: + ldr r4, [r5, 0x70] + movs r0, 0x10 + ldrsh r7, [r4, r0] + movs r1, 0xE + ldrsh r6, [r4, r1] + ldrh r2, [r4, 0xE] + adds r0, r6, 0 + ldrh r1, [r4, 0x10] + mov r12, r1 + adds r1, r7, 0 + cmp r0, r1 + bne _08077C8C + mov r0, r8 + cmp r0, 0 + bgt _08077C92 +_08077C8C: + mov r3, r10 + cmp r3, 0 + bne _08077CD0 +_08077C92: + ldrh r1, [r4, 0x10] + add r1, r8 + strh r1, [r4, 0x10] + ldrh r0, [r4, 0xE] + add r0, r8 + strh r0, [r4, 0xE] + lsls r1, 16 + asrs r1, 16 + ldr r0, _08077CCC + cmp r1, r0 + ble _08077CAA + strh r0, [r4, 0x10] +_08077CAA: + movs r1, 0xE + ldrsh r0, [r4, r1] + movs r3, 0x10 + ldrsh r2, [r4, r3] + ldrh r1, [r4, 0x10] + cmp r0, r2 + ble _08077CBA + strh r1, [r4, 0xE] +_08077CBA: + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, r2 + bne _08077CC4 + adds r6, r0, 0 +_08077CC4: + adds r0, r5, 0 + bl sub_8041C94 + b _08077CE8 + .align 2, 0 +_08077CCC: .4byte 0x000003e7 +_08077CD0: + mov r3, r10 + adds r0, r2, r3 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, r1 + ble _08077CE2 + mov r0, r12 + strh r0, [r4, 0xE] +_08077CE2: + adds r0, r5, 0 + bl sub_8041CA8 +_08077CE8: + movs r1, 0x10 + ldrsh r0, [r4, r1] + subs r7, r0, r7 + movs r2, 0xE + ldrsh r0, [r4, r2] + subs r6, r0, r6 + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites + ldr r0, _08077D1C + str r6, [r0] + str r7, [r0, 0x4] + ldr r0, _08077D20 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + cmp r6, 0 + bne _08077D28 + cmp r7, 0 + bne _08077D28 + ldr r3, [sp] + cmp r3, 0 + beq _08077DC8 + ldr r0, _08077D24 + b _08077D3A + .align 2, 0 +_08077D1C: .4byte gUnknown_202DE30 +_08077D20: .4byte gAvailablePokemonNames +_08077D24: .4byte gUnknown_80FB204 +_08077D28: + mov r0, r8 + cmp r0, 0 + bne _08077D4C + cmp r6, 0 + bne _08077D4C + ldr r1, [sp] + cmp r1, 0 + beq _08077DC8 + ldr r0, _08077D48 +_08077D3A: + ldr r2, [r0] + mov r0, r9 + adds r1, r5, 0 + bl sub_80522F4 + b _08077DC8 + .align 2, 0 +_08077D48: .4byte gUnknown_80FB21C +_08077D4C: + movs r2, 0 + mov r8, r2 + cmp r7, 0 + beq _08077D6E + adds r0, r5, 0 + bl sub_8045888 + lsls r0, 24 + cmp r0, 0 + beq _08077D62 + mov r8, r7 +_08077D62: + ldr r0, _08077DA0 + ldr r2, [r0] + mov r0, r9 + adds r1, r5, 0 + bl sub_80522F4 +_08077D6E: + cmp r6, 0 + beq _08077DB4 + adds r0, r5, 0 + bl sub_8045888 + lsls r0, 24 + cmp r0, 0 + beq _08077D80 + mov r8, r6 +_08077D80: + mov r3, r10 + cmp r3, 0 + beq _08077DB4 + movs r0, 0x10 + ldrsh r1, [r4, r0] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08077DA8 + ldr r0, _08077DA4 + ldr r2, [r0] + mov r0, r9 + adds r1, r5, 0 + bl sub_80522F4 + b _08077DB4 + .align 2, 0 +_08077DA0: .4byte gUnknown_80FB240 +_08077DA4: .4byte gUnknown_80FB1E0 +_08077DA8: + ldr r0, _08077DD8 + ldr r2, [r0] + mov r0, r9 + adds r1, r5, 0 + bl sub_80522F4 +_08077DB4: + mov r3, r8 + cmp r3, 0 + beq _08077DC8 + movs r3, 0x1 + negs r3, r3 + mov r0, r8 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_803ED30 +_08077DC8: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077DD8: .4byte gUnknown_80FB1C4 + thumb_func_end HealTargetHP + + thumb_func_start sub_8077DDC +sub_8077DDC: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08077E3C + ldr r0, [r4, 0x70] + adds r1, r0, 0 + adds r1, 0xF1 + ldrb r0, [r1] + cmp r0, 0 + beq _08077E0C + ldr r0, _08077E08 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08077E3C + .align 2, 0 +_08077E08: .4byte gUnknown_80FAEF0 +_08077E0C: + movs r0, 0x1 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_75 + ldr r0, _08077E44 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _08077E48 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + movs r0, 0 + bl sub_803F580 + bl sub_8040A84 + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08077E3C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08077E44: .4byte gAvailablePokemonNames +_08077E48: .4byte gUnknown_80FAEA0 + thumb_func_end sub_8077DDC + + thumb_func_start sub_8077E4C +sub_8077E4C: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08077EC0 + bl sub_8043D10 + lsls r0, 24 + cmp r0, 0 + beq _08077E70 + ldr r0, _08077E6C + b _08077E7E + .align 2, 0 +_08077E6C: .4byte gUnknown_80FAF3C +_08077E70: + ldr r0, [r4, 0x70] + adds r1, r0, 0 + adds r1, 0xF2 + ldrb r0, [r1] + cmp r0, 0 + beq _08077E90 + ldr r0, _08077E8C +_08077E7E: + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08077EC0 + .align 2, 0 +_08077E8C: .4byte gUnknown_80FAF1C +_08077E90: + movs r0, 0x1 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_76 + ldr r0, _08077EC8 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _08077ECC + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + movs r0, 0 + bl sub_803F580 + bl sub_8040A84 + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08077EC0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08077EC8: .4byte gAvailablePokemonNames +_08077ECC: .4byte gUnknown_80FAEC8 + thumb_func_end sub_8077E4C + + thumb_func_start sub_8077ED0 +sub_8077ED0: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08077F30 + ldr r0, [r4, 0x70] + adds r1, r0, 0 + adds r1, 0xF0 + ldrb r0, [r1] + cmp r0, 0 + beq _08077F00 + ldr r0, _08077EFC + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08077F30 + .align 2, 0 +_08077EFC: .4byte gUnknown_80FAFD0 +_08077F00: + movs r0, 0x1 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_77 + ldr r0, _08077F38 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _08077F3C + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + movs r0, 0 + bl sub_803F580 + bl sub_8040A84 + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08077F30: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08077F38: .4byte gAvailablePokemonNames +_08077F3C: .4byte gUnknown_80FAFAC + thumb_func_end sub_8077ED0 + + thumb_func_start sub_8077F40 +sub_8077F40: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r5, r0, 0 + adds r4, r1, 0 + lsls r2, 24 + lsrs r6, r2, 24 + mov r9, r6 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _08077F62 + b _08078068 +_08077F62: + adds r0, r5, 0 + bl GetEntityType + mov r10, r0 + cmp r0, 0x1 + beq _08077F70 + b _08078068 +_08077F70: + ldr r7, [r4, 0x70] + cmp r5, r4 + bne _08077F88 + cmp r6, 0 + beq _08078068 + ldr r0, _08077F84 + ldr r2, [r0] + adds r0, r4, 0 + b _08078022 + .align 2, 0 +_08077F84: .4byte gPtrCantLeechSeedSelfMessage +_08077F88: + adds r0, r5, 0 + adds r1, r4, 0 + mov r2, r9 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _08078068 + ldr r0, _08077FC0 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r4, 0 + movs r1, 0x4 + bl HasType + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0 + beq _08077FC8 + mov r0, r9 + cmp r0, 0 + beq _08078068 + ldr r0, _08077FC4 + b _0807801E + .align 2, 0 +_08077FC0: .4byte gAvailablePokemonNames +_08077FC4: .4byte gPtrCantLeechSeedMonMessage +_08077FC8: + adds r6, r7, 0 + adds r6, 0xD0 + ldrb r0, [r6] + cmp r0, 0x1 + beq _0807801C + cmp r0, 0x2 + bne _08077FE2 + ldr r0, _08078014 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08077FE2: + mov r1, r10 + strb r1, [r6] + ldr r1, _08078018 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + adds r1, r7, 0 + adds r1, 0xD9 + strb r0, [r1] + adds r0, r7, 0 + adds r0, 0xDA + mov r6, r8 + strb r6, [r0] + adds r0, r4, 0 + bl nullsub_78 + adds r1, r7, 0 + adds r1, 0xD8 + movs r0, 0xFF + strb r0, [r1] + movs r2, 0 + adds r3, r1, 0 + b _08078030 + .align 2, 0 +_08078014: .4byte gUnknown_80FAA8C +_08078018: .4byte gUnknown_80F4EB0 +_0807801C: + ldr r0, _0807802C +_0807801E: + ldr r2, [r0] + adds r0, r5, 0 +_08078022: + adds r1, r4, 0 + bl sub_80522F4 + b _08078068 + .align 2, 0 +_0807802C: .4byte gUnknown_80FAE7C +_08078030: + ldr r0, _08078078 + ldr r0, [r0] + lsls r1, r2, 2 + ldr r6, _0807807C + adds r0, r6 + adds r0, r1 + ldr r0, [r0] + cmp r5, r0 + bne _08078050 + strb r2, [r3] + ldr r0, [r5, 0x70] + adds r1, r7, 0 + adds r1, 0xD4 + adds r0, 0x98 + ldr r0, [r0] + str r0, [r1] +_08078050: + adds r2, 0x1 + cmp r2, 0x13 + ble _08078030 + ldr r0, _08078080 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08078068: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08078078: .4byte gDungeonGlobalData +_0807807C: .4byte 0x000135cc +_08078080: .4byte gUnknown_80FAE58 + thumb_func_end sub_8077F40 + + thumb_func_start sub_8078084 +sub_8078084: + push {r4-r6,lr} + ldr r6, [r0, 0x70] + movs r5, 0 +_0807808A: + ldr r0, _080780DC + ldr r0, [r0] + lsls r1, r5, 2 + ldr r2, _080780E0 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080780D0 + ldr r1, [r4, 0x70] + adds r3, r1, 0 + adds r3, 0xD0 + ldrb r0, [r3] + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080780D0 + adds r0, r1, 0 + adds r0, 0xD4 + adds r1, r6, 0 + adds r1, 0x98 + ldr r2, [r0] + ldr r0, [r1] + cmp r2, r0 + bne _080780D0 + movs r0, 0 + strb r0, [r3] + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_080780D0: + adds r5, 0x1 + cmp r5, 0x13 + ble _0807808A + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080780DC: .4byte gDungeonGlobalData +_080780E0: .4byte 0x000135cc + thumb_func_end sub_8078084 + + thumb_func_start sub_80780E4 +sub_80780E4: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080781C4 + adds r0, r4, 0 + bl GetEntityType + cmp r0, 0x1 + bne _080781C4 + adds r0, r5, 0 + bl GetEntityType + cmp r0, 0x1 + bne _080781C4 + ldr r6, [r4, 0x70] + ldr r0, _0807816C + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r7, r6, 0 + adds r7, 0xD0 + ldrb r0, [r7] + cmp r0, 0x2 + beq _08078178 + cmp r0, 0x1 + bne _08078134 + ldr r0, _08078170 + ldr r2, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80522F4 +_08078134: + movs r0, 0 + mov r8, r0 + movs r0, 0x2 + strb r0, [r7] + ldr r1, _08078174 + adds r0, r5, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + adds r1, r6, 0 + adds r1, 0xD9 + strb r0, [r1] + adds r0, r6, 0 + adds r0, 0xDA + mov r1, r8 + strb r1, [r0] + adds r0, r5, 0 + bl nullsub_74 + adds r1, r6, 0 + adds r1, 0xD8 + movs r0, 0xFF + strb r0, [r1] + movs r2, 0 + adds r3, r1, 0 + b _0807818C + .align 2, 0 +_0807816C: .4byte gAvailablePokemonNames +_08078170: .4byte gUnknown_80FA79C +_08078174: .4byte gUnknown_80F4EF0 +_08078178: + ldr r0, _08078188 + ldr r2, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80522F4 + b _080781C4 + .align 2, 0 +_08078188: .4byte gUnknown_80FBB78 +_0807818C: + ldr r0, _080781D0 + ldr r0, [r0] + lsls r1, r2, 2 + ldr r7, _080781D4 + adds r0, r7 + adds r0, r1 + ldr r0, [r0] + cmp r5, r0 + bne _080781AC + strb r2, [r3] + ldr r0, [r5, 0x70] + adds r1, r6, 0 + adds r1, 0xD4 + adds r0, 0x98 + ldr r0, [r0] + str r0, [r1] +_080781AC: + adds r2, 0x1 + cmp r2, 0x13 + ble _0807818C + ldr r0, _080781D8 + ldr r2, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80522F4 + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_080781C4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080781D0: .4byte gDungeonGlobalData +_080781D4: .4byte 0x000135cc +_080781D8: .4byte gUnknown_80FBB4C + thumb_func_end sub_80780E4 + + thumb_func_start sub_80781DC +sub_80781DC: + push {r4-r7,lr} + adds r7, r0, 0 + adds r4, r1, 0 + adds r6, r2, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08078242 + ldr r5, [r4, 0x70] + ldr r0, _08078228 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xDC + ldrb r0, [r1] + cmp r0, 0x1 + beq _08078230 + movs r0, 0x1 + strb r0, [r1] + adds r1, r6, 0x1 + adds r0, r5, 0 + adds r0, 0xDD + strb r1, [r0] + adds r0, r4, 0 + bl sub_8041CDC + ldr r0, _0807822C + ldr r2, [r0] + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _0807823C + .align 2, 0 +_08078228: .4byte gAvailablePokemonNames +_0807822C: .4byte gUnknown_80FB73C +_08078230: + ldr r0, _08078248 + ldr r2, [r0] + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_80522F4 +_0807823C: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08078242: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08078248: .4byte gUnknown_80FB764 + thumb_func_end sub_80781DC + + thumb_func_start sub_807824C +sub_807824C: + push {r4-r7,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r7, r2, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080782C2 + adds r0, r6, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _080782C2 + ldr r5, [r4, 0x70] + ldr r0, _080782A8 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xDC + ldrb r0, [r1] + cmp r0, 0x2 + beq _080782B0 + movs r0, 0x2 + strb r0, [r1] + adds r1, r7, 0x1 + adds r0, r5, 0 + adds r0, 0xDD + strb r1, [r0] + adds r0, r4, 0 + bl sub_8041CEC + ldr r0, _080782AC + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _080782BC + .align 2, 0 +_080782A8: .4byte gAvailablePokemonNames +_080782AC: .4byte gUnknown_80FB780 +_080782B0: + ldr r0, _080782C8 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_080782BC: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_080782C2: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080782C8: .4byte gUnknown_80FB7A0 + thumb_func_end sub_807824C + + thumb_func_start sub_80782CC +sub_80782CC: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807833E + ldr r5, [r4, 0x70] + ldr r0, _08078320 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xDC + ldrb r0, [r1] + cmp r0, 0x3 + beq _0807832C + movs r0, 0x3 + strb r0, [r1] + ldr r1, _08078324 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xDD + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_79 + ldr r0, _08078328 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08078338 + .align 2, 0 +_08078320: .4byte gAvailablePokemonNames +_08078324: .4byte gUnknown_80F4EC4 +_08078328: .4byte gUnknown_80FB8BC +_0807832C: + ldr r0, _08078344 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08078338: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_0807833E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08078344: .4byte gUnknown_80FB8E4 + thumb_func_end sub_80782CC + + thumb_func_start sub_8078348 +sub_8078348: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080783BA + ldr r5, [r4, 0x70] + ldr r0, _0807839C + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xDC + ldrb r0, [r1] + cmp r0, 0x4 + beq _080783A8 + movs r0, 0x4 + strb r0, [r1] + ldr r1, _080783A0 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xDD + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_80 + ldr r0, _080783A4 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _080783B4 + .align 2, 0 +_0807839C: .4byte gAvailablePokemonNames +_080783A0: .4byte gUnknown_80F4EC8 +_080783A4: .4byte gUnknown_80FB900 +_080783A8: + ldr r0, _080783C0 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_080783B4: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_080783BA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080783C0: .4byte gUnknown_80FB924 + thumb_func_end sub_8078348 + + thumb_func_start sub_80783C4 +sub_80783C4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + adds r5, r0, 0 + adds r7, r1, 0 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x18] + adds r0, r7, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _080783E8 + b _0807856A +_080783E8: + adds r0, r5, 0 + adds r1, r7, 0 + movs r2, 0x1 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + beq _080783FA + b _0807856A +_080783FA: + ldr r4, [r7, 0x70] + ldr r0, _08078420 + adds r1, r7, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r4, 0 + adds r1, 0xC8 + ldrb r0, [r1] + cmp r0, 0x2 + bne _08078428 + ldr r0, _08078424 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r7, 0 + bl sub_80522F4 + b _0807856A + .align 2, 0 +_08078420: .4byte gAvailablePokemonNames +_08078424: .4byte gUnknown_80FB994 +_08078428: + movs r6, 0 + mov r8, r1 + movs r0, 0xC9 + adds r0, r4 + mov r9, r0 + movs r1, 0xCA + adds r1, r4 + mov r10, r1 + adds r2, r4, 0 + adds r2, 0xCB + str r2, [sp, 0x1C] + adds r4, 0xCC + str r4, [sp, 0x20] +_08078442: + ldr r0, _0807857C + ldr r0, [r0] + lsls r1, r6, 2 + ldr r3, _08078580 + adds r0, r3 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08078480 + cmp r7, r4 + beq _08078480 + ldr r0, [r4, 0x70] + adds r0, 0xC8 + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08078480 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_807A5D0 + movs r0, 0x2A + bl sub_803E46C +_08078480: + adds r6, 0x1 + cmp r6, 0x13 + ble _08078442 + adds r0, r7, 0 + bl sub_8041D38 + ldr r0, _08078584 + adds r1, r7, 0 + movs r2, 0 + bl SetMessageArgument + mov r4, r8 + ldrb r0, [r4] + cmp r0, 0 + beq _080784A8 + adds r0, r5, 0 + adds r1, r7, 0 + movs r2, 0x2 + bl sub_807A5D0 +_080784A8: + movs r4, 0 + movs r0, 0x2 + mov r1, r8 + strb r0, [r1] + ldr r0, [r5, 0x70] + ldrb r0, [r0, 0x6] + mov r2, r9 + strb r0, [r2] + mov r3, sp + ldrb r0, [r3, 0x18] + mov r3, r10 + strb r0, [r3] + ldr r1, _08078588 + adds r0, r7, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + ldr r1, [sp, 0x1C] + strb r0, [r1] + ldr r2, [sp, 0x20] + strb r4, [r2] + adds r0, r7, 0 + bl sub_806CEBC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r7, 0 + bl sub_806CCB4 + ldr r0, _0807857C + ldr r0, [r0] + ldr r3, _0807858C + adds r0, r3 + movs r1, 0x1 + strb r1, [r0] + ldr r0, _08078590 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r7, 0 + bl sub_80522F4 + movs r6, 0 + mov r8, r6 +_08078502: + ldr r0, _0807857C + ldr r0, [r0] + lsls r1, r6, 2 + ldr r4, _08078580 + adds r0, r4 + adds r0, r1 + ldr r0, [r0] + mov r9, r0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807855E + mov r5, r9 + ldr r4, [r5, 0x70] + adds r1, r4, 0 + adds r1, 0x78 + movs r0, 0x6 + strb r0, [r1] + adds r0, r4, 0 + adds r0, 0x80 + mov r1, r8 + str r1, [r0] + subs r0, 0x4 + strh r1, [r0] + ldrb r0, [r4, 0x7] + cmp r0, 0 + bne _0807855E + mov r1, sp + adds r0, r4, 0 + adds r0, 0x44 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + mov r0, r9 + movs r1, 0x1 + bl MoveIfPossible + adds r1, r4, 0 + adds r1, 0x44 + mov r0, sp + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} +_0807855E: + adds r6, 0x1 + cmp r6, 0x13 + ble _08078502 + adds r0, r7, 0 + bl DungeonEntityUpdateStatusSprites +_0807856A: + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807857C: .4byte gDungeonGlobalData +_08078580: .4byte 0x000135cc +_08078584: .4byte gAvailablePokemonNames +_08078588: .4byte gUnknown_80F4ED0 +_0807858C: .4byte 0x000037fc +_08078590: .4byte gUnknown_80FB978 + thumb_func_end sub_80783C4 + + thumb_func_start sub_8078594 +sub_8078594: + push {r4-r7,lr} + adds r5, r0, 0 + adds r6, r1, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807866E + adds r0, r6, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807866E + ldr r4, [r5, 0x70] + ldr r7, [r6, 0x70] + adds r0, r5, 0 + movs r1, 0xE + bl HasType + lsls r0, 24 + cmp r0, 0 + beq _08078640 + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0x1 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _0807866E + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0x1 + bl sub_807A5D0 + adds r0, r6, 0 + bl sub_8041D48 + movs r1, 0xE + ldrsh r0, [r4, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r4, 0xE] + cmp r0, 0 + bne _080785F6 + movs r0, 0x1 + strh r0, [r4, 0xE] +_080785F6: + adds r1, r7, 0 + adds r1, 0xC8 + ldrb r0, [r1] + cmp r0, 0x1 + beq _0807861C + movs r0, 0x1 + strb r0, [r1] + ldr r1, _08078634 + adds r0, r6, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + adds r1, r7, 0 + adds r1, 0xCB + strb r0, [r1] + adds r1, 0x1 + movs r0, 0 + strb r0, [r1] +_0807861C: + ldr r0, _08078638 + adds r1, r6, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _0807863C + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_80522F4 + b _08078668 + .align 2, 0 +_08078634: .4byte gUnknown_80F4EA4 +_08078638: .4byte gAvailablePokemonNames +_0807863C: .4byte gUnknown_80FB004 +_08078640: + ldr r0, _08078674 + ldr r4, [r0] + adds r0, r5, 0 + adds r1, r5, 0 + adds r2, r4, 0 + movs r3, 0x1 + bl sub_8077084 + adds r0, r5, 0 + adds r1, r5, 0 + adds r2, r4, 0 + movs r3, 0x1 + bl sub_8077160 + adds r0, r5, 0 + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_80779F0 +_08078668: + adds r0, r6, 0 + bl DungeonEntityUpdateStatusSprites +_0807866E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08078674: .4byte gUnknown_8106A4C + thumb_func_end sub_8078594 + + thumb_func_start sub_8078678 +sub_8078678: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + adds r6, r1, 0 + adds r0, r6, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08078732 + adds r0, r7, 0 + adds r1, r6, 0 + movs r2, 0x3 + bl sub_807A5D0 + movs r5, 0 +_0807869A: + ldr r0, _0807873C + ldr r0, [r0] + lsls r1, r5, 2 + ldr r2, _08078740 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080786C8 + ldr r0, [r4, 0x70] + adds r0, 0xC8 + ldrb r0, [r0] + cmp r0, 0x3 + bne _080786C8 + adds r0, r7, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_807A5D0 +_080786C8: + adds r5, 0x1 + cmp r5, 0x13 + ble _0807869A + adds r0, r6, 0 + bl nullsub_81 + ldr r5, [r6, 0x70] + mov r8, r5 + adds r1, r5, 0 + adds r1, 0xC8 + ldrb r0, [r1] + cmp r0, 0x3 + beq _08078700 + movs r4, 0 + movs r0, 0x3 + strb r0, [r1] + ldr r1, _08078744 + adds r0, r6, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xCB + strb r0, [r1] + adds r0, r5, 0 + adds r0, 0xCC + strb r4, [r0] +_08078700: + ldr r0, _0807873C + ldr r1, [r0] + ldr r2, _08078748 + adds r0, r1, r2 + str r6, [r0] + ldr r0, _0807874C + adds r1, r0 + mov r0, r8 + adds r0, 0x98 + ldr r0, [r0] + str r0, [r1] + ldr r0, _08078750 + adds r1, r6, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _08078754 + ldr r2, [r0] + adds r0, r7, 0 + adds r1, r6, 0 + bl sub_80522F4 + adds r0, r6, 0 + bl DungeonEntityUpdateStatusSprites +_08078732: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807873C: .4byte gDungeonGlobalData +_08078740: .4byte 0x000135cc +_08078744: .4byte gUnknown_80F4EA8 +_08078748: .4byte 0x00017b30 +_0807874C: .4byte 0x00017b3c +_08078750: .4byte gAvailablePokemonNames +_08078754: .4byte gUnknown_80FB01C + thumb_func_end sub_8078678 + + thumb_func_start sub_8078758 +sub_8078758: + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080787DA + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _080787DA + ldr r6, [r4, 0x70] + ldr r0, _080787BC + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r6, 0 + adds r1, 0xBC + ldrb r0, [r1] + cmp r0, 0x5 + beq _080787C8 + movs r0, 0x5 + strb r0, [r1] + ldr r1, _080787C0 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + adds r1, r6, 0 + adds r1, 0xBD + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_73 + ldr r0, _080787C4 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _080787D4 + .align 2, 0 +_080787BC: .4byte gAvailablePokemonNames +_080787C0: .4byte gUnknown_80F4ED8 +_080787C4: .4byte gUnknown_80FB9F0 +_080787C8: + ldr r0, _080787E0 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_080787D4: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_080787DA: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080787E0: .4byte gUnknown_80FBA14 + thumb_func_end sub_8078758 + + thumb_func_start sub_80787E4 +sub_80787E4: + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08078852 + ldr r4, [r5, 0x70] + ldr r0, _08078834 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + movs r0, 0x89 + lsls r0, 1 + adds r4, r0 + ldrb r0, [r4] + cmp r0, 0x2 + bhi _08078840 + adds r0, 0x1 + strb r0, [r4] + movs r0, 0x1 + bl sub_804178C + adds r0, r5, 0 + bl sub_8041D5C + ldr r1, _08078838 + ldrb r0, [r4] + str r0, [r1] + ldr r0, _0807883C + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80522F4 + b _0807884C + .align 2, 0 +_08078834: .4byte gAvailablePokemonNames +_08078838: .4byte gUnknown_202DE30 +_0807883C: .4byte gUnknown_80FBA38 +_08078840: + ldr r0, _08078858 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80522F4 +_0807884C: + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_08078852: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08078858: .4byte gUnknown_80FBA60 + thumb_func_end sub_80787E4 + + thumb_func_start sub_807885C +sub_807885C: + push {r4-r7,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080788DE + ldr r0, [r4, 0x70] + adds r7, r0, 0 + adds r5, r7, 0 + adds r5, 0xE4 + ldrb r0, [r5] + cmp r0, 0x2 + bne _08078884 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_807A7C8 +_08078884: + ldr r0, _080788C0 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldrb r0, [r5] + cmp r0, 0x1 + beq _080788CC + movs r0, 0x1 + strb r0, [r5] + ldr r1, _080788C4 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r7, 0 + adds r1, 0xE5 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8041D84 + ldr r0, _080788C8 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _080788D8 + .align 2, 0 +_080788C0: .4byte gAvailablePokemonNames +_080788C4: .4byte gUnknown_80F4EE4 +_080788C8: .4byte gUnknown_80FBA80 +_080788CC: + ldr r0, _080788E4 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_080788D8: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_080788DE: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080788E4: .4byte gUnknown_80FBAA0 + thumb_func_end sub_807885C + + thumb_func_start sub_80788E8 +sub_80788E8: + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807895E + adds r0, r6, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _0807895E + adds r0, r5, 0 + bl nullsub_82 + ldr r4, [r5, 0x70] + ldr r0, _08078940 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + adds r4, 0xFD + ldrb r0, [r4] + cmp r0, 0 + bne _0807894C + ldr r1, _08078944 + adds r0, r5, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + strb r0, [r4] + ldr r0, _08078948 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80522F4 + b _08078958 + .align 2, 0 +_08078940: .4byte gAvailablePokemonNames +_08078944: .4byte gUnknown_80F4EEC +_08078948: .4byte gUnknown_80FBB04 +_0807894C: + ldr r0, _08078964 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80522F4 +_08078958: + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_0807895E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08078964: .4byte gUnknown_80FBB28 + thumb_func_end sub_80788E8 + + thumb_func_start sub_8078968 +sub_8078968: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + adds r4, r1, 0 + ldr r5, [r4, 0x70] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08078A4A + adds r0, r6, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _08078A4A + movs r3, 0 + ldr r0, _080789E8 + mov r8, r0 + movs r1, 0x1 + mov r12, r1 + movs r0, 0x8C + lsls r0, 1 + adds r2, r5, r0 + movs r7, 0x10 +_080789A2: + ldrb r1, [r2] + mov r0, r12 + ands r0, r1 + cmp r0, 0 + beq _080789B4 + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _080789BC +_080789B4: + adds r2, 0x8 + adds r3, 0x1 + cmp r3, 0x3 + ble _080789A2 +_080789BC: + cmp r3, 0x4 + bne _080789F0 + movs r1, 0x9C + lsls r1, 1 + adds r0, r5, r1 + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _080789F0 + mov r0, r8 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _080789EC + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08078A4A + .align 2, 0 +_080789E8: .4byte gAvailablePokemonNames +_080789EC: .4byte gUnknown_80FBBD4 +_080789F0: + mov r0, r8 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xBC + ldrb r0, [r1] + cmp r0, 0x6 + beq _08078A38 + movs r0, 0x6 + strb r0, [r1] + ldr r1, _08078A30 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xBD + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_83 + ldr r0, _08078A34 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08078A44 + .align 2, 0 +_08078A30: .4byte gUnknown_80F4EF4 +_08078A34: .4byte gUnknown_80FBB94 +_08078A38: + ldr r0, _08078A54 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08078A44: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08078A4A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08078A54: .4byte gUnknown_80FBBB8 + thumb_func_end sub_8078968 + + thumb_func_start sub_8078A58 +sub_8078A58: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + mov r8, r0 + adds r6, r1, 0 + adds r7, r2, 0 + adds r5, r3, 0 + adds r0, r6, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08078B4A + ldr r4, [r6, 0x70] + cmp r5, 0 + beq _08078AE0 + mov r0, sp + adds r1, r5, 0 + bl sub_80943A0 + ldr r2, [sp] + movs r0, 0xA0 + lsls r0, 1 + adds r5, r4, r0 + ldr r7, [r5] + add r0, sp, 0x4 + adds r1, r7, 0 + bl sub_80942C0 + ldr r2, [sp, 0x4] + str r2, [r5] + movs r0, 0x9E + lsls r0, 1 + adds r4, r0 + ldr r1, [r4] + add r0, sp, 0x8 + bl sub_8094318 + ldr r0, [sp, 0x8] + str r0, [r4] + ldr r0, _08078AD0 + adds r1, r6, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r7, 0 + bl RoundUpFixedPoint + adds r4, r0, 0 + ldr r0, [r5] + bl RoundUpFixedPoint + cmp r4, r0 + beq _08078AD8 + adds r0, r6, 0 + bl sub_8041D9C + ldr r0, _08078AD4 + b _08078B22 + .align 2, 0 +_08078AD0: .4byte gAvailablePokemonNames +_08078AD4: .4byte gUnknown_80FBD9C +_08078AD8: + ldr r0, _08078ADC + b _08078B22 + .align 2, 0 +_08078ADC: .4byte gUnknown_80FBE3C +_08078AE0: + add r0, sp, 0xC + adds r1, r7, 0 + bl sub_80943A0 + ldr r2, [sp, 0xC] + movs r0, 0x9E + lsls r0, 1 + adds r4, r0 + ldr r7, [r4] + add r0, sp, 0x10 + adds r1, r7, 0 + bl sub_80942C0 + ldr r0, [sp, 0x10] + str r0, [r4] + ldr r0, _08078B30 + adds r1, r6, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r7, 0 + bl RoundUpFixedPoint + adds r5, r0, 0 + ldr r0, [r4] + bl RoundUpFixedPoint + cmp r5, r0 + beq _08078B38 + adds r0, r6, 0 + bl nullsub_84 + ldr r0, _08078B34 +_08078B22: + ldr r2, [r0] + mov r0, r8 + adds r1, r6, 0 + bl sub_80522F4 + b _08078B44 + .align 2, 0 +_08078B30: .4byte gAvailablePokemonNames +_08078B34: .4byte gUnknown_80FBD78 +_08078B38: + ldr r0, _08078B58 + ldr r2, [r0] + mov r0, r8 + adds r1, r6, 0 + bl sub_80522F4 +_08078B44: + adds r0, r6, 0 + bl DungeonEntityUpdateStatusSprites +_08078B4A: + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08078B58: .4byte gUnknown_80FBE40 + thumb_func_end sub_8078A58 + + thumb_func_start sub_8078B5C +sub_8078B5C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + mov r9, r0 + adds r6, r1, 0 + mov r10, r2 + str r3, [sp, 0x1C] + ldr r0, [sp, 0x48] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + adds r0, r6, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _08078B86 + b _08078D78 +_08078B86: + ldr r7, [r6, 0x70] + ldrb r0, [r7, 0x7] + cmp r0, 0 + bne _08078BB8 + adds r0, r6, 0 + movs r1, 0x1B + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _08078BB8 + mov r0, r8 + cmp r0, 0 + bne _08078BA4 + b _08078D78 +_08078BA4: + ldr r0, _08078BB4 + ldr r2, [r0] + mov r0, r9 + adds r1, r6, 0 + bl sub_80522F4 + b _08078D78 + .align 2, 0 +_08078BB4: .4byte gUnknown_80FBEA0 +_08078BB8: + movs r5, 0 + ldr r1, [sp, 0x1C] + cmp r1, 0 + beq _08078BE8 + movs r1, 0x9E + lsls r1, 1 + adds r0, r7, r1 + ldr r0, [r0] + bl RoundUpFixedPoint + adds r4, r0, 0 + movs r1, 0xA0 + lsls r1, 1 + adds r0, r7, r1 + ldr r0, [r0] + bl RoundUpFixedPoint + cmp r4, r0 + blt _08078BE0 + movs r5, 0x1 +_08078BE0: + ldr r0, _08078C8C + cmp r10, r0 + bne _08078BE8 + movs r5, 0x1 +_08078BE8: + cmp r5, 0 + beq _08078CC0 + movs r0, 0xA0 + lsls r0, 1 + adds r5, r7, r0 + ldr r1, [r5] + str r1, [sp, 0x20] + subs r0, 0x4 + adds r0, r7 + mov r10, r0 + ldr r0, [r0] + bl RoundUpFixedPoint + adds r4, r0, 0 + ldr r0, [r5] + bl RoundUpFixedPoint + movs r1, 0 + str r1, [sp, 0x24] + cmp r4, r0 + bne _08078C16 + movs r0, 0x1 + str r0, [sp, 0x24] +_08078C16: + mov r0, sp + ldr r1, [sp, 0x1C] + bl sub_80943A0 + ldr r2, [sp] + ldr r1, [r5] + add r0, sp, 0x4 + bl sub_8094268 + ldr r4, [sp, 0x4] + str r4, [r5] + add r0, sp, 0x8 + movs r1, 0xC8 + bl sub_80943A0 + ldr r2, [sp, 0x8] + add r0, sp, 0xC + adds r1, r4, 0 + bl sub_8094318 + ldr r0, [sp, 0xC] + str r0, [r5] + mov r1, r10 + str r0, [r1] + ldr r0, [sp, 0x24] + cmp r0, 0 + bne _08078C5E + mov r1, r8 + cmp r1, 0 + beq _08078C5E + ldr r0, _08078C90 + ldr r2, [r0] + mov r0, r9 + adds r1, r6, 0 + bl sub_80522F4 +_08078C5E: + ldr r0, [sp, 0x20] + bl RoundUpFixedPoint + adds r4, r0, 0 + movs r1, 0xA0 + lsls r1, 1 + adds r0, r7, r1 + ldr r0, [r0] + bl RoundUpFixedPoint + cmp r4, r0 + bne _08078C9C + ldr r0, _08078C94 + adds r1, r6, 0 + movs r2, 0 + bl SetMessageArgument + mov r0, r8 + cmp r0, 0 + beq _08078D72 + ldr r0, _08078C98 + b _08078D4E + .align 2, 0 +_08078C8C: .4byte 0x000003e7 +_08078C90: .4byte gUnknown_80FBE64 +_08078C94: .4byte gAvailablePokemonNames +_08078C98: .4byte gUnknown_80FBDF0 +_08078C9C: + adds r0, r6, 0 + bl sub_8041DB0 + ldr r0, _08078CB8 + adds r1, r6, 0 + movs r2, 0 + bl SetMessageArgument + mov r1, r8 + cmp r1, 0 + beq _08078D72 + ldr r0, _08078CBC + b _08078D4E + .align 2, 0 +_08078CB8: .4byte gAvailablePokemonNames +_08078CBC: .4byte gUnknown_80FBDC4 +_08078CC0: + movs r0, 0x9E + lsls r0, 1 + adds r5, r7, r0 + ldr r4, [r5] + add r0, sp, 0x10 + mov r1, r10 + bl sub_80943A0 + ldr r2, [sp, 0x10] + ldr r1, [r5] + add r0, sp, 0x14 + bl sub_8094268 + ldr r1, [sp, 0x14] + str r1, [r5] + movs r0, 0xA0 + lsls r0, 1 + adds r7, r0 + ldr r2, [r7] + add r0, sp, 0x18 + bl sub_8094318 + ldr r0, [sp, 0x18] + str r0, [r5] + ldr r0, _08078D28 + cmp r10, r0 + bne _08078CFA + ldr r0, [r7] + str r0, [r5] +_08078CFA: + adds r0, r6, 0 + bl nullsub_85 + ldr r0, _08078D2C + adds r1, r6, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r4, 0 + bl RoundUpFixedPoint + adds r4, r0, 0 + ldr r0, [r5] + bl RoundUpFixedPoint + cmp r4, r0 + bne _08078D34 + mov r1, r8 + cmp r1, 0 + beq _08078D72 + ldr r0, _08078D30 + b _08078D4E + .align 2, 0 +_08078D28: .4byte 0x000003e7 +_08078D2C: .4byte gAvailablePokemonNames +_08078D30: .4byte gUnknown_80FBE14 +_08078D34: + ldr r0, [r5] + bl RoundUpFixedPoint + adds r4, r0, 0 + ldr r0, [r7] + bl RoundUpFixedPoint + cmp r4, r0 + blt _08078D60 + mov r0, r8 + cmp r0, 0 + beq _08078D72 + ldr r0, _08078D5C +_08078D4E: + ldr r2, [r0] + mov r0, r9 + adds r1, r6, 0 + bl sub_80522F4 + b _08078D72 + .align 2, 0 +_08078D5C: .4byte gUnknown_80FBE64 +_08078D60: + mov r1, r8 + cmp r1, 0 + beq _08078D72 + ldr r0, _08078D88 + ldr r2, [r0] + mov r0, r9 + adds r1, r6, 0 + bl sub_80522F4 +_08078D72: + adds r0, r6, 0 + bl DungeonEntityUpdateStatusSprites +_08078D78: + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08078D88: .4byte gUnknown_80FBE84 + thumb_func_end sub_8078B5C + + thumb_func_start sub_8078D8C +sub_8078D8C: + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08078E0E + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _08078E0E + ldr r6, [r4, 0x70] + ldr r0, _08078DF0 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r6, 0 + adds r1, 0xEC + ldrb r0, [r1] + cmp r0, 0x1 + beq _08078DFC + movs r0, 0x1 + strb r0, [r1] + ldr r1, _08078DF4 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + adds r1, r6, 0 + adds r1, 0xED + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_86 + ldr r0, _08078DF8 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08078E08 + .align 2, 0 +_08078DF0: .4byte gAvailablePokemonNames +_08078DF4: .4byte gUnknown_80F4F1C +_08078DF8: .4byte gUnknown_80FBF68 +_08078DFC: + ldr r0, _08078E14 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08078E08: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08078E0E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08078E14: .4byte gUnknown_80FBF84 + thumb_func_end sub_8078D8C + + thumb_func_start sub_8078E18 +sub_8078E18: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _08078E48 + add sp, r4 + mov r10, r0 + adds r5, r1, 0 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08078F2E + ldr r7, [r5, 0x70] + adds r0, r7, 0 + adds r0, 0xE4 + ldrb r0, [r0] + cmp r0, 0x2 + bne _08078E50 + ldr r0, _08078E4C + b _08078EC0 + .align 2, 0 +_08078E48: .4byte 0xfffffe00 +_08078E4C: .4byte gUnknown_80FBF04 +_08078E50: + ldr r0, _08078ECC + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + mov r0, sp + movs r1, 0 + bl sub_803D870 + mov r8, r0 + cmp r0, 0 + beq _08078EBE + movs r0, 0 + mov r9, r0 + movs r6, 0 +_08078E6E: + mov r0, r8 + bl DungeonRandomCapped + lsls r0, 3 + add r0, sp + bl ExtractSpeciesIndex + adds r1, r0, 0 + lsls r1, 16 + asrs r1, 16 + adds r0, r5, 0 + bl sub_8069F54 + lsls r0, 16 + asrs r4, r0, 16 + movs r1, 0x4 + ldrsh r0, [r7, r1] + cmp r4, r0 + beq _08078EAE + adds r0, r4, 0 + movs r1, 0x1 + bl sub_806AA0C + lsls r0, 24 + cmp r0, 0 + beq _08078EAE + adds r0, r4, 0 + bl sub_80687D0 + mov r9, r0 + cmp r0, 0 + bne _08078EB4 +_08078EAE: + adds r6, 0x1 + cmp r6, 0x13 + ble _08078E6E +_08078EB4: + cmp r6, 0x14 + beq _08078EBE + mov r2, r9 + cmp r2, 0 + bne _08078ED4 +_08078EBE: + ldr r0, _08078ED0 +_08078EC0: + ldr r2, [r0] + mov r0, r10 + adds r1, r5, 0 + bl sub_80522F4 + b _08078F2E + .align 2, 0 +_08078ECC: .4byte gAvailablePokemonNames +_08078ED0: .4byte gUnknown_80FBEE4 +_08078ED4: + strh r4, [r7, 0x4] + mov r0, r9 + str r0, [r5, 0x64] + adds r1, r7, 0 + adds r1, 0xE4 + movs r0, 0x2 + strb r0, [r1] + ldr r1, _08078F44 + adds r0, r5, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + adds r1, r7, 0 + adds r1, 0xE5 + strb r0, [r1] + adds r0, r5, 0 + bl sub_806CF98 + adds r0, r5, 0 + bl nullsub_87 + adds r0, r5, 0 + bl sub_806CEBC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_806CCB4 + ldr r0, _08078F48 + movs r2, 0x4 + ldrsh r1, [r7, r2] + bl CopyCyanSpeciesNametoBuffer + ldr r0, _08078F4C + ldr r2, [r0] + mov r0, r10 + adds r1, r5, 0 + bl sub_80522F4 + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_08078F2E: + movs r3, 0x80 + lsls r3, 2 + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08078F44: .4byte gUnknown_80F4EFC +_08078F48: .4byte gUnknown_202DFE8 +_08078F4C: .4byte gUnknown_80FBEC0 + thumb_func_end sub_8078E18 + + thumb_func_start sub_8078F50 +sub_8078F50: + push {r4-r7,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08078FD2 + ldr r0, [r4, 0x70] + adds r7, r0, 0 + adds r5, r7, 0 + adds r5, 0xE4 + ldrb r0, [r5] + cmp r0, 0x2 + bne _08078F78 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_807A7C8 +_08078F78: + ldr r0, _08078FB4 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldrb r0, [r5] + cmp r0, 0x3 + beq _08078FC0 + movs r0, 0x3 + strb r0, [r5] + ldr r1, _08078FB8 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r7, 0 + adds r1, 0xE5 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_88 + ldr r0, _08078FBC + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08078FCC + .align 2, 0 +_08078FB4: .4byte gAvailablePokemonNames +_08078FB8: .4byte gUnknown_80F4F04 +_08078FBC: .4byte gUnknown_80FBF28 +_08078FC0: + ldr r0, _08078FD8 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08078FCC: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08078FD2: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08078FD8: .4byte gUnknown_80FBF50 + thumb_func_end sub_8078F50 + + thumb_func_start sub_8078FDC +sub_8078FDC: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r6, r0, 0 + adds r4, r1, 0 + lsls r2, 16 + asrs r7, r2, 16 + mov r10, r7 + movs r0, 0 + mov r8, r0 + mov r9, r0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080790B6 + adds r0, r6, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _080790B6 + ldr r5, [r4, 0x70] + ldr r0, _08079064 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + movs r1, 0x26 + ldrsh r0, [r5, r1] + cmp r0, 0xA + ble _0807902E + movs r0, 0xA + strh r0, [r5, 0x26] + movs r0, 0x1 + mov r8, r0 +_0807902E: + mov r1, r8 + cmp r1, 0 + beq _0807904C + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_8041DD8 + ldr r0, _08079068 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + movs r0, 0x1 + mov r9, r0 +_0807904C: + adds r5, 0xF5 + ldrb r0, [r5] + cmp r0, 0 + beq _08079070 + ldr r0, _0807906C + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _080790B6 + .align 2, 0 +_08079064: .4byte gAvailablePokemonNames +_08079068: .4byte gUnknown_80FC000 +_0807906C: .4byte gUnknown_80FBFB8 +_08079070: + mov r1, r9 + cmp r1, 0 + bne _0807907E + adds r0, r4, 0 + mov r1, r10 + bl sub_8041DD8 +_0807907E: + adds r0, r4, 0 + movs r1, 0xE + bl HasType + lsls r0, 24 + cmp r0, 0 + bne _080790A0 + ldr r0, _0807909C + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _080790B0 + .align 2, 0 +_0807909C: .4byte gUnknown_80FBFD8 +_080790A0: + movs r0, 0x1 + strb r0, [r5] + ldr r0, _080790C4 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_080790B0: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_080790B6: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080790C4: .4byte gUnknown_80FBF9C + thumb_func_end sub_8078FDC + + thumb_func_start sub_80790C8 +sub_80790C8: + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079134 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _08079134 + ldr r6, _0807911C + ldr r0, [r6] + ldr r1, _08079120 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08079128 + adds r0, r4, 0 + bl nullsub_89 + ldr r0, [r6] + ldr r1, _08079120 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites + ldr r0, _08079124 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079134 + .align 2, 0 +_0807911C: .4byte gDungeonGlobalData +_08079120: .4byte 0x00000676 +_08079124: .4byte gUnknown_80FC028 +_08079128: + ldr r0, _0807913C + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079134: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807913C: .4byte gUnknown_80FC054 + thumb_func_end sub_80790C8 + + thumb_func_start BlindTarget +BlindTarget: + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080791CE + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _080791CE + ldr r6, [r4, 0x70] + ldr r0, _080791B0 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r6, 0 + adds r1, 0xE8 + ldrb r0, [r1] + cmp r0, 0x1 + beq _080791BC + movs r0, 0x1 + strb r0, [r1] + ldr r1, _080791B4 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + adds r1, r6, 0 + adds r1, 0xE9 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8041E0C + ldr r0, _080791B8 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + movs r0, 0x31 + bl sub_803E46C + bl sub_8049ED4 + bl sub_8040A84 + b _080791C8 + .align 2, 0 +_080791B0: .4byte gAvailablePokemonNames +_080791B4: .4byte gUnknown_80F4F08 +_080791B8: .4byte gUnknown_80FB7F4 +_080791BC: + ldr r0, _080791D4 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_080791C8: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_080791CE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080791D4: .4byte gUnknown_80FB810 + thumb_func_end BlindTarget + + thumb_func_start sub_80791D8 +sub_80791D8: + push {r4-r7,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079266 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80716E8 + lsls r0, 24 + cmp r0, 0 + bne _08079266 + ldr r7, [r4, 0x70] + ldr r0, _08079248 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r6, r7, 0 + adds r6, 0xE8 + ldrb r0, [r6] + cmp r0, 0x2 + beq _08079254 + adds r0, r4, 0 + bl sub_8041E1C + ldr r0, _0807924C + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + movs r0, 0x2 + strb r0, [r6] + ldr r1, _08079250 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r0, 0x1 + adds r1, r7, 0 + adds r1, 0xE9 + strb r0, [r1] + movs r0, 0x1 + bl sub_803F580 + bl sub_8049ED4 + bl sub_8040A84 + b _08079260 + .align 2, 0 +_08079248: .4byte gAvailablePokemonNames +_0807924C: .4byte gUnknown_80FB834 +_08079250: .4byte gUnknown_80F4F0C +_08079254: + ldr r0, _0807926C + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079260: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079266: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807926C: .4byte gUnknown_80FB85C + thumb_func_end sub_80791D8 + + thumb_func_start RestoreVisionTarget +RestoreVisionTarget: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080792EE + ldr r5, [r4, 0x70] + ldr r0, _080792D0 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xE8 + ldrb r0, [r1] + cmp r0, 0x3 + beq _080792DC + movs r0, 0x3 + strb r0, [r1] + ldr r1, _080792D4 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xE9 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8041E3C + ldr r0, _080792D8 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + movs r0, 0x31 + bl sub_803E46C + bl sub_8049ED4 + bl sub_8040A84 + b _080792E8 + .align 2, 0 +_080792D0: .4byte gAvailablePokemonNames +_080792D4: .4byte gUnknown_80F4F10 +_080792D8: .4byte gUnknown_80FB880 +_080792DC: + ldr r0, _080792F4 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_080792E8: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_080792EE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080792F4: .4byte gUnknown_80FB89C + thumb_func_end RestoreVisionTarget + + thumb_func_start sub_80792F8 +sub_80792F8: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r10, r0 + adds r6, r1, 0 + mov r9, r2 + movs r0, 0 + mov r8, r0 + adds r0, r6, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807939A + ldr r0, [r6, 0x70] + movs r1, 0x8C + lsls r1, 1 + adds r4, r0, r1 + adds r5, r4, 0 + movs r7, 0x3 +_08079326: + ldrb r1, [r4] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0807935E + ldrb r0, [r4, 0x4] + str r0, [sp] + adds r0, r5, 0 + bl GetMoveMaxPP + str r0, [sp, 0x4] + ldr r1, [sp] + ldr r0, [sp, 0x4] + cmp r1, r0 + bge _0807935E + ldr r0, [sp] + add r0, r9 + str r0, [sp] + ldr r1, [sp] + ldr r0, [sp, 0x4] + cmp r1, r0 + ble _08079356 + ldr r0, [sp, 0x4] + str r0, [sp] +_08079356: + ldr r0, [sp] + strb r0, [r4, 0x4] + movs r0, 0x1 + mov r8, r0 +_0807935E: + adds r4, 0x8 + adds r5, 0x8 + subs r7, 0x1 + cmp r7, 0 + bge _08079326 + mov r1, r8 + cmp r1, 0 + beq _08079388 + adds r0, r6, 0 + bl sub_8041E4C + ldr r0, _08079384 + ldr r2, [r0] + mov r0, r10 + adds r1, r6, 0 + bl sub_80522F4 + b _08079394 + .align 2, 0 +_08079384: .4byte gUnknown_80FDBD0 +_08079388: + ldr r0, _080793AC + ldr r2, [r0] + mov r0, r10 + adds r1, r6, 0 + bl sub_80522F4 +_08079394: + adds r0, r6, 0 + bl DungeonEntityUpdateStatusSprites +_0807939A: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080793AC: .4byte gUnknown_80FDBF0 + thumb_func_end sub_80792F8 + + thumb_func_start sub_80793B0 +sub_80793B0: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079416 + ldr r0, _080793FC + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, [r4, 0x70] + adds r1, r0, 0 + ldrb r0, [r1, 0x14] + adds r2, r0, 0 + adds r0, r2, r5 + cmp r0, 0xFE + ble _080793DE + movs r0, 0xFF +_080793DE: + strb r0, [r1, 0x14] + lsls r0, 24 + lsrs r0, 24 + cmp r2, r0 + bcs _08079404 + adds r0, r4, 0 + bl sub_8041E60 + ldr r0, _08079400 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079410 + .align 2, 0 +_080793FC: .4byte gAvailablePokemonNames +_08079400: .4byte gUnknown_80FC33C +_08079404: + ldr r0, _0807941C + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079410: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079416: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807941C: .4byte gUnknown_80FC360 + thumb_func_end sub_80793B0 + + thumb_func_start sub_8079420 +sub_8079420: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079486 + ldr r0, _0807946C + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, [r4, 0x70] + adds r1, r0, 0 + ldrb r0, [r1, 0x15] + adds r2, r0, 0 + adds r0, r2, r5 + cmp r0, 0xFE + ble _0807944E + movs r0, 0xFF +_0807944E: + strb r0, [r1, 0x15] + lsls r0, 24 + lsrs r0, 24 + cmp r2, r0 + bcs _08079474 + adds r0, r4, 0 + bl sub_8041E74 + ldr r0, _08079470 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079480 + .align 2, 0 +_0807946C: .4byte gAvailablePokemonNames +_08079470: .4byte gUnknown_80FC388 +_08079474: + ldr r0, _0807948C + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079480: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079486: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807948C: .4byte gUnknown_80FC3B4 + thumb_func_end sub_8079420 + + thumb_func_start sub_8079490 +sub_8079490: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080794F6 + ldr r0, _080794DC + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, [r4, 0x70] + adds r1, r0, 0 + ldrb r0, [r1, 0x16] + adds r2, r0, 0 + adds r0, r2, r5 + cmp r0, 0xFE + ble _080794BE + movs r0, 0xFF +_080794BE: + strb r0, [r1, 0x16] + lsls r0, 24 + lsrs r0, 24 + cmp r2, r0 + bcs _080794E4 + adds r0, r4, 0 + bl sub_8041E84 + ldr r0, _080794E0 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _080794F0 + .align 2, 0 +_080794DC: .4byte gAvailablePokemonNames +_080794E0: .4byte gUnknown_80FC3D8 +_080794E4: + ldr r0, _080794FC + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_080794F0: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_080794F6: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080794FC: .4byte gUnknown_80FC3FC + thumb_func_end sub_8079490 + + thumb_func_start sub_8079500 +sub_8079500: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079566 + ldr r0, _0807954C + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, [r4, 0x70] + adds r1, r0, 0 + ldrb r0, [r1, 0x17] + adds r2, r0, 0 + adds r0, r2, r5 + cmp r0, 0xFE + ble _0807952E + movs r0, 0xFF +_0807952E: + strb r0, [r1, 0x17] + lsls r0, 24 + lsrs r0, 24 + cmp r2, r0 + bcs _08079554 + adds r0, r4, 0 + bl sub_8041E94 + ldr r0, _08079550 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079560 + .align 2, 0 +_0807954C: .4byte gAvailablePokemonNames +_08079550: .4byte gUnknown_80FC428 +_08079554: + ldr r0, _0807956C + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079560: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079566: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807956C: .4byte gUnknown_80FC454 + thumb_func_end sub_8079500 + + thumb_func_start sub_8079570 +sub_8079570: + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + ldr r4, [r5, 0x70] + ldr r0, _080795A0 + movs r2, 0 + bl SetMessageArgument + adds r4, 0xE0 + ldrb r0, [r4] + cmp r0, 0x1 + beq _080795A8 + movs r0, 0x1 + strb r0, [r4] + adds r0, r5, 0 + bl sub_8041EA4 + ldr r0, _080795A4 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80522F4 + b _080795B4 + .align 2, 0 +_080795A0: .4byte gUnknown_202DFE8 +_080795A4: .4byte gUnknown_80FD20C +_080795A8: + ldr r0, _080795C0 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80522F4 +_080795B4: + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080795C0: .4byte gUnknown_80FD22C + thumb_func_end sub_8079570 + + thumb_func_start sub_80795C4 +sub_80795C4: + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + ldr r4, [r5, 0x70] + ldr r0, _080795F4 + movs r2, 0 + bl SetMessageArgument + adds r4, 0xE0 + ldrb r0, [r4] + cmp r0, 0x2 + beq _080795FC + movs r0, 0x2 + strb r0, [r4] + adds r0, r5, 0 + bl sub_8041EB4 + ldr r0, _080795F8 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80522F4 + b _08079608 + .align 2, 0 +_080795F4: .4byte gUnknown_202DFE8 +_080795F8: .4byte gUnknown_80FD254 +_080795FC: + ldr r0, _08079614 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80522F4 +_08079608: + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08079614: .4byte gUnknown_80FD27C + thumb_func_end sub_80795C4 + + thumb_func_start sub_8079618 +sub_8079618: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r0 + adds r7, r1, 0 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + adds r0, r7, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _08079638 + b _08079752 +_08079638: + ldr r5, [r7, 0x70] + ldr r0, _08079660 + adds r1, r7, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r5, 0 + adds r0, 0xC0 + ldrb r0, [r0] + cmp r0, r6 + bne _08079668 + cmp r6, 0xC + bne _08079668 + ldr r0, _08079664 + ldr r2, [r0] + mov r0, r9 + adds r1, r7, 0 + bl sub_80522F4 + b _08079752 + .align 2, 0 +_08079660: .4byte gAvailablePokemonNames +_08079664: .4byte gUnknown_80FC074 +_08079668: + adds r0, r5, 0 + adds r0, 0xC0 + strb r6, [r0] + movs r4, 0 + movs r1, 0x8C + lsls r1, 1 + adds r0, r5, r1 + subs r2, r6, 0x7 + b _0807968A +_0807967A: + adds r4, 0x1 + cmp r4, 0x3 + bgt _08079694 + lsls r0, r4, 3 + movs r1, 0x8C + lsls r1, 1 + adds r0, r1 + adds r0, r5, r0 +_0807968A: + cmp r0, r8 + bne _0807967A + adds r0, r5, 0 + adds r0, 0xC2 + strb r4, [r0] +_08079694: + movs r1, 0xA5 + lsls r1, 1 + adds r0, r5, r1 + movs r1, 0x1 + strb r1, [r0] + movs r4, 0 + lsls r0, r2, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080796B2 + adds r0, r5, 0 + adds r0, 0xFF + strb r1, [r0] + movs r4, 0x1 + b _080796C6 +_080796B2: + adds r0, r6, 0 + subs r0, 0x9 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080796C6 + adds r1, r5, 0 + adds r1, 0xFF + movs r0, 0x2 + strb r0, [r1] +_080796C6: + cmp r6, 0x1 + bne _080796E4 + ldr r1, _08079718 + adds r0, r7, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r2, r5, 0 + adds r2, 0xC1 + movs r1, 0 + strb r0, [r2] + adds r0, r5, 0 + adds r0, 0xA0 + str r1, [r0] +_080796E4: + cmp r6, 0xC + bne _080796FA + ldr r1, _0807971C + adds r0, r7, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xC1 + strb r0, [r1] +_080796FA: + adds r0, r7, 0 + adds r1, r4, 0 + bl sub_8041BD0 + mov r0, r9 + adds r1, r7, 0 + ldr r2, [sp, 0x1C] + bl sub_80522F4 + adds r0, r7, 0 + bl DungeonEntityUpdateStatusSprites + movs r4, 0 + ldr r6, _08079720 + b _0807972C + .align 2, 0 +_08079718: .4byte gUnknown_80F4E9C +_0807971C: .4byte gUnknown_80F4EA0 +_08079720: .4byte 0x0000c7ff +_08079724: + movs r0, 0x53 + bl sub_803E46C + adds r4, 0x1 +_0807972C: + ldr r0, _08079760 + cmp r4, r0 + bgt _08079752 + movs r1, 0x1 + adds r0, r5, 0 + adds r0, 0xFF + ldrb r0, [r0] + cmp r0, 0x1 + bne _0807974E + movs r1, 0xBA + lsls r1, 1 + adds r0, r5, r1 + ldr r0, [r0] + movs r1, 0 + cmp r0, r6 + ble _0807974E + movs r1, 0x1 +_0807974E: + cmp r1, 0 + beq _08079724 +_08079752: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08079760: .4byte 0x0000018f + thumb_func_end sub_8079618 + + thumb_func_start sub_8079764 +sub_8079764: + push {r4,lr} + adds r4, r0, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807979A + ldr r2, [r4, 0x70] + adds r3, r2, 0 + adds r3, 0xC0 + ldrb r0, [r3] + cmp r0, 0x1 + beq _08079794 + cmp r0, 0xC + beq _08079794 + movs r1, 0 + strb r1, [r3] + movs r3, 0xA5 + lsls r3, 1 + adds r0, r2, r3 + strb r1, [r0] + adds r0, r2, 0 + adds r0, 0xFF + strb r1, [r0] +_08079794: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_0807979A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8079764 + + thumb_func_start sub_80797A0 +sub_80797A0: + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r4, r1, 0 + lsls r2, 24 + lsrs r7, r2, 24 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079822 + ldr r6, [r4, 0x70] + ldr r0, _080797E0 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r5, r6, 0 + adds r5, 0xC4 + ldrb r0, [r5] + cmp r0, r7 + bne _080797E8 + ldr r0, _080797E4 + ldr r2, [r0] + mov r0, r8 + adds r1, r4, 0 + bl sub_80522F4 + b _08079822 + .align 2, 0 +_080797E0: .4byte gAvailablePokemonNames +_080797E4: .4byte gUnknown_80FB10C +_080797E8: + adds r0, r4, 0 + bl nullsub_57 + ldrb r0, [r5] + cmp r0, 0x4 + beq _0807980A + cmp r0, 0xA + beq _0807980A + ldr r1, _0807982C + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r6, 0 + adds r1, 0xC5 + strb r0, [r1] +_0807980A: + adds r0, r6, 0 + adds r0, 0xC4 + strb r7, [r0] + ldr r0, _08079830 + ldr r2, [r0] + mov r0, r8 + adds r1, r4, 0 + bl sub_80522F4 + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079822: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807982C: .4byte gUnknown_80F4E98 +_08079830: .4byte gUnknown_80FB0E0 + thumb_func_end sub_80797A0 + + thumb_func_start sub_8079834 +sub_8079834: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080798A6 + ldr r5, [r4, 0x70] + ldr r0, _08079888 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xC4 + ldrb r0, [r1] + cmp r0, 0x2 + beq _08079894 + movs r0, 0x2 + strb r0, [r1] + ldr r1, _0807988C + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xC5 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_58 + ldr r0, _08079890 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _080798A0 + .align 2, 0 +_08079888: .4byte gAvailablePokemonNames +_0807988C: .4byte gUnknown_80F4E88 +_08079890: .4byte gUnknown_80FB048 +_08079894: + ldr r0, _080798AC + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_080798A0: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_080798A6: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080798AC: .4byte gUnknown_80FB074 + thumb_func_end sub_8079834 + + thumb_func_start sub_80798B0 +sub_80798B0: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079922 + ldr r5, [r4, 0x70] + ldr r0, _08079904 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xC4 + ldrb r0, [r1] + cmp r0, 0xE + beq _08079910 + movs r0, 0xE + strb r0, [r1] + ldr r1, _08079908 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xC5 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_59 + ldr r0, _0807990C + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _0807991C + .align 2, 0 +_08079904: .4byte gAvailablePokemonNames +_08079908: .4byte gUnknown_80F4E8C +_0807990C: .4byte gUnknown_80FB09C +_08079910: + ldr r0, _08079928 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_0807991C: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079922: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08079928: .4byte gUnknown_80FB0C4 + thumb_func_end sub_80798B0 + + thumb_func_start sub_807992C +sub_807992C: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807999E + ldr r5, [r4, 0x70] + ldr r0, _08079980 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xC4 + ldrb r0, [r1] + cmp r0, 0x6 + beq _0807998C + movs r0, 0x6 + strb r0, [r1] + ldr r1, _08079984 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xC5 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8041B34 + ldr r0, _08079988 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079998 + .align 2, 0 +_08079980: .4byte gAvailablePokemonNames +_08079984: .4byte gUnknown_80F4EB4 +_08079988: .4byte gUnknown_80FAE1C +_0807998C: + ldr r0, _080799A4 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079998: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_0807999E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080799A4: .4byte gUnknown_80FAE3C + thumb_func_end sub_807992C + + thumb_func_start sub_80799A8 +sub_80799A8: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079A1A + ldr r5, [r4, 0x70] + ldr r0, _080799FC + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xC4 + ldrb r0, [r1] + cmp r0, 0x5 + beq _08079A08 + movs r0, 0x5 + strb r0, [r1] + ldr r1, _08079A00 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xC5 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_60 + ldr r0, _08079A04 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079A14 + .align 2, 0 +_080799FC: .4byte gAvailablePokemonNames +_08079A00: .4byte gUnknown_80F4E90 +_08079A04: .4byte gUnknown_80FAF5C +_08079A08: + ldr r0, _08079A20 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079A14: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079A1A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08079A20: .4byte gUnknown_80FAF8C + thumb_func_end sub_80799A8 + + thumb_func_start sub_8079A24 +sub_8079A24: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079A96 + ldr r5, [r4, 0x70] + ldr r0, _08079A78 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xC4 + ldrb r0, [r1] + cmp r0, 0x3 + beq _08079A84 + movs r0, 0x3 + strb r0, [r1] + ldr r1, _08079A7C + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xC5 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_61 + ldr r0, _08079A80 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079A90 + .align 2, 0 +_08079A78: .4byte gAvailablePokemonNames +_08079A7C: .4byte gUnknown_80F4E84 +_08079A80: .4byte gUnknown_80FB130 +_08079A84: + ldr r0, _08079A9C + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079A90: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079A96: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08079A9C: .4byte gUnknown_80FB160 + thumb_func_end sub_8079A24 + + thumb_func_start sub_8079AA0 +sub_8079AA0: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079B12 + ldr r5, [r4, 0x70] + ldr r0, _08079AF4 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xC4 + ldrb r0, [r1] + cmp r0, 0x1 + beq _08079B00 + movs r0, 0x1 + strb r0, [r1] + ldr r1, _08079AF8 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xC5 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_62 + ldr r0, _08079AFC + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079B0C + .align 2, 0 +_08079AF4: .4byte gAvailablePokemonNames +_08079AF8: .4byte gUnknown_80F4E80 +_08079AFC: .4byte gUnknown_80FB17C +_08079B00: + ldr r0, _08079B18 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079B0C: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079B12: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08079B18: .4byte gUnknown_80FB1A8 + thumb_func_end sub_8079AA0 + + thumb_func_start sub_8079B1C +sub_8079B1C: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079B98 + adds r0, r4, 0 + bl nullsub_63 + ldr r5, [r4, 0x70] + adds r1, r5, 0 + adds r1, 0xC4 + ldrb r0, [r1] + cmp r0, 0x7 + beq _08079B7C + movs r0, 0x7 + strb r0, [r1] + ldr r1, _08079B70 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xC5 + strb r0, [r1] + ldr r0, _08079B74 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _08079B78 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079B92 + .align 2, 0 +_08079B70: .4byte gUnknown_80F4ED4 +_08079B74: .4byte gAvailablePokemonNames +_08079B78: .4byte gUnknown_80FB9B0 +_08079B7C: + ldr r0, _08079BA0 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _08079BA4 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079B92: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079B98: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08079BA0: .4byte gAvailablePokemonNames +_08079BA4: .4byte gUnknown_80FB9D8 + thumb_func_end sub_8079B1C + + thumb_func_start sub_8079BA8 +sub_8079BA8: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079C1A + ldr r5, [r4, 0x70] + ldr r0, _08079BFC + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xC4 + ldrb r0, [r1] + cmp r0, 0x8 + beq _08079C08 + movs r0, 0x8 + strb r0, [r1] + ldr r1, _08079C00 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xC5 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_64 + ldr r0, _08079C04 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079C14 + .align 2, 0 +_08079BFC: .4byte gAvailablePokemonNames +_08079C00: .4byte gUnknown_80F4EE8 +_08079C04: .4byte gUnknown_80FBAC0 +_08079C08: + ldr r0, _08079C20 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079C14: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079C1A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08079C20: .4byte gUnknown_80FBAE4 + thumb_func_end sub_8079BA8 + + thumb_func_start sub_8079C24 +sub_8079C24: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079C96 + ldr r5, [r4, 0x70] + ldr r0, _08079C78 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xC4 + ldrb r0, [r1] + cmp r0, 0x9 + beq _08079C84 + movs r0, 0x9 + strb r0, [r1] + ldr r1, _08079C7C + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xC5 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_65 + ldr r0, _08079C80 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079C90 + .align 2, 0 +_08079C78: .4byte gAvailablePokemonNames +_08079C7C: .4byte gUnknown_80F4EF8 +_08079C80: .4byte gUnknown_80FBBF0 +_08079C84: + ldr r0, _08079C9C + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079C90: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079C96: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08079C9C: .4byte gUnknown_80FBC14 + thumb_func_end sub_8079C24 + + thumb_func_start sub_8079CA0 +sub_8079CA0: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079D12 + ldr r5, [r4, 0x70] + ldr r0, _08079CF4 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xC4 + ldrb r0, [r1] + cmp r0, 0xB + beq _08079D00 + movs r0, 0xB + strb r0, [r1] + ldr r1, _08079CF8 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xC5 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_66 + ldr r0, _08079CFC + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079D0C + .align 2, 0 +_08079CF4: .4byte gAvailablePokemonNames +_08079CF8: .4byte gUnknown_80F4F18 +_08079CFC: .4byte gUnknown_80FBC38 +_08079D00: + ldr r0, _08079D18 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079D0C: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079D12: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08079D18: .4byte gUnknown_80FBC5C + thumb_func_end sub_8079CA0 + + thumb_func_start sub_8079D1C +sub_8079D1C: + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079DAE + ldr r6, [r4, 0x70] + adds r0, r4, 0 + movs r1, 0x25 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _08079D50 + ldr r0, _08079D4C + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079DAE + .align 2, 0 +_08079D4C: .4byte gPtrForecastPreventsConversion2Message +_08079D50: + ldr r0, _08079D90 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r6, 0 + adds r1, 0xC4 + ldrb r0, [r1] + cmp r0, 0xC + beq _08079D9C + movs r0, 0xC + strb r0, [r1] + ldr r1, _08079D94 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r6, 0 + adds r1, 0xC5 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_67 + ldr r0, _08079D98 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079DA8 + .align 2, 0 +_08079D90: .4byte gAvailablePokemonNames +_08079D94: .4byte gUnknown_80F4F20 +_08079D98: .4byte gUnknown_80FBC7C +_08079D9C: + ldr r0, _08079DB4 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079DA8: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079DAE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08079DB4: .4byte gUnknown_80FBCA4 + thumb_func_end sub_8079D1C + + thumb_func_start sub_8079DB8 +sub_8079DB8: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079E2A + ldr r5, [r4, 0x70] + ldr r0, _08079E0C + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r1, r5, 0 + adds r1, 0xC4 + ldrb r0, [r1] + cmp r0, 0xD + beq _08079E18 + movs r0, 0xD + strb r0, [r1] + ldr r1, _08079E10 + adds r0, r4, 0 + movs r2, 0 + bl sub_808417C + adds r0, 0x1 + adds r1, r5, 0 + adds r1, 0xC5 + strb r0, [r1] + adds r0, r4, 0 + bl nullsub_68 + ldr r0, _08079E14 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _08079E24 + .align 2, 0 +_08079E0C: .4byte gAvailablePokemonNames +_08079E10: .4byte gUnknown_80F4F24 +_08079E14: .4byte gUnknown_80FBCC8 +_08079E18: + ldr r0, _08079E30 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079E24: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_08079E2A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08079E30: .4byte gUnknown_80FBCF0 + thumb_func_end sub_8079DB8 + + thumb_func_start sub_8079E34 +sub_8079E34: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r8, r0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + movs r6, 0 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08079F0E + ldr r0, [r5, 0x70] + mov r12, r0 + movs r4, 0 + movs r7, 0xA +_08079E5C: + lsls r2, r4, 1 + mov r0, r12 + adds r0, 0x1C + adds r1, r0, r2 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0xA + beq _08079E70 + strh r7, [r1] + movs r6, 0x1 +_08079E70: + mov r0, r12 + adds r0, 0x20 + adds r1, r0, r2 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0xA + beq _08079E82 + strh r7, [r1] + movs r6, 0x1 +_08079E82: + mov r0, r12 + adds r0, 0x24 + adds r1, r0, r2 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0xA + beq _08079E94 + strh r7, [r1] + movs r6, 0x1 +_08079E94: + lsls r3, r4, 2 + mov r0, r12 + adds r0, 0x2C + adds r1, r0, r3 + ldr r0, [r1] + movs r2, 0x80 + lsls r2, 1 + cmp r0, r2 + beq _08079EAA + str r2, [r1] + movs r6, 0x1 +_08079EAA: + mov r0, r12 + adds r0, 0x34 + adds r1, r0, r3 + ldr r0, [r1] + cmp r0, r2 + beq _08079EBA + str r2, [r1] + movs r6, 0x1 +_08079EBA: + adds r4, 0x1 + cmp r4, 0x1 + ble _08079E5C + cmp r6, 0 + beq _08079ECC + adds r0, r5, 0 + bl sub_80420C8 + b _08079ED8 +_08079ECC: + mov r3, r9 + cmp r3, 0 + beq _08079ED8 + adds r0, r5, 0 + bl sub_80420C8 +_08079ED8: + ldr r0, _08079EF4 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + cmp r6, 0 + beq _08079EFC + ldr r0, _08079EF8 + ldr r2, [r0] + mov r0, r8 + adds r1, r5, 0 + bl sub_80522F4 + b _08079F08 + .align 2, 0 +_08079EF4: .4byte gAvailablePokemonNames +_08079EF8: .4byte gUnknown_80FBD18 +_08079EFC: + ldr r0, _08079F1C + ldr r2, [r0] + mov r0, r8 + adds r1, r5, 0 + bl sub_80522F4 +_08079F08: + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_08079F0E: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08079F1C: .4byte gUnknown_80FBD3C + thumb_func_end sub_8079E34 + + thumb_func_start sub_8079F20 +sub_8079F20: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r5, r0, 0 + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp] + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + movs r0, 0 + mov r8, r0 + mov r9, r0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _08079F50 + b _0807A0B8 +_08079F50: + ldr r7, [r4, 0x70] + adds r0, r4, 0 + bl HasNegativeStatus + lsls r0, 24 + cmp r0, 0 + beq _08079FF2 + movs r2, 0x1 + mov r8, r2 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0 + bl sub_807A124 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _08079F7C + b _0807A0B8 +_08079F7C: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_807A290 + adds r0, r5, 0 + adds r1, r4, 0 + bl SendImmobilizeEndMessage + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_807A400 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0 + bl sub_807A5D0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_807A6C8 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_807A734 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_807A888 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_807A924 + adds r1, r7, 0 + adds r1, 0xFD + ldrb r0, [r1] + cmp r0, 0 + beq _08079FD8 + mov r0, r9 + strb r0, [r1] + ldr r0, _0807A08C + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079FD8: + adds r1, r7, 0 + adds r1, 0xF5 + ldrb r0, [r1] + cmp r0, 0 + beq _08079FF2 + mov r2, r9 + strb r2, [r1] + ldr r0, _0807A090 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_08079FF2: + adds r0, r4, 0 + bl GetMovementSpeed + adds r6, r0, 0 + movs r1, 0 + movs r3, 0x4 + ldr r2, _0807A094 + adds r0, r7, r2 +_0807A002: + strb r1, [r0] + subs r0, 0x1 + subs r3, 0x1 + cmp r3, 0 + bge _0807A002 + adds r0, r4, 0 + bl GetMovementSpeed + cmp r6, r0 + beq _0807A032 + movs r0, 0x1 + mov r8, r0 + ldr r1, _0807A098 + movs r2, 0x82 + lsls r2, 1 + adds r0, r7, r2 + ldr r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_0807A032: + movs r6, 0x1 + movs r0, 0x8C + lsls r0, 1 + adds r2, r7, r0 + movs r7, 0xFE + movs r3, 0x3 +_0807A03E: + ldrb r1, [r2] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0807A05E + ldrb r1, [r2, 0x1] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0807A05E + movs r0, 0x1 + mov r8, r0 + mov r9, r0 + adds r0, r7, 0 + ands r0, r1 + strb r0, [r2, 0x1] +_0807A05E: + adds r2, 0x8 + subs r3, 0x1 + cmp r3, 0 + bge _0807A03E + mov r2, r8 + cmp r2, 0 + beq _0807A0A0 + ldr r0, [sp] + cmp r0, 0 + beq _0807A078 + adds r0, r4, 0 + bl sub_80420C8 +_0807A078: + mov r2, r9 + cmp r2, 0 + beq _0807A0B2 + ldr r0, _0807A09C + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _0807A0B2 + .align 2, 0 +_0807A08C: .4byte gUnknown_8100594 +_0807A090: .4byte gPtrExposedWoreOffMessage +_0807A094: .4byte 0x00000111 +_0807A098: .4byte gUnknown_80FA124 +_0807A09C: .4byte gPtrSealedMoveReleasedMessage +_0807A0A0: + mov r0, r10 + cmp r0, 0 + bne _0807A0B2 + ldr r0, _0807A0C8 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_0807A0B2: + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_0807A0B8: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807A0C8: .4byte gUnknown_81004E8 + thumb_func_end sub_8079F20 + + thumb_func_start sub_807A0CC +sub_807A0CC: + push {r4-r7,lr} + adds r5, r1, 0 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807A11E + ldr r4, [r5, 0x70] + adds r0, r4, 0 + movs r1, 0 + bl sub_806BFC0 + adds r1, r4, 0 + adds r1, 0xFD + movs r0, 0 + strb r0, [r1] + subs r1, 0x8 + strb r0, [r1] + movs r7, 0x1 + movs r6, 0xFE + movs r0, 0x8C + lsls r0, 1 + adds r2, r4, r0 + movs r3, 0x3 +_0807A0FE: + ldrb r1, [r2] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _0807A110 + ldrb r1, [r2, 0x1] + adds r0, r6, 0 + ands r0, r1 + strb r0, [r2, 0x1] +_0807A110: + adds r2, 0x8 + subs r3, 0x1 + cmp r3, 0 + bge _0807A0FE + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_0807A11E: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_807A0CC + + thumb_func_start sub_807A124 +sub_807A124: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r6, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r4, r2, 24 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + movs r0, 0 + mov r9, r0 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0807A14E + b _0807A27C +_0807A14E: + ldr r7, [r5, 0x70] + ldr r0, _0807A170 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r7, 0 + adds r0, 0xA8 + ldrb r0, [r0] + cmp r0, 0x6 + bls _0807A166 + b _0807A260 +_0807A166: + lsls r0, 2 + ldr r1, _0807A174 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807A170: .4byte gAvailablePokemonNames +_0807A174: .4byte _0807A178 + .align 2, 0 +_0807A178: + .4byte _0807A260 + .4byte _0807A194 + .4byte _0807A1A0 + .4byte _0807A1B4 + .4byte _0807A228 + .4byte _0807A1E8 + .4byte _0807A260 +_0807A194: + movs r1, 0x1 + mov r9, r1 + ldr r0, _0807A19C + b _0807A1A2 + .align 2, 0 +_0807A19C: .4byte gUnknown_80FA6E8 +_0807A1A0: + ldr r0, _0807A1B0 +_0807A1A2: + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80522F4 + b _0807A260 + .align 2, 0 +_0807A1B0: .4byte gUnknown_80FA708 +_0807A1B4: + movs r2, 0x1 + mov r9, r2 + ldr r0, _0807A1DC + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80522F4 + mov r0, r8 + cmp r0, 0 + beq _0807A260 + ldr r0, _0807A1E0 + movs r2, 0 + ldrsh r1, [r0, r2] + ldr r3, _0807A1E4 + adds r0, r5, 0 + movs r2, 0x8 + bl sub_806F324 + b _0807A260 + .align 2, 0 +_0807A1DC: .4byte gUnknown_80FA70C +_0807A1E0: .4byte gUnknown_80F4F78 +_0807A1E4: .4byte 0x0000020f +_0807A1E8: + movs r0, 0x1 + mov r9, r0 + ldr r0, _0807A220 + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80522F4 + ldr r0, _0807A224 + movs r1, 0 + ldrsh r2, [r0, r1] + movs r4, 0 + str r4, [sp] + adds r0, r6, 0 + adds r1, r5, 0 + movs r3, 0 + bl HealTargetHP + adds r0, r7, 0 + adds r0, 0xA8 + strb r4, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8079F20 + b _0807A260 + .align 2, 0 +_0807A220: .4byte gUnknown_80FA710 +_0807A224: .4byte gUnknown_80F4F7A +_0807A228: + cmp r4, 0 + beq _0807A254 + adds r1, r7, 0 + adds r1, 0xA8 + movs r0, 0 + strb r0, [r1] + ldr r1, _0807A250 + adds r0, r5, 0 + movs r2, 0x1 + bl sub_808417C + adds r2, r0, 0 + adds r2, 0x1 + adds r0, r6, 0 + adds r1, r5, 0 + movs r3, 0x1 + bl sub_8075C58 + b _0807A27C + .align 2, 0 +_0807A250: .4byte gUnknown_80F4F2C +_0807A254: + ldr r0, _0807A28C + ldr r2, [r0] + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80522F4 +_0807A260: + adds r1, r7, 0 + adds r1, 0xA8 + movs r0, 0 + strb r0, [r1] + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites + mov r2, r9 + cmp r2, 0 + beq _0807A27C + adds r0, r5, 0 + movs r1, 0x8 + bl sub_806CE68 +_0807A27C: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807A28C: .4byte gUnknown_80FA734 + thumb_func_end sub_807A124 + + thumb_func_start sub_807A290 +sub_807A290: + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807A31A + ldr r6, [r4, 0x70] + ldr r0, _0807A2C4 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r6, 0 + adds r0, 0xAC + ldrb r0, [r0] + cmp r0, 0x5 + bhi _0807A30C + lsls r0, 2 + ldr r1, _0807A2C8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807A2C4: .4byte gAvailablePokemonNames +_0807A2C8: .4byte _0807A2CC + .align 2, 0 +_0807A2CC: + .4byte _0807A30C + .4byte _0807A300 + .4byte _0807A2E4 + .4byte _0807A2E4 + .4byte _0807A2EC + .4byte _0807A30C +_0807A2E4: + ldr r0, _0807A2E8 + b _0807A2EE + .align 2, 0 +_0807A2E8: .4byte gUnknown_80FA8A8 +_0807A2EC: + ldr r0, _0807A2FC +_0807A2EE: + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _0807A30C + .align 2, 0 +_0807A2FC: .4byte gUnknown_80FA868 +_0807A300: + ldr r0, _0807A320 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_0807A30C: + adds r1, r6, 0 + adds r1, 0xAC + movs r0, 0 + strb r0, [r1] + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_0807A31A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807A320: .4byte gUnknown_80FA888 + thumb_func_end sub_807A290 + + thumb_func_start SendImmobilizeEndMessage +SendImmobilizeEndMessage: + push {r4-r7,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r7, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807A3F4 + ldr r6, [r4, 0x70] + ldr r0, _0807A358 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r6, 0 + adds r0, 0xB0 + ldrb r0, [r0] + cmp r0, 0x8 + bhi _0807A3DC + lsls r0, 2 + ldr r1, _0807A35C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807A358: .4byte gAvailablePokemonNames +_0807A35C: .4byte _0807A360 + .align 2, 0 +_0807A360: + .4byte _0807A3DC + .4byte _0807A384 + .4byte _0807A3A0 + .4byte _0807A3B4 + .4byte _0807A3B4 + .4byte _0807A3A0 + .4byte _0807A3D0 + .4byte _0807A398 + .4byte _0807A3DC +_0807A384: + ldr r0, _0807A394 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + movs r7, 0x1 + b _0807A3DC + .align 2, 0 +_0807A394: .4byte gUnknown_80FA8BC +_0807A398: + ldr r0, _0807A39C + b _0807A3A2 + .align 2, 0 +_0807A39C: .4byte gUnknown_80FA820 +_0807A3A0: + ldr r0, _0807A3B0 +_0807A3A2: + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + b _0807A3DC + .align 2, 0 +_0807A3B0: .4byte gUnknown_80FA824 +_0807A3B4: + ldr r0, _0807A3CC + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + adds r0, r6, 0 + adds r0, 0x9C + ldr r0, [r0] + bl sub_8076CB4 + b _0807A3DC + .align 2, 0 +_0807A3CC: .4byte gUnknown_80FA81C +_0807A3D0: + ldr r0, _0807A3FC + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 +_0807A3DC: + adds r1, r6, 0 + adds r1, 0xB0 + movs r0, 0 + strb r0, [r1] + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites + cmp r7, 0 + beq _0807A3F4 + adds r0, r4, 0 + bl sub_8042A74 +_0807A3F4: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807A3FC: .4byte gUnknown_80FABF8 + thumb_func_end SendImmobilizeEndMessage + + thumb_func_start sub_807A400 +sub_807A400: + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807A4BC + ldr r6, [r5, 0x70] + ldr r0, _0807A434 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r6, 0 + adds r0, 0xBC + ldrb r0, [r0] + cmp r0, 0x8 + bhi _0807A4A8 + lsls r0, 2 + ldr r1, _0807A438 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807A434: .4byte gAvailablePokemonNames +_0807A438: .4byte _0807A43C + .align 2, 0 +_0807A43C: + .4byte _0807A4A8 + .4byte _0807A49C + .4byte _0807A460 + .4byte _0807A478 + .4byte _0807A468 + .4byte _0807A470 + .4byte _0807A488 + .4byte _0807A480 + .4byte _0807A4A8 +_0807A460: + ldr r0, _0807A464 + b _0807A48A + .align 2, 0 +_0807A464: .4byte gUnknown_80FA800 +_0807A468: + ldr r0, _0807A46C + b _0807A48A + .align 2, 0 +_0807A46C: .4byte gUnknown_80FA97C +_0807A470: + ldr r0, _0807A474 + b _0807A48A + .align 2, 0 +_0807A474: .4byte gUnknown_80FA9DC +_0807A478: + ldr r0, _0807A47C + b _0807A48A + .align 2, 0 +_0807A47C: .4byte gUnknown_80FAC38 +_0807A480: + ldr r0, _0807A484 + b _0807A48A + .align 2, 0 +_0807A484: .4byte gUnknown_80FAB90 +_0807A488: + ldr r0, _0807A498 +_0807A48A: + ldr r2, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80522F4 + b _0807A4A8 + .align 2, 0 +_0807A498: .4byte gUnknown_80FAAAC +_0807A49C: + ldr r0, _0807A4C4 + ldr r2, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80522F4 +_0807A4A8: + adds r1, r6, 0 + adds r1, 0xBC + movs r0, 0 + strb r0, [r1] + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites + adds r0, r5, 0 + bl GetMovementSpeed +_0807A4BC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807A4C4: .4byte gUnknown_80FAC18 + thumb_func_end sub_807A400 + + thumb_func_start sub_807A4C8 +sub_807A4C8: + push {r4,r5,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0807A4DA + b _0807A5C4 +_0807A4DA: + ldr r5, [r4, 0x70] + ldr r0, _0807A4FC + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r5, 0 + adds r0, 0xC4 + ldrb r0, [r0] + cmp r0, 0xF + bhi _0807A5B6 + lsls r0, 2 + ldr r1, _0807A500 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807A4FC: .4byte gAvailablePokemonNames +_0807A500: .4byte _0807A504 + .align 2, 0 +_0807A504: + .4byte _0807A5B6 + .4byte _0807A544 + .4byte _0807A54C + .4byte _0807A554 + .4byte _0807A55C + .4byte _0807A564 + .4byte _0807A56C + .4byte _0807A574 + .4byte _0807A57C + .4byte _0807A584 + .4byte _0807A55C + .4byte _0807A58C + .4byte _0807A594 + .4byte _0807A59C + .4byte _0807A5AC + .4byte _0807A5B6 +_0807A544: + ldr r0, _0807A548 + b _0807A59E + .align 2, 0 +_0807A548: .4byte gUnknown_80FA638 +_0807A54C: + ldr r0, _0807A550 + b _0807A59E + .align 2, 0 +_0807A550: .4byte gUnknown_80FA69C +_0807A554: + ldr r0, _0807A558 + b _0807A59E + .align 2, 0 +_0807A558: .4byte gUnknown_80FA658 +_0807A55C: + ldr r0, _0807A560 + b _0807A59E + .align 2, 0 +_0807A560: .4byte gUnknown_80FA67C +_0807A564: + ldr r0, _0807A568 + b _0807A59E + .align 2, 0 +_0807A568: .4byte gUnknown_80FA6BC +_0807A56C: + ldr r0, _0807A570 + b _0807A59E + .align 2, 0 +_0807A570: .4byte gUnknown_80FA6D4 +_0807A574: + ldr r0, _0807A578 + b _0807A59E + .align 2, 0 +_0807A578: .4byte gUnknown_80FA9C0 +_0807A57C: + ldr r0, _0807A580 + b _0807A59E + .align 2, 0 +_0807A580: .4byte gUnknown_80FAA68 +_0807A584: + ldr r0, _0807A588 + b _0807A59E + .align 2, 0 +_0807A588: .4byte gUnknown_80FAAC8 +_0807A58C: + ldr r0, _0807A590 + b _0807A59E + .align 2, 0 +_0807A590: .4byte gUnknown_80FAAE8 +_0807A594: + ldr r0, _0807A598 + b _0807A59E + .align 2, 0 +_0807A598: .4byte gUnknown_80FAB08 +_0807A59C: + ldr r0, _0807A5A8 +_0807A59E: + ldr r1, [r0] + adds r0, r4, 0 + bl SendMessage + b _0807A5B6 + .align 2, 0 +_0807A5A8: .4byte gUnknown_80FAB28 +_0807A5AC: + ldr r0, _0807A5CC + ldr r1, [r0] + adds r0, r4, 0 + bl SendMessage +_0807A5B6: + adds r1, r5, 0 + adds r1, 0xC4 + movs r0, 0 + strb r0, [r1] + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_0807A5C4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807A5CC: .4byte gUnknown_80FAB40 + thumb_func_end sub_807A4C8 + + thumb_func_start sub_807A5D0 +sub_807A5D0: + push {r4-r7,lr} + adds r5, r1, 0 + lsls r2, 24 + lsrs r6, r2, 24 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807A6B2 + ldr r7, [r5, 0x70] + ldr r0, _0807A604 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r7, 0 + adds r0, 0xC8 + ldrb r0, [r0] + cmp r0, 0x4 + bhi _0807A6A4 + lsls r0, 2 + ldr r1, _0807A608 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807A604: .4byte gAvailablePokemonNames +_0807A608: .4byte _0807A60C + .align 2, 0 +_0807A60C: + .4byte _0807A6A4 + .4byte _0807A620 + .4byte _0807A668 + .4byte _0807A634 + .4byte _0807A6A4 +_0807A620: + cmp r6, 0x1 + beq _0807A6A4 + ldr r0, _0807A630 + ldr r1, [r0] + adds r0, r5, 0 + bl SendMessage + b _0807A6A4 + .align 2, 0 +_0807A630: .4byte gUnknown_80FA7BC +_0807A634: + cmp r6, 0x3 + beq _0807A642 + ldr r0, _0807A658 + ldr r1, [r0] + adds r0, r5, 0 + bl SendMessage +_0807A642: + ldr r0, _0807A65C + ldr r0, [r0] + ldr r2, _0807A660 + adds r1, r0, r2 + movs r2, 0 + str r2, [r1] + ldr r1, _0807A664 + adds r0, r1 + str r2, [r0] + b _0807A6A4 + .align 2, 0 +_0807A658: .4byte gUnknown_80FA7DC +_0807A65C: .4byte gDungeonGlobalData +_0807A660: .4byte 0x00017b30 +_0807A664: .4byte 0x00017b3c +_0807A668: + adds r0, r7, 0 + adds r0, 0xC8 + movs r4, 0 + strb r4, [r0] + adds r0, r5, 0 + bl sub_806CEBC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_806CCB4 + ldr r0, _0807A6B8 + ldr r0, [r0] + ldr r2, _0807A6BC + adds r0, r2 + strb r4, [r0] + cmp r6, 0x2 + beq _0807A6A4 + ldr r0, _0807A6C0 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _0807A6C4 + ldr r1, [r0] + adds r0, r5, 0 + bl SendMessage +_0807A6A4: + adds r1, r7, 0 + adds r1, 0xC8 + movs r0, 0 + strb r0, [r1] + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_0807A6B2: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807A6B8: .4byte gDungeonGlobalData +_0807A6BC: .4byte 0x000037fc +_0807A6C0: .4byte gAvailablePokemonNames +_0807A6C4: .4byte gUnknown_80FA9A0 + thumb_func_end sub_807A5D0 + + thumb_func_start sub_807A6C8 +sub_807A6C8: + push {r4,r5,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807A72A + ldr r5, [r4, 0x70] + ldr r0, _0807A6F8 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r5, 0 + adds r0, 0xD0 + ldrb r0, [r0] + cmp r0, 0x1 + beq _0807A6FC + cmp r0, 0x1 + ble _0807A716 + cmp r0, 0x2 + beq _0807A70C + b _0807A716 + .align 2, 0 +_0807A6F8: .4byte gAvailablePokemonNames +_0807A6FC: + ldr r0, _0807A708 + ldr r1, [r0] + adds r0, r4, 0 + bl SendMessage + b _0807A716 + .align 2, 0 +_0807A708: .4byte gUnknown_80FA79C +_0807A70C: + ldr r0, _0807A730 + ldr r1, [r0] + adds r0, r4, 0 + bl SendMessage +_0807A716: + adds r1, r5, 0 + adds r1, 0xD0 + movs r0, 0 + strb r0, [r1] + adds r1, 0x8 + movs r0, 0xFF + strb r0, [r1] + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_0807A72A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807A730: .4byte gUnknown_80FAA8C + thumb_func_end sub_807A6C8 + + thumb_func_start sub_807A734 +sub_807A734: + push {r4,r5,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807A7BC + ldr r5, [r4, 0x70] + ldr r0, _0807A764 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r5, 0 + adds r0, 0xDC + ldrb r0, [r0] + cmp r0, 0x5 + bhi _0807A7AE + lsls r0, 2 + ldr r1, _0807A768 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807A764: .4byte gAvailablePokemonNames +_0807A768: .4byte _0807A76C + .align 2, 0 +_0807A76C: + .4byte _0807A7AE + .4byte _0807A784 + .4byte _0807A78C + .4byte _0807A794 + .4byte _0807A7A4 + .4byte _0807A7AE +_0807A784: + ldr r0, _0807A788 + b _0807A796 + .align 2, 0 +_0807A788: .4byte gUnknown_80FA8E0 +_0807A78C: + ldr r0, _0807A790 + b _0807A796 + .align 2, 0 +_0807A790: .4byte gUnknown_80FA90C +_0807A794: + ldr r0, _0807A7A0 +_0807A796: + ldr r1, [r0] + adds r0, r4, 0 + bl SendMessage + b _0807A7AE + .align 2, 0 +_0807A7A0: .4byte gUnknown_80FA934 +_0807A7A4: + ldr r0, _0807A7C4 + ldr r1, [r0] + adds r0, r4, 0 + bl SendMessage +_0807A7AE: + adds r1, r5, 0 + adds r1, 0xDC + movs r0, 0 + strb r0, [r1] + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_0807A7BC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807A7C4: .4byte gUnknown_80FA95C + thumb_func_end sub_807A734 + + thumb_func_start sub_807A7C8 +sub_807A7C8: + push {r4-r6,lr} + adds r4, r1, 0 + movs r6, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807A87E + ldr r5, [r4, 0x70] + ldr r0, _0807A7FC + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r5, 0 + adds r0, 0xE4 + ldrb r0, [r0] + cmp r0, 0x4 + bhi _0807A866 + lsls r0, 2 + ldr r1, _0807A800 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807A7FC: .4byte gAvailablePokemonNames +_0807A800: .4byte _0807A804 + .align 2, 0 +_0807A804: + .4byte _0807A866 + .4byte _0807A818 + .4byte _0807A834 + .4byte _0807A824 + .4byte _0807A866 +_0807A818: + movs r6, 0x1 + ldr r0, _0807A820 + b _0807A826 + .align 2, 0 +_0807A820: .4byte gUnknown_80FA9F4 +_0807A824: + ldr r0, _0807A830 +_0807A826: + ldr r1, [r0] + adds r0, r4, 0 + bl SendMessage + b _0807A866 + .align 2, 0 +_0807A830: .4byte gUnknown_80FABBC +_0807A834: + movs r0, 0x2 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl sub_8069F54 + strh r0, [r5, 0x4] + movs r1, 0x4 + ldrsh r0, [r5, r1] + bl sub_80687D0 + str r0, [r4, 0x64] + adds r0, r4, 0 + bl sub_806CEBC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_806CCB4 + ldr r0, _0807A884 + ldr r1, [r0] + adds r0, r4, 0 + bl SendMessage +_0807A866: + adds r1, r5, 0 + adds r1, 0xE4 + movs r0, 0 + strb r0, [r1] + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites + cmp r6, 0 + beq _0807A87E + movs r0, 0x1 + bl sub_807EC28 +_0807A87E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0807A884: .4byte gUnknown_80FAB6C + thumb_func_end sub_807A7C8 + + thumb_func_start sub_807A888 +sub_807A888: + push {r4,r5,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807A918 + ldr r5, [r4, 0x70] + ldr r0, _0807A8B8 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + adds r0, r5, 0 + adds r0, 0xE8 + ldrb r0, [r0] + cmp r0, 0x4 + bhi _0807A8F6 + lsls r0, 2 + ldr r1, _0807A8BC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807A8B8: .4byte gAvailablePokemonNames +_0807A8BC: .4byte _0807A8C0 + .align 2, 0 +_0807A8C0: + .4byte _0807A8F6 + .4byte _0807A8D4 + .4byte _0807A8DC + .4byte _0807A8EC + .4byte _0807A8F6 +_0807A8D4: + ldr r0, _0807A8D8 + b _0807A8DE + .align 2, 0 +_0807A8D8: .4byte gUnknown_80FAA0C +_0807A8DC: + ldr r0, _0807A8E8 +_0807A8DE: + ldr r1, [r0] + adds r0, r4, 0 + bl SendMessage + b _0807A8F6 + .align 2, 0 +_0807A8E8: .4byte gUnknown_80FAA2C +_0807A8EC: + ldr r0, _0807A920 + ldr r1, [r0] + adds r0, r4, 0 + bl SendMessage +_0807A8F6: + adds r0, r5, 0 + adds r0, 0xE8 + movs r1, 0 + strb r1, [r0] + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites + ldrb r0, [r5, 0x7] + cmp r0, 0 + beq _0807A918 + movs r0, 0x31 + bl sub_803E46C + bl sub_8049ED4 + bl sub_8040A84 +_0807A918: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807A920: .4byte gUnknown_80FAA48 + thumb_func_end sub_807A888 + + thumb_func_start sub_807A924 +sub_807A924: + push {r4,r5,lr} + adds r5, r1, 0 + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807A95C + ldr r4, [r5, 0x70] + ldr r0, _0807A964 + adds r1, r5, 0 + movs r2, 0 + bl SetMessageArgument + adds r4, 0xEC + ldrb r0, [r4] + cmp r0, 0x1 + bne _0807A952 + ldr r0, _0807A968 + ldr r1, [r0] + adds r0, r5, 0 + bl SendMessage +_0807A952: + movs r0, 0 + strb r0, [r4] + adds r0, r5, 0 + bl DungeonEntityUpdateStatusSprites +_0807A95C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807A964: .4byte gAvailablePokemonNames +_0807A968: .4byte gUnknown_80FABC0 + thumb_func_end sub_807A924 + + thumb_func_start sub_807A96C +sub_807A96C: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + ldr r0, [r4, 0x70] + adds r5, r0, 0 + movs r2, 0 + adds r0, 0xB0 + ldrb r0, [r0] + cmp r0, 0x6 + bne _0807A988 + adds r0, r6, 0 + bl SendImmobilizeEndMessage + movs r2, 0x1 +_0807A988: + adds r0, r5, 0 + adds r0, 0xA8 + ldrh r1, [r0] + ldr r0, _0807A9AC + cmp r1, r0 + bne _0807A9A2 + adds r0, r6, 0 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x1 + bl sub_807A124 + movs r2, 0x1 +_0807A9A2: + adds r0, r2, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0807A9AC: .4byte 0x00007f01 + thumb_func_end sub_807A96C + + thumb_func_start sub_807A9B0 +sub_807A9B0: + push {r4,lr} + adds r4, r0, 0 + ldr r0, [r4, 0x70] + adds r1, r0, 0 + adds r1, 0xA8 + movs r2, 0 + strb r2, [r1] + adds r0, 0xA9 + strb r2, [r0] + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_806A898 + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807A9B0 + + thumb_func_start sub_807A9D8 +sub_807A9D8: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807AA20 + ldr r2, [r4, 0x70] + adds r3, r2, 0 + adds r3, 0xB0 + ldrb r0, [r3] + cmp r0, 0x1 + bne _0807AA20 + movs r1, 0 + strb r1, [r3] + adds r0, r2, 0 + adds r0, 0xB8 + strb r1, [r0] + adds r0, 0x1 + strb r1, [r0] + ldr r0, _0807AA28 + adds r1, r4, 0 + movs r2, 0 + bl SetMessageArgument + ldr r0, _0807AA2C + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80522F4 + adds r0, r4, 0 + bl DungeonEntityUpdateStatusSprites +_0807AA20: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807AA28: .4byte gAvailablePokemonNames +_0807AA2C: .4byte gUnknown_80FA8BC + thumb_func_end sub_807A9D8 + + thumb_func_start sub_807AA30 +sub_807AA30: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r4, 0 +_0807AA3C: + ldr r0, _0807AAD8 + ldr r0, [r0] + lsls r1, r4, 2 + ldr r2, _0807AADC + adds r0, r2 + adds r0, r1 + ldr r5, [r0] + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + adds r4, 0x1 + mov r10, r4 + cmp r0, 0 + beq _0807AB22 + ldr r1, [r5, 0x70] + adds r0, r1, 0 + adds r0, 0xA8 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0807AB22 + adds r0, r1, 0 + adds r0, 0xA9 + ldrb r0, [r0] + cmp r0, 0x7F + bne _0807AB22 + movs r0, 0 + mov r9, r0 + mov r8, r0 + adds r0, r5, 0 + bl GetEntityRoomIndex + lsls r0, 24 + lsrs r7, r0, 24 + movs r6, 0 +_0807AA82: + ldr r0, _0807AAD8 + ldr r0, [r0] + lsls r1, r6, 2 + ldr r2, _0807AAE0 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807AB00 + adds r0, r4, 0 + movs r1, 0x18 + bl HasItem + lsls r0, 24 + cmp r0, 0 + bne _0807AB00 + movs r0, 0x4 + ldrsh r1, [r4, r0] + movs r2, 0x4 + ldrsh r0, [r5, r2] + subs r1, r0 + cmp r1, 0 + bge _0807AABA + negs r1, r1 +_0807AABA: + cmp r1, 0x1 + bgt _0807AAE4 + movs r0, 0x6 + ldrsh r1, [r4, r0] + movs r2, 0x6 + ldrsh r0, [r5, r2] + subs r1, r0 + cmp r1, 0 + bge _0807AACE + negs r1, r1 +_0807AACE: + cmp r1, 0x1 + bgt _0807AAE4 + movs r0, 0x1 + mov r9, r0 + b _0807AB06 + .align 2, 0 +_0807AAD8: .4byte gDungeonGlobalData +_0807AADC: .4byte 0x0001358c +_0807AAE0: .4byte 0x0001357c +_0807AAE4: + adds r0, r4, 0 + movs r1, 0x1D + bl HasItem + lsls r0, 24 + cmp r0, 0 + beq _0807AB00 + adds r0, r4, 0 + bl GetEntityRoomIndex + lsls r0, 24 + lsrs r0, 24 + cmp r7, r0 + beq _0807AB1C +_0807AB00: + adds r6, 0x1 + cmp r6, 0x3 + ble _0807AA82 +_0807AB06: + mov r2, r8 + cmp r2, 0 + bne _0807AB1C + mov r0, r9 + cmp r0, 0 + beq _0807AB16 + movs r2, 0x1 + mov r8, r2 +_0807AB16: + mov r0, r8 + cmp r0, 0 + beq _0807AB22 +_0807AB1C: + adds r0, r5, 0 + bl sub_807A9B0 +_0807AB22: + mov r4, r10 + cmp r4, 0xF + ble _0807AA3C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_807AA30 + + thumb_func_start sub_807AB38 +sub_807AB38: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1A8 + adds r2, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r0, [r2, 0x70] + ldrb r0, [r0, 0x6] + cmp r0, 0 + beq _0807AB54 + b _0807ADA6 +_0807AB54: + adds r0, r2, 0 + str r2, [sp, 0x1A4] + bl GetMapTileForDungeonEntity_2 + ldrh r1, [r0] + movs r0, 0x40 + ands r0, r1 + ldr r2, [sp, 0x1A4] + cmp r0, 0 + bne _0807AB6A + b _0807ADA6 +_0807AB6A: + ldr r3, _0807AC10 + ldr r0, [r3] + ldr r5, _0807AC14 + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, 0 + beq _0807AB7A + b _0807ADA6 +_0807AB7A: + movs r0, 0x1 + strb r0, [r1] + ldr r3, [r3] + ldr r1, _0807AC18 + adds r0, r3, r1 + ldrb r1, [r0] + cmp r1, 0xFF + bne _0807AB8C + b _0807ADA6 +_0807AB8C: + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r5, _0807AC1C + adds r0, r5 + adds r3, r0 + movs r0, 0 + mov r8, r0 + cmp r4, 0 + beq _0807AC20 + movs r1, 0x6 + ldrsh r0, [r2, r1] + subs r6, r0, 0x4 + adds r0, 0x4 + cmp r6, r0 + ble _0807ABAE + b _0807ACB4 +_0807ABAE: + movs r4, 0x4 + ldrsh r0, [r2, r4] + subs r4, r0, 0x4 + adds r0, 0x4 + adds r5, r6, 0x1 + mov r9, r5 + cmp r4, r0 + bgt _0807AC00 + mov r1, r8 + lsls r0, r1, 2 + mov r1, sp + adds r5, r0, r1 +_0807ABC6: + adds r0, r4, 0 + adds r1, r6, 0 + str r2, [sp, 0x1A4] + bl GetMapTile_2 + adds r1, r0, 0 + ldr r0, [r1, 0x10] + ldr r2, [sp, 0x1A4] + cmp r0, 0 + bne _0807ABF4 + ldrh r1, [r1] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _0807ABF4 + mov r0, r8 + cmp r0, 0x63 + bgt _0807ABF4 + strh r4, [r5] + strh r6, [r5, 0x2] + adds r5, 0x4 + movs r1, 0x1 + add r8, r1 +_0807ABF4: + adds r4, 0x1 + movs r1, 0x4 + ldrsh r0, [r2, r1] + adds r0, 0x4 + cmp r4, r0 + ble _0807ABC6 +_0807AC00: + mov r6, r9 + movs r4, 0x6 + ldrsh r0, [r2, r4] + adds r0, 0x4 + cmp r6, r0 + ble _0807ABAE + b _0807ACB4 + .align 2, 0 +_0807AC10: .4byte gDungeonGlobalData +_0807AC14: .4byte 0x00000671 +_0807AC18: .4byte 0x00003a0c +_0807AC1C: .4byte 0x000104c4 +_0807AC20: + movs r5, 0x4 + ldrsh r0, [r2, r5] + subs r1, r0, 0x4 + movs r5, 0x2 + ldrsh r4, [r3, r5] + mov r10, r4 + cmp r10, r1 + bge _0807AC32 + mov r10, r1 +_0807AC32: + adds r1, r0, 0x5 + movs r0, 0x6 + ldrsh r7, [r3, r0] + cmp r7, r1 + ble _0807AC3E + adds r7, r1, 0 +_0807AC3E: + movs r1, 0x6 + ldrsh r0, [r2, r1] + subs r2, r0, 0x4 + movs r4, 0x4 + ldrsh r1, [r3, r4] + cmp r1, r2 + bge _0807AC4E + adds r1, r2, 0 +_0807AC4E: + adds r0, 0x5 + movs r5, 0x8 + ldrsh r2, [r3, r5] + cmp r2, r0 + ble _0807AC5A + adds r2, r0, 0 +_0807AC5A: + adds r6, r1, 0 + cmp r6, r2 + bge _0807ACB4 +_0807AC60: + mov r4, r10 + adds r0, r6, 0x1 + mov r9, r0 + cmp r4, r7 + bge _0807ACAE + mov r1, r8 + lsls r0, r1, 2 + mov r1, sp + adds r5, r0, r1 +_0807AC72: + adds r0, r4, 0 + adds r1, r6, 0 + str r2, [sp, 0x1A4] + bl GetMapTile_2 + adds r1, r0, 0 + ldr r0, [r1, 0x10] + ldr r2, [sp, 0x1A4] + cmp r0, 0 + bne _0807ACA8 + ldrh r1, [r1] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _0807ACA8 + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0807ACA8 + mov r0, r8 + cmp r0, 0x63 + bgt _0807ACA8 + strh r4, [r5] + strh r6, [r5, 0x2] + adds r5, 0x4 + movs r1, 0x1 + add r8, r1 +_0807ACA8: + adds r4, 0x1 + cmp r4, r7 + blt _0807AC72 +_0807ACAE: + mov r6, r9 + cmp r6, r2 + blt _0807AC60 +_0807ACB4: + ldr r0, _0807AD74 + movs r2, 0 + ldrsh r0, [r0, r2] + ldr r1, _0807AD78 + movs r4, 0 + ldrsh r1, [r1, r4] + bl sub_808411C + adds r7, r0, 0 + cmp r7, r8 + blt _0807ACCC + mov r7, r8 +_0807ACCC: + movs r6, 0 + cmp r6, r7 + bge _0807ADA0 + mov r10, r6 +_0807ACD4: + mov r0, r8 + bl DungeonRandomCapped + adds r2, r0, 0 + movs r3, 0 + cmp r3, r8 + bge _0807AD0C + lsls r0, r2, 2 + mov r5, sp + adds r1, r5, r0 + movs r4, 0 + ldrsh r1, [r1, r4] + adds r5, r0, 0 + cmp r1, 0 + bne _0807AD1C +_0807ACF2: + adds r2, 0x1 + cmp r2, r8 + blt _0807ACFA + movs r2, 0 +_0807ACFA: + adds r3, 0x1 + cmp r3, r8 + bge _0807AD0C + lsls r0, r2, 2 + add r0, sp + movs r5, 0 + ldrsh r0, [r0, r5] + cmp r0, 0 + beq _0807ACF2 +_0807AD0C: + lsls r0, r2, 2 + mov r2, sp + adds r1, r2, r0 + movs r4, 0 + ldrsh r1, [r1, r4] + adds r5, r0, 0 + cmp r1, 0 + beq _0807ADA0 +_0807AD1C: + movs r0, 0x1 + bl sub_803D970 + add r4, sp, 0x190 + movs r1, 0 + strh r0, [r4] + mov r0, r10 + strh r0, [r4, 0x8] + strb r1, [r4, 0x2] + mov r1, r10 + str r1, [r4, 0x4] + movs r0, 0x1 + strb r0, [r4, 0x10] + mov r2, sp + adds r1, r2, r5 + ldrh r0, [r1] + strh r0, [r4, 0xC] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0xE] + movs r5, 0 + ldrsh r0, [r4, r5] + movs r1, 0x1 + bl sub_806AA0C + lsls r0, 24 + adds r6, 0x1 + mov r9, r6 + cmp r0, 0 + beq _0807AD9A + adds r0, r4, 0 + movs r1, 0 + bl sub_806B7F8 + adds r4, r0, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807AD9A + movs r0, 0xC8 + lsls r0, 8 + str r0, [r4, 0x1C] + movs r5, 0 + b _0807AD84 + .align 2, 0 +_0807AD74: .4byte gUnknown_80F4DA2 +_0807AD78: .4byte gUnknown_80F4DA4 +_0807AD7C: + movs r0, 0x57 + bl sub_803E46C + adds r5, 0x1 +_0807AD84: + cmp r5, 0x63 + bgt _0807AD96 + ldr r0, [r4, 0x1C] + movs r1, 0xAA + bl sub_8009DA4 + str r0, [r4, 0x1C] + cmp r0, 0xFF + bgt _0807AD7C +_0807AD96: + mov r0, r10 + str r0, [r4, 0x1C] +_0807AD9A: + mov r6, r9 + cmp r6, r7 + blt _0807ACD4 +_0807ADA0: + movs r0, 0x1 + bl sub_804178C +_0807ADA6: + add sp, 0x1A8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_807AB38 + + thumb_func_start MoveIfPossible +MoveIfPossible: + push {r4-r7,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + ldr r4, [r5, 0x70] + adds r0, r4, 0 + adds r0, 0x79 + movs r6, 0 + strb r6, [r0] + adds r0, 0x1 + strb r6, [r0] + adds r0, 0x1 + strb r6, [r0] + adds r0, r5, 0 + movs r1, 0x7 + bl HasTactic + lsls r0, 24 + cmp r0, 0 + beq _0807ADFA + movs r1, 0x10 + ldrsh r0, [r4, r1] + lsrs r1, r0, 31 + adds r0, r1 + movs r2, 0xE + ldrsh r1, [r4, r2] + asrs r0, 1 + cmp r1, r0 + bgt _0807ADFA + adds r0, r4, 0 + adds r0, 0x44 + strh r6, [r0] + b _0807AEB4 +_0807ADFA: + adds r0, r5, 0 + movs r1, 0x9 + bl HasTactic + lsls r0, 24 + cmp r0, 0 + beq _0807AE12 + adds r1, r4, 0 + adds r1, 0x44 + movs r0, 0 + strh r0, [r1] + b _0807AEB4 +_0807AE12: + ldrb r0, [r4, 0x7] + cmp r0, 0 + bne _0807AE32 + movs r1, 0x9E + lsls r1, 1 + adds r0, r4, r1 + ldr r0, [r0] + bl RoundUpFixedPoint + adds r1, r0, 0 + cmp r1, 0 + bne _0807AE32 + adds r0, r4, 0 + adds r0, 0x44 + strh r1, [r0] + b _0807AEB4 +_0807AE32: + adds r0, r4, 0 + adds r0, 0xA4 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0807AE6A + adds r0, r4, 0 + adds r0, 0x44 + movs r2, 0x2 + ldrsh r1, [r4, r2] + bl SetWalkAction + movs r0, 0x8 + bl DungeonRandomCapped + adds r1, r4, 0 + adds r1, 0x46 + strb r0, [r1] + ldrh r1, [r5, 0x4] + movs r2, 0xB6 + lsls r2, 1 + adds r0, r4, r2 + strh r1, [r0] + ldrh r0, [r5, 0x6] + subs r0, 0x1 + adds r2, 0x2 + adds r1, r4, r2 + strh r0, [r1] + b _0807AEB4 +_0807AE6A: + adds r0, r5, 0 + adds r1, r7, 0 + bl ShouldAvoidEnemiesAndShowEffect + lsls r0, 24 + cmp r0, 0 + beq _0807AE80 + adds r0, r5, 0 + bl AvoidEnemies + b _0807AE9C +_0807AE80: + adds r0, r5, 0 + bl CanTakeItem + lsls r0, 24 + cmp r0, 0 + beq _0807AE96 + adds r1, r4, 0 + adds r1, 0x44 + movs r0, 0x3F + strh r0, [r1] + b _0807AEB4 +_0807AE96: + adds r0, r5, 0 + bl ChooseTargetPosition +_0807AE9C: + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + bne _0807AEAC + adds r0, r4, 0 + adds r0, 0x44 + strh r2, [r0] + b _0807AEB4 +_0807AEAC: + adds r0, r5, 0 + adds r1, r7, 0 + bl DecideMovement +_0807AEB4: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end MoveIfPossible + + thumb_func_start CanTakeItem +CanTakeItem: + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, [r4, 0x70] + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807AF50 + adds r0, r4, 0 + bl CannotUseItems + lsls r0, 24 + cmp r0, 0 + bne _0807AF50 + adds r0, r4, 0 + bl GetMapTileForDungeonEntity_2 + adds r6, r0, 0 + ldr r4, [r6, 0x14] + cmp r4, 0 + beq _0807AF50 + adds r0, r4, 0 + bl GetEntityType + cmp r0, 0x5 + bhi _0807AF50 + lsls r0, 2 + ldr r1, _0807AEFC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807AEFC: .4byte _0807AF00 + .align 2, 0 +_0807AF00: + .4byte _0807AF50 + .4byte _0807AF50 + .4byte _0807AF50 + .4byte _0807AF18 + .4byte _0807AF50 + .4byte _0807AF50 +_0807AF18: + ldrb r0, [r5, 0x7] + cmp r0, 0 + bne _0807AF50 + adds r0, r5, 0 + adds r0, 0x60 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0807AF50 + ldrh r1, [r6] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _0807AF3C + ldrb r0, [r5, 0x6] + cmp r0, 0 + bne _0807AF50 +_0807AF3C: + adds r0, r4, 0 + bl GetItemData + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0807AF50 + movs r0, 0x1 + b _0807AF52 +_0807AF50: + movs r0, 0 +_0807AF52: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end CanTakeItem + + thumb_func_start ChooseTargetPosition +ChooseTargetPosition: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + mov r8, r0 + ldr r7, [r0, 0x70] + bl TargetLeader + lsls r0, 24 + cmp r0, 0 + beq _0807AF74 + b _0807B12C +_0807AF74: + ldr r0, _0807AF8C + ldr r1, [r0] + ldr r2, _0807AF90 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0807AF98 + ldr r3, _0807AF94 + adds r6, r1, r3 + movs r4, 0x14 + mov r10, r4 + b _0807AFB4 + .align 2, 0 +_0807AF8C: .4byte gDungeonGlobalData +_0807AF90: .4byte 0x000037fc +_0807AF94: .4byte 0x000135cc +_0807AF98: + ldrb r0, [r7, 0x6] + cmp r0, 0 + beq _0807AFAC + ldr r0, _0807AFA8 + adds r6, r1, r0 + movs r1, 0x4 + mov r10, r1 + b _0807AFB4 + .align 2, 0 +_0807AFA8: .4byte 0x0001357c +_0807AFAC: + ldr r2, _0807B01C + adds r6, r1, r2 + movs r3, 0x10 + mov r10, r3 +_0807AFB4: + mov r0, r8 + bl CanCrossWalls + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r4, 0x1 + negs r4, r4 + str r4, [sp] + ldr r0, _0807B020 + mov r9, r0 + movs r5, 0 + adds r1, r7, 0 + adds r1, 0x78 + str r1, [sp, 0x8] + cmp r5, r10 + bge _0807B09E +_0807AFD6: + lsls r0, r5, 2 + adds r0, r6 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807B098 + ldr r0, [r4, 0x70] + adds r1, r0, 0 + adds r1, 0xA4 + ldrb r1, [r1] + adds r2, r0, 0 + cmp r1, 0 + bne _0807B098 + ldr r0, _0807B024 + ldr r0, [r0] + ldr r3, _0807B028 + adds r0, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _0807B02C + mov r0, r8 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x1 + bl CanTarget + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807B098 + ldr r2, [r4, 0x70] + b _0807B03C + .align 2, 0 +_0807B01C: .4byte 0x0001358c +_0807B020: .4byte 0x000003e7 +_0807B024: .4byte gDungeonGlobalData +_0807B028: .4byte 0x000037fc +_0807B02C: + ldrb r0, [r7, 0x6] + cmp r0, 0 + bne _0807B03C + adds r0, r2, 0 + adds r0, 0xB0 + ldrb r0, [r0] + cmp r0, 0x6 + beq _0807B098 +_0807B03C: + ldrb r0, [r2, 0x8] + cmp r0, 0x1 + beq _0807B098 + ldr r0, [sp, 0x4] + cmp r0, 0 + beq _0807B074 + mov r2, r8 + movs r3, 0x4 + ldrsh r1, [r2, r3] + movs r2, 0x4 + ldrsh r0, [r4, r2] + subs r1, r0 + cmp r1, 0 + bge _0807B05A + negs r1, r1 +_0807B05A: + cmp r1, 0x5 + bgt _0807B074 + mov r3, r8 + movs r0, 0x6 + ldrsh r1, [r3, r0] + movs r2, 0x6 + ldrsh r0, [r4, r2] + subs r1, r0 + cmp r1, 0 + bge _0807B070 + negs r1, r1 +_0807B070: + cmp r1, 0x5 + ble _0807B082 +_0807B074: + mov r0, r8 + adds r1, r4, 0 + bl CanSee_2 + lsls r0, 24 + cmp r0, 0 + beq _0807B098 +_0807B082: + adds r1, r4, 0x4 + mov r0, r8 + adds r0, 0x4 + bl GetMaxPositionDifference + cmp r9, r0 + ble _0807B098 + mov r9, r0 + str r5, [sp] + cmp r0, 0x1 + ble _0807B09E +_0807B098: + adds r5, 0x1 + cmp r5, r10 + blt _0807AFD6 +_0807B09E: + ldr r3, [sp] + cmp r3, 0 + blt _0807B12C + movs r2, 0 + movs r5, 0x1 + ldr r4, [sp, 0x8] + strb r5, [r4] + adds r1, r7, 0 + adds r1, 0x88 + lsls r0, r3, 2 + adds r4, r0, r6 + ldr r0, [r4] + ldr r0, [r0, 0x4] + str r0, [r1] + subs r1, 0x8 + ldr r0, [r4] + str r0, [r1] + ldrh r1, [r0, 0x26] + adds r0, r7, 0 + adds r0, 0x7C + strh r1, [r0] + subs r0, 0x2 + strb r5, [r0] + movs r1, 0x8A + lsls r1, 1 + adds r0, r7, r1 + str r2, [r0] + mov r0, r8 + movs r1, 0x8 + bl HasTactic + lsls r0, 24 + cmp r0, 0 + bne _0807B0E4 + b _0807B2C6 +_0807B0E4: + mov r0, r8 + bl CanSeeTeammate + lsls r0, 24 + cmp r0, 0 + beq _0807B0F2 + b _0807B2C6 +_0807B0F2: + mov r2, r8 + movs r3, 0x4 + ldrsh r1, [r2, r3] + ldr r2, [r4] + movs r4, 0x4 + ldrsh r0, [r2, r4] + subs r1, r0 + cmp r1, 0 + bge _0807B106 + negs r1, r1 +_0807B106: + cmp r1, 0x1 + ble _0807B10C + b _0807B2C6 +_0807B10C: + mov r0, r8 + movs r3, 0x6 + ldrsh r1, [r0, r3] + movs r4, 0x6 + ldrsh r0, [r2, r4] + subs r0, r1, r0 + cmp r0, 0 + bge _0807B11E + negs r0, r0 +_0807B11E: + cmp r0, 0x1 + ble _0807B124 + b _0807B2C6 +_0807B124: + adds r0, r7, 0 + adds r0, 0x7B + strb r5, [r0] + b _0807B2C6 +_0807B12C: + mov r0, r8 + movs r1, 0x1 + bl HasTactic + lsls r0, 24 + cmp r0, 0 + bne _0807B17C + ldrb r5, [r7, 0x6] + adds r0, r7, 0 + adds r0, 0x78 + str r0, [sp, 0x8] + cmp r5, 0 + bne _0807B222 + mov r0, r8 + bl GetLeaderEntityIfVisible + adds r4, r0, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807B222 + movs r0, 0x1 + ldr r1, [sp, 0x8] + strb r0, [r1] + adds r1, r7, 0 + adds r1, 0x88 + ldr r0, [r4, 0x4] + str r0, [r1] + adds r0, r7, 0 + adds r0, 0x80 + str r4, [r0] + ldrh r1, [r4, 0x26] + subs r0, 0x4 + strh r1, [r0] + movs r2, 0x8A + lsls r2, 1 + adds r0, r7, r2 + str r5, [r0] + b _0807B2C6 +_0807B17C: + ldrb r0, [r7, 0x7] + adds r3, r7, 0 + adds r3, 0x78 + str r3, [sp, 0x8] + cmp r0, 0 + beq _0807B222 + ldr r4, _0807B1BC + ldr r0, [r4] + ldr r1, _0807B1C0 + adds r0, r1 + ldrb r0, [r0] + mov r2, r8 + movs r3, 0x4 + ldrsh r0, [r2, r3] + movs r3, 0x6 + ldrsh r1, [r2, r3] + bl GetMapTile_1 + ldrb r1, [r0, 0x9] + cmp r1, 0xFF + bne _0807B1C4 + mov r4, r8 + movs r0, 0x4 + ldrsh r1, [r4, r0] + subs r2, r1, 0x2 + mov r10, r2 + movs r3, 0x6 + ldrsh r0, [r4, r3] + subs r2, r0, 0x2 + adds r6, r1, 0x2 + adds r0, 0x2 + b _0807B1EC + .align 2, 0 +_0807B1BC: .4byte gDungeonGlobalData +_0807B1C0: .4byte 0x00018209 +_0807B1C4: + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r1, _0807B26C + adds r0, r1 + ldr r1, [r4] + adds r1, r0 + movs r2, 0x2 + ldrsh r0, [r1, r2] + subs r0, 0x1 + mov r10, r0 + movs r3, 0x4 + ldrsh r0, [r1, r3] + subs r2, r0, 0x1 + movs r4, 0x6 + ldrsh r0, [r1, r4] + adds r6, r0, 0x1 + movs r3, 0x8 + ldrsh r0, [r1, r3] + adds r0, 0x1 +_0807B1EC: + mov r9, r0 + adds r5, r2, 0 + adds r4, r7, 0 + adds r4, 0x78 + str r4, [sp, 0x8] + cmp r5, r9 + bgt _0807B222 +_0807B1FA: + mov r4, r10 + cmp r4, r6 + bgt _0807B21C +_0807B200: + adds r0, r4, 0 + adds r1, r5, 0 + bl GetMapTile_2 + ldr r0, [r0, 0x14] + cmp r0, 0 + beq _0807B216 + bl GetEntityType + cmp r0, 0x3 + beq _0807B270 +_0807B216: + adds r4, 0x1 + cmp r4, r6 + ble _0807B200 +_0807B21C: + adds r5, 0x1 + cmp r5, r9 + ble _0807B1FA +_0807B222: + ldr r1, [sp, 0x8] + ldrb r0, [r1] + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0807B2C0 + adds r3, r7, 0 + adds r3, 0x80 + ldr r1, [r3] + cmp r1, 0 + beq _0807B2C0 + adds r2, r7, 0 + adds r2, 0x7C + ldrh r0, [r1, 0x26] + ldrh r4, [r2] + cmp r0, r4 + bne _0807B2B4 + ldr r1, [r1, 0x70] + mov r9, r1 + movs r5, 0 + mov r4, r9 + adds r4, 0x68 +_0807B250: + lsls r6, r5, 2 + mov r0, r8 + adds r1, r4, 0 + bl InSameRoom + lsls r0, 24 + cmp r0, 0 + bne _0807B294 + adds r4, 0x4 + adds r5, 0x1 + cmp r5, 0x3 + ble _0807B250 + b _0807B2C0 + .align 2, 0 +_0807B26C: .4byte 0x000104c4 +_0807B270: + movs r1, 0 + movs r0, 0x7 + ldr r2, [sp, 0x8] + strb r0, [r2] + adds r0, r7, 0 + adds r0, 0x88 + strh r4, [r0] + adds r0, 0x2 + strh r5, [r0] + subs r0, 0xA + str r1, [r0] + subs r0, 0x4 + strh r1, [r0] + movs r3, 0x8A + lsls r3, 1 + adds r0, r7, r3 + str r1, [r0] + b _0807B2C6 +_0807B294: + movs r2, 0 + movs r0, 0x2 + ldr r4, [sp, 0x8] + strb r0, [r4] + adds r1, r7, 0 + adds r1, 0x88 + mov r0, r9 + adds r0, 0x68 + adds r0, r6 + ldr r0, [r0] + str r0, [r1] + movs r1, 0x8A + lsls r1, 1 + adds r0, r7, r1 + str r2, [r0] + b _0807B2C6 +_0807B2B4: + movs r1, 0 + movs r0, 0x6 + ldr r4, [sp, 0x8] + strb r0, [r4] + str r1, [r3] + strh r1, [r2] +_0807B2C0: + mov r0, r8 + bl Explore +_0807B2C6: + movs r0, 0x1 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end ChooseTargetPosition + + thumb_func_start DecideMovement +DecideMovement: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x3C + mov r9, r0 + lsls r1, 24 + lsrs r7, r1, 24 + ldr r5, [r0, 0x70] + movs r0, 0xB6 + lsls r0, 1 + adds r1, r5, r0 + adds r4, r5, 0 + adds r4, 0x88 + ldr r0, [r4] + str r0, [r1] + mov r2, r9 + ldr r1, [r2, 0x4] + ldr r0, [r4] + cmp r1, r0 + beq _0807B348 + mov r6, r9 + adds r6, 0x4 + adds r0, r6, 0 + adds r1, r4, 0 + bl CalculateFacingDir + mov r8, r0 + adds r0, r5, 0 + adds r0, 0x7A + ldrb r1, [r0] + mov r0, r9 + bl ShouldAvoidFirstHit + lsls r0, 24 + cmp r0, 0 + beq _0807B366 + adds r0, r5, 0 + adds r0, 0x78 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0807B37C + adds r0, r6, 0 + adds r1, r4, 0 + bl IsTargetTwoTilesAway + lsls r0, 24 + cmp r0, 0 + beq _0807B37C + adds r0, r6, 0 + adds r1, r4, 0 + bl GetMaxPositionDifference + cmp r0, 0x2 + bne _0807B354 +_0807B348: + adds r0, r5, 0 + adds r0, 0x44 + movs r1, 0x1 + bl SetAction + b _0807B5CE +_0807B354: + cmp r0, 0x1 + bgt _0807B37C + movs r3, 0x4 + add r8, r3 + movs r0, 0x7 + mov r1, r8 + ands r1, r0 + mov r8, r1 + b _0807B37C +_0807B366: + adds r0, r5, 0 + adds r0, 0x7B + ldrb r0, [r0] + cmp r0, 0 + beq _0807B37C + movs r2, 0x4 + add r8, r2 + movs r0, 0x7 + mov r3, r8 + ands r3, r0 + mov r8, r3 +_0807B37C: + add r4, sp, 0x30 + mov r0, r9 + mov r1, r8 + adds r2, r4, 0 + bl CanMoveForward + lsls r0, 24 + cmp r0, 0 + beq _0807B3A8 + adds r0, r5, 0 + adds r0, 0x44 + movs r2, 0x2 + ldrsh r1, [r5, r2] + bl SetWalkAction + movs r0, 0x7 + mov r3, r8 + ands r3, r0 + adds r0, r5, 0 + adds r0, 0x46 + strb r3, [r0] + b _0807B5CE +_0807B3A8: + ldrb r0, [r4] + cmp r0, 0 + beq _0807B444 + ldrb r0, [r5, 0x6] + cmp r0, 0 + bne _0807B3E8 + ldr r1, _0807B3E0 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0807B3E8 + adds r0, r5, 0 + adds r0, 0x79 + movs r4, 0x1 + strb r4, [r0] + movs r2, 0xA2 + lsls r2, 1 + adds r0, r5, r2 + strb r4, [r0] + adds r0, r5, 0 + adds r0, 0x44 + movs r1, 0x1 + bl SetAction + ldr r3, _0807B3E4 + adds r0, r5, r3 + strb r4, [r0] + b _0807B5CE + .align 2, 0 +_0807B3E0: .4byte 0x00000145 +_0807B3E4: .4byte 0x00000147 +_0807B3E8: + mov r0, r9 + movs r2, 0x4 + ldrsh r1, [r0, r2] + ldr r2, _0807B434 + mov r3, r8 + lsls r0, r3, 2 + adds r2, r0, r2 + movs r3, 0 + ldrsh r0, [r2, r3] + adds r1, r0 + adds r0, r5, 0 + adds r0, 0x88 + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r1, r0 + bne _0807B43C + mov r1, r9 + movs r3, 0x6 + ldrsh r0, [r1, r3] + movs r3, 0x2 + ldrsh r1, [r2, r3] + adds r0, r1 + adds r1, r5, 0 + adds r1, 0x8A + movs r2, 0 + ldrsh r1, [r1, r2] + cmp r0, r1 + bne _0807B43C + adds r0, r5, 0 + adds r0, 0x44 + movs r1, 0x1 + bl SetAction + ldr r3, _0807B438 + adds r1, r5, r3 + movs r0, 0x1 + strb r0, [r1] + b _0807B5CE + .align 2, 0 +_0807B434: .4byte gAdjacentTileOffsets +_0807B438: .4byte 0x00000147 +_0807B43C: + adds r1, r5, 0 + adds r1, 0x79 + movs r0, 0x1 + strb r0, [r1] +_0807B444: + mov r3, sp + mov r2, sp + mov r1, sp + add r0, sp, 0x28 + movs r4, 0x1 + strb r4, [r0] + add r0, sp, 0x20 + strb r4, [r0] + strb r4, [r1, 0x18] + strb r4, [r2, 0x10] + strb r4, [r3, 0x8] + ldrb r6, [r5, 0x6] + cmp r6, 0 + bne _0807B4C8 + mov r0, r8 + ands r0, r4 + cmp r0, 0 + beq _0807B4C8 + mov r1, r9 + movs r2, 0x4 + ldrsh r0, [r1, r2] + adds r1, r5, 0 + adds r1, 0x88 + movs r3, 0 + ldrsh r1, [r1, r3] + subs r2, r0, r1 + cmp r2, 0 + bge _0807B47E + negs r2, r2 +_0807B47E: + mov r0, r9 + movs r3, 0x6 + ldrsh r1, [r0, r3] + adds r0, r5, 0 + adds r0, 0x8A + movs r3, 0 + ldrsh r0, [r0, r3] + subs r1, r0 + cmp r1, 0 + bge _0807B494 + negs r1, r1 +_0807B494: + cmp r2, 0x2 + bgt _0807B4C8 + cmp r1, 0x2 + bgt _0807B4C8 + cmp r2, r1 + beq _0807B4C8 + movs r3, 0x2 + mov r0, r8 + ands r3, r0 + cmp r3, 0 + beq _0807B4BA + cmp r2, r1 + bge _0807B4B4 + mov r0, sp + strb r6, [r0, 0x10] + b _0807B4C8 +_0807B4B4: + mov r0, sp + strb r6, [r0, 0x8] + b _0807B4C8 +_0807B4BA: + cmp r2, r1 + bge _0807B4C4 + mov r0, sp + strb r3, [r0, 0x8] + b _0807B4C8 +_0807B4C4: + mov r0, sp + strb r3, [r0, 0x10] +_0807B4C8: + movs r1, 0x3 + mov r10, r1 + mov r0, r9 + adds r1, r7, 0 + bl ShouldAvoidEnemiesAndShowEffect + lsls r0, 24 + cmp r0, 0 + bne _0807B4E4 + adds r0, r5, 0 + adds r0, 0x7B + ldrb r0, [r0] + cmp r0, 0 + beq _0807B4E8 +_0807B4E4: + movs r2, 0x5 + mov r10, r2 +_0807B4E8: + movs r6, 0x1 + adds r3, r5, 0 + adds r3, 0x44 + str r3, [sp, 0x34] + cmp r6, r10 + bge _0807B53C + mov r3, sp + mov r4, sp + adds r4, 0xA + add r7, sp, 0x8 +_0807B4FC: + lsls r0, r6, 3 + add r2, sp, 0x4 + adds r2, r0 + ldr r1, _0807B598 + lsls r0, r6, 2 + adds r0, r1 + ldr r1, [r0] + add r1, r8 + movs r0, 0x7 + ands r1, r0 + str r1, [r2] + mov r0, r9 + adds r2, r4, 0 + str r3, [sp, 0x38] + bl CanMoveForward + strb r0, [r7, 0x1] + lsls r0, 24 + ldr r3, [sp, 0x38] + cmp r0, 0 + bne _0807B532 + ldrb r0, [r4] + cmp r0, 0 + bne _0807B532 + movs r0, 0x1 + strb r0, [r3, 0x10] + strb r0, [r3, 0x8] +_0807B532: + adds r4, 0x8 + adds r7, 0x8 + adds r6, 0x1 + cmp r6, r10 + blt _0807B4FC +_0807B53C: + movs r6, 0x1 + cmp r6, r10 + bge _0807B56E + adds r3, r5, 0 + adds r3, 0x79 + add r1, sp, 0x8 + movs r4, 0x8 + movs r7, 0x1 +_0807B54C: + adds r2, r4, 0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + beq _0807B55A + ldrb r0, [r1] + cmp r0, 0 + bne _0807B5A0 +_0807B55A: + ldrb r0, [r1, 0x2] + cmp r0, 0 + beq _0807B562 + strb r7, [r3] +_0807B562: + adds r1, 0x8 + adds r4, r2, 0 + adds r4, 0x8 + adds r6, 0x1 + cmp r6, r10 + blt _0807B54C +_0807B56E: + ldr r0, [sp, 0x34] + movs r1, 0x1 + bl SetAction + ldr r1, _0807B59C + adds r0, r5, r1 + movs r1, 0 + movs r2, 0x1 + strb r2, [r0] + ldrb r0, [r5, 0x7] + cmp r0, 0 + beq _0807B5BC + adds r0, r5, 0 + adds r0, 0x79 + strb r1, [r0] + movs r2, 0xA2 + lsls r2, 1 + adds r0, r5, r2 + strb r1, [r0] + b _0807B5CE + .align 2, 0 +_0807B598: .4byte gFaceDirectionIncrements +_0807B59C: .4byte 0x00000147 +_0807B5A0: + movs r3, 0x2 + ldrsh r1, [r5, r3] + ldr r0, [sp, 0x34] + bl SetWalkAction + add r0, sp, 0x4 + adds r0, r4 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + adds r1, r5, 0 + adds r1, 0x46 + strb r0, [r1] + b _0807B5CE +_0807B5BC: + adds r0, r5, 0 + adds r0, 0x79 + ldrb r0, [r0] + cmp r0, 0 + beq _0807B5CE + movs r1, 0xA2 + lsls r1, 1 + adds r0, r5, r1 + strb r2, [r0] +_0807B5CE: + add sp, 0x3C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end DecideMovement + + thumb_func_start AvoidEnemies +AvoidEnemies: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + adds r7, r0, 0 + ldr r0, _0807B61C + str r0, [sp, 0x8] + ldr r1, [r7, 0x70] + str r1, [sp, 0x10] + adds r0, r7, 0 + bl GetEntityRoomIndex + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, _0807B620 + ldr r1, [r0] + ldr r2, _0807B624 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0807B62C + ldr r3, _0807B628 + adds r0, r1, r3 + movs r4, 0x14 + mov r9, r4 + b _0807B64C + .align 2, 0 +_0807B61C: .4byte 0x000f423f +_0807B620: .4byte gDungeonGlobalData +_0807B624: .4byte 0x000037fc +_0807B628: .4byte 0x000135cc +_0807B62C: + ldr r2, [sp, 0x10] + ldrb r0, [r2, 0x6] + cmp r0, 0 + beq _0807B644 + ldr r3, _0807B640 + adds r0, r1, r3 + movs r4, 0x4 + mov r9, r4 + b _0807B64C + .align 2, 0 +_0807B640: .4byte 0x0001357c +_0807B644: + ldr r2, _0807B790 + adds r0, r1, r2 + movs r3, 0x10 + mov r9, r3 +_0807B64C: + movs r4, 0 + str r4, [sp, 0xC] + movs r1, 0xFF + str r1, [sp, 0x4] + mov r8, r4 + cmp r4, r9 + bge _0807B6D8 + adds r6, r0, 0 +_0807B65C: + ldr r4, [r6] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807B6CE + adds r0, r7, 0 + adds r1, r4, 0 + bl CanSee + lsls r0, 24 + cmp r0, 0 + beq _0807B6CE + ldr r0, _0807B794 + ldr r0, [r0] + ldr r2, _0807B798 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0807B69A + adds r0, r7, 0 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x1 + bl CanTarget + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807B6CE +_0807B69A: + adds r1, r4, 0x4 + adds r0, r7, 0x4 + bl GetMaxPositionDifference + ldr r3, [sp, 0x8] + cmp r3, r0 + ble _0807B6CE + str r0, [sp, 0x8] + str r4, [sp, 0xC] + adds r0, r4, 0 + bl GetEntityRoomIndex + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + ldr r1, [sp, 0x10] + adds r1, 0x88 + ldr r4, [sp, 0xC] + ldr r0, [r4, 0x4] + str r0, [r1] + ldr r0, [sp, 0x10] + movs r2, 0xB6 + lsls r2, 1 + adds r1, r0, r2 + ldr r0, [r4, 0x4] + str r0, [r1] +_0807B6CE: + adds r6, 0x4 + movs r3, 0x1 + add r8, r3 + cmp r8, r9 + blt _0807B65C +_0807B6D8: + ldr r0, _0807B79C + ldr r4, [sp, 0x8] + cmp r4, r0 + bne _0807B6E2 + b _0807B906 +_0807B6E2: + ldr r0, [sp, 0x10] + adds r0, 0x88 + str r0, [sp, 0x28] + ldr r1, [sp, 0x10] + adds r1, 0x78 + str r1, [sp, 0x24] + ldr r2, [sp, 0x4] + cmp r10, r2 + beq _0807B6F6 + b _0807B8E0 +_0807B6F6: + mov r3, r10 + cmp r3, 0xFF + bne _0807B6FE + b _0807B8E0 +_0807B6FE: + movs r4, 0x4 + ldrsh r0, [r7, r4] + movs r2, 0x6 + ldrsh r1, [r7, r2] + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0807B7B2 + ldrh r0, [r7, 0x6] + lsls r0, 16 + ldrh r5, [r7, 0x4] + orrs r5, r0 + movs r4, 0 +_0807B71E: + ldr r1, _0807B7A0 + lsls r0, r4, 2 + adds r0, r1 + ldrh r1, [r0] + ldrh r3, [r7, 0x4] + adds r1, r3 + lsls r1, 16 + ldrh r0, [r0, 0x2] + ldrh r2, [r7, 0x6] + adds r0, r2 + lsls r0, 16 + lsrs r5, r1, 16 + orrs r5, r0 + lsls r0, r5, 16 + asrs r0, 16 + asrs r1, r5, 16 + bl GetMapTile_1 + ldrb r0, [r0, 0x9] + cmp r0, r10 + beq _0807B758 + adds r0, r7, 0 + adds r1, r4, 0 + mov r2, sp + bl CanMoveForward + lsls r0, 24 + cmp r0, 0 + bne _0807B75E +_0807B758: + adds r4, 0x1 + cmp r4, 0x7 + ble _0807B71E +_0807B75E: + cmp r4, 0x8 + bne _0807B7A4 + movs r0, 0x8 + bl DungeonRandomCapped + adds r4, r0, 0 + movs r0, 0x6 + ldr r3, [sp, 0x24] + strb r0, [r3] + ldr r0, _0807B7A0 + lsls r1, r4, 2 + adds r1, r0 + ldrh r0, [r1] + ldrh r4, [r7, 0x4] + adds r0, r4 + ldr r2, [sp, 0x28] + strh r0, [r2] + ldrh r0, [r1, 0x2] + ldrh r7, [r7, 0x6] + adds r0, r7 + ldr r1, [sp, 0x10] + adds r1, 0x8A + strh r0, [r1] + movs r0, 0x1 + b _0807B910 + .align 2, 0 +_0807B790: .4byte 0x0001358c +_0807B794: .4byte gDungeonGlobalData +_0807B798: .4byte 0x000037fc +_0807B79C: .4byte 0x000f423f +_0807B7A0: .4byte gAdjacentTileOffsets +_0807B7A4: + movs r0, 0x5 + ldr r3, [sp, 0x24] + strb r0, [r3] + ldr r4, [sp, 0x28] + str r5, [r4] + movs r0, 0x1 + b _0807B910 +_0807B7B2: + ldr r0, _0807B8D0 + mov r2, r10 + lsls r1, r2, 7 + ldr r3, _0807B8D4 + adds r1, r3 + ldr r0, [r0] + adds r1, r0, r1 + str r1, [sp, 0x18] + lsls r1, r2, 1 + ldr r4, _0807B8D8 + adds r0, r4 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + str r1, [sp, 0x14] + ldr r3, _0807B8DC + str r3, [sp, 0x20] + movs r4, 0 + str r4, [sp, 0x1C] + ldr r0, [sp, 0xC] + movs r1, 0x4 + ldrsh r3, [r0, r1] + movs r2, 0x4 + ldrsh r0, [r7, r2] + subs r2, r3, r0 + cmp r2, 0 + bge _0807B7EA + negs r2, r2 +_0807B7EA: + ldr r4, [sp, 0xC] + movs r0, 0x6 + ldrsh r1, [r4, r0] + movs r4, 0x6 + ldrsh r0, [r7, r4] + subs r1, r0 + mov r8, r1 + cmp r1, 0 + bge _0807B802 + mov r0, r8 + negs r0, r0 + mov r8, r0 +_0807B802: + cmp r8, r2 + bge _0807B808 + mov r8, r2 +_0807B808: + movs r1, 0 + mov r9, r1 + ldr r2, [sp, 0x10] + adds r2, 0x8A + str r2, [sp, 0x2C] + ldr r4, [sp, 0x1C] + ldr r0, [sp, 0x14] + cmp r4, r0 + bge _0807B8AA + mov r10, r3 + ldr r6, [sp, 0x18] +_0807B81E: + movs r1, 0 + ldrsh r3, [r6, r1] + mov r2, r10 + subs r0, r2, r3 + cmp r0, 0 + bge _0807B82C + negs r0, r0 +_0807B82C: + ldr r4, [sp, 0xC] + movs r1, 0x6 + ldrsh r4, [r4, r1] + mov r12, r4 + movs r4, 0x2 + ldrsh r2, [r6, r4] + mov r4, r12 + subs r1, r4, r2 + cmp r1, 0 + bge _0807B842 + negs r1, r1 +_0807B842: + cmp r1, r0 + bge _0807B848 + adds r1, r0, 0 +_0807B848: + movs r0, 0x4 + ldrsh r4, [r7, r0] + subs r0, r3, r4 + movs r3, 0x6 + ldrsh r5, [r7, r3] + subs r3, r2, r5 + movs r2, 0x1 + negs r2, r2 + cmp r0, r2 + bge _0807B85E + adds r0, r2, 0 +_0807B85E: + cmp r3, r2 + bge _0807B864 + adds r3, r2, 0 +_0807B864: + cmp r0, 0x1 + ble _0807B86A + movs r0, 0x1 +_0807B86A: + cmp r3, 0x1 + ble _0807B870 + movs r3, 0x1 +_0807B870: + adds r0, r4, r0 + mov r4, r10 + subs r2, r4, r0 + cmp r2, 0 + bge _0807B87C + negs r2, r2 +_0807B87C: + adds r0, r5, r3 + mov r3, r12 + subs r0, r3, r0 + cmp r0, 0 + bge _0807B888 + negs r0, r0 +_0807B888: + cmp r0, r2 + bge _0807B88E + adds r0, r2, 0 +_0807B88E: + cmp r0, r8 + blt _0807B89E + ldr r4, [sp, 0x20] + cmp r4, r1 + bge _0807B89E + mov r0, r9 + str r0, [sp, 0x1C] + str r1, [sp, 0x20] +_0807B89E: + adds r6, 0x4 + movs r1, 0x1 + add r9, r1 + ldr r2, [sp, 0x14] + cmp r9, r2 + blt _0807B81E +_0807B8AA: + ldr r3, [sp, 0x20] + cmp r3, 0 + blt _0807B8E0 + movs r0, 0x5 + ldr r4, [sp, 0x24] + strb r0, [r4] + ldr r1, [sp, 0x1C] + lsls r0, r1, 2 + ldr r2, [sp, 0x18] + adds r0, r2 + ldrh r1, [r0] + ldr r3, [sp, 0x28] + strh r1, [r3] + ldrh r0, [r0, 0x2] + ldr r4, [sp, 0x2C] + strh r0, [r4] + movs r0, 0x1 + b _0807B910 + .align 2, 0 +_0807B8D0: .4byte gDungeonGlobalData +_0807B8D4: .4byte 0x00010884 +_0807B8D8: .4byte 0x00010844 +_0807B8DC: .4byte 0xfff0bdc1 +_0807B8E0: + movs r0, 0x5 + ldr r1, [sp, 0x24] + strb r0, [r1] + ldr r2, [sp, 0xC] + ldrh r1, [r2, 0x4] + ldrh r0, [r7, 0x4] + subs r1, r0 + subs r0, r1 + ldr r3, [sp, 0x28] + strh r0, [r3] + ldrh r0, [r2, 0x6] + ldrh r1, [r7, 0x6] + subs r0, r1 + subs r1, r0 + ldr r0, [sp, 0x10] + adds r0, 0x8A + strh r1, [r0] + movs r0, 0x1 + b _0807B910 +_0807B906: + adds r0, r7, 0 + bl Explore + lsls r0, 24 + lsrs r0, 24 +_0807B910: + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end AvoidEnemies + + thumb_func_start Explore +Explore: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r6, r0, 0 + ldr r7, [r6, 0x70] + bl GetEntityRoomIndex + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xFF + bne _0807B9DC + movs r0, 0 + str r0, [sp, 0x4] + adds r4, r7, 0 + adds r4, 0x46 + ldrb r0, [r4] + adds r0, 0x4 + mov r8, r0 + movs r0, 0x7 + mov r1, r8 + ands r1, r0 + mov r8, r1 + adds r0, r6, 0 + bl IsAtJunction + lsls r0, 24 + mov r9, r4 + cmp r0, 0 + beq _0807B96C + movs r0, 0x8 + bl DungeonRandomCapped + strb r0, [r4] + movs r2, 0x1 + str r2, [sp, 0x4] +_0807B96C: + movs r3, 0 + movs r4, 0x78 + adds r4, r7 + mov r10, r4 + adds r0, r7, 0 + adds r0, 0x88 + str r0, [sp, 0x8] + adds r7, 0x8A + ldr r5, _0807B9D4 +_0807B97E: + mov r1, r9 + ldrb r0, [r1] + ldr r1, [r5] + adds r4, r0, r1 + movs r0, 0x7 + ands r4, r0 + ldr r2, [sp, 0x4] + cmp r2, 0 + beq _0807B994 + cmp r4, r8 + beq _0807B9AA +_0807B994: + adds r0, r6, 0 + adds r1, r4, 0 + mov r2, sp + str r3, [sp, 0xC] + bl CanMoveForward + lsls r0, 24 + ldr r3, [sp, 0xC] + cmp r0, 0 + beq _0807B9AA + b _0807BB42 +_0807B9AA: + adds r5, 0x4 + adds r3, 0x1 + cmp r3, 0x7 + ble _0807B97E + movs r0, 0x8 + bl DungeonRandomCapped + movs r1, 0x6 + mov r3, r10 + strb r1, [r3] + ldr r1, _0807B9D8 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0] + ldrh r4, [r6, 0x4] + adds r1, r4 + ldr r2, [sp, 0x8] + strh r1, [r2] + ldrh r0, [r0, 0x2] + b _0807BB5A + .align 2, 0 +_0807B9D4: .4byte gFaceDirectionIncrements +_0807B9D8: .4byte gAdjacentTileOffsets +_0807B9DC: + ldr r0, _0807BA30 + ldr r2, [r0] + lsls r1, r3, 1 + ldr r4, _0807BA34 + adds r0, r2, r4 + adds r0, r1 + movs r4, 0 + ldrsh r1, [r0, r4] + mov r8, r1 + lsls r0, r3, 7 + ldr r1, _0807BA38 + adds r0, r1 + adds r2, r0 + mov r9, r2 + movs r2, 0x8A + lsls r2, 1 + adds r0, r7, r2 + ldr r0, [r0] + cmp r0, 0 + beq _0807BA40 + movs r0, 0x8 + bl DungeonRandomCapped + adds r2, r7, 0 + adds r2, 0x78 + movs r1, 0x6 + strb r1, [r2] + ldr r1, _0807BA3C + lsls r0, 2 + adds r0, r1 + ldrh r1, [r0] + ldrh r3, [r6, 0x4] + adds r1, r3 + adds r2, 0x10 + strh r1, [r2] + ldrh r0, [r0, 0x2] + ldrh r6, [r6, 0x6] + adds r0, r6 + adds r1, r7, 0 + adds r1, 0x8A + strh r0, [r1] + b _0807BB60 + .align 2, 0 +_0807BA30: .4byte gDungeonGlobalData +_0807BA34: .4byte 0x00010844 +_0807BA38: .4byte 0x00010884 +_0807BA3C: .4byte gAdjacentTileOffsets +_0807BA40: + adds r0, r7, 0 + adds r0, 0x78 + ldrb r1, [r0] + mov r10, r0 + cmp r1, 0x4 + beq _0807BAA2 + mov r4, r8 + cmp r4, 0 + bne _0807BA84 + movs r0, 0x8 + bl DungeonRandomCapped + adds r4, r0, 0 + movs r0, 0x6 + mov r1, r10 + strb r0, [r1] + ldr r0, _0807BA80 + lsls r2, r4, 2 + adds r2, r0 + ldrh r0, [r2] + ldrh r3, [r6, 0x4] + adds r0, r3 + adds r1, r7, 0 + adds r1, 0x88 + strh r0, [r1] + ldrh r0, [r2, 0x2] + ldrh r6, [r6, 0x6] + adds r0, r6 + adds r1, 0x2 + strh r0, [r1] + b _0807BB60 + .align 2, 0 +_0807BA80: .4byte gAdjacentTileOffsets +_0807BA84: + movs r5, 0 +_0807BA86: + mov r0, r8 + bl DungeonRandomCapped + adds r4, r0, 0 + ldr r0, [r6, 0x4] + lsls r1, r4, 2 + mov r4, r9 + adds r2, r1, r4 + ldr r1, [r2] + cmp r0, r1 + bne _0807BB18 + adds r5, 0x1 + cmp r5, 0x9 + ble _0807BA86 +_0807BAA2: + movs r1, 0x4 + ldrsh r0, [r6, r1] + movs r2, 0x6 + ldrsh r1, [r6, r2] + bl GetMapTile_1 + ldrh r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0807BB60 + movs r0, 0x8 + bl DungeonRandomCapped + adds r4, r0, 0 + movs r3, 0 + mov r9, r3 +_0807BAC4: + movs r0, 0x7 + ands r4, r0 + movs r0, 0x4 + ldrsh r2, [r6, r0] + ldr r0, _0807BB14 + lsls r1, r4, 2 + adds r1, r0 + movs r3, 0 + ldrsh r0, [r1, r3] + adds r2, r0 + mov r8, r2 + movs r0, 0x6 + ldrsh r2, [r6, r0] + movs r3, 0x2 + ldrsh r0, [r1, r3] + adds r5, r2, r0 + mov r0, r8 + adds r1, r5, 0 + bl GetMapTile_1 + ldrb r0, [r0, 0x9] + cmp r0, 0xFF + bne _0807BB04 + adds r0, r6, 0 + adds r1, r4, 0 + mov r2, sp + adds r2, 0x1 + bl CanMoveForward + lsls r0, 24 + cmp r0, 0 + bne _0807BB2E +_0807BB04: + movs r0, 0x1 + add r9, r0 + adds r4, 0x1 + mov r1, r9 + cmp r1, 0x7 + ble _0807BAC4 + b _0807BB60 + .align 2, 0 +_0807BB14: .4byte gAdjacentTileOffsets +_0807BB18: + movs r0, 0x4 + mov r3, r10 + strb r0, [r3] + ldrh r1, [r2] + adds r0, r7, 0 + adds r0, 0x88 + strh r1, [r0] + ldrh r1, [r2, 0x2] + adds r0, 0x2 + strh r1, [r0] + b _0807BB60 +_0807BB2E: + movs r0, 0x3 + mov r4, r10 + strb r0, [r4] + adds r0, r7, 0 + adds r0, 0x88 + mov r1, r8 + strh r1, [r0] + adds r0, 0x2 + strh r5, [r0] + b _0807BB60 +_0807BB42: + movs r0, 0x3 + mov r2, r10 + strb r0, [r2] + ldr r0, _0807BB74 + lsls r1, r4, 2 + adds r1, r0 + ldrh r0, [r1] + ldrh r3, [r6, 0x4] + adds r0, r3 + ldr r4, [sp, 0x8] + strh r0, [r4] + ldrh r0, [r1, 0x2] +_0807BB5A: + ldrh r6, [r6, 0x6] + adds r0, r6 + strh r0, [r7] +_0807BB60: + movs r0, 0x1 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0807BB74: .4byte gAdjacentTileOffsets + thumb_func_end Explore + + thumb_func_start sub_807BB78 +sub_807BB78: + ldr r3, [r0, 0x70] + adds r1, r3, 0 + adds r1, 0x78 + movs r2, 0 + strb r2, [r1] + adds r1, 0x10 + ldr r0, [r0, 0x4] + str r0, [r1] + adds r0, r3, 0 + adds r0, 0x80 + str r2, [r0] + subs r0, 0x4 + strh r2, [r0] + bx lr + thumb_func_end sub_807BB78 + + .align 2, 0
\ No newline at end of file diff --git a/asm/code_807C4A0.s b/asm/code_807C4A0.s deleted file mode 100644 index 9cbdbb5..0000000 --- a/asm/code_807C4A0.s +++ /dev/null @@ -1,136 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start IsTargetInLineRange -IsTargetInLineRange: - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - ldrsh r1, [r4, r0] - movs r3, 0x4 - ldrsh r0, [r5, r3] - subs r3, r1, r0 - cmp r3, 0 - bge _0807C4B6 - negs r3, r3 -_0807C4B6: - movs r6, 0x6 - ldrsh r1, [r4, r6] - movs r7, 0x6 - ldrsh r0, [r5, r7] - subs r1, r0 - cmp r1, 0 - bge _0807C4C6 - negs r1, r1 -_0807C4C6: - adds r0, r1, 0 - cmp r1, r3 - bge _0807C4CE - adds r0, r3, 0 -_0807C4CE: - cmp r0, 0xA - bgt _0807C578 - cmp r0, r2 - bgt _0807C578 - movs r6, 0x1 - negs r6, r6 - cmp r3, r1 - bne _0807C516 - movs r0, 0x4 - ldrsh r1, [r4, r0] - movs r2, 0x4 - ldrsh r0, [r5, r2] - ldrh r2, [r4, 0x4] - ldrh r3, [r5, 0x4] - cmp r1, r0 - bge _0807C4FE - movs r6, 0x6 - ldrsh r1, [r4, r6] - movs r7, 0x6 - ldrsh r0, [r5, r7] - cmp r1, r0 - blt _0807C574 - cmp r1, r0 - bgt _0807C574 -_0807C4FE: - lsls r1, r2, 16 - lsls r0, r3, 16 - movs r6, 0x7 - cmp r1, r0 - ble _0807C570 - movs r0, 0x6 - ldrsh r1, [r4, r0] - movs r2, 0x6 - ldrsh r0, [r5, r2] - cmp r1, r0 - ble _0807C570 - b _0807C574 -_0807C516: - movs r3, 0x4 - ldrsh r1, [r4, r3] - movs r7, 0x4 - ldrsh r0, [r5, r7] - ldrh r2, [r4, 0x4] - ldrh r3, [r5, 0x4] - cmp r1, r0 - bne _0807C532 - movs r0, 0x6 - ldrsh r1, [r4, r0] - movs r7, 0x6 - ldrsh r0, [r5, r7] - cmp r1, r0 - blt _0807C574 -_0807C532: - lsls r1, r2, 16 - lsls r0, r3, 16 - cmp r1, r0 - bge _0807C546 - movs r0, 0x6 - ldrsh r1, [r4, r0] - movs r7, 0x6 - ldrsh r0, [r5, r7] - cmp r1, r0 - beq _0807C574 -_0807C546: - lsls r1, r2, 16 - lsls r0, r3, 16 - cmp r1, r0 - bne _0807C55A - movs r0, 0x6 - ldrsh r1, [r4, r0] - movs r7, 0x6 - ldrsh r0, [r5, r7] - cmp r1, r0 - bgt _0807C574 -_0807C55A: - lsls r1, r2, 16 - lsls r0, r3, 16 - cmp r1, r0 - ble _0807C570 - movs r0, 0x6 - ldrsh r1, [r4, r0] - movs r2, 0x6 - ldrsh r0, [r5, r2] - cmp r1, r0 - bne _0807C570 - movs r6, 0x6 -_0807C570: - cmp r6, 0 - blt _0807C578 -_0807C574: - movs r0, 0x1 - b _0807C57A -_0807C578: - movs r0, 0 -_0807C57A: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end IsTargetInLineRange - - .align 2, 0
\ No newline at end of file diff --git a/asm/code_807C7AC.s b/asm/code_807C7AC.s deleted file mode 100644 index b43caa8..0000000 --- a/asm/code_807C7AC.s +++ /dev/null @@ -1,322 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start WeightMove -WeightMove: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - mov r8, r2 - lsls r1, 16 - asrs r1, 16 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - movs r6, 0x1 - ldr r4, [r2, 0x70] - adds r7, r4, 0 - ldrb r0, [r4, 0x6] - cmp r0, 0 - beq _0807C7D6 - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - beq _0807C7DA -_0807C7D6: - movs r0, 0x1 - b _0807C848 -_0807C7DA: - adds r0, r5, 0 - movs r1, 0x9 - bl HasIQSkill - lsls r0, 24 - cmp r0, 0 - beq _0807C804 - ldr r0, _0807C7FC - ldr r0, [r0] - movs r2, 0x2 - ldrsh r1, [r4, r2] - ldr r2, _0807C800 - adds r0, r2 - adds r0, r1 - ldrb r6, [r0] - b _0807C846 - .align 2, 0 -_0807C7FC: .4byte gDungeonGlobalData -_0807C800: .4byte 0x0000363c -_0807C804: - adds r0, r5, 0 - movs r1, 0xA - bl HasIQSkill - lsls r0, 24 - cmp r0, 0 - beq _0807C828 - ldrb r1, [r7, 0xE] - movs r2, 0xC - negs r2, r2 - adds r0, r2, 0 - subs r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _0807C846 - movs r6, 0x1 - b _0807C846 -_0807C828: - adds r0, r5, 0 - movs r1, 0xB - bl HasIQSkill - lsls r0, 24 - cmp r0, 0 - beq _0807C846 - adds r0, r5, 0 - mov r1, r8 - mov r2, r9 - bl WeightWeakTypePicker - adds r0, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0807C846: - adds r0, r6, 0 -_0807C848: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end WeightMove - - thumb_func_start TargetRegularAttack -TargetRegularAttack: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x50 - adds r7, r0, 0 - str r1, [sp, 0x40] - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x44] - ldr r0, [r7, 0x70] - movs r1, 0 - mov r8, r1 - adds r1, r0, 0 - adds r1, 0x46 - ldrb r6, [r1] - adds r0, 0xE8 - ldrb r0, [r0] - movs r3, 0x8 - mov r10, r3 - cmp r0, 0x1 - bne _0807C886 - movs r0, 0x1 - mov r10, r0 -_0807C886: - movs r4, 0 - adds r0, r7, 0 - movs r1, 0x9 - bl HasIQSkill - lsls r0, 24 - cmp r0, 0 - bne _0807C8A4 - adds r0, r7, 0 - movs r1, 0xA - bl HasIQSkill - lsls r0, 24 - cmp r0, 0 - beq _0807C8A6 -_0807C8A4: - movs r4, 0x1 -_0807C8A6: - str r4, [sp, 0x48] - adds r0, r7, 0 - movs r1, 0x8 - bl HasIQSkill - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4C] - movs r1, 0 - mov r9, r1 - cmp r9, r10 - bge _0807C952 -_0807C8BE: - movs r0, 0x7 - ands r6, r0 - movs r3, 0x4 - ldrsh r0, [r7, r3] - ldr r1, _0807C95C - lsls r2, r6, 2 - adds r2, r1 - movs r3, 0 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r3, 0x6 - ldrsh r1, [r7, r3] - movs r3, 0x2 - ldrsh r2, [r2, r3] - adds r1, r2 - bl GetMapTile_1 - ldr r5, [r0, 0x10] - cmp r5, 0 - beq _0807C948 - adds r0, r5, 0 - bl GetEntityType - cmp r0, 0x1 - bne _0807C948 - adds r0, r7, 0 - adds r1, r6, 0 - bl CanAttackInFront - lsls r0, 24 - cmp r0, 0 - beq _0807C948 - adds r0, r7, 0 - adds r1, r5, 0 - movs r2, 0 - ldr r3, [sp, 0x44] - bl CanTarget - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807C948 - ldr r0, [sp, 0x4C] - cmp r0, 0 - beq _0807C922 - ldr r0, [r5, 0x70] - adds r0, 0xB0 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0807C948 -_0807C922: - mov r1, r8 - lsls r4, r1, 2 - mov r3, sp - adds r0, r3, r4 - str r6, [r0] - adds r0, r7, 0 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0 - bl WeightMove - add r1, sp, 0x20 - adds r1, r4 - str r0, [r1] - ldr r0, [sp, 0x48] - cmp r0, 0 - beq _0807C960 - movs r1, 0x1 - add r8, r1 -_0807C948: - movs r3, 0x1 - add r9, r3 - adds r6, 0x1 - cmp r9, r10 - blt _0807C8BE -_0807C952: - mov r0, r8 - cmp r0, 0 - bne _0807C966 - movs r0, 0 - b _0807C9E8 - .align 2, 0 -_0807C95C: .4byte gAdjacentTileOffsets -_0807C960: - ldr r1, [sp, 0x40] - str r6, [r1] - b _0807C9E6 -_0807C966: - movs r4, 0 - movs r3, 0 - mov r0, r8 - cmp r0, 0 - ble _0807C984 - add r1, sp, 0x20 - mov r2, r8 -_0807C974: - ldr r0, [r1] - cmp r3, r0 - bge _0807C97C - adds r3, r0, 0 -_0807C97C: - adds r1, 0x4 - subs r2, 0x1 - cmp r2, 0 - bne _0807C974 -_0807C984: - mov r1, r8 - cmp r1, 0 - ble _0807C9A0 - movs r5, 0 - add r1, sp, 0x20 - mov r2, r8 -_0807C990: - ldr r0, [r1] - cmp r3, r0 - beq _0807C998 - str r5, [r1] -_0807C998: - adds r1, 0x4 - subs r2, 0x1 - cmp r2, 0 - bne _0807C990 -_0807C9A0: - mov r3, r8 - cmp r3, 0 - ble _0807C9B4 - add r1, sp, 0x20 - mov r2, r8 -_0807C9AA: - ldm r1!, {r0} - adds r4, r0 - subs r2, 0x1 - cmp r2, 0 - bne _0807C9AA -_0807C9B4: - adds r0, r4, 0 - bl DungeonRandomCapped - adds r1, r0, 0 - movs r2, 0 - cmp r2, r8 - bge _0807C9DC - ldr r0, [sp, 0x20] - subs r1, r0 - cmp r1, 0 - blt _0807C9DC - add r3, sp, 0x20 -_0807C9CC: - adds r3, 0x4 - adds r2, 0x1 - cmp r2, r8 - bge _0807C9DC - ldr r0, [r3] - subs r1, r0 - cmp r1, 0 - bge _0807C9CC -_0807C9DC: - lsls r0, r2, 2 - add r0, sp - ldr r0, [r0] - ldr r1, [sp, 0x40] - str r0, [r1] -_0807C9E6: - movs r0, 0x1 -_0807C9E8: - add sp, 0x50 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end TargetRegularAttack - - .align 2, 0
\ No newline at end of file diff --git a/asm/code_8090208.s b/asm/code_8090208.s index 81ff2ec..5b097fe 100644 --- a/asm/code_8090208.s +++ b/asm/code_8090208.s @@ -676,7 +676,7 @@ _080907DA: bne _0809080C ldr r1, _08090808 adds r0, r7, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 movs r0, 0 b _0809080E .align 2, 0 diff --git a/asm/code_8098BDC.s b/asm/code_8098BDC.s index 32f6f5d..e354b7d 100644 --- a/asm/code_8098BDC.s +++ b/asm/code_8098BDC.s @@ -3,7 +3,7 @@ .syntax unified - .text + .text thumb_func_start sub_8098FCC sub_8098FCC: @@ -4305,7 +4305,7 @@ _0809B0E4: lsls r2, 4 ldr r3, _0809B13C adds r2, r3 - bl ExpandPlaceholdersBuffer + bl sprintf_2 _0809B0F6: adds r0, r4, 0 bl sub_809AE3C @@ -4602,7 +4602,7 @@ _0809B318: lsls r2, 4 ldr r3, _0809B3D8 adds r2, r3 - bl ExpandPlaceholdersBuffer + bl sprintf_2 _0809B32A: ldr r0, _0809B3DC mov r8, r0 @@ -4614,7 +4614,7 @@ _0809B32A: ldr r1, _0809B3E0 adds r0, r4, 0 adds r2, r7, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 adds r7, r4, 0 _0809B344: adds r0, r6, 0 @@ -7670,7 +7670,7 @@ sub_809CBBC: adds r0, r3 ldr r3, [r0] mov r0, sp - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, _0809CC14 ldr r0, [r0] movs r1, 0x98 diff --git a/asm/friend_rescue.s b/asm/friend_rescue.s index 241bbf6..44b8b08 100644 --- a/asm/friend_rescue.s +++ b/asm/friend_rescue.s @@ -1542,7 +1542,7 @@ _080335C0: adds r0, r4 ldr r1, _080335F0 add r2, sp, 0x14 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, [r5] adds r0, r4 b _0803388E diff --git a/asm/kecleon_items_1.s b/asm/kecleon_items_1.s index e892e48..97b2812 100644 --- a/asm/kecleon_items_1.s +++ b/asm/kecleon_items_1.s @@ -241,7 +241,7 @@ _0801AB90: ldr r1, _0801AC08 adds r0, r5, 0 add r2, sp, 0x4 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r4, _0801AC0C ldr r0, [r4] adds r0, 0x54 diff --git a/asm/makuhita_dojo.s b/asm/makuhita_dojo.s index f43f21f..7d7680e 100644 --- a/asm/makuhita_dojo.s +++ b/asm/makuhita_dojo.s @@ -829,7 +829,7 @@ _08030608: add r0, sp, 0x8 ldr r1, _08030664 adds r2, r5, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 mov r5, r8 ldr r0, [r5] ldr r3, [r0, 0x64] diff --git a/asm/wonder_mail_2.s b/asm/wonder_mail_2.s index 383a1c6..19e314f 100644 --- a/asm/wonder_mail_2.s +++ b/asm/wonder_mail_2.s @@ -139,7 +139,7 @@ _0802BFE8: adds r1, r0, 0 mov r0, r8 mov r2, r9 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, [r7] ldr r3, [r0, 0x38] movs r0, 0 diff --git a/asm/wonder_mail_4.s b/asm/wonder_mail_4.s index 8103af1..c4c2ccd 100644 --- a/asm/wonder_mail_4.s +++ b/asm/wonder_mail_4.s @@ -865,7 +865,7 @@ _08030EE8: ldr r1, _08030F54 adds r0, r6, 0 adds r2, r4, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, [r5] ldr r3, [r0, 0x10] mov r0, r8 diff --git a/asm/wonder_mail_5.s b/asm/wonder_mail_5.s index e461b13..aa081ae 100644 --- a/asm/wonder_mail_5.s +++ b/asm/wonder_mail_5.s @@ -56,7 +56,7 @@ _08031B2C: ldr r1, _08031B8C ldrb r2, [r5, 0x5] add r0, sp, 0x4 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, [r7] ldr r3, [r0, 0x10] str r6, [sp] @@ -71,7 +71,7 @@ _08031B2C: adds r2, r0, 0 add r0, sp, 0x4 adds r1, r4, 0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, [r7] ldr r3, [r0, 0x10] str r6, [sp] @@ -136,7 +136,7 @@ _08031BC2: ldrb r2, [r4, 0x5] ldr r0, [sp, 0xD8] ldr r1, _08031C2C - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, [r7] ldr r3, [r0, 0x10] mov r0, r8 @@ -167,7 +167,7 @@ _08031C30: adds r0, r5, 0 ldr r1, _08031C54 mov r2, r9 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, [r7] ldr r3, [r0, 0x10] mov r1, r8 @@ -194,7 +194,7 @@ _08031C70: adds r0, r5, 0 ldr r1, _08031C98 _08031C7E: - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, [r7] ldr r3, [r0, 0x10] mov r2, r8 @@ -214,7 +214,7 @@ _08031C9C: adds r2, r0, 0 adds r0, r5, 0 ldr r1, _08031CD0 - bl ExpandPlaceholdersBuffer + bl sprintf_2 ldr r0, [r7] ldr r3, [r0, 0x10] mov r2, r8 diff --git a/data/data_80F4E2C.s b/data/data_80F4E2C.s index 367ed2e..1d81050 100644 --- a/data/data_80F4E2C.s +++ b/data/data_80F4E2C.s @@ -805,28 +805,3 @@ gUnknown_80F51EC: @ 80F51EC .global gUnknown_80F520C gUnknown_80F520C: @ 80F520C .incbin "baserom.gba", 0xF520C, 0x20 - - .global gTypeEffectivenessChart -gTypeEffectivenessChart: @ 80F522C - .incbin "baserom.gba", 0xF522C, 0x288 - - .global gUnknown_80F54B4 -gUnknown_80F54B4: @ 80F54B4 - .incbin "baserom.gba", 0xF54B4, 0x40 - - .global gUnknown_80F54F4 -gUnknown_80F54F4: @ 80F54F4 - .incbin "baserom.gba", 0xF54F4, 0xA0 - - .global gWarpScarfActivationChances -gWarpScarfActivationChances: @ 80F5594 -@ replacing .incbin "baserom.gba", 0xF5594, 0x28 - .2byte 0, 6, 12, 30, 50, 70, 90, 110, 130, 150, 170, 190, 210, 230, 250, 270, 290, 310, 999, 0 - - .global gUnknown_80F55BC -gUnknown_80F55BC: @ 80F55BC - .incbin "baserom.gba", 0xF55BC, 0x30 - - .global gUnknown_80F55EC -gUnknown_80F55EC: @ 80F55EC - .incbin "baserom.gba", 0xF55EC, 0x30 diff --git a/data/data_80F54B4.s b/data/data_80F54B4.s new file mode 100644 index 0000000..3b2262a --- /dev/null +++ b/data/data_80F54B4.s @@ -0,0 +1,22 @@ + .section .rodata + + .global gUnknown_80F54B4 +gUnknown_80F54B4: @ 80F54B4 + .incbin "baserom.gba", 0xF54B4, 0x40 + + .global gUnknown_80F54F4 +gUnknown_80F54F4: @ 80F54F4 + .incbin "baserom.gba", 0xF54F4, 0xA0 + + .global gWarpScarfActivationChances +gWarpScarfActivationChances: @ 80F5594 +@ replacing .incbin "baserom.gba", 0xF5594, 0x28 + .2byte 0, 6, 12, 30, 50, 70, 90, 110, 130, 150, 170, 190, 210, 230, 250, 270, 290, 310, 999, 0 + + .global gUnknown_80F55BC +gUnknown_80F55BC: @ 80F55BC + .incbin "baserom.gba", 0xF55BC, 0x30 + + .global gUnknown_80F55EC +gUnknown_80F55EC: @ 80F55EC + .incbin "baserom.gba", 0xF55EC, 0x30 diff --git a/data/data_8106A4C.s b/data/data_8106A4C.s index d8e604b..5cb7a3b 100644 --- a/data/data_8106A4C.s +++ b/data/data_8106A4C.s @@ -347,18 +347,3 @@ gUnknown_8106F54: @ 8106F54 gUnknown_8106F64: @ 8106F64 .byte 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0xC0, 0x00, 0x00 - - .global gTypeEffectivenessMultipliers -gTypeEffectivenessMultipliers: @ 8106F6C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00 - - .global gUnknown_8106F7C -gUnknown_8106F7C: @ 8106F7C - .incbin "baserom.gba", 0x106F7C, 0x28 - - .global gUnknown_8106FA4 -gUnknown_8106FA4: @ 8106FA4 - .string "{COLOR_2}%c%s{END_COLOR_TEXT_2}\0" diff --git a/data/data_8106F7C.s b/data/data_8106F7C.s new file mode 100644 index 0000000..07165d7 --- /dev/null +++ b/data/data_8106F7C.s @@ -0,0 +1,9 @@ + .section .rodata + + .global gUnknown_8106F7C +gUnknown_8106F7C: @ 8106F7C + .incbin "baserom.gba", 0x106F7C, 0x28 + + .global gUnknown_8106FA4 +gUnknown_8106FA4: @ 8106FA4 + .string "{COLOR_2}%c%s{END_COLOR_TEXT_2}\0" diff --git a/include/charge_move.h b/include/charge_move.h index fd88a62..e1ef306 100644 --- a/include/charge_move.h +++ b/include/charge_move.h @@ -3,9 +3,7 @@ #include "dungeon_entity.h" -// 0x570AC bool8 MoveMatchesChargingStatus(struct DungeonEntity *pokemon, struct PokemonMove *move); -// 0x570F4 // checkCharge = Check for the move named Charge. bool8 IsCharging(struct DungeonEntity *pokemon, bool8 checkCharge); diff --git a/include/code_800D090.h b/include/code_800D090.h new file mode 100644 index 0000000..6f85dd4 --- /dev/null +++ b/include/code_800D090.h @@ -0,0 +1,6 @@ +#ifndef GUARD_CODE_800D090_H +#define GUARD_CODE_800D090_H + +void sprintf_2(char *buffer, const char *text, ...); + +#endif
\ No newline at end of file diff --git a/include/constants/move.h b/include/constants/move.h index 0601969..e5de485 100644 --- a/include/constants/move.h +++ b/include/constants/move.h @@ -1,7 +1,9 @@ #ifndef GUARD_CONSTANTS_MOVE_H #define GUARD_CONSTANTS_MOVE_H -enum MoveFlags +#define STRUGGLE_MOVE_INDEX 4 + +enum MoveFlag { MOVE_FLAG_EXISTS = 1 << 0, MOVE_FLAG_LINKED = 1 << 1, // This move is linked with the previous move in the Pokémon's moveset. @@ -11,6 +13,13 @@ enum MoveFlags MOVE_FLAG_DISABLED = 1 << 5 // Disabled by an effect like Taunt. }; +enum MoveFlag2 +{ + MOVE_FLAG_SEALED = 1 << 0, + MOVE_FLAG_TEMPORARY = 1 << 3, // Used for moves copied by Mimic. + MOVE_FLAG_REPLACE = 1 << 5 // Used for moves copied by Sketch. +}; + enum AccuracyType { // Accuracy used for all moves. @@ -28,7 +37,6 @@ struct MoveData u8 *namePointer; /* 0x4 */ s16 power; u8 type; - u8 fill7; // Determines the range of moves. /* 0x8 */ u16 targetingFlags[2]; // 0 for player and 1 for AI // The AI consider certain moves to have different range than they actually do. @@ -52,7 +60,7 @@ struct MoveData struct PokemonMove { u8 moveFlags; - bool8 sealed; + u8 moveFlags2; u16 moveID; u8 PP; u8 powerBoost; // How much the move is boosted by Ginsengs. diff --git a/include/constants/type.h b/include/constants/type.h index 6ca9177..c6fab07 100644 --- a/include/constants/type.h +++ b/include/constants/type.h @@ -1,6 +1,8 @@ #ifndef GUARD_CONSTANTS_TYPE_H #define GUARD_CONSTANTS_TYPE_H +#define NUM_TYPES 18 + #define TYPE_NONE 0x0 #define TYPE_NORMAL 0x1 #define TYPE_FIRE 0x2 diff --git a/include/dungeon_action.h b/include/dungeon_action.h index 48f81d5..d625ba5 100644 --- a/include/dungeon_action.h +++ b/include/dungeon_action.h @@ -3,9 +3,8 @@ #include "dungeon_entity.h" -// 0x44C94 +void ResetAction(struct DungeonActionContainer *actionPointer); void SetAction(struct DungeonActionContainer *actionPointer, u16 action); -// 0x44CA0 void SetWalkAction(struct DungeonActionContainer *actionPointer, s16 species); #endif diff --git a/include/dungeon_ai_attack.h b/include/dungeon_ai_attack.h index 1878889..cd8d9d8 100644 --- a/include/dungeon_ai_attack.h +++ b/include/dungeon_ai_attack.h @@ -3,6 +3,8 @@ #include "dungeon_entity.h" +#define RANGED_ATTACK_RANGE 10 + struct MoveTargetResults { bool8 moveUsable; @@ -10,9 +12,13 @@ struct MoveTargetResults s32 moveWeight; }; -// 0x7BB94 void DecideAttack(struct DungeonEntity *pokemon); -// 0x7C04C s32 FindMoveTarget(struct MoveTargetResults *moveTargetResults, struct DungeonEntity *pokemon, struct PokemonMove *move); +bool8 IsTargetInLineRange(struct DungeonEntity *user, struct DungeonEntity *target, s32 range); +s32 WeightMoveIfUsable(s32 numPotentialTargets, s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, u32 hasStatusChecker); +bool8 CanUseStatusMove(s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, bool32 hasStatusChecker); +s32 WeightMove(struct DungeonEntity *user, s32 targetingFlags, struct DungeonEntity *target, u32 moveType); +bool8 TargetRegularAttack(struct DungeonEntity *pokemon, u32 *targetDir, bool8 checkPetrified); +bool8 IsTargetStraightAhead(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, s32 facingDir, s32 maxRange); #endif diff --git a/include/dungeon_ai_attack_1.h b/include/dungeon_ai_attack_1.h deleted file mode 100644 index 7272256..0000000 --- a/include/dungeon_ai_attack_1.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef GUARD_DUNGEON_AI_ATTACK_1_H -#define GUARD_DUNGEON_AI_ATTACK_1_H - -#include "dungeon_entity.h" - -// 0x7C580 -s32 WeightMoveIfUsable(s32 numPotentialTargets, s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, u32 hasStatusChecker); -// 0x7C648 -bool8 CanUseStatusMove(s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, bool32 hasStatusChecker); - -#endif diff --git a/include/dungeon_ai_attack_2.h b/include/dungeon_ai_attack_2.h deleted file mode 100644 index 00711b6..0000000 --- a/include/dungeon_ai_attack_2.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef GUARD_DUNGEON_AI_ATTACK_2_H -#define GUARD_DUNGEON_AI_ATTACK_2_H - -#include "dungeon_entity.h" - -// 0x7C9F8 -bool8 IsTargetStraightAhead(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, s32 facingDir, s32 maxRange); - -#endif diff --git a/include/dungeon_ai_item_weight.h b/include/dungeon_ai_item_weight.h index a498744..871e68b 100644 --- a/include/dungeon_ai_item_weight.h +++ b/include/dungeon_ai_item_weight.h @@ -3,9 +3,7 @@ #include "dungeon_entity.h" -// 0x48F28 u32 EvaluateItem(struct DungeonEntity *targetPokemon, struct ItemSlot *item, u32 itemTargetFlags); -// 0x494EC bool8 CanTargetAdjacentPokemon(struct DungeonEntity *pokemon); #endif diff --git a/include/dungeon_ai_items.h b/include/dungeon_ai_items.h index 5daf7b0..91e0a22 100644 --- a/include/dungeon_ai_items.h +++ b/include/dungeon_ai_items.h @@ -4,13 +4,9 @@ #include "dungeon_entity.h" #include "position.h" -// 0x73658 void DecideUseItem(struct DungeonEntity *pokemon); -// 0x739DC void FindStraightThrowableTargets(struct DungeonEntity *pokemon, s32 thrownAIFlag, struct ItemSlot *item, bool8 ignoreRollChance); -// 0x73AA0 void FindRockItemTargets(struct DungeonEntity *pokemon, struct ItemSlot *item, struct Position potentialTargets[], bool8 ignoreRollChance); -// 0x73B78 void TargetThrownItem(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, struct ItemSlot *item, s32 targetingFlags, bool8 ignoreRollChance); #endif diff --git a/include/dungeon_ai_movement.h b/include/dungeon_ai_movement.h index 27bb00f..d53ab06 100644 --- a/include/dungeon_ai_movement.h +++ b/include/dungeon_ai_movement.h @@ -3,7 +3,6 @@ #include "dungeon_entity.h" -// 0x75990 void DecideAction(struct DungeonEntity *pokemon); #endif diff --git a/include/dungeon_ai_targeting.h b/include/dungeon_ai_targeting.h index 945c490..ae5b952 100644 --- a/include/dungeon_ai_targeting.h +++ b/include/dungeon_ai_targeting.h @@ -3,7 +3,6 @@ #include "dungeon_entity.h" -// 0x71138 bool8 CanAttackInFront(struct DungeonEntity *pokemon, s32 direction); #endif diff --git a/include/dungeon_ai_targeting_1.h b/include/dungeon_ai_targeting_1.h index 49b700f..d59a0ee 100644 --- a/include/dungeon_ai_targeting_1.h +++ b/include/dungeon_ai_targeting_1.h @@ -3,9 +3,7 @@ #include "dungeon_entity.h" -// 0x71494 bool8 ShouldAvoidEnemies(struct DungeonEntity *pokemon); -// 0x71518 bool8 ShouldAvoidEnemiesAndShowEffect(struct DungeonEntity *pokemon, bool8 showRunAwayEffect); #endif diff --git a/include/dungeon_ai_targeting_2.h b/include/dungeon_ai_targeting_2.h index c314646..5fe43a3 100644 --- a/include/dungeon_ai_targeting_2.h +++ b/include/dungeon_ai_targeting_2.h @@ -3,7 +3,6 @@ #include "dungeon_entity.h" -// 0x71598 u8 CanTarget(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, bool8 ignoreInvisible, bool8 checkPetrified); #endif diff --git a/include/dungeon_capabilities.h b/include/dungeon_capabilities.h index 6574b32..f4a0306 100644 --- a/include/dungeon_capabilities.h +++ b/include/dungeon_capabilities.h @@ -3,7 +3,6 @@ #include "dungeon_entity.h" -// 0x70B6C bool8 CannotMove(struct DungeonEntity *pokemon, bool8 checkBlinker); #endif diff --git a/include/dungeon_capabilities_1.h b/include/dungeon_capabilities_1.h index 1319230..5c8e3d0 100644 --- a/include/dungeon_capabilities_1.h +++ b/include/dungeon_capabilities_1.h @@ -3,13 +3,9 @@ #include "dungeon_entity.h" -// 0x70C60 bool8 CannotUseItems(struct DungeonEntity *pokemon); -// 0x70CD0 bool8 CannotAct(struct DungeonEntity *pokemon); -// 0x70d04 bool8 CannotAttack(struct DungeonEntity *pokemon, bool8 skipSleep); -// 0x70D6C bool8 CanMoveInDirection(struct DungeonEntity *pokemon, u32 facingDir); #endif diff --git a/include/dungeon_engine.h b/include/dungeon_engine.h index d2be40b..e4fa7f4 100644 --- a/include/dungeon_engine.h +++ b/include/dungeon_engine.h @@ -1,9 +1,7 @@ #ifndef GUARD_DUNGEON_ENGINE_H #define GUARD_DUNGEON_ENGINE_H -// 0x441BC bool8 IsBossBattle(); -// 0x441E8 bool8 IsFixedDungeon(); #endif diff --git a/include/dungeon_entity.h b/include/dungeon_entity.h index 2567f79..1e4b884 100644 --- a/include/dungeon_entity.h +++ b/include/dungeon_entity.h @@ -7,10 +7,20 @@ #include "position.h" #define MAX_STAT_STAGE 20 +#define STAT_MULTIPLIER_THRESHOLD 63 +#define DEFAULT_STAT_STAGE 10 +#define DEFAULT_STAT_MULTIPLIER 256 #define MAX_MOVEMENT_SPEED 4 #define MAX_STOCKPILE_COUNT 3 #define NUM_SPEED_TURN_COUNTERS 5 +#define STAT_STAGE_ATTACK 0 +#define STAT_STAGE_SPECIAL_ATTACK 1 +#define STAT_STAGE_DEFENSE 0 +#define STAT_STAGE_SPECIAL_DEFENSE 1 +#define STAT_STAGE_ACCURACY 0 +#define STAT_STAGE_EVASION 1 + struct DungeonActionContainer { /* 0x0 */ u16 action; @@ -18,7 +28,6 @@ struct DungeonActionContainer u8 fill3; // Additional parameter alongside actionIndex. Used for things like indicating which move a Pokémon should use from its moveset. /* 0x4 */ u8 actionUseIndex; - u8 fill5[0x8 - 0x5]; // Position of the Pokémon the last time it threw an item. /* 0x8 */ struct Position lastItemThrowPosition; u8 unkC; @@ -39,7 +48,6 @@ struct DungeonEntityData /* 0x8 */ u8 shopkeeperMode; /* 0x9 */ u8 level; /* 0xA */ u8 partyIndex; // Leader is 0, partner is 1, etc. - u8 fillB; /* 0xC */ s16 IQ; /* 0xE */ s16 HP; /* 0x10 */ s16 maxHP; @@ -52,33 +60,29 @@ struct DungeonEntityData /* 0x18 */ u32 expPoints; // Temporary stat boosts/drops from effects like Growl or Swords Dance. // These start at 10 and are in the range [1, 19]. - /* 0x1C */ s16 attackStage; - /* 0x1E */ s16 specialAttackStage; - /* 0x20 */ s16 defenseStage; - /* 0x22 */ s16 specialDefenseStage; - /* 0x24 */ s16 accuracyStage; - /* 0x26 */ s16 evasionStage; + // Index 0 is Attack. Index 1 is Special Attack. + /* 0x1C */ s16 attackStages[2]; + // Index 0 is Defense. Index 1 is Special Defense. + /* 0x20 */ s16 defenseStages[2]; + // Index 0 is accuracy. Index 1 is evasion. + /* 0x24 */ s16 accuracyStages[2]; // // When a Fire-type move is used on a Pokémon with Flash Fire, this value increases the power of the Pokémon's Fire-type moves. /* 0x28 */ s16 flashFireBoost; - u8 fill2A[0x2C - 0x2A]; // These start at 0x1000, and are halved by certain moves like Screech to lower the corresponding stat. - /* 0x2C */ s32 attackMultiplier; - /* 0x30 */ s32 specialAttackMultiplier; - /* 0x34 */ s32 defenseMultiplier; - /* 0x38 */ s32 specialDefenseMultiplier; + // Index 0 is Attack. Index 1 is Special Attack. + /* 0x2C */ s32 attackMultipliers[2]; + // Index 0 is Defense. Index 1 is Special Defense. + /* 0x34 */ s32 defenseMultipliers[2]; /* 0x3C */ s16 hiddenPowerPower; /* 0x3E */ u8 hiddenPowerType; u8 fill3F; /* 0x40 */ u8 joinLocation; // Uses the dungeon index in dungeon.h. - u8 fill41[0x44 - 0x41]; /* 0x44 */ struct DungeonActionContainer action; u8 fill55[0x58 - 0x55]; // Position of the target that the Pokémon wants throw an item at. /* 0x58 */ struct Position itemTargetPosition; - /* 0x5C */ u8 type1; - /* 0x5D */ u8 type2; - /* 0x5E */ u8 ability1; - /* 0x5F */ u8 ability2; + /* 0x5C */ u8 types[2]; + /* 0x5E */ u8 abilities[2]; /* 0x60 */ struct ItemSlot heldItem; u8 fill64[0x68 - 0x64]; /* 0x68 */ struct Position previousPosition1; @@ -90,7 +94,6 @@ struct DungeonEntityData /* 0x7A */ bool8 hasTarget; /* 0x7B */ bool8 turnAround; /* 0x7C */ u16 targetPokemonSpawnIndex; - u8 fill7E[0x80 - 0x7E]; /* 0x80 */ u32 targetPokemon; u8 fill84[0x88 - 0x84]; /* 0x88 */ struct Position targetMovePosition; @@ -168,7 +171,6 @@ struct DungeonEntityData /* 0xFD */ u8 perishSongTimer; // When this reaches 0, the Pokémon faints from Perish Song. Doubles as a bool for whether the Pokémon is afflicted by Perish Song. u8 fillFE[0x100 - 0xFE]; /* 0x100 */ u8 targetingDecoy; // If the Pokémon is targeting a decoy, this indicates whether the decoy target is a team or wild Pokémon. - u8 fill101[0x104 - 0x101]; /* 0x104 */ s32 movementSpeed; // The turn counter for movement speed up/down is split into five timers each. Multiple timers are used if the Pokémon is affected by multiple // speed-up/slow effects at once, like using Agility twice. @@ -179,10 +181,8 @@ struct DungeonEntityData // When true, an AI Pokémon will move in a random direction every turn. // Unclear where this is set in-game; it is not set by statuses (e.g., confusion) or mission clients. /* 0x114 */ bool8 moveRandomly; - u8 fill115[0x118 - 0x115]; /* 0x118 */ struct PokemonMove moves[MAX_MON_MOVES]; /* 0x138 */ u8 struggleMoveFlags; - u8 fill139[0x13C - 0x139]; /* 0x13C */ u32 belly; /* 0x140 */ u32 maxBelly; /* 0x144 */ bool8 movingIntoTarget; // True if an AI Pokémon is following another Pokémon and is already adjacent to them. @@ -201,7 +201,6 @@ struct DungeonEntityData u8 unk15F; u8 fill160[0x169 - 0x160]; u8 turnsSinceWarpScarfActivation; - u8 fill16A[0x16C - 0x16A]; /* 0x16C */ struct Position targetPosition; /* 0x170 */ struct Position posPixel; u32 unk174; @@ -210,7 +209,6 @@ struct DungeonEntityData /* 0x184 */ struct Position previousTargetMovePosition1; /* 0x188 */ struct Position32 previousTargetMovePosition2; /* 0x190 */ u8 lastMoveDirection; // The last direction that the Pokémon moved in. - u8 fill191[0x194 - 0x191]; // Number of tiles that the Pokémon moved last, multiplied by 0x100. /* 0x194 */ struct Position32 lastMoveIncrement; /* 0x19C */ u8 walkAnimationCounter; // Set when the Pokémon starts moving, and counts down until the Pokémon's walk animation stops. @@ -220,9 +218,7 @@ struct DungeonEntityData /* 0x1F6 */ bool8 notMoving; u8 fill1F7[0x1FA - 0x1F7]; /* 0x1FA */ u8 mobileTurnTimer; // When a Pokémon can pass through walls in a hallway, this counts up to 200 before the Pokémon turns in a random direction. - u8 fill1FB; /* 0x1FC */ u16 expGainedInTurn; // Used to accumulate experience when multiple enemies are defeated in one turn. - u8 fill1FE[0x200 - 0x1FE]; /* 0x200 */ u32 statusSprites; u32 unk204; }; @@ -273,7 +269,6 @@ struct DungeonEntity /* 0x6A */ u8 unk6B; /* 0x6C */ u8 facingDir; /* 0x6D */ u8 facingDir2; // Duplicate of 0x6C? - u8 fill6D[0x70 - 0x6E]; /* 0x70 */ struct DungeonEntityData *entityData; }; diff --git a/include/dungeon_global_data.h b/include/dungeon_global_data.h index 74e052e..924fa9e 100644 --- a/include/dungeon_global_data.h +++ b/include/dungeon_global_data.h @@ -53,7 +53,6 @@ struct DungeonGlobalData /* 0x3A0E */ s16 tileset; u8 fill3A10[0x3A14 - 0x3A10]; /* 0x3A14 */ s16 bossBattleIndex; - u8 fill3A16[0x3A18 - 0x3A16]; /* 0x3A18 */ struct MapTile mapTiles[DUNGEON_MAX_SIZE_Y][DUNGEON_MAX_SIZE_X]; u8 fillE218[0xE23C - 0xE218]; s16 unkE23C; diff --git a/include/dungeon_items.h b/include/dungeon_items.h index 8eb1718..0c227c2 100644 --- a/include/dungeon_items.h +++ b/include/dungeon_items.h @@ -3,7 +3,6 @@ #include "dungeon_entity.h" -// 0x46CB0 bool8 HasItem(struct DungeonEntity *pokemon, u8 itemIndex); #endif diff --git a/include/dungeon_map_access.h b/include/dungeon_map_access.h index c715483..dc5790c 100644 --- a/include/dungeon_map_access.h +++ b/include/dungeon_map_access.h @@ -8,9 +8,7 @@ struct unkStruct_202F190 struct MapTile* unk0[6]; }; -// 0x4954C struct MapTile* GetMapTile_1(s32 x, s32 y); -// 0x49590 struct MapTile* GetMapTile_2(s32 x, s32 y); #endif diff --git a/include/dungeon_movement.h b/include/dungeon_movement.h index d15ef1b..111d98b 100644 --- a/include/dungeon_movement.h +++ b/include/dungeon_movement.h @@ -1,7 +1,6 @@ #ifndef GUARD_DUNGEON_MOVEMENT_H #define GUARD_DUNGEON_MOVEMENT_H -// 0x70328 u8 GetCrossableTerrain(s16 species); #endif diff --git a/include/dungeon_pokemon_attributes.h b/include/dungeon_pokemon_attributes.h index 40b13ee..c09a657 100644 --- a/include/dungeon_pokemon_attributes.h +++ b/include/dungeon_pokemon_attributes.h @@ -3,22 +3,14 @@ #include "dungeon_entity.h" -// 0x71824 bool8 HasAbility(struct DungeonEntity *pokemon, u8 ability); -// 0x71858 bool8 HasType(struct DungeonEntity *pokemon, u8 type); -// 0x71884 bool8 CanSeeInvisible(struct DungeonEntity *pokemon); -// 0x718AC bool8 HasTactic(struct DungeonEntity *pokemon, u8 tactic); -// 0x718D8 bool8 HasIQSkill(struct DungeonEntity *pokemon, u8 IQSkill); - void LoadIQSkills(struct DungeonEntity *pokemon); bool8 CanSeeTeammate(struct DungeonEntity * pokemon); u8 GetMoveTypeForPokemon(struct DungeonEntity *pokemon, struct PokemonMove *pokeMove); - -// 0x71A44 s32 CalculateMovePower(struct DungeonEntity *pokemon, struct PokemonMove *pokeMove); bool8 ToolboxEnabled(struct DungeonEntityData *pokemon); diff --git a/include/dungeon_random.h b/include/dungeon_random.h index 5679720..b53b4bb 100644 --- a/include/dungeon_random.h +++ b/include/dungeon_random.h @@ -1,9 +1,7 @@ #ifndef GUARD_DUNGEON_RANDOM_H #define GUARD_DUNGEON_RANDOM_H -// 0x840E8 s32 DungeonRandom(void); -// 0x84100 s32 DungeonRandomCapped(s32 cap); #endif diff --git a/include/dungeon_random_1.h b/include/dungeon_random_1.h index bfc2ecd..c863a7e 100644 --- a/include/dungeon_random_1.h +++ b/include/dungeon_random_1.h @@ -1,7 +1,6 @@ #ifndef GUARD_DUNGEON_RANDOM_1_H #define GUARD_DUNGEON_RANDOM_1_H -// 0x84144 bool8 RollPercentChance(s32 percentChance); #endif diff --git a/include/dungeon_range.h b/include/dungeon_range.h index 3d76011..80cb7e3 100644 --- a/include/dungeon_range.h +++ b/include/dungeon_range.h @@ -3,7 +3,6 @@ #include "position.h" -// 0x83294 bool8 InSameRoom_2(struct Position *pos1, struct Position *pos2); #endif diff --git a/include/dungeon_util.h b/include/dungeon_util.h index b32b85d..77db878 100644 --- a/include/dungeon_util.h +++ b/include/dungeon_util.h @@ -7,13 +7,9 @@ extern const struct Position gAdjacentTileOffsets[NUM_DIRECTIONS]; -// 0x450E0 bool8 EntityExists(struct DungeonEntity *pokemon); -// 0x450F8 u32 GetEntityType(struct DungeonEntity *entity); -// 0x45104 struct DungeonEntityData *GetTrapData(struct DungeonEntity *entity); -// 0x45108 struct ItemSlot *GetItemData(struct DungeonEntity *entity); struct MapTile *GetMapTileForDungeonEntity_2(struct DungeonEntity *entity); diff --git a/include/dungeon_util_1.h b/include/dungeon_util_1.h index cfda253..070e6d8 100644 --- a/include/dungeon_util_1.h +++ b/include/dungeon_util_1.h @@ -3,7 +3,6 @@ #include "dungeon_entity.h" -// 0x85A50 bool8 IsMovingClient(struct DungeonEntity *entity); #endif diff --git a/include/dungeon_visibility.h b/include/dungeon_visibility.h index f94926e..62e7163 100644 --- a/include/dungeon_visibility.h +++ b/include/dungeon_visibility.h @@ -3,7 +3,6 @@ #include "dungeon_entity.h" -// 0x45990 bool8 CanSee(struct DungeonEntity *entity, struct DungeonEntity *targetEntity); #endif diff --git a/include/move_util.h b/include/move_util.h new file mode 100644 index 0000000..2bfc1c6 --- /dev/null +++ b/include/move_util.h @@ -0,0 +1,9 @@ +#ifndef GUARD_MOVE_UTIL_H +#define GUARD_MOVE_UTIL_H + +#include "dungeon_entity.h" + +bool8 IsMoveIndexUsable(struct DungeonEntity *pokemon, s32 moveIndex, bool8 hasPPChecker); +bool8 IsMoveUsable(struct DungeonEntity *pokemon, struct PokemonMove *move, bool8 hasPPChecker); + +#endif diff --git a/include/moves.h b/include/moves.h index 44b324b..24b5249 100644 --- a/include/moves.h +++ b/include/moves.h @@ -18,14 +18,14 @@ s32 GetMoveAccuracy(struct PokemonMove *move, u32 accuracyType); u32 GetMoveMaxPP(struct PokemonMove *move); u8 GetMoveUnk12(struct PokemonMove *move); u8 GetMoveCriticalHitChance(struct PokemonMove *move); -u8 GetMoveCannotHitFrozen(struct PokemonMove *move); -u8 MoveDealsDirectDamage(struct PokemonMove *move); +bool8 MoveCannotHitFrozen(struct PokemonMove *move); +bool8 MoveDealsDirectDamage(struct PokemonMove *move); u32 GetMoveRangeType(struct PokemonMove *move); void sub_8092C84(u8 *buffer, u16 moveID); u8 *GetMoveUseText(u16 moveID); -u8 GetMoveAffectedByMagicCoat(u16 moveID); -u8 GetMoveTargetsUser(u16 moveID); -u8 GetMoveAffectedByMuzzled(u16 moveID); +bool8 MoveAffectedByMagicCoat(u16 moveID); +bool8 MoveTargetsUser(u16 moveID); +bool8 MoveAffectedByMuzzled(u16 moveID); bool8 IsBlockedBySoundproof(struct PokemonMove *move); bool8 DoesMoveCharge(u16 move); diff --git a/include/number_util.h b/include/number_util.h index c42ef1c..692fba0 100644 --- a/include/number_util.h +++ b/include/number_util.h @@ -1,7 +1,6 @@ #ifndef GUARD_NUMBER_UTIL_H #define GUARD_NUMBER_UTIL_H -// 0x94450 s32 RoundUpFixedPoint(s32 fixedPointNumber); #endif diff --git a/include/position_util.h b/include/position_util.h index 74019b7..9004d10 100644 --- a/include/position_util.h +++ b/include/position_util.h @@ -3,7 +3,6 @@ #include "position.h" -// 0x983D8 s32 CalculateFacingDir(struct Position *originPos, struct Position *targetPos); #endif diff --git a/include/status.h b/include/status.h new file mode 100644 index 0000000..d12170a --- /dev/null +++ b/include/status.h @@ -0,0 +1,12 @@ +#ifndef GUARD_STATUS_H +#define GUARD_STATUS_H + +#include "dungeon_entity.h" + +#define FLASH_FIRE_STATUS_NONE 0 +#define FLASH_FIRE_STATUS_MAXED 1 +#define FLASH_FIRE_STATUS_NOT_MAXED 2 + +u8 GetFlashFireStatus(struct DungeonEntity *pokemon); + +#endif diff --git a/include/status_checker.h b/include/status_checker.h index 1b65030..416b265 100644 --- a/include/status_checker.h +++ b/include/status_checker.h @@ -4,7 +4,10 @@ #include "constants/move.h" #include "dungeon_entity.h" -// 0x5C498 bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct PokemonMove *move); +bool8 CanUseOnTargetWithStatusChecker(struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move); +bool8 HasDisabledMove(struct PokemonMove *moves); +bool8 LastUsedMoveOutOfPP(struct PokemonMove *moves); +bool8 HasLastUsedMove(struct PokemonMove *moves); #endif diff --git a/include/status_checks.h b/include/status_checks.h index 5bc80eb..5253d9d 100644 --- a/include/status_checks.h +++ b/include/status_checks.h @@ -5,7 +5,6 @@ extern const s16 gConfusedAttackChance; -// 0x7001C bool8 HasStatusAffectingActions(struct DungeonEntity *pokemon); #endif diff --git a/include/status_checks_1.h b/include/status_checks_1.h index a90bdb0..306937b 100644 --- a/include/status_checks_1.h +++ b/include/status_checks_1.h @@ -3,11 +3,8 @@ #include "dungeon_entity.h" -// 0x70A58 bool8 HasNegativeStatus(struct DungeonEntity *pokemon); -// 0x70B28 bool8 IsSleeping(struct DungeonEntity *pokemon); -// 0x70B48 bool8 HasQuarterHPOrLess(struct DungeonEntity* pokemon); #endif diff --git a/include/targeting.h b/include/targeting.h index 7330398..89c4d49 100644 --- a/include/targeting.h +++ b/include/targeting.h @@ -3,7 +3,6 @@ #include "dungeon_entity.h" -// 0x69DCC void TargetTileInFront(struct DungeonEntity *pokemon); #endif diff --git a/include/targeting_flags.h b/include/targeting_flags.h index d7d4737..3e1abdd 100644 --- a/include/targeting_flags.h +++ b/include/targeting_flags.h @@ -4,7 +4,6 @@ #include "constants/move.h" #include "dungeon_entity.h" -// 0x7CD64 s16 GetMoveTargetingFlagsForPokemon(struct DungeonEntity *pokemon, struct PokemonMove *move, bool32 isAI); #endif diff --git a/include/tile_types.h b/include/tile_types.h index f1bc412..d1577d4 100644 --- a/include/tile_types.h +++ b/include/tile_types.h @@ -7,9 +7,7 @@ #define DUNGEON_WATER_TYPE_LAVA 1 #define DUNGEON_WATER_TYPE_WATER 2 -// 0x4AF20 bool8 IsTileGround(struct MapTile* tile); -// 0x4AF74 bool8 IsWaterTileset(); #endif diff --git a/include/trap.h b/include/trap.h index 49a5216..fb6855e 100644 --- a/include/trap.h +++ b/include/trap.h @@ -3,7 +3,6 @@ #include "position.h" -// 0x4AF74 bool8 CanLayTrap(struct Position *pos); #endif diff --git a/include/type_chart.h b/include/type_chart.h new file mode 100644 index 0000000..4be0b33 --- /dev/null +++ b/include/type_chart.h @@ -0,0 +1,17 @@ +#ifndef GUARD_TYPE_CHART_H +#define GUARD_TYPE_CHART_H + +#include "global.h" +#include "constants/type.h" + +#define NUM_EFFECTIVENESS 4 + +#define EFFECTIVENESS_IMMUNE 0 +#define EFFECTIVENESS_RESIST 1 +#define EFFECTIVENESS_NEUTRAL 2 +#define EFFECTIVENESS_SUPER 3 + +// [Attacking type][Defending type] +extern const s16 gTypeEffectivenessChart[NUM_TYPES][NUM_TYPES]; + +#endif
\ No newline at end of file diff --git a/include/type_effectiveness.h b/include/type_effectiveness.h new file mode 100644 index 0000000..3502f0e --- /dev/null +++ b/include/type_effectiveness.h @@ -0,0 +1,8 @@ +#ifndef GUARD_TYPE_EFFECTIVENESS_H +#define GUARD_TYPE_EFFECTIVENESS_H + +#include "dungeon_entity.h" + +s32 WeightWeakTypePicker(struct DungeonEntity *user, struct DungeonEntity *target, u8 moveType); + +#endif diff --git a/include/weather.h b/include/weather.h index b7fa725..711007d 100644 --- a/include/weather.h +++ b/include/weather.h @@ -3,7 +3,6 @@ #include "dungeon_entity.h" -// 0x7E580 u8 GetWeather(struct DungeonEntity* pokemon); #endif diff --git a/ld_script.txt b/ld_script.txt index 3af08e6..ea6c581 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -208,14 +208,18 @@ SECTIONS { asm/code_80521D0.o(.text); src/charge_move.o(.text); asm/code_8057144.o(.text); + src/move_util.o(.text); + asm/code_805744C.o(.text); src/code_8057824.o(.text); asm/code_8057824.o(.text); src/status_checker.o(.text); - asm/code_805CEB8.o(.text); + asm/code_805D8C8.o(.text); src/targeting.o(.text); asm/code_8069E0C.o(.text); src/code_806CD90.o(.text); asm/code_806CD90.o(.text); + src/type_effectiveness.o(.text); + asm/code_806E8B0.o(.text); src/status_checks.o(.text); asm/code_80701A4.o(.text); src/dungeon_movement.o(.text); @@ -238,11 +242,9 @@ SECTIONS { asm/code_8073CF0.o(.text); src/dungeon_ai_movement.o(.text); asm/code_8075BA4.o(.text); + src/status.o(.text); + asm/code_8077274.o(.text); src/dungeon_ai_attack.o(.text); - asm/code_807C4A0.o(.text); - src/dungeon_ai_attack_1.o(.text); - asm/code_807C7AC.o(.text); - src/dungeon_ai_attack_2.o(.text); asm/code_807CABC.o(.text); src/targeting_flags.o(.text); asm/code_807CD9C.o(.text); @@ -423,12 +425,16 @@ SECTIONS { data/data_80F4DB4.o(.rodata); src/dungeon_ai_attack.o(.rodata); data/data_80F4E2C.o(.rodata); + src/type_chart.o(.rodata); + data/data_80F54B4.o(.rodata); src/status_checker.o(.rodata); data/data_80F5668.o(.rodata); src/dungeon_pokemon_attributes.o(.rodata); data/data_80F59C8.o(.rodata); src/charge_move.o(.rodata); data/data_8106A4C.o(.rodata); + src/type_effectiveness.o(.data); + data/data_8106F7C.o(.rodata); src/dungeon_capabilities_1.o(.rodata); data/data_8106FB5.o(.rodata); src/dungeon_ai_targeting.o(.rodata); diff --git a/src/code_800D090.c b/src/code_800D090.c index fd1c948..1744087 100644 --- a/src/code_800D090.c +++ b/src/code_800D090.c @@ -4,7 +4,6 @@ #include "config.h" #include "global.h" - extern void SoundBiasReset(void); extern void SoundBiasSet(void); @@ -70,7 +69,7 @@ void sub_800D098(void) while(REG_KEYINPUT != KEYS_MASK){} // All buttons } -void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...) +void sprintf_2(char *buffer, const char *text, ...) { va_list vArgv; va_start(vArgv, text); diff --git a/src/code_801D760.c b/src/code_801D760.c index bdab0f2..a84aba5 100644 --- a/src/code_801D760.c +++ b/src/code_801D760.c @@ -8,6 +8,7 @@ #include "input.h" #include "text.h" #include "rescue_team_info.h" +#include "code_800D090.h" struct unkStruct_203B258 { @@ -64,15 +65,14 @@ extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_80073E0(u32); void LoadTeamRankBadge(u32, u32, u32); -extern void ExpandPlaceholdersBuffer(u8 *, u32 *, ...); extern void SetBGPaletteBufferColorArray(s32 index, u8 *colorArray); extern void sub_8007E20(u32, u32, u32, u32, u32, u8 *, u32); extern struct FileArchive gTitleMenuFileArchive; extern const char gTeamRankBadgeFileName; -extern u32 gUnknown_80DBF3C; -extern u32 gUnknown_80DBF4C; +extern char gUnknown_80DBF3C[]; +extern char gUnknown_80DBF4C[]; struct TeamBadgeData { @@ -305,8 +305,8 @@ void sub_801D894(void) // Stored on stack u32 *preload_string; - u32 *r5; // R5 - u8 buffer [96]; // sp +4 + char *r5; // R5 + char buffer [96]; // sp +4 if (gUnknown_203B250->currFriendAreaLocation == NONE) { location = sub_8098FB4(); @@ -327,11 +327,11 @@ void sub_801D894(void) LoadTeamRankBadge(2, 8, 6); // Have to load before TeamRank funcs - r5 = &gUnknown_80DBF3C; // %s {COLOR_1 CYAN}%d{END_COLOR_TEXT_1} Pts. + r5 = gUnknown_80DBF3C; // %s {COLOR_1 CYAN}%d{END_COLOR_TEXT_1} Pts. rank = GetRescueTeamRank(); - ExpandPlaceholdersBuffer(buffer, r5, GetTeamRankString(rank), GetTeamRankPts()); + sprintf_2(buffer, r5, GetTeamRankString(rank), GetTeamRankPts()); xxx_call_draw_string(32, 4, buffer, 2, 0); - ExpandPlaceholdersBuffer(buffer, &gUnknown_80DBF4C, gTeamInventory_203B460->teamMoney); + sprintf_2(buffer, gUnknown_80DBF4C, gTeamInventory_203B460->teamMoney); xxx_call_draw_string(32, 18, buffer, 2, 0); sub_80073E0(2); } diff --git a/src/code_8090208.c b/src/code_8090208.c index 970154c..8322ffc 100644 --- a/src/code_8090208.c +++ b/src/code_8090208.c @@ -1,13 +1,11 @@ #include "global.h" #include "dungeon.h" +#include "code_800D090.h" extern const char gUnknown_8108F10[]; extern const char gUnknown_8108F18[]; extern const char gUnknown_8108F2C[]; -void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...); - - struct unkDungeonStruct { u8 index; @@ -16,17 +14,17 @@ struct unkDungeonStruct void sub_8090208(u8 *buffer, struct unkDungeonStruct *dungeonLocation) { - ExpandPlaceholdersBuffer(buffer, gUnknown_8108F10, gDungeonNames[dungeonLocation->index].name1); // {COLOR_2 YELLOW_4}%s{END_COLOR_TEXT_2} (normal floor print (no B) + sprintf_2(buffer, gUnknown_8108F10, gDungeonNames[dungeonLocation->index].name1); // {COLOR_2 YELLOW_4}%s{END_COLOR_TEXT_2} (normal floor print (no B) } void PrintDungeonLocationtoBuffer(u8 *buffer, struct unkDungeonStruct *dungeonLocation) { if(gDungeons[dungeonLocation->index].stairDirection != 0){ - ExpandPlaceholdersBuffer(buffer, gUnknown_8108F18, gDungeonNames[dungeonLocation->index].name1, dungeonLocation->floor); //_F + sprintf_2(buffer, gUnknown_8108F18, gDungeonNames[dungeonLocation->index].name1, dungeonLocation->floor); //_F } else { - ExpandPlaceholdersBuffer(buffer, gUnknown_8108F2C, gDungeonNames[dungeonLocation->index].name1, dungeonLocation->floor); // B _F + sprintf_2(buffer, gUnknown_8108F2C, gDungeonNames[dungeonLocation->index].name1, dungeonLocation->floor); // B _F } } diff --git a/src/dungeon_action.c b/src/dungeon_action.c index 9034e4c..912e8b4 100644 --- a/src/dungeon_action.c +++ b/src/dungeon_action.c @@ -5,6 +5,13 @@ #include "dungeon_entity.h" #include "pokemon.h" +void ResetAction(struct DungeonActionContainer *actionPointer) +{ + actionPointer->action = DUNGEON_ACTION_NONE; + actionPointer->actionUseIndex = 0; + actionPointer->unkC = 0; +} + void SetAction(struct DungeonActionContainer *actionPointer, u16 action) { actionPointer->action = action; diff --git a/src/dungeon_ai_attack.c b/src/dungeon_ai_attack.c index 835d207..c84aca1 100644 --- a/src/dungeon_ai_attack.c +++ b/src/dungeon_ai_attack.c @@ -7,13 +7,13 @@ #include "constants/move_id.h" #include "constants/status.h" #include "constants/tactic.h" +#include "constants/targeting.h" #include "constants/type.h" #include "charge_move.h" #include "dungeon_action.h" #include "dungeon_ai_targeting.h" #include "dungeon_ai_targeting_1.h" -#include "dungeon_ai_attack_1.h" -#include "dungeon_ai_attack_2.h" +#include "dungeon_ai_targeting_2.h" #include "dungeon_capabilities_1.h" #include "dungeon_global_data.h" #include "dungeon_map_access.h" @@ -22,12 +22,15 @@ #include "dungeon_random_1.h" #include "dungeon_util.h" #include "dungeon_visibility.h" +#include "move_util.h" #include "moves.h" #include "position_util.h" #include "status_checker.h" #include "status_checks.h" +#include "status_checks_1.h" #include "targeting.h" #include "targeting_flags.h" +#include "type_effectiveness.h" #define REGULAR_ATTACK_INDEX 4 @@ -39,11 +42,6 @@ extern s32 gPotentialAttackTargetWeights[NUM_DIRECTIONS]; extern u8 gPotentialAttackTargetDirections[NUM_DIRECTIONS]; extern struct DungeonEntity *gPotentialTargets[NUM_DIRECTIONS]; -extern bool8 IsMoveUsable_1(struct DungeonEntity*, s32, bool8); -extern bool8 TargetRegularAttack(struct DungeonEntity*, u32*, bool8); -extern bool8 IsTargetInLineRange(struct DungeonEntity*, struct DungeonEntity*, s32); -extern s32 WeightMove(struct DungeonEntity*, s32, struct DungeonEntity*, u8); - void DecideAttack(struct DungeonEntity *pokemon) { struct DungeonEntityData *pokemonData = pokemon->entityData; @@ -181,7 +179,7 @@ void DecideAttack(struct DungeonEntity *pokemon) move = &pokemonData->moves[i]; if (move->moveFlags & MOVE_FLAG_EXISTS && willNotUnlinkMove[i] && - IsMoveUsable_1(pokemon, i, hasPPChecker) && + IsMoveIndexUsable(pokemon, i, hasPPChecker) && move->moveFlags & MOVE_FLAG_ENABLED) { moveTargetResults[i].moveUsable = TRUE; @@ -522,4 +520,405 @@ s32 FindMoveTarget(struct MoveTargetResults *moveTargetResults, struct DungeonEn moveTargetResults->moveWeight = 8; } return moveWeight; -}
\ No newline at end of file +} + +bool8 IsTargetInLineRange(struct DungeonEntity *user, struct DungeonEntity *target, s32 range) +{ + s32 posDiffX = user->posWorld.x - target->posWorld.x; + s32 posDiffY, maxPosDiff; + s32 direction; + if (posDiffX < 0) + { + posDiffX = -posDiffX; + } + posDiffY = user->posWorld.y - target->posWorld.y; + if (posDiffY < 0) + { + posDiffY = -posDiffY; + } + maxPosDiff = posDiffY; + if (posDiffY < posDiffX) + { + maxPosDiff = posDiffX; + } + if (maxPosDiff > RANGED_ATTACK_RANGE || maxPosDiff > range) + { + return FALSE; + } + direction = -1; + if (posDiffX == posDiffY) + { + if (user->posWorld.x < target->posWorld.x && + (user->posWorld.y < target->posWorld.y || user->posWorld.y > target->posWorld.y)) + { + returnTrue: + return TRUE; + } + if (user->posWorld.x > target->posWorld.x); // Fixes register loading order. + direction = DIRECTION_SOUTHWEST; + if (user->posWorld.x <= target->posWorld.x || user->posWorld.y <= target->posWorld.y) + { + goto checkDirectionSet; + } + goto returnTrue; + } + else if (user->posWorld.x == target->posWorld.x && user->posWorld.y < target->posWorld.y) + { + return TRUE; + } + else if (user->posWorld.x < target->posWorld.x && user->posWorld.y == target->posWorld.y) + { + return TRUE; + } + else if (user->posWorld.x == target->posWorld.x && user->posWorld.y > target->posWorld.y) + { + return TRUE; + } + else if (user->posWorld.x > target->posWorld.x && user->posWorld.y == target->posWorld.y) + { + direction = DIRECTION_WEST; + } + checkDirectionSet: + if (direction < 0) + { + return FALSE; + } + return TRUE; +} + +s32 WeightMoveIfUsable(s32 numPotentialTargets, s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, bool32 hasStatusChecker) +{ + s32 facingDir; + s32 targetingFlags2 = (s16) targetingFlags; + bool8 hasStatusChecker2 = hasStatusChecker; + struct DungeonEntityData *userData = user->entityData; + if ((user->posWorld.x == target->posWorld.x && user->posWorld.y == target->posWorld.y) || + (targetingFlags2 & 0xF0) == TARGETING_FLAG_TARGET_ROOM || + (targetingFlags2 & 0xF0) == TARGETING_FLAG_TARGET_FLOOR || + (targetingFlags2 & 0xF0) == TARGETING_FLAG_TARGET_SELF) + { + facingDir = userData->action.facingDir; + } + else + { + facingDir = CalculateFacingDir(&user->posWorld, &target->posWorld); + } + if (!gCanAttackInDirection[facingDir] && + CanUseStatusMove(targetingFlags2, user, target, move, hasStatusChecker2)) + { + gCanAttackInDirection[facingDir] = TRUE; + do { gPotentialAttackTargetDirections[numPotentialTargets] = facingDir; } while (0); + gPotentialAttackTargetWeights[numPotentialTargets] = WeightMove(user, targetingFlags2, target, GetMoveTypeForPokemon(user, move)); + gPotentialTargets[numPotentialTargets] = target; + numPotentialTargets++; + } + return numPotentialTargets; +} + +bool8 CanUseStatusMove(s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, bool32 hasStatusChecker) +{ + struct DungeonEntityData *targetData; + s32 targetingFlags2 = (s16) targetingFlags; + bool8 hasStatusChecker2 = hasStatusChecker; + bool8 hasTarget = FALSE; + u32 categoryTargetingFlags = targetingFlags2 & 0xF; + u32 *categoryTargetingFlags2 = &categoryTargetingFlags; // Fixes a regswap. + if (*categoryTargetingFlags2 == TARGETING_FLAG_TARGET_OTHER) + { + if (CanTarget(user, target, FALSE, TRUE) == TARGET_CAPABILITY_CAN_TARGET) + { + hasTarget = TRUE; + } + } + else if (categoryTargetingFlags == TARGETING_FLAG_HEAL_TEAM) + { + goto checkCanTarget; + } + else if (categoryTargetingFlags == TARGETING_FLAG_LONG_RANGE) + { + targetData = target->entityData; + goto checkThirdParty; + } + else if (categoryTargetingFlags == TARGETING_FLAG_ATTACK_ALL) + { + targetData = target->entityData; + if (user == target) + { + goto returnFalse; + } + checkThirdParty: + hasTarget = TRUE; + if (targetData->shopkeeperMode == SHOPKEEPER_FRIENDLY || + targetData->clientType == CLIENT_TYPE_DONT_MOVE || + targetData->clientType == CLIENT_TYPE_CLIENT) + { + returnFalse: + return FALSE; + } + } + else if (categoryTargetingFlags == TARGETING_FLAG_BOOST_TEAM) + { + if (user == target) + { + goto returnFalse; + } + checkCanTarget: + if (CanTarget(user, target, FALSE, TRUE) == TARGET_CAPABILITY_CANNOT_ATTACK) + { + hasTarget = TRUE; + } + } + else if ((u16) (categoryTargetingFlags - 3) <= 1) // categoryTargetingFlags == TARGETING_FLAG_ITEM + { + hasTarget = TRUE; + } + + if (hasTarget) + { + if (hasStatusChecker2) + { + if (!CanUseOnTargetWithStatusChecker(user, target, move)) + { + goto returnFalse; + } + if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_SET_TRAP) + { + goto rollMoveUseChance; + } + else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_HEAL_HP) + { + if (!HasQuarterHPOrLess(target)) + { + if (*categoryTargetingFlags2); + goto returnFalse; + } + } + else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_HEAL_STATUS) + { + if (!HasNegativeStatus(target)) + { + if (*categoryTargetingFlags2); // Flips the conditional. + goto returnFalse; + } + } + else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_DREAM_EATER) + { + if (!IsSleeping(target)) + { + if (*categoryTargetingFlags2); // Flips the conditional. + goto returnFalse; + } + } + else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_EXPOSE) + { + targetData = target->entityData; + if ((targetData->types[0] != TYPE_GHOST && targetData->types[1] != TYPE_GHOST) || targetData->exposedStatus) + { + if (*categoryTargetingFlags2); // Flips the conditional. + goto returnFalse; + } + } + else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_HEAL_ALL) + { + if (!HasNegativeStatus(target) && !HasQuarterHPOrLess(target)) + { + if (*categoryTargetingFlags2); // Flips the conditional. + goto returnFalse; + } + } + } + else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_SET_TRAP) + { + s32 useChance; + rollMoveUseChance: + useChance = GetMoveAccuracy(move, ACCURACY_TYPE_USE_CHANCE); + if (DungeonRandomCapped(100) >= useChance) + { + goto returnFalse; + } + } + } + return hasTarget; +} + +s32 WeightMove(struct DungeonEntity *user, s32 targetingFlags, struct DungeonEntity *target, u32 moveType) +{ +#ifndef NONMATCHING + register struct DungeonEntityData *targetData asm("r4"); +#else + struct DungeonEntityData *targetData; +#endif + s32 targetingFlags2 = (s16) targetingFlags; + u8 moveType2 = moveType; + u8 weight = 1; + struct DungeonEntityData *targetData2; + targetData2 = targetData = target->entityData; + if (!targetData->isEnemy || (targetingFlags2 & 0xF) != TARGETING_FLAG_TARGET_OTHER) + { + return 1; + } + else if (HasIQSkill(user, IQ_SKILL_EXP_GO_GETTER)) + { + // BUG: expYieldRankings has lower values as the Pokémon's experience yield increases. + // This causes Exp. Go-Getter to prioritize Pokémon worth less experience + // instead of Pokémon worth more experience. + weight = gDungeonGlobalData->expYieldRankings[targetData->entityID]; + } + else if (HasIQSkill(user, IQ_SKILL_EFFICIENCY_EXPERT)) + { + weight = -12 - targetData2->HP; + if (weight == 0) + { + weight = 1; + } + } + else if (HasIQSkill(user, IQ_SKILL_WEAK_TYPE_PICKER)) + { + weight = WeightWeakTypePicker(user, target, moveType2) + 1; + } + return weight; +} + +bool8 TargetRegularAttack(struct DungeonEntity *pokemon, u32 *targetDir, bool8 checkPetrified) +{ + struct DungeonEntityData *pokemonData = pokemon->entityData; + s32 numPotentialTargets = 0; + s32 facingDir = pokemonData->action.facingDir; + s32 faceTurnLimit = pokemonData->eyesightStatus == EYESIGHT_STATUS_BLINKER ? 1 : 8; + s32 i; + s32 potentialAttackTargetDirections[NUM_DIRECTIONS]; + s32 potentialAttackTargetWeights[NUM_DIRECTIONS]; + bool8 hasTargetingIQ = HasIQSkill(pokemon, IQ_SKILL_EXP_GO_GETTER) || HasIQSkill(pokemon, IQ_SKILL_EFFICIENCY_EXPERT); + bool8 hasStatusChecker = HasIQSkill(pokemon, IQ_SKILL_STATUS_CHECKER); + for (i = 0; i < faceTurnLimit; i++, facingDir++) + { + struct DungeonEntity *target; + facingDir &= DIRECTION_MASK; + target = GetMapTile_1(pokemon->posWorld.x + gAdjacentTileOffsets[facingDir].x, + pokemon->posWorld.y + gAdjacentTileOffsets[facingDir].y)->pokemon; + if (target != NULL && + GetEntityType(target) == ENTITY_POKEMON && + CanAttackInFront(pokemon, facingDir) && + CanTarget(pokemon, target, FALSE, checkPetrified) == TARGET_CAPABILITY_CAN_TARGET && + (!hasStatusChecker || target->entityData->immobilizeStatus != IMMOBILIZE_STATUS_FROZEN)) + { + potentialAttackTargetDirections[numPotentialTargets] = facingDir; + potentialAttackTargetWeights[numPotentialTargets] = WeightMove(pokemon, TARGETING_FLAG_TARGET_OTHER, target, TYPE_NONE); + if (!hasTargetingIQ) + { + *targetDir = facingDir; + return TRUE; + } + numPotentialTargets++; + } + } + if (numPotentialTargets == 0) + { + return FALSE; + } + else + { + s32 totalWeight = 0; + s32 maxWeight = 0; + s32 weightCounter; + s32 i; + for (i = 0; i < numPotentialTargets; i++) + { + if (maxWeight < potentialAttackTargetWeights[i]) + { + maxWeight = potentialAttackTargetWeights[i]; + } + } + for (i = 0; i < numPotentialTargets; i++) + { + if (maxWeight != potentialAttackTargetWeights[i]) + { + potentialAttackTargetWeights[i] = 0; + } + } + for (i = 0; i < numPotentialTargets; i++) + { + totalWeight += potentialAttackTargetWeights[i]; + } + weightCounter = DungeonRandomCapped(totalWeight); + for (i = 0; i < numPotentialTargets; i++) + { + weightCounter -= potentialAttackTargetWeights[i]; + if (weightCounter < 0) + { + break; + } + } + *targetDir = potentialAttackTargetDirections[i]; + return TRUE; + } + +} + +bool8 IsTargetStraightAhead(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, s32 facingDir, s32 maxRange) +{ + s32 posDiffX = pokemon->posWorld.x - targetPokemon->posWorld.x; + s32 effectiveMaxRange; + if (posDiffX < 0) + { + posDiffX = -posDiffX; + } + effectiveMaxRange = pokemon->posWorld.y - targetPokemon->posWorld.y; + if (effectiveMaxRange < 0) + { + effectiveMaxRange = -effectiveMaxRange; + } + if (effectiveMaxRange < posDiffX) + { + effectiveMaxRange = posDiffX; + } + if (effectiveMaxRange > maxRange) + { + effectiveMaxRange = maxRange; + } + if (!HasIQSkill(pokemon, IQ_SKILL_COURSE_CHECKER)) + { + // BUG: effectiveMaxRange is already capped at maxRange, so this condition always evaluates to TRUE. + // The AI also has range checks elsewhere, so this doesn't become an issue in most cases. + // If the AI has the Long Toss or Pierce statuses and Course Checker is disabled, + // this incorrect check causes the AI to throw items at targets further than 10 tiles away. + if (effectiveMaxRange <= maxRange) + { + return TRUE; + } + } + else + { + s32 currentPosX = pokemon->posWorld.x; + s32 currentPosY = pokemon->posWorld.y; + s32 adjacentTileOffsetX = gAdjacentTileOffsets[facingDir].x; + s32 adjacentTileOffsetY = gAdjacentTileOffsets[facingDir].y; + s32 i; + for (i = 0; i <= effectiveMaxRange; i++) + { + struct MapTile *mapTile; + currentPosX += adjacentTileOffsetX; + currentPosY += adjacentTileOffsetY; + if (currentPosX <= 0 || currentPosY <= 0 || + currentPosX >= DUNGEON_MAX_SIZE_X - 1 || currentPosY >= DUNGEON_MAX_SIZE_Y - 1) + { + break; + } + while (0); // Extra label needed to swap branch locations in ASM. + mapTile = GetMapTile_1(currentPosX, currentPosY); + if (!(mapTile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID))) + { + break; + } + if (mapTile->pokemon == targetPokemon) + { + return TRUE; + } + if (mapTile->pokemon != NULL) + { + break; + } + } + } + return FALSE; +} diff --git a/src/dungeon_ai_attack_1.c b/src/dungeon_ai_attack_1.c deleted file mode 100644 index 023df14..0000000 --- a/src/dungeon_ai_attack_1.c +++ /dev/null @@ -1,175 +0,0 @@ -#include "global.h" -#include "dungeon_ai_attack_1.h" - -#include "constants/direction.h" -#include "constants/targeting.h" -#include "constants/type.h" -#include "dungeon_ai_targeting_2.h" -#include "dungeon_pokemon_attributes.h" -#include "dungeon_random.h" -#include "moves.h" -#include "position_util.h" -#include "status_checks_1.h" - -extern bool8 gCanAttackInDirection[NUM_DIRECTIONS]; -extern s32 gPotentialAttackTargetWeights[NUM_DIRECTIONS]; -extern u8 gPotentialAttackTargetDirections[NUM_DIRECTIONS]; -extern struct DungeonEntity *gPotentialTargets[NUM_DIRECTIONS]; - -extern s32 WeightMove(struct DungeonEntity*, s32, struct DungeonEntity*, u8); -extern bool8 CanUseOnTargetWithStatusChecker(struct DungeonEntity*, struct DungeonEntity*, struct PokemonMove*); - -s32 WeightMoveIfUsable(s32 numPotentialTargets, s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, bool32 hasStatusChecker) -{ - s32 facingDir; - s32 targetingFlags2 = (s16) targetingFlags; - bool8 hasStatusChecker2 = hasStatusChecker; - struct DungeonEntityData *userData = user->entityData; - if ((user->posWorld.x == target->posWorld.x && user->posWorld.y == target->posWorld.y) || - (targetingFlags2 & 0xF0) == TARGETING_FLAG_TARGET_ROOM || - (targetingFlags2 & 0xF0) == TARGETING_FLAG_TARGET_FLOOR || - (targetingFlags2 & 0xF0) == TARGETING_FLAG_TARGET_SELF) - { - facingDir = userData->action.facingDir; - } - else - { - facingDir = CalculateFacingDir(&user->posWorld, &target->posWorld); - } - if (!gCanAttackInDirection[facingDir] && - CanUseStatusMove(targetingFlags2, user, target, move, hasStatusChecker2)) - { - gCanAttackInDirection[facingDir] = TRUE; - do { gPotentialAttackTargetDirections[numPotentialTargets] = facingDir; } while (0); - gPotentialAttackTargetWeights[numPotentialTargets] = WeightMove(user, targetingFlags2, target, GetMoveTypeForPokemon(user, move)); - gPotentialTargets[numPotentialTargets] = target; - numPotentialTargets++; - } - return numPotentialTargets; -} - -bool8 CanUseStatusMove(s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, bool32 hasStatusChecker) -{ - struct DungeonEntityData *targetData; - s32 targetingFlags2 = (s16) targetingFlags; - bool8 hasStatusChecker2 = hasStatusChecker; - bool8 hasTarget = FALSE; - u32 categoryTargetingFlags = targetingFlags2 & 0xF; - u32 *categoryTargetingFlags2 = &categoryTargetingFlags; // Fixes a regswap. - if (*categoryTargetingFlags2 == TARGETING_FLAG_TARGET_OTHER) - { - if (CanTarget(user, target, FALSE, TRUE) == TARGET_CAPABILITY_CAN_TARGET) - { - hasTarget = TRUE; - } - } - else if (categoryTargetingFlags == TARGETING_FLAG_HEAL_TEAM) - { - goto checkCanTarget; - } - else if (categoryTargetingFlags == TARGETING_FLAG_LONG_RANGE) - { - targetData = target->entityData; - goto checkThirdParty; - } - else if (categoryTargetingFlags == TARGETING_FLAG_ATTACK_ALL) - { - targetData = target->entityData; - if (user == target) - { - goto returnFalse; - } - checkThirdParty: - hasTarget = TRUE; - if (targetData->shopkeeperMode == SHOPKEEPER_FRIENDLY || - targetData->clientType == CLIENT_TYPE_DONT_MOVE || - targetData->clientType == CLIENT_TYPE_CLIENT) - { - returnFalse: - return FALSE; - } - } - else if (categoryTargetingFlags == TARGETING_FLAG_BOOST_TEAM) - { - if (user == target) - { - goto returnFalse; - } - checkCanTarget: - if (CanTarget(user, target, FALSE, TRUE) == TARGET_CAPABILITY_CANNOT_ATTACK) - { - hasTarget = TRUE; - } - } - else if ((u16) (categoryTargetingFlags - 3) <= 1) // categoryTargetingFlags == TARGETING_FLAG_ITEM - { - hasTarget = TRUE; - } - - if (hasTarget) - { - if (hasStatusChecker2) - { - if (!CanUseOnTargetWithStatusChecker(user, target, move)) - { - goto returnFalse; - } - if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_SET_TRAP) - { - goto rollMoveUseChance; - } - else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_HEAL_HP) - { - if (!HasQuarterHPOrLess(target)) - { - if (*categoryTargetingFlags2); - goto returnFalse; - } - } - else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_HEAL_STATUS) - { - if (!HasNegativeStatus(target)) - { - if (*categoryTargetingFlags2); // Flips the conditional. - goto returnFalse; - } - } - else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_DREAM_EATER) - { - if (!IsSleeping(target)) - { - if (*categoryTargetingFlags2); // Flips the conditional. - goto returnFalse; - } - } - else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_EXPOSE) - { - targetData = target->entityData; - if ((targetData->type1 != TYPE_GHOST && targetData->type2 != TYPE_GHOST) || targetData->exposedStatus) - { - if (*categoryTargetingFlags2); // Flips the conditional. - goto returnFalse; - } - } - else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_HEAL_ALL) - { - if (!HasNegativeStatus(target) && !HasQuarterHPOrLess(target)) - { - if (*categoryTargetingFlags2); // Flips the conditional. - goto returnFalse; - } - } - } - else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_SET_TRAP) - { - s32 useChance; - rollMoveUseChance: - useChance = GetMoveAccuracy(move, ACCURACY_TYPE_USE_CHANCE); - if (DungeonRandomCapped(100) >= useChance) - { - goto returnFalse; - } - } - } - return hasTarget; -} diff --git a/src/dungeon_ai_attack_2.c b/src/dungeon_ai_attack_2.c deleted file mode 100644 index 41e924a..0000000 --- a/src/dungeon_ai_attack_2.c +++ /dev/null @@ -1,76 +0,0 @@ -#include "global.h" -#include "dungeon_ai_attack_2.h" - -#include "constants/iq_skill.h" -#include "dungeon_global_data.h" -#include "dungeon_map_access.h" -#include "dungeon_pokemon_attributes.h" -#include "dungeon_util.h" - -bool8 IsTargetStraightAhead(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, s32 facingDir, s32 maxRange) -{ - s32 posDiffX = pokemon->posWorld.x - targetPokemon->posWorld.x; - s32 effectiveMaxRange; - if (posDiffX < 0) - { - posDiffX = -posDiffX; - } - effectiveMaxRange = pokemon->posWorld.y - targetPokemon->posWorld.y; - if (effectiveMaxRange < 0) - { - effectiveMaxRange = -effectiveMaxRange; - } - if (effectiveMaxRange < posDiffX) - { - effectiveMaxRange = posDiffX; - } - if (effectiveMaxRange > maxRange) - { - effectiveMaxRange = maxRange; - } - if (!HasIQSkill(pokemon, IQ_SKILL_COURSE_CHECKER)) - { - // BUG: effectiveMaxRange is already capped at maxRange, so this condition always evaluates to TRUE. - // The AI also has range checks elsewhere, so this doesn't become an issue in most cases. - // If the AI has the Long Toss or Pierce statuses and Course Checker is disabled, - // this incorrect check causes the AI to throw items at targets further than 10 tiles away. - if (effectiveMaxRange <= maxRange) - { - return TRUE; - } - } - else - { - s32 currentPosX = pokemon->posWorld.x; - s32 currentPosY = pokemon->posWorld.y; - s32 adjacentTileOffsetX = gAdjacentTileOffsets[facingDir].x; - s32 adjacentTileOffsetY = gAdjacentTileOffsets[facingDir].y; - s32 i; - for (i = 0; i <= effectiveMaxRange; i++) - { - struct MapTile *mapTile; - currentPosX += adjacentTileOffsetX; - currentPosY += adjacentTileOffsetY; - if (currentPosX <= 0 || currentPosY <= 0 || - currentPosX >= DUNGEON_MAX_SIZE_X - 1 || currentPosY >= DUNGEON_MAX_SIZE_Y - 1) - { - break; - } - while (0); // Extra label needed to swap branch locations in ASM. - mapTile = GetMapTile_1(currentPosX, currentPosY); - if (!(mapTile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID))) - { - break; - } - if (mapTile->pokemon == targetPokemon) - { - return TRUE; - } - if (mapTile->pokemon != NULL) - { - break; - } - } - } - return FALSE; -} diff --git a/src/dungeon_ai_items.c b/src/dungeon_ai_items.c index 31d57ff..090e24a 100644 --- a/src/dungeon_ai_items.c +++ b/src/dungeon_ai_items.c @@ -6,7 +6,7 @@ #include "constants/status.h" #include "constants/targeting.h" #include "dungeon_action.h" -#include "dungeon_ai_attack_2.h" +#include "dungeon_ai_attack.h" #include "dungeon_ai_item_weight.h" #include "dungeon_ai_items.h" #include "dungeon_ai_targeting_2.h" @@ -28,7 +28,6 @@ #define NUM_POTENTIAL_ROCK_TARGETS 20 #define GROUND_ITEM_TOOLBOX_INDEX 0x80 #define HELD_ITEM_TOOLBOX_INDEX 0x81 -#define RANGED_ATTACK_RANGE 10 enum ItemTargetFlag { diff --git a/src/dungeon_ai_movement.c b/src/dungeon_ai_movement.c index 49609d7..326913a 100644 --- a/src/dungeon_ai_movement.c +++ b/src/dungeon_ai_movement.c @@ -28,7 +28,6 @@ extern char *gPtrItsaMonsterHouseMessage; extern void SendImmobilizeEndMessage(struct DungeonEntity*, struct DungeonEntity*); extern void SetMessageArgument(char[], struct DungeonEntity*, u32); -extern void ResetAction(u16*); extern void MoveIfPossible(struct DungeonEntity*, bool8); extern u8 sub_8044B28(void); extern void sub_807AB38(struct DungeonEntity *, u32); @@ -206,7 +205,7 @@ void DecideAction(struct DungeonEntity *pokemon) } } } - ResetAction(&pokemonData->action.action); + ResetAction(&pokemonData->action); if (pokemonData->clientType == CLIENT_TYPE_CLIENT) { SetWalkAction(&pokemonData->action, pokemonData->entityID); diff --git a/src/dungeon_pokemon_attributes.c b/src/dungeon_pokemon_attributes.c index bd3a1f6..0550d7d 100644 --- a/src/dungeon_pokemon_attributes.c +++ b/src/dungeon_pokemon_attributes.c @@ -95,7 +95,7 @@ bool8 HasAbility(struct DungeonEntity *pokemon, u8 ability) else { struct DungeonEntityData *pokemonData = pokemon->entityData; - if (pokemonData->ability1 == ability || pokemonData->ability2 == ability) + if (pokemonData->abilities[0] == ability || pokemonData->abilities[1] == ability) { return TRUE; } @@ -110,11 +110,11 @@ bool8 HasType(struct DungeonEntity *pokemon, u8 type) { return FALSE; } - if (pokemonData->type1 == type) + if (pokemonData->types[0] == type) { return TRUE; } - if (pokemonData->type2 == type) + if (pokemonData->types[1] == type) { return TRUE; } diff --git a/src/friend_area.c b/src/friend_area.c index 15a527e..06cf101 100644 --- a/src/friend_area.c +++ b/src/friend_area.c @@ -2,6 +2,7 @@ #include "constants/friend_area.h" #include "friend_area.h" #include "pokemon.h" +#include "code_800D090.h" bool8 gBoughtFriendAreas[NUM_FRIEND_AREAS]; EWRAM_DATA bool8 *gFriendAreas; @@ -14,7 +15,6 @@ extern const char *gFriendAreaNames[]; extern const char gUnknown_81098A4; extern const char gUnknown_81098AC; -extern void ExpandPlaceholdersBuffer(u8 *buffer, const char *r2, ...); extern void sub_8090FEC(u32, u8 *r1, u32); const struct FriendAreaSettings gFriendAreaSettings[NUM_FRIEND_AREAS] = @@ -599,7 +599,7 @@ u32 GetFriendAreaPrice(u8 index) void sub_8092558(u8 *buffer, u8 index) { // colors the friend area name green and prints to buffer? - ExpandPlaceholdersBuffer(buffer, &gUnknown_81098A4, gFriendAreaNames[index]); + sprintf_2(buffer, &gUnknown_81098A4, gFriendAreaNames[index]); } void sub_8092578(u8 *buffer, u8 index, u8 r2) @@ -609,7 +609,7 @@ void sub_8092578(u8 *buffer, u8 index, u8 r2) if(r2) { sub_8090FEC(gFriendAreaSettings[index].price, priceBuffer, 1); - ExpandPlaceholdersBuffer(buffer, &gUnknown_81098AC, gFriendAreaNames[index], 96, priceBuffer); + sprintf_2(buffer, &gUnknown_81098AC, gFriendAreaNames[index], 96, priceBuffer); } else { diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c index 50b8c02..9310665 100644 --- a/src/friend_list_menu.c +++ b/src/friend_list_menu.c @@ -4,6 +4,7 @@ #include "text.h" #include "team_inventory.h" #include "constants/move.h" +#include "code_800D090.h" struct unkStruct_203B2B8 { @@ -52,7 +53,6 @@ extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_80073E0(u32); extern void sub_80922B4(u8 *, const u8 *, u32); -extern void ExpandPlaceholdersBuffer(u8 *buffer, const u8 *text, ...); extern void sub_808D930(u8 *, s16); extern s32 sub_8008ED0(u8 *); extern void xxx_call_draw_string(s32 x, s32 y, u8 *, u32, u32); @@ -333,7 +333,7 @@ void sub_8026E08(u32 r0) sub_80073B8(r0); sub_80922B4(gAvailablePokemonNames, gUnknown_203B2B8->unk18->name, POKEMON_NAME_LENGTH); sub_808D930(buffer, gUnknown_203B2B8->unk18->speciesNum); - ExpandPlaceholdersBuffer(buffer1, gUnknown_80DD6E0, gAvailablePokemonNames); + sprintf_2(buffer1, gUnknown_80DD6E0, gAvailablePokemonNames); x = sub_8008ED0(buffer1); xxx_call_draw_string(((gUnknown_80DD370.unk0c << 3) - x) / 2, 3, buffer1, r0, 0); sub_80073E0(r0); diff --git a/src/items.c b/src/items.c index d1cd07b..e4bdc6a 100644 --- a/src/items.c +++ b/src/items.c @@ -8,6 +8,7 @@ #include "random.h" #include "subStruct_203B240.h" #include "team_inventory.h" +#include "code_800D090.h" #include <stddef.h> @@ -37,7 +38,6 @@ EWRAM_DATA struct Item *gItemParametersData; extern u8 GetItemType(u8); extern u32 GetItemUnkThrow(u8, u32); -extern void ExpandPlaceholdersBuffer(u8 *, const u8 *, ...); extern s32 sub_8090FEC(s32 a1, u8* a2, u8 a3); extern void sub_80073B8(u32); extern u32 sub_8097DF0(char *, struct subStruct_203B240 **); @@ -326,35 +326,35 @@ void sub_8090E14(u8* ext_buffer, struct ItemSlot* slot, struct unkStruct_8090F58 if (GetItemType(slot->itemIndex) == ITEM_TYPE_THROWABLE) { // I feel like these labels might actually be there... if (unk8) { - ExpandPlaceholdersBuffer(buffer, gUnknown_8109770, gItemParametersData[slot->itemIndex].namePointer, slot->numItems); + sprintf_2(buffer, gUnknown_8109770, gItemParametersData[slot->itemIndex].namePointer, slot->numItems); } else { - ExpandPlaceholdersBuffer(buffer, gUnknown_8109778, gItemParametersData[slot->itemIndex].namePointer); + sprintf_2(buffer, gUnknown_8109778, gItemParametersData[slot->itemIndex].namePointer); } } else if (GetItemType(slot->itemIndex) == ITEM_TYPE_ROCK) { if (unk8) { - ExpandPlaceholdersBuffer(buffer, gUnknown_8109770, gItemParametersData[slot->itemIndex].namePointer, slot->numItems); + sprintf_2(buffer, gUnknown_8109770, gItemParametersData[slot->itemIndex].namePointer, slot->numItems); } else { - ExpandPlaceholdersBuffer(buffer, gUnknown_8109778, gItemParametersData[slot->itemIndex].namePointer); + sprintf_2(buffer, gUnknown_8109778, gItemParametersData[slot->itemIndex].namePointer); } } else if (slot->itemIndex == ITEM_ID_POKE) { - ExpandPlaceholdersBuffer(buffer, gUnknown_810977C, GetMoneyValue(slot)); + sprintf_2(buffer, gUnknown_810977C, GetMoneyValue(slot)); } else { strncpy(buffer, gItemParametersData[slot->itemIndex].namePointer, 80); } if (slot->itemFlags & ITEM_FLAG_STICKY) { - ExpandPlaceholdersBuffer(ext_buffer, gUnknown_8109784, buffer); + sprintf_2(ext_buffer, gUnknown_8109784, buffer); strncpy(buffer, ext_buffer, 80); } if (a3) { if (a3->unk4 && (slot->itemFlags & ITEM_FLAG_SET)) { - ExpandPlaceholdersBuffer(ext_buffer, gUnknown_810978C, buffer); + sprintf_2(ext_buffer, gUnknown_810978C, buffer); strncpy(buffer, ext_buffer, 80); } if ((*(u32*)a3 == 1) || (*(u32*)a3 == 3)) { @@ -408,11 +408,11 @@ void sub_8090F58(void* a1, u8 *a2, struct ItemSlot *slot, struct unkStruct_8090F if (a4->unk6) { sub_8090FEC(value, buffer, 1); - ExpandPlaceholdersBuffer(a1, gUnknown_8109794, a2, a4->unk6, buffer); + sprintf_2(a1, gUnknown_8109794, a2, a4->unk6, buffer); } else { sub_8090FEC(value, buffer, 0); - ExpandPlaceholdersBuffer(a1, gUnknown_81097A4, a2, buffer); + sprintf_2(a1, gUnknown_81097A4, a2, buffer); } } diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c index 0dea887..cd5df5b 100644 --- a/src/kecleon_items_1.c +++ b/src/kecleon_items_1.c @@ -6,6 +6,7 @@ #include "item.h" #include "kecleon_items.h" #include "team_inventory.h" +#include "code_800D090.h" extern struct unkStruct_203B210 *gUnknown_203B210; extern u8 gUnknown_80DB8E4[]; @@ -31,7 +32,6 @@ extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_80073E0(u32); extern s32 sub_8013800(void *, u32); -extern void ExpandPlaceholdersBuffer(u8 *, u8 *, ...); extern void xxx_call_draw_string(s32 x, s32, u8 *, u32, u32); extern void sub_801AE84(void); extern void sub_8012D08(void *, u32); @@ -475,7 +475,7 @@ void sub_801A0D8(void) // Needed for the shifts.. u32 index_shift; u32 numItems_shift; - + sub_8008C54(gUnknown_203B214->unk34); sub_80073B8(gUnknown_203B214->unk34); xxx_call_draw_string(gUnknown_203B214->unk1E * 8 + 10,0,gUnknown_80DB8E4, @@ -505,7 +505,7 @@ void sub_801A0D8(void) xxx_call_draw_string(8,y,auStack204,gUnknown_203B214->unk34,0); } else { - ExpandPlaceholdersBuffer(auStack112,gUnknown_80DB8EC,auStack204); + sprintf_2(auStack112,gUnknown_80DB8EC,auStack204); y = sub_8013800(gUnknown_203B214,iVar4); xxx_call_draw_string(8,y,auStack112,gUnknown_203B214->unk34,0); } @@ -701,7 +701,7 @@ void sub_801A4A4(void) // Needed for the shifts.. u32 index_shift; u32 numItems_shift; - + sub_8008C54(gUnknown_203B21C->unk34); sub_80073B8(gUnknown_203B21C->unk34); xxx_call_draw_string(gUnknown_203B21C->unk1E * 8 + 10,0,gUnknown_80DB92C, @@ -731,7 +731,7 @@ void sub_801A4A4(void) xxx_call_draw_string(8,y,auStack204,gUnknown_203B21C->unk34,0); } else { - ExpandPlaceholdersBuffer(auStack112,gUnknown_80DB934,auStack204); + sprintf_2(auStack112,gUnknown_80DB934,auStack204); y = sub_8013800(gUnknown_203B21C,iVar4); xxx_call_draw_string(8,y,auStack112,gUnknown_203B21C->unk34,0); } @@ -741,7 +741,7 @@ void sub_801A4A4(void) u32 sub_801A5D8(u32 param_1,int param_2,struct UnkTextStruct2_sub *param_3,u32 param_4) { - + if (GetNumberOfFilledInventorySlots() == 0) { return 0; } @@ -781,7 +781,7 @@ u32 sub_801A6E8(u8 param_1) { s32 iVar5; struct ItemSlot local_10; - + if (param_1 == '\0') { sub_8013660(&gUnknown_203B224->unk54); return 0; diff --git a/src/load_screen.c b/src/load_screen.c index 1721bf5..1c224f5 100644 --- a/src/load_screen.c +++ b/src/load_screen.c @@ -8,6 +8,7 @@ #include "text.h" #include "pokemon.h" #include "save.h" +#include "code_800D090.h" extern const struct FileArchive gTitleMenuFileArchive; @@ -59,7 +60,6 @@ extern void sub_80920D8(u8 *); extern struct PokemonStruct *GetPlayerPokemonStruct(void); extern u8 sub_80023E4(u32); extern u8 *sub_8098FB4(); -extern void ExpandPlaceholdersBuffer(u8 *buffer, const u8 *text, ...); extern u8 *GetDungeonLocationInfo(void); extern u32 GetNumAdventures(void); extern void xxx_call_draw_string(u32 x, u32 y, const u8 *, u32, u32); @@ -179,7 +179,7 @@ ALIGNED(4) const char load_screen_fill[] = "pksdir0"; void CreateLoadScreen(u32 currMenu) { int iVar8; - + if (gLoadScreen == NULL) { gLoadScreen = MemoryAlloc(sizeof(struct LoadScreen),8); MemoryFill8((u8 *)gLoadScreen,0,sizeof(struct LoadScreen)); @@ -230,7 +230,7 @@ u32 UpdateLoadScreenMenu(void) { u32 nextMenu; u32 menuAction; - + nextMenu = MENU_NO_SCREEN_CHANGE; menuAction = 4; sub_8012FD8(&gLoadScreen->unk54); @@ -311,7 +311,7 @@ void DrawLoadScreenText(void) r2 = DrawLoadScreenTextSub(teamNameBuffer); } - ExpandPlaceholdersBuffer(gLoadScreen->formattedTeamName,gUnknown_80E7804,r2); + sprintf_2(gLoadScreen->formattedTeamName,gUnknown_80E7804,r2); xxx_call_draw_string(64,0,gLoadScreen->formattedTeamName,0,0); // Draw Player Name @@ -320,7 +320,7 @@ void DrawLoadScreenText(void) sub_80922B4(playerName, gNoNamePlaceholder, POKEMON_NAME_LENGTH); else sub_80922B4(playerName, playerInfo->name, POKEMON_NAME_LENGTH); - ExpandPlaceholdersBuffer(gLoadScreen->formattedPlayerName,gUnknown_80E7804,playerName); + sprintf_2(gLoadScreen->formattedPlayerName,gUnknown_80E7804,playerName); xxx_call_draw_string(64,12,gLoadScreen->formattedPlayerName,0,0); // Draw Location Info @@ -328,7 +328,7 @@ void DrawLoadScreenText(void) if (iVar2 == 0xf1207) PrintDungeonLocationtoBuffer(gLoadScreen->formattedLocation,GetDungeonLocationInfo()); else - ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted + sprintf_2(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted } else { switch(sub_8011C1C()) @@ -337,12 +337,12 @@ void DrawLoadScreenText(void) switch(sub_8001658(0,24)) { default: - ExpandPlaceholdersBuffer(auStack356,gUnknown_80E7804,sub_8098FB4()); + sprintf_2(auStack356,gUnknown_80E7804,sub_8098FB4()); xxx_format_string(auStack356,gLoadScreen->formattedLocation,gLoadScreen->formattedPlayTime,0); break; case 0x7: case 0xB: - ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted + sprintf_2(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted break; } break; @@ -350,10 +350,10 @@ void DrawLoadScreenText(void) if (iVar2 == 0xf1207) PrintDungeonLocationtoBuffer(gLoadScreen->formattedLocation,GetDungeonLocationInfo()); else - ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted + sprintf_2(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted break; default: - ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gLocationUnknownText); // Location unknown + sprintf_2(gLoadScreen->formattedLocation,gLocationUnknownText); // Location unknown break; } } @@ -361,12 +361,12 @@ void DrawLoadScreenText(void) // Draw Play Time DeconstructPlayTime(gPlayTimeRef,&hours,&minutes,&seconds); - ExpandPlaceholdersBuffer(gLoadScreen->formattedPlayTime,gPlayTimePlaceholder,hours,minutes,seconds); + sprintf_2(gLoadScreen->formattedPlayTime,gPlayTimePlaceholder,hours,minutes,seconds); xxx_call_draw_string(64,36,gLoadScreen->formattedPlayTime,0,0); - // Draw Adventures Info + // Draw Adventures Info numAdventures = GetNumAdventures(); - ExpandPlaceholdersBuffer(gLoadScreen->formattedAdventures,gNumAdventurePlaceholder,numAdventures); // %d + sprintf_2(gLoadScreen->formattedAdventures,gNumAdventurePlaceholder,numAdventures); // %d xxx_call_draw_string(64,48,gLoadScreen->formattedAdventures,0,0); // Draw Helper Info @@ -376,14 +376,14 @@ void DrawLoadScreenText(void) if(temp2->speciesIndex != SPECIES_NONE) { sub_808D930(speciesHelper,temp2->speciesIndex); sub_80922B4(nameHelper,temp2->helperName,POKEMON_NAME_LENGTH); - ExpandPlaceholdersBuffer(gLoadScreen->formattedHelperInfo,gHelperInfoPlaceholder,nameHelper,speciesHelper); // %s (%s) + sprintf_2(gLoadScreen->formattedHelperInfo,gHelperInfoPlaceholder,nameHelper,speciesHelper); // %s (%s) } else goto print_helper_placeholder; } else { print_helper_placeholder: - ExpandPlaceholdersBuffer(gLoadScreen->formattedHelperInfo,gNoHelperText); // ----- + sprintf_2(gLoadScreen->formattedHelperInfo,gNoHelperText); // ----- } xxx_call_draw_string(64,60,gLoadScreen->formattedHelperInfo,0,0); @@ -399,7 +399,7 @@ void sub_80397B4(void) int iVar3; int iVar4; s32 other_arg; - + clmkFile = OpenFileAndGetFileDataPtr(gClmkpatFileName,&gTitleMenuFileArchive); // clmkpat for(iVar3 = 0; iVar3 < 64; iVar3++) @@ -426,7 +426,7 @@ bool8 IsQuickSave(void) { int iVar1; bool8 isQuicksave; - + iVar1 = sub_8011FA8(); isQuicksave = FALSE; if (sub_8095324(1) != 0 || sub_8095324(7) != 0) diff --git a/src/move_util.c b/src/move_util.c new file mode 100644 index 0000000..4487862 --- /dev/null +++ b/src/move_util.c @@ -0,0 +1,88 @@ +#include "global.h" +#include "move_util.h" + +#include "constants/move_id.h" +#include "constants/status.h" +#include "moves.h" + +bool8 IsMoveIndexUsable(struct DungeonEntity *pokemon, s32 moveIndex, bool8 hasPPChecker) +{ + struct DungeonEntityData *pokemonData = pokemon->entityData; + struct PokemonMove *move = &pokemonData->moves[moveIndex]; + s32 i; + if (!(move->moveFlags & MOVE_FLAG_EXISTS)) + { + return FALSE; + } + if (move->moveFlags & MOVE_FLAG_LINKED) + { + return FALSE; + } + if (move->moveFlags & MOVE_FLAG_DISABLED || + move->moveFlags2 & MOVE_FLAG_SEALED) + { + return FALSE; + } + goto initMoveIndex; + returnTrue: + return TRUE; + initMoveIndex: + i = 0; + goto checkMoveUsable; + incMoveIndex: + i++; + checkMoveUsable: + if (i >= MAX_MON_MOVES) + { + return FALSE; + } + if (IsMoveUsable(pokemon, move, hasPPChecker)) + { + goto returnTrue; + } + move++; + if ((u32) move >= (u32) &pokemonData->struggleMoveFlags || !(move->moveFlags & MOVE_FLAG_LINKED)) + { + return FALSE; + } + goto incMoveIndex; +} + +bool8 IsMoveUsable(struct DungeonEntity *pokemon, struct PokemonMove *move, bool8 hasPPChecker) +{ + struct DungeonEntityData *pokemonData = pokemon->entityData; + if (move->moveID == MOVE_REGULAR_ATTACK) + { + return TRUE; + } + if (move->moveFlags & MOVE_FLAG_DISABLED || move->moveFlags2 & MOVE_FLAG_SEALED) + { + return FALSE; + } + if (hasPPChecker) + { + if (move->PP == 0) + { + return FALSE; + } + if (pokemonData->volatileStatus == VOLATILE_STATUS_TAUNTED && !MoveDealsDirectDamage(move)) + { + return FALSE; + } + if (pokemonData->volatileStatus == VOLATILE_STATUS_ENCORE) + { + if (move->moveID == MOVE_STRUGGLE) + { + if (!(pokemonData->struggleMoveFlags & MOVE_FLAG_LAST_USED)) + { + return FALSE; + } + } + else if (!(move->moveFlags & MOVE_FLAG_LAST_USED)) + { + return FALSE; + } + } + } + return TRUE; +} diff --git a/src/moves.c b/src/moves.c index 2fcbfd0..3c3e8a9 100644 --- a/src/moves.c +++ b/src/moves.c @@ -3,6 +3,7 @@ #include "file_system.h" #include "moves.h" +#include "code_800D090.h" struct MoveDataFile { @@ -37,7 +38,6 @@ extern u8 gUnknown_810992C[]; extern void sub_8093F10(struct PokemonMove *, struct PokemonMove *); extern void sub_80928C0(u8 *, struct PokemonMove *, struct unkStruct_80928C0 *); -extern void ExpandPlaceholdersBuffer(u8 *, u8 *, ...); void LoadWazaParameters(void) { @@ -51,7 +51,7 @@ u8 sub_809287C(struct PokemonMove *move) { if((move->moveFlags & MOVE_FLAG_DISABLED) != 0) return 0x32; - else if((move->sealed & 1) == 0) + else if((move->moveFlags2 & MOVE_FLAG_SEALED) == 0) return 0x34; else return 0x32; @@ -76,7 +76,7 @@ void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0 } if (move->powerBoost != 0) - ExpandPlaceholdersBuffer(localBuffer,gUnknown_81098DC,move->powerBoost); // %+d + sprintf_2(localBuffer,gUnknown_81098DC,move->powerBoost); // %+d else localBuffer[0] = '\0'; @@ -88,14 +88,14 @@ void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0 } switch(param_3->unk0) { case 0: - ExpandPlaceholdersBuffer + sprintf_2 (buffer,gUnknown_81098E0,uVar2, gMovesData[move->moveID].namePointer,localBuffer); break; case 1: maxPP = GetMoveMaxPP(move); - ExpandPlaceholdersBuffer + sprintf_2 (buffer,gUnknown_81098EC,uVar2,move->moveFlags & MOVE_FLAG_SET ? gUnknown_8109908 : gUnknown_810990C, gMovesData[move->moveID].namePointer,localBuffer,param_3->unk4, move->PP,maxPP); @@ -103,7 +103,7 @@ void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0 case 2: maxPP = GetMoveMaxPP(move); - ExpandPlaceholdersBuffer + sprintf_2 (buffer,gUnknown_8109910,uVar2,move->moveFlags & MOVE_FLAG_SET ? gUnknown_8109908 : gUnknown_810990C, gMovesData[move->moveID].namePointer,localBuffer,param_3->unk4, move->PP,maxPP); @@ -111,7 +111,7 @@ void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0 case 3: maxPP = GetMoveMaxPP(move); - ExpandPlaceholdersBuffer + sprintf_2 (buffer,gUnknown_81098EC,uVar2,move->moveFlags & MOVE_FLAG_ENABLED ? gUnknown_8109928 : gUnknown_810990C, gMovesData[move->moveID].namePointer,localBuffer,param_3->unk4, move->PP,maxPP); @@ -119,7 +119,7 @@ void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0 case 4: maxPP = GetMoveMaxPP(move); - ExpandPlaceholdersBuffer + sprintf_2 (buffer,gUnknown_8109910,uVar2, move->moveFlags & MOVE_FLAG_ENABLED ? gUnknown_8109928 : gUnknown_810990C, gMovesData[move->moveID].namePointer,localBuffer,param_3->unk4, move->PP,maxPP); @@ -130,7 +130,7 @@ void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0 void InitPokemonMove(struct PokemonMove *move, u16 moveID) { move->moveFlags = MOVE_FLAG_ENABLED | MOVE_FLAG_EXISTS; - move->sealed = FALSE; + move->moveFlags2 = 0; move->moveID = moveID; move->PP = GetMoveMaxPP(move); move->powerBoost = 0; @@ -143,7 +143,7 @@ void sub_8092AA8(struct PokemonMove *move, u16 moveID) else { move->moveFlags = MOVE_FLAG_ENABLED | MOVE_FLAG_EXISTS; - move->sealed = FALSE; + move->moveFlags2 = 0; move->moveID = moveID; move->PP = GetMoveMaxPP(move); move->powerBoost = 0; @@ -297,17 +297,17 @@ u8 *GetMoveUseText(u16 moveID) return gMovesData[moveID].useText; } -u8 GetMoveAffectedByMagicCoat(u16 moveID) +bool8 MoveAffectedByMagicCoat(u16 moveID) { return gMovesData[moveID].affectedByMagicCoat; } -u8 GetMoveTargetsUser(u16 moveID) +bool8 MoveTargetsUser(u16 moveID) { return gMovesData[moveID].targetsUser; } -u8 GetMoveAffectedByMuzzled(u16 moveID) +bool8 MoveAffectedByMuzzled(u16 moveID) { return gMovesData[moveID].affectedByMuzzled; } @@ -331,5 +331,5 @@ bool8 IsBlockedBySoundproof(struct PokemonMove *move) void sub_8092D54(u8 *buffer, struct PokemonMove *move) { - ExpandPlaceholdersBuffer(buffer, gUnknown_810992C, gRangeNames[GetMoveRangeType(move)]); + sprintf_2(buffer, gUnknown_810992C, gRangeNames[GetMoveRangeType(move)]); } diff --git a/src/moves_1.c b/src/moves_1.c index 80f28af..b312747 100644 --- a/src/moves_1.c +++ b/src/moves_1.c @@ -38,7 +38,7 @@ void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveS void sub_8094148(struct unkStruct_8094924 *r0, struct PokemonMove *move) { SaveIntegerBits(r0, &move->moveFlags, 4); - SaveIntegerBits(r0, &move->sealed, 1); + SaveIntegerBits(r0, &move->moveFlags2, 1); SaveIntegerBits(r0, &move->moveID, 9); SaveIntegerBits(r0, &move->PP, 7); SaveIntegerBits(r0, &move->powerBoost, 7); @@ -59,7 +59,7 @@ void sub_80941B0(struct unkStruct_8094924 *r0, struct PokemonMove *move) { memset(move, 0, sizeof(struct PokemonMove)); RestoreIntegerBits(r0, &move->moveFlags, 4); - RestoreIntegerBits(r0, &move->sealed, 1); + RestoreIntegerBits(r0, &move->moveFlags2, 1); RestoreIntegerBits(r0, &move->moveID, 9); RestoreIntegerBits(r0, &move->PP, 7); RestoreIntegerBits(r0, &move->powerBoost, 7); diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c index ceb1371..d57e8a2 100644 --- a/src/pokemon_mid.c +++ b/src/pokemon_mid.c @@ -6,6 +6,7 @@ #include "subStruct_203B240.h" #include "constants/colors.h" #include "constants/move_id.h" +#include "code_800D090.h" extern struct gPokemon *gMonsterParameters; extern const char gUnknown_8107600[]; @@ -27,7 +28,6 @@ extern u16 gLevelCurrentPokeId; extern struct LevelData gLevelCurrentData[]; -extern void ExpandPlaceholdersBuffer(u8 *buffer, const char *r2, ...); extern s16 GetBaseSpecies(s16); extern void sub_80922B4(u8 *, u8 *, s32); extern int sprintf(char *, const char *, ...); @@ -239,13 +239,13 @@ void CopySpeciesNametoBuffer(u8 * buffer, s16 index) void CopyYellowSpeciesNametoBuffer(u8 *buffer, s16 index) { s32 new_index = index; - ExpandPlaceholdersBuffer(buffer, gUnknown_8107600, gMonsterParameters[new_index].species); // {COLOR_2 YELLOW}%s{END_COLOR_TEXT_2} + sprintf_2(buffer, gUnknown_8107600, gMonsterParameters[new_index].species); // {COLOR_2 YELLOW}%s{END_COLOR_TEXT_2} } void CopyCyanSpeciesNametoBuffer(u8 *buffer, s16 index) { s32 new_index = index; - ExpandPlaceholdersBuffer(buffer, gUnknown_8107608, gMonsterParameters[new_index].species); // {COLOR_2 CYAN}%s{END_COLOR_TEXT_2} + sprintf_2(buffer, gUnknown_8107608, gMonsterParameters[new_index].species); // {COLOR_2 CYAN}%s{END_COLOR_TEXT_2} } void sub_808D930(u8 *buffer, s16 index) @@ -258,10 +258,10 @@ void sub_808D930(u8 *buffer, s16 index) preload = gUnknown_8107630; // %s%c unownString = GetMonSpecies(SPECIES_UNOWN); unownIndex = GetUnownIndex(index); - ExpandPlaceholdersBuffer(buffer,preload,unownString,gUnownLetters[unownIndex]); // ABCDEFGHIJKLMNOPQRSTUVWXYZ!? + sprintf_2(buffer,preload,unownString,gUnownLetters[unownIndex]); // ABCDEFGHIJKLMNOPQRSTUVWXYZ!? } else { - ExpandPlaceholdersBuffer(buffer,gUnknown_8107638, gMonsterParameters[index].species); // %s + sprintf_2(buffer,gUnknown_8107638, gMonsterParameters[index].species); // %s } } @@ -278,7 +278,7 @@ void PrintColoredPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon, s32 if (colorNum == COLOR_WHITE) { colorNum = COLOR_CYAN; } - ExpandPlaceholdersBuffer(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2} + sprintf_2(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2} } void sub_808D9DC(u8 *buffer, u8 *param_2, s32 colorNum) @@ -289,7 +289,7 @@ void sub_808D9DC(u8 *buffer, u8 *param_2, s32 colorNum) if (colorNum == COLOR_WHITE) { colorNum = COLOR_YELLOW; } - ExpandPlaceholdersBuffer(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2} + sprintf_2(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2} } void sub_808DA0C(u8 *buffer, u8 *param_2) @@ -297,7 +297,7 @@ void sub_808DA0C(u8 *buffer, u8 *param_2) u8 nameBuffer [20]; sub_80922B4(nameBuffer, param_2 + 0x58, POKEMON_NAME_LENGTH); - ExpandPlaceholdersBuffer(buffer,gUnknown_8107638,nameBuffer); // %s + sprintf_2(buffer,gUnknown_8107638,nameBuffer); // %s } void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon) diff --git a/src/status.c b/src/status.c new file mode 100644 index 0000000..dc8a812 --- /dev/null +++ b/src/status.c @@ -0,0 +1,19 @@ +#include "global.h" +#include "status.h" + +#include "constants/ability.h" +#include "dungeon_pokemon_attributes.h" +#include "dungeon_util.h" + +u8 GetFlashFireStatus(struct DungeonEntity *pokemon) +{ + if (!EntityExists(pokemon) || !HasAbility(pokemon, ABILITY_FLASH_FIRE)) + { + return FLASH_FIRE_STATUS_NONE; + } + if (pokemon->entityData->flashFireBoost > 1) + { + return FLASH_FIRE_STATUS_MAXED; + } + return FLASH_FIRE_STATUS_NOT_MAXED; +} diff --git a/src/status_checker.c b/src/status_checker.c index 07d6c7f..0aaeddf 100644 --- a/src/status_checker.c +++ b/src/status_checker.c @@ -11,6 +11,7 @@ #include "dungeon_util.h" #include "dungeon_visibility.h" #include "map.h" +#include "moves.h" #include "number_util.h" #include "status_checks_1.h" #include "tile_types.h" @@ -130,13 +131,13 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo case MOVE_HOWL: case MOVE_MEDITATE: case MOVE_SHARPEN: - if (pokemonData->attackStage >= MAX_STAT_STAGE) + if (pokemonData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE) { return FALSE; } break; case MOVE_BELLY_DRUM: - if (pokemonData->attackStage >= MAX_STAT_STAGE || RoundUpFixedPoint(pokemonData->belly) <= 0) + if (pokemonData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE || RoundUpFixedPoint(pokemonData->belly) <= 0) { return FALSE; } @@ -147,7 +148,7 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo case MOVE_HARDEN: case MOVE_IRON_DEFENSE: case MOVE_WITHDRAW: - if (pokemonData->defenseStage >= MAX_STAT_STAGE) + if (pokemonData->defenseStages[STAT_STAGE_DEFENSE] >= MAX_STAT_STAGE) { return FALSE; } @@ -182,7 +183,7 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo } break; case MOVE_COSMIC_POWER: - if (pokemonData->defenseStage >= MAX_STAT_STAGE && pokemonData->specialDefenseStage >= MAX_STAT_STAGE) + if (pokemonData->defenseStages[STAT_STAGE_DEFENSE] >= MAX_STAT_STAGE && pokemonData->defenseStages[STAT_STAGE_SPECIAL_DEFENSE] >= MAX_STAT_STAGE) { return FALSE; } @@ -212,7 +213,7 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo } break; case MOVE_MINIMIZE: - if (pokemonData->evasionStage >= MAX_STAT_STAGE) + if (pokemonData->accuracyStages[STAT_STAGE_EVASION] >= MAX_STAT_STAGE) { return FALSE; } @@ -243,7 +244,7 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo } break; case MOVE_BULK_UP: - if (pokemonData->attackStage >= MAX_STAT_STAGE && pokemonData->defenseStage >= MAX_STAT_STAGE) + if (pokemonData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE && pokemonData->defenseStages[STAT_STAGE_DEFENSE] >= MAX_STAT_STAGE) { return FALSE; } @@ -255,7 +256,7 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo } break; case MOVE_TAIL_GLOW: - if (pokemonData->specialAttackStage >= MAX_STAT_STAGE) + if (pokemonData->attackStages[STAT_STAGE_SPECIAL_ATTACK] >= MAX_STAT_STAGE) { return FALSE; } @@ -279,7 +280,7 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo } break; case MOVE_DRAGON_DANCE: - if (pokemonData->attackStage >= MAX_STAT_STAGE && pokemon->entityData->movementSpeed >= MAX_MOVEMENT_SPEED) + if (pokemonData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE && pokemon->entityData->movementSpeed >= MAX_MOVEMENT_SPEED) { return FALSE; } @@ -409,19 +410,19 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo } break; case MOVE_DOUBLE_TEAM: - if (pokemonData->evasionStage >= MAX_STAT_STAGE) + if (pokemonData->accuracyStages[STAT_STAGE_EVASION] >= MAX_STAT_STAGE) { return FALSE; } break; case MOVE_GROWTH: - if (pokemonData->specialAttackStage >= MAX_STAT_STAGE) + if (pokemonData->attackStages[STAT_STAGE_SPECIAL_ATTACK] >= MAX_STAT_STAGE) { return FALSE; } break; case MOVE_SWORDS_DANCE: - if (pokemonData->attackStage >= MAX_STAT_STAGE) + if (pokemonData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE) { return FALSE; } @@ -445,12 +446,12 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo } break; case MOVE_CALM_MIND: - if (pokemonData->specialAttackStage < MAX_STAT_STAGE) + if (pokemonData->attackStages[STAT_STAGE_SPECIAL_ATTACK] < MAX_STAT_STAGE) { break; } case MOVE_AMNESIA: - if (pokemonData->specialDefenseStage >= MAX_STAT_STAGE) + if (pokemonData->defenseStages[STAT_STAGE_SPECIAL_DEFENSE] >= MAX_STAT_STAGE) { return FALSE; } @@ -492,11 +493,11 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo struct DungeonEntity *target = gDungeonGlobalData->wildPokemon[i]; if (EntityExists(target) && target != pokemon && CanSee(pokemon, target)) { - if (target->entityData->attackStage >= MAX_STAT_STAGE) + if (target->entityData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE) { continue; } - if (target->entityData->specialAttackStage < MAX_STAT_STAGE) + if (target->entityData->attackStages[STAT_STAGE_SPECIAL_ATTACK] < MAX_STAT_STAGE) { break; } @@ -516,11 +517,11 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo struct DungeonEntity *target = gDungeonGlobalData->teamPokemon[i]; if (EntityExists(target) && target != pokemon && CanSee(pokemon, target)) { - if (target->entityData->attackStage >= MAX_STAT_STAGE) + if (target->entityData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE) { continue; } - if (target->entityData->specialAttackStage < MAX_STAT_STAGE) + if (target->entityData->attackStages[STAT_STAGE_SPECIAL_ATTACK] < MAX_STAT_STAGE) { break; } @@ -535,3 +536,415 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo } return TRUE; } + +bool8 CanUseOnTargetWithStatusChecker(struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move) +{ + struct DungeonEntityData *userData = user->entityData; + struct DungeonEntityData *targetData = target->entityData; + s32 i; + if (targetData->immobilizeStatus == IMMOBILIZE_STATUS_FROZEN && MoveCannotHitFrozen(move)) + { + return FALSE; + } + switch (move->moveID) + { + case MOVE_GRASSWHISTLE: + case MOVE_HYPNOSIS: + case MOVE_LOVELY_KISS: + case MOVE_SING: + case MOVE_SLEEP_POWDER: + case MOVE_SPORE: + if (IsSleeping(target)) + { + return FALSE; + } + break; + case MOVE_YAWN: + if (targetData->sleepStatus == SLEEP_STATUS_YAWNING) + { + return FALSE; + } + if (IsSleeping(target)) + { + return FALSE; + } + break; + case MOVE_NIGHTMARE: + if (targetData->sleepStatus == SLEEP_STATUS_NIGHTMARE) + { + return FALSE; + } + break; + case MOVE_SWEET_SCENT: + if (targetData->accuracyStages[STAT_STAGE_EVASION] <= 0) + { + return FALSE; + } + break; + case MOVE_CHARM: + if (targetData->attackMultipliers[STAT_STAGE_ATTACK] < STAT_MULTIPLIER_THRESHOLD) + { + return FALSE; + } + break; + case MOVE_ENCORE: + if (targetData->volatileStatus == VOLATILE_STATUS_ENCORE) + { + return FALSE; + } + if (!HasLastUsedMove(targetData->moves)) + { + return FALSE; + } + break; + case MOVE_SUPER_FANG: + if (targetData->HP <= 1) + { + return FALSE; + } + break; + case MOVE_PAIN_SPLIT: + if (targetData->HP <= userData->HP) + { + return FALSE; + } + break; + case MOVE_TORMENT: + if (HasDisabledMove(targetData->moves) || !HasLastUsedMove(targetData->moves)) + { + return FALSE; + } + break; + case MOVE_COTTON_SPORE: + case MOVE_SCARY_FACE: + case MOVE_STRING_SHOT: + if (target->entityData->movementSpeed <= 0) + { + return FALSE; + } + break; + case MOVE_SCREECH: + if (targetData->defenseMultipliers[STAT_STAGE_DEFENSE] < STAT_MULTIPLIER_THRESHOLD) + { + return FALSE; + } + break; + case MOVE_FAKE_TEARS: + if (targetData->defenseStages[STAT_STAGE_SPECIAL_DEFENSE] <= 0) + { + return FALSE; + } + break; + case MOVE_SPITE: + if (LastUsedMoveOutOfPP(targetData->moves)) + { + return FALSE; + } + break; + case MOVE_SMOKESCREEN: + if (targetData->moveStatus == MOVE_STATUS_WHIFFER) + { + return FALSE; + } + break; + case MOVE_MEMENTO: + if (targetData->attackMultipliers[STAT_STAGE_ATTACK] < STAT_MULTIPLIER_THRESHOLD && + targetData->attackMultipliers[STAT_STAGE_SPECIAL_ATTACK] < STAT_MULTIPLIER_THRESHOLD) + { + return FALSE; + } + break; + case MOVE_WILL_O_WISP: + if (targetData->nonVolatileStatus == NON_VOLATILE_STATUS_BURNED) + { + return FALSE; + } + break; + case MOVE_FORESIGHT: + case MOVE_ODOR_SLEUTH: + if (targetData->types[0] == TYPE_GHOST || targetData->types[1] == TYPE_GHOST) + { + if (!targetData->exposedStatus) + { + break; + } + } + if (targetData->accuracyStages[STAT_STAGE_EVASION] <= DEFAULT_STAT_STAGE) + { + return FALSE; + } + break; + case MOVE_DISABLE: + case MOVE_GLARE: + case MOVE_STUN_SPORE: + case MOVE_THUNDER_WAVE: + if (targetData->nonVolatileStatus == NON_VOLATILE_STATUS_PARALYZED) + { + return FALSE; + } + break; + case MOVE_ENDEAVOR: + if (targetData->HP - userData->HP <= 0) + { + return FALSE; + } + break; + case MOVE_LEER: + case MOVE_TAIL_WHIP: + if (targetData->defenseStages[STAT_STAGE_DEFENSE] <= 0) + { + return FALSE; + } + break; + case MOVE_METAL_SOUND: + if (targetData->defenseStages[STAT_STAGE_SPECIAL_DEFENSE] <= 0) + { + return FALSE; + } + break; + case MOVE_TICKLE: + if (targetData->attackStages[STAT_STAGE_ATTACK] <= 0 && + targetData->defenseStages[STAT_STAGE_DEFENSE] <= 0) + { + return FALSE; + } + break; + case MOVE_BLOCK: + case MOVE_MEAN_LOOK: + case MOVE_SPIDER_WEB: + if (targetData->immobilizeStatus == IMMOBILIZE_STATUS_IMMOBILIZED) + { + return FALSE; + } + break; + case MOVE_HAZE: + { + for (i = 0; i < 2; i++) + { + if (targetData->attackStages[i] < DEFAULT_STAT_STAGE) break; + if (targetData->defenseStages[i] < DEFAULT_STAT_STAGE) break; + if (targetData->accuracyStages[i] < DEFAULT_STAT_STAGE || + targetData->attackMultipliers[i] < DEFAULT_STAT_MULTIPLIER || + targetData->defenseMultipliers[i] < DEFAULT_STAT_MULTIPLIER) + { + break; + } + } + if (i == 2) + { + return FALSE; + } + break; + } + case MOVE_UPROAR: + if (targetData->sleepStatus == SLEEP_STATUS_SLEEPLESS) + { + return FALSE; + } + break; + case MOVE_PSYCH_UP: + { + for (i = 0; i < 2; i++) + { + if (userData->attackStages[i] < targetData->attackStages[i]) break; + if (userData->defenseStages[i] < targetData->defenseStages[i] || + userData->accuracyStages[i] < targetData->accuracyStages[i] || + userData->attackMultipliers[i] < targetData->attackMultipliers[i] || + userData->defenseMultipliers[i] < targetData->defenseMultipliers[i]) + { + break; + } + } + if (i == 2) + { + return FALSE; + } + break; + } + case MOVE_FLASH: + case MOVE_KINESIS: + case MOVE_SAND_ATTACK: + if (targetData->accuracyStages[STAT_STAGE_ACCURACY] <= 0) + { + return FALSE; + } + break; + case MOVE_TAUNT: + if (targetData->volatileStatus == VOLATILE_STATUS_TAUNTED) + { + return FALSE; + } + break; + case MOVE_TRICK: + if (!(userData->heldItem.itemFlags & ITEM_FLAG_EXISTS) || + !(targetData->heldItem.itemFlags & ITEM_FLAG_EXISTS)) + { + return FALSE; + } + break; + case MOVE_KNOCK_OFF: + if (!(targetData->heldItem.itemFlags & ITEM_FLAG_EXISTS)) + { + return FALSE; + } + break; + case MOVE_FEATHERDANCE: + case MOVE_GROWL: + if (targetData->attackStages[STAT_STAGE_ATTACK] <= 0) + { + return FALSE; + } + break; + case MOVE_ROLE_PLAY: + if (userData->abilities[0] == targetData->abilities[0] && + userData->abilities[1] == targetData->abilities[1]) + { + return FALSE; + } + break; + case MOVE_CURSE: + if (HasType(user, TYPE_GHOST)) + { + if (targetData->waitingStatus == WAITING_STATUS_CURSED) + { + return FALSE; + } + } + else + { + if (userData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE && + userData->defenseStages[STAT_STAGE_DEFENSE] >= MAX_STAT_STAGE) + { + return FALSE; + } + } + break; + case MOVE_IMPRISON: + case MOVE_OBSERVER: + if (targetData->volatileStatus == VOLATILE_STATUS_PAUSED) + { + return FALSE; + } + break; + case MOVE_FALSE_SWIPE: + if (targetData->HP <= 1) + { + return FALSE; + } + break; + case MOVE_LEECH_SEED: + if (targetData->linkedStatus == LINKED_STATUS_LEECH_SEED) + { + return FALSE; + } + break; + case MOVE_PERISH_SONG: + if (targetData->perishSongTimer != 0) + { + return FALSE; + } + break; + case MOVE_MIMIC: + case MOVE_SKETCH: + if (!HasLastUsedMove(targetData->moves)) + { + return FALSE; + } + break; + case MOVE_ATTRACT: + if (targetData->volatileStatus == VOLATILE_STATUS_INFATUATED) + { + return FALSE; + } + break; + case MOVE_WRAP: + if (targetData->immobilizeStatus == IMMOBILIZE_STATUS_WRAPPED_AROUND_FOE) + { + return FALSE; + } + if (targetData->immobilizeStatus == IMMOBILIZE_STATUS_WRAPPED_BY_FOE) + { + return FALSE; + } + break; + case MOVE_TOXIC: + if (targetData->nonVolatileStatus == NON_VOLATILE_STATUS_BADLY_POISONED) + { + return FALSE; + } + break; + case MOVE_POISON_GAS: + case MOVE_POISONPOWDER: + if (targetData->nonVolatileStatus == NON_VOLATILE_STATUS_POISONED) + { + return FALSE; + } + if (targetData->nonVolatileStatus == NON_VOLATILE_STATUS_BADLY_POISONED) + { + return FALSE; + } + break; + case MOVE_CONFUSE_RAY: + case MOVE_FLATTER: + case MOVE_SUPERSONIC: + case MOVE_SWAGGER: + case MOVE_SWEET_KISS: + case MOVE_TEETER_DANCE: + case MOVE_TOTTER: + if (targetData->volatileStatus == VOLATILE_STATUS_CONFUSED) + { + return FALSE; + } + break; + } + return TRUE; +} + +bool8 HasDisabledMove(struct PokemonMove *moves) +{ + s32 i; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (moves[i].moveFlags & MOVE_FLAG_EXISTS && moves[i].moveFlags & MOVE_FLAG_DISABLED) + { + return TRUE; + } + } + if (moves[STRUGGLE_MOVE_INDEX].moveFlags & MOVE_FLAG_DISABLED) + { + return TRUE; + } + return FALSE; +} + +bool8 LastUsedMoveOutOfPP(struct PokemonMove *moves) +{ + s32 i; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (moves[i].moveFlags & MOVE_FLAG_EXISTS && + moves[i].moveFlags & MOVE_FLAG_LAST_USED && + moves[i].PP == 0) + { + return TRUE; + } + } + return FALSE; +} + +bool8 HasLastUsedMove(struct PokemonMove *moves) +{ + s32 i; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (moves[i].moveFlags & MOVE_FLAG_EXISTS && moves[i].moveFlags & MOVE_FLAG_LAST_USED) + { + return TRUE; + } + } + if (moves[STRUGGLE_MOVE_INDEX].moveFlags & MOVE_FLAG_LAST_USED) + { + return TRUE; + } + return FALSE; +} diff --git a/src/status_checks_1.c b/src/status_checks_1.c index c49e127..7070acd 100644 --- a/src/status_checks_1.c +++ b/src/status_checks_1.c @@ -28,7 +28,7 @@ bool8 HasNegativeStatus(struct DungeonEntity *pokemon) for (i = 0; i < MAX_MON_MOVES; i++) { struct PokemonMove *moves = pokemonData->moves; - if (moves[i].moveFlags & MOVE_FLAG_EXISTS && moves[i].sealed & TRUE) + if (moves[i].moveFlags & MOVE_FLAG_EXISTS && moves[i].moveFlags2 & MOVE_FLAG_SEALED) { return TRUE; } diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index 7e419b2..cdfb97a 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -10,6 +10,7 @@ #include "input.h" #include "text.h" #include "team_inventory.h" +#include "code_800D090.h" extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4; @@ -217,7 +218,6 @@ extern void sub_802F2C0(); extern u32 sub_80144A4(s32 *r0); extern void SetThankYouMailMenuState(u32); extern struct PokemonStruct *GetPlayerPokemonStruct(void); -extern void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...); extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32); extern void sub_80922B4(u8 *, u8 *, u32); extern void sub_802F204(struct unkStruct_802F204 *, u32); @@ -1286,7 +1286,7 @@ void UpdateThankYouMailText(void) case 5: pokeStruct = GetPlayerPokemonStruct(); sub_80922B4(auStack180,pokeStruct->name, POKEMON_NAME_LENGTH); - ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF250,auStack180); + sprintf_2(gUnknown_203B2C4->formattedString,gUnknown_80DF250,auStack180); sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d); break; case 0xe: @@ -1445,7 +1445,7 @@ void UpdateThankYouMailText(void) case THANK_YOU_MAIL_COMMS_CLEANUP: pokeStruct2 = GetPlayerPokemonStruct(); sub_80922B4(auStack100, pokeStruct2->name, POKEMON_NAME_LENGTH); - ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF63C,auStack100); + sprintf_2(gUnknown_203B2C4->formattedString,gUnknown_80DF63C,auStack100); sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d); break; case CONFIRM_ITEM_TO_SEND: diff --git a/src/type_chart.c b/src/type_chart.c new file mode 100644 index 0000000..ac2071c --- /dev/null +++ b/src/type_chart.c @@ -0,0 +1,27 @@ +#include "type_chart.h" + +#define IMMUNE EFFECTIVENESS_IMMUNE +#define RESIST EFFECTIVENESS_RESIST +#define NEUTRAL EFFECTIVENESS_NEUTRAL +#define SUPER EFFECTIVENESS_SUPER + +const s16 gTypeEffectivenessChart[NUM_TYPES][NUM_TYPES] = { + {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL}, + {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, RESIST}, + {NEUTRAL, NEUTRAL, RESIST, RESIST, SUPER, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, RESIST, NEUTRAL, RESIST, NEUTRAL, SUPER}, + {NEUTRAL, NEUTRAL, SUPER, RESIST, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST, NEUTRAL, NEUTRAL}, + {NEUTRAL, NEUTRAL, RESIST, SUPER, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, RESIST, SUPER, RESIST, NEUTRAL, RESIST, SUPER, NEUTRAL, RESIST, NEUTRAL, RESIST}, + {NEUTRAL, NEUTRAL, NEUTRAL, SUPER, RESIST, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, IMMUNE, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, RESIST, NEUTRAL, NEUTRAL}, + {NEUTRAL, NEUTRAL, RESIST, RESIST, SUPER, NEUTRAL, RESIST, NEUTRAL, NEUTRAL, SUPER, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST}, + {NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST, NEUTRAL, RESIST, RESIST, RESIST, SUPER, NEUTRAL, NEUTRAL, SUPER, SUPER}, + {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, RESIST, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, RESIST, RESIST, NEUTRAL, NEUTRAL, IMMUNE}, + {NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST, SUPER, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, IMMUNE, NEUTRAL, RESIST, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, SUPER}, + {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, RESIST, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, RESIST}, + {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, SUPER, NEUTRAL, NEUTRAL, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, IMMUNE, RESIST}, + {NEUTRAL, NEUTRAL, RESIST, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, RESIST, RESIST, NEUTRAL, RESIST, SUPER, NEUTRAL, NEUTRAL, RESIST, NEUTRAL, SUPER, RESIST}, + {NEUTRAL, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, RESIST, NEUTRAL, RESIST, SUPER, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, RESIST}, + {NEUTRAL, IMMUNE, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST, RESIST}, + {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST}, + {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST, RESIST}, + {NEUTRAL, NEUTRAL, RESIST, RESIST, NEUTRAL, RESIST, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, RESIST} +}; diff --git a/src/type_effectiveness.c b/src/type_effectiveness.c new file mode 100644 index 0000000..8a9ee04 --- /dev/null +++ b/src/type_effectiveness.c @@ -0,0 +1,174 @@ +#include "global.h" +#include "type_effectiveness.h" + +#include "constants/ability.h" +#include "constants/status.h" +#include "constants/weather.h" +#include "dungeon_global_data.h" +#include "dungeon_pokemon_attributes.h" +#include "dungeon_util.h" +#include "status.h" +#include "type_chart.h" +#include "weather.h" + +u32 gTypeEffectivenessMultipliers[] = {0, 1, 2, 4}; + +s32 WeightWeakTypePicker(struct DungeonEntity *user, struct DungeonEntity *target, u8 moveType) +{ + s32 weight = 1; + bool8 checkExposed = FALSE; + struct DungeonEntityData *userData; + struct DungeonEntityData *targetData; + u8 *targetTypes; + u8 *targetType; + u32 moveTypeOffset; + if (!EntityExists(target)) + { + return 1; + } + if (moveType == TYPE_NORMAL || moveType == TYPE_FIGHTING) + { + checkExposed = TRUE; + } + userData = user->entityData; + targetData = target->entityData; + if (moveType == TYPE_FIRE && GetFlashFireStatus(target) != FLASH_FIRE_STATUS_NONE) + { + return 0; + } + if (moveType == TYPE_ELECTRIC && HasAbility(target, ABILITY_VOLT_ABSORB)) + { + return 0; + } + if (moveType == TYPE_WATER && HasAbility(target, ABILITY_WATER_ABSORB)) + { + return 0; + } + if (moveType == TYPE_GROUND && HasAbility(target, ABILITY_LEVITATE)) + { + return 1; + } + targetTypes = targetData->types; + moveTypeOffset = moveType * NUM_TYPES * sizeof(s16); + targetType = targetData->types; + do + { + s32 effectiveness; + u32 typeEffectivenessMultipliers[NUM_EFFECTIVENESS]; + memcpy(typeEffectivenessMultipliers, gTypeEffectivenessMultipliers, NUM_EFFECTIVENESS * sizeof(u32)); + if (checkExposed && *targetType == TYPE_GHOST && !targetData->exposedStatus) + { + effectiveness = 0; + gDungeonGlobalData->pokemonExposed = TRUE; + } + else + { + effectiveness = gTypeEffectivenessChart[moveType][*targetType]; + // Used to swap variable initialization order at the loop start. + effectiveness = *(s16*)(((s8*) gTypeEffectivenessChart) + moveTypeOffset + *targetType * 2); + } + if (weight == 0) + { + goto breakLoop; + } + weight *= typeEffectivenessMultipliers[effectiveness]; + weight /= 2; + if (weight == 0) + { + // BUG: If the Pokémon's first type resists the move, the second type is ignored. + // This calculates type effectiveness incorrectly if the first type resists the move and the second type is weak to the move. + // For example, a Fire-type move is considered not very effective against a Rock/Bug-type like Anorith. + return 2; + } + } while ((s32)(++targetType) <= (s32)(targetTypes + 1)); + breakLoop: + if ((moveType == TYPE_FIRE || moveType == TYPE_ICE) && HasAbility(target, ABILITY_THICK_FAT)) + { + return 2; + } + if (moveType == TYPE_WATER && HasAbility(user, ABILITY_TORRENT)) + { + s32 maxHP = userData->maxHP; + if (maxHP < 0) + { + maxHP += 3; + } + if (maxHP >> 2 >= userData->HP) + { + weight *= 2; + } + } + if (moveType == TYPE_GRASS && HasAbility(user, ABILITY_OVERGROW)) + { + s32 maxHP = userData->maxHP; + if (maxHP < 0) + { + maxHP += 3; + } + if (maxHP >> 2 >= userData->HP) + { + weight *= 2; + } + } + if (moveType == TYPE_BUG && HasAbility(user, ABILITY_SWARM)) + { + s32 maxHP = userData->maxHP; + if (maxHP < 0) + { + maxHP += 3; + } + if (maxHP >> 2 >= userData->HP) + { + weight *= 2; + } + } + if (moveType == TYPE_FIRE && HasAbility(user, ABILITY_BLAZE)) + { + s32 maxHP = userData->maxHP; + if (maxHP < 0) + { + maxHP += 3; + } + if (maxHP >> 2 >= userData->HP) + { + weight *= 2; + } + } + if (weight == 0) + { + return 2; + } + if (HasType(user, moveType)) + { + weight *= 2; + } + targetTypes = targetData->types; + if (GetWeather(user) == WEATHER_SUNNY) + { + if (moveType == TYPE_FIRE) + { + weight *= 2; + } + else if (moveType == TYPE_WATER) + { + return 2; + } + } + if (gDungeonGlobalData->mudSportTurnsLeft != 0 && moveType == TYPE_ELECTRIC) + { + return 2; + } + if (gDungeonGlobalData->waterSportTurnsLeft != 0 && moveType == TYPE_FIRE) + { + return 2; + } + if (moveType == TYPE_ELECTRIC && userData->chargingStatus == CHARGING_STATUS_CHARGE) + { + weight *= 2; + } + if (weight > 2) + { + weight = 3; + } + return weight + 2; +} diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index 816dba2..6c90992 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -10,6 +10,7 @@ #include "sub_8095228.h" #include "gUnknown_203B46C.h" #include "wonder_mail.h" +#include "code_800D090.h" struct unkStruct_203B2C8 { @@ -139,7 +140,6 @@ extern void sub_802B5B8(void); extern void sub_802B5FC(void); extern void sub_802B624(void); -void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...); extern void sub_802F204(struct unkStruct_802F204 *, u32); extern void sub_803C37C(u8 *, u32, u8 *); extern u32 sub_803C200(u8 *, u32); @@ -374,7 +374,7 @@ void sub_802B3E0(void) strcpy(teamNameBuffer,gRescueTeamNamePlaceholder); } // Print and expand placeholders? - ExpandPlaceholdersBuffer(gUnknown_203B2C8->teamName,gUnknown_80DF9F8,teamNameBuffer); + sprintf_2(gUnknown_203B2C8->teamName,gUnknown_80DF9F8,teamNameBuffer); // Display to screen with Pelipper face sub_80141B4(gUnknown_203B2C8->teamName, 0, &gUnknown_203B2C8->faceFile, 0x10d); break; |