diff options
40 files changed, 8665 insertions, 23223 deletions
diff --git a/asm/bike.s b/asm/bike.s index e805ccc38..e73e906bc 100644 --- a/asm/bike.s +++ b/asm/bike.s @@ -79,7 +79,7 @@ sub_80BD100: @ 80BD100 lsls r4, 2 ldr r0, _080BD160 @ =gObjectEvents adds r4, r0 - bl player_get_direction_upper_nybble + bl GetPlayerMovementDirection lsls r0, 24 lsrs r7, r0, 24 movs r0, 0 @@ -195,7 +195,7 @@ sub_80BD1E8: @ 80BD1E8 lsls r2, 16 lsrs r2, 16 mov r8, r2 - bl player_get_direction_upper_nybble + bl GetPlayerMovementDirection lsls r0, 24 lsrs r5, r0, 24 adds r7, r5, 0 @@ -881,7 +881,7 @@ Bike_HandleBumpySlopeJump: @ 80BD6C4 beq _080BD70C movs r0, 0x2 strb r0, [r5, 0x8] - bl player_get_direction_upper_nybble + bl GetPlayerMovementDirection lsls r0, 24 lsrs r0, 24 bl nullsub_24 diff --git a/asm/event_object_movement.s b/asm/event_object_movement.s index ec39d9f08..0b3eb41af 100644 --- a/asm/event_object_movement.s +++ b/asm/event_object_movement.s @@ -5,22060 +5,6 @@ .text - thumb_func_start npc_clear_ids_and_state -npc_clear_ids_and_state: @ 805DE2C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - movs r2, 0x24 - bl memset - movs r0, 0xFF - strb r0, [r4, 0x8] - movs r0, 0x1 - negs r0, r0 - strb r0, [r4, 0x9] - strb r0, [r4, 0xA] - strb r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - thumb_func_end npc_clear_ids_and_state - - thumb_func_start npcs_clear_ids_and_state -npcs_clear_ids_and_state: @ 805DE4C - push {r4,r5,lr} - movs r4, 0 - ldr r5, _0805DE70 @ =gObjectEvents -_0805DE52: - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - adds r0, r5 - bl npc_clear_ids_and_state - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _0805DE52 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805DE70: .4byte gObjectEvents - thumb_func_end npcs_clear_ids_and_state - - thumb_func_start sub_805DE74 -sub_805DE74: @ 805DE74 - push {lr} - bl strange_npc_table_clear - bl npcs_clear_ids_and_state - bl ClearPlayerAvatarInfo - bl sub_805DE8C - pop {r0} - bx r0 - thumb_func_end sub_805DE74 - - thumb_func_start sub_805DE8C -sub_805DE8C: @ 805DE8C - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - ldr r0, _0805DF28 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x54] - mov r9, r0 - movs r1, 0 - movs r2, 0 - movs r3, 0x1F - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805DF2C @ =gSprites - mov r10, r1 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - add r4, r10 - ldrb r1, [r4, 0x1] - movs r5, 0x4 - negs r5, r5 - adds r0, r5, 0 - ands r0, r1 - movs r1, 0x1 - mov r8, r1 - mov r1, r8 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r0, r4, 0 - bl InitSpriteAffineAnim - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAffineAnim - adds r4, 0x3E - ldrb r0, [r4] - movs r6, 0x4 - orrs r0, r6 - strb r0, [r4] - mov r0, r9 - movs r1, 0 - movs r2, 0 - movs r3, 0x1F - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - add r4, r10 - ldrb r0, [r4, 0x1] - ands r5, r0 - mov r0, r8 - orrs r5, r0 - strb r5, [r4, 0x1] - adds r0, r4, 0 - bl InitSpriteAffineAnim - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - adds r4, 0x3E - ldrb r0, [r4] - orrs r0, r6 - strb r0, [r4] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805DF28: .4byte gFieldEffectObjectTemplatePointers -_0805DF2C: .4byte gSprites - thumb_func_end sub_805DE8C - - thumb_func_start GetIndexOfFirstInactiveObjectEvent -GetIndexOfFirstInactiveObjectEvent: @ 805DF30 - push {lr} - movs r1, 0 - ldr r2, _0805DF3C @ =gObjectEvents - ldrb r0, [r2] - b _0805DF54 - .align 2, 0 -_0805DF3C: .4byte gObjectEvents -_0805DF40: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bhi _0805DF5A - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] -_0805DF54: - lsls r0, 31 - cmp r0, 0 - bne _0805DF40 -_0805DF5A: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end GetIndexOfFirstInactiveObjectEvent - - thumb_func_start GetObjectEventIdByLocalIdAndMap -GetObjectEventIdByLocalIdAndMap: @ 805DF60 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - cmp r0, 0xFE - bls _0805DF78 - bl GetObjectEventIdByLocalId - b _0805DF7C -_0805DF78: - bl GetObjectEventIdByLocalIdAndMapInternal -_0805DF7C: - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end GetObjectEventIdByLocalIdAndMap - - thumb_func_start TryGetObjectEventIdByLocalIdAndMap -TryGetObjectEventIdByLocalIdAndMap: @ 805DF84 - push {r4,lr} - adds r4, r3, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - bl GetObjectEventIdByLocalIdAndMap - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - beq _0805DFA6 - movs r0, 0 - b _0805DFA8 -_0805DFA6: - movs r0, 0x1 -_0805DFA8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end TryGetObjectEventIdByLocalIdAndMap - - thumb_func_start GetObjectEventIdByXY -GetObjectEventIdByXY: @ 805DFB0 - push {r4-r6,lr} - movs r3, 0 - ldr r5, _0805DFF0 @ =gObjectEvents - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r1, 16 -_0805DFBE: - lsls r0, r3, 3 - adds r0, r3 - lsls r0, 2 - adds r2, r0, r5 - ldrb r0, [r2] - lsls r0, 31 - cmp r0, 0 - beq _0805DFDE - movs r6, 0x10 - ldrsh r0, [r2, r6] - cmp r0, r4 - bne _0805DFDE - movs r6, 0x12 - ldrsh r0, [r2, r6] - cmp r0, r1 - beq _0805DFE8 -_0805DFDE: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xF - bls _0805DFBE -_0805DFE8: - adds r0, r3, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805DFF0: .4byte gObjectEvents - thumb_func_end GetObjectEventIdByXY - - thumb_func_start GetObjectEventIdByLocalIdAndMapInternal -GetObjectEventIdByLocalIdAndMapInternal: @ 805DFF4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0 - ldr r6, _0805E02C @ =gObjectEvents -_0805E006: - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r3, r0, r6 - ldrb r0, [r3] - lsls r0, 31 - cmp r0, 0 - beq _0805E030 - ldrb r0, [r3, 0x8] - cmp r0, r5 - bne _0805E030 - ldrb r0, [r3, 0x9] - cmp r0, r4 - bne _0805E030 - ldrb r0, [r3, 0xA] - cmp r0, r2 - bne _0805E030 - adds r0, r1, 0 - b _0805E03C - .align 2, 0 -_0805E02C: .4byte gObjectEvents -_0805E030: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _0805E006 - movs r0, 0x10 -_0805E03C: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end GetObjectEventIdByLocalIdAndMapInternal - - thumb_func_start GetObjectEventIdByLocalId -GetObjectEventIdByLocalId: @ 805E044 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r2, 0 - ldr r4, _0805E068 @ =gObjectEvents -_0805E04E: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r4 - ldrb r0, [r1] - lsls r0, 31 - cmp r0, 0 - beq _0805E06C - ldrb r0, [r1, 0x8] - cmp r0, r3 - bne _0805E06C - adds r0, r2, 0 - b _0805E078 - .align 2, 0 -_0805E068: .4byte gObjectEvents -_0805E06C: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _0805E04E - movs r0, 0x10 -_0805E078: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetObjectEventIdByLocalId - - thumb_func_start sub_805E080 -sub_805E080: @ 805E080 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - adds r5, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - movs r0, 0 - mov r10, r0 - mov r8, r0 - mov r9, r0 - movs r1, 0 - str r1, [sp, 0x4] - str r0, [sp, 0x8] - ldrb r0, [r5, 0x2] - cmp r0, 0xFF - bne _0805E0DA - movs r1, 0x1 - mov r10, r1 - ldrb r4, [r5, 0x8] - ldrb r7, [r5, 0xC] - ldrb r6, [r5, 0xE] - ldrh r0, [r5, 0x4] - mov r8, r0 - ldrh r5, [r5, 0x6] - mov r9, r5 - mov r1, r8 - str r1, [sp, 0x4] - mov r0, r9 - str r0, [sp, 0x8] - adds r0, r6, 0 - adds r1, r7, 0 - bl Overworld_GetMapHeaderByGroupAndId - ldr r1, [r0, 0x4] - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 3 - subs r0, 0x18 - ldr r1, [r1, 0x4] - adds r5, r1, r0 -_0805E0DA: - ldrb r0, [r5] - adds r1, r7, 0 - adds r2, r6, 0 - mov r3, sp - bl GetAvailableObjectEventSlot - lsls r0, 24 - cmp r0, 0 - bne _0805E106 - ldr r1, [sp, 0x4] - lsls r2, r1, 16 - asrs r2, 16 - ldr r0, [sp, 0x8] - lsls r3, r0, 16 - asrs r3, 16 - adds r0, r5, 0 - mov r1, r10 - bl sub_805E238 - lsls r0, 24 - cmp r0, 0 - bne _0805E10A -_0805E106: - movs r0, 0x10 - b _0805E220 -_0805E10A: - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805E13C @ =gObjectEvents - adds r4, r0, r1 - adds r0, r4, 0 - bl npc_clear_ids_and_state - mov r1, r10 - cmp r1, 0 - beq _0805E140 - mov r1, r8 - lsls r0, r1, 16 - movs r1, 0xE0 - lsls r1, 11 - adds r0, r1 - lsrs r3, r0, 16 - mov r1, r9 - lsls r0, r1, 16 - movs r1, 0xE0 - lsls r1, 11 - adds r0, r1 - b _0805E14E - .align 2, 0 -_0805E13C: .4byte gObjectEvents -_0805E140: - ldrh r0, [r5, 0x4] - adds r0, 0x7 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r0, [r5, 0x6] - adds r0, 0x7 - lsls r0, 16 -_0805E14E: - lsrs r2, r0, 16 - ldrb r0, [r4] - movs r1, 0x1 - orrs r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4] - ldrb r0, [r5, 0x1] - strb r0, [r4, 0x5] - ldrb r0, [r5, 0x9] - strb r0, [r4, 0x6] - ldrb r0, [r5] - strb r0, [r4, 0x8] - strb r7, [r4, 0x9] - strb r6, [r4, 0xA] - strh r3, [r4, 0xC] - strh r2, [r4, 0xE] - strh r3, [r4, 0x10] - strh r2, [r4, 0x12] - strh r3, [r4, 0x14] - strh r2, [r4, 0x16] - ldrb r0, [r5, 0x8] - movs r6, 0xF - adds r1, r6, 0 - ands r1, r0 - ldrb r2, [r4, 0xB] - movs r0, 0x10 - negs r0, r0 - mov r8, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0xB] - ldrb r1, [r5, 0x8] - lsls r1, 4 - ands r0, r6 - orrs r0, r1 - strb r0, [r4, 0xB] - ldrb r1, [r5, 0xA] - lsls r1, 28 - movs r0, 0xF - mov r9, r0 - lsrs r1, 28 - ldrb r2, [r4, 0x19] - mov r0, r8 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x19] - ldrb r1, [r5, 0xA] - lsrs r1, 4 - lsls r1, 4 - ands r0, r6 - orrs r0, r1 - strb r0, [r4, 0x19] - ldrh r0, [r5, 0xC] - strb r0, [r4, 0x7] - ldrh r0, [r5, 0xE] - strb r0, [r4, 0x1D] - ldr r1, _0805E230 @ =gInitialMovementTypeFacingDirections - ldrb r0, [r5, 0x9] - adds r0, r1 - ldrb r1, [r0] - adds r0, r4, 0 - adds r0, 0x20 - strb r1, [r0] - ldrb r1, [r0] - adds r0, r4, 0 - bl ObjectEventSetDirection - adds r0, r4, 0 - bl ObjectEventHandleDynamicGraphicsId - ldr r1, _0805E234 @ =gRangedMovementTypes - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0805E21C - ldrb r2, [r4, 0x19] - adds r0, r6, 0 - ands r0, r2 - cmp r0, 0 - bne _0805E204 - lsls r0, r2, 28 - lsrs r0, 28 - adds r0, 0x1 - mov r1, r9 - ands r0, r1 - mov r1, r8 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x19] -_0805E204: - ldrb r2, [r4, 0x19] - movs r0, 0xF0 - ands r0, r2 - cmp r0, 0 - bne _0805E21C - lsrs r1, r2, 4 - adds r1, 0x1 - lsls r1, 4 - adds r0, r6, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x19] -_0805E21C: - mov r0, sp - ldrb r0, [r0] -_0805E220: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805E230: .4byte gInitialMovementTypeFacingDirections -_0805E234: .4byte gRangedMovementTypes - thumb_func_end sub_805E080 - - thumb_func_start sub_805E238 -sub_805E238: @ 805E238 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 24 - lsls r2, 16 - lsrs r4, r2, 16 - lsls r3, 16 - lsrs r5, r3, 16 - cmp r1, 0 - beq _0805E25C - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r5, 16 - asrs r2, 16 - bl sub_805E27C - lsls r0, 24 - cmp r0, 0 - beq _0805E274 -_0805E25C: - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r5, 16 - asrs r2, 16 - adds r0, r6, 0 - bl sub_805E2E8 - lsls r0, 24 - cmp r0, 0 - beq _0805E274 - movs r0, 0x1 - b _0805E276 -_0805E274: - movs r0, 0 -_0805E276: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805E238 - - thumb_func_start sub_805E27C -sub_805E27C: @ 805E27C - push {r4,r5,lr} - lsls r1, 16 - lsrs r3, r1, 16 - lsls r2, 16 - lsrs r4, r2, 16 - adds r5, r4, 0 - ldrb r0, [r0, 0x1] - subs r0, 0x5F - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0805E2DE - ldr r0, _0805E2B8 @ =gSaveBlock1Ptr - ldr r2, [r0] - movs r0, 0 - ldrsh r1, [r2, r0] - lsls r0, r3, 16 - asrs r3, r0, 16 - cmp r1, r3 - bge _0805E2BC - adds r0, r1, 0 - adds r0, 0x8 - cmp r0, r3 - blt _0805E2DE - movs r0, 0x2 - ldrsh r3, [r2, r0] - subs r1, r3, 0x6 - lsls r0, r4, 16 - b _0805E2CE - .align 2, 0 -_0805E2B8: .4byte gSaveBlock1Ptr -_0805E2BC: - movs r1, 0 - ldrsh r0, [r2, r1] - subs r0, 0x8 - cmp r0, r3 - bgt _0805E2DE - movs r0, 0x2 - ldrsh r3, [r2, r0] - subs r1, r3, 0x6 - lsls r0, r5, 16 -_0805E2CE: - asrs r2, r0, 16 - cmp r1, r2 - bgt _0805E2DE - adds r0, r3, 0x6 - cmp r0, r2 - blt _0805E2DE - movs r0, 0 - b _0805E2E0 -_0805E2DE: - movs r0, 0x1 -_0805E2E0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E27C - - thumb_func_start sub_805E2E8 -sub_805E2E8: @ 805E2E8 - push {r4,r5,lr} - adds r4, r0, 0 - bl GetCurrentMapType - lsls r0, 24 - lsrs r0, 24 - bl IsMapTypeOutdoors - lsls r0, 24 - cmp r0, 0 - beq _0805E37C - ldr r1, _0805E374 @ =VMap - ldr r0, [r1] - adds r3, r0, 0 - subs r3, 0x10 - ldr r0, [r1, 0x4] - adds r5, r0, 0 - subs r5, 0xF - ldrb r0, [r4, 0x1] - subs r0, 0x5F - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0805E37C - ldr r0, _0805E378 @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r2, 0 - ldrsh r1, [r1, r2] - adds r2, r0, 0 - cmp r1, 0 - bne _0805E32E - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0x8 - ble _0805E36A -_0805E32E: - ldr r0, [r2] - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, r3 - bne _0805E344 - movs r0, 0x4 - ldrsh r1, [r4, r0] - adds r0, r3, 0 - subs r0, 0x8 - cmp r1, r0 - bge _0805E36A -_0805E344: - ldr r0, [r2] - movs r1, 0x2 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0805E356 - movs r1, 0x6 - ldrsh r0, [r4, r1] - cmp r0, 0x6 - ble _0805E36A -_0805E356: - ldr r0, [r2] - movs r2, 0x2 - ldrsh r0, [r0, r2] - cmp r0, r5 - bne _0805E37C - movs r0, 0x6 - ldrsh r1, [r4, r0] - subs r0, r5, 0x6 - cmp r1, r0 - blt _0805E37C -_0805E36A: - adds r0, r4, 0 - bl sub_805E384 - movs r0, 0 - b _0805E37E - .align 2, 0 -_0805E374: .4byte VMap -_0805E378: .4byte gSaveBlock1Ptr -_0805E37C: - movs r0, 0x1 -_0805E37E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E2E8 - - thumb_func_start sub_805E384 -sub_805E384: @ 805E384 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x14] - subs r0, 0x11 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xE - bhi _0805E39A - ldrh r0, [r1, 0x14] - bl FlagSet -_0805E39A: - pop {r0} - bx r0 - thumb_func_end sub_805E384 - - thumb_func_start sub_805E3A0 -sub_805E3A0: @ 805E3A0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _0805E3B8 @ =gMapHeader - ldr r0, [r0, 0x4] - cmp r0, 0 - bne _0805E3CE - b _0805E404 - .align 2, 0 -_0805E3B8: .4byte gMapHeader -_0805E3BC: - ldr r0, [r7] - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - adds r0, r4, 0 - bl sub_805E080 - lsls r0, 24 - lsrs r0, 24 - b _0805E406 -_0805E3CE: - ldrb r6, [r0] - movs r5, 0 - cmp r5, r6 - bcs _0805E404 - ldr r7, _0805E410 @ =gSaveBlock1Ptr -_0805E3D8: - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 3 - movs r1, 0x8E - lsls r1, 4 - adds r0, r1 - ldr r1, [r7] - adds r4, r1, r0 - ldrb r0, [r4] - cmp r0, r8 - bne _0805E3FA - ldrh r0, [r4, 0x14] - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0805E3BC -_0805E3FA: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r6 - bcc _0805E3D8 -_0805E404: - movs r0, 0x10 -_0805E406: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805E410: .4byte gSaveBlock1Ptr - thumb_func_end sub_805E3A0 - - thumb_func_start GetAvailableObjectEventSlot -GetAvailableObjectEventSlot: @ 805E414 - push {r4-r7,lr} - mov r12, r3 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - movs r2, 0 - ldr r1, _0805E470 @ =gObjectEvents - ldrb r0, [r1] - lsls r0, 31 - adds r7, r1, 0 - cmp r0, 0 - beq _0805E468 - adds r3, r1, 0 -_0805E434: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r3 - ldrb r0, [r1, 0x8] - cmp r0, r6 - bne _0805E44E - ldrb r0, [r1, 0x9] - cmp r0, r5 - bne _0805E44E - ldrb r0, [r1, 0xA] - cmp r0, r4 - beq _0805E46C -_0805E44E: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bhi _0805E46C - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r0, r7 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - bne _0805E434 -_0805E468: - cmp r2, 0xF - bls _0805E474 -_0805E46C: - movs r0, 0x1 - b _0805E4A8 - .align 2, 0 -_0805E470: .4byte gObjectEvents -_0805E474: - mov r0, r12 - strb r2, [r0] - ldr r1, _0805E4B0 @ =gObjectEvents -_0805E47A: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r1 - ldrb r0, [r3] - lsls r0, 31 - cmp r0, 0 - beq _0805E49C - ldrb r0, [r3, 0x8] - cmp r0, r6 - bne _0805E49C - ldrb r0, [r3, 0x9] - cmp r0, r5 - bne _0805E49C - ldrb r0, [r3, 0xA] - cmp r0, r4 - beq _0805E46C -_0805E49C: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _0805E47A - movs r0, 0 -_0805E4A8: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805E4B0: .4byte gObjectEvents - thumb_func_end GetAvailableObjectEventSlot - - thumb_func_start RemoveObjectEvent -RemoveObjectEvent: @ 805E4B4 - push {lr} - ldrb r2, [r0] - movs r1, 0x2 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - bl RemoveObjectEventInternal - pop {r0} - bx r0 - thumb_func_end RemoveObjectEvent - - thumb_func_start RemoveObjectEventByLocalIdAndMap -RemoveObjectEventByLocalIdAndMap: @ 805E4C8 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0805E506 - mov r0, sp - ldrb r0, [r0] - bl GetObjectEventFlagIdByObjectEventId - lsls r0, 16 - lsrs r0, 16 - bl FlagSet - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805E50C @ =gObjectEvents - adds r0, r1 - bl RemoveObjectEvent -_0805E506: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0805E50C: .4byte gObjectEvents - thumb_func_end RemoveObjectEventByLocalIdAndMap - - thumb_func_start RemoveObjectEventInternal -RemoveObjectEventInternal: @ 805E510 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldrb r0, [r4, 0x5] - bl GetObjectEventGraphicsInfo - ldrh r2, [r0, 0x6] - ldr r1, _0805E554 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - orrs r0, r2 - str r0, [sp, 0x4] - ldr r2, _0805E558 @ =gSprites - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r2, 0 - adds r1, 0xC - adds r0, r1 - mov r1, sp - str r1, [r0] - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - bl DestroySprite - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805E554: .4byte 0xffff0000 -_0805E558: .4byte gSprites - thumb_func_end RemoveObjectEventInternal - - thumb_func_start unref_sub_808D958 -unref_sub_808D958: @ 805E55C - push {r4,lr} - movs r4, 0 -_0805E560: - ldr r0, _0805E588 @ =gPlayerAvatar - ldrb r0, [r0, 0x5] - cmp r4, r0 - beq _0805E576 - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - ldr r1, _0805E58C @ =gObjectEvents - adds r0, r1 - bl RemoveObjectEvent -_0805E576: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _0805E560 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805E588: .4byte gPlayerAvatar -_0805E58C: .4byte gObjectEvents - thumb_func_end unref_sub_808D958 - - thumb_func_start sub_805E590 -sub_805E590: @ 805E590 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r7, r1, 0 - adds r1, r2, 0 - adds r2, r3, 0 - ldr r3, [sp, 0x20] - ldr r4, [sp, 0x24] - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 16 - lsrs r3, 16 - mov r9, r3 - lsls r4, 16 - lsrs r4, 16 - mov r10, r4 - bl sub_805E080 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0x10 - bne _0805E5CA - movs r0, 0x10 - b _0805E718 -_0805E5CA: - mov r0, r8 - lsls r4, r0, 3 - adds r0, r4, r0 - lsls r0, 2 - ldr r1, _0805E5F4 @ =gObjectEvents - adds r5, r0, r1 - ldrb r0, [r5, 0x5] - bl GetObjectEventGraphicsInfo - adds r6, r0, 0 - ldrb r1, [r6, 0xC] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _0805E5F8 - ldrh r0, [r6, 0x2] - lsls r1, 28 - lsrs r1, 28 - bl LoadPlayerObjectReflectionPalette - b _0805E606 - .align 2, 0 -_0805E5F4: .4byte gObjectEvents -_0805E5F8: - cmp r0, 0xA - bne _0805E606 - ldrh r0, [r6, 0x2] - lsls r1, 28 - lsrs r1, 28 - bl LoadSpecialObjectReflectionPalette -_0805E606: - ldrb r0, [r5, 0x6] - cmp r0, 0x4C - bne _0805E614 - ldrb r0, [r5, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r5, 0x1] -_0805E614: - ldr r1, _0805E648 @ =0x0000ffff - adds r0, r1, 0 - strh r0, [r7, 0x2] - adds r0, r7, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x40 - bne _0805E650 - ldr r0, _0805E64C @ =gObjectEvents - mov r2, r8 - adds r1, r4, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - movs r0, 0x10 - b _0805E718 - .align 2, 0 -_0805E648: .4byte 0x0000ffff -_0805E64C: .4byte gObjectEvents -_0805E650: - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, _0805E728 @ =gSprites - adds r4, r0, r1 - mov r1, r9 - lsls r0, r1, 16 - asrs r0, 16 - ldrh r2, [r5, 0x10] - adds r0, r2 - lsls r0, 16 - asrs r0, 16 - mov r2, r10 - lsls r1, r2, 16 - asrs r1, 16 - ldrh r2, [r5, 0x12] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - bl sub_8063AD4 - ldrh r0, [r6, 0x8] - lsls r0, 16 - asrs r0, 17 - negs r0, r0 - adds r1, r4, 0 - adds r1, 0x28 - strb r0, [r1] - ldrh r0, [r6, 0xA] - lsls r0, 16 - asrs r0, 17 - negs r0, r0 - adds r2, r4, 0 - adds r2, 0x29 - strb r0, [r2] - ldrh r0, [r4, 0x20] - adds r0, 0x8 - strh r0, [r4, 0x20] - ldrh r1, [r4, 0x22] - adds r1, 0x10 - movs r0, 0 - ldrsb r0, [r2, r0] - adds r0, r1 - strh r0, [r4, 0x22] - ldrb r1, [r6, 0xC] - lsls r1, 28 - lsrs r1, 24 - ldrb r2, [r4, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - mov r0, r8 - strh r0, [r4, 0x2E] - strb r7, [r5, 0x4] - ldrb r1, [r6, 0xC] - lsls r1, 25 - lsrs r1, 31 - lsls r1, 4 - ldrb r2, [r5, 0x1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x1] - lsls r0, 27 - cmp r0, 0 - blt _0805E702 - ldrb r0, [r5, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl ObjectEventDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_0805E702: - ldrb r0, [r5, 0xB] - lsrs r0, 4 - adds r1, r4, 0 - movs r2, 0x1 - bl SetObjectSubpriorityByZCoord - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80679F8 - mov r0, r8 -_0805E718: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805E728: .4byte gSprites - thumb_func_end sub_805E590 - - thumb_func_start SpawnObjectEvent -SpawnObjectEvent: @ 805E72C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x2C - mov r9, r0 - adds r6, r1, 0 - mov r8, r2 - adds r4, r3, 0 - ldr r5, [sp, 0x48] - lsls r6, 24 - lsrs r6, 24 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - movs r0, 0 - str r0, [sp, 0x20] - mov r1, r9 - ldrb r0, [r1, 0x1] - bl GetObjectEventGraphicsInfo - adds r7, r0, 0 - add r2, sp, 0x20 - mov r0, r9 - add r1, sp, 0x8 - bl MakeObjectTemplateFromObjectEventTemplate - ldrh r3, [r7, 0x6] - ldr r2, _0805E7A4 @ =0xffff0000 - add r1, sp, 0x24 - ldr r0, [r1, 0x4] - ands r0, r2 - orrs r0, r3 - str r0, [r1, 0x4] - str r1, [sp, 0x14] - lsls r4, 16 - asrs r4, 16 - str r4, [sp] - lsls r5, 16 - asrs r5, 16 - str r5, [sp, 0x4] - mov r0, r9 - add r1, sp, 0x8 - adds r2, r6, 0 - mov r3, r8 - bl sub_805E590 - lsls r0, 24 - lsrs r2, r0, 24 - adds r5, r2, 0 - cmp r2, 0x10 - bne _0805E7A8 - movs r0, 0x10 - b _0805E7DE - .align 2, 0 -_0805E7A4: .4byte 0xffff0000 -_0805E7A8: - ldr r4, _0805E7EC @ =gSprites - ldr r1, _0805E7F0 @ =gObjectEvents - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r1 - ldrb r1, [r3, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0xC - adds r0, r1 - ldr r1, [r7, 0x1C] - str r1, [r0] - ldr r2, [sp, 0x20] - cmp r2, 0 - beq _0805E7DC - ldrb r1, [r3, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r1, r2, 0 - bl SetSubspriteTables -_0805E7DC: - adds r0, r5, 0 -_0805E7DE: - add sp, 0x2C - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805E7EC: .4byte gSprites -_0805E7F0: .4byte gObjectEvents - thumb_func_end SpawnObjectEvent - - thumb_func_start SpawnSpecialObjectEvent -SpawnSpecialObjectEvent: @ 805E7F4 - push {r4-r6,lr} - sub sp, 0x8 - adds r5, r0, 0 - mov r4, sp - adds r4, 0x6 - add r0, sp, 0x4 - adds r1, r4, 0 - bl GetObjectEventMovingCameraOffset - ldr r0, _0805E82C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - add r0, sp, 0x4 - movs r6, 0 - ldrsh r3, [r0, r6] - movs r6, 0 - ldrsh r0, [r4, r6] - str r0, [sp] - adds r0, r5, 0 - bl SpawnObjectEvent - lsls r0, 24 - lsrs r0, 24 - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805E82C: .4byte gSaveBlock1Ptr - thumb_func_end SpawnSpecialObjectEvent - - thumb_func_start SpawnSpecialObjectEventParameterized -SpawnSpecialObjectEventParameterized: @ 805E830 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x18 - ldr r4, [sp, 0x2C] - ldr r5, [sp, 0x30] - mov r8, r5 - lsls r0, 24 - lsrs r0, 24 - lsls r3, 16 - ldr r5, _0805E894 @ =0xfff90000 - adds r3, r5 - lsrs r3, 16 - lsls r4, 16 - adds r4, r5 - lsrs r4, 16 - mov r5, sp - movs r6, 0 - strb r2, [r5] - mov r2, sp - strb r0, [r2, 0x1] - mov r0, sp - strb r6, [r0, 0x2] - movs r5, 0 - strh r3, [r0, 0x4] - strh r4, [r0, 0x6] - mov r2, r8 - strb r2, [r0, 0x8] - strb r1, [r0, 0x9] - mov r2, sp - ldrb r1, [r2, 0xA] - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0xA] - mov r0, sp - strb r5, [r0, 0xA] - strh r6, [r0, 0xC] - strh r6, [r0, 0xE] - bl SpawnSpecialObjectEvent - lsls r0, 24 - lsrs r0, 24 - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805E894: .4byte 0xfff90000 - thumb_func_end SpawnSpecialObjectEventParameterized - - thumb_func_start TrySpawnObjectEvent -TrySpawnObjectEvent: @ 805E898 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - adds r1, r7, 0 - adds r2, r6, 0 - bl GetObjectEventTemplateByLocalIdAndMap - adds r5, r0, 0 - cmp r5, 0 - beq _0805E8DE - mov r4, sp - adds r4, 0x6 - add r0, sp, 0x4 - adds r1, r4, 0 - bl GetObjectEventMovingCameraOffset - add r0, sp, 0x4 - movs r1, 0 - ldrsh r3, [r0, r1] - movs r1, 0 - ldrsh r0, [r4, r1] - str r0, [sp] - adds r0, r5, 0 - adds r1, r7, 0 - adds r2, r6, 0 - bl SpawnObjectEvent - lsls r0, 24 - lsrs r0, 24 - b _0805E8E0 -_0805E8DE: - movs r0, 0x10 -_0805E8E0: - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end TrySpawnObjectEvent - - thumb_func_start MakeObjectTemplateFromObjectEventGraphicsInfo -MakeObjectTemplateFromObjectEventGraphicsInfo: @ 805E8E8 - push {r4-r7,lr} - adds r6, r1, 0 - adds r4, r2, 0 - adds r7, r3, 0 - lsls r0, 24 - lsrs r0, 24 - bl GetObjectEventGraphicsInfo - adds r5, r0, 0 - ldrh r0, [r5] - strh r0, [r4] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x2] - ldr r0, [r5, 0x10] - str r0, [r4, 0x4] - ldr r0, [r5, 0x18] - str r0, [r4, 0x8] - ldr r0, [r5, 0x1C] - str r0, [r4, 0xC] - ldr r0, [r5, 0x20] - str r0, [r4, 0x10] - bl ScriptContext1_IsScriptSetUp - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0805E934 - bl sub_8112CAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805E934 - ldr r0, _0805E930 @ =sub_811246C - str r0, [r4, 0x14] - b _0805E936 - .align 2, 0 -_0805E930: .4byte sub_811246C -_0805E934: - str r6, [r4, 0x14] -_0805E936: - ldr r0, [r5, 0x14] - str r0, [r7] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end MakeObjectTemplateFromObjectEventGraphicsInfo - - thumb_func_start MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex -MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex: @ 805E940 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - ldr r4, _0805E95C @ =gMovementTypeCallbacks - lsrs r1, 14 - adds r1, r4 - ldr r1, [r1] - bl MakeObjectTemplateFromObjectEventGraphicsInfo - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805E95C: .4byte gMovementTypeCallbacks - thumb_func_end MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex - - thumb_func_start MakeObjectTemplateFromObjectEventTemplate -MakeObjectTemplateFromObjectEventTemplate: @ 805E960 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r3, r2, 0 - ldrb r0, [r4, 0x1] - ldrb r1, [r4, 0x9] - adds r2, r5, 0 - bl MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end MakeObjectTemplateFromObjectEventTemplate - - thumb_func_start AddPseudoObjectEvent -AddPseudoObjectEvent: @ 805E978 - push {r4-r6,lr} - sub sp, 0x1C - ldr r4, [sp, 0x2C] - lsls r0, 16 - lsrs r0, 16 - lsls r2, 16 - lsrs r6, r2, 16 - lsls r3, 16 - lsrs r5, r3, 16 - lsls r4, 24 - lsrs r4, 24 - add r3, sp, 0x18 - mov r2, sp - bl MakeObjectTemplateFromObjectEventGraphicsInfo - mov r0, sp - ldrh r1, [r0, 0x2] - ldr r0, _0805E9F0 @ =0x0000ffff - cmp r1, r0 - beq _0805E9A8 - mov r0, sp - ldrh r0, [r0, 0x2] - bl sub_805F4B0 -_0805E9A8: - lsls r1, r6, 16 - asrs r1, 16 - lsls r2, r5, 16 - asrs r2, 16 - mov r0, sp - adds r3, r4, 0 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x40 - beq _0805E9E4 - ldr r1, [sp, 0x18] - cmp r1, 0 - beq _0805E9E4 - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - ldr r0, _0805E9F4 @ =gSprites - adds r4, r0 - adds r0, r4, 0 - bl SetSubspriteTables - adds r4, 0x42 - ldrb r1, [r4] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x80 - orrs r0, r1 - strb r0, [r4] -_0805E9E4: - adds r0, r5, 0 - add sp, 0x1C - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805E9F0: .4byte 0x0000ffff -_0805E9F4: .4byte gSprites - thumb_func_end AddPseudoObjectEvent - - thumb_func_start sprite_new -sprite_new: @ 805E9F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - adds r5, r0, 0 - ldr r0, [sp, 0x44] - ldr r4, [sp, 0x48] - lsls r5, 24 - lsrs r5, 24 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - add r1, sp, 0x18 - mov r8, r1 - strh r2, [r1] - mov r6, sp - adds r6, 0x1A - strh r3, [r6] - lsls r0, 24 - lsrs r7, r0, 24 - mov r9, r7 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp, 0x20] - adds r0, r5, 0 - bl GetObjectEventGraphicsInfo - adds r4, r0, 0 - ldr r1, _0805EB38 @ =UpdateObjectEventSpriteSubpriorityAndVisibility - add r3, sp, 0x1C - adds r0, r5, 0 - mov r2, sp - bl MakeObjectTemplateFromObjectEventGraphicsInfo - mov r1, sp - ldr r2, _0805EB3C @ =0x0000ffff - adds r0, r2, 0 - strh r0, [r1, 0x2] - mov r1, r8 - movs r2, 0 - ldrsh r0, [r1, r2] - adds r0, 0x7 - strh r0, [r1] - movs r1, 0 - ldrsh r0, [r6, r1] - adds r0, 0x7 - strh r0, [r6] - mov r0, r8 - adds r1, r6, 0 - movs r2, 0x8 - movs r3, 0x10 - bl sub_8063BC4 - mov r2, r8 - movs r0, 0 - ldrsh r1, [r2, r0] - movs r0, 0 - ldrsh r2, [r6, r0] - mov r0, sp - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _0805EB24 - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - ldr r1, _0805EB40 @ =gSprites - adds r5, r0, r1 - ldrh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 17 - negs r0, r0 - adds r1, r5, 0 - adds r1, 0x28 - strb r0, [r1] - ldrh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 17 - negs r0, r0 - adds r1, 0x1 - strb r0, [r1] - movs r0, 0 - ldrsb r0, [r1, r0] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - ldrb r1, [r4, 0xC] - lsls r1, 28 - lsrs r1, 24 - ldrb r3, [r5, 0x5] - movs r2, 0xF - adds r0, r2, 0 - ands r0, r3 - orrs r0, r1 - strb r0, [r5, 0x5] - adds r3, r5, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - mov r0, r10 - strh r0, [r5, 0x2E] - strh r7, [r5, 0x30] - ldrb r1, [r4, 0xC] - ands r2, r1 - cmp r2, 0xA - bne _0805EAE4 - ldrh r0, [r4, 0x2] - lsls r1, 28 - lsrs r1, 28 - bl LoadSpecialObjectReflectionPalette -_0805EAE4: - ldr r1, [sp, 0x1C] - cmp r1, 0 - beq _0805EB00 - adds r0, r5, 0 - bl SetSubspriteTables - adds r2, r5, 0 - adds r2, 0x42 - ldrb r0, [r2] - movs r1, 0x3F - ands r1, r0 - movs r0, 0x80 - orrs r1, r0 - strb r1, [r2] -_0805EB00: - adds r0, r5, 0 - mov r1, r9 - bl InitObjectPriorityByZCoord - mov r0, r9 - adds r1, r5, 0 - movs r2, 0x1 - bl SetObjectSubpriorityByZCoord - ldr r0, [sp, 0x20] - bl ObjectEventDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim -_0805EB24: - adds r0, r6, 0 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805EB38: .4byte UpdateObjectEventSpriteSubpriorityAndVisibility -_0805EB3C: .4byte 0x0000ffff -_0805EB40: .4byte gSprites - thumb_func_end sprite_new - - thumb_func_start sub_805EB44 -sub_805EB44: @ 805EB44 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x1C - adds r6, r0, 0 - adds r4, r2, 0 - adds r5, r3, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - bl GetObjectEventGraphicsInfo - adds r7, r0, 0 - ldr r1, _0805EC24 @ =SpriteCallbackDummy - add r3, sp, 0x18 - adds r0, r6, 0 - mov r2, sp - bl MakeObjectTemplateFromObjectEventGraphicsInfo - mov r1, sp - ldr r2, _0805EC28 @ =0x0000ffff - adds r0, r2, 0 - strh r0, [r1, 0x2] - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - mov r0, sp - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x40 - beq _0805EC14 - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - ldr r1, _0805EC2C @ =gSprites - adds r4, r0, r1 - ldrh r0, [r7, 0xA] - lsls r0, 16 - asrs r0, 17 - negs r0, r0 - adds r1, r4, 0 - adds r1, 0x29 - strb r0, [r1] - movs r0, 0 - ldrsb r0, [r1, r0] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrb r1, [r7, 0xC] - lsls r1, 28 - lsrs r1, 24 - ldrb r3, [r4, 0x5] - movs r2, 0xF - adds r0, r2, 0 - ands r0, r3 - orrs r0, r1 - strb r0, [r4, 0x5] - mov r0, r8 - strh r0, [r4, 0x2E] - ldrb r1, [r7, 0xC] - ands r2, r1 - cmp r2, 0xA - bne _0805EBE6 - ldrh r0, [r7, 0x2] - lsls r1, 28 - lsrs r1, 28 - bl LoadSpecialObjectReflectionPalette -_0805EBE6: - ldr r1, [sp, 0x18] - cmp r1, 0 - beq _0805EC02 - adds r0, r4, 0 - bl SetSubspriteTables - adds r2, r4, 0 - adds r2, 0x42 - ldrb r0, [r2] - movs r1, 0x3F - ands r1, r0 - movs r0, 0x80 - orrs r1, r0 - strb r1, [r2] -_0805EC02: - movs r0, 0x1 - bl ObjectEventDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_0805EC14: - adds r0, r5, 0 - add sp, 0x1C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805EC24: .4byte SpriteCallbackDummy -_0805EC28: .4byte 0x0000ffff -_0805EC2C: .4byte gSprites - thumb_func_end sub_805EB44 - - thumb_func_start sub_805EC30 -sub_805EC30: @ 805EC30 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x4] - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x8] - ldr r0, _0805ED08 @ =gMapHeader - ldr r3, [r0, 0x4] - cmp r3, 0 - beq _0805ECF8 - ldr r7, _0805ED0C @ =gSaveBlock1Ptr - ldr r2, [r7] - ldrh r1, [r2] - subs r0, r1, 0x2 - lsls r0, 16 - lsrs r4, r0, 16 - adds r1, 0x11 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0xC] - ldrh r1, [r2, 0x2] - adds r0, r1, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - ldrb r3, [r3] - str r3, [sp, 0x10] - movs r5, 0 - cmp r5, r3 - bcs _0805ECF8 - lsls r0, r1, 16 - asrs r0, 16 - mov r9, r0 - lsls r0, r4, 16 - asrs r0, 16 - mov r8, r0 -_0805EC86: - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 3 - movs r1, 0x8E - lsls r1, 4 - adds r0, r1 - ldr r1, [r7] - adds r4, r1, r0 - ldrh r0, [r4, 0x4] - adds r0, 0x7 - lsls r0, 16 - lsrs r2, r0, 16 - ldrh r0, [r4, 0x6] - adds r0, 0x7 - lsls r0, 16 - asrs r1, r0, 16 - cmp r9, r1 - bgt _0805ECEC - mov r3, r10 - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, r1 - blt _0805ECEC - lsls r0, r2, 16 - asrs r1, r0, 16 - cmp r8, r1 - bgt _0805ECEC - ldr r6, [sp, 0xC] - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, r1 - blt _0805ECEC - ldrh r0, [r4, 0x14] - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _0805ECEC - ldr r0, [r7] - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - ldr r0, [sp, 0x4] - lsls r3, r0, 16 - ldr r6, [sp, 0x8] - lsls r0, r6, 16 - asrs r0, 16 - str r0, [sp] - adds r0, r4, 0 - asrs r3, 16 - bl SpawnObjectEvent -_0805ECEC: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [sp, 0x10] - cmp r5, r0 - bcc _0805EC86 -_0805ECF8: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805ED08: .4byte gMapHeader -_0805ED0C: .4byte gSaveBlock1Ptr - thumb_func_end sub_805EC30 - - thumb_func_start RemoveObjectEventsOutsideView -RemoveObjectEventsOutsideView: @ 805ED10 - push {r4-r6,lr} - movs r3, 0 - ldr r6, _0805ED64 @ =gUnknown_2031DEC -_0805ED16: - movs r2, 0 - movs r4, 0 - adds r5, r3, 0x1 -_0805ED1C: - lsls r0, r2, 2 - adds r1, r0, r6 - ldrb r0, [r1] - cmp r0, 0 - beq _0805ED2E - ldrb r1, [r1, 0x2] - cmp r3, r1 - bne _0805ED2E - movs r4, 0x1 -_0805ED2E: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _0805ED1C - cmp r4, 0 - bne _0805ED56 - lsls r0, r3, 3 - adds r0, r3 - lsls r0, 2 - ldr r1, _0805ED68 @ =gObjectEvents - adds r2, r0, r1 - ldr r0, [r2] - ldr r1, _0805ED6C @ =0x00010001 - ands r0, r1 - cmp r0, 0x1 - bne _0805ED56 - adds r0, r2, 0 - bl RemoveObjectEventIfOutsideView -_0805ED56: - lsls r0, r5, 24 - lsrs r3, r0, 24 - cmp r3, 0xF - bls _0805ED16 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805ED64: .4byte gUnknown_2031DEC -_0805ED68: .4byte gObjectEvents -_0805ED6C: .4byte 0x00010001 - thumb_func_end RemoveObjectEventsOutsideView - - thumb_func_start RemoveObjectEventIfOutsideView -RemoveObjectEventIfOutsideView: @ 805ED70 - push {r4-r7,lr} - adds r3, r0, 0 - ldr r0, _0805EDEC @ =gSaveBlock1Ptr - ldr r2, [r0] - ldrh r0, [r2] - subs r1, r0, 0x2 - lsls r1, 16 - adds r0, 0x11 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r4, [r2, 0x2] - adds r0, r4, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r6, r0, 16 - movs r0, 0x10 - ldrsh r2, [r3, r0] - lsrs r7, r1, 16 - asrs r1, 16 - cmp r2, r1 - blt _0805EDB6 - lsls r0, r5, 16 - asrs r0, 16 - cmp r2, r0 - bgt _0805EDB6 - movs r0, 0x12 - ldrsh r1, [r3, r0] - lsls r0, r4, 16 - asrs r0, 16 - cmp r1, r0 - blt _0805EDB6 - lsls r0, r6, 16 - asrs r0, 16 - cmp r1, r0 - ble _0805EDE4 -_0805EDB6: - movs r0, 0xC - ldrsh r1, [r3, r0] - lsls r0, r7, 16 - asrs r0, 16 - cmp r1, r0 - blt _0805EDDE - lsls r0, r5, 16 - asrs r0, 16 - cmp r1, r0 - bgt _0805EDDE - movs r0, 0xE - ldrsh r1, [r3, r0] - lsls r0, r4, 16 - asrs r0, 16 - cmp r1, r0 - blt _0805EDDE - lsls r0, r6, 16 - asrs r0, 16 - cmp r1, r0 - ble _0805EDE4 -_0805EDDE: - adds r0, r3, 0 - bl RemoveObjectEvent -_0805EDE4: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805EDEC: .4byte gSaveBlock1Ptr - thumb_func_end RemoveObjectEventIfOutsideView - - thumb_func_start sub_805EDF0 -sub_805EDF0: @ 805EDF0 - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - bl ClearPlayerAvatarInfo - movs r6, 0 - ldr r7, _0805EE38 @ =gObjectEvents - lsls r4, 16 - lsls r5, 16 -_0805EE0A: - lsls r0, r6, 3 - adds r0, r6 - lsls r0, 2 - adds r0, r7 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _0805EE24 - adds r0, r6, 0 - asrs r1, r4, 16 - asrs r2, r5, 16 - bl sub_805EE3C -_0805EE24: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xF - bls _0805EE0A - bl sub_805DE8C - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805EE38: .4byte gObjectEvents - thumb_func_end sub_805EDF0 - - thumb_func_start sub_805EE3C -sub_805EE3C: @ 805EE3C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - lsls r2, 16 - lsrs r2, 16 - mov r10, r2 - movs r7, 0 - ldr r2, _0805EFE0 @ =gUnknown_2031DEC -_0805EE5E: - lsls r0, r7, 2 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _0805EE70 - ldrb r1, [r1, 0x2] - cmp r8, r1 - bne _0805EE70 - b _0805EFCE -_0805EE70: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x3 - bls _0805EE5E - mov r1, r8 - lsls r0, r1, 3 - add r0, r8 - lsls r0, 2 - ldr r1, _0805EFE4 @ =gObjectEvents - adds r6, r0, r1 - movs r0, 0 - str r0, [sp, 0x20] - ldrb r0, [r6, 0x5] - bl GetObjectEventGraphicsInfo - adds r5, r0, 0 - ldrh r2, [r5, 0x6] - ldr r1, _0805EFE8 @ =0xffff0000 - add r4, sp, 0x18 - ldr r0, [r4, 0x4] - ands r0, r1 - orrs r0, r2 - str r0, [r4, 0x4] - ldrb r0, [r6, 0x5] - ldrb r1, [r6, 0x6] - add r3, sp, 0x20 - mov r2, sp - bl MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex - str r4, [sp, 0xC] - mov r0, sp - ldr r2, _0805EFEC @ =0x0000ffff - adds r4, r2, 0 - strh r4, [r0, 0x2] - ldrb r1, [r5, 0xC] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _0805EECA - ldrh r0, [r5, 0x2] - lsls r1, 28 - lsrs r1, 28 - bl LoadPlayerObjectReflectionPalette -_0805EECA: - ldrb r0, [r5, 0xC] - lsls r1, r0, 28 - lsrs r0, r1, 28 - cmp r0, 0x9 - bls _0805EEDC - ldrh r0, [r5, 0x2] - lsrs r1, 28 - bl LoadSpecialObjectReflectionPalette -_0805EEDC: - mov r0, sp - strh r4, [r0, 0x2] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x40 - beq _0805EFCE - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, _0805EFF0 @ =gSprites - adds r4, r0, r1 - mov r1, r9 - lsls r0, r1, 16 - asrs r0, 16 - ldrh r2, [r6, 0x10] - adds r0, r2 - lsls r0, 16 - asrs r0, 16 - mov r2, r10 - lsls r1, r2, 16 - asrs r1, 16 - ldrh r2, [r6, 0x12] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - bl sub_8063AD4 - ldrh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 17 - negs r0, r0 - adds r1, r4, 0 - adds r1, 0x28 - strb r0, [r1] - ldrh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 17 - negs r0, r0 - adds r2, r4, 0 - adds r2, 0x29 - strb r0, [r2] - ldrh r0, [r4, 0x20] - adds r0, 0x8 - strh r0, [r4, 0x20] - ldrh r1, [r4, 0x22] - adds r1, 0x10 - movs r0, 0 - ldrsb r0, [r2, r0] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, [r5, 0x1C] - str r0, [r4, 0xC] - ldrb r0, [r6, 0x6] - cmp r0, 0xB - bne _0805EF6A - mov r0, r8 - adds r1, r7, 0 - bl SetPlayerAvatarObjectEventIdAndObjectId - bl CreateWarpArrowSprite - strb r0, [r6, 0x1B] -_0805EF6A: - ldr r1, [sp, 0x20] - cmp r1, 0 - beq _0805EF76 - adds r0, r4, 0 - bl SetSubspriteTables -_0805EF76: - ldrb r1, [r5, 0xC] - lsls r1, 28 - lsrs r1, 24 - ldrb r2, [r4, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - mov r0, r8 - strh r0, [r4, 0x2E] - strb r7, [r6, 0x4] - ldrb r0, [r6, 0x1] - lsls r0, 27 - cmp r0, 0 - blt _0805EFBC - ldrb r0, [r6, 0x6] - cmp r0, 0xB - beq _0805EFBC - ldrb r0, [r6, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl ObjectEventDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_0805EFBC: - adds r0, r6, 0 - bl sub_805EFF4 - ldrb r0, [r6, 0xB] - lsrs r0, 4 - adds r1, r4, 0 - movs r2, 0x1 - bl SetObjectSubpriorityByZCoord -_0805EFCE: - 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 -_0805EFE0: .4byte gUnknown_2031DEC -_0805EFE4: .4byte gObjectEvents -_0805EFE8: .4byte 0xffff0000 -_0805EFEC: .4byte 0x0000ffff -_0805EFF0: .4byte gSprites - thumb_func_end sub_805EE3C - - thumb_func_start sub_805EFF4 -sub_805EFF4: @ 805EFF4 - push {lr} - ldrb r2, [r0] - movs r3, 0x3 - negs r3, r3 - adds r1, r3, 0 - ands r1, r2 - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldrb r2, [r0, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - ands r1, r3 - movs r2, 0x5 - negs r2, r2 - ands r1, r2 - subs r2, 0x4 - ands r1, r2 - subs r2, 0x8 - ands r1, r2 - subs r2, 0x10 - ands r1, r2 - strb r1, [r0, 0x2] - bl ObjectEventClearAnim - pop {r0} - bx r0 - thumb_func_end sub_805EFF4 - - thumb_func_start SetPlayerAvatarObjectEventIdAndObjectId -SetPlayerAvatarObjectEventIdAndObjectId: @ 805F02C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0805F058 @ =gPlayerAvatar - strb r0, [r5, 0x5] - strb r1, [r5, 0x4] - ldr r1, _0805F05C @ =gObjectEvents - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - adds r4, r1 - ldrb r0, [r4, 0x5] - bl sub_805C824 - strb r0, [r5, 0x7] - ldrb r0, [r4, 0x5] - movs r1, 0x20 - bl SetPlayerAvatarExtraStateTransition - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805F058: .4byte gPlayerAvatar -_0805F05C: .4byte gObjectEvents - thumb_func_end SetPlayerAvatarObjectEventIdAndObjectId - - thumb_func_start ObjectEventSetGraphicsId -ObjectEventSetGraphicsId: @ 805F060 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r6, r0, 0 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - adds r0, r1, 0 - bl GetObjectEventGraphicsInfo - adds r5, r0, 0 - ldrb r1, [r6, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805F1CC @ =gSprites - adds r4, r0, r1 - ldrb r1, [r5, 0xC] - movs r0, 0xF - mov r8, r0 - ands r0, r1 - cmp r0, 0 - bne _0805F09E - ldrh r0, [r5, 0x2] - lsls r1, 28 - lsrs r1, 28 - bl PatchObjectPalette -_0805F09E: - ldrb r1, [r5, 0xC] - mov r0, r8 - ands r0, r1 - cmp r0, 0xA - bne _0805F0B2 - ldrh r0, [r5, 0x2] - lsls r1, 28 - lsrs r1, 28 - bl LoadSpecialObjectReflectionPalette -_0805F0B2: - ldr r0, [r4, 0xC] - ldrh r0, [r0, 0x4] - lsrs r0, 5 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - adds r7, r4, 0 - adds r7, 0x3F - ldrb r1, [r7] - movs r2, 0x40 - mov r9, r2 - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _0805F0D6 - adds r0, r4, 0 - bl sub_80075C0 -_0805F0D6: - ldr r0, [r5, 0x10] - ldrb r2, [r0, 0x1] - lsrs r2, 6 - lsls r2, 6 - ldrb r3, [r4, 0x1] - movs r1, 0x3F - adds r0, r1, 0 - ands r0, r3 - orrs r0, r2 - strb r0, [r4, 0x1] - ldr r0, [r5, 0x10] - ldrb r0, [r0, 0x3] - lsrs r0, 6 - lsls r0, 6 - ldrb r2, [r4, 0x3] - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x3] - ldr r3, [r5, 0x1C] - str r3, [r4, 0xC] - ldr r0, [r5, 0x18] - str r0, [r4, 0x8] - ldr r0, [r5, 0x14] - str r0, [r4, 0x18] - ldrb r1, [r5, 0xC] - lsls r1, 28 - lsrs r1, 24 - ldrb r2, [r4, 0x5] - mov r0, r8 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - ldrb r1, [r7] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _0805F152 - ldrh r0, [r3, 0x4] - lsrs r0, 5 - lsls r0, 24 - lsrs r0, 24 - bl AllocSpriteTiles - lsls r0, 16 - asrs r2, r0, 16 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - bne _0805F142 - mov r0, r10 - bl AllocSpriteTiles - lsls r0, 16 - asrs r2, r0, 16 -_0805F142: - ldr r1, _0805F1D0 @ =0x000003ff - adds r0, r1, 0 - ands r2, r0 - ldrh r1, [r4, 0x4] - ldr r0, _0805F1D4 @ =0xfffffc00 - ands r0, r1 - orrs r0, r2 - strh r0, [r4, 0x4] -_0805F152: - ldrb r1, [r5, 0xC] - lsls r1, 25 - lsrs r1, 31 - lsls r1, 4 - ldrb r2, [r6, 0x1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r6, 0x1] - mov r2, sp - ldrb r2, [r2] - strb r2, [r6, 0x5] - movs r1, 0x10 - ldrsh r0, [r6, r1] - movs r2, 0x12 - ldrsh r1, [r6, r2] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - bl SetSpritePosToMapCoords - ldrh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 17 - negs r0, r0 - adds r1, r4, 0 - adds r1, 0x28 - strb r0, [r1] - ldrh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 17 - negs r0, r0 - adds r2, r4, 0 - adds r2, 0x29 - strb r0, [r2] - ldrh r0, [r4, 0x20] - adds r0, 0x8 - strh r0, [r4, 0x20] - ldrh r1, [r4, 0x22] - adds r1, 0x10 - movs r0, 0 - ldrsb r0, [r2, r0] - adds r0, r1 - strh r0, [r4, 0x22] - ldrb r0, [r6, 0x1] - lsrs r0, 7 - cmp r0, 0 - beq _0805F1BA - bl CameraObjectReset1 -_0805F1BA: - 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 -_0805F1CC: .4byte gSprites -_0805F1D0: .4byte 0x000003ff -_0805F1D4: .4byte 0xfffffc00 - thumb_func_end ObjectEventSetGraphicsId - - thumb_func_start ObjectEventSetGraphicsIdByLocalIdAndMap -ObjectEventSetGraphicsIdByLocalIdAndMap: @ 805F1D8 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r4, r3, 24 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0805F20C - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805F214 @ =gObjectEvents - adds r0, r1 - adds r1, r4, 0 - bl ObjectEventSetGraphicsId -_0805F20C: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805F214: .4byte gObjectEvents - thumb_func_end ObjectEventSetGraphicsIdByLocalIdAndMap - - thumb_func_start ObjectEventTurn -ObjectEventTurn: @ 805F218 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 24 - lsrs r1, 24 - bl ObjectEventSetDirection - ldrb r0, [r6, 0x1] - lsls r0, 27 - cmp r0, 0 - blt _0805F25E - ldrb r0, [r6, 0x4] - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r5, _0805F264 @ =gSprites - adds r4, r5 - ldrb r0, [r6, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl ObjectEventDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldrb r1, [r6, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0 - bl SeekSpriteAnim -_0805F25E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805F264: .4byte gSprites - thumb_func_end ObjectEventTurn - - thumb_func_start ObjectEventTurnByLocalIdAndMap -ObjectEventTurnByLocalIdAndMap: @ 805F268 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r4, r3, 24 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0805F29C - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805F2A4 @ =gObjectEvents - adds r0, r1 - adds r1, r4, 0 - bl ObjectEventTurn -_0805F29C: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805F2A4: .4byte gObjectEvents - thumb_func_end ObjectEventTurnByLocalIdAndMap - - thumb_func_start PlayerObjectTurn -PlayerObjectTurn: @ 805F2A8 - push {lr} - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0x5] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805F2C4 @ =gObjectEvents - adds r0, r2 - bl ObjectEventTurn - pop {r0} - bx r0 - .align 2, 0 -_0805F2C4: .4byte gObjectEvents - thumb_func_end PlayerObjectTurn - - thumb_func_start GetObjectEventGraphicsInfo -GetObjectEventGraphicsInfo: @ 805F2C8 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xEF - bls _0805F2E0 - adds r0, r1, 0 - adds r0, 0x10 - lsls r0, 24 - lsrs r0, 24 - bl VarGetObjectEventGraphicsId - adds r1, r0, 0 -_0805F2E0: - cmp r1, 0x97 - bls _0805F2E6 - movs r1, 0x10 -_0805F2E6: - ldr r0, _0805F2F4 @ =gObjectEventGraphicsInfoPointers - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - pop {r1} - bx r1 - .align 2, 0 -_0805F2F4: .4byte gObjectEventGraphicsInfoPointers - thumb_func_end GetObjectEventGraphicsInfo - - thumb_func_start ObjectEventHandleDynamicGraphicsId -ObjectEventHandleDynamicGraphicsId: @ 805F2F8 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4, 0x5] - cmp r0, 0xEF - bls _0805F30E - adds r0, 0x10 - lsls r0, 24 - lsrs r0, 24 - bl VarGetObjectEventGraphicsId - strb r0, [r4, 0x5] -_0805F30E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end ObjectEventHandleDynamicGraphicsId - - thumb_func_start npc_by_local_id_and_map_set_field_1_bit_x20 -npc_by_local_id_and_map_set_field_1_bit_x20: @ 805F314 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r4, r3, 24 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0805F356 - ldr r2, _0805F360 @ =gObjectEvents - mov r0, sp - ldrb r0, [r0] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x1 - adds r2, r4, 0 - ands r2, r0 - lsls r2, 5 - ldrb r3, [r1, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x1] -_0805F356: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805F360: .4byte gObjectEvents - thumb_func_end npc_by_local_id_and_map_set_field_1_bit_x20 - - thumb_func_start ObjectEventGetLocalIdAndMap -ObjectEventGetLocalIdAndMap: @ 805F364 - push {r4,lr} - ldrb r4, [r0, 0x8] - strb r4, [r1] - ldrb r1, [r0, 0x9] - strb r1, [r2] - ldrb r0, [r0, 0xA] - strb r0, [r3] - pop {r4} - pop {r0} - bx r0 - thumb_func_end ObjectEventGetLocalIdAndMap - - thumb_func_start sub_805F378 -sub_805F378: @ 805F378 - push {lr} - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl GetObjectEventIdByXY - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x10 - beq _0805F3A0 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805F3A4 @ =gObjectEvents - adds r0, r1 - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_0805F3A0: - pop {r0} - bx r0 - .align 2, 0 -_0805F3A4: .4byte gObjectEvents - thumb_func_end sub_805F378 - - thumb_func_start sub_805F3A8 -sub_805F3A8: @ 805F3A8 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r4, r3, 24 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0805F3EE - mov r0, sp - ldrb r0, [r0] - lsls r2, r0, 3 - adds r2, r0 - lsls r2, 2 - ldr r0, _0805F3F8 @ =gObjectEvents - adds r2, r0 - ldrb r1, [r2, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805F3FC @ =gSprites - adds r0, r1 - ldrb r1, [r2, 0x3] - movs r3, 0x4 - orrs r1, r3 - strb r1, [r2, 0x3] - adds r0, 0x43 - strb r4, [r0] -_0805F3EE: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805F3F8: .4byte gObjectEvents -_0805F3FC: .4byte gSprites - thumb_func_end sub_805F3A8 - - thumb_func_start sub_805F400 -sub_805F400: @ 805F400 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0805F43C - mov r0, sp - ldrb r0, [r0] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _0805F444 @ =gObjectEvents - adds r1, r0 - ldrb r2, [r1, 0x3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x3] - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] -_0805F43C: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0805F444: .4byte gObjectEvents - thumb_func_end sub_805F400 - - thumb_func_start sub_805F448 -sub_805F448: @ 805F448 - push {r4,r5,lr} - sub sp, 0x4 - ldr r4, [sp, 0x10] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 16 - lsrs r5, r3, 16 - lsls r4, 16 - lsrs r4, 16 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0805F48C - ldr r2, _0805F494 @ =gObjectEvents - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805F498 @ =gSprites - adds r0, r1 - strh r5, [r0, 0x24] - strh r4, [r0, 0x26] -_0805F48C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805F494: .4byte gObjectEvents -_0805F498: .4byte gSprites - thumb_func_end sub_805F448 - - thumb_func_start gpu_pal_allocator_reset__manage_upper_four -gpu_pal_allocator_reset__manage_upper_four: @ 805F49C - push {lr} - bl FreeAllSpritePalettes - ldr r1, _0805F4AC @ =gReservedSpritePaletteCount - movs r0, 0xC - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0805F4AC: .4byte gReservedSpritePaletteCount - thumb_func_end gpu_pal_allocator_reset__manage_upper_four - - thumb_func_start sub_805F4B0 -sub_805F4B0: @ 805F4B0 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl FindObjectEventPaletteIndexByTag - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _0805F4D4 @ =0x000011ff - cmp r1, r0 - beq _0805F4CE - lsls r0, r1, 3 - ldr r1, _0805F4D8 @ =gObjectEventSpritePalettes - adds r0, r1 - bl sub_805F510 -_0805F4CE: - pop {r0} - bx r0 - .align 2, 0 -_0805F4D4: .4byte 0x000011ff -_0805F4D8: .4byte gObjectEventSpritePalettes - thumb_func_end sub_805F4B0 - - thumb_func_start sub_805F4DC -sub_805F4DC: @ 805F4DC - push {r4-r6,lr} - adds r5, r0, 0 - movs r4, 0 - ldrh r0, [r5] - ldr r1, _0805F50C @ =0x000011ff - cmp r0, r1 - beq _0805F506 - adds r6, r1, 0 -_0805F4EC: - lsls r0, r4, 1 - adds r0, r5 - ldrh r0, [r0] - bl sub_805F4B0 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 1 - adds r0, r5 - ldrh r0, [r0] - cmp r0, r6 - bne _0805F4EC -_0805F506: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805F50C: .4byte 0x000011ff - thumb_func_end sub_805F4DC - - thumb_func_start sub_805F510 -sub_805F510: @ 805F510 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x4] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0805F52E - adds r0, r4, 0 - bl LoadSpritePalette - lsls r0, 24 - lsrs r0, 24 - b _0805F530 -_0805F52E: - movs r0, 0xFF -_0805F530: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805F510 - - thumb_func_start PatchObjectPalette -PatchObjectPalette: @ 805F538 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 16 - lsrs r0, 16 - lsls r4, 24 - lsrs r4, 24 - bl FindObjectEventPaletteIndexByTag - lsls r0, 24 - ldr r1, _0805F570 @ =gObjectEventSpritePalettes - lsrs r0, 21 - adds r0, r1 - ldr r0, [r0] - lsls r1, r4, 20 - movs r2, 0x80 - lsls r2, 17 - adds r1, r2 - lsrs r1, 16 - movs r2, 0x20 - bl LoadPalette - adds r0, r4, 0 - bl sub_8083598 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805F570: .4byte gObjectEventSpritePalettes - thumb_func_end PatchObjectPalette - - thumb_func_start pal_patch_for_npc_range -pal_patch_for_npc_range: @ 805F574 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - cmp r4, r6 - bcs _0805F598 -_0805F584: - ldrh r0, [r5] - adds r1, r4, 0 - bl PatchObjectPalette - adds r5, 0x2 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r6 - bcc _0805F584 -_0805F598: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end pal_patch_for_npc_range - - thumb_func_start FindObjectEventPaletteIndexByTag -FindObjectEventPaletteIndexByTag: @ 805F5A0 - push {r4-r6,lr} - lsls r0, 16 - lsrs r5, r0, 16 - movs r2, 0 - ldr r0, _0805F5C8 @ =gObjectEventSpritePalettes - ldrh r1, [r0, 0x4] - ldr r3, _0805F5CC @ =0x000011ff - adds r4, r0, 0 - cmp r1, r3 - beq _0805F5E0 - adds r6, r4, 0 - adds r1, r3, 0 -_0805F5B8: - lsls r0, r2, 3 - adds r0, r6 - ldrh r0, [r0, 0x4] - cmp r0, r5 - bne _0805F5D0 - adds r0, r2, 0 - b _0805F5E2 - .align 2, 0 -_0805F5C8: .4byte gObjectEventSpritePalettes -_0805F5CC: .4byte 0x000011ff -_0805F5D0: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 3 - adds r0, r4 - ldrh r0, [r0, 0x4] - cmp r0, r1 - bne _0805F5B8 -_0805F5E0: - movs r0, 0xFF -_0805F5E2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end FindObjectEventPaletteIndexByTag - - thumb_func_start LoadPlayerObjectReflectionPalette -LoadPlayerObjectReflectionPalette: @ 805F5E8 - push {r4-r6,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 24 - lsrs r5, r1, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl PatchObjectPalette - movs r3, 0 - ldr r1, _0805F630 @ =gUnknown_83A5208 - ldrh r0, [r1] - ldr r2, _0805F634 @ =0x000011ff - cmp r0, r2 - beq _0805F650 - ldr r0, _0805F638 @ =gReflectionEffectPaletteMap - adds r5, r0 - adds r6, r2, 0 -_0805F60C: - lsls r2, r3, 3 - adds r0, r2, r1 - ldrh r0, [r0] - cmp r0, r4 - bne _0805F640 - adds r1, 0x4 - adds r1, r2, r1 - ldr r0, _0805F63C @ =gUnknown_2037098 - ldrb r0, [r0] - ldr r1, [r1] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - ldrb r1, [r5] - bl PatchObjectPalette - b _0805F650 - .align 2, 0 -_0805F630: .4byte gUnknown_83A5208 -_0805F634: .4byte 0x000011ff -_0805F638: .4byte gReflectionEffectPaletteMap -_0805F63C: .4byte gUnknown_2037098 -_0805F640: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 3 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r6 - bne _0805F60C -_0805F650: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end LoadPlayerObjectReflectionPalette - - thumb_func_start LoadSpecialObjectReflectionPalette -LoadSpecialObjectReflectionPalette: @ 805F658 - push {r4-r6,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _0805F6A4 @ =gUnknown_203709A - strh r4, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl PatchObjectPalette - movs r3, 0 - ldr r1, _0805F6A8 @ =gUnknown_83A5278 - ldrh r0, [r1] - ldr r2, _0805F6AC @ =0x000011ff - cmp r0, r2 - beq _0805F6C8 - ldr r0, _0805F6B0 @ =gReflectionEffectPaletteMap - adds r5, r0 - adds r6, r2, 0 -_0805F680: - lsls r2, r3, 3 - adds r0, r2, r1 - ldrh r0, [r0] - cmp r0, r4 - bne _0805F6B8 - adds r1, 0x4 - adds r1, r2, r1 - ldr r0, _0805F6B4 @ =gUnknown_2037098 - ldrb r0, [r0] - ldr r1, [r1] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - ldrb r1, [r5] - bl PatchObjectPalette - b _0805F6C8 - .align 2, 0 -_0805F6A4: .4byte gUnknown_203709A -_0805F6A8: .4byte gUnknown_83A5278 -_0805F6AC: .4byte 0x000011ff -_0805F6B0: .4byte gReflectionEffectPaletteMap -_0805F6B4: .4byte gUnknown_2037098 -_0805F6B8: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 3 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r6 - bne _0805F680 -_0805F6C8: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end LoadSpecialObjectReflectionPalette - - thumb_func_start sub_805F6D0 -sub_805F6D0: @ 805F6D0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805F6DC @ =gReflectionEffectPaletteMap - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805F6DC: .4byte gReflectionEffectPaletteMap - thumb_func_end sub_805F6D0 - - thumb_func_start unref_sub_808EAC4 -unref_sub_808EAC4: @ 805F6E0 - push {r4,lr} - ldrh r3, [r0, 0x10] - strh r3, [r0, 0x14] - ldrh r4, [r0, 0x12] - strh r4, [r0, 0x16] - lsls r1, 16 - asrs r1, 16 - adds r1, r3 - strh r1, [r0, 0x10] - lsls r2, 16 - asrs r2, 16 - adds r2, r4 - strh r2, [r0, 0x12] - pop {r4} - pop {r0} - bx r0 - thumb_func_end unref_sub_808EAC4 - - thumb_func_start npc_coords_shift -npc_coords_shift: @ 805F700 - ldrh r3, [r0, 0x10] - strh r3, [r0, 0x14] - ldrh r3, [r0, 0x12] - strh r3, [r0, 0x16] - strh r1, [r0, 0x10] - strh r2, [r0, 0x12] - bx lr - thumb_func_end npc_coords_shift - - thumb_func_start npc_coords_set -npc_coords_set: @ 805F710 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r2, 16 - strh r1, [r0, 0x14] - strh r2, [r0, 0x16] - strh r1, [r0, 0x10] - strh r2, [r0, 0x12] - bx lr - thumb_func_end npc_coords_set - - thumb_func_start sub_805F724 -sub_805F724: @ 805F724 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - ldrb r1, [r6, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805F7C0 @ =gSprites - adds r7, r0, r1 - ldrb r0, [r6, 0x5] - bl GetObjectEventGraphicsInfo - mov r8, r0 - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl npc_coords_set - movs r1, 0x10 - ldrsh r0, [r6, r1] - movs r2, 0x12 - ldrsh r1, [r6, r2] - adds r2, r7, 0 - adds r2, 0x20 - adds r3, r7, 0 - adds r3, 0x22 - bl SetSpritePosToMapCoords - mov r1, r8 - ldrh r0, [r1, 0x8] - lsls r0, 16 - asrs r0, 17 - negs r0, r0 - adds r1, r7, 0 - adds r1, 0x28 - strb r0, [r1] - mov r2, r8 - ldrh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 17 - negs r0, r0 - adds r2, r7, 0 - adds r2, 0x29 - strb r0, [r2] - ldrh r0, [r7, 0x20] - adds r0, 0x8 - strh r0, [r7, 0x20] - ldrh r1, [r7, 0x22] - adds r1, 0x10 - movs r0, 0 - ldrsb r0, [r2, r0] - adds r0, r1 - strh r0, [r7, 0x22] - adds r0, r6, 0 - bl sub_805EFF4 - ldrb r0, [r6, 0x1] - lsrs r0, 7 - cmp r0, 0 - beq _0805F7B6 - bl CameraObjectReset1 -_0805F7B6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805F7C0: .4byte gSprites - thumb_func_end sub_805F724 - - thumb_func_start sub_805F7C4 -sub_805F7C4: @ 805F7C4 - push {r4,r5,lr} - sub sp, 0x4 - ldr r4, [sp, 0x10] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 16 - lsrs r5, r3, 16 - lsls r4, 16 - lsrs r4, 16 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0805F80C - lsls r1, r5, 16 - lsls r2, r4, 16 - mov r0, sp - ldrb r3, [r0] - lsls r0, r3, 3 - adds r0, r3 - lsls r0, 2 - ldr r3, _0805F814 @ =gObjectEvents - adds r0, r3 - movs r3, 0xE0 - lsls r3, 11 - adds r1, r3 - asrs r1, 16 - adds r2, r3 - asrs r2, 16 - bl sub_805F724 -_0805F80C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805F814: .4byte gObjectEvents - thumb_func_end sub_805F7C4 - - thumb_func_start npc_coords_shift_still -npc_coords_shift_still: @ 805F818 - push {lr} - movs r2, 0x10 - ldrsh r1, [r0, r2] - movs r3, 0x12 - ldrsh r2, [r0, r3] - bl npc_coords_shift - pop {r0} - bx r0 - thumb_func_end npc_coords_shift_still - - thumb_func_start UpdateObjectEventCoordsForCameraUpdate -UpdateObjectEventCoordsForCameraUpdate: @ 805F82C - push {r4,r5,lr} - ldr r2, _0805F88C @ =gCamera - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805F884 - movs r3, 0 - ldr r5, _0805F890 @ =gObjectEvents - movs r0, 0x4 - ldrsh r4, [r2, r0] - movs r0, 0x8 - ldrsh r1, [r2, r0] -_0805F846: - lsls r0, r3, 3 - adds r0, r3 - lsls r0, 2 - adds r2, r0, r5 - ldrb r0, [r2] - lsls r0, 31 - cmp r0, 0 - beq _0805F87A - ldrh r0, [r2, 0xC] - subs r0, r4 - strh r0, [r2, 0xC] - ldrh r0, [r2, 0xE] - subs r0, r1 - strh r0, [r2, 0xE] - ldrh r0, [r2, 0x10] - subs r0, r4 - strh r0, [r2, 0x10] - ldrh r0, [r2, 0x12] - subs r0, r1 - strh r0, [r2, 0x12] - ldrh r0, [r2, 0x14] - subs r0, r4 - strh r0, [r2, 0x14] - ldrh r0, [r2, 0x16] - subs r0, r1 - strh r0, [r2, 0x16] -_0805F87A: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xF - bls _0805F846 -_0805F884: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805F88C: .4byte gCamera -_0805F890: .4byte gObjectEvents - thumb_func_end UpdateObjectEventCoordsForCameraUpdate - - thumb_func_start GetObjectEventIdByXYZ -GetObjectEventIdByXYZ: @ 805F894 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r7, r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 24 - lsrs r5, r2, 24 - movs r4, 0 - ldr r0, _0805F8E0 @ =gObjectEvents - mov r8, r0 -_0805F8AC: - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - mov r2, r8 - adds r1, r0, r2 - ldrb r0, [r1] - lsls r0, 31 - cmp r0, 0 - beq _0805F8E4 - movs r2, 0x10 - ldrsh r0, [r1, r2] - cmp r0, r7 - bne _0805F8E4 - movs r2, 0x12 - ldrsh r0, [r1, r2] - cmp r0, r6 - bne _0805F8E4 - adds r0, r1, 0 - adds r1, r5, 0 - bl ObjectEventDoesZCoordMatch - lsls r0, 24 - cmp r0, 0 - beq _0805F8E4 - adds r0, r4, 0 - b _0805F8F0 - .align 2, 0 -_0805F8E0: .4byte gObjectEvents -_0805F8E4: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _0805F8AC - movs r0, 0x10 -_0805F8F0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GetObjectEventIdByXYZ - - thumb_func_start ObjectEventDoesZCoordMatch -ObjectEventDoesZCoordMatch: @ 805F8FC - push {lr} - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0xB] - movs r0, 0xF - ands r0, r2 - cmp r0, 0 - beq _0805F91C - cmp r1, 0 - beq _0805F91C - lsls r0, r2, 28 - lsrs r0, 28 - cmp r0, r1 - beq _0805F91C - movs r0, 0 - b _0805F91E -_0805F91C: - movs r0, 0x1 -_0805F91E: - pop {r1} - bx r1 - thumb_func_end ObjectEventDoesZCoordMatch - - thumb_func_start UpdateObjectEventsForCameraUpdate -UpdateObjectEventsForCameraUpdate: @ 805F924 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - bl UpdateObjectEventCoordsForCameraUpdate - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_805EC30 - bl RemoveObjectEventsOutsideView - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end UpdateObjectEventsForCameraUpdate - - thumb_func_start AddCameraObject -AddCameraObject: @ 805F950 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0805F98C @ =gUnknown_835B944 - movs r1, 0 - movs r2, 0 - movs r3, 0x4 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0805F990 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r2, 0x3E - adds r2, r1 - mov r12, r2 - ldrb r2, [r2] - movs r3, 0x4 - orrs r2, r3 - mov r3, r12 - strb r2, [r3] - strh r4, [r1, 0x2E] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805F98C: .4byte gUnknown_835B944 -_0805F990: .4byte gSprites - thumb_func_end AddCameraObject - - thumb_func_start ObjectCB_CameraObject -ObjectCB_CameraObject: @ 805F994 - push {r4,r5,lr} - sub sp, 0xC - mov r2, sp - ldr r1, _0805F9B8 @ =gUnknown_835B95C - ldm r1!, {r3-r5} - stm r2!, {r3-r5} - movs r2, 0x30 - ldrsh r1, [r0, r2] - lsls r1, 2 - add r1, sp - ldr r1, [r1] - bl _call_via_r1 - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805F9B8: .4byte gUnknown_835B95C - thumb_func_end ObjectCB_CameraObject - - thumb_func_start CameraObject_0 -CameraObject_0: @ 805F9BC - push {lr} - ldr r3, _0805F9F4 @ =gSprites - movs r1, 0x2E - ldrsh r2, [r0, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - ldrh r1, [r1, 0x20] - strh r1, [r0, 0x20] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - ldrh r1, [r1, 0x22] - strh r1, [r0, 0x22] - adds r3, r0, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r3] - movs r1, 0x1 - strh r1, [r0, 0x30] - bl CameraObject_1 - pop {r0} - bx r0 - .align 2, 0 -_0805F9F4: .4byte gSprites - thumb_func_end CameraObject_0 - - thumb_func_start CameraObject_1 -CameraObject_1: @ 805F9F8 - push {r4,r5,lr} - ldr r3, _0805FA2C @ =gSprites - movs r1, 0x2E - ldrsh r2, [r0, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - ldrh r3, [r1, 0x22] - ldrh r2, [r0, 0x20] - ldrh r4, [r1, 0x20] - movs r5, 0x20 - ldrsh r1, [r1, r5] - subs r1, r2 - strh r1, [r0, 0x32] - ldrh r2, [r0, 0x22] - lsls r1, r3, 16 - asrs r1, 16 - subs r1, r2 - strh r1, [r0, 0x34] - strh r4, [r0, 0x20] - strh r3, [r0, 0x22] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805FA2C: .4byte gSprites - thumb_func_end CameraObject_1 - - thumb_func_start CameraObject_2 -CameraObject_2: @ 805FA30 - push {r4,lr} - ldr r4, _0805FA5C @ =gSprites - movs r1, 0x2E - ldrsh r2, [r0, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1, 0x20] - movs r3, 0 - strh r1, [r0, 0x20] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1, 0x22] - strh r1, [r0, 0x22] - strh r3, [r0, 0x32] - strh r3, [r0, 0x34] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805FA5C: .4byte gSprites - thumb_func_end CameraObject_2 - - thumb_func_start FindCameraObject -FindCameraObject: @ 805FA60 - push {r4,r5,lr} - movs r3, 0 - ldr r4, _0805FA8C @ =gSprites - adds r5, r4, 0 - adds r5, 0x1C -_0805FA6A: - lsls r0, r3, 4 - adds r0, r3 - lsls r1, r0, 2 - adds r2, r1, r4 - adds r0, r2, 0 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _0805FA94 - adds r0, r1, r5 - ldr r1, [r0] - ldr r0, _0805FA90 @ =ObjectCB_CameraObject - cmp r1, r0 - bne _0805FA94 - adds r0, r2, 0 - b _0805FAA0 - .align 2, 0 -_0805FA8C: .4byte gSprites -_0805FA90: .4byte ObjectCB_CameraObject -_0805FA94: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3F - bls _0805FA6A - movs r0, 0 -_0805FAA0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end FindCameraObject - - thumb_func_start CameraObjectReset1 -CameraObjectReset1: @ 805FAA8 - push {lr} - bl FindCameraObject - adds r2, r0, 0 - cmp r2, 0 - beq _0805FAC0 - movs r0, 0 - strh r0, [r2, 0x30] - ldr r1, [r2, 0x1C] - adds r0, r2, 0 - bl _call_via_r1 -_0805FAC0: - pop {r0} - bx r0 - thumb_func_end CameraObjectReset1 - - thumb_func_start CameraObjectSetFollowedObjectId -CameraObjectSetFollowedObjectId: @ 805FAC4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl FindCameraObject - cmp r0, 0 - beq _0805FAD8 - strh r4, [r0, 0x2E] - bl CameraObjectReset1 -_0805FAD8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end CameraObjectSetFollowedObjectId - - thumb_func_start CameraObjectGetFollowedObjectId -CameraObjectGetFollowedObjectId: @ 805FAE0 - push {lr} - bl FindCameraObject - cmp r0, 0 - beq _0805FAF2 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r0, 24 - b _0805FAF4 -_0805FAF2: - movs r0, 0x40 -_0805FAF4: - pop {r1} - bx r1 - thumb_func_end CameraObjectGetFollowedObjectId - - thumb_func_start CameraObjectReset2 -CameraObjectReset2: @ 805FAF8 - push {lr} - bl FindCameraObject - movs r1, 0x2 - strh r1, [r0, 0x30] - pop {r0} - bx r0 - thumb_func_end CameraObjectReset2 - - thumb_func_start CopySprite -CopySprite: @ 805FB08 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r12, r0 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - lsls r2, 16 - lsrs r6, r2, 16 - lsls r3, 24 - lsrs r7, r3, 24 - movs r5, 0 - ldr r1, _0805FB50 @ =gSprites -_0805FB22: - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r4, r0, r1 - adds r0, r4, 0 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - bne _0805FB54 - adds r0, r4, 0 - mov r1, r12 - movs r2, 0x44 - bl memcpy - mov r0, r8 - strh r0, [r4, 0x20] - strh r6, [r4, 0x22] - adds r0, r4, 0 - adds r0, 0x43 - strb r7, [r0] - b _0805FB5E - .align 2, 0 -_0805FB50: .4byte gSprites -_0805FB54: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3F - bls _0805FB22 -_0805FB5E: - adds r0, r5, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CopySprite - - thumb_func_start CreateCopySpriteAt -CreateCopySpriteAt: @ 805FB6C - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r12, r0 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - lsls r2, 16 - lsrs r6, r2, 16 - lsls r3, 24 - lsrs r7, r3, 24 - movs r5, 0x3F - ldr r3, _0805FBC0 @ =gSprites - movs r2, 0x1 - negs r2, r2 -_0805FB8A: - lsls r0, r5, 16 - asrs r1, r0, 16 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r3 - adds r0, r4, 0 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - bne _0805FBC4 - adds r0, r4, 0 - mov r1, r12 - movs r2, 0x44 - bl memcpy - mov r0, r8 - strh r0, [r4, 0x20] - strh r6, [r4, 0x22] - adds r0, r4, 0 - adds r0, 0x43 - strb r7, [r0] - lsls r0, r5, 24 - lsrs r0, 24 - b _0805FBD2 - .align 2, 0 -_0805FBC0: .4byte gSprites -_0805FBC4: - subs r0, r1, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - asrs r0, 16 - cmp r0, r2 - bgt _0805FB8A - movs r0, 0x40 -_0805FBD2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CreateCopySpriteAt - - thumb_func_start ObjectEventSetDirection -ObjectEventSetDirection: @ 805FBDC - push {r4,lr} - adds r3, r0, 0 - lsls r1, 24 - lsrs r2, r1, 24 - adds r4, r2, 0 - ldrb r0, [r3, 0x18] - lsls r0, 28 - lsrs r0, 28 - adds r1, r3, 0 - adds r1, 0x20 - strb r0, [r1] - ldrb r0, [r3, 0x1] - lsls r0, 30 - cmp r0, 0 - blt _0805FC0C - movs r0, 0xF - adds r1, r2, 0 - ands r1, r0 - ldrb r2, [r3, 0x18] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x18] -_0805FC0C: - lsls r2, r4, 4 - ldrb r1, [r3, 0x18] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r3, 0x18] - pop {r4} - pop {r0} - bx r0 - thumb_func_end ObjectEventSetDirection - - thumb_func_start GetObjectEventScriptPointerByLocalIdAndMap -GetObjectEventScriptPointerByLocalIdAndMap: @ 805FC20 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - bl GetObjectEventTemplateByLocalIdAndMap - ldr r0, [r0, 0x10] - pop {r1} - bx r1 - thumb_func_end GetObjectEventScriptPointerByLocalIdAndMap - - thumb_func_start GetObjectEventScriptPointerByObjectEventId -GetObjectEventScriptPointerByObjectEventId: @ 805FC38 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FC58 @ =gObjectEvents - lsls r2, r0, 3 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldrb r0, [r2, 0x8] - ldrb r1, [r2, 0x9] - ldrb r2, [r2, 0xA] - bl GetObjectEventScriptPointerByLocalIdAndMap - pop {r1} - bx r1 - .align 2, 0 -_0805FC58: .4byte gObjectEvents - thumb_func_end GetObjectEventScriptPointerByObjectEventId - - thumb_func_start GetObjectEventFlagIdByLocalIdAndMap -GetObjectEventFlagIdByLocalIdAndMap: @ 805FC5C - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - bl GetObjectEventTemplateByLocalIdAndMap - ldrh r0, [r0, 0x14] - pop {r1} - bx r1 - thumb_func_end GetObjectEventFlagIdByLocalIdAndMap - - thumb_func_start GetObjectEventFlagIdByObjectEventId -GetObjectEventFlagIdByObjectEventId: @ 805FC74 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FC98 @ =gObjectEvents - lsls r2, r0, 3 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldrb r0, [r2, 0x8] - ldrb r1, [r2, 0x9] - ldrb r2, [r2, 0xA] - bl GetObjectEventFlagIdByLocalIdAndMap - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_0805FC98: .4byte gObjectEvents - thumb_func_end GetObjectEventFlagIdByObjectEventId - - thumb_func_start sub_805FC9C -sub_805FC9C: @ 805FC9C - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0805FCD0 - ldr r2, _0805FCCC @ =gObjectEvents - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x7] - b _0805FCD2 - .align 2, 0 -_0805FCCC: .4byte gObjectEvents -_0805FCD0: - movs r0, 0xFF -_0805FCD2: - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_805FC9C - - thumb_func_start sub_805FCD8 -sub_805FCD8: @ 805FCD8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - bl GetObjectEventTemplateByLocalIdAndMap - ldrh r0, [r0, 0xC] - pop {r1} - bx r1 - thumb_func_end sub_805FCD8 - - thumb_func_start sub_805FCF0 -sub_805FCF0: @ 805FCF0 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0805FD04 @ =gObjectEvents - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x7] - bx lr - .align 2, 0 -_0805FD04: .4byte gObjectEvents - thumb_func_end sub_805FCF0 - - thumb_func_start sub_805FD08 -sub_805FD08: @ 805FD08 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0805FD3C - ldr r2, _0805FD38 @ =gObjectEvents - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1D] - b _0805FD3E - .align 2, 0 -_0805FD38: .4byte gObjectEvents -_0805FD3C: - movs r0, 0xFF -_0805FD3E: - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_805FD08 - - thumb_func_start ObjectEventGetBerryTreeId -ObjectEventGetBerryTreeId: @ 805FD44 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0805FD58 @ =gObjectEvents - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x1D] - bx lr - .align 2, 0 -_0805FD58: .4byte gObjectEvents - thumb_func_end ObjectEventGetBerryTreeId - - thumb_func_start GetObjectEventTemplateByLocalIdAndMap -GetObjectEventTemplateByLocalIdAndMap: @ 805FD5C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _0805FD8C @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, r3 - bne _0805FD94 - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, r2 - bne _0805FD94 - movs r0, 0x8E - lsls r0, 4 - adds r1, r0 - ldr r0, _0805FD90 @ =gMapHeader - ldr r0, [r0, 0x4] - b _0805FDA0 - .align 2, 0 -_0805FD8C: .4byte gSaveBlock1Ptr -_0805FD90: .4byte gMapHeader -_0805FD94: - adds r0, r2, 0 - adds r1, r3, 0 - bl Overworld_GetMapHeaderByGroupAndId - ldr r0, [r0, 0x4] - ldr r1, [r0, 0x4] -_0805FDA0: - ldrb r2, [r0] - adds r0, r4, 0 - bl FindObjectEventTemplateInArrayByLocalId - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetObjectEventTemplateByLocalIdAndMap - - thumb_func_start FindObjectEventTemplateInArrayByLocalId -FindObjectEventTemplateInArrayByLocalId: @ 805FDB0 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0 - cmp r1, r2 - bcs _0805FDDE -_0805FDC2: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r3, r0, r5 - ldrb r0, [r3] - cmp r0, r4 - bne _0805FDD4 - adds r0, r3, 0 - b _0805FDE0 -_0805FDD4: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r2 - bcc _0805FDC2 -_0805FDDE: - movs r0, 0 -_0805FDE0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end FindObjectEventTemplateInArrayByLocalId - - thumb_func_start sub_805FDE8 -sub_805FDE8: @ 805FDE8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - ldrb r0, [r4, 0x9] - ldr r1, _0805FE0C @ =gSaveBlock1Ptr - ldr r2, [r1] - movs r1, 0x5 - ldrsb r1, [r2, r1] - cmp r0, r1 - bne _0805FE50 - ldrb r1, [r4, 0xA] - movs r0, 0x4 - ldrsb r0, [r2, r0] - cmp r1, r0 - beq _0805FE18 - b _0805FE50 - .align 2, 0 -_0805FE0C: .4byte gSaveBlock1Ptr -_0805FE10: - mov r1, r8 - adds r0, r5, r1 - adds r0, r3, r0 - b _0805FE52 -_0805FE18: - movs r6, 0 - adds r3, r2, 0 - movs r0, 0x8E - lsls r0, 4 - mov r8, r0 - ldrb r0, [r4, 0x8] - mov r12, r0 - mov r0, r8 - adds r2, r3, r0 - movs r5, 0 - adds r7, r1, 0 -_0805FE2E: - ldrb r1, [r2] - cmp r12, r1 - bne _0805FE46 - ldrb r1, [r4, 0x9] - movs r0, 0x5 - ldrsb r0, [r3, r0] - cmp r1, r0 - bne _0805FE46 - movs r0, 0x4 - ldrsb r0, [r3, r0] - cmp r7, r0 - beq _0805FE10 -_0805FE46: - adds r2, 0x18 - adds r5, 0x18 - adds r6, 0x1 - cmp r6, 0x3F - ble _0805FE2E -_0805FE50: - movs r0, 0 -_0805FE52: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805FDE8 - - thumb_func_start OverrideTemplateCoordsForObjectEvent -OverrideTemplateCoordsForObjectEvent: @ 805FE5C - push {r4,lr} - adds r4, r0, 0 - bl sub_805FDE8 - adds r1, r0, 0 - cmp r1, 0 - beq _0805FE76 - ldrh r0, [r4, 0x10] - subs r0, 0x7 - strh r0, [r1, 0x4] - ldrh r0, [r4, 0x12] - subs r0, 0x7 - strh r0, [r1, 0x6] -_0805FE76: - pop {r4} - pop {r0} - bx r0 - thumb_func_end OverrideTemplateCoordsForObjectEvent - - thumb_func_start TryOverrideTemplateCoordsForObjectEvent -TryOverrideTemplateCoordsForObjectEvent: @ 805FE7C - push {r4,lr} - lsls r1, 24 - lsrs r4, r1, 24 - bl sub_805FDE8 - cmp r0, 0 - beq _0805FE8C - strb r4, [r0, 0x9] -_0805FE8C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end TryOverrideTemplateCoordsForObjectEvent - - thumb_func_start sub_805FE94 -sub_805FE94: @ 805FE94 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0805FEC2 - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805FEC8 @ =gObjectEvents - adds r0, r1 - bl OverrideTemplateCoordsForObjectEvent -_0805FEC2: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0805FEC8: .4byte gObjectEvents - thumb_func_end sub_805FE94 - - thumb_func_start npc_paltag_set_load -npc_paltag_set_load: @ 805FECC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl gpu_pal_allocator_reset__manage_upper_four - ldr r1, _0805FF04 @ =gUnknown_203709A - ldr r2, _0805FF08 @ =0x000011ff - adds r0, r2, 0 - strh r0, [r1] - ldr r2, _0805FF0C @ =gUnknown_2037098 - strb r4, [r2] - cmp r4, 0x1 - bne _0805FF18 - ldr r1, _0805FF10 @ =gUnknown_83A5330 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - movs r2, 0x6 - bl pal_patch_for_npc_range - ldr r1, _0805FF14 @ =gReservedSpritePaletteCount - movs r0, 0x8 - strb r0, [r1] - b _0805FF2A - .align 2, 0 -_0805FF04: .4byte gUnknown_203709A -_0805FF08: .4byte 0x000011ff -_0805FF0C: .4byte gUnknown_2037098 -_0805FF10: .4byte gUnknown_83A5330 -_0805FF14: .4byte gReservedSpritePaletteCount -_0805FF18: - ldr r0, _0805FF30 @ =gUnknown_83A5330 - ldrb r1, [r2] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - movs r1, 0 - movs r2, 0xA - bl pal_patch_for_npc_range -_0805FF2A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805FF30: .4byte gUnknown_83A5330 - thumb_func_end npc_paltag_set_load - - thumb_func_start GetObjectPaletteTag -GetObjectPaletteTag: @ 805FF34 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x9 - bhi _0805FF70 - ldr r1, _0805FF50 @ =gUnknown_83A5330 - ldr r0, _0805FF54 @ =gUnknown_2037098 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r0, r2, 1 - b _0805FF64 - .align 2, 0 -_0805FF50: .4byte gUnknown_83A5330 -_0805FF54: .4byte gUnknown_2037098 -_0805FF58: - adds r1, r4, 0x4 - adds r1, r2, r1 - ldr r0, _0805FF6C @ =gUnknown_2037098 - ldrb r0, [r0] - ldr r1, [r1] - lsls r0, 1 -_0805FF64: - adds r0, r1 - ldrh r0, [r0] - b _0805FFA2 - .align 2, 0 -_0805FF6C: .4byte gUnknown_2037098 -_0805FF70: - movs r3, 0 - ldr r0, _0805FFA8 @ =gUnknown_83A5278 - ldrh r1, [r0] - ldr r2, _0805FFAC @ =0x000011ff - adds r4, r0, 0 - cmp r1, r2 - beq _0805FFA0 - adds r6, r4, 0 - ldr r0, _0805FFB0 @ =gUnknown_203709A - ldrh r1, [r0] - adds r5, r2, 0 -_0805FF86: - lsls r2, r3, 3 - adds r0, r2, r6 - ldrh r0, [r0] - cmp r0, r1 - beq _0805FF58 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 3 - adds r0, r4 - ldrh r0, [r0] - cmp r0, r5 - bne _0805FF86 -_0805FFA0: - ldr r0, _0805FFAC @ =0x000011ff -_0805FFA2: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805FFA8: .4byte gUnknown_83A5278 -_0805FFAC: .4byte 0x000011ff -_0805FFB0: .4byte gUnknown_203709A - thumb_func_end GetObjectPaletteTag - - thumb_func_start sub_805FFB4 -sub_805FFB4: @ 805FFB4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805FFD0 @ =gObjectEvents - adds r0, r2 - ldr r2, _0805FFD4 @ =sub_805FFD8 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_0805FFD0: .4byte gObjectEvents -_0805FFD4: .4byte sub_805FFD8 - thumb_func_end sub_805FFB4 - - thumb_func_start sub_805FFD8 -sub_805FFD8: @ 805FFD8 - movs r0, 0 - bx lr - thumb_func_end sub_805FFD8 - - thumb_func_start sub_805FFDC -sub_805FFDC: @ 805FFDC - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805FFF8 @ =gObjectEvents - adds r0, r2 - ldr r2, _0805FFFC @ =sub_8060000 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_0805FFF8: .4byte gObjectEvents -_0805FFFC: .4byte sub_8060000 - thumb_func_end sub_805FFDC - - thumb_func_start sub_8060000 -sub_8060000: @ 8060000 - push {r4,lr} - ldr r3, _0806001C @ =gUnknown_83A6018 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806001C: .4byte gUnknown_83A6018 - thumb_func_end sub_8060000 - - thumb_func_start sub_8060020 -sub_8060020: @ 8060020 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0806003C @ =gObjectEvents - adds r0, r2 - ldr r2, _08060040 @ =sub_8060044 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_0806003C: .4byte gObjectEvents -_08060040: .4byte sub_8060044 - thumb_func_end sub_8060020 - - thumb_func_start sub_8060044 -sub_8060044: @ 8060044 - push {r4,lr} - ldr r3, _08060060 @ =gUnknown_83A6034 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060060: .4byte gUnknown_83A6034 - thumb_func_end sub_8060044 - - thumb_func_start sub_8060064 -sub_8060064: @ 8060064 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060064 - - thumb_func_start sub_8060078 -sub_8060078: @ 8060078 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060078 - - thumb_func_start sub_80600A4 -sub_80600A4: @ 80600A4 - push {r4-r6,lr} - adds r6, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _080600D8 - ldr r5, _080600D4 @ =gUnknown_83A6000 - bl Random - movs r4, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r6, 0 - bl SetObjectEventStepTimer - strh r4, [r6, 0x30] - movs r0, 0x1 - b _080600DA - .align 2, 0 -_080600D4: .4byte gUnknown_83A6000 -_080600D8: - movs r0, 0 -_080600DA: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80600A4 - - thumb_func_start sub_80600E0 -sub_80600E0: @ 80600E0 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _080600F4 - movs r0, 0 - b _080600FA -_080600F4: - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0x1 -_080600FA: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80600E0 - - thumb_func_start sub_8060100 -sub_8060100: @ 8060100 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _08060148 @ =gUnknown_83A6050 - mov r0, sp - movs r2, 0x4 - bl memcpy - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x5 - strh r0, [r6, 0x30] - adds r0, r5, 0 - adds r1, r4, 0 - bl npc_block_way__next_tile - lsls r0, 24 - cmp r0, 0 - beq _0806013E - movs r0, 0x1 - strh r0, [r6, 0x30] -_0806013E: - movs r0, 0x1 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08060148: .4byte gUnknown_83A6050 - thumb_func_end sub_8060100 - - thumb_func_start sub_806014C -sub_806014C: @ 806014C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetWalkNormalMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x6 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806014C - - thumb_func_start sub_806017C -sub_806017C: @ 806017C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl sub_8063F2C - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x6 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806017C - - thumb_func_start sub_80601AC -sub_80601AC: @ 80601AC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _080601CA - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_080601CA: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80601AC - - thumb_func_start ObjectEventIsTrainerAndCloseToPlayer -ObjectEventIsTrainerAndCloseToPlayer: @ 80601D4 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r0, 0x80 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08060240 - ldrb r0, [r5, 0x7] - cmp r0, 0x1 - beq _080601F0 - cmp r0, 0x3 - bne _08060240 -_080601F0: - mov r7, sp - adds r7, 0x2 - mov r0, sp - adds r1, r7, 0 - bl PlayerGetDestCoords - ldrh r2, [r5, 0x10] - ldrh r4, [r5, 0x12] - ldrb r1, [r5, 0x1D] - subs r3, r2, r1 - subs r0, r4, r1 - lsls r0, 16 - lsrs r5, r0, 16 - adds r2, r1, r2 - lsls r2, 16 - lsrs r2, 16 - adds r1, r4 - lsls r1, 16 - lsrs r6, r1, 16 - mov r0, sp - lsls r3, 16 - asrs r3, 16 - movs r1, 0 - ldrsh r4, [r0, r1] - cmp r3, r4 - bgt _08060240 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, r4 - blt _08060240 - lsls r0, r5, 16 - asrs r0, 16 - movs r2, 0 - ldrsh r1, [r7, r2] - cmp r0, r1 - bgt _08060240 - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, r1 - bge _08060244 -_08060240: - movs r0, 0 - b _08060246 -_08060244: - movs r0, 0x1 -_08060246: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end ObjectEventIsTrainerAndCloseToPlayer - - thumb_func_start GetRegularRunningPastFacingDirection -GetRegularRunningPastFacingDirection: @ 8060250 - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r0, r1, 16 - lsls r2, 16 - lsls r3, 16 - cmp r2, r3 - ble _0806026E - movs r2, 0x4 - lsls r0, r4, 16 - cmp r0, 0 - bge _08060278 - movs r2, 0x3 - b _08060278 -_0806026E: - movs r2, 0x1 - lsls r0, 16 - cmp r0, 0 - bge _08060278 - movs r2, 0x2 -_08060278: - adds r0, r2, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetRegularRunningPastFacingDirection - - thumb_func_start GetNorthSouthRunningPastFacingDirection -GetNorthSouthRunningPastFacingDirection: @ 8060280 - push {lr} - movs r0, 0x1 - lsls r1, 16 - cmp r1, 0 - bge _0806028C - movs r0, 0x2 -_0806028C: - pop {r1} - bx r1 - thumb_func_end GetNorthSouthRunningPastFacingDirection - - thumb_func_start GetEastWestRunningPastFacingDirection -GetEastWestRunningPastFacingDirection: @ 8060290 - push {lr} - movs r1, 0x4 - lsls r0, 16 - cmp r0, 0 - bge _0806029C - movs r1, 0x3 -_0806029C: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end GetEastWestRunningPastFacingDirection - - thumb_func_start GetNorthEastRunningPastFacingDirection -GetNorthEastRunningPastFacingDirection: @ 80602A4 - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl GetRegularRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080602E0 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl GetEastWestRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _080602FA - b _080602F8 -_080602E0: - cmp r0, 0x4 - bne _080602FA - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl GetNorthSouthRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080602FA -_080602F8: - movs r0, 0x2 -_080602FA: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GetNorthEastRunningPastFacingDirection - - thumb_func_start GetNorthWestRunningPastFacingDirection -GetNorthWestRunningPastFacingDirection: @ 8060300 - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl GetRegularRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806033C - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl GetEastWestRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _08060356 - b _08060354 -_0806033C: - cmp r0, 0x3 - bne _08060356 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl GetNorthSouthRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08060356 -_08060354: - movs r0, 0x2 -_08060356: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GetNorthWestRunningPastFacingDirection - - thumb_func_start GetSouthEastRunningPastFacingDirection -GetSouthEastRunningPastFacingDirection: @ 806035C - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl GetRegularRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08060398 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl GetEastWestRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _080603B2 - b _080603B0 -_08060398: - cmp r0, 0x4 - bne _080603B2 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl GetNorthSouthRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080603B2 -_080603B0: - movs r0, 0x1 -_080603B2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GetSouthEastRunningPastFacingDirection - - thumb_func_start GetSouthWestRunningPastFacingDirection -GetSouthWestRunningPastFacingDirection: @ 80603B8 - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl GetRegularRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080603F4 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl GetEastWestRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0806040E - b _0806040C -_080603F4: - cmp r0, 0x3 - bne _0806040E - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl GetNorthSouthRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0806040E -_0806040C: - movs r0, 0x1 -_0806040E: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GetSouthWestRunningPastFacingDirection - - thumb_func_start GetNonEastRunningPastFacingDirection -GetNonEastRunningPastFacingDirection: @ 8060414 - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl GetRegularRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _0806044A - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl GetNorthSouthRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 -_0806044A: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GetNonEastRunningPastFacingDirection - - thumb_func_start GetNonWestRunningPastFacingDirection -GetNonWestRunningPastFacingDirection: @ 8060450 - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl GetRegularRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _08060486 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl GetNorthSouthRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 -_08060486: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GetNonWestRunningPastFacingDirection - - thumb_func_start GetNonSouthRunningPastFacingDirection -GetNonSouthRunningPastFacingDirection: @ 806048C - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl GetRegularRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080604C2 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl GetEastWestRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 -_080604C2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GetNonSouthRunningPastFacingDirection - - thumb_func_start GetNonNorthRunningPastFacingDirection -GetNonNorthRunningPastFacingDirection: @ 80604C8 - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl GetRegularRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080604FE - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl GetEastWestRunningPastFacingDirection - lsls r0, 24 - lsrs r0, 24 -_080604FE: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GetNonNorthRunningPastFacingDirection - - thumb_func_start GetRunningPastFacingDirection -GetRunningPastFacingDirection: @ 8060504 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - bne _0806051C - movs r0, 0 - b _08060580 -_0806051C: - mov r5, sp - adds r5, 0x2 - mov r0, sp - adds r1, r5, 0 - bl PlayerGetDestCoords - mov r2, sp - mov r0, sp - ldrh r0, [r0] - ldrh r1, [r4, 0x10] - subs r0, r1 - strh r0, [r2] - ldrh r0, [r5] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r5] - mov r0, sp - ldrh r3, [r5] - ldrh r2, [r0] - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _08060550 - negs r0, r0 - lsls r0, 16 - lsrs r2, r0, 16 -_08060550: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0 - bge _0806055E - negs r0, r0 - lsls r0, 16 - lsrs r3, r0, 16 -_0806055E: - ldr r0, _08060588 @ =gUnknown_83A6054 - lsls r4, r6, 2 - adds r4, r0 - mov r0, sp - movs r6, 0 - ldrsh r0, [r0, r6] - movs r6, 0 - ldrsh r1, [r5, r6] - lsls r2, 16 - asrs r2, 16 - lsls r3, 16 - asrs r3, 16 - ldr r4, [r4] - bl _call_via_r4 - lsls r0, 24 - lsrs r0, 24 -_08060580: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08060588: .4byte gUnknown_83A6054 - thumb_func_end GetRunningPastFacingDirection - - thumb_func_start sub_806058C -sub_806058C: @ 806058C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080605A8 @ =gObjectEvents - adds r0, r2 - ldr r2, _080605AC @ =sub_80605B0 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080605A8: .4byte gObjectEvents -_080605AC: .4byte sub_80605B0 - thumb_func_end sub_806058C - - thumb_func_start sub_80605B0 -sub_80605B0: @ 80605B0 - push {r4,lr} - ldr r3, _080605CC @ =gUnknown_83A6080 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080605CC: .4byte gUnknown_83A6080 - thumb_func_end sub_80605B0 - - thumb_func_start sub_80605D0 -sub_80605D0: @ 80605D0 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80605D0 - - thumb_func_start sub_80605E4 -sub_80605E4: @ 80605E4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80605E4 - - thumb_func_start sub_8060610 -sub_8060610: @ 8060610 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08060646 - ldr r4, _08060650 @ =gUnknown_83A6000 - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl SetObjectEventStepTimer - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_08060646: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08060650: .4byte gUnknown_83A6000 - thumb_func_end sub_8060610 - - thumb_func_start sub_8060654 -sub_8060654: @ 8060654 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _08060672 - adds r0, r4, 0 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0806067A -_08060672: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0806067C -_0806067A: - movs r0, 0 -_0806067C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060654 - - thumb_func_start sub_8060684 -sub_8060684: @ 8060684 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080606C8 @ =gUnknown_83A6050 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0 - bl GetRunningPastFacingDirection - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080606B4 - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_080606B4: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080606C8: .4byte gUnknown_83A6050 - thumb_func_end sub_8060684 - - thumb_func_start sub_80606CC -sub_80606CC: @ 80606CC - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080606E8 @ =gObjectEvents - adds r0, r2 - ldr r2, _080606EC @ =sub_80606F0 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080606E8: .4byte gObjectEvents -_080606EC: .4byte sub_80606F0 - thumb_func_end sub_80606CC - - thumb_func_start sub_80606F0 -sub_80606F0: @ 80606F0 - push {r4,lr} - ldr r3, _0806070C @ =gUnknown_83A6094 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806070C: .4byte gUnknown_83A6094 - thumb_func_end sub_80606F0 - - thumb_func_start sub_8060710 -sub_8060710: @ 8060710 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060710 - - thumb_func_start sub_8060724 -sub_8060724: @ 8060724 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060724 - - thumb_func_start sub_8060750 -sub_8060750: @ 8060750 - push {r4-r6,lr} - adds r6, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08060784 - ldr r5, _08060780 @ =gUnknown_83A6000 - bl Random - movs r4, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r6, 0 - bl SetObjectEventStepTimer - strh r4, [r6, 0x30] - movs r0, 0x1 - b _08060786 - .align 2, 0 -_08060780: .4byte gUnknown_83A6000 -_08060784: - movs r0, 0 -_08060786: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8060750 - - thumb_func_start sub_806078C -sub_806078C: @ 806078C - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _080607A0 - movs r0, 0 - b _080607A6 -_080607A0: - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0x1 -_080607A6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806078C - - thumb_func_start sub_80607AC -sub_80607AC: @ 80607AC - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _080607F4 @ =gUnknown_83A60B0 - mov r0, sp - movs r2, 0x2 - bl memcpy - bl Random - movs r7, 0x1 - adds r1, r7, 0 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x5 - strh r0, [r6, 0x30] - adds r0, r5, 0 - adds r1, r4, 0 - bl npc_block_way__next_tile - lsls r0, 24 - cmp r0, 0 - beq _080607EA - strh r7, [r6, 0x30] -_080607EA: - movs r0, 0x1 - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080607F4: .4byte gUnknown_83A60B0 - thumb_func_end sub_80607AC - - thumb_func_start sub_80607F8 -sub_80607F8: @ 80607F8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetWalkNormalMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x6 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80607F8 - - thumb_func_start sub_8060828 -sub_8060828: @ 8060828 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08060846 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_08060846: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060828 - - thumb_func_start sub_8060850 -sub_8060850: @ 8060850 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0806086C @ =gObjectEvents - adds r0, r2 - ldr r2, _08060870 @ =sub_8060874 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_0806086C: .4byte gObjectEvents -_08060870: .4byte sub_8060874 - thumb_func_end sub_8060850 - - thumb_func_start sub_8060874 -sub_8060874: @ 8060874 - push {r4,lr} - ldr r3, _08060890 @ =gUnknown_83A60B4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060890: .4byte gUnknown_83A60B4 - thumb_func_end sub_8060874 - - thumb_func_start sub_8060894 -sub_8060894: @ 8060894 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060894 - - thumb_func_start sub_80608A8 -sub_80608A8: @ 80608A8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80608A8 - - thumb_func_start sub_80608D4 -sub_80608D4: @ 80608D4 - push {r4-r6,lr} - adds r6, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08060908 - ldr r5, _08060904 @ =gUnknown_83A6000 - bl Random - movs r4, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r6, 0 - bl SetObjectEventStepTimer - strh r4, [r6, 0x30] - movs r0, 0x1 - b _0806090A - .align 2, 0 -_08060904: .4byte gUnknown_83A6000 -_08060908: - movs r0, 0 -_0806090A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80608D4 - - thumb_func_start sub_8060910 -sub_8060910: @ 8060910 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _08060924 - movs r0, 0 - b _0806092A -_08060924: - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0806092A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060910 - - thumb_func_start sub_8060930 -sub_8060930: @ 8060930 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _08060978 @ =gUnknown_83A60D0 - mov r0, sp - movs r2, 0x2 - bl memcpy - bl Random - movs r7, 0x1 - adds r1, r7, 0 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x5 - strh r0, [r6, 0x30] - adds r0, r5, 0 - adds r1, r4, 0 - bl npc_block_way__next_tile - lsls r0, 24 - cmp r0, 0 - beq _0806096E - strh r7, [r6, 0x30] -_0806096E: - movs r0, 0x1 - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08060978: .4byte gUnknown_83A60D0 - thumb_func_end sub_8060930 - - thumb_func_start sub_806097C -sub_806097C: @ 806097C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetWalkNormalMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x6 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806097C - - thumb_func_start sub_80609AC -sub_80609AC: @ 80609AC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _080609CA - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_080609CA: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80609AC - - thumb_func_start sub_80609D4 -sub_80609D4: @ 80609D4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080609F0 @ =gObjectEvents - adds r0, r2 - ldr r2, _080609F4 @ =sub_80609F8 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080609F0: .4byte gObjectEvents -_080609F4: .4byte sub_80609F8 - thumb_func_end sub_80609D4 - - thumb_func_start sub_80609F8 -sub_80609F8: @ 80609F8 - push {r4,lr} - ldr r3, _08060A14 @ =gUnknown_83A60D4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060A14: .4byte gUnknown_83A60D4 - thumb_func_end sub_80609F8 - - thumb_func_start sub_8060A18 -sub_8060A18: @ 8060A18 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060A18 - - thumb_func_start sub_8060A44 -sub_8060A44: @ 8060A44 - push {r4,lr} - adds r4, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - bne _08060A56 - movs r0, 0 - b _08060A5C -_08060A56: - movs r0, 0x2 - strh r0, [r4, 0x30] - movs r0, 0x1 -_08060A5C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060A44 - - thumb_func_start sub_8060A64 -sub_8060A64: @ 8060A64 - ldrb r2, [r0] - movs r1, 0x3 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - movs r0, 0 - bx lr - thumb_func_end sub_8060A64 - - thumb_func_start sub_8060A74 -sub_8060A74: @ 8060A74 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08060A90 @ =gObjectEvents - adds r0, r2 - ldr r2, _08060A94 @ =sub_8060A98 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08060A90: .4byte gObjectEvents -_08060A94: .4byte sub_8060A98 - thumb_func_end sub_8060A74 - - thumb_func_start sub_8060A98 -sub_8060A98: @ 8060A98 - push {r4,lr} - ldr r3, _08060AB4 @ =gUnknown_83A60E0 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060AB4: .4byte gUnknown_83A60E0 - thumb_func_end sub_8060A98 - - thumb_func_start sub_8060AB8 -sub_8060AB8: @ 8060AB8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060AB8 - - thumb_func_start sub_8060ACC -sub_8060ACC: @ 8060ACC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060ACC - - thumb_func_start sub_8060AF8 -sub_8060AF8: @ 8060AF8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08060B2E - ldr r4, _08060B38 @ =gUnknown_83A6000 - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl SetObjectEventStepTimer - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_08060B2E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08060B38: .4byte gUnknown_83A6000 - thumb_func_end sub_8060AF8 - - thumb_func_start sub_8060B3C -sub_8060B3C: @ 8060B3C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _08060B5A - adds r0, r4, 0 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _08060B62 -_08060B5A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _08060B64 -_08060B62: - movs r0, 0 -_08060B64: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060B3C - - thumb_func_start sub_8060B6C -sub_8060B6C: @ 8060B6C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08060BB0 @ =gUnknown_83A60B0 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x1 - bl GetRunningPastFacingDirection - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08060B9C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_08060B9C: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08060BB0: .4byte gUnknown_83A60B0 - thumb_func_end sub_8060B6C - - thumb_func_start sub_8060BB4 -sub_8060BB4: @ 8060BB4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08060BD0 @ =gObjectEvents - adds r0, r2 - ldr r2, _08060BD4 @ =sub_8060BD8 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08060BD0: .4byte gObjectEvents -_08060BD4: .4byte sub_8060BD8 - thumb_func_end sub_8060BB4 - - thumb_func_start sub_8060BD8 -sub_8060BD8: @ 8060BD8 - push {r4,lr} - ldr r3, _08060BF4 @ =gUnknown_83A60F4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060BF4: .4byte gUnknown_83A60F4 - thumb_func_end sub_8060BD8 - - thumb_func_start sub_8060BF8 -sub_8060BF8: @ 8060BF8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060BF8 - - thumb_func_start sub_8060C0C -sub_8060C0C: @ 8060C0C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060C0C - - thumb_func_start sub_8060C38 -sub_8060C38: @ 8060C38 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08060C6E - ldr r4, _08060C78 @ =gUnknown_83A6000 - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl SetObjectEventStepTimer - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_08060C6E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08060C78: .4byte gUnknown_83A6000 - thumb_func_end sub_8060C38 - - thumb_func_start sub_8060C7C -sub_8060C7C: @ 8060C7C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _08060C9A - adds r0, r4, 0 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _08060CA2 -_08060C9A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _08060CA4 -_08060CA2: - movs r0, 0 -_08060CA4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060C7C - - thumb_func_start sub_8060CAC -sub_8060CAC: @ 8060CAC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08060CF0 @ =gUnknown_83A60D0 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x2 - bl GetRunningPastFacingDirection - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08060CDC - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_08060CDC: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08060CF0: .4byte gUnknown_83A60D0 - thumb_func_end sub_8060CAC - - thumb_func_start sub_8060CF4 -sub_8060CF4: @ 8060CF4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08060D10 @ =gObjectEvents - adds r0, r2 - ldr r2, _08060D14 @ =sub_8060D18 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08060D10: .4byte gObjectEvents -_08060D14: .4byte sub_8060D18 - thumb_func_end sub_8060CF4 - - thumb_func_start sub_8060D18 -sub_8060D18: @ 8060D18 - push {r4,lr} - ldr r3, _08060D34 @ =gUnknown_83A6108 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060D34: .4byte gUnknown_83A6108 - thumb_func_end sub_8060D18 - - thumb_func_start sub_8060D38 -sub_8060D38: @ 8060D38 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060D38 - - thumb_func_start sub_8060D4C -sub_8060D4C: @ 8060D4C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060D4C - - thumb_func_start sub_8060D78 -sub_8060D78: @ 8060D78 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08060DAE - ldr r4, _08060DB8 @ =gUnknown_83A6010 - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl SetObjectEventStepTimer - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_08060DAE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08060DB8: .4byte gUnknown_83A6010 - thumb_func_end sub_8060D78 - - thumb_func_start sub_8060DBC -sub_8060DBC: @ 8060DBC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _08060DDA - adds r0, r4, 0 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _08060DE2 -_08060DDA: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _08060DE4 -_08060DE2: - movs r0, 0 -_08060DE4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060DBC - - thumb_func_start sub_8060DEC -sub_8060DEC: @ 8060DEC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08060E30 @ =gUnknown_83A611C - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x3 - bl GetRunningPastFacingDirection - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08060E1C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_08060E1C: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08060E30: .4byte gUnknown_83A611C - thumb_func_end sub_8060DEC - - thumb_func_start sub_8060E34 -sub_8060E34: @ 8060E34 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08060E50 @ =gObjectEvents - adds r0, r2 - ldr r2, _08060E54 @ =sub_8060E58 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08060E50: .4byte gObjectEvents -_08060E54: .4byte sub_8060E58 - thumb_func_end sub_8060E34 - - thumb_func_start sub_8060E58 -sub_8060E58: @ 8060E58 - push {r4,lr} - ldr r3, _08060E74 @ =gUnknown_83A6120 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060E74: .4byte gUnknown_83A6120 - thumb_func_end sub_8060E58 - - thumb_func_start sub_8060E78 -sub_8060E78: @ 8060E78 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060E78 - - thumb_func_start sub_8060E8C -sub_8060E8C: @ 8060E8C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060E8C - - thumb_func_start sub_8060EB8 -sub_8060EB8: @ 8060EB8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08060EEE - ldr r4, _08060EF8 @ =gUnknown_83A6010 - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl SetObjectEventStepTimer - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_08060EEE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08060EF8: .4byte gUnknown_83A6010 - thumb_func_end sub_8060EB8 - - thumb_func_start sub_8060EFC -sub_8060EFC: @ 8060EFC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _08060F1A - adds r0, r4, 0 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _08060F22 -_08060F1A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _08060F24 -_08060F22: - movs r0, 0 -_08060F24: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060EFC - - thumb_func_start sub_8060F2C -sub_8060F2C: @ 8060F2C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08060F70 @ =gUnknown_83A6134 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x4 - bl GetRunningPastFacingDirection - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08060F5C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_08060F5C: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08060F70: .4byte gUnknown_83A6134 - thumb_func_end sub_8060F2C - - thumb_func_start sub_8060F74 -sub_8060F74: @ 8060F74 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08060F90 @ =gObjectEvents - adds r0, r2 - ldr r2, _08060F94 @ =sub_8060F98 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08060F90: .4byte gObjectEvents -_08060F94: .4byte sub_8060F98 - thumb_func_end sub_8060F74 - - thumb_func_start sub_8060F98 -sub_8060F98: @ 8060F98 - push {r4,lr} - ldr r3, _08060FB4 @ =gUnknown_83A6138 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060FB4: .4byte gUnknown_83A6138 - thumb_func_end sub_8060F98 - - thumb_func_start sub_8060FB8 -sub_8060FB8: @ 8060FB8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060FB8 - - thumb_func_start sub_8060FCC -sub_8060FCC: @ 8060FCC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060FCC - - thumb_func_start sub_8060FF8 -sub_8060FF8: @ 8060FF8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _0806102E - ldr r4, _08061038 @ =gUnknown_83A6010 - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl SetObjectEventStepTimer - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0806102E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08061038: .4byte gUnknown_83A6010 - thumb_func_end sub_8060FF8 - - thumb_func_start sub_806103C -sub_806103C: @ 806103C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _0806105A - adds r0, r4, 0 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _08061062 -_0806105A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _08061064 -_08061062: - movs r0, 0 -_08061064: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806103C - - thumb_func_start sub_806106C -sub_806106C: @ 806106C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080610B0 @ =gUnknown_83A614C - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x5 - bl GetRunningPastFacingDirection - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0806109C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0806109C: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080610B0: .4byte gUnknown_83A614C - thumb_func_end sub_806106C - - thumb_func_start sub_80610B4 -sub_80610B4: @ 80610B4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080610D0 @ =gObjectEvents - adds r0, r2 - ldr r2, _080610D4 @ =sub_80610D8 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080610D0: .4byte gObjectEvents -_080610D4: .4byte sub_80610D8 - thumb_func_end sub_80610B4 - - thumb_func_start sub_80610D8 -sub_80610D8: @ 80610D8 - push {r4,lr} - ldr r3, _080610F4 @ =gUnknown_83A6150 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080610F4: .4byte gUnknown_83A6150 - thumb_func_end sub_80610D8 - - thumb_func_start sub_80610F8 -sub_80610F8: @ 80610F8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80610F8 - - thumb_func_start sub_806110C -sub_806110C: @ 806110C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806110C - - thumb_func_start sub_8061138 -sub_8061138: @ 8061138 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _0806116E - ldr r4, _08061178 @ =gUnknown_83A6010 - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl SetObjectEventStepTimer - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0806116E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08061178: .4byte gUnknown_83A6010 - thumb_func_end sub_8061138 - - thumb_func_start sub_806117C -sub_806117C: @ 806117C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _0806119A - adds r0, r4, 0 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _080611A2 -_0806119A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _080611A4 -_080611A2: - movs r0, 0 -_080611A4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806117C - - thumb_func_start sub_80611AC -sub_80611AC: @ 80611AC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080611F0 @ =gUnknown_83A6164 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x6 - bl GetRunningPastFacingDirection - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080611DC - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_080611DC: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080611F0: .4byte gUnknown_83A6164 - thumb_func_end sub_80611AC - - thumb_func_start sub_80611F4 -sub_80611F4: @ 80611F4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061210 @ =gObjectEvents - adds r0, r2 - ldr r2, _08061214 @ =sub_8061218 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061210: .4byte gObjectEvents -_08061214: .4byte sub_8061218 - thumb_func_end sub_80611F4 - - thumb_func_start sub_8061218 -sub_8061218: @ 8061218 - push {r4,lr} - ldr r3, _08061234 @ =gUnknown_83A6168 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08061234: .4byte gUnknown_83A6168 - thumb_func_end sub_8061218 - - thumb_func_start sub_8061238 -sub_8061238: @ 8061238 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061238 - - thumb_func_start sub_806124C -sub_806124C: @ 806124C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806124C - - thumb_func_start sub_8061278 -sub_8061278: @ 8061278 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _080612AE - ldr r4, _080612B8 @ =gUnknown_83A6010 - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl SetObjectEventStepTimer - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_080612AE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080612B8: .4byte gUnknown_83A6010 - thumb_func_end sub_8061278 - - thumb_func_start sub_80612BC -sub_80612BC: @ 80612BC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _080612DA - adds r0, r4, 0 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _080612E2 -_080612DA: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _080612E4 -_080612E2: - movs r0, 0 -_080612E4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80612BC - - thumb_func_start sub_80612EC -sub_80612EC: @ 80612EC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08061330 @ =gUnknown_83A617C - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0x7 - bl GetRunningPastFacingDirection - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0806131C - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0806131C: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08061330: .4byte gUnknown_83A617C - thumb_func_end sub_80612EC - - thumb_func_start sub_8061334 -sub_8061334: @ 8061334 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061350 @ =gObjectEvents - adds r0, r2 - ldr r2, _08061354 @ =sub_8061358 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061350: .4byte gObjectEvents -_08061354: .4byte sub_8061358 - thumb_func_end sub_8061334 - - thumb_func_start sub_8061358 -sub_8061358: @ 8061358 - push {r4,lr} - ldr r3, _08061374 @ =gUnknown_83A6180 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08061374: .4byte gUnknown_83A6180 - thumb_func_end sub_8061358 - - thumb_func_start sub_8061378 -sub_8061378: @ 8061378 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061378 - - thumb_func_start sub_806138C -sub_806138C: @ 806138C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806138C - - thumb_func_start sub_80613B8 -sub_80613B8: @ 80613B8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _080613EE - ldr r4, _080613F8 @ =gUnknown_83A6010 - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl SetObjectEventStepTimer - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_080613EE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080613F8: .4byte gUnknown_83A6010 - thumb_func_end sub_80613B8 - - thumb_func_start sub_80613FC -sub_80613FC: @ 80613FC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _0806141A - adds r0, r4, 0 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _08061422 -_0806141A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _08061424 -_08061422: - movs r0, 0 -_08061424: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80613FC - - thumb_func_start sub_806142C -sub_806142C: @ 806142C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08061470 @ =gUnknown_83A6194 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0x8 - bl GetRunningPastFacingDirection - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0806145C - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0806145C: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08061470: .4byte gUnknown_83A6194 - thumb_func_end sub_806142C - - thumb_func_start sub_8061474 -sub_8061474: @ 8061474 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061490 @ =gObjectEvents - adds r0, r2 - ldr r2, _08061494 @ =sub_8061498 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061490: .4byte gObjectEvents -_08061494: .4byte sub_8061498 - thumb_func_end sub_8061474 - - thumb_func_start sub_8061498 -sub_8061498: @ 8061498 - push {r4,lr} - ldr r3, _080614B4 @ =gUnknown_83A6198 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080614B4: .4byte gUnknown_83A6198 - thumb_func_end sub_8061498 - - thumb_func_start sub_80614B8 -sub_80614B8: @ 80614B8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80614B8 - - thumb_func_start sub_80614CC -sub_80614CC: @ 80614CC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80614CC - - thumb_func_start sub_80614F8 -sub_80614F8: @ 80614F8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _0806152E - ldr r4, _08061538 @ =gUnknown_83A6010 - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl SetObjectEventStepTimer - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0806152E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08061538: .4byte gUnknown_83A6010 - thumb_func_end sub_80614F8 - - thumb_func_start sub_806153C -sub_806153C: @ 806153C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _0806155A - adds r0, r4, 0 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _08061562 -_0806155A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _08061564 -_08061562: - movs r0, 0 -_08061564: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806153C - - thumb_func_start sub_806156C -sub_806156C: @ 806156C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080615B0 @ =gUnknown_83A61AC - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0x9 - bl GetRunningPastFacingDirection - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0806159C - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0806159C: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080615B0: .4byte gUnknown_83A61AC - thumb_func_end sub_806156C - - thumb_func_start sub_80615B4 -sub_80615B4: @ 80615B4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080615D0 @ =gObjectEvents - adds r0, r2 - ldr r2, _080615D4 @ =sub_80615D8 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080615D0: .4byte gObjectEvents -_080615D4: .4byte sub_80615D8 - thumb_func_end sub_80615B4 - - thumb_func_start sub_80615D8 -sub_80615D8: @ 80615D8 - push {r4,lr} - ldr r3, _080615F4 @ =gUnknown_83A61B0 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080615F4: .4byte gUnknown_83A61B0 - thumb_func_end sub_80615D8 - - thumb_func_start sub_80615F8 -sub_80615F8: @ 80615F8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80615F8 - - thumb_func_start sub_806160C -sub_806160C: @ 806160C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806160C - - thumb_func_start sub_8061638 -sub_8061638: @ 8061638 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _0806166E - ldr r4, _08061678 @ =gUnknown_83A6010 - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl SetObjectEventStepTimer - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0806166E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08061678: .4byte gUnknown_83A6010 - thumb_func_end sub_8061638 - - thumb_func_start sub_806167C -sub_806167C: @ 806167C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _0806169A - adds r0, r4, 0 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _080616A2 -_0806169A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _080616A4 -_080616A2: - movs r0, 0 -_080616A4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806167C - - thumb_func_start sub_80616AC -sub_80616AC: @ 80616AC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080616F0 @ =gUnknown_83A61C4 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0xA - bl GetRunningPastFacingDirection - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080616DC - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_080616DC: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080616F0: .4byte gUnknown_83A61C4 - thumb_func_end sub_80616AC - - thumb_func_start sub_80616F4 -sub_80616F4: @ 80616F4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061710 @ =gObjectEvents - adds r0, r2 - ldr r2, _08061714 @ =sub_8061718 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061710: .4byte gObjectEvents -_08061714: .4byte sub_8061718 - thumb_func_end sub_80616F4 - - thumb_func_start sub_8061718 -sub_8061718: @ 8061718 - push {r4,lr} - ldr r3, _08061734 @ =gUnknown_83A61C8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08061734: .4byte gUnknown_83A61C8 - thumb_func_end sub_8061718 - - thumb_func_start sub_8061738 -sub_8061738: @ 8061738 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061738 - - thumb_func_start sub_8061764 -sub_8061764: @ 8061764 - push {r4,lr} - adds r4, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _0806177E - adds r0, r4, 0 - movs r1, 0x30 - bl SetObjectEventStepTimer - movs r0, 0x2 - strh r0, [r4, 0x30] -_0806177E: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061764 - - thumb_func_start sub_8061788 -sub_8061788: @ 8061788 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _080617A6 - adds r0, r4, 0 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _080617AA -_080617A6: - movs r0, 0x3 - strh r0, [r5, 0x30] -_080617AA: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061788 - - thumb_func_start sub_80617B4 -sub_80617B4: @ 80617B4 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080617F4 @ =gUnknown_83A61D8 - mov r0, sp - movs r2, 0x5 - bl memcpy - adds r0, r4, 0 - movs r1, 0 - bl GetRunningPastFacingDirection - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080617E0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - add r0, sp - ldrb r1, [r0] -_080617E0: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0 - strh r0, [r5, 0x30] - movs r0, 0x1 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080617F4: .4byte gUnknown_83A61D8 - thumb_func_end sub_80617B4 - - thumb_func_start sub_80617F8 -sub_80617F8: @ 80617F8 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061814 @ =gObjectEvents - adds r0, r2 - ldr r2, _08061818 @ =sub_806181C - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061814: .4byte gObjectEvents -_08061818: .4byte sub_806181C - thumb_func_end sub_80617F8 - - thumb_func_start sub_806181C -sub_806181C: @ 806181C - push {r4,lr} - ldr r3, _08061838 @ =gUnknown_83A61E0 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08061838: .4byte gUnknown_83A61E0 - thumb_func_end sub_806181C - - thumb_func_start sub_806183C -sub_806183C: @ 806183C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806183C - - thumb_func_start sub_8061868 -sub_8061868: @ 8061868 - push {r4,lr} - adds r4, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08061882 - adds r0, r4, 0 - movs r1, 0x30 - bl SetObjectEventStepTimer - movs r0, 0x2 - strh r0, [r4, 0x30] -_08061882: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061868 - - thumb_func_start sub_806188C -sub_806188C: @ 806188C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - bne _080618AA - adds r0, r4, 0 - bl ObjectEventIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _080618AE -_080618AA: - movs r0, 0x3 - strh r0, [r5, 0x30] -_080618AE: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806188C - - thumb_func_start sub_80618B8 -sub_80618B8: @ 80618B8 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080618F8 @ =gUnknown_83A61F0 - mov r0, sp - movs r2, 0x5 - bl memcpy - adds r0, r4, 0 - movs r1, 0 - bl GetRunningPastFacingDirection - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080618E4 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - add r0, sp - ldrb r1, [r0] -_080618E4: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0 - strh r0, [r5, 0x30] - movs r0, 0x1 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080618F8: .4byte gUnknown_83A61F0 - thumb_func_end sub_80618B8 - - thumb_func_start sub_80618FC -sub_80618FC: @ 80618FC - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061918 @ =gObjectEvents - adds r0, r2 - ldr r2, _0806191C @ =sub_8061920 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061918: .4byte gObjectEvents -_0806191C: .4byte sub_8061920 - thumb_func_end sub_80618FC - - thumb_func_start sub_8061920 -sub_8061920: @ 8061920 - push {r4,lr} - ldr r3, _0806193C @ =gUnknown_83A61F8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806193C: .4byte gUnknown_83A61F8 - thumb_func_end sub_8061920 - - thumb_func_start sub_8061940 -sub_8061940: @ 8061940 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061940 - - thumb_func_start sub_8061954 -sub_8061954: @ 8061954 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, _08061988 @ =gInitialMovementTypeFacingDirections - ldrb r1, [r4, 0x6] - adds r1, r0 - ldrb r1, [r1] - adds r0, r4, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0 - beq _08061976 - adds r0, r1, 0 - bl GetOppositeDirection - lsls r0, 24 - lsrs r1, r0, 24 -_08061976: - adds r0, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08061988: .4byte gInitialMovementTypeFacingDirections - thumb_func_end sub_8061954 - - thumb_func_start sub_806198C -sub_806198C: @ 806198C - push {r4-r7,lr} - adds r4, r0, 0 - adds r7, r1, 0 - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0 - beq _080619BC - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bne _080619BC - movs r0, 0 - strb r0, [r2] - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetOppositeDirection - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl ObjectEventSetDirection -_080619BC: - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl npc_block_way__next_tile - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetWalkNormalMovementAction - lsls r0, 24 - lsrs r6, r0, 24 - cmp r5, 0x1 - bne _08061A12 - adds r1, r4, 0 - adds r1, 0x21 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetOppositeDirection - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl ObjectEventSetDirection - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetWalkNormalMovementAction - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl npc_block_way__next_tile - lsls r0, 24 - lsrs r5, r0, 24 -_08061A12: - cmp r5, 0 - beq _08061A24 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetStepInPlaceDelay16AnimId - lsls r0, 24 - lsrs r6, r0, 24 -_08061A24: - adds r0, r4, 0 - adds r1, r7, 0 - adds r2, r6, 0 - bl ObjectEventSetSingleMovement - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x3 - strh r0, [r7, 0x30] - movs r0, 0x1 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_806198C - - thumb_func_start sub_8061A44 -sub_8061A44: @ 8061A44 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08061A62 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_08061A62: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061A44 - - thumb_func_start sub_8061A6C -sub_8061A6C: @ 8061A6C - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061A6C - - thumb_func_start MoveObjectEventInNextDirectionInSequence -MoveObjectEventInNextDirectionInSequence: @ 8061A80 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - mov r8, r1 - adds r7, r2, 0 - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x3 - bne _08061AA2 - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bne _08061AA2 - movs r0, 0 - strb r0, [r2] -_08061AA2: - adds r5, r4, 0 - adds r5, 0x21 - ldrb r0, [r5] - adds r0, r7, r0 - ldrb r1, [r0] - adds r0, r4, 0 - bl ObjectEventSetDirection - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetWalkNormalMovementAction - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl npc_block_way__next_tile - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08061AFC - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldrb r0, [r5] - adds r0, r7, r0 - ldrb r1, [r0] - adds r0, r4, 0 - bl ObjectEventSetDirection - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetWalkNormalMovementAction - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl npc_block_way__next_tile - lsls r0, 24 - lsrs r0, 24 -_08061AFC: - cmp r0, 0 - beq _08061B0E - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetStepInPlaceDelay16AnimId - lsls r0, 24 - lsrs r6, r0, 24 -_08061B0E: - adds r0, r4, 0 - mov r1, r8 - adds r2, r6, 0 - bl ObjectEventSetSingleMovement - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - mov r1, r8 - strh r0, [r1, 0x30] - movs r0, 0x1 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end MoveObjectEventInNextDirectionInSequence - - thumb_func_start sub_8061B34 -sub_8061B34: @ 8061B34 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08061B52 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_08061B52: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061B34 - - thumb_func_start sub_8061B5C -sub_8061B5C: @ 8061B5C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061B78 @ =gObjectEvents - adds r0, r2 - ldr r2, _08061B7C @ =sub_8061B80 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061B78: .4byte gObjectEvents -_08061B7C: .4byte sub_8061B80 - thumb_func_end sub_8061B5C - - thumb_func_start sub_8061B80 -sub_8061B80: @ 8061B80 - push {r4,lr} - ldr r3, _08061B9C @ =gUnknown_83A6208 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08061B9C: .4byte gUnknown_83A6208 - thumb_func_end sub_8061B80 - - thumb_func_start sub_8061BA0 -sub_8061BA0: @ 8061BA0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08061BE4 @ =gUnknown_83A6214 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _08061BCC - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08061BCC - movs r0, 0x3 - strb r0, [r2] -_08061BCC: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08061BE4: .4byte gUnknown_83A6214 - thumb_func_end sub_8061BA0 - - thumb_func_start sub_8061BE8 -sub_8061BE8: @ 8061BE8 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061C04 @ =gObjectEvents - adds r0, r2 - ldr r2, _08061C08 @ =sub_8061C0C - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061C04: .4byte gObjectEvents -_08061C08: .4byte sub_8061C0C - thumb_func_end sub_8061BE8 - - thumb_func_start sub_8061C0C -sub_8061C0C: @ 8061C0C - push {r4,lr} - ldr r3, _08061C28 @ =gUnknown_83A6218 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08061C28: .4byte gUnknown_83A6218 - thumb_func_end sub_8061C0C - - thumb_func_start sub_8061C2C -sub_8061C2C: @ 8061C2C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08061C70 @ =gUnknown_83A6224 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _08061C58 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08061C58 - movs r0, 0x2 - strb r0, [r2] -_08061C58: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08061C70: .4byte gUnknown_83A6224 - thumb_func_end sub_8061C2C - - thumb_func_start sub_8061C74 -sub_8061C74: @ 8061C74 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061C90 @ =gObjectEvents - adds r0, r2 - ldr r2, _08061C94 @ =sub_8061C98 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061C90: .4byte gObjectEvents -_08061C94: .4byte sub_8061C98 - thumb_func_end sub_8061C74 - - thumb_func_start sub_8061C98 -sub_8061C98: @ 8061C98 - push {r4,lr} - ldr r3, _08061CB4 @ =gUnknown_83A6228 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08061CB4: .4byte gUnknown_83A6228 - thumb_func_end sub_8061C98 - - thumb_func_start sub_8061CB8 -sub_8061CB8: @ 8061CB8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08061CFC @ =gUnknown_83A6234 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _08061CE4 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08061CE4 - movs r0, 0x2 - strb r0, [r2] -_08061CE4: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08061CFC: .4byte gUnknown_83A6234 - thumb_func_end sub_8061CB8 - - thumb_func_start sub_8061D00 -sub_8061D00: @ 8061D00 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061D1C @ =gObjectEvents - adds r0, r2 - ldr r2, _08061D20 @ =sub_8061D24 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061D1C: .4byte gObjectEvents -_08061D20: .4byte sub_8061D24 - thumb_func_end sub_8061D00 - - thumb_func_start sub_8061D24 -sub_8061D24: @ 8061D24 - push {r4,lr} - ldr r3, _08061D40 @ =gUnknown_83A6238 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08061D40: .4byte gUnknown_83A6238 - thumb_func_end sub_8061D24 - - thumb_func_start sub_8061D44 -sub_8061D44: @ 8061D44 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08061D88 @ =gUnknown_83A6244 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _08061D70 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08061D70 - movs r0, 0x3 - strb r0, [r2] -_08061D70: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08061D88: .4byte gUnknown_83A6244 - thumb_func_end sub_8061D44 - - thumb_func_start sub_8061D8C -sub_8061D8C: @ 8061D8C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061DA8 @ =gObjectEvents - adds r0, r2 - ldr r2, _08061DAC @ =sub_8061DB0 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061DA8: .4byte gObjectEvents -_08061DAC: .4byte sub_8061DB0 - thumb_func_end sub_8061D8C - - thumb_func_start sub_8061DB0 -sub_8061DB0: @ 8061DB0 - push {r4,lr} - ldr r3, _08061DCC @ =gUnknown_83A6248 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08061DCC: .4byte gUnknown_83A6248 - thumb_func_end sub_8061DB0 - - thumb_func_start sub_8061DD0 -sub_8061DD0: @ 8061DD0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08061E14 @ =gUnknown_83A6254 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _08061DFC - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08061DFC - movs r0, 0x3 - strb r0, [r2] -_08061DFC: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08061E14: .4byte gUnknown_83A6254 - thumb_func_end sub_8061DD0 - - thumb_func_start sub_8061E18 -sub_8061E18: @ 8061E18 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061E34 @ =gObjectEvents - adds r0, r2 - ldr r2, _08061E38 @ =sub_8061E3C - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061E34: .4byte gObjectEvents -_08061E38: .4byte sub_8061E3C - thumb_func_end sub_8061E18 - - thumb_func_start sub_8061E3C -sub_8061E3C: @ 8061E3C - push {r4,lr} - ldr r3, _08061E58 @ =gUnknown_83A6258 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08061E58: .4byte gUnknown_83A6258 - thumb_func_end sub_8061E3C - - thumb_func_start sub_8061E5C -sub_8061E5C: @ 8061E5C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08061EA0 @ =gUnknown_83A6264 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _08061E88 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08061E88 - movs r0, 0x2 - strb r0, [r2] -_08061E88: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08061EA0: .4byte gUnknown_83A6264 - thumb_func_end sub_8061E5C - - thumb_func_start sub_8061EA4 -sub_8061EA4: @ 8061EA4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061EC0 @ =gObjectEvents - adds r0, r2 - ldr r2, _08061EC4 @ =sub_8061EC8 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061EC0: .4byte gObjectEvents -_08061EC4: .4byte sub_8061EC8 - thumb_func_end sub_8061EA4 - - thumb_func_start sub_8061EC8 -sub_8061EC8: @ 8061EC8 - push {r4,lr} - ldr r3, _08061EE4 @ =gUnknown_83A6268 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08061EE4: .4byte gUnknown_83A6268 - thumb_func_end sub_8061EC8 - - thumb_func_start sub_8061EE8 -sub_8061EE8: @ 8061EE8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08061F2C @ =gUnknown_83A6050 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _08061F14 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08061F14 - movs r0, 0x2 - strb r0, [r2] -_08061F14: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08061F2C: .4byte gUnknown_83A6050 - thumb_func_end sub_8061EE8 - - thumb_func_start sub_8061F30 -sub_8061F30: @ 8061F30 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061F4C @ =gObjectEvents - adds r0, r2 - ldr r2, _08061F50 @ =sub_8061F54 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061F4C: .4byte gObjectEvents -_08061F50: .4byte sub_8061F54 - thumb_func_end sub_8061F30 - - thumb_func_start sub_8061F54 -sub_8061F54: @ 8061F54 - push {r4,lr} - ldr r3, _08061F70 @ =gUnknown_83A6274 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08061F70: .4byte gUnknown_83A6274 - thumb_func_end sub_8061F54 - - thumb_func_start sub_8061F74 -sub_8061F74: @ 8061F74 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08061FB8 @ =gUnknown_83A6280 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _08061FA0 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08061FA0 - movs r0, 0x3 - strb r0, [r2] -_08061FA0: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08061FB8: .4byte gUnknown_83A6280 - thumb_func_end sub_8061F74 - - thumb_func_start sub_8061FBC -sub_8061FBC: @ 8061FBC - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08061FD8 @ =gObjectEvents - adds r0, r2 - ldr r2, _08061FDC @ =sub_8061FE0 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08061FD8: .4byte gObjectEvents -_08061FDC: .4byte sub_8061FE0 - thumb_func_end sub_8061FBC - - thumb_func_start sub_8061FE0 -sub_8061FE0: @ 8061FE0 - push {r4,lr} - ldr r3, _08061FFC @ =gUnknown_83A6284 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08061FFC: .4byte gUnknown_83A6284 - thumb_func_end sub_8061FE0 - - thumb_func_start sub_8062000 -sub_8062000: @ 8062000 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08062044 @ =gUnknown_83A6290 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0806202C - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0806202C - movs r0, 0x3 - strb r0, [r2] -_0806202C: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08062044: .4byte gUnknown_83A6290 - thumb_func_end sub_8062000 - - thumb_func_start sub_8062048 -sub_8062048: @ 8062048 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08062064 @ =gObjectEvents - adds r0, r2 - ldr r2, _08062068 @ =sub_806206C - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08062064: .4byte gObjectEvents -_08062068: .4byte sub_806206C - thumb_func_end sub_8062048 - - thumb_func_start sub_806206C -sub_806206C: @ 806206C - push {r4,lr} - ldr r3, _08062088 @ =gUnknown_83A6294 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08062088: .4byte gUnknown_83A6294 - thumb_func_end sub_806206C - - thumb_func_start sub_806208C -sub_806208C: @ 806208C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080620D0 @ =gUnknown_83A62A0 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _080620B8 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _080620B8 - movs r0, 0x2 - strb r0, [r2] -_080620B8: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080620D0: .4byte gUnknown_83A62A0 - thumb_func_end sub_806208C - - thumb_func_start sub_80620D4 -sub_80620D4: @ 80620D4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080620F0 @ =gObjectEvents - adds r0, r2 - ldr r2, _080620F4 @ =sub_80620F8 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080620F0: .4byte gObjectEvents -_080620F4: .4byte sub_80620F8 - thumb_func_end sub_80620D4 - - thumb_func_start sub_80620F8 -sub_80620F8: @ 80620F8 - push {r4,lr} - ldr r3, _08062114 @ =gUnknown_83A62A4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08062114: .4byte gUnknown_83A62A4 - thumb_func_end sub_80620F8 - - thumb_func_start sub_8062118 -sub_8062118: @ 8062118 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0806215C @ =gUnknown_83A62B0 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _08062144 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08062144 - movs r0, 0x2 - strb r0, [r2] -_08062144: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806215C: .4byte gUnknown_83A62B0 - thumb_func_end sub_8062118 - - thumb_func_start sub_8062160 -sub_8062160: @ 8062160 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0806217C @ =gObjectEvents - adds r0, r2 - ldr r2, _08062180 @ =sub_8062184 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_0806217C: .4byte gObjectEvents -_08062180: .4byte sub_8062184 - thumb_func_end sub_8062160 - - thumb_func_start sub_8062184 -sub_8062184: @ 8062184 - push {r4,lr} - ldr r3, _080621A0 @ =gUnknown_83A62B4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080621A0: .4byte gUnknown_83A62B4 - thumb_func_end sub_8062184 - - thumb_func_start sub_80621A4 -sub_80621A4: @ 80621A4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080621E8 @ =gUnknown_83A62C0 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _080621D0 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _080621D0 - movs r0, 0x3 - strb r0, [r2] -_080621D0: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080621E8: .4byte gUnknown_83A62C0 - thumb_func_end sub_80621A4 - - thumb_func_start sub_80621EC -sub_80621EC: @ 80621EC - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08062208 @ =gObjectEvents - adds r0, r2 - ldr r2, _0806220C @ =sub_8062210 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08062208: .4byte gObjectEvents -_0806220C: .4byte sub_8062210 - thumb_func_end sub_80621EC - - thumb_func_start sub_8062210 -sub_8062210: @ 8062210 - push {r4,lr} - ldr r3, _0806222C @ =gUnknown_83A62C4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806222C: .4byte gUnknown_83A62C4 - thumb_func_end sub_8062210 - - thumb_func_start sub_8062230 -sub_8062230: @ 8062230 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08062274 @ =gUnknown_83A62D0 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0806225C - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0806225C - movs r0, 0x3 - strb r0, [r2] -_0806225C: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08062274: .4byte gUnknown_83A62D0 - thumb_func_end sub_8062230 - - thumb_func_start sub_8062278 -sub_8062278: @ 8062278 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08062294 @ =gObjectEvents - adds r0, r2 - ldr r2, _08062298 @ =sub_806229C - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08062294: .4byte gObjectEvents -_08062298: .4byte sub_806229C - thumb_func_end sub_8062278 - - thumb_func_start sub_806229C -sub_806229C: @ 806229C - push {r4,lr} - ldr r3, _080622B8 @ =gUnknown_83A62D4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080622B8: .4byte gUnknown_83A62D4 - thumb_func_end sub_806229C - - thumb_func_start sub_80622BC -sub_80622BC: @ 80622BC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08062300 @ =gUnknown_83A62E0 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _080622E8 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _080622E8 - movs r0, 0x2 - strb r0, [r2] -_080622E8: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08062300: .4byte gUnknown_83A62E0 - thumb_func_end sub_80622BC - - thumb_func_start sub_8062304 -sub_8062304: @ 8062304 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08062320 @ =gObjectEvents - adds r0, r2 - ldr r2, _08062324 @ =sub_8062328 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08062320: .4byte gObjectEvents -_08062324: .4byte sub_8062328 - thumb_func_end sub_8062304 - - thumb_func_start sub_8062328 -sub_8062328: @ 8062328 - push {r4,lr} - ldr r3, _08062344 @ =gUnknown_83A62E4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08062344: .4byte gUnknown_83A62E4 - thumb_func_end sub_8062328 - - thumb_func_start sub_8062348 -sub_8062348: @ 8062348 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0806238C @ =gUnknown_83A62F0 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _08062374 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08062374 - movs r0, 0x2 - strb r0, [r2] -_08062374: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806238C: .4byte gUnknown_83A62F0 - thumb_func_end sub_8062348 - - thumb_func_start sub_8062390 -sub_8062390: @ 8062390 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080623AC @ =gObjectEvents - adds r0, r2 - ldr r2, _080623B0 @ =sub_80623B4 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080623AC: .4byte gObjectEvents -_080623B0: .4byte sub_80623B4 - thumb_func_end sub_8062390 - - thumb_func_start sub_80623B4 -sub_80623B4: @ 80623B4 - push {r4,lr} - ldr r3, _080623D0 @ =gUnknown_83A62F4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080623D0: .4byte gUnknown_83A62F4 - thumb_func_end sub_80623B4 - - thumb_func_start sub_80623D4 -sub_80623D4: @ 80623D4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08062418 @ =gUnknown_83A6300 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _08062400 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08062400 - movs r0, 0x3 - strb r0, [r2] -_08062400: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08062418: .4byte gUnknown_83A6300 - thumb_func_end sub_80623D4 - - thumb_func_start sub_806241C -sub_806241C: @ 806241C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08062438 @ =gObjectEvents - adds r0, r2 - ldr r2, _0806243C @ =sub_8062440 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08062438: .4byte gObjectEvents -_0806243C: .4byte sub_8062440 - thumb_func_end sub_806241C - - thumb_func_start sub_8062440 -sub_8062440: @ 8062440 - push {r4,lr} - ldr r3, _0806245C @ =gUnknown_83A6304 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806245C: .4byte gUnknown_83A6304 - thumb_func_end sub_8062440 - - thumb_func_start sub_8062460 -sub_8062460: @ 8062460 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080624A4 @ =gUnknown_83A6310 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0806248C - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0806248C - movs r0, 0x3 - strb r0, [r2] -_0806248C: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080624A4: .4byte gUnknown_83A6310 - thumb_func_end sub_8062460 - - thumb_func_start sub_80624A8 -sub_80624A8: @ 80624A8 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080624C4 @ =gObjectEvents - adds r0, r2 - ldr r2, _080624C8 @ =sub_80624CC - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080624C4: .4byte gObjectEvents -_080624C8: .4byte sub_80624CC - thumb_func_end sub_80624A8 - - thumb_func_start sub_80624CC -sub_80624CC: @ 80624CC - push {r4,lr} - ldr r3, _080624E8 @ =gUnknown_83A6314 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080624E8: .4byte gUnknown_83A6314 - thumb_func_end sub_80624CC - - thumb_func_start sub_80624EC -sub_80624EC: @ 80624EC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08062530 @ =gUnknown_83A6320 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _08062518 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08062518 - movs r0, 0x3 - strb r0, [r2] -_08062518: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08062530: .4byte gUnknown_83A6320 - thumb_func_end sub_80624EC - - thumb_func_start sub_8062534 -sub_8062534: @ 8062534 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08062550 @ =gObjectEvents - adds r0, r2 - ldr r2, _08062554 @ =sub_8062558 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08062550: .4byte gObjectEvents -_08062554: .4byte sub_8062558 - thumb_func_end sub_8062534 - - thumb_func_start sub_8062558 -sub_8062558: @ 8062558 - push {r4,lr} - ldr r3, _08062574 @ =gUnknown_83A6324 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08062574: .4byte gUnknown_83A6324 - thumb_func_end sub_8062558 - - thumb_func_start sub_8062578 -sub_8062578: @ 8062578 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080625BC @ =gUnknown_83A6330 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _080625A4 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _080625A4 - movs r0, 0x3 - strb r0, [r2] -_080625A4: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080625BC: .4byte gUnknown_83A6330 - thumb_func_end sub_8062578 - - thumb_func_start sub_80625C0 -sub_80625C0: @ 80625C0 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080625DC @ =gObjectEvents - adds r0, r2 - ldr r2, _080625E0 @ =sub_80625E4 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080625DC: .4byte gObjectEvents -_080625E0: .4byte sub_80625E4 - thumb_func_end sub_80625C0 - - thumb_func_start sub_80625E4 -sub_80625E4: @ 80625E4 - push {r4,lr} - ldr r3, _08062600 @ =gUnknown_83A6334 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08062600: .4byte gUnknown_83A6334 - thumb_func_end sub_80625E4 - - thumb_func_start sub_8062604 -sub_8062604: @ 8062604 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08062648 @ =gUnknown_83A6340 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _08062630 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08062630 - movs r0, 0x3 - strb r0, [r2] -_08062630: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08062648: .4byte gUnknown_83A6340 - thumb_func_end sub_8062604 - - thumb_func_start sub_806264C -sub_806264C: @ 806264C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08062668 @ =gObjectEvents - adds r0, r2 - ldr r2, _0806266C @ =sub_8062670 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08062668: .4byte gObjectEvents -_0806266C: .4byte sub_8062670 - thumb_func_end sub_806264C - - thumb_func_start sub_8062670 -sub_8062670: @ 8062670 - push {r4,lr} - ldr r3, _0806268C @ =gUnknown_83A6344 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806268C: .4byte gUnknown_83A6344 - thumb_func_end sub_8062670 - - thumb_func_start sub_8062690 -sub_8062690: @ 8062690 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080626D4 @ =gUnknown_83A6350 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _080626BC - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _080626BC - movs r0, 0x3 - strb r0, [r2] -_080626BC: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080626D4: .4byte gUnknown_83A6350 - thumb_func_end sub_8062690 - - thumb_func_start sub_80626D8 -sub_80626D8: @ 80626D8 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080626F4 @ =gObjectEvents - adds r0, r2 - ldr r2, _080626F8 @ =sub_80626FC - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080626F4: .4byte gObjectEvents -_080626F8: .4byte sub_80626FC - thumb_func_end sub_80626D8 - - thumb_func_start sub_80626FC -sub_80626FC: @ 80626FC - push {r4,lr} - ldr r3, _08062718 @ =gUnknown_83A6354 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08062718: .4byte gUnknown_83A6354 - thumb_func_end sub_80626FC - - thumb_func_start sub_806271C -sub_806271C: @ 806271C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08062760 @ =gUnknown_83A6360 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _08062748 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08062748 - movs r0, 0x3 - strb r0, [r2] -_08062748: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08062760: .4byte gUnknown_83A6360 - thumb_func_end sub_806271C - - thumb_func_start sub_8062764 -sub_8062764: @ 8062764 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08062780 @ =gObjectEvents - adds r0, r2 - ldr r2, _08062784 @ =sub_8062788 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08062780: .4byte gObjectEvents -_08062784: .4byte sub_8062788 - thumb_func_end sub_8062764 - - thumb_func_start sub_8062788 -sub_8062788: @ 8062788 - push {r4,lr} - ldr r3, _080627A4 @ =gUnknown_83A6364 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080627A4: .4byte gUnknown_83A6364 - thumb_func_end sub_8062788 - - thumb_func_start sub_80627A8 -sub_80627A8: @ 80627A8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080627EC @ =gUnknown_83A6370 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _080627D4 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _080627D4 - movs r0, 0x3 - strb r0, [r2] -_080627D4: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080627EC: .4byte gUnknown_83A6370 - thumb_func_end sub_80627A8 - - thumb_func_start sub_80627F0 -sub_80627F0: @ 80627F0 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0806280C @ =gObjectEvents - adds r0, r2 - ldr r2, _08062810 @ =sub_8062814 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_0806280C: .4byte gObjectEvents -_08062810: .4byte sub_8062814 - thumb_func_end sub_80627F0 - - thumb_func_start sub_8062814 -sub_8062814: @ 8062814 - push {r4,lr} - ldr r3, _08062830 @ =gUnknown_83A6374 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08062830: .4byte gUnknown_83A6374 - thumb_func_end sub_8062814 - - thumb_func_start sub_8062834 -sub_8062834: @ 8062834 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08062878 @ =gUnknown_83A6380 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _08062860 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _08062860 - movs r0, 0x3 - strb r0, [r2] -_08062860: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveObjectEventInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08062878: .4byte gUnknown_83A6380 - thumb_func_end sub_8062834 - - thumb_func_start sub_806287C -sub_806287C: @ 806287C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08062898 @ =gObjectEvents - adds r0, r2 - ldr r2, _0806289C @ =sub_80628A0 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08062898: .4byte gObjectEvents -_0806289C: .4byte sub_80628A0 - thumb_func_end sub_806287C - - thumb_func_start sub_80628A0 -sub_80628A0: @ 80628A0 - push {r4,lr} - ldr r3, _080628BC @ =gUnknown_83A6384 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080628BC: .4byte gUnknown_83A6384 - thumb_func_end sub_80628A0 - - thumb_func_start mss_npc_reset_oampriv3_1_unk2_unk3 -mss_npc_reset_oampriv3_1_unk2_unk3: @ 80628C0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - adds r4, 0x21 - ldrb r0, [r4] - cmp r0, 0 - bne _080628D8 - bl GetPlayerFacingDirection - strb r0, [r4] -_080628D8: - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end mss_npc_reset_oampriv3_1_unk2_unk3 - - thumb_func_start sub_80628E4 -sub_80628E4: @ 80628E4 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - ldr r2, _08062908 @ =gObjectEvents - ldr r3, _0806290C @ =gPlayerAvatar - ldrb r1, [r3, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1C] - cmp r0, 0xFF - beq _08062904 - ldrb r0, [r3, 0x3] - cmp r0, 0x2 - bne _08062910 -_08062904: - movs r0, 0 - b _08062938 - .align 2, 0 -_08062908: .4byte gObjectEvents -_0806290C: .4byte gPlayerAvatar -_08062910: - ldr r5, _08062940 @ =gUnknown_83A6390 - bl player_get_x22 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 22 - adds r4, r5 - bl player_get_direction_upper_nybble - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r4, [r4] - adds r0, r6, 0 - adds r1, r7, 0 - movs r3, 0 - bl _call_via_r4 - lsls r0, 24 - lsrs r0, 24 -_08062938: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08062940: .4byte gUnknown_83A6390 - thumb_func_end sub_80628E4 - - thumb_func_start sub_8062944 -sub_8062944: @ 8062944 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08062962 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_08062962: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062944 - - thumb_func_start sub_806296C -sub_806296C: @ 806296C - movs r0, 0 - bx lr - thumb_func_end sub_806296C - - thumb_func_start sub_8062970 -sub_8062970: @ 8062970 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r1, _080629B4 @ =gInitialMovementTypeFacingDirections - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - bl state_to_direction - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080629B4: .4byte gInitialMovementTypeFacingDirections - thumb_func_end sub_8062970 - - thumb_func_start sub_80629B8 -sub_80629B8: @ 80629B8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _08062A6C @ =gInitialMovementTypeFacingDirections - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl ObjectEventMoveDestCoords - adds r0, r6, 0 - bl GetWalkNormalMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl ObjectEventSetSingleMovement - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl GetCollisionAtCoords - lsls r0, 24 - cmp r0, 0 - bne _08062A3E - mov r1, r8 - cmp r1, 0 - beq _08062A52 - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _08062A52 -_08062A3E: - adds r0, r6, 0 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl ObjectEventSetSingleMovement -_08062A52: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08062A6C: .4byte gInitialMovementTypeFacingDirections - thumb_func_end sub_80629B8 - - thumb_func_start sub_8062A70 -sub_8062A70: @ 8062A70 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _08062B24 @ =gInitialMovementTypeFacingDirections - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl ObjectEventMoveDestCoords - adds r0, r6, 0 - bl sub_8063FB0 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl ObjectEventSetSingleMovement - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl GetCollisionAtCoords - lsls r0, 24 - cmp r0, 0 - bne _08062AF6 - mov r1, r8 - cmp r1, 0 - beq _08062B0A - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _08062B0A -_08062AF6: - adds r0, r6, 0 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl ObjectEventSetSingleMovement -_08062B0A: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08062B24: .4byte gInitialMovementTypeFacingDirections - thumb_func_end sub_8062A70 - - thumb_func_start sub_8062B28 -sub_8062B28: @ 8062B28 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _08062BDC @ =gInitialMovementTypeFacingDirections - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl ObjectEventMoveDestCoords - adds r0, r6, 0 - bl sub_8064034 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl ObjectEventSetSingleMovement - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl GetCollisionAtCoords - lsls r0, 24 - cmp r0, 0 - bne _08062BAE - mov r1, r8 - cmp r1, 0 - beq _08062BC2 - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _08062BC2 -_08062BAE: - adds r0, r6, 0 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl ObjectEventSetSingleMovement -_08062BC2: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08062BDC: .4byte gInitialMovementTypeFacingDirections - thumb_func_end sub_8062B28 - - thumb_func_start sub_8062BE0 -sub_8062BE0: @ 8062BE0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _08062C94 @ =gInitialMovementTypeFacingDirections - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl ObjectEventMoveDestCoords - adds r0, r6, 0 - bl sub_8064060 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl ObjectEventSetSingleMovement - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl GetCollisionAtCoords - lsls r0, 24 - cmp r0, 0 - bne _08062C66 - mov r1, r8 - cmp r1, 0 - beq _08062C7A - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _08062C7A -_08062C66: - adds r0, r6, 0 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl ObjectEventSetSingleMovement -_08062C7A: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08062C94: .4byte gInitialMovementTypeFacingDirections - thumb_func_end sub_8062BE0 - - thumb_func_start cph_IM_DIFFERENT -cph_IM_DIFFERENT: @ 8062C98 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r1, _08062CDC @ =gInitialMovementTypeFacingDirections - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - bl state_to_direction - bl GetJumpInPlaceMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08062CDC: .4byte gInitialMovementTypeFacingDirections - thumb_func_end cph_IM_DIFFERENT - - thumb_func_start sub_8062CE0 -sub_8062CE0: @ 8062CE0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _08062D94 @ =gInitialMovementTypeFacingDirections - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl ObjectEventMoveDestCoords - adds r0, r6, 0 - bl sub_8064194 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl ObjectEventSetSingleMovement - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl GetCollisionAtCoords - lsls r0, 24 - cmp r0, 0 - bne _08062D66 - mov r1, r8 - cmp r1, 0 - beq _08062D7A - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _08062D7A -_08062D66: - adds r0, r6, 0 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl ObjectEventSetSingleMovement -_08062D7A: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08062D94: .4byte gInitialMovementTypeFacingDirections - thumb_func_end sub_8062CE0 - - thumb_func_start oac_hopping -oac_hopping: @ 8062D98 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _08062E5C @ =gInitialMovementTypeFacingDirections - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - ldrh r1, [r4, 0x10] - add r0, sp, 0x4 - strh r1, [r0] - ldrh r0, [r4, 0x12] - mov r5, sp - adds r5, 0x6 - strh r0, [r5] - movs r0, 0x2 - str r0, [sp] - adds r0, r6, 0 - add r1, sp, 0x4 - adds r2, r5, 0 - movs r3, 0x2 - bl sub_8063A6C - adds r0, r6, 0 - bl GetJumpLedgeAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl ObjectEventSetSingleMovement - add r0, sp, 0x4 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl GetCollisionAtCoords - lsls r0, 24 - cmp r0, 0 - bne _08062E2C - mov r1, r8 - cmp r1, 0 - beq _08062E40 - add r0, sp, 0x4 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _08062E40 -_08062E2C: - adds r0, r6, 0 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl ObjectEventSetSingleMovement -_08062E40: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08062E5C: .4byte gInitialMovementTypeFacingDirections - thumb_func_end oac_hopping - - thumb_func_start sub_8062E60 -sub_8062E60: @ 8062E60 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08062E7C @ =gObjectEvents - adds r0, r2 - ldr r2, _08062E80 @ =sub_8062E84 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_08062E7C: .4byte gObjectEvents -_08062E80: .4byte sub_8062E84 - thumb_func_end sub_8062E60 - - thumb_func_start sub_8062E84 -sub_8062E84: @ 8062E84 - push {r4,lr} - ldr r3, _08062EA0 @ =gUnknown_83A63BC - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08062EA0: .4byte gUnknown_83A63BC - thumb_func_end sub_8062E84 - - thumb_func_start mss_08062EA4 -mss_08062EA4: @ 8062EA4 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - ldr r2, _08062EC8 @ =gObjectEvents - ldr r3, _08062ECC @ =gPlayerAvatar - ldrb r1, [r3, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1C] - cmp r0, 0xFF - beq _08062EC4 - ldrb r0, [r3, 0x3] - cmp r0, 0x2 - bne _08062ED0 -_08062EC4: - movs r0, 0 - b _08062EF8 - .align 2, 0 -_08062EC8: .4byte gObjectEvents -_08062ECC: .4byte gPlayerAvatar -_08062ED0: - ldr r5, _08062F00 @ =gUnknown_83A6390 - bl player_get_x22 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 22 - adds r4, r5 - bl player_get_direction_upper_nybble - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08062F04 @ =MetatileBehavior_IsTallGrass - ldr r4, [r4] - adds r0, r6, 0 - adds r1, r7, 0 - bl _call_via_r4 - lsls r0, 24 - lsrs r0, 24 -_08062EF8: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08062F00: .4byte gUnknown_83A6390 -_08062F04: .4byte MetatileBehavior_IsTallGrass - thumb_func_end mss_08062EA4 - - thumb_func_start ObjectEventCB_TreeDisguise -ObjectEventCB_TreeDisguise: @ 8062F08 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _08062F6C @ =gObjectEvents - adds r4, r1, r0 - adds r6, r4, 0 - adds r6, 0x21 - ldrb r0, [r6] - cmp r0, 0 - beq _08062F30 - cmp r0, 0x1 - bne _08062F50 - movs r1, 0x3C - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _08062F50 -_08062F30: - ldr r1, _08062F70 @ =gFieldEffectArguments - adds r2, r1, 0x4 - adds r3, r1, 0 - adds r3, 0x8 - adds r0, r4, 0 - bl ObjectEventGetLocalIdAndMap - movs r0, 0x1C - bl FieldEffectStart - strb r0, [r4, 0x1A] - movs r0, 0x1 - strb r0, [r6] - ldrh r0, [r5, 0x3C] - adds r0, 0x1 - strh r0, [r5, 0x3C] -_08062F50: - movs r0, 0x2E - ldrsh r1, [r5, r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08062F6C @ =gObjectEvents - adds r0, r1 - ldr r2, _08062F74 @ =sub_8062F78 - adds r1, r5, 0 - bl ObjectEventStep - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08062F6C: .4byte gObjectEvents -_08062F70: .4byte gFieldEffectArguments -_08062F74: .4byte sub_8062F78 - thumb_func_end ObjectEventCB_TreeDisguise - - thumb_func_start sub_8062F78 -sub_8062F78: @ 8062F78 - push {lr} - bl npc_reset - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_8062F78 - - thumb_func_start ObjectEventCB_MountainDisguise -ObjectEventCB_MountainDisguise: @ 8062F84 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _08062FE8 @ =gObjectEvents - adds r4, r1, r0 - adds r6, r4, 0 - adds r6, 0x21 - ldrb r0, [r6] - cmp r0, 0 - beq _08062FAC - cmp r0, 0x1 - bne _08062FCC - movs r1, 0x3C - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _08062FCC -_08062FAC: - ldr r1, _08062FEC @ =gFieldEffectArguments - adds r2, r1, 0x4 - adds r3, r1, 0 - adds r3, 0x8 - adds r0, r4, 0 - bl ObjectEventGetLocalIdAndMap - movs r0, 0x1D - bl FieldEffectStart - strb r0, [r4, 0x1A] - movs r0, 0x1 - strb r0, [r6] - ldrh r0, [r5, 0x3C] - adds r0, 0x1 - strh r0, [r5, 0x3C] -_08062FCC: - movs r0, 0x2E - ldrsh r1, [r5, r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08062FE8 @ =gObjectEvents - adds r0, r1 - ldr r2, _08062FF0 @ =sub_8062F78 - adds r1, r5, 0 - bl ObjectEventStep - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08062FE8: .4byte gObjectEvents -_08062FEC: .4byte gFieldEffectArguments -_08062FF0: .4byte sub_8062F78 - thumb_func_end ObjectEventCB_MountainDisguise - - thumb_func_start ObjectEventCB_Hidden1 -ObjectEventCB_Hidden1: @ 8062FF4 - push {r4,lr} - adds r3, r0, 0 - movs r1, 0x3C - ldrsh r0, [r3, r1] - ldr r4, _08063050 @ =gObjectEvents - cmp r0, 0 - bne _08063034 - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x3] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0, 0x3] - adds r2, r3, 0 - adds r2, 0x42 - ldrb r1, [r2] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r3, 0x5] - movs r1, 0xC - orrs r0, r1 - strb r0, [r3, 0x5] - ldrh r0, [r3, 0x3C] - adds r0, 0x1 - strh r0, [r3, 0x3C] -_08063034: - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r2, _08063054 @ =sub_8063058 - adds r1, r3, 0 - bl ObjectEventStep - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08063050: .4byte gObjectEvents -_08063054: .4byte sub_8063058 - thumb_func_end ObjectEventCB_Hidden1 - - thumb_func_start sub_8063058 -sub_8063058: @ 8063058 - push {r4,lr} - ldr r3, _08063074 @ =gUnknown_83A63C8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08063074: .4byte gUnknown_83A63C8 - thumb_func_end sub_8063058 - - thumb_func_start sub_8063078 -sub_8063078: @ 8063078 - push {lr} - bl npc_reset - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_8063078 - - thumb_func_start sub_8063084 -sub_8063084: @ 8063084 - push {r4,lr} - adds r4, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08063096 - movs r0, 0 - strh r0, [r4, 0x30] -_08063096: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8063084 - - thumb_func_start sub_80630A0 -sub_80630A0: @ 80630A0 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080630BC @ =gObjectEvents - adds r0, r2 - ldr r2, _080630C0 @ =sub_80630C4 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080630BC: .4byte gObjectEvents -_080630C0: .4byte sub_80630C4 - thumb_func_end sub_80630A0 - - thumb_func_start sub_80630C4 -sub_80630C4: @ 80630C4 - push {r4,lr} - ldr r3, _080630E0 @ =gUnknown_83A63CC - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080630E0: .4byte gUnknown_83A63CC - thumb_func_end sub_80630C4 - - thumb_func_start sub_80630E4 -sub_80630E4: @ 80630E4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetStepInPlaceDelay16AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80630E4 - - thumb_func_start sub_8063110 -sub_8063110: @ 8063110 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0806312C @ =gObjectEvents - adds r0, r2 - ldr r2, _08063130 @ =sub_8063134 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_0806312C: .4byte gObjectEvents -_08063130: .4byte sub_8063134 - thumb_func_end sub_8063110 - - thumb_func_start sub_8063134 -sub_8063134: @ 8063134 - push {r4,lr} - ldr r3, _08063150 @ =gUnknown_83A63D4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08063150: .4byte gUnknown_83A63D4 - thumb_func_end sub_8063134 - - thumb_func_start sub_8063154 -sub_8063154: @ 8063154 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl sub_8064270 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8063154 - - thumb_func_start sub_8063180 -sub_8063180: @ 8063180 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0806319C @ =gObjectEvents - adds r0, r2 - ldr r2, _080631A0 @ =sub_80631A4 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_0806319C: .4byte gObjectEvents -_080631A0: .4byte sub_80631A4 - thumb_func_end sub_8063180 - - thumb_func_start sub_80631A4 -sub_80631A4: @ 80631A4 - push {r4,lr} - ldr r3, _080631C0 @ =gUnknown_83A63DC - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080631C0: .4byte gUnknown_83A63DC - thumb_func_end sub_80631A4 - - thumb_func_start sub_80631C4 -sub_80631C4: @ 80631C4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetStepInPlaceDelay4AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80631C4 - - thumb_func_start sub_80631F0 -sub_80631F0: @ 80631F0 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0806320C @ =gObjectEvents - adds r0, r2 - ldr r2, _08063210 @ =sub_8063214 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_0806320C: .4byte gObjectEvents -_08063210: .4byte sub_8063214 - thumb_func_end sub_80631F0 - - thumb_func_start sub_8063214 -sub_8063214: @ 8063214 - push {r4,lr} - ldr r3, _08063230 @ =gUnknown_83A63E4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08063230: .4byte gUnknown_83A63E4 - thumb_func_end sub_8063214 - - thumb_func_start sub_8063234 -sub_8063234: @ 8063234 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionMovementAction - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventSetSingleMovement - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8063234 - - thumb_func_start sub_8063268 -sub_8063268: @ 8063268 - push {r4,lr} - adds r4, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - bne _0806327A - movs r0, 0 - b _08063280 -_0806327A: - movs r0, 0x2 - strh r0, [r4, 0x30] - movs r0, 0x1 -_08063280: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8063268 - - thumb_func_start sub_8063288 -sub_8063288: @ 8063288 - ldrb r2, [r0] - movs r1, 0x3 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - movs r0, 0 - bx lr - thumb_func_end sub_8063288 - - thumb_func_start sub_8063298 -sub_8063298: @ 8063298 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080632B4 @ =gObjectEvents - adds r0, r2 - ldr r2, _080632B8 @ =sub_8063304 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080632B4: .4byte gObjectEvents -_080632B8: .4byte sub_8063304 - thumb_func_end sub_8063298 - - thumb_func_start sub_80632BC -sub_80632BC: @ 80632BC - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080632D8 @ =gObjectEvents - adds r0, r2 - ldr r2, _080632DC @ =sub_8063324 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080632D8: .4byte gObjectEvents -_080632DC: .4byte sub_8063324 - thumb_func_end sub_80632BC - - thumb_func_start sub_80632E0 -sub_80632E0: @ 80632E0 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _080632FC @ =gObjectEvents - adds r0, r2 - ldr r2, _08063300 @ =sub_8063344 - bl ObjectEventStep - pop {r0} - bx r0 - .align 2, 0 -_080632FC: .4byte gObjectEvents -_08063300: .4byte sub_8063344 - thumb_func_end sub_80632E0 - - thumb_func_start sub_8063304 -sub_8063304: @ 8063304 - push {r4,lr} - ldr r3, _08063320 @ =gUnknown_83A63F0 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08063320: .4byte gUnknown_83A63F0 - thumb_func_end sub_8063304 - - thumb_func_start sub_8063324 -sub_8063324: @ 8063324 - push {r4,lr} - ldr r3, _08063340 @ =gUnknown_83A63FC - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08063340: .4byte gUnknown_83A63FC - thumb_func_end sub_8063324 - - thumb_func_start sub_8063344 -sub_8063344: @ 8063344 - push {r4,lr} - ldr r3, _08063360 @ =gUnknown_83A6404 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08063360: .4byte gUnknown_83A6404 - thumb_func_end sub_8063344 - - thumb_func_start sub_8063364 -sub_8063364: @ 8063364 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - bl npc_reset - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x98 - bl ObjectEventSetSingleMovement - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8063364 - - thumb_func_start sub_8063384 -sub_8063384: @ 8063384 - push {r4,lr} - adds r4, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - bne _08063396 - movs r0, 0 - b _0806339C -_08063396: - movs r0, 0x2 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0806339C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8063384 - - thumb_func_start sub_80633A4 -sub_80633A4: @ 80633A4 - ldrb r2, [r0] - movs r1, 0x3 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - movs r0, 0 - bx lr - thumb_func_end sub_80633A4 - - thumb_func_start sub_80633B4 -sub_80633B4: @ 80633B4 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - bl npc_reset - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x99 - bl ObjectEventSetSingleMovement - movs r0, 0x1 - strh r0, [r4, 0x30] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80633B4 - - thumb_func_start sub_80633D4 -sub_80633D4: @ 80633D4 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - bl npc_reset - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x9A - bl ObjectEventSetSingleMovement - movs r0, 0x1 - strh r0, [r4, 0x30] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80633D4 - - thumb_func_start sub_80633F4 -sub_80633F4: @ 80633F4 - push {r4,lr} - adds r4, r1, 0 - bl ObjectEventExecSingleMovementAction - lsls r0, 24 - cmp r0, 0 - beq _08063406 - movs r0, 0 - strh r0, [r4, 0x30] -_08063406: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80633F4 - - thumb_func_start npc_reset -npc_reset: @ 8063410 - ldrb r3, [r0] - movs r2, 0x3 - negs r2, r2 - ands r2, r3 - movs r3, 0x41 - negs r3, r3 - ands r2, r3 - movs r3, 0x7F - ands r2, r3 - strb r2, [r0] - movs r2, 0xFF - strb r2, [r0, 0x1C] - movs r0, 0 - strh r0, [r1, 0x30] - bx lr - thumb_func_end npc_reset - - thumb_func_start ObjectEventDirectionToImageAnimId -ObjectEventDirectionToImageAnimId: @ 8063430 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806343C @ =gUnknown_83A640C - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0806343C: .4byte gUnknown_83A640C - thumb_func_end ObjectEventDirectionToImageAnimId - - thumb_func_start get_go_image_anim_num -get_go_image_anim_num: @ 8063440 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806344C @ =gUnknown_83A6415 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0806344C: .4byte gUnknown_83A6415 - thumb_func_end get_go_image_anim_num - - thumb_func_start get_go_fast_image_anim_num -get_go_fast_image_anim_num: @ 8063450 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806345C @ =gUnknown_83A641E - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0806345C: .4byte gUnknown_83A641E - thumb_func_end get_go_fast_image_anim_num - - thumb_func_start get_go_faster_image_anim_num -get_go_faster_image_anim_num: @ 8063460 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806346C @ =gUnknown_83A6427 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0806346C: .4byte gUnknown_83A6427 - thumb_func_end get_go_faster_image_anim_num - - thumb_func_start MovementActionFunc_x03_4 -MovementActionFunc_x03_4: @ 8063470 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806347C @ =gUnknown_83A6430 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0806347C: .4byte gUnknown_83A6430 - thumb_func_end MovementActionFunc_x03_4 - - thumb_func_start sub_8063480 -sub_8063480: @ 8063480 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806348C @ =gUnknown_83A6439 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0806348C: .4byte gUnknown_83A6439 - thumb_func_end sub_8063480 - - thumb_func_start sub_8063490 -sub_8063490: @ 8063490 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806349C @ =gUnknown_83A6442 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0806349C: .4byte gUnknown_83A6442 - thumb_func_end sub_8063490 - - thumb_func_start sub_80634A0 -sub_80634A0: @ 80634A0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080634AC @ =gUnknown_83A644B - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080634AC: .4byte gUnknown_83A644B - thumb_func_end sub_80634A0 - - thumb_func_start sub_80634B0 -sub_80634B0: @ 80634B0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080634BC @ =gUnknown_83A6454 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080634BC: .4byte gUnknown_83A6454 - thumb_func_end sub_80634B0 - - thumb_func_start sub_80634C0 -sub_80634C0: @ 80634C0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080634CC @ =gUnknown_83A645D - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080634CC: .4byte gUnknown_83A645D - thumb_func_end sub_80634C0 - - thumb_func_start sub_80634D0 -sub_80634D0: @ 80634D0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080634DC @ =gUnknown_83A6466 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080634DC: .4byte gUnknown_83A6466 - thumb_func_end sub_80634D0 - - thumb_func_start sub_80634E0 -sub_80634E0: @ 80634E0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080634EC @ =gUnknown_83A646F - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080634EC: .4byte gUnknown_83A646F - thumb_func_end sub_80634E0 - - thumb_func_start sub_80634F0 -sub_80634F0: @ 80634F0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080634FC @ =gUnknown_83A6478 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080634FC: .4byte gUnknown_83A6478 - thumb_func_end sub_80634F0 - - thumb_func_start sub_8063500 -sub_8063500: @ 8063500 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806350C @ =gUnknown_83A6481 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0806350C: .4byte gUnknown_83A6481 - thumb_func_end sub_8063500 - - thumb_func_start sub_8063510 -sub_8063510: @ 8063510 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806351C @ =gUnknown_83A648A - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0806351C: .4byte gUnknown_83A648A - thumb_func_end sub_8063510 - - thumb_func_start get_run_image_anim_num -get_run_image_anim_num: @ 8063520 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806352C @ =gUnknown_83A6493 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0806352C: .4byte gUnknown_83A6493 - thumb_func_end get_run_image_anim_num - - thumb_func_start sub_8063530 -sub_8063530: @ 8063530 - push {lr} - adds r2, r0, 0 - ldr r1, _08063538 @ =gUnknown_83A3698 - b _08063548 - .align 2, 0 -_08063538: .4byte gUnknown_83A3698 -_0806353C: - ldr r0, [r1] - cmp r0, r2 - bne _08063546 - adds r0, r1, 0 - b _08063550 -_08063546: - adds r1, 0x8 -_08063548: - ldr r0, [r1] - cmp r0, 0 - bne _0806353C - movs r0, 0 -_08063550: - pop {r1} - bx r1 - thumb_func_end sub_8063530 - - thumb_func_start npc_apply_anim_looping -npc_apply_anim_looping: @ 8063554 - push {r4,lr} - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldrb r0, [r0, 0x1] - lsls r0, 27 - cmp r0, 0 - blt _08063596 - adds r0, r4, 0 - adds r0, 0x2A - strb r2, [r0] - ldr r0, [r4, 0x8] - bl sub_8063530 - adds r1, r4, 0 - adds r1, 0x2B - cmp r0, 0 - beq _0806358E - ldrb r2, [r1] - ldrb r3, [r0, 0x4] - cmp r2, r3 - bne _08063584 - ldrb r0, [r0, 0x7] - b _0806358C -_08063584: - ldrb r3, [r0, 0x5] - cmp r2, r3 - bne _0806358E - ldrb r0, [r0, 0x6] -_0806358C: - strb r0, [r1] -_0806358E: - ldrb r1, [r1] - adds r0, r4, 0 - bl SeekSpriteAnim -_08063596: - pop {r4} - pop {r0} - bx r0 - thumb_func_end npc_apply_anim_looping - - thumb_func_start obj_npc_animation_step -obj_npc_animation_step: @ 806359C - push {r4,lr} - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldrb r0, [r0, 0x1] - lsls r0, 27 - cmp r0, 0 - blt _080635D4 - adds r0, r4, 0 - adds r0, 0x2A - strb r2, [r0] - ldr r0, [r4, 0x8] - bl sub_8063530 - adds r2, r0, 0 - cmp r2, 0 - beq _080635D4 - ldrb r1, [r2, 0x5] - adds r0, r4, 0 - adds r0, 0x2B - ldrb r0, [r0] - ldrb r3, [r2, 0x4] - cmp r0, r3 - bhi _080635CE - ldrb r1, [r2, 0x4] -_080635CE: - adds r0, r4, 0 - bl SeekSpriteAnim -_080635D4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end obj_npc_animation_step - - thumb_func_start sub_80635DC -sub_80635DC: @ 80635DC - push {lr} - lsls r1, 16 - lsrs r1, 16 - lsls r3, 16 - lsrs r3, 16 - lsls r0, 16 - asrs r0, 16 - lsls r2, 16 - asrs r2, 16 - cmp r0, r2 - ble _080635F6 - movs r0, 0x3 - b _0806360C -_080635F6: - cmp r0, r2 - bge _080635FE - movs r0, 0x4 - b _0806360C -_080635FE: - lsls r1, 16 - lsls r0, r3, 16 - cmp r1, r0 - bgt _0806360A - movs r0, 0x1 - b _0806360C -_0806360A: - movs r0, 0x2 -_0806360C: - pop {r1} - bx r1 - thumb_func_end sub_80635DC - - thumb_func_start SetTrainerMovementType -SetTrainerMovementType: @ 8063610 - push {r4,lr} - mov r12, r0 - lsls r1, 24 - lsrs r1, 24 - movs r3, 0 - strb r1, [r0, 0x6] - adds r0, 0x21 - strb r3, [r0] - adds r0, 0x1 - strb r3, [r0] - ldr r4, _08063654 @ =gSprites - mov r0, r12 - ldrb r2, [r0, 0x4] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r2, r4, 0 - adds r2, 0x1C - adds r0, r2 - ldr r2, _08063658 @ =gMovementTypeCallbacks - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - str r1, [r0] - mov r0, r12 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x30] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08063654: .4byte gSprites -_08063658: .4byte gMovementTypeCallbacks - thumb_func_end SetTrainerMovementType - - thumb_func_start GetTrainerFacingDirectionMovementType -GetTrainerFacingDirectionMovementType: @ 806365C - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08063668 @ =gUnknown_83A649C - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_08063668: .4byte gUnknown_83A649C - thumb_func_end GetTrainerFacingDirectionMovementType - - thumb_func_start npc_block_way__next_tile -npc_block_way__next_tile: @ 806366C - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - lsls r5, r1, 24 - lsrs r5, 24 - 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, r5, 0 - mov r1, sp - adds r2, r4, 0 - bl MoveCoords - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r4, r0] - adds r0, r6, 0 - adds r3, r5, 0 - bl GetCollisionAtCoords - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end npc_block_way__next_tile - - thumb_func_start GetCollisionAtCoords -GetCollisionAtCoords: @ 80636AC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - lsls r1, 16 - lsls r2, 16 - lsls r3, 24 - lsrs r7, r3, 24 - mov r8, r7 - lsrs r0, r1, 16 - mov r9, r0 - asrs r5, r1, 16 - lsrs r0, r2, 16 - mov r10, r0 - asrs r4, r2, 16 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl IsCoordOutsideObjectEventMovementRect - lsls r0, 24 - cmp r0, 0 - beq _080636E2 - movs r0, 0x1 - b _08063762 -_080636E2: - adds r0, r5, 0 - adds r1, r4, 0 - bl MapGridIsImpassableAt - lsls r0, 24 - cmp r0, 0 - bne _08063724 - adds r0, r5, 0 - adds r1, r4, 0 - bl GetMapBorderIdAt - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _08063724 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - adds r3, r7, 0 - bl IsMetatileDirectionallyImpassable - lsls r0, 24 - cmp r0, 0 - bne _08063724 - ldrb r0, [r6, 0x1] - lsrs r0, 7 - cmp r0, 0 - beq _08063728 - mov r0, r8 - bl CanCameraMoveInDirection - cmp r0, 0 - bne _08063728 -_08063724: - movs r0, 0x2 - b _08063762 -_08063728: - ldrb r0, [r6, 0xB] - lsls r0, 28 - lsrs r0, 28 - mov r2, r9 - lsls r1, r2, 16 - asrs r5, r1, 16 - mov r2, r10 - lsls r1, r2, 16 - asrs r4, r1, 16 - adds r1, r5, 0 - adds r2, r4, 0 - bl IsZCoordMismatchAt - lsls r0, 24 - cmp r0, 0 - beq _0806374C - movs r0, 0x3 - b _08063762 -_0806374C: - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl CheckForCollisionBetweenObjectEvents - lsls r0, 24 - cmp r0, 0 - bne _08063760 - movs r0, 0 - b _08063762 -_08063760: - movs r0, 0x4 -_08063762: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GetCollisionAtCoords - - thumb_func_start GetCollisionFlagsAtCoords -GetCollisionFlagsAtCoords: @ 8063770 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r7, r0, 0 - lsls r1, 16 - lsls r2, 16 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - lsrs r0, r1, 16 - mov r9, r0 - asrs r6, r1, 16 - lsrs r0, r2, 16 - mov r10, r0 - asrs r5, r2, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl IsCoordOutsideObjectEventMovementRect - lsls r0, 24 - lsrs r0, 24 - negs r1, r0 - orrs r1, r0 - lsrs r4, r1, 31 - adds r0, r6, 0 - adds r1, r5, 0 - bl MapGridIsImpassableAt - lsls r0, 24 - cmp r0, 0 - bne _080637E8 - adds r0, r6, 0 - adds r1, r5, 0 - bl GetMapBorderIdAt - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080637E8 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - mov r3, r8 - bl IsMetatileDirectionallyImpassable - lsls r0, 24 - cmp r0, 0 - bne _080637E8 - ldrb r0, [r7, 0x1] - lsrs r0, 7 - cmp r0, 0 - beq _080637EC - mov r0, r8 - bl CanCameraMoveInDirection - cmp r0, 0 - bne _080637EC -_080637E8: - movs r0, 0x2 - orrs r4, r0 -_080637EC: - ldrb r0, [r7, 0xB] - lsls r0, 28 - lsrs r0, 28 - mov r2, r9 - lsls r1, r2, 16 - asrs r6, r1, 16 - mov r2, r10 - lsls r1, r2, 16 - asrs r5, r1, 16 - adds r1, r6, 0 - adds r2, r5, 0 - bl IsZCoordMismatchAt - lsls r0, 24 - cmp r0, 0 - beq _08063814 - movs r0, 0x4 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08063814: - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl CheckForCollisionBetweenObjectEvents - lsls r0, 24 - cmp r0, 0 - beq _0806382C - movs r0, 0x8 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0806382C: - adds r0, r4, 0 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GetCollisionFlagsAtCoords - - thumb_func_start IsCoordOutsideObjectEventMovementRect -IsCoordOutsideObjectEventMovementRect: @ 806383C - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r3, r1, 16 - lsls r2, 16 - lsrs r5, r2, 16 - ldrb r1, [r4, 0x19] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - beq _08063874 - lsls r1, 28 - lsrs r2, r1, 28 - ldrh r0, [r4, 0xC] - subs r2, r0, r2 - lsrs r1, 28 - adds r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - lsls r2, 16 - lsls r0, r3, 16 - asrs r3, r0, 16 - cmp r2, r0 - bgt _080638A0 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r3 - blt _080638A0 -_08063874: - ldrb r1, [r4, 0x19] - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0 - beq _080638A4 - lsls r1, 24 - lsrs r2, r1, 28 - ldrh r0, [r4, 0xE] - subs r2, r0, r2 - lsrs r1, 28 - adds r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - lsls r2, 16 - lsls r0, r5, 16 - asrs r3, r0, 16 - cmp r2, r0 - bgt _080638A0 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r3 - bge _080638A4 -_080638A0: - movs r0, 0x1 - b _080638A6 -_080638A4: - movs r0, 0 -_080638A6: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end IsCoordOutsideObjectEventMovementRect - - thumb_func_start IsMetatileDirectionallyImpassable -IsMetatileDirectionallyImpassable: @ 80638AC - push {r4-r7,lr} - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 16 - lsrs r7, r2, 16 - lsls r3, 24 - ldr r1, _080638F4 @ =gUnknown_83A64A8 - lsrs r3, 22 - subs r5, r3, 0x4 - adds r1, r5, r1 - ldrb r0, [r0, 0x1E] - ldr r1, [r1] - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080638EE - ldr r4, _080638F8 @ =gUnknown_83A64B8 - adds r4, r5, r4 - lsls r0, r6, 16 - asrs r0, 16 - lsls r1, r7, 16 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - beq _080638FC -_080638EE: - movs r0, 0x1 - b _080638FE - .align 2, 0 -_080638F4: .4byte gUnknown_83A64A8 -_080638F8: .4byte gUnknown_83A64B8 -_080638FC: - movs r0, 0 -_080638FE: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end IsMetatileDirectionallyImpassable - - thumb_func_start CheckForCollisionBetweenObjectEvents -CheckForCollisionBetweenObjectEvents: @ 8063904 - push {r4-r7,lr} - adds r6, r0, 0 - lsls r1, 16 - lsrs r7, r1, 16 - movs r4, 0 - lsls r2, 16 - asrs r5, r2, 16 -_08063912: - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - ldr r1, _08063968 @ =gObjectEvents - adds r2, r0, r1 - ldrb r0, [r2] - lsls r0, 31 - cmp r0, 0 - beq _0806396C - cmp r2, r6 - beq _0806396C - movs r0, 0x10 - ldrsh r1, [r2, r0] - lsls r0, r7, 16 - asrs r3, r0, 16 - cmp r1, r3 - bne _0806393C - movs r1, 0x12 - ldrsh r0, [r2, r1] - cmp r0, r5 - beq _0806394C -_0806393C: - movs r1, 0x14 - ldrsh r0, [r2, r1] - cmp r0, r3 - bne _0806396C - movs r1, 0x16 - ldrsh r0, [r2, r1] - cmp r0, r5 - bne _0806396C -_0806394C: - ldrb r0, [r6, 0xB] - lsls r0, 28 - lsrs r0, 28 - ldrb r1, [r2, 0xB] - lsls r1, 28 - lsrs r1, 28 - bl AreZCoordsCompatible - lsls r0, 24 - cmp r0, 0 - beq _0806396C - movs r0, 0x1 - b _08063978 - .align 2, 0 -_08063968: .4byte gObjectEvents -_0806396C: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _08063912 - movs r0, 0 -_08063978: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CheckForCollisionBetweenObjectEvents - - thumb_func_start IsBerryTreeSparkling -IsBerryTreeSparkling: @ 8063980 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _080639CC - ldr r3, _080639C4 @ =gSprites - ldr r2, _080639C8 @ =gObjectEvents - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x3C] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080639CC - movs r0, 0x1 - b _080639CE - .align 2, 0 -_080639C4: .4byte gSprites -_080639C8: .4byte gObjectEvents -_080639CC: - movs r0, 0 -_080639CE: - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end IsBerryTreeSparkling - - thumb_func_start sub_80639D4 -sub_80639D4: @ 80639D4 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _08063A12 - ldr r3, _08063A18 @ =gSprites - ldr r2, _08063A1C @ =gObjectEvents - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r2, [r1, 0x3C] - movs r0, 0x4 - orrs r0, r2 - strh r0, [r1, 0x3C] -_08063A12: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08063A18: .4byte gSprites -_08063A1C: .4byte gObjectEvents - thumb_func_end sub_80639D4 - - thumb_func_start MoveCoords -MoveCoords: @ 8063A20 - push {r4,lr} - lsls r0, 24 - ldr r3, _08063A40 @ =gUnknown_83A64C8 - lsrs r0, 22 - adds r0, r3 - ldrh r3, [r0] - ldrh r4, [r1] - adds r3, r4 - strh r3, [r1] - ldrh r0, [r0, 0x2] - ldrh r1, [r2] - adds r0, r1 - strh r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08063A40: .4byte gUnknown_83A64C8 - thumb_func_end MoveCoords - - thumb_func_start sub_8063A44 -sub_8063A44: @ 8063A44 - push {r4,lr} - lsls r0, 24 - ldr r3, _08063A68 @ =gUnknown_83A64C8 - lsrs r0, 22 - adds r0, r3 - ldrh r3, [r0] - lsls r3, 4 - ldrh r4, [r1] - adds r3, r4 - strh r3, [r1] - ldrh r0, [r0, 0x2] - lsls r0, 4 - ldrh r1, [r2] - adds r0, r1 - strh r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08063A68: .4byte gUnknown_83A64C8 - thumb_func_end sub_8063A44 - - thumb_func_start sub_8063A6C -sub_8063A6C: @ 8063A6C - push {r4-r7,lr} - adds r4, r1, 0 - ldr r1, [sp, 0x14] - lsls r0, 24 - lsls r3, 16 - lsrs r3, 16 - adds r7, r3, 0 - lsls r1, 16 - lsrs r6, r1, 16 - mov r12, r6 - ldr r1, _08063AD0 @ =gUnknown_83A64C8 - lsrs r0, 22 - adds r5, r0, r1 - movs r0, 0 - ldrsh r1, [r5, r0] - cmp r1, 0 - ble _08063A98 - lsls r0, r3, 16 - asrs r0, 16 - ldrh r3, [r4] - adds r0, r3 - strh r0, [r4] -_08063A98: - cmp r1, 0 - bge _08063AA6 - ldrh r1, [r4] - lsls r0, r7, 16 - asrs r0, 16 - subs r1, r0 - strh r1, [r4] -_08063AA6: - movs r0, 0x2 - ldrsh r1, [r5, r0] - cmp r1, 0 - ble _08063AB8 - lsls r0, r6, 16 - asrs r0, 16 - ldrh r3, [r2] - adds r0, r3 - strh r0, [r2] -_08063AB8: - cmp r1, 0 - bge _08063AC8 - ldrh r1, [r2] - mov r3, r12 - lsls r0, r3, 16 - asrs r0, 16 - subs r1, r0 - strh r1, [r2] -_08063AC8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08063AD0: .4byte gUnknown_83A64C8 - thumb_func_end sub_8063A6C - - thumb_func_start sub_8063AD4 -sub_8063AD4: @ 8063AD4 - push {r4,r5,lr} - ldr r5, _08063B10 @ =gSaveBlock1Ptr - ldr r4, [r5] - ldrh r4, [r4] - lsls r0, 16 - asrs r0, 16 - subs r0, r4 - lsls r0, 4 - strh r0, [r2] - ldr r0, [r5] - ldrh r0, [r0, 0x2] - lsls r1, 16 - asrs r1, 16 - subs r1, r0 - lsls r1, 4 - strh r1, [r3] - ldr r1, _08063B14 @ =gTotalCameraPixelOffsetX - ldrh r0, [r2] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r2] - ldr r1, _08063B18 @ =gTotalCameraPixelOffsetY - ldrh r0, [r3] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r3] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08063B10: .4byte gSaveBlock1Ptr -_08063B14: .4byte gTotalCameraPixelOffsetX -_08063B18: .4byte gTotalCameraPixelOffsetY - thumb_func_end sub_8063AD4 - - thumb_func_start SetSpritePosToMapCoords -SetSpritePosToMapCoords: @ 8063B1C - push {r4-r7,lr} - adds r7, r2, 0 - mov r12, r3 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r0, _08063BB0 @ =gTotalCameraPixelOffsetX - ldrh r0, [r0] - negs r0, r0 - ldr r1, _08063BB4 @ =gFieldCamera - ldr r2, [r1, 0x10] - subs r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, _08063BB8 @ =gTotalCameraPixelOffsetY - ldrh r0, [r0] - negs r0, r0 - ldr r1, [r1, 0x14] - subs r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r2, 0 - ble _08063B56 - lsls r0, r3, 16 - movs r3, 0x80 - lsls r3, 13 - adds r0, r3 - lsrs r3, r0, 16 -_08063B56: - cmp r2, 0 - bge _08063B62 - lsls r0, r3, 16 - ldr r2, _08063BBC @ =0xfff00000 - adds r0, r2 - lsrs r3, r0, 16 -_08063B62: - cmp r1, 0 - ble _08063B70 - lsls r0, r4, 16 - movs r2, 0x80 - lsls r2, 13 - adds r0, r2 - lsrs r4, r0, 16 -_08063B70: - cmp r1, 0 - bge _08063B7C - lsls r0, r4, 16 - ldr r1, _08063BBC @ =0xfff00000 - adds r0, r1 - lsrs r4, r0, 16 -_08063B7C: - ldr r2, _08063BC0 @ =gSaveBlock1Ptr - ldr r0, [r2] - ldrh r1, [r0] - lsls r0, r5, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 4 - lsls r1, r3, 16 - asrs r1, 16 - adds r1, r0 - strh r1, [r7] - ldr r0, [r2] - ldrh r1, [r0, 0x2] - lsls r0, r6, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 4 - lsls r1, r4, 16 - asrs r1, 16 - adds r1, r0 - mov r2, r12 - strh r1, [r2] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08063BB0: .4byte gTotalCameraPixelOffsetX -_08063BB4: .4byte gFieldCamera -_08063BB8: .4byte gTotalCameraPixelOffsetY -_08063BBC: .4byte 0xfff00000 -_08063BC0: .4byte gSaveBlock1Ptr - thumb_func_end SetSpritePosToMapCoords - - thumb_func_start sub_8063BC4 -sub_8063BC4: @ 8063BC4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r6, r0, 0 - mov r8, r1 - adds r4, r2, 0 - adds r5, r3, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - movs r1, 0 - ldrsh r0, [r6, r1] - mov r2, r8 - movs r3, 0 - ldrsh r1, [r2, r3] - adds r2, r6, 0 - mov r3, r8 - bl SetSpritePosToMapCoords - lsls r4, 16 - asrs r4, 16 - ldrh r0, [r6] - adds r4, r0 - strh r4, [r6] - lsls r5, 16 - asrs r5, 16 - mov r1, r8 - ldrh r1, [r1] - adds r5, r1 - mov r2, r8 - strh r5, [r2] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8063BC4 - - thumb_func_start GetObjectEventMovingCameraOffset -GetObjectEventMovingCameraOffset: @ 8063C10 - push {lr} - adds r2, r0, 0 - movs r0, 0 - strh r0, [r2] - strh r0, [r1] - ldr r3, _08063C4C @ =gFieldCamera - ldr r0, [r3, 0x10] - cmp r0, 0 - ble _08063C26 - movs r0, 0x1 - strh r0, [r2] -_08063C26: - ldr r0, [r3, 0x10] - cmp r0, 0 - bge _08063C32 - ldrh r0, [r2] - subs r0, 0x1 - strh r0, [r2] -_08063C32: - ldr r2, [r3, 0x14] - cmp r2, 0 - ble _08063C3E - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_08063C3E: - cmp r2, 0 - bge _08063C48 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] -_08063C48: - pop {r0} - bx r0 - .align 2, 0 -_08063C4C: .4byte gFieldCamera - thumb_func_end GetObjectEventMovingCameraOffset - - thumb_func_start ObjectEventMoveDestCoords -ObjectEventMoveDestCoords: @ 8063C50 - push {r4,lr} - lsls r1, 24 - lsrs r1, 24 - ldrh r4, [r0, 0x10] - strh r4, [r2] - ldrh r0, [r0, 0x12] - strh r0, [r3] - adds r0, r1, 0 - adds r1, r2, 0 - adds r2, r3, 0 - bl MoveCoords - pop {r4} - pop {r0} - bx r0 - thumb_func_end ObjectEventMoveDestCoords - - thumb_func_start ObjectEventIsMovementOverridden -ObjectEventIsMovementOverridden: @ 8063C70 - push {lr} - ldrb r1, [r0] - movs r0, 0x42 - ands r0, r1 - cmp r0, 0 - bne _08063C80 - movs r0, 0 - b _08063C82 -_08063C80: - movs r0, 0x1 -_08063C82: - pop {r1} - bx r1 - thumb_func_end ObjectEventIsMovementOverridden - - thumb_func_start ObjectEventIsSpecialAnimActive -ObjectEventIsSpecialAnimActive: @ 8063C88 - push {lr} - adds r1, r0, 0 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - bge _08063C9E - ldrb r0, [r1, 0x1C] - cmp r0, 0xFF - beq _08063C9E - movs r0, 0x1 - b _08063CA0 -_08063C9E: - movs r0, 0 -_08063CA0: - pop {r1} - bx r1 - thumb_func_end ObjectEventIsSpecialAnimActive - - thumb_func_start ObjectEventSetHeldMovement -ObjectEventSetHeldMovement: @ 8063CA4 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - bl sub_8112CAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08063CC8 - adds r0, r4, 0 - bl ObjectEventIsMovementOverridden - lsls r0, 24 - cmp r0, 0 - beq _08063CCE - movs r0, 0x1 - b _08063CF4 -_08063CC8: - adds r0, r4, 0 - bl ObjectEventClearAnimIfSpecialAnimActive -_08063CCE: - adds r0, r4, 0 - bl UnfreezeObjectEvent - movs r3, 0 - strb r5, [r4, 0x1C] - ldrb r0, [r4] - movs r1, 0x40 - orrs r0, r1 - movs r1, 0x7F - ands r0, r1 - strb r0, [r4] - ldr r2, _08063CFC @ =gSprites - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r3, [r0, 0x32] - movs r0, 0 -_08063CF4: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08063CFC: .4byte gSprites - thumb_func_end ObjectEventSetHeldMovement - - thumb_func_start ObjectEventForceSetSpecialAnim -ObjectEventForceSetSpecialAnim: @ 8063D00 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - bl ObjectEventClearAnimIfSpecialAnimActive - adds r0, r5, 0 - adds r1, r4, 0 - bl ObjectEventSetHeldMovement - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end ObjectEventForceSetSpecialAnim - - thumb_func_start ObjectEventClearAnimIfSpecialAnimActive -ObjectEventClearAnimIfSpecialAnimActive: @ 8063D1C - push {lr} - adds r1, r0, 0 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - bge _08063D2E - adds r0, r1, 0 - bl ObjectEventClearAnim -_08063D2E: - pop {r0} - bx r0 - thumb_func_end ObjectEventClearAnimIfSpecialAnimActive - - thumb_func_start ObjectEventClearAnim -ObjectEventClearAnim: @ 8063D34 - movs r1, 0xFF - strb r1, [r0, 0x1C] - ldrb r2, [r0] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - movs r2, 0x7F - ands r1, r2 - strb r1, [r0] - ldr r3, _08063D64 @ =gSprites - ldrb r2, [r0, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - movs r2, 0 - strh r2, [r1, 0x30] - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x32] - bx lr - .align 2, 0 -_08063D64: .4byte gSprites - thumb_func_end ObjectEventClearAnim - - thumb_func_start ObjectEventCheckHeldMovementStatus -ObjectEventCheckHeldMovementStatus: @ 8063D68 - push {lr} - ldrb r1, [r0] - lsls r0, r1, 25 - cmp r0, 0 - blt _08063D76 - movs r0, 0x10 - b _08063D78 -_08063D76: - lsrs r0, r1, 7 -_08063D78: - pop {r1} - bx r1 - thumb_func_end ObjectEventCheckHeldMovementStatus - - thumb_func_start ObjectEventClearHeldMovementIfFinished -ObjectEventClearHeldMovementIfFinished: @ 8063D7C - push {r4,r5,lr} - adds r5, r0, 0 - bl ObjectEventCheckHeldMovementStatus - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08063D96 - cmp r4, 0x10 - beq _08063D96 - adds r0, r5, 0 - bl ObjectEventClearAnimIfSpecialAnimActive -_08063D96: - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ObjectEventClearHeldMovementIfFinished - - thumb_func_start ObjectEventGetSpecialAnim -ObjectEventGetSpecialAnim: @ 8063DA0 - push {lr} - adds r1, r0, 0 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08063DB0 - movs r0, 0xFF - b _08063DB2 -_08063DB0: - ldrb r0, [r1, 0x1C] -_08063DB2: - pop {r1} - bx r1 - thumb_func_end ObjectEventGetSpecialAnim - - thumb_func_start ObjectEventStep -ObjectEventStep: @ 8063DB8 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - bl DoGroundEffects_OnSpawn - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80679C8 - adds r0, r4, 0 - bl ObjectEventIsSpecialAnimActive - lsls r0, 24 - cmp r0, 0 - beq _08063DE2 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventExecSpecialAnim - b _08063DF8 -_08063DE2: - ldrb r0, [r4, 0x1] - lsls r0, 31 - cmp r0, 0 - bne _08063DF8 -_08063DEA: - adds r0, r4, 0 - adds r1, r5, 0 - bl _call_via_r6 - lsls r0, 24 - cmp r0, 0 - bne _08063DEA -_08063DF8: - adds r0, r4, 0 - adds r1, r5, 0 - bl DoGroundEffects_OnBeginStep - adds r0, r4, 0 - adds r1, r5, 0 - bl DoGroundEffects_OnFinishStep - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_obj_transfer_image_anim_pause_flag - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80679F8 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventUpdateSubpriority - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end ObjectEventStep - - thumb_func_start sub_8063E28 -sub_8063E28: @ 8063E28 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl DoGroundEffects_OnSpawn - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80679C8 - adds r0, r4, 0 - bl ObjectEventIsSpecialAnimActive - lsls r0, 24 - cmp r0, 0 - beq _08063E5C - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08063E5C - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventExecHeldMovementAction -_08063E5C: - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsIce_2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08063E78 - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsUnknownMovement48 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08063E80 -_08063E78: - ldrb r0, [r4, 0x1] - movs r1, 0x4 - orrs r0, r1 - b _08063E88 -_08063E80: - ldrb r1, [r4, 0x1] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 -_08063E88: - strb r0, [r4, 0x1] - adds r0, r4, 0 - adds r1, r5, 0 - bl DoGroundEffects_OnBeginStep - adds r0, r4, 0 - adds r1, r5, 0 - bl DoGroundEffects_OnFinishStep - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_obj_transfer_image_anim_pause_flag - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80679F8 - adds r0, r4, 0 - adds r1, r5, 0 - bl ObjectEventUpdateSubpriority - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8063E28 - - thumb_func_start GetFaceDirectionMovementAction -GetFaceDirectionMovementAction: @ 8063EB8 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08063EE0 @ =gUnknown_83A64EC - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08063ED0 - movs r4, 0 -_08063ED0: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08063EE0: .4byte gUnknown_83A64EC - thumb_func_end GetFaceDirectionMovementAction - - thumb_func_start sub_8063EE4 -sub_8063EE4: @ 8063EE4 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08063F0C @ =gUnknown_83A64F1 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08063EFC - movs r4, 0 -_08063EFC: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08063F0C: .4byte gUnknown_83A64F1 - thumb_func_end sub_8063EE4 - - thumb_func_start sub_8063F10 -sub_8063F10: @ 8063F10 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _08063F1C - movs r1, 0 -_08063F1C: - ldr r0, _08063F28 @ =gUnknown_83A64F6 - adds r0, r1, r0 - ldrb r0, [r0] - pop {r1} - bx r1 - .align 2, 0 -_08063F28: .4byte gUnknown_83A64F6 - thumb_func_end sub_8063F10 - - thumb_func_start sub_8063F2C -sub_8063F2C: @ 8063F2C - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08063F54 @ =gUnknown_83A64FB - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08063F44 - movs r4, 0 -_08063F44: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08063F54: .4byte gUnknown_83A64FB - thumb_func_end sub_8063F2C - - thumb_func_start sub_8063F58 -sub_8063F58: @ 8063F58 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08063F80 @ =gUnknown_83A6500 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08063F70 - movs r4, 0 -_08063F70: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08063F80: .4byte gUnknown_83A6500 - thumb_func_end sub_8063F58 - - thumb_func_start GetWalkNormalMovementAction -GetWalkNormalMovementAction: @ 8063F84 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08063FAC @ =gUnknown_83A6505 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08063F9C - movs r4, 0 -_08063F9C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08063FAC: .4byte gUnknown_83A6505 - thumb_func_end GetWalkNormalMovementAction - - thumb_func_start sub_8063FB0 -sub_8063FB0: @ 8063FB0 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08063FD8 @ =gUnknown_83A650A - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08063FC8 - movs r4, 0 -_08063FC8: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08063FD8: .4byte gUnknown_83A650A - thumb_func_end sub_8063FB0 - - thumb_func_start sub_8063FDC -sub_8063FDC: @ 8063FDC - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08064004 @ =gUnknown_83A650F - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08063FF4 - movs r4, 0 -_08063FF4: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064004: .4byte gUnknown_83A650F - thumb_func_end sub_8063FDC - - thumb_func_start sub_8064008 -sub_8064008: @ 8064008 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08064030 @ =gUnknown_83A6514 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08064020 - movs r4, 0 -_08064020: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064030: .4byte gUnknown_83A6514 - thumb_func_end sub_8064008 - - thumb_func_start sub_8064034 -sub_8064034: @ 8064034 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0806405C @ =gUnknown_83A6519 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _0806404C - movs r4, 0 -_0806404C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806405C: .4byte gUnknown_83A6519 - thumb_func_end sub_8064034 - - thumb_func_start sub_8064060 -sub_8064060: @ 8064060 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08064088 @ =gUnknown_83A651E - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08064078 - movs r4, 0 -_08064078: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064088: .4byte gUnknown_83A651E - thumb_func_end sub_8064060 - - thumb_func_start sub_806408C -sub_806408C: @ 806408C - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080640B4 @ =gUnknown_83A6523 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080640A4 - movs r4, 0 -_080640A4: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080640B4: .4byte gUnknown_83A6523 - thumb_func_end sub_806408C - - thumb_func_start sub_80640B8 -sub_80640B8: @ 80640B8 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080640E0 @ =gUnknown_83A6528 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080640D0 - movs r4, 0 -_080640D0: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080640E0: .4byte gUnknown_83A6528 - thumb_func_end sub_80640B8 - - thumb_func_start sub_80640E4 -sub_80640E4: @ 80640E4 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0806410C @ =gUnknown_83A652D - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080640FC - movs r4, 0 -_080640FC: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806410C: .4byte gUnknown_83A652D - thumb_func_end sub_80640E4 - - thumb_func_start GetJumpLedgeAnimId -GetJumpLedgeAnimId: @ 8064110 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08064138 @ =gUnknown_83A6532 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08064128 - movs r4, 0 -_08064128: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064138: .4byte gUnknown_83A6532 - thumb_func_end GetJumpLedgeAnimId - - thumb_func_start GetJumpInPlaceMovementAction -GetJumpInPlaceMovementAction: @ 806413C - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08064164 @ =gUnknown_83A6537 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08064154 - movs r4, 0 -_08064154: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064164: .4byte gUnknown_83A6537 - thumb_func_end GetJumpInPlaceMovementAction - - thumb_func_start sub_8064168 -sub_8064168: @ 8064168 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08064190 @ =gUnknown_83A653C - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08064180 - movs r4, 0 -_08064180: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064190: .4byte gUnknown_83A653C - thumb_func_end sub_8064168 - - thumb_func_start sub_8064194 -sub_8064194: @ 8064194 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080641BC @ =gUnknown_83A6541 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080641AC - movs r4, 0 -_080641AC: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080641BC: .4byte gUnknown_83A6541 - thumb_func_end sub_8064194 - - thumb_func_start sub_80641C0 -sub_80641C0: @ 80641C0 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080641E8 @ =gUnknown_83A6546 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080641D8 - movs r4, 0 -_080641D8: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080641E8: .4byte gUnknown_83A6546 - thumb_func_end sub_80641C0 - - thumb_func_start sub_80641EC -sub_80641EC: @ 80641EC - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08064214 @ =gUnknown_83A654B - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08064204 - movs r4, 0 -_08064204: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064214: .4byte gUnknown_83A654B - thumb_func_end sub_80641EC - - thumb_func_start GetStepInPlaceDelay32AnimId -GetStepInPlaceDelay32AnimId: @ 8064218 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08064240 @ =gUnknown_83A6550 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08064230 - movs r4, 0 -_08064230: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064240: .4byte gUnknown_83A6550 - thumb_func_end GetStepInPlaceDelay32AnimId - - thumb_func_start GetStepInPlaceDelay16AnimId -GetStepInPlaceDelay16AnimId: @ 8064244 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0806426C @ =gUnknown_83A6555 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _0806425C - movs r4, 0 -_0806425C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806426C: .4byte gUnknown_83A6555 - thumb_func_end GetStepInPlaceDelay16AnimId - - thumb_func_start sub_8064270 -sub_8064270: @ 8064270 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08064298 @ =gUnknown_83A655A - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08064288 - movs r4, 0 -_08064288: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064298: .4byte gUnknown_83A655A - thumb_func_end sub_8064270 - - thumb_func_start GetStepInPlaceDelay4AnimId -GetStepInPlaceDelay4AnimId: @ 806429C - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080642C4 @ =gUnknown_83A655F - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080642B4 - movs r4, 0 -_080642B4: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080642C4: .4byte gUnknown_83A655F - thumb_func_end GetStepInPlaceDelay4AnimId - - thumb_func_start ObjectEventFaceOppositeDirection -ObjectEventFaceOppositeDirection: @ 80642C8 - push {r4,lr} - adds r4, r0, 0 - lsls r0, r1, 24 - lsrs r0, 24 - bl GetOppositeDirection - lsls r0, 24 - lsrs r0, 24 - bl GetFaceDirectionMovementAction - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl ObjectEventSetHeldMovement - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ObjectEventFaceOppositeDirection - - thumb_func_start sub_80642F4 -sub_80642F4: @ 80642F4 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0806431C @ =gUnknown_83A6564 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _0806430C - movs r4, 0 -_0806430C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806431C: .4byte gUnknown_83A6564 - thumb_func_end sub_80642F4 - - thumb_func_start sub_8064320 -sub_8064320: @ 8064320 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08064348 @ =gUnknown_83A6569 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08064338 - movs r4, 0 -_08064338: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064348: .4byte gUnknown_83A6569 - thumb_func_end sub_8064320 - - thumb_func_start sub_806434C -sub_806434C: @ 806434C - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08064374 @ =gUnknown_83A656E - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08064364 - movs r4, 0 -_08064364: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064374: .4byte gUnknown_83A656E - thumb_func_end sub_806434C - - thumb_func_start sub_8064378 -sub_8064378: @ 8064378 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080643A0 @ =gUnknown_83A6573 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08064390 - movs r4, 0 -_08064390: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080643A0: .4byte gUnknown_83A6573 - thumb_func_end sub_8064378 - - thumb_func_start sub_80643A4 -sub_80643A4: @ 80643A4 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080643CC @ =gUnknown_83A6578 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080643BC - movs r4, 0 -_080643BC: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080643CC: .4byte gUnknown_83A6578 - thumb_func_end sub_80643A4 - - thumb_func_start sub_80643D0 -sub_80643D0: @ 80643D0 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080643F8 @ =gUnknown_83A657D - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080643E8 - movs r4, 0 -_080643E8: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080643F8: .4byte gUnknown_83A657D - thumb_func_end sub_80643D0 - - thumb_func_start sub_80643FC -sub_80643FC: @ 80643FC - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08064424 @ =gUnknown_83A6582 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08064414 - movs r4, 0 -_08064414: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064424: .4byte gUnknown_83A6582 - thumb_func_end sub_80643FC - - thumb_func_start sub_8064428 -sub_8064428: @ 8064428 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08064450 @ =gUnknown_83A6587 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08064440 - movs r4, 0 -_08064440: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064450: .4byte gUnknown_83A6587 - thumb_func_end sub_8064428 - - thumb_func_start sub_8064454 -sub_8064454: @ 8064454 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0806447C @ =gUnknown_83A658C - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _0806446C - movs r4, 0 -_0806446C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806447C: .4byte gUnknown_83A658C - thumb_func_end sub_8064454 - - thumb_func_start GetOppositeDirection -GetOppositeDirection: @ 8064480 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080644A4 @ =gUnknown_83A6591 - mov r0, sp - movs r2, 0x8 - bl memcpy - subs r1, r4, 0x1 - lsls r0, r1, 24 - lsrs r0, 24 - cmp r0, 0x7 - bhi _080644A8 - mov r2, sp - adds r0, r2, r1 - ldrb r0, [r0] - b _080644AA - .align 2, 0 -_080644A4: .4byte gUnknown_83A6591 -_080644A8: - adds r0, r4, 0 -_080644AA: - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetOppositeDirection - - thumb_func_start zffu_offset_calc -zffu_offset_calc: @ 80644B4 - lsls r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080644C8 @ =gUnknown_83A6599 - lsrs r0, 22 - subs r0, 0x5 - adds r1, r0 - adds r1, r2 - ldrb r0, [r1] - bx lr - .align 2, 0 -_080644C8: .4byte gUnknown_83A6599 - thumb_func_end zffu_offset_calc - - thumb_func_start state_to_direction -state_to_direction: @ 80644CC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - adds r0, r1, 0 - lsls r2, 24 - lsrs r2, 24 - cmp r1, 0 - beq _080644EC - cmp r2, 0 - beq _080644EC - cmp r1, 0x4 - bhi _080644EC - cmp r2, 0x4 - bls _080644F0 -_080644EC: - movs r0, 0 - b _08064502 -_080644F0: - adds r1, r2, 0 - bl zffu_offset_calc - ldr r2, _08064508 @ =gUnknown_83A65A9 - lsls r1, r4, 2 - subs r1, 0x5 - adds r0, r1 - adds r0, r2 - ldrb r0, [r0] -_08064502: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08064508: .4byte gUnknown_83A65A9 - thumb_func_end state_to_direction - - thumb_func_start ObjectEventExecSpecialAnim -ObjectEventExecSpecialAnim: @ 806450C - push {r4,lr} - adds r4, r0, 0 - ldr r2, _08064540 @ =sMovementActionFuncs - ldrb r0, [r4, 0x1C] - lsls r0, 2 - adds r0, r2 - movs r3, 0x32 - ldrsh r2, [r1, r3] - ldr r0, [r0] - lsls r2, 2 - adds r2, r0 - ldr r2, [r2] - adds r0, r4, 0 - bl _call_via_r2 - lsls r0, 24 - cmp r0, 0 - beq _08064538 - ldrb r0, [r4] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r4] -_08064538: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08064540: .4byte sMovementActionFuncs - thumb_func_end ObjectEventExecSpecialAnim - - thumb_func_start ObjectEventExecHeldMovementAction -ObjectEventExecHeldMovementAction: @ 8064544 - push {r4,lr} - adds r4, r0, 0 - ldr r2, _08064584 @ =sMovementActionFuncs - ldrb r0, [r4, 0x1C] - lsls r0, 2 - adds r0, r2 - movs r3, 0x32 - ldrsh r2, [r1, r3] - ldr r0, [r0] - lsls r2, 2 - adds r2, r0 - ldr r2, [r2] - adds r0, r4, 0 - bl _call_via_r2 - lsls r0, 24 - cmp r0, 0 - beq _0806457C - ldrb r0, [r4] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r4] - ldrb r0, [r4, 0x5] - cmp r0, 0x61 - bne _0806457C - adds r0, r4, 0 - bl sub_806DE28 -_0806457C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08064584: .4byte sMovementActionFuncs - thumb_func_end ObjectEventExecHeldMovementAction - - thumb_func_start ObjectEventExecSingleMovementAction -ObjectEventExecSingleMovementAction: @ 8064588 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080645B4 @ =sMovementActionFuncs - ldrb r0, [r4, 0x1C] - lsls r0, 2 - adds r0, r1 - movs r2, 0x32 - ldrsh r1, [r5, r2] - ldr r0, [r0] - lsls r1, 2 - adds r1, r0 - ldr r2, [r1] - adds r0, r4, 0 - adds r1, r5, 0 - bl _call_via_r2 - lsls r0, 24 - cmp r0, 0 - bne _080645B8 - movs r0, 0 - b _080645C2 - .align 2, 0 -_080645B4: .4byte sMovementActionFuncs -_080645B8: - movs r0, 0xFF - strb r0, [r4, 0x1C] - movs r0, 0 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080645C2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ObjectEventExecSingleMovementAction - - thumb_func_start ObjectEventSetSingleMovement -ObjectEventSetSingleMovement: @ 80645C8 - push {r4,lr} - adds r3, r0, 0 - lsls r2, 24 - lsrs r4, r2, 24 - movs r0, 0 - strb r4, [r3, 0x1C] - strh r0, [r1, 0x32] - ldr r0, _080645F0 @ =gUnknown_3005E88 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080645EA - ldrb r0, [r3, 0x8] - ldrb r1, [r3, 0x9] - ldrb r2, [r3, 0xA] - adds r3, r4, 0 - bl sub_81124EC -_080645EA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080645F0: .4byte gUnknown_3005E88 - thumb_func_end ObjectEventSetSingleMovement - - thumb_func_start FaceDirection -FaceDirection: @ 80645F4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r1, r2, 24 - lsrs r1, 24 - bl ObjectEventSetDirection - adds r0, r4, 0 - bl npc_coords_shift_still - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_go_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl obj_npc_animation_step - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 - strh r0, [r5, 0x32] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end FaceDirection - - thumb_func_start MovementActionFunc_x00_0 -MovementActionFunc_x00_0: @ 8064638 - push {lr} - movs r2, 0x1 - bl FaceDirection - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x00_0 - - thumb_func_start MovementActionFunc_x01_0 -MovementActionFunc_x01_0: @ 8064648 - push {lr} - movs r2, 0x2 - bl FaceDirection - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x01_0 - - thumb_func_start MovementActionFunc_x02_0 -MovementActionFunc_x02_0: @ 8064658 - push {lr} - movs r2, 0x3 - bl FaceDirection - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x02_0 - - thumb_func_start MovementActionFunc_x03_0 -MovementActionFunc_x03_0: @ 8064668 - push {lr} - movs r2, 0x4 - bl FaceDirection - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x03_0 - - thumb_func_start sub_8064678 -sub_8064678: @ 8064678 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - mov r8, r0 - mov r9, r1 - adds r4, r2, 0 - adds r6, r3, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - ldrh r1, [r0, 0x10] - mov r0, sp - strh r1, [r0] - mov r1, r8 - ldrh r0, [r1, 0x12] - mov r5, sp - adds r5, 0x2 - strh r0, [r5] - mov r0, r8 - adds r1, r4, 0 - bl ObjectEventSetDirection - adds r0, r4, 0 - mov r1, sp - adds r2, r5, 0 - bl MoveCoords - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - mov r0, r8 - bl npc_coords_shift - mov r0, r9 - adds r1, r4, 0 - adds r2, r6, 0 - bl oamt_npc_ministep_reset - mov r2, r9 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x4 - orrs r0, r1 - mov r2, r8 - strb r0, [r2] - movs r0, 0x1 - mov r1, r9 - strh r0, [r1, 0x32] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8064678 - - thumb_func_start do_go_anim -do_go_anim: @ 80646FC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - adds r5, r0, 0 - mov r8, r1 - adds r4, r3, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r4, 24 - lsrs r4, 24 - mov r1, sp - ldr r0, _08064754 @ =gUnknown_83A6884 - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6} - stm r1!, {r3,r6} - adds r0, r5, 0 - mov r1, r8 - adds r3, r4, 0 - bl sub_8064678 - lsls r4, 2 - mov r7, sp - adds r1, r7, r4 - ldrb r0, [r5, 0x18] - lsls r0, 28 - lsrs r0, 28 - ldr r1, [r1] - bl _call_via_r1 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - mov r1, r8 - bl npc_apply_anim_looping - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08064754: .4byte gUnknown_83A6884 - thumb_func_end do_go_anim - - thumb_func_start do_run_anim -do_run_anim: @ 8064758 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - movs r3, 0x1 - bl sub_8064678 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_run_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_apply_anim_looping - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end do_run_anim - - thumb_func_start npc_obj_ministep_stop_on_arrival -npc_obj_ministep_stop_on_arrival: @ 8064788 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl obj_npc_ministep - lsls r0, 24 - cmp r0, 0 - bne _0806479E - movs r0, 0 - b _080647BA -_0806479E: - adds r0, r4, 0 - bl npc_coords_shift_still - ldrb r0, [r4] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4] - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 -_080647BA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end npc_obj_ministep_stop_on_arrival - - thumb_func_start sub_80647C0 -sub_80647C0: @ 80647C0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - adds r6, r0, 0 - mov r8, r1 - lsls r5, r2, 24 - lsrs r5, 24 - 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, r6, 0 - adds r1, r5, 0 - bl ObjectEventSetDirection - adds r0, r5, 0 - mov r1, sp - adds r2, r4, 0 - bl MoveCoords - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r4, r0] - adds r0, r6, 0 - bl npc_coords_shift - mov r0, r8 - adds r1, r5, 0 - bl sub_8068BBC - mov r2, r8 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrb r0, [r6] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r6] - movs r0, 0x1 - mov r1, r8 - strh r0, [r1, 0x32] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80647C0 - - thumb_func_start sub_8064830 -sub_8064830: @ 8064830 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - bl sub_80647C0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_go_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_apply_anim_looping - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8064830 - - thumb_func_start an_walk_any_2 -an_walk_any_2: @ 806485C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8068BCC - lsls r0, 24 - cmp r0, 0 - bne _08064872 - movs r0, 0 - b _0806488E -_08064872: - adds r0, r4, 0 - bl npc_coords_shift_still - ldrb r0, [r4] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4] - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 -_0806488E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end an_walk_any_2 - - thumb_func_start sub_8064894 -sub_8064894: @ 8064894 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - adds r6, r0, 0 - mov r8, r1 - lsls r5, r2, 24 - lsrs r5, 24 - 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, r6, 0 - adds r1, r5, 0 - bl ObjectEventSetDirection - adds r0, r5, 0 - mov r1, sp - adds r2, r4, 0 - bl MoveCoords - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r4, r0] - adds r0, r6, 0 - bl npc_coords_shift - mov r0, r8 - adds r1, r5, 0 - bl sub_8068C58 - mov r2, r8 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrb r0, [r6] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r6] - movs r0, 0x1 - mov r1, r8 - strh r0, [r1, 0x32] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8064894 - - thumb_func_start sub_8064904 -sub_8064904: @ 8064904 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - bl sub_8064894 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_go_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_apply_anim_looping - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8064904 - - thumb_func_start sub_8064930 -sub_8064930: @ 8064930 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8068C68 - lsls r0, 24 - cmp r0, 0 - bne _08064946 - movs r0, 0 - b _08064962 -_08064946: - adds r0, r4, 0 - bl npc_coords_shift_still - ldrb r0, [r4] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4] - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 -_08064962: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064930 - - thumb_func_start MovementActionFunc_x9B_0 -MovementActionFunc_x9B_0: @ 8064968 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8064904 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x9B_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x9B_0 - - thumb_func_start MovementActionFunc_x9B_1 -MovementActionFunc_x9B_1: @ 8064988 - push {r4,lr} - adds r4, r1, 0 - bl sub_8064930 - lsls r0, 24 - cmp r0, 0 - bne _0806499A - movs r0, 0 - b _080649A0 -_0806499A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080649A0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x9B_1 - - thumb_func_start MovementActionFunc_x9C_0 -MovementActionFunc_x9C_0: @ 80649A8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - bl sub_8064904 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x9C_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x9C_0 - - thumb_func_start MovementActionFunc_x9C_1 -MovementActionFunc_x9C_1: @ 80649C8 - push {r4,lr} - adds r4, r1, 0 - bl sub_8064930 - lsls r0, 24 - cmp r0, 0 - bne _080649DA - movs r0, 0 - b _080649E0 -_080649DA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080649E0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x9C_1 - - thumb_func_start MovementActionFunc_x9D_0 -MovementActionFunc_x9D_0: @ 80649E8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - bl sub_8064904 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x9D_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x9D_0 - - thumb_func_start MovementActionFunc_x9D_1 -MovementActionFunc_x9D_1: @ 8064A08 - push {r4,lr} - adds r4, r1, 0 - bl sub_8064930 - lsls r0, 24 - cmp r0, 0 - bne _08064A1A - movs r0, 0 - b _08064A20 -_08064A1A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064A20: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x9D_1 - - thumb_func_start MovementActionFunc_x9E_0 -MovementActionFunc_x9E_0: @ 8064A28 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - bl sub_8064904 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x9E_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x9E_0 - - thumb_func_start MovementActionFunc_x9E_1 -MovementActionFunc_x9E_1: @ 8064A48 - push {r4,lr} - adds r4, r1, 0 - bl sub_8064930 - lsls r0, 24 - cmp r0, 0 - bne _08064A5A - movs r0, 0 - b _08064A60 -_08064A5A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064A60: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x9E_1 - - thumb_func_start MovementActionFunc_x08_0 -MovementActionFunc_x08_0: @ 8064A68 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8064830 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x08_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x08_0 - - thumb_func_start MovementActionFunc_x08_1 -MovementActionFunc_x08_1: @ 8064A88 - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _08064A9A - movs r0, 0 - b _08064AA0 -_08064A9A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064AA0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x08_1 - - thumb_func_start MovementActionFunc_x09_0 -MovementActionFunc_x09_0: @ 8064AA8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - bl sub_8064830 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x09_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x09_0 - - thumb_func_start MovementActionFunc_x09_1 -MovementActionFunc_x09_1: @ 8064AC8 - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _08064ADA - movs r0, 0 - b _08064AE0 -_08064ADA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064AE0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x09_1 - - thumb_func_start MovementActionFunc_x0A_0 -MovementActionFunc_x0A_0: @ 8064AE8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - bl sub_8064830 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x0A_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x0A_0 - - thumb_func_start MovementActionFunc_x0A_1 -MovementActionFunc_x0A_1: @ 8064B08 - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _08064B1A - movs r0, 0 - b _08064B20 -_08064B1A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064B20: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x0A_1 - - thumb_func_start MovementActionFunc_x0B_0 -MovementActionFunc_x0B_0: @ 8064B28 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - bl sub_8064830 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x0B_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x0B_0 - - thumb_func_start MovementActionFunc_x0B_1 -MovementActionFunc_x0B_1: @ 8064B48 - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _08064B5A - movs r0, 0 - b _08064B60 -_08064B5A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064B60: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x0B_1 - - thumb_func_start sub_8064B68 -sub_8064B68: @ 8064B68 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - adds r6, r0, 0 - mov r8, r1 - lsls r5, r2, 24 - lsrs r5, 24 - 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, r6, 0 - adds r1, r5, 0 - bl ObjectEventSetDirection - adds r0, r5, 0 - mov r1, sp - adds r2, r4, 0 - bl MoveCoords - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r4, r0] - adds r0, r6, 0 - bl npc_coords_shift - mov r0, r8 - adds r1, r5, 0 - bl sub_8068C08 - mov r2, r8 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrb r0, [r6] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r6] - movs r0, 0x1 - mov r1, r8 - strh r0, [r1, 0x32] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8064B68 - - thumb_func_start sub_8064BD8 -sub_8064BD8: @ 8064BD8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - bl sub_8064B68 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_go_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_apply_anim_looping - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8064BD8 - - thumb_func_start sub_8064C04 -sub_8064C04: @ 8064C04 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8068C18 - lsls r0, 24 - cmp r0, 0 - bne _08064C1A - movs r0, 0 - b _08064C36 -_08064C1A: - adds r0, r4, 0 - bl npc_coords_shift_still - ldrb r0, [r4] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4] - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 -_08064C36: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064C04 - - thumb_func_start MovementActionFunc_x0D_0 -MovementActionFunc_x0D_0: @ 8064C3C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - bl sub_8064BD8 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x0D_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x0D_0 - - thumb_func_start MovementActionFunc_x0D_1 -MovementActionFunc_x0D_1: @ 8064C5C - push {r4,lr} - adds r4, r1, 0 - bl sub_8064C04 - lsls r0, 24 - cmp r0, 0 - bne _08064C6E - movs r0, 0 - b _08064C74 -_08064C6E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064C74: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x0D_1 - - thumb_func_start MovementActionFunc_x0C_0 -MovementActionFunc_x0C_0: @ 8064C7C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8064BD8 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x0C_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x0C_0 - - thumb_func_start MovementActionFunc_x0C_1 -MovementActionFunc_x0C_1: @ 8064C9C - push {r4,lr} - adds r4, r1, 0 - bl sub_8064C04 - lsls r0, 24 - cmp r0, 0 - bne _08064CAE - movs r0, 0 - b _08064CB4 -_08064CAE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064CB4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x0C_1 - - thumb_func_start MovementActionFunc_x0E_0 -MovementActionFunc_x0E_0: @ 8064CBC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - bl sub_8064BD8 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x0E_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x0E_0 - - thumb_func_start MovementActionFunc_x0E_1 -MovementActionFunc_x0E_1: @ 8064CDC - push {r4,lr} - adds r4, r1, 0 - bl sub_8064C04 - lsls r0, 24 - cmp r0, 0 - bne _08064CEE - movs r0, 0 - b _08064CF4 -_08064CEE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064CF4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x0E_1 - - thumb_func_start MovementActionFunc_x0F_0 -MovementActionFunc_x0F_0: @ 8064CFC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - bl sub_8064BD8 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x0F_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x0F_0 - - thumb_func_start MovementActionFunc_x0F_1 -MovementActionFunc_x0F_1: @ 8064D1C - push {r4,lr} - adds r4, r1, 0 - bl sub_8064C04 - lsls r0, 24 - cmp r0, 0 - bne _08064D2E - movs r0, 0 - b _08064D34 -_08064D2E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064D34: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x0F_1 - - thumb_func_start MovementActionFunc_x10_0 -MovementActionFunc_x10_0: @ 8064D3C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x10_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x10_0 - - thumb_func_start MovementActionFunc_x10_1 -MovementActionFunc_x10_1: @ 8064D5C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08064D6E - movs r0, 0 - b _08064D74 -_08064D6E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064D74: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x10_1 - - thumb_func_start MovementActionFunc_x11_0 -MovementActionFunc_x11_0: @ 8064D7C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x11_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x11_0 - - thumb_func_start MovementActionFunc_x11_1 -MovementActionFunc_x11_1: @ 8064D9C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08064DAE - movs r0, 0 - b _08064DB4 -_08064DAE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064DB4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x11_1 - - thumb_func_start MovementActionFunc_x12_0 -MovementActionFunc_x12_0: @ 8064DBC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x12_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x12_0 - - thumb_func_start MovementActionFunc_x12_1 -MovementActionFunc_x12_1: @ 8064DDC - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08064DEE - movs r0, 0 - b _08064DF4 -_08064DEE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064DF4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x12_1 - - thumb_func_start MovementActionFunc_x13_0 -MovementActionFunc_x13_0: @ 8064DFC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x13_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x13_0 - - thumb_func_start MovementActionFunc_x13_1 -MovementActionFunc_x13_1: @ 8064E1C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08064E2E - movs r0, 0 - b _08064E34 -_08064E2E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08064E34: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x13_1 - - thumb_func_start sub_8064E3C -sub_8064E3C: @ 8064E3C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - adds r7, r0, 0 - mov r10, r1 - adds r4, r2, 0 - mov r8, r3 - ldr r0, [sp, 0x30] - lsls r4, 24 - lsrs r4, 24 - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _08064EF4 @ =gUnknown_83A6958 - add r0, sp, 0x4 - movs r2, 0x6 - bl memcpy - add r5, sp, 0xC - movs r0, 0 - strh r0, [r5] - mov r6, sp - adds r6, 0xE - strh r0, [r6] - adds r0, r7, 0 - adds r1, r4, 0 - bl ObjectEventSetDirection - mov r1, r8 - lsls r0, r1, 1 - add r0, sp - adds r0, 0x4 - movs r1, 0 - ldrsh r3, [r0, r1] - str r3, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_8063A6C - ldrh r1, [r5] - ldrh r0, [r7, 0x10] - adds r1, r0 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r6] - ldrh r0, [r7, 0x12] - adds r2, r0 - lsls r2, 16 - asrs r2, 16 - adds r0, r7, 0 - bl npc_coords_shift - mov r0, r10 - adds r1, r4, 0 - mov r2, r8 - mov r3, r9 - bl sub_8068D1C - movs r0, 0x1 - mov r1, r10 - strh r0, [r1, 0x32] - movs r0, 0x2C - add r10, r0 - mov r0, r10 - ldrb r1, [r0] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - mov r1, r10 - strb r0, [r1] - ldrb r0, [r7] - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r7] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08064EF4: .4byte gUnknown_83A6958 - thumb_func_end sub_8064E3C - - thumb_func_start maybe_shadow_1 -maybe_shadow_1: @ 8064EF8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, [sp, 0x10] - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - adds r0, r4, 0 - bl sub_8064E3C - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_go_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_apply_anim_looping - adds r0, r4, 0 - bl DoShadowFieldEffect - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end maybe_shadow_1 - - thumb_func_start sub_8064F3C -sub_8064F3C: @ 8064F3C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r6, r0, 0 - adds r7, r1, 0 - adds r4, r2, 0 - ldr r1, _08064FC8 @ =gUnknown_83A695E - add r0, sp, 0x4 - movs r2, 0x6 - bl memcpy - adds r0, r7, 0 - bl _call_via_r4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0x1 - bne _08064FCC - movs r1, 0x36 - ldrsh r0, [r7, r1] - lsls r0, 1 - add r0, sp - adds r0, 0x4 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - beq _08064FCC - add r4, sp, 0xC - movs r0, 0 - strh r0, [r4] - mov r5, sp - adds r5, 0xE - strh r0, [r5] - ldrb r0, [r6, 0x18] - lsrs r0, 4 - movs r2, 0x36 - ldrsh r1, [r7, r2] - lsls r1, 1 - add r1, sp - adds r1, 0x4 - movs r2, 0 - ldrsh r3, [r1, r2] - str r3, [sp] - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_8063A6C - ldrh r1, [r4] - ldrh r0, [r6, 0x10] - adds r1, r0 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r5] - ldrh r0, [r6, 0x12] - adds r2, r0 - lsls r2, 16 - asrs r2, 16 - adds r0, r6, 0 - bl npc_coords_shift - ldrb r0, [r6] - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r6] - b _08064FF0 - .align 2, 0 -_08064FC8: .4byte gUnknown_83A695E -_08064FCC: - mov r1, r8 - cmp r1, 0xFF - bne _08064FF0 - adds r0, r6, 0 - bl npc_coords_shift_still - ldrb r0, [r6] - movs r1, 0x8 - orrs r0, r1 - movs r1, 0x20 - orrs r0, r1 - strb r0, [r6] - adds r2, r7, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] -_08064FF0: - mov r0, r8 - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8064F3C - - thumb_func_start sub_8065000 -sub_8065000: @ 8065000 - push {lr} - ldr r2, _08065010 @ =sub_8068D3C - bl sub_8064F3C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08065010: .4byte sub_8068D3C - thumb_func_end sub_8065000 - - thumb_func_start sub_8065014 -sub_8065014: @ 8065014 - push {lr} - ldr r2, _08065024 @ =sub_8068DC4 - bl sub_8064F3C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08065024: .4byte sub_8068DC4 - thumb_func_end sub_8065014 - - thumb_func_start sub_8065028 -sub_8065028: @ 8065028 - push {lr} - bl sub_8065000 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0806503A - movs r0, 0 - b _0806503C -_0806503A: - movs r0, 0x1 -_0806503C: - pop {r1} - bx r1 - thumb_func_end sub_8065028 - - thumb_func_start sub_8065040 -sub_8065040: @ 8065040 - push {lr} - bl sub_8065014 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _08065052 - movs r0, 0 - b _08065054 -_08065052: - movs r0, 0x1 -_08065054: - pop {r1} - bx r1 - thumb_func_end sub_8065040 - - thumb_func_start sub_8065058 -sub_8065058: @ 8065058 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065000 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08065072 - cmp r0, 0xFF - bne _0806509E - movs r0, 0x1 - b _080650A0 -_08065072: - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetOppositeDirection - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl ObjectEventSetDirection - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_go_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl obj_npc_animation_step -_0806509E: - movs r0, 0 -_080650A0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065058 - - thumb_func_start MovementActionFunc_x14_0 -MovementActionFunc_x14_0: @ 80650A8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x2 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x14_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x14_0 - - thumb_func_start MovementActionFunc_x14_1 -MovementActionFunc_x14_1: @ 80650D4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _080650E8 - movs r0, 0 - b _080650F8 -_080650E8: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080650F8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x14_1 - - thumb_func_start MovementActionFunc_x15_0 -MovementActionFunc_x15_0: @ 8065100 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x15_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x15_0 - - thumb_func_start MovementActionFunc_x15_1 -MovementActionFunc_x15_1: @ 806512C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _08065140 - movs r0, 0 - b _08065150 -_08065140: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08065150: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x15_1 - - thumb_func_start MovementActionFunc_x16_0 -MovementActionFunc_x16_0: @ 8065158 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0x2 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x16_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x16_0 - - thumb_func_start MovementActionFunc_x16_1 -MovementActionFunc_x16_1: @ 8065184 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _08065198 - movs r0, 0 - b _080651A8 -_08065198: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080651A8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x16_1 - - thumb_func_start MovementActionFunc_x17_0 -MovementActionFunc_x17_0: @ 80651B0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0x2 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x17_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x17_0 - - thumb_func_start MovementActionFunc_x17_1 -MovementActionFunc_x17_1: @ 80651DC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _080651F0 - movs r0, 0 - b _08065200 -_080651F0: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08065200: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x17_1 - - thumb_func_start sub_8065208 -sub_8065208: @ 8065208 - movs r2, 0x1 - strh r2, [r0, 0x32] - strh r1, [r0, 0x34] - bx lr - thumb_func_end sub_8065208 - - thumb_func_start MovementActionFunc_x18_1 -MovementActionFunc_x18_1: @ 8065210 - push {lr} - ldrh r0, [r1, 0x34] - subs r0, 0x1 - strh r0, [r1, 0x34] - lsls r0, 16 - cmp r0, 0 - beq _08065222 - movs r0, 0 - b _08065228 -_08065222: - movs r0, 0x2 - strh r0, [r1, 0x32] - movs r0, 0x1 -_08065228: - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x18_1 - - thumb_func_start MovementActionFunc_x18_0 -MovementActionFunc_x18_0: @ 806522C - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8065208 - adds r0, r5, 0 - adds r1, r4, 0 - bl MovementActionFunc_x18_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x18_0 - - thumb_func_start MovementActionFunc_x19_0 -MovementActionFunc_x19_0: @ 806524C - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x2 - bl sub_8065208 - adds r0, r5, 0 - adds r1, r4, 0 - bl MovementActionFunc_x18_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x19_0 - - thumb_func_start MovementActionFunc_x1A_0 -MovementActionFunc_x1A_0: @ 806526C - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x4 - bl sub_8065208 - adds r0, r5, 0 - adds r1, r4, 0 - bl MovementActionFunc_x18_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x1A_0 - - thumb_func_start MovementActionFunc_x1B_0 -MovementActionFunc_x1B_0: @ 806528C - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x8 - bl sub_8065208 - adds r0, r5, 0 - adds r1, r4, 0 - bl MovementActionFunc_x18_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x1B_0 - - thumb_func_start MovementActionFunc_x1C_0 -MovementActionFunc_x1C_0: @ 80652AC - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x10 - bl sub_8065208 - adds r0, r5, 0 - adds r1, r4, 0 - bl MovementActionFunc_x18_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x1C_0 - - thumb_func_start MovementActionFunc_x1D_0 -MovementActionFunc_x1D_0: @ 80652CC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x1 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x1D_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x1D_0 - - thumb_func_start MovementActionFunc_x1D_1 -MovementActionFunc_x1D_1: @ 80652EC - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080652FE - movs r0, 0 - b _08065304 -_080652FE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065304: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x1D_1 - - thumb_func_start MovementActionFunc_x1E_0 -MovementActionFunc_x1E_0: @ 806530C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x1E_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x1E_0 - - thumb_func_start MovementActionFunc_x1E_1 -MovementActionFunc_x1E_1: @ 806532C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806533E - movs r0, 0 - b _08065344 -_0806533E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065344: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x1E_1 - - thumb_func_start MovementActionFunc_x1F_0 -MovementActionFunc_x1F_0: @ 806534C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x1F_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x1F_0 - - thumb_func_start MovementActionFunc_x1F_1 -MovementActionFunc_x1F_1: @ 806536C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806537E - movs r0, 0 - b _08065384 -_0806537E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065384: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x1F_1 - - thumb_func_start MovementActionFunc_x20_0 -MovementActionFunc_x20_0: @ 806538C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x1 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x20_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x20_0 - - thumb_func_start MovementActionFunc_x20_1 -MovementActionFunc_x20_1: @ 80653AC - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080653BE - movs r0, 0 - b _080653C4 -_080653BE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080653C4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x20_1 - - thumb_func_start sub_80653CC -sub_80653CC: @ 80653CC - push {r4,lr} - adds r4, r0, 0 - adds r0, r1, 0 - bl obj_npc_ministep - lsls r0, 24 - cmp r0, 0 - bne _080653E0 - movs r0, 0 - b _080653F0 -_080653E0: - adds r0, r4, 0 - bl npc_coords_shift_still - ldrb r0, [r4] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x1 -_080653F0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80653CC - - thumb_func_start MovementActionFunc_xA0_0 -MovementActionFunc_xA0_0: @ 80653F8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r1, [r4, 0x18] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - beq _0806541A - movs r0, 0x1 - bl ObjectEventDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim -_0806541A: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0x1 - bl sub_8064678 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_xA0_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA0_0 - - thumb_func_start MovementActionFunc_xA0_1 -MovementActionFunc_xA0_1: @ 8065438 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl AnimateSprite - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80653CC - lsls r0, 24 - cmp r0, 0 - bne _08065456 - movs r0, 0 - b _0806545C -_08065456: - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_0806545C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA0_1 - - thumb_func_start MovementActionFunc_xA1_0 -MovementActionFunc_xA1_0: @ 8065464 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r1, [r4, 0x18] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x2 - beq _08065486 - movs r0, 0x2 - bl ObjectEventDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim -_08065486: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_8064678 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_xA1_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA1_0 - - thumb_func_start MovementActionFunc_xA1_1 -MovementActionFunc_xA1_1: @ 80654A4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl AnimateSprite - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80653CC - lsls r0, 24 - cmp r0, 0 - bne _080654C2 - movs r0, 0 - b _080654C8 -_080654C2: - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080654C8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA1_1 - - thumb_func_start MovementActionFunc_xA2_0 -MovementActionFunc_xA2_0: @ 80654D0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r1, [r4, 0x18] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x3 - beq _080654F2 - movs r0, 0x3 - bl ObjectEventDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim -_080654F2: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_8064678 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_xA2_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA2_0 - - thumb_func_start MovementActionFunc_xA2_1 -MovementActionFunc_xA2_1: @ 8065510 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl AnimateSprite - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80653CC - lsls r0, 24 - cmp r0, 0 - bne _0806552E - movs r0, 0 - b _08065534 -_0806552E: - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08065534: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA2_1 - - thumb_func_start MovementActionFunc_xA3_0 -MovementActionFunc_xA3_0: @ 806553C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r1, [r4, 0x18] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x4 - beq _0806555E - movs r0, 0x4 - bl ObjectEventDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim -_0806555E: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - movs r3, 0x1 - bl sub_8064678 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_xA3_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA3_0 - - thumb_func_start MovementActionFunc_xA3_1 -MovementActionFunc_xA3_1: @ 806557C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl AnimateSprite - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80653CC - lsls r0, 24 - cmp r0, 0 - bne _0806559A - movs r0, 0 - b _080655A0 -_0806559A: - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080655A0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA3_1 - - thumb_func_start sub_80655A8 -sub_80655A8: @ 80655A8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r1, r2, 24 - lsrs r1, 24 - bl ObjectEventSetDirection - adds r0, r4, 0 - bl npc_coords_shift_still - adds r2, r5, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r0, 0x1 - strh r0, [r5, 0x32] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80655A8 - - thumb_func_start MovementActionFunc_x04_0 -MovementActionFunc_x04_0: @ 80655D4 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrb r1, [r5, 0x18] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - beq _080655F6 - movs r0, 0x1 - bl ObjectEventDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_080655F6: - adds r0, r4, 0 - bl AnimateSprite - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_80655A8 - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x04_0 - - thumb_func_start MovementActionFunc_x05_0 -MovementActionFunc_x05_0: @ 8065610 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrb r1, [r5, 0x18] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x2 - beq _08065632 - movs r0, 0x2 - bl ObjectEventDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_08065632: - adds r0, r4, 0 - bl AnimateSprite - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x2 - bl sub_80655A8 - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x05_0 - - thumb_func_start MovementActionFunc_x06_0 -MovementActionFunc_x06_0: @ 806564C - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrb r1, [r5, 0x18] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x3 - beq _0806566E - movs r0, 0x3 - bl ObjectEventDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_0806566E: - adds r0, r4, 0 - bl AnimateSprite - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x3 - bl sub_80655A8 - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x06_0 - - thumb_func_start MovementActionFunc_x07_0 -MovementActionFunc_x07_0: @ 8065688 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrb r1, [r5, 0x18] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x4 - beq _080656AA - movs r0, 0x4 - bl ObjectEventDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_080656AA: - adds r0, r4, 0 - bl AnimateSprite - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x4 - bl sub_80655A8 - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x07_0 - - thumb_func_start sub_80656C4 -sub_80656C4: @ 80656C4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - adds r6, r1, 0 - adds r1, r2, 0 - adds r4, r3, 0 - ldr r5, [sp, 0x14] - lsls r1, 24 - lsrs r1, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 16 - lsrs r5, 16 - bl ObjectEventSetDirection - mov r0, r8 - adds r1, r6, 0 - adds r2, r4, 0 - bl npc_apply_anim_looping - adds r2, r6, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r0, 0x1 - strh r0, [r6, 0x32] - strh r5, [r6, 0x34] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80656C4 - - thumb_func_start MovementActionFunc_x25_1 -MovementActionFunc_x25_1: @ 806570C - push {lr} - ldrh r0, [r1, 0x34] - subs r0, 0x1 - strh r0, [r1, 0x34] - lsls r0, 16 - cmp r0, 0 - beq _0806571E - movs r0, 0 - b _08065730 -_0806571E: - movs r0, 0x2 - strh r0, [r1, 0x32] - adds r2, r1, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 -_08065730: - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x25_1 - - thumb_func_start MovementActionFunc_x21_1 -MovementActionFunc_x21_1: @ 8065734 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrh r1, [r4, 0x34] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806575E - adds r3, r4, 0 - adds r3, 0x2C - ldrb r2, [r3] - lsls r1, r2, 26 - lsrs r1, 26 - adds r1, 0x1 - movs r0, 0x3F - ands r1, r0 - movs r0, 0x40 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_0806575E: - adds r0, r5, 0 - adds r1, r4, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x21_1 - - thumb_func_start MovementActionFunc_x21_0 -MovementActionFunc_x21_0: @ 8065770 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x20 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x21_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x21_0 - - thumb_func_start MovementActionFunc_x22_0 -MovementActionFunc_x22_0: @ 80657A8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x20 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x21_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x22_0 - - thumb_func_start MovementActionFunc_x23_0 -MovementActionFunc_x23_0: @ 80657E0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x20 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x21_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x23_0 - - thumb_func_start MovementActionFunc_x24_0 -MovementActionFunc_x24_0: @ 8065818 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x20 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x21_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x24_0 - - thumb_func_start MovementActionFunc_x25_0 -MovementActionFunc_x25_0: @ 8065850 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x10 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x25_0 - - thumb_func_start MovementActionFunc_x26_0 -MovementActionFunc_x26_0: @ 8065888 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x10 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x26_0 - - thumb_func_start MovementActionFunc_x27_0 -MovementActionFunc_x27_0: @ 80658C0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x10 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x27_0 - - thumb_func_start MovementActionFunc_x28_0 -MovementActionFunc_x28_0: @ 80658F8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x10 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x28_0 - - thumb_func_start MovementActionFunc_x29_0 -MovementActionFunc_x29_0: @ 8065930 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl get_go_fast_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x29_0 - - thumb_func_start MovementActionFunc_x2A_0 -MovementActionFunc_x2A_0: @ 8065968 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl get_go_fast_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x2A_0 - - thumb_func_start MovementActionFunc_x2B_0 -MovementActionFunc_x2B_0: @ 80659A0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl get_go_fast_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x2B_0 - - thumb_func_start MovementActionFunc_x2C_0 -MovementActionFunc_x2C_0: @ 80659D8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl get_go_fast_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x2C_0 - - thumb_func_start MovementActionFunc_x2D_0 -MovementActionFunc_x2D_0: @ 8065A10 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl get_go_faster_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x4 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x2D_0 - - thumb_func_start MovementActionFunc_x2E_0 -MovementActionFunc_x2E_0: @ 8065A48 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl get_go_faster_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x4 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x2E_0 - - thumb_func_start MovementActionFunc_x2F_0 -MovementActionFunc_x2F_0: @ 8065A80 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl get_go_faster_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x4 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x2F_0 - - thumb_func_start MovementActionFunc_x30_0 -MovementActionFunc_x30_0: @ 8065AB8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl get_go_faster_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x4 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x30_0 - - thumb_func_start MovementActionFunc_x31_0 -MovementActionFunc_x31_0: @ 8065AF0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x2 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x31_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x31_0 - - thumb_func_start MovementActionFunc_x31_1 -MovementActionFunc_x31_1: @ 8065B10 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065B22 - movs r0, 0 - b _08065B28 -_08065B22: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065B28: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x31_1 - - thumb_func_start MovementActionFunc_x32_0 -MovementActionFunc_x32_0: @ 8065B30 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x2 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x32_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x32_0 - - thumb_func_start MovementActionFunc_x32_1 -MovementActionFunc_x32_1: @ 8065B50 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065B62 - movs r0, 0 - b _08065B68 -_08065B62: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065B68: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x32_1 - - thumb_func_start MovementActionFunc_x33_0 -MovementActionFunc_x33_0: @ 8065B70 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x2 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x33_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x33_0 - - thumb_func_start MovementActionFunc_x33_1 -MovementActionFunc_x33_1: @ 8065B90 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065BA2 - movs r0, 0 - b _08065BA8 -_08065BA2: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065BA8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x33_1 - - thumb_func_start MovementActionFunc_x34_0 -MovementActionFunc_x34_0: @ 8065BB0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x2 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x34_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x34_0 - - thumb_func_start MovementActionFunc_x34_1 -MovementActionFunc_x34_1: @ 8065BD0 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065BE2 - movs r0, 0 - b _08065BE8 -_08065BE2: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065BE8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x34_1 - - thumb_func_start MovementActionFunc_x35_0 -MovementActionFunc_x35_0: @ 8065BF0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x3 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x35_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x35_0 - - thumb_func_start MovementActionFunc_x35_1 -MovementActionFunc_x35_1: @ 8065C10 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065C22 - movs r0, 0 - b _08065C28 -_08065C22: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065C28: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x35_1 - - thumb_func_start MovementActionFunc_x36_0 -MovementActionFunc_x36_0: @ 8065C30 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x3 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x36_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x36_0 - - thumb_func_start MovementActionFunc_x36_1 -MovementActionFunc_x36_1: @ 8065C50 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065C62 - movs r0, 0 - b _08065C68 -_08065C62: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065C68: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x36_1 - - thumb_func_start MovementActionFunc_x37_0 -MovementActionFunc_x37_0: @ 8065C70 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x3 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x37_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x37_0 - - thumb_func_start MovementActionFunc_x37_1 -MovementActionFunc_x37_1: @ 8065C90 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065CA2 - movs r0, 0 - b _08065CA8 -_08065CA2: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065CA8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x37_1 - - thumb_func_start MovementActionFunc_x38_0 -MovementActionFunc_x38_0: @ 8065CB0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x3 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x38_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x38_0 - - thumb_func_start MovementActionFunc_x38_1 -MovementActionFunc_x38_1: @ 8065CD0 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065CE2 - movs r0, 0 - b _08065CE8 -_08065CE2: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065CE8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x38_1 - - thumb_func_start MovementActionFunc_x39_0 -MovementActionFunc_x39_0: @ 8065CF0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x4 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x39_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x39_0 - - thumb_func_start MovementActionFunc_x39_1 -MovementActionFunc_x39_1: @ 8065D10 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065D22 - movs r0, 0 - b _08065D28 -_08065D22: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065D28: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x39_1 - - thumb_func_start MovementActionFunc_x3A_0 -MovementActionFunc_x3A_0: @ 8065D30 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x4 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x3A_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x3A_0 - - thumb_func_start MovementActionFunc_x3A_1 -MovementActionFunc_x3A_1: @ 8065D50 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065D62 - movs r0, 0 - b _08065D68 -_08065D62: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065D68: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x3A_1 - - thumb_func_start MovementActionFunc_x3B_0 -MovementActionFunc_x3B_0: @ 8065D70 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x4 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x3B_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x3B_0 - - thumb_func_start MovementActionFunc_x3B_1 -MovementActionFunc_x3B_1: @ 8065D90 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065DA2 - movs r0, 0 - b _08065DA8 -_08065DA2: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065DA8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x3B_1 - - thumb_func_start MovementActionFunc_x3C_0 -MovementActionFunc_x3C_0: @ 8065DB0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x4 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x3C_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x3C_0 - - thumb_func_start MovementActionFunc_x3C_1 -MovementActionFunc_x3C_1: @ 8065DD0 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065DE2 - movs r0, 0 - b _08065DE8 -_08065DE2: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065DE8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x3C_1 - - thumb_func_start do_run_south_anim -do_run_south_anim: @ 8065DF0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl do_run_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x3D_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end do_run_south_anim - - thumb_func_start MovementActionFunc_x3D_1 -MovementActionFunc_x3D_1: @ 8065E10 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065E22 - movs r0, 0 - b _08065E28 -_08065E22: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065E28: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x3D_1 - - thumb_func_start do_run_north_anim -do_run_north_anim: @ 8065E30 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - bl do_run_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x3E_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end do_run_north_anim - - thumb_func_start MovementActionFunc_x3E_1 -MovementActionFunc_x3E_1: @ 8065E50 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065E62 - movs r0, 0 - b _08065E68 -_08065E62: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065E68: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x3E_1 - - thumb_func_start do_run_west_anim -do_run_west_anim: @ 8065E70 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - bl do_run_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x3F_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end do_run_west_anim - - thumb_func_start MovementActionFunc_x3F_1 -MovementActionFunc_x3F_1: @ 8065E90 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065EA2 - movs r0, 0 - b _08065EA8 -_08065EA2: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065EA8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x3F_1 - - thumb_func_start do_run_east_anim -do_run_east_anim: @ 8065EB0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - bl do_run_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x40_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end do_run_east_anim - - thumb_func_start MovementActionFunc_x40_1 -MovementActionFunc_x40_1: @ 8065ED0 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08065EE2 - movs r0, 0 - b _08065EE8 -_08065EE2: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065EE8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x40_1 - - thumb_func_start sub_8065EF0 -sub_8065EF0: @ 8065EF0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - adds r6, r0, 0 - mov r8, r1 - lsls r5, r2, 24 - lsrs r5, 24 - 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, r6, 0 - adds r1, r5, 0 - bl ObjectEventSetDirection - adds r0, r5, 0 - mov r1, sp - adds r2, r4, 0 - bl MoveCoords - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r4, r0] - adds r0, r6, 0 - bl npc_coords_shift - mov r0, r8 - adds r1, r5, 0 - bl sub_8068CA4 - mov r2, r8 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrb r0, [r6] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r6] - movs r0, 0x1 - mov r1, r8 - strh r0, [r1, 0x32] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8065EF0 - - thumb_func_start sub_8065F60 -sub_8065F60: @ 8065F60 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - bl sub_8065EF0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_run_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_apply_anim_looping - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8065F60 - - thumb_func_start sub_8065F8C -sub_8065F8C: @ 8065F8C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8068CB4 - lsls r0, 24 - cmp r0, 0 - bne _08065FA2 - movs r0, 0 - b _08065FBE -_08065FA2: - adds r0, r4, 0 - bl npc_coords_shift_still - ldrb r0, [r4] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4] - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 -_08065FBE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065F8C - - thumb_func_start MovementActionFunc_x41_0 -MovementActionFunc_x41_0: @ 8065FC4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8065F60 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x41_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x41_0 - - thumb_func_start MovementActionFunc_x41_1 -MovementActionFunc_x41_1: @ 8065FE4 - push {r4,lr} - adds r4, r1, 0 - bl sub_8065F8C - lsls r0, 24 - cmp r0, 0 - bne _08065FF6 - movs r0, 0 - b _08065FFC -_08065FF6: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08065FFC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x41_1 - - thumb_func_start MovementActionFunc_x42_0 -MovementActionFunc_x42_0: @ 8066004 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - bl sub_8065F60 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x42_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x42_0 - - thumb_func_start MovementActionFunc_x42_1 -MovementActionFunc_x42_1: @ 8066024 - push {r4,lr} - adds r4, r1, 0 - bl sub_8065F8C - lsls r0, 24 - cmp r0, 0 - bne _08066036 - movs r0, 0 - b _0806603C -_08066036: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_0806603C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x42_1 - - thumb_func_start MovementActionFunc_x43_0 -MovementActionFunc_x43_0: @ 8066044 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - bl sub_8065F60 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x43_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x43_0 - - thumb_func_start MovementActionFunc_x43_1 -MovementActionFunc_x43_1: @ 8066064 - push {r4,lr} - adds r4, r1, 0 - bl sub_8065F8C - lsls r0, 24 - cmp r0, 0 - bne _08066076 - movs r0, 0 - b _0806607C -_08066076: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_0806607C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x43_1 - - thumb_func_start MovementActionFunc_x44_0 -MovementActionFunc_x44_0: @ 8066084 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8065F60 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x44_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x44_0 - - thumb_func_start MovementActionFunc_x44_1 -MovementActionFunc_x44_1: @ 80660A4 - push {r4,lr} - adds r4, r1, 0 - bl sub_8065F8C - lsls r0, 24 - cmp r0, 0 - bne _080660B6 - movs r0, 0 - b _080660BC -_080660B6: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080660BC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x44_1 - - thumb_func_start npc_set_direction_and_anim__an_proceed -npc_set_direction_and_anim__an_proceed: @ 80660C4 - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - adds r4, r2, 0 - adds r1, r3, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - movs r2, 0 - bl obj_anim_image_set_and_seek - adds r0, r6, 0 - adds r1, r4, 0 - bl ObjectEventSetDirection - movs r0, 0x1 - strh r0, [r5, 0x32] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end npc_set_direction_and_anim__an_proceed - - thumb_func_start MovementActionFunc_x45_0 -MovementActionFunc_x45_0: @ 80660F0 - push {lr} - ldrb r2, [r0, 0x18] - lsrs r2, 4 - adds r3, r1, 0 - adds r3, 0x2A - ldrb r3, [r3] - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x45_0 - - thumb_func_start MovementActionFunc_x45_1 -MovementActionFunc_x45_1: @ 8066108 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl SpriteAnimEnded - lsls r0, 24 - cmp r0, 0 - bne _0806611C - movs r0, 0 - b _08066122 -_0806611C: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08066122: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x45_1 - - thumb_func_start sub_8066128 -sub_8066128: @ 8066128 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r1, 0 - lsls r4, r2, 24 - lsrs r4, 24 - movs r1, 0 - str r1, [sp] - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl sub_8064E3C - adds r0, r4, 0 - bl sub_8063480 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8066128 - - thumb_func_start MovementActionFunc_x46_0 -MovementActionFunc_x46_0: @ 806615C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8066128 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x46_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x46_0 - - thumb_func_start MovementActionFunc_x46_1 -MovementActionFunc_x46_1: @ 806617C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065040 - lsls r0, 24 - cmp r0, 0 - bne _08066190 - movs r0, 0 - b _0806619E -_08066190: - movs r0, 0x2 - strh r0, [r5, 0x32] - ldrb r1, [r4] - subs r0, 0x23 - ands r0, r1 - strb r0, [r4] - movs r0, 0x1 -_0806619E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x46_1 - - thumb_func_start MovementActionFunc_x47_0 -MovementActionFunc_x47_0: @ 80661A4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - bl sub_8066128 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x47_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x47_0 - - thumb_func_start MovementActionFunc_x47_1 -MovementActionFunc_x47_1: @ 80661C4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065040 - lsls r0, 24 - cmp r0, 0 - bne _080661D8 - movs r0, 0 - b _080661E6 -_080661D8: - movs r0, 0x2 - strh r0, [r5, 0x32] - ldrb r1, [r4] - subs r0, 0x23 - ands r0, r1 - strb r0, [r4] - movs r0, 0x1 -_080661E6: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x47_1 - - thumb_func_start MovementActionFunc_x48_0 -MovementActionFunc_x48_0: @ 80661EC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - bl sub_8066128 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x48_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x48_0 - - thumb_func_start MovementActionFunc_x48_1 -MovementActionFunc_x48_1: @ 806620C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065040 - lsls r0, 24 - cmp r0, 0 - bne _08066220 - movs r0, 0 - b _0806622E -_08066220: - movs r0, 0x2 - strh r0, [r5, 0x32] - ldrb r1, [r4] - subs r0, 0x23 - ands r0, r1 - strb r0, [r4] - movs r0, 0x1 -_0806622E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x48_1 - - thumb_func_start MovementActionFunc_x49_0 -MovementActionFunc_x49_0: @ 8066234 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - bl sub_8066128 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x49_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x49_0 - - thumb_func_start MovementActionFunc_x49_1 -MovementActionFunc_x49_1: @ 8066254 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065040 - lsls r0, 24 - cmp r0, 0 - bne _08066268 - movs r0, 0 - b _08066276 -_08066268: - movs r0, 0x2 - strh r0, [r5, 0x32] - ldrb r1, [r4] - subs r0, 0x23 - ands r0, r1 - strb r0, [r4] - movs r0, 0x1 -_08066276: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x49_1 - - thumb_func_start MovementActionFunc_xA6_0 -MovementActionFunc_xA6_0: @ 806627C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8066128 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_xA6_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA6_0 - - thumb_func_start MovementActionFunc_xA6_1 -MovementActionFunc_xA6_1: @ 806629C - push {r4,lr} - adds r4, r1, 0 - bl sub_8065040 - lsls r0, 24 - cmp r0, 0 - bne _080662AE - movs r0, 0 - b _080662B4 -_080662AE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080662B4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA6_1 - - thumb_func_start MovementActionFunc_xA7_0 -MovementActionFunc_xA7_0: @ 80662BC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - bl sub_8066128 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_xA7_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA7_0 - - thumb_func_start MovementActionFunc_xA7_1 -MovementActionFunc_xA7_1: @ 80662DC - push {r4,lr} - adds r4, r1, 0 - bl sub_8065040 - lsls r0, 24 - cmp r0, 0 - bne _080662EE - movs r0, 0 - b _080662F4 -_080662EE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080662F4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA7_1 - - thumb_func_start MovementActionFunc_xA8_0 -MovementActionFunc_xA8_0: @ 80662FC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - bl sub_8066128 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_xA8_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA8_0 - - thumb_func_start MovementActionFunc_xA8_1 -MovementActionFunc_xA8_1: @ 806631C - push {r4,lr} - adds r4, r1, 0 - bl sub_8065040 - lsls r0, 24 - cmp r0, 0 - bne _0806632E - movs r0, 0 - b _08066334 -_0806632E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08066334: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA8_1 - - thumb_func_start MovementActionFunc_xA9_0 -MovementActionFunc_xA9_0: @ 806633C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - bl sub_8066128 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_xA9_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA9_0 - - thumb_func_start MovementActionFunc_xA9_1 -MovementActionFunc_xA9_1: @ 806635C - push {r4,lr} - adds r4, r1, 0 - bl sub_8065040 - lsls r0, 24 - cmp r0, 0 - bne _0806636E - movs r0, 0 - b _08066374 -_0806636E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08066374: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA9_1 - - thumb_func_start MovementActionFunc_x4A_0 -MovementActionFunc_x4A_0: @ 806637C - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _080663C6 - movs r1, 0x10 - ldrsh r0, [r5, r1] - movs r2, 0x12 - ldrsh r1, [r5, r2] - ldr r4, _080663D4 @ =gObjectEvents - mov r2, sp - ldrb r2, [r2] - lsls r3, r2, 3 - adds r3, r2 - lsls r3, 2 - adds r3, r4 - movs r4, 0x10 - ldrsh r2, [r3, r4] - movs r4, 0x12 - ldrsh r3, [r3, r4] - bl sub_80635DC - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r6, 0 - bl FaceDirection -_080663C6: - movs r0, 0x1 - strh r0, [r6, 0x32] - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080663D4: .4byte gObjectEvents - thumb_func_end MovementActionFunc_x4A_0 - - thumb_func_start MovementActionFunc_x4B_0 -MovementActionFunc_x4B_0: @ 80663D8 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0806642A - movs r1, 0x10 - ldrsh r0, [r5, r1] - movs r2, 0x12 - ldrsh r1, [r5, r2] - ldr r4, _08066438 @ =gObjectEvents - mov r2, sp - ldrb r2, [r2] - lsls r3, r2, 3 - adds r3, r2 - lsls r3, 2 - adds r3, r4 - movs r4, 0x10 - ldrsh r2, [r3, r4] - movs r4, 0x12 - ldrsh r3, [r3, r4] - bl sub_80635DC - lsls r0, 24 - lsrs r0, 24 - bl GetOppositeDirection - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r6, 0 - bl FaceDirection -_0806642A: - movs r0, 0x1 - strh r0, [r6, 0x32] - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08066438: .4byte gObjectEvents - thumb_func_end MovementActionFunc_x4B_0 - - thumb_func_start MovementActionFunc_x4C_0 -MovementActionFunc_x4C_0: @ 806643C - ldrb r2, [r0, 0x1] - movs r3, 0x2 - orrs r2, r3 - strb r2, [r0, 0x1] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end MovementActionFunc_x4C_0 - - thumb_func_start MovementActionFunc_x4D_0 -MovementActionFunc_x4D_0: @ 806644C - ldrb r3, [r0, 0x1] - movs r2, 0x3 - negs r2, r2 - ands r2, r3 - strb r2, [r0, 0x1] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end MovementActionFunc_x4D_0 - - thumb_func_start MovementActionFunc_x4E_0 -MovementActionFunc_x4E_0: @ 806645C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x1 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x4E_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x4E_0 - - thumb_func_start MovementActionFunc_x4E_1 -MovementActionFunc_x4E_1: @ 8066488 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _0806649C - movs r0, 0 - b _080664AC -_0806649C: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080664AC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x4E_1 - - thumb_func_start MovementActionFunc_x4F_0 -MovementActionFunc_x4F_0: @ 80664B4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x1 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x4F_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x4F_0 - - thumb_func_start MovementActionFunc_x4F_1 -MovementActionFunc_x4F_1: @ 80664E0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _080664F4 - movs r0, 0 - b _08066504 -_080664F4: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08066504: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x4F_1 - - thumb_func_start MovementActionFunc_x50_0 -MovementActionFunc_x50_0: @ 806650C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0x1 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x50_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x50_0 - - thumb_func_start MovementActionFunc_x50_1 -MovementActionFunc_x50_1: @ 8066538 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _0806654C - movs r0, 0 - b _0806655C -_0806654C: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_0806655C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x50_1 - - thumb_func_start MovementActionFunc_x51_0 -MovementActionFunc_x51_0: @ 8066564 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0x1 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x51_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x51_0 - - thumb_func_start MovementActionFunc_x51_1 -MovementActionFunc_x51_1: @ 8066590 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _080665A4 - movs r0, 0 - b _080665B4 -_080665A4: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080665B4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x51_1 - - thumb_func_start MovementActionFunc_x52_0 -MovementActionFunc_x52_0: @ 80665BC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x52_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x52_0 - - thumb_func_start MovementActionFunc_x52_1 -MovementActionFunc_x52_1: @ 80665E8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _080665FC - movs r0, 0 - b _0806660C -_080665FC: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_0806660C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x52_1 - - thumb_func_start MovementActionFunc_x53_0 -MovementActionFunc_x53_0: @ 8066614 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x53_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x53_0 - - thumb_func_start MovementActionFunc_x53_1 -MovementActionFunc_x53_1: @ 8066640 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _08066654 - movs r0, 0 - b _08066664 -_08066654: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08066664: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x53_1 - - thumb_func_start MovementActionFunc_x54_0 -MovementActionFunc_x54_0: @ 806666C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x54_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x54_0 - - thumb_func_start MovementActionFunc_x54_1 -MovementActionFunc_x54_1: @ 8066698 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _080666AC - movs r0, 0 - b _080666BC -_080666AC: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080666BC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x54_1 - - thumb_func_start MovementActionFunc_x55_0 -MovementActionFunc_x55_0: @ 80666C4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x55_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x55_0 - - thumb_func_start MovementActionFunc_x55_1 -MovementActionFunc_x55_1: @ 80666F0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _08066704 - movs r0, 0 - b _08066714 -_08066704: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08066714: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x55_1 - - thumb_func_start MovementActionFunc_x56_0 -MovementActionFunc_x56_0: @ 806671C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x56_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x56_0 - - thumb_func_start MovementActionFunc_x56_1 -MovementActionFunc_x56_1: @ 8066748 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065058 - lsls r0, 24 - cmp r0, 0 - bne _0806675C - movs r0, 0 - b _0806676C -_0806675C: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_0806676C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x56_1 - - thumb_func_start MovementActionFunc_x57_0 -MovementActionFunc_x57_0: @ 8066774 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x57_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x57_0 - - thumb_func_start MovementActionFunc_x57_1 -MovementActionFunc_x57_1: @ 80667A0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065058 - lsls r0, 24 - cmp r0, 0 - bne _080667B4 - movs r0, 0 - b _080667C4 -_080667B4: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080667C4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x57_1 - - thumb_func_start MovementActionFunc_x58_0 -MovementActionFunc_x58_0: @ 80667CC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x58_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x58_0 - - thumb_func_start MovementActionFunc_x58_1 -MovementActionFunc_x58_1: @ 80667F8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065058 - lsls r0, 24 - cmp r0, 0 - bne _0806680C - movs r0, 0 - b _0806681C -_0806680C: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_0806681C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x58_1 - - thumb_func_start MovementActionFunc_x59_0 -MovementActionFunc_x59_0: @ 8066824 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x59_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x59_0 - - thumb_func_start MovementActionFunc_x59_1 -MovementActionFunc_x59_1: @ 8066850 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065058 - lsls r0, 24 - cmp r0, 0 - bne _08066864 - movs r0, 0 - b _08066874 -_08066864: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08066874: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x59_1 - - thumb_func_start MovementActionFunc_x5A_0 -MovementActionFunc_x5A_0: @ 806687C - push {lr} - ldr r3, _08066890 @ =gInitialMovementTypeFacingDirections - ldrb r2, [r0, 0x6] - adds r2, r3 - ldrb r2, [r2] - bl FaceDirection - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_08066890: .4byte gInitialMovementTypeFacingDirections - thumb_func_end MovementActionFunc_x5A_0 - - thumb_func_start MovementActionFunc_x5B_0 -MovementActionFunc_x5B_0: @ 8066894 - push {lr} - movs r2, 0x1 - movs r3, 0x14 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x5B_0 - - thumb_func_start MovementActionFunc_x5C_0 -MovementActionFunc_x5C_0: @ 80668A4 - ldrb r3, [r0, 0x3] - movs r2, 0x3 - negs r2, r2 - ands r2, r3 - strb r2, [r0, 0x3] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end MovementActionFunc_x5C_0 - - thumb_func_start MovementActionFunc_x5D_0 -MovementActionFunc_x5D_0: @ 80668B4 - ldrb r2, [r0, 0x3] - movs r3, 0x2 - orrs r2, r3 - strb r2, [r0, 0x3] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end MovementActionFunc_x5D_0 - - thumb_func_start MovementActionFunc_x5E_0 -MovementActionFunc_x5E_0: @ 80668C4 - ldrb r2, [r0, 0x1] - movs r3, 0x10 - orrs r2, r3 - strb r2, [r0, 0x1] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end MovementActionFunc_x5E_0 - - thumb_func_start MovementActionFunc_x5F_0 -MovementActionFunc_x5F_0: @ 80668D4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x5] - bl GetObjectEventGraphicsInfo - ldrb r1, [r0, 0xC] - lsls r1, 25 - lsrs r1, 31 - lsls r1, 4 - ldrb r2, [r4, 0x1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r0, 0x1 - strh r0, [r5, 0x32] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x5F_0 - - thumb_func_start MovementActionFunc_x60_0 -MovementActionFunc_x60_0: @ 8066900 - ldrb r2, [r0, 0x1] - movs r3, 0x20 - orrs r2, r3 - strb r2, [r0, 0x1] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end MovementActionFunc_x60_0 - - thumb_func_start MovementActionFunc_x61_0 -MovementActionFunc_x61_0: @ 8066910 - ldrb r3, [r0, 0x1] - movs r2, 0x21 - negs r2, r2 - ands r2, r3 - strb r2, [r0, 0x1] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end MovementActionFunc_x61_0 - - thumb_func_start do_exclamation_mark_bubble_1 -do_exclamation_mark_bubble_1: @ 8066920 - push {r4,lr} - adds r4, r1, 0 - ldr r1, _08066940 @ =gFieldEffectArguments - adds r2, r1, 0x4 - adds r3, r1, 0 - adds r3, 0x8 - bl ObjectEventGetLocalIdAndMap - movs r0, 0 @ FLDEFF_EXCLAMATION_MARK_ICON - bl FieldEffectStart - movs r0, 0x1 - strh r0, [r4, 0x32] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08066940: .4byte gFieldEffectArguments - thumb_func_end do_exclamation_mark_bubble_1 - - thumb_func_start do_exclamation_mark_bubble_2 -do_exclamation_mark_bubble_2: @ 8066944 - push {r4,lr} - adds r4, r1, 0 - ldr r1, _08066964 @ =gFieldEffectArguments - adds r2, r1, 0x4 - adds r3, r1, 0 - adds r3, 0x8 - bl ObjectEventGetLocalIdAndMap - movs r0, 0x21 @ FLDEFF_QUESTION_MARK_ICON - bl FieldEffectStart - movs r0, 0x1 - strh r0, [r4, 0x32] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08066964: .4byte gFieldEffectArguments - thumb_func_end do_exclamation_mark_bubble_2 - - thumb_func_start do_x_bubble -do_x_bubble: @ 8066968 - push {r4,lr} - adds r4, r1, 0 - ldr r1, _08066988 @ =gFieldEffectArguments - adds r2, r1, 0x4 - adds r3, r1, 0 - adds r3, 0x8 - bl ObjectEventGetLocalIdAndMap - movs r0, 0x2E @ FLDEFF_X_ICON - bl FieldEffectStart - movs r0, 0x1 - strh r0, [r4, 0x32] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08066988: .4byte gFieldEffectArguments - thumb_func_end do_x_bubble - - thumb_func_start do_double_excl_bubble -do_double_excl_bubble: @ 806698C - push {r4,lr} - adds r4, r1, 0 - ldr r1, _080669AC @ =gFieldEffectArguments - adds r2, r1, 0x4 - adds r3, r1, 0 - adds r3, 0x8 - bl ObjectEventGetLocalIdAndMap - movs r0, 0x42 @ FLDEFF_DOUBLE_EXCL_MARK_ICON - bl FieldEffectStart - movs r0, 0x1 - strh r0, [r4, 0x32] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080669AC: .4byte gFieldEffectArguments - thumb_func_end do_double_excl_bubble - - thumb_func_start do_smile_bubble -do_smile_bubble: @ 80669B0 - push {r4,lr} - adds r4, r1, 0 - ldr r1, _080669D0 @ =gFieldEffectArguments - adds r2, r1, 0x4 - adds r3, r1, 0 - adds r3, 0x8 - bl ObjectEventGetLocalIdAndMap - movs r0, 0x40 @ FLDEFF_SMILEY_FACE_ICON - bl FieldEffectStart - movs r0, 0x1 - strh r0, [r4, 0x32] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080669D0: .4byte gFieldEffectArguments - thumb_func_end do_smile_bubble - - thumb_func_start MovementActionFunc_x67_0 -MovementActionFunc_x67_0: @ 80669D4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x6] - cmp r0, 0x3F - bne _080669EA - adds r0, r4, 0 - bl MovementAction_RevealTrainer_RunTrainerSeeFuncList - movs r0, 0 - b _08066A12 -_080669EA: - subs r0, 0x39 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08066A0C - adds r0, r4, 0 - bl sub_80DCBB8 - movs r0, 0x1 - strh r0, [r5, 0x32] - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x67_1 - lsls r0, 24 - lsrs r0, 24 - b _08066A12 -_08066A0C: - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08066A12: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x67_0 - - thumb_func_start MovementActionFunc_x67_1 -MovementActionFunc_x67_1: @ 8066A18 - push {r4,lr} - adds r4, r1, 0 - bl sub_80DCBE0 - lsls r0, 24 - cmp r0, 0 - bne _08066A2A - movs r0, 0 - b _08066A30 -_08066A2A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08066A30: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x67_1 - - thumb_func_start MovementActionFunc_x68_0 -MovementActionFunc_x68_0: @ 8066A38 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - bl obj_anim_image_set_and_seek - movs r0, 0x1 - strh r0, [r4, 0x32] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x68_0 - - thumb_func_start MovementActionFunc_x68_1 -MovementActionFunc_x68_1: @ 8066A54 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl SpriteAnimEnded - lsls r0, 24 - cmp r0, 0 - beq _08066A70 - adds r0, r4, 0 - movs r1, 0x20 - bl SetObjectEventStepTimer - movs r0, 0x2 - strh r0, [r4, 0x32] -_08066A70: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x68_1 - - thumb_func_start MovementActionFunc_x68_2 -MovementActionFunc_x68_2: @ 8066A78 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r2, [r4, 0x1] - lsls r1, r2, 26 - lsrs r1, 31 - movs r0, 0x1 - eors r1, r0 - lsls r1, 5 - subs r0, 0x22 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - beq _08066AAA - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r0, 0x3 - strh r0, [r5, 0x32] -_08066AAA: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x68_2 - - thumb_func_start MovementActionFunc_x69_0 -MovementActionFunc_x69_0: @ 8066AB4 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - bl obj_anim_image_set_and_seek - movs r0, 0x1 - strh r0, [r4, 0x32] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x69_0 - - thumb_func_start MovementActionFunc_x69_1 -MovementActionFunc_x69_1: @ 8066AD0 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl SpriteAnimEnded - lsls r0, 24 - cmp r0, 0 - beq _08066AEC - adds r0, r4, 0 - movs r1, 0x20 - bl SetObjectEventStepTimer - movs r0, 0x2 - strh r0, [r4, 0x32] -_08066AEC: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x69_1 - - thumb_func_start MovementActionFunc_x69_2 -MovementActionFunc_x69_2: @ 8066AF4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r2, [r4, 0x1] - lsls r1, r2, 26 - lsrs r1, 31 - movs r0, 0x1 - eors r1, r0 - lsls r1, 5 - subs r0, 0x22 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r0, r5, 0 - bl RunObjectEventStepTimer - lsls r0, 24 - cmp r0, 0 - beq _08066B26 - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r0, 0x3 - strh r0, [r5, 0x32] -_08066B26: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x69_2 - - thumb_func_start MovementActionFunc_x6A_0 -MovementActionFunc_x6A_0: @ 8066B30 - ldrb r2, [r0, 0x3] - movs r3, 0x4 - orrs r2, r3 - strb r2, [r0, 0x3] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end MovementActionFunc_x6A_0 - - thumb_func_start MovementActionFunc_x6B_0 -MovementActionFunc_x6B_0: @ 8066B40 - ldrb r3, [r0, 0x3] - movs r2, 0x5 - negs r2, r2 - ands r2, r3 - strb r2, [r0, 0x3] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end MovementActionFunc_x6B_0 - - thumb_func_start MovementActionFunc_x6C_0 -MovementActionFunc_x6C_0: @ 8066B50 - push {r4,lr} - adds r4, r1, 0 - ldrb r0, [r4, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r0, r4, 0 - bl InitSpriteAffineAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - adds r4, 0x42 - ldrb r1, [r4] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x6C_0 - - thumb_func_start MovementActionFunc_x6D_0 -MovementActionFunc_x6D_0: @ 8066B80 - push {r4,lr} - adds r4, r1, 0 - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r4, 0x1] - movs r1, 0x4 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x1] - lsrs r1, 6 - ldrb r2, [r4, 0x3] - lsrs r2, 6 - movs r3, 0 - adds r0, r4, 0 - bl CalcCenterToCornerVec - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x6D_0 - - thumb_func_start MovementActionFunc_x6E_0 -MovementActionFunc_x6E_0: @ 8066BB0 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8064830 - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAffineAnimIfDifferent - adds r0, r5, 0 - adds r1, r4, 0 - bl MovementActionFunc_x6E_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x6E_0 - - thumb_func_start MovementActionFunc_x6E_1 -MovementActionFunc_x6E_1: @ 8066BE4 - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _08066BF6 - movs r0, 0 - b _08066C08 -_08066BF6: - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08066C08: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x6E_1 - - thumb_func_start MovementActionFunc_x6F_0 -MovementActionFunc_x6F_0: @ 8066C10 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8064830 - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnimIfDifferent - adds r0, r5, 0 - adds r1, r4, 0 - bl MovementActionFunc_x6F_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x6F_0 - - thumb_func_start MovementActionFunc_x6F_1 -MovementActionFunc_x6F_1: @ 8066C44 - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _08066C56 - movs r0, 0 - b _08066C68 -_08066C56: - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08066C68: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x6F_1 - - thumb_func_start sub_8066C70 -sub_8066C70: @ 8066C70 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - lsls r4, r2, 24 - lsrs r4, 24 - adds r1, r4, 0 - bl ObjectEventSetDirection - adds r0, r5, 0 - bl npc_coords_shift_still - adds r0, r4, 0 - bl sub_80634E0 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r6, 0 - bl obj_npc_animation_step - adds r2, r6, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 - strh r0, [r6, 0x32] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8066C70 - - thumb_func_start MovementActionFunc_x70_0 -MovementActionFunc_x70_0: @ 8066CB0 - push {lr} - movs r2, 0x1 - bl sub_8066C70 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x70_0 - - thumb_func_start MovementActionFunc_x71_0 -MovementActionFunc_x71_0: @ 8066CC0 - push {lr} - movs r2, 0x2 - bl sub_8066C70 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x71_0 - - thumb_func_start MovementActionFunc_x72_0 -MovementActionFunc_x72_0: @ 8066CD0 - push {lr} - movs r2, 0x3 - bl sub_8066C70 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x72_0 - - thumb_func_start MovementActionFunc_x73_0 -MovementActionFunc_x73_0: @ 8066CE0 - push {lr} - movs r2, 0x4 - bl sub_8066C70 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x73_0 - - thumb_func_start MovementActionFunc_x74_0 -MovementActionFunc_x74_0: @ 8066CF0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl sub_8063490 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x74_0 - - thumb_func_start MovementActionFunc_x75_0 -MovementActionFunc_x75_0: @ 8066D14 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl sub_8063490 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x75_0 - - thumb_func_start MovementActionFunc_x76_0 -MovementActionFunc_x76_0: @ 8066D38 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl sub_8063490 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x76_0 - - thumb_func_start MovementActionFunc_x77_0 -MovementActionFunc_x77_0: @ 8066D5C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl sub_8063490 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x77_0 - - thumb_func_start MovementActionFunc_x78_0 -MovementActionFunc_x78_0: @ 8066D80 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl sub_80634B0 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x78_0 - - thumb_func_start MovementActionFunc_x79_0 -MovementActionFunc_x79_0: @ 8066DA4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl sub_80634B0 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x79_0 - - thumb_func_start MovementActionFunc_x7A_0 -MovementActionFunc_x7A_0: @ 8066DC8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl sub_80634B0 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7A_0 - - thumb_func_start MovementActionFunc_x7B_0 -MovementActionFunc_x7B_0: @ 8066DEC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl sub_80634B0 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7B_0 - - thumb_func_start MovementActionFunc_x7B_3 -MovementActionFunc_x7B_3: @ 8066E10 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl sub_80634D0 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7B_3 - - thumb_func_start MovementActionFunc_x7B_6 -MovementActionFunc_x7B_6: @ 8066E34 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl sub_80634D0 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7B_6 - - thumb_func_start MovementActionFunc_x7B_9 -MovementActionFunc_x7B_9: @ 8066E58 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl sub_80634D0 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7B_9 - - thumb_func_start MovementActionFunc_x7B_12 -MovementActionFunc_x7B_12: @ 8066E7C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl sub_80634D0 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7B_12 - - thumb_func_start sub_8066EA0 -sub_8066EA0: @ 8066EA0 - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - adds r5, r1, 0 - adds r4, r2, 0 - ldr r0, [sp, 0x14] - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - adds r0, r6, 0 - adds r2, r4, 0 - bl sub_8064E3C - adds r0, r4, 0 - bl sub_8063490 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnimIfDifferent - adds r0, r6, 0 - bl DoShadowFieldEffect - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8066EA0 - - thumb_func_start MovementActionFunc_x7C_0 -MovementActionFunc_x7C_0: @ 8066EE4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0 - bl sub_8066EA0 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x7C_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7C_0 - - thumb_func_start MovementActionFunc_x7C_1 -MovementActionFunc_x7C_1: @ 8066F10 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _08066F24 - movs r0, 0 - b _08066F34 -_08066F24: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08066F34: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7C_1 - - thumb_func_start MovementActionFunc_x7D_0 -MovementActionFunc_x7D_0: @ 8066F3C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0 - bl sub_8066EA0 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x7D_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7D_0 - - thumb_func_start MovementActionFunc_x7D_1 -MovementActionFunc_x7D_1: @ 8066F68 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _08066F7C - movs r0, 0 - b _08066F8C -_08066F7C: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08066F8C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7D_1 - - thumb_func_start MovementActionFunc_x7E_0 -MovementActionFunc_x7E_0: @ 8066F94 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0 - bl sub_8066EA0 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x7E_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7E_0 - - thumb_func_start MovementActionFunc_x7E_1 -MovementActionFunc_x7E_1: @ 8066FC0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _08066FD4 - movs r0, 0 - b _08066FE4 -_08066FD4: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08066FE4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7E_1 - - thumb_func_start MovementActionFunc_x7F_0 -MovementActionFunc_x7F_0: @ 8066FEC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0 - bl sub_8066EA0 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x7F_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7F_0 - - thumb_func_start MovementActionFunc_x7F_1 -MovementActionFunc_x7F_1: @ 8067018 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _0806702C - movs r0, 0 - b _0806703C -_0806702C: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_0806703C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x7F_1 - - thumb_func_start MovementActionFunc_x80_0 -MovementActionFunc_x80_0: @ 8067044 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x1 - bl sub_8066EA0 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x80_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x80_0 - - thumb_func_start MovementActionFunc_x80_1 -MovementActionFunc_x80_1: @ 8067070 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _08067084 - movs r0, 0 - b _08067094 -_08067084: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08067094: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x80_1 - - thumb_func_start MovementActionFunc_x81_0 -MovementActionFunc_x81_0: @ 806709C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_8066EA0 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x81_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x81_0 - - thumb_func_start MovementActionFunc_x81_1 -MovementActionFunc_x81_1: @ 80670C8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _080670DC - movs r0, 0 - b _080670EC -_080670DC: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080670EC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x81_1 - - thumb_func_start MovementActionFunc_x82_0 -MovementActionFunc_x82_0: @ 80670F4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_8066EA0 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x82_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x82_0 - - thumb_func_start MovementActionFunc_x82_1 -MovementActionFunc_x82_1: @ 8067120 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _08067134 - movs r0, 0 - b _08067144 -_08067134: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08067144: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x82_1 - - thumb_func_start MovementActionFunc_x83_0 -MovementActionFunc_x83_0: @ 806714C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0x1 - bl sub_8066EA0 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x83_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x83_0 - - thumb_func_start MovementActionFunc_x83_1 -MovementActionFunc_x83_1: @ 8067178 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _0806718C - movs r0, 0 - b _0806719C -_0806718C: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_0806719C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x83_1 - - thumb_func_start MovementActionFunc_x84_0 -MovementActionFunc_x84_0: @ 80671A4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x2 - bl sub_8066EA0 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x84_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x84_0 - - thumb_func_start MovementActionFunc_x84_1 -MovementActionFunc_x84_1: @ 80671D0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _080671E4 - movs r0, 0 - b _080671F4 -_080671E4: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080671F4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x84_1 - - thumb_func_start MovementActionFunc_x85_0 -MovementActionFunc_x85_0: @ 80671FC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl sub_8066EA0 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x85_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x85_0 - - thumb_func_start MovementActionFunc_x85_1 -MovementActionFunc_x85_1: @ 8067228 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _0806723C - movs r0, 0 - b _0806724C -_0806723C: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_0806724C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x85_1 - - thumb_func_start MovementActionFunc_x86_0 -MovementActionFunc_x86_0: @ 8067254 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0x2 - bl sub_8066EA0 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x86_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x86_0 - - thumb_func_start MovementActionFunc_x86_1 -MovementActionFunc_x86_1: @ 8067280 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _08067294 - movs r0, 0 - b _080672A4 -_08067294: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080672A4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x86_1 - - thumb_func_start MovementActionFunc_x87_0 -MovementActionFunc_x87_0: @ 80672AC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0x2 - bl sub_8066EA0 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x87_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x87_0 - - thumb_func_start MovementActionFunc_x87_1 -MovementActionFunc_x87_1: @ 80672D8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8065028 - lsls r0, 24 - cmp r0, 0 - bne _080672EC - movs r0, 0 - b _080672FC -_080672EC: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080672FC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x87_1 - - thumb_func_start MovementActionFunc_x88_0 -MovementActionFunc_x88_0: @ 8067304 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl sub_80634E0 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x88_0 - - thumb_func_start MovementActionFunc_x89_0 -MovementActionFunc_x89_0: @ 806733C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl sub_80634E0 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x89_0 - - thumb_func_start MovementActionFunc_x8A_0 -MovementActionFunc_x8A_0: @ 8067374 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl sub_80634E0 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x8A_0 - - thumb_func_start MovementActionFunc_x8B_0 -MovementActionFunc_x8B_0: @ 80673AC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl sub_80634E0 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl sub_80656C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x25_1 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x8B_0 - - thumb_func_start sub_80673E4 -sub_80673E4: @ 80673E4 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - bl sub_8064678 - ldrb r0, [r5, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl sub_8063490 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - movs r1, 0 - bl SeekSpriteAnim - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80673E4 - - thumb_func_start MovementActionFunc_x8C_0 -MovementActionFunc_x8C_0: @ 806741C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x1 - bl sub_80673E4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x8C_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x8C_0 - - thumb_func_start MovementActionFunc_x8C_1 -MovementActionFunc_x8C_1: @ 806743C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806744E - movs r0, 0 - b _08067454 -_0806744E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08067454: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x8C_1 - - thumb_func_start MovementActionFunc_x8D_0 -MovementActionFunc_x8D_0: @ 806745C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_80673E4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x8D_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x8D_0 - - thumb_func_start MovementActionFunc_x8D_1 -MovementActionFunc_x8D_1: @ 806747C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806748E - movs r0, 0 - b _08067494 -_0806748E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08067494: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x8D_1 - - thumb_func_start MovementActionFunc_x8E_0 -MovementActionFunc_x8E_0: @ 806749C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_80673E4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x8E_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x8E_0 - - thumb_func_start MovementActionFunc_x8E_1 -MovementActionFunc_x8E_1: @ 80674BC - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080674CE - movs r0, 0 - b _080674D4 -_080674CE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080674D4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x8E_1 - - thumb_func_start MovementActionFunc_x8F_0 -MovementActionFunc_x8F_0: @ 80674DC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x1 - bl sub_80673E4 - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x8F_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x8F_0 - - thumb_func_start MovementActionFunc_x8F_1 -MovementActionFunc_x8F_1: @ 80674FC - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806750E - movs r0, 0 - b _08067514 -_0806750E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08067514: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x8F_1 - - thumb_func_start sub_806751C -sub_806751C: @ 806751C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - bl sub_8064678 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl sub_80634E0 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_apply_anim_looping - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_806751C - - thumb_func_start MovementActionFunc_x90_0 -MovementActionFunc_x90_0: @ 806754C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x1 - bl sub_806751C - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x90_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x90_0 - - thumb_func_start MovementActionFunc_x90_1 -MovementActionFunc_x90_1: @ 806756C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806757E - movs r0, 0 - b _08067584 -_0806757E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08067584: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x90_1 - - thumb_func_start MovementActionFunc_x91_0 -MovementActionFunc_x91_0: @ 806758C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_806751C - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x91_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x91_0 - - thumb_func_start MovementActionFunc_x91_1 -MovementActionFunc_x91_1: @ 80675AC - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080675BE - movs r0, 0 - b _080675C4 -_080675BE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080675C4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x91_1 - - thumb_func_start MovementActionFunc_x92_0 -MovementActionFunc_x92_0: @ 80675CC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_806751C - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x92_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x92_0 - - thumb_func_start MovementActionFunc_x92_1 -MovementActionFunc_x92_1: @ 80675EC - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080675FE - movs r0, 0 - b _08067604 -_080675FE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08067604: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x92_1 - - thumb_func_start MovementActionFunc_x93_0 -MovementActionFunc_x93_0: @ 806760C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x1 - bl sub_806751C - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x93_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x93_0 - - thumb_func_start MovementActionFunc_x93_1 -MovementActionFunc_x93_1: @ 806762C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806763E - movs r0, 0 - b _08067644 -_0806763E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08067644: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x93_1 - - thumb_func_start sub_806764C -sub_806764C: @ 806764C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - bl sub_8064678 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl sub_80634C0 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_apply_anim_looping - adds r0, r5, 0 - movs r1, 0 - bl SeekSpriteAnim - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_806764C - - thumb_func_start MovementActionFunc_x94_0 -MovementActionFunc_x94_0: @ 8067684 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x1 - bl sub_806764C - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x94_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x94_0 - - thumb_func_start MovementActionFunc_x94_1 -MovementActionFunc_x94_1: @ 80676A4 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080676B6 - movs r0, 0 - b _080676BC -_080676B6: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080676BC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x94_1 - - thumb_func_start MovementActionFunc_x95_0 -MovementActionFunc_x95_0: @ 80676C4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_806764C - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x95_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x95_0 - - thumb_func_start MovementActionFunc_x95_1 -MovementActionFunc_x95_1: @ 80676E4 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080676F6 - movs r0, 0 - b _080676FC -_080676F6: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080676FC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x95_1 - - thumb_func_start MovementActionFunc_x96_0 -MovementActionFunc_x96_0: @ 8067704 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_806764C - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x96_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x96_0 - - thumb_func_start MovementActionFunc_x96_1 -MovementActionFunc_x96_1: @ 8067724 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08067736 - movs r0, 0 - b _0806773C -_08067736: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_0806773C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x96_1 - - thumb_func_start MovementActionFunc_x97_0 -MovementActionFunc_x97_0: @ 8067744 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x1 - bl sub_806764C - adds r0, r4, 0 - adds r1, r5, 0 - bl MovementActionFunc_x97_1 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x97_0 - - thumb_func_start MovementActionFunc_x97_1 -MovementActionFunc_x97_1: @ 8067764 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08067776 - movs r0, 0 - b _0806777C -_08067776: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_0806777C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x97_1 - - thumb_func_start MovementActionFunc_x98_0 -MovementActionFunc_x98_0: @ 8067784 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x14 - bl StartSpriteAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrb r1, [r5, 0x1] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r5, 0x1] - movs r1, 0 - movs r0, 0x1 - strh r0, [r4, 0x32] - strh r1, [r4, 0x36] - strh r1, [r4, 0x38] - strh r1, [r4, 0x3A] - strh r1, [r4, 0x3C] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x98_0 - - thumb_func_start MovementActionFunc_x98_1 -MovementActionFunc_x98_1: @ 80677C0 - adds r1, 0x3F - ldrb r0, [r1] - lsls r0, 27 - lsrs r0, 31 - bx lr - thumb_func_end MovementActionFunc_x98_1 - - thumb_func_start MovementActionFunc_x99_1 -MovementActionFunc_x99_1: @ 80677CC - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r0, 0x3C - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _08067854 - cmp r1, 0x1 - bgt _080677E4 - cmp r1, 0 - beq _080677EA - b _080678B6 -_080677E4: - cmp r1, 0x2 - beq _08067896 - b _080678B6 -_080677EA: - ldrh r0, [r4, 0x3A] - adds r0, 0xA - strh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7F - ble _08067822 - strh r1, [r4, 0x3A] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - strh r0, [r4, 0x3C] - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrb r1, [r5, 0x1] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r5, 0x1] -_08067822: - ldr r1, _08067850 @ =gSineTable - movs r2, 0x3A - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r0, r1, 1 - adds r0, r1 - asrs r0, 7 - negs r0, r0 - strh r0, [r4, 0x26] - negs r1, r0 - orrs r1, r0 - lsrs r1, 31 - lsls r1, 1 - ldrb r2, [r5] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5] - b _080678B6 - .align 2, 0 -_08067850: .4byte gSineTable -_08067854: - ldrh r0, [r4, 0x36] - adds r0, 0x1 - movs r6, 0 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _0806788A - strh r6, [r4, 0x36] - adds r0, r4, 0 - movs r1, 0x14 - bl StartSpriteAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrb r1, [r5, 0x1] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r5, 0x1] - strh r6, [r4, 0x3C] - b _080678B6 -_0806788A: - ldrb r1, [r5] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r5] - b _080678B6 -_08067896: - ldrb r1, [r5] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r5] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x50 - ble _080678B6 - movs r0, 0 - strh r0, [r4, 0x36] - movs r0, 0x1 - b _080678B8 -_080678B6: - movs r0, 0 -_080678B8: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x99_1 - - thumb_func_start MovementActionFunc_x9A_1 -MovementActionFunc_x9A_1: @ 80678C0 - push {r4,lr} - ldrh r2, [r1, 0x3C] - adds r2, 0x4 - movs r0, 0xFF - ands r2, r0 - strh r2, [r1, 0x3C] - ldr r3, _080678EC @ =gSineTable - movs r4, 0x3C - ldrsh r0, [r1, r4] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 23 - strh r0, [r1, 0x24] - movs r0, 0 - cmp r2, 0 - bne _080678E6 - movs r0, 0x1 -_080678E6: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080678EC: .4byte gSineTable - thumb_func_end MovementActionFunc_x9A_1 - - thumb_func_start MovementActionFunc_x9F_0 -MovementActionFunc_x9F_0: @ 80678F0 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x1C - bl StartSpriteAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrb r1, [r5, 0x1] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r5, 0x1] - movs r0, 0x1 - strh r0, [r4, 0x32] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_x9F_0 - - thumb_func_start MovementActionFunc_x9F_1 -MovementActionFunc_x9F_1: @ 8067924 - adds r1, 0x3F - ldrb r0, [r1] - lsls r0, 27 - lsrs r0, 31 - bx lr - thumb_func_end MovementActionFunc_x9F_1 - - thumb_func_start MovementActionFunc_x18_2 -MovementActionFunc_x18_2: @ 8067930 - movs r0, 0x1 - bx lr - thumb_func_end MovementActionFunc_x18_2 - - thumb_func_start MovementActionFunc_x00_1 -MovementActionFunc_x00_1: @ 8067934 - adds r1, 0x2C - ldrb r0, [r1] - movs r2, 0x40 - orrs r0, r2 - strb r0, [r1] - movs r0, 0x1 - bx lr - thumb_func_end MovementActionFunc_x00_1 - - thumb_func_start MovementActionFunc_xA4_0 -MovementActionFunc_xA4_0: @ 8067944 - movs r0, 0 - strh r0, [r1, 0x26] - ldrh r0, [r1, 0x32] - adds r0, 0x1 - strh r0, [r1, 0x32] - movs r0, 0 - bx lr - thumb_func_end MovementActionFunc_xA4_0 - - thumb_func_start MovementActionFunc_xA4_1 -MovementActionFunc_xA4_1: @ 8067954 - push {lr} - adds r2, r1, 0 - ldrh r0, [r2, 0x26] - subs r0, 0x8 - strh r0, [r2, 0x26] - lsls r0, 16 - asrs r0, 16 - movs r1, 0xA0 - negs r1, r1 - cmp r0, r1 - bne _08067970 - ldrh r0, [r2, 0x32] - adds r0, 0x1 - strh r0, [r2, 0x32] -_08067970: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA4_1 - - thumb_func_start MovementActionFunc_xA5_0 -MovementActionFunc_xA5_0: @ 8067978 - ldr r0, _08067988 @ =0x0000ff60 - strh r0, [r1, 0x26] - ldrh r0, [r1, 0x32] - adds r0, 0x1 - strh r0, [r1, 0x32] - movs r0, 0 - bx lr - .align 2, 0 -_08067988: .4byte 0x0000ff60 - thumb_func_end MovementActionFunc_xA5_0 - - thumb_func_start MovementActionFunc_xA5_1 -MovementActionFunc_xA5_1: @ 806798C - push {lr} - ldrh r0, [r1, 0x26] - adds r0, 0x8 - strh r0, [r1, 0x26] - lsls r0, 16 - cmp r0, 0 - bne _080679A0 - ldrh r0, [r1, 0x32] - adds r0, 0x1 - strh r0, [r1, 0x32] -_080679A0: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end MovementActionFunc_xA5_1 - - thumb_func_start MovementActionFunc_xA4_2 -MovementActionFunc_xA4_2: @ 80679A8 - movs r0, 0x1 - bx lr - thumb_func_end MovementActionFunc_xA4_2 - - thumb_func_start npc_obj_transfer_image_anim_pause_flag -npc_obj_transfer_image_anim_pause_flag: @ 80679AC - push {lr} - ldrb r0, [r0, 0x1] - lsls r0, 29 - cmp r0, 0 - bge _080679C2 - adds r0, r1, 0 - adds r0, 0x2C - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] -_080679C2: - pop {r0} - bx r0 - thumb_func_end npc_obj_transfer_image_anim_pause_flag - - thumb_func_start sub_80679C8 -sub_80679C8: @ 80679C8 - push {r4,lr} - adds r4, r0, 0 - ldrb r3, [r4, 0x1] - lsls r0, r3, 28 - cmp r0, 0 - bge _080679F0 - adds r2, r1, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - movs r1, 0x9 - negs r1, r1 - ands r0, r1 - strb r0, [r4, 0x1] -_080679F0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80679C8 - - thumb_func_start sub_80679F8 -sub_80679F8: @ 80679F8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8067A10 - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_update_obj_anim_flag - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80679F8 - - thumb_func_start sub_8067A10 -sub_8067A10: @ 8067A10 - push {r4-r7,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrb r1, [r5, 0x1] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r5, 0x1] - ldrb r0, [r5, 0x5] - bl GetObjectEventGraphicsInfo - adds r7, r0, 0 - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08067A74 - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldr r2, _08067A6C @ =gSpriteCoordOffsetX - adds r0, r1 - ldrh r2, [r2] - adds r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r1, [r4, 0x26] - ldrh r0, [r4, 0x22] - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x29 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldr r2, _08067A70 @ =gSpriteCoordOffsetY - adds r0, r1 - ldrh r2, [r2] - adds r0, r2 - b _08067A9C - .align 2, 0 -_08067A6C: .4byte gSpriteCoordOffsetX -_08067A70: .4byte gSpriteCoordOffsetY -_08067A74: - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r1, [r4, 0x26] - ldrh r0, [r4, 0x22] - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x29 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 -_08067A9C: - lsls r0, 16 - lsrs r2, r0, 16 - ldrh r0, [r7, 0x8] - adds r0, r3 - lsls r0, 16 - lsrs r6, r0, 16 - ldrh r0, [r7, 0xA] - adds r0, r2 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, _08067B00 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r1, [r0, 0x4] - ldr r0, _08067B04 @ =0x00000401 - ldr r4, _08067B08 @ =0x0000fff0 - cmp r1, r0 - bne _08067AC6 - ldrb r0, [r5, 0x8] - cmp r0, 0x1 - bne _08067AC6 - subs r4, 0x10 -_08067AC6: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0xFF - bgt _08067AD6 - lsls r1, r6, 16 - lsls r0, r4, 16 - cmp r1, r0 - bge _08067ADE -_08067AD6: - ldrb r0, [r5, 0x1] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r5, 0x1] -_08067ADE: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0xAF - bgt _08067AF2 - lsls r0, r7, 16 - asrs r0, 16 - movs r1, 0x10 - negs r1, r1 - cmp r0, r1 - bge _08067AFA -_08067AF2: - ldrb r0, [r5, 0x1] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r5, 0x1] -_08067AFA: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067B00: .4byte gSaveBlock1Ptr -_08067B04: .4byte 0x00000401 -_08067B08: .4byte 0x0000fff0 - thumb_func_end sub_8067A10 - - thumb_func_start npc_update_obj_anim_flag -npc_update_obj_anim_flag: @ 8067B0C - push {lr} - adds r2, r1, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r3, 0x5 - negs r3, r3 - ands r3, r1 - strb r3, [r2] - ldrb r1, [r0, 0x1] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _08067B2E - movs r1, 0x4 - adds r0, r3, 0 - orrs r0, r1 - strb r0, [r2] -_08067B2E: - pop {r0} - bx r0 - thumb_func_end npc_update_obj_anim_flag - thumb_func_start GetAllGroundEffectFlags_OnSpawn GetAllGroundEffectFlags_OnSpawn: @ 8067B34 push {r4,r5,lr} diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 58a6b6e76..09c516bd8 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -923,7 +923,7 @@ _0806CFA4: .4byte gDirectionToVectors _0806CFA8: .4byte gObjectEvents _0806CFAC: movs r4, 0 - ldr r1, _0806CFE4 @ =gUnknown_2031DEC + ldr r1, _0806CFE4 @ =gLinkPlayerObjectEvents _0806CFB0: ldrb r0, [r1] cmp r0, 0x1 @@ -953,7 +953,7 @@ _0806CFDE: pop {r1} bx r1 .align 2, 0 -_0806CFE4: .4byte gUnknown_2031DEC +_0806CFE4: .4byte gLinkPlayerObjectEvents _0806CFE8: .4byte gSelectedObjectEvent _0806CFEC: .4byte gSpecialVar_LastTalked _0806CFF0: .4byte gSpecialVar_Facing @@ -3083,7 +3083,7 @@ _0806E046: GetObjectEventScriptPointerForComparison: @ 806E050 push {r4,r5,lr} sub sp, 0x8 - bl player_get_direction_upper_nybble + bl GetPlayerMovementDirection adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -3112,7 +3112,7 @@ GetObjectEventScriptPointerForComparison: @ 806E050 SetCableClubWarp: @ 806E08C push {r4,lr} sub sp, 0x8 - bl player_get_direction_upper_nybble + bl GetPlayerMovementDirection mov r4, sp mov r0, sp bl player_get_pos_to_and_height diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s index 79ac729b8..31123a703 100644 --- a/asm/field_player_avatar.s +++ b/asm/field_player_avatar.s @@ -17,7 +17,7 @@ sub_805B3B8: @ 805B3B8 ldr r2, _0805B3D4 @ =gObjectEvents adds r0, r2 ldr r2, _0805B3D8 @ =sub_805B3DC - bl ObjectEventStep + bl UpdateObjectEventCurrentMovement pop {r0} bx r0 .align 2, 0 @@ -104,7 +104,7 @@ sub_805B45C: @ 805B45C cmp r0, 0 bne _0805B4A6 adds r0, r4, 0 - bl ObjectEventGetSpecialAnim + bl ObjectEventGetHeldMovementActionId lsls r0, 24 movs r1, 0xDF lsls r1, 24 @@ -119,7 +119,7 @@ sub_805B45C: @ 805B45C cmp r0, r5 beq _0805B4A2 adds r0, r4, 0 - bl ObjectEventClearAnim + bl ObjectEventClearHeldMovement b _0805B4A6 _0805B4A2: movs r0, 0x1 @@ -245,7 +245,7 @@ sub_805B528: @ 805B528 strh r0, [r5, 0x1C] _0805B57A: ldr r0, [r4] - bl ObjectEventClearAnim + bl ObjectEventClearHeldMovement ldrb r0, [r5, 0x1C] bl sub_805C2CC _0805B586: @@ -374,7 +374,7 @@ ForcedMovement_None: @ 805B644 ldrb r1, [r0, 0x18] lsls r1, 28 lsrs r1, 28 - bl ObjectEventSetDirection + bl SetObjectEventDirection ldrb r1, [r4] movs r0, 0xBF ands r0, r1 @@ -816,7 +816,7 @@ CheckMovementInputNotOnBike: @ 805B96C .align 2, 0 _0805B980: .4byte gPlayerAvatar _0805B984: - bl player_get_direction_upper_nybble + bl GetPlayerMovementDirection lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -1678,8 +1678,8 @@ _0805BFD8: .4byte gObjectEvents _0805BFDC: .4byte gPlayerAvatar thumb_func_end player_set_x22 - thumb_func_start player_get_x22 -player_get_x22: @ 805BFE0 + thumb_func_start PlayerGetCopyableMovement +PlayerGetCopyableMovement: @ 805BFE0 ldr r2, _0805BFF4 @ =gObjectEvents ldr r0, _0805BFF8 @ =gPlayerAvatar ldrb r1, [r0, 0x5] @@ -1693,7 +1693,7 @@ player_get_x22: @ 805BFE0 .align 2, 0 _0805BFF4: .4byte gObjectEvents _0805BFF8: .4byte gPlayerAvatar - thumb_func_end player_get_x22 + thumb_func_end PlayerGetCopyableMovement thumb_func_start sub_805BFFC sub_805BFFC: @ 805BFFC @@ -1708,7 +1708,7 @@ sub_805BFFC: @ 805BFFC lsls r0, 2 ldr r2, _0805C020 @ =gObjectEvents adds r0, r2 - bl ObjectEventForceSetSpecialAnim + bl ObjectEventForceSetHeldMovement pop {r0} bx r0 .align 2, 0 @@ -1854,7 +1854,7 @@ sub_805C11C: @ 805C11C push {lr} lsls r0, 24 lsrs r0, 24 - bl sub_8063FB0 + bl GetWalkFastMovementAction lsls r0, 24 lsrs r0, 24 movs r1, 0x2 @@ -1896,7 +1896,7 @@ sub_805C164: @ 805C164 push {lr} lsls r0, 24 lsrs r0, 24 - bl sub_8064034 + bl GetWalkFastestMovementAction lsls r0, 24 lsrs r0, 24 movs r1, 0x2 @@ -1942,7 +1942,7 @@ PlayerOnBikeCollide: @ 805C1AC adds r0, r4, 0 bl sub_805C438 adds r0, r4, 0 - bl GetStepInPlaceDelay16AnimId + bl GetWalkInPlaceNormalMovementAction lsls r0, 24 lsrs r0, 24 movs r1, 0x2 @@ -1990,7 +1990,7 @@ sub_805C20C: @ 805C20C push {lr} lsls r0, 24 lsrs r0, 24 - bl sub_8063EE4 + bl GetWalkSlowMovementAction lsls r0, 24 lsrs r0, 24 movs r1, 0x1 @@ -2004,7 +2004,7 @@ sub_805C224: @ 805C224 push {lr} lsls r0, 24 lsrs r0, 24 - bl sub_8064270 + bl GetWalkInPlaceSlowMovementAction lsls r0, 24 lsrs r0, 24 movs r1, 0x1 @@ -2022,7 +2022,7 @@ sub_805C23C: @ 805C23C movs r0, 0xA bl PlaySE adds r0, r4, 0 - bl GetJumpLedgeAnimId + bl GetJump2MovementAction lsls r0, 24 lsrs r0, 24 movs r1, 0x8 @@ -2600,8 +2600,8 @@ _0805C6DC: .4byte gObjectEvents _0805C6E0: .4byte gPlayerAvatar thumb_func_end GetPlayerFacingDirection - thumb_func_start player_get_direction_upper_nybble -player_get_direction_upper_nybble: @ 805C6E4 + thumb_func_start GetPlayerMovementDirection +GetPlayerMovementDirection: @ 805C6E4 ldr r2, _0805C6F8 @ =gObjectEvents ldr r0, _0805C6FC @ =gPlayerAvatar ldrb r1, [r0, 0x5] @@ -2615,7 +2615,7 @@ player_get_direction_upper_nybble: @ 805C6E4 .align 2, 0 _0805C6F8: .4byte gObjectEvents _0805C6FC: .4byte gPlayerAvatar - thumb_func_end player_get_direction_upper_nybble + thumb_func_end GetPlayerMovementDirection thumb_func_start PlayerGetZCoord PlayerGetZCoord: @ 805C700 @@ -2651,7 +2651,7 @@ sub_805C71C: @ 805C71C lsls r2, 16 asrs r2, 16 adds r1, r3, 0 - bl sub_805F724 + bl MoveObjectEventToMapCoords pop {r0} bx r0 .align 2, 0 @@ -2712,7 +2712,7 @@ sub_805C780: @ 805C780 lsls r1, 28 lsrs r1, 28 adds r0, r4, 0 - bl ObjectEventSetDirection + bl SetObjectEventDirection movs r0, 0x6 bl TestPlayerAvatarFlags lsls r0, 24 @@ -2787,8 +2787,8 @@ GetPlayerAvatarGraphicsIdByStateId: @ 805C808 _0805C820: .4byte gPlayerAvatar thumb_func_end GetPlayerAvatarGraphicsIdByStateId - thumb_func_start sub_805C824 -sub_805C824: @ 805C824 + thumb_func_start GetPlayerAvatarGenderByGraphicsId +GetPlayerAvatarGenderByGraphicsId: @ 805C824 push {lr} lsls r0, 24 lsrs r0, 24 @@ -2803,7 +2803,7 @@ _0805C836: _0805C838: pop {r1} bx r1 - thumb_func_end sub_805C824 + thumb_func_end GetPlayerAvatarGenderByGraphicsId thumb_func_start PartyHasMonWithSurf PartyHasMonWithSurf: @ 805C83C @@ -2854,7 +2854,7 @@ _0805C888: .4byte gPlayerParty thumb_func_start IsPlayerSurfingNorth IsPlayerSurfingNorth: @ 805C88C push {lr} - bl player_get_direction_upper_nybble + bl GetPlayerMovementDirection lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 @@ -3546,7 +3546,7 @@ sub_805CD84: @ 805CD84 adds r0, r4, 0 bl ObjectEventClearHeldMovementIfFinished ldrb r0, [r6, 0xC] - bl GetStepInPlaceDelay16AnimId + bl GetWalkInPlaceNormalMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -4296,7 +4296,7 @@ fish1: @ 805D35C lsls r4, 2 adds r4, r3 adds r0, r4, 0 - bl ObjectEventClearAnimIfSpecialAnimActive + bl ObjectEventClearHeldMovementIfActive ldrb r0, [r4, 0x1] movs r1, 0x8 orrs r0, r1 @@ -4830,7 +4830,7 @@ sub_805D7C0: @ 805D7C0 bl GetPlayerFacingDirection lsls r0, 24 lsrs r0, 24 - bl sub_8063500 + bl GetFishingBiteDirectionAnimNum adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -4886,7 +4886,7 @@ sub_805D838: @ 805D838 bl GetPlayerFacingDirection lsls r0, 24 lsrs r0, 24 - bl sub_8063500 + bl GetFishingBiteDirectionAnimNum adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -5455,7 +5455,7 @@ _0805DC9A: lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl ObjectEventForceSetSpecialAnim + bl ObjectEventForceSetHeldMovement movs r0, 0 mov r9, r0 strh r6, [r5, 0x2] @@ -5623,7 +5623,7 @@ _0805DDE4: lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 - bl ObjectEventForceSetSpecialAnim + bl ObjectEventForceSetHeldMovement movs r0, 0 strh r0, [r6] ldrb r0, [r5, 0x18] diff --git a/asm/overworld.s b/asm/overworld.s index 2412a4d87..27235fa18 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -4637,11 +4637,11 @@ sub_8057024: @ 8057024 cmp r4, 0 bne _08057050 movs r0, 0 - bl npc_paltag_set_load + bl InitObjectEventPalettes b _08057056 _08057050: movs r0, 0x1 - bl npc_paltag_set_load + bl InitObjectEventPalettes _08057056: bl FieldEffectActiveListClear bl sub_8079C08 @@ -4664,10 +4664,10 @@ sub_8057074: @ 8057074 strh r1, [r0] ldr r0, _08057098 @ =gTotalCameraPixelOffsetY strh r1, [r0] - bl sub_805DE74 + bl ResetObjectEvents movs r0, 0 movs r1, 0 - bl sub_805EC30 + bl TrySpawnObjectEvents bl mapheader_run_first_tag4_script_list_match pop {r0} bx r0 @@ -4685,7 +4685,7 @@ mli4_mapscripts_and_other: @ 805709C strh r1, [r0] ldr r0, _080570F8 @ =gTotalCameraPixelOffsetY strh r1, [r0] - bl sub_805DE74 + bl ResetObjectEvents mov r4, sp adds r4, 0x2 mov r0, sp @@ -4708,7 +4708,7 @@ mli4_mapscripts_and_other: @ 805709C bl ResetInitialPlayerAvatarState movs r0, 0 movs r1, 0 - bl sub_805EC30 + bl TrySpawnObjectEvents bl mapheader_run_first_tag4_script_list_match add sp, 0x4 pop {r4,r5} @@ -6611,7 +6611,7 @@ sub_8057F84: @ 8057F84 movs r0, 0x1 _08057F96: strb r0, [r6, 0x1] - ldr r1, _08057FE8 @ =gUnknown_2031DEC + ldr r1, _08057FE8 @ =gLinkPlayerObjectEvents lsls r0, r4, 2 adds r0, r1 ldrb r0, [r0, 0x3] @@ -6647,7 +6647,7 @@ _08057F96: pop {r0} bx r0 .align 2, 0 -_08057FE8: .4byte gUnknown_2031DEC +_08057FE8: .4byte gLinkPlayerObjectEvents thumb_func_end sub_8057F84 thumb_func_start sub_8057FEC @@ -7143,18 +7143,18 @@ ZeroLinkPlayerObjectEvent: @ 8058370 bx lr thumb_func_end ZeroLinkPlayerObjectEvent - thumb_func_start strange_npc_table_clear -strange_npc_table_clear: @ 8058378 + thumb_func_start ClearLinkPlayerObjectEvents +ClearLinkPlayerObjectEvents: @ 8058378 push {lr} - ldr r0, _08058388 @ =gUnknown_2031DEC + ldr r0, _08058388 @ =gLinkPlayerObjectEvents movs r1, 0 movs r2, 0x10 bl memset pop {r0} bx r0 .align 2, 0 -_08058388: .4byte gUnknown_2031DEC - thumb_func_end strange_npc_table_clear +_08058388: .4byte gLinkPlayerObjectEvents + thumb_func_end ClearLinkPlayerObjectEvents thumb_func_start ZeroObjectEvent ZeroObjectEvent: @ 805838C @@ -7190,12 +7190,12 @@ SpawnLinkPlayerObjectEvent: @ 805839C lsls r2, 24 lsrs r2, 24 mov r8, r2 - bl GetIndexOfFirstInactiveObjectEvent + bl GetFirstInactiveObjectEventId adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 lsls r4, r7, 2 - ldr r0, _08058440 @ =gUnknown_2031DEC + ldr r0, _08058440 @ =gLinkPlayerObjectEvents adds r4, r0 lsls r5, r6, 3 adds r5, r6 @@ -7247,7 +7247,7 @@ SpawnLinkPlayerObjectEvent: @ 805839C pop {r0} bx r0 .align 2, 0 -_08058440: .4byte gUnknown_2031DEC +_08058440: .4byte gLinkPlayerObjectEvents _08058444: .4byte gObjectEvents thumb_func_end SpawnLinkPlayerObjectEvent @@ -7290,7 +7290,7 @@ sub_8058488: @ 8058488 lsls r0, 24 lsls r1, 24 lsrs r2, r1, 24 - ldr r1, _080584B0 @ =gUnknown_2031DEC + ldr r1, _080584B0 @ =gLinkPlayerObjectEvents lsrs r0, 22 adds r1, r0, r1 ldrb r0, [r1] @@ -7307,7 +7307,7 @@ _080584AA: pop {r0} bx r0 .align 2, 0 -_080584B0: .4byte gUnknown_2031DEC +_080584B0: .4byte gLinkPlayerObjectEvents _080584B4: .4byte gObjectEvents thumb_func_end sub_8058488 @@ -7316,7 +7316,7 @@ sub_80584B8: @ 80584B8 push {r4,r5,lr} lsls r0, 24 lsrs r0, 22 - ldr r1, _080584F8 @ =gUnknown_2031DEC + ldr r1, _080584F8 @ =gLinkPlayerObjectEvents adds r5, r0, r1 ldrb r1, [r5, 0x2] lsls r0, r1, 3 @@ -7345,7 +7345,7 @@ _080584E4: pop {r0} bx r0 .align 2, 0 -_080584F8: .4byte gUnknown_2031DEC +_080584F8: .4byte gLinkPlayerObjectEvents _080584FC: .4byte gObjectEvents _08058500: .4byte gSprites thumb_func_end sub_80584B8 @@ -7353,7 +7353,7 @@ _08058500: .4byte gSprites thumb_func_start sub_8058504 sub_8058504: @ 8058504 lsls r0, 24 - ldr r1, _0805851C @ =gUnknown_2031DEC + ldr r1, _0805851C @ =gLinkPlayerObjectEvents lsrs r0, 22 adds r0, r1 ldrb r1, [r0, 0x2] @@ -7365,14 +7365,14 @@ sub_8058504: @ 8058504 ldrb r0, [r0, 0x4] bx lr .align 2, 0 -_0805851C: .4byte gUnknown_2031DEC +_0805851C: .4byte gLinkPlayerObjectEvents _08058520: .4byte gObjectEvents thumb_func_end sub_8058504 thumb_func_start sub_8058524 sub_8058524: @ 8058524 lsls r0, 24 - ldr r3, _08058544 @ =gUnknown_2031DEC + ldr r3, _08058544 @ =gLinkPlayerObjectEvents lsrs r0, 22 adds r0, r3 ldrb r3, [r0, 0x2] @@ -7387,14 +7387,14 @@ sub_8058524: @ 8058524 strh r0, [r2] bx lr .align 2, 0 -_08058544: .4byte gUnknown_2031DEC +_08058544: .4byte gLinkPlayerObjectEvents _08058548: .4byte gObjectEvents thumb_func_end sub_8058524 thumb_func_start sub_805854C sub_805854C: @ 805854C lsls r0, 24 - ldr r1, _08058564 @ =gUnknown_2031DEC + ldr r1, _08058564 @ =gLinkPlayerObjectEvents lsrs r0, 22 adds r0, r1 ldrb r1, [r0, 0x2] @@ -7406,14 +7406,14 @@ sub_805854C: @ 805854C ldrb r0, [r0, 0x19] bx lr .align 2, 0 -_08058564: .4byte gUnknown_2031DEC +_08058564: .4byte gLinkPlayerObjectEvents _08058568: .4byte gObjectEvents thumb_func_end sub_805854C thumb_func_start sub_805856C sub_805856C: @ 805856C lsls r0, 24 - ldr r1, _08058588 @ =gUnknown_2031DEC + ldr r1, _08058588 @ =gLinkPlayerObjectEvents lsrs r0, 22 adds r0, r1 ldrb r1, [r0, 0x2] @@ -7427,14 +7427,14 @@ sub_805856C: @ 805856C lsrs r0, 28 bx lr .align 2, 0 -_08058588: .4byte gUnknown_2031DEC +_08058588: .4byte gLinkPlayerObjectEvents _0805858C: .4byte gObjectEvents thumb_func_end sub_805856C thumb_func_start sub_8058590 sub_8058590: @ 8058590 lsls r0, 24 - ldr r1, _080585B0 @ =gUnknown_2031DEC + ldr r1, _080585B0 @ =gLinkPlayerObjectEvents lsrs r0, 22 adds r0, r1 ldrb r1, [r0, 0x2] @@ -7450,7 +7450,7 @@ sub_8058590: @ 8058590 subs r0, r1 bx lr .align 2, 0 -_080585B0: .4byte gUnknown_2031DEC +_080585B0: .4byte gLinkPlayerObjectEvents _080585B4: .4byte gObjectEvents thumb_func_end sub_8058590 @@ -7458,7 +7458,7 @@ _080585B4: .4byte gObjectEvents GetLinkPlayerIdAt: @ 80585B8 push {r4-r6,lr} movs r2, 0 - ldr r5, _080585FC @ =gUnknown_2031DEC + ldr r5, _080585FC @ =gLinkPlayerObjectEvents lsls r0, 16 asrs r4, r0, 16 lsls r1, 16 @@ -7492,7 +7492,7 @@ _080585DA: adds r0, r2, 0 b _08058610 .align 2, 0 -_080585FC: .4byte gUnknown_2031DEC +_080585FC: .4byte gLinkPlayerObjectEvents _08058600: .4byte gObjectEvents _08058604: adds r0, r2, 0x1 @@ -7515,7 +7515,7 @@ sub_8058618: @ 8058618 lsrs r3, r1, 24 adds r2, r3, 0 lsrs r0, 22 - ldr r1, _08058648 @ =gUnknown_2031DEC + ldr r1, _08058648 @ =gLinkPlayerObjectEvents adds r5, r0, r1 ldrb r1, [r5, 0x2] lsls r0, r1, 3 @@ -7534,7 +7534,7 @@ sub_8058618: @ 8058618 strb r0, [r6] b _08058674 .align 2, 0 -_08058648: .4byte gUnknown_2031DEC +_08058648: .4byte gLinkPlayerObjectEvents _0805864C: .4byte gObjectEvents _08058650: ldr r4, _0805867C @ =gUnknown_826D374 @@ -7651,7 +7651,7 @@ sub_80586CC: @ 80586CC movs r3, 0 ldrsh r2, [r6, r3] adds r0, r5, 0 - bl npc_coords_shift + bl ShiftObjectEventCoords adds r0, r5, 0 bl ObjectEventUpdateZCoord movs r0, 0x1 @@ -7708,7 +7708,7 @@ sub_8058754: @ 8058754 cmp r0, 0 bne _08058784 adds r0, r4, 0 - bl npc_coords_shift_still + bl ShiftStillObjectEventCoords movs r0, 0x2 strb r0, [r6, 0x3] _08058784: @@ -7851,7 +7851,7 @@ sub_8058878: @ 8058878 lsls r1, 24 lsrs r3, r1, 24 lsls r2, r5, 2 - ldr r0, _080588B4 @ =gUnknown_2031DEC + ldr r0, _080588B4 @ =gLinkPlayerObjectEvents adds r2, r0 ldrb r1, [r2, 0x2] lsls r0, r1, 3 @@ -7874,7 +7874,7 @@ sub_8058878: @ 8058878 bl sub_805C7C8 b _080588C6 .align 2, 0 -_080588B4: .4byte gUnknown_2031DEC +_080588B4: .4byte gLinkPlayerObjectEvents _080588B8: .4byte gObjectEvents _080588BC: ldrb r0, [r4] @@ -7925,7 +7925,7 @@ SpriteCB_LinkPlayer: @ 805890C movs r0, 0x2E ldrsh r4, [r5, r0] lsls r4, 2 - ldr r0, _08058970 @ =gUnknown_2031DEC + ldr r0, _08058970 @ =gLinkPlayerObjectEvents adds r4, r0 ldrb r1, [r4, 0x2] lsls r0, r1, 3 @@ -7958,7 +7958,7 @@ SpriteCB_LinkPlayer: @ 805890C cmp r0, 0 bne _08058978 ldrb r0, [r6, 0x19] - bl ObjectEventDirectionToImageAnimId + bl GetFaceDirectionAnimNum adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -7966,11 +7966,11 @@ SpriteCB_LinkPlayer: @ 805890C bl StartSpriteAnim b _0805898A .align 2, 0 -_08058970: .4byte gUnknown_2031DEC +_08058970: .4byte gLinkPlayerObjectEvents _08058974: .4byte gObjectEvents _08058978: ldrb r0, [r6, 0x19] - bl get_go_image_anim_num + bl GetMoveDirectionAnimNum adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 diff --git a/common_syms/fieldmap.txt b/common_syms/fieldmap.txt index dedf055bd..0ead75846 100644 --- a/common_syms/fieldmap.txt +++ b/common_syms/fieldmap.txt @@ -1 +1 @@ -VMap +gBackupMapLayout diff --git a/data/event_object_movement.s b/data/event_object_movement.s index 88aa543b9..55a9ca5b3 100644 --- a/data/event_object_movement.s +++ b/data/event_object_movement.s @@ -5,10 +5,10 @@ gReflectionEffectPaletteMap:: @ 835B934 .byte 0x01, 0x01, 0x06, 0x07, 0x08, 0x09, 0x06, 0x07, 0x08, 0x09, 0x0b, 0x0b, 0x00, 0x00, 0x00, 0x00 -gUnknown_835B944:: @ 835B944 +gCameraSpriteTemplate:: @ 835B944 spr_template 0, 65535, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, ObjectCB_CameraObject -gUnknown_835B95C:: @ 835B95C +gCameraObjectFuncs:: @ 835B95C .4byte CameraObject_0 .4byte CameraObject_1 .4byte CameraObject_2 @@ -757,88 +757,88 @@ gUnknown_839D3A8:: @ 839D3A8 gUnknown_839D3C8:: @ 839D3C8 .incbin "graphics/object_events/pics/unknown/839D3C8.4bpp" -gMovementTypeCallbacks:: @ 839FBC8 - .4byte sub_805FFB4 - .4byte sub_806058C - .4byte sub_805FFDC - .4byte sub_80606CC - .4byte sub_80606CC - .4byte sub_8060850 - .4byte sub_8060850 - .4byte sub_80609D4 - .4byte sub_80609D4 - .4byte sub_80609D4 - .4byte sub_80609D4 +sMovementTypeCallbacks:: @ 839FBC8 + .4byte MovementType_None + .4byte MovementType_LookAround + .4byte MovementType_WanderAround + .4byte MovementType_WanderUpAndDown + .4byte MovementType_WanderUpAndDown + .4byte MovementType_WanderLeftAndRight + .4byte MovementType_WanderLeftAndRight + .4byte MovementType_FaceDirection + .4byte MovementType_FaceDirection + .4byte MovementType_FaceDirection + .4byte MovementType_FaceDirection .4byte sub_805B3B8 .4byte NULL - .4byte sub_8060A74 - .4byte sub_8060BB4 - .4byte sub_8060CF4 - .4byte sub_8060E34 - .4byte sub_8060F74 - .4byte sub_80610B4 - .4byte sub_80611F4 - .4byte sub_8061334 - .4byte sub_8061474 - .4byte sub_80615B4 - .4byte sub_80616F4 - .4byte sub_80617F8 - .4byte sub_80618FC - .4byte sub_80618FC - .4byte sub_80618FC - .4byte sub_80618FC - .4byte sub_8061B5C - .4byte sub_8061BE8 - .4byte sub_8061C74 - .4byte sub_8061D00 - .4byte sub_8061D8C - .4byte sub_8061E18 - .4byte sub_8061EA4 - .4byte sub_8061F30 - .4byte sub_8061FBC - .4byte sub_8062048 - .4byte sub_80620D4 - .4byte sub_8062160 - .4byte sub_80621EC - .4byte sub_8062278 - .4byte sub_8062304 - .4byte sub_8062390 - .4byte sub_806241C - .4byte sub_80624A8 - .4byte sub_8062534 - .4byte sub_80625C0 - .4byte sub_806264C - .4byte sub_80626D8 - .4byte sub_8062764 - .4byte sub_80627F0 - .4byte sub_806287C - .4byte sub_806287C - .4byte sub_806287C - .4byte sub_806287C - .4byte ObjectEventCB_TreeDisguise - .4byte ObjectEventCB_MountainDisguise - .4byte sub_8062E60 - .4byte sub_8062E60 - .4byte sub_8062E60 - .4byte sub_8062E60 - .4byte ObjectEventCB_Hidden1 - .4byte sub_80630A0 - .4byte sub_80630A0 - .4byte sub_80630A0 - .4byte sub_80630A0 - .4byte sub_8063110 - .4byte sub_8063110 - .4byte sub_8063110 - .4byte sub_8063110 - .4byte sub_8063180 - .4byte sub_8063180 - .4byte sub_8063180 - .4byte sub_8063180 - .4byte sub_80631F0 + .4byte MovementType_FaceDownAndUp + .4byte MovementType_FaceLeftAndRight + .4byte MovementType_FaceUpAndLeft + .4byte MovementType_FaceUpAndRight + .4byte MovementType_FaceDownAndLeft + .4byte MovementType_FaceDownAndRight + .4byte MovementType_FaceDownUpAndLeft + .4byte MovementType_FaceDownUpAndRight + .4byte MovementType_FaceUpRightAndLeft + .4byte MovementType_FaceDownRightAndLeft + .4byte MovementType_RotateCounterclockwise + .4byte MovementType_RotateClockwise + .4byte MovementType_WalkBackAndForth + .4byte MovementType_WalkBackAndForth + .4byte MovementType_WalkBackAndForth + .4byte MovementType_WalkBackAndForth + .4byte MovementType_WalkSequenceUpRightLeftDown + .4byte MovementType_WalkSequenceRightLeftDownUp + .4byte MovementType_WalkSequenceDownUpRightLeft + .4byte MovementType_WalkSequenceLeftDownUpRight + .4byte MovementType_WalkSequenceUpLeftRightDown + .4byte MovementType_WalkSequenceLeftRightDownUp + .4byte MovementType_WalkSequenceDownUpLeftRight + .4byte MovementType_WalkSequenceRightDownUpLeft + .4byte MovementType_WalkSequenceLeftUpDownRight + .4byte MovementType_WalkSequenceUpDownRightLeft + .4byte MovementType_WalkSequenceRightLeftUpDown + .4byte MovementType_WalkSequenceDownRightLeftUp + .4byte MovementType_WalkSequenceRightUpDownLeft + .4byte MovementType_WalkSequenceUpDownLeftRight + .4byte MovementType_WalkSequenceLeftRightUpDown + .4byte MovementType_WalkSequenceDownLeftRightUp + .4byte MovementType_WalkSequenceUpLeftDownRight + .4byte MovementType_WalkSequenceDownRightUpLeft + .4byte MovementType_WalkSequenceLeftDownRightUp + .4byte MovementType_WalkSequenceRightUpLeftDown + .4byte MovementType_WalkSequenceUpRightDownLeft + .4byte MovementType_WalkSequenceDownLeftUpRight + .4byte MovementType_WalkSequenceLeftUpRightDown + .4byte MovementType_WalkSequenceRightDownLeftUp + .4byte MovementType_CopyPlayer + .4byte MovementType_CopyPlayer + .4byte MovementType_CopyPlayer + .4byte MovementType_CopyPlayer + .4byte MovementType_TreeDisguise + .4byte MovementType_MountainDisguise + .4byte MovementType_CopyPlayerInGrass + .4byte MovementType_CopyPlayerInGrass + .4byte MovementType_CopyPlayerInGrass + .4byte MovementType_CopyPlayerInGrass + .4byte MovementType_Hidden + .4byte MovementType_WalkInPlace + .4byte MovementType_WalkInPlace + .4byte MovementType_WalkInPlace + .4byte MovementType_WalkInPlace + .4byte MovementType_WalkSlowlyInPlace + .4byte MovementType_WalkSlowlyInPlace + .4byte MovementType_WalkSlowlyInPlace + .4byte MovementType_WalkSlowlyInPlace + .4byte MovementType_JogInPlace + .4byte MovementType_JogInPlace + .4byte MovementType_JogInPlace + .4byte MovementType_JogInPlace + .4byte MovementType_Invisible .4byte sub_8063298 .4byte sub_80632BC .4byte sub_80632E0 - .4byte sub_8060020 + .4byte MovementType_WanderAroundDuplicate gRangedMovementTypes:: @ 839FD0C .byte FALSE @ MOVEMENT_TYPE_NONE @@ -6093,7 +6093,7 @@ gObjectEventGraphicsInfo_83A5134:: @ 83A5134 .4byte gSpriteImages_83A1CF0 .4byte gDummySpriteAffineAnimTable -gObjectEventSpritePalettes:: @ 83A5158 +sObjectEventSpritePalettes:: @ 83A5158 obj_pal gUnknown_836D828, 0x1103 obj_pal gUnknown_836D848, 0x1104 obj_pal gUnknown_836D868, 0x1105 @@ -6130,7 +6130,7 @@ gUnknownPaletteTags_83A5200:: @ 83A5200 .2byte 0x1116 .2byte 0x1116 -gUnknown_83A5208:: @ 83A5208 +gPlayerReflectionPaletteSets:: @ 83A5208 .2byte 0x1100 .2byte 0x0 .4byte gPlayerReflectionPaletteTags @@ -6204,7 +6204,7 @@ gUnknownPaletteTags_83A5270:: .2byte 0x1109 .2byte 0x1109 -gUnknown_83A5278:: @ 83A5278 +gSpecialObjectReflectionPaletteSets:: @ 83A5278 .2byte 0x1100 .2byte 0x0 .4byte gPlayerReflectionPaletteTags @@ -6293,7 +6293,7 @@ gUnknownPaletteTags_83A531C:: .2byte 0x1109 .2byte 0x110a -gUnknown_83A5330:: @ 83A5330 +gObjectPaletteTagSets:: @ 83A5330 .4byte gUnknownPaletteTags_83A52E0 .4byte gUnknownPaletteTags_83A52F4 .4byte gUnknownPaletteTags_83A5308 @@ -7100,7 +7100,7 @@ gUnknown_83A5FE0:: @ 83A5FE0 gUnknown_83A5FF8:: obj_pal gUnknown_839D3A8, 0x100F -gUnknown_83A6000:: @ 83A6000 +gMovementDelaysMedium:: @ 83A6000 .2byte 0x0020 .2byte 0x0040 .2byte 0x0060 @@ -7112,216 +7112,216 @@ gUnknown_83A6008:: @ 83A6008 .2byte 0x0080 .2byte 0x00C0 -gUnknown_83A6010:: @ 83A6010 +gMovementDelaysShort:: @ 83A6010 .2byte 0x0020 .2byte 0x0030 .2byte 0x0040 .2byte 0x0050 -gUnknown_83A6018:: @ 83A6018 - .4byte sub_8060064 - .4byte sub_8060078 - .4byte sub_80600A4 - .4byte sub_80600E0 - .4byte sub_8060100 - .4byte sub_806014C - .4byte sub_80601AC - -gUnknown_83A6034:: @ 83A6034 - .4byte sub_8060064 - .4byte sub_8060078 - .4byte sub_80600A4 - .4byte sub_80600E0 - .4byte sub_8060100 - .4byte sub_806017C - .4byte sub_80601AC - -gUnknown_83A6050:: @ 83A6050 +gMovementTypeFuncs_WanderAround:: @ 83A6018 + .4byte MovementType_WanderAround_Step0 + .4byte MovementType_WanderAround_Step1 + .4byte MovementType_WanderAround_Step2 + .4byte MovementType_WanderAround_Step3 + .4byte MovementType_WanderAround_Step4 + .4byte MovementType_WanderAround_Step5 + .4byte MovementType_WanderAround_Step6 + +gMovementTypeFuncs_WanderAroundDuplicate:: @ 83A6034 + .4byte MovementType_WanderAround_Step0 + .4byte MovementType_WanderAround_Step1 + .4byte MovementType_WanderAround_Step2 + .4byte MovementType_WanderAround_Step3 + .4byte MovementType_WanderAround_Step4 + .4byte MovementType_WanderAround_Step5Duplicate + .4byte MovementType_WanderAround_Step6 + +gStandardDirections:: @ 83A6050 .byte 1 @ DIR_SOUTH .byte 2 @ DIR_NORTH .byte 3 @ DIR_WEST .byte 4 @ DIR_EAST -gUnknown_83A6054:: @ 83A6054 - .4byte GetRegularRunningPastFacingDirection - .4byte GetNorthSouthRunningPastFacingDirection - .4byte GetEastWestRunningPastFacingDirection - .4byte GetNorthEastRunningPastFacingDirection - .4byte GetNorthWestRunningPastFacingDirection - .4byte GetSouthEastRunningPastFacingDirection - .4byte GetSouthWestRunningPastFacingDirection - .4byte GetNonEastRunningPastFacingDirection - .4byte GetNonWestRunningPastFacingDirection - .4byte GetNonSouthRunningPastFacingDirection - .4byte GetNonNorthRunningPastFacingDirection - -gUnknown_83A6080:: @ 83A6080 - .4byte sub_80605D0 - .4byte sub_80605E4 - .4byte sub_8060610 - .4byte sub_8060654 - .4byte sub_8060684 - -gUnknown_83A6094:: @ 83A6094 - .4byte sub_8060710 - .4byte sub_8060724 - .4byte sub_8060750 - .4byte sub_806078C - .4byte sub_80607AC - .4byte sub_80607F8 - .4byte sub_8060828 - -gUnknown_83A60B0:: @ 83A60B0 +gGetVectorDirectionFuncs:: @ 83A6054 + .4byte GetVectorDirection + .4byte GetLimitedVectorDirection_SouthNorth + .4byte GetLimitedVectorDirection_WestEast + .4byte GetLimitedVectorDirection_WestNorth + .4byte GetLimitedVectorDirection_EastNorth + .4byte GetLimitedVectorDirection_WestSouth + .4byte GetLimitedVectorDirection_EastSouth + .4byte GetLimitedVectorDirection_SouthNorthWest + .4byte GetLimitedVectorDirection_SouthNorthEast + .4byte GetLimitedVectorDirection_NorthWestEast + .4byte GetLimitedVectorDirection_SouthWestEast + +gMovementTypeFuncs_LookAround:: @ 83A6080 + .4byte MovementType_LookAround_Step0 + .4byte MovementType_LookAround_Step1 + .4byte MovementType_LookAround_Step2 + .4byte MovementType_LookAround_Step3 + .4byte MovementType_LookAround_Step4 + +gMovementTypeFuncs_WanderUpAndDown:: @ 83A6094 + .4byte MovementType_WanderUpAndDown_Step0 + .4byte MovementType_WanderUpAndDown_Step1 + .4byte MovementType_WanderUpAndDown_Step2 + .4byte MovementType_WanderUpAndDown_Step3 + .4byte MovementType_WanderUpAndDown_Step4 + .4byte MovementType_WanderUpAndDown_Step5 + .4byte MovementType_WanderUpAndDown_Step6 + +gUpAndDownDirections:: @ 83A60B0 .byte 1 @ DIR_SOUTH .byte 2 @ DIR_NORTH .byte 0 @ DIR_NONE .byte 0 @ DIR_NONE -gUnknown_83A60B4:: @ 83A60B4 - .4byte sub_8060894 - .4byte sub_80608A8 - .4byte sub_80608D4 - .4byte sub_8060910 - .4byte sub_8060930 - .4byte sub_806097C - .4byte sub_80609AC +gMovementTypeFuncs_WanderLeftAndRight:: @ 83A60B4 + .4byte MovementType_WanderLeftAndRight_Step0 + .4byte MovementType_WanderLeftAndRight_Step1 + .4byte MovementType_WanderLeftAndRight_Step2 + .4byte MovementType_WanderLeftAndRight_Step3 + .4byte MovementType_WanderLeftAndRight_Step4 + .4byte MovementType_WanderLeftAndRight_Step5 + .4byte MovementType_WanderLeftAndRight_Step6 -gUnknown_83A60D0:: @ 83A60D0 +gLeftAndRightDirections:: @ 83A60D0 .byte 3 @ DIR_WEST .byte 4 @ DIR_EAST .byte 0 @ DIR_NONE .byte 0 @ DIR_NONE -gUnknown_83A60D4:: @ 83A60D4 - .4byte sub_8060A18 - .4byte sub_8060A44 - .4byte sub_8060A64 - -gUnknown_83A60E0:: @ 83A60E0 - .4byte sub_8060AB8 - .4byte sub_8060ACC - .4byte sub_8060AF8 - .4byte sub_8060B3C - .4byte sub_8060B6C - -gUnknown_83A60F4:: @ 83A60F4 - .4byte sub_8060BF8 - .4byte sub_8060C0C - .4byte sub_8060C38 - .4byte sub_8060C7C - .4byte sub_8060CAC - -gUnknown_83A6108:: @ 83A6108 - .4byte sub_8060D38 - .4byte sub_8060D4C - .4byte sub_8060D78 - .4byte sub_8060DBC - .4byte sub_8060DEC - -gUnknown_83A611C:: @ 83A611C +gMovementTypeFuncs_FaceDirection:: @ 83A60D4 + .4byte MovementType_FaceDirection_Step0 + .4byte MovementType_FaceDirection_Step1 + .4byte MovementType_FaceDirection_Step2 + +gMovementTypeFuncs_FaceDownAndUp:: @ 83A60E0 + .4byte MovementType_FaceDownAndUp_Step0 + .4byte MovementType_FaceDownAndUp_Step1 + .4byte MovementType_FaceDownAndUp_Step2 + .4byte MovementType_FaceDownAndUp_Step3 + .4byte MovementType_FaceDownAndUp_Step4 + +gMovementTypeFuncs_FaceLeftAndRight:: @ 83A60F4 + .4byte MovementType_FaceLeftAndRight_Step0 + .4byte MovementType_FaceLeftAndRight_Step1 + .4byte MovementType_FaceLeftAndRight_Step2 + .4byte MovementType_FaceLeftAndRight_Step3 + .4byte MovementType_FaceLeftAndRight_Step4 + +gMovementTypeFuncs_FaceUpAndLeft:: @ 83A6108 + .4byte MovementType_FaceUpAndLeft_Step0 + .4byte MovementType_FaceUpAndLeft_Step1 + .4byte MovementType_FaceUpAndLeft_Step2 + .4byte MovementType_FaceUpAndLeft_Step3 + .4byte MovementType_FaceUpAndLeft_Step4 + +gUpAndLeftDirections:: @ 83A611C .byte 2 @ DIR_NORTH .byte 3 @ DIR_WEST .byte 0 @ DIR_NONE .byte 0 @ DIR_NONE -gUnknown_83A6120:: @ 83A6120 - .4byte sub_8060E78 - .4byte sub_8060E8C - .4byte sub_8060EB8 - .4byte sub_8060EFC - .4byte sub_8060F2C +gMovementTypeFuncs_FaceUpAndRight:: @ 83A6120 + .4byte MovementType_FaceUpAndRight_Step0 + .4byte MovementType_FaceUpAndRight_Step1 + .4byte MovementType_FaceUpAndRight_Step2 + .4byte MovementType_FaceUpAndRight_Step3 + .4byte MovementType_FaceUpAndRight_Step4 -gUnknown_83A6134:: @ 83A6134 +gUpAndRightDirections:: @ 83A6134 .byte 2 @ DIR_NORTH .byte 4 @ DIR_EAST .byte 0 @ DIR_NONE .byte 0 @ DIR_NONE -gUnknown_83A6138:: @ 83A6138 - .4byte sub_8060FB8 - .4byte sub_8060FCC - .4byte sub_8060FF8 - .4byte sub_806103C - .4byte sub_806106C +gMovementTypeFuncs_FaceDownAndLeft:: @ 83A6138 + .4byte MovementType_FaceDownAndLeft_Step0 + .4byte MovementType_FaceDownAndLeft_Step1 + .4byte MovementType_FaceDownAndLeft_Step2 + .4byte MovementType_FaceDownAndLeft_Step3 + .4byte MovementType_FaceDownAndLeft_Step4 -gUnknown_83A614C:: @ 83A614C +gDownAndLeftDirections:: @ 83A614C .byte 1 @ DIR_SOUTH .byte 3 @ DIR_WEST .byte 0 @ DIR_NONE .byte 0 @ DIR_NONE -gUnknown_83A6150:: @ 83A6150 - .4byte sub_80610F8 - .4byte sub_806110C - .4byte sub_8061138 - .4byte sub_806117C - .4byte sub_80611AC +gMovementTypeFuncs_FaceDownAndRight:: @ 83A6150 + .4byte MovementType_FaceDownAndRight_Step0 + .4byte MovementType_FaceDownAndRight_Step1 + .4byte MovementType_FaceDownAndRight_Step2 + .4byte MovementType_FaceDownAndRight_Step3 + .4byte MovementType_FaceDownAndRight_Step4 -gUnknown_83A6164:: @ 83A6164 +gDownAndRightDirections:: @ 83A6164 .byte 1 @ DIR_SOUTH .byte 4 @ DIR_EAST .byte 0 @ DIR_NONE .byte 0 @ DIR_NONE -gUnknown_83A6168:: @ 83A6168 - .4byte sub_8061238 - .4byte sub_806124C - .4byte sub_8061278 - .4byte sub_80612BC - .4byte sub_80612EC +gMovementTypeFuncs_FaceDownUpAndLeft:: @ 83A6168 + .4byte MovementType_FaceDownUpAndLeft_Step0 + .4byte MovementType_FaceDownUpAndLeft_Step1 + .4byte MovementType_FaceDownUpAndLeft_Step2 + .4byte MovementType_FaceDownUpAndLeft_Step3 + .4byte MovementType_FaceDownUpAndLeft_Step4 -gUnknown_83A617C:: @ 83A617C +gDownUpAndLeftDirections:: @ 83A617C .byte 2 @ DIR_NORTH .byte 1 @ DIR_SOUTH .byte 3 @ DIR_WEST .byte 1 @ DIR_SOUTH -gUnknown_83A6180:: @ 83A6180 - .4byte sub_8061378 - .4byte sub_806138C - .4byte sub_80613B8 - .4byte sub_80613FC - .4byte sub_806142C +gMovementTypeFuncs_FaceDownUpAndRight:: @ 83A6180 + .4byte MovementType_FaceDownUpAndRight_Step0 + .4byte MovementType_FaceDownUpAndRight_Step1 + .4byte MovementType_FaceDownUpAndRight_Step2 + .4byte MovementType_FaceDownUpAndRight_Step3 + .4byte MovementType_FaceDownUpAndRight_Step4 -gUnknown_83A6194:: @ 83A6194 +gDownUpAndRightDirections:: @ 83A6194 .byte 1 @ DIR_SOUTH .byte 2 @ DIR_NORTH .byte 4 @ DIR_EAST .byte 1 @ DIR_SOUTH -gUnknown_83A6198:: @ 83A6198 - .4byte sub_80614B8 - .4byte sub_80614CC - .4byte sub_80614F8 - .4byte sub_806153C - .4byte sub_806156C +gMovementTypeFuncs_FaceUpLeftAndRight:: @ 83A6198 + .4byte MovementType_FaceUpLeftAndRight_Step0 + .4byte MovementType_FaceUpLeftAndRight_Step1 + .4byte MovementType_FaceUpLeftAndRight_Step2 + .4byte MovementType_FaceUpLeftAndRight_Step3 + .4byte MovementType_FaceUpLeftAndRight_Step4 -gUnknown_83A61AC:: @ 83A61AC +gUpLeftAndRightDirections:: @ 83A61AC .byte 2 @ DIR_NORTH .byte 3 @ DIR_WEST .byte 4 @ DIR_EAST .byte 2 @ DIR_NORTH -gUnknown_83A61B0:: @ 83A61B0 - .4byte sub_80615F8 - .4byte sub_806160C - .4byte sub_8061638 - .4byte sub_806167C - .4byte sub_80616AC +gMovementTypeFuncs_FaceDownLeftAndRight:: @ 83A61B0 + .4byte MovementType_FaceDownLeftAndRight_Step0 + .4byte MovementType_FaceDownLeftAndRight_Step1 + .4byte MovementType_FaceDownLeftAndRight_Step2 + .4byte MovementType_FaceDownLeftAndRight_Step3 + .4byte MovementType_FaceDownLeftAndRight_Step4 -gUnknown_83A61C4:: @ 83A61C4 +gDownLeftAndRightDirections:: @ 83A61C4 .byte 3 @ DIR_WEST .byte 4 @ DIR_EAST .byte 1 @ DIR_SOUTH .byte 1 @ DIR_SOUTH -gUnknown_83A61C8:: @ 83A61C8 - .4byte sub_8061738 - .4byte sub_8061764 - .4byte sub_8061788 - .4byte sub_80617B4 +gMovementTypeFuncs_RotateCounterclockwise:: @ 83A61C8 + .4byte MovementType_RotateCounterclockwise_Step0 + .4byte MovementType_RotateCounterclockwise_Step1 + .4byte MovementType_RotateCounterclockwise_Step2 + .4byte MovementType_RotateCounterclockwise_Step3 -gUnknown_83A61D8:: @ 83A61D8 +gCounterclockwiseDirections:: @ 83A61D8 .byte 0x01 .byte 0x04 .byte 0x03 @@ -7331,13 +7331,13 @@ gUnknown_83A61D8:: @ 83A61D8 .byte 0x00 .byte 0x00 -gUnknown_83A61E0:: @ 83A61E0 - .4byte sub_806183C - .4byte sub_8061868 - .4byte sub_806188C - .4byte sub_80618B8 +gMovementTypeFuncs_RotateClockwise:: @ 83A61E0 + .4byte MovementType_RotateClockwise_Step0 + .4byte MovementType_RotateClockwise_Step1 + .4byte MovementType_RotateClockwise_Step2 + .4byte MovementType_RotateClockwise_Step3 -gUnknown_83A61F0:: @ 83A61F0 +gClockwiseDirections:: @ 83A61F0 .byte 0x01 .byte 0x03 .byte 0x04 @@ -7347,312 +7347,312 @@ gUnknown_83A61F0:: @ 83A61F0 .byte 0x00 .byte 0x00 -gUnknown_83A61F8:: @ 83A61F8 - .4byte sub_8061940 - .4byte sub_8061954 - .4byte sub_806198C - .4byte sub_8061A44 +gMovementTypeFuncs_WalkBackAndForth:: @ 83A61F8 + .4byte MovementType_WalkBackAndForth_Step0 + .4byte MovementType_WalkBackAndForth_Step1 + .4byte MovementType_WalkBackAndForth_Step2 + .4byte MovementType_WalkBackAndForth_Step3 -gUnknown_83A6208:: @ 83A6208 - .4byte sub_8061A6C - .4byte sub_8061BA0 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceUpRightLeftDown:: @ 83A6208 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceUpRightLeftDown_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6214:: @ 83A6214 +gUpRightLeftDownDirections:: @ 83A6214 .byte 2 .byte 4 .byte 3 .byte 1 -gUnknown_83A6218:: @ 83A6218 - .4byte sub_8061A6C - .4byte sub_8061C2C - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceRightLeftDownUp:: @ 83A6218 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceRightLeftDownUp_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6224:: @ 83A6224 +gRightLeftDownUpDirections:: @ 83A6224 .byte 4 .byte 3 .byte 1 .byte 2 -gUnknown_83A6228:: @ 83A6228 - .4byte sub_8061A6C - .4byte sub_8061CB8 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceDownUpRightLeft:: @ 83A6228 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceDownUpRightLeft_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6234:: @ 83A6234 +gDownUpRightLeftDirections:: @ 83A6234 .byte 1 .byte 2 .byte 4 .byte 3 -gUnknown_83A6238:: @ 83A6238 - .4byte sub_8061A6C - .4byte sub_8061D44 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceLeftDownUpRight:: @ 83A6238 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceLeftDownUpRight_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6244:: @ 83A6244 +gLeftDownUpRightDirections:: @ 83A6244 .byte 3 .byte 1 .byte 2 .byte 4 -gUnknown_83A6248:: @ 83A6248 - .4byte sub_8061A6C - .4byte sub_8061DD0 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceUpLeftRightDown:: @ 83A6248 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceUpLeftRightDown_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6254:: @ 83A6254 +gUpLeftRightDownDirections:: @ 83A6254 .byte 2 .byte 3 .byte 4 .byte 1 -gUnknown_83A6258:: @ 83A6258 - .4byte sub_8061A6C - .4byte sub_8061E5C - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceLeftRightDownUp:: @ 83A6258 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceLeftRightDownUp_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6264:: @ 83A6264 +gLeftRightDownUpDirections:: @ 83A6264 .byte 3 .byte 4 .byte 1 .byte 2 -gUnknown_83A6268:: @ 83A6268 - .4byte sub_8061A6C - .4byte sub_8061EE8 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceDownUpLeftRight:: @ 83A6268 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceDownUpLeftRight_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6274:: @ 83A6274 - .4byte sub_8061A6C - .4byte sub_8061F74 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceRightDownUpLeft:: @ 83A6274 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceRightDownUpLeft_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6280:: @ 83A6280 +gRightDownUpLeftDirections:: @ 83A6280 .byte 4 .byte 1 .byte 2 .byte 3 -gUnknown_83A6284:: @ 83A6284 - .4byte sub_8061A6C - .4byte sub_8062000 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceLeftUpDownRight:: @ 83A6284 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceLeftUpDownRight_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6290:: @ 83A6290 +gLeftUpDownRightDirections:: @ 83A6290 .byte 3 .byte 2 .byte 1 .byte 4 -gUnknown_83A6294:: @ 83A6294 - .4byte sub_8061A6C - .4byte sub_806208C - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceUpDownRightLeft:: @ 83A6294 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceUpDownRightLeft_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A62A0:: @ 83A62A0 +gUpDownRightLeftDirections:: @ 83A62A0 .byte 2 .byte 1 .byte 4 .byte 3 -gUnknown_83A62A4:: @ 83A62A4 - .4byte sub_8061A6C - .4byte sub_8062118 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceRightLeftUpDown:: @ 83A62A4 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceRightLeftUpDown_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A62B0:: @ 83A62B0 +gRightLeftUpDownDirections:: @ 83A62B0 .byte 4 .byte 3 .byte 2 .byte 1 -gUnknown_83A62B4:: @ 83A62B4 - .4byte sub_8061A6C - .4byte sub_80621A4 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceDownRightLeftUp:: @ 83A62B4 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceDownRightLeftUp_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A62C0:: @ 83A62C0 +gDownRightLeftUpDirections:: @ 83A62C0 .byte 1 .byte 4 .byte 3 .byte 2 -gUnknown_83A62C4:: @ 83A62C4 - .4byte sub_8061A6C - .4byte sub_8062230 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceRightUpDownLeft:: @ 83A62C4 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceRightUpDownLeft_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A62D0:: @ 83A62D0 +gRightUpDownLeftDirections:: @ 83A62D0 .byte 4 .byte 2 .byte 1 .byte 3 -gUnknown_83A62D4:: @ 83A62D4 - .4byte sub_8061A6C - .4byte sub_80622BC - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceUpDownLeftRight:: @ 83A62D4 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceUpDownLeftRight_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A62E0:: @ 83A62E0 +gUpDownLeftRightDirections:: @ 83A62E0 .byte 2 .byte 1 .byte 3 .byte 4 -gUnknown_83A62E4:: @ 83A62E4 - .4byte sub_8061A6C - .4byte sub_8062348 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceLeftRightUpDown:: @ 83A62E4 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceLeftRightUpDown_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A62F0:: @ 83A62F0 +gLeftRightUpDownDirections:: @ 83A62F0 .byte 3 .byte 4 .byte 2 .byte 1 -gUnknown_83A62F4:: @ 83A62F4 - .4byte sub_8061A6C - .4byte sub_80623D4 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceDownLeftRightUp:: @ 83A62F4 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceDownLeftRightUp_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6300:: @ 83A6300 +gDownLeftRightUpDirections:: @ 83A6300 .byte 1 .byte 3 .byte 4 .byte 2 -gUnknown_83A6304:: @ 83A6304 - .4byte sub_8061A6C - .4byte sub_8062460 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceUpLeftDownRight:: @ 83A6304 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceUpLeftDownRight_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6310:: @ 83A6310 +gUpLeftDownRightDirections:: @ 83A6310 .byte 2 .byte 3 .byte 1 .byte 4 -gUnknown_83A6314:: @ 83A6314 - .4byte sub_8061A6C - .4byte sub_80624EC - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceDownRightUpLeft:: @ 83A6314 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceDownRightUpLeft_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6320:: @ 83A6320 +gDownRightUpLeftDirections:: @ 83A6320 .byte 1 .byte 4 .byte 2 .byte 3 -gUnknown_83A6324:: @ 83A6324 - .4byte sub_8061A6C - .4byte sub_8062578 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceLeftDownRightUp:: @ 83A6324 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceLeftDownRightUp_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6330:: @ 83A6330 +gLeftDownRightUpDirections:: @ 83A6330 .byte 3 .byte 1 .byte 4 .byte 2 -gUnknown_83A6334:: @ 83A6334 - .4byte sub_8061A6C - .4byte sub_8062604 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceRightUpLeftDown:: @ 83A6334 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceRightUpLeftDown_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6340:: @ 83A6340 +gRightUpLeftDownDirections:: @ 83A6340 .byte 4 .byte 2 .byte 3 .byte 1 -gUnknown_83A6344:: @ 83A6344 - .4byte sub_8061A6C - .4byte sub_8062690 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceUpRightDownLeft:: @ 83A6344 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceUpRightDownLeft_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6350:: @ 83A6350 +gUpRightDownLeftDirections:: @ 83A6350 .byte 2 .byte 4 .byte 1 .byte 3 -gUnknown_83A6354:: @ 83A6354 - .4byte sub_8061A6C - .4byte sub_806271C - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceDownLeftUpRight:: @ 83A6354 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceDownLeftUpRight_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6360:: @ 83A6360 +gDownLeftUpRightDirections:: @ 83A6360 .byte 1 .byte 3 .byte 2 .byte 4 -gUnknown_83A6364:: @ 83A6364 - .4byte sub_8061A6C - .4byte sub_80627A8 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceLeftUpRightDown:: @ 83A6364 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceLeftUpRightDown_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6370:: @ 83A6370 +gLeftUpRightDownDirections:: @ 83A6370 .byte 3 .byte 2 .byte 4 .byte 1 -gUnknown_83A6374:: @ 83A6374 - .4byte sub_8061A6C - .4byte sub_8062834 - .4byte sub_8061B34 +gMovementTypeFuncs_WalkSequenceRightDownLeftUp:: @ 83A6374 + .4byte MovementType_WalkSequence_Step0 + .4byte MovementType_WalkSequenceRightDownLeftUp_Step1 + .4byte MovementType_WalkSequence_Step2 -gUnknown_83A6380:: @ 83A6380 +gRightDownLeftUpDirections:: @ 83A6380 .byte 4 .byte 1 .byte 3 .byte 2 -gUnknown_83A6384:: @ 83A6384 - .4byte mss_npc_reset_oampriv3_1_unk2_unk3 - .4byte sub_80628E4 - .4byte sub_8062944 - -gUnknown_83A6390:: @ 83A6390 - .4byte sub_806296C - .4byte sub_8062970 - .4byte sub_80629B8 - .4byte sub_8062A70 - .4byte sub_8062B28 - .4byte sub_8062BE0 +gMovementTypeFuncs_CopyPlayer:: @ 83A6384 + .4byte MovementType_CopyPlayer_Step0 + .4byte MovementType_CopyPlayer_Step1 + .4byte MovementType_CopyPlayer_Step2 + +gCopyPlayerMovementFuncs:: @ 83A6390 + .4byte CopyablePlayerMovement_None + .4byte CopyablePlayerMovement_FaceDirection + .4byte CopyablePlayerMovement_GoSpeed0 + .4byte CopyablePlayerMovement_GoSpeed1 + .4byte CopyablePlayerMovement_GoSpeed2 + .4byte CopyablePlayerMovement_Slide .4byte cph_IM_DIFFERENT - .4byte sub_8062CE0 - .4byte oac_hopping - .4byte sub_806296C - .4byte sub_806296C + .4byte CopyablePlayerMovement_GoSpeed4 + .4byte CopyablePlayerMovement_Jump + .4byte CopyablePlayerMovement_None + .4byte CopyablePlayerMovement_None -gUnknown_83A63BC:: @ 83A63BC - .4byte mss_npc_reset_oampriv3_1_unk2_unk3 - .4byte mss_08062EA4 - .4byte sub_8062944 +gMovementTypeFuncs_CopyPlayerInGrass:: @ 83A63BC + .4byte MovementType_CopyPlayer_Step0 + .4byte MovementType_CopyPlayerInGrass_Step1 + .4byte MovementType_CopyPlayer_Step2 -gUnknown_83A63C8:: @ 83A63C8 - .4byte sub_8063078 +gMovementTypeFuncs_Hidden:: @ 83A63C8 + .4byte MovementType_Hidden_Step0 -gUnknown_83A63CC:: @ 83A63CC - .4byte sub_80630E4 - .4byte sub_8063084 +gMovementTypeFuncs_WalkInPlace:: @ 83A63CC + .4byte MovementType_WalkInPlace_Step0 + .4byte MovementType_MoveInPlace_Step1 -gUnknown_83A63D4:: @ 83A63D4 - .4byte sub_8063154 - .4byte sub_8063084 +gMovementTypeFuncs_WalkSlowlyInPlace:: @ 83A63D4 + .4byte MovementType_WalkSlowlyInPlace_Step0 + .4byte MovementType_MoveInPlace_Step1 -gUnknown_83A63DC:: @ 83A63DC - .4byte sub_80631C4 - .4byte sub_8063084 +gMovementTypeFuncs_JogInPlace:: @ 83A63DC + .4byte MovementType_JogInPlace_Step0 + .4byte MovementType_MoveInPlace_Step1 -gUnknown_83A63E4:: @ 83A63E4 - .4byte sub_8063234 - .4byte sub_8063268 - .4byte sub_8063288 +gMovementTypeFuncs_Invisible:: @ 83A63E4 + .4byte MovementType_Invisible_Step0 + .4byte MovementType_Invisible_Step1 + .4byte MovementType_Invisible_Step2 gUnknown_83A63F0:: @ 83A63F0 .4byte sub_8063364 @@ -7667,9 +7667,7 @@ gUnknown_83A6404:: @ 83A6404 .4byte sub_80633D4 .4byte sub_80633F4 -@ gFaceDirectionAnimNums ? -@ gFaceDirectionAnimNums? -gUnknown_83A640C:: @ 83A640C +gFaceDirectionAnimNums:: @ 83A640C .byte 0x00 @ DIR_NONE .byte 0x00 @ DIR_SOUTH .byte 0x01 @ DIR_NORTH @@ -7680,8 +7678,7 @@ gUnknown_83A640C:: @ 83A640C .byte 0x01 @ DIR_NORTHWEST .byte 0x01 @ DIR_NORTHEAST -@ gMoveDirectionAnimNums? -gUnknown_83A6415:: @ 83A6415 +gMoveDirectionAnimNums:: @ 83A6415 .byte 0x4 @ DIR_NONE .byte 0x4 @ DIR_SOUTH .byte 0x5 @ DIR_NORTH @@ -7692,8 +7689,7 @@ gUnknown_83A6415:: @ 83A6415 .byte 0x5 @ DIR_NORTHWEST .byte 0x5 @ DIR_NORTHEAST -@ gMoveDirectionFastAnimNums? -gUnknown_83A641E:: @ 83A641E +gMoveDirectionFastAnimNums:: @ 83A641E .byte 0x8 @ DIR_NONE .byte 0x8 @ DIR_SOUTH .byte 0x9 @ DIR_NORTH @@ -7704,8 +7700,7 @@ gUnknown_83A641E:: @ 83A641E .byte 0x9 @ DIR_NORTHWEST .byte 0x9 @ DIR_NORTHEAST -@ gMoveDirectionFasterAnimNums? -gUnknown_83A6427:: @ 83A6427 +gMoveDirectionFasterAnimNums:: @ 83A6427 .byte 0xC @ DIR_NONE .byte 0xC @ DIR_SOUTH .byte 0xD @ DIR_NORTH @@ -7716,8 +7711,7 @@ gUnknown_83A6427:: @ 83A6427 .byte 0xD @ DIR_NORTHWEST .byte 0xD @ DIR_NORTHEAST -@ gMoveDirectionFastestAnimNums? -gUnknown_83A6430:: @ 83A6430 +gMoveDirectionFastestAnimNums:: @ 83A6430 .byte 0x10 @ DIR_NONE .byte 0x10 @ DIR_SOUTH .byte 0x11 @ DIR_NORTH @@ -7728,8 +7722,7 @@ gUnknown_83A6430:: @ 83A6430 .byte 0x11 @ DIR_NORTHWEST .byte 0x11 @ DIR_NORTHEAST -@ gJumpSpecialDirectionAnimNums? -gUnknown_83A6439:: @ 83A6439 +gJumpSpecialDirectionAnimNums:: @ 83A6439 .byte 0x14 @ DIR_NONE .byte 0x14 @ DIR_SOUTH .byte 0x15 @ DIR_NORTH @@ -7740,8 +7733,7 @@ gUnknown_83A6439:: @ 83A6439 .byte 0x15 @ DIR_NORTHWEST .byte 0x15 @ DIR_NORTHEAST -@ gAcroWheelieDirectionAnimNums? -gUnknown_83A6442:: @ 83A6442 +gAcroWheelieDirectionAnimNums:: @ 83A6442 .byte 0x14 @ DIR_NONE .byte 0x14 @ DIR_SOUTH .byte 0x15 @ DIR_NORTH @@ -7752,8 +7744,7 @@ gUnknown_83A6442:: @ 83A6442 .byte 0x15 @ DIR_NORTHWEST .byte 0x15 @ DIR_NORTHEAST -@ ??? -gUnknown_83A644B:: @ 83A644B +gUnrefAnimNums_080634A0:: @ 83A644B .byte 0x18 @ DIR_NONE .byte 0x18 @ DIR_SOUTH .byte 0x19 @ DIR_NORTH @@ -7764,8 +7755,7 @@ gUnknown_83A644B:: @ 83A644B .byte 0x19 @ DIR_NORTHWEST .byte 0x19 @ DIR_NORTHEAST -@ gAcroEndWheelieDirectionAnimNums? -gUnknown_83A6454:: @ 83A6454 +gAcroEndWheelieDirectionAnimNums:: @ 83A6454 .byte 0x1C @ DIR_NONE .byte 0x1C @ DIR_SOUTH .byte 0x1D @ DIR_NORTH @@ -7777,7 +7767,7 @@ gUnknown_83A6454:: @ 83A6454 .byte 0x1D @ DIR_NORTHEAST @ gAcroUnusedActionDirectionAnimNums? -gUnknown_83A645D:: @ 83A645D +gAcroUnusedActionDirectionAnimNums:: @ 83A645D .byte 0x18 @ DIR_NONE .byte 0x18 @ DIR_SOUTH .byte 0x19 @ DIR_NORTH @@ -7789,7 +7779,7 @@ gUnknown_83A645D:: @ 83A645D .byte 0x1B @ DIR_NORTHEAST @ gAcroWheeliePedalDirectionAnimNums? -gUnknown_83A6466:: @ 83A6466 +gAcroWheeliePedalDirectionAnimNums:: @ 83A6466 .byte 0x20 @ DIR_NONE .byte 0x20 @ DIR_SOUTH .byte 0x21 @ DIR_NORTH @@ -7801,7 +7791,7 @@ gUnknown_83A6466:: @ 83A6466 .byte 0x21 @ DIR_NORTHEAST @ ??? -gUnknown_83A646F:: @ 83A646F +gFishingDirectionAnimNums:: @ 83A646F .byte 0x24 @ DIR_NONE .byte 0x24 @ DIR_SOUTH .byte 0x25 @ DIR_NORTH @@ -7813,7 +7803,7 @@ gUnknown_83A646F:: @ 83A646F .byte 0x25 @ DIR_NORTHEAST @ gFishingDirectionAnimNums? -gUnknown_83A6478:: @ 83A6478 +gFishingNoCatchDirectionAnimNums:: @ 83A6478 .byte 0x0 @ DIR_NONE .byte 0x0 @ DIR_SOUTH .byte 0x1 @ DIR_NORTH @@ -7825,7 +7815,7 @@ gUnknown_83A6478:: @ 83A6478 .byte 0x1 @ DIR_NORTHEAST @ gFishingNoCatchDirectionAnimNums? -gUnknown_83A6481:: @ 83A6481 +gFishingBiteDirectionAnimNums:: @ 83A6481 .byte 0x4 @ DIR_NONE .byte 0x4 @ DIR_SOUTH .byte 0x5 @ DIR_NORTH @@ -7849,7 +7839,7 @@ gUnknown_83A648A:: @ 83A648A .byte 0x9 @ DIR_NORTHEAST @ gRunningDirectionAnimNums? -gUnknown_83A6493:: @ 83A6493 +gRunningDirectionAnimNums:: @ 83A6493 .byte 0x14 @ DIR_NONE .byte 0x14 @ DIR_SOUTH .byte 0x15 @ DIR_NORTH @@ -7860,8 +7850,7 @@ gUnknown_83A6493:: @ 83A6493 .byte 0x15 @ DIR_NORTHWEST .byte 0x15 @ DIR_NORTHEAST -@ gTrainerFacingDirectionMovementTypes? -gUnknown_83A649C:: @ 83A649C +gTrainerFacingDirectionMovementTypes:: @ 83A649C .byte 0x08 @ DIR_NONE .byte 0x08 @ DIR_SOUTH .byte 0x07 @ DIR_NORTH @@ -7873,20 +7862,20 @@ gUnknown_83A649C:: @ 83A649C .byte 0x07 @ DIR_NORTHEAST .align 2 -gUnknown_83A64A8:: @ 83A64A8 +gOppositeDirectionBlockedMetatileFuncs:: @ 83A64A8 .4byte MetatileBehavior_IsSouthBlocked .4byte MetatileBehavior_IsNorthBlocked .4byte MetatileBehavior_IsWestBlocked .4byte MetatileBehavior_IsEastBlocked -gUnknown_83A64B8:: @ 83A64B8 +gDirectionBlockedMetatileFuncs:: @ 83A64B8 .4byte MetatileBehavior_IsNorthBlocked .4byte MetatileBehavior_IsSouthBlocked .4byte MetatileBehavior_IsEastBlocked .4byte MetatileBehavior_IsWestBlocked @ sDirectionToVectors -gUnknown_83A64C8:: @ 83A64C8 +sDirectionToVectors:: @ 83A64C8 .2byte 0, 0 @ DIR_NONE .2byte 0, 1 @ DIR_SOUTH .2byte 0, -1 @ DIR_NORTH @@ -7898,14 +7887,14 @@ gUnknown_83A64C8:: @ 83A64C8 .2byte 1, -1 @ DIR_NORTHEAST @ gFaceDirectionMovementActions -gUnknown_83A64EC:: @ 83A64EC +gFaceDirectionMovementActions:: @ 83A64EC .byte 0x0 @ DIR_NONE .byte 0x0 @ DIR_SOUTH .byte 0x1 @ DIR_NORTH .byte 0x2 @ DIR_WEST .byte 0x3 @ DIR_EAST -gUnknown_83A64F1:: @ 83A64F1 +gWalkSlowMovementActions:: @ 83A64F1 .byte 0x4 @ DIR_NONE .byte 0x4 @ DIR_SOUTH .byte 0x5 @ DIR_NORTH @@ -8130,7 +8119,7 @@ gUnknown_83A658C:: @ 83A658C .byte 0x93 @ DIR_EAST @ gOppositeDirections ? -gUnknown_83A6591:: @ 83A6591 +gOppositeDirections:: @ 83A6591 .byte 0x02 .byte 0x01 .byte 0x04 @@ -8179,7 +8168,7 @@ gUnknown_83A65A9:: @ 83A65A9 .byte 0x00 .byte 0x00 -sMovementActionFuncs:: @ 83A65BC +gMovementActionFuncs:: @ 83A65BC .4byte sMovementActionFuncs_x00 .4byte sMovementActionFuncs_x01 .4byte sMovementActionFuncs_x02 @@ -8352,107 +8341,107 @@ sMovementActionFuncs:: @ 83A65BC .4byte sMovementActionFuncs_xA9 sMovementActionFuncs_x00:: @ 83A6864 - .4byte MovementActionFunc_x00_0 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_FaceDown_Step0 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x01:: @ 83A686C - .4byte MovementActionFunc_x01_0 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_FaceUp_Step0 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x02:: @ 83A6874 - .4byte MovementActionFunc_x02_0 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_FaceLeft_Step0 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x03:: @ 83A687C - .4byte MovementActionFunc_x03_0 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_FaceRight_Step0 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6884:: @ 83A6884 - .4byte get_go_image_anim_num - .4byte get_go_fast_image_anim_num - .4byte get_go_fast_image_anim_num - .4byte get_go_faster_image_anim_num - .4byte MovementActionFunc_x03_4 + .4byte GetMoveDirectionAnimNum + .4byte GetMoveDirectionFastAnimNum + .4byte GetMoveDirectionFastAnimNum + .4byte GetMoveDirectionFasterAnimNum + .4byte GetMoveDirectionFastestAnimNum sMovementActionFuncs_x9B:: @ 83A6898 .4byte MovementActionFunc_x9B_0 .4byte MovementActionFunc_x9B_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x9C:: @ 83A68A4 .4byte MovementActionFunc_x9C_0 .4byte MovementActionFunc_x9C_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x9D:: @ 83A68B0 .4byte MovementActionFunc_x9D_0 .4byte MovementActionFunc_x9D_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x9E:: @ 83A68BC .4byte MovementActionFunc_x9E_0 .4byte MovementActionFunc_x9E_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x08:: @ 83A68C8 .4byte MovementActionFunc_x08_0 .4byte MovementActionFunc_x08_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x09:: @ 83A68D4 .4byte MovementActionFunc_x09_0 .4byte MovementActionFunc_x09_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x0A:: @ 83A68E0 .4byte MovementActionFunc_x0A_0 .4byte MovementActionFunc_x0A_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x0B:: @ 83A68EC .4byte MovementActionFunc_x0B_0 .4byte MovementActionFunc_x0B_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x0D:: @ 83A68F8 .4byte MovementActionFunc_x0D_0 .4byte MovementActionFunc_x0D_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x0C:: @ 83A6904 .4byte MovementActionFunc_x0C_0 .4byte MovementActionFunc_x0C_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x0E:: @ 83A6910 .4byte MovementActionFunc_x0E_0 .4byte MovementActionFunc_x0E_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x0F:: @ 83A691C .4byte MovementActionFunc_x0F_0 .4byte MovementActionFunc_x0F_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x10:: @ 83A6928 - .4byte MovementActionFunc_x10_0 - .4byte MovementActionFunc_x10_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkNormalDown_Step0 + .4byte MovementAction_WalkNormalDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x11:: @ 83A6934 - .4byte MovementActionFunc_x11_0 - .4byte MovementActionFunc_x11_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkNormalUp_Step0 + .4byte MovementAction_WalkNormalUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x12:: @ 83A6940 - .4byte MovementActionFunc_x12_0 - .4byte MovementActionFunc_x12_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkNormalLeft_Step0 + .4byte MovementAction_WalkNormalLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x13:: @ 83A694C - .4byte MovementActionFunc_x13_0 - .4byte MovementActionFunc_x13_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkNormalRight_Step0 + .4byte MovementAction_WalkNormalRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6958:: @ 83A6958 .2byte 0x0000 @@ -8465,710 +8454,710 @@ gUnknown_83A695E:: @ 83A695E .2byte 0x0001 sMovementActionFuncs_x14:: @ 83A6964 - .4byte MovementActionFunc_x14_0 - .4byte MovementActionFunc_x14_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_Jump2Down_Step0 + .4byte MovementAction_Jump2Down_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x15:: @ 83A6970 - .4byte MovementActionFunc_x15_0 - .4byte MovementActionFunc_x15_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_Jump2Up_Step0 + .4byte MovementAction_Jump2Up_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x16:: @ 83A697C - .4byte MovementActionFunc_x16_0 - .4byte MovementActionFunc_x16_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_Jump2Left_Step0 + .4byte MovementAction_Jump2Left_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x17:: @ 83A6988 - .4byte MovementActionFunc_x17_0 - .4byte MovementActionFunc_x17_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_Jump2Right_Step0 + .4byte MovementAction_Jump2Right_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x18:: @ 83A6994 - .4byte MovementActionFunc_x18_0 - .4byte MovementActionFunc_x18_1 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Delay1_Step0 + .4byte MovementAction_Delay_Step1 + .4byte MovementAction_Finish sMovementActionFuncs_x19:: @ 83A69A0 - .4byte MovementActionFunc_x19_0 - .4byte MovementActionFunc_x18_1 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Delay2_Step0 + .4byte MovementAction_Delay_Step1 + .4byte MovementAction_Finish sMovementActionFuncs_x1A:: @ 83A69AC - .4byte MovementActionFunc_x1A_0 - .4byte MovementActionFunc_x18_1 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Delay4_Step0 + .4byte MovementAction_Delay_Step1 + .4byte MovementAction_Finish sMovementActionFuncs_x1B:: @ 83A69B8 - .4byte MovementActionFunc_x1B_0 - .4byte MovementActionFunc_x18_1 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Delay8_Step0 + .4byte MovementAction_Delay_Step1 + .4byte MovementAction_Finish sMovementActionFuncs_x1C:: @ 83A69C4 - .4byte MovementActionFunc_x1C_0 - .4byte MovementActionFunc_x18_1 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Delay16_Step0 + .4byte MovementAction_Delay_Step1 + .4byte MovementAction_Finish sMovementActionFuncs_x1D:: @ 83A69D0 - .4byte MovementActionFunc_x1D_0 - .4byte MovementActionFunc_x1D_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkFastDown_Step0 + .4byte MovementAction_WalkFastDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x1E:: @ 83A69DC - .4byte MovementActionFunc_x1E_0 - .4byte MovementActionFunc_x1E_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkFastUp_Step0 + .4byte MovementAction_WalkFastUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x1F:: @ 83A69E8 - .4byte MovementActionFunc_x1F_0 - .4byte MovementActionFunc_x1F_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkFastLeft_Step0 + .4byte MovementAction_WalkFastLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x20:: @ 83A69F4 - .4byte MovementActionFunc_x20_0 - .4byte MovementActionFunc_x20_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkFastRight_Step0 + .4byte MovementAction_WalkFastRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_xA0:: @ 83A6A00 .4byte MovementActionFunc_xA0_0 .4byte MovementActionFunc_xA0_1 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Finish sMovementActionFuncs_xA1:: @ 83A6A0C .4byte MovementActionFunc_xA1_0 .4byte MovementActionFunc_xA1_1 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Finish sMovementActionFuncs_xA2:: @ 83A6A18 .4byte MovementActionFunc_xA2_0 .4byte MovementActionFunc_xA2_1 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Finish sMovementActionFuncs_xA3:: @ 83A6A24 .4byte MovementActionFunc_xA3_0 .4byte MovementActionFunc_xA3_1 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Finish sMovementActionFuncs_x04:: @ 83A6A30 .4byte MovementActionFunc_x04_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Finish sMovementActionFuncs_x05:: @ 83A6A38 .4byte MovementActionFunc_x05_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Finish sMovementActionFuncs_x06:: @ 83A6A40 .4byte MovementActionFunc_x06_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Finish sMovementActionFuncs_x07:: @ 83A6A48 .4byte MovementActionFunc_x07_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Finish sMovementActionFuncs_x21:: @ 83A6A50 - .4byte MovementActionFunc_x21_0 - .4byte MovementActionFunc_x21_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceSlowDown_Step0 + .4byte MovementAction_WalkInPlaceSlow_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x22:: @ 83A6A5C - .4byte MovementActionFunc_x22_0 - .4byte MovementActionFunc_x21_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceSlowUp_Step0 + .4byte MovementAction_WalkInPlaceSlow_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x23:: @ 83A6A68 - .4byte MovementActionFunc_x23_0 - .4byte MovementActionFunc_x21_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceSlowLeft_Step0 + .4byte MovementAction_WalkInPlaceSlow_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x24:: @ 83A6A74 - .4byte MovementActionFunc_x24_0 - .4byte MovementActionFunc_x21_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceSlowRight_Step0 + .4byte MovementAction_WalkInPlaceSlow_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x25:: @ 83A6A80 - .4byte MovementActionFunc_x25_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceNormalDown_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x26:: @ 83A6A8C - .4byte MovementActionFunc_x26_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceNormalUp_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x27:: @ 83A6A98 - .4byte MovementActionFunc_x27_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceNormalLeft_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x28:: @ 83A6AA4 - .4byte MovementActionFunc_x28_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceNormalRight_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x29:: @ 83A6AB0 - .4byte MovementActionFunc_x29_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceFastDown_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x2A:: @ 83A6ABC - .4byte MovementActionFunc_x2A_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceFastUp_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x2B:: @ 83A6AC8 - .4byte MovementActionFunc_x2B_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceFastLeft_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x2C:: @ 83A6AD4 - .4byte MovementActionFunc_x2C_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceFastRight_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x2D:: @ 83A6AE0 - .4byte MovementActionFunc_x2D_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceFastestDown_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x2E:: @ 83A6AEC - .4byte MovementActionFunc_x2E_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceFastestUp_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x2F:: @ 83A6AF8 - .4byte MovementActionFunc_x2F_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceFastestLeft_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x30:: @ 83A6B04 - .4byte MovementActionFunc_x30_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlaceFastestRight_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x31:: @ 83A6B10 - .4byte MovementActionFunc_x31_0 - .4byte MovementActionFunc_x31_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_RideWaterCurrentDown_Step0 + .4byte MovementAction_RideWaterCurrentDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x32:: @ 83A6B1C - .4byte MovementActionFunc_x32_0 - .4byte MovementActionFunc_x32_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_RideWaterCurrentUp_Step0 + .4byte MovementAction_RideWaterCurrentUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x33:: @ 83A6B28 - .4byte MovementActionFunc_x33_0 - .4byte MovementActionFunc_x33_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_RideWaterCurrentLeft_Step0 + .4byte MovementAction_RideWaterCurrentLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x34:: @ 83A6B34 - .4byte MovementActionFunc_x34_0 - .4byte MovementActionFunc_x34_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_RideWaterCurrentRight_Step0 + .4byte MovementAction_RideWaterCurrentRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x35:: @ 83A6B40 - .4byte MovementActionFunc_x35_0 - .4byte MovementActionFunc_x35_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkFastestDown_Step0 + .4byte MovementAction_WalkFastestDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x36:: @ 83A6B4C - .4byte MovementActionFunc_x36_0 - .4byte MovementActionFunc_x36_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkFastestUp_Step0 + .4byte MovementAction_WalkFastestUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x37:: @ 83A6B58 - .4byte MovementActionFunc_x37_0 - .4byte MovementActionFunc_x37_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkFastestLeft_Step0 + .4byte MovementAction_WalkFastestLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x38:: @ 83A6B64 - .4byte MovementActionFunc_x38_0 - .4byte MovementActionFunc_x38_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkFastestRight_Step0 + .4byte MovementAction_WalkFastestRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x39:: @ 83A6B70 - .4byte MovementActionFunc_x39_0 - .4byte MovementActionFunc_x39_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_SlideDown_Step0 + .4byte MovementAction_SlideDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x3A:: @ 83A6B7C - .4byte MovementActionFunc_x3A_0 - .4byte MovementActionFunc_x3A_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_SlideUp_Step0 + .4byte MovementAction_SlideUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x3B:: @ 83A6B88 - .4byte MovementActionFunc_x3B_0 - .4byte MovementActionFunc_x3B_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_SlideLeft_Step0 + .4byte MovementAction_SlideLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x3C:: @ 83A6B94 - .4byte MovementActionFunc_x3C_0 - .4byte MovementActionFunc_x3C_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_SlideRight_Step0 + .4byte MovementAction_SlideRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x3D:: @ 83A6BA0 - .4byte do_run_south_anim - .4byte MovementActionFunc_x3D_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PlayerRunDown_Step0 + .4byte MovementAction_PlayerRunDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x3E:: @ 83A6BAC - .4byte do_run_north_anim - .4byte MovementActionFunc_x3E_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PlayerRunUp_Step0 + .4byte MovementAction_PlayerRunUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x3F:: @ 83A6BB8 - .4byte do_run_west_anim - .4byte MovementActionFunc_x3F_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PlayerRunLeft_Step0 + .4byte MovementAction_PlayerRunLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x40:: @ 83A6BC4 - .4byte do_run_east_anim - .4byte MovementActionFunc_x40_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PlayerRunRight_Step0 + .4byte MovementAction_PlayerRunRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x41:: @ 83A6BD0 .4byte MovementActionFunc_x41_0 .4byte MovementActionFunc_x41_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x42:: @ 83A6BDC .4byte MovementActionFunc_x42_0 .4byte MovementActionFunc_x42_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x43:: @ 83A6BE8 .4byte MovementActionFunc_x43_0 .4byte MovementActionFunc_x43_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x44:: @ 83A6BF4 .4byte MovementActionFunc_x44_0 .4byte MovementActionFunc_x44_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x45:: @ 83A6C00 - .4byte MovementActionFunc_x45_0 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_StartAnimInDirection_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x46:: @ 83A6C0C - .4byte MovementActionFunc_x46_0 - .4byte MovementActionFunc_x46_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpSpecialDown_Step0 + .4byte MovementAction_JumpSpecialDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x47:: @ 83A6C18 - .4byte MovementActionFunc_x47_0 - .4byte MovementActionFunc_x47_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpSpecialUp_Step0 + .4byte MovementAction_JumpSpecialUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x48:: @ 83A6C24 - .4byte MovementActionFunc_x48_0 - .4byte MovementActionFunc_x48_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpSpecialLeft_Step0 + .4byte MovementAction_JumpSpecialLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x49:: @ 83A6C30 - .4byte MovementActionFunc_x49_0 - .4byte MovementActionFunc_x49_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpSpecialRight_Step0 + .4byte MovementAction_JumpSpecialRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_xA6:: @ 83A6C3C .4byte MovementActionFunc_xA6_0 .4byte MovementActionFunc_xA6_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_xA7:: @ 83A6C48 .4byte MovementActionFunc_xA7_0 .4byte MovementActionFunc_xA7_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_xA8:: @ 83A6C54 .4byte MovementActionFunc_xA8_0 .4byte MovementActionFunc_xA8_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_xA9:: @ 83A6C60 .4byte MovementActionFunc_xA9_0 .4byte MovementActionFunc_xA9_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x4A:: @ 83A6C6C - .4byte MovementActionFunc_x4A_0 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_FacePlayer_Step0 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x4B:: @ 83A6C74 - .4byte MovementActionFunc_x4B_0 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_FaceAwayPlayer_Step0 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x4C:: @ 83A6C7C - .4byte MovementActionFunc_x4C_0 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_LockFacingDirection_Step0 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x4D:: @ 83A6C84 - .4byte MovementActionFunc_x4D_0 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_UnlockFacingDirection_Step0 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x4E:: @ 83A6C8C - .4byte MovementActionFunc_x4E_0 - .4byte MovementActionFunc_x4E_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpDown_Step0 + .4byte MovementAction_JumpDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x4F:: @ 83A6C98 - .4byte MovementActionFunc_x4F_0 - .4byte MovementActionFunc_x4F_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpUp_Step0 + .4byte MovementAction_JumpUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x50:: @ 83A6CA4 - .4byte MovementActionFunc_x50_0 - .4byte MovementActionFunc_x50_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpLeft_Step0 + .4byte MovementAction_JumpLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x51:: @ 83A6CB0 - .4byte MovementActionFunc_x51_0 - .4byte MovementActionFunc_x51_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpRight_Step0 + .4byte MovementAction_JumpRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x52:: @ 83A6CBC - .4byte MovementActionFunc_x52_0 - .4byte MovementActionFunc_x52_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpInPlaceDown_Step0 + .4byte MovementAction_JumpInPlaceDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x53:: @ 83A6CC8 - .4byte MovementActionFunc_x53_0 - .4byte MovementActionFunc_x53_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpInPlaceUp_Step0 + .4byte MovementAction_JumpInPlaceUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x54:: @ 83A6CD4 - .4byte MovementActionFunc_x54_0 - .4byte MovementActionFunc_x54_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpInPlaceLeft_Step0 + .4byte MovementAction_JumpInPlaceLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x55:: @ 83A6CE0 - .4byte MovementActionFunc_x55_0 - .4byte MovementActionFunc_x55_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpInPlaceRight_Step0 + .4byte MovementAction_JumpInPlaceRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x56:: @ 83A6CEC - .4byte MovementActionFunc_x56_0 - .4byte MovementActionFunc_x56_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpInPlaceDownUp_Step0 + .4byte MovementAction_JumpInPlaceDownUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x57:: @ 83A6CF8 - .4byte MovementActionFunc_x57_0 - .4byte MovementActionFunc_x57_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpInPlaceUpDown_Step0 + .4byte MovementAction_JumpInPlaceUpDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x58:: @ 83A6D04 - .4byte MovementActionFunc_x58_0 - .4byte MovementActionFunc_x58_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpInPlaceLeftRight_Step0 + .4byte MovementAction_JumpInPlaceLeftRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x59:: @ 83A6D10 - .4byte MovementActionFunc_x59_0 - .4byte MovementActionFunc_x59_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_JumpInPlaceRightLeft_Step0 + .4byte MovementAction_JumpInPlaceRightLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x5A:: @ 83A6D1C - .4byte MovementActionFunc_x5A_0 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_FaceOriginalDirection_Step0 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x5B:: @ 83A6D24 - .4byte MovementActionFunc_x5B_0 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_NurseJoyBowDown_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x5C:: @ 83A6D30 - .4byte MovementActionFunc_x5C_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_EnableJumpLandingGroundEffect_Step0 + .4byte MovementAction_Finish sMovementActionFuncs_x5D:: @ 83A6D38 - .4byte MovementActionFunc_x5D_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_DisableJumpLandingGroundEffect_Step0 + .4byte MovementAction_Finish sMovementActionFuncs_x5E:: @ 83A6D40 - .4byte MovementActionFunc_x5E_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_DisableAnimation_Step0 + .4byte MovementAction_Finish sMovementActionFuncs_x5F:: @ 83A6D48 - .4byte MovementActionFunc_x5F_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_RestoreAnimation_Step0 + .4byte MovementAction_Finish sMovementActionFuncs_x60:: @ 83A6D50 - .4byte MovementActionFunc_x60_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_SetInvisible_Step0 + .4byte MovementAction_Finish sMovementActionFuncs_x61:: @ 83A6D58 - .4byte MovementActionFunc_x61_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_SetVisible_Step0 + .4byte MovementAction_Finish sMovementActionFuncs_x62:: @ 83A6D60 - .4byte do_exclamation_mark_bubble_1 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_EmoteExclamationMark_Step0 + .4byte MovementAction_Finish sMovementActionFuncs_x63:: @ 83A6D68 - .4byte do_exclamation_mark_bubble_2 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_EmoteQuestionMark_Step0 + .4byte MovementAction_Finish sMovementActionFuncs_x64:: @ 83A6D70 - .4byte do_x_bubble - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_EmoteHeart_Step0 + .4byte MovementAction_Finish sMovementActionFuncs_x65:: @ 83A6D78 .4byte do_double_excl_bubble - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Finish sMovementActionFuncs_x66:: @ 83A6D80 .4byte do_smile_bubble - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_Finish sMovementActionFuncs_x67:: @ 83A6D88 - .4byte MovementActionFunc_x67_0 - .4byte MovementActionFunc_x67_1 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_RevealTrainer_Step0 + .4byte MovementAction_RevealTrainer_Step1 + .4byte MovementAction_Finish sMovementActionFuncs_x68:: @ 83A6D94 - .4byte MovementActionFunc_x68_0 - .4byte MovementActionFunc_x68_1 - .4byte MovementActionFunc_x68_2 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_RockSmashBreak_Step0 + .4byte MovementAction_RockSmashBreak_Step1 + .4byte MovementAction_RockSmashBreak_Step2 + .4byte MovementAction_Finish sMovementActionFuncs_x69:: @ 83A6DA4 - .4byte MovementActionFunc_x69_0 - .4byte MovementActionFunc_x69_1 - .4byte MovementActionFunc_x69_2 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_CutTree_Step0 + .4byte MovementAction_CutTree_Step1 + .4byte MovementAction_CutTree_Step2 + .4byte MovementAction_Finish sMovementActionFuncs_x6A:: @ 83A6DB4 - .4byte MovementActionFunc_x6A_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_SetFixedPriority_Step0 + .4byte MovementAction_Finish sMovementActionFuncs_x6B:: @ 83A6DBC - .4byte MovementActionFunc_x6B_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_ClearFixedPriority_Step0 + .4byte MovementAction_Finish sMovementActionFuncs_x6C:: @ 83A6DC4 - .4byte MovementActionFunc_x6C_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_InitAffineAnim_Step0 + .4byte MovementAction_Finish sMovementActionFuncs_x6D:: @ 83A6DCC - .4byte MovementActionFunc_x6D_0 - .4byte MovementActionFunc_x18_2 + .4byte MovementAction_ClearAffineAnim_Step0 + .4byte MovementAction_Finish sMovementActionFuncs_x6E:: @ 83A6DD4 - .4byte MovementActionFunc_x6E_0 - .4byte MovementActionFunc_x6E_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkDownStartAffine_Step0 + .4byte MovementAction_WalkDownStartAffine_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x6F:: @ 83A6DE0 - .4byte MovementActionFunc_x6F_0 - .4byte MovementActionFunc_x6F_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkDownAffine_Step0 + .4byte MovementAction_WalkDownAffine_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x70:: @ 83A6DEC .4byte MovementActionFunc_x70_0 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x71:: @ 83A6DF4 .4byte MovementActionFunc_x71_0 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x72:: @ 83A6DFC .4byte MovementActionFunc_x72_0 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x73:: @ 83A6E04 .4byte MovementActionFunc_x73_0 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x74:: @ 83A6E0C - .4byte MovementActionFunc_x74_0 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroPopWheelieDown_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x75:: @ 83A6E18 - .4byte MovementActionFunc_x75_0 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroPopWheelieUp_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x76:: @ 83A6E24 - .4byte MovementActionFunc_x76_0 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroPopWheelieLeft_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x77:: @ 83A6E30 - .4byte MovementActionFunc_x77_0 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroPopWheelieRight_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x78:: @ 83A6E3C - .4byte MovementActionFunc_x78_0 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroEndWheelieFaceDown_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x79:: @ 83A6E48 - .4byte MovementActionFunc_x79_0 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroEndWheelieFaceUp_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x7A:: @ 83A6E54 - .4byte MovementActionFunc_x7A_0 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroEndWheelieFaceLeft_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x7B:: @ 83A6E60 - .4byte MovementActionFunc_x7B_0 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 - .4byte MovementActionFunc_x7B_3 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 - .4byte MovementActionFunc_x7B_6 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 - .4byte MovementActionFunc_x7B_9 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 - .4byte MovementActionFunc_x7B_12 - .4byte MovementActionFunc_x45_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroEndWheelieFaceRight_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim + .4byte MovementAction_UnusedAcroActionDown_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim + .4byte MovementAction_UnusedAcroActionUp_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim + .4byte MovementAction_UnusedAcroActionLeft_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim + .4byte MovementAction_UnusedAcroActionRight_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x7C:: @ 83A6E9C - .4byte MovementActionFunc_x7C_0 - .4byte MovementActionFunc_x7C_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieHopFaceDown_Step0 + .4byte MovementAction_AcroWheelieHopFaceDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x7D:: @ 83A6EA8 - .4byte MovementActionFunc_x7D_0 - .4byte MovementActionFunc_x7D_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieHopFaceUp_Step0 + .4byte MovementAction_AcroWheelieHopFaceUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x7E:: @ 83A6EB4 - .4byte MovementActionFunc_x7E_0 - .4byte MovementActionFunc_x7E_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieHopFaceLeft_Step0 + .4byte MovementAction_AcroWheelieHopFaceLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x7F:: @ 83A6EC0 - .4byte MovementActionFunc_x7F_0 - .4byte MovementActionFunc_x7F_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieHopFaceRight_Step0 + .4byte MovementAction_AcroWheelieHopFaceRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x80:: @ 83A6ECC - .4byte MovementActionFunc_x80_0 - .4byte MovementActionFunc_x80_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieHopDown_Step0 + .4byte MovementAction_AcroWheelieHopDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x81:: @ 83A6ED8 - .4byte MovementActionFunc_x81_0 - .4byte MovementActionFunc_x81_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieHopUp_Step0 + .4byte MovementAction_AcroWheelieHopUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x82:: @ 83A6EE4 - .4byte MovementActionFunc_x82_0 - .4byte MovementActionFunc_x82_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieHopLeft_Step0 + .4byte MovementAction_AcroWheelieHopLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x83:: @ 83A6EF0 - .4byte MovementActionFunc_x83_0 - .4byte MovementActionFunc_x83_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieHopRight_Step0 + .4byte MovementAction_AcroWheelieHopRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x84:: @ 83A6EFC - .4byte MovementActionFunc_x84_0 - .4byte MovementActionFunc_x84_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieJumpDown_Step0 + .4byte MovementAction_AcroWheelieJumpDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x85:: @ 83A6F08 - .4byte MovementActionFunc_x85_0 - .4byte MovementActionFunc_x85_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieJumpUp_Step0 + .4byte MovementAction_AcroWheelieJumpUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x86:: @ 83A6F14 - .4byte MovementActionFunc_x86_0 - .4byte MovementActionFunc_x86_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieJumpLeft_Step0 + .4byte MovementAction_AcroWheelieJumpLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x87:: @ 83A6F20 - .4byte MovementActionFunc_x87_0 - .4byte MovementActionFunc_x87_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieJumpRight_Step0 + .4byte MovementAction_AcroWheelieJumpRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x88:: @ 83A6F2C .4byte MovementActionFunc_x88_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x89:: @ 83A6F38 .4byte MovementActionFunc_x89_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x8A:: @ 83A6F44 .4byte MovementActionFunc_x8A_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x8B:: @ 83A6F50 .4byte MovementActionFunc_x8B_0 - .4byte MovementActionFunc_x25_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x8C:: @ 83A6F5C - .4byte MovementActionFunc_x8C_0 - .4byte MovementActionFunc_x8C_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroPopWheelieMoveDown_Step0 + .4byte MovementAction_AcroPopWheelieMoveDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x8D:: @ 83A6F68 - .4byte MovementActionFunc_x8D_0 - .4byte MovementActionFunc_x8D_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroPopWheelieMoveUp_Step0 + .4byte MovementAction_AcroPopWheelieMoveUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x8E:: @ 83A6F74 - .4byte MovementActionFunc_x8E_0 - .4byte MovementActionFunc_x8E_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroPopWheelieMoveLeft_Step0 + .4byte MovementAction_AcroPopWheelieMoveLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x8F:: @ 83A6F80 - .4byte MovementActionFunc_x8F_0 - .4byte MovementActionFunc_x8F_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroPopWheelieMoveRight_Step0 + .4byte MovementAction_AcroPopWheelieMoveRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x90:: @ 83A6F8C - .4byte MovementActionFunc_x90_0 - .4byte MovementActionFunc_x90_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieMoveDown_Step0 + .4byte MovementAction_AcroWheelieMoveDown_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x91:: @ 83A6F98 - .4byte MovementActionFunc_x91_0 - .4byte MovementActionFunc_x91_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieMoveUp_Step0 + .4byte MovementAction_AcroWheelieMoveUp_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x92:: @ 83A6FA4 - .4byte MovementActionFunc_x92_0 - .4byte MovementActionFunc_x92_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieMoveLeft_Step0 + .4byte MovementAction_AcroWheelieMoveLeft_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x93:: @ 83A6FB0 - .4byte MovementActionFunc_x93_0 - .4byte MovementActionFunc_x93_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_AcroWheelieMoveRight_Step0 + .4byte MovementAction_AcroWheelieMoveRight_Step1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x94:: @ 83A6FBC .4byte MovementActionFunc_x94_0 .4byte MovementActionFunc_x94_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x95:: @ 83A6FC8 .4byte MovementActionFunc_x95_0 .4byte MovementActionFunc_x95_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x96:: @ 83A6FD4 .4byte MovementActionFunc_x96_0 .4byte MovementActionFunc_x96_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x97:: @ 83A6FE0 .4byte MovementActionFunc_x97_0 .4byte MovementActionFunc_x97_1 - .4byte MovementActionFunc_x00_1 + .4byte MovementAction_PauseSpriteAnim sMovementActionFuncs_x98:: @ 83A6FEC .4byte MovementActionFunc_x98_0 @@ -9195,6 +9184,7 @@ sMovementActionFuncs_xA5:: @ 83A7018 .4byte MovementActionFunc_xA5_0 .4byte MovementActionFunc_xA5_1 .4byte MovementActionFunc_xA4_2 + .align 2 gUnknown_83A7024:: @ 83A7024 .4byte 0x00000020, 0x00000010 diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index c3862a7b1..2d51cd74d 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -154,22 +154,28 @@ #define OBJ_EVENT_GFX_DEOXYS_N 150 #define OBJ_EVENT_GFX_SS_ANNE 151 -#define OBJ_EVENT_GFX_VAR_0 240 -#define OBJ_EVENT_GFX_VAR_1 241 -#define OBJ_EVENT_GFX_VAR_2 242 -#define OBJ_EVENT_GFX_VAR_3 243 -#define OBJ_EVENT_GFX_VAR_4 244 -#define OBJ_EVENT_GFX_VAR_5 245 -#define OBJ_EVENT_GFX_VAR_6 246 -#define OBJ_EVENT_GFX_VAR_7 247 -#define OBJ_EVENT_GFX_VAR_8 248 -#define OBJ_EVENT_GFX_VAR_9 249 -#define OBJ_EVENT_GFX_VAR_A 250 -#define OBJ_EVENT_GFX_VAR_B 251 -#define OBJ_EVENT_GFX_VAR_C 252 -#define OBJ_EVENT_GFX_VAR_D 253 -#define OBJ_EVENT_GFX_VAR_E 254 -#define OBJ_EVENT_GFX_VAR_F 255 +#define NUM_OBJ_EVENT_GFX 239 + +// These are dynamic object gfx ids. +// They correspond with the values of the VAR_OBJ_GFX_ID_X vars. +// More info about them in include/constants/vars.h +#define OBJ_EVENT_GFX_VARS (NUM_OBJ_EVENT_GFX + 1) +#define OBJ_EVENT_GFX_VAR_0 (OBJ_EVENT_GFX_VARS + 0x0) // 240 +#define OBJ_EVENT_GFX_VAR_1 (OBJ_EVENT_GFX_VARS + 0x1) +#define OBJ_EVENT_GFX_VAR_2 (OBJ_EVENT_GFX_VARS + 0x2) +#define OBJ_EVENT_GFX_VAR_3 (OBJ_EVENT_GFX_VARS + 0x3) +#define OBJ_EVENT_GFX_VAR_4 (OBJ_EVENT_GFX_VARS + 0x4) +#define OBJ_EVENT_GFX_VAR_5 (OBJ_EVENT_GFX_VARS + 0x5) +#define OBJ_EVENT_GFX_VAR_6 (OBJ_EVENT_GFX_VARS + 0x6) +#define OBJ_EVENT_GFX_VAR_7 (OBJ_EVENT_GFX_VARS + 0x7) +#define OBJ_EVENT_GFX_VAR_8 (OBJ_EVENT_GFX_VARS + 0x8) +#define OBJ_EVENT_GFX_VAR_9 (OBJ_EVENT_GFX_VARS + 0x9) +#define OBJ_EVENT_GFX_VAR_A (OBJ_EVENT_GFX_VARS + 0xA) +#define OBJ_EVENT_GFX_VAR_B (OBJ_EVENT_GFX_VARS + 0xB) +#define OBJ_EVENT_GFX_VAR_C (OBJ_EVENT_GFX_VARS + 0xC) +#define OBJ_EVENT_GFX_VAR_D (OBJ_EVENT_GFX_VARS + 0xD) +#define OBJ_EVENT_GFX_VAR_E (OBJ_EVENT_GFX_VARS + 0xE) +#define OBJ_EVENT_GFX_VAR_F (OBJ_EVENT_GFX_VARS + 0xF) // 255 #define SHADOW_SIZE_S 0 #define SHADOW_SIZE_M 1 diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index 5aa885b37..a4ecd3e21 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -1,6 +1,6 @@ #ifndef GUARD_CONSTANTS_FIELD_EFFECTS_H #define GUARD_CONSTANTS_FIELD_EFFECTS_H - + #define FLDEFF_EXCLAMATION_MARK_ICON 0 #define FLDEFF_USE_CUT_ON_GRASS 1 #define FLDEFF_USE_CUT_ON_TREE 2 diff --git a/include/constants/global.h b/include/constants/global.h index ae9a0da3b..28fe660e3 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -31,6 +31,7 @@ #define BAG_POKEBALLS_COUNT 13 #define BAG_TMHM_COUNT 58 #define BAG_BERRIES_COUNT 43 +#define OBJECT_EVENT_TEMPLATES_COUNT 64 #define QUEST_LOG_SCENE_COUNT 4 diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 5c65db228..e8c0d4463 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -3,9 +3,6 @@ #include "global.h" -#define NUM_OBJECT_GRAPHICS_INFO 239 -#define SPRITE_VAR 240 - // Exported struct declarations enum SpinnerRunnerFollowPatterns { @@ -22,6 +19,18 @@ enum SpinnerRunnerFollowPatterns { RUNFOLLOW_SOUTH_EAST_WEST }; +struct UnkStruct_083A3698 +{ + const union AnimCmd *const *anims; + u8 animPos[4]; +}; + +struct PairedPalettes +{ + u16 tag; + const u16 *data; +}; + // Exported RAM declarations // Exported ROM declarations @@ -30,83 +39,91 @@ void sub_808D438(void); u8 GetObjectEventIdByLocalIdAndMap(u8, u8, u8); bool8 TryGetObjectEventIdByLocalIdAndMap(u8, u8, u8, u8 *); u8 GetObjectEventIdByXY(s16, s16); -void ObjectEventSetDirection(struct ObjectEvent *, u8); +void SetObjectEventDirection(struct ObjectEvent *, u8); u8 sub_808D4F4(void); void RemoveObjectEventByLocalIdAndMap(u8, u8, u8); void LoadPlayerObjectReflectionPalette(u16, u8); void LoadSpecialObjectReflectionPalette(u16, u8); -void sub_805F7C4(u8, u8, u8, s16, s16); +void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16); void PatchObjectPalette(u16, u8); void sub_808E16C(s16, s16); void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat); -void sub_8092FF0(s16, s16, s16 *, s16 *); -u8 ObjectEventDirectionToImageAnimId(u8); +void sub_8063AD4(s16, s16, s16 *, s16 *); +u8 GetFaceDirectionAnimNum(u8); void sub_8063BC4(s16 *, s16 *, s16, s16); -void ObjectEventClearAnim(struct ObjectEvent *); -void ObjectEventClearAnimIfSpecialAnimActive(struct ObjectEvent *); +void ObjectEventClearHeldMovement(struct ObjectEvent *); +void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *); void SpawnObjectEventsInView(s16, s16); u8 sprite_new(u8, u8, s16, s16, u8, u8); u8 AddPseudoObjectEvent(u16, SpriteCallback, s16, s16, u8); u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup); int SpawnSpecialObjectEventParameterized(u8, u8, u8, s16, s16, u8); u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *); -void sub_8093038(s16, s16, s16 *, s16 *); void CameraObjectReset1(void); void CameraObjectReset2(void); void ObjectEventSetGraphicsId(struct ObjectEvent *, u8); void ObjectEventTurn(struct ObjectEvent *, u8); void ObjectEventTurnByLocalIdAndMap(u8, u8, u8, u8); -void ObjectEventForceSetSpecialAnim(struct ObjectEvent *, u8); -u8 sub_8064270(u8 a0); +void ObjectEventForceSetHeldMovement(struct ObjectEvent *, u8); const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8); void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8); -void gpu_pal_allocator_reset__manage_upper_four(void); +void FreeAndReserveObjectSpritePalettes(void); void sub_808E82C(u8, u8, u8, s16, s16); void sub_805F400(u8, u8, u8); void sub_805F3A8(u8, u8, u8, u8); void sub_808E75C(s16, s16); -void ObjectEventGetLocalIdAndMap(struct ObjectEvent * objectEvent, u8 *localId, u8 *mapNum, u8 *mapGroup); -void npc_coords_shift(struct ObjectEvent *, s16, s16); +void ObjectEventGetLocalIdAndMap(struct ObjectEvent *objectEvent, void *localId, void *mapNum, void *mapGroup); +void ShiftObjectEventCoords(struct ObjectEvent *, s16, s16); void sub_808EB08(struct ObjectEvent *, s16, s16); -void sub_805FE94(u8, u8, u8); -void ObjectEventStep(struct ObjectEvent *, struct Sprite *, bool8(struct ObjectEvent *, struct Sprite *)); +void TryOverrideObjectEventTemplateCoords(u8, u8, u8); +void UpdateObjectEventCurrentMovement(struct ObjectEvent *, struct Sprite *, bool8(struct ObjectEvent *, struct Sprite *)); u8 ObjectEventFaceOppositeDirection(struct ObjectEvent *, u8); u8 GetOppositeDirection(u8); -u8 GetStepInPlaceDelay4AnimId(u32); +u8 GetWalkInPlaceFastMovementAction(u32); u8 GetStepInPlaceDelay8AnimId(u32); -u8 GetStepInPlaceDelay16AnimId(u32); +u8 GetWalkInPlaceNormalMovementAction(u32); +u8 GetWalkInPlaceSlowMovementAction(u32); u8 GetStepInPlaceDelay32AnimId(u32); u8 GetCollisionAtCoords(struct ObjectEvent *, s16, s16, u32); void MoveCoords(u8, s16 *, s16 *); -bool8 ObjectEventIsSpecialAnimActive(struct ObjectEvent *); +bool8 ObjectEventIsHeldMovementActive(struct ObjectEvent *); u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *); u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z); void sub_8063E28(struct ObjectEvent *, struct Sprite *); bool8 ObjectEventSetHeldMovement(struct ObjectEvent *, u8); -void npc_coords_shift_still(struct ObjectEvent *); -void TryOverrideTemplateCoordsForObjectEvent(struct ObjectEvent *, u8); +void ShiftStillObjectEventCoords(struct ObjectEvent *); +void OverrideMovementTypeForObjectEvent(const struct ObjectEvent *, u8); void SetTrainerMovementType(struct ObjectEvent *, u8); -u8 sub_80634F0(u8 direction); -u8 sub_8063500(u8 a0); +u8 GetFishingNoCatchDirectionAnimNum(u8 direction); +u8 GetFishingBiteDirectionAnimNum(u8 a0); void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 a1); u8 sub_805EB44(u8, u8, s16, s16); -void npc_paltag_set_load(u8 mode); +void InitObjectEventPalettes(u8 mode); bool8 ObjectEventIsMovementOverridden(struct ObjectEvent *objectEvent); u8 ObjectEventCheckHeldMovementStatus(struct ObjectEvent *objectEvent); -u8 GetWalkNormalMovementAction(u8 direction); +u8 GetWalkNormalMovementAction(u32); +u8 GetWalkFastMovementAction(u32); +u8 GetWalkFastestMovementAction(u32); +u8 sub_8063F2C(u32 direction); u8 GetTrainerFacingDirectionMovementType(u8 direction); -void CameraObjectSetFollowedObjectId(u8 spriteId); +u8 GetFaceDirectionMovementAction(u32); +void CameraObjectSetFollowedObjectId(u8 objectId); void UnfreezeObjectEvents(void); +void sub_8069058(u8, u8); +u8 GetSlideMovementAction(u32); +u8 GetJumpInPlaceMovementAction(u32); +u8 GetJumpMovementAction(u32); +u8 GetJump2MovementAction(u32); +bool8 sub_8068BCC(struct Sprite *sprite); +void sub_8068D1C(struct Sprite *, u8, u8, u8); +u8 sub_8068D3C(struct Sprite *); +u8 sub_8068DC4(struct Sprite *); void TurnObjectEvent(u8, u8); const u8 *GetObjectEventScriptPointerByObjectEventId(u8 objectEventId); -u8 GetIndexOfFirstInactiveObjectEvent(void); +u8 GetFirstInactiveObjectEventId(void); u8 GetCollisionFlagsAtCoords(struct ObjectEvent * objectEvent, s16 x, s16 y, u8 direction); -u8 GetFaceDirectionMovementAction(u8 direction); -u8 GetJumpInPlaceMovementAction(u8 direction); u8 sub_8063FB0(u8 direction); -void OverrideTemplateCoordsForObjectEvent(struct ObjectEvent *); -void sub_805C774(void); - +void OverrideTemplateCoordsForObjectEvent(const struct ObjectEvent *objectEvent);void sub_805C774(void); void FreezeObjectEvents(void); bool8 FreezeObjectEvent(struct ObjectEvent *); void UnfreezeObjectEvent(struct ObjectEvent *); @@ -116,12 +133,9 @@ void RfuUnionObjectToggleInvisibility(u8 objectEventId, bool32 invisible); bool32 RfuUnionObjectIsInvisible(u8 objectEventId); void RfuUnionObjectStartWarp(u8 objectEventId, u8 animNo); bool32 RfuUnionObjectIsWarping(u8 objectEventId); -u8 sub_8063F2C(u8 direction); -u8 sub_8064194(u8 direction); -u8 sub_80641C0(u8 direction); - +u8 sub_80641C0(u32 direction); void sub_805F378(s16 x, s16 y); -void sub_805F724(struct ObjectEvent *, s16 x, s16 y); +void MoveObjectEventToMapCoords(struct ObjectEvent *objectEvent, s16 x, s16 y); u8 CreateCopySpriteAt(struct Sprite * sprite, s16 x, s16 y, u8 subpriority); u16 GetObjectPaletteTag(u8 paletteIndex); void SetSpritePosToMapCoords(s16 x, s16 y, s16 *x2, s16 *y2); @@ -131,6 +145,21 @@ void SetObjectSubpriorityByZCoord(u8 z, struct Sprite * sprite, u8 offset); void MakeObjectTemplateFromObjectEventGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables); u8 AddCameraObject(u8 trackedSpriteId); void UpdateObjectEventsForCameraUpdate(s16 x, s16 y); +void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *); +void SetMovementDelay(struct Sprite *, s16); +bool8 WaitForMovementDelay(struct Sprite *); +void oamt_npc_ministep_reset(struct Sprite *, u8, u8); +bool8 obj_npc_ministep(struct Sprite *sprite); +void sub_8068BBC(struct Sprite *, u8); +void sub_8068C58(struct Sprite *, u8); +bool8 sub_8068C68(struct Sprite *sprite); +void sub_8068C08(struct Sprite *, u8); +bool8 sub_8068C18(struct Sprite *sprite); +void DoShadowFieldEffect(struct ObjectEvent *); +void sub_8068CA4(struct Sprite *, u8); +bool8 sub_8068CB4(struct Sprite *sprite); +void SetAndStartSpriteAnim(struct Sprite *, u8, u8); +bool8 SpriteAnimEnded(struct Sprite *); // Exported data declarations @@ -138,7 +167,7 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; extern const struct SpritePalette gUnknown_83A5348; extern const struct SpriteTemplate * const gFieldEffectObjectTemplatePointers[]; extern const struct OamData gObjectEventBaseOam_32x32; -extern const struct UCoords16 gUnknown_83A64C8[]; +extern const struct Coords16 sDirectionToVectors[]; extern const u16 gUnknown_8398648[]; extern const u16 gUnknown_8398688[]; extern const u8 gReflectionEffectPaletteMap[]; diff --git a/include/field_camera.h b/include/field_camera.h index 65003bc6f..2d1ce2ce9 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -15,10 +15,9 @@ struct CameraObject s32 y; }; -extern struct CameraObject gFieldCamera; - // Exported RAM declarations +extern struct CameraObject gFieldCamera; extern u16 gTotalCameraPixelOffsetX; extern u16 gTotalCameraPixelOffsetY; diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h index a9ddd4b5c..c2ed96126 100644 --- a/include/field_control_avatar.h +++ b/include/field_control_avatar.h @@ -8,6 +8,8 @@ extern u32 gUnknown_3005078; void RestartWildEncounterImmunitySteps(void); void ClearPoisonStepCounter(void); void SetCableClubWarp(void); +void sub_806DE28(struct ObjectEvent *); void dive_warp(struct MapPosition * pos, u16 behavior); + #endif //GUARD_FIELD_CONTROL_AVATAR_H diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index 831f83fd5..e6e0538f6 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -12,10 +12,12 @@ // Exported RAM declarations // Exported ROM declarations -u8 sub_8154228(void); -bool8 sub_80DCBE0(struct ObjectEvent *); + +u8 CreateWarpArrowSprite(void); void sub_80DC44C(u8, u8); void sub_80DC478(u8, u8); void StartAshFieldEffect(s16, s16, u16, s16); +void sub_80DCBB8(struct ObjectEvent *); +bool8 sub_80DCBE0(struct ObjectEvent *); #endif //GUARD_FIELD_EFFECT_HELPERS_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 3233c2d70..51ae9905f 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -9,8 +9,8 @@ u8 GetPlayerAvatarGenderByGraphicsId(u8); bool8 TestPlayerAvatarFlags(u8); void PlayerGetDestCoords(s16 *, s16 *); u8 GetPlayerFacingDirection(void); -u8 player_get_direction_upper_nybble(void); -u8 player_get_x22(void); +u8 GetPlayerMovementDirection(void); +u8 PlayerGetCopyableMovement(void); void sub_808D074(u8); void sub_805C270(void); diff --git a/include/fieldmap.h b/include/fieldmap.h index 7cccbcc24..439c7c45d 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -11,7 +11,7 @@ #define NUM_PALS_TOTAL 13 #define VIRTUAL_MAP_SIZE 0x2800 -extern struct BackupMapLayout VMap; +extern struct BackupMapLayout gBackupMapLayout; extern const struct MapLayout Route1_Layout; u32 MapGridGetMetatileIdAt(int, int); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 9c380d993..514bebb95 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -207,13 +207,13 @@ struct ObjectEvent /*27*/ u32 hideReflection:1; /*0x04*/ u8 spriteId; /*0x05*/ u8 graphicsId; - /*0x06*/ u8 animPattern; + /*0x06*/ u8 movementType; /*0x07*/ u8 trainerType; /*0x08*/ u8 localId; /*0x09*/ u8 mapNum; /*0x0A*/ u8 mapGroup; - /*0x0B*/ u8 mapobj_unk_0B_0:4; - u8 elevation:4; + /*0x0B*/ u8 currentElevation:4; + u8 previousElevation:4; /*0x0C*/ struct Coords16 initialCoords; /*0x10*/ struct Coords16 currentCoords; /*0x14*/ struct Coords16 previousCoords; @@ -221,14 +221,14 @@ struct ObjectEvent /*0x18*/ u8 movementDirection:4; /*0x19*/ union ObjectEventRange range; /*0x1A*/ u8 fieldEffectSpriteId; - /*0x1B*/ u8 mapobj_unk_1B; - /*0x1C*/ u8 mapobj_unk_1C; + /*0x1B*/ u8 warpArrowSpriteId; + /*0x1C*/ u8 movementActionId; /*0x1D*/ u8 trainerRange_berryTreeId; /*0x1E*/ u8 currentMetatileBehavior; /*0x1F*/ u8 previousMetatileBehavior; - /*0x20*/ u8 mapobj_unk_20; + /*0x20*/ u8 previousMovementDirection; /*0x21*/ u8 directionSequenceIndex; - /*0x22*/ u8 animId; + /*0x22*/ u8 playerCopyableMovement; /*size = 0x24*/ }; @@ -274,7 +274,28 @@ enum enum { - COLLISION_LEDGE_JUMP = 6 + COLLISION_NONE, + COLLISION_OUTSIDE_RANGE, + COLLISION_IMPASSABLE, + COLLISION_ELEVATION_MISMATCH, + COLLISION_OBJECT_EVENT, + COLLISION_STOP_SURFING, + COLLISION_LEDGE_JUMP, + COLLISION_PUSHED_BOULDER, + COLLISION_ROTATING_GATE, + COLLISION_WHEELIE_HOP, + COLLISION_ISOLATED_VERTICAL_RAIL, + COLLISION_ISOLATED_HORIZONTAL_RAIL, + COLLISION_VERTICAL_RAIL, + COLLISION_HORIZONTAL_RAIL, +}; + +// player tile transition states +enum +{ + T_NOT_MOVING, + T_TILE_TRANSITION, + T_TILE_CENTER, // player is on a frame in which they are centered on a tile during which the player either stops or keeps their momentum and keeps going, changing direction if necessary. }; struct PlayerAvatar /* 0x202E858 */ diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h index f3195e6c9..be1dc57bc 100644 --- a/include/metatile_behavior.h +++ b/include/metatile_behavior.h @@ -8,7 +8,7 @@ bool8 MetatileBehavior_IsJumpEast(u8 metatileBehavior); bool8 MetatileBehavior_IsJumpWest(u8 metatileBehavior); bool8 MetatileBehavior_IsJumpNorth(u8 metatileBehavior); bool8 MetatileBehavior_IsJumpSouth(u8 metatileBehavior); -bool8 MetatileBehavior_IsTallGrass(u8 metatileBehavior); +bool8 MetatileBehavior_IsPokeGrass(u8 metatileBehavior); bool8 MetatileBehavior_IsMB21OrSand(u8 metatileBehavior); bool8 MetatileBehavior_IsSandOrDeepSand(u8 metatileBehavior); bool8 MetatileBehavior_ReturnFalse(u8 metatileBehavior); diff --git a/include/overworld.h b/include/overworld.h index fecacf6de..37274dfb4 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -37,7 +37,7 @@ struct LinkPlayerObjectEvent { u8 active; u8 linkPlayerId; - u8 mapObjId; + u8 objEventId; u8 mode; }; @@ -99,7 +99,7 @@ void Overworld_ChangeMusicTo(u16); bool32 IsUpdateLinkStateCBActive(void); -void strange_npc_table_clear(void); +void ClearLinkPlayerObjectEvents(void); const struct MapHeader *Overworld_GetMapHeaderByGroupAndId(u16, u16); void ObjectEventMoveDestCoords(struct ObjectEvent *, u32, s16 *, s16 *); void sub_8086230(void); @@ -145,6 +145,7 @@ void sub_8055864(u8 mapGroup, u8 mapNum); void CB2_Overworld(void); void CB2_OverworldBasic(void); void CB2_NewGame(void); +bool8 IsMapTypeOutdoors(u8 mapType); bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType); void Overworld_ResetStateAfterTeleport(void); diff --git a/include/quest_log.h b/include/quest_log.h index b2645954f..e2e652a81 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -49,6 +49,8 @@ void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx); void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value); void sub_8110840(void *oldSave); void sub_8112F18(u8 windowId); +void sub_811246C(struct Sprite *sprite); +void sub_81124EC(u8 a0, u8 a1, u8 a2, u8 a3); bool8 sub_8111C2C(void); void sub_81128BC(u8 a0); void sub_811278C(u8, u8); diff --git a/include/sprite.h b/include/sprite.h index acf8f719c..c53919159 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -315,6 +315,9 @@ void CopyFromSprites(u8 *dest); u8 SpriteTileAllocBitmapOp(u16 bit, u8 op); void ClearSpriteCopyRequests(void); void ResetAffineAnimData(void); +void sub_8007FFC(struct Sprite* sprite, s16 a2, s16 a3); +void sub_80075C0(struct Sprite *sprite); +s16 AllocSpriteTiles(u16 tileCount); void obj_pos2_update_enable(struct Sprite* sprite, s16 xmod, s16 ymod); #endif //GUARD_SPRITE_H diff --git a/ld_script.txt b/ld_script.txt index 094bf1c88..bde78a522 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -93,6 +93,7 @@ SECTIONS { src/field_camera.o(.text); src/field_door.o(.text); asm/field_player_avatar.o(.text); + src/event_object_movement.o(.text); asm/event_object_movement.o(.text); src/event_object_80688E4.o(.text); /* event_object_movement */ src/field_message_box.o(.text); diff --git a/src/event_object_80688E4.c b/src/event_object_80688E4.c index de4cf358a..746b10f38 100644 --- a/src/event_object_80688E4.c +++ b/src/event_object_80688E4.c @@ -69,32 +69,32 @@ void UnfreezeObjectEvents(void) static void little_step(struct Sprite * sprite, u8 direction) { - sprite->pos1.x += gUnknown_83A64C8[direction].x; - sprite->pos1.y += gUnknown_83A64C8[direction].y; + sprite->pos1.x += sDirectionToVectors[direction].x; + sprite->pos1.y += sDirectionToVectors[direction].y; } static void double_little_steps(struct Sprite * sprite, u8 direction) { - sprite->pos1.x += 2 * gUnknown_83A64C8[direction].x; - sprite->pos1.y += 2 * gUnknown_83A64C8[direction].y; + sprite->pos1.x += 2 * (u16) sDirectionToVectors[direction].x; + sprite->pos1.y += 2 * (u16) sDirectionToVectors[direction].y; } static void triple_little_steps(struct Sprite * sprite, u8 direction) { - sprite->pos1.x += 2 * gUnknown_83A64C8[direction].x + gUnknown_83A64C8[direction].x; - sprite->pos1.y += 2 * gUnknown_83A64C8[direction].y + gUnknown_83A64C8[direction].y; + sprite->pos1.x += 2 * (u16) sDirectionToVectors[direction].x + (u16) sDirectionToVectors[direction].x; + sprite->pos1.y += 2 * (u16) sDirectionToVectors[direction].y + (u16) sDirectionToVectors[direction].y; } static void quad_little_steps(struct Sprite * sprite, u8 direction) { - sprite->pos1.x += 4 * gUnknown_83A64C8[direction].x; - sprite->pos1.y += 4 * gUnknown_83A64C8[direction].y; + sprite->pos1.x += 4 * (u16) sDirectionToVectors[direction].x; + sprite->pos1.y += 4 * (u16) sDirectionToVectors[direction].y; } static void oct_little_steps(struct Sprite * sprite, u8 direction) { - sprite->pos1.x += 8 * gUnknown_83A64C8[direction].x; - sprite->pos1.y += 8 * gUnknown_83A64C8[direction].y; + sprite->pos1.x += 8 * (u16) sDirectionToVectors[direction].x; + sprite->pos1.y += 8 * (u16) sDirectionToVectors[direction].y; } void oamt_npc_ministep_reset(struct Sprite * sprite, u8 direction, u8 speed) @@ -388,12 +388,12 @@ u8 sub_8068DC4(struct Sprite *sprite) #define tDelay data[3] -void SetObjectEventStepTimer(struct Sprite *sprite, s16 delay) +void SetMovementDelay(struct Sprite *sprite, s16 delay) { sprite->tDelay = delay; } -bool8 RunObjectEventStepTimer(struct Sprite *sprite) +bool8 WaitForMovementDelay(struct Sprite *sprite) { sprite->tDelay--; @@ -405,7 +405,7 @@ bool8 RunObjectEventStepTimer(struct Sprite *sprite) #undef tDelay -void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 animNum, u8 animCmdIndex) +void SetAndStartSpriteAnim(struct Sprite *sprite, u8 animNum, u8 animCmdIndex) { sprite->animNum = animNum; sprite->animPaused = FALSE; @@ -491,7 +491,7 @@ void TurnObjectEvent(u8 objectEventId, u8 direction) if (spriteId != MAX_SPRITES) { struct Sprite *sprite = &gSprites[spriteId]; - StartSpriteAnim(sprite, ObjectEventDirectionToImageAnimId(direction)); + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(direction)); } } diff --git a/src/event_object_lock.c b/src/event_object_lock.c index 02f0557f2..a72845ac7 100644 --- a/src/event_object_lock.c +++ b/src/event_object_lock.c @@ -109,5 +109,5 @@ void Script_FacePlayer(void) void Script_ClearHeldMovement(void) { - ObjectEventClearAnimIfSpecialAnimActive(&gObjectEvents[gSelectedObjectEvent]); + ObjectEventClearHeldMovementIfActive(&gObjectEvents[gSelectedObjectEvent]); } diff --git a/src/event_object_movement.c b/src/event_object_movement.c new file mode 100644 index 000000000..7ec8dd8d1 --- /dev/null +++ b/src/event_object_movement.c @@ -0,0 +1,7436 @@ +#include "global.h" +#include "malloc.h" +#include "event_data.h" +#include "event_object_movement.h" +#include "field_camera.h" +#include "field_control_avatar.h" +#include "field_effect.h" +#include "field_effect_helpers.h" +#include "field_ground_effect.h" +#include "field_player_avatar.h" +#include "fieldmap.h" +#include "metatile_behavior.h" +#include "overworld.h" +#include "palette.h" +#include "quest_log.h" +#include "random.h" +#include "script.h" +#include "trainer_see.h" +#include "trig.h" +#include "constants/event_object_movement.h" +#include "constants/event_objects.h" + +#define NUM_FIELD_MAP_OBJECT_TEMPLATES 0x51 + +static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16); +static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *, struct Sprite *); +static u8 GetCollisionInDirection(struct ObjectEvent *, u8); +static u32 state_to_direction(u8, u32, u32); +static void TryEnableObjectEventAnim(struct ObjectEvent *, struct Sprite *); +static void ObjectEventExecHeldMovementAction(struct ObjectEvent *, struct Sprite *); +static void UpdateObjectEventSpriteAnimPause(struct ObjectEvent *, struct Sprite *); +static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *, s16, s16); +static bool8 IsMetatileDirectionallyImpassable(struct ObjectEvent *, s16, s16, u8); +static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *, s16, s16); +static void sub_8067A10(struct ObjectEvent *, struct Sprite *); +static void UpdateObjEventSpriteVisibility(struct ObjectEvent *, struct Sprite *); +static void CreateReflectionEffectSprites(void); +static u8 GetObjectEventIdByLocalId(u8); +static u8 GetObjectEventIdByLocalIdAndMapInternal(u8, u8, u8); +static bool8 GetAvailableObjectEventId(u16, u8, u8, u8 *); +static void SetObjectEventDynamicGraphicsId(struct ObjectEvent *); +static void RemoveObjectEventInternal(struct ObjectEvent *); +static u16 GetObjectEventFlagIdByObjectEventId(u8); +static void UpdateObjectEventVisibility(struct ObjectEvent *, struct Sprite *); +static void MakeObjectTemplateFromObjectEventTemplate(struct ObjectEventTemplate *, struct SpriteTemplate *, const struct SubspriteTable **); +static void GetObjectEventMovingCameraOffset(s16 *, s16 *); +static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8, u8, u8); +static void LoadObjectEventPalette(u16); +static void RemoveObjectEventIfOutsideView(struct ObjectEvent *); +static void sub_805EE3C(u8, s16, s16); +static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8); +static void sub_805EFF4(struct ObjectEvent *); +static u8 sub_805F510(const struct SpritePalette *); +static u8 FindObjectEventPaletteIndexByTag(u16); +static bool8 ObjectEventDoesZCoordMatch(struct ObjectEvent *, u8); +/*static*/ void ObjectCB_CameraObject(struct Sprite *); +/*static*/ void CameraObject_0(struct Sprite *); +/*static*/ void CameraObject_1(struct Sprite *); +/*static*/ void CameraObject_2(struct Sprite *); +static struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8 localId, struct ObjectEventTemplate *templates, u8 count); +static void ClearObjectEventMovement(struct ObjectEvent *, struct Sprite *); +static void ObjectEventSetSingleMovement(struct ObjectEvent *, struct Sprite *, u8); +static u8 sub_805E238(struct ObjectEventTemplate *, u8, s16, s16); +static u8 sub_805E27C(struct ObjectEventTemplate *, s16, s16); +static u8 sub_805E2E8(struct ObjectEventTemplate *, s16, s16); +static void sub_805E384(struct ObjectEventTemplate *); +/*static*/ void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z); +static bool8 MovementType_Disguise_Callback(struct ObjectEvent *, struct Sprite *); +static bool8 MovementType_Hidden_Callback(struct ObjectEvent *, struct Sprite *); +static u8 sub_8063304(struct ObjectEvent *, struct Sprite *); +static u8 sub_8063324(struct ObjectEvent *, struct Sprite *); +static u8 sub_8063344(struct ObjectEvent *, struct Sprite *); +static void sub_8064544(struct ObjectEvent *, struct Sprite *); +u8 MovementActionFunc_x9B_1(struct ObjectEvent *, struct Sprite *); +u8 MovementActionFunc_x9C_1(struct ObjectEvent *, struct Sprite *); +u8 MovementActionFunc_x9D_1(struct ObjectEvent *, struct Sprite *); +u8 MovementActionFunc_x9E_1(struct ObjectEvent *, struct Sprite *); +u8 MovementActionFunc_x08_1(struct ObjectEvent *, struct Sprite *); +u8 MovementActionFunc_x09_1(struct ObjectEvent *, struct Sprite *); +u8 MovementActionFunc_x0A_1(struct ObjectEvent *, struct Sprite *); +u8 MovementActionFunc_x0B_1(struct ObjectEvent *, struct Sprite *); +u8 MovementActionFunc_x0D_1(struct ObjectEvent *, struct Sprite *); +u8 MovementActionFunc_x0C_1(struct ObjectEvent *, struct Sprite *); +u8 MovementActionFunc_x0E_1(struct ObjectEvent *, struct Sprite *); +u8 MovementActionFunc_x0F_1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkNormalRight_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_Jump2Down_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_Jump2Up_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_Jump2Left_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_Jump2Right_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkFastRight_Step1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_xA0_1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_xA1_1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_xA2_1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_xA3_1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_RideWaterCurrentDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_RideWaterCurrentUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_RideWaterCurrentLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_RideWaterCurrentRight_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkFastestDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkFastestUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkFastestLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkFastestRight_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_SlideDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_SlideUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_SlideLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_SlideRight_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_PlayerRunDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_PlayerRunUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_PlayerRunLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_PlayerRunRight_Step1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_x41_1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_x42_1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_x43_1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_x44_1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpSpecialDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpSpecialUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpSpecialLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpSpecialRight_Step1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_xA6_1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_xA7_1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_xA8_1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_xA9_1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpRight_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_JumpInPlaceRightLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_RevealTrainer_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkDownStartAffine_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_WalkDownAffine_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroPopWheelieMoveDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroPopWheelieMoveUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroPopWheelieMoveLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroPopWheelieMoveRight_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieMoveDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieMoveUp_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieMoveLeft_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_AcroWheelieMoveRight_Step1(struct ObjectEvent *, struct Sprite *);; +bool8 MovementActionFunc_x94_1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_x95_1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_x96_1(struct ObjectEvent *, struct Sprite *); +bool8 MovementActionFunc_x97_1(struct ObjectEvent *, struct Sprite *); + +#define movement_type_def(setup, table) \ +static u8 setup##_callback(struct ObjectEvent *, struct Sprite *);\ +void setup(struct Sprite *sprite)\ +{\ + UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, setup##_callback);\ +}\ +static u8 setup##_callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)\ +{\ + return table[sprite->data[1]](objectEvent, sprite);\ +} + +#define movement_type_empty_callback(setup) \ +static u8 setup##_callback(struct ObjectEvent *, struct Sprite *);\ +void setup(struct Sprite *sprite)\ +{\ + UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, setup##_callback);\ +}\ +static u8 setup##_callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)\ +{\ + return 0;\ +} + +extern const u8 gRangedMovementTypes[NUM_FIELD_MAP_OBJECT_TEMPLATES]; +extern const u8 gInitialMovementTypeFacingDirections[NUM_FIELD_MAP_OBJECT_TEMPLATES]; +extern void (*const sMovementTypeCallbacks[])(struct Sprite *); +extern const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM_OBJ_EVENT_GFX]; +extern const struct SpritePalette sObjectEventSpritePalettes[]; +extern const struct PairedPalettes gPlayerReflectionPaletteSets[]; +extern const u8 gReflectionEffectPaletteMap[]; +extern u8 sCurrentReflectionType; +extern u16 sCurrentSpecialObjectPaletteTag; +extern const struct PairedPalettes gSpecialObjectReflectionPaletteSets[]; +extern const struct SpriteTemplate gCameraSpriteTemplate; +extern void (*const gCameraObjectFuncs[3])(struct Sprite *); +extern const u16 *const gObjectPaletteTagSets[]; + +extern u8 (*const gMovementTypeFuncs_WanderAround[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gMovementTypeFuncs_WanderAroundDuplicate[])(struct ObjectEvent *, struct Sprite *); +extern const s16 gMovementDelaysMedium[]; +extern const u8 gStandardDirections[4]; +extern u8 (*const gGetVectorDirectionFuncs[])(s16, s16, s16, s16); +extern u8 (*const gMovementTypeFuncs_LookAround[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gMovementTypeFuncs_WanderUpAndDown[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gUpAndDownDirections[2]; +extern u8 (*const gMovementTypeFuncs_WanderLeftAndRight[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gLeftAndRightDirections[2]; +extern u8 (*const gMovementTypeFuncs_FaceDirection[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gMovementTypeFuncs_FaceDownAndUp[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gMovementTypeFuncs_FaceLeftAndRight[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gMovementTypeFuncs_FaceUpAndLeft[])(struct ObjectEvent *, struct Sprite *); +extern const s16 gMovementDelaysShort[]; +extern const u8 gUpAndLeftDirections[2]; +extern u8 (*const gMovementTypeFuncs_FaceUpAndRight[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gUpAndRightDirections[2]; +extern u8 (*const gMovementTypeFuncs_FaceDownAndLeft[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gDownAndLeftDirections[2]; +extern u8 (*const gMovementTypeFuncs_FaceDownAndRight[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gDownAndRightDirections[2]; +extern u8 (*const gMovementTypeFuncs_FaceDownUpAndLeft[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gDownUpAndLeftDirections[4]; +extern u8 (*const gMovementTypeFuncs_FaceDownUpAndRight[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gDownUpAndRightDirections[4]; +extern u8 (*const gMovementTypeFuncs_FaceUpLeftAndRight[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gUpLeftAndRightDirections[4]; +extern u8 (*const gMovementTypeFuncs_FaceDownLeftAndRight[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gDownLeftAndRightDirections[4]; +extern u8 (*const gMovementTypeFuncs_RotateCounterclockwise[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gCounterclockwiseDirections[5]; +extern u8 (*const gMovementTypeFuncs_RotateClockwise[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gClockwiseDirections[5]; +extern u8 (*const gMovementTypeFuncs_WalkBackAndForth[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gMovementTypeFuncs_WalkSequenceUpRightLeftDown[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gUpRightLeftDownDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceRightLeftDownUp[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gRightLeftDownUpDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceDownUpRightLeft[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gDownUpRightLeftDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceLeftDownUpRight[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gLeftDownUpRightDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceUpLeftRightDown[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gUpLeftRightDownDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceLeftRightDownUp[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gLeftRightDownUpDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceDownUpLeftRight[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gMovementTypeFuncs_WalkSequenceRightDownUpLeft[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gRightDownUpLeftDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceLeftUpDownRight[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gLeftUpDownRightDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceUpDownRightLeft[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gUpDownRightLeftDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceRightLeftUpDown[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gRightLeftUpDownDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceDownRightLeftUp[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gDownRightLeftUpDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceRightUpDownLeft[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gRightUpDownLeftDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceUpDownLeftRight[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gUpDownLeftRightDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceLeftRightUpDown[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gLeftRightUpDownDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceDownLeftRightUp[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gDownLeftRightUpDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceUpLeftDownRight[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gUpLeftDownRightDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceDownRightUpLeft[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gDownRightUpLeftDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceLeftDownRightUp[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gLeftDownRightUpDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceRightUpLeftDown[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gRightUpLeftDownDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceUpRightDownLeft[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gUpRightDownLeftDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceDownLeftUpRight[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gDownLeftUpRightDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceLeftUpRightDown[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gLeftUpRightDownDirections[4]; +extern u8 (*const gMovementTypeFuncs_WalkSequenceRightDownLeftUp[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gRightDownLeftUpDirections[4]; +extern u8 (*const gMovementTypeFuncs_CopyPlayer[])(struct ObjectEvent *, struct Sprite *); +extern bool8 (*const gCopyPlayerMovementFuncs[])(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +extern u8 (*const gMovementTypeFuncs_CopyPlayerInGrass[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gMovementTypeFuncs_Hidden[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gMovementTypeFuncs_WalkInPlace[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gMovementTypeFuncs_WalkSlowlyInPlace[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gMovementTypeFuncs_JogInPlace[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gMovementTypeFuncs_Invisible[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gUnknown_83A63F0[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gUnknown_83A63FC[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gUnknown_83A6404[])(struct ObjectEvent *, struct Sprite *); +extern const u8 gFaceDirectionAnimNums[]; +extern const u8 gMoveDirectionAnimNums[]; +extern const u8 gMoveDirectionFastAnimNums[]; +extern const u8 gMoveDirectionFasterAnimNums[]; +extern const u8 gMoveDirectionFastestAnimNums[]; +extern const u8 gJumpSpecialDirectionAnimNums[]; +extern const u8 gAcroWheelieDirectionAnimNums[]; +extern const u8 gUnrefAnimNums_080634A0[]; +extern const u8 gAcroEndWheelieDirectionAnimNums[]; +extern const u8 gAcroUnusedActionDirectionAnimNums[]; +extern const u8 gAcroWheeliePedalDirectionAnimNums[]; +extern const u8 gFishingDirectionAnimNums[]; +extern const u8 gFishingNoCatchDirectionAnimNums[]; +extern const u8 gFishingBiteDirectionAnimNums[]; +extern const u8 gUnknown_83A648A[]; +extern const u8 gRunningDirectionAnimNums[]; +extern const struct UnkStruct_083A3698 gUnknown_83A3698[]; +extern const u8 gTrainerFacingDirectionMovementTypes[]; +extern bool8 (*const gOppositeDirectionBlockedMetatileFuncs[])(u8); +extern bool8 (*const gDirectionBlockedMetatileFuncs[])(u8); +extern const u8 gFaceDirectionMovementActions[5]; +extern const u8 gWalkSlowMovementActions[5]; +extern const u8 gUnknown_83A64F6[]; +extern const u8 gUnknown_83A64FB[5]; +extern const u8 gUnknown_83A6500[5]; +extern const u8 gUnknown_83A6505[5]; +extern const u8 gUnknown_83A650A[5]; +extern const u8 gUnknown_83A650F[5]; +extern const u8 gUnknown_83A6514[5]; +extern const u8 gUnknown_83A6519[5]; +extern const u8 gUnknown_83A651E[5]; +extern const u8 gUnknown_83A6523[5]; +extern const u8 gUnknown_83A6528[5]; +extern const u8 gUnknown_83A652D[5]; +extern const u8 gUnknown_83A6532[5]; +extern const u8 gUnknown_83A6537[5]; +extern const u8 gUnknown_83A653C[5]; +extern const u8 gUnknown_83A6541[5]; +extern const u8 gUnknown_83A6546[5]; +extern const u8 gUnknown_83A654B[5]; +extern const u8 gUnknown_83A6550[5]; +extern const u8 gUnknown_83A6555[5]; +extern const u8 gUnknown_83A655A[5]; +extern const u8 gUnknown_83A655F[5]; +extern const u8 gUnknown_83A6564[5]; +extern const u8 gUnknown_83A6569[5]; +extern const u8 gUnknown_83A656E[5]; +extern const u8 gUnknown_83A6573[5]; +extern const u8 gUnknown_83A6578[5]; +extern const u8 gUnknown_83A657D[5]; +extern const u8 gUnknown_83A6582[5]; +extern const u8 gUnknown_83A6587[5]; +extern const u8 gUnknown_83A658C[5]; +extern const u8 gOppositeDirections[8]; +extern const u8 gUnknown_83A6599[][4]; +extern const u8 gUnknown_83A65A9[][4]; +extern u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *); +extern u8 (*const gUnknown_83A6884[5])(u8); +extern const s16 gUnknown_83A6958[3]; +extern const s16 gUnknown_83A695E[3]; + +#define OBJ_EVENT_PAL_TAG_NONE 0x11FF + +static void ClearObjectEvent(struct ObjectEvent *objectEvent) +{ + *objectEvent = (struct ObjectEvent){}; + objectEvent->localId = 0xFF; + objectEvent->mapNum = 0xFF; + objectEvent->mapGroup = 0xFF; + objectEvent->movementActionId = 0xFF; +} + +static void ClearAllObjectEvents(void) +{ + u8 i; + + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + ClearObjectEvent(&gObjectEvents[i]); +} + +void ResetObjectEvents(void) +{ + ClearLinkPlayerObjectEvents(); + ClearAllObjectEvents(); + ClearPlayerAvatarInfo(); + CreateReflectionEffectSprites(); +} + +static void CreateReflectionEffectSprites(void) +{ + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 31); + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 0); + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 31); + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 1); + gSprites[spriteId].invisible = TRUE; +} + +u8 GetFirstInactiveObjectEventId(void) +{ + u8 i; + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (!gObjectEvents[i].active) + break; + } + + return i; +} + +u8 GetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId) +{ + if (localId < OBJ_EVENT_ID_PLAYER) + { + return GetObjectEventIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId); + } + return GetObjectEventIdByLocalId(localId); +} + +bool8 TryGetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId, u8 *objectEventId) +{ + *objectEventId = GetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroupId); + if (*objectEventId == OBJECT_EVENTS_COUNT) + return TRUE; + else + return FALSE; +} + +u8 GetObjectEventIdByXY(s16 x, s16 y) +{ + u8 i; + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].active && gObjectEvents[i].currentCoords.x == x && gObjectEvents[i].currentCoords.y == y) + break; + } + + return i; +} + +static u8 GetObjectEventIdByLocalIdAndMapInternal(u8 localId, u8 mapNum, u8 mapGroupId) +{ + u8 i; + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].active && gObjectEvents[i].localId == localId && gObjectEvents[i].mapNum == mapNum && gObjectEvents[i].mapGroup == mapGroupId) + return i; + } + + return OBJECT_EVENTS_COUNT; +} + +static u8 GetObjectEventIdByLocalId(u8 localId) +{ + u8 i; + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].active && gObjectEvents[i].localId == localId) + return i; + } + + return OBJECT_EVENTS_COUNT; +} + +#ifdef NONMATCHING +static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template, u8 mapNum, u8 mapGroup) +{ + struct ObjectEvent *objectEvent; + struct ObjectEventTemplate *template2 = template; + u8 objectEventId; + s16 x; + s16 y; + s16 var; + s16 x2; + s16 y2; + s16 elevation2; + + if(template->unk2 == 0xFF) + { + var = 1; + mapNum = template2->trainerType; + mapGroup = template2->trainerRange_berryTreeId & 0xFF; + elevation2 = template2->elevation; + x = template2->x; + y = template2->y; + x2 = template2->x; + y2 = template2->y; + template = &Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->events->objectEvents[elevation2 - 1]; + } + if (GetAvailableObjectEventId(template->localId, mapNum, mapGroup, &objectEventId) + && !sub_805E238(template, var, x2, y2)) + return OBJECT_EVENTS_COUNT; + objectEvent = &gObjectEvents[objectEventId]; + ClearObjectEvent(objectEvent); + if (var) + { + x = x2 * 0x10000 + 0x7000; + y = y2 * 0x10000 + 0x7000; + } + else + { + x = x2 + 7; + y = y2 + 7; + } + objectEvent->active = TRUE; + objectEvent->triggerGroundEffectsOnMove = TRUE; + objectEvent->graphicsId = template->graphicsId; + objectEvent->movementType = template->movementType; + objectEvent->localId = template->localId; + objectEvent->mapNum = mapNum; + //objectEvent++; objectEvent--; + objectEvent->mapGroup = mapGroup; + objectEvent->initialCoords.x = x; + objectEvent->initialCoords.y = y; + objectEvent->currentCoords.x = x; + objectEvent->currentCoords.y = y; + objectEvent->previousCoords.x = x; + objectEvent->previousCoords.y = y; + objectEvent->currentElevation = template->elevation; + objectEvent->previousElevation = template->elevation; + objectEvent->range.as_nybbles.x = template->movementRangeX; + objectEvent->range.as_nybbles.y = template->movementRangeY; + objectEvent->trainerType = template->trainerType; + objectEvent->trainerRange_berryTreeId = template->trainerRange_berryTreeId; + objectEvent->previousMovementDirection = gInitialMovementTypeFacingDirections[template->movementType]; + SetObjectEventDirection(objectEvent, objectEvent->previousMovementDirection); + SetObjectEventDynamicGraphicsId(objectEvent); +/*#ifndef NONMATCHING + asm("":::"r5", "r6"); +#endif*/ + if (gRangedMovementTypes[objectEvent->movementType]) + { + if (objectEvent->range.as_nybbles.x == 0) + { + objectEvent->range.as_nybbles.x++; + } + if (objectEvent->range.as_nybbles.y == 0) + { + objectEvent->range.as_nybbles.y++; + } + } + return objectEventId; +} +#else +NAKED +static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template, u8 mapNum, u8 mapGroup) +{ + asm_unified("\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0xC\n\ + adds r5, r0, 0\n\ + lsls r1, 24\n\ + lsrs r7, r1, 24\n\ + lsls r2, 24\n\ + lsrs r6, r2, 24\n\ + movs r0, 0\n\ + mov r10, r0\n\ + mov r8, r0\n\ + mov r9, r0\n\ + movs r1, 0\n\ + str r1, [sp, 0x4]\n\ + str r0, [sp, 0x8]\n\ + ldrb r0, [r5, 0x2]\n\ + cmp r0, 0xFF\n\ + bne _0805E0DA\n\ + movs r1, 0x1\n\ + mov r10, r1\n\ + ldrb r4, [r5, 0x8]\n\ + ldrb r7, [r5, 0xC]\n\ + ldrb r6, [r5, 0xE]\n\ + ldrh r0, [r5, 0x4]\n\ + mov r8, r0\n\ + ldrh r5, [r5, 0x6]\n\ + mov r9, r5\n\ + mov r1, r8\n\ + str r1, [sp, 0x4]\n\ + mov r0, r9\n\ + str r0, [sp, 0x8]\n\ + adds r0, r6, 0\n\ + adds r1, r7, 0\n\ + bl Overworld_GetMapHeaderByGroupAndId\n\ + ldr r1, [r0, 0x4]\n\ + lsls r0, r4, 1\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + subs r0, 0x18\n\ + ldr r1, [r1, 0x4]\n\ + adds r5, r1, r0\n\ + _0805E0DA:\n\ + ldrb r0, [r5]\n\ + adds r1, r7, 0\n\ + adds r2, r6, 0\n\ + mov r3, sp\n\ + bl GetAvailableObjectEventId\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0805E106\n\ + ldr r1, [sp, 0x4]\n\ + lsls r2, r1, 16\n\ + asrs r2, 16\n\ + ldr r0, [sp, 0x8]\n\ + lsls r3, r0, 16\n\ + asrs r3, 16\n\ + adds r0, r5, 0\n\ + mov r1, r10\n\ + bl sub_805E238\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0805E10A\n\ + _0805E106:\n\ + movs r0, 0x10\n\ + b _0805E220\n\ + _0805E10A:\n\ + mov r0, sp\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + ldr r1, _0805E13C @ =gObjectEvents\n\ + adds r4, r0, r1\n\ + adds r0, r4, 0\n\ + bl ClearObjectEvent\n\ + mov r1, r10\n\ + cmp r1, 0\n\ + beq _0805E140\n\ + mov r1, r8\n\ + lsls r0, r1, 16\n\ + movs r1, 0xE0\n\ + lsls r1, 11\n\ + adds r0, r1\n\ + lsrs r3, r0, 16\n\ + mov r1, r9\n\ + lsls r0, r1, 16\n\ + movs r1, 0xE0\n\ + lsls r1, 11\n\ + adds r0, r1\n\ + b _0805E14E\n\ + .align 2, 0\n\ + _0805E13C: .4byte gObjectEvents\n\ + _0805E140:\n\ + ldrh r0, [r5, 0x4]\n\ + adds r0, 0x7\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + ldrh r0, [r5, 0x6]\n\ + adds r0, 0x7\n\ + lsls r0, 16\n\ + _0805E14E:\n\ + lsrs r2, r0, 16\n\ + ldrb r0, [r4]\n\ + movs r1, 0x1\n\ + orrs r0, r1\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + strb r0, [r4]\n\ + ldrb r0, [r5, 0x1]\n\ + strb r0, [r4, 0x5]\n\ + ldrb r0, [r5, 0x9]\n\ + strb r0, [r4, 0x6]\n\ + ldrb r0, [r5]\n\ + strb r0, [r4, 0x8]\n\ + strb r7, [r4, 0x9]\n\ + strb r6, [r4, 0xA]\n\ + strh r3, [r4, 0xC]\n\ + strh r2, [r4, 0xE]\n\ + strh r3, [r4, 0x10]\n\ + strh r2, [r4, 0x12]\n\ + strh r3, [r4, 0x14]\n\ + strh r2, [r4, 0x16]\n\ + ldrb r0, [r5, 0x8]\n\ + movs r6, 0xF\n\ + adds r1, r6, 0\n\ + ands r1, r0\n\ + ldrb r2, [r4, 0xB]\n\ + movs r0, 0x10\n\ + negs r0, r0\n\ + mov r8, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r4, 0xB]\n\ + ldrb r1, [r5, 0x8]\n\ + lsls r1, 4\n\ + ands r0, r6\n\ + orrs r0, r1\n\ + strb r0, [r4, 0xB]\n\ + ldrb r1, [r5, 0xA]\n\ + lsls r1, 28\n\ + movs r0, 0xF\n\ + mov r9, r0\n\ + lsrs r1, 28\n\ + ldrb r2, [r4, 0x19]\n\ + mov r0, r8\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r4, 0x19]\n\ + ldrb r1, [r5, 0xA]\n\ + lsrs r1, 4\n\ + lsls r1, 4\n\ + ands r0, r6\n\ + orrs r0, r1\n\ + strb r0, [r4, 0x19]\n\ + ldrh r0, [r5, 0xC]\n\ + strb r0, [r4, 0x7]\n\ + ldrh r0, [r5, 0xE]\n\ + strb r0, [r4, 0x1D]\n\ + ldr r1, _0805E230 @ =gInitialMovementTypeFacingDirections\n\ + ldrb r0, [r5, 0x9]\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + adds r0, r4, 0\n\ + adds r0, 0x20\n\ + strb r1, [r0]\n\ + ldrb r1, [r0]\n\ + adds r0, r4, 0\n\ + bl SetObjectEventDirection\n\ + adds r0, r4, 0\n\ + bl SetObjectEventDynamicGraphicsId\n\ + ldr r1, _0805E234 @ =gRangedMovementTypes\n\ + ldrb r0, [r4, 0x6]\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _0805E21C\n\ + ldrb r2, [r4, 0x19]\n\ + adds r0, r6, 0\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + bne _0805E204\n\ + lsls r0, r2, 28\n\ + lsrs r0, 28\n\ + adds r0, 0x1\n\ + mov r1, r9\n\ + ands r0, r1\n\ + mov r1, r8\n\ + ands r1, r2\n\ + orrs r1, r0\n\ + strb r1, [r4, 0x19]\n\ + _0805E204:\n\ + ldrb r2, [r4, 0x19]\n\ + movs r0, 0xF0\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + bne _0805E21C\n\ + lsrs r1, r2, 4\n\ + adds r1, 0x1\n\ + lsls r1, 4\n\ + adds r0, r6, 0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r4, 0x19]\n\ + _0805E21C:\n\ + mov r0, sp\n\ + ldrb r0, [r0]\n\ + _0805E220:\n\ + add sp, 0xC\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ + _0805E230: .4byte gInitialMovementTypeFacingDirections\n\ + _0805E234: .4byte gRangedMovementTypes\n\ + "); +} +#endif + +static u8 sub_805E238(struct ObjectEventTemplate *template, u8 var, s16 x, s16 y) +{ + if (var) + { + if (!sub_805E27C(template, x, y)) + return 0; + } + if (!sub_805E2E8(template, x, y)) + return 0; + + return 1; +} + +static u8 sub_805E27C(struct ObjectEventTemplate *template, s16 x, s16 y) +{ + if ((u8) (template->graphicsId - OBJ_EVENT_GFX_CUT_TREE) > 1) + return 1; + + if (gSaveBlock1Ptr->pos.x < x) + { + if (gSaveBlock1Ptr->pos.x + 8 < x) + return 1; + + if (gSaveBlock1Ptr->pos.y - 6 <= y && gSaveBlock1Ptr->pos.y + 6 >= y) + return 0; + } + else + { + if (gSaveBlock1Ptr->pos.x - 8 > x) + return 1; + + if (gSaveBlock1Ptr->pos.y - 6 <= y && gSaveBlock1Ptr->pos.y + 6 >= y) + return 0; + } + + return 1; +} + +static u8 sub_805E2E8(struct ObjectEventTemplate *template, s16 x, s16 y) +{ + s32 x2, y2; + + if (!IsMapTypeOutdoors(GetCurrentMapType())) + return 1; + + x2 = gBackupMapLayout.Xsize - 16; + y2 = gBackupMapLayout.Ysize - 15; + + if ((u8) (template->graphicsId - OBJ_EVENT_GFX_CUT_TREE) > 1) + return 1; + + if (!gSaveBlock1Ptr->pos.x) + { + if (template->x <= 8) + { + sub_805E384(template); + return 0; + } + } + + if (gSaveBlock1Ptr->pos.x == x2) + { + if (template->x >= x2 - 8) + { + sub_805E384(template); + return 0; + } + } + + if (!gSaveBlock1Ptr->pos.y) + { + if (template->y <= 6) + { + sub_805E384(template); + return 0; + } + } + + if (gSaveBlock1Ptr->pos.y == y2) + { + if (template->y >= y2 - 6) + { + sub_805E384(template); + return 0; + } + } + + return 1; +} + +static void sub_805E384(struct ObjectEventTemplate *template) +{ + if ((u16) (template->flagId - 17) < 15) + FlagSet(template->flagId); +} + +u8 Unref_TryInitLocalObjectEvent(u8 localId) +{ + u8 i; + u8 objectEventCount; + struct ObjectEventTemplate *template; + + if (gMapHeader.events == NULL) + return OBJECT_EVENTS_COUNT; + + objectEventCount = gMapHeader.events->objectEventCount; + + for (i = 0; i < objectEventCount; i++) + { + template = &gSaveBlock1Ptr->objectEventTemplates[i]; + if (template->localId == localId && !FlagGet(template->flagId)) + return InitObjectEventStateFromTemplate(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + } + + return OBJECT_EVENTS_COUNT; +} + +static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 *objectEventId) +// Looks for an empty slot. +// Returns FALSE and the location of the available slot +// in *objectEventId. +// If no slots are available, or if the object is already +// loaded, returns TRUE. +{ + u8 i = 0; + + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (!gObjectEvents[i].active) + break; + if (gObjectEvents[i].localId == localId && gObjectEvents[i].mapNum == mapNum && gObjectEvents[i].mapGroup == mapGroup) + return TRUE; + } + if (i >= OBJECT_EVENTS_COUNT) + return TRUE; + *objectEventId = i; + do + { + if (gObjectEvents[i].active && gObjectEvents[i].localId == localId && gObjectEvents[i].mapNum == mapNum && gObjectEvents[i].mapGroup == mapGroup) + return TRUE; + i++; + } while (i < OBJECT_EVENTS_COUNT); + return FALSE; +} + +static void RemoveObjectEvent(struct ObjectEvent *objectEvent) +{ + objectEvent->active = FALSE; + RemoveObjectEventInternal(objectEvent); +} + +void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +{ + u8 objectEventId; + if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) + { + FlagSet(GetObjectEventFlagIdByObjectEventId(objectEventId)); + RemoveObjectEvent(&gObjectEvents[objectEventId]); + } +} + +static void RemoveObjectEventInternal(struct ObjectEvent *objectEvent) +{ + struct SpriteFrameImage image; + image.size = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->size; + gSprites[objectEvent->spriteId].images = ℑ + DestroySprite(&gSprites[objectEvent->spriteId]); +} + +void Unref_RemoveAllObjectEventsExceptPlayer(void) +{ + u8 i; + + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (i != gPlayerAvatar.objectEventId) + RemoveObjectEvent(&gObjectEvents[i]); + } +} + +static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) +{ + u8 spriteId; + u8 objectEventId; + struct Sprite *sprite; + struct ObjectEvent *objectEvent; + const struct ObjectEventGraphicsInfo *graphicsInfo; + + objectEventId = InitObjectEventStateFromTemplate(objectEventTemplate, mapNum, mapGroup); + if (objectEventId == OBJECT_EVENTS_COUNT) + return OBJECT_EVENTS_COUNT; + + objectEvent = &gObjectEvents[objectEventId]; + graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + if (graphicsInfo->paletteSlot == 0) + { + LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + } + else if (graphicsInfo->paletteSlot == 10) + { + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + } + + if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) + objectEvent->invisible = TRUE; + + *(u16 *)&spriteTemplate->paletteTag = 0xFFFF; + spriteId = CreateSprite(spriteTemplate, 0, 0, 0); + if (spriteId == MAX_SPRITES) + { + gObjectEvents[objectEventId].active = FALSE; + return OBJECT_EVENTS_COUNT; + } + + sprite = &gSprites[spriteId]; + sub_8063AD4(objectEvent->currentCoords.x + cameraX, objectEvent->currentCoords.y + cameraY, &sprite->pos1.x, &sprite->pos1.y); + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + sprite->pos1.x += 8; + sprite->pos1.y += 16 + sprite->centerToCornerVecY; + sprite->oam.paletteNum = graphicsInfo->paletteSlot; + sprite->coordOffsetEnabled = TRUE; + sprite->data[0] = objectEventId; + objectEvent->spriteId = spriteId; + objectEvent->inanimate = graphicsInfo->inanimate; + if (!objectEvent->inanimate) + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objectEvent->facingDirection)); + + SetObjectSubpriorityByZCoord(objectEvent->previousElevation, sprite, 1); + UpdateObjectEventVisibility(objectEvent, sprite); + return objectEventId; +} + +static u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) +{ + u8 objectEventId; + struct SpriteTemplate spriteTemplate; + struct SpriteFrameImage spriteFrameImage; + const struct ObjectEventGraphicsInfo *graphicsInfo; + const struct SubspriteTable *subspriteTables = NULL; + + graphicsInfo = GetObjectEventGraphicsInfo(objectEventTemplate->graphicsId); + MakeObjectTemplateFromObjectEventTemplate(objectEventTemplate, &spriteTemplate, &subspriteTables); + spriteFrameImage.size = graphicsInfo->size; + spriteTemplate.images = &spriteFrameImage; + objectEventId = TrySetupObjectEventSprite(objectEventTemplate, &spriteTemplate, mapNum, mapGroup, cameraX, cameraY); + if (objectEventId == OBJECT_EVENTS_COUNT) + return OBJECT_EVENTS_COUNT; + + gSprites[gObjectEvents[objectEventId].spriteId].images = graphicsInfo->images; + if (subspriteTables) + SetSubspriteTables(&gSprites[gObjectEvents[objectEventId].spriteId], subspriteTables); + + return objectEventId; +} + +u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *objectEventTemplate) +{ + s16 cameraX; + s16 cameraY; + + GetObjectEventMovingCameraOffset(&cameraX, &cameraY); + return TrySpawnObjectEventTemplate(objectEventTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); +} + +int SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z) +{ + struct ObjectEventTemplate objectEventTemplate; + + x -= 7; + y -= 7; + objectEventTemplate.localId = localId; + objectEventTemplate.graphicsId = graphicsId; + objectEventTemplate.unk2 = 0; + objectEventTemplate.x = x; + objectEventTemplate.y = y; + objectEventTemplate.elevation = z; + objectEventTemplate.movementType = movementBehavior; + objectEventTemplate.movementRangeX = 0; + objectEventTemplate.movementRangeY = 0; + objectEventTemplate.trainerType = 0; + objectEventTemplate.trainerRange_berryTreeId = 0; + return SpawnSpecialObjectEvent(&objectEventTemplate); +} + +u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup) +{ + struct ObjectEventTemplate *objectEventTemplate; + s16 cameraX, cameraY; + + objectEventTemplate = GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup); + if (!objectEventTemplate) + return OBJECT_EVENTS_COUNT; + + GetObjectEventMovingCameraOffset(&cameraX, &cameraY); + return TrySpawnObjectEventTemplate(objectEventTemplate, mapNum, mapGroup, cameraX, cameraY); +} + +void MakeObjectTemplateFromObjectEventGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables) +{ + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); + + spriteTemplate->tileTag = graphicsInfo->tileTag; + spriteTemplate->paletteTag = graphicsInfo->paletteTag1; + spriteTemplate->oam = graphicsInfo->oam; + spriteTemplate->anims = graphicsInfo->anims; + spriteTemplate->images = graphicsInfo->images; + spriteTemplate->affineAnims = graphicsInfo->affineAnims; + + do + { + if (ScriptContext1_IsScriptSetUp() != TRUE && sub_8112CAC() == TRUE) + spriteTemplate->callback = sub_811246C; + else + spriteTemplate->callback = callback; + } while(0); + + *subspriteTables = graphicsInfo->subspriteTables; +} + +static void MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables) +{ + MakeObjectTemplateFromObjectEventGraphicsInfo(graphicsId, sMovementTypeCallbacks[callbackIndex], spriteTemplate, subspriteTables); +} + +static void MakeObjectTemplateFromObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables) +{ + MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex(objectEventTemplate->graphicsId, objectEventTemplate->movementType, spriteTemplate, subspriteTables); +} + +u8 AddPseudoObjectEvent(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority) +{ + struct SpriteTemplate spriteTemplate; + const struct SubspriteTable *subspriteTables; + u8 spriteId; + + MakeObjectTemplateFromObjectEventGraphicsInfo(graphicsId, callback, &spriteTemplate, &subspriteTables); + if (spriteTemplate.paletteTag != 0xFFFF) + { + LoadObjectEventPalette(spriteTemplate.paletteTag); + } + spriteId = CreateSprite(&spriteTemplate, x, y, subpriority); + if (spriteId != MAX_SPRITES && subspriteTables != NULL) + { + SetSubspriteTables(&gSprites[spriteId], subspriteTables); + gSprites[spriteId].subspriteMode = SUBSPRITES_IGNORE_PRIORITY; + } + return spriteId; +} + +u8 sprite_new(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction) +{ + u8 spriteId; + struct Sprite *sprite; + struct SpriteTemplate spriteTemplate; + const struct SubspriteTable *subspriteTables; + const struct ObjectEventGraphicsInfo *graphicsInfo; + + graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); + MakeObjectTemplateFromObjectEventGraphicsInfo(graphicsId, UpdateObjectEventSpriteSubpriorityAndVisibility, &spriteTemplate, &subspriteTables); + *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; + x += 7; + y += 7; + sub_8063BC4(&x, &y, 8, 16); + spriteId = CreateSpriteAtEnd(&spriteTemplate, x, y, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + sprite->pos1.y += sprite->centerToCornerVecY; + sprite->oam.paletteNum = graphicsInfo->paletteSlot; + sprite->coordOffsetEnabled = TRUE; + sprite->data[0] = a1; + sprite->data[1] = z; + if (graphicsInfo->paletteSlot == 10) + { + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + } + + if (subspriteTables != NULL) + { + SetSubspriteTables(sprite, subspriteTables); + sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY; + } + InitObjectPriorityByZCoord(sprite, z); + SetObjectSubpriorityByZCoord(z, sprite, 1); + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(direction)); + } + return spriteId; +} + +u8 sub_805EB44(u8 graphicsId, u8 a1, s16 x, s16 y) +{ + u8 spriteId; + struct Sprite *sprite; + struct SpriteTemplate spriteTemplate; + const struct SubspriteTable *subspriteTables; + const struct ObjectEventGraphicsInfo *graphicsInfo; + + graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); + MakeObjectTemplateFromObjectEventGraphicsInfo(graphicsId, SpriteCallbackDummy, &spriteTemplate, &subspriteTables); + *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; + + spriteId = CreateSpriteAtEnd(&spriteTemplate, x, y, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + sprite->pos1.y += sprite->centerToCornerVecY; + sprite->oam.paletteNum = graphicsInfo->paletteSlot; + sprite->data[0] = a1; + if (graphicsInfo->paletteSlot == 10) + { + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + } + + if (subspriteTables != NULL) + { + SetSubspriteTables(sprite, subspriteTables); + sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY; + } + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_SOUTH)); + } + return spriteId; +} + +void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) +{ + u8 i; + u8 objectCount; + + if (gMapHeader.events != NULL) + { + s16 left = gSaveBlock1Ptr->pos.x - 2; + s16 right = gSaveBlock1Ptr->pos.x + 17; + s16 top = gSaveBlock1Ptr->pos.y; + s16 bottom = gSaveBlock1Ptr->pos.y + 16; + + objectCount = gMapHeader.events->objectEventCount; + + for (i = 0; i < objectCount; i++) + { + struct ObjectEventTemplate *template = &gSaveBlock1Ptr->objectEventTemplates[i]; + s16 npcX = template->x + 7; + s16 npcY = template->y + 7; + + if (top <= npcY && bottom >= npcY && left <= npcX && right >= npcX + && !FlagGet(template->flagId)) + TrySpawnObjectEventTemplate(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); + } + } +} + +void RemoveObjectEventsOutsideView(void) +{ + u8 i, j; + bool8 isActiveLinkPlayer; + + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + for (j = 0, isActiveLinkPlayer = FALSE; j < ARRAY_COUNT(gLinkPlayerObjectEvents); j++) + { + if (gLinkPlayerObjectEvents[j].active && i == gLinkPlayerObjectEvents[j].objEventId) + isActiveLinkPlayer = TRUE; + } + if (!isActiveLinkPlayer) + { + struct ObjectEvent *objectEvent = &gObjectEvents[i]; + + if (objectEvent->active && !objectEvent->isPlayer) + RemoveObjectEventIfOutsideView(objectEvent); + } + } +} + +static void RemoveObjectEventIfOutsideView(struct ObjectEvent *objectEvent) +{ + s16 left = gSaveBlock1Ptr->pos.x - 2; + s16 right = gSaveBlock1Ptr->pos.x + 17; + s16 top = gSaveBlock1Ptr->pos.y; + s16 bottom = gSaveBlock1Ptr->pos.y + 16; + + if (objectEvent->currentCoords.x >= left && objectEvent->currentCoords.x <= right + && objectEvent->currentCoords.y >= top && objectEvent->currentCoords.y <= bottom) + return; + if (objectEvent->initialCoords.x >= left && objectEvent->initialCoords.x <= right + && objectEvent->initialCoords.y >= top && objectEvent->initialCoords.y <= bottom) + return; + RemoveObjectEvent(objectEvent); +} + +void sub_805EDF0(s16 x, s16 y) +{ + u8 i; + + ClearPlayerAvatarInfo(); + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].active) + { + sub_805EE3C(i, x, y); + } + } + CreateReflectionEffectSprites(); +} + +static void sub_805EE3C(u8 objectEventId, s16 x, s16 y) +{ + u8 spriteId; + struct Sprite *sprite; + struct ObjectEvent *objectEvent; + struct SpriteTemplate spriteTemplate; + struct SpriteFrameImage spriteFrameImage; + const struct SubspriteTable *subspriteTables; + const struct ObjectEventGraphicsInfo *graphicsInfo; + +#define i spriteId + for (i = 0; i < ARRAY_COUNT(gLinkPlayerObjectEvents); i++) + { + if (gLinkPlayerObjectEvents[i].active && objectEventId == gLinkPlayerObjectEvents[i].objEventId) + { + return; + } + } +#undef i + + objectEvent = &gObjectEvents[objectEventId]; + asm("":::"r5"); + subspriteTables = NULL; + graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + spriteFrameImage.size = graphicsInfo->size; + MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex(objectEvent->graphicsId, objectEvent->movementType, &spriteTemplate, &subspriteTables); + spriteTemplate.images = &spriteFrameImage; + *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; + if (graphicsInfo->paletteSlot == 0) + { + LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + } + if (graphicsInfo->paletteSlot > 9) + { + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + } + *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; + spriteId = CreateSprite(&spriteTemplate, 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sub_8063AD4(x + objectEvent->currentCoords.x, y + objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y); + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + sprite->pos1.x += 8; + sprite->pos1.y += 16 + sprite->centerToCornerVecY; + sprite->images = graphicsInfo->images; + if (objectEvent->movementType == MOVEMENT_TYPE_PLAYER) + { + SetPlayerAvatarObjectEventIdAndObjectId(objectEventId, spriteId); + objectEvent->warpArrowSpriteId = CreateWarpArrowSprite(); + } + if (subspriteTables != NULL) + { + SetSubspriteTables(sprite, subspriteTables); + } + sprite->oam.paletteNum = graphicsInfo->paletteSlot; + sprite->coordOffsetEnabled = TRUE; + sprite->data[0] = objectEventId; + objectEvent->spriteId = spriteId; + if (!objectEvent->inanimate && objectEvent->movementType != MOVEMENT_TYPE_PLAYER) + { + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objectEvent->facingDirection)); + } + sub_805EFF4(objectEvent); + SetObjectSubpriorityByZCoord(objectEvent->previousElevation, sprite, 1); + } +} + +static void sub_805EFF4(struct ObjectEvent *objectEvent) +{ + objectEvent->singleMovementActive = FALSE; + objectEvent->triggerGroundEffectsOnMove = TRUE; + objectEvent->hasShadow = FALSE; + objectEvent->hasReflection = FALSE; + objectEvent->inShortGrass = FALSE; + objectEvent->inShallowFlowingWater = FALSE; + objectEvent->inSandPile = FALSE; + objectEvent->inHotSprings = FALSE; + ObjectEventClearHeldMovement(objectEvent); +} + +static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteId) +{ + gPlayerAvatar.objectEventId = objectEventId; + gPlayerAvatar.spriteId = spriteId; + gPlayerAvatar.gender = GetPlayerAvatarGenderByGraphicsId(gObjectEvents[objectEventId].graphicsId); + SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, 0x20); +} + +void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) +{ + const struct ObjectEventGraphicsInfo *graphicsInfo; + struct Sprite *sprite; + u8 var; + u8 var3; + + graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); + sprite = &gSprites[objectEvent->spriteId]; + if (graphicsInfo->paletteSlot == 0) + { + PatchObjectPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + } + if (graphicsInfo->paletteSlot == 10) + { + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + } + + var = sprite->images->size / TILE_SIZE_4BPP; + if (!sprite->usingSheet) + { + sub_80075C0(sprite); + } + sprite->oam.shape = graphicsInfo->oam->shape; + sprite->oam.size = graphicsInfo->oam->size; + sprite->images = graphicsInfo->images; + sprite->anims = graphicsInfo->anims; + sprite->subspriteTables = graphicsInfo->subspriteTables; + sprite->oam.paletteNum = graphicsInfo->paletteSlot; + if (!sprite->usingSheet) + { + s32 var2; + var3 = sprite->images->size / TILE_SIZE_4BPP; + var2 = AllocSpriteTiles(var3); + if (var2 == -1) + { + var2 = AllocSpriteTiles(var); + } + sprite->oam.tileNum = var2; + } + objectEvent->inanimate = graphicsInfo->inanimate; + objectEvent->graphicsId = graphicsId; + SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y); + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + sprite->pos1.x += 8; + sprite->pos1.y += 16 + sprite->centerToCornerVecY; + if (objectEvent->trackedByCamera) + { + CameraObjectReset1(); + } +} + +void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId) +{ + u8 objectEventId; + + if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) + { + ObjectEventSetGraphicsId(&gObjectEvents[objectEventId], graphicsId); + } +} + +void ObjectEventTurn(struct ObjectEvent *objectEvent, u8 direction) +{ + SetObjectEventDirection(objectEvent, direction); + if (!objectEvent->inanimate) + { + StartSpriteAnim(&gSprites[objectEvent->spriteId], GetFaceDirectionAnimNum(objectEvent->facingDirection)); + SeekSpriteAnim(&gSprites[objectEvent->spriteId], 0); + } +} + +void ObjectEventTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction) +{ + u8 objectEventId; + + if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) + { + ObjectEventTurn(&gObjectEvents[objectEventId], direction); + } +} + +void PlayerObjectTurn(struct PlayerAvatar *playerAvatar, u8 direction) +{ + ObjectEventTurn(&gObjectEvents[playerAvatar->objectEventId], direction); +} + +const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) +{ + if (graphicsId >= OBJ_EVENT_GFX_VARS) + graphicsId = VarGetObjectEventGraphicsId(graphicsId - OBJ_EVENT_GFX_VARS); + + if (graphicsId >= 152) + graphicsId = 16; + + return gObjectEventGraphicsInfoPointers[graphicsId]; +} + +static void SetObjectEventDynamicGraphicsId(struct ObjectEvent *objectEvent) +{ + if (objectEvent->graphicsId >= OBJ_EVENT_GFX_VARS) + { + objectEvent->graphicsId = VarGetObjectEventGraphicsId(objectEvent->graphicsId - OBJ_EVENT_GFX_VARS); + } +} + +void npc_by_local_id_and_map_set_field_1_bit_x20(u8 localId, u8 mapNum, u8 mapGroup, u8 state) +{ + u8 objectEventId; + + if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) + { + gObjectEvents[objectEventId].invisible = state; + } +} + +void ObjectEventGetLocalIdAndMap(struct ObjectEvent *objectEvent, void *localId, void *mapNum, void *mapGroup) +{ + *(u8*)(localId) = objectEvent->localId; + *(u8*)(mapNum) = objectEvent->mapNum; + *(u8*)(mapGroup) = objectEvent->mapGroup; +} + +void sub_805F378(s16 x, s16 y) +{ + u8 objectEventId; + struct ObjectEvent *objectEvent; + + objectEventId = GetObjectEventIdByXY(x, y); + if (objectEventId != OBJECT_EVENTS_COUNT) + { + objectEvent = &gObjectEvents[objectEventId]; + objectEvent->triggerGroundEffectsOnMove = TRUE; + } +} + +void sub_805F3A8(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority) +{ + u8 objectEventId; + struct ObjectEvent *objectEvent; + struct Sprite *sprite; + + if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) + { + objectEvent = &gObjectEvents[objectEventId]; + sprite = &gSprites[objectEvent->spriteId]; + objectEvent->fixedPriority = TRUE; + sprite->subpriority = subpriority; + } +} + +void sub_805F400(u8 localId, u8 mapNum, u8 mapGroup) +{ + u8 objectEventId; + struct ObjectEvent *objectEvent; + + if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) + { + objectEvent = &gObjectEvents[objectEventId]; + objectEvent->fixedPriority = FALSE; + objectEvent->triggerGroundEffectsOnMove = TRUE; + } +} + +void sub_808E82C(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) +{ + u8 objectEventId; + struct Sprite *sprite; + + if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) + { + sprite = &gSprites[gObjectEvents[objectEventId].spriteId]; + sprite->pos2.x = x; + sprite->pos2.y = y; + } +} + +void FreeAndReserveObjectSpritePalettes(void) +{ + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 12; +} + +static void LoadObjectEventPalette(u16 paletteTag) +{ + u16 i = FindObjectEventPaletteIndexByTag(paletteTag); + + if (i != OBJ_EVENT_PAL_TAG_NONE) // always true + { + sub_805F510(&sObjectEventSpritePalettes[i]); + } +} + +void Unused_LoadObjectEventPaletteSet(u16 *paletteTags) +{ + u8 i; + + for (i = 0; paletteTags[i] != OBJ_EVENT_PAL_TAG_NONE; i++) + { + LoadObjectEventPalette(paletteTags[i]); + } +} + +static u8 sub_805F510(const struct SpritePalette *spritePalette) +{ + if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xFF) + { + return 0xFF; + } + return LoadSpritePalette(spritePalette); +} + +void PatchObjectPalette(u16 paletteTag, u8 paletteSlot) +{ + u8 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); + + LoadPalette(sObjectEventSpritePalettes[paletteIndex].data, 16 * paletteSlot + 0x100, 0x20); + sub_8083598(paletteSlot); +} + +void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot) +{ + while (minSlot < maxSlot) + { + PatchObjectPalette(*paletteTags, minSlot); + paletteTags++; + minSlot++; + } +} + +static u8 FindObjectEventPaletteIndexByTag(u16 tag) +{ + u8 i; + + for (i = 0; sObjectEventSpritePalettes[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) + { + if (sObjectEventSpritePalettes[i].tag == tag) + { + return i; + } + } + return 0xFF; +} + +void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot) +{ + u8 i; + + PatchObjectPalette(tag, slot); + for (i = 0; gPlayerReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) + { + if (gPlayerReflectionPaletteSets[i].tag == tag) + { + PatchObjectPalette(gPlayerReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]); + return; + } + } +} + +void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot) +{ + u8 i; + + sCurrentSpecialObjectPaletteTag = tag; + PatchObjectPalette(tag, slot); + for (i = 0; gSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) + { + if (gSpecialObjectReflectionPaletteSets[i].tag == tag) + { + PatchObjectPalette(gSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]); + return; + } + } +} + +u8 sub_805F6D0(u8 var) +{ + return gReflectionEffectPaletteMap[var]; +} + +void unref_sub_805F6E0(struct ObjectEvent *objectEvent, s16 x, s16 y) +{ + objectEvent->previousCoords.x = objectEvent->currentCoords.x; + objectEvent->previousCoords.y = objectEvent->currentCoords.y; + objectEvent->currentCoords.x += x; + objectEvent->currentCoords.y += y; +} + +void ShiftObjectEventCoords(struct ObjectEvent *objectEvent, s16 x, s16 y) +{ + objectEvent->previousCoords.x = objectEvent->currentCoords.x; + objectEvent->previousCoords.y = objectEvent->currentCoords.y; + objectEvent->currentCoords.x = x; + objectEvent->currentCoords.y = y; +} + +static void SetObjectEventCoords(struct ObjectEvent *objectEvent, s16 x, s16 y) +{ + objectEvent->previousCoords.x = x; + objectEvent->previousCoords.y = y; + objectEvent->currentCoords.x = x; + objectEvent->currentCoords.y = y; +} + +void MoveObjectEventToMapCoords(struct ObjectEvent *objectEvent, s16 x, s16 y) +{ + struct Sprite *sprite; + const struct ObjectEventGraphicsInfo *graphicsInfo; + + sprite = &gSprites[objectEvent->spriteId]; + graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + SetObjectEventCoords(objectEvent, x, y); + SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y); + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + sprite->pos1.x += 8; + sprite->pos1.y += 16 + sprite->centerToCornerVecY; + sub_805EFF4(objectEvent); + if (objectEvent->trackedByCamera) + CameraObjectReset1(); +} + +void TryMoveObjectEventToMapCoords(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) +{ + u8 objectEventId; + if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) + { + x += 7; + y += 7; + MoveObjectEventToMapCoords(&gObjectEvents[objectEventId], x, y); + } +} + +void ShiftStillObjectEventCoords(struct ObjectEvent *objectEvent) +{ + ShiftObjectEventCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y); +} + +void UpdateObjectEventCoordsForCameraUpdate(void) +{ + u8 i; + s16 dx; + s16 dy; + + if (gCamera.active) + { + dx = gCamera.x; + dy = gCamera.y; + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].active) + { + gObjectEvents[i].initialCoords.x -= dx; + gObjectEvents[i].initialCoords.y -= dy; + gObjectEvents[i].currentCoords.x -= dx; + gObjectEvents[i].currentCoords.y -= dy; + gObjectEvents[i].previousCoords.x -= dx; + gObjectEvents[i].previousCoords.y -= dy; + } + } + } +} + +u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z) +{ + u8 i; + + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].active) + { + if (gObjectEvents[i].currentCoords.x == x && gObjectEvents[i].currentCoords.y == y && ObjectEventDoesZCoordMatch(&gObjectEvents[i], z)) + { + return i; + } + } + } + return OBJECT_EVENTS_COUNT; +} + +static bool8 ObjectEventDoesZCoordMatch(struct ObjectEvent *objectEvent, u8 z) +{ + if (objectEvent->currentElevation != 0 && z != 0 && objectEvent->currentElevation != z) + { + return FALSE; + } + return TRUE; +} + +void UpdateObjectEventsForCameraUpdate(s16 x, s16 y) +{ + UpdateObjectEventCoordsForCameraUpdate(); + TrySpawnObjectEvents(x, y); + RemoveObjectEventsOutsideView(); +} + +u8 AddCameraObject(u8 linkedSpriteId) +{ + u8 spriteId = CreateSprite(&gCameraSpriteTemplate, 0, 0, 4); + + gSprites[spriteId].invisible = TRUE; + gSprites[spriteId].data[0] = linkedSpriteId; + return spriteId; +} + +/*static*/ void ObjectCB_CameraObject(struct Sprite *sprite) +{ + void (*callbacks[ARRAY_COUNT(gCameraObjectFuncs)])(struct Sprite *); + + memcpy(callbacks, gCameraObjectFuncs, sizeof gCameraObjectFuncs); + callbacks[sprite->data[1]](sprite); +} + +/*static*/ void CameraObject_0(struct Sprite *sprite) +{ + sprite->pos1.x = gSprites[sprite->data[0]].pos1.x; + sprite->pos1.y = gSprites[sprite->data[0]].pos1.y; + sprite->invisible = TRUE; + sprite->data[1] = 1; + CameraObject_1(sprite); +} + +/*static*/ void CameraObject_1(struct Sprite *sprite) +{ + s16 x = gSprites[sprite->data[0]].pos1.x; + s16 y = gSprites[sprite->data[0]].pos1.y; + + sprite->data[2] = x - sprite->pos1.x; + sprite->data[3] = y - sprite->pos1.y; + sprite->pos1.x = x; + sprite->pos1.y = y; +} + +/*static*/ void CameraObject_2(struct Sprite *sprite) +{ + sprite->pos1.x = gSprites[sprite->data[0]].pos1.x; + sprite->pos1.y = gSprites[sprite->data[0]].pos1.y; + sprite->data[2] = 0; + sprite->data[3] = 0; +} + +static struct Sprite *FindCameraObject(void) +{ + u8 i; + + for (i = 0; i < MAX_SPRITES; i++) + { + if (gSprites[i].inUse && gSprites[i].callback == ObjectCB_CameraObject) + { + return &gSprites[i]; + } + } + return NULL; +} + +void CameraObjectReset1(void) +{ + struct Sprite *cameraObject; + + cameraObject = FindCameraObject(); + if (cameraObject != NULL) + { + cameraObject->data[1] = 0; + cameraObject->callback(cameraObject); + } +} + +void CameraObjectSetFollowedObjectId(u8 objectId) +{ + struct Sprite *cameraObject; + + cameraObject = FindCameraObject(); + if (cameraObject != NULL) + { + cameraObject->data[0] = objectId; + CameraObjectReset1(); + } +} + +u8 CameraObjectGetFollowedObjectId(void) +{ + struct Sprite *cameraObject; + + cameraObject = FindCameraObject(); + if (cameraObject == NULL) + { + return MAX_SPRITES; + } + return cameraObject->data[0]; +} + +void CameraObjectReset2(void) +{ + FindCameraObject()->data[1] = 2; +} + +u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority) +{ + u8 i; + + for (i = 0; i < MAX_SPRITES; i++) + { + if (!gSprites[i].inUse) + { + gSprites[i] = *sprite; + gSprites[i].pos1.x = x; + gSprites[i].pos1.y = y; + gSprites[i].subpriority = subpriority; + break; + } + } + return i; +} + +u8 CreateCopySpriteAt(struct Sprite *sprite, s16 x, s16 y, u8 subpriority) +{ + s16 i; + + for (i = MAX_SPRITES - 1; i > -1; i--) + { + if (!gSprites[i].inUse) + { + gSprites[i] = *sprite; + gSprites[i].pos1.x = x; + gSprites[i].pos1.y = y; + gSprites[i].subpriority = subpriority; + return i; + } + } + return MAX_SPRITES; +} + +void SetObjectEventDirection(struct ObjectEvent *objectEvent, u8 direction) +{ + s8 d2; + objectEvent->previousMovementDirection = objectEvent->facingDirection; + if (!objectEvent->facingDirectionLocked) + { + d2 = direction; + objectEvent->facingDirection = d2; + } + objectEvent->movementDirection = direction; +} + +static const u8 *GetObjectEventScriptPointerByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +{ + return GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup)->script; +} + +const u8 *GetObjectEventScriptPointerByObjectEventId(u8 objectEventId) +{ + return GetObjectEventScriptPointerByLocalIdAndMap(gObjectEvents[objectEventId].localId, gObjectEvents[objectEventId].mapNum, gObjectEvents[objectEventId].mapGroup); +} + +static u16 GetObjectEventFlagIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +{ + return GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup)->flagId; +} + +static u16 GetObjectEventFlagIdByObjectEventId(u8 objectEventId) +{ + return GetObjectEventFlagIdByLocalIdAndMap(gObjectEvents[objectEventId].localId, gObjectEvents[objectEventId].mapNum, gObjectEvents[objectEventId].mapGroup); +} + +u8 sub_805FC9C(u8 localId, u8 mapNum, u8 mapGroup) +{ + u8 objectEventId; + + if (TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) + { + return 0xFF; + } + return gObjectEvents[objectEventId].trainerType; +} + +u16 sub_805FCD8(u8 localId, u8 mapNum, u8 mapGroup) +{ + return GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup)->trainerType; +} + +u8 sub_808F0BC(u8 objectEventId) +{ + return gObjectEvents[objectEventId].trainerType; +} + +u8 sub_805FD08(u8 localId, u8 mapNum, u8 mapGroup) +{ + u8 objectEventId; + + if (TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) + { + return 0xFF; + } + return gObjectEvents[objectEventId].trainerRange_berryTreeId; +} + +u8 ObjectEventGetBerryTreeId(u8 objectEventId) +{ + return gObjectEvents[objectEventId].trainerRange_berryTreeId; +} + +static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +{ + struct ObjectEventTemplate *templates; + const struct MapHeader *mapHeader; + u8 count; + + if (gSaveBlock1Ptr->location.mapNum == mapNum && gSaveBlock1Ptr->location.mapGroup == mapGroup) + { + templates = gSaveBlock1Ptr->objectEventTemplates; + count = gMapHeader.events->objectEventCount; + } + else + { + mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); + templates = mapHeader->events->objectEvents; + count = mapHeader->events->objectEventCount; + } + return FindObjectEventTemplateByLocalId(localId, templates, count); +} + +static struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8 localId, struct ObjectEventTemplate *templates, u8 count) +{ + u8 i; + + for (i = 0; i < count; i++) + { + if (templates[i].localId == localId) + { + return &templates[i]; + } + } + return NULL; +} + +struct ObjectEventTemplate *GetBaseTemplateForObjectEvent(const struct ObjectEvent *objectEvent) +{ + int i; + + if (objectEvent->mapNum != gSaveBlock1Ptr->location.mapNum || objectEvent->mapGroup != gSaveBlock1Ptr->location.mapGroup) + { + return NULL; + } + for (i = 0; i < OBJECT_EVENT_TEMPLATES_COUNT; i++) + { + if ((objectEvent->localId == gSaveBlock1Ptr->objectEventTemplates[i].localId) + && (objectEvent->mapNum == gSaveBlock1Ptr->location.mapNum) + && (objectEvent->mapGroup == gSaveBlock1Ptr->location.mapGroup)) + return &gSaveBlock1Ptr->objectEventTemplates[i]; + } + return NULL; +} + +void OverrideTemplateCoordsForObjectEvent(const struct ObjectEvent *objectEvent) +{ + struct ObjectEventTemplate *objectEventTemplate; + + objectEventTemplate = GetBaseTemplateForObjectEvent(objectEvent); + if (objectEventTemplate != NULL) + { + objectEventTemplate->x = objectEvent->currentCoords.x - 7; + objectEventTemplate->y = objectEvent->currentCoords.y - 7; + } +} + +void OverrideMovementTypeForObjectEvent(const struct ObjectEvent *objectEvent, u8 movementType) +{ + struct ObjectEventTemplate *objectEventTemplate; + + objectEventTemplate = GetBaseTemplateForObjectEvent(objectEvent); + if (objectEventTemplate != NULL) + { + objectEventTemplate->movementType = movementType; + } +} + +void TryOverrideObjectEventTemplateCoords(u8 localId, u8 mapNum, u8 mapGroup) +{ + u8 objectEventId; + if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) + OverrideTemplateCoordsForObjectEvent(&gObjectEvents[objectEventId]); +} + +void InitObjectEventPalettes(u8 palSlot) +{ + FreeAndReserveObjectSpritePalettes(); + sCurrentSpecialObjectPaletteTag = OBJ_EVENT_PAL_TAG_NONE; + sCurrentReflectionType = palSlot; + if (palSlot == 1) + { + PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], 0, 6); + gReservedSpritePaletteCount = 8; + } + else + { + PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], 0, 10); + } +} + +u16 GetObjectPaletteTag(u8 palSlot) +{ + u8 i; + + if (palSlot < 10) + { + return gObjectPaletteTagSets[sCurrentReflectionType][palSlot]; + } + for (i = 0; gSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) + { + if (gSpecialObjectReflectionPaletteSets[i].tag == sCurrentSpecialObjectPaletteTag) + { + return gSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType]; + } + } + return OBJ_EVENT_PAL_TAG_NONE; +} + +movement_type_empty_callback(MovementType_None) +movement_type_def(MovementType_WanderAround, gMovementTypeFuncs_WanderAround) +movement_type_def(MovementType_WanderAroundDuplicate, gMovementTypeFuncs_WanderAroundDuplicate) + +bool8 MovementType_WanderAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_WanderAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_WanderAround_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (!ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + return FALSE; + } + SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]); + sprite->data[1] = 3; + return TRUE; +} + +bool8 MovementType_WanderAround_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_WanderAround_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[4]; + u8 chosenDirection; + + memcpy(directions, gStandardDirections, sizeof directions); + chosenDirection = directions[Random() & 3]; + SetObjectEventDirection(objectEvent, chosenDirection); + sprite->data[1] = 5; + if (GetCollisionInDirection(objectEvent, chosenDirection)) + sprite->data[1] = 1; + + return TRUE; +} + +bool8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(objectEvent->movementDirection)); + objectEvent->singleMovementActive = 1; + sprite->data[1] = 6; + return TRUE; +} + +bool8 MovementType_WanderAround_Step5Duplicate(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, sub_8063F2C(objectEvent->movementDirection)); + objectEvent->singleMovementActive = 1; + sprite->data[1] = 6; + return TRUE; +} + +bool8 MovementType_WanderAround_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + objectEvent->singleMovementActive = 0; + sprite->data[1] = 1; + } + return FALSE; +} + +bool8 ObjectEventIsTrainerAndCloseToPlayer(struct ObjectEvent *objectEvent) +{ + s16 playerX; + s16 playerY; + s16 objX; + s16 objY; + s16 minX; + s16 maxX; + s16 minY; + s16 maxY; + + if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) + { + return FALSE; + } + if (objectEvent->trainerType != 1 && objectEvent->trainerType != 3) + { + return FALSE; + } + PlayerGetDestCoords(&playerX, &playerY); + objX = objectEvent->currentCoords.x; + objY = objectEvent->currentCoords.y; + minX = objX - objectEvent->trainerRange_berryTreeId; + minY = objY - objectEvent->trainerRange_berryTreeId; + maxX = objX + objectEvent->trainerRange_berryTreeId; + maxY = objY + objectEvent->trainerRange_berryTreeId; + if (minX > playerX || maxX < playerX || minY > playerY || maxY < playerY) + { + return FALSE; + } + return TRUE; +} + +u8 GetVectorDirection(s16 dx, s16 dy, s16 absdx, s16 absdy) +{ + u8 direction; + + if (absdx > absdy) + { + direction = DIR_EAST; + if (dx < 0) + { + direction = DIR_WEST; + } + } + else + { + direction = DIR_SOUTH; + if (dy < 0) + { + direction = DIR_NORTH; + } + } + return direction; +} + +u8 GetLimitedVectorDirection_SouthNorth(s16 dx, s16 dy, s16 absdx, s16 absdy) +{ + u8 direction; + + direction = DIR_SOUTH; + if (dy < 0) + { + direction = DIR_NORTH; + } + return direction; +} + +u8 GetLimitedVectorDirection_WestEast(s16 dx, s16 dy, s16 absdx, s16 absdy) +{ + u8 direction; + + direction = DIR_EAST; + if (dx < 0) + { + direction = DIR_WEST; + } + return direction; +} + +u8 GetLimitedVectorDirection_WestNorth(s16 dx, s16 dy, s16 absdx, s16 absdy) +{ + u8 direction; + + direction = GetVectorDirection(dx, dy, absdx, absdy); + if (direction == DIR_SOUTH) + { + direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy); + if (direction == DIR_EAST) + { + direction = DIR_NORTH; + } + } + else if (direction == DIR_EAST) + { + direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy); + if (direction == DIR_SOUTH) + { + direction = DIR_NORTH; + } + } + return direction; +} + +u8 GetLimitedVectorDirection_EastNorth(s16 dx, s16 dy, s16 absdx, s16 absdy) +{ + u8 direction; + + direction = GetVectorDirection(dx, dy, absdx, absdy); + if (direction == DIR_SOUTH) + { + direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy); + if (direction == DIR_WEST) + { + direction = DIR_NORTH; + } + } + else if (direction == DIR_WEST) + { + direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy); + if (direction == DIR_SOUTH) + { + direction = DIR_NORTH; + } + } + return direction; +} + +u8 GetLimitedVectorDirection_WestSouth(s16 dx, s16 dy, s16 absdx, s16 absdy) +{ + u8 direction; + + direction = GetVectorDirection(dx, dy, absdx, absdy); + if (direction == DIR_NORTH) + { + direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy); + if (direction == DIR_EAST) + { + direction = DIR_SOUTH; + } + } + else if (direction == DIR_EAST) + { + direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy); + if (direction == DIR_NORTH) + { + direction = DIR_SOUTH; + } + } + return direction; +} + +u8 GetLimitedVectorDirection_EastSouth(s16 dx, s16 dy, s16 absdx, s16 absdy) +{ + u8 direction; + + direction = GetVectorDirection(dx, dy, absdx, absdy); + if (direction == DIR_NORTH) + { + direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy); + if (direction == DIR_WEST) + { + direction = DIR_SOUTH; + } + } + else if (direction == DIR_WEST) + { + direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy); + if (direction == DIR_NORTH) + { + direction = DIR_SOUTH; + } + } + return direction; +} + +u8 GetLimitedVectorDirection_SouthNorthWest(s16 dx, s16 dy, s16 absdx, s16 absdy) +{ + u8 direction; + + direction = GetVectorDirection(dx, dy, absdx, absdy); + if (direction == DIR_EAST) + { + direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy); + } + return direction; +} + +u8 GetLimitedVectorDirection_SouthNorthEast(s16 dx, s16 dy, s16 absdx, s16 absdy) +{ + u8 direction; + + direction = GetVectorDirection(dx, dy, absdx, absdy); + if (direction == DIR_WEST) + { + direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy); + } + return direction; +} + +u8 GetLimitedVectorDirection_NorthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy) +{ + u8 direction; + + direction = GetVectorDirection(dx, dy, absdx, absdy); + if (direction == DIR_SOUTH) + { + direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy); + } + return direction; +} + +u8 GetLimitedVectorDirection_SouthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy) +{ + u8 direction; + + direction = GetVectorDirection(dx, dy, absdx, absdy); + if (direction == DIR_NORTH) + { + direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy); + } + return direction; +} + +u8 TryGetTrainerEncounterDirection(struct ObjectEvent *objectEvent, u8 movementType) +{ + s16 dx, dy; + s16 absdx, absdy; + + if (!ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + return 0; + } + PlayerGetDestCoords(&dx, &dy); + dx -= objectEvent->currentCoords.x; + dy -= objectEvent->currentCoords.y; + absdx = dx; + absdy = dy; + if (absdx < 0) + { + absdx = -absdx; + } + if (absdy < 0) + { + absdy = -absdy; + } + return gGetVectorDirectionFuncs[movementType](dx, dy, absdx, absdy); +} + +movement_type_def(MovementType_LookAround, gMovementTypeFuncs_LookAround) + +bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_LookAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_LookAround_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]); + objectEvent->singleMovementActive = 0; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_LookAround_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_LookAround_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gStandardDirections, sizeof directions); + direction = TryGetTrainerEncounterDirection(objectEvent, RUNFOLLOW_ANY); + if (direction == DIR_NONE) + direction = directions[Random() & 3]; + + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_WanderUpAndDown, gMovementTypeFuncs_WanderUpAndDown) + +bool8 MovementType_WanderUpAndDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_WanderUpAndDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_WanderUpAndDown_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (!ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + return FALSE; + } + SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]); + sprite->data[1] = 3; + return TRUE; +} + +bool8 MovementType_WanderUpAndDown_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_WanderUpAndDown_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUpAndDownDirections, sizeof directions); + direction = directions[Random() & 1]; + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 5; + if (GetCollisionInDirection(objectEvent, direction)) + sprite->data[1] = 1; + + return TRUE; +} + +bool8 MovementType_WanderUpAndDown_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(objectEvent->movementDirection)); + objectEvent->singleMovementActive = 1; + sprite->data[1] = 6; + return TRUE; +} + +bool8 MovementType_WanderUpAndDown_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + objectEvent->singleMovementActive = 0; + sprite->data[1] = 1; + } + return FALSE; +} + +movement_type_def(MovementType_WanderLeftAndRight, gMovementTypeFuncs_WanderLeftAndRight) + +bool8 MovementType_WanderLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_WanderLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_WanderLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (!ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + return FALSE; + } + SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]); + sprite->data[1] = 3; + return TRUE; +} + +bool8 MovementType_WanderLeftAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_WanderLeftAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gLeftAndRightDirections, sizeof directions); + direction = directions[Random() & 1]; + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 5; + if (GetCollisionInDirection(objectEvent, direction)) + sprite->data[1] = 1; + + return TRUE; +} + +bool8 MovementType_WanderLeftAndRight_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(objectEvent->movementDirection)); + objectEvent->singleMovementActive = 1; + sprite->data[1] = 6; + return TRUE; +} + +bool8 MovementType_WanderLeftAndRight_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + objectEvent->singleMovementActive = 0; + sprite->data[1] = 1; + } + return FALSE; +} + +movement_type_def(MovementType_FaceDirection, gMovementTypeFuncs_FaceDirection) + +bool8 MovementType_FaceDirection_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FaceDirection_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + sprite->data[1] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_FaceDirection_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->singleMovementActive = 0; + return FALSE; +} + +movement_type_def(MovementType_FaceDownAndUp, gMovementTypeFuncs_FaceDownAndUp) + +bool8 MovementType_FaceDownAndUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FaceDownAndUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FaceDownAndUp_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]); + objectEvent->singleMovementActive = 0; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FaceDownAndUp_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_FaceDownAndUp_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUpAndDownDirections, sizeof gUpAndDownDirections); + direction = TryGetTrainerEncounterDirection(objectEvent, RUNFOLLOW_NORTH_SOUTH); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_FaceLeftAndRight, gMovementTypeFuncs_FaceLeftAndRight) + +bool8 MovementType_FaceLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FaceLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FaceLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]); + objectEvent->singleMovementActive = 0; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FaceLeftAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_FaceLeftAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gLeftAndRightDirections, sizeof gLeftAndRightDirections); + direction = TryGetTrainerEncounterDirection(objectEvent, RUNFOLLOW_EAST_WEST); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_FaceUpAndLeft, gMovementTypeFuncs_FaceUpAndLeft) + +bool8 MovementType_FaceUpAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FaceUpAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FaceUpAndLeft_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]); + objectEvent->singleMovementActive = 0; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FaceUpAndLeft_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_FaceUpAndLeft_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUpAndLeftDirections, sizeof gUpAndLeftDirections); + direction = TryGetTrainerEncounterDirection(objectEvent, RUNFOLLOW_NORTH_WEST); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_FaceUpAndRight, gMovementTypeFuncs_FaceUpAndRight) + +bool8 MovementType_FaceUpAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FaceUpAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FaceUpAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]); + objectEvent->singleMovementActive = 0; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FaceUpAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_FaceUpAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUpAndRightDirections, sizeof gUpAndRightDirections); + direction = TryGetTrainerEncounterDirection(objectEvent, RUNFOLLOW_NORTH_EAST); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_FaceDownAndLeft, gMovementTypeFuncs_FaceDownAndLeft) + +bool8 MovementType_FaceDownAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FaceDownAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FaceDownAndLeft_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]); + objectEvent->singleMovementActive = 0; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FaceDownAndLeft_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_FaceDownAndLeft_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gDownAndLeftDirections, sizeof gDownAndLeftDirections); + direction = TryGetTrainerEncounterDirection(objectEvent, RUNFOLLOW_SOUTH_WEST); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_FaceDownAndRight, gMovementTypeFuncs_FaceDownAndRight) + +bool8 MovementType_FaceDownAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FaceDownAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FaceDownAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]); + objectEvent->singleMovementActive = 0; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FaceDownAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_FaceDownAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gDownAndRightDirections, sizeof gDownAndRightDirections); + direction = TryGetTrainerEncounterDirection(objectEvent, RUNFOLLOW_SOUTH_EAST); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_FaceDownUpAndLeft, gMovementTypeFuncs_FaceDownUpAndLeft) + +bool8 MovementType_FaceDownUpAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FaceDownUpAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FaceDownUpAndLeft_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]); + objectEvent->singleMovementActive = 0; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FaceDownUpAndLeft_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_FaceDownUpAndLeft_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gDownUpAndLeftDirections, sizeof gDownUpAndLeftDirections); + direction = TryGetTrainerEncounterDirection(objectEvent, RUNFOLLOW_NORTH_SOUTH_WEST); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_FaceDownUpAndRight, gMovementTypeFuncs_FaceDownUpAndRight) + +bool8 MovementType_FaceDownUpAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FaceDownUpAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FaceDownUpAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]); + objectEvent->singleMovementActive = 0; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FaceDownUpAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_FaceDownUpAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gDownUpAndRightDirections, sizeof gDownUpAndRightDirections); + direction = TryGetTrainerEncounterDirection(objectEvent, RUNFOLLOW_NORTH_SOUTH_EAST); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_FaceUpRightAndLeft, gMovementTypeFuncs_FaceUpLeftAndRight) + +bool8 MovementType_FaceUpLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FaceUpLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FaceUpLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]); + objectEvent->singleMovementActive = 0; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FaceUpLeftAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_FaceUpLeftAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUpLeftAndRightDirections, sizeof gUpLeftAndRightDirections); + direction = TryGetTrainerEncounterDirection(objectEvent, RUNFOLLOW_NORTH_EAST_WEST); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_FaceDownRightAndLeft, gMovementTypeFuncs_FaceDownLeftAndRight) + +bool8 MovementType_FaceDownLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FaceDownLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FaceDownLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]); + objectEvent->singleMovementActive = 0; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FaceDownLeftAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + sprite->data[1] = 4; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_FaceDownLeftAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gDownLeftAndRightDirections, sizeof gDownLeftAndRightDirections); + direction = TryGetTrainerEncounterDirection(objectEvent, RUNFOLLOW_SOUTH_EAST_WEST); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_RotateCounterclockwise, gMovementTypeFuncs_RotateCounterclockwise) + +bool8 MovementType_RotateCounterclockwise_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_RotateCounterclockwise_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + SetMovementDelay(sprite, 48); + sprite->data[1] = 2; + } + return FALSE; +} + +bool8 MovementType_RotateCounterclockwise_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_RotateCounterclockwise_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[5]; + memcpy(directions, gCounterclockwiseDirections, sizeof gCounterclockwiseDirections); + direction = TryGetTrainerEncounterDirection(objectEvent, RUNFOLLOW_ANY); + if (direction == 0) + { + direction = directions[objectEvent->facingDirection]; + } + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 0; + return TRUE; +} + +movement_type_def(MovementType_RotateClockwise, gMovementTypeFuncs_RotateClockwise) + +bool8 MovementType_RotateClockwise_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_RotateClockwise_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + SetMovementDelay(sprite, 48); + sprite->data[1] = 2; + } + return FALSE; +} + +bool8 MovementType_RotateClockwise_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent)) + { + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_RotateClockwise_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + u8 directions[5]; + memcpy(directions, gClockwiseDirections, sizeof gClockwiseDirections); + direction = TryGetTrainerEncounterDirection(objectEvent, RUNFOLLOW_ANY); + if (direction == 0) + { + direction = directions[objectEvent->facingDirection]; + } + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 0; + return TRUE; +} + +movement_type_def(MovementType_WalkBackAndForth, gMovementTypeFuncs_WalkBackAndForth) + +bool8 MovementType_WalkBackAndForth_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_WalkBackAndForth_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 direction; + + direction = gInitialMovementTypeFacingDirections[objectEvent->movementType]; + if (objectEvent->directionSequenceIndex) + { + direction = GetOppositeDirection(direction); + } + SetObjectEventDirection(objectEvent, direction); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_WalkBackAndForth_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + bool8 collision; + u8 movementActionId; + + if (objectEvent->directionSequenceIndex && objectEvent->initialCoords.x == objectEvent->currentCoords.x && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + { + objectEvent->directionSequenceIndex = 0; + SetObjectEventDirection(objectEvent, GetOppositeDirection(objectEvent->movementDirection)); + } + collision = GetCollisionInDirection(objectEvent, objectEvent->movementDirection); + movementActionId = GetWalkNormalMovementAction(objectEvent->movementDirection); + if (collision == COLLISION_OUTSIDE_RANGE) + { + objectEvent->directionSequenceIndex++; + SetObjectEventDirection(objectEvent, GetOppositeDirection(objectEvent->movementDirection)); + movementActionId = GetWalkNormalMovementAction(objectEvent->movementDirection); + collision = GetCollisionInDirection(objectEvent, objectEvent->movementDirection); + } + + if (collision) + movementActionId = GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection); + + ObjectEventSetSingleMovement(objectEvent, sprite, movementActionId); + objectEvent->singleMovementActive = 1; + sprite->data[1] = 3; + return TRUE; +} + +bool8 MovementType_WalkBackAndForth_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + objectEvent->singleMovementActive = 0; + sprite->data[1] = 1; + } + return FALSE; +} + +bool8 MovementType_WalkSequence_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MoveNextDirectionInSequence(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 *route) +{ + u8 collision; + u8 movementActionId; + + if (objectEvent->directionSequenceIndex == 3 && objectEvent->initialCoords.x == objectEvent->currentCoords.x && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + objectEvent->directionSequenceIndex = 0; + + SetObjectEventDirection(objectEvent, route[objectEvent->directionSequenceIndex]); + movementActionId = GetWalkNormalMovementAction(objectEvent->movementDirection); + collision = GetCollisionInDirection(objectEvent, objectEvent->movementDirection); + if (collision == COLLISION_OUTSIDE_RANGE) + { + objectEvent->directionSequenceIndex++; + SetObjectEventDirection(objectEvent, route[objectEvent->directionSequenceIndex]); + movementActionId = GetWalkNormalMovementAction(objectEvent->movementDirection); + collision = GetCollisionInDirection(objectEvent, objectEvent->movementDirection); + } + + if (collision) + movementActionId = GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection); + + ObjectEventSetSingleMovement(objectEvent, sprite, movementActionId); + objectEvent->singleMovementActive = 1; + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_WalkSequence_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + objectEvent->singleMovementActive = 0; + sprite->data[1] = 1; + } + return FALSE; +} + +movement_type_def(MovementType_WalkSequenceUpRightLeftDown, gMovementTypeFuncs_WalkSequenceUpRightLeftDown) + +u8 MovementType_WalkSequenceUpRightLeftDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gUpRightLeftDownDirections)]; + memcpy(directions, gUpRightLeftDownDirections, sizeof(gUpRightLeftDownDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.x == objectEvent->currentCoords.x) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceRightLeftDownUp, gMovementTypeFuncs_WalkSequenceRightLeftDownUp) + +u8 MovementType_WalkSequenceRightLeftDownUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gRightLeftDownUpDirections)]; + memcpy(directions, gRightLeftDownUpDirections, sizeof(gRightLeftDownUpDirections)); + if (objectEvent->directionSequenceIndex == 1 && objectEvent->initialCoords.x == objectEvent->currentCoords.x) + { + objectEvent->directionSequenceIndex = 2; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceDownUpRightLeft, gMovementTypeFuncs_WalkSequenceDownUpRightLeft) + +u8 MovementType_WalkSequenceDownUpRightLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gDownUpRightLeftDirections)]; + memcpy(directions, gDownUpRightLeftDirections, sizeof(gDownUpRightLeftDirections)); + if (objectEvent->directionSequenceIndex == 1 && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + { + objectEvent->directionSequenceIndex = 2; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceLeftDownUpRight, gMovementTypeFuncs_WalkSequenceLeftDownUpRight) + +u8 MovementType_WalkSequenceLeftDownUpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gLeftDownUpRightDirections)]; + memcpy(directions, gLeftDownUpRightDirections, sizeof(gLeftDownUpRightDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceUpLeftRightDown, gMovementTypeFuncs_WalkSequenceUpLeftRightDown) + +u8 MovementType_WalkSequenceUpLeftRightDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gUpLeftRightDownDirections)]; + memcpy(directions, gUpLeftRightDownDirections, sizeof(gUpLeftRightDownDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.x == objectEvent->currentCoords.x) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceLeftRightDownUp, gMovementTypeFuncs_WalkSequenceLeftRightDownUp) + +u8 MovementType_WalkSequenceLeftRightDownUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gLeftRightDownUpDirections)]; + memcpy(directions, gLeftRightDownUpDirections, sizeof(gLeftRightDownUpDirections)); + if (objectEvent->directionSequenceIndex == 1 && objectEvent->initialCoords.x == objectEvent->currentCoords.x) + { + objectEvent->directionSequenceIndex = 2; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceDownUpLeftRight, gMovementTypeFuncs_WalkSequenceDownUpLeftRight) + +u8 MovementType_WalkSequenceDownUpLeftRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gStandardDirections)]; + memcpy(directions, gStandardDirections, sizeof(gStandardDirections)); + if (objectEvent->directionSequenceIndex == 1 && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + { + objectEvent->directionSequenceIndex = 2; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceRightDownUpLeft, gMovementTypeFuncs_WalkSequenceRightDownUpLeft) + +u8 MovementType_WalkSequenceRightDownUpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gRightDownUpLeftDirections)]; + memcpy(directions, gRightDownUpLeftDirections, sizeof(gRightDownUpLeftDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceLeftUpDownRight, gMovementTypeFuncs_WalkSequenceLeftUpDownRight) + +u8 MovementType_WalkSequenceLeftUpDownRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gLeftUpDownRightDirections)]; + memcpy(directions, gLeftUpDownRightDirections, sizeof(gLeftUpDownRightDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceUpDownRightLeft, gMovementTypeFuncs_WalkSequenceUpDownRightLeft) + +u8 MovementType_WalkSequenceUpDownRightLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gUpDownRightLeftDirections)]; + memcpy(directions, gUpDownRightLeftDirections, sizeof(gUpDownRightLeftDirections)); + if (objectEvent->directionSequenceIndex == 1 && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + { + objectEvent->directionSequenceIndex = 2; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceRightLeftUpDown, gMovementTypeFuncs_WalkSequenceRightLeftUpDown) + +u8 MovementType_WalkSequenceRightLeftUpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gRightLeftUpDownDirections)]; + memcpy(directions, gRightLeftUpDownDirections, sizeof(gRightLeftUpDownDirections)); + if (objectEvent->directionSequenceIndex == 1 && objectEvent->initialCoords.x == objectEvent->currentCoords.x) + { + objectEvent->directionSequenceIndex = 2; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceDownRightLeftUp, gMovementTypeFuncs_WalkSequenceDownRightLeftUp) + +u8 MovementType_WalkSequenceDownRightLeftUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gDownRightLeftUpDirections)]; + memcpy(directions, gDownRightLeftUpDirections, sizeof(gDownRightLeftUpDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.x == objectEvent->currentCoords.x) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceRightUpDownLeft, gMovementTypeFuncs_WalkSequenceRightUpDownLeft) + +u8 MovementType_WalkSequenceRightUpDownLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gRightUpDownLeftDirections)]; + memcpy(directions, gRightUpDownLeftDirections, sizeof(gRightUpDownLeftDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceUpDownLeftRight, gMovementTypeFuncs_WalkSequenceUpDownLeftRight) + +u8 MovementType_WalkSequenceUpDownLeftRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gUpDownLeftRightDirections)]; + memcpy(directions, gUpDownLeftRightDirections, sizeof(gUpDownLeftRightDirections)); + if (objectEvent->directionSequenceIndex == 1 && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + { + objectEvent->directionSequenceIndex = 2; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceLeftRightUpDown, gMovementTypeFuncs_WalkSequenceLeftRightUpDown) + +u8 MovementType_WalkSequenceLeftRightUpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gLeftRightUpDownDirections)]; + memcpy(directions, gLeftRightUpDownDirections, sizeof(gLeftRightUpDownDirections)); + if (objectEvent->directionSequenceIndex == 1 && objectEvent->initialCoords.x == objectEvent->currentCoords.x) + { + objectEvent->directionSequenceIndex = 2; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceDownLeftRightUp, gMovementTypeFuncs_WalkSequenceDownLeftRightUp) + +u8 MovementType_WalkSequenceDownLeftRightUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gDownLeftRightUpDirections)]; + memcpy(directions, gDownLeftRightUpDirections, sizeof(gDownLeftRightUpDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.x == objectEvent->currentCoords.x) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceUpLeftDownRight, gMovementTypeFuncs_WalkSequenceUpLeftDownRight) + +u8 MovementType_WalkSequenceUpLeftDownRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gUpLeftDownRightDirections)]; + memcpy(directions, gUpLeftDownRightDirections, sizeof(gUpLeftDownRightDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceDownRightUpLeft, gMovementTypeFuncs_WalkSequenceDownRightUpLeft) + +u8 MovementType_WalkSequenceDownRightUpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gDownRightUpLeftDirections)]; + memcpy(directions, gDownRightUpLeftDirections, sizeof(gDownRightUpLeftDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceLeftDownRightUp, gMovementTypeFuncs_WalkSequenceLeftDownRightUp) + +u8 MovementType_WalkSequenceLeftDownRightUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gLeftDownRightUpDirections)]; + memcpy(directions, gLeftDownRightUpDirections, sizeof(gLeftDownRightUpDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.x == objectEvent->currentCoords.x) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceRightUpLeftDown, gMovementTypeFuncs_WalkSequenceRightUpLeftDown) + +u8 MovementType_WalkSequenceRightUpLeftDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gRightUpLeftDownDirections)]; + memcpy(directions, gRightUpLeftDownDirections, sizeof(gRightUpLeftDownDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.x == objectEvent->currentCoords.x) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceUpRightDownLeft, gMovementTypeFuncs_WalkSequenceUpRightDownLeft) + +u8 MovementType_WalkSequenceUpRightDownLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gUpRightDownLeftDirections)]; + memcpy(directions, gUpRightDownLeftDirections, sizeof(gUpRightDownLeftDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceDownLeftUpRight, gMovementTypeFuncs_WalkSequenceDownLeftUpRight) + +u8 MovementType_WalkSequenceDownLeftUpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gDownLeftUpRightDirections)]; + memcpy(directions, gDownLeftUpRightDirections, sizeof(gDownLeftUpRightDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.y == objectEvent->currentCoords.y) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceLeftUpRightDown, gMovementTypeFuncs_WalkSequenceLeftUpRightDown) + +u8 MovementType_WalkSequenceLeftUpRightDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gLeftUpRightDownDirections)]; + memcpy(directions, gLeftUpRightDownDirections, sizeof(gLeftUpRightDownDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.x == objectEvent->currentCoords.x) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_WalkSequenceRightDownLeftUp, gMovementTypeFuncs_WalkSequenceRightDownLeftUp) + +u8 MovementType_WalkSequenceRightDownLeftUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 directions[sizeof(gRightDownLeftUpDirections)]; + memcpy(directions, gRightDownLeftUpDirections, sizeof(gRightDownLeftUpDirections)); + if (objectEvent->directionSequenceIndex == 2 && objectEvent->initialCoords.x == objectEvent->currentCoords.x) + { + objectEvent->directionSequenceIndex = 3; + } + return MoveNextDirectionInSequence(objectEvent, sprite, directions); +} + +movement_type_def(MovementType_CopyPlayer, gMovementTypeFuncs_CopyPlayer) + +bool8 MovementType_CopyPlayer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + if (objectEvent->directionSequenceIndex == 0) + { + objectEvent->directionSequenceIndex = GetPlayerFacingDirection(); + } + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_CopyPlayer_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER) + { + return FALSE; + } + return gCopyPlayerMovementFuncs[PlayerGetCopyableMovement()](objectEvent, sprite, GetPlayerMovementDirection(), NULL); +} + +bool8 MovementType_CopyPlayer_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + objectEvent->singleMovementActive = 0; + sprite->data[1] = 1; + } + return FALSE; +} + +bool8 CopyablePlayerMovement_None(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + return FALSE; +} + +bool8 CopyablePlayerMovement_FaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, playerDirection))); + objectEvent->singleMovementActive = 1; + sprite->data[1] = 2; + return TRUE; +} + +bool8 CopyablePlayerMovement_GoSpeed0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(direction)); + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + } + objectEvent->singleMovementActive = 1; + sprite->data[1] = 2; + return TRUE; +} + +bool8 CopyablePlayerMovement_GoSpeed1(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastMovementAction(direction)); + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + } + objectEvent->singleMovementActive = TRUE; + sprite->data[1] = 2; + return TRUE; +} + +bool8 CopyablePlayerMovement_GoSpeed2(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastestMovementAction(direction)); + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + } + objectEvent->singleMovementActive = TRUE; + sprite->data[1] = 2; + return TRUE; +} + +bool8 CopyablePlayerMovement_Slide(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetSlideMovementAction(direction)); + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + } + objectEvent->singleMovementActive = TRUE; + sprite->data[1] = 2; + return TRUE; +} + +bool8 cph_IM_DIFFERENT(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + + direction = playerDirection; + direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventSetSingleMovement(objectEvent, sprite, GetJumpInPlaceMovementAction(direction)); + objectEvent->singleMovementActive = TRUE; + sprite->data[1] = 2; + return TRUE; +} + +bool8 CopyablePlayerMovement_GoSpeed4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetJumpMovementAction(direction)); + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + } + objectEvent->singleMovementActive = TRUE; + sprite->data[1] = 2; + return TRUE; +} + +bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + MoveCoordsInDirection(direction, &x, &y, 2, 2); + ObjectEventSetSingleMovement(objectEvent, sprite, GetJump2MovementAction(direction)); + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + } + objectEvent->singleMovementActive = TRUE; + sprite->data[1] = 2; + return TRUE; +} + +movement_type_def(MovementType_CopyPlayerInGrass, gMovementTypeFuncs_CopyPlayerInGrass) + +bool8 MovementType_CopyPlayerInGrass_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER) + { + return FALSE; + } + return gCopyPlayerMovementFuncs[PlayerGetCopyableMovement()](objectEvent, sprite, GetPlayerMovementDirection(), MetatileBehavior_IsPokeGrass); +} + +void MovementType_TreeDisguise(struct Sprite *sprite) +{ + struct ObjectEvent *objectEvent; + + objectEvent = &gObjectEvents[sprite->data[0]]; + if (objectEvent->directionSequenceIndex == 0 || (objectEvent->directionSequenceIndex == 1 && !sprite->data[7])) + { + ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + objectEvent->fieldEffectSpriteId = FieldEffectStart(FLDEFF_TREE_DISGUISE); + objectEvent->directionSequenceIndex = 1; + sprite->data[7]++; + } + UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Disguise_Callback); +} + +static bool8 MovementType_Disguise_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + return FALSE; +} + +void MovementType_MountainDisguise(struct Sprite *sprite) +{ + struct ObjectEvent *objectEvent; + + objectEvent = &gObjectEvents[sprite->data[0]]; + if (objectEvent->directionSequenceIndex == 0 || (objectEvent->directionSequenceIndex == 1 && !sprite->data[7])) + { + ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + objectEvent->fieldEffectSpriteId = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE); + objectEvent->directionSequenceIndex = 1; + sprite->data[7]++; + } + UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Disguise_Callback); +} + +void MovementType_Hidden(struct Sprite *sprite) +{ + if (!sprite->data[7]) + { + gObjectEvents[sprite->data[0]].fixedPriority = TRUE; + sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY; + sprite->oam.priority = 3; + sprite->data[7]++; + } + UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Hidden_Callback); +} + +static bool8 MovementType_Hidden_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + return gMovementTypeFuncs_Hidden[sprite->data[1]](objectEvent, sprite); +} + +bool8 MovementType_Hidden_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + return FALSE; +} + +bool8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + sprite->data[1] = 0; + } + return FALSE; +} + +movement_type_def(MovementType_WalkInPlace, gMovementTypeFuncs_WalkInPlace) + +bool8 MovementType_WalkInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_WalkSlowlyInPlace, gMovementTypeFuncs_WalkSlowlyInPlace) + +bool8 MovementType_WalkSlowlyInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceSlowMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_JogInPlace, gMovementTypeFuncs_JogInPlace) + +bool8 MovementType_JogInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceFastMovementAction(objectEvent->facingDirection)); + sprite->data[1] = 1; + return TRUE; +} + +movement_type_def(MovementType_Invisible, gMovementTypeFuncs_Invisible) + +bool8 MovementType_Invisible_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection)); + objectEvent->invisible = TRUE; + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_Invisible_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + sprite->data[1] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementType_Invisible_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->singleMovementActive = 0; + return FALSE; +} + +void sub_8063298(struct Sprite *sprite) +{ + UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, sub_8063304); +} + +void sub_80632BC(struct Sprite *sprite) +{ + UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, sub_8063324); +} + +void sub_80632E0(struct Sprite *sprite) +{ + UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, sub_8063344); +} + +static u8 sub_8063304(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + return gUnknown_83A63F0[sprite->data[1]](objectEvent, sprite); +} + +static u8 sub_8063324(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + return gUnknown_83A63FC[sprite->data[1]](objectEvent, sprite); +} + +static u8 sub_8063344(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + return gUnknown_83A6404[sprite->data[1]](objectEvent, sprite); +} + +bool8 sub_8063364(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, 0x98); + sprite->data[1] = 1; + return TRUE; +} + +bool8 sub_8063384(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + sprite->data[1] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80633A4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->singleMovementActive = 0; + return FALSE; +} + +bool8 sub_80633B4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, 0x99); + sprite->data[1] = 1; + return FALSE; +} + +bool8 sub_80633D4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, 0x9A); + sprite->data[1] = 1; + return FALSE; +} + +bool8 sub_80633F4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + sprite->data[1] = 0; + } + return FALSE; +} + +static void ClearObjectEventMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->singleMovementActive = 0; + objectEvent->heldMovementActive = FALSE; + objectEvent->heldMovementFinished = FALSE; + objectEvent->movementActionId = 0xFF; + sprite->data[1] = 0; +} + +u8 GetFaceDirectionAnimNum(u8 direction) +{ + return gFaceDirectionAnimNums[direction]; +} + +u8 GetMoveDirectionAnimNum(u8 direction) +{ + return gMoveDirectionAnimNums[direction]; +} + +u8 GetMoveDirectionFastAnimNum(u8 direction) +{ + return gMoveDirectionFastAnimNums[direction]; +} + +u8 GetMoveDirectionFasterAnimNum(u8 direction) +{ + return gMoveDirectionFasterAnimNums[direction]; +} + +u8 GetMoveDirectionFastestAnimNum(u8 direction) +{ + return gMoveDirectionFastestAnimNums[direction]; +} + +u8 GetJumpSpecialDirectionAnimNum(u8 direction) +{ + return gJumpSpecialDirectionAnimNums[direction]; +} + +u8 GetAcroWheelieDirectionAnimNum(u8 direction) +{ + return gAcroWheelieDirectionAnimNums[direction]; +} + +u8 Unref_GetAnimNums_080634A0(u8 direction) +{ + return gUnrefAnimNums_080634A0[direction]; +} + +u8 GetAcroEndWheelieDirectionAnimNum(u8 direction) +{ + return gAcroEndWheelieDirectionAnimNums[direction]; +} + +u8 GetAcroUnusedActionDirectionAnimNum(u8 direction) +{ + return gAcroUnusedActionDirectionAnimNums[direction]; +} + +u8 GetAcroWheeliePedalDirectionAnimNum(u8 direction) +{ + return gAcroWheeliePedalDirectionAnimNums[direction]; +} + +u8 GetFishingDirectionAnimNum(u8 direction) +{ + return gFishingDirectionAnimNums[direction]; +} + +u8 GetFishingNoCatchDirectionAnimNum(u8 direction) +{ + return gFishingNoCatchDirectionAnimNums[direction]; +} + +u8 GetFishingBiteDirectionAnimNum(u8 direction) +{ + return gFishingBiteDirectionAnimNums[direction]; +} + +u8 sub_8063510(u8 direction) +{ + return gUnknown_83A648A[direction]; +} + +u8 GetRunningDirectionAnimNum(u8 direction) +{ + return gRunningDirectionAnimNums[direction]; +} + +static const struct UnkStruct_083A3698 *sub_8063530(const union AnimCmd *const *anims) +{ + const struct UnkStruct_083A3698 *retval; + + for (retval = gUnknown_83A3698; retval->anims != NULL; retval++) + { + if (retval->anims == anims) + { + return retval; + } + } + return NULL; +} + +void npc_apply_anim_looping(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum) +{ + const struct UnkStruct_083A3698 *unk83A3698; + + if (!objectEvent->inanimate) + { + sprite->animNum = animNum; + unk83A3698 = sub_8063530(sprite->anims); + if (unk83A3698 != NULL) + { + if (sprite->animCmdIndex == unk83A3698->animPos[0]) + { + sprite->animCmdIndex = unk83A3698->animPos[3]; + } + else if (sprite->animCmdIndex == unk83A3698->animPos[1]) + { + sprite->animCmdIndex = unk83A3698->animPos[2]; + } + } + SeekSpriteAnim(sprite, sprite->animCmdIndex); + } +} + +void obj_npc_animation_step(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum) +{ + const struct UnkStruct_083A3698 *unk83A3698; + + if (!objectEvent->inanimate) + { + u8 animPos; + + sprite->animNum = animNum; + unk83A3698 = sub_8063530(sprite->anims); + if (unk83A3698 != NULL) + { + animPos = unk83A3698->animPos[1]; + if (sprite->animCmdIndex <= unk83A3698->animPos[0]) + { + animPos = unk83A3698->animPos[0]; + } + SeekSpriteAnim(sprite, animPos); + } + } +} + +// file boundary? + +u8 GetDirectionToFace(s16 x1, s16 y1, s16 x2, s16 y2) +{ + if (x1 > x2) + { + return DIR_WEST; + } + if (x1 < x2) + { + return DIR_EAST; + } + if (y1 > y2) + { + return DIR_NORTH; + } + return DIR_SOUTH; +} + +void SetTrainerMovementType(struct ObjectEvent *objectEvent, u8 movementType) +{ + objectEvent->movementType = movementType; + objectEvent->directionSequenceIndex = 0; + objectEvent->playerCopyableMovement = 0; + gSprites[objectEvent->spriteId].callback = sMovementTypeCallbacks[movementType]; + gSprites[objectEvent->spriteId].data[1] = 0; +} + +u8 GetTrainerFacingDirectionMovementType(u8 direction) +{ + return gTrainerFacingDirectionMovementTypes[direction]; +} + +static u8 GetCollisionInDirection(struct ObjectEvent *objectEvent, u8 direction) +{ + s16 x; + s16 y; + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + MoveCoords(direction, &x, &y); + return GetCollisionAtCoords(objectEvent, x, y, direction); +} + +u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) +{ + u8 direction = dir; + if (IsCoordOutsideObjectEventMovementRange(objectEvent, x, y)) + return COLLISION_OUTSIDE_RANGE; + else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(objectEvent, x, y, direction)) + return COLLISION_IMPASSABLE; + else if (objectEvent->trackedByCamera && !CanCameraMoveInDirection(direction)) + return COLLISION_IMPASSABLE; + else if (IsZCoordMismatchAt(objectEvent->currentElevation, x, y)) + return COLLISION_ELEVATION_MISMATCH; + else if (DoesObjectCollideWithObjectAt(objectEvent, x, y)) + return COLLISION_OBJECT_EVENT; + return COLLISION_NONE; +} + +u8 GetCollisionFlagsAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 direction) +{ + u8 flags = 0; + + if (IsCoordOutsideObjectEventMovementRange(objectEvent, x, y)) + flags |= 1; + if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(objectEvent, x, y, direction) || (objectEvent->trackedByCamera && !CanCameraMoveInDirection(direction))) + flags |= 2; + if (IsZCoordMismatchAt(objectEvent->currentElevation, x, y)) + flags |= 4; + if (DoesObjectCollideWithObjectAt(objectEvent, x, y)) + flags |= 8; + return flags; +} + +static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *objectEvent, s16 x, s16 y) +{ + s16 left; + s16 right; + s16 top; + s16 bottom; + + if (objectEvent->range.as_nybbles.x != 0) + { + left = objectEvent->initialCoords.x - objectEvent->range.as_nybbles.x; + right = objectEvent->initialCoords.x + objectEvent->range.as_nybbles.x; + if (left > x || right < x) + { + return TRUE; + } + } + if (objectEvent->range.as_nybbles.y != 0) + { + top = objectEvent->initialCoords.y - objectEvent->range.as_nybbles.y; + bottom = objectEvent->initialCoords.y + objectEvent->range.as_nybbles.y; + if (top > y || bottom < y) + { + return TRUE; + } + } + return FALSE; +} + +static bool8 IsMetatileDirectionallyImpassable(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 direction) +{ + if (gOppositeDirectionBlockedMetatileFuncs[direction - 1](objectEvent->currentMetatileBehavior) + || gDirectionBlockedMetatileFuncs[direction - 1](MapGridGetMetatileBehaviorAt(x, y))) + { + return TRUE; + } + return FALSE; +} + +static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *objectEvent, s16 x, s16 y) +{ + u8 i; + struct ObjectEvent *curObject; + + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + curObject = &gObjectEvents[i]; + if (curObject->active && curObject != objectEvent) + { + if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y)) + { + if (AreZCoordsCompatible(objectEvent->currentElevation, curObject->currentElevation)) + { + return TRUE; + } + } + } + } + return FALSE; +} + +bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup) +{ + u8 objectEventId; + + if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId) + && gSprites[gObjectEvents[objectEventId].spriteId].data[7] & 2) + { + return TRUE; + } + + return FALSE; +} + +void sub_80639D4(u8 localId, u8 mapNum, u8 mapGroup) +{ + u8 objectEventId; + + if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) + { + gSprites[gObjectEvents[objectEventId].spriteId].data[7] |= 0x04; + } +} + +void MoveCoords(u8 direction, s16 *x, s16 *y) +{ + *x += sDirectionToVectors[direction].x; + *y += sDirectionToVectors[direction].y; +} + +void sub_8063A44(u8 direction, s16 *x, s16 *y) +{ + *x += sDirectionToVectors[direction].x << 4; + *y += sDirectionToVectors[direction].y << 4; +} + +static void MoveCoordsInDirection(u32 dir, s16 *x, s16 *y, s16 deltaX, s16 deltaY) +{ + u8 direction = dir; + s16 dx2 = (u16)deltaX; + s16 dy2 = (u16)deltaY; + if (sDirectionToVectors[direction].x > 0) + *x += dx2; + if (sDirectionToVectors[direction].x < 0) + *x -= dx2; + if (sDirectionToVectors[direction].y > 0) + *y += dy2; + if (sDirectionToVectors[direction].y < 0) + *y -= dy2; +} + +void sub_8063AD4(s16 x, s16 y, s16 *destX, s16 *destY) +{ + *destX = (x - gSaveBlock1Ptr->pos.x) << 4; + *destY = (y - gSaveBlock1Ptr->pos.y) << 4; + *destX -= gTotalCameraPixelOffsetX; + *destY -= gTotalCameraPixelOffsetY; +} + +void SetSpritePosToMapCoords(s16 mapX, s16 mapY, s16 *destX, s16 *destY) +{ + s16 dx = -gTotalCameraPixelOffsetX - gFieldCamera.x; + s16 dy = -gTotalCameraPixelOffsetY - gFieldCamera.y; + if (gFieldCamera.x > 0) + dx += 1 << 4; + + if (gFieldCamera.x < 0) + dx -= 1 << 4; + + if (gFieldCamera.y > 0) + dy += 1 << 4; + + if (gFieldCamera.y < 0) + dy -= 1 << 4; + + *destX = ((mapX - gSaveBlock1Ptr->pos.x) << 4) + dx; + *destY = ((mapY - gSaveBlock1Ptr->pos.y) << 4) + dy; +} + +void sub_8063BC4(s16 *x, s16 *y, s16 dx, s16 dy) +{ + SetSpritePosToMapCoords(*x, *y, x, y); + *x += dx; + *y += dy; +} + +static void GetObjectEventMovingCameraOffset(s16 *x, s16 *y) +{ + *x = 0; + *y = 0; + if (gFieldCamera.x > 0) + { + (*x)++; + } + if (gFieldCamera.x < 0) + { + (*x) --; + } + if (gFieldCamera.y > 0) + { + (*y)++; + } + if (gFieldCamera.y < 0) + { + (*y) --; + } +} + +void ObjectEventMoveDestCoords(struct ObjectEvent *objectEvent, u32 direction, s16 *x, s16 *y) +{ + u8 newDirn = direction; + *x = objectEvent->currentCoords.x; + *y = objectEvent->currentCoords.y; + MoveCoords(newDirn, x, y); +} + +bool8 ObjectEventIsMovementOverridden(struct ObjectEvent *objectEvent) +{ + if (objectEvent->singleMovementActive || objectEvent->heldMovementActive) + return TRUE; + + return FALSE; +} + +bool8 ObjectEventIsHeldMovementActive(struct ObjectEvent *objectEvent) +{ + if (objectEvent->heldMovementActive && objectEvent->movementActionId != 0xFF) + return TRUE; + + return FALSE; +} + +bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementActionId) +{ + if(sub_8112CAC() == TRUE) + ObjectEventClearHeldMovementIfActive(objectEvent); + else if (ObjectEventIsMovementOverridden(objectEvent)) + return TRUE; + + UnfreezeObjectEvent(objectEvent); + objectEvent->movementActionId = movementActionId; + objectEvent->heldMovementActive = TRUE; + objectEvent->heldMovementFinished = FALSE; + gSprites[objectEvent->spriteId].data[2] = 0; + return FALSE; +} + +void ObjectEventForceSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementActionId) +{ + ObjectEventClearHeldMovementIfActive(objectEvent); + ObjectEventSetHeldMovement(objectEvent, movementActionId); +} + +void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *objectEvent) +{ + if (objectEvent->heldMovementActive) + ObjectEventClearHeldMovement(objectEvent); +} + +void ObjectEventClearHeldMovement(struct ObjectEvent *objectEvent) +{ + objectEvent->movementActionId = 0xFF; + objectEvent->heldMovementActive = FALSE; + objectEvent->heldMovementFinished = FALSE; + gSprites[objectEvent->spriteId].data[1] = 0; + gSprites[objectEvent->spriteId].data[2] = 0; +} + +u8 ObjectEventCheckHeldMovementStatus(struct ObjectEvent *objectEvent) +{ + if (objectEvent->heldMovementActive) + return objectEvent->heldMovementFinished; + + return 16; +} + +u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *objectEvent) +{ + u8 heldMovementStatus = ObjectEventCheckHeldMovementStatus(objectEvent); + if (heldMovementStatus != 0 && heldMovementStatus != 16) + ObjectEventClearHeldMovementIfActive(objectEvent); + + return heldMovementStatus; +} + +u8 ObjectEventGetHeldMovementActionId(struct ObjectEvent *objectEvent) +{ + if (objectEvent->heldMovementActive) + return objectEvent->movementActionId; + + return 0xFF; +} + +void UpdateObjectEventCurrentMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite, bool8 (*callback)(struct ObjectEvent *, struct Sprite *)) +{ + DoGroundEffects_OnSpawn(objectEvent, sprite); + TryEnableObjectEventAnim(objectEvent, sprite); + if (ObjectEventIsHeldMovementActive(objectEvent)) + { + ObjectEventExecHeldMovementAction(objectEvent, sprite); + } + else if (!objectEvent->frozen) + { + while (callback(objectEvent, sprite)); + } + DoGroundEffects_OnBeginStep(objectEvent, sprite); + DoGroundEffects_OnFinishStep(objectEvent, sprite); + UpdateObjectEventSpriteAnimPause(objectEvent, sprite); + UpdateObjectEventVisibility(objectEvent, sprite); + ObjectEventUpdateSubpriority(objectEvent, sprite); +} + +void sub_8063E28(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + DoGroundEffects_OnSpawn(objectEvent, sprite); + TryEnableObjectEventAnim(objectEvent, sprite); + if (ObjectEventIsHeldMovementActive(objectEvent)) + { + if(!sprite->animBeginning) + sub_8064544(objectEvent, sprite); + } + + if (MetatileBehavior_IsIce_2(objectEvent->currentMetatileBehavior) == TRUE + || MetatileBehavior_IsUnknownMovement48(objectEvent->currentMetatileBehavior) == TRUE) + objectEvent->disableAnim = TRUE; + else + objectEvent->disableAnim = FALSE; + DoGroundEffects_OnBeginStep(objectEvent, sprite); + DoGroundEffects_OnFinishStep(objectEvent, sprite); + UpdateObjectEventSpriteAnimPause(objectEvent, sprite); + UpdateObjectEventVisibility(objectEvent, sprite); + ObjectEventUpdateSubpriority(objectEvent, sprite); +} + +#define dirn_to_anim(name, table)\ +u8 name(u32 idx)\ +{\ + u8 direction;\ + u8 animIds[sizeof(table)];\ + direction = idx;\ + memcpy(animIds, (table), sizeof(table));\ + if (direction > DIR_EAST) direction = 0;\ + return animIds[direction];\ +} + +dirn_to_anim(GetFaceDirectionMovementAction, gFaceDirectionMovementActions); +dirn_to_anim(GetWalkSlowMovementAction, gWalkSlowMovementActions); + +u8 sub_8063F10(u32 idx) +{ + u8 direction; + + direction = idx; + + if (direction > DIR_EAST) + direction = 0; + return gUnknown_83A64F6[direction]; +} + +dirn_to_anim(sub_8063F2C, gUnknown_83A64FB); +dirn_to_anim(sub_8063F58, gUnknown_83A6500); +dirn_to_anim(GetWalkNormalMovementAction, gUnknown_83A6505); +dirn_to_anim(GetWalkFastMovementAction, gUnknown_83A650A); +dirn_to_anim(sub_8063FDC, gUnknown_83A650F); +dirn_to_anim(sub_8064008, gUnknown_83A6514); +dirn_to_anim(GetWalkFastestMovementAction, gUnknown_83A6519); +dirn_to_anim(GetSlideMovementAction, gUnknown_83A651E); +dirn_to_anim(sub_806408C, gUnknown_83A6523); +dirn_to_anim(sub_80640B8, gUnknown_83A6528); +dirn_to_anim(sub_80640E4, gUnknown_83A652D); +dirn_to_anim(GetJump2MovementAction, gUnknown_83A6532); +dirn_to_anim(GetJumpInPlaceMovementAction, gUnknown_83A6537); +dirn_to_anim(sub_8064168, gUnknown_83A653C); +dirn_to_anim(GetJumpMovementAction, gUnknown_83A6541); +dirn_to_anim(sub_80641C0, gUnknown_83A6546); +dirn_to_anim(sub_80641EC, gUnknown_83A654B); +dirn_to_anim(GetStepInPlaceDelay32AnimId, gUnknown_83A6550); +dirn_to_anim(GetWalkInPlaceNormalMovementAction, gUnknown_83A6555); +dirn_to_anim(GetWalkInPlaceSlowMovementAction, gUnknown_83A655A); +dirn_to_anim(GetWalkInPlaceFastMovementAction, gUnknown_83A655F); + +bool8 ObjectEventFaceOppositeDirection(struct ObjectEvent *objectEvent, u8 direction) +{ + return ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(GetOppositeDirection(direction))); +} + +dirn_to_anim(sub_80642F4, gUnknown_83A6564); +dirn_to_anim(sub_8064320, gUnknown_83A6569); +dirn_to_anim(sub_806434C, gUnknown_83A656E); +dirn_to_anim(sub_8064378, gUnknown_83A6573); +dirn_to_anim(sub_80643A4, gUnknown_83A6578); +dirn_to_anim(sub_80643D0, gUnknown_83A657D); +dirn_to_anim(sub_80643FC, gUnknown_83A6582); +dirn_to_anim(sub_8064428, gUnknown_83A6587); +dirn_to_anim(sub_8064454, gUnknown_83A658C); + +u8 GetOppositeDirection(u8 direction) +{ + u8 directions[sizeof gOppositeDirections]; + + memcpy(directions, gOppositeDirections, sizeof gOppositeDirections); + if (direction < 1 || direction > (sizeof gOppositeDirections)) + { + return direction; + } + return directions[direction - 1]; +} + +static u32 zffu_offset_calc(u8 a0, u8 a1) +{ + return gUnknown_83A6599[a0 - 1][a1 - 1]; +} + +static u32 state_to_direction(u8 a0, u32 a1, u32 a2) +{ + u32 zffuOffset; + u8 a1_2; + u8 a2_2; + + a1_2 = a1; + a2_2 = a2; + if (a1_2 == 0 || a2_2 == 0 || a1_2 > DIR_EAST || a2_2 > DIR_EAST) + { + return 0; + } + zffuOffset = zffu_offset_calc(a1_2, a2); + return gUnknown_83A65A9[a0 - 1][zffuOffset - 1]; +} + +static void ObjectEventExecHeldMovementAction(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (gMovementActionFuncs[objectEvent->movementActionId][sprite->data[2]](objectEvent, sprite)) + { + objectEvent->heldMovementFinished = TRUE; + } +} + +static void sub_8064544(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (gMovementActionFuncs[objectEvent->movementActionId][sprite->data[2]](objectEvent, sprite)) + { + objectEvent->heldMovementFinished = TRUE; + if (objectEvent->graphicsId == 0x61) + sub_806DE28(objectEvent); + } +} + +static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (gMovementActionFuncs[objectEvent->movementActionId][sprite->data[2]](objectEvent, sprite)) + { + objectEvent->movementActionId = 0xFF; + sprite->data[2] = 0; + return TRUE; + } + return FALSE; +} + +static void ObjectEventSetSingleMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animId) +{ + objectEvent->movementActionId = animId; + sprite->data[2] = 0; + + if (gUnknown_3005E88 == 2) + { + sub_81124EC(objectEvent->localId, objectEvent->mapNum, objectEvent->mapGroup, animId); + } +} + +static void FaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + SetObjectEventDirection(objectEvent, direction); + ShiftStillObjectEventCoords(objectEvent); + obj_npc_animation_step(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); + sprite->animPaused = TRUE; + sprite->data[2] = 1; +} + +bool8 MovementAction_FaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + FaceDirection(objectEvent, sprite, DIR_SOUTH); + return TRUE; +} + +bool8 MovementAction_FaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + FaceDirection(objectEvent, sprite, DIR_NORTH); + return TRUE; +} + +bool8 MovementAction_FaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + FaceDirection(objectEvent, sprite, DIR_WEST); + return TRUE; +} + +bool8 MovementAction_FaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + FaceDirection(objectEvent, sprite, DIR_EAST); + return TRUE; +} + +void npc_apply_direction(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) +{ + s16 x; + s16 y; + + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + SetObjectEventDirection(objectEvent, direction); + MoveCoords(direction, &x, &y); + ShiftObjectEventCoords(objectEvent, x, y); + oamt_npc_ministep_reset(sprite, direction, speed); + sprite->animPaused = FALSE; + objectEvent->triggerGroundEffectsOnMove = TRUE; + sprite->data[2] = 1; +} + +void do_go_anim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) +{ + u8 (*functions[ARRAY_COUNT(gUnknown_83A6884)])(u8); + + memcpy(functions, gUnknown_83A6884, sizeof gUnknown_83A6884); + npc_apply_direction(objectEvent, sprite, direction, speed); + npc_apply_anim_looping(objectEvent, sprite, functions[speed](objectEvent->facingDirection)); +} + +void StartRunningAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + npc_apply_direction(objectEvent, sprite, direction, 1); + npc_apply_anim_looping(objectEvent, sprite, GetRunningDirectionAnimNum(objectEvent->facingDirection)); +} + +bool8 npc_obj_ministep_stop_on_arrival(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (obj_npc_ministep(sprite)) + { + ShiftStillObjectEventCoords(objectEvent); + objectEvent->triggerGroundEffectsOnStop = TRUE; + sprite->animPaused = TRUE; + return TRUE; + } + return FALSE; +} + +void sub_80647C0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + s16 x; + s16 y; + + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + SetObjectEventDirection(objectEvent, direction); + MoveCoords(direction, &x, &y); + ShiftObjectEventCoords(objectEvent, x, y); + sub_8068BBC(sprite, direction); + sprite->animPaused = FALSE; + objectEvent->triggerGroundEffectsOnMove = TRUE; + sprite->data[2] = 1; +} + +void sub_8064830(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + sub_80647C0(objectEvent, sprite, direction); + npc_apply_anim_looping(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); +} + +bool8 an_walk_any_2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8068BCC(sprite)) + { + ShiftStillObjectEventCoords(objectEvent); + objectEvent->triggerGroundEffectsOnStop = TRUE; + sprite->animPaused = TRUE; + return TRUE; + } + return FALSE; +} + +void sub_8064894(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + s16 x; + s16 y; + + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + SetObjectEventDirection(objectEvent, direction); + MoveCoords(direction, &x, &y); + ShiftObjectEventCoords(objectEvent, x, y); + sub_8068C58(sprite, direction); + sprite->animPaused = FALSE; + objectEvent->triggerGroundEffectsOnMove = TRUE; + sprite->data[2] = 1; +} + +void sub_8064904(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + sub_8064894(objectEvent, sprite, direction); + npc_apply_anim_looping(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); +} + +bool8 sub_8064930(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8068C68(sprite)) + { + ShiftStillObjectEventCoords(objectEvent); + objectEvent->triggerGroundEffectsOnStop = TRUE; + sprite->animPaused = TRUE; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x9B_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064904(objectEvent, sprite, DIR_SOUTH); + return MovementActionFunc_x9B_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x9B_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064930(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x9C_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064904(objectEvent, sprite, DIR_NORTH); + return MovementActionFunc_x9C_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x9C_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064930(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x9D_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064904(objectEvent, sprite, DIR_WEST); + return MovementActionFunc_x9D_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x9D_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064930(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x9E_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064904(objectEvent, sprite, DIR_EAST); + return MovementActionFunc_x9E_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x9E_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064930(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x08_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064830(objectEvent, sprite, DIR_SOUTH); + return MovementActionFunc_x08_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x08_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (an_walk_any_2(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x09_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064830(objectEvent, sprite, DIR_NORTH); + return MovementActionFunc_x09_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x09_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (an_walk_any_2(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x0A_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064830(objectEvent, sprite, DIR_WEST); + return MovementActionFunc_x0A_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x0A_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (an_walk_any_2(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x0B_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064830(objectEvent, sprite, DIR_EAST); + return MovementActionFunc_x0B_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x0B_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (an_walk_any_2(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +void sub_8064B68(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + s16 x; + s16 y; + + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + SetObjectEventDirection(objectEvent, direction); + MoveCoords(direction, &x, &y); + ShiftObjectEventCoords(objectEvent, x, y); + sub_8068C08(sprite, direction); + sprite->animPaused = FALSE; + objectEvent->triggerGroundEffectsOnMove = TRUE; + sprite->data[2] = 1; +} + +void sub_8064BD8(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + sub_8064B68(objectEvent, sprite, direction); + npc_apply_anim_looping(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); +} + +bool8 sub_8064C04(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8068C18(sprite)) + { + ShiftStillObjectEventCoords(objectEvent); + objectEvent->triggerGroundEffectsOnStop = TRUE; + sprite->animPaused = TRUE; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x0D_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064BD8(objectEvent, sprite, DIR_NORTH); + return MovementActionFunc_x0D_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x0D_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064C04(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x0C_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064BD8(objectEvent, sprite, DIR_SOUTH); + return MovementActionFunc_x0C_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x0C_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064C04(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x0E_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064BD8(objectEvent, sprite, DIR_WEST); + return MovementActionFunc_x0E_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x0E_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064C04(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x0F_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064BD8(objectEvent, sprite, DIR_EAST); + return MovementActionFunc_x0F_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x0F_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064C04(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_WalkNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_SOUTH, 0); + return MovementAction_WalkNormalDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_WalkNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_NORTH, 0); + return MovementAction_WalkNormalUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_WalkNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_WEST, 0); + return MovementAction_WalkNormalLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_WalkNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_EAST, 0); + return MovementAction_WalkNormalRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkNormalRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +void sub_8064E3C(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a5) +{ + s16 displacements[ARRAY_COUNT(gUnknown_83A6958)]; + s16 x; + s16 y; + + memcpy(displacements, gUnknown_83A6958, sizeof gUnknown_83A6958); + x = 0; + y = 0; + SetObjectEventDirection(objectEvent, direction); + MoveCoordsInDirection(direction, &x, &y, displacements[speed], displacements[speed]); + ShiftObjectEventCoords(objectEvent, objectEvent->currentCoords.x + x, objectEvent->currentCoords.y + y); + sub_8068D1C(sprite, direction, speed, a5); + sprite->data[2] = 1; + sprite->animPaused = 0; + objectEvent->triggerGroundEffectsOnMove = 1; + objectEvent->disableCoveringGroundEffects = 1; +} + +void maybe_shadow_1(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a4) +{ + sub_8064E3C(objectEvent, sprite, direction, speed, a4); + npc_apply_anim_looping(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); + DoShadowFieldEffect(objectEvent); +} + +u8 sub_8064F3C(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 callback(struct Sprite *)) +{ + s16 displacements[ARRAY_COUNT(gUnknown_83A695E)]; + s16 x; + s16 y; + u8 result; + + memcpy(displacements, gUnknown_83A695E, sizeof gUnknown_83A695E); + result = callback(sprite); + if (result == 1 && displacements[sprite->data[4]] != 0) + { + x = 0; + y = 0; + MoveCoordsInDirection(objectEvent->movementDirection, &x, &y, displacements[sprite->data[4]], displacements[sprite->data[4]]); + ShiftObjectEventCoords(objectEvent, objectEvent->currentCoords.x + x, objectEvent->currentCoords.y + y); + objectEvent->triggerGroundEffectsOnMove = TRUE; + objectEvent->disableCoveringGroundEffects = TRUE; + } + else if (result == 0xFF) + { + ShiftStillObjectEventCoords(objectEvent); + objectEvent->triggerGroundEffectsOnStop = TRUE; + objectEvent->landingJump = TRUE; + sprite->animPaused = TRUE; + } + return result; +} + +u8 sub_8065000(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + return sub_8064F3C(objectEvent, sprite, sub_8068D3C); +} + +u8 sub_8065014(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + return sub_8064F3C(objectEvent, sprite, sub_8068DC4); +} + +bool8 sub_8065028(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065000(objectEvent, sprite) == 0xFF) + { + return TRUE; + } + return FALSE; +} + +bool8 sub_8065040(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065014(objectEvent, sprite) == 0xFF) + { + return TRUE; + } + return FALSE; +} + +bool8 sub_8065058(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + switch (sub_8065000(objectEvent, sprite)) + { + case 255: + return TRUE; + case 1: + SetObjectEventDirection(objectEvent, GetOppositeDirection(objectEvent->movementDirection)); + obj_npc_animation_step(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); + default: + return FALSE; + } +} + +bool8 MovementAction_Jump2Down_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 2, 0); + return MovementAction_Jump2Down_Step1(objectEvent, sprite); +} + +bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_Jump2Up_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 2, 0); + return MovementAction_Jump2Up_Step1(objectEvent, sprite); +} + +bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_Jump2Left_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_WEST, 2, 0); + return MovementAction_Jump2Left_Step1(objectEvent, sprite); +} + +bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_Jump2Right_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_EAST, 2, 0); + return MovementAction_Jump2Right_Step1(objectEvent, sprite); +} + +bool8 MovementAction_Jump2Right_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +void sub_8065208(struct Sprite *sprite, u16 duration) +{ + sprite->data[2] = 1; + sprite->data[3] = duration; +} + +bool8 MovementAction_Delay_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (-- sprite->data[3] == 0) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_Delay1_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8065208(sprite, 1); + return MovementAction_Delay_Step1(objectEvent, sprite); +} + +bool8 MovementAction_Delay2_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8065208(sprite, 2); + return MovementAction_Delay_Step1(objectEvent, sprite); +} + +bool8 MovementAction_Delay4_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8065208(sprite, 4); + return MovementAction_Delay_Step1(objectEvent, sprite); +} + +bool8 MovementAction_Delay8_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8065208(sprite, 8); + return MovementAction_Delay_Step1(objectEvent, sprite); +} + +bool8 MovementAction_Delay16_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8065208(sprite, 16); + return MovementAction_Delay_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_SOUTH, 1); + return MovementAction_WalkFastDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_WalkFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_NORTH, 1); + return MovementAction_WalkFastUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_WalkFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_WEST, 1); + return MovementAction_WalkFastLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_WalkFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_EAST, 1); + return MovementAction_WalkFastRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkFastRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80653CC(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (obj_npc_ministep(sprite)) + { + ShiftStillObjectEventCoords(objectEvent); + objectEvent->triggerGroundEffectsOnStop = TRUE; + return TRUE; + } + return FALSE; +} + +u8 MovementActionFunc_xA0_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if(objectEvent->facingDirection != DIR_SOUTH) + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_SOUTH)); + + npc_apply_direction(objectEvent, sprite, DIR_SOUTH, 1); + return MovementActionFunc_xA0_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_xA0_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + AnimateSprite(sprite); + if (sub_80653CC(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +u8 MovementActionFunc_xA1_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if(objectEvent->facingDirection != DIR_NORTH) + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_NORTH)); + + npc_apply_direction(objectEvent, sprite, DIR_NORTH, 1); + return MovementActionFunc_xA1_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_xA1_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + AnimateSprite(sprite); + if (sub_80653CC(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +u8 MovementActionFunc_xA2_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if(objectEvent->facingDirection != DIR_WEST) + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_WEST)); + + npc_apply_direction(objectEvent, sprite, DIR_WEST, 1); + return MovementActionFunc_xA2_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_xA2_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + AnimateSprite(sprite); + if (sub_80653CC(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +u8 MovementActionFunc_xA3_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if(objectEvent->facingDirection != DIR_EAST) + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_EAST)); + + npc_apply_direction(objectEvent, sprite, DIR_EAST, 1); + return MovementActionFunc_xA3_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_xA3_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + AnimateSprite(sprite); + if (sub_80653CC(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +void sub_80655A8(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + SetObjectEventDirection(objectEvent, direction); + ShiftStillObjectEventCoords(objectEvent); + sprite->animPaused = FALSE; + sprite->data[2] = 1; +} + +u8 MovementActionFunc_x04_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if(objectEvent->facingDirection != DIR_SOUTH) + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_SOUTH)); + + AnimateSprite(sprite); + sub_80655A8(objectEvent, sprite, DIR_SOUTH); + return TRUE; +} + +u8 MovementActionFunc_x05_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if(objectEvent->facingDirection != DIR_NORTH) + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_NORTH)); + + AnimateSprite(sprite); + sub_80655A8(objectEvent, sprite, DIR_NORTH); + return TRUE; +} + +u8 MovementActionFunc_x06_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if(objectEvent->facingDirection != DIR_WEST) + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_WEST)); + + AnimateSprite(sprite); + sub_80655A8(objectEvent, sprite, DIR_WEST); + return TRUE; +} + +u8 MovementActionFunc_x07_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if(objectEvent->facingDirection != DIR_EAST) + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_EAST)); + + AnimateSprite(sprite); + sub_80655A8(objectEvent, sprite, DIR_EAST); + return TRUE; +} + +void sub_80656C4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 animNum, u16 duration) +{ + SetObjectEventDirection(objectEvent, direction); + npc_apply_anim_looping(objectEvent, sprite, animNum); + sprite->animPaused = FALSE; + sprite->data[2] = 1; + sprite->data[3] = duration; +} + +bool8 MovementAction_WalkInPlace_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (-- sprite->data[3] == 0) + { + sprite->data[2] = 2; + sprite->animPaused = TRUE; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_WalkInPlaceSlow_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sprite->data[3] & 1) + { + sprite->animDelayCounter++; + } + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceSlowDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 32); + return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceSlowUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 32); + return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceSlowLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 32); + return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceSlowRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 32); + return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 16); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 16); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 16); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 16); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastAnimNum(DIR_SOUTH), 8); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFastAnimNum(DIR_NORTH), 8); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_WEST, GetMoveDirectionFastAnimNum(DIR_WEST), 8); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_EAST, GetMoveDirectionFastAnimNum(DIR_EAST), 8); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceFastestDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFasterAnimNum(DIR_SOUTH), 4); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceFastestUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFasterAnimNum(DIR_NORTH), 4); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceFastestLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_WEST, GetMoveDirectionFasterAnimNum(DIR_WEST), 4); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkInPlaceFastestRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_EAST, GetMoveDirectionFasterAnimNum(DIR_EAST), 4); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementAction_RideWaterCurrentDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_SOUTH, 2); + return MovementAction_RideWaterCurrentDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_RideWaterCurrentDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_RideWaterCurrentUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_NORTH, 2); + return MovementAction_RideWaterCurrentUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_RideWaterCurrentUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_RideWaterCurrentLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_WEST, 2); + return MovementAction_RideWaterCurrentLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_RideWaterCurrentLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_RideWaterCurrentRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_EAST, 2); + return MovementAction_RideWaterCurrentRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_RideWaterCurrentRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_WalkFastestDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_SOUTH, 3); + return MovementAction_WalkFastestDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkFastestDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_WalkFastestUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_NORTH, 3); + return MovementAction_WalkFastestUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkFastestUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_WalkFastestLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_WEST, 3); + return MovementAction_WalkFastestLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkFastestLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_WalkFastestRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_EAST, 3); + return MovementAction_WalkFastestRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkFastestRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_SlideDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_SOUTH, 4); + return MovementAction_SlideDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_SlideDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_SlideUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_NORTH, 4); + return MovementAction_SlideUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_SlideUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_SlideLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_WEST, 4); + return MovementAction_SlideLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_SlideLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_SlideRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + do_go_anim(objectEvent, sprite, DIR_EAST, 4); + return MovementAction_SlideRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_SlideRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_PlayerRunDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartRunningAnim(objectEvent, sprite, DIR_SOUTH); + return MovementAction_PlayerRunDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_PlayerRunDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_PlayerRunUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartRunningAnim(objectEvent, sprite, DIR_NORTH); + return MovementAction_PlayerRunUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_PlayerRunUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_PlayerRunLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartRunningAnim(objectEvent, sprite, DIR_WEST); + return MovementAction_PlayerRunLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_PlayerRunLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_PlayerRunRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartRunningAnim(objectEvent, sprite, DIR_EAST); + return MovementAction_PlayerRunRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_PlayerRunRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +void sub_8065EF0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + s16 x; + s16 y; + + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + SetObjectEventDirection(objectEvent, direction); + MoveCoords(direction, &x, &y); + ShiftObjectEventCoords(objectEvent, x, y); + sub_8068CA4(sprite, direction); + sprite->animPaused = FALSE; + objectEvent->triggerGroundEffectsOnMove = TRUE; + sprite->data[2] = 1; +} + +void sub_8065F60(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + sub_8065EF0(objectEvent, sprite, direction); + npc_apply_anim_looping(objectEvent, sprite, GetRunningDirectionAnimNum(objectEvent->facingDirection)); +} + +bool8 sub_8065F8C(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8068CB4(sprite)) + { + ShiftStillObjectEventCoords(objectEvent); + objectEvent->triggerGroundEffectsOnStop = TRUE; + sprite->animPaused = TRUE; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x41_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8065F60(objectEvent, sprite, DIR_SOUTH); + return MovementActionFunc_x41_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x41_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065F8C(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x42_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8065F60(objectEvent, sprite, DIR_NORTH); + return MovementActionFunc_x42_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x42_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065F8C(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x43_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8065F60(objectEvent, sprite, DIR_WEST); + return MovementActionFunc_x43_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x43_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065F8C(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x44_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8065F60(objectEvent, sprite, DIR_SOUTH); + return MovementActionFunc_x44_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x44_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065F8C(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +void StartSpriteAnimInDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 animNum) +{ + SetAndStartSpriteAnim(sprite, animNum, 0); + SetObjectEventDirection(objectEvent, direction); + sprite->data[2] = 1; +} + +bool8 MovementAction_StartAnimInDirection_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, objectEvent->movementDirection, sprite->animNum); + return FALSE; +} + +bool8 MovementAction_WaitSpriteAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (SpriteAnimEnded(sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +void sub_8066128(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + sub_8064E3C(objectEvent, sprite, direction, 1, 0); + StartSpriteAnim(sprite, GetJumpSpecialDirectionAnimNum(direction)); +} + +bool8 MovementAction_JumpSpecialDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066128(objectEvent, sprite, DIR_SOUTH); + return MovementAction_JumpSpecialDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpSpecialDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065040(objectEvent, sprite)) + { + sprite->data[2] = 2; + objectEvent->landingJump = FALSE; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpSpecialUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066128(objectEvent, sprite, DIR_NORTH); + return MovementAction_JumpSpecialUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpSpecialUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065040(objectEvent, sprite)) + { + sprite->data[2] = 2; + objectEvent->landingJump = FALSE; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpSpecialLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066128(objectEvent, sprite, DIR_WEST); + return MovementAction_JumpSpecialLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpSpecialLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065040(objectEvent, sprite)) + { + sprite->data[2] = 2; + objectEvent->landingJump = FALSE; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpSpecialRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066128(objectEvent, sprite, DIR_EAST); + return MovementAction_JumpSpecialRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpSpecialRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065040(objectEvent, sprite)) + { + sprite->data[2] = 2; + objectEvent->landingJump = FALSE; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_xA6_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066128(objectEvent, sprite, DIR_SOUTH); + return MovementActionFunc_xA6_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_xA6_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065040(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_xA7_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066128(objectEvent, sprite, DIR_NORTH); + return MovementActionFunc_xA7_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_xA7_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065040(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_xA8_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066128(objectEvent, sprite, DIR_WEST); + return MovementActionFunc_xA8_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_xA8_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065040(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_xA9_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066128(objectEvent, sprite, DIR_EAST); + return MovementActionFunc_xA9_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_xA9_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065040(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_FacePlayer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 playerObjectId; + + if (!TryGetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0, &playerObjectId)) + { + FaceDirection(objectEvent, sprite, GetDirectionToFace(objectEvent->currentCoords.x, objectEvent->currentCoords.y, gObjectEvents[playerObjectId].currentCoords.x, gObjectEvents[playerObjectId].currentCoords.y)); + } + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_FaceAwayPlayer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 playerObjectId; + + if (!TryGetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0, &playerObjectId)) + { + FaceDirection(objectEvent, sprite, GetOppositeDirection(GetDirectionToFace(objectEvent->currentCoords.x, objectEvent->currentCoords.y, gObjectEvents[playerObjectId].currentCoords.x, gObjectEvents[playerObjectId].currentCoords.y))); + } + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_LockFacingDirection_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->facingDirectionLocked = TRUE; + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_UnlockFacingDirection_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->facingDirectionLocked = FALSE; + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_JumpDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 1, 2); + return MovementAction_JumpDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = 0; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 1, 2); + return MovementAction_JumpUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = 0; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_WEST, 1, 2); + return MovementAction_JumpLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = 0; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_EAST, 1, 2); + return MovementAction_JumpRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = 0; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpInPlaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 0, 0); + return MovementAction_JumpInPlaceDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = 0; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpInPlaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 0, 0); + return MovementAction_JumpInPlaceUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = 0; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpInPlaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_WEST, 0, 0); + return MovementAction_JumpInPlaceLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = 0; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpInPlaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_EAST, 0, 0); + return MovementAction_JumpInPlaceRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = 0; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpInPlaceDownUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 0, 2); + return MovementAction_JumpInPlaceDownUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065058(objectEvent, sprite)) + { + objectEvent->hasShadow = 0; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpInPlaceUpDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 0, 2); + return MovementAction_JumpInPlaceUpDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065058(objectEvent, sprite)) + { + objectEvent->hasShadow = 0; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpInPlaceLeftRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_WEST, 0, 2); + return MovementAction_JumpInPlaceLeftRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065058(objectEvent, sprite)) + { + objectEvent->hasShadow = 0; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_JumpInPlaceRightLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + maybe_shadow_1(objectEvent, sprite, DIR_EAST, 0, 2); + return MovementAction_JumpInPlaceRightLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_JumpInPlaceRightLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065058(objectEvent, sprite)) + { + objectEvent->hasShadow = 0; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_FaceOriginalDirection_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + FaceDirection(objectEvent, sprite, gInitialMovementTypeFacingDirections[objectEvent->movementType]); + return TRUE; +} + +bool8 MovementAction_NurseJoyBowDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, DIR_SOUTH, 0x14); + return FALSE; +} + +bool8 MovementAction_EnableJumpLandingGroundEffect_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->disableJumpLandingGroundEffect = FALSE; + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_DisableJumpLandingGroundEffect_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->disableJumpLandingGroundEffect = TRUE; + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_DisableAnimation_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->inanimate = TRUE; + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_RestoreAnimation_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->inanimate = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->inanimate; + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_SetInvisible_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->invisible = TRUE; + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_SetVisible_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->invisible = FALSE; + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_EmoteExclamationMark_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON); + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_EmoteQuestionMark_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_QUESTION_MARK_ICON); + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_EmoteHeart_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_X_ICON); + sprite->data[2] = 1; + return TRUE; +} + +bool8 do_double_excl_bubble(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_DOUBLE_EXCL_MARK_ICON); + sprite->data[2] = 1; + return TRUE; +} + +bool8 do_smile_bubble(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_SMILEY_FACE_ICON); + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_RevealTrainer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (objectEvent->movementType == MOVEMENT_TYPE_HIDDEN) + { + MovementAction_RevealTrainer_RunTrainerSeeFuncList(objectEvent); + return FALSE; + } + if (objectEvent->movementType != MOVEMENT_TYPE_TREE_DISGUISE && objectEvent->movementType != MOVEMENT_TYPE_MOUNTAIN_DISGUISE) + { + sprite->data[2] = 2; + return TRUE; + } + sub_80DCBB8(objectEvent); + sprite->data[2] = 1; + return MovementAction_RevealTrainer_Step1(objectEvent, sprite); +} + +bool8 MovementAction_RevealTrainer_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_80DCBE0(objectEvent)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_RockSmashBreak_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + SetAndStartSpriteAnim(sprite, 1, 0); + sprite->data[2] = 1; + return FALSE; +} + +bool8 MovementAction_RockSmashBreak_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (SpriteAnimEnded(sprite)) + { + SetMovementDelay(sprite, 32); + sprite->data[2] = 2; + } + return FALSE; +} + +bool8 MovementAction_RockSmashBreak_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->invisible ^= TRUE; + if (WaitForMovementDelay(sprite)) + { + objectEvent->invisible = TRUE; + sprite->data[2] = 3; + } + return FALSE; +} + +bool8 MovementAction_CutTree_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + SetAndStartSpriteAnim(sprite, 1, 0); + sprite->data[2] = 1; + return FALSE; +} + +bool8 MovementAction_CutTree_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (SpriteAnimEnded(sprite)) + { + SetMovementDelay(sprite, 32); + sprite->data[2] = 2; + } + return FALSE; +} + +bool8 MovementAction_CutTree_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->invisible ^= TRUE; + if (WaitForMovementDelay(sprite)) + { + objectEvent->invisible = TRUE; + sprite->data[2] = 3; + } + return FALSE; +} + +bool8 MovementAction_SetFixedPriority_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->fixedPriority = TRUE; + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_ClearFixedPriority_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + objectEvent->fixedPriority = FALSE; + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_InitAffineAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE; + InitSpriteAffineAnim(sprite); + sprite->affineAnimPaused = TRUE; + sprite->subspriteMode = SUBSPRITES_OFF; + return TRUE; +} + +bool8 MovementAction_ClearAffineAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + FreeOamMatrix(sprite->oam.matrixNum); + sprite->oam.affineMode = ST_OAM_AFFINE_OFF; + CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); + return TRUE; +} + +bool8 MovementAction_WalkDownStartAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064830(objectEvent, sprite, DIR_SOUTH); + sprite->affineAnimPaused = FALSE; + StartSpriteAffineAnimIfDifferent(sprite, 0); + return MovementAction_WalkDownStartAffine_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkDownStartAffine_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (an_walk_any_2(objectEvent, sprite)) + { + sprite->affineAnimPaused = TRUE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_WalkDownAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064830(objectEvent, sprite, DIR_SOUTH); + sprite->affineAnimPaused = FALSE; + ChangeSpriteAffineAnimIfDifferent(sprite, 1); + return MovementAction_WalkDownAffine_Step1(objectEvent, sprite); +} + +bool8 MovementAction_WalkDownAffine_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (an_walk_any_2(objectEvent, sprite)) + { + sprite->affineAnimPaused = TRUE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +void sub_8066C70(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + SetObjectEventDirection(objectEvent, direction); + ShiftStillObjectEventCoords(objectEvent); + obj_npc_animation_step(objectEvent, sprite, GetFishingDirectionAnimNum(direction)); + sprite->animPaused = TRUE; + sprite->data[2] = 1; +} + +bool8 MovementActionFunc_x70_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066C70(objectEvent, sprite, DIR_SOUTH); + return TRUE; +} + +bool8 MovementActionFunc_x71_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066C70(objectEvent, sprite, DIR_NORTH); + return TRUE; +} + +bool8 MovementActionFunc_x72_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066C70(objectEvent, sprite, DIR_WEST); + return TRUE; +} + +bool8 MovementActionFunc_x73_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066C70(objectEvent, sprite, DIR_EAST); + return TRUE; +} + +bool8 MovementAction_AcroPopWheelieDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, DIR_SOUTH, GetAcroWheelieDirectionAnimNum(DIR_SOUTH)); + return FALSE; +} + +bool8 MovementAction_AcroPopWheelieUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, DIR_NORTH, GetAcroWheelieDirectionAnimNum(DIR_NORTH)); + return FALSE; +} + +bool8 MovementAction_AcroPopWheelieLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, DIR_WEST, GetAcroWheelieDirectionAnimNum(DIR_WEST)); + return FALSE; +} + +bool8 MovementAction_AcroPopWheelieRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, DIR_EAST, GetAcroWheelieDirectionAnimNum(DIR_EAST)); + return FALSE; +} + +bool8 MovementAction_AcroEndWheelieFaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, DIR_SOUTH, GetAcroEndWheelieDirectionAnimNum(DIR_SOUTH)); + return FALSE; +} + +bool8 MovementAction_AcroEndWheelieFaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, DIR_NORTH, GetAcroEndWheelieDirectionAnimNum(DIR_NORTH)); + return FALSE; +} + +bool8 MovementAction_AcroEndWheelieFaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, DIR_WEST, GetAcroEndWheelieDirectionAnimNum(DIR_WEST)); + return FALSE; +} + +bool8 MovementAction_AcroEndWheelieFaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, DIR_EAST, GetAcroEndWheelieDirectionAnimNum(DIR_EAST)); + return FALSE; +} + +bool8 MovementAction_UnusedAcroActionDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, DIR_SOUTH, GetAcroWheeliePedalDirectionAnimNum(DIR_SOUTH)); + return FALSE; +} + +bool8 MovementAction_UnusedAcroActionUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, DIR_NORTH, GetAcroWheeliePedalDirectionAnimNum(DIR_NORTH)); + return FALSE; +} + +bool8 MovementAction_UnusedAcroActionLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, DIR_WEST, GetAcroWheeliePedalDirectionAnimNum(DIR_WEST)); + return FALSE; +} + +bool8 MovementAction_UnusedAcroActionRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnimInDirection(objectEvent, sprite, DIR_EAST, GetAcroWheeliePedalDirectionAnimNum(DIR_EAST)); + return FALSE; +} + +void sub_8066EA0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a4) +{ + sub_8064E3C(objectEvent, sprite, direction, speed, a4); + StartSpriteAnimIfDifferent(sprite, GetAcroWheelieDirectionAnimNum(direction)); + DoShadowFieldEffect(objectEvent); +} + +bool8 MovementAction_AcroWheelieHopFaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066EA0(objectEvent, sprite, DIR_SOUTH, 0, 1); + return MovementAction_AcroWheelieHopFaceDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieHopFaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066EA0(objectEvent, sprite, DIR_NORTH, 0, 1); + return MovementAction_AcroWheelieHopFaceUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieHopFaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066EA0(objectEvent, sprite, DIR_WEST, 0, 1); + return MovementAction_AcroWheelieHopFaceLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieHopFaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066EA0(objectEvent, sprite, DIR_EAST, 0, 1); + return MovementAction_AcroWheelieHopFaceRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieHopDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066EA0(objectEvent, sprite, DIR_SOUTH, 1, 1); + return MovementAction_AcroWheelieHopDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieHopUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066EA0(objectEvent, sprite, DIR_NORTH, 1, 1); + return MovementAction_AcroWheelieHopUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieHopLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066EA0(objectEvent, sprite, DIR_WEST, 1, 1); + return MovementAction_AcroWheelieHopLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieHopRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066EA0(objectEvent, sprite, DIR_EAST, 1, 1); + return MovementAction_AcroWheelieHopRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieJumpDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066EA0(objectEvent, sprite, DIR_SOUTH, 2, 0); + return MovementAction_AcroWheelieJumpDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieJumpUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066EA0(objectEvent, sprite, DIR_NORTH, 2, 0); + return MovementAction_AcroWheelieJumpUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieJumpLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066EA0(objectEvent, sprite, DIR_WEST, 2, 0); + return MovementAction_AcroWheelieJumpLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieJumpRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066EA0(objectEvent, sprite, DIR_EAST, 2, 0); + return MovementAction_AcroWheelieJumpRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065028(objectEvent, sprite)) + { + objectEvent->hasShadow = FALSE; + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x88_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_SOUTH, GetFishingDirectionAnimNum(DIR_SOUTH), 8); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x89_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_NORTH, GetFishingDirectionAnimNum(DIR_NORTH), 8); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x8A_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_WEST, GetFishingDirectionAnimNum(DIR_WEST), 8); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x8B_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_EAST, GetFishingDirectionAnimNum(DIR_EAST), 8); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +void sub_80673E4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) +{ + npc_apply_direction(objectEvent, sprite, direction, speed); + StartSpriteAnim(sprite, GetAcroWheelieDirectionAnimNum(objectEvent->facingDirection)); + SeekSpriteAnim(sprite, 0); +} + +bool8 MovementAction_AcroPopWheelieMoveDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80673E4(objectEvent, sprite, DIR_SOUTH, 1); + return MovementAction_AcroPopWheelieMoveDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroPopWheelieMoveDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroPopWheelieMoveUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80673E4(objectEvent, sprite, DIR_NORTH, 1); + return MovementAction_AcroPopWheelieMoveUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroPopWheelieMoveUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroPopWheelieMoveLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80673E4(objectEvent, sprite, DIR_WEST, 1); + return MovementAction_AcroPopWheelieMoveLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroPopWheelieMoveLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroPopWheelieMoveRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80673E4(objectEvent, sprite, DIR_EAST, 1); + return MovementAction_AcroPopWheelieMoveRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroPopWheelieMoveRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +void sub_806751C(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) +{ + npc_apply_direction(objectEvent, sprite, direction, speed); + npc_apply_anim_looping(objectEvent, sprite, GetFishingDirectionAnimNum(objectEvent->facingDirection)); +} + +bool8 MovementAction_AcroWheelieMoveDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_806751C(objectEvent, sprite, DIR_SOUTH, 1); + return MovementAction_AcroWheelieMoveDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieMoveDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieMoveUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_806751C(objectEvent, sprite, DIR_NORTH, 1); + return MovementAction_AcroWheelieMoveUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieMoveUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieMoveLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_806751C(objectEvent, sprite, DIR_WEST, 1); + return MovementAction_AcroWheelieMoveLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieMoveLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_AcroWheelieMoveRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_806751C(objectEvent, sprite, DIR_EAST, 1); + return MovementAction_AcroWheelieMoveRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_AcroWheelieMoveRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +void sub_806764C(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) +{ + npc_apply_direction(objectEvent, sprite, direction, speed); + npc_apply_anim_looping(objectEvent, sprite, GetAcroUnusedActionDirectionAnimNum(objectEvent->facingDirection)); + SeekSpriteAnim(sprite, 0); +} + +bool8 MovementActionFunc_x94_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_806764C(objectEvent, sprite, DIR_SOUTH, 1); + return MovementActionFunc_x94_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x94_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x95_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_806764C(objectEvent, sprite, DIR_NORTH, 1); + return MovementActionFunc_x95_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x95_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x96_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_806764C(objectEvent, sprite, DIR_WEST, 1); + return MovementActionFunc_x96_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x96_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x97_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_806764C(objectEvent, sprite, DIR_EAST, 1); + return MovementActionFunc_x97_1(objectEvent, sprite); +} + +bool8 MovementActionFunc_x97_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementActionFunc_x98_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnim(sprite, 20); + sprite->animPaused = FALSE; + objectEvent->disableAnim = FALSE; + sprite->data[2] = 1; + sprite->data[4] = 0; + sprite->data[5] = 0; + sprite->data[6] = 0; + sprite->data[7] = 0; + return FALSE; +} + +bool8 MovementActionFunc_x98_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + return sprite->animEnded; +} + +bool8 MovementActionFunc_x99_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + s32 y; + switch (sprite->data[7]) + { + case 0: + if((sprite->data[6] += 10) > 127) + { + sprite->data[6] = 0; + sprite->data[5]++; + sprite->data[7] = sprite->data[5]; + StartSpriteAnim(sprite, 0); + sprite->animPaused = FALSE; + objectEvent->disableAnim = FALSE; + } + y = -(3 * gSineTable[sprite->data[6]] >> 7); + objectEvent->singleMovementActive = (-(sprite->pos2.y = y) | y) >> 31; + return FALSE; + case 1: + if (++sprite->data[4] > 16) + { + sprite->data[4] = 0; + StartSpriteAnim(sprite, 20); + sprite->animPaused = FALSE; + objectEvent->disableAnim = FALSE; + sprite->data[7] = 0; + } + else + { + objectEvent->singleMovementActive = FALSE; + } + return FALSE; + case 2: + objectEvent->singleMovementActive = FALSE; + if (++sprite->data[4] > 80) + { + sprite->data[4] = 0; + return TRUE; + } + else + { + return FALSE; + } + } + return FALSE; +} + +bool8 MovementActionFunc_x9A_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + bool8 ret; + sprite->data[7] = (sprite->data[7] + 4) & 0xFF; + sprite->pos2.x = gSineTable[sprite->data[7]] >> 7; + if (sprite->data[7] == 0) + ret = TRUE; + else + ret = FALSE; + return ret; +} + +bool8 MovementActionFunc_x9F_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnim(sprite, 28); + sprite->animPaused = FALSE; + objectEvent->disableAnim = FALSE; + sprite->data[2] = 1; + return FALSE; +} + +bool8 MovementActionFunc_x9F_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + return sprite->animEnded; +} + +u8 MovementAction_Finish(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + return TRUE; +} + +bool8 MovementAction_PauseSpriteAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->animPaused = TRUE; + return TRUE; +} + +bool8 MovementActionFunc_xA4_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->pos2.y = 0; + sprite->data[2]++; + return FALSE; +} + +bool8 MovementActionFunc_xA4_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->pos2.y -= 8; + if (sprite->pos2.y == -160) + sprite->data[2]++; + return FALSE; +} + +bool8 MovementActionFunc_xA5_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->pos2.y = -160; + sprite->data[2]++; + return FALSE; +} + +bool8 MovementActionFunc_xA5_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->pos2.y += 8; + if (sprite->pos2.y == 0) + sprite->data[2]++; + return FALSE; +} + +u8 MovementActionFunc_xA4_2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + return TRUE; +} + +static void UpdateObjectEventSpriteAnimPause(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (objectEvent->disableAnim) + { + sprite->animPaused = TRUE; + } +} + +static void TryEnableObjectEventAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (objectEvent->enableAnim) + { + sprite->animPaused = FALSE; + objectEvent->disableAnim = FALSE; + objectEvent->enableAnim = FALSE; + } +} + +static void UpdateObjectEventVisibility(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8067A10(objectEvent, sprite); + UpdateObjEventSpriteVisibility(objectEvent, sprite); +} + +static void sub_8067A10(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u16 x, y; + u16 x2, y2; + const struct ObjectEventGraphicsInfo *graphicsInfo; + s16 var; + + objectEvent->offScreen = FALSE; + graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + if (sprite->coordOffsetEnabled) + { + x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX; + y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY; + } + else + { + x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX; + y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY; + } + x2 = graphicsInfo->width + (s16)x; + y2 = graphicsInfo->height + (s16)y; + + if (*((u16 *)(&gSaveBlock1Ptr->location.mapGroup)) == 1025 && objectEvent->localId == 1) + { + var = 65504; + } + else + { + var = 65520; + } + if ((s16)x >= 0x100 || (s16)x2 < var) + { + objectEvent->offScreen = TRUE; + } + if ((s16)y >= 0xB0 || (s16)y2 < -0x10) + { + objectEvent->offScreen = TRUE; + } +} + +static void UpdateObjEventSpriteVisibility(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->invisible = FALSE; + if (objectEvent->invisible || objectEvent->offScreen) + { + sprite->invisible = TRUE; + } +}
\ No newline at end of file diff --git a/src/fame_checker.c b/src/fame_checker.c index a77c89c0d..7b71610ed 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -1004,7 +1004,7 @@ static void FCSetup_ResetTasksAndSpriteResources(void) ResetSpriteData(); ResetAllPicSprites(); ResetPaletteFade(); - npc_paltag_set_load(0); + InitObjectEventPalettes(0); gReservedSpritePaletteCount = 7; } diff --git a/src/field_camera.c b/src/field_camera.c index 365c1e8b4..40ab8f464 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -549,7 +549,7 @@ static void CameraPanningCB_PanAhead(void) gUnknown_3000E9C = 0; } - var = player_get_direction_upper_nybble(); + var = GetPlayerMovementDirection(); if (var == 2) { if (sVerticalCameraPan > -8) diff --git a/src/field_effect.c b/src/field_effect.c index 30ddf0a1b..082aee32d 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1863,7 +1863,7 @@ static bool8 LavaridgeGymB1FWarpExitEffect_3(struct Task * task, struct ObjectEv objectEvent->invisible = FALSE; CameraObjectReset1(); PlaySE(SE_W091); - ObjectEventSetHeldMovement(objectEvent, sub_8064194(DIR_EAST)); + ObjectEventSetHeldMovement(objectEvent, GetJumpMovementAction(DIR_EAST)); } return FALSE; } @@ -1949,7 +1949,7 @@ static bool8 LavaridgeGym1FWarpEffect_2(struct Task * task, struct ObjectEvent * } else { task->data[1]++; - ObjectEventSetHeldMovement(objectEvent, GetStepInPlaceDelay4AnimId(objectEvent->facingDirection)); + ObjectEventSetHeldMovement(objectEvent, GetWalkInPlaceFastMovementAction(objectEvent->facingDirection)); PlaySE(SE_FU_ZUZUZU); } } @@ -2063,7 +2063,7 @@ static void EscapeRopeFieldEffect_Step1(struct Task * task) } if (data[4] == 1 && !gPaletteFade.active && BGMusicStopped() == TRUE) { - ObjectEventSetDirection(playerObj, task->data[15]); + SetObjectEventDirection(playerObj, task->data[15]); sub_80555E0(); WarpIntoMap(); gFieldCallback = FieldCallback_EscapeRopeExit; @@ -3025,7 +3025,7 @@ static void UseVsSeekerEffect_3(struct Task * task) ObjectEventSetGraphicsId(playerObj, GetPlayerAvatarGraphicsIdByStateId(2)); else ObjectEventSetGraphicsId(playerObj, GetPlayerAvatarGraphicsIdByStateId(0)); - ObjectEventForceSetSpecialAnim(playerObj, GetFaceDirectionMovementAction(playerObj->facingDirection)); + ObjectEventForceSetHeldMovement(playerObj, GetFaceDirectionMovementAction(playerObj->facingDirection)); task->data[0]++; } } @@ -3202,7 +3202,7 @@ static void UseFlyEffect_7(struct Task * task) if ((++task->data[2]) >= 10) { struct ObjectEvent * objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; - ObjectEventClearAnimIfSpecialAnimActive(objectEvent); + ObjectEventClearHeldMovementIfActive(objectEvent); objectEvent->inanimate = FALSE; objectEvent->hasShadow = FALSE; sub_8087204(task->data[1], objectEvent->spriteId); @@ -3511,7 +3511,7 @@ static void FlyInEffect_4(struct Task * task) objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; sprite = &gSprites[objectEvent->spriteId]; objectEvent->inanimate = FALSE; - sub_805F724(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y); + MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y); sprite->pos2.x = 0; sprite->pos2.y = 0; sprite->coordOffsetEnabled = TRUE; @@ -3642,7 +3642,7 @@ u32 FldEff_MoveDeoxysRock(void) y = objectEvent->currentCoords.y - 7; x = (gFieldEffectArguments[3] - x) * 16; y = (gFieldEffectArguments[4] - y) * 16; - npc_coords_shift(objectEvent, gFieldEffectArguments[3] + 7, gFieldEffectArguments[4] + 7); + ShiftObjectEventCoords(objectEvent, gFieldEffectArguments[3] + 7, gFieldEffectArguments[4] + 7); taskId = CreateTask(Task_MoveDeoxysRock_Step, 0x50); gTasks[taskId].data[1] = objectEvent->spriteId; gTasks[taskId].data[2] = gSprites[objectEvent->spriteId].pos1.x + x; @@ -3681,7 +3681,7 @@ static void Task_MoveDeoxysRock_Step(u8 taskId) objectEvent = &gObjectEvents[data[9]]; sprite->pos1.x = data[2]; sprite->pos1.y = data[3]; - npc_coords_shift_still(objectEvent); + ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; FieldEffectActiveListRemove(FLDEFF_MOVE_DEOXYS_ROCK); DestroyTask(taskId); diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index e7ede9896..06d48fce0 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -253,7 +253,7 @@ void UpdateShadowFieldEffect(struct Sprite * sprite) sprite->pos1.x = linkedSprite->pos1.x; sprite->pos1.y = linkedSprite->pos1.y + sprite->data[3]; if (!objectEvent->active || !objectEvent->hasShadow - || MetatileBehavior_IsTallGrass(objectEvent->currentMetatileBehavior) + || MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfable(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfable(objectEvent->previousMetatileBehavior) || MetatileBehavior_IsReflective(objectEvent->currentMetatileBehavior) diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 6c3a37bb4..58f654110 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -753,7 +753,7 @@ static void sub_807E80C(u8 taskId) case 1: if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) { - ObjectEventClearAnimIfSpecialAnimActive(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)]); + ObjectEventClearHeldMovementIfActive(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)]); ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_UP); task->data[0] = 2; } @@ -853,13 +853,13 @@ static void sub_807EAC4(s16 a0, s16 a1, s16 *a2, s16 *a3, s16 *a4) playerSpr->pos2.y = *a3 >> 5; if (playerObj->heldMovementFinished) { - ObjectEventForceSetSpecialAnim(playerObj, GetStepInPlaceDelay16AnimId(GetPlayerFacingDirection())); + ObjectEventForceSetHeldMovement(playerObj, GetWalkInPlaceNormalMovementAction(GetPlayerFacingDirection())); } } static void sub_807EB64(u16 a0, s16 *a1, s16 *a2) { - ObjectEventForceSetSpecialAnim(&gObjectEvents[gPlayerAvatar.objectEventId], GetStepInPlaceDelay16AnimId(GetPlayerFacingDirection())); + ObjectEventForceSetHeldMovement(&gObjectEvents[gPlayerAvatar.objectEventId], GetWalkInPlaceNormalMovementAction(GetPlayerFacingDirection())); sub_807EBBC(a0, a1, a2); } @@ -931,7 +931,7 @@ static void sub_807ECBC(s16 *a0, s16 *a1, s16 *a2, s16 *a3, s16 *a4) r1 = 3; else r1 = 4; - ObjectEventForceSetSpecialAnim(&gObjectEvents[gPlayerAvatar.objectEventId], sub_8064270(r1)); + ObjectEventForceSetHeldMovement(&gObjectEvents[gPlayerAvatar.objectEventId], GetWalkInPlaceSlowMovementAction(r1)); sub_807EBBC(behavior, a0, a1); *a2 = *a0 * 16; *a3 = *a1 * 16; diff --git a/src/field_specials.c b/src/field_specials.c index 5be7a4d1c..ea4ed9449 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -323,6 +323,7 @@ void AnimatePcTurnOff() void SpawnCameraObject(void) { + u8 objectEventId = SpawnSpecialObjectEventParameterized(OBJ_EVENT_GFX_YOUNGSTER, 8, OBJ_EVENT_ID_CAMERA, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3); gObjectEvents[objectEventId].invisible = TRUE; CameraObjectSetFollowedObjectId(gObjectEvents[objectEventId].spriteId); diff --git a/src/fieldmap.c b/src/fieldmap.c index d7fe28c84..3e61c6c29 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -7,6 +7,8 @@ #include "quest_log.h" #include "fieldmap.h" +#define VMap gBackupMapLayout // Needed for AGB_ASSERT_EX to match + struct ConnectionFlags { u8 south:1; @@ -27,8 +29,8 @@ static struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y); static bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection); static bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset); -struct BackupMapLayout VMap; -static EWRAM_DATA u16 gBackupMapLayout[VIRTUAL_MAP_SIZE] = {}; +struct BackupMapLayout gBackupMapLayout; +EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {}; EWRAM_DATA struct MapHeader gMapHeader = {}; EWRAM_DATA struct Camera gCamera = {}; static EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {}; @@ -79,10 +81,10 @@ void InitMapFromSavedGame(void) static void InitMapLayoutData(struct MapHeader * mapHeader) { const struct MapLayout * mapLayout = mapHeader->mapLayout; - CpuFastFill(0x03FF03FF, gBackupMapLayout, sizeof(gBackupMapLayout)); - VMap.map = gBackupMapLayout; - VMap.Xsize = mapLayout->width + 15; - VMap.Ysize = mapLayout->height + 14; + CpuFastFill(0x03FF03FF, gBackupMapData, sizeof(gBackupMapData)); + gBackupMapLayout.map = gBackupMapData; + gBackupMapLayout.Xsize = mapLayout->width + 15; + gBackupMapLayout.Ysize = mapLayout->height + 14; AGB_ASSERT_EX(VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE, ABSPATH("fieldmap.c"), 158); map_copy_with_padding(mapLayout->map, mapLayout->width, mapLayout->height); mapheader_copy_mapdata_of_adjacent_maps(mapHeader); @@ -91,8 +93,8 @@ static void InitMapLayoutData(struct MapHeader * mapHeader) static void map_copy_with_padding(u16 *map, u16 width, u16 height) { s32 y; - u16 *dest = VMap.map; - dest += VMap.Xsize * 7 + 7; + u16 *dest = gBackupMapLayout.map; + dest += gBackupMapLayout.Xsize * 7 + 7; for (y = 0; y < height; y++) { @@ -157,12 +159,12 @@ static void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader mapWidth = connectedMapHeader->mapLayout->width; src = &connectedMapHeader->mapLayout->map[mapWidth * y2 + x2]; - dest = &VMap.map[VMap.Xsize * y + x]; + dest = &gBackupMapLayout.map[gBackupMapLayout.Xsize * y + x]; for (i = 0; i < height; i++) { CpuCopy16(src, dest, width * 2); - dest += VMap.Xsize; + dest += gBackupMapLayout.Xsize; src += mapWidth; } } @@ -183,26 +185,26 @@ static void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHea { x2 = -x; x += cWidth; - if (x < VMap.Xsize) + if (x < gBackupMapLayout.Xsize) { width = x; } else { - width = VMap.Xsize; + width = gBackupMapLayout.Xsize; } x = 0; } else { x2 = 0; - if (x + cWidth < VMap.Xsize) + if (x + cWidth < gBackupMapLayout.Xsize) { width = cWidth; } else { - width = VMap.Xsize - x; + width = gBackupMapLayout.Xsize - x; } } @@ -231,26 +233,26 @@ static void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHea { x2 = -x; x += cWidth; - if (x < VMap.Xsize) + if (x < gBackupMapLayout.Xsize) { width = x; } else { - width = VMap.Xsize; + width = gBackupMapLayout.Xsize; } x = 0; } else { x2 = 0; - if (x + cWidth < VMap.Xsize) + if (x + cWidth < gBackupMapLayout.Xsize) { width = cWidth; } else { - width = VMap.Xsize - x; + width = gBackupMapLayout.Xsize - x; } } @@ -278,26 +280,26 @@ static void fillWestConnection(struct MapHeader const *mapHeader, struct MapHead if (y < 0) { y2 = -y; - if (y + cHeight < VMap.Ysize) + if (y + cHeight < gBackupMapLayout.Ysize) { height = y + cHeight; } else { - height = VMap.Ysize; + height = gBackupMapLayout.Ysize; } y = 0; } else { y2 = 0; - if (y + cHeight < VMap.Ysize) + if (y + cHeight < gBackupMapLayout.Ysize) { height = cHeight; } else { - height = VMap.Ysize - y; + height = gBackupMapLayout.Ysize - y; } } @@ -323,26 +325,26 @@ static void fillEastConnection(struct MapHeader const *mapHeader, struct MapHead if (y < 0) { y2 = -y; - if (y + cHeight < VMap.Ysize) + if (y + cHeight < gBackupMapLayout.Ysize) { height = y + cHeight; } else { - height = VMap.Ysize; + height = gBackupMapLayout.Ysize; } y = 0; } else { y2 = 0; - if (y + cHeight < VMap.Ysize) + if (y + cHeight < gBackupMapLayout.Ysize) { height = cHeight; } else { - height = VMap.Ysize - y; + height = gBackupMapLayout.Ysize - y; } } @@ -404,9 +406,9 @@ union Block block; \ }) -#define AreCoordsWithinMapGridBounds(x, y) (x >= 0 && x < VMap.Xsize && y >= 0 && y < VMap.Ysize) +#define AreCoordsWithinMapGridBounds(x, y) (x >= 0 && x < gBackupMapLayout.Xsize && y >= 0 && y < gBackupMapLayout.Ysize) -#define MapGridGetTileAt(x, y) (AreCoordsWithinMapGridBounds(x, y) ? VMap.map[x + VMap.Xsize * y] : MapGridGetBorderTileAt2(x, y)) +#define MapGridGetTileAt(x, y) (AreCoordsWithinMapGridBounds(x, y) ? gBackupMapLayout.map[x + gBackupMapLayout.Xsize * y] : MapGridGetBorderTileAt2(x, y)) u8 MapGridGetZCoordAt(s32 x, s32 y) { @@ -471,37 +473,37 @@ u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y) void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatile) { s32 i; - if (x >= 0 && x < VMap.Xsize - && y >= 0 && y < VMap.Ysize) + if (x >= 0 && x < gBackupMapLayout.Xsize + && y >= 0 && y < gBackupMapLayout.Ysize) { - i = x + y * VMap.Xsize; - VMap.map[i] = (VMap.map[i] & 0xf000) | (metatile & 0xfff); + i = x + y * gBackupMapLayout.Xsize; + gBackupMapLayout.map[i] = (gBackupMapLayout.map[i] & 0xf000) | (metatile & 0xfff); } } void MapGridSetMetatileEntryAt(s32 x, s32 y, u16 metatile) { s32 i; - if (x >= 0 && x < VMap.Xsize - && y >= 0 && y < VMap.Ysize) + if (x >= 0 && x < gBackupMapLayout.Xsize + && y >= 0 && y < gBackupMapLayout.Ysize) { - i = x + VMap.Xsize * y; - VMap.map[i] = metatile; + i = x + gBackupMapLayout.Xsize * y; + gBackupMapLayout.map[i] = metatile; } } void MapGridSetMetatileImpassabilityAt(s32 x, s32 y, bool32 arg2) { - if (x >= 0 && x < VMap.Xsize - && y >= 0 && y < VMap.Ysize) + if (x >= 0 && x < gBackupMapLayout.Xsize + && y >= 0 && y < gBackupMapLayout.Ysize) { if (arg2) { - VMap.map[x + VMap.Xsize * y] |= 0x0C00; + gBackupMapLayout.map[x + gBackupMapLayout.Xsize * y] |= 0x0C00; } else { - VMap.map[x + VMap.Xsize * y] &= ~0x0C00; + gBackupMapLayout.map[x + gBackupMapLayout.Xsize * y] &= ~0x0C00; } } } @@ -533,14 +535,14 @@ void save_serialize_map(void) u16 *mapView; s32 width; mapView = gSaveBlock2Ptr->mapView; - width = VMap.Xsize; + width = gBackupMapLayout.Xsize; x = gSaveBlock1Ptr->pos.x; y = gSaveBlock1Ptr->pos.y; for (i = y; i < y + 14; i++) { for (j = x; j < x + 15; j++) { - *mapView++ = gBackupMapLayout[width * i + j]; + *mapView++ = gBackupMapData[width * i + j]; } } } @@ -574,14 +576,14 @@ static void LoadSavedMapView(void) mapView = gSaveBlock2Ptr->mapView; if (!SavedMapViewIsEmpty()) { - width = VMap.Xsize; + width = gBackupMapLayout.Xsize; x = gSaveBlock1Ptr->pos.x; y = gSaveBlock1Ptr->pos.y; for (i = y; i < y + 14; i++) { for (j = x; j < x + 15; j++) { - gBackupMapLayout[j + width * i] = *mapView; + gBackupMapData[j + width * i] = *mapView; mapView++; } } @@ -601,7 +603,7 @@ static void sub_8059250(u8 a1) s32 x, y; s32 i, j; mapView = gSaveBlock2Ptr->mapView; - width = VMap.Xsize; + width = gBackupMapLayout.Xsize; r9 = 0; r8 = 0; x0 = gSaveBlock1Ptr->pos.x; @@ -636,7 +638,7 @@ static void sub_8059250(u8 a1) desti = width * (y + y0); srci = (y + r8) * 15 + r9; src = &mapView[srci + i]; - dest = &gBackupMapLayout[x0 + desti + j]; + dest = &gBackupMapData[x0 + desti + j]; *dest = *src; i++; j++; @@ -652,7 +654,7 @@ s32 GetMapBorderIdAt(s32 x, s32 y) return -1; } - if (x >= VMap.Xsize - 8) + if (x >= gBackupMapLayout.Xsize - 8) { if (!gMapConnectionFlags.east) { @@ -670,7 +672,7 @@ s32 GetMapBorderIdAt(s32 x, s32 y) return CONNECTION_WEST; } - if (y >= VMap.Ysize - 7) + if (y >= gBackupMapLayout.Ysize - 7) { if (!gMapConnectionFlags.south) { diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c index 7c05d1dde..507bcf2b4 100644 --- a/src/metatile_behavior.c +++ b/src/metatile_behavior.c @@ -61,7 +61,7 @@ bool8 MetatileBehavior_IsJumpSouth(u8 metatileBehavior) return FALSE; } -bool8 MetatileBehavior_IsTallGrass(u8 metatileBehavior) +bool8 MetatileBehavior_IsPokeGrass(u8 metatileBehavior) { if(metatileBehavior == MB_TALL_GRASS || metatileBehavior == MB_CYCLING_ROAD_PULL_DOWN_GRASS) return TRUE; diff --git a/src/quest_log_objects.c b/src/quest_log_objects.c index 7d8300cd7..2c17987e8 100644 --- a/src/quest_log_objects.c +++ b/src/quest_log_objects.c @@ -28,10 +28,10 @@ void SetQuestLogObjectEventsData(struct QuestLog * questLog) questLog->unk_008[i].disableJumpLandingGroundEffect = gObjectEvents[i].disableJumpLandingGroundEffect; questLog->unk_008[i].fixedPriority = gObjectEvents[i].fixedPriority; questLog->unk_008[i].mapobj_unk_18 = gObjectEvents[i].facingDirection; - questLog->unk_008[i].mapobj_unk_0B_0 = gObjectEvents[i].mapobj_unk_0B_0; - questLog->unk_008[i].elevation = gObjectEvents[i].elevation; + questLog->unk_008[i].mapobj_unk_0B_0 = gObjectEvents[i].currentElevation; + questLog->unk_008[i].elevation = gObjectEvents[i].previousElevation; questLog->unk_008[i].graphicsId = gObjectEvents[i].graphicsId; - questLog->unk_008[i].animPattern = gObjectEvents[i].animPattern; + questLog->unk_008[i].animPattern = gObjectEvents[i].movementType; questLog->unk_008[i].trainerType = gObjectEvents[i].trainerType; questLog->unk_008[i].localId = gObjectEvents[i].localId; questLog->unk_008[i].mapNum = gObjectEvents[i].mapNum; @@ -41,7 +41,7 @@ void SetQuestLogObjectEventsData(struct QuestLog * questLog) questLog->unk_008[i].trainerRange_berryTreeId = gObjectEvents[i].trainerRange_berryTreeId; questLog->unk_008[i].previousMetatileBehavior = gObjectEvents[i].previousMetatileBehavior; questLog->unk_008[i].directionSequenceIndex = gObjectEvents[i].directionSequenceIndex; - questLog->unk_008[i].animId = gObjectEvents[i].animId; + questLog->unk_008[i].animId = gObjectEvents[i].playerCopyableMovement; } } @@ -72,10 +72,10 @@ void sub_815A1F8(const struct QuestLog * questLog, const struct ObjectEventTempl gObjectEvents[i].disableJumpLandingGroundEffect = questLogObjectEvents[i].disableJumpLandingGroundEffect; gObjectEvents[i].fixedPriority = questLogObjectEvents[i].fixedPriority; gObjectEvents[i].facingDirection = questLogObjectEvents[i].mapobj_unk_18; - gObjectEvents[i].mapobj_unk_0B_0 = questLogObjectEvents[i].mapobj_unk_0B_0; - gObjectEvents[i].elevation = questLogObjectEvents[i].elevation; + gObjectEvents[i].currentElevation = questLogObjectEvents[i].mapobj_unk_0B_0; + gObjectEvents[i].previousElevation = questLogObjectEvents[i].elevation; gObjectEvents[i].graphicsId = questLogObjectEvents[i].graphicsId; - gObjectEvents[i].animPattern = questLogObjectEvents[i].animPattern; + gObjectEvents[i].movementType = questLogObjectEvents[i].animPattern; gObjectEvents[i].trainerType = questLogObjectEvents[i].trainerType; gObjectEvents[i].localId = questLogObjectEvents[i].localId; gObjectEvents[i].mapNum = questLogObjectEvents[i].mapNum; @@ -85,7 +85,7 @@ void sub_815A1F8(const struct QuestLog * questLog, const struct ObjectEventTempl gObjectEvents[i].trainerRange_berryTreeId = questLogObjectEvents[i].trainerRange_berryTreeId; gObjectEvents[i].previousMetatileBehavior = questLogObjectEvents[i].previousMetatileBehavior; gObjectEvents[i].directionSequenceIndex = questLogObjectEvents[i].directionSequenceIndex; - gObjectEvents[i].animId = questLogObjectEvents[i].animId; + gObjectEvents[i].playerCopyableMovement = questLogObjectEvents[i].animId; for (j = 0; j < 0x40; j++) { diff --git a/src/quest_log_player.c b/src/quest_log_player.c index b57e3930c..be40042b3 100644 --- a/src/quest_log_player.c +++ b/src/quest_log_player.c @@ -87,7 +87,7 @@ static void sub_8150530(void) else { sub_81507BC(objectEvent, GetPlayerAvatarGraphicsIdByStateId(4)); - StartSpriteAnim(sprite, sub_80634F0(objectEvent->facingDirection)); + StartSpriteAnim(sprite, GetFishingNoCatchDirectionAnimNum(objectEvent->facingDirection)); } } @@ -99,10 +99,10 @@ static void sub_81505C4(u8 taskId) switch (gTasks[taskId].data[0]) { case 0: - ObjectEventClearAnimIfSpecialAnimActive(objectEvent); + ObjectEventClearHeldMovementIfActive(objectEvent); objectEvent->enableAnim = TRUE; sub_81507BC(objectEvent, GetPlayerAvatarGraphicsIdByStateId(4)); - StartSpriteAnim(sprite, sub_80634F0(objectEvent->facingDirection)); + StartSpriteAnim(sprite, GetFishingNoCatchDirectionAnimNum(objectEvent->facingDirection)); gTasks[taskId].data[0]++; gTasks[taskId].data[1] = 0; break; @@ -114,7 +114,7 @@ static void sub_81505C4(u8 taskId) gTasks[taskId].data[0]++; break; case 2: - StartSpriteAnim(sprite, sub_8063500(GetPlayerFacingDirection())); + StartSpriteAnim(sprite, GetFishingBiteDirectionAnimNum(GetPlayerFacingDirection())); gTasks[taskId].data[0]++; break; case 3: diff --git a/src/scrcmd.c b/src/scrcmd.c index 7eaa98c76..32ac5c4e2 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1082,7 +1082,7 @@ bool8 ScrCmd_setobjectxy(struct ScriptContext * ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - sub_805F7C4(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, x, y); + TryMoveObjectEventToMapCoords(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, x, y); return FALSE; } @@ -1100,7 +1100,7 @@ bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext * ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); - sub_805FE94(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + TryOverrideObjectEventTemplateCoords(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); return FALSE; } diff --git a/src/script_movement.c b/src/script_movement.c index 7503e8f44..55c26ded8 100644 --- a/src/script_movement.c +++ b/src/script_movement.c @@ -205,7 +205,7 @@ static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 objEventId, cons if (IsMovementScriptFinished(taskId, moveScrId) == TRUE) return; - if (ObjectEventIsSpecialAnimActive(&gObjectEvents[objEventId]) + if (ObjectEventIsHeldMovementActive(&gObjectEvents[objEventId]) && !ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId])) return; diff --git a/src/trainer_see.c b/src/trainer_see.c index 64e2f8e5a..3dbfbdf38 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -14,42 +14,42 @@ typedef u8 (*TrainerApproachFunc)(struct ObjectEvent *, s16, s16, s16); typedef bool8 (*TrainerSeeFunc)(u8, struct Task *, struct ObjectEvent *); -static bool8 CheckTrainer(u8 trainerObjId); -static u8 GetTrainerApproachDistance(struct ObjectEvent * trainerObj); -static u8 GetTrainerApproachDistanceSouth(struct ObjectEvent * trainerObj, s16 range, s16 x, s16 y); -static u8 GetTrainerApproachDistanceNorth(struct ObjectEvent * trainerObj, s16 range, s16 x, s16 y); -static u8 GetTrainerApproachDistanceWest(struct ObjectEvent * trainerObj, s16 range, s16 x, s16 y); -static u8 GetTrainerApproachDistanceEast(struct ObjectEvent * trainerObj, s16 range, s16 x, s16 y); -static u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent * trainerObj, u8 approachDistance, u8 facingDirection); -static void TrainerApproachPlayer(struct ObjectEvent * trainerObj, u8 approachDistance); -static void Task_RunTrainerSeeFuncList(u8 taskId); -static bool8 TrainerSeeFunc_Dummy(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_StartExclMark(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_WaitExclMark(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_TrainerApproach(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_PrepareToEngage(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_End(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_BeginRemoveDisguise(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_WaitRemoveDisguise(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_TrainerInAshFacesPlayer(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_BeginJumpOutOfAsh(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_WaitJumpOutOfAsh(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_EndJumpOutOfAsh(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_OffscreenAboveTrainerCreateCameraObj(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveUp(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveDown(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); -static void Task_DestroyTrainerApproachTask(u8 taskId); -static void SpriteCB_TrainerIcons(struct Sprite * sprite); -static void SetIconSpriteData(struct Sprite *sprite, u16 fldEffId, u8 spriteAnimNum); - -static const u16 sGfx_Emoticons[] = INCBIN_U16("graphics/object_events/emoticons.4bpp"); +/*static*/ bool8 CheckTrainer(u8 trainerObjId); +/*static*/ u8 GetTrainerApproachDistance(struct ObjectEvent * trainerObj); +/*static*/ u8 GetTrainerApproachDistanceSouth(struct ObjectEvent * trainerObj, s16 range, s16 x, s16 y); +/*static*/ u8 GetTrainerApproachDistanceNorth(struct ObjectEvent * trainerObj, s16 range, s16 x, s16 y); +/*static*/ u8 GetTrainerApproachDistanceWest(struct ObjectEvent * trainerObj, s16 range, s16 x, s16 y); +/*static*/ u8 GetTrainerApproachDistanceEast(struct ObjectEvent * trainerObj, s16 range, s16 x, s16 y); +/*static*/ u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent * trainerObj, u8 approachDistance, u8 facingDirection); +/*static*/ void TrainerApproachPlayer(struct ObjectEvent * trainerObj, u8 approachDistance); +/*static*/ void Task_RunTrainerSeeFuncList(u8 taskId); +/*static*/ bool8 TrainerSeeFunc_Dummy(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_StartExclMark(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_WaitExclMark(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_TrainerApproach(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_PrepareToEngage(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_End(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_BeginRemoveDisguise(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_WaitRemoveDisguise(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_TrainerInAshFacesPlayer(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_BeginJumpOutOfAsh(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_WaitJumpOutOfAsh(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_EndJumpOutOfAsh(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_OffscreenAboveTrainerCreateCameraObj(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveUp(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveDown(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj); +/*static*/ void Task_DestroyTrainerApproachTask(u8 taskId); +/*static*/ void SpriteCB_TrainerIcons(struct Sprite * sprite); +/*static*/ void SetIconSpriteData(struct Sprite *sprite, u16 fldEffId, u8 spriteAnimNum); + +/*static*/ const u16 sGfx_Emoticons[] = INCBIN_U16("graphics/object_events/emoticons.4bpp"); // u8 func(struct ObjectEvent * trainerObj, s16 range, s16 x, s16 y) // range is the maximum distance the trainer can see // x and y are the player's coordinates // Returns distance to walk if trainer has unobstructed view of player // Returns 0 if trainer can't see player -static const TrainerApproachFunc sDirectionalApproachDistanceFuncs[] = { +/*static*/ const TrainerApproachFunc sDirectionalApproachDistanceFuncs[] = { GetTrainerApproachDistanceSouth, GetTrainerApproachDistanceNorth, GetTrainerApproachDistanceWest, @@ -59,7 +59,7 @@ static const TrainerApproachFunc sDirectionalApproachDistanceFuncs[] = { // bool8 func(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) // Returns TRUE to run the next func immediately // Returns FALSE to delay the next func to the next frame -static const TrainerSeeFunc sTrainerSeeFuncList[] = { +/*static*/ const TrainerSeeFunc sTrainerSeeFuncList[] = { TrainerSeeFunc_Dummy, TrainerSeeFunc_StartExclMark, TrainerSeeFunc_WaitExclMark, @@ -77,7 +77,7 @@ static const TrainerSeeFunc sTrainerSeeFuncList[] = { TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveDown }; -static const TrainerSeeFunc sTrainerSeeFuncList2[] = { +/*static*/ const TrainerSeeFunc sTrainerSeeFuncList2[] = { TrainerSeeFunc_TrainerInAshFacesPlayer, TrainerSeeFunc_BeginJumpOutOfAsh, TrainerSeeFunc_WaitJumpOutOfAsh, @@ -104,7 +104,7 @@ bool8 CheckForTrainersWantingBattle(void) return FALSE; } -static bool8 CheckTrainer(u8 trainerObjId) +/*static*/ bool8 CheckTrainer(u8 trainerObjId) { const u8 *script = GetObjectEventScriptPointerByObjectEventId(trainerObjId); u8 approachDistance; @@ -122,7 +122,7 @@ static bool8 CheckTrainer(u8 trainerObjId) return FALSE; } -static u8 GetTrainerApproachDistance(struct ObjectEvent *trainerObj) +/*static*/ u8 GetTrainerApproachDistance(struct ObjectEvent *trainerObj) { s16 x, y; u8 i; @@ -148,13 +148,13 @@ static u8 GetTrainerApproachDistance(struct ObjectEvent *trainerObj) } // Returns how far south the player is from trainer. 0 if out of trainer's sight. -static u8 GetTrainerApproachDistanceSouth(struct ObjectEvent *trainerObj, s16 range, s16 x, s16 y) +/*static*/ u8 GetTrainerApproachDistanceSouth(struct ObjectEvent *trainerObj, s16 range, s16 x, s16 y) { if (trainerObj->currentCoords.x == x && y > trainerObj->currentCoords.y && y <= trainerObj->currentCoords.y + range) { - if (range > 3 && GetIndexOfFirstInactiveObjectEvent() == OBJECT_EVENTS_COUNT) + if (range > 3 && GetFirstInactiveObjectEventId() == OBJECT_EVENTS_COUNT) return 0; return (y - trainerObj->currentCoords.y); } @@ -163,7 +163,7 @@ static u8 GetTrainerApproachDistanceSouth(struct ObjectEvent *trainerObj, s16 ra } // Returns how far north the player is from trainer. 0 if out of trainer's sight. -static u8 GetTrainerApproachDistanceNorth(struct ObjectEvent *trainerObj, s16 range, s16 x, s16 y) +/*static*/ u8 GetTrainerApproachDistanceNorth(struct ObjectEvent *trainerObj, s16 range, s16 x, s16 y) { if (trainerObj->currentCoords.x == x && y < trainerObj->currentCoords.y @@ -174,7 +174,7 @@ static u8 GetTrainerApproachDistanceNorth(struct ObjectEvent *trainerObj, s16 ra } // Returns how far west the player is from trainer. 0 if out of trainer's sight. -static u8 GetTrainerApproachDistanceWest(struct ObjectEvent *trainerObj, s16 range, s16 x, s16 y) +/*static*/ u8 GetTrainerApproachDistanceWest(struct ObjectEvent *trainerObj, s16 range, s16 x, s16 y) { if (trainerObj->currentCoords.y == y && x < trainerObj->currentCoords.x @@ -185,7 +185,7 @@ static u8 GetTrainerApproachDistanceWest(struct ObjectEvent *trainerObj, s16 ran } // Returns how far east the player is from trainer. 0 if out of trainer's sight. -static u8 GetTrainerApproachDistanceEast(struct ObjectEvent *trainerObj, s16 range, s16 x, s16 y) +/*static*/ u8 GetTrainerApproachDistanceEast(struct ObjectEvent *trainerObj, s16 range, s16 x, s16 y) { if (trainerObj->currentCoords.y == y && x > trainerObj->currentCoords.x @@ -197,7 +197,7 @@ static u8 GetTrainerApproachDistanceEast(struct ObjectEvent *trainerObj, s16 ran #define COLLISION_MASK (~1) -static u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent *trainerObj, u8 approachDistance, u8 direction) +/*static*/ u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent *trainerObj, u8 approachDistance, u8 direction) { s16 x, y; u8 unk19_temp; @@ -245,7 +245,7 @@ static u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent *trainerObj, u8 ap (dest) = (struct ObjectEvent *)(((task)->tTrainerObjHi << 16) | ((u16)(task)->tTrainerObjLo)); \ } while (0) -static void TrainerApproachPlayer(struct ObjectEvent * trainerObj, u8 approachDistance) +/*static*/ void TrainerApproachPlayer(struct ObjectEvent * trainerObj, u8 approachDistance) { u8 taskId = CreateTask(Task_RunTrainerSeeFuncList, 80); struct Task * task = &gTasks[taskId]; @@ -254,7 +254,7 @@ static void TrainerApproachPlayer(struct ObjectEvent * trainerObj, u8 approachDi task->tTrainerRange = approachDistance; } -static void StartTrainerApproachWithFollowupTask(TaskFunc taskFunc) +/*static*/ void StartTrainerApproachWithFollowupTask(TaskFunc taskFunc) { u8 taskId = FindTaskIdByFunc(Task_RunTrainerSeeFuncList); SetTaskFuncWithFollowupFunc(taskId, Task_RunTrainerSeeFuncList, taskFunc); @@ -262,7 +262,7 @@ static void StartTrainerApproachWithFollowupTask(TaskFunc taskFunc) Task_RunTrainerSeeFuncList(taskId); } -static void Task_RunTrainerSeeFuncList(u8 taskId) +/*static*/ void Task_RunTrainerSeeFuncList(u8 taskId) { struct Task * task = &gTasks[taskId]; struct ObjectEvent * trainerObj; @@ -281,12 +281,12 @@ static void Task_RunTrainerSeeFuncList(u8 taskId) // TrainerSeeFuncs -static bool8 TrainerSeeFunc_Dummy(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) +/*static*/ bool8 TrainerSeeFunc_Dummy(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) { return FALSE; } -static bool8 TrainerSeeFunc_StartExclMark(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) +/*static*/ bool8 TrainerSeeFunc_StartExclMark(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) { u8 action; // FRLG introduces trainers who can see the player from offscreen above. @@ -306,7 +306,7 @@ static bool8 TrainerSeeFunc_StartExclMark(u8 taskId, struct Task * task, struct return TRUE; } -static bool8 TrainerSeeFunc_WaitExclMark(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) +/*static*/ bool8 TrainerSeeFunc_WaitExclMark(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) { if (FieldEffectActiveListContains(FLDEFF_EXCLAMATION_MARK_ICON)) { @@ -315,15 +315,15 @@ static bool8 TrainerSeeFunc_WaitExclMark(u8 taskId, struct Task * task, struct O else { task->tFuncId++; - if (trainerObj->animPattern == MOVEMENT_TYPE_TREE_DISGUISE || trainerObj->animPattern == MOVEMENT_TYPE_MOUNTAIN_DISGUISE) + if (trainerObj->movementType == MOVEMENT_TYPE_TREE_DISGUISE || trainerObj->movementType == MOVEMENT_TYPE_MOUNTAIN_DISGUISE) task->tFuncId = 6; - if (trainerObj->animPattern == MOVEMENT_TYPE_HIDDEN) + if (trainerObj->movementType == MOVEMENT_TYPE_HIDDEN) task->tFuncId = 8; return TRUE; } } -static bool8 TrainerSeeFunc_TrainerApproach(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) +/*static*/ bool8 TrainerSeeFunc_TrainerApproach(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) { if (!ObjectEventIsMovementOverridden(trainerObj) || ObjectEventClearHeldMovementIfFinished(trainerObj)) { @@ -341,7 +341,7 @@ static bool8 TrainerSeeFunc_TrainerApproach(u8 taskId, struct Task * task, struc return FALSE; } -static bool8 TrainerSeeFunc_PrepareToEngage(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) +/*static*/ bool8 TrainerSeeFunc_PrepareToEngage(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) { struct ObjectEvent *playerObj; @@ -349,7 +349,7 @@ static bool8 TrainerSeeFunc_PrepareToEngage(u8 taskId, struct Task * task, struc return FALSE; SetTrainerMovementType(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection)); - TryOverrideTemplateCoordsForObjectEvent(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection)); + OverrideMovementTypeForObjectEvent(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection)); OverrideTemplateCoordsForObjectEvent(trainerObj); playerObj = &gObjectEvents[gPlayerAvatar.objectEventId]; @@ -363,7 +363,7 @@ static bool8 TrainerSeeFunc_PrepareToEngage(u8 taskId, struct Task * task, struc return FALSE; } -static bool8 TrainerSeeFunc_End(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) +/*static*/ bool8 TrainerSeeFunc_End(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) { struct ObjectEvent *playerObj = &gObjectEvents[gPlayerAvatar.objectEventId]; @@ -374,7 +374,7 @@ static bool8 TrainerSeeFunc_End(u8 taskId, struct Task * task, struct ObjectEven } // Jumps here if disguised. Not used in FRLG. -static bool8 TrainerSeeFunc_BeginRemoveDisguise(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) +/*static*/ bool8 TrainerSeeFunc_BeginRemoveDisguise(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) { if (!ObjectEventIsMovementOverridden(trainerObj) || ObjectEventClearHeldMovementIfFinished(trainerObj)) @@ -385,7 +385,7 @@ static bool8 TrainerSeeFunc_BeginRemoveDisguise(u8 taskId, struct Task * task, s return FALSE; } -static bool8 TrainerSeeFunc_WaitRemoveDisguise(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) +/*static*/ bool8 TrainerSeeFunc_WaitRemoveDisguise(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) { if (ObjectEventClearHeldMovementIfFinished(trainerObj)) task->tFuncId = 3; @@ -394,7 +394,7 @@ static bool8 TrainerSeeFunc_WaitRemoveDisguise(u8 taskId, struct Task * task, st } // Jump here if hidden in ash. Not used in FRLG. -static bool8 TrainerSeeFunc_TrainerInAshFacesPlayer(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) +/*static*/ bool8 TrainerSeeFunc_TrainerInAshFacesPlayer(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) { if (!ObjectEventIsMovementOverridden(trainerObj) || ObjectEventClearHeldMovementIfFinished(trainerObj)) @@ -405,7 +405,7 @@ static bool8 TrainerSeeFunc_TrainerInAshFacesPlayer(u8 taskId, struct Task * tas return FALSE; } -static bool8 TrainerSeeFunc_BeginJumpOutOfAsh(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) +/*static*/ bool8 TrainerSeeFunc_BeginJumpOutOfAsh(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) { if (ObjectEventCheckHeldMovementStatus(trainerObj)) { @@ -419,7 +419,7 @@ static bool8 TrainerSeeFunc_BeginJumpOutOfAsh(u8 taskId, struct Task * task, str return FALSE; } -static bool8 TrainerSeeFunc_WaitJumpOutOfAsh(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) +/*static*/ bool8 TrainerSeeFunc_WaitJumpOutOfAsh(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) { struct Sprite *sprite; @@ -438,7 +438,7 @@ static bool8 TrainerSeeFunc_WaitJumpOutOfAsh(u8 taskId, struct Task * task, stru return FALSE; } -static bool8 TrainerSeeFunc_EndJumpOutOfAsh(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj) +/*static*/ bool8 TrainerSeeFunc_EndJumpOutOfAsh(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj) { if (!FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH)) task->tFuncId = 3; @@ -447,7 +447,7 @@ static bool8 TrainerSeeFunc_EndJumpOutOfAsh(u8 taskId, struct Task *task, struct } // FRLG exclusive: Scroll the camera up to reveal an offscreen above trainer -static bool8 TrainerSeeFunc_OffscreenAboveTrainerCreateCameraObj(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj) +/*static*/ bool8 TrainerSeeFunc_OffscreenAboveTrainerCreateCameraObj(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj) { int specialObjectId; task->tData5 = 0; @@ -458,7 +458,7 @@ static bool8 TrainerSeeFunc_OffscreenAboveTrainerCreateCameraObj(u8 taskId, stru return FALSE; } -static bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveUp(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj) +/*static*/ bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveUp(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj) { u8 specialObjectId; TryGetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_CAMERA, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &specialObjectId); @@ -468,7 +468,7 @@ static bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveUp(u8 taskId, stru if (task->tData5 != task->tTrainerRange - 1) { - ObjectEventSetHeldMovement(&gObjectEvents[specialObjectId], sub_8063FB0(DIR_NORTH)); + ObjectEventSetHeldMovement(&gObjectEvents[specialObjectId], GetWalkFastMovementAction(DIR_NORTH)); task->tData5++; } else @@ -481,7 +481,7 @@ static bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveUp(u8 taskId, stru return FALSE; } -static bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveDown(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) +/*static*/ bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveDown(u8 taskId, struct Task * task, struct ObjectEvent * trainerObj) { u8 specialObjectId; TryGetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_CAMERA, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &specialObjectId); @@ -494,7 +494,7 @@ static bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveDown(u8 taskId, st if (task->tData5 != task->tTrainerRange - 1) { - ObjectEventSetHeldMovement(&gObjectEvents[specialObjectId], sub_8063FB0(DIR_SOUTH)); + ObjectEventSetHeldMovement(&gObjectEvents[specialObjectId], GetWalkFastMovementAction(DIR_SOUTH)); task->tData5++; } else @@ -514,7 +514,7 @@ static bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveDown(u8 taskId, st #undef tTrainerObjHi #undef tFuncId -static void Task_RevealTrainer_RunTrainerSeeFuncList(u8 taskId) +/*static*/ void Task_RevealTrainer_RunTrainerSeeFuncList(u8 taskId) { struct Task * task = &gTasks[taskId]; struct ObjectEvent * trainerObj; @@ -523,14 +523,14 @@ static void Task_RevealTrainer_RunTrainerSeeFuncList(u8 taskId) LoadWordFromTwoHalfwords((u16 *)&task->data[1], (uintptr_t *)&trainerObj); if (!task->data[7]) { - ObjectEventClearAnim(trainerObj); + ObjectEventClearHeldMovement(trainerObj); task->data[7]++; } sTrainerSeeFuncList2[task->data[0]](taskId, task, trainerObj); if (task->data[0] == 3 && !FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH)) { SetTrainerMovementType(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection)); - TryOverrideTemplateCoordsForObjectEvent(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection)); + OverrideMovementTypeForObjectEvent(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection)); DestroyTask(taskId); } else @@ -549,7 +549,7 @@ void EndTrainerApproach(void) StartTrainerApproachWithFollowupTask(Task_DestroyTrainerApproachTask); } -static void Task_DestroyTrainerApproachTask(u8 taskId) +/*static*/ void Task_DestroyTrainerApproachTask(u8 taskId) { DestroyTask(taskId); EnableBothScriptContexts(); @@ -564,7 +564,7 @@ static void Task_DestroyTrainerApproachTask(u8 taskId) #define sData4 data[4] #define sFldEffId data[7] -static const struct OamData sOamData_Emoticons = { +/*static*/ const struct OamData sOamData_Emoticons = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -580,7 +580,7 @@ static const struct OamData sOamData_Emoticons = { .affineParam = 0, }; -static const struct SpriteFrameImage sSpriteImages_Emoticons[] = { +/*static*/ const struct SpriteFrameImage sSpriteImages_Emoticons[] = { {sGfx_Emoticons + 0x000, 0x80}, {sGfx_Emoticons + 0x040, 0x80}, {sGfx_Emoticons + 0x080, 0x80}, @@ -602,42 +602,42 @@ static const struct SpriteFrameImage sSpriteImages_Emoticons[] = { {sGfx_Emoticons + 0x380, 0x80}, }; -static const union AnimCmd sAnimCmd_ExclamationMark1[] = { +/*static*/ const union AnimCmd sAnimCmd_ExclamationMark1[] = { ANIMCMD_FRAME( 0, 4), ANIMCMD_FRAME( 1, 4), ANIMCMD_FRAME( 2, 52), ANIMCMD_END }; -static const union AnimCmd sAnimCmd_DoubleExclMark[] = { +/*static*/ const union AnimCmd sAnimCmd_DoubleExclMark[] = { ANIMCMD_FRAME( 6, 4), ANIMCMD_FRAME( 7, 4), ANIMCMD_FRAME( 8, 52), ANIMCMD_END }; -static const union AnimCmd sAnimCmd_X[] = { +/*static*/ const union AnimCmd sAnimCmd_X[] = { ANIMCMD_FRAME( 3, 4), ANIMCMD_FRAME( 4, 4), ANIMCMD_FRAME( 5, 52), ANIMCMD_END }; -static const union AnimCmd sAnimCmd_SmileyFace[] = { +/*static*/ const union AnimCmd sAnimCmd_SmileyFace[] = { ANIMCMD_FRAME( 9, 4), ANIMCMD_FRAME(10, 4), ANIMCMD_FRAME(11, 52), ANIMCMD_END }; -static const union AnimCmd sAnimCmd_QuestionMark[] = { +/*static*/ const union AnimCmd sAnimCmd_QuestionMark[] = { ANIMCMD_FRAME(12, 4), ANIMCMD_FRAME(13, 4), ANIMCMD_FRAME(14, 52), ANIMCMD_END }; -static const union AnimCmd *const sSpriteAnimTable_Emoticons[] = { +/*static*/ const union AnimCmd *const sSpriteAnimTable_Emoticons[] = { sAnimCmd_ExclamationMark1, sAnimCmd_DoubleExclMark, sAnimCmd_X, @@ -645,7 +645,7 @@ static const union AnimCmd *const sSpriteAnimTable_Emoticons[] = { sAnimCmd_QuestionMark }; -static const struct SpriteTemplate sSpriteTemplate_Emoticons = { +/*static*/ const struct SpriteTemplate sSpriteTemplate_Emoticons = { .tileTag = 0xFFFF, .paletteTag = 0xFFFF, .oam = &sOamData_Emoticons, @@ -705,7 +705,7 @@ u8 FldEff_QuestionMarkIcon(void) return 0; } -static void SetIconSpriteData(struct Sprite *sprite, u16 fldEffId, u8 spriteAnimNum) +/*static*/ void SetIconSpriteData(struct Sprite *sprite, u16 fldEffId, u8 spriteAnimNum) { sprite->oam.priority = 1; sprite->coordOffsetEnabled = 1; @@ -719,7 +719,7 @@ static void SetIconSpriteData(struct Sprite *sprite, u16 fldEffId, u8 spriteAnim StartSpriteAnim(sprite, spriteAnimNum); } -static void SpriteCB_TrainerIcons(struct Sprite *sprite) +/*static*/ void SpriteCB_TrainerIcons(struct Sprite *sprite) { u8 objEventId; diff --git a/src/vs_seeker.c b/src/vs_seeker.c index b44214ec0..60f5f338f 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -696,7 +696,7 @@ static void sub_810C594(void) for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { struct ObjectEvent * objectEvent = &gObjectEvents[i]; - if (objectEvent->animPattern == 0x4D || objectEvent->animPattern == 0x4E || objectEvent->animPattern == 0x4F) + if (objectEvent->movementType == 0x4D || objectEvent->movementType == 0x4E || objectEvent->movementType == 0x4F) { u8 r3 = sub_810CF54(); if (objectEvent->active && gSprites[objectEvent->spriteId].data[0] == i) @@ -918,7 +918,7 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0) else { gSaveBlock1Ptr->trainerRematches[sVsSeeker->trainerInfo[vsSeekerIdx].localId] = r7; - npc_coords_shift_still(&gObjectEvents[sVsSeeker->trainerInfo[vsSeekerIdx].objectEventId]); + ShiftStillObjectEventCoords(&gObjectEvents[sVsSeeker->trainerInfo[vsSeekerIdx].objectEventId]); StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerRematch); sVsSeeker->trainerIdxArray[sVsSeeker->numRematchableTrainers] = r8; sVsSeeker->runningBehaviourEtcArray[sVsSeeker->numRematchableTrainers] = GetRunningBehaviorFromGraphicsId(sVsSeeker->trainerInfo[vsSeekerIdx].graphicsId); @@ -961,12 +961,12 @@ void sub_810CB90(void) TryGetObjectEventIdByLocalIdAndMap(r4[r8].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &sp0); r4_2 = &gObjectEvents[sp0]; sub_810CF54(&r4[r8]); // You are using this function incorrectly. Please consult the manual. - TryOverrideTemplateCoordsForObjectEvent(r4_2, gUnknown_8453F67[r4_2->facingDirection]); + OverrideMovementTypeForObjectEvent(r4_2, gUnknown_8453F67[r4_2->facingDirection]); gSaveBlock1Ptr->trainerRematches[r4[r8].localId] = 0; if (gSelectedObjectEvent == sp0) - r4_2->animPattern = gUnknown_8453F67[r4_2->facingDirection]; + r4_2->movementType = gUnknown_8453F67[r4_2->facingDirection]; else - r4_2->animPattern = MOVEMENT_TYPE_FACE_DOWN; + r4_2->movementType = MOVEMENT_TYPE_FACE_DOWN; } } } @@ -1322,7 +1322,7 @@ static void StartAllRespondantIdleMovements(void) if (sub_810CF04(sVsSeeker->trainerInfo[j].objectEventId) == 1) SetTrainerMovementType(r4, sVsSeeker->runningBehaviourEtcArray[i]); - TryOverrideTemplateCoordsForObjectEvent(r4, sVsSeeker->runningBehaviourEtcArray[i]); + OverrideMovementTypeForObjectEvent(r4, sVsSeeker->runningBehaviourEtcArray[i]); gSaveBlock1Ptr->trainerRematches[sVsSeeker->trainerInfo[j].localId] = GetNextAvailableRematchTrainer(sVsSeekerData, sVsSeeker->trainerInfo[j].trainerIdx, &dummy); } } diff --git a/sym_ewram.txt b/sym_ewram.txt index 893c9786e..67ca0fd06 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -71,7 +71,7 @@ gUnknown_2031DE8: @ 2031DE8 gUnknown_2031DEA: @ 2031DEA .space 0x2 -gUnknown_2031DEC: @ 2031DEC +gLinkPlayerObjectEvents: @ 2031DEC .space 0x10 .align 2 @@ -95,10 +95,10 @@ gObjectEvents: @ 2036E38 gPlayerAvatar: @ 2037078 .space 0x20 -gUnknown_2037098: @ 2037098 +sCurrentReflectionType: @ 2037098 .space 0x2 -gUnknown_203709A: @ 203709A +sCurrentSpecialObjectPaletteTag: @ 203709A .space 0x2 .align 2 |