diff options
46 files changed, 8800 insertions, 23341 deletions
diff --git a/asm/bike.s b/asm/bike.s index 5bba18d71..f714c067f 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_80688E4.s b/asm/event_object_80688E4.s index 93309a80d..e850e2200 100644 --- a/asm/event_object_80688E4.s +++ b/asm/event_object_80688E4.s @@ -241,7 +241,7 @@ _08068A88: .4byte gObjectEvents thumb_func_start little_step little_step: @ 8068A8C lsls r1, 24 - ldr r2, _08068AA8 @ =gUnknown_83A64C8 + ldr r2, _08068AA8 @ =sDirectionToVectors lsrs r1, 22 adds r1, r2 ldrh r2, [r1] @@ -254,13 +254,13 @@ little_step: @ 8068A8C strh r1, [r0, 0x22] bx lr .align 2, 0 -_08068AA8: .4byte gUnknown_83A64C8 +_08068AA8: .4byte sDirectionToVectors thumb_func_end little_step thumb_func_start double_little_steps double_little_steps: @ 8068AAC lsls r1, 24 - ldr r2, _08068ACC @ =gUnknown_83A64C8 + ldr r2, _08068ACC @ =sDirectionToVectors lsrs r1, 22 adds r1, r2 ldrh r2, [r1] @@ -275,13 +275,13 @@ double_little_steps: @ 8068AAC strh r1, [r0, 0x22] bx lr .align 2, 0 -_08068ACC: .4byte gUnknown_83A64C8 +_08068ACC: .4byte sDirectionToVectors thumb_func_end double_little_steps thumb_func_start triple_little_steps triple_little_steps: @ 8068AD0 lsls r1, 24 - ldr r2, _08068AF4 @ =gUnknown_83A64C8 + ldr r2, _08068AF4 @ =sDirectionToVectors lsrs r1, 22 adds r1, r2 ldrh r2, [r1] @@ -298,13 +298,13 @@ triple_little_steps: @ 8068AD0 strh r1, [r0, 0x22] bx lr .align 2, 0 -_08068AF4: .4byte gUnknown_83A64C8 +_08068AF4: .4byte sDirectionToVectors thumb_func_end triple_little_steps thumb_func_start quad_little_steps quad_little_steps: @ 8068AF8 lsls r1, 24 - ldr r2, _08068B18 @ =gUnknown_83A64C8 + ldr r2, _08068B18 @ =sDirectionToVectors lsrs r1, 22 adds r1, r2 ldrh r2, [r1] @@ -319,13 +319,13 @@ quad_little_steps: @ 8068AF8 strh r1, [r0, 0x22] bx lr .align 2, 0 -_08068B18: .4byte gUnknown_83A64C8 +_08068B18: .4byte sDirectionToVectors thumb_func_end quad_little_steps thumb_func_start oct_little_steps oct_little_steps: @ 8068B1C lsls r1, 24 - ldr r2, _08068B3C @ =gUnknown_83A64C8 + ldr r2, _08068B3C @ =sDirectionToVectors lsrs r1, 22 adds r1, r2 ldrh r2, [r1] @@ -340,7 +340,7 @@ oct_little_steps: @ 8068B1C strh r1, [r0, 0x22] bx lr .align 2, 0 -_08068B3C: .4byte gUnknown_83A64C8 +_08068B3C: .4byte sDirectionToVectors thumb_func_end oct_little_steps thumb_func_start oamt_npc_ministep_reset @@ -788,14 +788,14 @@ _08068E50: .4byte gUnknown_83A7202 _08068E54: .4byte gUnknown_83A7208 thumb_func_end sub_8068DC4 - thumb_func_start SetObjectEventStepTimer -SetObjectEventStepTimer: @ 8068E58 + thumb_func_start SetMovementDelay +SetMovementDelay: @ 8068E58 strh r1, [r0, 0x34] bx lr - thumb_func_end SetObjectEventStepTimer + thumb_func_end SetMovementDelay - thumb_func_start RunObjectEventStepTimer -RunObjectEventStepTimer: @ 8068E5C + thumb_func_start WaitForMovementDelay +WaitForMovementDelay: @ 8068E5C push {lr} ldrh r1, [r0, 0x34] subs r1, 0x1 @@ -810,10 +810,10 @@ _08068E6E: _08068E70: pop {r1} bx r1 - thumb_func_end RunObjectEventStepTimer + thumb_func_end WaitForMovementDelay - thumb_func_start obj_anim_image_set_and_seek -obj_anim_image_set_and_seek: @ 8068E74 + thumb_func_start SetAndStartSpriteAnim +SetAndStartSpriteAnim: @ 8068E74 push {r4,lr} lsls r2, 24 lsrs r2, 24 @@ -832,10 +832,10 @@ obj_anim_image_set_and_seek: @ 8068E74 pop {r4} pop {r0} bx r0 - thumb_func_end obj_anim_image_set_and_seek + thumb_func_end SetAndStartSpriteAnim - thumb_func_start sub_8068E9C -sub_8068E9C: @ 8068E9C + thumb_func_start SpriteAnimEnded +SpriteAnimEnded: @ 8068E9C push {lr} adds r0, 0x3F ldrb r1, [r0] @@ -850,7 +850,7 @@ _08068EAE: _08068EB0: pop {r1} bx r1 - thumb_func_end sub_8068E9C + thumb_func_end SpriteAnimEnded thumb_func_start sub_8068EB4 sub_8068EB4: @ 8068EB4 @@ -983,8 +983,8 @@ _08068FA2: bx r0 thumb_func_end sub_8068EB4 - thumb_func_start sub_8068FA8 -sub_8068FA8: @ 8068FA8 + thumb_func_start UpdateObjectEventSpriteSubpriorityAndVisibility +UpdateObjectEventSpriteSubpriorityAndVisibility: @ 8068FA8 push {r4,lr} adds r4, r0, 0 bl sub_8069248 @@ -1002,7 +1002,7 @@ sub_8068FA8: @ 8068FA8 pop {r4} pop {r0} bx r0 - thumb_func_end sub_8068FA8 + thumb_func_end UpdateObjectEventSpriteSubpriorityAndVisibility thumb_func_start sub_8068FD0 sub_8068FD0: @ 8068FD0 @@ -1020,7 +1020,7 @@ _08068FD6: cmp r0, 0 beq _08068FF6 ldr r1, [r2, 0x1C] - ldr r0, _08069008 @ =sub_8068FA8 + ldr r0, _08069008 @ =UpdateObjectEventSpriteSubpriorityAndVisibility cmp r1, r0 bne _08068FF6 adds r0, r2, 0 @@ -1035,7 +1035,7 @@ _08068FF6: bx r0 .align 2, 0 _08069004: .4byte gSprites -_08069008: .4byte sub_8068FA8 +_08069008: .4byte UpdateObjectEventSpriteSubpriorityAndVisibility thumb_func_end sub_8068FD0 thumb_func_start sub_806900C @@ -1056,7 +1056,7 @@ _08069018: cmp r0, 0 beq _08069048 ldr r1, [r2, 0x1C] - ldr r0, _08069044 @ =sub_8068FA8 + ldr r0, _08069044 @ =UpdateObjectEventSpriteSubpriorityAndVisibility cmp r1, r0 bne _08069048 ldrh r0, [r2, 0x2E] @@ -1068,7 +1068,7 @@ _08069018: b _08069052 .align 2, 0 _08069040: .4byte gSprites -_08069044: .4byte sub_8068FA8 +_08069044: .4byte UpdateObjectEventSpriteSubpriorityAndVisibility _08069048: adds r4, 0x44 adds r3, 0x1 @@ -1099,7 +1099,7 @@ sub_8069058: @ 8069058 ldr r0, _08069090 @ =gSprites adds r4, r0 adds r0, r5, 0 - bl ObjectEventDirectionToImageAnimId + bl GetFaceDirectionAnimNum adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 diff --git a/asm/event_object_movement.s b/asm/event_object_movement.s index 30af8949b..06e977258 100644 --- a/asm/event_object_movement.s +++ b/asm/event_object_movement.s @@ -4,22059 +4,4 @@ .syntax unified .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 sub_805DF30 -sub_805DF30: @ 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 sub_805DF30 - - 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 is_light_level_1_2_3_5_or_6 - 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 npc_load_two_palettes__no_record - 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 npc_load_two_palettes__and_record -_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 sub_805E8E8 -sub_805E8E8: @ 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 sub_805E8E8 - - 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 sub_805E8E8 - 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 sub_805E8E8 - 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 @ =sub_8068FA8 - add r3, sp, 0x1C - adds r0, r5, 0 - mov r2, sp - bl sub_805E8E8 - 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 npc_load_two_palettes__and_record -_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 sub_8068FA8 -_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 sub_805E8E8 - 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 npc_load_two_palettes__and_record -_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 npc_load_two_palettes__no_record -_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 npc_load_two_palettes__and_record -_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 sub_80DB0C4 - 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 pal_patch_for_npc -_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 npc_load_two_palettes__and_record -_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 sub_8063B1C - 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 pal_patch_for_npc -pal_patch_for_npc: @ 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 pal_patch_for_npc - - 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 pal_patch_for_npc - 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 npc_load_two_palettes__no_record -npc_load_two_palettes__no_record: @ 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 pal_patch_for_npc - movs r3, 0 - ldr r1, _0805F630 @ =gUnknown_83A5208 - ldrh r0, [r1] - ldr r2, _0805F634 @ =0x000011ff - cmp r0, r2 - beq _0805F650 - ldr r0, _0805F638 @ =gUnknown_835B934 - 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 pal_patch_for_npc - b _0805F650 - .align 2, 0 -_0805F630: .4byte gUnknown_83A5208 -_0805F634: .4byte 0x000011ff -_0805F638: .4byte gUnknown_835B934 -_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 npc_load_two_palettes__no_record - - thumb_func_start npc_load_two_palettes__and_record -npc_load_two_palettes__and_record: @ 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 pal_patch_for_npc - movs r3, 0 - ldr r1, _0805F6A8 @ =gUnknown_83A5278 - ldrh r0, [r1] - ldr r2, _0805F6AC @ =0x000011ff - cmp r0, r2 - beq _0805F6C8 - ldr r0, _0805F6B0 @ =gUnknown_835B934 - 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 pal_patch_for_npc - b _0805F6C8 - .align 2, 0 -_0805F6A4: .4byte gUnknown_203709A -_0805F6A8: .4byte gUnknown_83A5278 -_0805F6AC: .4byte 0x000011ff -_0805F6B0: .4byte gUnknown_835B934 -_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 npc_load_two_palettes__and_record - - thumb_func_start sub_805F6D0 -sub_805F6D0: @ 805F6D0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805F6DC @ =gUnknown_835B934 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805F6DC: .4byte gUnknown_835B934 - 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 sub_8063B1C - 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 obj_unfreeze -obj_unfreeze: @ 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 obj_unfreeze - - 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 sub_805FE5C -sub_805FE5C: @ 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 sub_805FE5C - - thumb_func_start sub_805FE7C -sub_805FE7C: @ 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 sub_805FE7C - - 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 sub_805FE5C -_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 npc_paltag_by_palslot -npc_paltag_by_palslot: @ 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 npc_paltag_by_palslot - - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063F84 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063F84 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063F84 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_8063F84 - 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 sub_8063F84 - 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 sub_80645C8 - 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 sub_8064588 - 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 sub_8063F84 - 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 sub_8063F84 - 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 sub_80645C8 - 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 sub_8064588 - 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 sub_8064588 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8063F84 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl sub_80645C8 - 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 npc_block_way - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl sub_80645C8 -_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 sub_80645C8 - 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 npc_block_way - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl sub_80645C8 -_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 sub_80645C8 - 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 npc_block_way - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl sub_80645C8 -_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 sub_80645C8 - 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 npc_block_way - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl sub_80645C8 -_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 sub_806413C - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_80645C8 - 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 npc_block_way - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl sub_80645C8 -_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 sub_80645C8 - 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 npc_block_way - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl sub_80645C8 -_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 sub_8064588 - 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 sub_80645C8 - 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 sub_80645C8 - 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 sub_80645C8 - 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 sub_8063EB8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80645C8 - 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 sub_8064588 - 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 sub_80645C8 - 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 sub_8064588 - 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 sub_80645C8 - 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 sub_80645C8 - 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 sub_8064588 - 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 sub_8063470 -sub_8063470: @ 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 sub_8063470 - - 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 npc_block_way - 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 npc_block_way -npc_block_way: @ 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 npc_block_way - - thumb_func_start sub_8063770 -sub_8063770: @ 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 sub_8063770 - - 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 @ =gUnknown_300506C - ldrh r0, [r2] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r2] - ldr r1, _08063B18 @ =gUnknown_3005068 - 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 gUnknown_300506C -_08063B18: .4byte gUnknown_3005068 - thumb_func_end sub_8063AD4 - - thumb_func_start sub_8063B1C -sub_8063B1C: @ 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 @ =gUnknown_300506C - ldrh r0, [r0] - negs r0, r0 - ldr r1, _08063BB4 @ =gUnknown_3005050 - ldr r2, [r1, 0x10] - subs r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, _08063BB8 @ =gUnknown_3005068 - 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 gUnknown_300506C -_08063BB4: .4byte gUnknown_3005050 -_08063BB8: .4byte gUnknown_3005068 -_08063BBC: .4byte 0xfff00000 -_08063BC0: .4byte gSaveBlock1Ptr - thumb_func_end sub_8063B1C - - 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 sub_8063B1C - 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 @ =gUnknown_3005050 - 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 gUnknown_3005050 - 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 sub_8064544 -_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 sub_8063EB8 -sub_8063EB8: @ 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 sub_8063EB8 - - 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 sub_8063F84 -sub_8063F84: @ 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 sub_8063F84 - - 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 sub_806413C -sub_806413C: @ 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 sub_806413C - - 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 sub_8063EB8 - 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 @ =gUnknown_83A65BC - 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 gUnknown_83A65BC - thumb_func_end ObjectEventExecSpecialAnim - - thumb_func_start sub_8064544 -sub_8064544: @ 8064544 - push {r4,lr} - adds r4, r0, 0 - ldr r2, _08064584 @ =gUnknown_83A65BC - 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 gUnknown_83A65BC - thumb_func_end sub_8064544 - - thumb_func_start sub_8064588 -sub_8064588: @ 8064588 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080645B4 @ =gUnknown_83A65BC - 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 gUnknown_83A65BC -_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 sub_8064588 - - thumb_func_start sub_80645C8 -sub_80645C8: @ 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 sub_80645C8 - - thumb_func_start an_look_any -an_look_any: @ 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 an_look_any - - thumb_func_start sub_8064638 -sub_8064638: @ 8064638 - push {lr} - movs r2, 0x1 - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8064638 - - thumb_func_start sub_8064648 -sub_8064648: @ 8064648 - push {lr} - movs r2, 0x2 - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8064648 - - thumb_func_start sub_8064658 -sub_8064658: @ 8064658 - push {lr} - movs r2, 0x3 - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8064658 - - thumb_func_start sub_8064668 -sub_8064668: @ 8064668 - push {lr} - movs r2, 0x4 - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8064668 - - 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 sub_8064968 -sub_8064968: @ 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 sub_8064988 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064968 - - thumb_func_start sub_8064988 -sub_8064988: @ 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 sub_8064988 - - thumb_func_start sub_80649A8 -sub_80649A8: @ 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 sub_80649C8 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80649A8 - - thumb_func_start sub_80649C8 -sub_80649C8: @ 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 sub_80649C8 - - thumb_func_start sub_80649E8 -sub_80649E8: @ 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 sub_8064A08 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80649E8 - - thumb_func_start sub_8064A08 -sub_8064A08: @ 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 sub_8064A08 - - thumb_func_start sub_8064A28 -sub_8064A28: @ 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 sub_8064A48 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064A28 - - thumb_func_start sub_8064A48 -sub_8064A48: @ 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 sub_8064A48 - - thumb_func_start sub_8064A68 -sub_8064A68: @ 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 sub_8064A88 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064A68 - - thumb_func_start sub_8064A88 -sub_8064A88: @ 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 sub_8064A88 - - thumb_func_start sub_8064AA8 -sub_8064AA8: @ 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 sub_8064AC8 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064AA8 - - thumb_func_start sub_8064AC8 -sub_8064AC8: @ 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 sub_8064AC8 - - thumb_func_start sub_8064AE8 -sub_8064AE8: @ 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 sub_8064B08 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064AE8 - - thumb_func_start sub_8064B08 -sub_8064B08: @ 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 sub_8064B08 - - thumb_func_start sub_8064B28 -sub_8064B28: @ 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 sub_8064B48 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064B28 - - thumb_func_start sub_8064B48 -sub_8064B48: @ 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 sub_8064B48 - - 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 sub_8064C3C -sub_8064C3C: @ 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 sub_8064C5C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064C3C - - thumb_func_start sub_8064C5C -sub_8064C5C: @ 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 sub_8064C5C - - thumb_func_start sub_8064C7C -sub_8064C7C: @ 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 sub_8064C9C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064C7C - - thumb_func_start sub_8064C9C -sub_8064C9C: @ 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 sub_8064C9C - - thumb_func_start sub_8064CBC -sub_8064CBC: @ 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 sub_8064CDC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064CBC - - thumb_func_start sub_8064CDC -sub_8064CDC: @ 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 sub_8064CDC - - thumb_func_start sub_8064CFC -sub_8064CFC: @ 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 sub_8064D1C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064CFC - - thumb_func_start sub_8064D1C -sub_8064D1C: @ 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 sub_8064D1C - - thumb_func_start sub_8064D3C -sub_8064D3C: @ 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 sub_8064D5C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064D3C - - thumb_func_start sub_8064D5C -sub_8064D5C: @ 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 sub_8064D5C - - thumb_func_start sub_8064D7C -sub_8064D7C: @ 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 sub_8064D9C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064D7C - - thumb_func_start sub_8064D9C -sub_8064D9C: @ 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 sub_8064D9C - - thumb_func_start sub_8064DBC -sub_8064DBC: @ 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 sub_8064DDC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064DBC - - thumb_func_start sub_8064DDC -sub_8064DDC: @ 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 sub_8064DDC - - thumb_func_start sub_8064DFC -sub_8064DFC: @ 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 sub_8064E1C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8064DFC - - thumb_func_start sub_8064E1C -sub_8064E1C: @ 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 sub_8064E1C - - 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 sub_80650A8 -sub_80650A8: @ 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 sub_80650D4 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80650A8 - - thumb_func_start sub_80650D4 -sub_80650D4: @ 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 sub_80650D4 - - thumb_func_start sub_8065100 -sub_8065100: @ 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 sub_806512C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065100 - - thumb_func_start sub_806512C -sub_806512C: @ 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 sub_806512C - - thumb_func_start sub_8065158 -sub_8065158: @ 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 sub_8065184 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065158 - - thumb_func_start sub_8065184 -sub_8065184: @ 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 sub_8065184 - - thumb_func_start sub_80651B0 -sub_80651B0: @ 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 sub_80651DC - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80651B0 - - thumb_func_start sub_80651DC -sub_80651DC: @ 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 sub_80651DC - - 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 sub_8065210 -sub_8065210: @ 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 sub_8065210 - - thumb_func_start sub_806522C -sub_806522C: @ 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 sub_8065210 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806522C - - thumb_func_start sub_806524C -sub_806524C: @ 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 sub_8065210 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806524C - - thumb_func_start sub_806526C -sub_806526C: @ 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 sub_8065210 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806526C - - thumb_func_start sub_806528C -sub_806528C: @ 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 sub_8065210 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806528C - - thumb_func_start sub_80652AC -sub_80652AC: @ 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 sub_8065210 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80652AC - - thumb_func_start sub_80652CC -sub_80652CC: @ 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 sub_80652EC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80652CC - - thumb_func_start sub_80652EC -sub_80652EC: @ 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 sub_80652EC - - thumb_func_start sub_806530C -sub_806530C: @ 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 sub_806532C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806530C - - thumb_func_start sub_806532C -sub_806532C: @ 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 sub_806532C - - thumb_func_start sub_806534C -sub_806534C: @ 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 sub_806536C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806534C - - thumb_func_start sub_806536C -sub_806536C: @ 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 sub_806536C - - thumb_func_start sub_806538C -sub_806538C: @ 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 sub_80653AC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806538C - - thumb_func_start sub_80653AC -sub_80653AC: @ 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 sub_80653AC - - 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 sub_80653F8 -sub_80653F8: @ 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 sub_8065438 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80653F8 - - thumb_func_start sub_8065438 -sub_8065438: @ 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 sub_8065438 - - thumb_func_start sub_8065464 -sub_8065464: @ 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 sub_80654A4 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065464 - - thumb_func_start sub_80654A4 -sub_80654A4: @ 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 sub_80654A4 - - thumb_func_start sub_80654D0 -sub_80654D0: @ 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 sub_8065510 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80654D0 - - thumb_func_start sub_8065510 -sub_8065510: @ 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 sub_8065510 - - thumb_func_start sub_806553C -sub_806553C: @ 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 sub_806557C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806553C - - thumb_func_start sub_806557C -sub_806557C: @ 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 sub_806557C - - 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 sub_80655D4 -sub_80655D4: @ 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 sub_80655D4 - - thumb_func_start sub_8065610 -sub_8065610: @ 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 sub_8065610 - - thumb_func_start sub_806564C -sub_806564C: @ 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 sub_806564C - - thumb_func_start sub_8065688 -sub_8065688: @ 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 sub_8065688 - - 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 sub_806570C -sub_806570C: @ 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 sub_806570C - - thumb_func_start sub_8065734 -sub_8065734: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065734 - - thumb_func_start sub_8065770 -sub_8065770: @ 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 sub_8065734 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065770 - - thumb_func_start sub_80657A8 -sub_80657A8: @ 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 sub_8065734 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80657A8 - - thumb_func_start sub_80657E0 -sub_80657E0: @ 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 sub_8065734 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80657E0 - - thumb_func_start sub_8065818 -sub_8065818: @ 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 sub_8065734 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065818 - - thumb_func_start sub_8065850 -sub_8065850: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065850 - - thumb_func_start sub_8065888 -sub_8065888: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065888 - - thumb_func_start sub_80658C0 -sub_80658C0: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80658C0 - - thumb_func_start sub_80658F8 -sub_80658F8: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80658F8 - - thumb_func_start sub_8065930 -sub_8065930: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065930 - - thumb_func_start sub_8065968 -sub_8065968: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065968 - - thumb_func_start sub_80659A0 -sub_80659A0: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80659A0 - - thumb_func_start sub_80659D8 -sub_80659D8: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80659D8 - - thumb_func_start sub_8065A10 -sub_8065A10: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065A10 - - thumb_func_start sub_8065A48 -sub_8065A48: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065A48 - - thumb_func_start sub_8065A80 -sub_8065A80: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065A80 - - thumb_func_start sub_8065AB8 -sub_8065AB8: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065AB8 - - thumb_func_start sub_8065AF0 -sub_8065AF0: @ 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 sub_8065B10 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065AF0 - - thumb_func_start sub_8065B10 -sub_8065B10: @ 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 sub_8065B10 - - thumb_func_start sub_8065B30 -sub_8065B30: @ 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 sub_8065B50 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065B30 - - thumb_func_start sub_8065B50 -sub_8065B50: @ 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 sub_8065B50 - - thumb_func_start sub_8065B70 -sub_8065B70: @ 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 sub_8065B90 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065B70 - - thumb_func_start sub_8065B90 -sub_8065B90: @ 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 sub_8065B90 - - thumb_func_start sub_8065BB0 -sub_8065BB0: @ 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 sub_8065BD0 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065BB0 - - thumb_func_start sub_8065BD0 -sub_8065BD0: @ 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 sub_8065BD0 - - thumb_func_start sub_8065BF0 -sub_8065BF0: @ 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 sub_8065C10 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065BF0 - - thumb_func_start sub_8065C10 -sub_8065C10: @ 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 sub_8065C10 - - thumb_func_start sub_8065C30 -sub_8065C30: @ 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 sub_8065C50 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065C30 - - thumb_func_start sub_8065C50 -sub_8065C50: @ 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 sub_8065C50 - - thumb_func_start sub_8065C70 -sub_8065C70: @ 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 sub_8065C90 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065C70 - - thumb_func_start sub_8065C90 -sub_8065C90: @ 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 sub_8065C90 - - thumb_func_start sub_8065CB0 -sub_8065CB0: @ 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 sub_8065CD0 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065CB0 - - thumb_func_start sub_8065CD0 -sub_8065CD0: @ 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 sub_8065CD0 - - thumb_func_start sub_8065CF0 -sub_8065CF0: @ 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 sub_8065D10 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065CF0 - - thumb_func_start sub_8065D10 -sub_8065D10: @ 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 sub_8065D10 - - thumb_func_start sub_8065D30 -sub_8065D30: @ 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 sub_8065D50 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065D30 - - thumb_func_start sub_8065D50 -sub_8065D50: @ 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 sub_8065D50 - - thumb_func_start sub_8065D70 -sub_8065D70: @ 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 sub_8065D90 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065D70 - - thumb_func_start sub_8065D90 -sub_8065D90: @ 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 sub_8065D90 - - thumb_func_start sub_8065DB0 -sub_8065DB0: @ 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 sub_8065DD0 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065DB0 - - thumb_func_start sub_8065DD0 -sub_8065DD0: @ 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 sub_8065DD0 - - 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 sub_8065E10 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end do_run_south_anim - - thumb_func_start sub_8065E10 -sub_8065E10: @ 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 sub_8065E10 - - 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 sub_8065E50 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end do_run_north_anim - - thumb_func_start sub_8065E50 -sub_8065E50: @ 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 sub_8065E50 - - 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 sub_8065E90 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end do_run_west_anim - - thumb_func_start sub_8065E90 -sub_8065E90: @ 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 sub_8065E90 - - 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 sub_8065ED0 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end do_run_east_anim - - thumb_func_start sub_8065ED0 -sub_8065ED0: @ 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 sub_8065ED0 - - 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 sub_8065FC4 -sub_8065FC4: @ 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 sub_8065FE4 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8065FC4 - - thumb_func_start sub_8065FE4 -sub_8065FE4: @ 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 sub_8065FE4 - - thumb_func_start sub_8066004 -sub_8066004: @ 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 sub_8066024 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066004 - - thumb_func_start sub_8066024 -sub_8066024: @ 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 sub_8066024 - - thumb_func_start sub_8066044 -sub_8066044: @ 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 sub_8066064 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066044 - - thumb_func_start sub_8066064 -sub_8066064: @ 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 sub_8066064 - - thumb_func_start sub_8066084 -sub_8066084: @ 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 sub_80660A4 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066084 - - thumb_func_start sub_80660A4 -sub_80660A4: @ 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 sub_80660A4 - - 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 sub_80660F0 -sub_80660F0: @ 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 sub_80660F0 - - thumb_func_start sub_8066108 -sub_8066108: @ 8066108 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8068E9C - 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 sub_8066108 - - 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 sub_806615C -sub_806615C: @ 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 sub_806617C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806615C - - thumb_func_start sub_806617C -sub_806617C: @ 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 sub_806617C - - thumb_func_start sub_80661A4 -sub_80661A4: @ 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 sub_80661C4 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80661A4 - - thumb_func_start sub_80661C4 -sub_80661C4: @ 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 sub_80661C4 - - thumb_func_start sub_80661EC -sub_80661EC: @ 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 sub_806620C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80661EC - - thumb_func_start sub_806620C -sub_806620C: @ 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 sub_806620C - - thumb_func_start sub_8066234 -sub_8066234: @ 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 sub_8066254 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066234 - - thumb_func_start sub_8066254 -sub_8066254: @ 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 sub_8066254 - - thumb_func_start sub_806627C -sub_806627C: @ 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 sub_806629C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806627C - - thumb_func_start sub_806629C -sub_806629C: @ 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 sub_806629C - - thumb_func_start sub_80662BC -sub_80662BC: @ 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 sub_80662DC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80662BC - - thumb_func_start sub_80662DC -sub_80662DC: @ 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 sub_80662DC - - thumb_func_start sub_80662FC -sub_80662FC: @ 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 sub_806631C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80662FC - - thumb_func_start sub_806631C -sub_806631C: @ 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 sub_806631C - - thumb_func_start sub_806633C -sub_806633C: @ 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 sub_806635C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806633C - - thumb_func_start sub_806635C -sub_806635C: @ 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 sub_806635C - - thumb_func_start sub_806637C -sub_806637C: @ 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 an_look_any -_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 sub_806637C - - thumb_func_start sub_80663D8 -sub_80663D8: @ 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 an_look_any -_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 sub_80663D8 - - thumb_func_start sub_806643C -sub_806643C: @ 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 sub_806643C - - thumb_func_start sub_806644C -sub_806644C: @ 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 sub_806644C - - thumb_func_start sub_806645C -sub_806645C: @ 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 sub_8066488 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806645C - - thumb_func_start sub_8066488 -sub_8066488: @ 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 sub_8066488 - - thumb_func_start sub_80664B4 -sub_80664B4: @ 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 sub_80664E0 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80664B4 - - thumb_func_start sub_80664E0 -sub_80664E0: @ 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 sub_80664E0 - - thumb_func_start sub_806650C -sub_806650C: @ 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 sub_8066538 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806650C - - thumb_func_start sub_8066538 -sub_8066538: @ 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 sub_8066538 - - thumb_func_start sub_8066564 -sub_8066564: @ 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 sub_8066590 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066564 - - thumb_func_start sub_8066590 -sub_8066590: @ 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 sub_8066590 - - thumb_func_start sub_80665BC -sub_80665BC: @ 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 sub_80665E8 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80665BC - - thumb_func_start sub_80665E8 -sub_80665E8: @ 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 sub_80665E8 - - thumb_func_start sub_8066614 -sub_8066614: @ 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 sub_8066640 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066614 - - thumb_func_start sub_8066640 -sub_8066640: @ 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 sub_8066640 - - thumb_func_start sub_806666C -sub_806666C: @ 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 sub_8066698 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806666C - - thumb_func_start sub_8066698 -sub_8066698: @ 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 sub_8066698 - - thumb_func_start sub_80666C4 -sub_80666C4: @ 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 sub_80666F0 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80666C4 - - thumb_func_start sub_80666F0 -sub_80666F0: @ 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 sub_80666F0 - - thumb_func_start sub_806671C -sub_806671C: @ 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 sub_8066748 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806671C - - thumb_func_start sub_8066748 -sub_8066748: @ 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 sub_8066748 - - thumb_func_start sub_8066774 -sub_8066774: @ 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 sub_80667A0 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066774 - - thumb_func_start sub_80667A0 -sub_80667A0: @ 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 sub_80667A0 - - thumb_func_start sub_80667CC -sub_80667CC: @ 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 sub_80667F8 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80667CC - - thumb_func_start sub_80667F8 -sub_80667F8: @ 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 sub_80667F8 - - thumb_func_start sub_8066824 -sub_8066824: @ 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 sub_8066850 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066824 - - thumb_func_start sub_8066850 -sub_8066850: @ 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 sub_8066850 - - thumb_func_start sub_806687C -sub_806687C: @ 806687C - push {lr} - ldr r3, _08066890 @ =gInitialMovementTypeFacingDirections - ldrb r2, [r0, 0x6] - adds r2, r3 - ldrb r2, [r2] - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_08066890: .4byte gInitialMovementTypeFacingDirections - thumb_func_end sub_806687C - - thumb_func_start sub_8066894 -sub_8066894: @ 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 sub_8066894 - - thumb_func_start sub_80668A4 -sub_80668A4: @ 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 sub_80668A4 - - thumb_func_start sub_80668B4 -sub_80668B4: @ 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 sub_80668B4 - - thumb_func_start sub_80668C4 -sub_80668C4: @ 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 sub_80668C4 - - thumb_func_start sub_80668D4 -sub_80668D4: @ 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 sub_80668D4 - - thumb_func_start sub_8066900 -sub_8066900: @ 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 sub_8066900 - - thumb_func_start sub_8066910 -sub_8066910: @ 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 sub_8066910 - - 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 - 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 - 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_heart_bubble -do_heart_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 - 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_heart_bubble - - thumb_func_start sub_806698C -sub_806698C: @ 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 - bl FieldEffectStart - movs r0, 0x1 - strh r0, [r4, 0x32] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080669AC: .4byte gFieldEffectArguments - thumb_func_end sub_806698C - - thumb_func_start sub_80669B0 -sub_80669B0: @ 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 - bl FieldEffectStart - movs r0, 0x1 - strh r0, [r4, 0x32] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080669D0: .4byte gFieldEffectArguments - thumb_func_end sub_80669B0 - - thumb_func_start sub_80669D4 -sub_80669D4: @ 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 sub_80824EC - 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 sub_8066A18 - 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 sub_80669D4 - - thumb_func_start sub_8066A18 -sub_8066A18: @ 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 sub_8066A18 - - thumb_func_start sub_8066A38 -sub_8066A38: @ 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 sub_8066A38 - - thumb_func_start sub_8066A54 -sub_8066A54: @ 8066A54 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8068E9C - 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 sub_8066A54 - - thumb_func_start sub_8066A78 -sub_8066A78: @ 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 sub_8066A78 - - thumb_func_start sub_8066AB4 -sub_8066AB4: @ 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 sub_8066AB4 - - thumb_func_start sub_8066AD0 -sub_8066AD0: @ 8066AD0 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8068E9C - 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 sub_8066AD0 - - thumb_func_start sub_8066AF4 -sub_8066AF4: @ 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 sub_8066AF4 - - thumb_func_start sub_8066B30 -sub_8066B30: @ 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 sub_8066B30 - - thumb_func_start sub_8066B40 -sub_8066B40: @ 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 sub_8066B40 - - thumb_func_start sub_8066B50 -sub_8066B50: @ 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 sub_8066B50 - - thumb_func_start sub_8066B80 -sub_8066B80: @ 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 sub_8066B80 - - thumb_func_start sub_8066BB0 -sub_8066BB0: @ 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 sub_8066BE4 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066BB0 - - thumb_func_start sub_8066BE4 -sub_8066BE4: @ 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 sub_8066BE4 - - thumb_func_start sub_8066C10 -sub_8066C10: @ 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 sub_8066C44 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066C10 - - thumb_func_start sub_8066C44 -sub_8066C44: @ 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 sub_8066C44 - - 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 sub_8066CB0 -sub_8066CB0: @ 8066CB0 - push {lr} - movs r2, 0x1 - bl sub_8066C70 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8066CB0 - - thumb_func_start sub_8066CC0 -sub_8066CC0: @ 8066CC0 - push {lr} - movs r2, 0x2 - bl sub_8066C70 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8066CC0 - - thumb_func_start sub_8066CD0 -sub_8066CD0: @ 8066CD0 - push {lr} - movs r2, 0x3 - bl sub_8066C70 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8066CD0 - - thumb_func_start sub_8066CE0 -sub_8066CE0: @ 8066CE0 - push {lr} - movs r2, 0x4 - bl sub_8066C70 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8066CE0 - - thumb_func_start sub_8066CF0 -sub_8066CF0: @ 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 sub_8066CF0 - - thumb_func_start sub_8066D14 -sub_8066D14: @ 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 sub_8066D14 - - thumb_func_start sub_8066D38 -sub_8066D38: @ 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 sub_8066D38 - - thumb_func_start sub_8066D5C -sub_8066D5C: @ 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 sub_8066D5C - - thumb_func_start sub_8066D80 -sub_8066D80: @ 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 sub_8066D80 - - thumb_func_start sub_8066DA4 -sub_8066DA4: @ 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 sub_8066DA4 - - thumb_func_start sub_8066DC8 -sub_8066DC8: @ 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 sub_8066DC8 - - thumb_func_start sub_8066DEC -sub_8066DEC: @ 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 sub_8066DEC - - thumb_func_start sub_8066E10 -sub_8066E10: @ 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 sub_8066E10 - - thumb_func_start sub_8066E34 -sub_8066E34: @ 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 sub_8066E34 - - thumb_func_start sub_8066E58 -sub_8066E58: @ 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 sub_8066E58 - - thumb_func_start sub_8066E7C -sub_8066E7C: @ 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 sub_8066E7C - - 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 sub_8066EE4 -sub_8066EE4: @ 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 sub_8066F10 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066EE4 - - thumb_func_start sub_8066F10 -sub_8066F10: @ 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 sub_8066F10 - - thumb_func_start sub_8066F3C -sub_8066F3C: @ 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 sub_8066F68 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066F3C - - thumb_func_start sub_8066F68 -sub_8066F68: @ 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 sub_8066F68 - - thumb_func_start sub_8066F94 -sub_8066F94: @ 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 sub_8066FC0 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066F94 - - thumb_func_start sub_8066FC0 -sub_8066FC0: @ 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 sub_8066FC0 - - thumb_func_start sub_8066FEC -sub_8066FEC: @ 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 sub_8067018 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8066FEC - - thumb_func_start sub_8067018 -sub_8067018: @ 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 sub_8067018 - - thumb_func_start sub_8067044 -sub_8067044: @ 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 sub_8067070 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8067044 - - thumb_func_start sub_8067070 -sub_8067070: @ 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 sub_8067070 - - thumb_func_start sub_806709C -sub_806709C: @ 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 sub_80670C8 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806709C - - thumb_func_start sub_80670C8 -sub_80670C8: @ 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 sub_80670C8 - - thumb_func_start sub_80670F4 -sub_80670F4: @ 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 sub_8067120 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80670F4 - - thumb_func_start sub_8067120 -sub_8067120: @ 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 sub_8067120 - - thumb_func_start sub_806714C -sub_806714C: @ 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 sub_8067178 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806714C - - thumb_func_start sub_8067178 -sub_8067178: @ 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 sub_8067178 - - thumb_func_start sub_80671A4 -sub_80671A4: @ 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 sub_80671D0 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80671A4 - - thumb_func_start sub_80671D0 -sub_80671D0: @ 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 sub_80671D0 - - thumb_func_start sub_80671FC -sub_80671FC: @ 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 sub_8067228 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80671FC - - thumb_func_start sub_8067228 -sub_8067228: @ 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 sub_8067228 - - thumb_func_start sub_8067254 -sub_8067254: @ 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 sub_8067280 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8067254 - - thumb_func_start sub_8067280 -sub_8067280: @ 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 sub_8067280 - - thumb_func_start sub_80672AC -sub_80672AC: @ 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 sub_80672D8 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80672AC - - thumb_func_start sub_80672D8 -sub_80672D8: @ 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 sub_80672D8 - - thumb_func_start sub_8067304 -sub_8067304: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8067304 - - thumb_func_start sub_806733C -sub_806733C: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806733C - - thumb_func_start sub_8067374 -sub_8067374: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8067374 - - thumb_func_start sub_80673AC -sub_80673AC: @ 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 sub_806570C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80673AC - - 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 sub_806741C -sub_806741C: @ 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 sub_806743C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806741C - - thumb_func_start sub_806743C -sub_806743C: @ 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 sub_806743C - - thumb_func_start sub_806745C -sub_806745C: @ 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 sub_806747C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806745C - - thumb_func_start sub_806747C -sub_806747C: @ 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 sub_806747C - - thumb_func_start sub_806749C -sub_806749C: @ 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 sub_80674BC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806749C - - thumb_func_start sub_80674BC -sub_80674BC: @ 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 sub_80674BC - - thumb_func_start sub_80674DC -sub_80674DC: @ 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 sub_80674FC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80674DC - - thumb_func_start sub_80674FC -sub_80674FC: @ 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 sub_80674FC - - 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 sub_806754C -sub_806754C: @ 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 sub_806756C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806754C - - thumb_func_start sub_806756C -sub_806756C: @ 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 sub_806756C - - thumb_func_start sub_806758C -sub_806758C: @ 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 sub_80675AC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806758C - - thumb_func_start sub_80675AC -sub_80675AC: @ 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 sub_80675AC - - thumb_func_start sub_80675CC -sub_80675CC: @ 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 sub_80675EC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80675CC - - thumb_func_start sub_80675EC -sub_80675EC: @ 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 sub_80675EC - - thumb_func_start sub_806760C -sub_806760C: @ 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 sub_806762C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806760C - - thumb_func_start sub_806762C -sub_806762C: @ 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 sub_806762C - - 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 sub_8067684 -sub_8067684: @ 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 sub_80676A4 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8067684 - - thumb_func_start sub_80676A4 -sub_80676A4: @ 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 sub_80676A4 - - thumb_func_start sub_80676C4 -sub_80676C4: @ 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 sub_80676E4 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80676C4 - - thumb_func_start sub_80676E4 -sub_80676E4: @ 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 sub_80676E4 - - thumb_func_start sub_8067704 -sub_8067704: @ 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 sub_8067724 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8067704 - - thumb_func_start sub_8067724 -sub_8067724: @ 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 sub_8067724 - - thumb_func_start sub_8067744 -sub_8067744: @ 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 sub_8067764 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8067744 - - thumb_func_start sub_8067764 -sub_8067764: @ 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 sub_8067764 - - thumb_func_start sub_8067784 -sub_8067784: @ 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 sub_8067784 - - thumb_func_start sub_80677C0 -sub_80677C0: @ 80677C0 - adds r1, 0x3F - ldrb r0, [r1] - lsls r0, 27 - lsrs r0, 31 - bx lr - thumb_func_end sub_80677C0 - - thumb_func_start sub_80677CC -sub_80677CC: @ 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 sub_80677CC - - thumb_func_start sub_80678C0 -sub_80678C0: @ 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 sub_80678C0 - - thumb_func_start sub_80678F0 -sub_80678F0: @ 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 sub_80678F0 - - thumb_func_start sub_8067924 -sub_8067924: @ 8067924 - adds r1, 0x3F - ldrb r0, [r1] - lsls r0, 27 - lsrs r0, 31 - bx lr - thumb_func_end sub_8067924 - - thumb_func_start sub_8067930 -sub_8067930: @ 8067930 - movs r0, 0x1 - bx lr - thumb_func_end sub_8067930 - - thumb_func_start sub_8067934 -sub_8067934: @ 8067934 - adds r1, 0x2C - ldrb r0, [r1] - movs r2, 0x40 - orrs r0, r2 - strb r0, [r1] - movs r0, 0x1 - bx lr - thumb_func_end sub_8067934 - - thumb_func_start sub_8067944 -sub_8067944: @ 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 sub_8067944 - - thumb_func_start sub_8067954 -sub_8067954: @ 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 sub_8067954 - - thumb_func_start sub_8067978 -sub_8067978: @ 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 sub_8067978 - - thumb_func_start sub_806798C -sub_806798C: @ 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 sub_806798C - - thumb_func_start sub_80679A8 -sub_80679A8: @ 80679A8 - movs r0, 0x1 - bx lr - thumb_func_end sub_80679A8 - - 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 - .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_camera.s b/asm/field_camera.s index cf9fff21d..86a1c0e76 100644 --- a/asm/field_camera.s +++ b/asm/field_camera.s @@ -797,7 +797,7 @@ _0805AB54: .4byte gSprites thumb_func_start ResetCameraUpdateInfo ResetCameraUpdateInfo: @ 805AB58 - ldr r1, _0805AB6C @ =gUnknown_3005050 + ldr r1, _0805AB6C @ =gFieldCamera movs r0, 0 str r0, [r1, 0x8] str r0, [r1, 0xC] @@ -807,7 +807,7 @@ ResetCameraUpdateInfo: @ 805AB58 str r0, [r1] bx lr .align 2, 0 -_0805AB6C: .4byte gUnknown_3005050 +_0805AB6C: .4byte gFieldCamera thumb_func_end ResetCameraUpdateInfo thumb_func_start InitCameraUpdateCallback @@ -815,7 +815,7 @@ InitCameraUpdateCallback: @ 805AB70 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r4, _0805ABA4 @ =gUnknown_3005050 + ldr r4, _0805ABA4 @ =gFieldCamera ldr r1, [r4, 0x4] cmp r1, 0 beq _0805AB8C @@ -838,7 +838,7 @@ _0805AB8C: pop {r1} bx r1 .align 2, 0 -_0805ABA4: .4byte gUnknown_3005050 +_0805ABA4: .4byte gFieldCamera _0805ABA8: .4byte gSprites _0805ABAC: .4byte CameraUpdateCallback thumb_func_end InitCameraUpdateCallback @@ -848,7 +848,7 @@ CameraUpdate: @ 805ABB0 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r6, _0805ACA4 @ =gUnknown_3005050 + ldr r6, _0805ACA4 @ =gFieldCamera ldr r1, [r6] cmp r1, 0 beq _0805ABC4 @@ -903,7 +903,7 @@ _0805AC08: ble _0805AC1C movs r4, 0x1 _0805AC1C: - ldr r2, _0805ACA4 @ =gUnknown_3005050 + ldr r2, _0805ACA4 @ =gFieldCamera ldr r0, [r2, 0x10] adds r1, r0, r7 str r1, [r2, 0x10] @@ -956,11 +956,11 @@ _0805AC7E: adds r1, r7, 0 mov r2, r8 bl coords8_add - ldr r1, _0805ACAC @ =gUnknown_300506C + ldr r1, _0805ACAC @ =gTotalCameraPixelOffsetX ldrh r0, [r1] subs r0, r7 strh r0, [r1] - ldr r1, _0805ACB0 @ =gUnknown_3005068 + ldr r1, _0805ACB0 @ =gTotalCameraPixelOffsetY ldrh r0, [r1] mov r2, r8 subs r0, r2 @@ -971,10 +971,10 @@ _0805AC7E: pop {r0} bx r0 .align 2, 0 -_0805ACA4: .4byte gUnknown_3005050 +_0805ACA4: .4byte gFieldCamera _0805ACA8: .4byte gUnknown_3000E90 -_0805ACAC: .4byte gUnknown_300506C -_0805ACB0: .4byte gUnknown_3005068 +_0805ACAC: .4byte gTotalCameraPixelOffsetX +_0805ACB0: .4byte gTotalCameraPixelOffsetY thumb_func_end CameraUpdate thumb_func_start sub_805ACB4 @@ -989,12 +989,12 @@ sub_805ACB4: @ 805ACB4 asrs r1, 16 bl UpdateObjectEventsForCameraUpdate bl DrawWholeMapView - ldr r1, _0805ACE8 @ =gUnknown_300506C + ldr r1, _0805ACE8 @ =gTotalCameraPixelOffsetX lsls r4, 4 ldrh r0, [r1] subs r0, r4 strh r0, [r1] - ldr r1, _0805ACEC @ =gUnknown_3005068 + ldr r1, _0805ACEC @ =gTotalCameraPixelOffsetY lsls r5, 4 ldrh r0, [r1] subs r0, r5 @@ -1003,8 +1003,8 @@ sub_805ACB4: @ 805ACB4 pop {r0} bx r0 .align 2, 0 -_0805ACE8: .4byte gUnknown_300506C -_0805ACEC: .4byte gUnknown_3005068 +_0805ACE8: .4byte gTotalCameraPixelOffsetX +_0805ACEC: .4byte gTotalCameraPixelOffsetY thumb_func_end sub_805ACB4 thumb_func_start sub_805ACF0 @@ -1012,7 +1012,7 @@ sub_805ACF0: @ 805ACF0 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r4, _0805ADCC @ =gUnknown_3005050 + ldr r4, _0805ADCC @ =gFieldCamera ldr r1, [r4] cmp r1, 0 beq _0805AD04 @@ -1067,7 +1067,7 @@ _0805AD48: ble _0805AD5C movs r5, 0x1 _0805AD5C: - ldr r2, _0805ADCC @ =gUnknown_3005050 + ldr r2, _0805ADCC @ =gFieldCamera ldr r0, [r2, 0x10] adds r1, r0, r7 str r1, [r2, 0x10] @@ -1123,7 +1123,7 @@ _0805ADB6: pop {r0} bx r0 .align 2, 0 -_0805ADCC: .4byte gUnknown_3005050 +_0805ADCC: .4byte gFieldCamera _0805ADD0: .4byte gUnknown_3000E90 thumb_func_end sub_805ACF0 @@ -1184,14 +1184,14 @@ UpdateCameraPanning: @ 805AE28 bl _call_via_r0 _0805AE36: ldr r2, _0805AE5C @ =gSpriteCoordOffsetX - ldr r0, _0805AE60 @ =gUnknown_300506C + ldr r0, _0805AE60 @ =gTotalCameraPixelOffsetX ldr r1, _0805AE64 @ =gUnknown_3000E98 ldrh r0, [r0] ldrh r1, [r1] subs r0, r1 strh r0, [r2] ldr r2, _0805AE68 @ =gSpriteCoordOffsetY - ldr r0, _0805AE6C @ =gUnknown_3005068 + ldr r0, _0805AE6C @ =gTotalCameraPixelOffsetY ldr r1, _0805AE70 @ =gUnknown_3000E9A ldrh r0, [r0] ldrh r1, [r1] @@ -1203,10 +1203,10 @@ _0805AE36: .align 2, 0 _0805AE58: .4byte gUnknown_3000EA0 _0805AE5C: .4byte gSpriteCoordOffsetX -_0805AE60: .4byte gUnknown_300506C +_0805AE60: .4byte gTotalCameraPixelOffsetX _0805AE64: .4byte gUnknown_3000E98 _0805AE68: .4byte gSpriteCoordOffsetY -_0805AE6C: .4byte gUnknown_3005068 +_0805AE6C: .4byte gTotalCameraPixelOffsetY _0805AE70: .4byte gUnknown_3000E9A thumb_func_end UpdateCameraPanning @@ -1242,7 +1242,7 @@ _0805AEA8: movs r0, 0 strb r0, [r1] _0805AEAE: - bl player_get_direction_upper_nybble + bl GetPlayerMovementDirection lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 83f9a5700..07b7ea3ed 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_effect.s b/asm/field_effect.s index 462182563..4e0fee5c8 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -2238,7 +2238,7 @@ sub_80844BC: @ 80844BC bl GetPlayerFacingDirection lsls r0, 24 lsrs r0, 24 - bl sub_8063EB8 + bl GetFaceDirectionMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -2666,7 +2666,7 @@ _0808484A: bl GetPlayerFacingDirection lsls r0, 24 lsrs r0, 24 - bl sub_8063EB8 + bl GetFaceDirectionMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -2947,7 +2947,7 @@ sub_8084A5C: @ 8084A5C ldr r0, _08084AC0 @ =gObjectEvents adds r4, r0 movs r0, 0x4 - bl sub_8063EB8 + bl GetFaceDirectionMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -3200,7 +3200,7 @@ sub_8084C3C: @ 8084C3C bl ScriptContext2_Disable bl UnfreezeObjectEvents movs r0, 0x4 - bl sub_8063F84 + bl GetWalkNormalMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -4065,7 +4065,7 @@ sub_80852C0: @ 80852C0 movs r0, 0xA8 bl PlaySE movs r0, 0x4 - bl sub_8064194 + bl GetJumpMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -4306,7 +4306,7 @@ _080854C4: ldrb r0, [r4, 0x18] lsls r0, 28 lsrs r0, 28 - bl GetStepInPlaceDelay4AnimId + bl GetWalkInPlaceFastMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -4610,7 +4610,7 @@ _08085702: lsls r1, 24 lsrs r1, 24 adds r0, r6, 0 - bl ObjectEventSetDirection + bl SetObjectEventDirection bl sub_80555E0 bl WarpIntoMap ldr r1, _0808575C @ =gFieldCallback @@ -4668,7 +4668,7 @@ _0808579E: lsrs r0, 28 adds r0, r7 ldrb r0, [r0] - bl sub_8063EB8 + bl GetFaceDirectionMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -5761,7 +5761,7 @@ FldEff_FieldMoveShowMon: @ 8086028 bl GetCurrentMapType lsls r0, 24 lsrs r0, 24 - bl is_light_level_1_2_3_5_or_6 + bl IsMapTypeOutdoors lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -7194,7 +7194,7 @@ sub_8086B30: @ 8086B30 strb r0, [r5] ldrb r0, [r4, 0x18] lsrs r0, 4 - bl sub_8063EB8 + bl GetFaceDirectionMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -7380,12 +7380,12 @@ _08086CD2: ldrb r0, [r4, 0x18] lsls r0, 28 lsrs r0, 28 - bl sub_8063EB8 + bl GetFaceDirectionMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl ObjectEventForceSetSpecialAnim + bl ObjectEventForceSetHeldMovement ldrh r0, [r6, 0x8] adds r0, 0x1 strh r0, [r6, 0x8] @@ -7859,7 +7859,7 @@ sub_808706C: @ 808706C ldr r0, _08087108 @ =gObjectEvents adds r4, r0 adds r0, r4, 0 - bl ObjectEventClearAnimIfSpecialAnimActive + bl ObjectEventClearHeldMovementIfActive ldrb r1, [r4, 0x1] movs r0, 0x11 negs r0, r0 @@ -8676,7 +8676,7 @@ sub_8087698: @ 8087698 movs r0, 0x12 ldrsh r2, [r5, r0] adds r0, r5, 0 - bl sub_805F724 + bl MoveObjectEventToMapCoords movs r0, 0 strh r0, [r4, 0x24] strh r0, [r4, 0x26] @@ -9012,7 +9012,7 @@ sub_8087924: @ 8087924 lsls r2, 16 asrs r2, 16 adds r0, r4, 0 - bl npc_coords_shift + bl ShiftObjectEventCoords ldr r0, _080879CC @ =sub_80879D8 movs r1, 0x50 bl CreateTask @@ -9155,7 +9155,7 @@ _08087A78: ldrh r0, [r5, 0x6] strh r0, [r6, 0x22] adds r0, r4, 0 - bl npc_coords_shift_still + bl ShiftStillObjectEventCoords ldrb r0, [r4] movs r1, 0x8 orrs r0, r1 @@ -9474,7 +9474,7 @@ sub_8087CFC: @ 8087CFC mov r7, r8 push {r7} adds r6, r0, 0 - ldr r0, _08087D80 @ =gUnknown_300506C + ldr r0, _08087D80 @ =gTotalCameraPixelOffsetX movs r1, 0 ldrsh r2, [r0, r1] movs r3, 0x20 @@ -9483,7 +9483,7 @@ sub_8087CFC: @ 8087CFC movs r1, 0x24 ldrsh r0, [r6, r1] adds r2, r0 - ldr r0, _08087D84 @ =gUnknown_3005068 + ldr r0, _08087D84 @ =gTotalCameraPixelOffsetY movs r3, 0 ldrsh r0, [r0, r3] movs r3, 0x22 @@ -9536,8 +9536,8 @@ _08087D6E: pop {r0} bx r0 .align 2, 0 -_08087D80: .4byte gUnknown_300506C -_08087D84: .4byte gUnknown_3005068 +_08087D80: .4byte gTotalCameraPixelOffsetX +_08087D84: .4byte gTotalCameraPixelOffsetY _08087D88: .4byte gUnknown_83CC2A0 _08087D8C: .4byte gSprites thumb_func_end sub_8087CFC diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 2797accf4..a2f2de676 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -20,7 +20,7 @@ SetUpReflection: @ 80DAD7C ldrsh r2, [r4, r0] adds r0, r4, 0 movs r3, 0x98 - bl obj_unfreeze + bl CreateCopySpriteAt lsls r0, 24 lsrs r0, 24 lsls r1, r0, 4 @@ -34,7 +34,7 @@ SetUpReflection: @ 80DAD7C movs r0, 0xC orrs r1, r0 strb r1, [r7, 0x5] - ldr r2, _080DAE34 @ =gUnknown_835B934 + ldr r2, _080DAE34 @ =gReflectionEffectPaletteMap lsrs r0, r1, 4 adds r0, r2 ldrb r0, [r0] @@ -96,7 +96,7 @@ _080DAE22: .align 2, 0 _080DAE2C: .4byte gSprites _080DAE30: .4byte sub_80DAF50 -_080DAE34: .4byte gUnknown_835B934 +_080DAE34: .4byte gReflectionEffectPaletteMap _080DAE38: .4byte gDummySpriteAnimTable _080DAE3C: .4byte gDummySpriteAffineAnimTable thumb_func_end SetUpReflection @@ -189,7 +189,7 @@ npc_pal_op_B: @ 80DAEC4 bne _080DAEF4 ldrh r0, [r2, 0x2] adds r1, r4, 0 - bl npc_load_two_palettes__no_record + bl LoadPlayerObjectReflectionPalette b _080DAF12 .align 2, 0 _080DAEF0: .4byte 0x000011ff @@ -198,15 +198,15 @@ _080DAEF4: bne _080DAF02 ldrh r0, [r2, 0x2] adds r1, r4, 0 - bl npc_load_two_palettes__and_record + bl LoadSpecialObjectReflectionPalette b _080DAF12 _080DAF02: adds r0, r4, 0 - bl npc_paltag_by_palslot + bl GetObjectPaletteTag lsls r0, 16 lsrs r0, 16 adds r1, r4, 0 - bl pal_patch_for_npc + bl PatchObjectPalette _080DAF12: adds r0, r4, 0 bl sub_807AA8C @@ -230,7 +230,7 @@ npc_pal_op_A: @ 80DAF20 beq _080DAF44 adds r0, r1, 0 adds r1, r4, 0 - bl pal_patch_for_npc + bl PatchObjectPalette adds r0, r4, 0 bl sub_807AA8C _080DAF44: @@ -285,7 +285,7 @@ _080DAF98: .4byte gObjectEvents _080DAF9C: .4byte gSprites _080DAFA0: .4byte 0x00020001 _080DAFA4: - ldr r1, _080DB0BC @ =gUnknown_835B934 + ldr r1, _080DB0BC @ =gReflectionEffectPaletteMap ldrb r0, [r5, 0x5] lsrs r0, 4 adds r0, r1 @@ -425,12 +425,12 @@ _080DB0AE: pop {r0} bx r0 .align 2, 0 -_080DB0BC: .4byte gUnknown_835B934 +_080DB0BC: .4byte gReflectionEffectPaletteMap _080DB0C0: .4byte 0xfffffc00 thumb_func_end sub_80DAF50 - thumb_func_start sub_80DB0C4 -sub_80DB0C4: @ 80DB0C4 + thumb_func_start CreateWarpArrowSprite +CreateWarpArrowSprite: @ 80DB0C4 push {r4,lr} ldr r0, _080DB10C @ =gFieldEffectObjectTemplatePointers ldr r0, [r0, 0x20] @@ -469,7 +469,7 @@ _080DB102: .align 2, 0 _080DB10C: .4byte gFieldEffectObjectTemplatePointers _080DB110: .4byte gSprites - thumb_func_end sub_80DB0C4 + thumb_func_end CreateWarpArrowSprite thumb_func_start objid_set_invisible objid_set_invisible: @ 80DB114 @@ -538,7 +538,7 @@ _080DB17E: adds r4, 0x2 mov r2, sp adds r3, r4, 0 - bl sub_8063B1C + bl SetSpritePosToMapCoords lsls r0, r5, 4 adds r0, r5 lsls r0, 2 @@ -714,7 +714,7 @@ _080DB2AE: cmp r0, r1 bne _080DB32C ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsTallGrass + bl MetatileBehavior_IsPokeGrass lsls r0, 24 cmp r0, 0 bne _080DB32C diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s index a605f1439..9fc806779 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 @@ -1120,7 +1120,7 @@ sub_805BBA8: @ 805BBA8 adds r1, r5, 0 adds r2, r4, 0 adds r3, r6, 0 - bl npc_block_way + bl GetCollisionAtCoords lsls r0, 24 lsrs r0, 24 mov r1, sp @@ -1323,7 +1323,7 @@ sub_805BCEC: @ 805BCEC ldrsh r2, [r5, r0] adds r0, r4, 0 adds r3, r7, 0 - bl npc_block_way + bl GetCollisionAtCoords lsls r0, 24 cmp r0, 0 bne _0805BDA0 @@ -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 @@ -1840,7 +1840,7 @@ sub_805C104: @ 805C104 push {lr} lsls r0, 24 lsrs r0, 24 - bl sub_8063F84 + bl GetWalkNormalMovementAction lsls r0, 24 lsrs r0, 24 movs r1, 0x2 @@ -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 @@ -1976,7 +1976,7 @@ PlayerFaceDirection: @ 805C1F4 push {lr} lsls r0, 24 lsrs r0, 24 - bl sub_8063EB8 + bl GetFaceDirectionMovementAction lsls r0, 24 lsrs r0, 24 movs r1, 0x1 @@ -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 @@ -2065,7 +2065,7 @@ _0805C27E: ldrb r0, [r0, 0x18] lsls r0, 28 lsrs r0, 28 - bl sub_8063EB8 + bl GetFaceDirectionMovementAction lsls r0, 24 lsrs r0, 24 bl sub_805BFFC @@ -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 @@ sub_805C808: @ 805C808 _0805C820: .4byte gPlayerAvatar thumb_func_end sub_805C808 - 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 @@ -2906,7 +2906,7 @@ IsPlayerFacingSurfableFishableWater: @ 805C8B0 lsls r3, 28 lsrs r3, 28 adds r0, r4, 0 - bl npc_block_way + bl GetCollisionAtCoords lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 @@ -3158,7 +3158,7 @@ InitPlayerAvatar: @ 805CA3C movs r1, 0x1 orrs r0, r1 strb r0, [r4, 0x2] - bl sub_80DB0C4 + bl CreateWarpArrowSprite strb r0, [r4, 0x1B] adds r0, r4, 0 mov r1, r9 @@ -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 @@ -3713,7 +3713,7 @@ PlayerAvatar_DoSecretBaseMatJump: @ 805CEEC ldrb r0, [r4, 0x18] lsls r0, 28 lsrs r0, 28 - bl sub_806413C + bl GetJumpInPlaceMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -3846,7 +3846,7 @@ sub_805CFEC: @ 805CFEC add r0, sp ldrb r6, [r0] adds r0, r6, 0 - bl sub_8063EB8 + bl GetFaceDirectionMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -4138,7 +4138,7 @@ sub_805D240: @ 805D240 ldrb r0, [r4, 0x18] lsls r0, 28 lsrs r0, 28 - bl sub_8063EB8 + bl GetFaceDirectionMovementAction 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 @@ -5337,7 +5337,7 @@ _0805DBBA: strh r0, [r7, 0x22] movs r2, 0x22 ldrsh r1, [r7, r2] - ldr r0, _0805DBF0 @ =gUnknown_3005068 + ldr r0, _0805DBF0 @ =gTotalCameraPixelOffsetY movs r2, 0 ldrsh r0, [r0, r2] adds r1, r0 @@ -5350,7 +5350,7 @@ _0805DBBA: strh r0, [r5] b _0805DBFA .align 2, 0 -_0805DBF0: .4byte gUnknown_3005068 +_0805DBF0: .4byte gTotalCameraPixelOffsetY _0805DBF4: adds r0, r2, 0 bl DestroyTask @@ -5450,12 +5450,12 @@ _0805DC9A: ldrsh r0, [r5, r3] adds r0, r1 ldrb r0, [r0] - bl sub_8063EB8 + bl GetFaceDirectionMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl ObjectEventForceSetSpecialAnim + bl ObjectEventForceSetHeldMovement movs r0, 0 mov r9, r0 strh r6, [r5, 0x2] @@ -5618,12 +5618,12 @@ _0805DDE4: lsrs r0, 28 adds r0, r4 ldrb r0, [r0] - bl sub_8063EB8 + bl GetFaceDirectionMovementAction adds r1, r0, 0 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/field_weather_effects.s b/asm/field_weather_effects.s index 0330bcbaf..24ccbcf94 100644 --- a/asm/field_weather_effects.s +++ b/asm/field_weather_effects.s @@ -252,7 +252,7 @@ _0807B456: adds r2, 0x20 adds r3, r4, 0 adds r3, 0x22 - bl sub_8063B1C + bl SetSpritePosToMapCoords adds r4, 0x3E ldrb r0, [r4] movs r1, 0x2 diff --git a/asm/naming_screen.s b/asm/naming_screen.s index 233c71d6d..105d156ce 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -2907,7 +2907,7 @@ sub_809F04C: @ 809F04C add r3, sp, 0x18 movs r0, 0 mov r2, sp - bl sub_805E8E8 + bl MakeObjectTemplateFromObjectEventGraphicsInfo mov r2, sp add r0, sp, 0x1C ldrh r1, [r0, 0x6] diff --git a/asm/overworld.s b/asm/overworld.s index 5c904c607..214d06092 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -1242,12 +1242,12 @@ sub_805550C: @ 805550C lsls r0, 24 lsrs r5, r0, 24 adds r0, r4, 0 - bl is_light_level_1_2_3_5_or_6 + bl IsMapTypeOutdoors lsls r0, 24 cmp r0, 0 beq _08055590 adds r0, r5, 0 - bl is_light_level_1_2_3_5_or_6 + bl IsMapTypeOutdoors lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1764,7 +1764,7 @@ sub_8055920: @ 8055920 bl sub_8054F68 ldr r0, _0805599C @ =gMapHeader ldrb r0, [r0, 0x17] - bl is_light_level_1_2_3_5_or_6 + bl IsMapTypeOutdoors adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -1815,7 +1815,7 @@ sub_80559A8: @ 80559A8 bl sub_8054F68 ldr r0, _080559E0 @ =gMapHeader ldrb r0, [r0, 0x17] - bl is_light_level_1_2_3_5_or_6 + bl IsMapTypeOutdoors bl TrySetMapSaveWarpStatus bl SetSav1WeatherFromCurrMapHeader bl sub_805610C @@ -2933,8 +2933,8 @@ sub_80561B4: @ 80561B4 _080561D4: .4byte gUnknown_2031DB4 thumb_func_end sub_80561B4 - thumb_func_start is_light_level_1_2_3_5_or_6 -is_light_level_1_2_3_5_or_6: @ 80561D8 + thumb_func_start IsMapTypeOutdoors +IsMapTypeOutdoors: @ 80561D8 push {lr} lsls r0, 24 lsrs r0, 24 @@ -2956,7 +2956,7 @@ _080561F6: _080561F8: pop {r1} bx r1 - thumb_func_end is_light_level_1_2_3_5_or_6 + thumb_func_end IsMapTypeOutdoors thumb_func_start Overworld_MapTypeAllowsTeleportAndFly Overworld_MapTypeAllowsTeleportAndFly: @ 80561FC @@ -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 @@ -4659,33 +4659,33 @@ _0805706A: thumb_func_start sub_8057074 sub_8057074: @ 8057074 push {lr} - ldr r0, _08057094 @ =gUnknown_300506C + ldr r0, _08057094 @ =gTotalCameraPixelOffsetX movs r1, 0 strh r1, [r0] - ldr r0, _08057098 @ =gUnknown_3005068 + 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 .align 2, 0 -_08057094: .4byte gUnknown_300506C -_08057098: .4byte gUnknown_3005068 +_08057094: .4byte gTotalCameraPixelOffsetX +_08057098: .4byte gTotalCameraPixelOffsetY thumb_func_end sub_8057074 thumb_func_start mli4_mapscripts_and_other mli4_mapscripts_and_other: @ 805709C push {r4,r5,lr} sub sp, 0x4 - ldr r0, _080570F4 @ =gUnknown_300506C + ldr r0, _080570F4 @ =gTotalCameraPixelOffsetX movs r1, 0 strh r1, [r0] - ldr r0, _080570F8 @ =gUnknown_3005068 + ldr r0, _080570F8 @ =gTotalCameraPixelOffsetY strh r1, [r0] - bl sub_805DE74 + bl ResetObjectEvents mov r4, sp adds r4, 0x2 mov r0, sp @@ -4708,15 +4708,15 @@ 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} pop {r0} bx r0 .align 2, 0 -_080570F4: .4byte gUnknown_300506C -_080570F8: .4byte gUnknown_3005068 +_080570F4: .4byte gTotalCameraPixelOffsetX +_080570F8: .4byte gTotalCameraPixelOffsetY _080570FC: .4byte gSaveBlock2Ptr thumb_func_end mli4_mapscripts_and_other @@ -5344,7 +5344,7 @@ _08057620: beq _08057648 b _0805754E _0805762C: - ldr r0, _08057640 @ =gUnknown_3005050 + ldr r0, _08057640 @ =gFieldCamera ldr r1, _08057644 @ =sub_8057748 str r1, [r0] bl SetFieldVBlankCallback @@ -5353,7 +5353,7 @@ _0805762C: movs r0, 0x1 b _0805764A .align 2, 0 -_08057640: .4byte gUnknown_3005050 +_08057640: .4byte gFieldCamera _08057644: .4byte sub_8057748 _08057648: movs r0, 0 @@ -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 sub_805DF30 + 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 @@ -7273,7 +7273,7 @@ InitLinkPlayerObjectEventPos: @ 8058448 adds r2, 0xC adds r3, r4, 0 adds r3, 0xE - bl sub_8063B1C + bl SetSpritePosToMapCoords ldrh r0, [r4, 0xC] adds r0, 0x8 strh r0, [r4, 0xC] @@ -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/asm/script_movement.s b/asm/script_movement.s index 7b3a70a25..04b3ab9b9 100644 --- a/asm/script_movement.s +++ b/asm/script_movement.s @@ -560,7 +560,7 @@ sub_80977F0: @ 80977F0 ldr r1, _08097850 @ =gObjectEvents adds r4, r0, r1 adds r0, r4, 0 - bl ObjectEventIsSpecialAnimActive + bl ObjectEventIsHeldMovementActive lsls r0, 24 cmp r0, 0 beq _08097838 diff --git a/asm/trainer_see.s b/asm/trainer_see.s index c12bcaeeb..dee50b60f 100644 --- a/asm/trainer_see.s +++ b/asm/trainer_see.s @@ -225,7 +225,7 @@ IsTrainerInRangeSouth: @ 8081C9C bgt _08081CE4 cmp r1, 0x3 ble _08081CDA - bl sub_805DF30 + bl GetFirstInactiveObjectEventId lsls r0, 24 lsrs r0, 24 cmp r0, 0x10 @@ -398,7 +398,7 @@ _08081DEC: ldrsh r2, [r3, r0] adds r0, r6, 0 adds r3, r7, 0 - bl sub_8063770 + bl GetCollisionFlagsAtCoords lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 @@ -433,7 +433,7 @@ _08081E26: ldrsh r2, [r3, r0] adds r0, r6, 0 adds r3, r7, 0 - bl npc_block_way + bl GetCollisionAtCoords lsls r0, 24 lsrs r1, r0, 24 lsls r4, 4 @@ -596,7 +596,7 @@ _08081F54: ldrb r0, [r4, 0x18] lsls r0, 28 lsrs r0, 28 - bl sub_8063EB8 + bl GetFaceDirectionMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -675,7 +675,7 @@ _08081FEE: ldrb r0, [r4, 0x18] lsls r0, 28 lsrs r0, 28 - bl sub_8063F84 + bl GetWalkNormalMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -732,9 +732,9 @@ _0808204A: lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl sub_805FE7C + bl OverrideMovementTypeForObjectEvent adds r0, r4, 0 - bl sub_805FE5C + bl OverrideTemplateCoordsForObjectEvent ldr r0, _080820B4 @ =gPlayerAvatar ldrb r1, [r0, 0x5] lsls r0, r1, 3 @@ -965,7 +965,7 @@ sub_80821DC: @ 80821DC ldrb r0, [r4, 0x18] lsls r0, 28 lsrs r0, 28 - bl sub_806413C + bl GetJumpInPlaceMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -1099,7 +1099,7 @@ _08082312: ldr r0, _0808234C @ =gObjectEvents adds r4, r0 movs r0, 0x2 - bl sub_8063FB0 + bl GetWalkFastMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -1190,7 +1190,7 @@ _080823CC: ldr r0, _08082408 @ =gObjectEvents adds r4, r0 movs r0, 0x1 - bl sub_8063FB0 + bl GetWalkFastMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -1249,7 +1249,7 @@ sub_808243C: @ 808243C cmp r0, 0 bne _0808246E ldr r0, [sp] - bl ObjectEventClearAnim + bl ObjectEventClearHeldMovement ldrh r0, [r4, 0x16] adds r0, 0x1 strh r0, [r4, 0x16] @@ -1292,7 +1292,7 @@ _0808246E: lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl sub_805FE7C + bl OverrideMovementTypeForObjectEvent adds r0, r5, 0 bl DestroyTask b _080824E2 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 9c4f0a7ca..070426b47 100644 --- a/data/event_object_movement.s +++ b/data/event_object_movement.s @@ -2,13 +2,13 @@ .include "constants/constants.inc" .section .rodata .align 2 -gUnknown_835B934:: @ 835B934 +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 @@ -7668,7 +7668,7 @@ gUnknown_83A6404:: @ 83A6404 .4byte sub_80633F4 @ gFaceDirectionAnimNums ? -gUnknown_83A640C:: @ 83A640C +gFaceDirectionAnimNums:: @ 83A640C .byte 0x00 .byte 0x00 .byte 0x01 @@ -7679,7 +7679,7 @@ gUnknown_83A640C:: @ 83A640C .byte 0x01 .byte 0x01 -gUnknown_83A6415:: @ 83A6415 +gMoveDirectionAnimNums:: @ 83A6415 .byte 0x4 @ DIR_NONE .byte 0x4 @ DIR_SOUTH .byte 0x5 @ DIR_NORTH @@ -7690,7 +7690,7 @@ gUnknown_83A6415:: @ 83A6415 .byte 0x5 @ DIR_NORTHWEST .byte 0x5 @ DIR_NORTHEAST -gUnknown_83A641E:: @ 83A641E +gMoveDirectionFastAnimNums:: @ 83A641E .byte 0x8 @ DIR_NONE .byte 0x8 @ DIR_SOUTH .byte 0x9 @ DIR_NORTH @@ -7701,7 +7701,7 @@ gUnknown_83A641E:: @ 83A641E .byte 0x9 @ DIR_NORTHWEST .byte 0x9 @ DIR_NORTHEAST -gUnknown_83A6427:: @ 83A6427 +gMoveDirectionFasterAnimNums:: @ 83A6427 .byte 0xC @ DIR_NONE .byte 0xC @ DIR_SOUTH .byte 0xD @ DIR_NORTH @@ -7712,7 +7712,7 @@ gUnknown_83A6427:: @ 83A6427 .byte 0xD @ DIR_NORTHWEST .byte 0xD @ DIR_NORTHEAST -gUnknown_83A6430:: @ 83A6430 +gMoveDirectionFastestAnimNums:: @ 83A6430 .byte 0x10 @ DIR_NONE .byte 0x10 @ DIR_SOUTH .byte 0x11 @ DIR_NORTH @@ -7723,7 +7723,7 @@ gUnknown_83A6430:: @ 83A6430 .byte 0x11 @ DIR_NORTHWEST .byte 0x11 @ DIR_NORTHEAST -gUnknown_83A6439:: @ 83A6439 +gJumpSpecialDirectionAnimNums:: @ 83A6439 .byte 0x14 @ DIR_NONE .byte 0x14 @ DIR_SOUTH .byte 0x15 @ DIR_NORTH @@ -7734,7 +7734,7 @@ gUnknown_83A6439:: @ 83A6439 .byte 0x15 @ DIR_NORTHWEST .byte 0x15 @ DIR_NORTHEAST -gUnknown_83A6442:: @ 83A6442 +gAcroWheelieDirectionAnimNums:: @ 83A6442 .byte 0x14 @ DIR_NONE .byte 0x14 @ DIR_SOUTH .byte 0x15 @ DIR_NORTH @@ -7745,7 +7745,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 @@ -7756,7 +7756,7 @@ gUnknown_83A644B:: @ 83A644B .byte 0x19 @ DIR_NORTHWEST .byte 0x19 @ DIR_NORTHEAST -gUnknown_83A6454:: @ 83A6454 +gAcroEndWheelieDirectionAnimNums:: @ 83A6454 .byte 0x1C @ DIR_NONE .byte 0x1C @ DIR_SOUTH .byte 0x1D @ DIR_NORTH @@ -7767,7 +7767,7 @@ gUnknown_83A6454:: @ 83A6454 .byte 0x1D @ DIR_NORTHWEST .byte 0x1D @ DIR_NORTHEAST -gUnknown_83A645D:: @ 83A645D +gAcroUnusedActionDirectionAnimNums:: @ 83A645D .byte 0x18 @ DIR_NONE .byte 0x18 @ DIR_SOUTH .byte 0x19 @ DIR_NORTH @@ -7778,7 +7778,7 @@ gUnknown_83A645D:: @ 83A645D .byte 0x1A @ DIR_NORTHWEST .byte 0x1B @ DIR_NORTHEAST -gUnknown_83A6466:: @ 83A6466 +gAcroWheeliePedalDirectionAnimNums:: @ 83A6466 .byte 0x20 @ DIR_NONE .byte 0x20 @ DIR_SOUTH .byte 0x21 @ DIR_NORTH @@ -7789,7 +7789,7 @@ gUnknown_83A6466:: @ 83A6466 .byte 0x21 @ DIR_NORTHWEST .byte 0x21 @ DIR_NORTHEAST -gUnknown_83A646F:: @ 83A646F +gFishingDirectionAnimNums:: @ 83A646F .byte 0x24 @ DIR_NONE .byte 0x24 @ DIR_SOUTH .byte 0x25 @ DIR_NORTH @@ -7800,7 +7800,7 @@ gUnknown_83A646F:: @ 83A646F .byte 0x25 @ DIR_NORTHWEST .byte 0x25 @ DIR_NORTHEAST -gUnknown_83A6478:: @ 83A6478 +gFishingNoCatchDirectionAnimNums:: @ 83A6478 .byte 0x0 @ DIR_NONE .byte 0x0 @ DIR_SOUTH .byte 0x1 @ DIR_NORTH @@ -7811,7 +7811,7 @@ gUnknown_83A6478:: @ 83A6478 .byte 0x1 @ DIR_NORTHWEST .byte 0x1 @ DIR_NORTHEAST -gUnknown_83A6481:: @ 83A6481 +gFishingBiteDirectionAnimNums:: @ 83A6481 .byte 0x4 @ DIR_NONE .byte 0x4 @ DIR_SOUTH .byte 0x5 @ DIR_NORTH @@ -7833,7 +7833,7 @@ gUnknown_83A648A:: @ 83A648A .byte 0x9 @ DIR_NORTHWEST .byte 0x9 @ DIR_NORTHEAST -gUnknown_83A6493:: @ 83A6493 +gRunningDirectionAnimNums:: @ 83A6493 .byte 0x14 @ DIR_NONE .byte 0x14 @ DIR_SOUTH .byte 0x15 @ DIR_NORTH @@ -7844,7 +7844,7 @@ gUnknown_83A6493:: @ 83A6493 .byte 0x15 @ DIR_NORTHWEST .byte 0x15 @ DIR_NORTHEAST -gUnknown_83A649C:: @ 83A649C +gTrainerFacingDirectionMovementTypes:: @ 83A649C .byte 0x08 .byte 0x08 .byte 0x07 @@ -7858,20 +7858,20 @@ gUnknown_83A649C:: @ 83A649C .byte 0x00 .byte 0x00 -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 @@ -7883,14 +7883,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 @@ -8115,7 +8115,7 @@ gUnknown_83A658C:: @ 83A658C .byte 0x93 @ DIR_EAST @ gOppositeDirections ? -gUnknown_83A6591:: @ 83A6591 +gOppositeDirections:: @ 83A6591 .byte 0x02 .byte 0x01 .byte 0x04 @@ -8165,7 +8165,7 @@ gUnknown_83A65A9:: @ 83A65A9 .byte 0x00 @ gMovementActionFuncs -gUnknown_83A65BC:: @ 83A65BC +gMovementActionFuncs:: @ 83A65BC .4byte gUnknown_83A6864 .4byte gUnknown_83A686C .4byte gUnknown_83A6874 @@ -8338,107 +8338,107 @@ gUnknown_83A65BC:: @ 83A65BC .4byte gUnknown_83A6C60 gUnknown_83A6864:: @ 83A6864 - .4byte sub_8064638 - .4byte sub_8067934 + .4byte MovementAction_FaceDown_Step0 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A686C:: @ 83A686C - .4byte sub_8064648 - .4byte sub_8067934 + .4byte MovementAction_FaceUp_Step0 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6874:: @ 83A6874 - .4byte sub_8064658 - .4byte sub_8067934 + .4byte MovementAction_FaceLeft_Step0 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A687C:: @ 83A687C - .4byte sub_8064668 - .4byte sub_8067934 + .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 sub_8063470 + .4byte GetMoveDirectionAnimNum + .4byte GetMoveDirectionFastAnimNum + .4byte GetMoveDirectionFastAnimNum + .4byte GetMoveDirectionFasterAnimNum + .4byte GetMoveDirectionFastestAnimNum gUnknown_83A6898:: @ 83A6898 .4byte sub_8064968 .4byte sub_8064988 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A68A4:: @ 83A68A4 .4byte sub_80649A8 .4byte sub_80649C8 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A68B0:: @ 83A68B0 .4byte sub_80649E8 .4byte sub_8064A08 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A68BC:: @ 83A68BC .4byte sub_8064A28 .4byte sub_8064A48 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A68C8:: @ 83A68C8 .4byte sub_8064A68 .4byte sub_8064A88 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A68D4:: @ 83A68D4 .4byte sub_8064AA8 .4byte sub_8064AC8 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A68E0:: @ 83A68E0 .4byte sub_8064AE8 .4byte sub_8064B08 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A68EC:: @ 83A68EC .4byte sub_8064B28 .4byte sub_8064B48 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A68F8:: @ 83A68F8 .4byte sub_8064C3C .4byte sub_8064C5C - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6904:: @ 83A6904 .4byte sub_8064C7C .4byte sub_8064C9C - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6910:: @ 83A6910 .4byte sub_8064CBC .4byte sub_8064CDC - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A691C:: @ 83A691C .4byte sub_8064CFC .4byte sub_8064D1C - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6928:: @ 83A6928 - .4byte sub_8064D3C - .4byte sub_8064D5C - .4byte sub_8067934 + .4byte MovementAction_WalkNormalDown_Step0 + .4byte MovementAction_WalkNormalDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6934:: @ 83A6934 - .4byte sub_8064D7C - .4byte sub_8064D9C - .4byte sub_8067934 + .4byte MovementAction_WalkNormalUp_Step0 + .4byte MovementAction_WalkNormalUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6940:: @ 83A6940 - .4byte sub_8064DBC - .4byte sub_8064DDC - .4byte sub_8067934 + .4byte MovementAction_WalkNormalLeft_Step0 + .4byte MovementAction_WalkNormalLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A694C:: @ 83A694C - .4byte sub_8064DFC - .4byte sub_8064E1C - .4byte sub_8067934 + .4byte MovementAction_WalkNormalRight_Step0 + .4byte MovementAction_WalkNormalRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6958:: @ 83A6958 .2byte 0x0000 @@ -8451,710 +8451,710 @@ gUnknown_83A695E:: @ 83A695E .2byte 0x0001 gUnknown_83A6964:: @ 83A6964 - .4byte sub_80650A8 - .4byte sub_80650D4 - .4byte sub_8067934 + .4byte MovementAction_Jump2Down_Step0 + .4byte MovementAction_Jump2Down_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6970:: @ 83A6970 - .4byte sub_8065100 - .4byte sub_806512C - .4byte sub_8067934 + .4byte MovementAction_Jump2Up_Step0 + .4byte MovementAction_Jump2Up_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A697C:: @ 83A697C - .4byte sub_8065158 - .4byte sub_8065184 - .4byte sub_8067934 + .4byte MovementAction_Jump2Left_Step0 + .4byte MovementAction_Jump2Left_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6988:: @ 83A6988 - .4byte sub_80651B0 - .4byte sub_80651DC - .4byte sub_8067934 + .4byte MovementAction_Jump2Right_Step0 + .4byte MovementAction_Jump2Right_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6994:: @ 83A6994 - .4byte sub_806522C - .4byte sub_8065210 - .4byte sub_8067930 + .4byte MovementAction_Delay1_Step0 + .4byte MovementAction_Delay_Step1 + .4byte MovementAction_Finish gUnknown_83A69A0:: @ 83A69A0 - .4byte sub_806524C - .4byte sub_8065210 - .4byte sub_8067930 + .4byte MovementAction_Delay2_Step0 + .4byte MovementAction_Delay_Step1 + .4byte MovementAction_Finish gUnknown_83A69AC:: @ 83A69AC - .4byte sub_806526C - .4byte sub_8065210 - .4byte sub_8067930 + .4byte MovementAction_Delay4_Step0 + .4byte MovementAction_Delay_Step1 + .4byte MovementAction_Finish gUnknown_83A69B8:: @ 83A69B8 - .4byte sub_806528C - .4byte sub_8065210 - .4byte sub_8067930 + .4byte MovementAction_Delay8_Step0 + .4byte MovementAction_Delay_Step1 + .4byte MovementAction_Finish gUnknown_83A69C4:: @ 83A69C4 - .4byte sub_80652AC - .4byte sub_8065210 - .4byte sub_8067930 + .4byte MovementAction_Delay16_Step0 + .4byte MovementAction_Delay_Step1 + .4byte MovementAction_Finish gUnknown_83A69D0:: @ 83A69D0 - .4byte sub_80652CC - .4byte sub_80652EC - .4byte sub_8067934 + .4byte MovementAction_WalkFastDown_Step0 + .4byte MovementAction_WalkFastDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A69DC:: @ 83A69DC - .4byte sub_806530C - .4byte sub_806532C - .4byte sub_8067934 + .4byte MovementAction_WalkFastUp_Step0 + .4byte MovementAction_WalkFastUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A69E8:: @ 83A69E8 - .4byte sub_806534C - .4byte sub_806536C - .4byte sub_8067934 + .4byte MovementAction_WalkFastLeft_Step0 + .4byte MovementAction_WalkFastLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A69F4:: @ 83A69F4 - .4byte sub_806538C - .4byte sub_80653AC - .4byte sub_8067934 + .4byte MovementAction_WalkFastRight_Step0 + .4byte MovementAction_WalkFastRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6A00:: @ 83A6A00 .4byte sub_80653F8 .4byte sub_8065438 - .4byte sub_8067930 + .4byte MovementAction_Finish gUnknown_83A6A0C:: @ 83A6A0C .4byte sub_8065464 .4byte sub_80654A4 - .4byte sub_8067930 + .4byte MovementAction_Finish gUnknown_83A6A18:: @ 83A6A18 .4byte sub_80654D0 .4byte sub_8065510 - .4byte sub_8067930 + .4byte MovementAction_Finish gUnknown_83A6A24:: @ 83A6A24 .4byte sub_806553C .4byte sub_806557C - .4byte sub_8067930 + .4byte MovementAction_Finish gUnknown_83A6A30:: @ 83A6A30 .4byte sub_80655D4 - .4byte sub_8067930 + .4byte MovementAction_Finish gUnknown_83A6A38:: @ 83A6A38 .4byte sub_8065610 - .4byte sub_8067930 + .4byte MovementAction_Finish gUnknown_83A6A40:: @ 83A6A40 .4byte sub_806564C - .4byte sub_8067930 + .4byte MovementAction_Finish gUnknown_83A6A48:: @ 83A6A48 .4byte sub_8065688 - .4byte sub_8067930 + .4byte MovementAction_Finish gUnknown_83A6A50:: @ 83A6A50 - .4byte sub_8065770 - .4byte sub_8065734 - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceSlowDown_Step0 + .4byte MovementAction_WalkInPlaceSlow_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6A5C:: @ 83A6A5C - .4byte sub_80657A8 - .4byte sub_8065734 - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceSlowUp_Step0 + .4byte MovementAction_WalkInPlaceSlow_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6A68:: @ 83A6A68 - .4byte sub_80657E0 - .4byte sub_8065734 - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceSlowLeft_Step0 + .4byte MovementAction_WalkInPlaceSlow_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6A74:: @ 83A6A74 - .4byte sub_8065818 - .4byte sub_8065734 - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceSlowRight_Step0 + .4byte MovementAction_WalkInPlaceSlow_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6A80:: @ 83A6A80 - .4byte sub_8065850 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceNormalDown_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6A8C:: @ 83A6A8C - .4byte sub_8065888 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceNormalUp_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6A98:: @ 83A6A98 - .4byte sub_80658C0 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceNormalLeft_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6AA4:: @ 83A6AA4 - .4byte sub_80658F8 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceNormalRight_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6AB0:: @ 83A6AB0 - .4byte sub_8065930 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceFastDown_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6ABC:: @ 83A6ABC - .4byte sub_8065968 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceFastUp_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6AC8:: @ 83A6AC8 - .4byte sub_80659A0 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceFastLeft_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6AD4:: @ 83A6AD4 - .4byte sub_80659D8 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceFastRight_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6AE0:: @ 83A6AE0 - .4byte sub_8065A10 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceFastestDown_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6AEC:: @ 83A6AEC - .4byte sub_8065A48 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceFastestUp_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6AF8:: @ 83A6AF8 - .4byte sub_8065A80 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceFastestLeft_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6B04:: @ 83A6B04 - .4byte sub_8065AB8 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlaceFastestRight_Step0 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6B10:: @ 83A6B10 - .4byte sub_8065AF0 - .4byte sub_8065B10 - .4byte sub_8067934 + .4byte MovementAction_RideWaterCurrentDown_Step0 + .4byte MovementAction_RideWaterCurrentDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6B1C:: @ 83A6B1C - .4byte sub_8065B30 - .4byte sub_8065B50 - .4byte sub_8067934 + .4byte MovementAction_RideWaterCurrentUp_Step0 + .4byte MovementAction_RideWaterCurrentUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6B28:: @ 83A6B28 - .4byte sub_8065B70 - .4byte sub_8065B90 - .4byte sub_8067934 + .4byte MovementAction_RideWaterCurrentLeft_Step0 + .4byte MovementAction_RideWaterCurrentLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6B34:: @ 83A6B34 - .4byte sub_8065BB0 - .4byte sub_8065BD0 - .4byte sub_8067934 + .4byte MovementAction_RideWaterCurrentRight_Step0 + .4byte MovementAction_RideWaterCurrentRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6B40:: @ 83A6B40 - .4byte sub_8065BF0 - .4byte sub_8065C10 - .4byte sub_8067934 + .4byte MovementAction_WalkFastestDown_Step0 + .4byte MovementAction_WalkFastestDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6B4C:: @ 83A6B4C - .4byte sub_8065C30 - .4byte sub_8065C50 - .4byte sub_8067934 + .4byte MovementAction_WalkFastestUp_Step0 + .4byte MovementAction_WalkFastestUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6B58:: @ 83A6B58 - .4byte sub_8065C70 - .4byte sub_8065C90 - .4byte sub_8067934 + .4byte MovementAction_WalkFastestLeft_Step0 + .4byte MovementAction_WalkFastestLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6B64:: @ 83A6B64 - .4byte sub_8065CB0 - .4byte sub_8065CD0 - .4byte sub_8067934 + .4byte MovementAction_WalkFastestRight_Step0 + .4byte MovementAction_WalkFastestRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6B70:: @ 83A6B70 - .4byte sub_8065CF0 - .4byte sub_8065D10 - .4byte sub_8067934 + .4byte MovementAction_SlideDown_Step0 + .4byte MovementAction_SlideDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6B7C:: @ 83A6B7C - .4byte sub_8065D30 - .4byte sub_8065D50 - .4byte sub_8067934 + .4byte MovementAction_SlideUp_Step0 + .4byte MovementAction_SlideUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6B88:: @ 83A6B88 - .4byte sub_8065D70 - .4byte sub_8065D90 - .4byte sub_8067934 + .4byte MovementAction_SlideLeft_Step0 + .4byte MovementAction_SlideLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6B94:: @ 83A6B94 - .4byte sub_8065DB0 - .4byte sub_8065DD0 - .4byte sub_8067934 + .4byte MovementAction_SlideRight_Step0 + .4byte MovementAction_SlideRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6BA0:: @ 83A6BA0 - .4byte do_run_south_anim - .4byte sub_8065E10 - .4byte sub_8067934 + .4byte MovementAction_PlayerRunDown_Step0 + .4byte MovementAction_PlayerRunDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6BAC:: @ 83A6BAC - .4byte do_run_north_anim - .4byte sub_8065E50 - .4byte sub_8067934 + .4byte MovementAction_PlayerRunUp_Step0 + .4byte MovementAction_PlayerRunUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6BB8:: @ 83A6BB8 - .4byte do_run_west_anim - .4byte sub_8065E90 - .4byte sub_8067934 + .4byte MovementAction_PlayerRunLeft_Step0 + .4byte MovementAction_PlayerRunLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6BC4:: @ 83A6BC4 - .4byte do_run_east_anim - .4byte sub_8065ED0 - .4byte sub_8067934 + .4byte MovementAction_PlayerRunRight_Step0 + .4byte MovementAction_PlayerRunRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6BD0:: @ 83A6BD0 .4byte sub_8065FC4 .4byte sub_8065FE4 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6BDC:: @ 83A6BDC .4byte sub_8066004 .4byte sub_8066024 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6BE8:: @ 83A6BE8 .4byte sub_8066044 .4byte sub_8066064 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6BF4:: @ 83A6BF4 .4byte sub_8066084 .4byte sub_80660A4 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C00:: @ 83A6C00 - .4byte sub_80660F0 - .4byte sub_8066108 - .4byte sub_8067934 + .4byte MovementAction_StartAnimInDirection_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C0C:: @ 83A6C0C - .4byte sub_806615C - .4byte sub_806617C - .4byte sub_8067934 + .4byte MovementAction_JumpSpecialDown_Step0 + .4byte MovementAction_JumpSpecialDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C18:: @ 83A6C18 - .4byte sub_80661A4 - .4byte sub_80661C4 - .4byte sub_8067934 + .4byte MovementAction_JumpSpecialUp_Step0 + .4byte MovementAction_JumpSpecialUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C24:: @ 83A6C24 - .4byte sub_80661EC - .4byte sub_806620C - .4byte sub_8067934 + .4byte MovementAction_JumpSpecialLeft_Step0 + .4byte MovementAction_JumpSpecialLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C30:: @ 83A6C30 - .4byte sub_8066234 - .4byte sub_8066254 - .4byte sub_8067934 + .4byte MovementAction_JumpSpecialRight_Step0 + .4byte MovementAction_JumpSpecialRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C3C:: @ 83A6C3C .4byte sub_806627C .4byte sub_806629C - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C48:: @ 83A6C48 .4byte sub_80662BC .4byte sub_80662DC - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C54:: @ 83A6C54 .4byte sub_80662FC .4byte sub_806631C - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C60:: @ 83A6C60 .4byte sub_806633C .4byte sub_806635C - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C6C:: @ 83A6C6C - .4byte sub_806637C - .4byte sub_8067934 + .4byte MovementAction_FacePlayer_Step0 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C74:: @ 83A6C74 - .4byte sub_80663D8 - .4byte sub_8067934 + .4byte MovementAction_FaceAwayPlayer_Step0 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C7C:: @ 83A6C7C - .4byte sub_806643C - .4byte sub_8067934 + .4byte MovementAction_LockFacingDirection_Step0 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C84:: @ 83A6C84 - .4byte sub_806644C - .4byte sub_8067934 + .4byte MovementAction_UnlockFacingDirection_Step0 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C8C:: @ 83A6C8C - .4byte sub_806645C - .4byte sub_8066488 - .4byte sub_8067934 + .4byte MovementAction_JumpDown_Step0 + .4byte MovementAction_JumpDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6C98:: @ 83A6C98 - .4byte sub_80664B4 - .4byte sub_80664E0 - .4byte sub_8067934 + .4byte MovementAction_JumpUp_Step0 + .4byte MovementAction_JumpUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6CA4:: @ 83A6CA4 - .4byte sub_806650C - .4byte sub_8066538 - .4byte sub_8067934 + .4byte MovementAction_JumpLeft_Step0 + .4byte MovementAction_JumpLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6CB0:: @ 83A6CB0 - .4byte sub_8066564 - .4byte sub_8066590 - .4byte sub_8067934 + .4byte MovementAction_JumpRight_Step0 + .4byte MovementAction_JumpRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6CBC:: @ 83A6CBC - .4byte sub_80665BC - .4byte sub_80665E8 - .4byte sub_8067934 + .4byte MovementAction_JumpInPlaceDown_Step0 + .4byte MovementAction_JumpInPlaceDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6CC8:: @ 83A6CC8 - .4byte sub_8066614 - .4byte sub_8066640 - .4byte sub_8067934 + .4byte MovementAction_JumpInPlaceUp_Step0 + .4byte MovementAction_JumpInPlaceUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6CD4:: @ 83A6CD4 - .4byte sub_806666C - .4byte sub_8066698 - .4byte sub_8067934 + .4byte MovementAction_JumpInPlaceLeft_Step0 + .4byte MovementAction_JumpInPlaceLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6CE0:: @ 83A6CE0 - .4byte sub_80666C4 - .4byte sub_80666F0 - .4byte sub_8067934 + .4byte MovementAction_JumpInPlaceRight_Step0 + .4byte MovementAction_JumpInPlaceRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6CEC:: @ 83A6CEC - .4byte sub_806671C - .4byte sub_8066748 - .4byte sub_8067934 + .4byte MovementAction_JumpInPlaceDownUp_Step0 + .4byte MovementAction_JumpInPlaceDownUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6CF8:: @ 83A6CF8 - .4byte sub_8066774 - .4byte sub_80667A0 - .4byte sub_8067934 + .4byte MovementAction_JumpInPlaceUpDown_Step0 + .4byte MovementAction_JumpInPlaceUpDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6D04:: @ 83A6D04 - .4byte sub_80667CC - .4byte sub_80667F8 - .4byte sub_8067934 + .4byte MovementAction_JumpInPlaceLeftRight_Step0 + .4byte MovementAction_JumpInPlaceLeftRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6D10:: @ 83A6D10 - .4byte sub_8066824 - .4byte sub_8066850 - .4byte sub_8067934 + .4byte MovementAction_JumpInPlaceRightLeft_Step0 + .4byte MovementAction_JumpInPlaceRightLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6D1C:: @ 83A6D1C - .4byte sub_806687C - .4byte sub_8067934 + .4byte MovementAction_FaceOriginalDirection_Step0 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6D24:: @ 83A6D24 - .4byte sub_8066894 - .4byte sub_8066108 - .4byte sub_8067934 + .4byte MovementAction_NurseJoyBowDown_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6D30:: @ 83A6D30 - .4byte sub_80668A4 - .4byte sub_8067930 + .4byte MovementAction_EnableJumpLandingGroundEffect_Step0 + .4byte MovementAction_Finish gUnknown_83A6D38:: @ 83A6D38 - .4byte sub_80668B4 - .4byte sub_8067930 + .4byte MovementAction_DisableJumpLandingGroundEffect_Step0 + .4byte MovementAction_Finish gUnknown_83A6D40:: @ 83A6D40 - .4byte sub_80668C4 - .4byte sub_8067930 + .4byte MovementAction_DisableAnimation_Step0 + .4byte MovementAction_Finish gUnknown_83A6D48:: @ 83A6D48 - .4byte sub_80668D4 - .4byte sub_8067930 + .4byte MovementAction_RestoreAnimation_Step0 + .4byte MovementAction_Finish gUnknown_83A6D50:: @ 83A6D50 - .4byte sub_8066900 - .4byte sub_8067930 + .4byte MovementAction_SetInvisible_Step0 + .4byte MovementAction_Finish gUnknown_83A6D58:: @ 83A6D58 - .4byte sub_8066910 - .4byte sub_8067930 + .4byte MovementAction_SetVisible_Step0 + .4byte MovementAction_Finish gUnknown_83A6D60:: @ 83A6D60 - .4byte do_exclamation_mark_bubble_1 - .4byte sub_8067930 + .4byte MovementAction_EmoteExclamationMark_Step0 + .4byte MovementAction_Finish gUnknown_83A6D68:: @ 83A6D68 - .4byte do_exclamation_mark_bubble_2 - .4byte sub_8067930 + .4byte MovementAction_EmoteQuestionMark_Step0 + .4byte MovementAction_Finish gUnknown_83A6D70:: @ 83A6D70 - .4byte do_heart_bubble - .4byte sub_8067930 + .4byte MovementAction_EmoteHeart_Step0 + .4byte MovementAction_Finish gUnknown_83A6D78:: @ 83A6D78 .4byte sub_806698C - .4byte sub_8067930 + .4byte MovementAction_Finish gUnknown_83A6D80:: @ 83A6D80 .4byte sub_80669B0 - .4byte sub_8067930 + .4byte MovementAction_Finish gUnknown_83A6D88:: @ 83A6D88 - .4byte sub_80669D4 - .4byte sub_8066A18 - .4byte sub_8067930 + .4byte MovementAction_RevealTrainer_Step0 + .4byte MovementAction_RevealTrainer_Step1 + .4byte MovementAction_Finish gUnknown_83A6D94:: @ 83A6D94 - .4byte sub_8066A38 - .4byte sub_8066A54 - .4byte sub_8066A78 - .4byte sub_8067930 + .4byte MovementAction_RockSmashBreak_Step0 + .4byte MovementAction_RockSmashBreak_Step1 + .4byte MovementAction_RockSmashBreak_Step2 + .4byte MovementAction_Finish gUnknown_83A6DA4:: @ 83A6DA4 - .4byte sub_8066AB4 - .4byte sub_8066AD0 - .4byte sub_8066AF4 - .4byte sub_8067930 + .4byte MovementAction_CutTree_Step0 + .4byte MovementAction_CutTree_Step1 + .4byte MovementAction_CutTree_Step2 + .4byte MovementAction_Finish gUnknown_83A6DB4:: @ 83A6DB4 - .4byte sub_8066B30 - .4byte sub_8067930 + .4byte MovementAction_SetFixedPriority_Step0 + .4byte MovementAction_Finish gUnknown_83A6DBC:: @ 83A6DBC - .4byte sub_8066B40 - .4byte sub_8067930 + .4byte MovementAction_ClearFixedPriority_Step0 + .4byte MovementAction_Finish gUnknown_83A6DC4:: @ 83A6DC4 - .4byte sub_8066B50 - .4byte sub_8067930 + .4byte MovementAction_InitAffineAnim_Step0 + .4byte MovementAction_Finish gUnknown_83A6DCC:: @ 83A6DCC - .4byte sub_8066B80 - .4byte sub_8067930 + .4byte MovementAction_ClearAffineAnim_Step0 + .4byte MovementAction_Finish gUnknown_83A6DD4:: @ 83A6DD4 - .4byte sub_8066BB0 - .4byte sub_8066BE4 - .4byte sub_8067934 + .4byte MovementAction_WalkDownStartAffine_Step0 + .4byte MovementAction_WalkDownStartAffine_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6DE0:: @ 83A6DE0 - .4byte sub_8066C10 - .4byte sub_8066C44 - .4byte sub_8067934 + .4byte MovementAction_WalkDownAffine_Step0 + .4byte MovementAction_WalkDownAffine_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6DEC:: @ 83A6DEC .4byte sub_8066CB0 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6DF4:: @ 83A6DF4 .4byte sub_8066CC0 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6DFC:: @ 83A6DFC .4byte sub_8066CD0 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6E04:: @ 83A6E04 .4byte sub_8066CE0 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6E0C:: @ 83A6E0C - .4byte sub_8066CF0 - .4byte sub_8066108 - .4byte sub_8067934 + .4byte MovementAction_AcroPopWheelieDown_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6E18:: @ 83A6E18 - .4byte sub_8066D14 - .4byte sub_8066108 - .4byte sub_8067934 + .4byte MovementAction_AcroPopWheelieUp_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6E24:: @ 83A6E24 - .4byte sub_8066D38 - .4byte sub_8066108 - .4byte sub_8067934 + .4byte MovementAction_AcroPopWheelieLeft_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6E30:: @ 83A6E30 - .4byte sub_8066D5C - .4byte sub_8066108 - .4byte sub_8067934 + .4byte MovementAction_AcroPopWheelieRight_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6E3C:: @ 83A6E3C - .4byte sub_8066D80 - .4byte sub_8066108 - .4byte sub_8067934 + .4byte MovementAction_AcroEndWheelieFaceDown_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6E48:: @ 83A6E48 - .4byte sub_8066DA4 - .4byte sub_8066108 - .4byte sub_8067934 + .4byte MovementAction_AcroEndWheelieFaceUp_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6E54:: @ 83A6E54 - .4byte sub_8066DC8 - .4byte sub_8066108 - .4byte sub_8067934 + .4byte MovementAction_AcroEndWheelieFaceLeft_Step0 + .4byte MovementAction_WaitSpriteAnim + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6E60:: @ 83A6E60 - .4byte sub_8066DEC - .4byte sub_8066108 - .4byte sub_8067934 - .4byte sub_8066E10 - .4byte sub_8066108 - .4byte sub_8067934 - .4byte sub_8066E34 - .4byte sub_8066108 - .4byte sub_8067934 - .4byte sub_8066E58 - .4byte sub_8066108 - .4byte sub_8067934 - .4byte sub_8066E7C - .4byte sub_8066108 - .4byte sub_8067934 + .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 gUnknown_83A6E9C:: @ 83A6E9C - .4byte sub_8066EE4 - .4byte sub_8066F10 - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieHopFaceDown_Step0 + .4byte MovementAction_AcroWheelieHopFaceDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6EA8:: @ 83A6EA8 - .4byte sub_8066F3C - .4byte sub_8066F68 - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieHopFaceUp_Step0 + .4byte MovementAction_AcroWheelieHopFaceUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6EB4:: @ 83A6EB4 - .4byte sub_8066F94 - .4byte sub_8066FC0 - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieHopFaceLeft_Step0 + .4byte MovementAction_AcroWheelieHopFaceLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6EC0:: @ 83A6EC0 - .4byte sub_8066FEC - .4byte sub_8067018 - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieHopFaceRight_Step0 + .4byte MovementAction_AcroWheelieHopFaceRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6ECC:: @ 83A6ECC - .4byte sub_8067044 - .4byte sub_8067070 - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieHopDown_Step0 + .4byte MovementAction_AcroWheelieHopDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6ED8:: @ 83A6ED8 - .4byte sub_806709C - .4byte sub_80670C8 - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieHopUp_Step0 + .4byte MovementAction_AcroWheelieHopUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6EE4:: @ 83A6EE4 - .4byte sub_80670F4 - .4byte sub_8067120 - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieHopLeft_Step0 + .4byte MovementAction_AcroWheelieHopLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6EF0:: @ 83A6EF0 - .4byte sub_806714C - .4byte sub_8067178 - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieHopRight_Step0 + .4byte MovementAction_AcroWheelieHopRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6EFC:: @ 83A6EFC - .4byte sub_80671A4 - .4byte sub_80671D0 - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieJumpDown_Step0 + .4byte MovementAction_AcroWheelieJumpDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6F08:: @ 83A6F08 - .4byte sub_80671FC - .4byte sub_8067228 - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieJumpUp_Step0 + .4byte MovementAction_AcroWheelieJumpUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6F14:: @ 83A6F14 - .4byte sub_8067254 - .4byte sub_8067280 - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieJumpLeft_Step0 + .4byte MovementAction_AcroWheelieJumpLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6F20:: @ 83A6F20 - .4byte sub_80672AC - .4byte sub_80672D8 - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieJumpRight_Step0 + .4byte MovementAction_AcroWheelieJumpRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6F2C:: @ 83A6F2C .4byte sub_8067304 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6F38:: @ 83A6F38 .4byte sub_806733C - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6F44:: @ 83A6F44 .4byte sub_8067374 - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6F50:: @ 83A6F50 .4byte sub_80673AC - .4byte sub_806570C - .4byte sub_8067934 + .4byte MovementAction_WalkInPlace_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6F5C:: @ 83A6F5C - .4byte sub_806741C - .4byte sub_806743C - .4byte sub_8067934 + .4byte MovementAction_AcroPopWheelieMoveDown_Step0 + .4byte MovementAction_AcroPopWheelieMoveDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6F68:: @ 83A6F68 - .4byte sub_806745C - .4byte sub_806747C - .4byte sub_8067934 + .4byte MovementAction_AcroPopWheelieMoveUp_Step0 + .4byte MovementAction_AcroPopWheelieMoveUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6F74:: @ 83A6F74 - .4byte sub_806749C - .4byte sub_80674BC - .4byte sub_8067934 + .4byte MovementAction_AcroPopWheelieMoveLeft_Step0 + .4byte MovementAction_AcroPopWheelieMoveLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6F80:: @ 83A6F80 - .4byte sub_80674DC - .4byte sub_80674FC - .4byte sub_8067934 + .4byte MovementAction_AcroPopWheelieMoveRight_Step0 + .4byte MovementAction_AcroPopWheelieMoveRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6F8C:: @ 83A6F8C - .4byte sub_806754C - .4byte sub_806756C - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieMoveDown_Step0 + .4byte MovementAction_AcroWheelieMoveDown_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6F98:: @ 83A6F98 - .4byte sub_806758C - .4byte sub_80675AC - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieMoveUp_Step0 + .4byte MovementAction_AcroWheelieMoveUp_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6FA4:: @ 83A6FA4 - .4byte sub_80675CC - .4byte sub_80675EC - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieMoveLeft_Step0 + .4byte MovementAction_AcroWheelieMoveLeft_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6FB0:: @ 83A6FB0 - .4byte sub_806760C - .4byte sub_806762C - .4byte sub_8067934 + .4byte MovementAction_AcroWheelieMoveRight_Step0 + .4byte MovementAction_AcroWheelieMoveRight_Step1 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6FBC:: @ 83A6FBC .4byte sub_8067684 .4byte sub_80676A4 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6FC8:: @ 83A6FC8 .4byte sub_80676C4 .4byte sub_80676E4 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6FD4:: @ 83A6FD4 .4byte sub_8067704 .4byte sub_8067724 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6FE0:: @ 83A6FE0 .4byte sub_8067744 .4byte sub_8067764 - .4byte sub_8067934 + .4byte MovementAction_PauseSpriteAnim gUnknown_83A6FEC:: @ 83A6FEC .4byte sub_8067784 diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 0a94dc03b..3e48cf029 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -1,6 +1,13 @@ #ifndef GUARD_CONSTANTS_EVENT_OBJECTS_H #define GUARD_CONSTANTS_EVENT_OBJECTS_H +#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_ID_PLAYER 0xFF #define OBJ_EVENT_ID_CAMERA 0x7F diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index 3ed7d8ce2..e8246ccc5 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -1,7 +1,7 @@ #ifndef GUARD_CONSTANTS_FIELD_EFFECTS_H #define GUARD_CONSTANTS_FIELD_EFFECTS_H -#define FLDEFF_EXCLAMATION_MARK_ICON_1 0 +#define FLDEFF_EXCLAMATION_MARK_ICON 0 #define FLDEFF_USE_CUT_ON_GRASS 1 #define FLDEFF_USE_CUT_ON_TREE 2 #define FLDEFF_SHADOW 3 @@ -34,7 +34,7 @@ #define FLDEFF_NPCFLY_OUT 30 #define FLDEFF_USE_FLY 31 #define FLDEFF_FLY_IN 32 -#define FLDEFF_EXCLAMATION_MARK_ICON_2 33 +#define FLDEFF_QUESTION_MARK_ICON 33 #define FLDEFF_FEET_IN_FLOWING_WATER 34 #define FLDEFF_BIKE_TIRE_TRACKS 35 #define FLDEFF_SAND_DISGUISE 36 diff --git a/include/constants/global.h b/include/constants/global.h index 7f3c80bb4..e398cc5be 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_80688E4.h b/include/event_object_80688E4.h index 36040e0a5..a928a6d28 100644 --- a/include/event_object_80688E4.h +++ b/include/event_object_80688E4.h @@ -11,5 +11,18 @@ u32 sub_806916C(u8 a0); void sub_80691A4(u8 a0, u8 a1); void sub_8069094(u8 a0, u8 a1); bool32 sub_8069294(u8 a0); +void sub_8068BBC(struct Sprite *, u8); +void sub_8068C58(struct Sprite *, u8); +void sub_8068C08(struct Sprite *, u8); +bool8 sub_8068C68(struct Sprite *sprite); +bool8 sub_8068C18(struct Sprite *sprite); +void sub_8068CA4(struct Sprite *, u8); +bool8 obj_npc_ministep(struct Sprite *sprite); +bool8 sub_8068CB4(struct Sprite *sprite); +void SetAndStartSpriteAnim(struct Sprite *, u8, u8); +bool8 SpriteAnimEnded(struct Sprite *); +void SetMovementDelay(struct Sprite *, s16); +bool8 WaitForMovementDelay(struct Sprite *); +void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *); #endif // GUARD_EVENT_OBJECT_80688E4_H diff --git a/include/event_object_8097404.h b/include/event_object_8097404.h index 23fce9576..7fa288830 100644 --- a/include/event_object_8097404.h +++ b/include/event_object_8097404.h @@ -17,14 +17,12 @@ void sub_8097AC8(struct Sprite *); void UnfreezeObjectEvent(struct ObjectEvent *); void oamt_npc_ministep_reset(struct Sprite *, u8, u8); u8 sub_8097F78(struct ObjectEvent *); -bool8 obj_npc_ministep(struct Sprite *sprite); bool8 sub_80976EC(struct Sprite *sprite); void sub_80976DC(struct Sprite *, u8); void sub_809783C(struct Sprite *, u8, u8, u8); void DoShadowFieldEffect(struct ObjectEvent *); u8 sub_809785C(struct Sprite *); u8 sub_80978E4(struct Sprite *); -void obj_anim_image_set_and_seek(struct Sprite *, u8, u8); bool8 sub_80979BC(struct Sprite *); void sub_8097750(struct Sprite *); bool8 sub_8097758(struct Sprite *); diff --git a/include/event_object_movement.h b/include/event_object_movement.h index f2e7bd325..dac5ed8e8 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -22,6 +22,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,74 +42,88 @@ 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 npc_load_two_palettes__no_record(u16, u8); -void npc_load_two_palettes__and_record(u16, u8); -void sub_805F7C4(u8, u8, u8, s16, s16); -void pal_patch_for_npc(u16, u8); +void LoadPlayerObjectReflectionPalette(u16, u8); +void LoadSpecialObjectReflectionPalette(u16, u8); +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_80930E0(s16 *, s16 *, s16, s16); -void ObjectEventClearAnim(struct ObjectEvent *); -void ObjectEventClearAnimIfSpecialAnimActive(struct ObjectEvent *); +void sub_8063AD4(s16, s16, s16 *, s16 *); +u8 GetFaceDirectionAnimNum(u8); +void sub_8063BC4(s16 *, s16 *, s16, s16); +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); u8 SpawnSpecialObjectEventParameterized(u8, u8, u8, s16, s16, u8); u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *); -void sub_8093038(s16, s16, s16 *, s16 *); +void SetSpritePosToMapCoords(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 *, u8 *, u8 *, u8 *); -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 npc_block_way(struct ObjectEvent *, s16, s16, 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 sub_805FE7C(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 sub_8063F84(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); +void SetObjectSubpriorityByZCoord(u8, struct Sprite *, 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 *); + // Exported data declarations diff --git a/include/field_camera.h b/include/field_camera.h index fb9861014..d76b1f8a7 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -15,12 +15,11 @@ struct CameraObject s32 y; }; -extern struct CameraObject gUnknown_03005DD0; - // Exported RAM declarations -extern u16 gUnknown_03005DEC; -extern u16 gUnknown_03005DE8; +extern struct CameraObject gFieldCamera; +extern u16 gTotalCameraPixelOffsetX; +extern u16 gTotalCameraPixelOffsetY; // Exported ROM declarations diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h index 57a2fab66..23e20fc32 100644 --- a/include/field_control_avatar.h +++ b/include/field_control_avatar.h @@ -8,5 +8,6 @@ extern u32 gUnknown_3005078; void RestartWildEncounterImmunitySteps(void); void ClearPoisonStepCounter(void); void SetCableClubWarp(void); +void sub_806DE28(struct ObjectEvent *); #endif //GUARD_FIELD_CONTROL_AVATAR_H diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index e1a56a26c..ac025c1cf 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -12,9 +12,10 @@ // Exported RAM declarations // Exported ROM declarations -u8 sub_8154228(void); -bool8 sub_8155DA0(struct ObjectEvent *); +u8 CreateWarpArrowSprite(void); void sub_80DC44C(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 a69ec6155..e6d4d3e6a 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 91a45d8c5..d0ff368af 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 01cd992ec..a2bcc831c 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -169,61 +169,61 @@ struct MapHeader struct ObjectEvent { /*0x00*/ u32 active:1; - u32 mapobj_bit_1:1; - u32 mapobj_bit_2:1; - u32 mapobj_bit_3:1; - u32 mapobj_bit_4:1; - u32 mapobj_bit_5:1; - u32 mapobj_bit_6:1; - u32 mapobj_bit_7:1; - /*0x01*/ u32 mapobj_bit_8:1; - u32 mapobj_bit_9:1; - u32 mapobj_bit_10:1; - u32 mapobj_bit_11:1; - u32 mapobj_bit_12:1; - u32 mapobj_bit_13:1; - u32 mapobj_bit_14:1; - u32 mapobj_bit_15:1; - /*0x02*/ u32 mapobj_bit_16:1; - u32 mapobj_bit_17:1; - u32 mapobj_bit_18:1; - u32 mapobj_bit_19:1; - u32 mapobj_bit_20:1; - u32 mapobj_bit_21:1; - u32 mapobj_bit_22:1; - u32 mapobj_bit_23:1; - /*0x03*/ u32 mapobj_bit_24:1; - u32 mapobj_bit_25:1; - u32 mapobj_bit_26:1; - u32 mapobj_bit_27:1; + u32 singleMovementActive:1; + u32 triggerGroundEffectsOnMove:1; + u32 triggerGroundEffectsOnStop:1; + u32 disableCoveringGroundEffects:1; + u32 landingJump:1; + u32 heldMovementActive:1; + u32 heldMovementFinished:1; + /*0x01*/ u32 frozen:1; + u32 facingDirectionLocked:1; + u32 disableAnim:1; + u32 enableAnim:1; + u32 inanimate:1; + u32 invisible:1; + u32 offScreen:1; + u32 trackedByCamera:1; + /*0x02*/ u32 isPlayer:1; + u32 hasReflection:1; + u32 inShortGrass:1; + u32 inShallowFlowingWater:1; + u32 inSandPile:1; + u32 inHotSprings:1; + u32 hasShadow:1; + u32 spriteAnimPausedBackup:1; + /*0x03*/ u32 spriteAffineAnimPausedBackup:1; + u32 disableJumpLandingGroundEffect:1; + u32 fixedPriority:1; + u32 hideReflection:1; u32 mapobj_bit_28:1; u32 mapobj_bit_29:1; u32 mapobj_bit_30:1; u32 mapobj_bit_31: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; - /*0x0C*/ struct Coords16 coords1; - /*0x10*/ struct Coords16 coords2; - /*0x14*/ struct Coords16 coords3; - /*0x18*/ u8 facingDirection:4; //current direction? - /*0x18*/ u8 placeholder18:4; + /*0x0B*/ u8 currentElevation:4; + u8 previousElevation:4; + /*0x0C*/ struct Coords16 initialCoords; + /*0x10*/ struct Coords16 currentCoords; + /*0x14*/ struct Coords16 previousCoords; + /*0x18*/ u8 facingDirection:4; // current direction? + /*0x18*/ u8 movementDirection:4; /*0x19*/ union ObjectEventRange range; - /*0x1A*/ u8 mapobj_unk_1A; - /*0x1B*/ u8 mapobj_unk_1B; - /*0x1C*/ u8 mapobj_unk_1C; + /*0x1A*/ u8 fieldEffectSpriteId; + /*0x1B*/ u8 warpArrowSpriteId; + /*0x1C*/ u8 movementActionId; /*0x1D*/ u8 trainerRange_berryTreeId; - /*0x1E*/ u8 mapobj_unk_1E; - /*0x1F*/ u8 mapobj_unk_1F; - /*0x20*/ u8 mapobj_unk_20; - /*0x21*/ u8 mapobj_unk_21; - /*0x22*/ u8 animId; + /*0x1E*/ u8 currentMetatileBehavior; + /*0x1F*/ u8 previousMetatileBehavior; + /*0x20*/ u8 previousMovementDirection; + /*0x21*/ u8 directionSequenceIndex; + /*0x22*/ u8 playerCopyableMovement; /*size = 0x24*/ }; @@ -269,7 +269,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 d567ab77c..b79a7ce8b 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 a7031e56d..97fa8d67a 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; }; @@ -95,7 +95,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); @@ -141,6 +141,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 eddd4c02a..152668f17 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -49,5 +49,7 @@ 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); #endif //GUARD_QUEST_LOG_H diff --git a/include/sprite.h b/include/sprite.h index 7432306a4..43bf5745d 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -316,5 +316,7 @@ 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); #endif //GUARD_SPRITE_H diff --git a/include/trainer_see.h b/include/trainer_see.h index 511edf404..f0548f650 100644 --- a/include/trainer_see.h +++ b/include/trainer_see.h @@ -3,8 +3,7 @@ #include "global.h" -void sub_80B4578(struct ObjectEvent *); u8 sub_80B47BC(void); -void sub_8155D78(struct ObjectEvent *); +void sub_80824EC(struct ObjectEvent *var); #endif //GUARD_TRAINER_SEE_H diff --git a/ld_script.txt b/ld_script.txt index 021686fcb..6cf0c0d62 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -93,6 +93,7 @@ SECTIONS { asm/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); asm/field_ground_effect.o(.text); asm/event_object_80688E4.o(.text); diff --git a/src/event_object_lock.c b/src/event_object_lock.c index e91642aa2..996e0c19c 100644 --- a/src/event_object_lock.c +++ b/src/event_object_lock.c @@ -51,7 +51,7 @@ void sub_80695CC(u8 taskId) task->data[0] = 1; } - if (task->data[1] == 0 && !gObjectEvents[gSelectedObjectEvent].mapobj_bit_1) + if (task->data[1] == 0 && !gObjectEvents[gSelectedObjectEvent].singleMovementActive) { FreezeObjectEvent(&gObjectEvents[gSelectedObjectEvent]); task->data[1] = 1; @@ -78,7 +78,7 @@ void LockSelectedObjectEvent(void) FreezeObjectEventsExceptOne(gSelectedObjectEvent); taskId = CreateTask(sub_80695CC, 80); - if (!gObjectEvents[gSelectedObjectEvent].mapobj_bit_1) + if (!gObjectEvents[gSelectedObjectEvent].singleMovementActive) { FreezeObjectEvent(&gObjectEvents[gSelectedObjectEvent]); gTasks[taskId].data[1] = 1; @@ -111,5 +111,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..53008f3a0 --- /dev/null +++ b/src/event_object_movement.c @@ -0,0 +1,7440 @@ +#include "global.h" +#include "malloc.h" +#include "event_data.h" +#include "event_object_80688E4.h" +#include "event_object_8097404.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" +#include "constants/object_events.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 sub_8064988(struct ObjectEvent *, struct Sprite *); +u8 sub_80649C8(struct ObjectEvent *, struct Sprite *); +u8 sub_8064A08(struct ObjectEvent *, struct Sprite *); +u8 sub_8064A48(struct ObjectEvent *, struct Sprite *); +u8 sub_8064A88(struct ObjectEvent *, struct Sprite *); +u8 sub_8064AC8(struct ObjectEvent *, struct Sprite *); +u8 sub_8064B08(struct ObjectEvent *, struct Sprite *); +u8 sub_8064B48(struct ObjectEvent *, struct Sprite *); +u8 sub_8064C5C(struct ObjectEvent *, struct Sprite *); +u8 sub_8064C9C(struct ObjectEvent *, struct Sprite *); +u8 sub_8064CDC(struct ObjectEvent *, struct Sprite *); +u8 sub_8064D1C(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 sub_8065438(struct ObjectEvent *, struct Sprite *); +bool8 sub_80654A4(struct ObjectEvent *, struct Sprite *); +bool8 sub_8065510(struct ObjectEvent *, struct Sprite *); +bool8 sub_806557C(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 sub_8065FE4(struct ObjectEvent *, struct Sprite *); +bool8 sub_8066024(struct ObjectEvent *, struct Sprite *); +bool8 sub_8066064(struct ObjectEvent *, struct Sprite *); +bool8 sub_80660A4(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 sub_806629C(struct ObjectEvent *, struct Sprite *); +bool8 sub_80662DC(struct ObjectEvent *, struct Sprite *); +bool8 sub_806631C(struct ObjectEvent *, struct Sprite *); +bool8 sub_806635C(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 sub_80676A4(struct ObjectEvent *, struct Sprite *); +bool8 sub_80676E4(struct ObjectEvent *, struct Sprite *); +bool8 sub_8067724(struct ObjectEvent *, struct Sprite *); +bool8 sub_8067764(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 struct Coords16 sDirectionToVectors[]; +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 - OBJECT_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 - OBJECT_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); +} + +u8 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 sub_8064968(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064904(objectEvent, sprite, DIR_SOUTH); + return sub_8064988(objectEvent, sprite); +} + +bool8 sub_8064988(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064930(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80649A8(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064904(objectEvent, sprite, DIR_NORTH); + return sub_80649C8(objectEvent, sprite); +} + +bool8 sub_80649C8(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064930(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80649E8(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064904(objectEvent, sprite, DIR_WEST); + return sub_8064A08(objectEvent, sprite); +} + +bool8 sub_8064A08(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064930(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8064A28(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064904(objectEvent, sprite, DIR_EAST); + return sub_8064A48(objectEvent, sprite); +} + +bool8 sub_8064A48(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064930(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8064A68(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064830(objectEvent, sprite, DIR_SOUTH); + return sub_8064A88(objectEvent, sprite); +} + +bool8 sub_8064A88(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (an_walk_any_2(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8064AA8(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064830(objectEvent, sprite, DIR_NORTH); + return sub_8064AC8(objectEvent, sprite); +} + +bool8 sub_8064AC8(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (an_walk_any_2(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8064AE8(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064830(objectEvent, sprite, DIR_WEST); + return sub_8064B08(objectEvent, sprite); +} + +bool8 sub_8064B08(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (an_walk_any_2(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8064B28(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064830(objectEvent, sprite, DIR_EAST); + return sub_8064B48(objectEvent, sprite); +} + +bool8 sub_8064B48(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 sub_8064C3C(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064BD8(objectEvent, sprite, DIR_NORTH); + return sub_8064C5C(objectEvent, sprite); +} + +bool8 sub_8064C5C(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064C04(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8064C7C(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064BD8(objectEvent, sprite, DIR_SOUTH); + return sub_8064C9C(objectEvent, sprite); +} + +bool8 sub_8064C9C(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064C04(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8064CBC(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064BD8(objectEvent, sprite, DIR_WEST); + return sub_8064CDC(objectEvent, sprite); +} + +bool8 sub_8064CDC(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8064C04(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8064CFC(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8064BD8(objectEvent, sprite, DIR_EAST); + return sub_8064D1C(objectEvent, sprite); +} + +bool8 sub_8064D1C(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 sub_80653F8(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 sub_8065438(objectEvent, sprite); +} + +bool8 sub_8065438(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + AnimateSprite(sprite); + if (sub_80653CC(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +u8 sub_8065464(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 sub_80654A4(objectEvent, sprite); +} + +bool8 sub_80654A4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + AnimateSprite(sprite); + if (sub_80653CC(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +u8 sub_80654D0(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 sub_8065510(objectEvent, sprite); +} + +bool8 sub_8065510(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + AnimateSprite(sprite); + if (sub_80653CC(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +u8 sub_806553C(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 sub_806557C(objectEvent, sprite); +} + +bool8 sub_806557C(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 sub_80655D4(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 sub_8065610(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 sub_806564C(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 sub_8065688(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 sub_8065FC4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8065F60(objectEvent, sprite, DIR_SOUTH); + return sub_8065FE4(objectEvent, sprite); +} + +bool8 sub_8065FE4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065F8C(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8066004(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8065F60(objectEvent, sprite, DIR_NORTH); + return sub_8066024(objectEvent, sprite); +} + +bool8 sub_8066024(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065F8C(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8066044(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8065F60(objectEvent, sprite, DIR_WEST); + return sub_8066064(objectEvent, sprite); +} + +bool8 sub_8066064(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065F8C(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8066084(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8065F60(objectEvent, sprite, DIR_SOUTH); + return sub_80660A4(objectEvent, sprite); +} + +bool8 sub_80660A4(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 sub_806627C(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066128(objectEvent, sprite, DIR_SOUTH); + return sub_806629C(objectEvent, sprite); +} + +bool8 sub_806629C(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065040(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80662BC(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066128(objectEvent, sprite, DIR_NORTH); + return sub_80662DC(objectEvent, sprite); +} + +bool8 sub_80662DC(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065040(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80662FC(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066128(objectEvent, sprite, DIR_WEST); + return sub_806631C(objectEvent, sprite); +} + +bool8 sub_806631C(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (sub_8065040(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_806633C(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066128(objectEvent, sprite, DIR_EAST); + return sub_806635C(objectEvent, sprite); +} + +bool8 sub_806635C(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_HEART_ICON); + sprite->data[2] = 1; + return TRUE; +} + +bool8 sub_806698C(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_UNK_42); + sprite->data[2] = 1; + return TRUE; +} + +bool8 sub_80669B0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_UNK_40); + sprite->data[2] = 1; + return TRUE; +} + +bool8 MovementAction_RevealTrainer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (objectEvent->movementType == MOVEMENT_TYPE_HIDDEN) + { + sub_80824EC(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 sub_8066CB0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066C70(objectEvent, sprite, DIR_SOUTH); + return TRUE; +} + +bool8 sub_8066CC0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066C70(objectEvent, sprite, DIR_NORTH); + return TRUE; +} + +bool8 sub_8066CD0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_8066C70(objectEvent, sprite, DIR_WEST); + return TRUE; +} + +bool8 sub_8066CE0(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 sub_8067304(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_SOUTH, GetFishingDirectionAnimNum(DIR_SOUTH), 8); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 sub_806733C(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_NORTH, GetFishingDirectionAnimNum(DIR_NORTH), 8); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 sub_8067374(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_80656C4(objectEvent, sprite, DIR_WEST, GetFishingDirectionAnimNum(DIR_WEST), 8); + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); +} + +bool8 sub_80673AC(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 sub_8067684(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_806764C(objectEvent, sprite, DIR_SOUTH, 1); + return sub_80676A4(objectEvent, sprite); +} + +bool8 sub_80676A4(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_80676C4(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_806764C(objectEvent, sprite, DIR_NORTH, 1); + return sub_80676E4(objectEvent, sprite); +} + +bool8 sub_80676E4(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_8067704(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_806764C(objectEvent, sprite, DIR_WEST, 1); + return sub_8067724(objectEvent, sprite); +} + +bool8 sub_8067724(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_8067744(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sub_806764C(objectEvent, sprite, DIR_EAST, 1); + return sub_8067764(objectEvent, sprite); +} + +bool8 sub_8067764(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_8067784(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 sub_80677C0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + return sprite->animEnded; +} + +bool8 sub_80677CC(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 sub_80678C0(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 sub_80678F0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + StartSpriteAnim(sprite, 28); + sprite->animPaused = FALSE; + objectEvent->disableAnim = FALSE; + sprite->data[2] = 1; + return FALSE; +} + +bool8 sub_8067924(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 sub_8067944(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->pos2.y = 0; + sprite->data[2]++; + return FALSE; +} + +bool8 sub_8067954(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->pos2.y -= 8; + if (sprite->pos2.y == -160) + sprite->data[2]++; + return FALSE; +} + +bool8 sub_8067978(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->pos2.y = -160; + sprite->data[2]++; + return FALSE; +} + +bool8 sub_806798C(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->pos2.y += 8; + if (sprite->pos2.y == 0) + sprite->data[2]++; + return FALSE; +} + +u8 sub_80679A8(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 6f60b4a44..c9a8aac5a 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_fadetransition.c b/src/field_fadetransition.c index 0af5f462c..4edefd13a 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -415,7 +415,7 @@ static void task_map_chg_seq_0807E20C(u8 taskId) if (sub_807E418()) { sub_807DCB0(TRUE); - ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], sub_8063F84(GetPlayerFacingDirection())); + ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], GetWalkNormalMovementAction(GetPlayerFacingDirection())); task->data[0] = 2; } break; @@ -752,7 +752,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)], 17); task->data[0] = 2; } @@ -850,15 +850,15 @@ static void sub_807EAC4(s16 a0, s16 a1, s16 *a2, s16 *a3, s16 *a4) (*a4)++; playerSpr->pos2.x = *a2 >> 5; playerSpr->pos2.y = *a3 >> 5; - if (playerObj->mapobj_bit_7) + 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); } @@ -930,7 +930,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 57bf53830..bb320d42a 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -316,7 +316,7 @@ void Special_AnimatePcTurnOff() void SpawnCameraObject(void) { u8 objectEventId = SpawnSpecialObjectEventParameterized(OBJECT_EVENT_GFX_YOUNGSTER, 8, 127, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3); - gObjectEvents[objectEventId].mapobj_bit_13 = TRUE; + gObjectEvents[objectEventId].invisible = TRUE; CameraObjectSetFollowedObjectId(gObjectEvents[objectEventId].spriteId); } diff --git a/src/fieldmap.c b/src/fieldmap.c index adb26f230..d2598c3e6 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -8,6 +8,8 @@ #include "quest_log.h" #include "fieldmap.h" +#define VMap gBackupMapLayout // Needed for AGB_ASSERT_EX to match + struct ConnectionFlags { u8 south:1; @@ -28,8 +30,8 @@ struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y); bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection); bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset); -struct BackupMapLayout VMap; -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 = {}; EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {}; @@ -79,10 +81,10 @@ void sub_80589E8(void) void sub_8058A00(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 @@ void sub_8058A00(struct MapHeader * mapHeader) 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 @@ void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x 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 @@ void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader con { 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 @@ void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader con { 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 @@ void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader cons 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 @@ void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader cons 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 sub_8059024(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 @@ 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 @@ 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 @@ 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 8e07c1c97..29a296255 100644 --- a/src/metatile_behavior.c +++ b/src/metatile_behavior.c @@ -88,7 +88,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 7917d03e9..c021bbb61 100644 --- a/src/quest_log_objects.c +++ b/src/quest_log_objects.c @@ -14,37 +14,37 @@ void SetQuestLogObjectEventsData(struct QuestLog * questLog) for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { questLog->unk_008[i].active = gObjectEvents[i].active; - questLog->unk_008[i].mapobj_bit_3 = gObjectEvents[i].mapobj_bit_3; - questLog->unk_008[i].mapobj_bit_4 = gObjectEvents[i].mapobj_bit_4; - questLog->unk_008[i].mapobj_bit_5 = gObjectEvents[i].mapobj_bit_5; - questLog->unk_008[i].mapobj_bit_8 = gObjectEvents[i].mapobj_bit_8; - questLog->unk_008[i].mapobj_bit_9 = gObjectEvents[i].mapobj_bit_9; - questLog->unk_008[i].mapobj_bit_10 = gObjectEvents[i].mapobj_bit_10; - questLog->unk_008[i].mapobj_bit_11 = gObjectEvents[i].mapobj_bit_11; - questLog->unk_008[i].mapobj_bit_12 = gObjectEvents[i].mapobj_bit_12; - questLog->unk_008[i].mapobj_bit_13 = gObjectEvents[i].mapobj_bit_13; - questLog->unk_008[i].mapobj_bit_14 = gObjectEvents[i].mapobj_bit_14; - questLog->unk_008[i].mapobj_bit_15 = gObjectEvents[i].mapobj_bit_15; - questLog->unk_008[i].mapobj_bit_16 = gObjectEvents[i].mapobj_bit_16; - questLog->unk_008[i].mapobj_bit_23 = gObjectEvents[i].mapobj_bit_23; - questLog->unk_008[i].mapobj_bit_24 = gObjectEvents[i].mapobj_bit_24; - questLog->unk_008[i].mapobj_bit_25 = gObjectEvents[i].mapobj_bit_25; - questLog->unk_008[i].mapobj_bit_26 = gObjectEvents[i].mapobj_bit_26; + questLog->unk_008[i].mapobj_bit_3 = gObjectEvents[i].triggerGroundEffectsOnStop; + questLog->unk_008[i].mapobj_bit_4 = gObjectEvents[i].disableCoveringGroundEffects; + questLog->unk_008[i].mapobj_bit_5 = gObjectEvents[i].landingJump; + questLog->unk_008[i].mapobj_bit_8 = gObjectEvents[i].frozen; + questLog->unk_008[i].mapobj_bit_9 = gObjectEvents[i].facingDirectionLocked; + questLog->unk_008[i].mapobj_bit_10 = gObjectEvents[i].disableAnim; + questLog->unk_008[i].mapobj_bit_11 = gObjectEvents[i].enableAnim; + questLog->unk_008[i].mapobj_bit_12 = gObjectEvents[i].inanimate; + questLog->unk_008[i].mapobj_bit_13 = gObjectEvents[i].invisible; + questLog->unk_008[i].mapobj_bit_14 = gObjectEvents[i].offScreen; + questLog->unk_008[i].mapobj_bit_15 = gObjectEvents[i].trackedByCamera; + questLog->unk_008[i].mapobj_bit_16 = gObjectEvents[i].isPlayer; + questLog->unk_008[i].mapobj_bit_23 = gObjectEvents[i].spriteAnimPausedBackup; + questLog->unk_008[i].mapobj_bit_24 = gObjectEvents[i].spriteAffineAnimPausedBackup; + questLog->unk_008[i].mapobj_bit_25 = gObjectEvents[i].disableJumpLandingGroundEffect; + questLog->unk_008[i].mapobj_bit_26 = 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; questLog->unk_008[i].mapGroup = gObjectEvents[i].mapGroup; - questLog->unk_008[i].x = gObjectEvents[i].coords2.x; - questLog->unk_008[i].y = gObjectEvents[i].coords2.y; + questLog->unk_008[i].x = gObjectEvents[i].currentCoords.x; + questLog->unk_008[i].y = gObjectEvents[i].currentCoords.y; questLog->unk_008[i].trainerRange_berryTreeId = gObjectEvents[i].trainerRange_berryTreeId; - questLog->unk_008[i].mapobj_unk_1F = gObjectEvents[i].mapobj_unk_1F; - questLog->unk_008[i].mapobj_unk_21 = gObjectEvents[i].mapobj_unk_21; - questLog->unk_008[i].animId = gObjectEvents[i].animId; + questLog->unk_008[i].mapobj_unk_1F = gObjectEvents[i].previousMetatileBehavior; + questLog->unk_008[i].mapobj_unk_21 = gObjectEvents[i].directionSequenceIndex; + questLog->unk_008[i].animId = gObjectEvents[i].playerCopyableMovement; } } @@ -58,74 +58,74 @@ void sub_815A1F8(const struct QuestLog * questLog, const struct ObjectEventTempl for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { gObjectEvents[i].active = questLogObjectEvents[i].active; - gObjectEvents[i].mapobj_bit_3 = questLogObjectEvents[i].mapobj_bit_3; - gObjectEvents[i].mapobj_bit_4 = questLogObjectEvents[i].mapobj_bit_4; - gObjectEvents[i].mapobj_bit_5 = questLogObjectEvents[i].mapobj_bit_5; - gObjectEvents[i].mapobj_bit_8 = questLogObjectEvents[i].mapobj_bit_8; - gObjectEvents[i].mapobj_bit_9 = questLogObjectEvents[i].mapobj_bit_9; - gObjectEvents[i].mapobj_bit_10 = questLogObjectEvents[i].mapobj_bit_10; - gObjectEvents[i].mapobj_bit_11 = questLogObjectEvents[i].mapobj_bit_11; - gObjectEvents[i].mapobj_bit_12 = questLogObjectEvents[i].mapobj_bit_12; - gObjectEvents[i].mapobj_bit_13 = questLogObjectEvents[i].mapobj_bit_13; - gObjectEvents[i].mapobj_bit_14 = questLogObjectEvents[i].mapobj_bit_14; - gObjectEvents[i].mapobj_bit_15 = questLogObjectEvents[i].mapobj_bit_15; - gObjectEvents[i].mapobj_bit_16 = questLogObjectEvents[i].mapobj_bit_16; - gObjectEvents[i].mapobj_bit_23 = questLogObjectEvents[i].mapobj_bit_23; - gObjectEvents[i].mapobj_bit_24 = questLogObjectEvents[i].mapobj_bit_24; - gObjectEvents[i].mapobj_bit_25 = questLogObjectEvents[i].mapobj_bit_25; - gObjectEvents[i].mapobj_bit_26 = questLogObjectEvents[i].mapobj_bit_26; + gObjectEvents[i].triggerGroundEffectsOnStop = questLogObjectEvents[i].mapobj_bit_3; + gObjectEvents[i].disableCoveringGroundEffects = questLogObjectEvents[i].mapobj_bit_4; + gObjectEvents[i].landingJump = questLogObjectEvents[i].mapobj_bit_5; + gObjectEvents[i].frozen = questLogObjectEvents[i].mapobj_bit_8; + gObjectEvents[i].facingDirectionLocked = questLogObjectEvents[i].mapobj_bit_9; + gObjectEvents[i].disableAnim = questLogObjectEvents[i].mapobj_bit_10; + gObjectEvents[i].enableAnim = questLogObjectEvents[i].mapobj_bit_11; + gObjectEvents[i].inanimate = questLogObjectEvents[i].mapobj_bit_12; + gObjectEvents[i].invisible = questLogObjectEvents[i].mapobj_bit_13; + gObjectEvents[i].offScreen = questLogObjectEvents[i].mapobj_bit_14; + gObjectEvents[i].trackedByCamera = questLogObjectEvents[i].mapobj_bit_15; + gObjectEvents[i].isPlayer = questLogObjectEvents[i].mapobj_bit_16; + gObjectEvents[i].spriteAnimPausedBackup = questLogObjectEvents[i].mapobj_bit_23; + gObjectEvents[i].spriteAffineAnimPausedBackup = questLogObjectEvents[i].mapobj_bit_24; + gObjectEvents[i].disableJumpLandingGroundEffect = questLogObjectEvents[i].mapobj_bit_25; + gObjectEvents[i].fixedPriority = questLogObjectEvents[i].mapobj_bit_26; 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; gObjectEvents[i].mapGroup = questLogObjectEvents[i].mapGroup; - gObjectEvents[i].coords2.x = questLogObjectEvents[i].x; - gObjectEvents[i].coords2.y = questLogObjectEvents[i].y; + gObjectEvents[i].currentCoords.x = questLogObjectEvents[i].x; + gObjectEvents[i].currentCoords.y = questLogObjectEvents[i].y; gObjectEvents[i].trainerRange_berryTreeId = questLogObjectEvents[i].trainerRange_berryTreeId; - gObjectEvents[i].mapobj_unk_1F = questLogObjectEvents[i].mapobj_unk_1F; - gObjectEvents[i].mapobj_unk_21 = questLogObjectEvents[i].mapobj_unk_21; - gObjectEvents[i].animId = questLogObjectEvents[i].animId; + gObjectEvents[i].previousMetatileBehavior = questLogObjectEvents[i].mapobj_unk_1F; + gObjectEvents[i].directionSequenceIndex = questLogObjectEvents[i].mapobj_unk_21; + gObjectEvents[i].playerCopyableMovement = questLogObjectEvents[i].animId; for (j = 0; j < 0x40; j++) { if (gObjectEvents[i].localId == templates[j].localId) { - gObjectEvents[i].coords1.x = templates[j].x + 7; - gObjectEvents[i].coords1.y = templates[j].y + 7; + gObjectEvents[i].initialCoords.x = templates[j].x + 7; + gObjectEvents[i].initialCoords.y = templates[j].y + 7; gObjectEvents[i].range.as_nybbles.x = templates[j].movementRangeX; gObjectEvents[i].range.as_nybbles.y = templates[j].movementRangeY; } } - gObjectEvents[i].mapobj_unk_1E = MapGridGetMetatileBehaviorAt(gObjectEvents[i].coords2.x, gObjectEvents[i].coords2.y); - if (gObjectEvents[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gObjectEvents[i].coords2.x), (s16)(gObjectEvents[i].coords2.y))) + gObjectEvents[i].currentMetatileBehavior = MapGridGetMetatileBehaviorAt(gObjectEvents[i].currentCoords.x, gObjectEvents[i].currentCoords.y); + if (gObjectEvents[i].previousMetatileBehavior == MapGridGetMetatileBehaviorAt((s16)(gObjectEvents[i].currentCoords.x), (s16)(gObjectEvents[i].currentCoords.y))) { - gObjectEvents[i].coords3.x = gObjectEvents[i].coords2.x; - gObjectEvents[i].coords3.y = gObjectEvents[i].coords2.y; + gObjectEvents[i].previousCoords.x = gObjectEvents[i].currentCoords.x; + gObjectEvents[i].previousCoords.y = gObjectEvents[i].currentCoords.y; } - else if (gObjectEvents[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gObjectEvents[i].coords2.x - 1), (s16)(gObjectEvents[i].coords2.y))) + else if (gObjectEvents[i].previousMetatileBehavior == MapGridGetMetatileBehaviorAt((s16)(gObjectEvents[i].currentCoords.x - 1), (s16)(gObjectEvents[i].currentCoords.y))) { - gObjectEvents[i].coords3.x = gObjectEvents[i].coords2.x - 1; - gObjectEvents[i].coords3.y = gObjectEvents[i].coords2.y; + gObjectEvents[i].previousCoords.x = gObjectEvents[i].currentCoords.x - 1; + gObjectEvents[i].previousCoords.y = gObjectEvents[i].currentCoords.y; } - else if (gObjectEvents[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gObjectEvents[i].coords2.x + 1), (s16)(gObjectEvents[i].coords2.y))) + else if (gObjectEvents[i].previousMetatileBehavior == MapGridGetMetatileBehaviorAt((s16)(gObjectEvents[i].currentCoords.x + 1), (s16)(gObjectEvents[i].currentCoords.y))) { - gObjectEvents[i].coords3.x = gObjectEvents[i].coords2.x + 1; - gObjectEvents[i].coords3.y = gObjectEvents[i].coords2.y; + gObjectEvents[i].previousCoords.x = gObjectEvents[i].currentCoords.x + 1; + gObjectEvents[i].previousCoords.y = gObjectEvents[i].currentCoords.y; } - else if (gObjectEvents[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gObjectEvents[i].coords2.x), (s16)(gObjectEvents[i].coords2.y - 1))) + else if (gObjectEvents[i].previousMetatileBehavior == MapGridGetMetatileBehaviorAt((s16)(gObjectEvents[i].currentCoords.x), (s16)(gObjectEvents[i].currentCoords.y - 1))) { - gObjectEvents[i].coords3.x = gObjectEvents[i].coords2.x; - gObjectEvents[i].coords3.y = gObjectEvents[i].coords2.y - 1; + gObjectEvents[i].previousCoords.x = gObjectEvents[i].currentCoords.x; + gObjectEvents[i].previousCoords.y = gObjectEvents[i].currentCoords.y - 1; } - else if (gObjectEvents[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gObjectEvents[i].coords2.x), (s16)(gObjectEvents[i].coords2.y + 1))) + else if (gObjectEvents[i].previousMetatileBehavior == MapGridGetMetatileBehaviorAt((s16)(gObjectEvents[i].currentCoords.x), (s16)(gObjectEvents[i].currentCoords.y + 1))) { - gObjectEvents[i].coords3.x = gObjectEvents[i].coords2.x; - gObjectEvents[i].coords3.y = gObjectEvents[i].coords2.y + 1; + gObjectEvents[i].previousCoords.x = gObjectEvents[i].currentCoords.x; + gObjectEvents[i].previousCoords.y = gObjectEvents[i].currentCoords.y + 1; } } @@ -143,7 +143,7 @@ void sub_815A540(void) { struct ObjectEvent * objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; SetPlayerAvatarTransitionFlags(0x01); - DestroySprite(&gSprites[objectEvent->mapobj_unk_1A]); + DestroySprite(&gSprites[objectEvent->fieldEffectSpriteId]); } } } diff --git a/src/quest_log_player.c b/src/quest_log_player.c index 7665a8a92..5a2152d8e 100644 --- a/src/quest_log_player.c +++ b/src/quest_log_player.c @@ -58,7 +58,7 @@ static void sub_81504A8(void) { struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; sub_81507BC(objectEvent, sub_805C808(0)); - ObjectEventTurn(objectEvent, objectEvent->placeholder18); + ObjectEventTurn(objectEvent, objectEvent->movementDirection); SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_ON_FOOT); } @@ -66,7 +66,7 @@ static void sub_81504E8(void) { struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; sub_81507BC(objectEvent, sub_805C808(1)); - ObjectEventTurn(objectEvent, objectEvent->placeholder18); + ObjectEventTurn(objectEvent, objectEvent->movementDirection); SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_MACH_BIKE); sub_80BD620(0, 0); } @@ -87,7 +87,7 @@ static void sub_8150530(void) else { sub_81507BC(objectEvent, sub_805C808(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); - objectEvent->mapobj_bit_11 = TRUE; + ObjectEventClearHeldMovementIfActive(objectEvent); + objectEvent->enableAnim = TRUE; sub_81507BC(objectEvent, sub_805C808(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: @@ -125,7 +125,7 @@ static void sub_81505C4(u8 taskId) sub_81507BC(objectEvent, sub_805C808(0)); else sub_81507BC(objectEvent, sub_805C808(2)); - ObjectEventTurn(objectEvent, objectEvent->placeholder18); + ObjectEventTurn(objectEvent, objectEvent->movementDirection); sprite->pos2.x = 0; sprite->pos2.y = 0; ScriptContext2_Disable(); @@ -143,13 +143,13 @@ static void sub_8150708(void) if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)) { sub_81507BC(objectEvent, sub_805C808(2)); - ObjectEventTurn(objectEvent, objectEvent->placeholder18); + ObjectEventTurn(objectEvent, objectEvent->movementDirection); SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING); - gFieldEffectArguments[0] = objectEvent->coords2.x; - gFieldEffectArguments[1] = objectEvent->coords2.y; + gFieldEffectArguments[0] = objectEvent->currentCoords.x; + gFieldEffectArguments[1] = objectEvent->currentCoords.y; gFieldEffectArguments[2] = gPlayerAvatar.objectEventId; fieldEffectId = FieldEffectStart(FLDEFF_SURF_BLOB); - objectEvent->mapobj_unk_1A = fieldEffectId; + objectEvent->fieldEffectSpriteId = fieldEffectId; sub_80DC44C(fieldEffectId, 1); } } diff --git a/src/scrcmd.c b/src/scrcmd.c index c2c422a0a..c79a8bd1f 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1084,7 +1084,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; } @@ -1102,7 +1102,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/vs_seeker.c b/src/vs_seeker.c index b35b6143e..417b281d9 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -598,7 +598,7 @@ static void sub_810C3B8(u8 taskId) { if (sub_810CF04(i) == TRUE) { - if (gObjectEvents[i].mapobj_bit_1) + if (gObjectEvents[i].singleMovementActive) return; FreezeObjectEvent(&gObjectEvents[i]); } @@ -687,7 +687,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) @@ -799,8 +799,8 @@ static void GatherNearbyTrainerInfo(void) sVsSeeker->trainerInfo[vsSeekerObjectIdx].localId = templates[objectEventIdx].localId; TryGetObjectEventIdByLocalIdAndMap(templates[objectEventIdx].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId); sVsSeeker->trainerInfo[vsSeekerObjectIdx].objectEventId = objectEventId; - sVsSeeker->trainerInfo[vsSeekerObjectIdx].xCoord = gObjectEvents[objectEventId].coords2.x - 7; - sVsSeeker->trainerInfo[vsSeekerObjectIdx].yCoord = gObjectEvents[objectEventId].coords2.y - 7; + sVsSeeker->trainerInfo[vsSeekerObjectIdx].xCoord = gObjectEvents[objectEventId].currentCoords.x - 7; + sVsSeeker->trainerInfo[vsSeekerObjectIdx].yCoord = gObjectEvents[objectEventId].currentCoords.y - 7; sVsSeeker->trainerInfo[vsSeekerObjectIdx].graphicsId = templates[objectEventIdx].graphicsId; vsSeekerObjectIdx++; } @@ -909,7 +909,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); @@ -952,12 +952,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. - sub_805FE7C(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 = 0x08; + r4_2->movementType = 0x08; } } } @@ -1313,7 +1313,7 @@ static void StartAllRespondantIdleMovements(void) if (sub_810CF04(sVsSeeker->trainerInfo[j].objectEventId) == 1) SetTrainerMovementType(r4, sVsSeeker->runningBehaviourEtcArray[i]); - sub_805FE7C(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_common.txt b/sym_common.txt index d71df5ce2..bfc04b1ac 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -48,13 +48,13 @@ gFieldLinkPlayerCount: @ 3005030 .include "fieldmap.o" .align 4 -gUnknown_3005050: @ 3005050 +gFieldCamera: @ 3005050 .space 0x18 -gUnknown_3005068: @ 3005068 +gTotalCameraPixelOffsetY: @ 3005068 .space 0x4 -gUnknown_300506C: @ 300506C +gTotalCameraPixelOffsetX: @ 300506C .space 0x4 .align 2 diff --git a/sym_ewram.txt b/sym_ewram.txt index b9b7063d0..3e1d77975 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -70,7 +70,7 @@ gUnknown_2031DE8: @ 2031DE8 gUnknown_2031DEA: @ 2031DEA .space 0x2 -gUnknown_2031DEC: @ 2031DEC +gLinkPlayerObjectEvents: @ 2031DEC .space 0x10 .align 2 @@ -94,10 +94,10 @@ gObjectEvents: @ 2036E38 gPlayerAvatar: @ 2037078 .space 0x20 -gUnknown_2037098: @ 2037098 +sCurrentReflectionType: @ 2037098 .space 0x2 -gUnknown_203709A: @ 203709A +sCurrentSpecialObjectPaletteTag: @ 203709A .space 0x2 gUnknown_203709C: @ 203709C |