diff options
author | YamaArashi <shadow962@live.com> | 2016-11-01 10:08:48 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-11-01 10:16:34 -0700 |
commit | 6f0e42a91aeeedd64725ce57e3dad6a38421d8e9 (patch) | |
tree | dcea69ec49430f004c17ff71b77587cafd78c69a /asm/trainer_see.s | |
parent | fef81187dce23adc635d7f4b7fd82298eab09ec2 (diff) |
split asm files
Diffstat (limited to 'asm/trainer_see.s')
-rw-r--r-- | asm/trainer_see.s | 1325 |
1 files changed, 1325 insertions, 0 deletions
diff --git a/asm/trainer_see.s b/asm/trainer_see.s new file mode 100644 index 000000000..a8ad4630b --- /dev/null +++ b/asm/trainer_see.s @@ -0,0 +1,1325 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start CheckForTrainersWantingBattle +@ bool8 CheckForTrainersWantingBattle() +CheckForTrainersWantingBattle: @ 80B3BE8 + push {r4-r7,lr} + ldr r0, =0x030060a8 + movs r1, 0 + strb r1, [r0] + ldr r0, =0x02038bfc + strb r1, [r0] + movs r4, 0 + ldr r6, =0x02037350 +_080B3BF8: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + adds r1, r0, r6 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _080B3C38 + ldrb r0, [r1, 0x7] + cmp r0, 0x1 + beq _080B3C12 + cmp r0, 0x3 + bne _080B3C38 +_080B3C12: + adds r0, r4, 0 + bl CheckIfTrainerWantsBattle + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _080B3C42 + cmp r0, 0 + beq _080B3C38 + ldr r0, =0x030060a8 + ldrb r1, [r0] + adds r5, r0, 0 + cmp r1, 0x1 + bhi _080B3C88 + bl CheckPlayerPartySize + lsls r0, 24 + cmp r0, 0 + bne _080B3C42 +_080B3C38: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _080B3BF8 +_080B3C42: + ldr r0, =0x030060a8 + ldrb r4, [r0] + adds r5, r0, 0 + cmp r4, 0x1 + bne _080B3C88 + bl ResetTrainerOpponentIds + ldr r2, =0x03006090 + ldrb r0, [r5] + subs r0, 0x1 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, 0x4 + adds r1, r2 + ldr r1, [r1] + bl SingleTrainerWantsBattle + ldr r0, =0x030060ac + strb r4, [r0] + movs r0, 0x1 + b _080B3CF4 + .pool +_080B3C88: + ldrb r0, [r5] + cmp r0, 0x2 + bne _080B3CEC + bl ResetTrainerOpponentIds + movs r4, 0 + ldrb r5, [r5] + cmp r4, r5 + bcs _080B3CC6 + ldr r6, =0x03006090 + adds r7, r6, 0x4 + ldr r5, =0x02038bfc +_080B3CA0: + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 2 + adds r0, r1, r6 + ldrb r0, [r0] + adds r1, r7 + ldr r1, [r1] + bl TwoTrainersWantBattle + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + ldr r0, =0x030060a8 + ldrb r0, [r0] + cmp r4, r0 + bcc _080B3CA0 +_080B3CC6: + bl TwoTrainersWantBattleExecuteScript + ldr r1, =0x02038bfc + movs r0, 0 + strb r0, [r1] + ldr r1, =0x030060ac + movs r0, 0x1 + strb r0, [r1] + movs r0, 0x1 + b _080B3CF4 + .pool +_080B3CEC: + ldr r1, =0x030060ac + movs r0, 0 + strb r0, [r1] + movs r0, 0 +_080B3CF4: + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end CheckForTrainersWantingBattle + + thumb_func_start CheckIfTrainerWantsBattle +@ u8 CheckIfTrainerWantsBattle(u8 trainerFieldObjectId) +CheckIfTrainerWantsBattle: @ 80B3D00 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0x1 + mov r9, r0 + bl InTrainerHill + cmp r0, 0x1 + bne _080B3D1E + bl sub_81D62AC + b _080B3D24 +_080B3D1E: + adds r0, r5, 0 + bl GetFieldObjectScriptPointerByFieldObjectId +_080B3D24: + adds r7, r0, 0 + bl InBattlePyramid + lsls r0, 24 + cmp r0, 0 + beq _080B3D3E + adds r0, r5, 0 + bl GetBattlePyramidTrainerFlag +_080B3D36: + lsls r0, 24 +_080B3D38: + cmp r0, 0 + beq _080B3D56 + b _080B3DE0 +_080B3D3E: + bl InTrainerHill + cmp r0, 0x1 + bne _080B3D4E + adds r0, r5, 0 + bl GetTrainerHillTrainerFlag + b _080B3D36 +_080B3D4E: + adds r0, r7, 0 + bl GetTrainerFlagFromScriptPointer + b _080B3D38 +_080B3D56: + lsls r4, r5, 3 + adds r0, r4, r5 + lsls r0, 2 + ldr r1, =0x02037350 + adds r0, r1 + bl CheckIfTrainerCanApproachPlayer + lsls r0, 24 + lsrs r6, r0, 24 + mov r8, r4 + cmp r6, 0 + beq _080B3DE0 + ldrb r0, [r7, 0x1] + cmp r0, 0x4 + beq _080B3D7C + cmp r0, 0x7 + beq _080B3D7C + cmp r0, 0x6 + bne _080B3D8A +_080B3D7C: + bl CheckPlayerPartySize + lsls r0, 24 + cmp r0, 0 + bne _080B3DE0 + movs r1, 0x2 + mov r9, r1 +_080B3D8A: + ldr r2, =0x03006090 + ldr r4, =0x030060a8 + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r5, [r0] + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r1, r2, 0x4 + adds r0, r1 + str r7, [r0] + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strb r6, [r0, 0x1] + mov r1, r8 + adds r0, r1, r5 + lsls r0, 2 + ldr r1, =0x02037350 + adds r0, r1 + subs r1, r6, 0x1 + lsls r1, 24 + lsrs r1, 24 + bl TrainerApproachPlayer + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + mov r0, r9 + b _080B3DE2 + .pool +_080B3DE0: + movs r0, 0 +_080B3DE2: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end CheckIfTrainerWantsBattle + + thumb_func_start CheckIfTrainerCanApproachPlayer +@ u8 CheckIfTrainerCanApproachPlayer(struct npc_state *trainerFieldObject) +CheckIfTrainerCanApproachPlayer: @ 80B3DF0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r7, r0, 0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl PlayerGetDestCoords + ldrb r0, [r7, 0x7] + mov r8, r4 + cmp r0, 0x1 + bne _080B3E50 + ldr r1, =gUnknown_0855072C + ldrb r0, [r7, 0x18] + lsls r0, 28 + lsrs r0, 26 + subs r0, 0x4 + adds r0, r1 + ldrb r1, [r7, 0x1D] + mov r2, sp + movs r3, 0 + ldrsh r2, [r2, r3] + movs r5, 0 + ldrsh r3, [r4, r5] + ldr r4, [r0] + adds r0, r7, 0 + bl _call_via_r4 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r2, [r7, 0x18] + lsls r2, 28 + lsrs r2, 28 + adds r0, r7, 0 + adds r1, r6, 0 + bl CheckPathBetweenTrainerAndPlayer + lsls r0, 24 + lsrs r0, 24 + b _080B3E90 + .pool +_080B3E4C: + adds r0, r6, 0 + b _080B3E90 +_080B3E50: + movs r5, 0 +_080B3E52: + ldr r0, =gUnknown_0855072C + lsls r4, r5, 2 + adds r4, r0 + ldrb r1, [r7, 0x1D] + mov r0, sp + movs r6, 0 + ldrsh r2, [r0, r6] + mov r0, r8 + movs r6, 0 + ldrsh r3, [r0, r6] + ldr r4, [r4] + adds r0, r7, 0 + bl _call_via_r4 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r4, 0 + bl CheckPathBetweenTrainerAndPlayer + lsls r0, 24 + cmp r0, 0 + bne _080B3E4C + adds r5, r4, 0 + cmp r5, 0x3 + bls _080B3E52 + movs r0, 0 +_080B3E90: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end CheckIfTrainerCanApproachPlayer + + thumb_func_start IsTrainerInRangeSouth +@ u8 IsTrainerInRangeSouth(struct npc_state *trainerFieldObject, u16 sightRange, u16 playerX, u16 playerY) +IsTrainerInRangeSouth: @ 80B3EA0 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r3, 16 + lsrs r5, r3, 16 + movs r1, 0x10 + ldrsh r0, [r4, r1] + lsls r2, 16 + asrs r2, 16 + cmp r0, r2 + bne _080B3EDA + lsls r0, r5, 16 + asrs r2, r0, 16 + ldrh r3, [r4, 0x12] + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r2, r0 + ble _080B3EDA + adds r1, r0, 0 + lsls r0, r6, 16 + asrs r0, 16 + adds r1, r0 + cmp r2, r1 + bgt _080B3EDA + subs r0, r5, r3 + lsls r0, 24 + lsrs r0, 24 + b _080B3EDC +_080B3EDA: + movs r0, 0 +_080B3EDC: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end IsTrainerInRangeSouth + + thumb_func_start IsTrainerInRangeNorth +@ u8 IsTrainerInRangeNorth(struct npc_state *trainerFieldObject, u16 sightRange, u16 playerX, u16 playerY) +IsTrainerInRangeNorth: @ 80B3EE4 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r3, 16 + lsrs r5, r3, 16 + movs r1, 0x10 + ldrsh r0, [r4, r1] + lsls r2, 16 + asrs r2, 16 + cmp r0, r2 + bne _080B3F1E + lsls r0, r5, 16 + asrs r2, r0, 16 + ldrh r3, [r4, 0x12] + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r2, r0 + bge _080B3F1E + adds r1, r0, 0 + lsls r0, r6, 16 + asrs r0, 16 + subs r1, r0 + cmp r2, r1 + blt _080B3F1E + subs r0, r3, r5 + lsls r0, 24 + lsrs r0, 24 + b _080B3F20 +_080B3F1E: + movs r0, 0 +_080B3F20: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end IsTrainerInRangeNorth + + thumb_func_start IsTrainerInRangeWest +@ u8 IsTrainerInRangeWest(struct npc_state *trainerFieldObject, u16 sightRange, u16 playerX, u16 playerY) +IsTrainerInRangeWest: @ 80B3F28 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r5, r2, 16 + movs r1, 0x12 + ldrsh r0, [r4, r1] + lsls r3, 16 + asrs r3, 16 + cmp r0, r3 + bne _080B3F62 + lsls r0, r5, 16 + asrs r3, r0, 16 + ldrh r2, [r4, 0x10] + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bge _080B3F62 + adds r1, r0, 0 + lsls r0, r6, 16 + asrs r0, 16 + subs r1, r0 + cmp r3, r1 + blt _080B3F62 + subs r0, r2, r5 + lsls r0, 24 + lsrs r0, 24 + b _080B3F64 +_080B3F62: + movs r0, 0 +_080B3F64: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end IsTrainerInRangeWest + + thumb_func_start IsTrainerInRangeEast +@ u8 IsTrainerInRangeEast(struct npc_state *trainerFieldObject, u16 sightRange, u16 playerX, u16 playerY) +IsTrainerInRangeEast: @ 80B3F6C + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r5, r2, 16 + movs r1, 0x12 + ldrsh r0, [r4, r1] + lsls r3, 16 + asrs r3, 16 + cmp r0, r3 + bne _080B3FA6 + lsls r0, r5, 16 + asrs r3, r0, 16 + ldrh r2, [r4, 0x10] + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + ble _080B3FA6 + adds r1, r0, 0 + lsls r0, r6, 16 + asrs r0, 16 + adds r1, r0 + cmp r3, r1 + bgt _080B3FA6 + subs r0, r5, r2 + lsls r0, 24 + lsrs r0, 24 + b _080B3FA8 +_080B3FA6: + movs r0, 0 +_080B3FA8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end IsTrainerInRangeEast + + thumb_func_start CheckPathBetweenTrainerAndPlayer +@ u8 CheckPathBetweenTrainerAndPlayer(struct npc_state *fieldObject, u8 a2, u8 direction) +CheckPathBetweenTrainerAndPlayer: @ 80B3FB0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r2, 24 + lsrs r7, r2, 24 + cmp r1, 0 + beq _080B4056 + ldrh r1, [r6, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, 0x12] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + adds r0, r7, 0 + mov r1, sp + adds r2, r4, 0 + bl MoveCoords + movs r5, 0 + mov r8, r4 + mov r4, r9 + subs r4, 0x1 + cmp r5, r4 + bge _080B4028 +_080B3FEE: + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + mov r3, r8 + movs r0, 0 + ldrsh r2, [r3, r0] + adds r0, r6, 0 + adds r3, r7, 0 + bl sub_8092C8C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _080B4014 + movs r0, 0x2 + negs r0, r0 + ands r1, r0 + cmp r1, 0 + bne _080B4056 +_080B4014: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r7, 0 + mov r1, sp + mov r2, r8 + bl MoveCoords + cmp r5, r4 + blt _080B3FEE +_080B4028: + ldrb r4, [r6, 0x19] + lsls r5, r4, 28 + lsrs r5, 28 + lsrs r4, 4 + movs r0, 0 + strb r0, [r6, 0x19] + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + mov r3, r8 + movs r0, 0 + ldrsh r2, [r3, r0] + adds r0, r6, 0 + adds r3, r7, 0 + bl npc_block_way + lsls r0, 24 + lsrs r1, r0, 24 + lsls r4, 4 + orrs r5, r4 + strb r5, [r6, 0x19] + cmp r1, 0x4 + beq _080B405A +_080B4056: + movs r0, 0 + b _080B405C +_080B405A: + mov r0, r9 +_080B405C: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end CheckPathBetweenTrainerAndPlayer + + thumb_func_start TrainerApproachPlayer +@ void TrainerApproachPlayer(struct npc_state *trainerFieldObject, u8 distance) +TrainerApproachPlayer: @ 80B406C + push {r4,r5,lr} + lsls r5, r1, 24 + lsrs r5, 24 + ldr r0, =c3_8081EDC + movs r1, 0x50 + bl CreateTask + ldr r4, =0x03006090 + ldr r3, =0x030060a8 + ldrb r2, [r3] + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + strb r0, [r1, 0x8] + ldrb r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x8] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, =0x03005e00 + adds r1, r0 + strh r5, [r1, 0xE] + ldrb r2, [r3] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0] + strh r0, [r1, 0x16] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end TrainerApproachPlayer + + thumb_func_start sub_80B40C8 +sub_80B40C8: @ 80B40C8 + push {r4,r5,lr} + adds r2, r0, 0 + ldr r0, =0x02038bfc + ldrb r0, [r0] + cmp r0, 0 + bne _080B40E4 + ldr r0, =0x03006090 + ldrb r5, [r0, 0x8] + b _080B40E8 + .pool +_080B40E4: + ldr r0, =0x03006090 + ldrb r5, [r0, 0x14] +_080B40E8: + ldr r4, =c3_8081EDC + adds r0, r5, 0 + adds r1, r4, 0 + bl SetTaskFuncWithFollowupFunc + ldr r1, =0x03005e00 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0x1 + strh r1, [r0, 0x8] + adds r0, r5, 0 + bl _call_via_r4 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80B40C8 + + thumb_func_start c3_8081EDC +c3_8081EDC: @ 80B4118 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, =0x03005e00 + adds r4, r0, r1 + movs r0, 0x16 + ldrsh r1, [r4, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r5, r0, r1 + ldrb r0, [r5] + lsls r0, 31 + cmp r0, 0 + bne _080B4150 + adds r0, r6, 0 + bl SwitchTaskToFollowupFunc + b _080B416C + .pool +_080B4150: + ldr r7, =gUnknown_0855073C +_080B4152: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r7 + ldr r3, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl _call_via_r3 + lsls r0, 24 + cmp r0, 0 + bne _080B4152 +_080B416C: + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end c3_8081EDC + + thumb_func_start sub_80B4178 +sub_80B4178: @ 80B4178 + movs r0, 0 + bx lr + thumb_func_end sub_80B4178 + + thumb_func_start sub_80B417C +sub_80B417C: @ 80B417C + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + ldr r1, =0x02038c08 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + adds r0, r4, 0 + bl FieldObjectGetLocalIdAndMap + movs r0, 0 + bl FieldEffectStart + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldObjectSetSpecialAnim + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80B417C + + thumb_func_start sub_80B41C0 +sub_80B41C0: @ 80B41C0 + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + movs r0, 0 + bl FieldEffectActiveListContains + lsls r0, 24 + cmp r0, 0 + beq _080B41D6 + movs r0, 0 + b _080B41F8 +_080B41D6: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + ldrb r0, [r5, 0x6] + subs r0, 0x39 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _080B41EC + movs r0, 0x6 + strh r0, [r4, 0x8] +_080B41EC: + ldrb r0, [r5, 0x6] + cmp r0, 0x3F + bne _080B41F6 + movs r0, 0x8 + strh r0, [r4, 0x8] +_080B41F6: + movs r0, 0x1 +_080B41F8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80B41C0 + + thumb_func_start sub_80B4200 +sub_80B4200: @ 80B4200 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r4, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _080B421E + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _080B4252 +_080B421E: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080B4244 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetGoSpeed0AnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldObjectSetSpecialAnim + ldrh r0, [r5, 0xE] + subs r0, 0x1 + strh r0, [r5, 0xE] + b _080B4252 +_080B4244: + adds r0, r4, 0 + movs r1, 0x3E + bl FieldObjectSetSpecialAnim + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_080B4252: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80B4200 + + thumb_func_start sub_80B425C +sub_80B425C: @ 80B425C + push {r4-r6,lr} + adds r6, r1, 0 + adds r5, r2, 0 + adds r0, r5, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _080B427A + adds r0, r5, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _080B4308 +_080B427A: + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl npc_running_behaviour_by_direction + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl npc_set_running_behaviour_etc + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl npc_running_behaviour_by_direction + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_808F23C + adds r0, r5, 0 + bl sub_808F208 + ldr r0, =0x02037590 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r4, r0, r1 + adds r0, r4, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _080B42D2 + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _080B4308 +_080B42D2: + bl sub_808BCE8 + ldr r0, =0x02037590 + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, =0x02037350 + adds r4, r0 + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetOppositeDirection + lsls r0, 24 + lsrs r0, 24 + bl GetFaceDirectionAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldObjectSetSpecialAnim + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] +_080B4308: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80B425C + + thumb_func_start sub_80B4318 +sub_80B4318: @ 80B4318 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, =0x02037590 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r4, r0, r1 + adds r0, r4, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _080B4344 + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _080B434A +_080B4344: + adds r0, r5, 0 + bl SwitchTaskToFollowupFunc +_080B434A: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80B4318 + + thumb_func_start sub_80B435C +sub_80B435C: @ 80B435C + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r4, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _080B437A + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _080B4388 +_080B437A: + adds r0, r4, 0 + movs r1, 0x59 + bl FieldObjectSetSpecialAnim + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_080B4388: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80B435C + + thumb_func_start sub_80B4390 +sub_80B4390: @ 80B4390 + push {r4,lr} + adds r4, r1, 0 + adds r0, r2, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _080B43A4 + movs r0, 0x3 + strh r0, [r4, 0x8] +_080B43A4: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80B4390 + + thumb_func_start sub_80B43AC +sub_80B43AC: @ 80B43AC + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r4, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _080B43CA + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _080B43D8 +_080B43CA: + adds r0, r4, 0 + movs r1, 0x3E + bl FieldObjectSetSpecialAnim + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_080B43D8: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80B43AC + + thumb_func_start sub_80B43E0 +sub_80B43E0: @ 80B43E0 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r4, 0 + bl FieldObjectCheckIfSpecialAnimFinishedOrInactive + lsls r0, 24 + cmp r0, 0 + beq _080B4426 + ldr r2, =0x02038c08 + movs r1, 0x10 + ldrsh r0, [r4, r1] + str r0, [r2] + movs r1, 0x12 + ldrsh r0, [r4, r1] + str r0, [r2, 0x4] + ldr r3, =0x02020630 + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x43 + ldrb r0, [r0] + subs r0, 0x1 + str r0, [r2, 0x8] + movs r0, 0x2 + str r0, [r2, 0xC] + movs r0, 0x31 + bl FieldEffectStart + strh r0, [r5, 0x10] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_080B4426: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80B43E0 + + thumb_func_start sub_80B4438 +sub_80B4438: @ 80B4438 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + ldr r2, =0x02020630 + movs r1, 0x10 + ldrsh r0, [r5, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x2B + ldrb r0, [r1] + cmp r0, 0x2 + bne _080B44A0 + ldrb r1, [r4, 0x3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x3] + ldrb r0, [r4] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0, 0x5] + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_80934BC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldObjectSetSpecialAnim + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_080B44A0: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80B4438 + + thumb_func_start sub_80B44AC +sub_80B44AC: @ 80B44AC + push {r4,lr} + adds r4, r1, 0 + movs r0, 0x31 + bl FieldEffectActiveListContains + lsls r0, 24 + cmp r0, 0 + bne _080B44C0 + movs r0, 0x3 + strh r0, [r4, 0x8] +_080B44C0: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80B44AC + + thumb_func_start sub_80B44C8 +sub_80B44C8: @ 80B44C8 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, =0x03005e00 + adds r4, r0, r1 + adds r0, r4, 0 + adds r0, 0xA + mov r1, sp + bl sub_806F684 + movs r1, 0x16 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080B44FA + ldr r0, [sp] + bl FieldObjectClearAnim + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] +_080B44FA: + ldr r1, =gUnknown_0855076C + movs r2, 0x8 + ldrsh r0, [r4, r2] + lsls r0, 2 + adds r0, r1 + ldr r2, [sp] + ldr r3, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl _call_via_r3 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x3 + bne _080B4564 + movs r0, 0x31 + bl FieldEffectActiveListContains + lsls r0, 24 + cmp r0, 0 + bne _080B4564 + ldr r4, [sp] + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl npc_running_behaviour_by_direction + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl npc_set_running_behaviour_etc + ldr r4, [sp] + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl npc_running_behaviour_by_direction + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_808F23C + adds r0, r5, 0 + bl DestroyTask + b _080B456E + .pool +_080B4564: + ldr r2, [sp] + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] +_080B456E: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80B44C8 + + thumb_func_start sub_80B4578 +sub_80B4578: @ 80B4578 + push {r4,lr} + adds r4, r0, 0 + ldr r0, =sub_80B44C8 + movs r1, 0 + bl CreateTask + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, =0x03005e08 + adds r0, r1 + adds r0, 0x2 + adds r1, r4, 0 + bl sub_806F67C + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80B4578 + + thumb_func_start sub_80B45AC +sub_80B45AC: @ 80B45AC + push {lr} + ldr r0, =sub_80B45BC + bl sub_80B40C8 + pop {r0} + bx r0 + .pool + thumb_func_end sub_80B45AC + + thumb_func_start sub_80B45BC +sub_80B45BC: @ 80B45BC + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl DestroyTask + bl script_env_2_enable_and_set_ctx_running + pop {r0} + bx r0 + thumb_func_end sub_80B45BC + + thumb_func_start sub_80B45D0 +sub_80B45D0: @ 80B45D0 + push {lr} + ldr r0, =0x030060a8 + ldrb r0, [r0] + cmp r0, 0x2 + bne _080B4610 + ldr r1, =0x02038bfc + ldrb r0, [r1] + cmp r0, 0 + bne _080B460C + adds r0, 0x1 + strb r0, [r1] + ldr r1, =0x020375f0 + movs r0, 0x1 + strh r0, [r1] + bl sub_809757C + ldr r0, =0x03006090 + ldrb r0, [r0, 0xC] + bl sub_80974D0 + b _080B4616 + .pool +_080B460C: + movs r0, 0 + strb r0, [r1] +_080B4610: + ldr r1, =0x020375f0 + movs r0, 0 + strh r0, [r1] +_080B4616: + pop {r0} + bx r0 + .pool + thumb_func_end sub_80B45D0 + + .align 2, 0 @ Don't pad with nop. |