diff options
Diffstat (limited to 'asm')
-rw-r--r-- | asm/code_8040094.s | 2 | ||||
-rw-r--r-- | asm/code_8045A00.s | 4 | ||||
-rw-r--r-- | asm/code_80521D0.s | 24 | ||||
-rw-r--r-- | asm/code_8057144.s | 2 | ||||
-rw-r--r-- | asm/code_8057824.s | 36 | ||||
-rw-r--r-- | asm/code_80701A4.s | 2 | ||||
-rw-r--r-- | asm/code_8073CF0.s | 2 | ||||
-rw-r--r-- | asm/code_8075BA4.s | 1931 | ||||
-rw-r--r-- | asm/code_807C04C.s | 1297 |
9 files changed, 1335 insertions, 1965 deletions
diff --git a/asm/code_8040094.s b/asm/code_8040094.s index 5ea38ec..b057290 100644 --- a/asm/code_8040094.s +++ b/asm/code_8040094.s @@ -2501,7 +2501,7 @@ _080414A0: _080414A4: adds r0, r4, 0 adds r1, r5, 0 - bl sub_80570AC + bl IsChargeMove adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 diff --git a/asm/code_8045A00.s b/asm/code_8045A00.s index 2792ef7..944744e 100644 --- a/asm/code_8045A00.s +++ b/asm/code_8045A00.s @@ -4,7 +4,7 @@ .syntax unified .text - + thumb_func_start CanSee_2 CanSee_2: push {r4,r5,lr} @@ -566,7 +566,7 @@ _08045DF4: _08045E08: adds r0, r7, 0 movs r1, 0x1 - bl ShouldAvoidEnemies_2 + bl ShouldAvoidEnemiesAndShowEffect lsls r0, 24 cmp r0, 0 beq _08045E40 diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index 648cdec..ad3024b 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -2505,7 +2505,7 @@ _080537B0: .4byte gUnknown_80FCD28 _080537B4: adds r0, r7, 0 mov r1, r8 - bl GetMoveType_2 + bl GetMoveTypeForPokemon lsls r0, 24 lsrs r0, 24 cmp r0, 0x5 @@ -2831,7 +2831,7 @@ _08053A4C: movs r4, 0 adds r0, r7, 0 mov r1, r8 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 bne _08053A7E @@ -5857,7 +5857,7 @@ sub_8055640: mov r9, r3 ldr r7, [sp, 0x44] adds r1, r5, 0 - bl GetMoveType_2 + bl GetMoveTypeForPokemon adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -6114,7 +6114,7 @@ sub_8055864: adds r5, r2, 0 adds r6, r3, 0 adds r1, r5, 0 - bl GetMoveType_2 + bl GetMoveTypeForPokemon adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 @@ -6521,7 +6521,7 @@ _08055B74: adds r0, r5, 0 adds r1, r6, 0 str r2, [sp, 0x30] - bl sub_80570AC + bl IsChargeMove lsls r0, 24 lsrs r4, r0, 24 ldrb r0, [r6, 0x4] @@ -7148,7 +7148,7 @@ _080560AE: beq _080560CC adds r0, r5, 0 adds r1, r7, 0 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 bne _080560CC @@ -7165,7 +7165,7 @@ _080560CC: bl sub_80928C0 adds r0, r5, 0 adds r1, r7, 0 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 beq _08056124 @@ -8038,7 +8038,7 @@ _080567EC: beq _08056820 mov r0, r10 ldr r1, [sp, 0x1C] - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 bne _08056820 @@ -8740,7 +8740,7 @@ _08056D44: bne _08056D86 adds r0, r5, 0 mov r1, r8 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 lsrs r4, r0, 24 mov r2, r8 @@ -9186,8 +9186,8 @@ _080570A6: bx r1 thumb_func_end sub_8057088 - thumb_func_start sub_80570AC -sub_80570AC: + thumb_func_start IsChargeMove +IsChargeMove: push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -9229,6 +9229,6 @@ _080570EA: bx r1 .align 2, 0 _080570F0: .4byte gChargeMovesToStatuses - thumb_func_end sub_80570AC + thumb_func_end IsChargeMove .align 2, 0 diff --git a/asm/code_8057144.s b/asm/code_8057144.s index 795e7cf..fba13cd 100644 --- a/asm/code_8057144.s +++ b/asm/code_8057144.s @@ -932,7 +932,7 @@ _080577C8: .4byte gUnknown_80FD14C _080577CC: adds r0, r4, 0 adds r1, r6, 0 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 beq _080577F8 diff --git a/asm/code_8057824.s b/asm/code_8057824.s index 2856506..6ae62c4 100644 --- a/asm/code_8057824.s +++ b/asm/code_8057824.s @@ -1209,7 +1209,7 @@ sub_80582EC: adds r4, r2, 0 adds r6, r3, 0 adds r1, r4, 0 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 beq _08058328 @@ -1684,7 +1684,7 @@ sub_805867C: adds r4, r2, 0 adds r6, r3, 0 adds r1, r4, 0 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 beq _080586B8 @@ -2255,7 +2255,7 @@ SkyAttackMoveAction: mov r8, r0 adds r0, r4, 0 adds r1, r5, 0 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 beq _08058B14 @@ -3847,7 +3847,7 @@ sub_805968C: beq _080596B6 adds r0, r5, 0 adds r1, r6, 0 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 beq _080596EC @@ -3972,7 +3972,7 @@ sub_8059790: adds r4, r2, 0 adds r6, r3, 0 adds r1, r4, 0 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 beq _080597CC @@ -4077,7 +4077,7 @@ _0805986C: .4byte gUnknown_80FD128 _08059870: adds r0, r4, 0 adds r1, r5, 0 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 beq _080598A4 @@ -4548,7 +4548,7 @@ _08059BE2: beq _08059C08 adds r0, r5, 0 adds r1, r4, 0 - bl GetMoveType_2 + bl GetMoveTypeForPokemon lsls r0, 24 cmp r0, 0 beq _08059C08 @@ -4573,7 +4573,7 @@ _08059C08: adds r4, r1, r0 ldr r1, [r4] adds r0, r5, 0 - bl GetMoveType_2 + bl GetMoveTypeForPokemon adds r1, r7, 0 adds r1, 0x5C movs r2, 0 @@ -4912,7 +4912,7 @@ _08059E8A: bne _08059F1A adds r0, r6, 0 adds r1, r7, 0 - bl GetMoveType_2 + bl GetMoveTypeForPokemon adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -5002,7 +5002,7 @@ sub_8059F38: mov r8, r0 adds r0, r4, 0 adds r1, r5, 0 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 beq _08059FA0 @@ -5094,7 +5094,7 @@ _08059FFE: bne _0805A090 adds r0, r6, 0 adds r1, r7, 0 - bl GetMoveType_2 + bl GetMoveTypeForPokemon adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -8374,7 +8374,7 @@ SkullBashMoveAction: adds r4, r2, 0 adds r6, r3, 0 adds r1, r4, 0 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 beq _0805B8EC @@ -12001,7 +12001,7 @@ _0805D928: strb r5, [r1, 0x1] bl GetLeaderEntity movs r1, 0x1 - bl ShouldAvoidEnemies_2 + bl ShouldAvoidEnemiesAndShowEffect lsls r0, 24 cmp r0, 0 bne _0805D976 @@ -12327,7 +12327,7 @@ _0805DBF4: .4byte 0x00000673 _0805DBF8: mov r0, r10 movs r1, 0x1 - bl ShouldAvoidEnemies_2 + bl ShouldAvoidEnemiesAndShowEffect lsls r0, 24 cmp r0, 0 beq _0805DC08 @@ -16024,7 +16024,7 @@ _0805F9A0: bl sub_80073B8 bl GetLeaderEntity movs r1, 0x1 - bl ShouldAvoidEnemies_2 + bl ShouldAvoidEnemiesAndShowEffect lsls r0, 24 cmp r0, 0 beq _0805F9CC @@ -30935,7 +30935,7 @@ _0806721C: .4byte gUnknown_80F8BE0 _08067220: adds r0, r6, 0 movs r1, 0x1 - bl ShouldAvoidEnemies_2 + bl ShouldAvoidEnemiesAndShowEffect lsls r0, 24 cmp r0, 0 beq _08067248 @@ -36863,7 +36863,7 @@ _0806A068: beq _0806A0FA mov r0, r8 mov r1, r9 - bl GetMoveType_2 + bl GetMoveTypeForPokemon lsls r0, 24 lsrs r5, r0, 24 mov r1, r9 @@ -36954,7 +36954,7 @@ sub_806A120: bne _0806A19C adds r0, r7, 0 adds r1, r4, 0 - bl GetMoveType_2 + bl GetMoveTypeForPokemon lsls r0, 24 lsrs r0, 24 bl sub_8092364 diff --git a/asm/code_80701A4.s b/asm/code_80701A4.s index 04b317b..ac383ab 100644 --- a/asm/code_80701A4.s +++ b/asm/code_80701A4.s @@ -153,7 +153,7 @@ _080702B0: beq _08070312 adds r0, r7, 0 adds r1, r4, 0 - bl sub_80570AC + bl IsChargeMove lsls r0, 24 cmp r0, 0 beq _08070312 diff --git a/asm/code_8073CF0.s b/asm/code_8073CF0.s index 7cadcc3..36da354 100644 --- a/asm/code_8073CF0.s +++ b/asm/code_8073CF0.s @@ -105,7 +105,7 @@ _08073D80: _08073D98: adds r0, r6, 0 movs r1, 0x1 - bl ShouldAvoidEnemies_2 + bl ShouldAvoidEnemiesAndShowEffect lsls r0, 24 cmp r0, 0 beq _08073DC8 diff --git a/asm/code_8075BA4.s b/asm/code_8075BA4.s index 9d92ce6..def36e3 100644 --- a/asm/code_8075BA4.s +++ b/asm/code_8075BA4.s @@ -10245,7 +10245,7 @@ _0807AE32: _0807AE6A: adds r0, r5, 0 adds r1, r7, 0 - bl ShouldAvoidEnemies_2 + bl ShouldAvoidEnemiesAndShowEffect lsls r0, 24 cmp r0, 0 beq _0807AE80 @@ -11081,7 +11081,7 @@ _0807B4C8: mov r10, r1 mov r0, r9 adds r1, r7, 0 - bl ShouldAvoidEnemies_2 + bl ShouldAvoidEnemiesAndShowEffect lsls r0, 24 cmp r0, 0 bne _0807B4E4 @@ -11972,1931 +11972,4 @@ sub_807BB78: bx lr thumb_func_end sub_807BB78 - thumb_func_start DecideAttack -DecideAttack: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x5C - mov r10, r0 - ldr r0, [r0, 0x70] - mov r8, r0 - mov r0, r10 - movs r1, 0 - bl CannotAttack - lsls r0, 24 - cmp r0, 0 - beq _0807BBB6 - b _0807C03A -_0807BBB6: - mov r0, r10 - movs r1, 0x1 - bl ShouldAvoidEnemies_2 - lsls r0, 24 - cmp r0, 0 - beq _0807BBC6 - b _0807C03A -_0807BBC6: - mov r0, r10 - movs r1, 0x8 - bl HasTactic - lsls r0, 24 - cmp r0, 0 - beq _0807BBD6 - b _0807C03A -_0807BBD6: - mov r0, r8 - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x2 - bne _0807BBF2 - ldr r0, _0807BC70 - movs r1, 0 - ldrsh r0, [r0, r1] - bl RollPercentChance - lsls r0, 24 - cmp r0, 0 - beq _0807BBF2 - b _0807C03A -_0807BBF2: - mov r0, r8 - adds r0, 0xC0 - ldrb r1, [r0] - str r0, [sp, 0x50] - cmp r1, 0 - beq _0807BC7C - movs r5, 0 - movs r4, 0x8C - lsls r4, 1 - add r4, r8 -_0807BC06: - ldrb r1, [r4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0807BC74 - mov r0, r10 - adds r1, r4, 0 - bl sub_80570AC - lsls r0, 24 - cmp r0, 0 - beq _0807BC74 - mov r0, r8 - adds r0, 0xC2 - ldrb r0, [r0] - cmp r0, r5 - bne _0807BC74 - mov r0, r8 - adds r0, 0x44 - movs r1, 0x15 - bl SetAction - adds r3, r5, 0 - mov r6, r8 - adds r6, 0x48 - cmp r5, 0 - bgt _0807BC3E - b _0807C006 -_0807BC3E: - ldrb r1, [r4] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0807BC4A - b _0807C006 -_0807BC4A: - movs r4, 0x2 - lsls r0, r5, 3 - movs r2, 0x8C - lsls r2, 1 - adds r0, r2 - mov r7, r8 - adds r2, r0, r7 -_0807BC58: - subs r2, 0x8 - subs r3, 0x1 - cmp r3, 0 - bgt _0807BC62 - b _0807C006 -_0807BC62: - ldrb r1, [r2] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _0807BC58 - b _0807C006 - .align 2, 0 -_0807BC70: .4byte gConfusedAttackChance -_0807BC74: - adds r4, 0x8 - adds r5, 0x1 - cmp r5, 0x3 - ble _0807BC06 -_0807BC7C: - movs r0, 0 - str r0, [sp, 0x44] - movs r1, 0 - str r1, [sp, 0x40] - movs r2, 0x8C - lsls r2, 1 - add r2, r8 - movs r4, 0x1 - movs r3, 0x4 - movs r5, 0x3 -_0807BC90: - ldrb r1, [r2] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _0807BCB0 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0807BCA8 - ldr r7, [sp, 0x40] - adds r7, 0x1 - str r7, [sp, 0x40] -_0807BCA8: - ldrb r0, [r2, 0x4] - ldr r1, [sp, 0x44] - adds r1, r0 - str r1, [sp, 0x44] -_0807BCB0: - adds r2, 0x8 - subs r5, 0x1 - cmp r5, 0 - bge _0807BC90 - ldr r2, [sp, 0x44] - cmp r2, 0 - bne _0807BCF8 - add r4, sp, 0x2C - movs r1, 0xB0 - lsls r1, 1 - adds r0, r4, 0 - bl InitPokemonMove - mov r0, sp - mov r1, r10 - adds r2, r4, 0 - bl FindMoveTarget - mov r0, sp - ldrb r0, [r0] - cmp r0, 0 - bne _0807BCDE - b _0807C03A -_0807BCDE: - mov r0, r8 - adds r0, 0x44 - movs r1, 0x17 - bl SetAction - mov r0, sp - ldrb r1, [r0, 0x1] - movs r0, 0x7 - ands r0, r1 - mov r1, r8 - adds r1, 0x46 - strb r0, [r1] - b _0807C008 -_0807BCF8: - mov r0, r10 - movs r1, 0xB - bl HasIQSkill - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x48] - mov r0, r10 - movs r1, 0x6 - bl HasIQSkill - lsls r0, 24 - lsrs r0, 24 - negs r1, r0 - orrs r1, r0 - lsrs r1, 31 - str r1, [sp, 0x3C] - movs r7, 0 - str r7, [sp, 0x44] - mov r0, sp - adds r0, 0x28 - str r0, [sp, 0x4C] - adds r2, r0, 0 - movs r1, 0x1 - adds r0, 0x3 -_0807BD2A: - strb r1, [r0] - subs r0, 0x1 - cmp r0, r2 - bge _0807BD2A - ldr r1, [sp, 0x3C] - cmp r1, 0 - beq _0807BDC0 - movs r2, 0x63 - movs r4, 0 - movs r5, 0 - movs r3, 0x8C - lsls r3, 1 - add r3, r8 - b _0807BD98 -_0807BD46: - cmp r5, 0 - beq _0807BD7A - ldrb r1, [r3] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0807BD7A - adds r0, r4, 0x1 - adds r6, r5, 0x1 - cmp r0, r5 - bge _0807BD74 - cmp r2, 0x1 - bgt _0807BD74 - adds r1, r4, 0 - cmp r1, r5 - bge _0807BD74 - ldr r2, [sp, 0x4C] - movs r4, 0 -_0807BD6A: - adds r0, r2, r1 - strb r4, [r0] - adds r1, 0x1 - cmp r1, r5 - blt _0807BD6A -_0807BD74: - ldrb r2, [r3, 0x4] - adds r4, r5, 0 - b _0807BD86 -_0807BD7A: - ldrb r1, [r3, 0x4] - cmp r1, r2 - ble _0807BD82 - adds r1, r2, 0 -_0807BD82: - adds r2, r1, 0 - adds r6, r5, 0x1 -_0807BD86: - adds r5, r6, 0 - cmp r5, 0x3 - bgt _0807BDA2 - lsls r0, r5, 3 - movs r7, 0x8C - lsls r7, 1 - adds r0, r7 - mov r1, r8 - adds r3, r1, r0 -_0807BD98: - ldrb r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0807BD46 -_0807BDA2: - adds r0, r4, 0x1 - cmp r0, r5 - bge _0807BDC0 - cmp r2, 0x1 - bgt _0807BDC0 - adds r1, r4, 0 - cmp r1, r5 - bge _0807BDC0 - ldr r2, [sp, 0x4C] - movs r3, 0 -_0807BDB6: - adds r0, r2, r1 - strb r3, [r0] - adds r1, 0x1 - cmp r1, r5 - blt _0807BDB6 -_0807BDC0: - movs r5, 0 - movs r2, 0 - str r2, [sp, 0x54] - add r4, sp, 0x4 - movs r7, 0x8C - lsls r7, 1 - add r7, r8 - adds r6, r7, 0 - mov r9, sp - mov r0, sp - str r0, [sp, 0x58] -_0807BDD6: - movs r2, 0 - mov r1, r9 - strb r2, [r1] - ldrb r1, [r7] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0807BE64 - ldr r1, [sp, 0x4C] - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, 0 - beq _0807BE64 - mov r0, r10 - adds r1, r5, 0 - ldr r2, [sp, 0x3C] - bl IsMoveUsable - lsls r0, 24 - cmp r0, 0 - beq _0807BE64 - ldrb r1, [r7] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0807BE64 - movs r0, 0x1 - mov r2, r9 - strb r0, [r2] - ldr r1, [sp, 0x50] - ldrb r0, [r1] - cmp r0, 0xB - bne _0807BE38 - ldrh r0, [r7, 0x2] - cmp r0, 0x80 - bne _0807BE24 - movs r2, 0 - str r2, [r4] - b _0807BE64 -_0807BE24: - mov r0, r10 - adds r1, r6, 0 - bl GetMoveType_2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - beq _0807BE4A - movs r0, 0x1 - b _0807BE54 -_0807BE38: - ldr r1, [sp, 0x48] - cmp r1, 0 - beq _0807BE4A - ldr r0, [sp, 0x58] - mov r1, r10 - adds r2, r6, 0 - bl FindMoveTarget - b _0807BE54 -_0807BE4A: - adds r0, r6, 0 - bl GetMoveWeight - lsls r0, 24 - lsrs r0, 24 -_0807BE54: - str r0, [r4] - add r0, sp, 0x4 - ldr r2, [sp, 0x54] - adds r0, r2 - ldr r0, [r0] - ldr r1, [sp, 0x44] - adds r1, r0 - str r1, [sp, 0x44] -_0807BE64: - ldr r2, [sp, 0x54] - adds r2, 0x8 - str r2, [sp, 0x54] - adds r4, 0x8 - adds r7, 0x8 - adds r6, 0x8 - movs r0, 0x8 - add r9, r0 - ldr r1, [sp, 0x58] - adds r1, 0x8 - str r1, [sp, 0x58] - adds r5, 0x1 - cmp r5, 0x3 - ble _0807BDD6 - movs r0, 0 - str r0, [sp, 0x24] - mov r0, r10 - movs r1, 0x17 - bl HasIQSkill - lsls r0, 24 - cmp r0, 0 - bne _0807BECA - ldr r2, [sp, 0x50] - ldrb r0, [r2] - cmp r0, 0xB - beq _0807BECA - add r0, sp, 0x20 - movs r1, 0x1 - strb r1, [r0] - ldrb r0, [r2] - cmp r0, 0xB - bne _0807BEAA - str r1, [sp, 0x24] - b _0807BEC2 -_0807BEAA: - ldr r7, [sp, 0x48] - cmp r7, 0 - beq _0807BEB4 - movs r0, 0x2 - b _0807BEC0 -_0807BEB4: - ldr r0, _0807BEE8 - ldr r2, [sp, 0x40] - lsls r1, r2, 1 - adds r1, r0 - movs r7, 0 - ldrsh r0, [r1, r7] -_0807BEC0: - str r0, [sp, 0x24] -_0807BEC2: - ldr r0, [sp, 0x24] - ldr r1, [sp, 0x44] - adds r1, r0 - str r1, [sp, 0x44] -_0807BECA: - ldr r2, [sp, 0x48] - cmp r2, 0 - beq _0807BF2A - movs r5, 0 - movs r7, 0 - str r7, [sp, 0x44] - add r0, sp, 0x4 - adds r3, r0, 0 - mov r2, sp - movs r4, 0x4 -_0807BEDE: - ldrb r1, [r2] - cmp r1, 0 - bne _0807BEEC - str r1, [r3] - b _0807BEF4 - .align 2, 0 -_0807BEE8: .4byte gUnknown_80F4E22 -_0807BEEC: - ldr r1, [r3] - cmp r5, r1 - bge _0807BEF4 - adds r5, r1, 0 -_0807BEF4: - adds r3, 0x8 - adds r2, 0x8 - subs r4, 0x1 - cmp r4, 0 - bge _0807BEDE - movs r4, 0 - movs r6, 0 - adds r1, r0, 0 - adds r3, r1, 0 - mov r2, sp -_0807BF08: - ldrb r0, [r2] - cmp r0, 0 - beq _0807BF1E - ldr r0, [r1] - cmp r5, r0 - beq _0807BF16 - str r6, [r1] -_0807BF16: - ldr r0, [r3] - ldr r7, [sp, 0x44] - adds r7, r0 - str r7, [sp, 0x44] -_0807BF1E: - adds r1, 0x8 - adds r3, 0x8 - adds r2, 0x8 - adds r4, 0x1 - cmp r4, 0x4 - ble _0807BF08 -_0807BF2A: - ldr r0, [sp, 0x44] - cmp r0, 0 - bne _0807BF32 - b _0807C03A -_0807BF32: - bl DungeonRandomCapped - str r0, [sp, 0x38] - movs r1, 0 - mov r9, r1 - mov r0, r10 - movs r1, 0x17 - bl HasIQSkill - lsls r0, 24 - cmp r0, 0 - bne _0807BF5A - add r1, sp, 0x34 - mov r0, r10 - movs r2, 0x1 - bl TargetRegularAttack - lsls r0, 24 - lsrs r6, r0, 24 - b _0807BF5E -_0807BF5A: - movs r6, 0 - str r6, [sp, 0x34] -_0807BF5E: - movs r5, 0 - mov r4, sp - movs r7, 0 -_0807BF64: - ldrb r0, [r4] - cmp r0, 0 - beq _0807C010 - add r0, sp, 0x4 - adds r0, r7 - ldr r0, [r0] - cmp r0, 0 - beq _0807C010 - add r9, r0 - ldr r2, [sp, 0x38] - cmp r9, r2 - blt _0807C010 - cmp r5, 0x4 - bne _0807BF9C - cmp r6, 0 - beq _0807C03A - mov r0, r8 - adds r0, 0x44 - movs r1, 0x32 - bl SetAction - ldr r0, [sp, 0x34] - movs r1, 0x7 - ands r0, r1 - mov r1, r8 - adds r1, 0x46 - strb r0, [r1] - b _0807C008 -_0807BF9C: - movs r0, 0x8C - lsls r0, 1 - mov r9, r0 - adds r2, r7, r0 - add r2, r8 - adds r0, r4, 0 - mov r1, r10 - bl FindMoveTarget - ldrb r0, [r4] - cmp r0, 0 - beq _0807C01A - mov r0, r8 - adds r0, 0x44 - movs r1, 0x15 - bl SetAction - adds r3, r5, 0 - mov r6, r8 - adds r6, 0x48 - movs r1, 0x46 - add r1, r8 - mov r12, r1 - cmp r5, 0 - ble _0807BFFC - mov r2, r8 - adds r0, r2, r7 - add r0, r9 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0807BFFC - movs r7, 0x2 - lsls r0, r5, 3 - movs r1, 0x8C - lsls r1, 1 - adds r0, r1 - adds r2, r0, r2 -_0807BFEA: - subs r2, 0x8 - subs r3, 0x1 - cmp r3, 0 - ble _0807BFFC - ldrb r1, [r2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _0807BFEA -_0807BFFC: - ldrb r1, [r4, 0x1] - movs r0, 0x7 - ands r0, r1 - mov r2, r12 - strb r0, [r2] -_0807C006: - strb r3, [r6] -_0807C008: - mov r0, r10 - bl TargetTileInFront - b _0807C03A -_0807C010: - adds r4, 0x8 - adds r7, 0x8 - adds r5, 0x1 - cmp r5, 0x4 - ble _0807BF64 -_0807C01A: - cmp r6, 0 - beq _0807C03A - mov r0, r8 - adds r0, 0x44 - movs r1, 0x32 - bl SetAction - ldr r0, [sp, 0x34] - movs r1, 0x7 - ands r0, r1 - mov r1, r8 - adds r1, 0x46 - strb r0, [r1] - mov r0, r10 - bl TargetTileInFront -_0807C03A: - add sp, 0x5C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end DecideAttack - - thumb_func_start FindMoveTarget -FindMoveTarget: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - str r0, [sp, 0x8] - adds r6, r1, 0 - mov r10, r2 - movs r0, 0x1 - str r0, [sp, 0x10] - ldr r4, [r6, 0x70] - movs r1, 0 - mov r8, r1 - ldr r1, _0807C0C8 - movs r2, 0 - adds r0, r1, 0x7 -_0807C06E: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _0807C06E - adds r0, r6, 0 - mov r1, r10 - movs r2, 0x1 - bl GetTargetingFlags - lsls r0, 16 - asrs r0, 16 - str r0, [sp, 0xC] - adds r0, r6, 0 - movs r1, 0x8 - bl HasIQSkill - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - movs r0, 0 - ldr r2, [sp, 0x8] - strb r0, [r2] - adds r0, r4, 0 - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x5 - bne _0807C0B0 - mov r0, r10 - bl GetMoveDealsDirectDamage - lsls r0, 24 - cmp r0, 0 - beq _0807C0C4 -_0807C0B0: - ldr r3, [sp, 0x14] - cmp r3, 0 - beq _0807C0CC - adds r0, r6, 0 - mov r1, r10 - bl CanUseWithStatusChecker - lsls r0, 24 - cmp r0, 0 - bne _0807C0CC -_0807C0C4: - movs r0, 0x1 - b _0807C48C - .align 2, 0 -_0807C0C8: .4byte gCanAttackInDirection -_0807C0CC: - movs r0, 0xF0 - ldr r1, [sp, 0xC] - ands r0, r1 - cmp r0, 0 - beq _0807C0DE - cmp r0, 0x10 - beq _0807C0DE - cmp r0, 0x20 - bne _0807C19C -_0807C0DE: - adds r0, r4, 0 - adds r0, 0xE8 - ldrb r1, [r0] - cmp r1, 0x1 - bne _0807C128 - subs r0, 0xA2 - ldrb r7, [r0] - ldr r0, _0807C118 - adds r0, r7, r0 - ldrb r3, [r0] - cmp r3, 0 - beq _0807C0F8 - b _0807C3F6 -_0807C0F8: - strb r1, [r0] - ldr r0, _0807C11C - add r0, r8 - strb r7, [r0] - ldr r0, _0807C120 - mov r4, r8 - lsls r2, r4, 2 - adds r0, r2, r0 - movs r1, 0x63 - str r1, [r0] - ldr r0, _0807C124 - adds r2, r0 - str r3, [r2] - movs r0, 0x1 - add r8, r0 - b _0807C3F6 - .align 2, 0 -_0807C118: .4byte gCanAttackInDirection -_0807C11C: .4byte gUnknown_202F388 -_0807C120: .4byte gPotentialTargetWeights_2 -_0807C124: .4byte gUnknown_202F3B0 -_0807C128: - movs r7, 0 - movs r0, 0xF0 - ldr r1, [sp, 0xC] - ands r0, r1 - lsls r5, r0, 16 -_0807C132: - movs r2, 0x4 - ldrsh r0, [r6, r2] - ldr r1, _0807C198 - lsls r2, r7, 2 - adds r2, r1 - movs r3, 0 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r4, 0x6 - ldrsh r1, [r6, r4] - movs r3, 0x2 - ldrsh r2, [r2, r3] - adds r1, r2 - bl GetMapTileAtPosition - ldr r4, [r0, 0x10] - cmp r4, 0 - beq _0807C18E - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x1 - bne _0807C18E - asrs r0, r5, 16 - cmp r0, 0x10 - beq _0807C178 - cmp r0, 0x20 - beq _0807C178 - adds r0, r6, 0 - adds r1, r7, 0 - bl CanAttackInFront - lsls r0, 24 - cmp r0, 0 - beq _0807C18E -_0807C178: - mov r0, r10 - str r0, [sp] - ldr r1, [sp, 0x14] - str r1, [sp, 0x4] - mov r0, r8 - ldr r1, [sp, 0xC] - adds r2, r6, 0 - adds r3, r4, 0 - bl WeightMoveIfUsable - mov r8, r0 -_0807C18E: - adds r7, 0x1 - cmp r7, 0x7 - ble _0807C132 - b _0807C3F6 - .align 2, 0 -_0807C198: .4byte gAdjacentTileOffsets -_0807C19C: - cmp r0, 0x30 - bne _0807C1F0 - movs r5, 0 -_0807C1A2: - ldr r0, _0807C1E8 - ldr r0, [r0] - lsls r1, r5, 2 - ldr r2, _0807C1EC - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807C1E0 - adds r0, r6, 0 - adds r1, r4, 0 - bl CanSee - lsls r0, 24 - cmp r0, 0 - beq _0807C1E0 - mov r3, r10 - str r3, [sp] - ldr r0, [sp, 0x14] - str r0, [sp, 0x4] - mov r0, r8 - ldr r1, [sp, 0xC] - adds r2, r6, 0 - adds r3, r4, 0 - bl WeightMoveIfUsable - mov r8, r0 -_0807C1E0: - adds r5, 0x1 - cmp r5, 0x13 - ble _0807C1A2 - b _0807C3F6 - .align 2, 0 -_0807C1E8: .4byte gDungeonGlobalData -_0807C1EC: .4byte 0x000135cc -_0807C1F0: - cmp r0, 0x40 - bne _0807C2A8 - movs r7, 0 - ldr r1, _0807C2A4 - mov r9, r1 -_0807C1FA: - movs r2, 0x4 - ldrsh r0, [r6, r2] - mov r3, r9 - movs r4, 0 - ldrsh r1, [r3, r4] - adds r0, r1 - movs r2, 0x6 - ldrsh r1, [r6, r2] - movs r4, 0x2 - ldrsh r2, [r3, r4] - adds r1, r2 - bl GetMapTileAtPosition - adds r4, r0, 0 - adds r0, r6, 0 - adds r1, r7, 0 - bl CanAttackInFront - lsls r0, 24 - cmp r0, 0 - beq _0807C296 - ldr r5, [r4, 0x10] - cmp r5, 0 - beq _0807C250 - adds r0, r5, 0 - bl GetEntityType - cmp r0, 0x1 - bne _0807C250 - mov r4, r8 - mov r0, r10 - str r0, [sp] - ldr r1, [sp, 0x14] - str r1, [sp, 0x4] - adds r0, r4, 0 - ldr r1, [sp, 0xC] - adds r2, r6, 0 - adds r3, r5, 0 - bl WeightMoveIfUsable - mov r8, r0 - cmp r4, r8 - bne _0807C296 -_0807C250: - movs r2, 0x4 - ldrsh r0, [r6, r2] - mov r3, r9 - movs r4, 0 - ldrsh r1, [r3, r4] - lsls r1, 1 - adds r0, r1 - movs r2, 0x6 - ldrsh r1, [r6, r2] - movs r4, 0x2 - ldrsh r2, [r3, r4] - lsls r2, 1 - adds r1, r2 - bl GetMapTileAtPosition - adds r4, r0, 0 - ldr r5, [r4, 0x10] - cmp r5, 0 - beq _0807C296 - adds r0, r5, 0 - bl GetEntityType - cmp r0, 0x1 - bne _0807C296 - mov r0, r10 - str r0, [sp] - ldr r1, [sp, 0x14] - str r1, [sp, 0x4] - mov r0, r8 - ldr r1, [sp, 0xC] - adds r2, r6, 0 - adds r3, r5, 0 - bl WeightMoveIfUsable - mov r8, r0 -_0807C296: - movs r2, 0x4 - add r9, r2 - adds r7, 0x1 - cmp r7, 0x7 - ble _0807C1FA - b _0807C3F6 - .align 2, 0 -_0807C2A4: .4byte gAdjacentTileOffsets -_0807C2A8: - cmp r0, 0x50 - beq _0807C2B0 - cmp r0, 0x80 - bne _0807C394 -_0807C2B0: - movs r3, 0x1 - str r3, [sp, 0x18] - cmp r0, 0x50 - bne _0807C2BC - movs r4, 0xA - str r4, [sp, 0x18] -_0807C2BC: - movs r0, 0 - mov r9, r0 -_0807C2C0: - ldr r0, _0807C37C - ldr r0, [r0] - mov r2, r9 - lsls r1, r2, 2 - ldr r3, _0807C380 - adds r0, r3 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807C370 - cmp r6, r4 - beq _0807C370 - adds r1, r4, 0x4 - adds r0, r6, 0x4 - bl CalculateFacingDir - adds r5, r0, 0 - ldr r0, _0807C384 - adds r7, r5, r0 - ldrb r0, [r7] - cmp r0, 0 - bne _0807C370 - adds r0, r6, 0 - adds r1, r4, 0 - bl CanSee - lsls r0, 24 - cmp r0, 0 - beq _0807C370 - adds r0, r6, 0 - adds r1, r4, 0 - ldr r2, [sp, 0x18] - bl IsTargetInLineRange - lsls r0, 24 - cmp r0, 0 - beq _0807C370 - ldr r0, [sp, 0x14] - str r0, [sp] - ldr r0, [sp, 0xC] - adds r1, r6, 0 - adds r2, r4, 0 - mov r3, r10 - bl CanUseStatusMove - lsls r0, 24 - cmp r0, 0 - beq _0807C370 - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - ldr r3, [sp, 0x18] - bl IsTargetStraightAhead - lsls r0, 24 - cmp r0, 0 - beq _0807C370 - movs r0, 0x1 - strb r0, [r7] - ldr r0, _0807C388 - add r0, r8 - strb r5, [r0] - adds r0, r6, 0 - mov r1, r10 - bl GetMoveType_2 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r6, 0 - ldr r1, [sp, 0xC] - adds r2, r4, 0 - bl WeightMove - ldr r1, _0807C38C - mov r3, r8 - lsls r2, r3, 2 - adds r1, r2, r1 - str r0, [r1] - ldr r0, _0807C390 - adds r2, r0 - str r4, [r2] - movs r4, 0x1 - add r8, r4 -_0807C370: - movs r0, 0x1 - add r9, r0 - mov r1, r9 - cmp r1, 0x13 - ble _0807C2C0 - b _0807C3F6 - .align 2, 0 -_0807C37C: .4byte gDungeonGlobalData -_0807C380: .4byte 0x000135cc -_0807C384: .4byte gCanAttackInDirection -_0807C388: .4byte gUnknown_202F388 -_0807C38C: .4byte gPotentialTargetWeights_2 -_0807C390: .4byte gUnknown_202F3B0 -_0807C394: - cmp r0, 0x60 - bne _0807C3DC - movs r5, 0 -_0807C39A: - ldr r0, _0807C3D4 - ldr r0, [r0] - lsls r1, r5, 2 - ldr r2, _0807C3D8 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807C3CA - mov r3, r10 - str r3, [sp] - ldr r0, [sp, 0x14] - str r0, [sp, 0x4] - mov r0, r8 - ldr r1, [sp, 0xC] - adds r2, r6, 0 - adds r3, r4, 0 - bl WeightMoveIfUsable - mov r8, r0 -_0807C3CA: - adds r5, 0x1 - cmp r5, 0x13 - ble _0807C39A - b _0807C3F6 - .align 2, 0 -_0807C3D4: .4byte gDungeonGlobalData -_0807C3D8: .4byte 0x000135cc -_0807C3DC: - cmp r0, 0x70 - bne _0807C3F6 - mov r1, r10 - str r1, [sp] - ldr r2, [sp, 0x14] - str r2, [sp, 0x4] - mov r0, r8 - ldr r1, [sp, 0xC] - adds r2, r6, 0 - adds r3, r6, 0 - bl WeightMoveIfUsable - mov r8, r0 -_0807C3F6: - mov r3, r8 - cmp r3, 0 - bne _0807C402 - ldr r4, [sp, 0x8] - strb r3, [r4] - b _0807C48A -_0807C402: - movs r4, 0 - movs r3, 0 - mov r0, r8 - cmp r0, 0 - ble _0807C420 - ldr r2, _0807C464 - mov r1, r8 -_0807C410: - ldr r0, [r2] - cmp r3, r0 - bge _0807C418 - adds r3, r0, 0 -_0807C418: - adds r2, 0x4 - subs r1, 0x1 - cmp r1, 0 - bne _0807C410 -_0807C420: - mov r1, r8 - cmp r1, 0 - ble _0807C43A - movs r5, 0 - ldr r2, _0807C464 -_0807C42A: - ldr r0, [r2] - cmp r3, r0 - beq _0807C432 - str r5, [r2] -_0807C432: - adds r2, 0x4 - subs r1, 0x1 - cmp r1, 0 - bne _0807C42A -_0807C43A: - str r3, [sp, 0x10] - mov r2, r8 - cmp r2, 0 - ble _0807C450 - ldr r2, _0807C464 - mov r1, r8 -_0807C446: - ldm r2!, {r0} - adds r4, r0 - subs r1, 0x1 - cmp r1, 0 - bne _0807C446 -_0807C450: - adds r0, r4, 0 - bl DungeonRandomCapped - adds r2, r0, 0 - movs r1, 0 - cmp r1, r8 - bge _0807C478 - ldr r3, _0807C464 - b _0807C470 - .align 2, 0 -_0807C464: .4byte gPotentialTargetWeights_2 -_0807C468: - adds r3, 0x4 - adds r1, 0x1 - cmp r1, r8 - bge _0807C478 -_0807C470: - ldr r0, [r3] - subs r2, r0 - cmp r2, 0 - bge _0807C468 -_0807C478: - movs r0, 0x1 - ldr r3, [sp, 0x8] - strb r0, [r3] - ldr r0, _0807C49C - adds r0, r1, r0 - ldrb r0, [r0] - strb r0, [r3, 0x1] - movs r0, 0x8 - str r0, [r3, 0x4] -_0807C48A: - ldr r0, [sp, 0x10] -_0807C48C: - 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 -_0807C49C: .4byte gUnknown_202F388 - thumb_func_end FindMoveTarget - - 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 - - thumb_func_start WeightMoveIfUsable -WeightMoveIfUsable: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r6, r0, 0 - adds r5, r2, 0 - adds r7, r3, 0 - ldr r0, [sp, 0x28] - lsls r1, 16 - asrs r1, 16 - mov r9, r1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r2, [r5, 0x70] - ldr r1, [r5, 0x4] - ldr r0, [r7, 0x4] - cmp r1, r0 - beq _0807C5BC - movs r0, 0xF0 - mov r1, r9 - ands r0, r1 - cmp r0, 0x30 - beq _0807C5BC - cmp r0, 0x60 - beq _0807C5BC - cmp r0, 0x70 - bne _0807C5C4 -_0807C5BC: - adds r0, r2, 0 - adds r0, 0x46 - ldrb r4, [r0] - b _0807C5CE -_0807C5C4: - adds r0, r5, 0x4 - adds r1, r7, 0x4 - bl CalculateFacingDir - adds r4, r0, 0 -_0807C5CE: - ldr r0, _0807C638 - adds r0, r4 - mov r8, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _0807C624 - mov r0, r10 - str r0, [sp] - mov r0, r9 - adds r1, r5, 0 - adds r2, r7, 0 - ldr r3, [sp, 0x24] - bl CanUseStatusMove - lsls r0, 24 - cmp r0, 0 - beq _0807C624 - movs r0, 0x1 - mov r1, r8 - strb r0, [r1] - ldr r0, _0807C63C - adds r0, r6, r0 - strb r4, [r0] - adds r0, r5, 0 - ldr r1, [sp, 0x24] - bl GetMoveType_2 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - mov r1, r9 - adds r2, r7, 0 - bl WeightMove - ldr r1, _0807C640 - lsls r2, r6, 2 - adds r1, r2, r1 - str r0, [r1] - ldr r0, _0807C644 - adds r2, r0 - str r7, [r2] - adds r6, 0x1 -_0807C624: - adds r0, r6, 0 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0807C638: .4byte gCanAttackInDirection -_0807C63C: .4byte gUnknown_202F388 -_0807C640: .4byte gPotentialTargetWeights_2 -_0807C644: .4byte gUnknown_202F3B0 - thumb_func_end WeightMoveIfUsable - - thumb_func_start CanUseStatusMove -CanUseStatusMove: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r1, 0 - adds r4, r2, 0 - mov r8, r3 - ldr r1, [sp, 0x1C] - lsls r0, 16 - asrs r6, r0, 16 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r7, 0 - movs r0, 0xF - ands r0, r6 - adds r1, r0, 0 - cmp r1, 0 - bne _0807C686 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x1 - bl CanTarget - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807C6E0 - movs r7, 0x1 - b _0807C6E4 -_0807C686: - cmp r1, 0x1 - beq _0807C6BE - cmp r1, 0x2 - bne _0807C692 - ldr r1, [r4, 0x70] - b _0807C69C -_0807C692: - cmp r1, 0x5 - bne _0807C6B6 - ldr r1, [r4, 0x70] - cmp r5, r4 - beq _0807C6B2 -_0807C69C: - movs r7, 0x1 - ldrb r0, [r1, 0x8] - cmp r0, 0x1 - beq _0807C6B2 - adds r0, r1, 0 - adds r0, 0xA4 - ldrb r0, [r0] - cmp r0, 0x4 - beq _0807C6B2 - cmp r0, 0x1 - bne _0807C6E0 -_0807C6B2: - movs r0, 0 - b _0807C7A0 -_0807C6B6: - cmp r1, 0x6 - bne _0807C6D4 - cmp r5, r4 - beq _0807C6B2 -_0807C6BE: - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x1 - bl CanTarget - lsls r0, 24 - cmp r0, 0 - bne _0807C6E0 - movs r7, 0x1 - b _0807C6E4 -_0807C6D4: - subs r0, 0x3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0807C6E0 - movs r7, 0x1 -_0807C6E0: - cmp r7, 0 - beq _0807C79E -_0807C6E4: - mov r0, r9 - cmp r0, 0 - beq _0807C77C - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, r8 - bl CanUseWithStatusChecker_2 - lsls r0, 24 - cmp r0, 0 - beq _0807C6B2 - movs r1, 0xF0 - lsls r1, 4 - ands r1, r6 - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - beq _0807C78A - movs r0, 0x80 - lsls r0, 2 - cmp r1, r0 - beq _0807C76E - movs r0, 0xC0 - lsls r0, 2 - cmp r1, r0 - bne _0807C720 - adds r0, r4, 0 - bl HasNegativeStatus - b _0807C774 -_0807C720: - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _0807C730 - adds r0, r4, 0 - bl IsSleeping - b _0807C774 -_0807C730: - movs r0, 0xC0 - lsls r0, 3 - cmp r1, r0 - bne _0807C75A - ldr r1, [r4, 0x70] - adds r0, r1, 0 - adds r0, 0x5C - ldrb r0, [r0] - cmp r0, 0xE - beq _0807C74E - adds r0, r1, 0 - adds r0, 0x5D - ldrb r0, [r0] - cmp r0, 0xE - bne _0807C6B2 -_0807C74E: - adds r0, r1, 0 - adds r0, 0xF5 - ldrb r0, [r0] - cmp r0, 0 - beq _0807C79E - b _0807C6B2 -_0807C75A: - movs r0, 0xA0 - lsls r0, 3 - cmp r1, r0 - bne _0807C79E - adds r0, r4, 0 - bl HasNegativeStatus - lsls r0, 24 - cmp r0, 0 - bne _0807C79E -_0807C76E: - adds r0, r4, 0 - bl HasQuarterHPOrLess -_0807C774: - lsls r0, 24 - cmp r0, 0 - bne _0807C79E - b _0807C6B2 -_0807C77C: - movs r0, 0xF0 - lsls r0, 4 - ands r0, r6 - movs r1, 0x80 - lsls r1, 1 - cmp r0, r1 - bne _0807C79E -_0807C78A: - mov r0, r8 - movs r1, 0x2 - bl GetMoveAccuracy - adds r4, r0, 0 - movs r0, 0x64 - bl DungeonRandomCapped - cmp r0, r4 - bge _0807C6B2 -_0807C79E: - adds r0, r7, 0 -_0807C7A0: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CanUseStatusMove - - 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 GetMapTileAtPosition - 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_807C04C.s b/asm/code_807C04C.s new file mode 100644 index 0000000..80e75af --- /dev/null +++ b/asm/code_807C04C.s @@ -0,0 +1,1297 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start FindMoveTarget +FindMoveTarget: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + str r0, [sp, 0x8] + adds r6, r1, 0 + mov r10, r2 + movs r0, 0x1 + str r0, [sp, 0x10] + ldr r4, [r6, 0x70] + movs r1, 0 + mov r8, r1 + ldr r1, _0807C0C8 + movs r2, 0 + adds r0, r1, 0x7 +_0807C06E: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _0807C06E + adds r0, r6, 0 + mov r1, r10 + movs r2, 0x1 + bl GetTargetingFlags + lsls r0, 16 + asrs r0, 16 + str r0, [sp, 0xC] + adds r0, r6, 0 + movs r1, 0x8 + bl HasIQSkill + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x14] + movs r0, 0 + ldr r2, [sp, 0x8] + strb r0, [r2] + adds r0, r4, 0 + adds r0, 0xBC + ldrb r0, [r0] + cmp r0, 0x5 + bne _0807C0B0 + mov r0, r10 + bl GetMoveDealsDirectDamage + lsls r0, 24 + cmp r0, 0 + beq _0807C0C4 +_0807C0B0: + ldr r3, [sp, 0x14] + cmp r3, 0 + beq _0807C0CC + adds r0, r6, 0 + mov r1, r10 + bl CanUseWithStatusChecker + lsls r0, 24 + cmp r0, 0 + bne _0807C0CC +_0807C0C4: + movs r0, 0x1 + b _0807C48C + .align 2, 0 +_0807C0C8: .4byte gCanAttackInDirection +_0807C0CC: + movs r0, 0xF0 + ldr r1, [sp, 0xC] + ands r0, r1 + cmp r0, 0 + beq _0807C0DE + cmp r0, 0x10 + beq _0807C0DE + cmp r0, 0x20 + bne _0807C19C +_0807C0DE: + adds r0, r4, 0 + adds r0, 0xE8 + ldrb r1, [r0] + cmp r1, 0x1 + bne _0807C128 + subs r0, 0xA2 + ldrb r7, [r0] + ldr r0, _0807C118 + adds r0, r7, r0 + ldrb r3, [r0] + cmp r3, 0 + beq _0807C0F8 + b _0807C3F6 +_0807C0F8: + strb r1, [r0] + ldr r0, _0807C11C + add r0, r8 + strb r7, [r0] + ldr r0, _0807C120 + mov r4, r8 + lsls r2, r4, 2 + adds r0, r2, r0 + movs r1, 0x63 + str r1, [r0] + ldr r0, _0807C124 + adds r2, r0 + str r3, [r2] + movs r0, 0x1 + add r8, r0 + b _0807C3F6 + .align 2, 0 +_0807C118: .4byte gCanAttackInDirection +_0807C11C: .4byte gUnknown_202F388 +_0807C120: .4byte gPotentialTargetWeights_2 +_0807C124: .4byte gUnknown_202F3B0 +_0807C128: + movs r7, 0 + movs r0, 0xF0 + ldr r1, [sp, 0xC] + ands r0, r1 + lsls r5, r0, 16 +_0807C132: + movs r2, 0x4 + ldrsh r0, [r6, r2] + ldr r1, _0807C198 + lsls r2, r7, 2 + adds r2, r1 + movs r3, 0 + ldrsh r1, [r2, r3] + adds r0, r1 + movs r4, 0x6 + ldrsh r1, [r6, r4] + movs r3, 0x2 + ldrsh r2, [r2, r3] + adds r1, r2 + bl GetMapTileAtPosition + ldr r4, [r0, 0x10] + cmp r4, 0 + beq _0807C18E + adds r0, r4, 0 + bl GetEntityType + cmp r0, 0x1 + bne _0807C18E + asrs r0, r5, 16 + cmp r0, 0x10 + beq _0807C178 + cmp r0, 0x20 + beq _0807C178 + adds r0, r6, 0 + adds r1, r7, 0 + bl CanAttackInFront + lsls r0, 24 + cmp r0, 0 + beq _0807C18E +_0807C178: + mov r0, r10 + str r0, [sp] + ldr r1, [sp, 0x14] + str r1, [sp, 0x4] + mov r0, r8 + ldr r1, [sp, 0xC] + adds r2, r6, 0 + adds r3, r4, 0 + bl WeightMoveIfUsable + mov r8, r0 +_0807C18E: + adds r7, 0x1 + cmp r7, 0x7 + ble _0807C132 + b _0807C3F6 + .align 2, 0 +_0807C198: .4byte gAdjacentTileOffsets +_0807C19C: + cmp r0, 0x30 + bne _0807C1F0 + movs r5, 0 +_0807C1A2: + ldr r0, _0807C1E8 + ldr r0, [r0] + lsls r1, r5, 2 + ldr r2, _0807C1EC + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807C1E0 + adds r0, r6, 0 + adds r1, r4, 0 + bl CanSee + lsls r0, 24 + cmp r0, 0 + beq _0807C1E0 + mov r3, r10 + str r3, [sp] + ldr r0, [sp, 0x14] + str r0, [sp, 0x4] + mov r0, r8 + ldr r1, [sp, 0xC] + adds r2, r6, 0 + adds r3, r4, 0 + bl WeightMoveIfUsable + mov r8, r0 +_0807C1E0: + adds r5, 0x1 + cmp r5, 0x13 + ble _0807C1A2 + b _0807C3F6 + .align 2, 0 +_0807C1E8: .4byte gDungeonGlobalData +_0807C1EC: .4byte 0x000135cc +_0807C1F0: + cmp r0, 0x40 + bne _0807C2A8 + movs r7, 0 + ldr r1, _0807C2A4 + mov r9, r1 +_0807C1FA: + movs r2, 0x4 + ldrsh r0, [r6, r2] + mov r3, r9 + movs r4, 0 + ldrsh r1, [r3, r4] + adds r0, r1 + movs r2, 0x6 + ldrsh r1, [r6, r2] + movs r4, 0x2 + ldrsh r2, [r3, r4] + adds r1, r2 + bl GetMapTileAtPosition + adds r4, r0, 0 + adds r0, r6, 0 + adds r1, r7, 0 + bl CanAttackInFront + lsls r0, 24 + cmp r0, 0 + beq _0807C296 + ldr r5, [r4, 0x10] + cmp r5, 0 + beq _0807C250 + adds r0, r5, 0 + bl GetEntityType + cmp r0, 0x1 + bne _0807C250 + mov r4, r8 + mov r0, r10 + str r0, [sp] + ldr r1, [sp, 0x14] + str r1, [sp, 0x4] + adds r0, r4, 0 + ldr r1, [sp, 0xC] + adds r2, r6, 0 + adds r3, r5, 0 + bl WeightMoveIfUsable + mov r8, r0 + cmp r4, r8 + bne _0807C296 +_0807C250: + movs r2, 0x4 + ldrsh r0, [r6, r2] + mov r3, r9 + movs r4, 0 + ldrsh r1, [r3, r4] + lsls r1, 1 + adds r0, r1 + movs r2, 0x6 + ldrsh r1, [r6, r2] + movs r4, 0x2 + ldrsh r2, [r3, r4] + lsls r2, 1 + adds r1, r2 + bl GetMapTileAtPosition + adds r4, r0, 0 + ldr r5, [r4, 0x10] + cmp r5, 0 + beq _0807C296 + adds r0, r5, 0 + bl GetEntityType + cmp r0, 0x1 + bne _0807C296 + mov r0, r10 + str r0, [sp] + ldr r1, [sp, 0x14] + str r1, [sp, 0x4] + mov r0, r8 + ldr r1, [sp, 0xC] + adds r2, r6, 0 + adds r3, r5, 0 + bl WeightMoveIfUsable + mov r8, r0 +_0807C296: + movs r2, 0x4 + add r9, r2 + adds r7, 0x1 + cmp r7, 0x7 + ble _0807C1FA + b _0807C3F6 + .align 2, 0 +_0807C2A4: .4byte gAdjacentTileOffsets +_0807C2A8: + cmp r0, 0x50 + beq _0807C2B0 + cmp r0, 0x80 + bne _0807C394 +_0807C2B0: + movs r3, 0x1 + str r3, [sp, 0x18] + cmp r0, 0x50 + bne _0807C2BC + movs r4, 0xA + str r4, [sp, 0x18] +_0807C2BC: + movs r0, 0 + mov r9, r0 +_0807C2C0: + ldr r0, _0807C37C + ldr r0, [r0] + mov r2, r9 + lsls r1, r2, 2 + ldr r3, _0807C380 + adds r0, r3 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807C370 + cmp r6, r4 + beq _0807C370 + adds r1, r4, 0x4 + adds r0, r6, 0x4 + bl CalculateFacingDir + adds r5, r0, 0 + ldr r0, _0807C384 + adds r7, r5, r0 + ldrb r0, [r7] + cmp r0, 0 + bne _0807C370 + adds r0, r6, 0 + adds r1, r4, 0 + bl CanSee + lsls r0, 24 + cmp r0, 0 + beq _0807C370 + adds r0, r6, 0 + adds r1, r4, 0 + ldr r2, [sp, 0x18] + bl IsTargetInLineRange + lsls r0, 24 + cmp r0, 0 + beq _0807C370 + ldr r0, [sp, 0x14] + str r0, [sp] + ldr r0, [sp, 0xC] + adds r1, r6, 0 + adds r2, r4, 0 + mov r3, r10 + bl CanUseStatusMove + lsls r0, 24 + cmp r0, 0 + beq _0807C370 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + ldr r3, [sp, 0x18] + bl IsTargetStraightAhead + lsls r0, 24 + cmp r0, 0 + beq _0807C370 + movs r0, 0x1 + strb r0, [r7] + ldr r0, _0807C388 + add r0, r8 + strb r5, [r0] + adds r0, r6, 0 + mov r1, r10 + bl GetMoveTypeForPokemon + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r6, 0 + ldr r1, [sp, 0xC] + adds r2, r4, 0 + bl WeightMove + ldr r1, _0807C38C + mov r3, r8 + lsls r2, r3, 2 + adds r1, r2, r1 + str r0, [r1] + ldr r0, _0807C390 + adds r2, r0 + str r4, [r2] + movs r4, 0x1 + add r8, r4 +_0807C370: + movs r0, 0x1 + add r9, r0 + mov r1, r9 + cmp r1, 0x13 + ble _0807C2C0 + b _0807C3F6 + .align 2, 0 +_0807C37C: .4byte gDungeonGlobalData +_0807C380: .4byte 0x000135cc +_0807C384: .4byte gCanAttackInDirection +_0807C388: .4byte gUnknown_202F388 +_0807C38C: .4byte gPotentialTargetWeights_2 +_0807C390: .4byte gUnknown_202F3B0 +_0807C394: + cmp r0, 0x60 + bne _0807C3DC + movs r5, 0 +_0807C39A: + ldr r0, _0807C3D4 + ldr r0, [r0] + lsls r1, r5, 2 + ldr r2, _0807C3D8 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807C3CA + mov r3, r10 + str r3, [sp] + ldr r0, [sp, 0x14] + str r0, [sp, 0x4] + mov r0, r8 + ldr r1, [sp, 0xC] + adds r2, r6, 0 + adds r3, r4, 0 + bl WeightMoveIfUsable + mov r8, r0 +_0807C3CA: + adds r5, 0x1 + cmp r5, 0x13 + ble _0807C39A + b _0807C3F6 + .align 2, 0 +_0807C3D4: .4byte gDungeonGlobalData +_0807C3D8: .4byte 0x000135cc +_0807C3DC: + cmp r0, 0x70 + bne _0807C3F6 + mov r1, r10 + str r1, [sp] + ldr r2, [sp, 0x14] + str r2, [sp, 0x4] + mov r0, r8 + ldr r1, [sp, 0xC] + adds r2, r6, 0 + adds r3, r6, 0 + bl WeightMoveIfUsable + mov r8, r0 +_0807C3F6: + mov r3, r8 + cmp r3, 0 + bne _0807C402 + ldr r4, [sp, 0x8] + strb r3, [r4] + b _0807C48A +_0807C402: + movs r4, 0 + movs r3, 0 + mov r0, r8 + cmp r0, 0 + ble _0807C420 + ldr r2, _0807C464 + mov r1, r8 +_0807C410: + ldr r0, [r2] + cmp r3, r0 + bge _0807C418 + adds r3, r0, 0 +_0807C418: + adds r2, 0x4 + subs r1, 0x1 + cmp r1, 0 + bne _0807C410 +_0807C420: + mov r1, r8 + cmp r1, 0 + ble _0807C43A + movs r5, 0 + ldr r2, _0807C464 +_0807C42A: + ldr r0, [r2] + cmp r3, r0 + beq _0807C432 + str r5, [r2] +_0807C432: + adds r2, 0x4 + subs r1, 0x1 + cmp r1, 0 + bne _0807C42A +_0807C43A: + str r3, [sp, 0x10] + mov r2, r8 + cmp r2, 0 + ble _0807C450 + ldr r2, _0807C464 + mov r1, r8 +_0807C446: + ldm r2!, {r0} + adds r4, r0 + subs r1, 0x1 + cmp r1, 0 + bne _0807C446 +_0807C450: + adds r0, r4, 0 + bl DungeonRandomCapped + adds r2, r0, 0 + movs r1, 0 + cmp r1, r8 + bge _0807C478 + ldr r3, _0807C464 + b _0807C470 + .align 2, 0 +_0807C464: .4byte gPotentialTargetWeights_2 +_0807C468: + adds r3, 0x4 + adds r1, 0x1 + cmp r1, r8 + bge _0807C478 +_0807C470: + ldr r0, [r3] + subs r2, r0 + cmp r2, 0 + bge _0807C468 +_0807C478: + movs r0, 0x1 + ldr r3, [sp, 0x8] + strb r0, [r3] + ldr r0, _0807C49C + adds r0, r1, r0 + ldrb r0, [r0] + strb r0, [r3, 0x1] + movs r0, 0x8 + str r0, [r3, 0x4] +_0807C48A: + ldr r0, [sp, 0x10] +_0807C48C: + 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 +_0807C49C: .4byte gUnknown_202F388 + thumb_func_end FindMoveTarget + + 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 + + thumb_func_start WeightMoveIfUsable +WeightMoveIfUsable: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r6, r0, 0 + adds r5, r2, 0 + adds r7, r3, 0 + ldr r0, [sp, 0x28] + lsls r1, 16 + asrs r1, 16 + mov r9, r1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r2, [r5, 0x70] + ldr r1, [r5, 0x4] + ldr r0, [r7, 0x4] + cmp r1, r0 + beq _0807C5BC + movs r0, 0xF0 + mov r1, r9 + ands r0, r1 + cmp r0, 0x30 + beq _0807C5BC + cmp r0, 0x60 + beq _0807C5BC + cmp r0, 0x70 + bne _0807C5C4 +_0807C5BC: + adds r0, r2, 0 + adds r0, 0x46 + ldrb r4, [r0] + b _0807C5CE +_0807C5C4: + adds r0, r5, 0x4 + adds r1, r7, 0x4 + bl CalculateFacingDir + adds r4, r0, 0 +_0807C5CE: + ldr r0, _0807C638 + adds r0, r4 + mov r8, r0 + ldrb r0, [r0] + cmp r0, 0 + bne _0807C624 + mov r0, r10 + str r0, [sp] + mov r0, r9 + adds r1, r5, 0 + adds r2, r7, 0 + ldr r3, [sp, 0x24] + bl CanUseStatusMove + lsls r0, 24 + cmp r0, 0 + beq _0807C624 + movs r0, 0x1 + mov r1, r8 + strb r0, [r1] + ldr r0, _0807C63C + adds r0, r6, r0 + strb r4, [r0] + adds r0, r5, 0 + ldr r1, [sp, 0x24] + bl GetMoveTypeForPokemon + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r5, 0 + mov r1, r9 + adds r2, r7, 0 + bl WeightMove + ldr r1, _0807C640 + lsls r2, r6, 2 + adds r1, r2, r1 + str r0, [r1] + ldr r0, _0807C644 + adds r2, r0 + str r7, [r2] + adds r6, 0x1 +_0807C624: + adds r0, r6, 0 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0807C638: .4byte gCanAttackInDirection +_0807C63C: .4byte gUnknown_202F388 +_0807C640: .4byte gPotentialTargetWeights_2 +_0807C644: .4byte gUnknown_202F3B0 + thumb_func_end WeightMoveIfUsable + + thumb_func_start CanUseStatusMove +CanUseStatusMove: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r1, 0 + adds r4, r2, 0 + mov r8, r3 + ldr r1, [sp, 0x1C] + lsls r0, 16 + asrs r6, r0, 16 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + movs r7, 0 + movs r0, 0xF + ands r0, r6 + adds r1, r0, 0 + cmp r1, 0 + bne _0807C686 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x1 + bl CanTarget + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807C6E0 + movs r7, 0x1 + b _0807C6E4 +_0807C686: + cmp r1, 0x1 + beq _0807C6BE + cmp r1, 0x2 + bne _0807C692 + ldr r1, [r4, 0x70] + b _0807C69C +_0807C692: + cmp r1, 0x5 + bne _0807C6B6 + ldr r1, [r4, 0x70] + cmp r5, r4 + beq _0807C6B2 +_0807C69C: + movs r7, 0x1 + ldrb r0, [r1, 0x8] + cmp r0, 0x1 + beq _0807C6B2 + adds r0, r1, 0 + adds r0, 0xA4 + ldrb r0, [r0] + cmp r0, 0x4 + beq _0807C6B2 + cmp r0, 0x1 + bne _0807C6E0 +_0807C6B2: + movs r0, 0 + b _0807C7A0 +_0807C6B6: + cmp r1, 0x6 + bne _0807C6D4 + cmp r5, r4 + beq _0807C6B2 +_0807C6BE: + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0x1 + bl CanTarget + lsls r0, 24 + cmp r0, 0 + bne _0807C6E0 + movs r7, 0x1 + b _0807C6E4 +_0807C6D4: + subs r0, 0x3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0807C6E0 + movs r7, 0x1 +_0807C6E0: + cmp r7, 0 + beq _0807C79E +_0807C6E4: + mov r0, r9 + cmp r0, 0 + beq _0807C77C + adds r0, r5, 0 + adds r1, r4, 0 + mov r2, r8 + bl CanUseWithStatusChecker_2 + lsls r0, 24 + cmp r0, 0 + beq _0807C6B2 + movs r1, 0xF0 + lsls r1, 4 + ands r1, r6 + movs r0, 0x80 + lsls r0, 1 + cmp r1, r0 + beq _0807C78A + movs r0, 0x80 + lsls r0, 2 + cmp r1, r0 + beq _0807C76E + movs r0, 0xC0 + lsls r0, 2 + cmp r1, r0 + bne _0807C720 + adds r0, r4, 0 + bl HasNegativeStatus + b _0807C774 +_0807C720: + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + bne _0807C730 + adds r0, r4, 0 + bl IsSleeping + b _0807C774 +_0807C730: + movs r0, 0xC0 + lsls r0, 3 + cmp r1, r0 + bne _0807C75A + ldr r1, [r4, 0x70] + adds r0, r1, 0 + adds r0, 0x5C + ldrb r0, [r0] + cmp r0, 0xE + beq _0807C74E + adds r0, r1, 0 + adds r0, 0x5D + ldrb r0, [r0] + cmp r0, 0xE + bne _0807C6B2 +_0807C74E: + adds r0, r1, 0 + adds r0, 0xF5 + ldrb r0, [r0] + cmp r0, 0 + beq _0807C79E + b _0807C6B2 +_0807C75A: + movs r0, 0xA0 + lsls r0, 3 + cmp r1, r0 + bne _0807C79E + adds r0, r4, 0 + bl HasNegativeStatus + lsls r0, 24 + cmp r0, 0 + bne _0807C79E +_0807C76E: + adds r0, r4, 0 + bl HasQuarterHPOrLess +_0807C774: + lsls r0, 24 + cmp r0, 0 + bne _0807C79E + b _0807C6B2 +_0807C77C: + movs r0, 0xF0 + lsls r0, 4 + ands r0, r6 + movs r1, 0x80 + lsls r1, 1 + cmp r0, r1 + bne _0807C79E +_0807C78A: + mov r0, r8 + movs r1, 0x2 + bl GetMoveAccuracy + adds r4, r0, 0 + movs r0, 0x64 + bl DungeonRandomCapped + cmp r0, r4 + bge _0807C6B2 +_0807C79E: + adds r0, r7, 0 +_0807C7A0: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end CanUseStatusMove + + 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 GetMapTileAtPosition + 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 |